(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2021-12-20
(45)【発行日】2022-01-17
(54)【発明の名称】画像処理装置、画像処理方法及びプログラム
(51)【国際特許分類】
B41J 5/30 20060101AFI20220107BHJP
【FI】
B41J5/30 Z
(21)【出願番号】P 2017132920
(22)【出願日】2017-07-06
【審査請求日】2020-05-22
(73)【特許権者】
【識別番号】000003078
【氏名又は名称】株式会社東芝
(73)【特許権者】
【識別番号】000003562
【氏名又は名称】東芝テック株式会社
(74)【代理人】
【識別番号】100108855
【氏名又は名称】蔵田 昌俊
(74)【代理人】
【識別番号】100103034
【氏名又は名称】野河 信久
(74)【代理人】
【識別番号】100075672
【氏名又は名称】峰 隆司
(74)【代理人】
【識別番号】100153051
【氏名又は名称】河野 直樹
(74)【代理人】
【識別番号】100179062
【氏名又は名称】井上 正
(74)【代理人】
【識別番号】100189913
【氏名又は名称】鵜飼 健
(72)【発明者】
【氏名】渡邉 文之
(72)【発明者】
【氏名】日比野 誠
【審査官】大浜 登世子
(56)【参考文献】
【文献】特開2010-125713(JP,A)
【文献】特開2009-116450(JP,A)
【文献】特開2003-084933(JP,A)
【文献】特開2011-120080(JP,A)
【文献】米国特許出願公開第2013/0088731(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
B41J 5/30
(57)【特許請求の範囲】
【請求項1】
印刷対象データを複数の印刷単位に分割された中間データに変換する解析処理を行う解析部と、
前記複数の印刷単位に分割された
中間データを
それぞれ印刷用データに変換する描画処理を
並行して行う複数の描画処理部と、
前記描画処理によって変換された前記印刷用データに対してデータ圧縮を行う圧縮部と、
を備え、
前記
解析部は、
前記印刷対象データから第1の中間データが変換される毎に、アイドル状態の前記圧縮部の数に
零よりも大きい任意の設定値を足した数が、前記印刷用データに変換中の
第2の中間データの数よりも大きい
か否かを比較し、
前記足した数が前記第2の中間データの数よりも大きい場合、前記描画処理を実行していない描画処理部に対して前記第1の中間データの描画処理開始を指令し、
前記足した数が前記第2の中間データの数よりも大きくない場合、前記第1の中間データを描画待ちキューに追加し、前記足した数が前記第2の中間データの数よりも大きくなると、前記描画処理を実行していない描画処理部に対して前記描画待ちキューに追加された前記第1の中間データの描画処理開始を指令する、画像処理装置。
【請求項2】
前記描画処理部は、
前記中間データを印刷用データに変換する毎に、アイドル状態の前記圧縮部があるか否かを判定し、
前記アイドル状態の前記圧縮部がある場合、前記中間データから変換された前記印刷用データの圧縮処理を行うように前記圧縮部に指令し、
前記アイドル状態の前記圧縮部がない場合、前記中間データから変換された前記印刷用データを圧縮待ちキューに追加し、前記圧縮部がアイドル状態になると、前記圧縮待ちキューに追加した前記印刷用データの圧縮処理を行うように前記圧縮部に指令する、請求項1記載の画像処理装置。
【請求項3】
前記解析部は、
前記印刷対象データから第1の中間データが変換される毎に、アイドル状態の前記圧縮部の数に前記設定値を足した数が、前記印刷用データに変換中の第2の中間データの数に前記圧縮待ちキューに追加されている前記印刷用データの数を足した数よりも大きいか否かを比較し、
前記アイドル状態の前記圧縮部の数に前記設定値を足した数が前記第2の中間データの数に前記圧縮待ちキューに追加されている前記印刷用データの数を足した数よりも大きい場合、前記描画処理を実行していない描画処理部に対して前記第1の中間データの描画処理開始を指令し、
前記アイドル状態の前記圧縮部の数に前記設定値を足した数が前記第2の中間データの数に前記圧縮待ちキューに追加されている前記印刷用データの数を足した数よりも大きくない場合、前記第1の中間データを描画待ちキューに追加し、前記アイドル状態の前記圧縮部の数に前記設定値を足した数が前記第2の中間データの数に前記圧縮待ちキューに追加されている前記印刷用データの数を足した数よりも大きくなると、前記描画処理を実行していない描画処理部に対して前記描画待ちキューに追加された前記第1の中間データの描画処理開始を指令する、請求項2記載の画像処理装置。
【請求項4】
前記圧縮部を複数備え、
前記複数の圧縮部によって、複数の前記
印刷用データのデータ圧縮を並列処理する、請求項1
乃至3のうちいずれか一に記載の画像処理装置。
【請求項5】
印刷対象データを複数の印刷単位に分割された中間データに変換する解析処理を行う解析部と、前記複数の印刷単位に分割された中間データをそれぞれ印刷用データに変換する描画処理を並列して行う複数の描画処理部と、前記描画処理によって変換された前記印刷用データに対してデータ圧縮を行う圧縮部と、を備えた画像処理装置の画像処理方法であって、
前記解析部が、
前記印刷対象データから第1の中間データが変換される毎に、アイドル状態の前記圧縮部の数に零よりも大きい任意の設定値を足した数が、前記印刷用データに変換中の第2の中間データの数よりも大きいか否かを比較し、
前記足した数が前記第2の中間データの数よりも大きい場合、前記描画処理を実行していない描画処理部に対して前記第1の中間データの描画処理開始を指令し、
前記足した数が前記第2の中間データの数よりも大きくない場合、前記第1の中間データを描画待ちキューに追加し、前記足した数が前記第2の中間データの数よりも大きくなると、前記描画処理を実行していない描画処理部に対して前記描画待ちキューに追加された前記第1の中間データの描画処理開始を指令する、画像処理方法。
【請求項6】
前記描画処理部が、
前記中間データを印刷用データに変換する毎に、アイドル状態の前記圧縮部があるか否かを判定し、
前記アイドル状態の前記圧縮部がある場合、前記中間データから変換された前記印刷用データの圧縮処理を行うように前記圧縮部に指令し、
前記アイドル状態の前記圧縮部がない場合、前記中間データから変換された前記印刷用データを圧縮待ちキューに追加し、前記圧縮部がアイドル状態になると、前記圧縮待ちキューに追加した前記印刷用データの圧縮処理を行うように前記圧縮部に指令する、請求項5記載の画像処理方法。
【請求項7】
印刷対象データを複数の印刷単位に分割された中間データに変換する解析処理を行う解析部と、前記複数の印刷単位に分割された中間データをそれぞれ印刷用データに変換する描画処理を並列して行う複数の描画処理部と、前記描画処理によって変換された前記印刷用データに対してデータ圧縮を行う圧縮部と、を備えた画像処理装置のコンピュータ-を、
前記解析部が、
前記印刷対象データから第1の中間データが変換される毎に、アイドル状態の前記圧縮部の数に零よりも大きい任意の設定値を足した数が、前記印刷用データに変換中の第2の中間データの数よりも大きいか否かを比較する手段、
前記足した数が前記第2の中間データの数よりも大きい場合、前記描画処理を実行していない描画処理部に対して前記第1の中間データの描画処理開始を指令する手段、及び、
前記足した数が前記第2の中間データの数よりも大きくない場合、前記第1の中間データを描画待ちキューに追加し、前記足した数が前記第2の中間データの数よりも大きくなると、前記描画処理を実行していない描画処理部に対して前記描画待ちキューに追加された前記第1の中間データの描画処理開始を指令する手段、
として機能させるためのプログラム。
【請求項8】
前記画像処理装置のコンピュータ-を、さらに、
前記描画処理部が、
前記中間データを印刷用データに変換する毎に、アイドル状態の前記圧縮部があるか否かを判定する手段、
前記アイドル状態の前記圧縮部がある場合、前記中間データから変換された前記印刷用データの圧縮処理を行うように前記圧縮部に指令する手段、
前記アイドル状態の前記圧縮部がない場合、前記中間データから変換された前記印刷用データを圧縮待ちキューに追加し、前記圧縮部がアイドル状態になると、前記圧縮待ちキューに追加した前記印刷用データの圧縮処理を行うように前記圧縮部に指令する手段、
として機能させるための請求項7記載のプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施形態は、画像処理装置、画像処理方法及びプログラムに関する。
【背景技術】
【0002】
MFP(multifunction peripheral)などの画像形成装置は、PostScript又はPDF(Portable Document Format)などのページ記述言語(PDL(page description language))で記述されたデータを印刷用のラスターデータに変換するRIP(raster image processor)処理を行う場合がある。RIP処理は、解析処理と描画処理とに分けることができる。解析処理は、複数ページのデータを、複数の単一ページの中間データに分ける処理などを含む。そして、描画処理は、解析処理によって処理された中間データを印刷用のラスターデータに変換する処理などを含む。なお、印刷用のラスターデータを、以下「印刷用データ」というものとする。
画像形成装置は、RIP処理によって変換されたデータを、メモリ又はHDD(hard disk drive)などの記憶装置に保存する場合がある。しかしながら、印刷対象のデータが高解像度のカラー画像である場合などにおいては、MFPが備える記憶装置に保存するには、大きすぎる場合がある。このため、画像に圧縮処理を施してから保存することが行われている。圧縮処理は、ソフトウェアで行うと時間がかかるため、圧縮コアなどと呼ばれる専用のハードウェアが用いられる場合がある。
また、画像形成装置は、マルチコアCPU(central processing unit)、又はGPU(graphics processing unit)を内蔵したCPUなどの、複数のコアを備えるプロセッサーが採用される場合がある。そして、プロセッサーがRIPとして動作して、解析処理と描画処理とをマルチスレッドなどにより並列して処理するなどして、RIP処理の速度を向上させることが行われている。しかしながら、このようにプロセッサーによるRIPの処理速度が向上しても、圧縮コアによる圧縮処理の速度がボトルネックとなる場合がある。すなわち、描画処理を並列処理などによって次々と進めても、圧縮コアが空いていなければ、RIP処理が終わったデータに対して圧縮処理を開始するまでに処理待ちが発生する。この場合、プロセッサーの使用率が上がるだけでRIP処理と圧縮処理とを含む全体の処理についての速度はほとんど変化しないといったことが起こる。また、画像形成装置が備えるプロセッサーは、RIP処理以外にも様々な処理を行っているため、RIP処理によって使用率が上がりすぎると他の処理が重くなってしまう場合がある。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
本発明の実施形態が解決しようとする課題は、プロセッサーを効率的に使用可能な画像処理装置、画像処理方法及びプログラムを提供することである。
【課題を解決するための手段】
【0005】
実施形態の画像処理装置は、印刷対象データを複数の印刷単位に分割された中間データに変換する解析処理を行う解析部と、複数の印刷単位に分割された中間データをそれぞれ印刷用データに変換する描画処理を並行して行う複数の描画処理部と、描画処理によって変換された前記印刷用データに対してデータ圧縮を行う圧縮部とを備える。解析部は、前記印刷対象データから第1の中間データが変換される毎に、アイドル状態の前記圧縮部の数に零よりも大きい任意の設定値を足した数が、前記印刷用データに変換中の第2の中間データの数よりも大きいか否かを比較する。解析部は、前記足した数が前記第2の中間データの数よりも大きい場合、前記描画処理を実行していない描画処理部に対して前記第1の中間データの描画処理開始を指令する。解析部は、前記足した数が前記第2の中間データの数よりも大きくない場合、前記第1の中間データを描画待ちキューに追加し、前記足した数が前記第2の中間データの数よりも大きくなると、前記描画処理を実行していない描画処理部に対して前記描画待ちキューに追加された前記第1の中間データの描画処理開始を指令する。
【図面の簡単な説明】
【0006】
【
図1】実施形態に係る画像形成装置の要部回路構成を示すブロック図。
【
図2】
図1中のプロセッサーによる制御処理を示すフローチャート。
【
図3】
図1中のプロセッサーによる制御処理を示すフローチャート。
【
図4】
図1中の圧縮コアによる処理を示すフローチャート。
【
図5】従来のRIP処理と圧縮処理の処理タイミングの一例を示す図。
【
図6】RIP処理と圧縮処理の処理タイミングの一例を示す図。
【
図7】実施形態のRIP処理と圧縮処理の処理タイミングの一例を示す図。
【
図8】実施形態のRIP処理と圧縮処理の処理タイミングの一例を示す図。
【発明を実施するための形態】
【0007】
以下、実施形態に係る画像形成装置について図面を用いて説明する。
図1は、実施形態に係る画像形成装置10の要部回路構成を示すブロック図である。画像形成装置10は、例えば、印刷、スキャン、コピー及びファクシミリなどの機能を備えるMFP又はコピー機である。あるいは、画像形成装置10は、印刷機能を備えるプリンターなどである。画像形成装置10は、プロセッサー11、ROM(read-only memory)12、RAM(random-access memory)13、補助記憶デバイス14、圧縮コア15、画像形成部16及びバス17を含む。画像形成装置10は、画像処理装置の一例である。
【0008】
プロセッサー11は、画像形成装置10の動作に必要な演算及び制御などの処理を行うコンピューターの中枢部分に相当する。プロセッサー11は、ROM12又は補助記憶デバイス14などに記憶されたシステムソフトウェア、アプリケーションソフトウェア又はファームウェアなどのプログラムに基づいて、画像形成装置10の各種の機能を実現するべく各部を制御する。プロセッサー11は、例えば、CPU(central processing unit)、MPU(micro processing unit)、SoC(system on a chip)、DSP(digital signal processor)又はGPU(graphics processing unit)などである。あるいは、プロセッサー11は、これらの組み合わせである。プロセッサー11は、好ましくは、マルチコアCPU、又はGPUとCPUとを備えるプロセッサーである。複数のコアを備えるプロセッサーは、マルチスレッド又はマルチプロセスなどの並行処理を並列処理することで高速に処理することが可能なためである。なお、並行処理とは、複数のスレッド又はプロセスなどを、時分割などによって切り替えながら同時的に処理すること、あるいは並列処理することなどである。また、並列処理とは、複数のスレッド又はプロセスなどを、複数のコアで同時に処理することなどである。
【0009】
ROM12は、プロセッサー11を中枢とするコンピューターの主記憶装置に相当する。ROM12は、専らデータの読み出しに用いられる不揮発性メモリである。ROM12は、上記のプログラムを記憶する。また、ROM12は、プロセッサー11が各種の処理を行う上で使用するデータ又は各種の設定値などを記憶する。
【0010】
RAM13は、プロセッサー11を中枢とするコンピューターの主記憶装置に相当する。RAM13は、データの読み書きに用いられるメモリである。RAM13は、プロセッサー11が各種の処理を行う上で一時的に使用するデータを記憶しておく、いわゆるワークエリアなどとして利用される。
【0011】
また、RAM13などは、変数p、変数q及び変数rを記憶する。変数pは、プロセッサー11が描画処理を何スレッド実行しているかを示す。変数pの初期値は、0である。なお、プロセッサー11が描画処理を実行しているスレッド数を、以下「描画スレッド数」という。変数qは、アイドル状態の圧縮コア15の数を示す。変数qの初期値は、圧縮コア15の数である。なお、アイドル状態の圧縮コア15の数を、以下「空きコア数」という。変数rは、圧縮待ちキューの数(以下「圧縮待ち数」という。)を示す。変数rの初期値は、0である。なお、圧縮待ちキューは、圧縮処理を待つ印刷用データのリストである。したがって、圧縮待ち数は、圧縮処理を待つ印刷用データの数を示す。
【0012】
さらに、RAM13などは、それぞれの圧縮コア15がアイドル状態であるかビジー状態であるかを示す圧縮コア情報を記憶する。なお、アイドル状態の圧縮コア15は、圧縮処理を行っていないために空いている。そして、ビジー状態の圧縮コア15は、圧縮処理を行っているために空いていない。圧縮コア情報は、圧縮コア15のそれぞれに割り当てられたユニークな識別番号であるコアID(identifier)と、アイドル状態であるかビジー状態であるかを示すパラメーターとを関連付けて記憶する。
【0013】
補助記憶デバイス14は、プロセッサー11を中枢とするコンピューターの補助記憶装置に相当する。補助記憶デバイス14は、例えばEEPROM(electric erasable programmable read-only memory)、HDD(hard disk drive)又はSSD(solid state drive)などである。補助記憶デバイス14は、上記のプログラムを記憶する場合がある。また、補助記憶デバイス14は、プロセッサー11が各種の処理を行う上で使用するデータ、プロセッサー11での処理によって生成されたデータ又は各種の設定値などを保存する。なお、画像形成装置10は、補助記憶デバイス14に代えて、あるいは補助記憶デバイス14に加えて、メモリカード又はUSB(Universal Serial Bus)メモリなどの記憶媒体を挿入可能なインターフェースを備えていてもよい。
補助記憶デバイス14は、設定値kも記憶する。設定値kは、例えば画像形成装置10の設計者、管理者又はサービスマンなどによって設定される任意の値である。設定値kの値は、例えば、解析処理にかかる時間、描画処理にかかる時間、圧縮処理にかかる時間、圧縮コア数、プロセッサー11のコア数などに応じて設定される。設定値kの値は、0より大きい数であることが好ましい。設定値kが0であると、圧縮コア15が空いている状態が多くなり、全体の処理速度が遅くなる場合があるためである。設定値を0より大きくすることでこれを軽減することができる。設定値kの値は、より好ましくは1である。設定値kを大きくしすぎると、プロセッサー11の使用率が上がるばかりで全体の処理速度にほとんど変化がなくなるためである。設定値kについては後でさらに説明する。設定値kは、所定の数の一例である。
【0014】
ROM12又は補助記憶デバイス14に記憶されるプログラムは、後述する制御処理に関して記述した制御プログラムを含む。一例として、画像形成装置10は、制御プログラムがROM12又は補助記憶デバイス14に記憶された状態で画像形成装置10の管理者などへと譲渡される。しかしながら、画像形成装置10は、後述する制御処理に関して記述した制御プログラムがROM12又は補助記憶デバイス14に記憶されない状態で当該管理者などに譲渡されても良い。また、画像形成装置10は、別の制御プログラムがROM12又は補助記憶デバイス14に記憶された状態で当該管理者などに譲渡されても良い。そして、後述する制御処理に関して記述した制御プログラムが別途に当該管理者などへと譲渡され、当該管理者又はサービスマンなどによる操作の下にROM12又は補助記憶デバイス14へと書き込まれても良い。このときの制御プログラムの譲渡は、例えば、磁気ディスク、光磁気ディスク、光ディスク又は半導体メモリなどのようなリムーバブルな記憶媒体に記録して、あるいはネットワークを介したダウンロードにより実現できる。
上記の制御プログラムは、プロセッサー11がRIP処理を行うためのRIPプログラムを含む。
【0015】
ROM12又は補助記憶デバイス14は、未印刷の印刷ジョブの一覧であるジョブ一覧を記憶する。印刷ジョブには、印刷対象となる画像又は文書などのデータ(以下「印刷対象データ」という。)が含まれる。
【0016】
プロセッサー11は、RIPプログラムを実行することで、RIP111として動作する。
RIP111は、PDLで記述されたデータを印刷用データに変換するRIP処理を行う。RIP111は、解析部112及び描画処理部113を含む。
【0017】
解析部112は、PDLで記述された複数ページの印刷対象データを、ページごとのデータに分解する処理など含む解析処理を行う。印刷対象データは、解析部112によって解析処理が行われることで、中間データに変換される。中間データは、以下に示す描画処理を行うことができるようなデータである。なお、解析処理は、シーケンシャル処理である。これは、PDLで記述されたデータは、要素の記述順と見た目の順序とが一致しているとは限らず、また、複数ページに渡るような要素もあり、並行処理することが難しいためである。1ページは、1印刷単位の一例である。
描画処理部113は、中間データを、印刷用データに変換する描画処理を行う。印刷用データは、1つの印刷画素ごとにどのような色で印刷するかを示す情報などを含む。1つの描画処理部113が1回の描画処理で変換する中間データは、1印刷単位の印刷対象データの一例である。
【0018】
圧縮コア15は、例えば、RIP処理が終わった印刷用データに対してデータ圧縮を行うハードウェアアクセラレーターである。なお、
図1には2つの圧縮コア15が示されているが、圧縮コア15の数は2個に限定しない。すなわち、圧縮コア15の数は、1個であっても良いし、3個以上であっても良い。それぞれの圧縮コア15は、自身に割り当てられたコアIDを記憶している。圧縮コア15は、圧縮部の一例である。
【0019】
画像形成部16は、紙等のシート状の記録媒体などに対してインクなどを用いて画像などを形成することで印刷を行う。なお、画像形成部16は、印刷用データなどに基づいて印刷を行う。画像形成部16は、例えば、レーザープリンター、インクジェットプリンター又はその他のプリンターを備える。
【0020】
バス17は、コントロールバス、アドレスバス及びデータバスなどを含み、画像形成装置10の各部で授受される信号を伝送する。
【0021】
以下、実施形態に係る画像形成装置10の動作を
図2~
図8に基づいて説明する。なお、以下の動作説明における処理の内容は一例であって、同様な結果を得ることが可能な様々な処理を適宜に利用できる。
図2及び
図3は、画像形成装置10のプロセッサー11による制御処理のフローチャートである。プロセッサー11は、ROM12又は補助記憶デバイス14などに記憶された制御プログラムに基づいてこの制御処理を実行する。プロセッサー11は、
図2及ぶ
図3の制御処理を実行することで、RIP111として動作する。プロセッサー11は、
図2の制御処理を実行することで、解析部112として動作する。プロセッサー11は、
図3の制御処理を実行することで、描画処理部113として動作する。あるいは、プロセッサー11は、
図3中に示す描画処理を実行することで、描画処理部113として動作する。なお、プロセッサー11は、
図3の制御処理又は
図3中に示す描画処理を複数並列して実行することで、複数の描画処理部113として動作する。
図5は、画像形成装置10の圧縮コア15によるハードウェア処理のフローチャートである。なお、プロセッサー11は、
図3に示す制御処理を開始するとき、変数n及び変数F1をRAM13などに割り当てる。変数nは、印刷対象データの何ページ目を対象に解析処理を行うかを示す。変数F1は、描画監視処理を実行中であることを示すフラグである。変数F1の初期値は、Falseである。また、プロセッサー11は、
図4に示す制御処理を開始するとき、変数F2をRAM13などに割り当てる。変数F2は、圧縮監視処理を実行中であることを示すフラグである。変数F2の初期値は、Falseである。
なお、特に説明が無い限り、プロセッサー11及び圧縮コア15は、Act(n)(nは、自然数。)の処理の後、Act(n+1)へと進むものとする。
【0022】
プロセッサー11、RIP処理を行っていない印刷対象データがあるならば、
図2に示す制御処理を開始する。印刷対象データは、例えば、印刷ジョブに含まれる。
図2に示す制御処理は、解析処理を含む。解析処理は、Act1~Act12及びAct14を含む。
【0023】
図2のAct1において画像形成装置10のプロセッサー11は、変数nの値を1にする。
Act2においてプロセッサー11は、印刷対象データのnページ目を中間データに変換する。
【0024】
Act3においてプロセッサー11は、描画監視処理を実行中であるか否かを判定する。すなわち、プロセッサー11は、例えば、変数F1の値がTrueであるか否かを判定する。プロセッサー11は、描画監視処理を実行中でないならば、Act3においてNoと判定してAct4へと進む。
【0025】
Act4においてプロセッサー11は、空きコア数を取得する。すなわち、プロセッサー11は、RAM13などから変数qの値を取得する。
Act5においてプロセッサー11は、描画スレッド数を取得する。すなわち、プロセッサー11は、RAM13などから変数pの値を取得する。
【0026】
Act6においてプロセッサー11は、(空きコア数q+設定値k)>(準備中データ数)を満たすか否かを判定する。なお、準備中データ数は、圧縮処理を行う準備をしているデータの数である。すなわち、例えば、(準備中データ数)=(描画スレッド数p)である。プロセッサー11は、(空きコア数q+設定値k)>(準備中データ数)を満たすならば、Act6においてYesと判定してAct7へと進む。
【0027】
Act7においてプロセッサー11は、描画処理を開始することを示すために、変数pの値を1増加させる。
【0028】
Act8においてプロセッサー11は、nページ目の中間データに対する描画処理を開始させる。すなわち、プロセッサー11は、
図3に示す制御処理を開始させる。このとき、プロセッサー11は、例えば、制御処理に対してnページ目の中間データを渡す。なお、プロセッサー11は、
図3に示す制御処理を、
図2に示す制御処理とは別スレッドで実行することで、
図2に示す制御処理と並行又は並列して処理する。好ましくは、プロセッサー11は、並列処理する。また、プロセッサー11は、他に描画処理を実行中である場合、
図3に示す制御処理を、既に実行中の描画処理とは別スレッドで実行することで、既に実行中の描画処理と並行又は並列して処理する。好ましくは、プロセッサー11は、並列処理する。以上より、プロセッサー11は、描画処理を最大で(圧縮コア15の数+設定値k)スレッド並行又は並列して処理する場合がある。プロセッサー11は、
図2のAct8の処理の後、Act9へと進む。
【0029】
Act9においてプロセッサー11は、印刷対象データの全ページについて解析処理を終えたか否かを判定する。すなわち、プロセッサー11は、例えば、印刷対象データのページ数がnより大きいか否かを判定する。プロセッサー11は、印刷対象データのページ数がnより大きいならば、Act9においてYesと判定してAct10へと進む。
【0030】
Act10においてプロセッサー11は、解析処理の対象を次ページに変更するために、変数nの値を1増加させる。プロセッサー11は、Act10の処理の後、Act1へと戻る。対して、プロセッサー11は、印刷対象データのページ数がnより大きくないならば、Act9においてNoと判定して解析処理を終了する。かくして、プロセッサー11は、nの値が印刷対象データのページ数になるまでAct1~Act10を繰り返す。これにより、プロセッサー11は、印刷対象データの全ページについて解析処理を行う。
【0031】
なお、プロセッサー11は、(空きコア数+k)>(準備中データ数)を満たさないならば、Act6においてNoと判定してAct11へと進む。
Act11においてプロセッサー11は、描画監視処理を実行中であることを示すために、変数F1の値をTrueにする。
【0032】
Act12においてプロセッサー11は、nページ目の中間データを描画待ちキューに追加する。描画待ちキューは、描画処理を待つ中間データのリストである。プロセッサー11は、Act12の処理の後、新たなスレッドを1つ開始する。そして、プロセッサー11は、既存のスレッドにおいてAct9へと進む。さらに、プロセッサー11は、新たなスレッドにおいてAct13に示す描画監視処理を開始する。Act13の処理は、Act131~Act137の処理を含む。
【0033】
Act131においてプロセッサー11は、Act4と同様にして空きコア数を取得する。
Act132においてプロセッサー11は、Act5と同様にして描画スレッド数を取得する。
【0034】
Act133においてプロセッサー11は、Act6と同様に、(空きコア数q+設定値k)>(準備中データ数)を満たすか否かを判定する。プロセッサー11は、(空きコア数q+設定値k)>(準備中データ数)を満たさないならば、Act133においてNoと判定してAct131へと戻る。対して、プロセッサー11は、(空きコア数q+設定値k)>(準備中データ数)を満たすならば、Act133においてYesと判定してAct134へと進む。
【0035】
Act134においてプロセッサー11は、描画処理を開始することを示すために、変数pの値を1増加させる。
Act135においてプロセッサー11は、描画待ちキューに含まれる中間データの中から最初に描画待ちキューに追加された中間データを選択する。そして、プロセッサー11は、Act8と同様にして、当該中間データに対する描画処理を開始させる。さらに、プロセッサー11は、当該中間データを描画待ちキューから削除する。
【0036】
Act136においてプロセッサー11は、描画処理待ちの中間データがあるか否かを判定する。すなわち、プロセッサー11は、描画待ちキューに中間データがあるか否かを判定する。プロセッサー11は、描画処理待ちの中間データがあるならば、Act23においてYesと判定してAct131へと戻る。対して、プロセッサー11は、描画処理待ちの中間データがないならば、Act136においてNoと判定してAct137へと進む。
【0037】
Act137においてプロセッサー11は、描画監視処理を実行中でないことを示すために、変数F1の値をFalseにする。プロセッサー11は、Act137の処理の後、描画監視処理を終了する。そして、プロセッサー11は、描画監視処理を行っていたスレッドを終了する。
【0038】
なお、プロセッサー11は、Act3の処理時に描画監視処理を実行中であるならば、Act3においてYesと判定してAct14へと進む。
Act14においてプロセッサー11は、描画待ちキューにnページ目の中間データを追加する。プロセッサー11は、Act14の処理の後、Act9へと進む。
【0039】
次に、
図3に示す制御処理について説明する。
図3に示す制御処理は、描画処理を含む。描画処理は、Act31~Act40及びAct42を含む。
図3のAct31においてプロセッサー11は、対象とする中間データから印刷用データを生成する。対象とする中間データは、例えば、解析処理又は描画監視処理から渡されたものである。
【0040】
Act32においてプロセッサー11は、圧縮監視処理を実行中であるか否かを判定する。すなわち、プロセッサー11は、例えば、変数F2の値がTrueであるか否かを判定する。プロセッサー11は、圧縮監視処理を実行中でないならば、Act32においてNoと判定してAct33へと進む。
【0041】
Act33においてプロセッサー11は、RAM13などから圧縮コア情報を取得する。
Act34においてプロセッサー11は、Act33で取得した圧縮コア情報を参照して、アイドル状態の圧縮コア15があるか否かを判定する。あるいは、プロセッサー11は、変数qの値が0より大きいか否かを判定しても良い。プロセッサー11は、アイドル状態の圧縮コア15があるならば、Act34においてYesと判定してAct35へと進む。
【0042】
Act35においてプロセッサー11は、アイドル状態の圧縮コア15の数が減少することを示すために、変数qの値を1減少させる。
Act36においてプロセッサー11は、アイドル状態の圧縮コア15に対して、圧縮処理を行うように求める圧縮リクエスト送信する。当該圧縮リクエストは、Act31で変換した印刷用データを含む。
【0043】
一方、
図4のAct51において圧縮コア15は、圧縮リクエストが送信されてくるのを待ち受けている。圧縮コア15は、圧縮リクエストを受信したならば、Act51においてYesと判定してAct52へと進む。
【0044】
Act52において圧縮コア15は、当該圧縮コア15がビジー状態となったことを示すために第1のコア通知をプロセッサー11に送信する。第1のコア通知は、第1のコア通知の送信元である圧縮コア15のコアIDを含む。第1のコア通知を受信したプロセッサー11は、圧縮コア情報を更新して、当該第1のコア通知に含まれるコアIDに関連付けられたパラメーターを、ビジー状態を示すように変更する。
【0045】
Act53において圧縮コア15は、Act51で受信した圧縮リクエストに含まれる印刷用データに対してデータ圧縮を行う。当該データ圧縮により生成されたデータを、以下「圧縮データ」というものとする。
【0046】
Act54において圧縮コア15は、Act53で生成した圧縮データを補助記憶デバイス14に送信する。圧縮データを受信した補助記憶デバイス14は、当該圧縮データを記憶する。
【0047】
Act55において圧縮コア15は、当該圧縮コア15がアイドル状態となったことを示すために第2のコア通知をプロセッサー11に送信する。第2のコア通知は、第2のコア通知の送信元である圧縮コア15のコアIDを含む。第2のコア通知を受信したプロセッサー11は、圧縮コア情報を更新して、当該第2のコア通知に含まれるコアIDに関連付けられたパラメーターを、アイドル状態を示すように変更する。また、プロセッサー11は、アイドル状態の圧縮コア15の数が増加したことを示すために、変数qの値を1増加させる。
【0048】
一方、プロセッサー11は、
図3のAct36の処理の後、Act37へと進む。
Act37においてプロセッサー11は、描画処理を終えたことを示すために、変数pの値を1減少させる。プロセッサー11は、Act37の処理の後、描画処理を終了する。そして、プロセッサー11は、当該描画処理を行っていたスレッドを終了する。
【0049】
なお、プロセッサー11は、アイドル状態の圧縮コア15がないならば、Act34においてNoと判定してAct38へと進む。
Act38においてプロセッサー11は、圧縮監視処理を実行中であることを示すために、変数F2の値をTrueにする。
【0050】
Act39においてプロセッサー11は、圧縮待ち数が増加したことを示すために、変数rの値を1増加させる。
Act40においてプロセッサー11は、Act31で変換した印刷用データを圧縮待ちキューに追加する。プロセッサー11は、Act40の処理の後、新たなスレッドを1つ開始する。そして、プロセッサー11は、既存のスレッドにおいてAct37へと進む。さらに、プロセッサー11は、新たなスレッドにおいてAct41に示す描画監視処理を開始する。Act41の処理は、Act411~Act416の処理を含む。
【0051】
Act411においてプロセッサー11は、Act33と同様にして圧縮コア情報を取得する。
Act412においてプロセッサー11は、Act411で取得した圧縮コア情報を参照して、アイドル状態の圧縮コア15があるか否かを判定する。あるいは、プロセッサー11は、変数qの値が0より大きいか否かを判定しても良い。プロセッサー11は、アイドル状態の圧縮コア15がないならば、Act412においてNoと判定してAct411へと戻る。対して、プロセッサー11は、アイドル状態の圧縮コア15があるならば、Act412においてYesと判定してAct413へと進む。
【0052】
Act413においてプロセッサー11は、アイドル状態の圧縮コア15の数が減少することを示すために、変数qの値を1減少させる。さらに、プロセッサー11は、圧縮待ち数が減少することを示すために、変数rの値を1減少させる。
【0053】
Act414においてプロセッサー11は、アイドル状態の圧縮コア15に対して、圧縮処理を行うように求める圧縮リクエストを送信する。当該圧縮リクエストは、圧縮待ちキューに含まれる印刷用データの中で最初に圧縮待ちキューに追加された印刷用データを含む。さらに、プロセッサー11は、当該印刷用データを圧縮待ちキューから削除する。
【0054】
Act415においてプロセッサー11は、圧縮処理待ちの印刷用データがあるか否かを判定する。すなわち、プロセッサー11は、圧縮待ちキューに印刷用データがあるか否かを判定する。プロセッサー11は、圧縮処理待ちの印刷用データがあるならば、Act415においてYesと判定してAct411へと戻る。対して、プロセッサー11は、圧縮処理待ちの印刷用データがないならば、Act415においてNoと判定してAct416へと進む。
【0055】
Act416においてプロセッサー11は、圧縮監視処理を実行中でないことを示すために、変数F2の値をFalseにする。プロセッサー11は、Act416の処理の後、圧縮監視処理を終了する。そして、プロセッサー11は、圧縮監視処理を行っていたスレッドを終了する。
【0056】
なお、プロセッサー11は、Act32の処理時に圧縮監視処理を実行中であるならば、Act32においてYesと判定してAct42へと進む。
Act42においてプロセッサー11は、Act31で変換した印刷用データを圧縮待ちキューに追加する。プロセッサー11は、Act42の処理の後、Act37へと進む。
【0057】
プロセッサー11は、印刷ジョブに含まれる印刷用データを圧縮データに変換し終えたならば、例えば、当該印刷ジョブに基づき、当該圧縮データを印刷する。すなわち、プロセッサー11は、補助記憶デバイス14に記憶された当該圧縮データを印刷するよう画像形成部16を制御する。
【0058】
実施形態の画像形成装置10は、プロセッサー11を効率的に使用可能である。以下に理由を述べる。
従来の画像形成装置は、例えば、
図5に示すようにRIP処理及び圧縮処理を行う。
図5は、従来のRIP処理と圧縮処理の処理タイミングの一例を示す図である。
図5の例では、プロセッサーは、解析処理をスレッド1で行い、描画処理をスレッド2で行う。また、
図5の例では、画像形成装置は、1個の圧縮コアを備える。
解析部は、まず、1ページ目を対象とする解析処理を行う。そして、解析部は、1ページ目を対象とする解析処理が完了すると、描画処理部に対して1ページ目を対象とする描画処理の開始を要求する。そして、解析部は引き続き2ページ目を対象とする解析処理を開始する。
一方、描画処理部は、1ページ目を対象とする描画処理の開始の要求に応じて、1ページ目を対象とする描画処理を開始する。そして、描画処理部は、1ページ目を対象とする描画処理が完了すると、画像データを圧縮するよう圧縮コアに対して要求する。
なお、一般的に、描画処理は、データ解析よりも時間がかかる。したがって、描画処理部がスレッド2で1ページ目を対象とする描画処理を行っている間に、解析部は、2ページ目を対象とする解析処理を完了することになる。さらに、解析部は、2ページ目を対象とする描画処理の開始を描画処理部に要求する。しかしながら、このとき、描画処理部は、1ページ目を対象とする描画処理の最中である。このため、2ページ目を対象とする描画処理をすぐに開始することはできない。同様に、3ページ目以降でも描画処理をすぐに開始することができず、処理待ちが発生する。そして、
図5に示すように、後のページになるほど描画処理待ちの時間も長くなる場合がある。また、
図5の例では圧縮処理よりも描画処理の方が時間がかかる。したがって、圧縮コアは、圧縮処理を行った後、描画処理部が次のページの描画処理を終えるまで使用されていない状態となる。
【0059】
次に、複数の描画処理をマルチスレッドにより並列処理する例を
図6に示す。
図6は、RIP処理と圧縮処理の処理タイミングの一例を示す図である。
図6の例では、
図5の例とは異なり、画像形成装置は、描画処理をスレッド2とスレッド3の2つのスレッドでそれぞれ行うことが可能である。
図6の例では、解析部は、1ページ分の解析処理を完了するごとに、スレッド2とスレッド3のうちの空いている方に対して描画処理の開始を要求する。これにより、複数のスレッドでそれぞれ描画処理を行うことで、
図5の例に比べて描画処理待ちが発生し難くなる。
図6の例では、描画処理待ちは発生していない。また、圧縮コアは、圧縮処理を行った後、
図5に示す例のように使用されていない状態となっていない。しかしながら、
図6の例では、描画処理部が2ページ目を対象とする描画処理を完了したときに、圧縮コアは、まだ1ページ目の圧縮処理を完了していない。このため、圧縮コアは、描画処理部が2ページ目を対象とする描画処理を完了してもすぐには2ページ目の圧縮処理を行うことができない。同様に、3ページ目以降でも、圧縮コアは、描画処理完了後すぐには圧縮処理を行うことができない。そして、
図6に示すように、後のページになるほど圧縮処理待ちの時間が長くなる場合がある。このように、プロセッサーがRIP処理を早く進めても、圧縮コアが空いていないことによる圧縮処理待ちが発生すると、全体の処理速度が向上しない。そればかりか、プロセッサーの使用率が不必要に上がることとなってしまう。
【0060】
実施形態の画像形成装置10におけるRIP処理と圧縮処理の処理タイミングの一例を示す
図7に示す。
図7の例では、画像形成装置10は、
図5及び
図6の例と同様に1個の圧縮コア15を備える。なお、
図7の例では、設定値k=1である。
図7の例では、3ページ目の解析処理が完了したときには、1ページ目の圧縮処理が圧縮コア15によって実行中であり、2ページ目を対象とする描画処理が描画処理部によって実行中である。そして、圧縮コア15は、1ページ目の圧縮処理を完了した後は2ページ目の圧縮処理を開始する。このため、この時点で3ページ目を対象とする描画処理を行っても全体の処理速度向上には寄与せず、プロセッサーの使用率を上げるだけであると考えられる。そこで、実施形態の画像形成装置10は、1ページ目の圧縮処理が完了するまでは、3ページ目を対象とする描画処理を開始しない。このようにすることで、
図7の例では、プロセッサーの使用率が
図6の例よりも低くなる。しかしながら、
図7の例における全体の処理速度は、
図6と同等である。したがって、実施形態の画像形成装置10は、プロセッサー11を効率的に使用しているといえる。
【0061】
また、実施形態の画像形成装置10における別の一例を
図8に示す。
図8は、実施形態のRIP処理と圧縮処理の処理タイミングの一例を示す図である。
図8の例では、
図5~
図7の例と異なり、画像形成装置10は、2つの圧縮コア15を備える。
図8の例でも、
図7の例と同様に3ページ目の解析処理が完了したときには、1ページ目の圧縮処理が1番目の圧縮コア15によって実行中であり、2ページ目を対象とする描画処理が描画処理部によって実行中である。しかしながら、
図8の例では、圧縮コア15が2つあるため、1番目の圧縮コア15が1ページ目の圧縮処理を完了するのを待たずに、2つ目の圧縮コア15を用いて2ページ目の圧縮処理を開始することが可能である。このため、
図8の例では、
図7の例と異なり、3ページ目を対象とする描画処理を開始することで、全体の処理速度の向上に寄与することが可能である。したがって、
図8の例では、
図7の例とは異なり、描画処理部は、3ページ目を対象とする描画処理をすぐに開始する。また、
図8の例では、圧縮コア15が複数あるため、圧縮処理待ちが発生していない。したがって、実施形態の画像形成装置10は、プロセッサー11を効率的に使用しているといえる。
【0062】
以上のように、実施形態の画像形成装置10は、圧縮コア15の数に応じて描画処理の開始タイミングが変わる。すなわち、実施形態の画像形成装置10は、圧縮コア15の数に応じてプロセッサー11を効率的に使用することができるといえる。
【0063】
また、実施形態の画像形成装置10は、準備中データ数が、アイドル状態の圧縮コア15の数よりもk以上多い場合、新たに描画処理を開始しない。準備中データ数がアイドル状態の圧縮コア15の数よりもk以上多い状態では、準備中データがこれより少ない場合に描画処理を行う場合に比べて全体の処理速度向上に寄与しないと考えられる。したがって、このような状態のときに描画処理を開始しないことで、実施形態の画像形成装置10は、プロセッサー11の使用率が不必要に上がることを防ぐことができる。
【0064】
上記の実施形態は以下のような変形も可能である。
上記の実施形態では、(準備中データ数)=(描画スレッド数p)である。しかしながら(準備中データ数)=(描画スレッド数p+圧縮待ち数r)であっても良い。準備中データ数が圧縮待ち数を含むことで、圧縮処理に時間がかかる場合に圧縮待ち数が増えることを防ぐことができる。また、圧縮待ち数に応じて描画スレッド数を減らすことになるので、全体の処理速度向上に寄与しないようなプロセッサー11の使用率の増大を防ぐことができる場合がある。
【0065】
圧縮コア15は、Act53の処理の後、圧縮データを生成したことをプロセッサー11に通知しても良い。そして、圧縮コア15は、プロセッサー11の制御のもと、当該圧縮データを補助記憶デバイスに送信しても良い。
【0066】
上記の実施形態では、プロセッサー11は、解析処理と描画監視処理を別スレッドで行うプログラムを実行する。しかしながら、プロセッサー11は、このプログラムに代えて、解析処理と描画監視処理とを同一のスレッドで処理するようなプログラムを実行しても良い。
上記の実施形態では、プロセッサー11は、描画処理と圧縮監視処理を別スレッドで行うプログラムを実行する。しかしながら、プロセッサー11は、このプログラムに代えて、描画処理と圧縮監視処理とを同一のスレッドで処理するようなプログラムを実行しても良い。
【0067】
プロセッサー11は、上記の実施形態においてマルチスレッドで行っている処理をマルチプロセスで行っても良い。
【0068】
印刷対象データがPDLでない場合であっても、本実施形態を適応することができる。すなわち、PDLでない印刷対象データを印刷用データに変換する処理と、当該印刷用データを圧縮する圧縮処理とに対して本実施形態を適応することができる。
【0069】
画像形成装置10は、複数のページを1枚の記録媒体に印刷するなどのために、複数のページを含む記録媒体1枚分のデータに対して描画処理を行っても良い。この場合、記録媒体1枚分のデータが1印刷単位の一例である。
画像形成装置10は、1ページを複数枚の記録媒体に分割して印刷するなどのために、1ページを複数に分割したうちの記録媒体1枚分のデータに対して描画処理を行っても良い。この場合、記録媒体1枚分のデータが1印刷単位の一例である。
【0070】
本実施形態の画像形成装置は、圧縮コア15を備えていなくても良い。そして、プロセッサー11が、圧縮コア15に代えて、圧縮処理と同様の処理を、解析処理及び描画処理とは別スレッドで実行するなどして並行又は並列して処理しても良い。この場合、圧縮処理と同様の処理を行うことでプロセッサー11は、圧縮部として動作する。
本実施形態の画像形成装置は、プロセッサーが圧縮コアを内蔵していても良い。
本実施形態の画像形成装置は、ハードウェアマルチスレッディングにより複数のスレッドを並列処理しても良い。
【0071】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
以下に、本願出願の当初の特許請求の範囲に記載された発明を付記する。
[1]複数の印刷単位に分割された印刷対象データを印刷用データに変換する描画処理を行う複数の描画処理部と、前記描画処理によって変換された前記印刷用データに対してデータ圧縮を行う圧縮部と、を備え、前記描画処理部は、アイドル状態の前記圧縮部の数に所定の数を足した数が、前記印刷用データに変換中の前記印刷対象データの印刷単位数よりも大きい場合、次の前記描画処理を開始する、画像処理装置。
[2]前記圧縮部を複数備え、前記複数の圧縮部によって、複数の前記データ圧縮を並列処理する、付記[1]に記載の画像処理装置。
[3]前記描画処理部は、アイドル状態の前記圧縮部の数に前記所定の数を足した数が、前記印刷用データに変換中の前記印刷対象データの印刷単位数と圧縮処理を行っていない前記印刷用データの印刷単位数とを足した数よりも大きい場合、新たに前記描画処理を開始する、付記[1]又は[2]に記載の画像処理装置。
[4]印刷対象データを印刷用データに変換する描画処理を複数並行して行い、前記描画処理によって変換された前記印刷用データをデータ圧縮し、圧縮処理準備中のデータの数からアイドル状態の圧縮部の数を引いた数が所定の数よりも小さい場合に、新たに描画処理を開始する、画像処理方法。
[5]印刷用データに対してデータ圧縮を行う圧縮部を備えた装置が備えるコンピューターを、複数の印刷単位に分割された印刷対象データを前記印刷用データに変換する描画処理を行う複数の描画処理部として機能させ、前記描画処理部は、アイドル状態の前記圧縮部の数に所定の数を足した数が、前記印刷用データに変換中の前記印刷対象データの印刷単位数よりも大きい場合、次の前記描画処理を開始する、プログラム。
【符号の説明】
【0072】
10……画像形成装置、11……プロセッサー、12……ROM、13……RAM、14……補助記憶デバイス、15……圧縮コア、16……画像形成部、17……バス、111……RIP、112……解析部、113……描画処理部