印刷データ処理方法
【課題】複数のCPU、又は1つのCPUの中に複数のコアを有するマルチコア(multiple core)CPUを使用し、PDL変換処理や画像形成処理などをマルチスレッド構成にすることにより並列処理する印刷データ処理方法を提供するものである。
【解決手段】複数の処理手段を備えたホスト機器上で動作する印刷データ処理装置により、印刷データをPDLコマンドに変換する変換処理と、変換されたPDLコマンドを順次コマンド記憶部に記憶するコマンド記憶処理と、コマンド記憶手段から前記PDLコマンドを読み出し、画像データを生成する画像データ生成処理と、画像データ生成処理によって生成された画像データが記憶される画像記憶部に記憶する画像記憶処理と、画像記憶部から画像データを読み出し、印刷手段に送信する送信処理とを行い、前記複数の処理手段は、前記各処理の実行要求がある毎に順次該処理を実行する印刷データ処理方法である。
【解決手段】複数の処理手段を備えたホスト機器上で動作する印刷データ処理装置により、印刷データをPDLコマンドに変換する変換処理と、変換されたPDLコマンドを順次コマンド記憶部に記憶するコマンド記憶処理と、コマンド記憶手段から前記PDLコマンドを読み出し、画像データを生成する画像データ生成処理と、画像データ生成処理によって生成された画像データが記憶される画像記憶部に記憶する画像記憶処理と、画像記憶部から画像データを読み出し、印刷手段に送信する送信処理とを行い、前記複数の処理手段は、前記各処理の実行要求がある毎に順次該処理を実行する印刷データ処理方法である。
【発明の詳細な説明】
【技術分野】
【0001】
本発明はプリンタ装置等の印刷装置に接続されたホスト機器において、印刷装置に送信する印刷データの処理を行う印刷データ処理方法に関する。
【背景技術】
【0002】
今日、プリンタ装置等の印刷装置はLAN(local area network)等のネットワークに接続されたホスト機器から印刷データの供給を受け、又はピアツーピア(peer to peer)のネットワーク環境で接続されたホスト機器から印刷データの供給を受け、印刷処理を行っている。この場合、ホスト機器である、例えばパーソナルコンピュータ(PC)にはプリンタドライバが搭載され、印刷データを印刷装置に対応する中間コマンドに変換し、印刷装置に送信している。
【0003】
図30は、パーソナルコンピュータ(PC)に搭載されたプリンタドライバを中心とした印刷システムの構成図である。プリンタドライバ30はPDL変換部31、画像データ形成部32、画像データ圧縮部33、スプール出力部34、PDLバッファ35、画像データメモリ36で構成されている。ワープロソフトや表計算ソフト等のアプリケーションプログラム(APL)によって作成された文書ファイルは、PDL変換部31に供給され、PDL変換部31によってPDLコマンドに変換され、PDLバッファ35に格納される。このPDLコマンドは、例えば線や円の作成、文字の作成等を指示するコマンドであり、印刷装置に対応したコマンドである。
【0004】
画像データ形成部32は、PDLバッファ35に格納されたPDLコマンドを読み出し、例えばビットマップ形式の画像データに変換して、画像データメモリ36に記憶する。このようにして、画像データメモリ36に記憶された画像データは、画像データ圧縮部33において圧縮処理が施され、スプール出力部34からスプーラ38に出力され、スプーラ38からプリンタ装置(印刷装置)40に出力される。
【0005】
一方、複数のプロッセッサを使用し、ページ単位に印刷データを処理する印刷制御方法として、特許文献1が提案されている。この発明は、複数頁にわたる印刷コマンドをバッファに格納し、複数のプロッセッサにより上記バッファから印刷コマンドを読み出し、頁毎にプロッセッサにより描画処理を行う印刷制御方法である。
【先行技術文献】
【特許文献】
【0006】
【特許文献1】特開平05−201077号公報
【発明の概要】
【発明が解決しようとする課題】
【0007】
上記特許文献1の発明は複数のプロセッサを使用するが、基本的には線や円を作成し、文字の生成等を行なうPDLデータを1頁分受け取りPDLデータを解析しながら一時蓄積する(空描画)。1頁分のPDLデータが揃ってから画像形成タスクを生成しプロセッサを割り当て、一時蓄積したPDLデータを再度解析・実行して画像形成を行なう(実描画)。それと並行して次の頁のPDLデータを受け取り解析しながら一時蓄積し、次の頁のPDLデータが揃うとまた新たに画像形成タスクを生成し同じように画像形成していく。印刷データを頁単位にプロセッサを割り当て、並列処理を行う制御方法である。したがって、プリンタエンジンが高速になればなるほど、多くのプロセッサを必要とし、非常に高価なものになってしまう。また、空描画の為に受け取ったPDLデータを一度解析する必要があり、効率も良くない。更にこの空描画の為に1つのタスクが必要でありプロセッサも1つ必要である。プロセッサが少ない場合、同時並行して画像形成できる頁数は非常に少ないものとなり、印刷処理の高速化には限界がある。
【0008】
そこで、本発明はできるかぎり少ない複数のCPU、又は1つのCPUの中に複数のコアを有するマルチコア(multiple core)CPUを使用し、頁単位ではなく、ストリーム型の印刷データ(PDLデータ)をシーケンシャル処理のまま、画像形成処理のマルチスレッド方式による並列処理を行い、印刷データを高速に処理する印刷データ処理方法を提供するものである。
【課題を解決するための手段】
【0009】
上記課題は第1の発明によれば、複数の処理手段を備えたホスト機器上で印刷装置に送信するための印刷データを処理する方法であって、前記処理手段の数に応じたスレッド数を設定し、前記印刷データをPDLコマンドに変換する変換処理、及び、変換されたPDLコマンドを順次第1、第2のコマンド記憶部に記憶させるコマンド記憶処理とを第1のスレッドで処理し、該第1、第2のコマンド記憶部から交互に前記PDLコマンドを読み出し、画像データを生成する画像データ生成処理、及び、該画像データ生成処理によって生成された画像データが順次記憶される第1、第2の画像記憶部に記憶する画像記憶処理とを第2のスレッドで処理し、該第1、第2の画像記憶部から画像データを順次読み出し、印刷手段に送信する送信処理を第3のスレッドで処理し、前記複数の処理手段は、前記
各スレッドの実行要求に応じて該第1乃至第3のスレッドの2以上のスレッドを並行して実行する印刷データ処理方法を提供することによって達成できる。
【0010】
上記課題は第2の発明によれば、前記スレッド数の設定は、CPUの数又はコアの数によって決定する印刷データ処理方法を提供することによって達成できる。
上記課題は第3の発明によれば、前記スレッド数の設定は、記憶容量によって決定する印刷データ処理方法を提供することによって達成できる。
【0011】
上記課題は第4の発明によれば、前記スレッド数の設定は、印刷装置の解像度/階調数によって決定する印刷データ処理方法を提供することによって達成できる。
【0012】
上記課題は第5の発明によれば、前記スレッド数の設定は、最も短い処理時間となるスレッド数に決定する印刷データ処理方法を提供することによって達成できる。
【0013】
上記課題は第6の発明によれば、複数の処理手段を備えたホスト機器上で印刷装置に送信するための印刷データを前記処理手段に処理させるプログラムであって、前記処理手段の数に応じたスレッド数を設定させ、前記印刷データをPDLコマンドに変換する変換処理、及び、変換されたPDLコマンドを順次第1、第2のコマンド記憶部に記憶させるコマンド記憶処理とを第1のスレッドで処理させ、該第1、第2のコマンド記憶部から交互に前記PDLコマンドを読み出し、画像データを生成する画像データ生成処理、及び、該画像データ生成処理によって生成された画像データが順次記憶される第1、第2の画像記憶部に記憶する画像記憶処理とを第2のスレッドで処理させ、該第1、第2の画像記憶部から画像データを順次読み出し、印刷手段に送信する送信処理を第3のスレッドで処理させ、前記複数の処理手段に、前記各スレッドの実行要求に応じて第1乃至第3のスレッドの2以上のスレッドを並行して実行させることを特徴とするプログラムを提供することによって達成できる。
【発明の効果】
【0014】
本発明によれば、複数のCPU又はCPUコアを使用し、かつ複数のPDLバッファ、及び画像データメモリを使用して印刷データの処理をマルチスレッド方式によって実行するので、印刷データの処理を高速に行うことができ、かつ、少ないCPUの数またはCPUコア数で実現できる。また、使用するスレッドの数をCPU又はコアの数、又はメモリ容量、又は解像度/階調数、又は実際のスレッド数に対応する処理時間を計測して設定することによって、自動的に各条件に対応した最適、かつ高速な印刷データの処理を行うことができる。
【図面の簡単な説明】
【0015】
【図1】プリンタドライバの構成を具体的に説明する図である。
【図2】本実施形態に使用する印刷データ処理装置(プリンタドライバ)を有するクライアントPCの構成を示す図である。
【図3】プリンタドライバ内をコアに代えて、CPUで構成した構成例を説明する図である。
【図4】プリンタドライバの初期設定処理を説明するフローチャートである。
【図5】プリンタドライバの初期設定処理を説明するフローチャートである。
【図6】プリンタドライバの初期設定処理を説明するフローチャートである。
【図7】PDL変換部(スレッド1)の処理を説明するフローチャートである。
【図8】画像データ形成部(スレッド2)の処理を説明するフローチャートである。
【図9】画像データ圧縮部及びスプール出力部(スレッド3)の処理を説明するフローチャートである。
【図10】(a)は、本実施形態の印刷データ処理を説明する模式図である。(b)は、従来の印刷データ処理を説明する模式図である。
【図11】4個使用のコアに代えて、2個使用のコアを使用した場合のシステム構成例を示す図である。
【図12】実施形態2の処理を説明するフローチャートである。
【図13】実施形態3の処理を説明するフローチャートである。
【図14】実施形態4の処理を説明するフローチャートである。
【図15】実施形態4の処理を説明するフローチャートである。
【図16】実施形態5で使用するクライアントPCのシステム構成図である。
【図17】処理時間記憶手段の構成を示す図である。
【図18】実施形態5のスレッド1の処理を説明するフローチャートである。
【図19】計測開始処理を説明するフローチャートである。
【図20】計測終了処理を説明するフローチャートである。
【図21】実施形態5のスレッド2の処理を説明するフローチャートである。
【図22】計測開始処理を説明するフローチャートである。
【図23】計測終了処理を説明するフローチャートである。
【図24】実施形態5のスレッド3の処理を説明するフローチャートである。
【図25】計測開始処理を説明するフローチャートである。
【図26】計測終了処理を説明するフローチャートである。
【図27】処理時間の更新処理を説明するフローチャートである。
【図28】スレッド2構成の処理時間の更新処理を説明するフローチャートである。
【図29】実施形態5の変形例を説明する図である。
【図30】従来の印刷処理を説明するフローチャートである。
【発明を実施するための形態】
【0016】
以下、本発明の実施の形態を図面を参照しながら説明する。
(実施形態1)
【0017】
図2は、本実施形態に使用する印刷データ処理装置(プリンタドライバ)を有するホスト機器としてのクライアントPCの構成を示す図である。印刷データ処理装置としてのプリンタドライバは、クライアントPCにLANなどを介して接続される印刷装置に、クライアントPCが印刷処理動作を行わせるためのプログラムで、通常、利用される印刷装置に対応して、その印刷装置のメーカが予め用意するものである。
クライアントPCにより利用する印刷装置が選択された後、その印刷装置に対応するプリンタドライバが、記憶媒体やWeb回線などを利用して、クライアントPCにインストールされた後、クライアントPC内のCPUにより処理が実行され印刷データ処理装置としての機能を発揮する。
図2において、クライアントPCはクワッドコアCPU7(以下、単にCPU7で示す)、RAM8、ROM2、ディスク装置3、LAN回路4、LCD(液晶ディスプレイ)5、及びキーボード(KB)6等で構成されている。また、印刷データ処理装置であるプリンタドライバ1は、クワッドコアCPU7上で動作し、CPU7は内部に4個のコア7a〜7dを有する。コア7a〜7dは、それぞれ独自にPDLコマンドの生成や、描画データの生成処理を行うことができ、後述するスレッドを実行する処理手段である。尚、RAM8は上記コア7a〜7dによる印刷データ処理の際、ワークエリアとしても使用される。
【0018】
ROM2はクライアントPCのシステム制御プログラムや、後述する印刷データの処理プログラムを記憶する。尚、ディスク装置3に上記プログラムや必要なデータを記憶する構成としてもよい。また、LCD(液晶ディスプレイ)5には、CPU7(コア7a〜7d)の制御に従って必要な画面が表示され、キーボード(KB)6からユーザ操作に基づくキーボード操作信号が入力する。また、LAN回路4はクライアントPCによって作成された画像データをプリンタ装置10に出力する。
【0019】
尚、図3は印刷データ処理装置を含むクライアントPC内を、コア7a〜7dに代えて、複数のCPU(処理手段)で構成した例であり、他の回路構成は前述の図2と同様である。
図1は、本例のプリンタドライバ(印刷データ処理装置)の機能的構成を具体的に説明する図である。プリンタドライバ1はPDL変換部11(スレッド1)、画像データ生成部(レンダリング部、スレッド2)12、画像データ圧縮部13及びスプール出力部14(スレッド3)、PDLバッファ15、画像データメモリ16で構成されている。
【0020】
PDL変換部11は印刷データに含まれる線や円の作成、文字の作成等を指示するコマンドを本例で使用するプリンタ装置10に対応するコマンドに変換する機能を有し、アプリケーション(APL)によって作成された文書ファイルをPDLコマンドに変換する。
また、PDLバッファ15は、PDL変換部11によって変換されたPDLコマンドを格納するダブルバッファであり、PDLバッファ15a、15bで構成される。
【0021】
画像データ生成部(レンダリング部)12は、PDLバッファ15a、15bに格納されたコマンドを交互に読み出し、画像データを生成し、当該画像データを画像データメモリ16に記憶する。画像データメモリ16もダブルバッファ方式の2つの画像データメモリ16a、16bで構成され、それぞれ1頁分の画像データの記憶が可能である。
【0022】
画像データ圧縮部13は上記画像データメモリ16a、16bに記憶された画像データを交互に読み出し、公知の圧縮技術を使用してスプール出力部14に出力する。スプール出力部14は圧縮された画像データをスプーラ17に出力し、スプーラ17から圧縮された画像データをプリンタ装置10に供給する。プリンタ装置10では、画像データに伸張処理を施し、記録媒体に対して印刷処理を行う。
【0023】
ここで、図1に示すスレッド1〜3は、前述の図2に示すコア7a〜7dの何れかが担当する処理を示すものであり、例えばコア7aがアプリケーションプログラムによる文書ファイルの作成を行い、コア7bがスレッド1の処理を担当し、コア7cがスレッド2の処理を担当し、コア7dが画像データ圧縮部13による画像データの圧縮処理、及びスプール出力部14による画像データの出力処理を担当する。但し、アプリケーション処理、及び上記スレッド1〜3の処理を実行するコアは上記コアに限定されるのではなく、各処理が必要な際、空いているコア7a〜7dが使用される。
【0024】
以上の構成において、以下に本例の処理動作を説明する。
【0025】
図4〜図6はプリンタドライバ(印刷データ処理装置)1の初期設定処理を説明するフローチャートである。先ず、図4に示すフローチャートに従って、本例のマルチスレッドの初期化処理を行い(ステップ(以下、Sで示す)1)、更にマルチスレッド以外のプリンタドライバ1内の初期化処理を行う(S2)。
【0026】
図5に示すフローチャートは上記マルチスレッドの初期化処理を具体的に説明するフローチャートである。先ず、スレッド数を決定する(S3)。このスレッド数の決定は、例えば図6のフローチャートに示すように、スレッド数“3”に設定する(S4)。
次に、PDLバッファ15の領域、及び画像データメモリ16の領域を確保する(S5)。具体的には前述の図2に示すRAM8に、PDLバッファ15aの記憶領域を確保し、更に画像データメモリ16aの記憶領域を確保する。
【0027】
次に、PDL変換部11によりPDLコマンド生成中において選択するバッファをPDLバッファ15aとし、画像データ形成部(レンダリング部)12により描画データ生成中において選択するバッファも同じPDLバッファ15aに初期設定する(S6)。さらに、画像データ形成部(レンダリング部)12が描画データ生成中において選択する画像データメモリを画像データメモリ16aとし、画像データ圧縮部13が描画データの圧縮中において選択する画像データメモリも同じ画像データメモリ16aに初期設定する(S6)。
【0028】
次に、画像形成要求中フラグをオフに設定し、圧縮・スプール出力要求中フラグもオフに設定する(S7)。すなわち、画像データ形成部(レンダリング部)12、及び画像データ圧縮部13、スプール出力部14が動作を行っていない状態を示すフラグをオフ状態に設定する。
【0029】
次に、設定されたスレッド数が“1”を越えているか判断する(S8)。この場合、前述のように、スレッド数が“3”に設定されており、判断(S8)はYES(イエス)であり、更にPDLバッファ15の記憶領域としてPDLバッファ15bを確保し(S9)、スレッド2を生成し、起動する(S10)。尚、前述の処理(S4)において、スレッド数を“1”に設定していれば(S8がNO(ノー))、直ちに次の判断に移行する。
【0030】
次に、判断(S11)は、スレッド数が“2”を越えているか判断する。この判断も、前述のように本例において、スレッド数“3”が設定されており、判断(S11)はYES(イエス)であり、更に画像データメモリ16の領域として画像データメモリ16bを確保し(S12)、スレッド3を生成し、起動する(S13)。尚、スレッド数が“2”の場合には、上記画像データメモリ16bのエリアは確保されず(S11がNO)、スレッド数が“1”の場合には、上記PDLバッファ15b及び画像データメモリ16bのエリアは確保されない(S8がNO、S11もNO)。
【0031】
以上のようにして初期設定処理が完了した後、アプリケーションプログラムによって作成された印刷データがプリンタドライバ1に供給される。図7〜図9は以後の処理を説明するフローチャートであり、スレッド1、2、及び3が行う処理を説明するものである。
【0032】
尚、図10(a)は本例の処理を模式的に示す図である。
【0033】
先ず、図7に示すフローチャートはPDL変換部11によるスレッド1の処理を説明するものであり、供給される文書ファイルに従ってアプリケーションプログラムより依頼された要求を取り出す。例えば、線や円の生成や文字の作成要求に従って、対応するPDLコマンドを生成する(ステップ(以下、STで示す)1、2)。
【0034】
次に、生成したPDLコマンドを前述のPDLバッファ15aにバッファリングする(ST3)。図10(a)に示すaはこの処理を示し、文書ファイルの1頁目の最初の印刷データのPDLコマンドがPDLバッファ15aに格納される。また、上記処理は、例えばコア7aによって実行される。
【0035】
次に、PDL変換部11は生成したPDLコマンドが改頁コマンドであるか判断する(ST4)。通常、最初のこの処理はNO(ノー)であり、PDLバッファ15aの容量一杯までPDLコマンドがバッファリングされたか判断する(ST5)。ここで、PDLバッファ15aに余裕があれば、上記処理(ST1)に戻ってアプリケーションプログラムより依頼された要求に従ったPDLコマンドの生成、及びPDLバッファ15aへの格納処理を繰り返す(ST1〜ST5)。
【0036】
その後、PDLバッファ15aの容量一杯までPDLコマンドがバッファリングされた場合(ST5がYES)、又は改頁コマンドが検出されると(ST4がYES)、スレッド数の設定が“1”を越えているか判断する(ST6)。ここで、本例では前述のように、スレッド数が“3”に設定されており(ST6がYES)、更に画像形成要求中フラグがオンであるか判断する(ST7)。この画像形成要求中フラグは、前述の初期設定処理(S7)によってオフに設定されており(ST7がNO)、上記PDLコマンドを格納したPDLバッファ15aを、以後画像データ形成部(レンダリング部)12が読み出しを行うPDLバッファに設定する(ST8)。
【0037】
次に、画像形成要求中フラグをオンにセットし(ST9)、スレッド2に対して画像形成要求を出す(ST10)。すなわち、PDL変換部11から画像データ形成部(レンダリング部)12に対して画像形成要求を出力する。
【0038】
その後、PDL変換部11は次に文書ファイルから生成するPDLコマンドを格納するPDLバッファ15a又は15bを設定する。この場合、現在選択されているPDLバッファが15aであれば(ST11がYES)、PDLバッファ15bに変更し(ST12)、現在選択されているPDLバッファが15bであれば(ST11がNO)、PDLバッファ15aに変更する(ST13)。
【0039】
尚、前述の判断(ST7)において、画像形成要求中フラグがオンの場合には、画像データ形成部(レンダリング部)12による画像形成処理の終了を待ち、画像形成要求中フラグをオフする(ST7がYES、ST14、ST15)。この処理は、後に画像データ形成部(レンダリング部)12が処理を終了した際行う処理であり、後述する。
【0040】
また、前述の改頁コマンドが供給される前に、多くの場合PDLバッファ15aがPDLコマンドで満杯になり、次に選択されたPDLバッファ15bに以後の文書ファイルのPDLコマンドがバッファリングされる(例えば、図10(a)のe1〜enの処理)。
【0041】
次に、スレッド2の処理、即ち画像データ形成部(レンダリング部)12の処理は、図8に示すフローチャートに従って実行され、先ずPDL変換部11からの画像形成要求の発生を待つ(ST16)。そして、画像データ形成部(レンダリング部)12に画像形成要求が入力すると、PDLバッファ15aに格納されたPDLコマンドを順次取り出し、取り出したPDLコマンドが改頁コマンドであるか判断する(ST17、ST18)。
【0042】
通常、最初のこの処理はノーであり、PDLバッファ15aから取り出したPDLコマンドの解析を行い、そのPDLコマンドに対応した画像形成処理を行ない、描画データとして画像データメモリ16aに展開する(ST19)。尚、この処理は図10(a)に示すbである。
【0043】
次に、PDLバッファ15aに格納されたPDLコマンドが全て処理されたか判断し(ST20)、PDLバッファ15a内に格納されたPDLコマンドが全て処理されるまで、画像データ形成部(レンダリング部)12による描画データの解析、及び画像データメモリ16aへの展開処理を繰り返す(ST20がNO、ST16〜ST19)。
【0044】
その後、PDLバッファ15a内の全てのPDLコマンドの解析処理が完了し、画像データメモリ16aへの描画データの展開が終了すると(ST20がYES)、PDL変換部11(スレッド1)に対して画像形成処理の終了を通知する(ST21)。この通知は、PDL変換部11に供給され、画像形成要求中フラグをオフする(前述の図7に示すフローチャートの処理(ST14、ST15))。
【0045】
その後、上記処理を繰り返し、画像データ形成部(レンダリング部)12は、取り出したPDLコマンドが改頁コマンドである場合(S18がYES)、スレッド数の設定が2より大きいか判断する(ST22)。本例の場合、スレッド数は“3”に設定されており(ST22がYES)、次に圧縮・スプール出力要求中フラグがオンであるか判断する(ST23)。
ここで、圧縮・スプール出力要求中フラグは前述の初期設定において、オフに設定されており(ST23がNO)、上記画像データメモリ16aに展開した画像データを、以後画像データ圧縮部13が読み出しを行う画像データメモリとして設定する(ST24)。
次に、圧縮・スプール出力要求中フラグをオンにセットし(ST25)、画像データ圧縮部13(スレッド3)に対して圧縮・スプール出力要求を出す(ST26)。すなわち、画像データ形成部(レンダリング部)12から画像データ圧縮部13に対して圧縮・スプール出力要求を出力する。
【0046】
その後、画像データ形成部(レンダリング部)12は次に画像データを格納する画像データメモリ16a又は16bを設定する。例えば、現在選択されている画像データメモリが16aであれば(ST27がYES)、画像データメモリ16bに変更し(ST28)、現在選択されている画像データメモリが16bであれば(ST27がNO)、画像データメモリ16bに変更する(ST29)。
【0047】
尚、前述の判断(ST23)において、圧縮・スプール出力要求中フラグがオンの場合には、画像データ圧縮部13及びスプール出力部14による圧縮・スプール出力処理の終了を待ち、圧縮・スプール出力要求中フラグをオフする(ST23がYES、ST30、ST31)。この処理は、後に画像データ圧縮部13及びスプール出力部14が処理を開始し、画像データの圧縮処理及びスプール出力が終了した際行う処理であり、後述する。
【0048】
次に、スレッド3の処理、即ち画像データ圧縮部13の処理について、図9に示すフローチャートを使用して説明する。先ず、画像データ圧縮部13は、圧縮・スプール出力要求を待ち(ST32)、画像データメモリ16aに展開された画像データの圧縮処理を行う(ST33)。
【0049】
次に、上記処理によって圧縮した画像データをスプール出力部14に送り、スプール出力部14はスプーラ17に対して圧縮画像データを出力する。この処理は、図10(a)にcで示す処理である。スプーラ17はLAN等を介してプリンタ装置10に圧縮された画像データを送信する(ST34)。この処理は、図10(a)にdで示す処理であり、プリンタ装置10にて印刷処理が施される。
【0050】
次に、画像データ形成部(レンダリング部)12に対し、圧縮対象画像データの圧縮及びスプール出力処理の終了を通知する(ST35)。この通知は、画像データ形成部(レンダリング部)12に送られ、圧縮・スプール出力要求中フラグをオフする。(前述の図8に示すフローチャートの処理(ST30、ST31))。
【0051】
上記処理は同様に繰り返され、1頁目の文書ファイルはPDL変換部11によってPDLバッファ15a、15bに交互に入力し、画像データ形成部(レンダリング部)12によって交互に読み出され、画像データに変換された後画像データメモリ16aに記憶される。また、次の頁の文書ファイルも、PDLバッファ15a、15bに交互にバッファリングされ、画像データ形成部(レンダリング部)12によって画像データに変換された後画像データメモリ16bに記憶される。画像データ圧縮部13では上記画像データメモリ16a、16bから交互に画像データを読み出し、図10(a)にc、gで示す画像データの圧縮処理を行い、スプール出力部14によって図10(a)にd、fで示すデータ転送処理を行い、スプーラ17を介してプリンタ装置10に画像データを出力する。
【0052】
その間、スレッド1〜3は、対応する時点で空き状態のコア7a〜7dが選択され、印刷データの処理が順次実行される。(なお図示はしていないが、CPUコアの割当て(CPUコアのディスパッチ)に関しては、Windows(登録商標)などのOSのカーネル部がレディ状態のタスクまたはスレッドに対してCPUコアの割当て(CPUコアのディスパッチ)を行なう。)
【0053】
以上のように、本例によれば3スレッド構成/QuadコアCPU(コア7a〜7d)の場合、図10(a)の如く、PDL変換処理と画像形成(レンダリング)処理と画像圧縮&スプール出力処理の3つの処理およびスプーラによる圧縮画像データの転送処理が並列処理でき、格段の処理時間の短縮できる。尚、図10(b)は同じ文書ファイルを従来のシングルスレッド処理によって処理した例を示し、両処理を比較することによって本例の処理が従来例に比べて高速に行われることが分かる。
【0054】
また、上記説明では図2に示す4個のコア7a〜7dを有するCPU7の例で説明したが、前述のように4個のCPUを有する構成の図3に示す構成としてもよい。
【0055】
上記例はスレッド数が“3”の場合について説明したが、例えばスレッド数が“2”の場合には、以下の処理となる。すなわち、図8に示すフローチャートの判断(ST22)がNOとなり、スレッド2の処理として、画像データ圧縮部13は画像データメモリ16aに記憶した画像データを読み出し、画像データの圧縮処理を行う(ST36)。さらに、スプール出力部14によって圧縮された画像データはスプーラ17を介してプリンタ装置10に出力される(ST37)。
【0056】
尚、図11は2つのコアを使用した場合のシステム構成例を示し、スレッド数を“2”に設定して本発明の印刷データ処理を行う場合において、適用可能である。
一方、スレッド数が“1”の場合には、以下の処理となる。すなわち、図7に示すフローチャートの判断(ST6)がNOとなり、画像データ形成部(レンダリング部)12はPDLバッファ15に格納されたPDLコマンドを順次取り出し(ST38)、取り出したPDLコマンドが改頁コマンドであるまで、画像データメモリ16aに生成した画像データを書き込む(ST39がYES、ST40、ST41)。
【0057】
その後、取り出したPDLコマンドが改頁コマンドであれば(ST39がYES)、画像データ圧縮部13によって画像データメモリ16aに記録された画像データを読み出し、圧縮処理を行い、スプール出力部14によって圧縮された画像データをスプーラ17を介してプリンタ装置10に出力する(ST42、ST43)。
(実施形態2)
【0058】
次に、本発明の実施形態2について説明する。尚、以下で説明する実施形態2以降は、前述の実施形態1の処理を前提として、条件を変えてスレッド数の設定を行う際の例を示すものである。
【0059】
本例はスレッド数の設定をCPU7のコア数で決定する構成であり、クライアントPCの構成やプリンタドライバの構成等は前述の実施形態1と同様である。以下、図12に示すフローチャートを使用して本例の処理を説明する。
【0060】
この処理は、前述のマルチスレッドの初期化ルーチンである図5の処理(S3)によって呼び出されるルーチンであり、先ずマルチCPUであるCPU7のコア数を獲得する(ステップ(以下、STPで示す)1)。このコア数の情報は、例えばクライアントPC内の基本システムの設定情報から読み出す。
【0061】
次に、スレッド数として初期値“3”をセットする(STP2)。次に、読み出したコア数の情報に基づいて、コア数が2を越えているか、即ち“3”以上であるか判断する(STP3がYES)。ここで、コア数が“3”以上である場合、上記初期設定したスレッド数“3”を設定スレッド数とする(STP3がYES)。
【0062】
一方、コア数が“2”を越えていない場合、スレッド数を“2”に変更する(STP3がNO、STP4)。さらに、コア数が“1”を越えているか判断し、コア数が“1”を越えていない場合、スレッド数を“1”に設定する(STP5がNO、STP6)。
【0063】
以上のように、本例はクライアントPCが有するコア数によってスレッド数の設定を行う構成であり、クライアントPCの有するコア数に対応したスレッド数の設定を行うことができ、クライアントPCの性能に合ったスレッド数の設定を自動的に行うことができる。
【0064】
尚、本例においても、複数のコアを有するCPU7の例で説明したが、前述のように複数のCPUを有する構成の図3の例の場合にも同様に適用することができる。
また、クライアントPCのCPUが1個であった場合にも前記同様スレッド数を“1”に設定して、同様の制御を実行する。
(実施形態3)
【0065】
次に、本発明の実施形態3について説明する。
本例はスレッド数の設定をメモリサイズに従って決定する構成であり、クライアントPCの構成やプリンタドライバの構成等は前述の実施形態1と同様である。以下、図13に示すフローチャートを使用して本例の処理を説明する。
【0066】
本例の処理も、前述のマルチスレッドの初期化ルーチンである図5の処理(S3)によって呼び出されるルーチンであり、先ずメモリサイズの情報を獲得する(ステップ(以下、Wで示す)1)。このメモリサイズの情報も、例えばクライアントPC内の基本システムの設定情報から読み出す。
【0067】
次に、本例においても、スレッド数の初期値として“3”をセットする(W2)。以下、獲得したメモリサイズの情報に従ってスレッド数の設定を行う。すなわち、読み出したメモリサイズが1GBより大きい場合、上記初期設定したスレッド数“3”を維持し、このスレッド数(“3”)に設定する(W3がYES)。
【0068】
一方、メモリサイズが1GBより大きくない場合、スレッド数として“2”の設定を行う(W3がNO、W4)。さらに、メモリサイズが512MBより大きいか判断し(W4)、大きくない場合、スレッド数を“1”に設定する(W5がNO、W6)。
【0069】
以上のように、本例はメモリサイズに対応して最適なスレッド数/画像データメモリ・PDLバッファの設定を行うことができ、メモリサイズを意識することなく、自動的にクライアントPCのメモリサイズに対応したスレッド数の設定を行い、印刷処理を高速化することができる。
(実施形態4)
【0070】
次に、本発明の実施形態4について説明する。
本例はスレッド数の“1”に設定した後、文書ファイル印刷の為にアプリケーション(APL)より指定された解像度及び階調数に従ってスレッド数の設定を行うものである。
以下、図14及び図15に示すフローチャートを使用して本例の処理を説明する。
【0071】
先ず、図14に示すフローチャートに従って、スレッド数を“1”に設定する(ステップ(以下、Uで示す)1)。次に、図15に示すフローチャートに従って処理を開始し、先ず前述と同様、供給される文書ファイルに従ってアプリケーションプログラムより依頼された要求を取り出し、対応するPDLコマンドを生成する(U2、U3)。
次に、生成したPDLコマンドを前述と同様、PDLバッファ15にバッファリングし(U4)、生成したPDLコマンドが解像度/階調コマンドであるか判断し(U5)、解像度/階調コマンドでなければ(U5がNO)、改頁コマンドを検出するまで、順次文書ファイルをPDLコマンドに変換する(U6、U7、U2〜U5)。
【0072】
一方、解像度/階調コマンドを検出すると(U5がYES)、先ず解像度が600dpi以上であるか判断し(U8)、解像度が600dpi以上であれば(U8がYES)、更に階調値が2を越えているか判断する(U9)。ここで、解像度が600dpi以上ではない場合(U8がNO)、又は解像度が600dpi以上であっても階調値が2以下である場合(U9がNO)、スレッド数を“2”に設定する(U10)。
【0073】
次に、解像度が300dpiであるか判断し(U11)、解像度が300dpiであればスレッド数を“3”に設定する(U12)。一方、解像度が300dpiではない場合(U11がNO)、解像度が600dpiであるか判断し(U13)、解像度が600dpiであり、更に階調値が16以上ではない場合(U13がYES、U14がNO)、スレッド数を“3”に設定する(U12)。
【0074】
上記処理によって、スレッド数が“1”乃至“3”に設定された後、前述の処理を実行する。すなわち、実施形態1の処理と同様、画像形成要求中フラグをオフに設定し、圧縮・スプール出力要求中フラグもオフに設定し(U15)、PDLバッファ15bを確保してスレッド2の生成を起動する(U16、U17)。そして、設定されたスレッド数が“2”を越えているか判断し(U18)、スレッド数が“2”を越えていれば(U18がYES)、更に画像データメモリ16bを確保してスレッド3を起動する(U19、U20)。
【0075】
以下、前述の図7に示すフローチャートと同様の処理を行い、スレッド数“3”が設定された場合には、PDLバッファ15a、15b、及び画像データメモリ16a、16bを交互に使用し、文書ファイルに基づく画像データを効率よくプリンタ装置10に送信できる(U21〜U36)。また、スレッド数“2”が設定された場合には、PDLバッファ15a、15bを交互に使用し、更に画像データメモリ16を使用して、文書ファイルに基づく画像データを効率よくプリンタ装置10に送信する(U21〜U36)。尚、この処理(U21〜U36)は前述の実施形態1と同様の処理であり、説明を省略する。
【0076】
以上のように、本例は解像度/階調数に対応して最適なスレッド数の設定を行うことができ、自動的にプリンタ装置10の解像度及び階調数に対応した最適なスレッド数の設定を行い、印刷処理を高速化することができる。
(実施形態5)
【0077】
次に、本発明の実施形態5について説明する。
本例はスレッド数“1”〜“3”について処理時間を計算し、最も平均処理時間が短いスレッド数の設定を行うものである。以下、具体的に説明する。
【0078】
図16は本例で使用するクライアントPCのシステム構成図である。尚、同図の構成は前述の図2に示すシステム構成と基本的に同様であるが、プリンタドライバ(印刷データ処理装置)1内に時間計測手段20、及び処理時間記憶手段21を含む。尚、他の構成は前述の図2と同様であり、図2と同じ回路には同じ番号を付し、構成上の説明を省略する。
【0079】
時間計測手段20は各コア7a〜7dがスレッド処理を実行する際の処理時間を計測する機能を有し、具体的な計測処理については後述する。また、処理時間記憶手段21は、例えば図17に示す処理時間テーブルで構成され、1スレッド構成〜3スレッド構成時の各累積処理時間、累積頁数、及び1頁当たりの平均処理時間を記憶する。以下、本例の処理を具体的に説明する。
【0080】
図18は本例の処理を説明するフローチャートであり、先ずスレッド1の処理時間を計測するため、計測処理を開始する(ステップ(以下、Vで示す)1)。具体的には、図19に示す処理に従って実行され、先ずスレッド1の時間計測中フラグがオフであるか判断する(V2)。尚、後述するが、スレッド1〜3の時間計測中フラグは初期時オフに設定されており(V2がYES)、スレッド1の時間計測中フラグをオンにセットし、時間計測手段20(タイマ1)による時間計測を開始する(V3、V4)。
【0081】
その後、図18に示すフローチャートに戻って、PDL変換部11はアプリケーションプログラムより依頼された要求を取り出し、対応するPDLコマンドを生成する(V5、V6)。さらに、生成したPDLコマンドを前述と同様、PDLバッファ15aにバッファリングし(V7)、生成したPDLコマンドが改頁コマンドであるか判断し(V8)、改頁コマンドでなければ(V8がNO)、PDLバッファ15aが満杯になったか判断し(V9)、満杯になるまで上記処理を繰り返す。
【0082】
改頁コマンドを検出すると(V8がYES)、スレッド数の設定が“3”又は“2”であれば(V10がYES)、スレッド1の処理時間の計測を終了する(V11)。具体的には、図20に示す処理に従って実行され、先ず時間計測手段20(タイマ1)の計測処理を停止し(V12)、タイマ1の値を読み出し(V13)、スレッド1の処理時間として、一時的に記憶し(V14)、タイマ1をリセットする(V15)。そして、スレッド1の時間計測中フラグをオフにする(V15−2)。
【0083】
次に、改頁コマンドを検出した後(V10、V11)、もしくは、PDLバッファ15aが満杯になった(V9がYES)場合、スレッド数が“2”以上であり(V16がYES)、更に画像形成要求中フラグがオンであるか判断し(V17)、画像形成要求中フラ
グは、初期時オフに設定されており(V17がNO)、上記PDLコマンドを格納したPDLバッファ15aを、以後画像データ形成部(レンダリング部)12が読み出しを行うPDLバッファとして設定する(V18)。
【0084】
次に、前述と同様、画像形成要求中フラグをオンにセットし(V19)、スレッド2に対して画像形成要求を出力し(V20)、その後、PDL変換部11は次に文書ファイルから生成するPDLコマンドを格納するPDLバッファ15a、15bを設定する。すなわち、前述と同様、選択されているPDLバッファが15aであれば(V21がYES)、PDLバッファ15bに変更し(V22)、選択されているPDLバッファが15bであれば(V21がNO)、PDLバッファ15aに変更する(V23)。尚、上記判断(V17)において、画像形成要求中フラグがオンである場合の処理も前述と同様である(V17がYES、V24、V25)。
【0085】
次に、スレッド2の処理、即ち画像データ形成部(レンダリング部)12の処理における時間計測は、図21に示すフローチャートに従って行われる。先ず、PDL変換部11からの画像形成要求を待ち(V26)、画像形成要求があると、スレッド2の処理時間の計測を開始する(V27)。具体的には、図22に示す処理に従って実行され、先ずスレッド2の時間計測中フラグがオフであるか判断する(V28)。前述のように、スレッド1〜3の時間計測中フラグは初期時オフにフラグ設定されており(V28がYES)、スレッド2の時間計測中フラグをオンに設定し、時間計測手段20(タイマ2)による時間計測を開始する(V29、V30)。
【0086】
その後、前述と同様、画像データ形成部(レンダリング部)12に画像形成要求があると、PDLバッファ15aに格納されたPDLコマンドを順次取り出し、取り出したPDLコマンドが改頁コマンドであるか判断し(V31〜V34)、改頁コマンドでない場合、前述と同様、PDLコマンドの解析を行い、画像データを生成して画像データメモリ16aに記憶し、PDLバッファ15aに格納されたPDLコマンドが全て処理されたとき(V34がYES)、PDL変換部11(スレッド1)に対して画像形成処理の終了を通知する(V35)。
【0087】
また、取り出したPDLコマンドが改頁コマンドである場合(V32がYES)、スレッド数が“2”を越えているか判断し(V36)、スレッド数が“3”の場合(V36がYES)、スレッド2の処理時間の計測を終了する(V37)。具体的には、図23に示す処理に従って実行され、先ず時間計測手段20(タイマ2)による計測処理を停止し(V38)、時間計測手段20(タイマ2)の値を読み出し(V39)、スレッド2の処理時間として、一時的に記憶する(V40)。また、タイマ2の値をリセットし(V41)、スレッド2の時間計測中フラグをオフにする(V41−2)。
【0088】
その後、前述と同様の処理を行い、圧縮・スプール出力要求中フラグがオンであるか判断し(V42)、圧縮・スプール出力要求中フラグがオフに設定されていれば(V42がNO)、上記画像データメモリ16aに展開した画像データを、以後画像データ圧縮部13が読み出しを行う画像データメモリとして設定し(V43)、圧縮・スプール出力要求中フラグ中フラグをオンにセットし(V44)、画像データ圧縮部13に対して圧縮・スプール出力要求を出し(V45)、その後、選択されている画像データメモリが16aであれば(V46がYES)、画像データメモリ16bに変更し(V47)、選択されている画像データメモリが16bであれば(V46がNO)、画像データメモリ16bに変更する(V48)。尚、圧縮・スプール出力要求中フラグがオンである場合の処理も前述と同様である(V49、V50)。
【0089】
次に、スレッド3の処理時間を計測するため、図24に示すフローチャートに示す処理を実行する。先ず、画像データ圧縮部13は、圧縮・スプール出力要求を待ち(V51)、圧縮・スプール出力要求があると、スレッド3の処理時間の計測を開始する(V52)。具体的には、図25に示す処理に従って実行され、先ずスレッド3の時間計測中フラグがオフであるか判断し(V52−1)、スレッド1〜3の時間計測中フラグは初期時オフにフラグ設定されており(V52−1がYES)、スレッド3の時間計測中フラグをオンに設定し、時間計測手段20(タイマ3)による時間計測を開始する(V52−2、V52−3)。
【0090】
その後、画像データ圧縮部13は、画像データメモリ16bに展開された画像データの圧縮処理を行い(V53)、圧縮処理した画像データをスプーラ17に出力する(V54)。そして、スレッド3の処理時間の計測を終了する(V55)。具体的には、図26に示す処理に従って実行され、先ず時間計測手段20(タイマ3)による計測処理を停止し(V56)、時間計測手段20(タイマ3)の値を読み出し(V57)、スレッド3の処理時間として、一時的に記憶する(V58)。その後、タイマ3をリセットし(V59)、スレッド3の時間計測中フラグをオフにする(V59−2)。
【0091】
その後、3スレッド構成の処理時間を更新する(V60)。この処理は、図27に示すフローチャートに従って実行される。先ず、3スレッド構成の累積頁数のデータを+1する(V61)。すなわち、前述の図17に示す3スレッド構成の累積頁数のエリアのデータを+1する。
【0092】
次に、一時的に記憶しているスレッド1,2,3の処理時間のうち、最も長時間のものを選び、3スレッド構成の累積処理時間に累積する。まず、スレッド2の処理時間がスレッド1の処理時間より長いか判断する(V62)。すなわち、画像データ形成部(レンダリング部)12における処理がPDL変換部11における処理より時間を要したか判断し、スレッド2の処理時間がスレッド1の処理時間より長い場合(V62がYES)、スレッド1の処理時間をスレッド2の処理時間とする(V63)。すなわち、より時間を要した処理の処理時間をスレッド1の処理時間とする。
【0093】
次に、スレッド3の処理時間がスレッド1の処理時間より長いか判断する(V64)。この場合、スレッド1の処理時間は上記処理(V63)によって設定された時間であり、この時間とスレッド3の処理時間との比較処理を行う。ここで、スレッド3の処理時間がスレッド1の処理時間より長い場合(V64がYES)、スレッド3の処理時間をスレッド1の処理時間に設定する(V65)。すなわち、スレッド1〜3の各処理に要した時間の中で最も長時間を要したスレッドの処理時間をスレッド1の処理時間に設定する。
【0094】
次に、3スレッド構成の累積処理時間に、上記スレッド1の処理時間を累積する(V66)。この累積処理時間は、前述の図17に示す3スレッド構成の累積処理時間のエリアに記録される。そして、3スレッド構成の平均処理時間を計算し(3スレッド構成の累積処理時間/3スレッド構成の累積頁数)、図17に示す処理時間テーブルの1頁当たりの平均処理時間のエリアに記録し、処理時間記憶手段21に書き込む(V67、V68)。
【0095】
上記例は3スレッド構成の場合について説明したが、例えば2スレッド構成の場合には、以下の処理となる。すなわち、前述の図21に示すフローチャートの判断(V36)がNOとなり、スレッド2の処理として、画像データ圧縮部13は画像データメモリ16に記憶した画像データを読み出し、画像データの圧縮処理を行い(V70)、圧縮した画像データをスプーラ17を介してプリンタ装置10に出力する(V71)。
【0096】
次に、スレッド2の処理時間の計測終了処理を行う(V72)。この処理は前述の図23で説明した処理と同様の処理である。その後、2スレッド構成の処理時間を更新する(V73)。
【0097】
この処理は、図27に示すフローチャートに従って実行される。先ず、2スレッド構成の累積頁数のデータを+1し(V74)、スレッド2の処理時間がスレッド1の処理時間より長いか判断する(V75)。この処理も上記処理と同様であり、より時間を要した処理の処理時間をスレッド1の処理時間とする。
【0098】
ここで、スレッド2の処理時間がスレッド1の処理時間より長い場合(V75がYES)、スレッド1の処理時間をスレッド2の処理時間に設定する(V76)。次に、2スレッド構成の累積処理時間に上記スレッド1の処理時間を累積し(V77)、2スレッド構成の平均処理時間を計算し(2スレッド構成の累積処理時間/2スレッド構成の累積頁数)、処理時間テーブルの対応するエリアに平均処理時間を記録し、処理時間記憶手段21に書き込む(V78、V79)。
【0099】
一方、1スレッド構成の場合には、以下の処理となる。すなわち、図18に示すフローチャートの判断(V16)がNOとなり、画像データ形成部(レンダリング部)12はPDLバッファ15aに格納されたPDLコマンドを順次取り出し(V80)、取り出したPDLコマンドが改頁コマンドであるまで、画像データメモリ16aに生成した画像データを書き込む(V80がYES、V81〜V83)。
【0100】
その後、取り出したPDLコマンドが改頁コマンドであれば(V81がYES)、画像データ圧縮部13によって画像データメモリ16aに記録された画像データを読み出し、圧縮処理を行い、スプール出力部14によって圧縮された画像データをスプーラ17を介してプリンタ装置10に出力する(V84、V85)。
【0101】
次に、スレッド1の処理時間の計測終了処理を行う(V86)。この処理は前述の図20で説明した処理と同様な処理であり、その後1スレッド構成の処理時間の更新処理を行う(V87)。
【0102】
図27は上記処理を説明するフローチャートであり、1スレッド構成の累積頁数のデータを+1し(V88)、1スレッド構成の累積処理時間に計測したスレッド1の処理時間を累積し(V89)、1スレッド構成の平均処理時間を計算し(1スレッド構成の累積処理時間/1スレッド構成の累積頁数)、処理時間テーブルの1スレッド構成の対応するエリアに平均処理時間を記録する(V90、V91)。その後、スレッド1〜3の処理時間を“0”にリセットする(V92)。
【0103】
このようにして、各スレッド構成時の処理時間テーブルを更新していく。そして、次にアプリケーションより印刷要求が発生した場合、プリンタドライバはこの処理時間テーブルを読み出し、1頁あたりの平均処理時間の最も少ないスレッド構成を選択し、そのスレッド数でPDL変換や画像形成処理などを行なう。このスレッド数決定ルーチンを、図28に示すフローチャートに従って説明する。この処理は、前述のマルチスレッドの初期化ルーチンである図5の処理(S3)によって呼び出されるルーチンであり、先ず処理時間記憶手段21から1スレッド構成〜3スレッド構成の1頁当たりの平均処理時間を読み出し、比較する(V93、V94)。
この場合、先ずスレッド数“3”を設定する(V95)。次に、上記平均処理時間を比較した結果、3スレッド構成時の1頁当たりの平均処理時間が最も少ない場合(V96がYES)、上記の設定通りスレッド数として“3”を設定する。
一方、上記判断(V96)がノーである場合、スレッド数を“2”に設定し、2スレッド構成時の1頁当たりの平均処理時間が最も少ないか判断する(V98)。ここで、2スレッド構成時の1頁当たりの平均処理時間が最も少ない場合(V98がYES)、2スレッド構成とする。さらに、上記判断(V98)がノーである場合、スレッド数を“1”に設定し、1スレッド構成の設定を行う(V99)。
【0104】
その後、スレッド1〜3の時間計測中フラグをオフとし、スレッド1〜3の処理時間をゼロにリセットし、時間計測手段20(タイマ1〜3)をリセットする(V100〜V102)
【0105】
本例は以上のように処理することによって、前述の実施形態2乃至4で説明したCPUの能力や、メモリサイズ、解像度/階調コマンド等を全く意識することなく、自動的に適切なスレッド数の設定を行うことができる。
【0106】
尚、処理時間記憶手段21に設定する処理時間管理テーブルを用紙サイズに対応した構成としてもよい。図29は用紙サイズ毎にスレッド1〜3の累積処理時間、累積頁数、1頁当たりの平均処理時間を記録し、用紙サイズに従って最適なスレッド構成を選択するための処理時間管理テーブルの例を示す図である。
【0107】
上記テーブルに前述の実施形態5の処理に従ってデータを記録し、上記と同様の処理を行うことによって、スレッド構成毎であり、且つ用紙毎に1頁当たりの平均画像形成時間を求め、用紙サイズに応じて最適なスレッド数の設定を行うことができる。
【符号の説明】
【0108】
1・・・プリンタドライバ
2・・・ROM
3・・・ディスク装置
4・・・LAN回路
5・・・LCD(液晶ディスプレイ)
6・・・キーボード(KB)
7・・・CPU7
8・・・RAM
10・・プリンタ装置
11・・PDL変換部
12・・画像データ形成部(レンダリング部)
13・・画像データ圧縮部
14・・スプール出力部
15、15a、15b・・PDLバッファ
16、16a、16b・・画像データメモリ
17・・スプーラ
20・・時間計測手段
21・・処理時間記憶手段
【技術分野】
【0001】
本発明はプリンタ装置等の印刷装置に接続されたホスト機器において、印刷装置に送信する印刷データの処理を行う印刷データ処理方法に関する。
【背景技術】
【0002】
今日、プリンタ装置等の印刷装置はLAN(local area network)等のネットワークに接続されたホスト機器から印刷データの供給を受け、又はピアツーピア(peer to peer)のネットワーク環境で接続されたホスト機器から印刷データの供給を受け、印刷処理を行っている。この場合、ホスト機器である、例えばパーソナルコンピュータ(PC)にはプリンタドライバが搭載され、印刷データを印刷装置に対応する中間コマンドに変換し、印刷装置に送信している。
【0003】
図30は、パーソナルコンピュータ(PC)に搭載されたプリンタドライバを中心とした印刷システムの構成図である。プリンタドライバ30はPDL変換部31、画像データ形成部32、画像データ圧縮部33、スプール出力部34、PDLバッファ35、画像データメモリ36で構成されている。ワープロソフトや表計算ソフト等のアプリケーションプログラム(APL)によって作成された文書ファイルは、PDL変換部31に供給され、PDL変換部31によってPDLコマンドに変換され、PDLバッファ35に格納される。このPDLコマンドは、例えば線や円の作成、文字の作成等を指示するコマンドであり、印刷装置に対応したコマンドである。
【0004】
画像データ形成部32は、PDLバッファ35に格納されたPDLコマンドを読み出し、例えばビットマップ形式の画像データに変換して、画像データメモリ36に記憶する。このようにして、画像データメモリ36に記憶された画像データは、画像データ圧縮部33において圧縮処理が施され、スプール出力部34からスプーラ38に出力され、スプーラ38からプリンタ装置(印刷装置)40に出力される。
【0005】
一方、複数のプロッセッサを使用し、ページ単位に印刷データを処理する印刷制御方法として、特許文献1が提案されている。この発明は、複数頁にわたる印刷コマンドをバッファに格納し、複数のプロッセッサにより上記バッファから印刷コマンドを読み出し、頁毎にプロッセッサにより描画処理を行う印刷制御方法である。
【先行技術文献】
【特許文献】
【0006】
【特許文献1】特開平05−201077号公報
【発明の概要】
【発明が解決しようとする課題】
【0007】
上記特許文献1の発明は複数のプロセッサを使用するが、基本的には線や円を作成し、文字の生成等を行なうPDLデータを1頁分受け取りPDLデータを解析しながら一時蓄積する(空描画)。1頁分のPDLデータが揃ってから画像形成タスクを生成しプロセッサを割り当て、一時蓄積したPDLデータを再度解析・実行して画像形成を行なう(実描画)。それと並行して次の頁のPDLデータを受け取り解析しながら一時蓄積し、次の頁のPDLデータが揃うとまた新たに画像形成タスクを生成し同じように画像形成していく。印刷データを頁単位にプロセッサを割り当て、並列処理を行う制御方法である。したがって、プリンタエンジンが高速になればなるほど、多くのプロセッサを必要とし、非常に高価なものになってしまう。また、空描画の為に受け取ったPDLデータを一度解析する必要があり、効率も良くない。更にこの空描画の為に1つのタスクが必要でありプロセッサも1つ必要である。プロセッサが少ない場合、同時並行して画像形成できる頁数は非常に少ないものとなり、印刷処理の高速化には限界がある。
【0008】
そこで、本発明はできるかぎり少ない複数のCPU、又は1つのCPUの中に複数のコアを有するマルチコア(multiple core)CPUを使用し、頁単位ではなく、ストリーム型の印刷データ(PDLデータ)をシーケンシャル処理のまま、画像形成処理のマルチスレッド方式による並列処理を行い、印刷データを高速に処理する印刷データ処理方法を提供するものである。
【課題を解決するための手段】
【0009】
上記課題は第1の発明によれば、複数の処理手段を備えたホスト機器上で印刷装置に送信するための印刷データを処理する方法であって、前記処理手段の数に応じたスレッド数を設定し、前記印刷データをPDLコマンドに変換する変換処理、及び、変換されたPDLコマンドを順次第1、第2のコマンド記憶部に記憶させるコマンド記憶処理とを第1のスレッドで処理し、該第1、第2のコマンド記憶部から交互に前記PDLコマンドを読み出し、画像データを生成する画像データ生成処理、及び、該画像データ生成処理によって生成された画像データが順次記憶される第1、第2の画像記憶部に記憶する画像記憶処理とを第2のスレッドで処理し、該第1、第2の画像記憶部から画像データを順次読み出し、印刷手段に送信する送信処理を第3のスレッドで処理し、前記複数の処理手段は、前記
各スレッドの実行要求に応じて該第1乃至第3のスレッドの2以上のスレッドを並行して実行する印刷データ処理方法を提供することによって達成できる。
【0010】
上記課題は第2の発明によれば、前記スレッド数の設定は、CPUの数又はコアの数によって決定する印刷データ処理方法を提供することによって達成できる。
上記課題は第3の発明によれば、前記スレッド数の設定は、記憶容量によって決定する印刷データ処理方法を提供することによって達成できる。
【0011】
上記課題は第4の発明によれば、前記スレッド数の設定は、印刷装置の解像度/階調数によって決定する印刷データ処理方法を提供することによって達成できる。
【0012】
上記課題は第5の発明によれば、前記スレッド数の設定は、最も短い処理時間となるスレッド数に決定する印刷データ処理方法を提供することによって達成できる。
【0013】
上記課題は第6の発明によれば、複数の処理手段を備えたホスト機器上で印刷装置に送信するための印刷データを前記処理手段に処理させるプログラムであって、前記処理手段の数に応じたスレッド数を設定させ、前記印刷データをPDLコマンドに変換する変換処理、及び、変換されたPDLコマンドを順次第1、第2のコマンド記憶部に記憶させるコマンド記憶処理とを第1のスレッドで処理させ、該第1、第2のコマンド記憶部から交互に前記PDLコマンドを読み出し、画像データを生成する画像データ生成処理、及び、該画像データ生成処理によって生成された画像データが順次記憶される第1、第2の画像記憶部に記憶する画像記憶処理とを第2のスレッドで処理させ、該第1、第2の画像記憶部から画像データを順次読み出し、印刷手段に送信する送信処理を第3のスレッドで処理させ、前記複数の処理手段に、前記各スレッドの実行要求に応じて第1乃至第3のスレッドの2以上のスレッドを並行して実行させることを特徴とするプログラムを提供することによって達成できる。
【発明の効果】
【0014】
本発明によれば、複数のCPU又はCPUコアを使用し、かつ複数のPDLバッファ、及び画像データメモリを使用して印刷データの処理をマルチスレッド方式によって実行するので、印刷データの処理を高速に行うことができ、かつ、少ないCPUの数またはCPUコア数で実現できる。また、使用するスレッドの数をCPU又はコアの数、又はメモリ容量、又は解像度/階調数、又は実際のスレッド数に対応する処理時間を計測して設定することによって、自動的に各条件に対応した最適、かつ高速な印刷データの処理を行うことができる。
【図面の簡単な説明】
【0015】
【図1】プリンタドライバの構成を具体的に説明する図である。
【図2】本実施形態に使用する印刷データ処理装置(プリンタドライバ)を有するクライアントPCの構成を示す図である。
【図3】プリンタドライバ内をコアに代えて、CPUで構成した構成例を説明する図である。
【図4】プリンタドライバの初期設定処理を説明するフローチャートである。
【図5】プリンタドライバの初期設定処理を説明するフローチャートである。
【図6】プリンタドライバの初期設定処理を説明するフローチャートである。
【図7】PDL変換部(スレッド1)の処理を説明するフローチャートである。
【図8】画像データ形成部(スレッド2)の処理を説明するフローチャートである。
【図9】画像データ圧縮部及びスプール出力部(スレッド3)の処理を説明するフローチャートである。
【図10】(a)は、本実施形態の印刷データ処理を説明する模式図である。(b)は、従来の印刷データ処理を説明する模式図である。
【図11】4個使用のコアに代えて、2個使用のコアを使用した場合のシステム構成例を示す図である。
【図12】実施形態2の処理を説明するフローチャートである。
【図13】実施形態3の処理を説明するフローチャートである。
【図14】実施形態4の処理を説明するフローチャートである。
【図15】実施形態4の処理を説明するフローチャートである。
【図16】実施形態5で使用するクライアントPCのシステム構成図である。
【図17】処理時間記憶手段の構成を示す図である。
【図18】実施形態5のスレッド1の処理を説明するフローチャートである。
【図19】計測開始処理を説明するフローチャートである。
【図20】計測終了処理を説明するフローチャートである。
【図21】実施形態5のスレッド2の処理を説明するフローチャートである。
【図22】計測開始処理を説明するフローチャートである。
【図23】計測終了処理を説明するフローチャートである。
【図24】実施形態5のスレッド3の処理を説明するフローチャートである。
【図25】計測開始処理を説明するフローチャートである。
【図26】計測終了処理を説明するフローチャートである。
【図27】処理時間の更新処理を説明するフローチャートである。
【図28】スレッド2構成の処理時間の更新処理を説明するフローチャートである。
【図29】実施形態5の変形例を説明する図である。
【図30】従来の印刷処理を説明するフローチャートである。
【発明を実施するための形態】
【0016】
以下、本発明の実施の形態を図面を参照しながら説明する。
(実施形態1)
【0017】
図2は、本実施形態に使用する印刷データ処理装置(プリンタドライバ)を有するホスト機器としてのクライアントPCの構成を示す図である。印刷データ処理装置としてのプリンタドライバは、クライアントPCにLANなどを介して接続される印刷装置に、クライアントPCが印刷処理動作を行わせるためのプログラムで、通常、利用される印刷装置に対応して、その印刷装置のメーカが予め用意するものである。
クライアントPCにより利用する印刷装置が選択された後、その印刷装置に対応するプリンタドライバが、記憶媒体やWeb回線などを利用して、クライアントPCにインストールされた後、クライアントPC内のCPUにより処理が実行され印刷データ処理装置としての機能を発揮する。
図2において、クライアントPCはクワッドコアCPU7(以下、単にCPU7で示す)、RAM8、ROM2、ディスク装置3、LAN回路4、LCD(液晶ディスプレイ)5、及びキーボード(KB)6等で構成されている。また、印刷データ処理装置であるプリンタドライバ1は、クワッドコアCPU7上で動作し、CPU7は内部に4個のコア7a〜7dを有する。コア7a〜7dは、それぞれ独自にPDLコマンドの生成や、描画データの生成処理を行うことができ、後述するスレッドを実行する処理手段である。尚、RAM8は上記コア7a〜7dによる印刷データ処理の際、ワークエリアとしても使用される。
【0018】
ROM2はクライアントPCのシステム制御プログラムや、後述する印刷データの処理プログラムを記憶する。尚、ディスク装置3に上記プログラムや必要なデータを記憶する構成としてもよい。また、LCD(液晶ディスプレイ)5には、CPU7(コア7a〜7d)の制御に従って必要な画面が表示され、キーボード(KB)6からユーザ操作に基づくキーボード操作信号が入力する。また、LAN回路4はクライアントPCによって作成された画像データをプリンタ装置10に出力する。
【0019】
尚、図3は印刷データ処理装置を含むクライアントPC内を、コア7a〜7dに代えて、複数のCPU(処理手段)で構成した例であり、他の回路構成は前述の図2と同様である。
図1は、本例のプリンタドライバ(印刷データ処理装置)の機能的構成を具体的に説明する図である。プリンタドライバ1はPDL変換部11(スレッド1)、画像データ生成部(レンダリング部、スレッド2)12、画像データ圧縮部13及びスプール出力部14(スレッド3)、PDLバッファ15、画像データメモリ16で構成されている。
【0020】
PDL変換部11は印刷データに含まれる線や円の作成、文字の作成等を指示するコマンドを本例で使用するプリンタ装置10に対応するコマンドに変換する機能を有し、アプリケーション(APL)によって作成された文書ファイルをPDLコマンドに変換する。
また、PDLバッファ15は、PDL変換部11によって変換されたPDLコマンドを格納するダブルバッファであり、PDLバッファ15a、15bで構成される。
【0021】
画像データ生成部(レンダリング部)12は、PDLバッファ15a、15bに格納されたコマンドを交互に読み出し、画像データを生成し、当該画像データを画像データメモリ16に記憶する。画像データメモリ16もダブルバッファ方式の2つの画像データメモリ16a、16bで構成され、それぞれ1頁分の画像データの記憶が可能である。
【0022】
画像データ圧縮部13は上記画像データメモリ16a、16bに記憶された画像データを交互に読み出し、公知の圧縮技術を使用してスプール出力部14に出力する。スプール出力部14は圧縮された画像データをスプーラ17に出力し、スプーラ17から圧縮された画像データをプリンタ装置10に供給する。プリンタ装置10では、画像データに伸張処理を施し、記録媒体に対して印刷処理を行う。
【0023】
ここで、図1に示すスレッド1〜3は、前述の図2に示すコア7a〜7dの何れかが担当する処理を示すものであり、例えばコア7aがアプリケーションプログラムによる文書ファイルの作成を行い、コア7bがスレッド1の処理を担当し、コア7cがスレッド2の処理を担当し、コア7dが画像データ圧縮部13による画像データの圧縮処理、及びスプール出力部14による画像データの出力処理を担当する。但し、アプリケーション処理、及び上記スレッド1〜3の処理を実行するコアは上記コアに限定されるのではなく、各処理が必要な際、空いているコア7a〜7dが使用される。
【0024】
以上の構成において、以下に本例の処理動作を説明する。
【0025】
図4〜図6はプリンタドライバ(印刷データ処理装置)1の初期設定処理を説明するフローチャートである。先ず、図4に示すフローチャートに従って、本例のマルチスレッドの初期化処理を行い(ステップ(以下、Sで示す)1)、更にマルチスレッド以外のプリンタドライバ1内の初期化処理を行う(S2)。
【0026】
図5に示すフローチャートは上記マルチスレッドの初期化処理を具体的に説明するフローチャートである。先ず、スレッド数を決定する(S3)。このスレッド数の決定は、例えば図6のフローチャートに示すように、スレッド数“3”に設定する(S4)。
次に、PDLバッファ15の領域、及び画像データメモリ16の領域を確保する(S5)。具体的には前述の図2に示すRAM8に、PDLバッファ15aの記憶領域を確保し、更に画像データメモリ16aの記憶領域を確保する。
【0027】
次に、PDL変換部11によりPDLコマンド生成中において選択するバッファをPDLバッファ15aとし、画像データ形成部(レンダリング部)12により描画データ生成中において選択するバッファも同じPDLバッファ15aに初期設定する(S6)。さらに、画像データ形成部(レンダリング部)12が描画データ生成中において選択する画像データメモリを画像データメモリ16aとし、画像データ圧縮部13が描画データの圧縮中において選択する画像データメモリも同じ画像データメモリ16aに初期設定する(S6)。
【0028】
次に、画像形成要求中フラグをオフに設定し、圧縮・スプール出力要求中フラグもオフに設定する(S7)。すなわち、画像データ形成部(レンダリング部)12、及び画像データ圧縮部13、スプール出力部14が動作を行っていない状態を示すフラグをオフ状態に設定する。
【0029】
次に、設定されたスレッド数が“1”を越えているか判断する(S8)。この場合、前述のように、スレッド数が“3”に設定されており、判断(S8)はYES(イエス)であり、更にPDLバッファ15の記憶領域としてPDLバッファ15bを確保し(S9)、スレッド2を生成し、起動する(S10)。尚、前述の処理(S4)において、スレッド数を“1”に設定していれば(S8がNO(ノー))、直ちに次の判断に移行する。
【0030】
次に、判断(S11)は、スレッド数が“2”を越えているか判断する。この判断も、前述のように本例において、スレッド数“3”が設定されており、判断(S11)はYES(イエス)であり、更に画像データメモリ16の領域として画像データメモリ16bを確保し(S12)、スレッド3を生成し、起動する(S13)。尚、スレッド数が“2”の場合には、上記画像データメモリ16bのエリアは確保されず(S11がNO)、スレッド数が“1”の場合には、上記PDLバッファ15b及び画像データメモリ16bのエリアは確保されない(S8がNO、S11もNO)。
【0031】
以上のようにして初期設定処理が完了した後、アプリケーションプログラムによって作成された印刷データがプリンタドライバ1に供給される。図7〜図9は以後の処理を説明するフローチャートであり、スレッド1、2、及び3が行う処理を説明するものである。
【0032】
尚、図10(a)は本例の処理を模式的に示す図である。
【0033】
先ず、図7に示すフローチャートはPDL変換部11によるスレッド1の処理を説明するものであり、供給される文書ファイルに従ってアプリケーションプログラムより依頼された要求を取り出す。例えば、線や円の生成や文字の作成要求に従って、対応するPDLコマンドを生成する(ステップ(以下、STで示す)1、2)。
【0034】
次に、生成したPDLコマンドを前述のPDLバッファ15aにバッファリングする(ST3)。図10(a)に示すaはこの処理を示し、文書ファイルの1頁目の最初の印刷データのPDLコマンドがPDLバッファ15aに格納される。また、上記処理は、例えばコア7aによって実行される。
【0035】
次に、PDL変換部11は生成したPDLコマンドが改頁コマンドであるか判断する(ST4)。通常、最初のこの処理はNO(ノー)であり、PDLバッファ15aの容量一杯までPDLコマンドがバッファリングされたか判断する(ST5)。ここで、PDLバッファ15aに余裕があれば、上記処理(ST1)に戻ってアプリケーションプログラムより依頼された要求に従ったPDLコマンドの生成、及びPDLバッファ15aへの格納処理を繰り返す(ST1〜ST5)。
【0036】
その後、PDLバッファ15aの容量一杯までPDLコマンドがバッファリングされた場合(ST5がYES)、又は改頁コマンドが検出されると(ST4がYES)、スレッド数の設定が“1”を越えているか判断する(ST6)。ここで、本例では前述のように、スレッド数が“3”に設定されており(ST6がYES)、更に画像形成要求中フラグがオンであるか判断する(ST7)。この画像形成要求中フラグは、前述の初期設定処理(S7)によってオフに設定されており(ST7がNO)、上記PDLコマンドを格納したPDLバッファ15aを、以後画像データ形成部(レンダリング部)12が読み出しを行うPDLバッファに設定する(ST8)。
【0037】
次に、画像形成要求中フラグをオンにセットし(ST9)、スレッド2に対して画像形成要求を出す(ST10)。すなわち、PDL変換部11から画像データ形成部(レンダリング部)12に対して画像形成要求を出力する。
【0038】
その後、PDL変換部11は次に文書ファイルから生成するPDLコマンドを格納するPDLバッファ15a又は15bを設定する。この場合、現在選択されているPDLバッファが15aであれば(ST11がYES)、PDLバッファ15bに変更し(ST12)、現在選択されているPDLバッファが15bであれば(ST11がNO)、PDLバッファ15aに変更する(ST13)。
【0039】
尚、前述の判断(ST7)において、画像形成要求中フラグがオンの場合には、画像データ形成部(レンダリング部)12による画像形成処理の終了を待ち、画像形成要求中フラグをオフする(ST7がYES、ST14、ST15)。この処理は、後に画像データ形成部(レンダリング部)12が処理を終了した際行う処理であり、後述する。
【0040】
また、前述の改頁コマンドが供給される前に、多くの場合PDLバッファ15aがPDLコマンドで満杯になり、次に選択されたPDLバッファ15bに以後の文書ファイルのPDLコマンドがバッファリングされる(例えば、図10(a)のe1〜enの処理)。
【0041】
次に、スレッド2の処理、即ち画像データ形成部(レンダリング部)12の処理は、図8に示すフローチャートに従って実行され、先ずPDL変換部11からの画像形成要求の発生を待つ(ST16)。そして、画像データ形成部(レンダリング部)12に画像形成要求が入力すると、PDLバッファ15aに格納されたPDLコマンドを順次取り出し、取り出したPDLコマンドが改頁コマンドであるか判断する(ST17、ST18)。
【0042】
通常、最初のこの処理はノーであり、PDLバッファ15aから取り出したPDLコマンドの解析を行い、そのPDLコマンドに対応した画像形成処理を行ない、描画データとして画像データメモリ16aに展開する(ST19)。尚、この処理は図10(a)に示すbである。
【0043】
次に、PDLバッファ15aに格納されたPDLコマンドが全て処理されたか判断し(ST20)、PDLバッファ15a内に格納されたPDLコマンドが全て処理されるまで、画像データ形成部(レンダリング部)12による描画データの解析、及び画像データメモリ16aへの展開処理を繰り返す(ST20がNO、ST16〜ST19)。
【0044】
その後、PDLバッファ15a内の全てのPDLコマンドの解析処理が完了し、画像データメモリ16aへの描画データの展開が終了すると(ST20がYES)、PDL変換部11(スレッド1)に対して画像形成処理の終了を通知する(ST21)。この通知は、PDL変換部11に供給され、画像形成要求中フラグをオフする(前述の図7に示すフローチャートの処理(ST14、ST15))。
【0045】
その後、上記処理を繰り返し、画像データ形成部(レンダリング部)12は、取り出したPDLコマンドが改頁コマンドである場合(S18がYES)、スレッド数の設定が2より大きいか判断する(ST22)。本例の場合、スレッド数は“3”に設定されており(ST22がYES)、次に圧縮・スプール出力要求中フラグがオンであるか判断する(ST23)。
ここで、圧縮・スプール出力要求中フラグは前述の初期設定において、オフに設定されており(ST23がNO)、上記画像データメモリ16aに展開した画像データを、以後画像データ圧縮部13が読み出しを行う画像データメモリとして設定する(ST24)。
次に、圧縮・スプール出力要求中フラグをオンにセットし(ST25)、画像データ圧縮部13(スレッド3)に対して圧縮・スプール出力要求を出す(ST26)。すなわち、画像データ形成部(レンダリング部)12から画像データ圧縮部13に対して圧縮・スプール出力要求を出力する。
【0046】
その後、画像データ形成部(レンダリング部)12は次に画像データを格納する画像データメモリ16a又は16bを設定する。例えば、現在選択されている画像データメモリが16aであれば(ST27がYES)、画像データメモリ16bに変更し(ST28)、現在選択されている画像データメモリが16bであれば(ST27がNO)、画像データメモリ16bに変更する(ST29)。
【0047】
尚、前述の判断(ST23)において、圧縮・スプール出力要求中フラグがオンの場合には、画像データ圧縮部13及びスプール出力部14による圧縮・スプール出力処理の終了を待ち、圧縮・スプール出力要求中フラグをオフする(ST23がYES、ST30、ST31)。この処理は、後に画像データ圧縮部13及びスプール出力部14が処理を開始し、画像データの圧縮処理及びスプール出力が終了した際行う処理であり、後述する。
【0048】
次に、スレッド3の処理、即ち画像データ圧縮部13の処理について、図9に示すフローチャートを使用して説明する。先ず、画像データ圧縮部13は、圧縮・スプール出力要求を待ち(ST32)、画像データメモリ16aに展開された画像データの圧縮処理を行う(ST33)。
【0049】
次に、上記処理によって圧縮した画像データをスプール出力部14に送り、スプール出力部14はスプーラ17に対して圧縮画像データを出力する。この処理は、図10(a)にcで示す処理である。スプーラ17はLAN等を介してプリンタ装置10に圧縮された画像データを送信する(ST34)。この処理は、図10(a)にdで示す処理であり、プリンタ装置10にて印刷処理が施される。
【0050】
次に、画像データ形成部(レンダリング部)12に対し、圧縮対象画像データの圧縮及びスプール出力処理の終了を通知する(ST35)。この通知は、画像データ形成部(レンダリング部)12に送られ、圧縮・スプール出力要求中フラグをオフする。(前述の図8に示すフローチャートの処理(ST30、ST31))。
【0051】
上記処理は同様に繰り返され、1頁目の文書ファイルはPDL変換部11によってPDLバッファ15a、15bに交互に入力し、画像データ形成部(レンダリング部)12によって交互に読み出され、画像データに変換された後画像データメモリ16aに記憶される。また、次の頁の文書ファイルも、PDLバッファ15a、15bに交互にバッファリングされ、画像データ形成部(レンダリング部)12によって画像データに変換された後画像データメモリ16bに記憶される。画像データ圧縮部13では上記画像データメモリ16a、16bから交互に画像データを読み出し、図10(a)にc、gで示す画像データの圧縮処理を行い、スプール出力部14によって図10(a)にd、fで示すデータ転送処理を行い、スプーラ17を介してプリンタ装置10に画像データを出力する。
【0052】
その間、スレッド1〜3は、対応する時点で空き状態のコア7a〜7dが選択され、印刷データの処理が順次実行される。(なお図示はしていないが、CPUコアの割当て(CPUコアのディスパッチ)に関しては、Windows(登録商標)などのOSのカーネル部がレディ状態のタスクまたはスレッドに対してCPUコアの割当て(CPUコアのディスパッチ)を行なう。)
【0053】
以上のように、本例によれば3スレッド構成/QuadコアCPU(コア7a〜7d)の場合、図10(a)の如く、PDL変換処理と画像形成(レンダリング)処理と画像圧縮&スプール出力処理の3つの処理およびスプーラによる圧縮画像データの転送処理が並列処理でき、格段の処理時間の短縮できる。尚、図10(b)は同じ文書ファイルを従来のシングルスレッド処理によって処理した例を示し、両処理を比較することによって本例の処理が従来例に比べて高速に行われることが分かる。
【0054】
また、上記説明では図2に示す4個のコア7a〜7dを有するCPU7の例で説明したが、前述のように4個のCPUを有する構成の図3に示す構成としてもよい。
【0055】
上記例はスレッド数が“3”の場合について説明したが、例えばスレッド数が“2”の場合には、以下の処理となる。すなわち、図8に示すフローチャートの判断(ST22)がNOとなり、スレッド2の処理として、画像データ圧縮部13は画像データメモリ16aに記憶した画像データを読み出し、画像データの圧縮処理を行う(ST36)。さらに、スプール出力部14によって圧縮された画像データはスプーラ17を介してプリンタ装置10に出力される(ST37)。
【0056】
尚、図11は2つのコアを使用した場合のシステム構成例を示し、スレッド数を“2”に設定して本発明の印刷データ処理を行う場合において、適用可能である。
一方、スレッド数が“1”の場合には、以下の処理となる。すなわち、図7に示すフローチャートの判断(ST6)がNOとなり、画像データ形成部(レンダリング部)12はPDLバッファ15に格納されたPDLコマンドを順次取り出し(ST38)、取り出したPDLコマンドが改頁コマンドであるまで、画像データメモリ16aに生成した画像データを書き込む(ST39がYES、ST40、ST41)。
【0057】
その後、取り出したPDLコマンドが改頁コマンドであれば(ST39がYES)、画像データ圧縮部13によって画像データメモリ16aに記録された画像データを読み出し、圧縮処理を行い、スプール出力部14によって圧縮された画像データをスプーラ17を介してプリンタ装置10に出力する(ST42、ST43)。
(実施形態2)
【0058】
次に、本発明の実施形態2について説明する。尚、以下で説明する実施形態2以降は、前述の実施形態1の処理を前提として、条件を変えてスレッド数の設定を行う際の例を示すものである。
【0059】
本例はスレッド数の設定をCPU7のコア数で決定する構成であり、クライアントPCの構成やプリンタドライバの構成等は前述の実施形態1と同様である。以下、図12に示すフローチャートを使用して本例の処理を説明する。
【0060】
この処理は、前述のマルチスレッドの初期化ルーチンである図5の処理(S3)によって呼び出されるルーチンであり、先ずマルチCPUであるCPU7のコア数を獲得する(ステップ(以下、STPで示す)1)。このコア数の情報は、例えばクライアントPC内の基本システムの設定情報から読み出す。
【0061】
次に、スレッド数として初期値“3”をセットする(STP2)。次に、読み出したコア数の情報に基づいて、コア数が2を越えているか、即ち“3”以上であるか判断する(STP3がYES)。ここで、コア数が“3”以上である場合、上記初期設定したスレッド数“3”を設定スレッド数とする(STP3がYES)。
【0062】
一方、コア数が“2”を越えていない場合、スレッド数を“2”に変更する(STP3がNO、STP4)。さらに、コア数が“1”を越えているか判断し、コア数が“1”を越えていない場合、スレッド数を“1”に設定する(STP5がNO、STP6)。
【0063】
以上のように、本例はクライアントPCが有するコア数によってスレッド数の設定を行う構成であり、クライアントPCの有するコア数に対応したスレッド数の設定を行うことができ、クライアントPCの性能に合ったスレッド数の設定を自動的に行うことができる。
【0064】
尚、本例においても、複数のコアを有するCPU7の例で説明したが、前述のように複数のCPUを有する構成の図3の例の場合にも同様に適用することができる。
また、クライアントPCのCPUが1個であった場合にも前記同様スレッド数を“1”に設定して、同様の制御を実行する。
(実施形態3)
【0065】
次に、本発明の実施形態3について説明する。
本例はスレッド数の設定をメモリサイズに従って決定する構成であり、クライアントPCの構成やプリンタドライバの構成等は前述の実施形態1と同様である。以下、図13に示すフローチャートを使用して本例の処理を説明する。
【0066】
本例の処理も、前述のマルチスレッドの初期化ルーチンである図5の処理(S3)によって呼び出されるルーチンであり、先ずメモリサイズの情報を獲得する(ステップ(以下、Wで示す)1)。このメモリサイズの情報も、例えばクライアントPC内の基本システムの設定情報から読み出す。
【0067】
次に、本例においても、スレッド数の初期値として“3”をセットする(W2)。以下、獲得したメモリサイズの情報に従ってスレッド数の設定を行う。すなわち、読み出したメモリサイズが1GBより大きい場合、上記初期設定したスレッド数“3”を維持し、このスレッド数(“3”)に設定する(W3がYES)。
【0068】
一方、メモリサイズが1GBより大きくない場合、スレッド数として“2”の設定を行う(W3がNO、W4)。さらに、メモリサイズが512MBより大きいか判断し(W4)、大きくない場合、スレッド数を“1”に設定する(W5がNO、W6)。
【0069】
以上のように、本例はメモリサイズに対応して最適なスレッド数/画像データメモリ・PDLバッファの設定を行うことができ、メモリサイズを意識することなく、自動的にクライアントPCのメモリサイズに対応したスレッド数の設定を行い、印刷処理を高速化することができる。
(実施形態4)
【0070】
次に、本発明の実施形態4について説明する。
本例はスレッド数の“1”に設定した後、文書ファイル印刷の為にアプリケーション(APL)より指定された解像度及び階調数に従ってスレッド数の設定を行うものである。
以下、図14及び図15に示すフローチャートを使用して本例の処理を説明する。
【0071】
先ず、図14に示すフローチャートに従って、スレッド数を“1”に設定する(ステップ(以下、Uで示す)1)。次に、図15に示すフローチャートに従って処理を開始し、先ず前述と同様、供給される文書ファイルに従ってアプリケーションプログラムより依頼された要求を取り出し、対応するPDLコマンドを生成する(U2、U3)。
次に、生成したPDLコマンドを前述と同様、PDLバッファ15にバッファリングし(U4)、生成したPDLコマンドが解像度/階調コマンドであるか判断し(U5)、解像度/階調コマンドでなければ(U5がNO)、改頁コマンドを検出するまで、順次文書ファイルをPDLコマンドに変換する(U6、U7、U2〜U5)。
【0072】
一方、解像度/階調コマンドを検出すると(U5がYES)、先ず解像度が600dpi以上であるか判断し(U8)、解像度が600dpi以上であれば(U8がYES)、更に階調値が2を越えているか判断する(U9)。ここで、解像度が600dpi以上ではない場合(U8がNO)、又は解像度が600dpi以上であっても階調値が2以下である場合(U9がNO)、スレッド数を“2”に設定する(U10)。
【0073】
次に、解像度が300dpiであるか判断し(U11)、解像度が300dpiであればスレッド数を“3”に設定する(U12)。一方、解像度が300dpiではない場合(U11がNO)、解像度が600dpiであるか判断し(U13)、解像度が600dpiであり、更に階調値が16以上ではない場合(U13がYES、U14がNO)、スレッド数を“3”に設定する(U12)。
【0074】
上記処理によって、スレッド数が“1”乃至“3”に設定された後、前述の処理を実行する。すなわち、実施形態1の処理と同様、画像形成要求中フラグをオフに設定し、圧縮・スプール出力要求中フラグもオフに設定し(U15)、PDLバッファ15bを確保してスレッド2の生成を起動する(U16、U17)。そして、設定されたスレッド数が“2”を越えているか判断し(U18)、スレッド数が“2”を越えていれば(U18がYES)、更に画像データメモリ16bを確保してスレッド3を起動する(U19、U20)。
【0075】
以下、前述の図7に示すフローチャートと同様の処理を行い、スレッド数“3”が設定された場合には、PDLバッファ15a、15b、及び画像データメモリ16a、16bを交互に使用し、文書ファイルに基づく画像データを効率よくプリンタ装置10に送信できる(U21〜U36)。また、スレッド数“2”が設定された場合には、PDLバッファ15a、15bを交互に使用し、更に画像データメモリ16を使用して、文書ファイルに基づく画像データを効率よくプリンタ装置10に送信する(U21〜U36)。尚、この処理(U21〜U36)は前述の実施形態1と同様の処理であり、説明を省略する。
【0076】
以上のように、本例は解像度/階調数に対応して最適なスレッド数の設定を行うことができ、自動的にプリンタ装置10の解像度及び階調数に対応した最適なスレッド数の設定を行い、印刷処理を高速化することができる。
(実施形態5)
【0077】
次に、本発明の実施形態5について説明する。
本例はスレッド数“1”〜“3”について処理時間を計算し、最も平均処理時間が短いスレッド数の設定を行うものである。以下、具体的に説明する。
【0078】
図16は本例で使用するクライアントPCのシステム構成図である。尚、同図の構成は前述の図2に示すシステム構成と基本的に同様であるが、プリンタドライバ(印刷データ処理装置)1内に時間計測手段20、及び処理時間記憶手段21を含む。尚、他の構成は前述の図2と同様であり、図2と同じ回路には同じ番号を付し、構成上の説明を省略する。
【0079】
時間計測手段20は各コア7a〜7dがスレッド処理を実行する際の処理時間を計測する機能を有し、具体的な計測処理については後述する。また、処理時間記憶手段21は、例えば図17に示す処理時間テーブルで構成され、1スレッド構成〜3スレッド構成時の各累積処理時間、累積頁数、及び1頁当たりの平均処理時間を記憶する。以下、本例の処理を具体的に説明する。
【0080】
図18は本例の処理を説明するフローチャートであり、先ずスレッド1の処理時間を計測するため、計測処理を開始する(ステップ(以下、Vで示す)1)。具体的には、図19に示す処理に従って実行され、先ずスレッド1の時間計測中フラグがオフであるか判断する(V2)。尚、後述するが、スレッド1〜3の時間計測中フラグは初期時オフに設定されており(V2がYES)、スレッド1の時間計測中フラグをオンにセットし、時間計測手段20(タイマ1)による時間計測を開始する(V3、V4)。
【0081】
その後、図18に示すフローチャートに戻って、PDL変換部11はアプリケーションプログラムより依頼された要求を取り出し、対応するPDLコマンドを生成する(V5、V6)。さらに、生成したPDLコマンドを前述と同様、PDLバッファ15aにバッファリングし(V7)、生成したPDLコマンドが改頁コマンドであるか判断し(V8)、改頁コマンドでなければ(V8がNO)、PDLバッファ15aが満杯になったか判断し(V9)、満杯になるまで上記処理を繰り返す。
【0082】
改頁コマンドを検出すると(V8がYES)、スレッド数の設定が“3”又は“2”であれば(V10がYES)、スレッド1の処理時間の計測を終了する(V11)。具体的には、図20に示す処理に従って実行され、先ず時間計測手段20(タイマ1)の計測処理を停止し(V12)、タイマ1の値を読み出し(V13)、スレッド1の処理時間として、一時的に記憶し(V14)、タイマ1をリセットする(V15)。そして、スレッド1の時間計測中フラグをオフにする(V15−2)。
【0083】
次に、改頁コマンドを検出した後(V10、V11)、もしくは、PDLバッファ15aが満杯になった(V9がYES)場合、スレッド数が“2”以上であり(V16がYES)、更に画像形成要求中フラグがオンであるか判断し(V17)、画像形成要求中フラ
グは、初期時オフに設定されており(V17がNO)、上記PDLコマンドを格納したPDLバッファ15aを、以後画像データ形成部(レンダリング部)12が読み出しを行うPDLバッファとして設定する(V18)。
【0084】
次に、前述と同様、画像形成要求中フラグをオンにセットし(V19)、スレッド2に対して画像形成要求を出力し(V20)、その後、PDL変換部11は次に文書ファイルから生成するPDLコマンドを格納するPDLバッファ15a、15bを設定する。すなわち、前述と同様、選択されているPDLバッファが15aであれば(V21がYES)、PDLバッファ15bに変更し(V22)、選択されているPDLバッファが15bであれば(V21がNO)、PDLバッファ15aに変更する(V23)。尚、上記判断(V17)において、画像形成要求中フラグがオンである場合の処理も前述と同様である(V17がYES、V24、V25)。
【0085】
次に、スレッド2の処理、即ち画像データ形成部(レンダリング部)12の処理における時間計測は、図21に示すフローチャートに従って行われる。先ず、PDL変換部11からの画像形成要求を待ち(V26)、画像形成要求があると、スレッド2の処理時間の計測を開始する(V27)。具体的には、図22に示す処理に従って実行され、先ずスレッド2の時間計測中フラグがオフであるか判断する(V28)。前述のように、スレッド1〜3の時間計測中フラグは初期時オフにフラグ設定されており(V28がYES)、スレッド2の時間計測中フラグをオンに設定し、時間計測手段20(タイマ2)による時間計測を開始する(V29、V30)。
【0086】
その後、前述と同様、画像データ形成部(レンダリング部)12に画像形成要求があると、PDLバッファ15aに格納されたPDLコマンドを順次取り出し、取り出したPDLコマンドが改頁コマンドであるか判断し(V31〜V34)、改頁コマンドでない場合、前述と同様、PDLコマンドの解析を行い、画像データを生成して画像データメモリ16aに記憶し、PDLバッファ15aに格納されたPDLコマンドが全て処理されたとき(V34がYES)、PDL変換部11(スレッド1)に対して画像形成処理の終了を通知する(V35)。
【0087】
また、取り出したPDLコマンドが改頁コマンドである場合(V32がYES)、スレッド数が“2”を越えているか判断し(V36)、スレッド数が“3”の場合(V36がYES)、スレッド2の処理時間の計測を終了する(V37)。具体的には、図23に示す処理に従って実行され、先ず時間計測手段20(タイマ2)による計測処理を停止し(V38)、時間計測手段20(タイマ2)の値を読み出し(V39)、スレッド2の処理時間として、一時的に記憶する(V40)。また、タイマ2の値をリセットし(V41)、スレッド2の時間計測中フラグをオフにする(V41−2)。
【0088】
その後、前述と同様の処理を行い、圧縮・スプール出力要求中フラグがオンであるか判断し(V42)、圧縮・スプール出力要求中フラグがオフに設定されていれば(V42がNO)、上記画像データメモリ16aに展開した画像データを、以後画像データ圧縮部13が読み出しを行う画像データメモリとして設定し(V43)、圧縮・スプール出力要求中フラグ中フラグをオンにセットし(V44)、画像データ圧縮部13に対して圧縮・スプール出力要求を出し(V45)、その後、選択されている画像データメモリが16aであれば(V46がYES)、画像データメモリ16bに変更し(V47)、選択されている画像データメモリが16bであれば(V46がNO)、画像データメモリ16bに変更する(V48)。尚、圧縮・スプール出力要求中フラグがオンである場合の処理も前述と同様である(V49、V50)。
【0089】
次に、スレッド3の処理時間を計測するため、図24に示すフローチャートに示す処理を実行する。先ず、画像データ圧縮部13は、圧縮・スプール出力要求を待ち(V51)、圧縮・スプール出力要求があると、スレッド3の処理時間の計測を開始する(V52)。具体的には、図25に示す処理に従って実行され、先ずスレッド3の時間計測中フラグがオフであるか判断し(V52−1)、スレッド1〜3の時間計測中フラグは初期時オフにフラグ設定されており(V52−1がYES)、スレッド3の時間計測中フラグをオンに設定し、時間計測手段20(タイマ3)による時間計測を開始する(V52−2、V52−3)。
【0090】
その後、画像データ圧縮部13は、画像データメモリ16bに展開された画像データの圧縮処理を行い(V53)、圧縮処理した画像データをスプーラ17に出力する(V54)。そして、スレッド3の処理時間の計測を終了する(V55)。具体的には、図26に示す処理に従って実行され、先ず時間計測手段20(タイマ3)による計測処理を停止し(V56)、時間計測手段20(タイマ3)の値を読み出し(V57)、スレッド3の処理時間として、一時的に記憶する(V58)。その後、タイマ3をリセットし(V59)、スレッド3の時間計測中フラグをオフにする(V59−2)。
【0091】
その後、3スレッド構成の処理時間を更新する(V60)。この処理は、図27に示すフローチャートに従って実行される。先ず、3スレッド構成の累積頁数のデータを+1する(V61)。すなわち、前述の図17に示す3スレッド構成の累積頁数のエリアのデータを+1する。
【0092】
次に、一時的に記憶しているスレッド1,2,3の処理時間のうち、最も長時間のものを選び、3スレッド構成の累積処理時間に累積する。まず、スレッド2の処理時間がスレッド1の処理時間より長いか判断する(V62)。すなわち、画像データ形成部(レンダリング部)12における処理がPDL変換部11における処理より時間を要したか判断し、スレッド2の処理時間がスレッド1の処理時間より長い場合(V62がYES)、スレッド1の処理時間をスレッド2の処理時間とする(V63)。すなわち、より時間を要した処理の処理時間をスレッド1の処理時間とする。
【0093】
次に、スレッド3の処理時間がスレッド1の処理時間より長いか判断する(V64)。この場合、スレッド1の処理時間は上記処理(V63)によって設定された時間であり、この時間とスレッド3の処理時間との比較処理を行う。ここで、スレッド3の処理時間がスレッド1の処理時間より長い場合(V64がYES)、スレッド3の処理時間をスレッド1の処理時間に設定する(V65)。すなわち、スレッド1〜3の各処理に要した時間の中で最も長時間を要したスレッドの処理時間をスレッド1の処理時間に設定する。
【0094】
次に、3スレッド構成の累積処理時間に、上記スレッド1の処理時間を累積する(V66)。この累積処理時間は、前述の図17に示す3スレッド構成の累積処理時間のエリアに記録される。そして、3スレッド構成の平均処理時間を計算し(3スレッド構成の累積処理時間/3スレッド構成の累積頁数)、図17に示す処理時間テーブルの1頁当たりの平均処理時間のエリアに記録し、処理時間記憶手段21に書き込む(V67、V68)。
【0095】
上記例は3スレッド構成の場合について説明したが、例えば2スレッド構成の場合には、以下の処理となる。すなわち、前述の図21に示すフローチャートの判断(V36)がNOとなり、スレッド2の処理として、画像データ圧縮部13は画像データメモリ16に記憶した画像データを読み出し、画像データの圧縮処理を行い(V70)、圧縮した画像データをスプーラ17を介してプリンタ装置10に出力する(V71)。
【0096】
次に、スレッド2の処理時間の計測終了処理を行う(V72)。この処理は前述の図23で説明した処理と同様の処理である。その後、2スレッド構成の処理時間を更新する(V73)。
【0097】
この処理は、図27に示すフローチャートに従って実行される。先ず、2スレッド構成の累積頁数のデータを+1し(V74)、スレッド2の処理時間がスレッド1の処理時間より長いか判断する(V75)。この処理も上記処理と同様であり、より時間を要した処理の処理時間をスレッド1の処理時間とする。
【0098】
ここで、スレッド2の処理時間がスレッド1の処理時間より長い場合(V75がYES)、スレッド1の処理時間をスレッド2の処理時間に設定する(V76)。次に、2スレッド構成の累積処理時間に上記スレッド1の処理時間を累積し(V77)、2スレッド構成の平均処理時間を計算し(2スレッド構成の累積処理時間/2スレッド構成の累積頁数)、処理時間テーブルの対応するエリアに平均処理時間を記録し、処理時間記憶手段21に書き込む(V78、V79)。
【0099】
一方、1スレッド構成の場合には、以下の処理となる。すなわち、図18に示すフローチャートの判断(V16)がNOとなり、画像データ形成部(レンダリング部)12はPDLバッファ15aに格納されたPDLコマンドを順次取り出し(V80)、取り出したPDLコマンドが改頁コマンドであるまで、画像データメモリ16aに生成した画像データを書き込む(V80がYES、V81〜V83)。
【0100】
その後、取り出したPDLコマンドが改頁コマンドであれば(V81がYES)、画像データ圧縮部13によって画像データメモリ16aに記録された画像データを読み出し、圧縮処理を行い、スプール出力部14によって圧縮された画像データをスプーラ17を介してプリンタ装置10に出力する(V84、V85)。
【0101】
次に、スレッド1の処理時間の計測終了処理を行う(V86)。この処理は前述の図20で説明した処理と同様な処理であり、その後1スレッド構成の処理時間の更新処理を行う(V87)。
【0102】
図27は上記処理を説明するフローチャートであり、1スレッド構成の累積頁数のデータを+1し(V88)、1スレッド構成の累積処理時間に計測したスレッド1の処理時間を累積し(V89)、1スレッド構成の平均処理時間を計算し(1スレッド構成の累積処理時間/1スレッド構成の累積頁数)、処理時間テーブルの1スレッド構成の対応するエリアに平均処理時間を記録する(V90、V91)。その後、スレッド1〜3の処理時間を“0”にリセットする(V92)。
【0103】
このようにして、各スレッド構成時の処理時間テーブルを更新していく。そして、次にアプリケーションより印刷要求が発生した場合、プリンタドライバはこの処理時間テーブルを読み出し、1頁あたりの平均処理時間の最も少ないスレッド構成を選択し、そのスレッド数でPDL変換や画像形成処理などを行なう。このスレッド数決定ルーチンを、図28に示すフローチャートに従って説明する。この処理は、前述のマルチスレッドの初期化ルーチンである図5の処理(S3)によって呼び出されるルーチンであり、先ず処理時間記憶手段21から1スレッド構成〜3スレッド構成の1頁当たりの平均処理時間を読み出し、比較する(V93、V94)。
この場合、先ずスレッド数“3”を設定する(V95)。次に、上記平均処理時間を比較した結果、3スレッド構成時の1頁当たりの平均処理時間が最も少ない場合(V96がYES)、上記の設定通りスレッド数として“3”を設定する。
一方、上記判断(V96)がノーである場合、スレッド数を“2”に設定し、2スレッド構成時の1頁当たりの平均処理時間が最も少ないか判断する(V98)。ここで、2スレッド構成時の1頁当たりの平均処理時間が最も少ない場合(V98がYES)、2スレッド構成とする。さらに、上記判断(V98)がノーである場合、スレッド数を“1”に設定し、1スレッド構成の設定を行う(V99)。
【0104】
その後、スレッド1〜3の時間計測中フラグをオフとし、スレッド1〜3の処理時間をゼロにリセットし、時間計測手段20(タイマ1〜3)をリセットする(V100〜V102)
【0105】
本例は以上のように処理することによって、前述の実施形態2乃至4で説明したCPUの能力や、メモリサイズ、解像度/階調コマンド等を全く意識することなく、自動的に適切なスレッド数の設定を行うことができる。
【0106】
尚、処理時間記憶手段21に設定する処理時間管理テーブルを用紙サイズに対応した構成としてもよい。図29は用紙サイズ毎にスレッド1〜3の累積処理時間、累積頁数、1頁当たりの平均処理時間を記録し、用紙サイズに従って最適なスレッド構成を選択するための処理時間管理テーブルの例を示す図である。
【0107】
上記テーブルに前述の実施形態5の処理に従ってデータを記録し、上記と同様の処理を行うことによって、スレッド構成毎であり、且つ用紙毎に1頁当たりの平均画像形成時間を求め、用紙サイズに応じて最適なスレッド数の設定を行うことができる。
【符号の説明】
【0108】
1・・・プリンタドライバ
2・・・ROM
3・・・ディスク装置
4・・・LAN回路
5・・・LCD(液晶ディスプレイ)
6・・・キーボード(KB)
7・・・CPU7
8・・・RAM
10・・プリンタ装置
11・・PDL変換部
12・・画像データ形成部(レンダリング部)
13・・画像データ圧縮部
14・・スプール出力部
15、15a、15b・・PDLバッファ
16、16a、16b・・画像データメモリ
17・・スプーラ
20・・時間計測手段
21・・処理時間記憶手段
【特許請求の範囲】
【請求項1】
複数の処理手段を備えたホスト機器上で印刷装置に送信するための印刷データを処理する方法であって、
前記処理手段の数に応じたスレッド数を設定し、前記印刷データをPDLコマンドに変換する変換処理、及び、変換されたPDLコマンドを順次第1、第2のコマンド記憶部に記憶させるコマンド記憶処理とを第1のスレッドで処理し、
該第1、第2のコマンド記憶部から交互に前記PDLコマンドを読み出し、画像データを生成する画像データ生成処理、及び、該画像データ生成処理によって生成された画像データが順次記憶される第1、第2の画像記憶部に記憶する画像記憶処理とを第2のスレッドで処理し、
該第1、第2の画像記憶部から画像データを順次読み出し、印刷手段に送信する送信処理を第3のスレッドで処理し、
前記複数の処理手段は、前記各スレッドの実行要求に応じて該第1乃至第3のスレッドの2以上のスレッドを並行して実行することを特徴とする印刷データ処理方法。
【請求項2】
前記スレッド数の設定は、前記ホスト機器が有するCPUの数又はコアの数によって決定することを特徴とする請求項1記載の印刷データ処理方法。
【請求項3】
前記スレッド数の設定は、前記印刷データ処理装置が処理に利用するメモリの記憶容量によって決定することを特徴とする請求項1記載の印刷データ処理方法。
【請求項4】
前記スレッド数の設定は、前記印刷手段の解像度/階調数によって決定することを特徴とする請求項1記載の印刷データ処理方法。
【請求項5】
前記スレッド数の設定は、最も短い処理時間となるスレッド数に決定することを特徴とする請求項1記載の印刷データ処理方法。
【請求項6】
複数の処理手段を備えたホスト機器上で印刷装置に送信するための印刷データを前記処理手段に処理させるプログラムであって、
前記処理手段の数に応じたスレッド数を設定させ、前記印刷データをPDLコマンドに変換する変換処理、及び、変換されたPDLコマンドを順次第1、第2のコマンド記憶部に記憶するコマンド記憶処理とを第1のスレッドで処理させ、
該第1、第2のコマンド記憶部から交互に前記PDLコマンドを読み出し、画像データを生成する画像データ生成処理、及び、該画像データ生成処理によって生成された画像データが順次記憶される第1、第2の画像記憶部に記憶する画像記憶処理とを第2のスレッドで処理させ、
該第1、第2の画像記憶部から画像データを順次読み出し、印刷手段に送信する送信処理を第3のスレッドで処理させ、
前記複数の処理手段に、前記各スレッドの実行要求に応じて第1乃至第3のスレッドの2以上のスレッドを並行して実行させることを特徴とするプログラム。
【請求項1】
複数の処理手段を備えたホスト機器上で印刷装置に送信するための印刷データを処理する方法であって、
前記処理手段の数に応じたスレッド数を設定し、前記印刷データをPDLコマンドに変換する変換処理、及び、変換されたPDLコマンドを順次第1、第2のコマンド記憶部に記憶させるコマンド記憶処理とを第1のスレッドで処理し、
該第1、第2のコマンド記憶部から交互に前記PDLコマンドを読み出し、画像データを生成する画像データ生成処理、及び、該画像データ生成処理によって生成された画像データが順次記憶される第1、第2の画像記憶部に記憶する画像記憶処理とを第2のスレッドで処理し、
該第1、第2の画像記憶部から画像データを順次読み出し、印刷手段に送信する送信処理を第3のスレッドで処理し、
前記複数の処理手段は、前記各スレッドの実行要求に応じて該第1乃至第3のスレッドの2以上のスレッドを並行して実行することを特徴とする印刷データ処理方法。
【請求項2】
前記スレッド数の設定は、前記ホスト機器が有するCPUの数又はコアの数によって決定することを特徴とする請求項1記載の印刷データ処理方法。
【請求項3】
前記スレッド数の設定は、前記印刷データ処理装置が処理に利用するメモリの記憶容量によって決定することを特徴とする請求項1記載の印刷データ処理方法。
【請求項4】
前記スレッド数の設定は、前記印刷手段の解像度/階調数によって決定することを特徴とする請求項1記載の印刷データ処理方法。
【請求項5】
前記スレッド数の設定は、最も短い処理時間となるスレッド数に決定することを特徴とする請求項1記載の印刷データ処理方法。
【請求項6】
複数の処理手段を備えたホスト機器上で印刷装置に送信するための印刷データを前記処理手段に処理させるプログラムであって、
前記処理手段の数に応じたスレッド数を設定させ、前記印刷データをPDLコマンドに変換する変換処理、及び、変換されたPDLコマンドを順次第1、第2のコマンド記憶部に記憶するコマンド記憶処理とを第1のスレッドで処理させ、
該第1、第2のコマンド記憶部から交互に前記PDLコマンドを読み出し、画像データを生成する画像データ生成処理、及び、該画像データ生成処理によって生成された画像データが順次記憶される第1、第2の画像記憶部に記憶する画像記憶処理とを第2のスレッドで処理させ、
該第1、第2の画像記憶部から画像データを順次読み出し、印刷手段に送信する送信処理を第3のスレッドで処理させ、
前記複数の処理手段に、前記各スレッドの実行要求に応じて第1乃至第3のスレッドの2以上のスレッドを並行して実行させることを特徴とするプログラム。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図22】
【図23】
【図24】
【図25】
【図26】
【図27】
【図28】
【図29】
【図30】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図22】
【図23】
【図24】
【図25】
【図26】
【図27】
【図28】
【図29】
【図30】
【公開番号】特開2013−80517(P2013−80517A)
【公開日】平成25年5月2日(2013.5.2)
【国際特許分類】
【出願番号】特願2013−791(P2013−791)
【出願日】平成25年1月8日(2013.1.8)
【分割の表示】特願2007−286171(P2007−286171)の分割
【原出願日】平成19年11月2日(2007.11.2)
【出願人】(000104124)カシオ電子工業株式会社 (601)
【出願人】(000001443)カシオ計算機株式会社 (8,748)
【公開日】平成25年5月2日(2013.5.2)
【国際特許分類】
【出願日】平成25年1月8日(2013.1.8)
【分割の表示】特願2007−286171(P2007−286171)の分割
【原出願日】平成19年11月2日(2007.11.2)
【出願人】(000104124)カシオ電子工業株式会社 (601)
【出願人】(000001443)カシオ計算機株式会社 (8,748)
[ Back to top ]