(57)【要約】【課題】プロセッサーを効率的に使用可能な画像処理装置、画像処理方法及びプログラムを提供すること。【解決手段】実施形態の画像処理装置は、複数の描画処理部及び圧縮部を備える。描画処理部は、複数の印刷単位に分割された印刷対象データを印刷用データに変換する描画処理を行う。圧縮部は、前記描画処理によって変換された前記印刷用データに対してデータ圧縮を行う。描画処理部は、アイドル状態の前記圧縮部の数に所定の数を足した数が、前記印刷用データに変換中の前記印刷対象データの印刷単位数よりも大きい場合、次の前記描画処理を開始する。【選択図】図８
2019014135.tif 000002
【特許請求の範囲】
【請求項１】
複数の印刷単位に分割された印刷対象データを印刷用データに変換する描画処理を行う複数の描画処理部と、
前記描画処理によって変換された前記印刷用データに対してデータ圧縮を行う圧縮部と、を備え、
前記描画処理部は、アイドル状態の前記圧縮部の数に所定の数を足した数が、前記印刷用データに変換中の前記印刷対象データの印刷単位数よりも大きい場合、次の前記描画処理を開始する、画像処理装置。
【請求項２】
前記圧縮部を複数備え、
前記複数の圧縮部によって、複数の前記データ圧縮を並列処理する、
請求項１に記載の画像処理装置。
【請求項３】
前記描画処理部は、アイドル状態の前記圧縮部の数に前記所定の数を足した数が、前記印刷用データに変換中の前記印刷対象データの印刷単位数と圧縮処理を行っていない前記印刷用データの印刷単位数とを足した数よりも大きい場合、新たに前記描画処理を開始する、請求項１又は請求項２に記載の画像処理装置。
【請求項４】
印刷対象データを印刷用データに変換する描画処理を複数並行して行い、
前記描画処理によって変換された前記印刷用データをデータ圧縮し、
圧縮処理準備中のデータの数からアイドル状態の圧縮部の数を引いた数が所定の数よりも小さい場合に、新たに描画処理を開始する、画像処理方法。
【請求項５】
印刷用データに対してデータ圧縮を行う圧縮部を備えた装置が備えるコンピューターを、
複数の印刷単位に分割された印刷対象データを前記印刷用データに変換する描画処理を行う複数の描画処理部として機能させ、
前記描画処理部は、アイドル状態の前記圧縮部の数に所定の数を足した数が、前記印刷用データに変換中の前記印刷対象データの印刷単位数よりも大きい場合、次の前記描画処理を開始する、プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、画像処理装置、画像処理方法及びプログラムに関する。
【背景技術】
【０００２】
ＭＦＰ（multifunction peripheral）などの画像形成装置は、ＰｏｓｔＳｃｒｉｐｔ又はＰＤＦ（Portable Document Format）などのページ記述言語（ＰＤＬ（page description language））で記述されたデータを印刷用のラスターデータに変換するＲＩＰ（raster image processor）処理を行う場合がある。ＲＩＰ処理は、解析処理と描画処理とに分けることができる。解析処理は、複数ページのデータを、複数の単一ページの中間データに分ける処理などを含む。そして、描画処理は、解析処理によって処理された中間データを印刷用のラスターデータに変換する処理などを含む。なお、印刷用のラスターデータを、以下「印刷用データ」というものとする。
画像形成装置は、ＲＩＰ処理によって変換されたデータを、メモリ又はＨＤＤ（hard disk drive）などの記憶装置に保存する場合がある。しかしながら、印刷対象のデータが高解像度のカラー画像である場合などにおいては、ＭＦＰが備える記憶装置に保存するには、大きすぎる場合がある。このため、画像に圧縮処理を施してから保存することが行われている。圧縮処理は、ソフトウェアで行うと時間がかかるため、圧縮コアなどと呼ばれる専用のハードウェアが用いられる場合がある。
また、画像形成装置は、マルチコアＣＰＵ（central processing unit）、又はＧＰＵ（graphics processing unit）を内蔵したＣＰＵなどの、複数のコアを備えるプロセッサーが採用される場合がある。そして、プロセッサーがＲＩＰとして動作して、解析処理と描画処理とをマルチスレッドなどにより並列して処理するなどして、ＲＩＰ処理の速度を向上させることが行われている。しかしながら、このようにプロセッサーによるＲＩＰの処理速度が向上しても、圧縮コアによる圧縮処理の速度がボトルネックとなる場合がある。すなわち、描画処理を並列処理などによって次々と進めても、圧縮コアが空いていなければ、ＲＩＰ処理が終わったデータに対して圧縮処理を開始するまでに処理待ちが発生する。この場合、プロセッサーの使用率が上がるだけでＲＩＰ処理と圧縮処理とを含む全体の処理についての速度はほとんど変化しないといったことが起こる。また、画像形成装置が備えるプロセッサーは、ＲＩＰ処理以外にも様々な処理を行っているため、ＲＩＰ処理によって使用率が上がりすぎると他の処理が重くなってしまう場合がある。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００４−３８５２７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本発明の実施形態が解決しようとする課題は、プロセッサーを効率的に使用可能な画像処理装置、画像処理方法及びプログラムを提供することである。
【課題を解決するための手段】
【０００５】
実施形態の画像処理装置は、複数の描画処理部及び圧縮部を備える。描画処理部は、複数の印刷単位に分割された印刷対象データを印刷用データに変換する描画処理を行う。圧縮部は、前記描画処理によって変換された前記印刷用データに対してデータ圧縮を行う。描画処理部は、アイドル状態の前記圧縮部の数に所定の数を足した数が、前記印刷用データに変換中の前記印刷対象データの印刷単位数よりも大きい場合、次の前記描画処理を開始する。
【図面の簡単な説明】
【０００６】
【図１】実施形態に係る画像形成装置の要部回路構成を示すブロック図。
【図２】図１中のプロセッサーによる制御処理を示すフローチャート。
【図３】図１中のプロセッサーによる制御処理を示すフローチャート。
【図４】図１中の圧縮コアによる処理を示すフローチャート。
【図５】従来のＲＩＰ処理と圧縮処理の処理タイミングの一例を示す図。
【図６】ＲＩＰ処理と圧縮処理の処理タイミングの一例を示す図。
【図７】実施形態のＲＩＰ処理と圧縮処理の処理タイミングの一例を示す図。
【図８】実施形態のＲＩＰ処理と圧縮処理の処理タイミングの一例を示す図。
【発明を実施するための形態】
【０００７】
以下、実施形態に係る画像形成装置について図面を用いて説明する。
図１は、実施形態に係る画像形成装置１０の要部回路構成を示すブロック図である。画像形成装置１０は、例えば、印刷、スキャン、コピー及びファクシミリなどの機能を備えるＭＦＰ又はコピー機である。あるいは、画像形成装置１０は、印刷機能を備えるプリンターなどである。画像形成装置１０は、プロセッサー１１、ＲＯＭ（read-only memory）１２、ＲＡＭ（random-access memory）１３、補助記憶デバイス１４、圧縮コア１５、画像形成部１６及びバス１７を含む。画像形成装置１０は、画像処理装置の一例である。
【０００８】
プロセッサー１１は、画像形成装置１０の動作に必要な演算及び制御などの処理を行うコンピューターの中枢部分に相当する。プロセッサー１１は、ＲＯＭ１２又は補助記憶デバイス１４などに記憶されたシステムソフトウェア、アプリケーションソフトウェア又はファームウェアなどのプログラムに基づいて、画像形成装置１０の各種の機能を実現するべく各部を制御する。プロセッサー１１は、例えば、ＣＰＵ（central processing unit）、ＭＰＵ（micro processing unit）、ＳｏＣ（system on a chip）、ＤＳＰ（digital signal processor）又はＧＰＵ（graphics processing unit）などである。あるいは、プロセッサー１１は、これらの組み合わせである。プロセッサー１１は、好ましくは、マルチコアＣＰＵ、又はＧＰＵとＣＰＵとを備えるプロセッサーである。複数のコアを備えるプロセッサーは、マルチスレッド又はマルチプロセスなどの並行処理を並列処理することで高速に処理することが可能なためである。なお、並行処理とは、複数のスレッド又はプロセスなどを、時分割などによって切り替えながら同時的に処理すること、あるいは並列処理することなどである。また、並列処理とは、複数のスレッド又はプロセスなどを、複数のコアで同時に処理することなどである。
【０００９】
ＲＯＭ１２は、プロセッサー１１を中枢とするコンピューターの主記憶装置に相当する。ＲＯＭ１２は、専らデータの読み出しに用いられる不揮発性メモリである。ＲＯＭ１２は、上記のプログラムを記憶する。また、ＲＯＭ１２は、プロセッサー１１が各種の処理を行う上で使用するデータ又は各種の設定値などを記憶する。
【００１０】
ＲＡＭ１３は、プロセッサー１１を中枢とするコンピューターの主記憶装置に相当する。ＲＡＭ１３は、データの読み書きに用いられるメモリである。ＲＡＭ１３は、プロセッサー１１が各種の処理を行う上で一時的に使用するデータを記憶しておく、いわゆるワークエリアなどとして利用される。
【００１１】
また、ＲＡＭ１３などは、変数ｐ、変数ｑ及び変数ｒを記憶する。変数ｐは、プロセッサー１１が描画処理を何スレッド実行しているかを示す。変数ｐの初期値は、０である。なお、プロセッサー１１が描画処理を実行しているスレッド数を、以下「描画スレッド数」という。変数ｑは、アイドル状態の圧縮コア１５の数を示す。変数ｑの初期値は、圧縮コア１５の数である。なお、アイドル状態の圧縮コア１５の数を、以下「空きコア数」という。変数ｒは、圧縮待ちキューの数（以下「圧縮待ち数」という。）を示す。変数ｒの初期値は、０である。なお、圧縮待ちキューは、圧縮処理を待つ印刷用データのリストである。したがって、圧縮待ち数は、圧縮処理を待つ印刷用データの数を示す。
【００１２】
さらに、ＲＡＭ１３などは、それぞれの圧縮コア１５がアイドル状態であるかビジー状態であるかを示す圧縮コア情報を記憶する。なお、アイドル状態の圧縮コア１５は、圧縮処理を行っていないために空いている。そして、ビジー状態の圧縮コア１５は、圧縮処理を行っているために空いていない。圧縮コア情報は、圧縮コア１５のそれぞれに割り当てられたユニークな識別番号であるコアＩＤ（identifier）と、アイドル状態であるかビジー状態であるかを示すパラメーターとを関連付けて記憶する。
【００１３】
補助記憶デバイス１４は、プロセッサー１１を中枢とするコンピューターの補助記憶装置に相当する。補助記憶デバイス１４は、例えばＥＥＰＲＯＭ（electric erasable programmable read-only memory）、ＨＤＤ（hard disk drive）又はＳＳＤ（solid state drive）などである。補助記憶デバイス１４は、上記のプログラムを記憶する場合がある。また、補助記憶デバイス１４は、プロセッサー１１が各種の処理を行う上で使用するデータ、プロセッサー１１での処理によって生成されたデータ又は各種の設定値などを保存する。なお、画像形成装置１０は、補助記憶デバイス１４に代えて、あるいは補助記憶デバイス１４に加えて、メモリカード又はＵＳＢ（Universal Serial Bus）メモリなどの記憶媒体を挿入可能なインターフェースを備えていてもよい。
補助記憶デバイス１４は、設定値ｋも記憶する。設定値ｋは、例えば画像形成装置１０の設計者、管理者又はサービスマンなどによって設定される任意の値である。設定値ｋの値は、例えば、解析処理にかかる時間、描画処理にかかる時間、圧縮処理にかかる時間、圧縮コア数、プロセッサー１１のコア数などに応じて設定される。設定値ｋの値は、０より大きい数であることが好ましい。設定値ｋが０であると、圧縮コア１５が空いている状態が多くなり、全体の処理速度が遅くなる場合があるためである。設定値を０より大きくすることでこれを軽減することができる。設定値ｋの値は、より好ましくは１である。設定値ｋを大きくしすぎると、プロセッサー１１の使用率が上がるばかりで全体の処理速度にほとんど変化がなくなるためである。設定値ｋについては後でさらに説明する。設定値ｋは、所定の数の一例である。
【００１４】
ＲＯＭ１２又は補助記憶デバイス１４に記憶されるプログラムは、後述する制御処理に関して記述した制御プログラムを含む。一例として、画像形成装置１０は、制御プログラムがＲＯＭ１２又は補助記憶デバイス１４に記憶された状態で画像形成装置１０の管理者などへと譲渡される。しかしながら、画像形成装置１０は、後述する制御処理に関して記述した制御プログラムがＲＯＭ１２又は補助記憶デバイス１４に記憶されない状態で当該管理者などに譲渡されても良い。また、画像形成装置１０は、別の制御プログラムがＲＯＭ１２又は補助記憶デバイス１４に記憶された状態で当該管理者などに譲渡されても良い。そして、後述する制御処理に関して記述した制御プログラムが別途に当該管理者などへと譲渡され、当該管理者又はサービスマンなどによる操作の下にＲＯＭ１２又は補助記憶デバイス１４へと書き込まれても良い。このときの制御プログラムの譲渡は、例えば、磁気ディスク、光磁気ディスク、光ディスク又は半導体メモリなどのようなリムーバブルな記憶媒体に記録して、あるいはネットワークを介したダウンロードにより実現できる。
上記の制御プログラムは、プロセッサー１１がＲＩＰ処理を行うためのＲＩＰプログラムを含む。
【００１５】
ＲＯＭ１２又は補助記憶デバイス１４は、未印刷の印刷ジョブの一覧であるジョブ一覧を記憶する。印刷ジョブには、印刷対象となる画像又は文書などのデータ（以下「印刷対象データ」という。）が含まれる。
【００１６】
プロセッサー１１は、ＲＩＰプログラムを実行することで、ＲＩＰ１１１として動作する。
ＲＩＰ１１１は、ＰＤＬで記述されたデータを印刷用データに変換するＲＩＰ処理を行う。ＲＩＰ１１１は、解析部１１２及び描画処理部１１３を含む。
【００１７】
解析部１１２は、ＰＤＬで記述された複数ページの印刷対象データを、ページごとのデータに分解する処理など含む解析処理を行う。印刷対象データは、解析部１１２によって解析処理が行われることで、中間データに変換される。中間データは、以下に示す描画処理を行うことができるようなデータである。なお、解析処理は、シーケンシャル処理である。これは、ＰＤＬで記述されたデータは、要素の記述順と見た目の順序とが一致しているとは限らず、また、複数ページに渡るような要素もあり、並行処理することが難しいためである。１ページは、１印刷単位の一例である。
描画処理部１１３は、中間データを、印刷用データに変換する描画処理を行う。印刷用データは、１つの印刷画素ごとにどのような色で印刷するかを示す情報などを含む。１つの描画処理部１１３が１回の描画処理で変換する中間データは、１印刷単位の印刷対象データの一例である。
【００１８】
圧縮コア１５は、例えば、ＲＩＰ処理が終わった印刷用データに対してデータ圧縮を行うハードウェアアクセラレーターである。なお、図１には２つの圧縮コア１５が示されているが、圧縮コア１５の数は２個に限定しない。すなわち、圧縮コア１５の数は、１個であっても良いし、３個以上であっても良い。それぞれの圧縮コア１５は、自身に割り当てられたコアＩＤを記憶している。圧縮コア１５は、圧縮部の一例である。
【００１９】
画像形成部１６は、紙等のシート状の記録媒体などに対してインクなどを用いて画像などを形成することで印刷を行う。なお、画像形成部１６は、印刷用データなどに基づいて印刷を行う。画像形成部１６は、例えば、レーザープリンター、インクジェットプリンター又はその他のプリンターを備える。
【００２０】
バス１７は、コントロールバス、アドレスバス及びデータバスなどを含み、画像形成装置１０の各部で授受される信号を伝送する。
【００２１】
以下、実施形態に係る画像形成装置１０の動作を図２〜図８に基づいて説明する。なお、以下の動作説明における処理の内容は一例であって、同様な結果を得ることが可能な様々な処理を適宜に利用できる。図２及び図３は、画像形成装置１０のプロセッサー１１による制御処理のフローチャートである。プロセッサー１１は、ＲＯＭ１２又は補助記憶デバイス１４などに記憶された制御プログラムに基づいてこの制御処理を実行する。プロセッサー１１は、図２及ぶ図３の制御処理を実行することで、ＲＩＰ１１１として動作する。プロセッサー１１は、図２の制御処理を実行することで、解析部１１２として動作する。プロセッサー１１は、図３の制御処理を実行することで、描画処理部１１３として動作する。あるいは、プロセッサー１１は、図３中に示す描画処理を実行することで、描画処理部１１３として動作する。なお、プロセッサー１１は、図３の制御処理又は図３中に示す描画処理を複数並列して実行することで、複数の描画処理部１１３として動作する。図５は、画像形成装置１０の圧縮コア１５によるハードウェア処理のフローチャートである。なお、プロセッサー１１は、図３に示す制御処理を開始するとき、変数ｎ及び変数Ｆ１をＲＡＭ１３などに割り当てる。変数ｎは、印刷対象データの何ページ目を対象に解析処理を行うかを示す。変数Ｆ１は、描画監視処理を実行中であることを示すフラグである。変数Ｆ１の初期値は、Ｆａｌｓｅである。また、プロセッサー１１は、図４に示す制御処理を開始するとき、変数Ｆ２をＲＡＭ１３などに割り当てる。変数Ｆ２は、圧縮監視処理を実行中であることを示すフラグである。変数Ｆ２の初期値は、Ｆａｌｓｅである。
なお、特に説明が無い限り、プロセッサー１１及び圧縮コア１５は、Ａｃｔ（ｎ）（ｎは、自然数。）の処理の後、Ａｃｔ（ｎ＋１）へと進むものとする。
【００２２】
プロセッサー１１、ＲＩＰ処理を行っていない印刷対象データがあるならば、図２に示す制御処理を開始する。印刷対象データは、例えば、印刷ジョブに含まれる。図２に示す制御処理は、解析処理を含む。解析処理は、Ａｃｔ１〜Ａｃｔ１２及びＡｃｔ１４を含む。
【００２３】
図２のＡｃｔ１において画像形成装置１０のプロセッサー１１は、変数ｎの値を１にする。
Ａｃｔ２においてプロセッサー１１は、印刷対象データのｎページ目を中間データに変換する。
【００２４】
Ａｃｔ３においてプロセッサー１１は、描画監視処理を実行中であるか否かを判定する。すなわち、プロセッサー１１は、例えば、変数Ｆ１の値がＴｒｕｅであるか否かを判定する。プロセッサー１１は、描画監視処理を実行中でないならば、Ａｃｔ３においてＮｏと判定してＡｃｔ４へと進む。
【００２５】
Ａｃｔ４においてプロセッサー１１は、空きコア数を取得する。すなわち、プロセッサー１１は、ＲＡＭ１３などから変数ｑの値を取得する。
Ａｃｔ５においてプロセッサー１１は、描画スレッド数を取得する。すなわち、プロセッサー１１は、ＲＡＭ１３などから変数ｐの値を取得する。
【００２６】
Ａｃｔ６においてプロセッサー１１は、（空きコア数ｑ＋設定値ｋ）＞（準備中データ数）を満たすか否かを判定する。なお、準備中データ数は、圧縮処理を行う準備をしているデータの数である。すなわち、例えば、（準備中データ数）＝（描画スレッド数ｐ）である。プロセッサー１１は、（空きコア数ｑ＋設定値ｋ）＞（準備中データ数）を満たすならば、Ａｃｔ６においてＹｅｓと判定してＡｃｔ７へと進む。
【００２７】
Ａｃｔ７においてプロセッサー１１は、描画処理を開始することを示すために、変数ｐの値を１増加させる。
【００２８】
Ａｃｔ８においてプロセッサー１１は、ｎページ目の中間データに対する描画処理を開始させる。すなわち、プロセッサー１１は、図３に示す制御処理を開始させる。このとき、プロセッサー１１は、例えば、制御処理に対してｎページ目の中間データを渡す。なお、プロセッサー１１は、図３に示す制御処理を、図２に示す制御処理とは別スレッドで実行することで、図２に示す制御処理と並行又は並列して処理する。好ましくは、プロセッサー１１は、並列処理する。また、プロセッサー１１は、他に描画処理を実行中である場合、図３に示す制御処理を、既に実行中の描画処理とは別スレッドで実行することで、既に実行中の描画処理と並行又は並列して処理する。好ましくは、プロセッサー１１は、並列処理する。以上より、プロセッサー１１は、描画処理を最大で（圧縮コア１５の数＋設定値ｋ）スレッド並行又は並列して処理する場合がある。プロセッサー１１は、図２のＡｃｔ８の処理の後、Ａｃｔ９へと進む。
【００２９】
Ａｃｔ９においてプロセッサー１１は、印刷対象データの全ページについて解析処理を終えたか否かを判定する。すなわち、プロセッサー１１は、例えば、印刷対象データのページ数がｎより大きいか否かを判定する。プロセッサー１１は、印刷対象データのページ数がｎより大きいならば、Ａｃｔ９においてＹｅｓと判定してＡｃｔ１０へと進む。
【００３０】
Ａｃｔ１０においてプロセッサー１１は、解析処理の対象を次ページに変更するために、変数ｎの値を１増加させる。プロセッサー１１は、Ａｃｔ１０の処理の後、Ａｃｔ１へと戻る。対して、プロセッサー１１は、印刷対象データのページ数がｎより大きくないならば、Ａｃｔ９においてＮｏと判定して解析処理を終了する。かくして、プロセッサー１１は、ｎの値が印刷対象データのページ数になるまでＡｃｔ１〜Ａｃｔ１０を繰り返す。これにより、プロセッサー１１は、印刷対象データの全ページについて解析処理を行う。
【００３１】
なお、プロセッサー１１は、（空きコア数＋ｋ）＞（準備中データ数）を満たさないならば、Ａｃｔ６においてＮｏと判定してＡｃｔ１１へと進む。
Ａｃｔ１１においてプロセッサー１１は、描画監視処理を実行中であることを示すために、変数Ｆ１の値をＴｒｕｅにする。
【００３２】
Ａｃｔ１２においてプロセッサー１１は、ｎページ目の中間データを描画待ちキューに追加する。描画待ちキューは、描画処理を待つ中間データのリストである。プロセッサー１１は、Ａｃｔ１２の処理の後、新たなスレッドを１つ開始する。そして、プロセッサー１１は、既存のスレッドにおいてＡｃｔ９へと進む。さらに、プロセッサー１１は、新たなスレッドにおいてＡｃｔ１３に示す描画監視処理を開始する。Ａｃｔ１３の処理は、Ａｃｔ１３１〜Ａｃｔ１３７の処理を含む。
【００３３】
Ａｃｔ１３１においてプロセッサー１１は、Ａｃｔ４と同様にして空きコア数を取得する。
Ａｃｔ１３２においてプロセッサー１１は、Ａｃｔ５と同様にして描画スレッド数を取得する。
【００３４】
Ａｃｔ１３３においてプロセッサー１１は、Ａｃｔ６と同様に、（空きコア数ｑ＋設定値ｋ）＞（準備中データ数）を満たすか否かを判定する。プロセッサー１１は、（空きコア数ｑ＋設定値ｋ）＞（準備中データ数）を満たさないならば、Ａｃｔ１３３においてＮｏと判定してＡｃｔ１３１へと戻る。対して、プロセッサー１１は、（空きコア数ｑ＋設定値ｋ）＞（準備中データ数）を満たすならば、Ａｃｔ１３３においてＹｅｓと判定してＡｃｔ１３４へと進む。
【００３５】
Ａｃｔ１３４においてプロセッサー１１は、描画処理を開始することを示すために、変数ｐの値を１増加させる。
Ａｃｔ１３５においてプロセッサー１１は、描画待ちキューに含まれる中間データの中から最初に描画待ちキューに追加された中間データを選択する。そして、プロセッサー１１は、Ａｃｔ８と同様にして、当該中間データに対する描画処理を開始させる。さらに、プロセッサー１１は、当該中間データを描画待ちキューから削除する。
【００３６】
Ａｃｔ１３６においてプロセッサー１１は、描画処理待ちの中間データがあるか否かを判定する。すなわち、プロセッサー１１は、描画待ちキューに中間データがあるか否かを判定する。プロセッサー１１は、描画処理待ちの中間データがあるならば、Ａｃｔ２３においてＹｅｓと判定してＡｃｔ１３１へと戻る。対して、プロセッサー１１は、描画処理待ちの中間データがないならば、Ａｃｔ１３６においてＮｏと判定してＡｃｔ１３７へと進む。
【００３７】
Ａｃｔ１３７においてプロセッサー１１は、描画監視処理を実行中でないことを示すために、変数Ｆ１の値をＦａｌｓｅにする。プロセッサー１１は、Ａｃｔ１３７の処理の後、描画監視処理を終了する。そして、プロセッサー１１は、描画監視処理を行っていたスレッドを終了する。
【００３８】
なお、プロセッサー１１は、Ａｃｔ３の処理時に描画監視処理を実行中であるならば、Ａｃｔ３においてＹｅｓと判定してＡｃｔ１４へと進む。
Ａｃｔ１４においてプロセッサー１１は、描画待ちキューにｎページ目の中間データを追加する。プロセッサー１１は、Ａｃｔ１４の処理の後、Ａｃｔ９へと進む。
【００３９】
次に、図３に示す制御処理について説明する。図３に示す制御処理は、描画処理を含む。描画処理は、Ａｃｔ３１〜Ａｃｔ４０及びＡｃｔ４２を含む。
図３のＡｃｔ３１においてプロセッサー１１は、対象とする中間データから印刷用データを生成する。対象とする中間データは、例えば、解析処理又は描画監視処理から渡されたものである。
【００４０】
Ａｃｔ３２においてプロセッサー１１は、圧縮監視処理を実行中であるか否かを判定する。すなわち、プロセッサー１１は、例えば、変数Ｆ２の値がＴｒｕｅであるか否かを判定する。プロセッサー１１は、圧縮監視処理を実行中でないならば、Ａｃｔ３２においてＮｏと判定してＡｃｔ３３へと進む。
【００４１】
Ａｃｔ３３においてプロセッサー１１は、ＲＡＭ１３などから圧縮コア情報を取得する。
Ａｃｔ３４においてプロセッサー１１は、Ａｃｔ３３で取得した圧縮コア情報を参照して、アイドル状態の圧縮コア１５があるか否かを判定する。あるいは、プロセッサー１１は、変数ｑの値が０より大きいか否かを判定しても良い。プロセッサー１１は、アイドル状態の圧縮コア１５があるならば、Ａｃｔ３４においてＹｅｓと判定してＡｃｔ３５へと進む。
【００４２】
Ａｃｔ３５においてプロセッサー１１は、アイドル状態の圧縮コア１５の数が減少することを示すために、変数ｑの値を１減少させる。
Ａｃｔ３６においてプロセッサー１１は、アイドル状態の圧縮コア１５に対して、圧縮処理を行うように求める圧縮リクエスト送信する。当該圧縮リクエストは、Ａｃｔ３１で変換した印刷用データを含む。
【００４３】
一方、図４のＡｃｔ５１において圧縮コア１５は、圧縮リクエストが送信されてくるのを待ち受けている。圧縮コア１５は、圧縮リクエストを受信したならば、Ａｃｔ５１においてＹｅｓと判定してＡｃｔ５２へと進む。
【００４４】
Ａｃｔ５２において圧縮コア１５は、当該圧縮コア１５がビジー状態となったことを示すために第１のコア通知をプロセッサー１１に送信する。第１のコア通知は、第１のコア通知の送信元である圧縮コア１５のコアＩＤを含む。第１のコア通知を受信したプロセッサー１１は、圧縮コア情報を更新して、当該第１のコア通知に含まれるコアＩＤに関連付けられたパラメーターを、ビジー状態を示すように変更する。
【００４５】
Ａｃｔ５３において圧縮コア１５は、Ａｃｔ５１で受信した圧縮リクエストに含まれる印刷用データに対してデータ圧縮を行う。当該データ圧縮により生成されたデータを、以下「圧縮データ」というものとする。
【００４６】
Ａｃｔ５４において圧縮コア１５は、Ａｃｔ５３で生成した圧縮データを補助記憶デバイス１４に送信する。圧縮データを受信した補助記憶デバイス１４は、当該圧縮データを記憶する。
【００４７】
Ａｃｔ５５において圧縮コア１５は、当該圧縮コア１５がアイドル状態となったことを示すために第２のコア通知をプロセッサー１１に送信する。第２のコア通知は、第２のコア通知の送信元である圧縮コア１５のコアＩＤを含む。第２のコア通知を受信したプロセッサー１１は、圧縮コア情報を更新して、当該第２のコア通知に含まれるコアＩＤに関連付けられたパラメーターを、アイドル状態を示すように変更する。また、プロセッサー１１は、アイドル状態の圧縮コア１５の数が増加したことを示すために、変数ｑの値を１増加させる。
【００４８】
一方、プロセッサー１１は、図３のＡｃｔ３６の処理の後、Ａｃｔ３７へと進む。
Ａｃｔ３７においてプロセッサー１１は、描画処理を終えたことを示すために、変数ｐの値を１減少させる。プロセッサー１１は、Ａｃｔ３７の処理の後、描画処理を終了する。そして、プロセッサー１１は、当該描画処理を行っていたスレッドを終了する。
【００４９】
なお、プロセッサー１１は、アイドル状態の圧縮コア１５がないならば、Ａｃｔ３４においてＮｏと判定してＡｃｔ３８へと進む。
Ａｃｔ３８においてプロセッサー１１は、圧縮監視処理を実行中であることを示すために、変数Ｆ２の値をＴｒｕｅにする。
【００５０】
Ａｃｔ３９においてプロセッサー１１は、圧縮待ち数が増加したことを示すために、変数ｒの値を１増加させる。
Ａｃｔ４０においてプロセッサー１１は、Ａｃｔ３１で変換した印刷用データを圧縮待ちキューに追加する。プロセッサー１１は、Ａｃｔ４０の処理の後、新たなスレッドを１つ開始する。そして、プロセッサー１１は、既存のスレッドにおいてＡｃｔ３７へと進む。さらに、プロセッサー１１は、新たなスレッドにおいてＡｃｔ４１に示す描画監視処理を開始する。Ａｃｔ４１の処理は、Ａｃｔ４１１〜Ａｃｔ４１６の処理を含む。
【００５１】
Ａｃｔ４１１においてプロセッサー１１は、Ａｃｔ３３と同様にして圧縮コア情報を取得する。
Ａｃｔ４１２においてプロセッサー１１は、Ａｃｔ４１１で取得した圧縮コア情報を参照して、アイドル状態の圧縮コア１５があるか否かを判定する。あるいは、プロセッサー１１は、変数ｑの値が０より大きいか否かを判定しても良い。プロセッサー１１は、アイドル状態の圧縮コア１５がないならば、Ａｃｔ４１２においてＮｏと判定してＡｃｔ４１１へと戻る。対して、プロセッサー１１は、アイドル状態の圧縮コア１５があるならば、Ａｃｔ４１２においてＹｅｓと判定してＡｃｔ４１３へと進む。
【００５２】
Ａｃｔ４１３においてプロセッサー１１は、アイドル状態の圧縮コア１５の数が減少することを示すために、変数ｑの値を１減少させる。さらに、プロセッサー１１は、圧縮待ち数が減少することを示すために、変数ｒの値を１減少させる。
【００５３】
Ａｃｔ４１４においてプロセッサー１１は、アイドル状態の圧縮コア１５に対して、圧縮処理を行うように求める圧縮リクエストを送信する。当該圧縮リクエストは、圧縮待ちキューに含まれる印刷用データの中で最初に圧縮待ちキューに追加された印刷用データを含む。さらに、プロセッサー１１は、当該印刷用データを圧縮待ちキューから削除する。
【００５４】
Ａｃｔ４１５においてプロセッサー１１は、圧縮処理待ちの印刷用データがあるか否かを判定する。すなわち、プロセッサー１１は、圧縮待ちキューに印刷用データがあるか否かを判定する。プロセッサー１１は、圧縮処理待ちの印刷用データがあるならば、Ａｃｔ４１５においてＹｅｓと判定してＡｃｔ４１１へと戻る。対して、プロセッサー１１は、圧縮処理待ちの印刷用データがないならば、Ａｃｔ４１５においてＮｏと判定してＡｃｔ４１６へと進む。
【００５５】
Ａｃｔ４１６においてプロセッサー１１は、圧縮監視処理を実行中でないことを示すために、変数Ｆ２の値をＦａｌｓｅにする。プロセッサー１１は、Ａｃｔ４１６の処理の後、圧縮監視処理を終了する。そして、プロセッサー１１は、圧縮監視処理を行っていたスレッドを終了する。
【００５６】
なお、プロセッサー１１は、Ａｃｔ３２の処理時に圧縮監視処理を実行中であるならば、Ａｃｔ３２においてＹｅｓと判定してＡｃｔ４２へと進む。
Ａｃｔ４２においてプロセッサー１１は、Ａｃｔ３１で変換した印刷用データを圧縮待ちキューに追加する。プロセッサー１１は、Ａｃｔ４２の処理の後、Ａｃｔ３７へと進む。
【００５７】
プロセッサー１１は、印刷ジョブに含まれる印刷用データを圧縮データに変換し終えたならば、例えば、当該印刷ジョブに基づき、当該圧縮データを印刷する。すなわち、プロセッサー１１は、補助記憶デバイス１４に記憶された当該圧縮データを印刷するよう画像形成部１６を制御する。
【００５８】
実施形態の画像形成装置１０は、プロセッサー１１を効率的に使用可能である。以下に理由を述べる。
従来の画像形成装置は、例えば、図５に示すようにＲＩＰ処理及び圧縮処理を行う。図５は、従来のＲＩＰ処理と圧縮処理の処理タイミングの一例を示す図である。図５の例では、プロセッサーは、解析処理をスレッド１で行い、描画処理をスレッド２で行う。また、図５の例では、画像形成装置は、１個の圧縮コアを備える。
解析部は、まず、１ページ目を対象とする解析処理を行う。そして、解析部は、１ページ目を対象とする解析処理が完了すると、描画処理部に対して１ページ目を対象とする描画処理の開始を要求する。そして、解析部は引き続き２ページ目を対象とする解析処理を開始する。
一方、描画処理部は、１ページ目を対象とする描画処理の開始の要求に応じて、１ページ目を対象とする描画処理を開始する。そして、描画処理部は、１ページ目を対象とする描画処理が完了すると、画像データを圧縮するよう圧縮コアに対して要求する。
なお、一般的に、描画処理は、データ解析よりも時間がかかる。したがって、描画処理部がスレッド２で１ページ目を対象とする描画処理を行っている間に、解析部は、２ページ目を対象とする解析処理を完了することになる。さらに、解析部は、２ページ目を対象とする描画処理の開始を描画処理部に要求する。しかしながら、このとき、描画処理部は、１ページ目を対象とする描画処理の最中である。このため、２ページ目を対象とする描画処理をすぐに開始することはできない。同様に、３ページ目以降でも描画処理をすぐに開始することができず、処理待ちが発生する。そして、図５に示すように、後のページになるほど描画処理待ちの時間も長くなる場合がある。また、図５の例では圧縮処理よりも描画処理の方が時間がかかる。したがって、圧縮コアは、圧縮処理を行った後、描画処理部が次のページの描画処理を終えるまで使用されていない状態となる。
【００５９】
次に、複数の描画処理をマルチスレッドにより並列処理する例を図６に示す。図６は、ＲＩＰ処理と圧縮処理の処理タイミングの一例を示す図である。図６の例では、図５の例とは異なり、画像形成装置は、描画処理をスレッド２とスレッド３の２つのスレッドでそれぞれ行うことが可能である。図６の例では、解析部は、１ページ分の解析処理を完了するごとに、スレッド２とスレッド３のうちの空いている方に対して描画処理の開始を要求する。これにより、複数のスレッドでそれぞれ描画処理を行うことで、図５の例に比べて描画処理待ちが発生し難くなる。図６の例では、描画処理待ちは発生していない。また、圧縮コアは、圧縮処理を行った後、図５に示す例のように使用されていない状態となっていない。しかしながら、図６の例では、描画処理部が２ページ目を対象とする描画処理を完了したときに、圧縮コアは、まだ１ページ目の圧縮処理を完了していない。このため、圧縮コアは、描画処理部が２ページ目を対象とする描画処理を完了してもすぐには２ページ目の圧縮処理を行うことができない。同様に、３ページ目以降でも、圧縮コアは、描画処理完了後すぐには圧縮処理を行うことができない。そして、図６に示すように、後のページになるほど圧縮処理待ちの時間が長くなる場合がある。このように、プロセッサーがＲＩＰ処理を早く進めても、圧縮コアが空いていないことによる圧縮処理待ちが発生すると、全体の処理速度が向上しない。そればかりか、プロセッサーの使用率が不必要に上がることとなってしまう。
【００６０】
実施形態の画像形成装置１０におけるＲＩＰ処理と圧縮処理の処理タイミングの一例を示す図７に示す。図７の例では、画像形成装置１０は、図５及び図６の例と同様に１個の圧縮コア１５を備える。なお、図７の例では、設定値ｋ＝１である。
図７の例では、３ページ目の解析処理が完了したときには、１ページ目の圧縮処理が圧縮コア１５によって実行中であり、２ページ目を対象とする描画処理が描画処理部によって実行中である。そして、圧縮コア１５は、１ページ目の圧縮処理を完了した後は２ページ目の圧縮処理を開始する。このため、この時点で３ページ目を対象とする描画処理を行っても全体の処理速度向上には寄与せず、プロセッサーの使用率を上げるだけであると考えられる。そこで、実施形態の画像形成装置１０は、１ページ目の圧縮処理が完了するまでは、３ページ目を対象とする描画処理を開始しない。このようにすることで、図７の例では、プロセッサーの使用率が図６の例よりも低くなる。しかしながら、図７の例における全体の処理速度は、図６と同等である。したがって、実施形態の画像形成装置１０は、プロセッサー１１を効率的に使用しているといえる。
【００６１】
また、実施形態の画像形成装置１０における別の一例を図８に示す。図８は、実施形態のＲＩＰ処理と圧縮処理の処理タイミングの一例を示す図である。図８の例では、図５〜図７の例と異なり、画像形成装置１０は、２つの圧縮コア１５を備える。図８の例でも、図７の例と同様に３ページ目の解析処理が完了したときには、１ページ目の圧縮処理が１番目の圧縮コア１５によって実行中であり、２ページ目を対象とする描画処理が描画処理部によって実行中である。しかしながら、図８の例では、圧縮コア１５が２つあるため、１番目の圧縮コア１５が１ページ目の圧縮処理を完了するのを待たずに、２つ目の圧縮コア１５を用いて２ページ目の圧縮処理を開始することが可能である。このため、図８の例では、図７の例と異なり、３ページ目を対象とする描画処理を開始することで、全体の処理速度の向上に寄与することが可能である。したがって、図８の例では、図７の例とは異なり、描画処理部は、３ページ目を対象とする描画処理をすぐに開始する。また、図８の例では、圧縮コア１５が複数あるため、圧縮処理待ちが発生していない。したがって、実施形態の画像形成装置１０は、プロセッサー１１を効率的に使用しているといえる。
【００６２】
以上のように、実施形態の画像形成装置１０は、圧縮コア１５の数に応じて描画処理の開始タイミングが変わる。すなわち、実施形態の画像形成装置１０は、圧縮コア１５の数に応じてプロセッサー１１を効率的に使用することができるといえる。
【００６３】
また、実施形態の画像形成装置１０は、準備中データ数が、アイドル状態の圧縮コア１５の数よりもｋ以上多い場合、新たに描画処理を開始しない。準備中データ数がアイドル状態の圧縮コア１５の数よりもｋ以上多い状態では、準備中データがこれより少ない場合に描画処理を行う場合に比べて全体の処理速度向上に寄与しないと考えられる。したがって、このような状態のときに描画処理を開始しないことで、実施形態の画像形成装置１０は、プロセッサー１１の使用率が不必要に上がることを防ぐことができる。
【００６４】
上記の実施形態は以下のような変形も可能である。
上記の実施形態では、（準備中データ数）＝（描画スレッド数ｐ）である。しかしながら（準備中データ数）＝（描画スレッド数ｐ＋圧縮待ち数ｒ）であっても良い。準備中データ数が圧縮待ち数を含むことで、圧縮処理に時間がかかる場合に圧縮待ち数が増えることを防ぐことができる。また、圧縮待ち数に応じて描画スレッド数を減らすことになるので、全体の処理速度向上に寄与しないようなプロセッサー１１の使用率の増大を防ぐことができる場合がある。
【００６５】
圧縮コア１５は、Ａｃｔ５３の処理の後、圧縮データを生成したことをプロセッサー１１に通知しても良い。そして、圧縮コア１５は、プロセッサー１１の制御のもと、当該圧縮データを補助記憶デバイスに送信しても良い。
【００６６】
上記の実施形態では、プロセッサー１１は、解析処理と描画監視処理を別スレッドで行うプログラムを実行する。しかしながら、プロセッサー１１は、このプログラムに代えて、解析処理と描画監視処理とを同一のスレッドで処理するようなプログラムを実行しても良い。
上記の実施形態では、プロセッサー１１は、描画処理と圧縮監視処理を別スレッドで行うプログラムを実行する。しかしながら、プロセッサー１１は、このプログラムに代えて、描画処理と圧縮監視処理とを同一のスレッドで処理するようなプログラムを実行しても良い。
【００６７】
プロセッサー１１は、上記の実施形態においてマルチスレッドで行っている処理をマルチプロセスで行っても良い。
【００６８】
印刷対象データがＰＤＬでない場合であっても、本実施形態を適応することができる。すなわち、ＰＤＬでない印刷対象データを印刷用データに変換する処理と、当該印刷用データを圧縮する圧縮処理とに対して本実施形態を適応することができる。
【００６９】
画像形成装置１０は、複数のページを１枚の記録媒体に印刷するなどのために、複数のページを含む記録媒体１枚分のデータに対して描画処理を行っても良い。この場合、記録媒体１枚分のデータが１印刷単位の一例である。
画像形成装置１０は、１ページを複数枚の記録媒体に分割して印刷するなどのために、１ページを複数に分割したうちの記録媒体１枚分のデータに対して描画処理を行っても良い。この場合、記録媒体１枚分のデータが１印刷単位の一例である。
【００７０】
本実施形態の画像形成装置は、圧縮コア１５を備えていなくても良い。そして、プロセッサー１１が、圧縮コア１５に代えて、圧縮処理と同様の処理を、解析処理及び描画処理とは別スレッドで実行するなどして並行又は並列して処理しても良い。この場合、圧縮処理と同様の処理を行うことでプロセッサー１１は、圧縮部として動作する。
本実施形態の画像形成装置は、プロセッサーが圧縮コアを内蔵していても良い。
本実施形態の画像形成装置は、ハードウェアマルチスレッディングにより複数のスレッドを並列処理しても良い。
【００７１】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００７２】
１０……画像形成装置、１１……プロセッサー、１２……ＲＯＭ、１３……ＲＡＭ、１４……補助記憶デバイス、１５……圧縮コア、１６……画像形成部、１７……バス、１１１……ＲＩＰ、１１２……解析部、１１３……描画処理部
【図１】
2019014135.tif 000003
【図２】
2019014135.tif 000004
【図３】
2019014135.tif 000005
【図４】
2019014135.tif 000006
【図５】
2019014135.tif 000007
【図６】
2019014135.tif 000008
【図７】
2019014135.tif 000009
【図８】
2019014135.tif 000010