(57)【特許請求の範囲】
【請求項１】
印刷装置に送信するための印刷データを処理する少なくとも１つ以上の処理手段を備えた印刷データ処理装置であって、
前記印刷データをＰＤＬコマンドに変換し、変換された前記ＰＤＬコマンドから画像データを生成し、更に前記画像データを圧縮する画像データ生成手段と、
前記圧縮された画像データを前記印刷装置に送信する送信手段と、
前記ＰＤＬコマンドを記憶するコマンド記憶手段と、
前記画像データを記憶する画像データ記憶手段と、
前記画像データ生成手段を実現する画像データ生成スレッドを少なくとも１つ以上起動させるシステム制御手段と、
前記画像データ生成スレッドの各々の１頁当りの処理時間を計測する計測手段と、
前記処理時間を元に算出される平均処理時間を前記画像データ生成スレッドの数ごとに記録する記憶手段と、
を含み、
前記システム制御手段は、前記画像データ生成スレッドの数を、前記平均処理時間が最も短くなる数に決定することを特徴とする印刷データ処理装置。
【請求項２】
印刷装置に送信するための印刷データを処理する少なくとも１つ以上の処理手段を備えた印刷データ処理装置であって、
前記印刷データをＰＤＬコマンドに変換し、変換された前記ＰＤＬコマンドから画像データを生成し、更に前記画像データを圧縮する画像データ生成手段と、
前記圧縮された画像データを前記印刷装置に送信する手段と、
前記ＰＤＬコマンドを記憶するコマンド記憶手段と、
前記画像データを記憶する画像データ記憶手段と、
前記画像データ生成手段を実現する画像データ生成スレッドを少なくとも１つ以上起動させるシステム制御手段と、
前記画像データ生成スレッドの各々の１頁当りの処理時間を計測する計測手段と、
前記処理時間を元に算出される平均処理時間を用紙サイズごとかつ前記画像データ生成スレッドの数ごとに記録する記憶手段と、
を含み、
前記システム制御手段は、前記画像データ生成スレッドの数を、前記平均処理時間が最も短くなる数に決定することを特徴とする印刷データ処理装置。
【請求項３】
請求項１または２に記載の印刷データ処理装置において、
前記画像データ生成手段は、
前記印刷データを前記ＰＤＬコマンドに変換する第１の画像データ生成手段と、
前記ＰＤＬコマンドから前記画像データを生成する第２の画像データ生成手段と、
前記画像データを圧縮し前記送信手段に出力する第３の画像データ生成手段と、
を含み、
前記画像データ生成スレッドは、２つ起動する場合には、
前記第１の画像データ生成手段を実現する第１の画像データ生成スレッドと、
前記第２の画像データ生成手段と前記第３の画像データ生成手段とを実現する第２の画像データ生成スレッドと、
を含み、
また、 前記画像データ生成スレッドは、３つ起動する場合には、
前記第１の画像データ生成手段を実現する第１の画像データ生成スレッドと、
前記第２の画像データ生成手段を実現する第２の画像データ生成スレッドと、
前記第３の画像データ生成手段を実現する第３の画像データ生成スレッドと、
を含み、
前記第１乃至第２、または、前記第１乃至第３の画像データ生成スレッドは、それぞれ互いに並列に動作可能な異なるスレッドであることを特徴とする印刷データ処理装置。
【請求項４】
請求項３に記載の印刷データ処理装置において、
前記コマンド記憶手段は、
第１のコマンド記憶手段と、
第２のコマンド記憶手段と、を含み、
前記画像データ生成スレッドが複数起動する場合には、
前記第１の画像データ生成スレッドが前記ＰＤＬコマンドを前記第１のコマンド記憶手段へ出力する期間、前記第２の画像データ生成スレッドは前記ＰＤＬコマンドを前記第２のコマンド記憶手段から取得し、
前記第１の画像データ生成スレッドが前記ＰＤＬコマンドを前記第２のコマンド記憶手段へ出力する期間、前記第２の画像データ生成スレッドは前記ＰＤＬコマンドを前記第１のコマンド記憶手段から取得することを特徴とする印刷データ処理装置。
【請求項５】
請求項４に記載の印刷データ処理装置において、
前記画像データ生成スレッドが複数起動する場合には、
前記第１の画像データ生成スレッドは、前記第２の画像データ生成スレッドへ処理を要求するごとに、前記第１のコマンド記憶手段と前記第２のコマンド記憶手段を交互に切り替えて利用することを特徴とする印刷データ処理装置。
【請求項６】
請求項３乃至５に記載の印刷データ処理装置において、
前記画像データ記憶手段は、
第１の画像データ記憶手段と、
第２の画像データ記憶手段と、を含み、
前記画像データ生成スレッドが３つ起動する場合には、
前記第２の画像データ生成スレッドが前記画像データを前記第１の画像データ記憶手段へ出力する期間、前記第３の画像データ生成スレッドは前記画像データを前記第２の画像データ記憶手段から取得し、
前記第２の画像データ生成スレッドが前記画像データを前記第２の画像データ記憶手段へ出力する期間、前記第３の画像データ生成スレッドは前記画像データを前記第１の画像データ記憶手段から取得することを特徴とする印刷データ処理装置。
【請求項７】
請求項６に記載の印刷データ処理装置において、
前記画像データ生成スレッドが３つ起動する場合には、
前記第２の画像データ生成スレッドは、前記第３の画像データ生成スレッドへ処理を要求するごとに、前記第１の画像データ記憶手段と前記第２の画像データ記憶手段を交互に切り替えて利用することを特徴とする印刷データ処理装置。
【請求項８】
請求項１乃至請求項７のいずれか１つに記載の印刷データ処理装置において、
前記画像データ生成スレッドの数は、前記ホスト機器が有する処理手段の数に応じて決定することを特徴とする印刷データ処理装置。
【請求項９】
請求項１乃至請求項７のいずれか１つに記載の印刷データ処理装置において、
前記画像データ生成スレッドの数は、前記印刷データ処理装置が処理に利用するメモリの記憶容量に応じて決定することを特徴とする印刷データ処理装置。
【請求項１０】
請求項１乃至請求項７のいずれか１つに記載の印刷データ処理装置において、
前記画像データ生成スレッドの数は、前記画像データの解像度及び階調数に応じて決定することを特徴とする印刷データ処理装置。
【請求項１１】
少なくとも１つ以上のコアを有する処理手段を備えたホスト機器上で印刷装置に送信するための印刷データを処理する方法であって、
前記印刷データをＰＤＬコマンドに変換し、変換された前記ＰＤＬコマンドから画像データを生成し、更に前記画像データを圧縮し、
前記圧縮された画像データを前記印刷装置に送信し、
前記ＰＤＬコマンドを記憶し、
前記画像データを記憶し、
前記画像データ生成処理を実現する画像データ生成スレッドを少なくとも１つ以上起動させ、
前記画像データ生成スレッドの各々の１頁当りの処理時間を計測し、
前記処理時間を元に算出される平均処理時間を前記画像データ生成スレッドの数ごとに記録し、
前記画像データ生成スレッドの数を、前記平均処理時間が最も短くなる数に決定することを特徴とする印刷データ処理方法。
【請求項１２】
少なくとも１つ以上のコアを有する処理手段を備えたホスト機器上で印刷装置に送信するための印刷データを処理する方法であって、
前記印刷データをＰＤＬコマンドに変換し、変換された前記ＰＤＬコマンドから画像データを生成し、更に前記画像データを圧縮し、
前記圧縮された画像データを前記印刷装置に送信し、
前記ＰＤＬコマンドを記憶し、
前記画像データを記憶し、
前記画像データ生成処理を実現する画像データ生成スレッドを少なくとも１つ以上起動させ、
前記画像データ生成スレッドの各々の１頁当りの処理時間を計測し、
前記処理時間を元に算出される平均処理時間を用紙サイズごとかつ前記画像データ生成スレッドの数ごとに記録し、
前記画像データ生成スレッドの数を、前記平均処理時間が最も短くなる数に決定することを特徴とする印刷データ処理方法。
【請求項１３】
少なくとも１つ以上のコアを有する処理手段を備えたホスト機器上で印刷装置に送信するための印刷データを前記処理手段に処理させるプログラムであって、
前記処理手段に、
前記印刷データをＰＤＬコマンドに変換させ、変換された前記ＰＤＬコマンドから画像データを生成させ、更に前記画像データを圧縮させ、
前記圧縮された画像データを前記印刷装置に送信させ、
前記ＰＤＬコマンドを記憶させ、
前記画像データを記憶させ、
前記画像データ生成処理を実現する画像データ生成スレッドを少なくとも１つ以上起動させ、
前記画像データ生成スレッドの各々の１頁当りの処理時間を計測させ、
前記処理時間を元に算出される平均処理時間を前記画像データ生成スレッドの数ごとに記録させ、
前記画像データ生成スレッドの数を、前記平均処理時間が最も短くなる数に決定させることを特徴とするプログラム。
【請求項１４】
少なくとも１つ以上のコアを有する処理手段を備えたホスト機器上で印刷装置に送信するための印刷データを前記処理手段に処理させるプログラムであって、
前記処理手段に、
前記印刷データをＰＤＬコマンドに変換させ、変換された前記ＰＤＬコマンドから画像データを生成させ、更に前記画像データを圧縮させ、
前記圧縮された画像データを前記印刷装置に送信させ、
前記ＰＤＬコマンドを記憶させ、
前記画像データを記憶させ、
前記画像データ生成処理を実現する画像データ生成スレッドを少なくとも１つ以上起動させ、
前記画像データ生成スレッドの各々の１頁当りの処理時間を計測させ、
前記処理時間を元に算出される平均処理時間を用紙サイズごとかつ前記画像データ生成スレッドの数ごとに記録させ、
前記画像データ生成スレッドの数を、前記平均処理時間が最も短くなる数に決定させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はプリンタ装置等の印刷装置に接続されたホスト機器において、印刷装置に送信する印刷データの処理を行う印刷データ処理方法に関する。
【背景技術】
【０００２】
今日、プリンタ装置等の印刷装置はＬＡＮ（local area network）等のネットワークに接続されたホスト機器から印刷データの供給を受け、又はピアツーピア（peer to peer）のネットワーク環境で接続されたホスト機器から印刷データの供給を受け、印刷処理を行っている。この場合、ホスト機器である、例えばパーソナルコンピュータ（ＰＣ）にはプリンタドライバが搭載され、印刷データを印刷装置に対応する中間コマンドに変換し、印刷装置に送信している。
【０００３】
図３０は、パーソナルコンピュータ（ＰＣ）に搭載されたプリンタドライバを中心とした印刷システムの構成図である。プリンタドライバ３０はＰＤＬ変換部３１、画像データ形成部３２、画像データ圧縮部３３、スプール出力部３４、ＰＤＬバッファ３５、画像データメモリ３６で構成されている。ワープロソフトや表計算ソフト等のアプリケーションプログラム（ＡＰＬ）によって作成された文書ファイルは、ＰＤＬ変換部３１に供給され、ＰＤＬ変換部３１によってＰＤＬコマンドに変換され、ＰＤＬバッファ３５に格納される。このＰＤＬコマンドは、例えば線や円の作成、文字の作成等を指示するコマンドであり、印刷装置に対応したコマンドである。
【０００４】
画像データ形成部３２は、ＰＤＬバッファ３５に格納されたＰＤＬコマンドを読み出し、例えばビットマップ形式の画像データに変換して、画像データメモリ３６に記憶する。このようにして、画像データメモリ３６に記憶された画像データは、画像データ圧縮部３３において圧縮処理が施され、スプール出力部３４からスプーラ３８に出力され、スプーラ３８からプリンタ装置（印刷装置）４０に出力される。
【０００５】
一方、複数のプロッセッサを使用し、ページ単位に印刷データを処理する印刷制御方法として、特許文献１が提案されている。この発明は、複数頁にわたる印刷コマンドをバッファに格納し、複数のプロッセッサにより上記バッファから印刷コマンドを読み出し、頁毎にプロッセッサにより描画処理を行う印刷制御方法である。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開平０５−２０１０７７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
上記特許文献１の発明は複数のプロセッサを使用するが、基本的には線や円を作成し、文字の生成等を行なうＰＤＬデータを１頁分受け取りＰＤＬデータを解析しながら一時蓄積する（空描画）。１頁分のＰＤＬデータが揃ってから画像形成タスクを生成しプロセッサを割り当て、一時蓄積したＰＤＬデータを再度解析・実行して画像形成を行なう（実描画）。それと並行して次の頁のＰＤＬデータを受け取り解析しながら一時蓄積し、次の頁のＰＤＬデータが揃うとまた新たに画像形成タスクを生成し同じように画像形成していく。印刷データを頁単位にプロセッサを割り当て、並列処理を行う制御方法である。したがって、プリンタエンジンが高速になればなるほど、多くのプロセッサを必要とし、非常に高価なものになってしまう。また、空描画の為に受け取ったＰＤＬデータを一度解析する必要があり、効率も良くない。更にこの空描画の為に１つのタスクが必要でありプロセッサも１つ必要である。プロセッサが少ない場合、同時並行して画像形成できる頁数は非常に少ないものとなり、印刷処理の高速化には限界がある。
【０００８】
そこで、本発明はできるかぎり少ない複数のＣＰＵ、又は１つのＣＰＵの中に複数のコアを有するマルチコア(multiple core)ＣＰＵを使用し、頁単位ではなく、ストリーム型の印刷データ（ＰＤＬデータ）をシーケンシャル処理のまま、画像形成処理のマルチスレッド方式による並列処理を行い、印刷データを高速に処理する印刷データ処理方法を提供するものである。
【課題を解決するための手段】
【０００９】
上記課題は第１の発明によれば、印刷装置に送信するための印刷データを処理する少なくとも１つ以上の処理手段を備えた印刷データ処理装置であって、
前記印刷データをＰＤＬコマンドに変換し、変換された前記ＰＤＬコマンドから画像データを生成し、更に前記画像データを圧縮する画像データ生成手段と、
前記圧縮された画像データを前記印刷装置に送信する送信手段と、
前記ＰＤＬコマンドを記憶するコマンド記憶手段と、
前記画像データを記憶する画像データ記憶手段と、
前記画像データ生成手段を実現する画像データ生成スレッドを少なくとも１つ以上起動させるシステム制御手段と、
前記画像データ生成スレッドの各々の１頁当りの処理時間を計測する計測手段と、
前記処理時間を元に算出される平均処理時間を前記画像データ生成スレッドの数ごとに記録する記憶手段と、
を含み、
前記システム制御手段は、前記画像データ生成スレッドの数を、前記平均処理時間が最も短くなる数に決定することを特徴とする印刷データ処理装置を提供することによって達成できる。
上記課題は第２の発明によれば、印刷装置に送信するための印刷データを処理する少なくとも１つ以上の処理手段を備えた印刷データ処理装置であって、
前記印刷データをＰＤＬコマンドに変換し、変換された前記ＰＤＬコマンドから画像データを生成し、更に前記画像データを圧縮する画像データ生成手段と、
前記圧縮された画像データを前記印刷装置に送信する手段と、
前記ＰＤＬコマンドを記憶するコマンド記憶手段と、
前記画像データを記憶する画像データ記憶手段と、
前記画像データ生成手段を実現する画像データ生成スレッドを少なくとも１つ以上起動させるシステム制御手段と、
前記画像データ生成スレッドの各々の１頁当りの処理時間を計測する計測手段と、
前記処理時間を元に算出される平均処理時間を用紙サイズごとかつ前記画像データ生成スレッドの数ごとに記録する記憶手段と、
を含み、
前記システム制御手段は、前記画像データ生成スレッドの数を、前記平均処理時間が最も短くなる数に決定することを特徴とする印刷データ処理装置を提供することによって達成できる。
好ましくは、請求項１または２に記載の印刷データ処理装置において、前記画像データ生成手段は、前記印刷データを前記ＰＤＬコマンドに変換する第１の画像データ生成手段と、前記ＰＤＬコマンドから前記画像データを生成する第２の画像データ生成手段と、前記画像データを圧縮し前記送信手段に出力する第３の画像データ生成手段と、を含み、前記画像データ生成スレッドは、２つ起動する場合には、前記第１の画像データ生成手段を実現する第１の画像データ生成スレッドと、前記第２の画像データ生成手段と前記第３の画像データ生成手段とを実現する第２の画像データ生成スレッドと、を含み、また、前記画像データ生成スレッドは、３つ起動する場合には、前記第１の画像データ生成手段を実現する第１の画像データ生成スレッドと、前記第２の画像データ生成手段を実現する第２の画像データ生成スレッドと、前記第３の画像データ生成手段を実現する第３の画像データ生成スレッドと、を含み、前記第１乃至第２、または、前記第１乃至第３の画像データ生成スレッドは、それぞれ互いに並列に動作可能な異なるスレッドである。
好ましくは、請求項３に記載の印刷データ処理装置において、前記コマンド記憶手段は、第１のコマンド記憶手段と、第２のコマンド記憶手段と、を含み、前記画像データ生成スレッドが複数起動する場合には、前記第１の画像データ生成スレッドが前記ＰＤＬコマンドを前記第１のコマンド記憶手段へ出力する期間、前記第２の画像データ生成スレッドは前記ＰＤＬコマンドを前記第２のコマンド記憶手段から取得し、前記第１の画像データ生成スレッドが前記ＰＤＬコマンドを前記第２のコマンド記憶手段へ出力する期間、前記第２の画像データ生成スレッドは前記ＰＤＬコマンドを前記第１のコマンド記憶手段から取得する。
好ましくは、請求項４に記載の印刷データ処理装置において、前記画像データ生成スレッドが複数起動する場合には、前記第１の画像データ生成スレッドは、前記第２の画像データ生成スレッドへ処理を要求するごとに、前記第１のコマンド記憶手段と前記第２のコマンド記憶手段を交互に切り替えて利用する。
好ましくは、請求項３乃至５に記載の印刷データ処理装置において、前記画像データ記憶手段は、第１の画像データ記憶手段と、第２の画像データ記憶手段と、を含み、前記画像データ生成スレッドが３つ起動する場合には、前記第２の画像データ生成スレッドが前記画像データを前記第１の画像データ記憶手段へ出力する期間、前記第３の画像データ生成スレッドは前記画像データを前記第２の画像データ記憶手段から取得し、前記第２の画像データ生成スレッドが前記画像データを前記第２の画像データ記憶手段へ出力する期間、前記第３の画像データ生成スレッドは前記画像データを前記第１の画像データ記憶手段から取得する。
好ましくは、請求項６に記載の印刷データ処理装置において、前記画像データ生成スレッドが３つ起動する場合には、前記第２の画像データ生成スレッドは、前記第３の画像データ生成スレッドへ処理を要求するごとに、前記第１の画像データ記憶手段と前記第２の画像データ記憶手段を交互に切り替えて利用する。
好ましくは、請求項１乃至請求項７のいずれか１つに記載の印刷データ処理装置において、前記画像データ生成スレッドの数は、前記ホスト機器が有する処理手段の数に応じて決定する。
好ましくは、請求項１乃至請求項７のいずれか１つに記載の印刷データ処理装置において、前記画像データ生成スレッドの数は、前記印刷データ処理装置が処理に利用するメモリの記憶容量に応じて決定する。
好ましくは、請求項１乃至請求項７のいずれか１つに記載の印刷データ処理装置において、前記画像データ生成スレッドの数は、前記画像データの解像度及び階調数に応じて決定する。
【００１０】
上記課題は第３の発明によれば、少なくとも１つ以上のコアを有する処理手段を備えたホスト機器上で印刷装置に送信するための印刷データを処理する方法であって、
前記印刷データをＰＤＬコマンドに変換し、変換された前記ＰＤＬコマンドから画像データを生成し、更に前記画像データを圧縮し、
前記圧縮された画像データを前記印刷装置に送信し、
前記ＰＤＬコマンドを記憶し、
前記画像データを記憶し、
前記画像データ生成処理を実現する画像データ生成スレッドを少なくとも１つ以上起動させ、
前記画像データ生成スレッドの各々の１頁当りの処理時間を計測し、
前記処理時間を元に算出される平均処理時間を前記画像データ生成スレッドの数ごとに記録し、
前記画像データ生成スレッドの数を、前記平均処理時間が最も短くなる数に決定することを特徴とする印刷データ処理方法を提供することによって達成できる。
上記課題は第４の発明によれば、少なくとも１つ以上のコアを有する処理手段を備えたホスト機器上で印刷装置に送信するための印刷データを処理する方法であって、
前記印刷データをＰＤＬコマンドに変換し、変換された前記ＰＤＬコマンドから画像データを生成し、更に前記画像データを圧縮し、
前記圧縮された画像データを前記印刷装置に送信し、
前記ＰＤＬコマンドを記憶し、
前記画像データを記憶し、
前記画像データ生成処理を実現する画像データ生成スレッドを少なくとも１つ以上起動させ、
前記画像データ生成スレッドの各々の１頁当りの処理時間を計測し、
前記処理時間を元に算出される平均処理時間を用紙サイズごとかつ前記画像データ生成スレッドの数ごとに記録し、
前記画像データ生成スレッドの数を、前記平均処理時間が最も短くなる数に決定することを特徴とする印刷データ処理方法を提供することによって達成できる。
【００１１】
上記課題は第５の発明によれば、少なくとも１つ以上のコアを有する処理手段を備えたホスト機器上で印刷装置に送信するための印刷データを前記処理手段に処理させるプログラムであって、
前記処理手段に、
前記印刷データをＰＤＬコマンドに変換させ、変換された前記ＰＤＬコマンドから画像データを生成させ、更に前記画像データを圧縮させ、
前記圧縮された画像データを前記印刷装置に送信させ、
前記ＰＤＬコマンドを記憶させ、
前記画像データを記憶させ、
前記画像データ生成処理を実現する画像データ生成スレッドを少なくとも１つ以上起動させ、
前記画像データ生成スレッドの各々の１頁当りの処理時間を計測させ、
前記処理時間を元に算出される平均処理時間を前記画像データ生成スレッドの数ごとに記録させ、
前記画像データ生成スレッドの数を、前記平均処理時間が最も短くなる数に決定させることを特徴とするプログラムを提供することによって達成できる。
上記課題は第６の発明によれば、少なくとも１つ以上のコアを有する処理手段を備えたホスト機器上で印刷装置に送信するための印刷データを前記処理手段に処理させるプログラムであって、
前記処理手段に、
前記印刷データをＰＤＬコマンドに変換させ、変換された前記ＰＤＬコマンドから画像データを生成させ、更に前記画像データを圧縮させ、
前記圧縮された画像データを前記印刷装置に送信させ、
前記ＰＤＬコマンドを記憶させ、
前記画像データを記憶させ、
前記画像データ生成処理を実現する画像データ生成スレッドを少なくとも１つ以上起動させ、
前記画像データ生成スレッドの各々の１頁当りの処理時間を計測させ、
前記処理時間を元に算出される平均処理時間を用紙サイズごとかつ前記画像データ生成スレッドの数ごとに記録させ、
前記画像データ生成スレッドの数を、前記平均処理時間が最も短くなる数に決定させることを特徴とするプログラムを提供することによって達成できる。
【発明の効果】
【００１４】
本発明によれば、複数のＣＰＵ又はＣＰＵコアを使用し、かつ複数のＰＤＬバッファ、及び画像データメモリを使用して印刷データの処理をマルチスレッド方式によって実行するので、印刷データの処理を高速に行うことができ、かつ、少ないＣＰＵの数またはＣＰＵコア数で実現できる。また、使用するスレッドの数をＣＰＵ又はコアの数、又はメモリ容量、又は解像度/階調数、又は実際のスレッド数に対応する処理時間を計測して設定することによって、自動的に各条件に対応した最適、かつ高速な印刷データの処理を行うことができる。
【図面の簡単な説明】
【００１５】
【図１】プリンタドライバの構成を具体的に説明する図である。
【図２】本実施形態に使用する印刷データ処理装置（プリンタドライバ）を有するクライアントＰＣの構成を示す図である。
【図３】プリンタドライバ内をコアに代えて、ＣＰＵで構成した構成例を説明する図である。
【図４】プリンタドライバの初期設定処理を説明するフローチャートである。
【図５】プリンタドライバの初期設定処理を説明するフローチャートである。
【図６】プリンタドライバの初期設定処理を説明するフローチャートである。
【図７】ＰＤＬ変換部（スレッド１）の処理を説明するフローチャートである。
【図８】画像データ形成部（スレッド２）の処理を説明するフローチャートである。
【図９】画像データ圧縮部及びスプール出力部（スレッド３）の処理を説明するフローチャートである。
【図１０】（ａ）は、本実施形態の印刷データ処理を説明する模式図である。（ｂ）は、従来の印刷データ処理を説明する模式図である。
【図１１】４個使用のコアに代えて、２個使用のコアを使用した場合のシステム構成例を示す図である。
【図１２】実施形態２の処理を説明するフローチャートである。
【図１３】実施形態３の処理を説明するフローチャートである。
【図１４】実施形態４の処理を説明するフローチャートである。
【図１５】実施形態４の処理を説明するフローチャートである。
【図１６】実施形態５で使用するクライアントＰＣのシステム構成図である。
【図１７】処理時間記憶手段の構成を示す図である。
【図１８】実施形態５のスレッド１の処理を説明するフローチャートである。
【図１９】計測開始処理を説明するフローチャートである。
【図２０】計測終了処理を説明するフローチャートである。
【図２１】実施形態５のスレッド２の処理を説明するフローチャートである。
【図２２】計測開始処理を説明するフローチャートである。
【図２３】計測終了処理を説明するフローチャートである。
【図２４】実施形態５のスレッド３の処理を説明するフローチャートである。
【図２５】計測開始処理を説明するフローチャートである。
【図２６】計測終了処理を説明するフローチャートである。
【図２７】処理時間の更新処理を説明するフローチャートである。
【図２８】スレッド２構成の処理時間の更新処理を説明するフローチャートである。
【図２９】実施形態５の変形例を説明する図である。
【図３０】従来の印刷処理を説明するフローチャートである。
【発明を実施するための形態】
【００１６】
以下、本発明の実施の形態を図面を参照しながら説明する。
（実施形態１）
【００１７】
図２は、本実施形態に使用する印刷データ処理装置（プリンタドライバ）を有するホスト機器としてのクライアントＰＣの構成を示す図である。印刷データ処理装置としてのプリンタドライバは、クライアントＰＣにＬＡＮなどを介して接続される印刷装置に、クライアントＰＣが印刷処理動作を行わせるためのプログラムで、通常、利用される印刷装置に対応して、その印刷装置のメーカが予め用意するものである。
クライアントＰＣにより利用する印刷装置が選択された後、その印刷装置に対応するプリンタドライバが、記憶媒体やＷｅｂ回線などを利用して、クライアントＰＣにインストールされた後、クライアントＰＣ内のＣＰＵにより処理が実行され印刷データ処理装置としての機能を発揮する。
図２において、クライアントＰＣはクワッドコアＣＰＵ７（以下、単にＣＰＵ７で示す）、ＲＡＭ８、ＲＯＭ２、ディスク装置３、ＬＡＮ回路４、ＬＣＤ（液晶ディスプレイ）５、及びキーボード（ＫＢ）６等で構成されている。また、印刷データ処理装置であるプリンタドライバ１は、クワッドコアＣＰＵ７上で動作し、ＣＰＵ７は内部に４個のコア７ａ〜７ｄを有する。コア７ａ〜７ｄは、それぞれ独自にＰＤＬコマンドの生成や、描画データの生成処理を行うことができ、後述するスレッドを実行する処理手段である。尚、ＲＡＭ８は上記コア７ａ〜７ｄによる印刷データ処理の際、ワークエリアとしても使用される。
【００１８】
ＲＯＭ２はクライアントＰＣのシステム制御プログラムや、後述する印刷データの処理プログラムを記憶する。尚、ディスク装置３に上記プログラムや必要なデータを記憶する構成としてもよい。また、ＬＣＤ（液晶ディスプレイ）５には、ＣＰＵ７（コア７ａ〜７ｄ）の制御に従って必要な画面が表示され、キーボード（ＫＢ）６からユーザ操作に基づくキーボード操作信号が入力する。また、ＬＡＮ回路４はクライアントＰＣによって作成された画像データをプリンタ装置１０に出力する。
【００１９】
尚、図３は印刷データ処理装置を含むクライアントＰＣ内を、コア７ａ〜７ｄに代えて、複数のＣＰＵ（処理手段）で構成した例であり、他の回路構成は前述の図２と同様である。
図１は、本例のプリンタドライバ（印刷データ処理装置）の機能的構成を具体的に説明する図である。プリンタドライバ１はＰＤＬ変換部１１（スレッド１）、画像データ生成部（レンダリング部、スレッド２）１２、画像データ圧縮部１３及びスプール出力部１４（スレッド３）、ＰＤＬバッファ１５、画像データメモリ１６で構成されている。
【００２０】
ＰＤＬ変換部１１は印刷データに含まれる線や円の作成、文字の作成等を指示するコマンドを本例で使用するプリンタ装置１０に対応するコマンドに変換する機能を有し、アプリケーション（ＡＰＬ）によって作成された文書ファイルをＰＤＬコマンドに変換する。
また、ＰＤＬバッファ１５は、ＰＤＬ変換部１１によって変換されたＰＤＬコマンドを格納するダブルバッファであり、ＰＤＬバッファ１５ａ、１５ｂで構成される。
【００２１】
画像データ生成部（レンダリング部）１２は、ＰＤＬバッファ１５ａ、１５ｂに格納されたコマンドを交互に読み出し、画像データを生成し、当該画像データを画像データメモリ１６に記憶する。画像データメモリ１６もダブルバッファ方式の２つの画像データメモリ１６ａ、１６ｂで構成され、それぞれ１頁分の画像データの記憶が可能である。
【００２２】
画像データ圧縮部１３は上記画像データメモリ１６ａ、１６ｂに記憶された画像データを交互に読み出し、公知の圧縮技術を使用してスプール出力部１４に出力する。スプール出力部１４は圧縮された画像データをスプーラ１７に出力し、スプーラ１７から圧縮された画像データをプリンタ装置１０に供給する。プリンタ装置１０では、画像データに伸張処理を施し、記録媒体に対して印刷処理を行う。
【００２３】
ここで、図１に示すスレッド１〜３は、前述の図２に示すコア７ａ〜７ｄの何れかが担当する処理を示すものであり、例えばコア７ａがアプリケーションプログラムによる文書ファイルの作成を行い、コア７ｂがスレッド１の処理を担当し、コア７ｃがスレッド２の処理を担当し、コア７ｄが画像データ圧縮部１３による画像データの圧縮処理、及びスプール出力部１４による画像データの出力処理を担当する。但し、アプリケーション処理、及び上記スレッド１〜３の処理を実行するコアは上記コアに限定されるのではなく、各処理が必要な際、空いているコア７ａ〜７ｄが使用される。
【００２４】
以上の構成において、以下に本例の処理動作を説明する。
【００２５】
図４〜図６はプリンタドライバ（印刷データ処理装置）１の初期設定処理を説明するフローチャートである。先ず、図４に示すフローチャートに従って、本例のマルチスレッドの初期化処理を行い（ステップ（以下、Ｓで示す）１）、更にマルチスレッド以外のプリンタドライバ１内の初期化処理を行う（Ｓ２）。
【００２６】
図５に示すフローチャートは上記マルチスレッドの初期化処理を具体的に説明するフローチャートである。先ず、スレッド数を決定する（Ｓ３）。このスレッド数の決定は、例えば図６のフローチャートに示すように、スレッド数“３”に設定する（Ｓ４）。
次に、ＰＤＬバッファ１５の領域、及び画像データメモリ１６の領域を確保する（Ｓ５）。具体的には前述の図２に示すＲＡＭ８に、ＰＤＬバッファ１５ａの記憶領域を確保し、更に画像データメモリ１６ａの記憶領域を確保する。
【００２７】
次に、ＰＤＬ変換部１１によりＰＤＬコマンド生成中において選択するバッファをＰＤＬバッファ１５ａとし、画像データ形成部（レンダリング部）１２により描画データ生成中において選択するバッファも同じＰＤＬバッファ１５ａに初期設定する（Ｓ６）。さらに、画像データ形成部（レンダリング部）１２が描画データ生成中において選択する画像データメモリを画像データメモリ１６ａとし、画像データ圧縮部１３が描画データの圧縮中において選択する画像データメモリも同じ画像データメモリ１６ａに初期設定する（Ｓ６）。
【００２８】
次に、画像形成要求中フラグをオフに設定し、圧縮・スプール出力要求中フラグもオフに設定する（Ｓ７）。すなわち、画像データ形成部（レンダリング部）１２、及び画像データ圧縮部１３、スプール出力部１４が動作を行っていない状態を示すフラグをオフ状態に設定する。
【００２９】
次に、設定されたスレッド数が“１”を越えているか判断する（Ｓ８）。この場合、前述のように、スレッド数が“３”に設定されており、判断（Ｓ８）はＹＥＳ（イエス）であり、更にＰＤＬバッファ１５の記憶領域としてＰＤＬバッファ１５ｂを確保し（Ｓ９）、スレッド２を生成し、起動する（Ｓ１０）。尚、前述の処理（Ｓ４）において、スレッド数を“１”に設定していれば（Ｓ８がＮＯ（ノー））、直ちに次の判断に移行する。
【００３０】
次に、判断（Ｓ１１）は、スレッド数が“２”を越えているか判断する。この判断も、前述のように本例において、スレッド数“３”が設定されており、判断（Ｓ１１）はＹＥＳ（イエス）であり、更に画像データメモリ１６の領域として画像データメモリ１６ｂを確保し（Ｓ１２）、スレッド３を生成し、起動する（Ｓ１３）。尚、スレッド数が“２”の場合には、上記画像データメモリ１６ｂのエリアは確保されず（Ｓ１１がＮＯ）、スレッド数が“１”の場合には、上記ＰＤＬバッファ１５ｂ及び画像データメモリ１６ｂのエリアは確保されない（Ｓ８がＮＯ、Ｓ１１もＮＯ）。
【００３１】
以上のようにして初期設定処理が完了した後、アプリケーションプログラムによって作成された印刷データがプリンタドライバ１に供給される。図７〜図９は以後の処理を説明するフローチャートであり、スレッド１、２、及び３が行う処理を説明するものである。
【００３２】
尚、図１０（ａ）は本例の処理を模式的に示す図である。
【００３３】
先ず、図７に示すフローチャートはＰＤＬ変換部１１によるスレッド１の処理を説明するものであり、供給される文書ファイルに従ってアプリケーションプログラムより依頼された要求を取り出す。例えば、線や円の生成や文字の作成要求に従って、対応するＰＤＬコマンドを生成する（ステップ（以下、ＳＴで示す）１、２）。
【００３４】
次に、生成したＰＤＬコマンドを前述のＰＤＬバッファ１５ａにバッファリングする（ＳＴ３）。図１０（ａ）に示すａはこの処理を示し、文書ファイルの１頁目の最初の印刷データのＰＤＬコマンドがＰＤＬバッファ１５ａに格納される。また、上記処理は、例えばコア７ａによって実行される。
【００３５】
次に、ＰＤＬ変換部１１は生成したＰＤＬコマンドが改頁コマンドであるか判断する（ＳＴ４）。通常、最初のこの処理はＮＯ（ノー）であり、ＰＤＬバッファ１５ａの容量一杯までＰＤＬコマンドがバッファリングされたか判断する（ＳＴ５）。ここで、ＰＤＬバッファ１５ａに余裕があれば、上記処理（ＳＴ１）に戻ってアプリケーションプログラムより依頼された要求に従ったＰＤＬコマンドの生成、及びＰＤＬバッファ１５ａへの格納処理を繰り返す（ＳＴ１〜ＳＴ５）。
【００３６】
その後、ＰＤＬバッファ１５ａの容量一杯までＰＤＬコマンドがバッファリングされた場合（ＳＴ５がＹＥＳ）、又は改頁コマンドが検出されると（ＳＴ４がＹＥＳ）、スレッド数の設定が“１”を越えているか判断する（ＳＴ６）。ここで、本例では前述のように、スレッド数が“３”に設定されており（ＳＴ６がＹＥＳ）、更に画像形成要求中フラグがオンであるか判断する（ＳＴ７）。この画像形成要求中フラグは、前述の初期設定処理（Ｓ７）によってオフに設定されており（ＳＴ７がＮＯ）、上記ＰＤＬコマンドを格納したＰＤＬバッファ１５ａを、以後画像データ形成部（レンダリング部）１２が読み出しを行うＰＤＬバッファに設定する（ＳＴ８）。
【００３７】
次に、画像形成要求中フラグをオンにセットし（ＳＴ９）、スレッド２に対して画像形成要求を出す（ＳＴ１０）。すなわち、ＰＤＬ変換部１１から画像データ形成部（レンダリング部）１２に対して画像形成要求を出力する。
【００３８】
その後、ＰＤＬ変換部１１は次に文書ファイルから生成するＰＤＬコマンドを格納するＰＤＬバッファ１５ａ又は１５ｂを設定する。この場合、現在選択されているＰＤＬバッファが１５ａであれば（ＳＴ１１がＹＥＳ）、ＰＤＬバッファ１５ｂに変更し（ＳＴ１２）、現在選択されているＰＤＬバッファが１５ｂであれば（ＳＴ１１がＮＯ）、ＰＤＬバッファ１５ａに変更する（ＳＴ１３）。
【００３９】
尚、前述の判断（ＳＴ７）において、画像形成要求中フラグがオンの場合には、画像データ形成部（レンダリング部）１２による画像形成処理の終了を待ち、画像形成要求中フラグをオフする（ＳＴ７がＹＥＳ、ＳＴ１４、ＳＴ１５）。この処理は、後に画像データ形成部（レンダリング部）１２が処理を終了した際行う処理であり、後述する。
【００４０】
また、前述の改頁コマンドが供給される前に、多くの場合ＰＤＬバッファ１５ａがＰＤＬコマンドで満杯になり、次に選択されたＰＤＬバッファ１５ｂに以後の文書ファイルのＰＤＬコマンドがバッファリングされる（例えば、図１０（ａ）のｅ1〜ｅｎの処理）。
【００４１】
次に、スレッド２の処理、即ち画像データ形成部（レンダリング部）１２の処理は、図８に示すフローチャートに従って実行され、先ずＰＤＬ変換部１１からの画像形成要求の発生を待つ（ＳＴ１６）。そして、画像データ形成部（レンダリング部）１２に画像形成要求が入力すると、ＰＤＬバッファ１５ａに格納されたＰＤＬコマンドを順次取り出し、取り出したＰＤＬコマンドが改頁コマンドであるか判断する（ＳＴ１７、ＳＴ１８）。
【００４２】
通常、最初のこの処理はノーであり、ＰＤＬバッファ１５ａから取り出したＰＤＬコマンドの解析を行い、そのＰＤＬコマンドに対応した画像形成処理を行ない、描画データとして画像データメモリ１６ａに展開する（ＳＴ１９）。尚、この処理は図１０（ａ）に示すｂである。
【００４３】
次に、ＰＤＬバッファ１５ａに格納されたＰＤＬコマンドが全て処理されたか判断し（ＳＴ２０）、ＰＤＬバッファ１５ａ内に格納されたＰＤＬコマンドが全て処理されるまで、画像データ形成部（レンダリング部）１２による描画データの解析、及び画像データメモリ１６ａへの展開処理を繰り返す（ＳＴ２０がＮＯ、ＳＴ１６〜ＳＴ１９）。
【００４４】
その後、ＰＤＬバッファ１５ａ内の全てのＰＤＬコマンドの解析処理が完了し、画像データメモリ１６ａへの描画データの展開が終了すると（ＳＴ２０がＹＥＳ）、ＰＤＬ変換部１１（スレッド１）に対して画像形成処理の終了を通知する（ＳＴ２１）。この通知は、ＰＤＬ変換部１１に供給され、画像形成要求中フラグをオフする（前述の図７に示すフローチャートの処理（ＳＴ１４、ＳＴ１５））。
【００４５】
その後、上記処理を繰り返し、画像データ形成部（レンダリング部）１２は、取り出したＰＤＬコマンドが改頁コマンドである場合（Ｓ１８がＹＥＳ）、スレッド数の設定が２より大きいか判断する（ＳＴ２２）。本例の場合、スレッド数は“３”に設定されており（ＳＴ２２がＹＥＳ）、次に圧縮・スプール出力要求中フラグがオンであるか判断する（ＳＴ２３）。
ここで、圧縮・スプール出力要求中フラグは前述の初期設定において、オフに設定されており（ＳＴ２３がＮＯ）、上記画像データメモリ１６ａに展開した画像データを、以後画像データ圧縮部１３が読み出しを行う画像データメモリとして設定する（ＳＴ２４）。
次に、圧縮・スプール出力要求中フラグをオンにセットし（ＳＴ２５）、画像データ圧縮部１３（スレッド３）に対して圧縮・スプール出力要求を出す（ＳＴ２６）。すなわち、画像データ形成部（レンダリング部）１２から画像データ圧縮部１３に対して圧縮・スプール出力要求を出力する。
【００４６】
その後、画像データ形成部（レンダリング部）１２は次に画像データを格納する画像データメモリ１６ａ又は１６ｂを設定する。例えば、現在選択されている画像データメモリが１６ａであれば（ＳＴ２７がＹＥＳ）、画像データメモリ１６ｂに変更し（ＳＴ２８）、現在選択されている画像データメモリが１６ｂであれば（ＳＴ２７がＮＯ）、画像データメモリ１６ｂに変更する（ＳＴ２９）。
【００４７】
尚、前述の判断（ＳＴ２３）において、圧縮・スプール出力要求中フラグがオンの場合には、画像データ圧縮部１３及びスプール出力部１４による圧縮・スプール出力処理の終了を待ち、圧縮・スプール出力要求中フラグをオフする（ＳＴ２３がＹＥＳ、ＳＴ３０、ＳＴ３１）。この処理は、後に画像データ圧縮部１３及びスプール出力部１４が処理を開始し、画像データの圧縮処理及びスプール出力が終了した際行う処理であり、後述する。
【００４８】
次に、スレッド３の処理、即ち画像データ圧縮部１３の処理について、図９に示すフローチャートを使用して説明する。先ず、画像データ圧縮部１３は、圧縮・スプール出力要求を待ち（ＳＴ３２）、画像データメモリ１６ａに展開された画像データの圧縮処理を行う（ＳＴ３３）。
【００４９】
次に、上記処理によって圧縮した画像データをスプール出力部１４に送り、スプール出力部１４はスプーラ１７に対して圧縮画像データを出力する。この処理は、図１０（ａ）にｃで示す処理である。スプーラ１７はＬＡＮ等を介してプリンタ装置１０に圧縮された画像データを送信する（ＳＴ３４）。この処理は、図１０（ａ）にｄで示す処理であり、プリンタ装置１０にて印刷処理が施される。
【００５０】
次に、画像データ形成部（レンダリング部）１２に対し、圧縮対象画像データの圧縮及びスプール出力処理の終了を通知する（ＳＴ３５）。この通知は、画像データ形成部（レンダリング部）１２に送られ、圧縮・スプール出力要求中フラグをオフする。（前述の図８に示すフローチャートの処理（ＳＴ３０、ＳＴ３１））。
【００５１】
上記処理は同様に繰り返され、１頁目の文書ファイルはＰＤＬ変換部１１によってＰＤＬバッファ１５ａ、１５ｂに交互に入力し、画像データ形成部（レンダリング部）１２によって交互に読み出され、画像データに変換された後画像データメモリ１６ａに記憶される。また、次の頁の文書ファイルも、ＰＤＬバッファ１５ａ、１５ｂに交互にバッファリングされ、画像データ形成部（レンダリング部）１２によって画像データに変換された後画像データメモリ１６ｂに記憶される。画像データ圧縮部１３では上記画像データメモリ１６ａ、１６ｂから交互に画像データを読み出し、図１０（ａ）にｃ、ｇで示す画像データの圧縮処理を行い、スプール出力部１４によって図１０（ａ）にｄ、ｆで示すデータ転送処理を行い、スプーラ１７を介してプリンタ装置１０に画像データを出力する。
【００５２】
その間、スレッド１〜３は、対応する時点で空き状態のコア７ａ〜７ｄが選択され、印刷データの処理が順次実行される。（なお図示はしていないが、ＣＰＵコアの割当て（ＣＰＵコアのディスパッチ）に関しては、Windows（登録商標）などのＯＳのカーネル部がレディ状態のタスクまたはスレッドに対してＣＰＵコアの割当て（ＣＰＵコアのディスパッチ）を行なう。）
【００５３】
以上のように、本例によれば３スレッド構成／ＱｕａｄコアＣＰＵ（コア７ａ〜７ｄ）の場合、図１０（ａ）の如く、PDL変換処理と画像形成（レンダリング）処理と画像圧縮＆スプール出力処理の３つの処理およびスプーラによる圧縮画像データの転送処理が並列処理でき、格段の処理時間の短縮できる。尚、図１０（ｂ）は同じ文書ファイルを従来のシングルスレッド処理によって処理した例を示し、両処理を比較することによって本例の処理が従来例に比べて高速に行われることが分かる。
【００５４】
また、上記説明では図２に示す４個のコア７ａ〜７ｄを有するＣＰＵ７の例で説明したが、前述のように４個のＣＰＵを有する構成の図３に示す構成としてもよい。
【００５５】
上記例はスレッド数が“３”の場合について説明したが、例えばスレッド数が“２”の場合には、以下の処理となる。すなわち、図８に示すフローチャートの判断（ＳＴ２２）がＮＯとなり、スレッド２の処理として、画像データ圧縮部１３は画像データメモリ１６ａに記憶した画像データを読み出し、画像データの圧縮処理を行う（ＳＴ３６）。さらに、スプール出力部１４によって圧縮された画像データはスプーラ１７を介してプリンタ装置１０に出力される（ＳＴ３７）。
【００５６】
尚、図１１は２つのコアを使用した場合のシステム構成例を示し、スレッド数を“２”に設定して本発明の印刷データ処理を行う場合において、適用可能である。
一方、スレッド数が“１”の場合には、以下の処理となる。すなわち、図７に示すフローチャートの判断（ＳＴ６）がＮＯとなり、画像データ形成部（レンダリング部）１２はＰＤＬバッファ１５に格納されたＰＤＬコマンドを順次取り出し（ＳＴ３８）、取り出したＰＤＬコマンドが改頁コマンドであるまで、画像データメモリ１６ａに生成した画像データを書き込む（ＳＴ３９がＹＥＳ、ＳＴ４０、ＳＴ４１）。
【００５７】
その後、取り出したＰＤＬコマンドが改頁コマンドであれば（ＳＴ３９がＹＥＳ）、画像データ圧縮部１３によって画像データメモリ１６ａに記録された画像データを読み出し、圧縮処理を行い、スプール出力部１４によって圧縮された画像データをスプーラ１７を介してプリンタ装置１０に出力する（ＳＴ４２、ＳＴ４３）。
（実施形態２）
【００５８】
次に、本発明の実施形態２について説明する。尚、以下で説明する実施形態２以降は、前述の実施形態１の処理を前提として、条件を変えてスレッド数の設定を行う際の例を示すものである。
【００５９】
本例はスレッド数の設定をＣＰＵ７のコア数で決定する構成であり、クライアントＰＣの構成やプリンタドライバの構成等は前述の実施形態１と同様である。以下、図１２に示すフローチャートを使用して本例の処理を説明する。
【００６０】
この処理は、前述のマルチスレッドの初期化ルーチンである図５の処理（Ｓ３）によって呼び出されるルーチンであり、先ずマルチＣＰＵであるＣＰＵ７のコア数を獲得する（ステップ（以下、ＳＴＰで示す）１）。このコア数の情報は、例えばクライアントＰＣ内の基本システムの設定情報から読み出す。
【００６１】
次に、スレッド数として初期値“３”をセットする（ＳＴＰ２）。次に、読み出したコア数の情報に基づいて、コア数が２を越えているか、即ち“３”以上であるか判断する（ＳＴＰ３がＹＥＳ）。ここで、コア数が“３”以上である場合、上記初期設定したスレッド数“３”を設定スレッド数とする（ＳＴＰ３がＹＥＳ）。
【００６２】
一方、コア数が“２”を越えていない場合、スレッド数を“２”に変更する（ＳＴＰ３がＮＯ、ＳＴＰ４）。さらに、コア数が“１”を越えているか判断し、コア数が“１”を越えていない場合、スレッド数を“１”に設定する（ＳＴＰ５がＮＯ、ＳＴＰ６）。
【００６３】
以上のように、本例はクライアントＰＣが有するコア数によってスレッド数の設定を行う構成であり、クライアントＰＣの有するコア数に対応したスレッド数の設定を行うことができ、クライアントＰＣの性能に合ったスレッド数の設定を自動的に行うことができる。
【００６４】
尚、本例においても、複数のコアを有するＣＰＵ７の例で説明したが、前述のように複数のＣＰＵを有する構成の図３の例の場合にも同様に適用することができる。
また、クライアントＰＣのＣＰＵが１個であった場合にも前記同様スレッド数を“１”に設定して、同様の制御を実行する。
（実施形態３）
【００６５】
次に、本発明の実施形態３について説明する。
本例はスレッド数の設定をメモリサイズに従って決定する構成であり、クライアントＰＣの構成やプリンタドライバの構成等は前述の実施形態１と同様である。以下、図１３に示すフローチャートを使用して本例の処理を説明する。
【００６６】
本例の処理も、前述のマルチスレッドの初期化ルーチンである図５の処理（Ｓ３）によって呼び出されるルーチンであり、先ずメモリサイズの情報を獲得する（ステップ（以下、Ｗで示す）１）。このメモリサイズの情報も、例えばクライアントＰＣ内の基本システムの設定情報から読み出す。
【００６７】
次に、本例においても、スレッド数の初期値として“３”をセットする（Ｗ２）。以下、獲得したメモリサイズの情報に従ってスレッド数の設定を行う。すなわち、読み出したメモリサイズが１ＧＢより大きい場合、上記初期設定したスレッド数“３”を維持し、このスレッド数（“３”）に設定する（Ｗ３がＹＥＳ）。
【００６８】
一方、メモリサイズが１ＧＢより大きくない場合、スレッド数として“２”の設定を行う（Ｗ３がＮＯ、Ｗ４）。さらに、メモリサイズが５１２ＭＢより大きいか判断し（Ｗ４）、大きくない場合、スレッド数を“１”に設定する（Ｗ５がＮＯ、Ｗ６）。
【００６９】
以上のように、本例はメモリサイズに対応して最適なスレッド数／画像データメモリ・ＰＤＬバッファの設定を行うことができ、メモリサイズを意識することなく、自動的にクライアントＰＣのメモリサイズに対応したスレッド数の設定を行い、印刷処理を高速化することができる。
（実施形態４）
【００７０】
次に、本発明の実施形態４について説明する。
本例はスレッド数の“１”に設定した後、文書ファイル印刷の為にアプリケーション（ＡＰＬ）より指定された解像度及び階調数に従ってスレッド数の設定を行うものである。
以下、図１４及び図１５に示すフローチャートを使用して本例の処理を説明する。
【００７１】
先ず、図１４に示すフローチャートに従って、スレッド数を“１”に設定する（ステップ（以下、Ｕで示す）１）。次に、図１５に示すフローチャートに従って処理を開始し、先ず前述と同様、供給される文書ファイルに従ってアプリケーションプログラムより依頼された要求を取り出し、対応するＰＤＬコマンドを生成する（Ｕ２、Ｕ３）。
次に、生成したＰＤＬコマンドを前述と同様、ＰＤＬバッファ１５にバッファリングし（Ｕ４）、生成したＰＤＬコマンドが解像度/階調コマンドであるか判断し（Ｕ５）、解像度/階調コマンドでなければ（Ｕ５がＮＯ）、改頁コマンドを検出するまで、順次文書ファイルをＰＤＬコマンドに変換する（Ｕ６、Ｕ７、Ｕ２〜Ｕ５）。
【００７２】
一方、解像度/階調コマンドを検出すると（Ｕ５がＹＥＳ）、先ず解像度が６００dpi以上であるか判断し（Ｕ８）、解像度が６００dpi以上であれば（Ｕ８がＹＥＳ）、更に階調値が２を越えているか判断する（Ｕ９）。ここで、解像度が６００dpi以上ではない場合（Ｕ８がＮＯ）、又は解像度が６００dpi以上であっても階調値が２以下である場合（Ｕ９がＮＯ）、スレッド数を“２”に設定する（Ｕ１０）。
【００７３】
次に、解像度が３００dpiであるか判断し（Ｕ１１）、解像度が３００dpiであればスレッド数を“３”に設定する（Ｕ１２）。一方、解像度が３００dpiではない場合（Ｕ１１がＮＯ）、解像度が６００dpiであるか判断し（Ｕ１３）、解像度が６００dpiであり、更に階調値が１６以上ではない場合（Ｕ１３がＹＥＳ、Ｕ１４がＮＯ）、スレッド数を“３”に設定する（Ｕ１２）。
【００７４】
上記処理によって、スレッド数が“１”乃至“３”に設定された後、前述の処理を実行する。すなわち、実施形態１の処理と同様、画像形成要求中フラグをオフに設定し、圧縮・スプール出力要求中フラグもオフに設定し（Ｕ１５）、ＰＤＬバッファ１５ｂを確保してスレッド２の生成を起動する（Ｕ１６、Ｕ１７）。そして、設定されたスレッド数が“２”を越えているか判断し（Ｕ１８）、スレッド数が“２”を越えていれば（Ｕ１８がＹＥＳ）、更に画像データメモリ１６ｂを確保してスレッド３を起動する（Ｕ１９、Ｕ２０）。
【００７５】
以下、前述の図７に示すフローチャートと同様の処理を行い、スレッド数“３”が設定された場合には、ＰＤＬバッファ１５ａ、１５ｂ、及び画像データメモリ１６ａ、１６ｂを交互に使用し、文書ファイルに基づく画像データを効率よくプリンタ装置１０に送信できる（Ｕ２１〜Ｕ３６）。また、スレッド数“２”が設定された場合には、ＰＤＬバッファ１５ａ、１５ｂを交互に使用し、更に画像データメモリ１６を使用して、文書ファイルに基づく画像データを効率よくプリンタ装置１０に送信する（Ｕ２１〜Ｕ３６）。尚、この処理（Ｕ２１〜Ｕ３６）は前述の実施形態１と同様の処理であり、説明を省略する。
【００７６】
以上のように、本例は解像度/階調数に対応して最適なスレッド数の設定を行うことができ、自動的にプリンタ装置１０の解像度及び階調数に対応した最適なスレッド数の設定を行い、印刷処理を高速化することができる。
（実施形態５）
【００７７】
次に、本発明の実施形態５について説明する。
本例はスレッド数“１”〜“３”について処理時間を計算し、最も平均処理時間が短いスレッド数の設定を行うものである。以下、具体的に説明する。
【００７８】
図１６は本例で使用するクライアントＰＣのシステム構成図である。尚、同図の構成は前述の図２に示すシステム構成と基本的に同様であるが、プリンタドライバ（印刷データ処理装置）１内に時間計測手段２０、及び処理時間記憶手段２１を含む。尚、他の構成は前述の図２と同様であり、図２と同じ回路には同じ番号を付し、構成上の説明を省略する。
【００７９】
時間計測手段２０は各コア７ａ〜７ｄがスレッド処理を実行する際の処理時間を計測する機能を有し、具体的な計測処理については後述する。また、処理時間記憶手段２１は、例えば図１７に示す処理時間テーブルで構成され、１スレッド構成〜３スレッド構成時の各累積処理時間、累積頁数、及び１頁当たりの平均処理時間を記憶する。以下、本例の処理を具体的に説明する。
【００８０】
図１８は本例の処理を説明するフローチャートであり、先ずスレッド１の処理時間を計測するため、計測処理を開始する（ステップ（以下、Ｖで示す）１）。具体的には、図１９に示す処理に従って実行され、先ずスレッド１の時間計測中フラグがオフであるか判断する（Ｖ２）。尚、後述するが、スレッド１〜３の時間計測中フラグは初期時オフに設定されており（Ｖ２がＹＥＳ）、スレッド１の時間計測中フラグをオンにセットし、時間計測手段２０（タイマ１）による時間計測を開始する（Ｖ３、Ｖ４）。
【００８１】
その後、図１８に示すフローチャートに戻って、ＰＤＬ変換部１１はアプリケーションプログラムより依頼された要求を取り出し、対応するＰＤＬコマンドを生成する（Ｖ５、Ｖ６）。さらに、生成したＰＤＬコマンドを前述と同様、ＰＤＬバッファ１５ａにバッファリングし（Ｖ７）、生成したＰＤＬコマンドが改頁コマンドであるか判断し（Ｖ８）、改頁コマンドでなければ（Ｖ８がＮＯ）、ＰＤＬバッファ１５ａが満杯になったか判断し（Ｖ９）、満杯になるまで上記処理を繰り返す。
【００８２】
改頁コマンドを検出すると（Ｖ８がＹＥＳ）、スレッド数の設定が“３”又は“２”であれば（Ｖ１０がＹＥＳ）、スレッド１の処理時間の計測を終了する（Ｖ１１）。具体的には、図２０に示す処理に従って実行され、先ず時間計測手段２０（タイマ１）の計測処理を停止し（Ｖ１２）、タイマ１の値を読み出し（Ｖ１３）、スレッド１の処理時間として、一時的に記憶し（Ｖ１４）、タイマ１をリセットする（Ｖ１５）。そして、スレッド１の時間計測中フラグをオフにする（Ｖ１５−２）。
【００８３】
次に、改頁コマンドを検出した後（Ｖ１０、Ｖ１１）、もしくは、ＰＤＬバッファ１５ａが満杯になった（Ｖ９がＹＥＳ）場合、スレッド数が“２”以上であり（Ｖ１６がＹＥＳ）、更に画像形成要求中フラグがオンであるか判断し（Ｖ１７）、画像形成要求中フラ
グは、初期時オフに設定されており（Ｖ１７がＮＯ）、上記ＰＤＬコマンドを格納したＰＤＬバッファ１５ａを、以後画像データ形成部（レンダリング部）１２が読み出しを行うＰＤＬバッファとして設定する（Ｖ１８）。
【００８４】
次に、前述と同様、画像形成要求中フラグをオンにセットし（Ｖ１９）、スレッド２に対して画像形成要求を出力し（Ｖ２０）、その後、ＰＤＬ変換部１１は次に文書ファイルから生成するＰＤＬコマンドを格納するＰＤＬバッファ１５ａ、１５ｂを設定する。すなわち、前述と同様、選択されているＰＤＬバッファが１５ａであれば（Ｖ２１がＹＥＳ）、ＰＤＬバッファ１５ｂに変更し（Ｖ２２）、選択されているＰＤＬバッファが１５ｂであれば（Ｖ２１がＮＯ）、ＰＤＬバッファ１５ａに変更する（Ｖ２３）。尚、上記判断（Ｖ１７）において、画像形成要求中フラグがオンである場合の処理も前述と同様である（Ｖ１７がＹＥＳ、Ｖ２４、Ｖ２５）。
【００８５】
次に、スレッド２の処理、即ち画像データ形成部（レンダリング部）１２の処理における時間計測は、図２１に示すフローチャートに従って行われる。先ず、ＰＤＬ変換部１１からの画像形成要求を待ち（Ｖ２６）、画像形成要求があると、スレッド２の処理時間の計測を開始する（Ｖ２７）。具体的には、図２２に示す処理に従って実行され、先ずスレッド２の時間計測中フラグがオフであるか判断する（Ｖ２８）。前述のように、スレッド１〜３の時間計測中フラグは初期時オフにフラグ設定されており（Ｖ２８がＹＥＳ）、スレッド２の時間計測中フラグをオンに設定し、時間計測手段２０（タイマ２）による時間計測を開始する（Ｖ２９、Ｖ３０）。
【００８６】
その後、前述と同様、画像データ形成部（レンダリング部）１２に画像形成要求があると、ＰＤＬバッファ１５ａに格納されたＰＤＬコマンドを順次取り出し、取り出したＰＤＬコマンドが改頁コマンドであるか判断し（Ｖ３１〜Ｖ３４）、改頁コマンドでない場合、前述と同様、ＰＤＬコマンドの解析を行い、画像データを生成して画像データメモリ１６ａに記憶し、ＰＤＬバッファ１５ａに格納されたＰＤＬコマンドが全て処理されたとき（Ｖ３４がＹＥＳ）、ＰＤＬ変換部１１（スレッド１）に対して画像形成処理の終了を通知する（Ｖ３５）。
【００８７】
また、取り出したＰＤＬコマンドが改頁コマンドである場合（Ｖ３２がＹＥＳ）、スレッド数が“２”を越えているか判断し（Ｖ３６）、スレッド数が“３”の場合（Ｖ３６がＹＥＳ）、スレッド２の処理時間の計測を終了する（Ｖ３７）。具体的には、図２３に示す処理に従って実行され、先ず時間計測手段２０（タイマ２）による計測処理を停止し（Ｖ３８）、時間計測手段２０（タイマ２）の値を読み出し（Ｖ３９）、スレッド２の処理時間として、一時的に記憶する（Ｖ４０）。また、タイマ２の値をリセットし（Ｖ４１）、スレッド２の時間計測中フラグをオフにする（Ｖ４１−２）。
【００８８】
その後、前述と同様の処理を行い、圧縮・スプール出力要求中フラグがオンであるか判断し（Ｖ４２）、圧縮・スプール出力要求中フラグがオフに設定されていれば（Ｖ４２がＮＯ）、上記画像データメモリ１６ａに展開した画像データを、以後画像データ圧縮部１３が読み出しを行う画像データメモリとして設定し（Ｖ４３）、圧縮・スプール出力要求中フラグ中フラグをオンにセットし（Ｖ４４）、画像データ圧縮部１３に対して圧縮・スプール出力要求を出し（Ｖ４５）、その後、選択されている画像データメモリが１６ａであれば（Ｖ４６がＹＥＳ）、画像データメモリ１６ｂに変更し（Ｖ４７）、選択されている画像データメモリが１６ｂであれば（Ｖ４６がＮＯ）、画像データメモリ１６ｂに変更する（Ｖ４８）。尚、圧縮・スプール出力要求中フラグがオンである場合の処理も前述と同様である（Ｖ４９、Ｖ５０）。
【００８９】
次に、スレッド３の処理時間を計測するため、図２４に示すフローチャートに示す処理を実行する。先ず、画像データ圧縮部１３は、圧縮・スプール出力要求を待ち（Ｖ５１）、圧縮・スプール出力要求があると、スレッド３の処理時間の計測を開始する（Ｖ５２）。具体的には、図２５に示す処理に従って実行され、先ずスレッド３の時間計測中フラグがオフであるか判断し（Ｖ５２−１）、スレッド１〜３の時間計測中フラグは初期時オフにフラグ設定されており（Ｖ５２−１がＹＥＳ）、スレッド３の時間計測中フラグをオンに設定し、時間計測手段２０（タイマ３）による時間計測を開始する（Ｖ５２−２、Ｖ５２−３）。
【００９０】
その後、画像データ圧縮部１３は、画像データメモリ１６ｂに展開された画像データの圧縮処理を行い（Ｖ５３）、圧縮処理した画像データをスプーラ１７に出力する（Ｖ５４）。そして、スレッド３の処理時間の計測を終了する（Ｖ５５）。具体的には、図２６に示す処理に従って実行され、先ず時間計測手段２０（タイマ３）による計測処理を停止し（Ｖ５６）、時間計測手段２０（タイマ３）の値を読み出し（Ｖ５７）、スレッド３の処理時間として、一時的に記憶する（Ｖ５８）。その後、タイマ３をリセットし（Ｖ５９）、スレッド３の時間計測中フラグをオフにする（Ｖ５９−２）。
【００９１】
その後、３スレッド構成の処理時間を更新する（Ｖ６０）。この処理は、図２７に示すフローチャートに従って実行される。先ず、３スレッド構成の累積頁数のデータを＋１する（Ｖ６１）。すなわち、前述の図１７に示す３スレッド構成の累積頁数のエリアのデータを＋１する。
【００９２】
次に、一時的に記憶しているスレッド１，２，３の処理時間のうち、最も長時間のものを選び、３スレッド構成の累積処理時間に累積する。まず、スレッド２の処理時間がスレッド１の処理時間より長いか判断する（Ｖ６２）。すなわち、画像データ形成部（レンダリング部）１２における処理がＰＤＬ変換部１１における処理より時間を要したか判断し、スレッド２の処理時間がスレッド１の処理時間より長い場合（Ｖ６２がＹＥＳ）、スレッド１の処理時間をスレッド２の処理時間とする（Ｖ６３）。すなわち、より時間を要した処理の処理時間をスレッド１の処理時間とする。
【００９３】
次に、スレッド３の処理時間がスレッド１の処理時間より長いか判断する（Ｖ６４）。この場合、スレッド１の処理時間は上記処理（Ｖ６３）によって設定された時間であり、この時間とスレッド３の処理時間との比較処理を行う。ここで、スレッド３の処理時間がスレッド１の処理時間より長い場合（Ｖ６４がＹＥＳ）、スレッド３の処理時間をスレッド１の処理時間に設定する（Ｖ６５）。すなわち、スレッド１〜３の各処理に要した時間の中で最も長時間を要したスレッドの処理時間をスレッド１の処理時間に設定する。
【００９４】
次に、３スレッド構成の累積処理時間に、上記スレッド１の処理時間を累積する（Ｖ６６）。この累積処理時間は、前述の図１７に示す３スレッド構成の累積処理時間のエリアに記録される。そして、３スレッド構成の平均処理時間を計算し（３スレッド構成の累積処理時間／３スレッド構成の累積頁数）、図１７に示す処理時間テーブルの１頁当たりの平均処理時間のエリアに記録し、処理時間記憶手段２１に書き込む（Ｖ６７、Ｖ６８）。
【００９５】
上記例は３スレッド構成の場合について説明したが、例えば２スレッド構成の場合には、以下の処理となる。すなわち、前述の図２１に示すフローチャートの判断（Ｖ３６）がＮＯとなり、スレッド２の処理として、画像データ圧縮部１３は画像データメモリ１６に記憶した画像データを読み出し、画像データの圧縮処理を行い（Ｖ７０）、圧縮した画像データをスプーラ１７を介してプリンタ装置１０に出力する（Ｖ７１）。
【００９６】
次に、スレッド２の処理時間の計測終了処理を行う（Ｖ７２）。この処理は前述の図２３で説明した処理と同様の処理である。その後、２スレッド構成の処理時間を更新する（Ｖ７３）。
【００９７】
この処理は、図２７に示すフローチャートに従って実行される。先ず、２スレッド構成の累積頁数のデータを＋１し（Ｖ７４）、スレッド２の処理時間がスレッド１の処理時間より長いか判断する（Ｖ７５）。この処理も上記処理と同様であり、より時間を要した処理の処理時間をスレッド１の処理時間とする。
【００９８】
ここで、スレッド２の処理時間がスレッド１の処理時間より長い場合（Ｖ７５がＹＥＳ）、スレッド１の処理時間をスレッド２の処理時間に設定する（Ｖ７６）。次に、２スレッド構成の累積処理時間に上記スレッド１の処理時間を累積し（Ｖ７７）、２スレッド構成の平均処理時間を計算し（２スレッド構成の累積処理時間／２スレッド構成の累積頁数）、処理時間テーブルの対応するエリアに平均処理時間を記録し、処理時間記憶手段２１に書き込む（Ｖ７８、Ｖ７９）。
【００９９】
一方、１スレッド構成の場合には、以下の処理となる。すなわち、図１８に示すフローチャートの判断（Ｖ１６）がＮＯとなり、画像データ形成部（レンダリング部）１２はＰＤＬバッファ１５ａに格納されたＰＤＬコマンドを順次取り出し（Ｖ８０）、取り出したＰＤＬコマンドが改頁コマンドであるまで、画像データメモリ１６ａに生成した画像データを書き込む（Ｖ８０がＹＥＳ、Ｖ８１〜Ｖ８３）。
【０１００】
その後、取り出したＰＤＬコマンドが改頁コマンドであれば（Ｖ８１がＹＥＳ）、画像データ圧縮部１３によって画像データメモリ１６ａに記録された画像データを読み出し、圧縮処理を行い、スプール出力部１４によって圧縮された画像データをスプーラ１７を介してプリンタ装置１０に出力する（Ｖ８４、Ｖ８５）。
【０１０１】
次に、スレッド１の処理時間の計測終了処理を行う（Ｖ８６）。この処理は前述の図２０で説明した処理と同様な処理であり、その後１スレッド構成の処理時間の更新処理を行う（Ｖ８７）。
【０１０２】
図２７は上記処理を説明するフローチャートであり、１スレッド構成の累積頁数のデータを＋１し（Ｖ８８）、１スレッド構成の累積処理時間に計測したスレッド１の処理時間を累積し（Ｖ８９）、１スレッド構成の平均処理時間を計算し（１スレッド構成の累積処理時間／１スレッド構成の累積頁数）、処理時間テーブルの１スレッド構成の対応するエリアに平均処理時間を記録する（Ｖ９０、Ｖ９１）。その後、スレッド１〜３の処理時間を“０”にリセットする（Ｖ９２）。
【０１０３】
このようにして、各スレッド構成時の処理時間テーブルを更新していく。そして、次にアプリケーションより印刷要求が発生した場合、プリンタドライバはこの処理時間テーブルを読み出し、１頁あたりの平均処理時間の最も少ないスレッド構成を選択し、そのスレッド数でＰＤＬ変換や画像形成処理などを行なう。このスレッド数決定ルーチンを、図２８に示すフローチャートに従って説明する。この処理は、前述のマルチスレッドの初期化ルーチンである図５の処理（Ｓ３）によって呼び出されるルーチンであり、先ず処理時間記憶手段２１から１スレッド構成〜３スレッド構成の１頁当たりの平均処理時間を読み出し、比較する（Ｖ９３、Ｖ９４）。
この場合、先ずスレッド数“３”を設定する（Ｖ９５）。次に、上記平均処理時間を比較した結果、３スレッド構成時の１頁当たりの平均処理時間が最も少ない場合（Ｖ９６がＹＥＳ）、上記の設定通りスレッド数として“３”を設定する。
一方、上記判断（Ｖ９６）がノーである場合、スレッド数を“２”に設定し、２スレッド構成時の１頁当たりの平均処理時間が最も少ないか判断する（Ｖ９８）。ここで、２スレッド構成時の１頁当たりの平均処理時間が最も少ない場合（Ｖ９８がＹＥＳ）、２スレッド構成とする。さらに、上記判断（Ｖ９８）がノーである場合、スレッド数を“１”に設定し、１スレッド構成の設定を行う（Ｖ９９）。
【０１０４】
その後、スレッド１〜３の時間計測中フラグをオフとし、スレッド１〜３の処理時間をゼロにリセットし、時間計測手段２０（タイマ１〜３）をリセットする（Ｖ１００〜Ｖ１０２）
【０１０５】
本例は以上のように処理することによって、前述の実施形態２乃至４で説明したＣＰＵの能力や、メモリサイズ、解像度/階調コマンド等を全く意識することなく、自動的に適切なスレッド数の設定を行うことができる。
【０１０６】
尚、処理時間記憶手段２１に設定する処理時間管理テーブルを用紙サイズに対応した構成としてもよい。図２９は用紙サイズ毎にスレッド１〜３の累積処理時間、累積頁数、１頁当たりの平均処理時間を記録し、用紙サイズに従って最適なスレッド構成を選択するための処理時間管理テーブルの例を示す図である。
【０１０７】
上記テーブルに前述の実施形態５の処理に従ってデータを記録し、上記と同様の処理を行うことによって、スレッド構成毎であり、且つ用紙毎に１頁当たりの平均画像形成時間を求め、用紙サイズに応じて最適なスレッド数の設定を行うことができる。
【符号の説明】
【０１０８】
１・・・プリンタドライバ
２・・・ＲＯＭ
３・・・ディスク装置
４・・・ＬＡＮ回路
５・・・ＬＣＤ（液晶ディスプレイ）
６・・・キーボード（ＫＢ）
７・・・ＣＰＵ７
８・・・ＲＡＭ
１０・・プリンタ装置
１１・・ＰＤＬ変換部
１２・・画像データ形成部（レンダリング部）
１３・・画像データ圧縮部
１４・・スプール出力部
１５、１５ａ、１５ｂ・・ＰＤＬバッファ
１６、１６ａ、１６ｂ・・画像データメモリ
１７・・スプーラ
２０・・時間計測手段
２１・・処理時間記憶手段
【図１】
0005464283.tif 000002
【図２】
0005464283.tif 000003
【図３】
0005464283.tif 000004
【図４】
0005464283.tif 000005
【図５】
0005464283.tif 000006
【図６】
0005464283.tif 000007
【図７】
0005464283.tif 000008
【図８】
0005464283.tif 000009
【図９】
0005464283.tif 000010
【図１０】
0005464283.tif 000011
【図１１】
0005464283.tif 000012
【図１２】
0005464283.tif 000013
【図１３】
0005464283.tif 000014
【図１４】
0005464283.tif 000015
【図１５】
0005464283.tif 000016
【図１６】
0005464283.tif 000017
【図１７】
0005464283.tif 000018
【図１８】
0005464283.tif 000019
【図１９】
0005464283.tif 000020
【図２０】
0005464283.tif 000021
【図２１】
0005464283.tif 000022
【図２２】
0005464283.tif 000023
【図２３】
0005464283.tif 000024
【図２４】
0005464283.tif 000025
【図２５】
0005464283.tif 000026
【図２６】
0005464283.tif 000027
【図２７】
0005464283.tif 000028
【図２８】
0005464283.tif 000029
【図２９】
0005464283.tif 000030
【図３０】
0005464283.tif 000031