(57)【要約】【課題】  スキャンラインレンダリングの描画にサブＣＰＵを機能ごとに用意したモジュールにおいて、パイプライン処理構成や並列分散処理構成は、印刷データの傾向によってはサブＣＰＵ間のＦＩＦOに描画データが詰まって処理が遅くなるといった問題がある。【解決手段】  印刷データの傾向に合わせてスキャンラインレンダリングの構成を変更する。具体的には、印刷データ内のエッジ数やオブジェクト数をバンド領域ごとに検索して、ある一定数のデータを保持するバンドが存在するかどうかでパイプライン処理構成か、並列分散処理構成かを決定する。【選択図】  図７
2013006338.tif 000002
【特許請求の範囲】
【請求項１】
印刷データの描画特徴を抽出する手段（７０１）と、
前記描画特徴を対象ページの特徴情報（６０７）として保持する手段（７０２）、
前記描画特徴を対象ページの中間データ（６０１）の特徴情報（６０７）として付加する手段（７０３）と、
前記描画特徴を対象ページ内のバンド領域（６０６）ごとに保持する手段（７０４）と、
前記描画特徴を用いて各バンド領域と隣接するバンド領域とを比較する手段と、
前記描画特徴比較から特徴情報（６０７）の差分を取得する手段（７０５）と、
前記描画特徴差分と隣接するバンド領域ごとに特徴情報（６０７）の閾値とを比較する手段（７０６）と、
前記描画特徴の閾値からレンダリングシステムの構成をパイプライン処理（７１０）か並列分散処理（７０９）かを判断する手段と、
前記描画特徴の判断で決定したレンダリングシステムを構築する手段（７１１）と、
を有することを特徴とする画像形成装置（１０２）。
【請求項２】
前記レンダリングシステムを構築する手段（７１１）は、
マルチＣＰＵで構成されたレンダリングシステムを有する手段（図４(a）、図４(b)）と、 
前記手段において入力される中間データ（６０１）のページ毎にバンド内のエッジ数とオブジェクト数（６０６）を集計する手段（８０１、８０２）と、
前記印刷データのエッジ数とオブジェクト数（６０６）をメタデータ（６０７）として描画用の中間データ（６０１）に付加する手段（８０３）と、 
前記印刷データを描画データ解析部（３０４）で読み込む手段（８０４）と、
前記印刷データのメタデータ（６０７）から隣接するバンドに一定値以下のオブジェクト数（６０６）を有するバンドが存在するならレンダリングの構成を並列分散処理構成（図４(b)）にする手段（８０９）と、
前記判断手段で中間データ（６０１）の隣接するバンドがある閾値以上のオブジェクト数（６０６）を有するバンドが存在するかどうかをページの最後まで比較する手段（８０７、８０８）と、
前記判断手段で中間データ（６０１）の最後のバンドまで比較したらエッジ総数（６０５）を一定の閾値と比較する手段（６０７）と、
前記判断手段で一定の閾値以上のエッジ総数（６０５）を含むときは、並列分散処理構成（図４(b)）にする手段（８０９）と、 
前記判断手段で一定の閾値以上のエッジ数を含まないときは、パイプライン処理構成（図４(a)）にする手段（８１１）と、 
前記判断手段で決定した構成に合わせてレンダリングシステムを変更する手段（８１２）と、 
を有することを特徴とする請求項１に記載の画像形成装置（１０２）。 
【請求項３】
前記並列分散処理構成の手段（図４(b)）は、
現在処理中のバンド中間データ（４１３）のバンドには隣接するバンドをまたがる描画オブジェクト（６０６）が存在するかどうかを判断する手段（１００１）と、
前記判断手段で隣接するバンドにまたがる描画オブジェクト（６０６）が存在しなければ現在処理中のバンド中間データ（４１３）を描画制御機能（４１４）へ送信する手段と、
前記判断手段で隣接するバンドにまたがる描画オブジェクト（６０６）が存在すれば縦方向のサイズを計測する手段（１００２）と、
前記手段で隣接するバンドの中間データ（４１３）を後段の描画機能（４１４）に送信する手段（１００３）と、
前記手段で１バンドの高さから前記手段で計測したサイズと比較して隣接するバンドにまたがる描画オブジェクト（６０６）がまだ存在するかどうかを判断する手段（１００４）と、
前記判断手段で存在しないなら次のバンド中間データ（４１３）を別の描画機能（４１５）へ送信する手段（１００５）と、
前記判断手段で存在するのであれば次のバンド中間データを現在の描画機能（４１４）へ送信して再び次のバンドを同じ描画機能（４１４）へ送信する手段（１００３）と、
を有することを特徴とする請求項２に記載の画像形成装置（１０２）。
【請求項４】
印刷データの描画特徴を抽出する手段（７０１）と、
前記描画特徴を対象ページの特徴情報（６０７）として保持する手段（７０２）、
前記描画特徴を対象ページの中間データ（６０１）の特徴情報（６０７）として付加する手段（７０３）と、
前記描画特徴を対象ページ内のバンド領域（６０６）ごとに保持する手段（７０４）と、
前記描画特徴を用いて各バンド領域と隣接するバンド領域とを比較する手段と、
前記描画特徴比較から特徴情報（６０７）の差分を取得する手段（７０５）と、
前記描画特徴差分と隣接するバンド領域ごとに特徴情報（６０７）の閾値とを比較する手段（７０６）と、
前記描画特徴の閾値からレンダリングシステムの構成をパイプライン処理（７１０）か並列分散処理（７０９）かを判断する手段と、
前記描画特徴の判断で決定したレンダリングシステムを構築する手段（７１１）と、
を有することを特徴とした画像形成方法。
【請求項５】
前記レンダリングシステムを構築する手段（７１１）は、
マルチＣＰＵで構成されたレンダリングシステムを有する手段（図４(a）、図４(b)）と、 
前記手段において入力される中間データ（６０１）のページ毎にバンド内のエッジ数とオブジェクト数（６０６）を集計する手段（８０１、８０２）と、
前記印刷データのエッジ数とオブジェクト数（６０６）をメタデータ（６０７）として描画用の中間データ（６０１）に付加する手段（８０３）と、 
前記印刷データを描画データ解析部（３０４）で読み込む手段（８０４）と、
前記印刷データのメタデータ（６０７）から隣接するバンドに一定値以下のオブジェクト数（６０６）を有するバンドが存在するならレンダリングの構成を並列分散処理構成（図４(b)）にする手段（８０９）と、
前記判断手段で中間データ（６０１）の隣接するバンドがある閾値以上のオブジェクト数（６０６）を有するバンドが存在するかどうかをページの最後まで比較する手段（８０７、８０８）と、
前記判断手段で中間データ（６０１）の最後のバンドまで比較したらエッジ総数（６０５）を一定の閾値と比較する手段（６０７）と、
前記判断手段で一定の閾値以上のエッジ総数（６０５）を含むときは、並列分散処理構成（図４(b)）にする手段（８０９）と、 
前記判断手段で一定の閾値以上のエッジ数を含まないときは、パイプライン処理構成（図４(a)）にする手段（８１１）と、 
前記判断手段で決定した構成に合わせてレンダリングシステムを変更する手段（８１２）と、 
を有することを特徴とする請求項４に記載の画像形成方法。 
【請求項６】
前記並列分散処理構成の手段（図４(b)）は、
現在処理中のバンド中間データ（４１３）のバンドには隣接するバンドをまたがる描画オブジェクト（６０６）が存在するかどうかを判断する手段（１００１）と、
前記判断手段で隣接するバンドにまたがる描画オブジェクト（６０６）が存在しなければ現在処理中のバンド中間データ（４１３）を描画制御機能（４１４）へ送信する手段と、
前記判断手段で隣接するバンドにまたがる描画オブジェクト（６０６）が存在すれば縦方向のサイズを計測する手段（１００２）と、
前記手段で隣接するバンドの中間データ（４１３）を後段の描画機能（４１４）に送信する手段（１００３）と、
前記手段で１バンドの高さから前記手段で計測したサイズと比較して隣接するバンドにまたがる描画オブジェクト（６０６）がまだ存在するかどうかを判断する手段（１００４）と、
前記判断手段で存在しないなら次のバンド中間データ（４１３）を別の描画機能（４１５）へ送信する手段（１００５）と、
前記判断手段で存在するのであれば次のバンド中間データを現在の描画機能（４１４）へ送信して再び次のバンドを同じ描画機能（４１４）へ送信する手段（１００３）と、
を有することを特徴とする請求項５に記載の画像形成方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のプロセッサを有するレンダリングの構成をデータごとに変更することで、画像処理装置の印刷速度の向上に関する。
【背景技術】
【０００２】
スキャンラインレンダリングの構成方法として、複数のサブＣＰＵをパイプラインで処理する方法がある。描画機能を有しているマルチプロセッサは、描画命令コマンドを次のサブＣＰＵにＦＩＦＯ（First In,First Out）を通じて送信する。ＦＩＦＯは通常のメモリアクセスよりも高速にデータを転送可能なバスを利用する。
【０００３】
一方、ＦＩＦＯによるデータ転送方法を採用したマルチプロセッサの描画処理で並列処理を行う方法が検討されている。１つのサブＣＰＵに２つ機能を含むプログラムを並列に処理する。その際に並列したサブＣＰＵからは、後段の機能へＦＩＦＯではなくメモリバッファを使用してデータを転送する。それぞれの構成にはボトルネックがあり、構成ごとにさまざまな解決方法が提案されてきた。特許文献１は、複数のマルチプロセッサを用いたレンダリングシステムで、ＦＩＦＯ内のデータがFull状態だったら、データバスのパスを切り替えて別のメモリバッファにデータを送信する。コマンドキューがEmptyになれば従来のデータパスに戻すことで、データの詰まりを無くして高速に描画することが可能となる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開2011-56703号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、パイプライン処理と並列分散処理ではデータの傾向により、プロセッサ間のデータ転送時にコマンドキューの詰まりが発生する。 
【０００６】
パイプライン処理のレンダラでは、エッジを多く含むものなど１機能の処理で描画データの負荷が大きすぎて、次の後段へ描画データを送信時にＦＩＦＯが詰まるなどの問題がある。
【０００７】
一方、並列分散処理では、バンド領域の一部分に描画オブジェクトが密集していると、片方のサブＣＰＵの負荷が大きくなる。そのため、並列分散処理ではコマンドキューをメモリバッファにスプール出来る容量は限れられているため、ラスター走査線上に描画する際に片方のサブＣＰＵの処理が終わるまで後段の処理が待ち続けるケースがある。また、並列分散処理は並列のサブＣＰＵと後段とにコマンドキューをメモリバッファへ送信するため、ＦＩＦＯが利用できずメモリアクセスの時間がパイプライン処理よりもかかる。さらに、隣あうバンド領域に描画オブジェクトがまたがっているとき、同一機能のサブＣＰＵがバンドごとに処理するのに比べて、１つのサブＣＰＵが同じ描画オブジェクトのキャッシュデータを扱えるため有効である。
【０００８】
以上から、各構成は印刷データの内容によってボトルネックがあり、本特許は印刷データごとにレンダリングシステムの構成を切り替える方法を示す。
【課題を解決するための手段】
【０００９】
印刷データの描画特徴を抽出する手段（７０１）と、
前記描画特徴を対象ページの特徴情報（６０７）として保持する手段（７０２）、
前記描画特徴を対象ページの中間データ（６０１）の特徴情報（６０７）として付加する手段（７０３）と、
前記描画特徴を対象ページ内のバンド領域（６０６）ごとに保持する手段（７０４）と、
前記描画特徴を用いて各バンド領域と隣接するバンド領域とを比較する手段と、
前記描画特徴比較から特徴情報（６０７）の差分を取得する手段（７０５）と、
前記描画特徴差分と隣接するバンド領域ごとに特徴情報（６０７）の閾値とを比較する手段（７０６）と、
前記描画特徴の閾値からレンダリングシステムの構成をパイプライン処理（７１０）か並列分散処理（７０９）かを判断する手段と、
前記描画特徴の判断で決定したレンダリングシステムを構築する手段（７１１）と、
を有することを特徴とした画像形成装置（１０２）。
【発明の効果】
【００１０】
本特許では、描画データのパスを変更するのではなく、サブＣＰＵの構成を印刷内容によって切り替えることで、並列の構成では２つの機能を有したサブＣＰＵを使用するため、ＦＩＦＯ内の描画データ詰まりを軽減できる。
【００１１】
また、印刷データごとにサブＣＰＵの構成を変更することでサブＣＰＵの負荷を軽減することができる。以上から、本特許の技術は描画データの詰まりを解消して印刷速度の向上を実現する。
【図面の簡単な説明】
【００１２】
【図１】本発明の印刷装置における実施例の一形態であるプリンタの構成を示すブロック図である。
【図２】実施形態における各機器のコントローラユニットの構成例を示すブロック図である。
【図３】実施形態におけるコントローラソフトウェアの構成の一例を示す図である。
【図４（ａ）】実施形態における描画方法のパイプライン構成例を示すブロック図である。
【図４（ｂ）】実施形態における描画方法の並列分散構成例を示すブロック図である。
【図５】実施形態における描画データから各サブＣＰＵの制御方法の一例を示す図である。
【図６】実施形態における中間データの構成を示す図である。
【図７】本発明の実施形態におけるレンダリングシステムの構成を変更するプログラムを示すフローチャート図である。
【図８】実施形態１における描画方法の構成を変更する例を示すフローチャート図である。
【図９】実施形態におけるバンドをまたがる描画データの例を示す図である。
【図１０】実施形態２における並列分散処理構成の描画をするときに各サブＣＰＵへバンド中間データを送信する方法を示すフローチャート図である。
【発明を実施するための形態】
【００１３】
以下、本発明を実施するための最良の形態について図面を用いて説明する。
【００１４】
『プリンタの構成』
図１は、本発明を実施する印刷装置の一形態であるプリンタの構成を示すブロック図である。
【００１５】
プリンタコントローラ部１０３と、プリンタエンジン部１０５と、操作パネル部１０４とを備える。プリンタコントローラ部１０３は、ホストコンピュータ（以下、ホスト）などの外部機器１０１からコードデータ（各種ページ記述言語（以下、ＰＤＬ））が入力される。そのコードデータを解析することによってイメージデータ（ページ情報）を生成する。この生成されたイメージデータはインターフェースを介してプリンタエンジン部１０５に送信する。プリンタエンジン部１０５は、電子写真プロセスにより、プリンタコントローラ部１０３によって生成されたイメージデータが示す画像を用紙上に形成する。プリンタエンジン部１０５には、各機構と、その各機構による各印字プロセス処理（例えば、給紙処理など）に関する制御を行うエンジン制御部とが含まれている。操作パネル部１０４は、ユーザとのインターフェースを司り、プリンタ１０２に対する所望の動作を指示するための入力操作を行うための操作部を構成する。
【００１６】
『プリンタコントローラ部の構成』
次に、プリンタコントローラ部１０３の構成について図２を参照しながら説明する。プリンタコントローラ部１０３は、プリンタコントローラ部１０３全体を制御するためのＣＰＵ２０２で、外部機器１０１との間でやり取りされる信号の入出力部を構成する。ＲＡＭ２０４は、ＣＰＵ２０２が動作するためのシステムワークメモリであり、入力された画像データを一時記憶するための画像メモリである。さらに、ＲＯＭ２０５にはシステムの制御コードが格納されている。また、プリンタコントローラ部１０３は、外部機器１０１との間の通信制御を行うホストＩ／Ｆ２０３とを有している。
【００１７】
ラスタイメージプロセッサ（ＲＩＰ）２０６は、ＰＤＬデータなどをビットマップデータに展開する。ホストＩ／Ｆ２０３を介して入力されたコードデータから、ＣＰＵ２０２はＲＯＭ２０５に格納されている制御コードに従い、ＲＩＰ２０６からプリンタエンジン部１０５が処理可能なビットマップデータの生成を行う。
【００１８】
ビットマップデータは、エンジンＩ／Ｆ部２０７を介してビデオ信号としてプリンタエンジン部１０５に転送される。エンジンＩ／Ｆ部２０７は、プリンタエンジン部１０５とでやり取りされる信号の入出力部を構成するとともに、プリンタエンジン部１０５との間の通信制御を行う。
【００１９】
パネル部１０４から操作入力によって出されたモード設定に関する指示などは、操作パネルＩ／Ｆ部２０７を介して入力され、操作パネルＩ／Ｆ部２０７はパネル部１０４とＣＰＵ２０２の間のインターフェースを構成する。
【００２０】
ＣＰＵ２０２は、パネル部１０４から指示されたモードに応じて上述の各ブロックに対する制御を行い、この制御はＲＯＭ２０５に格納されている制御コードに基づき実行される。上述のＣＰＵ２０２を含む各ブロックは、システムバス２０８にＣＰＵがアクセス可能なように接続されている。ＨＤＤ２０９はハードディスクドライブであり、各種処理のためのシステムソフトウェア及び入力された画像データなどを格納する。
【００２１】
『コントローラソフトウェアの構成』
図３は、印刷装置の動作を制御するコントローラソフトウェアの構成を示すブロック図である。
【００２２】
プリンタインターフェース３０１は、外部との入出力のための手段である。プロトコル制御３０２は、ネットワークプロトコルを解析・送信することによって外部との通信を行う手段である。
【００２３】
ＰＤＬデータ解析部３０３は、ＰＤＬデータを解析して処理しやすい形式の中間記述データ（中間データ４０１）に変換される。ＰＤＬデータ解析部３０３は、ページ内の総エッジ数と、バンド単位の範囲内のオブジェクト数とをカウントする。集計した情報は、中間データ４０１に追加されてデータ描画部３０４に渡されて処理される。データ描画部３０４は上記中間コードをビットマップデータに展開するものであり、展開されたビットマップデータはページメモリ３０５に逐次描画されていく。
【００２４】
ページメモリ３０５はレンダラが展開するビットマップデータを一時的に保持する揮発性のメモリである。
【００２５】
パネル入出力制御部３０６は操作パネルからの入出力を制御するものである。ドキュメント記憶部３０７は入力文書の一塊（ジョブ）単位にＰＤＬデータを記憶する手段であり、ＨＤＤ２０９などの2次記憶装置によって実現される。
【００２６】
スキャン制御部３０８はスキャナから入力した画像データに対して、補正、加工、修正などの各種処理を行う。
【００２７】
印刷制御部３０９は、ページメモリ３０５の内容をビデオ信号に変換処理し、プリンタエンジン部１０５へ画像転送を行う。プリンタエンジン部１０５は受け取ったビデオ信号を記録紙に可視画像形成する。
【００２８】
『スキャンラインレンダラの構成』
図４は、データ描画部３０４でのスキャンラインレンダラ（図４（a）、図４（b））の構成を示すブロック図である。図に示した構成は、ＲＩＰ２０６がそれぞれサブＣＰＵを用いたスキャンラインレンダラのパイプライン処理構成４０２（図４(a)）と、並列分散処理４１２（図４(b)）となる。
【００２９】
中間データ４０１はＰＤＬデータをＰＤＬデータ解析部３０３で変換した中間コードである。スキャンラインレンダラでは、中間データ４０１を入力データとして、輪郭書き出し処理部４０３、重なり整列処理部４０５、色塗り処理部４０７、色合成処理部４０９を経てビットマップデータ４１１を生成する。また、各４つの処理は、それぞれサブＣＰＵに割り振られており、次の処理に向けて描画データ（専用命令コマンド）を送信する。各機能が送信する描画データは、ＦＩＦO１(４０４)、ＦＩＦＯ２（４０６）、ＦＩＦＯ３（４０８）、ＦＩＦＯ４（４１０）を用いてサブＣＰＵ間のデータ入出力を行う。ビットマップデータ４１１はページメモリ３０６へ保持される。パイプライン処理構成４０２と、各サブＣＰＵの機能について図５を用いて説明する。図５は、ＰＤＬデータの描画データの1例（５０１）を示している。
【００３０】
輪郭書き出し処理部４０３は、中間データ４０１に含まれる描画オブジェクトから輪郭情報を取得する処理である。輪郭情報は、描画オブジェクトの輪郭の開始点位置、及び輪郭幅の２つの情報を指している。輪郭書き出し処理部４０３で取得された輪郭の情報が画像データの１スキャンライン分揃ったら、輪郭座標の情報をＦＩＦＯ１（４０４）から通じて次の重なり整列処理部４０５に送る。図５では、輪郭書き出し処理部４０３が、描画データの描画オブジェクト５０２と描画オブジェクト５０３の輪郭開始と終了ごとに１スキャンライン分の情報を５つ抽出している（５０４、５０５，５０６、５０７、５０８）。５つの情報は、レベルごとに色情報と色合成の有無の情報とが保持されている。各データ（５０４、５０５、５０６，５０７）は、サブＣＰＵ間のコマンドキューとして送信される。
【００３１】
重なり整列処理部４０５は、輪郭座標の情報と描画オブジェクト同士の重なりの上下関係を元に紙面に対して描画オブジェクトが正しい順番で並ぶように整列処理する。整列済みの輪郭情報は、画像データの1スキャンライン分揃った後、色塗り処理部４０７へＦＩＦＯ２（４０６）から通しておくられる。図５のように、各輪郭座標に描画オブジェクトの重なりが存在する領域ごとに付加する。描画データ５０１の背景に関しては、レベル０としている。図５では、最もレベル数の多い輪郭座標が５０６の領域になり、描画オブジェクトの重なりごとに並び変えられる。
【００３２】
色塗り処理部４０７は、整列済みの輪郭情報に対して、輪郭で区切られる１つ１つの区間に対して色情報を付加する。色塗り処理部４０７で生成された色情報が付加された整列済みの輪郭情報は、1スキャンライン分揃ったら、ＦＩＦＯ３（４０８）から通して色合成処理部４０７へ送られる。図５のように、色塗り処理部４０７は重なり整列処理部４０５が整列したレベルごとの描画オブジェクトの色情報を中間データ４０１から取得する。色塗り処理部４０７は、描画オブジェクト５０３、５０３のように重なりあうときに色合成ありの情報を色合成処理４０９へ送信する。
【００３３】
色合成処理部４０９は、色情報が付加された整列済みの輪郭情報を元に輪郭で区切られた領域かつ、その区切られた領域のうち他の輪郭で区切られた領域と重なっている部分同士に対して中間データ４０１に従った重なりルールを適用する。重なりルールとは、ＲＯＰ（RasterOPerator）とαブレンドがある。ＲＯＰとは、領域同士が重なっている部分に、全面側と背面側の色値を表現するbit同士で行われる論理演算である。重なりルールとしてＲＯＰが指定された場合、全面側と背面側との領域を表現する色値の間で論理演算が行われた結果が出力される。αブレンドとは、輪郭で区切られた領域同士で重なっている部分に対して、両者のうち全面側及び背面側の色を混ぜて出力するときの双方の割合比を指定する。色合成処理部４０９では、重なりルールを運用し、重なっている領域の全面と背面の領域からどのような色を出力するかを決定する。色合成処理部４０７で生成されたデータは、画像データの1ピクセルごとの色情報としてＦＩＦＯ４（４１０）から通してビットマップデータ４１１が出力される。図５のように、色合成処理部４０９は、通常のレベル０とレベル１の合成（５０５、５０７）に関しては色合成無しのため、描画オブジェクトが上位のレベルの色情報をビットマップデータ４１１として出力する。色合成処理部４０９は、レベル２以上の描画オブジェクトが存在する図５の描画オブジェクト５０２と、レベル１の描画オブジェクト５０３との色情報の合成を輪郭情報の領域（５０６）で行う。
【００３４】
次に、並列分散処理構成４１２について説明する。バンド中間データ４１３は、ページ内を横方向に等間隔でバンド状に分割したデータである。輪郭書き出し処理／重なり整列処理４１４、４１５は、１つのサブＣＰＵに輪郭書き出し処理４０３、重なり整列処理４０５の２つの機能を有した処理を行う。並列分散処理構成４１２は、輪郭書き出し処理／重なり整列処理４１４、４１５を２つのサブＣＰＵに展開することで、並列に同じ機能を処理する。輪郭書き出し処理／重なり整列処理４１４、４１５は、バンド単位のデータをデータスプールメモリ４１６の領域に展開する。データスプールメモリ４１６は、ＲＡＭ２０４のメモリ領域内の一部であり、数バンドのデータを一時的に保持する。色塗り処理４０７は、データスプールメモリ４１６からバンド領域のデータを読み込んで後段の色合成処理部４０９へと送られる。色塗り処理４０７と色合成処理部４０９とは、パイプライン処理構成と同じくＦＩＦO３（４０８）とＦＩＦＯ４（４１０）とを用いてデータの転送を行う。
【００３５】
『中間データのデータ構成』
図６は、中間データ内の構造を示している。中間データ６０１は、複数ページからなるデータである。ＰＤＬ解析部３０３は、中間データ６０１をドキュメント記憶部３０７から読み出して、中間データ内のページ単位の構成６０４、メタデータ６０７とバンド分割された中間データ６０８を生成する。中間データ内のページ単位の構成６０４は、ドキュメントヘッダ６０２と描画展開用のインストラクション６０３から構成される。ドキュメントヘッダ６０２は、中間データ内のページ単位の構成６０４の格納場所が記述されている。また、ドキュメントヘッダ６０２には、ページ毎のエッジ数やオブジェクト数といったメタデータ６０７が関連づけされている。このメタデータ６０７は、ドキュメントヘッダ６０２の総エッジ数、オブジェクト数６０５だけでなくバンド単位の情報６０６でも構成されている。バンド情報６０６は、各ドキュメントヘッダ６０２のページでバンド単位ごとのエッジ数、オブジェクト数を示している。中間データ６０１は、ドキュメントヘッダ６０２を先頭とする階層構造となっており、メタデータ６０７が各ドキュメントヘッダ６０２の下の階層に位置する。バンド中間データ６０８はドキュメント記憶部３０７にページ単位で保持される。
【００３６】
［実施例１］
本特許の実施例を図７のフローチャートを用いて説明する。図７のフローチャートを構成するプログラムは、プリンタ１０２の電源を起動時にＲＯＭ２０５からＲＡＭ２０４へ展開される。ＣＰＵ２０２は、図８のフローチャートの各ステップをＲＡＭ２０４のプログラムから読み込んで実行する。
【００３７】
ＰＤＬ解析部３０３は、中間データ６０１の先頭ページの描画インストラクション６０３から描画特徴を抽出する（７０１）。特徴情報は、図６ではメタデータ６０７を構成するデータであり、中間データ内の描画オブジェクトや、エッジ数など描画に必要な情報であれば特に限定はしない。次に、ステップ７０２ではステップ７０１で抽出した特徴情報をページ単位（６０５）で保持する。ステップ７０３は、抽出した特徴情報であるメタデータ６０７をドキュメントヘッダ６０２に展開先のアドレスを関連づける。また、ステップ７０４では、各ページ内の特徴情報をバンド領域ごとに保持する（６０６）。
【００３８】
ステップ７０５は、ページの先頭のバンドとバンドに隣接するバンドとの特徴情報の差分を取得する。ステップ７０６では、メタデータ６０７のバンドごとの特徴情報６０６の差分と閾値とを比較する。閾値は、隣接するバンドに印刷処理の速度に差があるかどうかを判断する基準値である。ステップ７０６の判断で特徴情報の差分が閾値以下、つまり印刷処理の時間に差がないと判断できれば並列分散処理構成７０９を選択する。閾値の具体的な値については、並列分散処理構成４１２のデータスプールメモリ４１６の容量や、サブＣＰＵの性能を考慮して決定すればよい。隣接するバンドの特徴情報の差分が、閾値よりも大きければ次のバンド領域の特徴情報を取得する（７０７）。以降、バンド領域が最終バンドまで読み込んで（７０８）、特徴情報の差分が閾値以下である（７０６）かどうかを判断する。最後のバンドまで隣接するバンドの特徴情報の差分が閾値以上であれば、パイプライン処理構成を選択する（７１０）。ステップ７１１は、最後にステップ７０９、ステップ７１０で選択した構成を元にデータ描画部３０４のレンダリングシステムの構成を変更する（図４（a）、図４（b））。以上のように、中間データ６０１の各バンドの特徴情報を元に隣接するバンド領域との差分を比較することで、並列分散処理構成４１２で片方のサブＣＰＵの処理待ちで後段の処理が止まるといった現象を回避できる。
【００３９】
［実施例２］
実施例２では図７のフローチャート図を具体的なパラメータを用いて図８のフローチャートで説明する。図８のフローチャートを構成するプログラムの制御方法については、実施例１で説明したため省略する。ＰＤＬ解析部３０３は、中間データ６０１の先頭ページの描画インストラクション６０３からバンド単位ごとにエッジ数とオブジェクト数６０６を集計する（８０１）。
【００４０】
次に、最終バンドまで集計が終わると、各バンド内のエッジ数とオブジェクト数の総和６０５を求める（８０２）。最後に、集計したオブジェクト数と総エッジ数を各ページの先頭アドレスからメタデータ６０７として中間データ６０１に階層構造としてドキュメントヘッダ６０２に展開先のメモリアドレスを関連づける（８０３）。ＰＤＬ解析部３０３は、ユーザから投入されたジョブを、各ページのバンド中間データ６０８としてドキュメント記憶部３０７に書き込む。データ描画部３０４は、ドキュメント記憶部３０７にあるバンド中間データ６０８からメタデータ６０７の情報を取得する（８０４）。データ描画部３０４は、バンド中間データ６０８のバンド情報６０７から、隣接するバンドごとに描画オブジェクト数が一定値以下であるかどうかを判断する（８０５）。ステップ８０５の隣接するブロックとは、図９のようなバンドごとに描画データを区切ったときのバンド（９０１）、（９０２）のブロック同士である。
【００４１】
図９はバンドごとに描画データを区切った領域と、描画データの様子を示す一例である。データ描画部３０４は、対象ページのドキュメントヘッダ６０２からメタデータ６０７のバンド９０１とバンド９０２とのオブジェクト数６０６を比較する。ステップ８０５は、対象となるページの先頭バンドであり、図９ではバンド（９０１）が相当する。次のステップ８０６では、データ描画部３０４がバンド（９０１）と次のバンド（９０２）との隣接するバンドごとにメタデータ６０７のオブジェクト数６０６を比較する。比較したオブジェクト数６０６がある一定の閾値以下であるかどうかを判断する。ここで、隣接するオブジェクト数の閾値は固定ではなく、スキャンラインレンダラを起動するサブＣＰＵの処理速度に応じて変更が可能である。例として、隣接するバンドのオブジェクト数６０６が１００以下である場合、データ描画部３０４はスキャンラインレンダラが並列分散処理構成８０９を選択する。データ描画部３０４は、並列分散処理構成８０９のため、輪郭書き出し処理／重なり整列処理４１４、４１５の機能を選択して各サブＣＰＵに展開する（４１２）。サブＣＰＵに展開するプログラムは、ＲＡＭ２０４に輪郭書き出し処理／重なり整列処理４１４、４１５、色塗り処理４１５、色合成処理部４０９とそれぞれ保持されている。また、各サブＣＰＵが描画データを送信する先に関しても、ＦＩＦＯ３（４０８）やＦＩＦＯ４（４１０）を制御するプログラムをＲＡＭ２０４に展開してＣＰＵ２０２で制御する。一方、データ描画部３０４はステップ８０６の条件で一定値以上のオブジェクト数６０６の差があれば、次の隣り合うバンドへと移動する（８０７）。
【００４２】
ステップ８０８は、移行した先のバンドに隣り合うバンドが存在するかどうかを判断する。データ描画部３０４は、ステップ８０６の条件から各バンドの輪郭書き出し処理／重なり整列処理４１４、４１５がお互いにデータスプールメモリ４１６へ送信するデータの速度が均一となるように、隣接するバンドのオブジェクト数を比較する。本特許では、輪郭書き出し処理／重なり整列処理４１４、４１５が片方のサブＣＰＵで描画データ待ちが発生するのを防ぐため、ステップ８０６のようにバンド単位のオブジェクト数６０６からレンダリング構成を変更する。データ描画部３０４は、ステップ８０８で隣接するバンドごとに閾値以上のオブジェクト数の差があるとき、メタデータ６０７の総エッジ数６０５から構成を切り替える（８１０）。輪郭書き出し処理４０３と重なり整列処理４０５は、エッジ数が１００００以上のデータの場合（８１０）、大量の輪郭情報と重なり情報とが発生するため後段の処理に比べて極端に遅くなってしまう。
【００４３】
そこで、1ページの総エッジ数６０５が１００００以上の場合は、２つの機能を並列処理することで負荷を分散して高速化を図る（８０９）。総エッジ数６０５が条件の値以下なら、並列分散処理構成８０９で輪郭書き出し処理４０３と重なり整列処理４０５をそれぞれ1サブＣＰＵごとに割り当てたパイプライン処理構成（８１１）にする。ここで、輪郭書き出し処理４０３と重なり整列処理４０５との並列処理では、ステップ８０６からステップ８０８で隣接するバンドがすべてオブジェクト数６０６に閾値以上の差が存在することになり、並列分散処理４１２の構成では劣化するためである。データ描画部３０４は各条件（８０６、８１０）をもとに、スキャンラインレンダラの構成の決定する（８１２）。
【００４４】
以上の構成により、印刷時のデータ詰まりを解消するため、印刷データのメタデータからスキャンラインレンダリングの構成方法について説明した。中間データ６０１の特徴から、描画の苦手な構成を回避することで描画速度の向上を示した。
【００４５】
［実施例３］
次に、並列分散処理構成８０９のときのバンドの描画順番を変更する処理について説明する。図９については実施例２で説明したため省略する。図１０は、並列分散処理構成８０９のレンダリングが図９のように隣接するバンドを描画時に、輪郭書き出し処理／重なり整列処理４１４、４１５へ送信するバンドを効率良く描画できるように変更するフローチャート図である。また、並列分散処理構成８０９を選択する処理については、実施例１で説明したため省略する。
【００４６】
図１０のフローチャート図のプログラムは、ＲＡM２０４に格納されており、ＣＰＵ２０２がプログラムを読み込んで実行する。並列分散処理構成８０９では、データ描画部３０４がバンド中間データ４１３を輪郭書き出し処理／重なり整列処理４１４、４１５へ送信する。ステップ１００１は、データ描画部３０４がバンド中間データ４１３のメタデータ６０７にあるバンド情報６０６から各バンドのオブジェクトが次のバンド領域にあるかをチェックする。ステップ１００１では、現在のバンドに隣接するバンドへまたがる描画データ９０４が存在したとき、つぎのステップ１００２で描画データ９０４の縦方向のサイズを計測する。ここで、ステップ１００２は、さきほどのバンド９０１でメタデータ６０７のオブジェクト情報６０６から描画データ９０４のサイズを求める。ステップ１００３では、バンド９０１に隣接するバンド９０２を輪郭書き出し処理／重なり整列処理４１４、４１５の片方のサブＣＰＵへ送信する。本実施例では、輪郭書き出し処理／重なり整列処理４１４へ送信する。次にステップ１００４は、前述のステップ１００２で計測したまたがる描画データ９０４の縦方向のサイズと、バンド高さ９０１とを割り算した値から以降のバンドに存在するかを判断する。ステップ１００４の判断では、以降のバンドにまたがる描画データ９０４が存在したらステップ１００３へ戻り再度次のバンド９０３を輪郭書き出し処理／重なり整列処理４１４へ送信する。ステップ１００４の判断では、次のバンドにまたがるデータ９０４が存在しなければ、もう１つのサブＣＰＵへバンド中間データ４１３を送信する処理を開始する（１００５）。また、ステップ１００６は、ステップ１００１で次のバンドにまたがる描画データ９０４が存在しないときに、現在のバンド中間データ４１３を輪郭書き出し処理／重なり整列処理４１４に送信する。
【００４７】
輪郭書き出し処理／重なり整列処理４１４は、図９の上段３つのバンド９０５のバンド中間データ４１３を処理する。同じく輪郭書き出し処理／重なり整列処理４１５は、図１０のステップ１００１から１００５の処理から図９の後段２つのバンド９０６のバンド中間データ４１３を処理する。
【００４８】
図１０のフローチャートでは、描画インストラクション６０３が隣接するバンドにまたがるデータ９０４に対して輪郭書き出し処理／重なり整列処理４１４の一方のサブＣＰＵへ送信するようにしている。これは、メタデータ６０７のバンドごとのオブジェクト６０６を同じサブＣＰＵで処理することで、サブＣＰＵの輪郭書き出し処理４０３で輪郭の情報を使いまわすことができる。輪郭書き出し処理／重なり整列処理４１４は、他のサブＣＰＵがまたがるデータ９０４を処理する場合、新規の輪郭として処理されてサブＣＰＵ内のキャッシュを利用することができない。よって、図９のようなデータでは、上段の３つのバンド９０５と、下段の２つのバンド９０６を輪郭書き出し処理／重なり整列処理４１４、４１５にそれぞれ送信することで高速に処理することができる。
【符号の説明】
【００４９】
１０２  プリンタ
２０２  ＣＰＵ
２０４  ＲＡＭ
２０５  ＲＯＭ
３０４  データ描画部
【図１】
2013006338.tif 000003
【図２】
2013006338.tif 000004
【図３】
2013006338.tif 000005
【図４（ａ）】
2013006338.tif 000006
【図４（ｂ）】
2013006338.tif 000007
【図５】
2013006338.tif 000008
【図６】
2013006338.tif 000009
【図７】
2013006338.tif 000010
【図８】
2013006338.tif 000011
【図９】
2013006338.tif 000012
【図１０】
2013006338.tif 000013