(57)【要約】【課題】  複数のプロセッサを有して画像処理を行う画像形成装置において、適切なスレッド制御を行って処理時間の短縮を図ること。【解決手段】  ページ処理を実行するシステムの環境に、図形オブジェクト（中間データ）を解釈しラスタライズ、スクリーニング、圧縮などレンダリングするためのプロセッサがいくつ搭載されているかにより、初期バンドレンダリングスレッド作成数を決定する。このスレッド数は、必ずしもフルで実行するものではなく、バンドレンダリング処理において、並列でバンドレンダリング処理する最大数とする。さらに、ページの各バンドをレンダリング処理開始時に、使用可能メモリ量をチェックして、複数バンドを同時にレンダリングするためのメモリサイズを検知する。そのメモリサイズに応じて、同時実行数をページ毎でそのときの最低なバンドレンダリングを処理させる。【選択図】図１
2010125713.tif 000002
【特許請求の範囲】
【請求項１】
画像処理を行うための複数のプロセッサを有する画像形成装置であって、
前記画像処理のプログラム及びデータを記憶するための主メモリの空き容量を検知する空きメモリ量検知部と、
前記複数のプロセッサが前記画像処理を行うために必要とするメモリ量を計算する必要メモリ量計算部と、
前記空きメモリ量検知部が検知した空きメモリ容量と、前記必要メモリ量計算部が計算した必要メモリ量に基づいて、前記複数のプロセッサに画像処理を実行させるためのスレッドの起動制御を行うスレッド制御部とを有する
ことを特徴とする画像形成装置。
【請求項２】
請求項１の画像形成装置であって、
前記必要メモリ量計算部は、バンド単位に必要となるメモリ量を計算し、
前記スレッド制御部は、前記前記空きメモリ量検知部が検知した空きメモリ容量中から、前記必要メモリ量計算部が計算したバンド単位の必要メモリ量が確保できるバンド数のスレッドを、前記複数のプロセッサに画像処理を実行させるために起動する
ことを特徴とする画像形成装置。
【請求項３】
請求項２の画像形成装置であって、
前記スレッド制御部は、前記前記空きメモリ量検知部が検知した空きメモリ容量中から、前記必要メモリ量計算部が計算したバンド単位の必要メモリ量が確保できる最大バンド数のスレッドを、前記複数のプロセッサに画像処理を実行させるために起動する
ことを特徴とする画像形成装置。
【請求項４】
請求項２、または３の画像形成装置であって、
前記バンド単位のレンダリング処理をカプセル化して、バンドの並び順にかかわらず、バンド単位毎にレンダリング処理するレンダリング処理部を有する
ことを特徴とする画像形成装置。
【発明の詳細な説明】
【技術分野】
【０００１】
画像形成装置において、レンダリング等の画像処理を行う際に、コプロセッサ等のハードウェア資源を有効に使い、ハードウェアとソフトウェアの並列処理を行い、トータルの処理時間を短縮する技術に関するものである。
【背景技術】
【０００２】
画像形成装置においては、例えばビットマップ化処理を行った後のデータを圧縮するための専用のハードウェア（画像処理のための専用プロセッサ）を有して、当該専用プロセッサに圧縮処理を担当させてＣＰＵ（Central Processing Unit）の負担を軽減し、その分ＣＰＵでは、ビットマップ化などの他の画像処理を担当させ、トータルでの画像処理時間を短縮する方法がある。
【０００３】
このように複数のプロセッサを有して、並列処理を行う場合には、それぞれのプロセッサが占有するメモリ量等に応じて、スレッドの実行を適切に行わないと、メモリ量の不足により、複数のプロセッサが起動されて多数のスレッドがあるにもかかわらず、トータルでの画像処理時間が短縮されない問題があり、スレッドが使用するメモリ量とスレッドの起動制御をどのように行うかについての適切な解決方法が求められていた。
【０００４】
従来技術として、プリンタの印刷処理性能を向上させるために、印刷データをバンド単位に分割し、当該分割されたデータを複数のプロセッサで並列処理を行うことにより処理時間を短縮させる方法がある（特許文献１参照）。
【０００５】
この方法では、プロセッサ数単位でバンド処理の並列処理実行数を決定するが、このときのメモリの使用可能状況についての考慮はなされていないため、前述したメモリ量の不足により処理時間が延長してしまう問題は解決しない。
【特許文献１】特開２０００−１４１８１１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
解決しようとする問題点は、画像処理のための専用プロセッサを有して、ＣＰＵとこれらのプロセッサに並列処理させることにより描画処理を行う画像形成装置において、プロセッサ数及びメモリ量に応じて、並列処理の最適化を行うことができなかった点である。
【課題を解決するための手段】
【０００７】
本発明の画像形成装置は画像処理を行うための複数のプロセッサを有する画像形成装置であって、前記画像処理のプログラム及びデータを記憶するための主メモリの空き容量を検知する空きメモリ量検知部と、前記複数のプロセッサが前記画像処理を行うために必要とするメモリ量を計算する必要メモリ量計算部と、前記空きメモリ量検知部が検知した空きメモリ容量と、前記必要メモリ量計算部が計算した必要メモリ量に基づいて、前記複数のプロセッサに画像処理を実行させるためのスレッドの起動制御を行うスレッド制御部とを有することを特徴とする。
【０００８】
ここでいう主メモリとは、画像形成装置のプログラム及びデータを保持する半導体メモリ等からなる一次記憶装置のことである。
【０００９】
また本発明の画像形成装置の前記必要メモリ量計算部は、バンド単位に必要となるメモリ量を計算し、前記スレッド制御部は、前記前記空きメモリ量検知部が検知した空きメモリ容量中から、前記必要メモリ量計算部が計算したバンド単位の必要メモリ量が確保できるバンド数のスレッドを、前記複数のプロセッサに画像処理を実行させるために起動することを特徴としてもよい。
【００１０】
また、本発明の画像形成装置の前記スレッド制御部は、前記前記空きメモリ量検知部が検知した空きメモリ容量中から、前記必要メモリ量計算部が計算したバンド単位の必要メモリ量が確保できる最大バンド数のスレッドを、前記複数のプロセッサに画像処理を実行させるために起動することを特徴としてもよい。
【００１１】
また、本発明の画像形成装置は、前記バンド単位のレンダリング処理をカプセル化して、バンドの並び順にかかわらず、バンド単位毎にレンダリング処理するレンダリング処理部を有することを特徴としてもよい。
【発明の効果】
【００１２】
本発明の画像形成装置は画像処理を行うための複数のプロセッサを有する画像形成装置であって、前記画像処理のプログラム及びデータを記憶するための主メモリの空き容量を検知する空きメモリ量検知部と、前記複数のプロセッサが前記画像処理を行うために必要とするメモリ量を計算する必要メモリ量計算部と、前記空きメモリ量検知部が検知した空きメモリ容量と、前記必要メモリ量計算部が計算した必要メモリ量に基づいて、前記複数のプロセッサに画像処理を実行させるためのスレッドの起動制御を行うスレッド制御部とを有することを特徴とする。
【００１３】
このため、前記複数のプロセッサは、メモリの空き容量に応じて、メモリ不足を発生させないように適切なスレッドのみを起動して制御するため、結果として画像処理にかかる時間が短縮される。
【００１４】
また本発明の画像形成装置の前記必要メモリ量計算部は、バンド単位に必要となるメモリ量を計算し、前記スレッド制御部は、前記前記空きメモリ量検知部が検知した空きメモリ容量中から、前記必要メモリ量計算部が計算したバンド単位の必要メモリ量が確保できるバンド数のスレッドを、前記複数のプロセッサに画像処理を実行させるために起動することを特徴としてもよい。
【００１５】
このため、前記複数のプロセッサは、メモリの空き容量に応じて、メモリ不足を発生させないようにバンド単位毎にメモリ不足を発生させない数のスレッドのみを起動して制御するため、前記複数のプロセッサによる並列処理がメモリ量に応じたバンド数分だけ実行されるために、結果として画像処理時間が短縮される。
【００１６】
また、本発明の画像形成装置の前記スレッド制御部は、前記前記空きメモリ量検知部が検知した空きメモリ容量中から、前記必要メモリ量計算部が計算したバンド単位の必要メモリ量が確保できる最大バンド数のスレッドを、前記複数のプロセッサに画像処理を実行させるために起動することを特徴としてもよい。
【００１７】
このため、前記複数のプロセッサは、メモリの空き容量に応じて、メモリ不足を発生させないようにバンド単位毎にメモリ不足を発生させない数の最大のスレッド数を起動して制御するため、前記複数のプロセッサによる並列処理がメモリ量に応じたバンド数分だけ実行されるために、結果として画像処理時間が短縮される。
【００１８】
また、本発明の画像形成装置は、前記バンド単位のレンダリング処理をカプセル化して、バンドの並び順にかかわらず、バンド単位毎にレンダリング処理するレンダリング処理部を有することを特徴としてもよい。
【００１９】
このため、レンダリング処理部はバンドの並びを気にせずに、前記複数のプロセッサの空きに応じて各バンド単位の画像処理を行うスレッドを実行可能なため、プロセッサの利用効率が上がり、画像処理時間が短縮される。
【発明を実施するための最良の形態】
【００２０】
画像処理のための専用プロセッサを有して、ＣＰＵとこれらのプロセッサに並列処理させることにより描画処理を行う画像形成装置において、プロセッサ数及びメモリ量に応じて、並列処理の最適化を行うことが出来ないという問題点を画像形成装置の空きメモリ量を越えない、スレッド毎の必要メモリ量を確保可能なスレッド数を起動する制御により解決した。
【実施例】
【００２１】
本発明実施例に係る画像形成装置１０について以下に説明する。
【００２２】
［構成］
本発明実施例に係る画像形成装置１０の機能ブロック図を図１に示す。以下に各機能部について説明する。
【００２３】
通信インターフェース１１は、ホストコンピュータ等との通信を行う。
【００２４】
データ受信部１２は、通信インターフェースを介してデータを受信する。
【００２５】
データ解析部１３は、送られてきたデータの解析を行なう。
【００２６】
描画データ処理部１４は、データ解析部１３からの指示に従って描画データを処理する。
【００２７】
レンダリング処理部１５は、描画データ処理部１４で作成されたディスプレイリストからＶＲＡＭ（Video Random Access Memory）にビットマップを作成するレンダリング処理を行う。レンダリング処理は、バンド単位毎の処理をカプセル化して処理可能なため、バンドの並び順を気にせずとも、また、先に起動されたスレッドが処理を終了していないような状態であっても、後順のバンドのレンダリング処理が可能である。
【００２８】
出力部１６は、実際に紙などの記録媒体に印刷を行なう。
【００２９】
メモリ管理部２１は、画像処理に必要なメモリを各スレッドの各プロセッサに割当てる。メモリ管理部２１は、必要メモリ量計算部２３が計算したスレッド毎に必要なメモリを確保できるかどうかのトライを行う。詳細はスレッド制御部２４の項及びフローチャートにて説明する。
【００３０】
空きメモリ量検知部２２は、画像形成装置１０が使用する主メモリの空き容量を検知し、ＣＰＵや専用プロセッサが行う画像処理時に割当て可能なメモリ量、連続メモリ領域を検知する。
【００３１】
必要メモリ量計算部２３は、画像形成装置１０のＣＰＵや、専用プロセッサが必要とするメモリ量を計算する。例えば、上記の圧縮専用プロセッサが圧縮処理を行う場合には、その処理の前段階であるビットマップ化処理で生成されたビットマップデータのメモリ量と圧縮して書き出されるメモリ量を確保する必要があり、それらのメモリ量を計算する。
【００３２】
スレッド制御部２４は、画像形成装置のＣＰＵが画像処理するためのスレッドと、専用プロセッサが処理するためのスレッドの起動の制御を行う。より具体的に説明すると、スレッド制御部２４は空きメモリ量検知部２２が取得した空きメモリ量と必要メモリ量計算部２３が計算したＣＰＵが行う画像処理及び専用プロセッサが行う画像処理に必要なメモリ量に基づいて、ＣＰＵに画像処理の中のどのスレッドを割り振り、どの専用プロセッサにどの画像処理のスレッドを割り振るかを決定して、それらのためのスレッドの起動の制御を行う。このスレッドは、バンド単位毎に起動される。
【００３３】
実際には、初期化において画像形成装置に備わるＣＰＵ及びその他の画像処理専用のプロセッサの数に応じて並列処理可能な数だけスレッドが用意される。これらのスレッドは、バンド単位毎に処理が行われる。次に、この準備された複数のスレッドについて、前記したメモリ量の余裕に応じて、最大起動可能なスレッド数が起動される。
【００３４】
［画像処理］
画像形成装置において、画像処理は図２に示すようにページを一定の等間隔に短冊状に細分化したバンドと呼ぶ単位で処理が行われる。
【００３５】
図３にこのバンド単位で描画データ処理部１４が作成する中間データがメモリ上に格納されている状態を示す。この中間データには、例えば、図形の形状を記述したもの（図３中の四角形１形状、四角形２形状、四角形３形状など）やイメージデータの実データが格納されているメモリアドレス、図形を塗りつぶすパターン（図３中のパターン１，２，３）のデータ、ピクセル演算命令（ＲＯＰ１，２）などがある。
【００３６】
中間データはメモリ空間上で、ある固定ブロック内に順次格納される。ブロックサイズをオーバーするときは、ポインタ（図３中にある「次のブロックアドレス」）を用いて、メモリブロックを追加確保してリンクさせていくデータ構造である。
【００３７】
次に図４に示すように、中間データＤ１１が生成された後は、レンダリング処理を行う。レンダリング処理とは、バンド単位の中間データＤ１１を解釈して、出力デバイスが扱えるビットマップデータＤ１３を生成するための処理である。レンダリング処理の後、さらに、メモリ効率、プリントオーバーランを回避するために、ビットマップデータＤ１３を圧縮して圧縮データＤ１６を生成する。
【００３８】
図４の最初に戻ると、中間データＤ１１から、まず、カラー処理、透過処理などを含むデータは、８ｂｐｐイメージにラスタライズ処理した８ｂｐｐビットマップイメージＤ１２に変換する。このとき、出力デバイスの扱うピクセルビット深度を変換するためにスクリーニングして圧縮する。
【００３９】
また、トラッピング処理を行ってトラッピング後イメージＤ１４を生成し、スムージング処理を行って、スムージング後イメージＤ１５などの処理も同様に行われる場合もある。その後、圧縮処理が行われて最終の圧縮データＤ１６が生成される。
【００４０】
［スレッド制御］
画像形成装置１０では、図４に記載したバンドレンダリング処理をバンド単位で独立して処理できるようにカプセル化してスレッド化する。
【００４１】
それぞれの処理がバンド単位でカプセル化されているため、バンドレンダリングをページのバンド並び順や、実行開始・終了タイミングを意識せずにレンダリング可能となる。
【００４２】
ラスタライズ、スクリーニング、スムージング、圧縮処理など、各レンダリング要素は、それぞれ、専用プロセッサを持つものや持たないもの（メインＣＰＵで処理するもの）が、画像形成装置のシステム構成によって変化する。
【００４３】
専用プロセッサが搭載されたシステムにおいては、図５に示すように、あるバンド処理を実行中に、他のバンドの処理を実行することで、専用プロセッサで圧縮処理している間にＣＰＵで他のバンドのラスタライズを実行することが可能である。
【００４４】
しかし、図４に示すように１つのバンドのレンダリングで必要となるメモリは１ないしは２バンド単位サイズのメモリが必要である。例えば、図５におけるバンドスレッド１が起動すると、ラスタライズ１の処理は、中間データを保持するためのメモリ及び当該中間データをラスタライズしてビットマップ出力するためのメモリが必要である。又、その次の圧縮処理であるコーデック１は、前記ラスタライズ１処理が出力したビットマップデータとそれを圧縮した圧縮イメージを記録するメモリ量が必要である。そのため、複数スレッドで並列処理する場合は、スレッド数分のメモリが必要である。
【００４５】
バンドスレッドは、専用プロセッサを利用して最適に並列処理する場合を考えて決める。たとえば、圧縮処理プロセッサが１つある場合は、図５のように２つのスレッドとなる。
【００４６】
バンドスレッドの実行制御について、１バンドレンダリング実行可能なメモリ量と複数バンドのレンダリングを並列に処理する最大メモリ量を必要メモリ量計算部２３が算出し内部で保持する。
【００４７】
１バンドレンダリング処理に実行可能なメモリ量について、初期化時に確保しておき、メモリの不足によるレンダリング不能状態を起こさないようにする。
【００４８】
複数バンドレンダリングを並列に処理する最大メモリ量は、図５に示すようにバンドのレンダリングを専用プロセッサで並列処理する際必要となるメモリ量である。
【００４９】
スレッド制御部２４は、システム起動時に１バンドレンダリング実行可能なメモリ量を確保し、確保されたメモリ量で実行可能なレンダリング専用のプロセッサに応じた数のスレッドを起動する。
【００５０】
システムがＰＤＬ（ページ記述言語）データを解釈して、レンダリング処理部１５にページのデータが来たとき、スレッドを同時に実行させるために、メモリの追加確保をシステムに問い合わせる。このとき、メモリを追加確保できたときは、バンドレンダリングを並列で実行できるので、バンドスレッドに中間データを渡してレンダリングを実行する。
【００５１】
メモリを追加確保できない場合は、現在の実行可能なスレッドでレンダリングを実行する。
【００５２】
［フローチャート］
図６はシステム初期化における本発明部の処理のフローチャートである。
【００５３】
Ｓ６０１：スレッド制御部２４は、専用プロセッサを最適に利用するために必要な数のスレッドを生成する。
【００５４】
Ｓ６０２：必要メモリ量計算部２３は、ひとつのバンド単位のレンダリングに必要なメモリサイズ（mem_size_min）を計算する。
【００５５】
Ｓ６０３：必要メモリ量計算部２３は、作製したスレッド数のバンド単位のレンダリングに必要なメモリサイズ（mem_size_max）を計算する。
【００５６】
Ｓ６０４：メモリ管理部は、ひとつのバンドレンダリングに必要なメモリを確保する。
【００５７】
以上でシステム初期化時のフローを終了する。
【００５８】
次に、ページのレンダリング処理におけるフローについて説明する。
【００５９】
図７はページのレンダリングにおけるレンダリング処理のフローチャートである。
【００６０】
Ｓ７０１：メモリ管理部２１は、全スレッドを使用してバンドレンダリングする場合に必要となるメモリ量に対して、Ｓ６０４で確保済のバンドメモリでは不足しているメモリサイズ（request_size）の追加確保を試みる。
【００６１】
Ｓ７０２：Ｓ７０１で追加確保できたかどうか判別する。メモリ確保できたら、動作をＳ７０６に移行してバンドスレッドを実行してレンダリングを開始する。メモリ確保ができない場合は、動作をＳ７０３に移行する。
【００６２】
Ｓ７０３：Ｓ７０４、Ｓ７０５、Ｓ７０６のループ処理を行う。
【００６３】
Ｓ７０４：Ｓ７０１での追加確保要求サイズ（request_size）から１バンド分のメモリを引く。
【００６４】
Ｓ７０５：Ｓ７０４で求めた（request_size）でメモリ追加確保を試みる。
【００６５】
Ｓ７０６：Ｓ７０５で追加確保できたかどうか判別する。メモリ確保できたら、動作をＳ７０６に移行してバンドスレッドを実行してレンダリングを開始する。メモリ確保ができない場合は、動作をＳ７０３に移行する。
【００６６】
Ｓ７０７：メモリが確保できたので、バンドスレッドを実行してレンダリングする。
【００６７】
以上の一連の処理により、複数あるプロセッサの処理に関して、メモリ確保容量に応じたバンドスレッドの起動による実行を行って、最適なスレッド制御を行い、処理時間の短縮を図る。
【００６８】
［実施例の効果］
本発明実施例の画像処理により、以下のことが可能となった。
【００６９】
複数のプロセッサを有する画像形成装置において、並列処理が可能な数だけのバンド単位のスレッドを用意し、メモリの使用量と空き容量に応じて実行可能なスレッドのみを起動する方法により、メモリ使用率とバンドレンダリング処理を最適化できる。その結果、画像処理にかかる時間が短縮される。
【図面の簡単な説明】
【００７０】
【図１】本発明実施例の画像形成装置の機能ブロック図である。
【図２】レンダリング処理を行う単位のバンドについての説明図である。
【図３】レンダリング処理を行う際のメモリ空間に割当てられるデータの例である。
【図４】画像形成装置において行われる各画像処理についての説明である。
【図５】複数のスレッドが立ち上がる経過を示す図である。
【図６】画像形成装置のシステム初期化におけるフローチャートである。
【図７】画像形成装置のレンダリング処理におけるフローチャートである。
【符号の説明】
【００７１】
１０  画像形成装置
１１  通信インターフェース
１２  データ受信部
１３  データ解析部
１４  描画データ処理部
１５  レンダリング処理部
１６  出力部
２１  メモリ管理部
２２  空きメモリ量検知部
２３  必要メモリ量計算部
２４  スレッド制御部
【図１】
2010125713.tif 000003
【図２】
2010125713.tif 000004
【図３】
2010125713.tif 000005
【図４】
2010125713.tif 000006
【図５】
2010125713.tif 000007
【図６】
2010125713.tif 000008
【図７】
2010125713.tif 000009