(57)【要約】【課題】ジョブキャンセル時のユーザビリティを向上させることができる。【解決手段】印刷ジョブに含まれる画像データに対して複数のプロセッサを用いて描画処理を行い、前記描画処理により得られた画素データを後段のハードウェアに出力する描画処理手段と、前記描画処理手段を制御する制御手段と、を備え、前記制御手段は、前記印刷ジョブに対するキャンセル要求を受け付けると、前記描画処理手段に対して前記描画処理を中断させるための指示を行い、前記描画処理手段は、前記指示に応じて前記複数のプロセッサを停止させる際に、前記複数のプロセッサのうち前記ハードウェアに接続されたプロセッサに、所定の画素値の画素データを未処理の画素数分出力させる。【選択図】図９
2020026107.tif 000002
【特許請求の範囲】
【請求項１】
印刷ジョブに含まれる画像データに対して複数のプロセッサを用いて描画処理を行い、前記描画処理により得られた画素データを後段のハードウェアに出力する描画処理手段と、
前記描画処理手段を制御する制御手段と、を備え、
前記制御手段は、前記印刷ジョブに対するキャンセル要求を受け付けると、前記描画処理手段に対して前記描画処理を中断させるための指示を行い、
前記描画処理手段は、前記指示に応じて前記複数のプロセッサを停止させる際に、前記複数のプロセッサのうち前記ハードウェアに接続されたプロセッサに、所定の画素値の画素データを未処理の画素数分出力させる
ことを特徴とする画像処理装置。
【請求項２】
前記制御手段は、前記複数のプロセッサに割り込みメッセージを送信することにより前記指示を行う
ことを特徴とする請求項１に記載の画像処理装置。
【請求項３】
前記制御手段は、
前記複数のプロセッサをリセットすることにより前記指示を行い、
前記所定の画素値の画素データを未処理の画素数分出力させるためのプログラムをメモリ上に展開してから前記リセットを解除し、
前記ハードウェアに接続された前記プロセッサは、前記リセットが解除されると、前記プログラムに従って前記所定の画素値の画素データを出力する
ことを特徴とする請求項１に記載の画像処理装置。
【請求項４】
前記複数のプロセッサは、前記描画処理に含まれる複数の処理を分担するようにパイプライン状に接続されていて、
前記描画処理手段は、
パイプライン状に接続された前記複数のプロセッサのうち末尾のプロセッサに、前記所定の画素値の画素データを未処理の画素数分出力させる
ことを特徴とする請求項１から請求項３のうちのいずれか１項に記載の画像処理装置。
【請求項５】
前記複数のプロセッサは、各プロセッサ間に設けられたバッファを経由してデータの送受信を行い、
前記指示に応じて前記複数のプロセッサが停止する際に、前記バッファに格納されているデータが削除される
ことを特徴とする請求項１から請求項４のうちのいずれか１項に記載の画像処理装置。
【請求項６】
前記描画処理手段は、
前記指示に応じて前記複数のプロセッサを停止させる際に、前記複数のプロセッサに、前記バッファに格納されているデータを読み出す処理を実行させて、前記バッファから前記データを削除する
ことを特徴とする請求項５に記載の画像処理装置。
【請求項７】
前記制御手段は、
前記印刷ジョブに対するキャンセル要求を受け付けると、前記バッファをリセットさせて、前記バッファに格納されているデータを削除する
ことを特徴とする請求項５に記載の画像処理装置。
【請求項８】
前記ハードウェアが、前記描画処理手段により得られた画素データに従って画像を形成するデバイスであって、且つ、前記画像の形成が完了するまで停止状態に移行できないデバイスであり、
前記描画処理手段は、
前記指示を受け付けると、前記デバイスに既に出力した画素数と、形成すべき前記画像の画素数とから、前記未処理の画素数を導出する
ことを特徴とする請求項１から請求項７のうちのいずれか１項に記載の画像処理装置。
【請求項９】
印刷ジョブに含まれる画像データに対して複数のプロセッサを用いて描画処理を行い、前記描画処理により得られた画素データを後段のハードウェアに出力する描画処理手段と、
前記描画処理手段を制御する制御手段と、を備える画像処理装置の制御方法であって、
前記制御手段が、前記印刷ジョブに対するキャンセル要求を受け付けると、前記描画処理手段に対して前記描画処理を中断させるための指示を行うステップと、
前記描画処理手段が、前記指示に応じて前記複数のプロセッサを停止させる際に、前記複数のプロセッサのうち前記ハードウェアに接続されたプロセッサに、所定の画素値の画素データを未処理の画素数分出力させるステップと、を含む
ことを特徴とする制御方法。
【請求項１０】
コンピュータを、請求項１から請求項８のうちのいずれか１項に記載の画像処理装置として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、印刷ジョブのキャンセル処理に関し、特に、プリンタで実行中の印刷ジョブに対してキャンセル要求を受け付けた場合に、その印刷ジョブのレンダリング処理を中止する技術に関する。
【背景技術】
【０００２】
ユーザ操作によって印刷ジョブに対するキャンセル要求が発生した場合、プリンタ内部の各モジュールは、現在行っている処理を強制停止する。しかし、モジュールによっては、一通りの処理を終えてからでないと停止することができないものがある。そのようなモジュールが処理の途中で強制停止された場合、該モジュールは、停止後の新たな印刷ジョブおいて適切に処理を行うことができなくなる。例えば、強制停止により処理されずに残った未処理のデータにより、新たに実行される印刷処理において定着器による裏写りが発生する可能性がある。
【０００３】
そこで、ジョブキャンセル要求を受け付けた場合に、画素データを生成する描画部が、未描画の画素データについて所定の色値（例えば白色）のデータを後段の画像処理部に送信する方法が提案されている（特許文献１参照）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１２−８６４５０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかし、特許文献１に記載の方法では、１スキャンライン分送信し終えるごとに、ジョブキャンセル要求が発生しているかどうか判定しているので、ジョブキャンセル要求が検知されるまでにタイムラグが生じる場合がある。それにより、キャンセル終了待ち時間を発生させ、ユーザビリティを低下させる可能性がある。また、１スキャンライン上に存在する描画オブジェクトの数が多くなると、それに伴い１スキャンライン分の画素データを送信し終える時間が増加する。そのため、ユーザビリティをさらに低下させる可能性がある。
【０００６】
そこで、本発明は、ジョブキャンセル時のユーザビリティを向上させることができる画像処理装置を提供することを目的とする。
【課題を解決するための手段】
【０００７】
本発明による画像処理装置は、印刷ジョブに含まれる画像データに対して複数のプロセッサを用いて描画処理を行い、前記描画処理により得られた画素データを後段のハードウェアに出力する描画処理手段と、前記描画処理手段を制御する制御手段と、を備え、前記制御手段は、前記印刷ジョブに対するキャンセル要求を受け付けると、前記描画処理手段に対して前記描画処理を中断させるための指示を行い、前記描画処理手段は、前記指示に応じて前記複数のプロセッサを停止させる際に、前記複数のプロセッサのうち前記ハードウェアに接続されたプロセッサに、所定の画素値の画素データを未処理の画素数分出力させることを特徴とする。
【発明の効果】
【０００８】
本発明によれば、ジョブキャンセル時のユーザビリティを向上させることができる。
【図面の簡単な説明】
【０００９】
【図１】第１実施形態にかかる画像形成装置を含む印刷システムの構成の一例を示すブロック図である。
【図２】ディスプレイリストのレンダリング処理を説明するためのブロック図である。
【図３】中間データの構成の一例を示す図である。
【図４】ＲＩＰのハードウェア構成の一例を示すブロック図である。
【図５】第１実施形態のパイプライン処理を説明するための図である。
【図６】操作部の構成の一例を示す図である。
【図７】第１実施形態の画像形成装置における印刷処理の開始から終了までのシーケンスを示す図である。
【図８】ＣＰＵがＲＩＰに対し中断指示を含むメッセージを送信してからＲＩＰが所定のピクセルを送信し終えるまでの第１実施形態におけるシーケンスを示す図である。
【図９】第１実施形態の画像形成装置の印刷処理を示すフローチャートである。
【図１０】従来のサブプロセッサの動作を説明するための図である。
【図１１】第１実施形態のサブプロセッサの動作を説明するための図である。
【図１２】ＣＰＵがＲＩＰに対し中断指示を含むメッセージを送信してからＲＩＰが所定のピクセルを送信し終えるまでの第２実施形態におけるシーケンスを示す図である。
【図１３】第２実施形態の画像形成装置の印刷処理を説明するための図である。
【発明を実施するための形態】
【００１０】
以下、本発明を実施するための形態について図面を用いて説明する。なお、以下の実施の形態に記載されている構成要素は、本発明の例としての形態を示すものであり、本発明の範囲をそれらのみに限定するものではない。また、各図において、同一の構成要素については同一の参照番号を付し、重複する説明は省略する。
【００１１】
＜第１実施形態＞
以下、第１実施形態について図面を用いて説明する。図１は、第１実施形態にかかる画像形成装置１１０を含む印刷システムの構成の一例を示すブロック図である。図１に示すように、第１実施形態にかかる画像形成装置１１０は、ホストコンピュータであるＰＣ１０１とＬＡＮ１０２を介して接続されている。ユーザは、印刷するページ情報を示すＰＤＬデータをＰＣ１０１において生成し、ＰＣ１０１からＬＡＮ１０２を介して画像形成装置１１０に送信する。本実施形態における画像形成装置１１０は、ＭＦＰ（Ｍｕｌｔｉ  Ｆｕｎｃｔｉｏｎ  Ｐｒｉｎｔｅｒ）であっても、ＳＦＰ（Ｓｉｎｇｌｅ  Ｆｕｎｃｔｉｏｎ  Ｐｒｉｎｔｅｒ）であってもよい。また、画像形成装置１１０は、ＭＦＰやＳＦＰ以外のプリンタであってもよい。
【００１２】
［画像形成装置におけるハードウェア構成］
図１を用いて、第１実施形態の画像形成装置１１０におけるハードウェア構成を説明する。図１に示すように、画像形成装置１１０は、ＣＰＵ２２０、ＲＯＭ２２１、ＲＡＭ２２２、記憶装置２２３、操作部Ｉ／Ｆ２２５、ネットワークＩ／Ｆ２２６、及びこれらの構成要素を接続するシステムバス２２７を備える。ネットワークＩ／Ｆ２２６には、ＬＡＮ１０２を介してＰＣ１０１が接続されている。操作部Ｉ／Ｆ２２５には、操作部１１３が接続されている。また、画像形成装置１１０は、ＲＩＰ（ラスタイメージプロセッサ）２３１、画像編集部２３２、画像圧縮部２３３、画像伸長部２３４、デバイスＩ／Ｆ２３５、及びこれらの構成要素間で画像データを高速に転送する画像バス２３０を備える。デバイスＩ／Ｆ２３５にはプリンタ部１１１が接続されていて、画像形成装置１１０は、ＰＣ１０１からＬＡＮ１０２を介して取得したＰＤＬデータ（ページ記述言語で記述された印刷データ）に従って、プリンタ部１１１に印刷を実行させる。さらに、画像形成装置１１０は、イメージバスＩ／Ｆ２２８を備える。イメージバスＩ／Ｆ２２８は、システムバス２２７と画像バス２３０とを接続するためのインタフェースであり、データ構造を変換するバスブリッジである。なお、操作部１１３及びプリンタ部１１１は、画像形成装置１１０の外部に設置されていてもよい。以下において、操作部１１３及びプリンタ部１１１を含まない画像形成装置１１０を、画像処理装置と呼ぶ場合がある。また、デバイスＩ／Ｆ２３５には、プリンタ部１１６以外の画像出力デバイスが接続されていてもよい。
【００１３】
ＣＰＵ２２０は、画像形成装置１１０全体を制御するための中央処理部である。ＲＡＭ２２２は、ＣＰＵ２２０が動作するためのシステムワークメモリである。また、ＲＡＭ２２２は、ＰＣ１０１から受信されたＰＤＬデータや、画像形成処理のために生成される中間データ、画像形成処理に使用される画像データなどを一時的に格納するためのメモリでもある。また、ＲＡＭ２２２は、レンダリング処理を行う際の作業領域としても利用される。ＲＯＭ２２１は、例えばブートＲＯＭであり、システムのブートプログラムが格納されている。記憶装置２２３は、例えばハードディスクドライブであり、各種処理のためのシステムソフトウェアおよびＰＤＬデータを格納する。プリンタ部１１１は、デバイスＩ／Ｆ２３５と接続され、ＣＰＵ２２０で生成された画像データをシート（紙）に出力する処理を行う。
【００１４】
操作部１１３は、各種メニューや印刷データ情報等を表示するための表示部を有し、操作部Ｉ／Ｆ２２５は、操作部１１３に対して操作画面を表示するためのデータを出力する。また、操作部Ｉ／Ｆ２２５は、ユーザが操作部１１３を介して入力した情報を、ＣＰＵ２２０に伝える。ネットワークＩ／Ｆ２２６は、ＬＡＮ１０２を介して外部装置（例えばＰＣ１０１）との間で情報のやり取りを行うためのインタフェースである。
【００１５】
ＲＩＰ２３１は、ＣＰＵ２２０からの指示に基づき、ＰＤＬデータや中間データ（ディスプレイリスト（ＤＬ））を解析し、ラスタ形式の画像データに展開する。画像編集部２３２は、ＲＩＰ２３１によって展開された画像データに対し、色空間変換や輪郭補正といった画像編集を行う。画像圧縮部２３３は、ＲＩＰ２３１のイメージ展開で得られる画像データを圧縮し、圧縮して得られた画像データを画像バスＩ／Ｆ２２８を通してＲＡＭ２２２に格納する。画像伸長部２３４は、ＲＡＭ２２２に格納された画像データを伸長し、伸長された画像データを画像バス２３０を通してＲＩＰ２３１やデバイスＩ／Ｆ２３５に転送する。画像圧縮部２３３と画像伸長部２３４は、ユーザによってボックス保存が指定されている場合には、ＲＩＰ２３１によって展開されたラスタ形式の画像データを保存する。保存された画像データは、ユーザの指示に応じて印刷が行われる際に使用される。また、画像圧縮部２３３と画像伸長部２３４は、ＲＩＰ２３１による展開処理がプリンタ部１１１の印刷処理よりも処理時間が短い場合に、展開後のラスタ形式の画像データを一時的に保存するために使用される場合もある。デバイスＩ／Ｆ２３５は、プリンタ部１１１にデータを送信するためのインタフェースである。
【００１６】
［用語の定義］
ここで、本明細書で使用する、「ディスプレイリスト」「エッジ」「スキャンライン」「スパン」「レベル」「フィル」の各用語について説明する。
【００１７】
ディスプレイリストとは、各種ＰＤＬデータを変換して得られる、ＲＩＰ２３１が処理できる共通フォーマットの中間データである。ディスプレイリストには、インストラクションと呼ばれる所定の座標にオブジェクトを描画するための描画命令と各オブジェクトに関係するエッジ情報や、レベル情報や、レベル情報に関係するフィル情報などが記載されている。
【００１８】
エッジとは、ページ内に描画するオブジェクトとオブジェクトとの境目、またはオブジェクトと背景との境目を指す。オブジェクトは左右（スキャンラインにおける上流下流）のエッジにより形状が形成される。
【００１９】
ここで、スキャンラインに沿ってスキャン処理が実行される。１スキャンラインの２次元平面における高さは１ピクセルとなっている。また、複数のスキャンラインを束ねたものをバンドと呼ぶ。
【００２０】
スパンとは、単一のスキャンラインにおいて、エッジ間の区間を指す。この区間のことを閉領域とも呼ぶ。
【００２１】
レベルとは、ページ内に描画するオブジェクト同士の上下関係を示す情報（番号）であり、必ずオブジェクト毎にレベル（番号）が割り振られている。レベルは、Ｚオーダーとも呼ばれ、ページの背面から前面に向かう方向（ページの描画範囲をＸＹ平面で表現した際のＸＹ平面に直交する方向：Ｚ軸方向）に沿ったオブジェクトの並び順を表す。なお、上記のとおりオブジェクトは左右のエッジにより形状が形成されるので、ページ内に描画するエッジ同士の上下関係もレベルによって示されることとなる。
【００２２】
フィルとは、スパンに対する塗り情報であり、ビットマップ画像やシェーディングのように１ピクセル毎に異なる色値を有するフィルや、ベタ塗りのようにスパン中で色値の変化がないフィルが存在する。
【００２３】
［ディスプレイリストのレンダリング処理］
図２は、ディスプレイリストのレンダリング処理を説明するためのブロック図である。図２に示すレンダリング処理は、スキャンラインレンダリング処理と呼ばれる。図２に示す処理は、画像形成装置１１０のＣＰＵ２２０が、記憶装置２２３等に格納されているスキャンラインレンダリング処理用のプログラムをＲＡＭ２２２にロードし、該プログラムをＲＩＰ２３１が実行することにより行われる。
【００２４】
スキャンラインレンダリング処理は、エッジ処理、レベル処理、フィル処理、及びコンポジット処理の４つの処理に大別される。なお、ＲＩＰ２３１は、この４つの処理を担当する複数のサブプロセッサを内部に有し、各サブプロセッサが処理を分担するパイプライン処理の構成をとる。パイプライン状に接続された４つのサブプロセッサのうち、第１サブプロセッサがエッジ処理を担当し、第２サブプロセッサがレベル処理を担当し、第３サブプロセッサがフィル処理を担当し、第４サブプロセッサがコンポジット処理を担当する。
【００２５】
図３（ａ）は、１枚のページ画像データを示す。オブジェクト３０１は、オブジェクト３０１〜３０３のうちで最背面のオブジェクトである。したがって、オブジェクト３０１には、最背面にあることを示すレベル番号が割り当てられている。オブジェクト３０１の上（図における前面）にオブジェクト３０２が重なり、さらにオブジェクト３０２の上にオブジェクト３０３が重なっている。これら３つのオブジェクトはすでにディスプレイリスト化されている。このようなページ画像データに対してスキャンライン毎にスキャンラインレンダリング処理が行われる。
【００２６】
次に、図３（ａ）に示すオブジェクト３０１〜３０３を描画するためのＤＬについて、図３（ｂ）と図３（ｃ）を用いて説明する。図３（ｂ）には、各オブジェクト３０１〜３０３を構成するエッジの概念図が示されている。オブジェクト３０１は、左右のエッジ３１１とエッジ３１２とから構成される。同様に、オブジェクト３０２は、左右のエッジ３１３とエッジ３１４とから構成され、オブジェクト３０３は、左右のエッジ３１５とエッジ３１６とから構成される。図３（ｃ）には、ＤＬの構成の一例が示されている。図３（ｃ）に示すＤＬは、オブジェクト３０１を描画するためのエッジ情報＃１（単にエッジ＃１と記す）を含む。エッジ＃１は、図３（ｂ）に示すエッジ３１１とエッジ３１２とに相当するセグメント＃１〜＃４のパス点列情報を含む。また、エッジ＃１には、レベル情報＃１（単にレベル＃１と記す）が紐づいていて、レベル＃１には、フィル情報＃１（単にフィル＃１と記す）が紐づいている。これは、オブジェクト３０１を描画するために左右のエッジ（エッジ＃３１１，＃３１２）間をレベル＃１に紐づくフィル＃１の色値で描画することを示す。同様に、オブジェクト３０２は、エッジ＃２とそれに紐づくレベル＃２及びフィル＃２とによって描画され、オブジェクト３０３は、エッジ＃３によって描画される。このとき、オブジェクト３０２とオブジェクト３０３とが同じ色値で描画されるオブジェクトであった場合、両オブジェクトが異なるレベルであっても、図３（ｃ）に示すように同じフィル情報（ここでは、フィル＃２）が参照される。
【００２７】
ここで、図３に示すディスプレイリストを用いて、図２に示す各処理を説明する。
【００２８】
［エッジ処理］
エッジ処理は、５つの処理に大別される。５つの処理とは、エッジロード処理、エッジ削除処理、Ｘ座標算出処理、エッジソート処理、及びエッジトラッキング処理である。エッジロード処理とは、ＤＬメモリに格納されているＤＬから、オブジェクトのアウトラインを示すエッジデータをメインメモリ上にロードする処理をいう。なお、エッジロード処理は、エッジデータをリンクリストとして管理すべく、エッジデータをエッジリストにロードする処理とも言える。図３に示す例では、エッジ＃１〜＃３が順にロードされる。
【００２９】
Ｘ座標算出処理とは、ロードされたエッジデータをもとに、スキャンライン毎に、エッジの傾きや塗りルールに基づいてエッジの位置を示すＸ座標を算出する処理である。このとき処理中のスキャンラインに現れるエッジを、リンクリスト（エッジリスト）によって、スキャンライン毎にエッジリストの先頭からエッジのＸ座標昇順でソートする。
【００３０】
なお、スキャンラインが変わってエッジのＸ座標の前後が逆転した場合、新たにエッジが出現した場合、またはエッジが消滅した場合などに、エッジリストのリンク構造を更新する必要が生じる。このようにエッジリストを更新する処理をエッジソート処理と呼ぶ。
【００３１】
エッジソート処理が施されたエッジリストは、Ｘ座標昇順でレベル処理部に渡される。この処理をエッジトラッキング処理と呼ぶ。最後に、描画が終了したエッジは、メモリから削除される。この処理をエッジ削除処理と呼んでいる。
【００３２】
［レベル処理］
レベル処理は、３つの処理に大別される。３つの処理とは、レベル追加処理、レベル削除処理、及びレベルソート処理である。
【００３３】
レベル追加処理において、エッジ処理から送られてきたエッジデータに含まれるエッジの向きやクリップ情報に基づいてエッジが描画対象のエッジであるか否かが判定される。エッジが描画対象であると判定された場合、リンクリスト（レベルリスト）に、該当するレベルデータが追加される。レベル削除処理は、レベル追加処理と逆の処理である。レベル削除処理において、エッジの向きやクリップ情報に基づいてそれまで描画対象だったエッジが描画対象でなくなったと判定された場合、レベルリストから該当するレベルデータが削除される。レベルリストはレベル番号昇順に常にソートされていて、レベル追加処理やレベル削除処理があった場合、レベルソート処理と呼ばれるレベルリストのソート処理が行われる。レベル追加処理、レベル削除処理、及びレベルソート処理が施されたレベルデータは、スパン単位でフィル処理に渡される。
【００３４】
［フィル処理］
フィル処理は、３つの処理に大別される。３つの処理とは、画像拡縮処理、画像回転処理、及びピクセル生成処理である。画像拡縮処理は、ディスプレイリストに含まれているビットマップ画像に拡大率が指定されていた場合に、指定された拡大率に従って各ピクセルの色値を生成する処理である。画像回転処理は、ディスプレイリストに含まれているビットマップ画像に回転情報が指定されていた場合に、指定された回転情報に従って各ピクセルの色値を生成する処理である。ピクセル生成処理は、ディスプレイリストにおいて、ある色値をある色値に変化させる変化情報が指定されていた場合に、指定された変化情報に従って各ピクセルの色値を生成する処理である。
【００３５】
［コンポジット処理］
コンポジット処理とは、レベル処理で確定したレベルの上下関係及びフィル処理で生成したピクセル値に基づいて実行される、ディスプレイリストに指定されている重ね合わせ処理である。
【００３６】
［パイプライン処理］
上記各処理は、スパン単位でパイプライン処理される。ここで、図４と図５を用いてパイプライン処理を説明する。図４は、ＲＩＰ２３１のハードウェア構成の一例を示すブロック図である。ＲＩＰ２３１は、サブプロセッサ４０５，４０７，４０９，４１１と、バッファ４０４，４０６，４０８，４１０，４１２と、リードＤＭＡＣ４０３と、ライトＤＭＡＣ４１３とを有する。サブプロセッサ４０５，４０７，４０９，４１１は、ＲＩＰ内部バス４０２に接続される。ＲＩＰ内部バス４０２は、バスＩ／Ｆ４０１に接続される。バスＩ／Ｆ４０１は、ＲＩＰ内部バス４０２と画像バス２３０とを接続するためのインタフェースであり、データ構造を変換するバスブリッジである。
【００３７】
各サブプロセッサは、ＲＩＰ内部バス４０２を介して、ＲＡＭ２２２にアクセスすることができる。ＣＰＵ２２０は、システムバス２２７を介して、各サブプロセッサの内部レジスタにアクセスすることができる。ＣＰＵ２２０は、各サブプロセッサの内部レジスタにアクセスすることで、各サブプロセッサに対して、予めＲＡＭ２２２に展開したプログラムのロードや、リセット、リセット解除、プログラムの実行開始指示、割込みメッセージの送信などを行うことができる。
【００３８】
また、各サブプロセッサは、データ入出力ポートを有し、データ入出力ポートを介して図４に示すように２つのバッファに接続される。各サブプロセッサは、２つのバッファのうち一方のバッファに対して、データ読み込み要求信号を出力してデータの読み込みを行い、他方のバッファに対してデータ書き出し要求信号を出力してデータの書き出しを行う。このように、各サブプロセッサは、各サブプロセッサ間に設けられたバッファを経由してデータ転送を行う。図中の片矢印はデータが転送される方向を示す。
【００３９】
リードＤＭＡＣ４０３は、ＲＩＰ内部バス４０２を介してＲＡＭ２２２からデータを読み出し、バッファ４０４に対してデータ書き込み要求信号を出力してデータの書き込みを行うＤＭＡコントローラである。ライトＤＭＡＣ４１３は、バッファ４１２に対してデータ読み出し要求信号を出力してデータの読み出しを行い、ＲＩＰ内部バス４０２を介してＲＡＭ２２２に対してデータの書き込みを行うＤＭＡコントローラである。
【００４０】
バッファ４０４，４０６，４０８，４１０，４１２は、各サブプロセッサと各ＤＭＡＣの間でデータ転送を行う際に使用されるデータバッファである。各バッファはＳＲＡＭを有し、該ＳＲＡＭにデータを既定数保持することができる。各バッファは、サブプロセッサまたはＤＭＡＣと接続され、サブプロセッサまたはＤＭＡＣからデータ書き込み要求信号と共にデータ（書き込みデータと呼ぶ）を受信すると、該データを内部のＳＲＡＭに格納する。このとき、内部のＳＲＡＭに既定数のデータがすでに書き込まれている場合には、各バッファは、要求元のサブプロセッサまたはＤＭＡＣに対して、データ書き込み要求に応じず書き込みデータを受信しないことを通知するためのＦＵＬＬ信号を出力する。ＦＵＬＬ信号を入力したサブプロセッサまたはＤＭＡＣは、ＦＵＬＬ信号が入力されている間、データの書き込みを完了せずに停止させて、待機する。
【００４１】
また、各バッファは、サブプロセッサまたはＤＭＡＣからデータ読み出し要求信号を受信すると、要求元のサブプロセッサまたはＤＭＡＣに対してデータ（読み出しデータと呼ぶ）を送信する。このとき、内部のＳＲＡＭにデータが一つも格納されていない場合には、各バッファは、要求元のサブプロセッサまたはＤＭＡＣに対して、データ読み出し要求には応じず読み出しデータを送信しないことを通知するためのＥＭＰＴＹ信号を出力する。ＥＭＰＴＹ信号を入力したサブプロセッサまたはＤＭＡＣは、ＥＭＰＴＹ信号がなくなるまでデータの読み出しを完了せずに停止させて、待機する。
【００４２】
本実施形態におけるパイプライン処理では、サブプロセッサ４０５がエッジ処理を担当し、サブプロセッサ４０７がレベル処理を担当し、サブプロセッサ４０９がフィル処理を担当し、サブプロセッサ４１１がコンポジット処理を担当する。図５は、第１実施形態のパイプライン処理を説明するための図である。図５（ａ）には、ＲＩＰ２３１の各サブプロセッサが図３に示すディスプレイリストをパイプライン処理する様子が模式的に示されている。図５（ａ）に示すようにスキャンラインＡ上にはオブジェクトが存在しないため、スキャンラインＡについてはスパンＡ−１を処理単位として処理が実行される。一方、スキャンラインＢ上にはオブジェクト（図３（ａ）に示すオブジェクト３０２）が存在し、そのオブジェクトの輪郭である２つのエッジ（図３（ｂ）に示すエッジ３１３，３１４）が検出される。よって、スキャンラインＢについてはスパンＢ−１，Ｂ−２，Ｂ−３を処理単位として処理が実行される。そして、各スキャンラインのスパンは、図５（ｂ）に示されるように、エッジ処理、レベル処理、フィル処理、コンポジット処理の順でパイプライン処理される。具体的には、まず、スキャンラインＡのスパンＡ−１が、サブプロセッサ４０５によってエッジ処理され、エッジ処理後のスパンＡ−１がサブプロセッサ４０７に渡される。そして、エッジ処理後のスパンＡ−１がサブプロセッサ４０７によってレベル処理され、その間にスキャンラインＢのスパンＢ−１がサブプロセッサ４０５によってエッジ処理される。以下同様にして、各処理を担当するサブプロセッサによって各スパンが並列に処理される。
【００４３】
［パイプライン処理中のキャンセル処理］
上記パイプライン処理の実行中にユーザが操作部１１３を介して、画像形成装置１１０に対して印刷処理のキャンセ指示を行う場合がある。ＣＰＵ２２０は、操作部１１３に入力された情報（指示）を操作部Ｉ／Ｆ２２５を介して受け取り、該指示に応じた処理を実行する。従来は、ＲＩＰ２３１のメッセージ送受信レジスタを介してＣＰＵ２２０からの指示（メッセージ）を判断していた。また、ＲＩＰ２３１内のサブプロセッサのうち、エッジ処理を担当するサブプロセッサ４０５が、ＣＰＵ２２０からのメッセージを判断し処理を切り替えていた。しかし、ＰＣ１０１が生成する各種ＰＤＬデータにおいて、１ページ内に含むことができる描画オブジェクトの数と描画位置に制限がなく、ＰＤＬデータから生成されるＤＬも同一スキャンライン上の描画オブジェクト数に制限がない。したがって、スパン単位、あるいはエッジロード単位でメッセージを判断すると描画オブジェクト数によってオーバーヘッドが大きくなってしまう。そこで上述した特許文献１に記載の技術では、次のスキャンラインに処理を進める際にキャンセル要求の有無を判断するようにして、スキャンライン単位でメッセージを判断する構成がとられている。さらに、キャンセル要求ありと判断した場合には、未処理のスキャンラインについては、新たにエッジをロードすることなく所定のピクセルを出力する構成がとられている。
【００４４】
図６は、操作部の構成の一例を示す図である。図６に示すように、操作部１１３には、表示部６０１、ジョブキャンセルボタン６０２、メニューボタン６０３、及び選択ボタン６０４が配置されている。表示部６０１は、ユーザに対し画像形成装置１１０の状態や設定項目についての情報を表示する。表示部６０１に「プリント可能」と表示されているときに、ユーザがメニューボタン６０３を押下すると、ユーザが設定できる項目及びユーザが確認できる画像形成装置１１０内部の情報を選択できるようになる。ユーザは、メニューボタン６０３を押下した後に、表示部６０１に表示されるメニューの中で所望の項目を、選択ボタン６０４を用いて選択することができる。これにより、ユーザからの指示を受け付ける受付手段が実現される。図６（ｂ）に示すように表示部６０１に「現在、プリント中」と表示されているときに、ユーザがジョブキャンセルボタン６０２を押下して印刷ジョブのキャンセル要求（ジョブキャンセル要求）を行うと、画像形成装置１１０は、実行中の処理を停止する。
【００４５】
図７は、第１実施形態の画像形成装置１１０における印刷処理の開始から終了までのシーケンスを示す図である。期間７０１は、ＣＰＵ２２０が駆動している期間を示している。期間７０１においてまず、プリンタ部１１１が処理を実行できる状態にするため、ＣＰＵ２２０が、デバイスＩ／Ｆ２３５を介してプリンタ部１１１にメッセージ７０２を送信する。メッセージの送信とは、所定のレジスタあるいは所定のメモリに所定の値を書き込むことを意味する。なお、ここでは、プリンタ部１１１のレジスタではなく、デバイスＩ／Ｆ２３５のレジスタに値を書き込むことを意味する。プリンタ部１１１は、メッセージ７０２に応じて定着器を昇温させるなど、受け取った画像データをシート（紙）に出力する準備を開始する。期間７０３は、プリンタ部１１１が処理を開始してから終了するまでの期間を示している。
【００４６】
ＣＰＵ２２０は、プリンタ部１１１にメッセージ７０２を送信した後、画像編集部２３２にメッセージ７０４を送信する。これにより、画像編集部２３２は、ＲＩＰ２３１から受け付けたピクセルデータ（画素データ）をハーフトーンのピクセルデータ（画素データ）に変換できる状態になる。期間７０５は、この変換処理が実行可能な期間を示している。
【００４７】
最後に、ＲＩＰ２３１は、ＣＰＵ２２０からメッセージ７０６を受け付けると、前述したレンダリング処理を開始する。メッセージ７０６は、図４に示す各サブプロセッサに対して送信される。メッセージ７０６は、各サブプロセッサが担当する処理を開始させるためのメッセージである。期間７０７は、ＲＩＰ２３１がメッセージを受け取ってから１ページ分のピクセルを出力し終えるまでの期間を示している。ＲＩＰ２３１は、１ページ分のピクセルを出力し終えると、ＣＰＵ２２０に対してメッセージ７０８を送信する。ＣＰＵ２２０に対するメッセージ送信も同様に、所定のレジスタあるいは所定のメモリに所定の値を書き込むことを意味する。メッセージ７０８は、ＲＩＰ２３１内のサブプロセッサ各々からＣＰＵ２２０に対して送信される。画像編集部２３２も同様に、処理終了時にメッセージ７０９をＣＰＵ２２０に対して送信する。プリンタ部１１１も同様に、処理終了時にメッセージ７１０をＣＰＵ２２０に対して送信する。
【００４８】
以上のように、ＲＩＰ２３１がメッセージを受け付けて処理を開始する前に、ＲＩＰ２３１が出力するピクセルを受け取るハードウェア（画像編集部２３２及びプリンタ部１１１）にメッセージが送信され、該ハードウェアが先行して処理開始可能な状態となる。また、ＲＩＰ２３１が処理を停止する際には、ＲＩＰ２３１が所定数のピクセルを出力し終えた後に、順次他のハードウェアが処理を終了する。したがって、画像形成装置１１０がユーザからのキャンセル要求を受け付けた場合、ＲＩＰ２３１のみが実行中の処理を所定数のピクセルを出力する処理に切り替えればよく、他のハードウェアはキャンセルに応じた処理を実行する必要がなくなる。
【００４９】
次いで、本実施形態におけるＲＩＰ２３１のみがキャンセル時に処理を切り替える具体的な方法を詳述する。図８は、図７に示す期間７０７におけるＲＩＰ内部の第１実施形態におけるシーケンスを示す図である。図８には、ＣＰＵ２２０がＲＩＰ２３１に対し中断指示を含むメッセージを送信してからＲＩＰ２３１が所定のピクセルを送信し終えるまでのシーケンスが示されている。なお、図８における×印は、各サブプロセッサがリセット状態になったことを表している。
【００５０】
ＣＰＵ２２０がＲＩＰ２３１内の各サブプロセッサに対して中断指示を含むメッセージ８０２，８０４，８０６，８０８を送信する。すると、ＲＩＰ２３１内の各サブプロセッサにおいて、メッセージ内容を取得するための割込みハンドラが呼び出され、期間８０３，８０５，８０７，８０９において以下の処理が行われる。
【００５１】
サブプロセッサ４０５，４０７，４０９では、呼び出された割込みハンドラがバッファ４０４，４０６，４０８に対しデータ読み出し要求信号を出力する。バッファ４０４，４０６，４０８は、データ読み出し要求信号を受信すると、要求元のサブプロセッサまたはＤＭＡＣに対して読み出しデータを送信する。サブプロセッサ４０５、４０７．４０９は、バッファ４０４，４０６，４０８から送信されたデータを受け取ると、次のデータ読み出し要求信号を出力する。この処理が繰り返されて、各バッファ内部のＳＲＡＭからデータがなくなると、各バッファは、要求元にＥＭＰＴＹ信号を出力する。ＥＭＰＴＹ信号を入力したサブプロセッサまたはＤＭＡＣは、上述したように、ＥＭＰＴＹ信号がなくなるまでデータの読み出しを完了せずに停止状態になる。
【００５２】
サブプロセッサ４１１では、呼び出された割込みハンドラが、バッファ４１２のレジスタあるいはメモリから、１ページ分の出力に必要なピクセル数（画素数）と、出力チャネル数と、既に出力したピクセル数とを取得する。そして、サブプロセッサ４１１では、取得したこれらの情報に基づいて、残りのピクセルを出力する。残りのピクセルの出力を終えると、サブプロセッサ４１１は他のプロセッサと同様に、バッファ４１０に対して、バッファ４１０内部のＳＲＡＭにデータがなくなるまでデータ読み出し要求信号を繰り返し出力する。バッファ４１０内部のＳＲＡＭにデータがなくなると、バッファ４１０は、サブプロセッサ４１１にＥＭＰＴＹ信号を出力する。サブプロセッサ４１１は、ＥＭＰＴＹ信号がなくなるまでデータの読み出しを完了せずに停止状態になる。パイプライン処理中のキャンセル処理は以上のようにして行われる。
【００５３】
ＣＰＵ２２０は、キャンセル処理が終了した後、新たにＲＩＰ２３１に処理の開始を指示する際に、各サブプロセッサに対し再起動メッセージを送信する。より具体的には、ＣＰＵ２２０は、各サブプロセッサが有するリセットレジスタを用いて各サブプロセッサをリセットしたのち、各サブプロセッサが有するリセット解除レジスタを用いて各サブプロセッサをリセット解除する。このとき、各バッファ内部のＳＲＡＭにはデータが存在しないので、キャンセル後の処理において、各サブプロセッサは不要なデータを読み込むことなく処理を開始できる。
【００５４】
図９は、第１実施形態の画像形成装置１１０の印刷処理を示すフローチャートである。図９には、ユーザからの印刷指示を受け付けた際のＣＰＵ２２０の処理が示されている。操作部１１３が図６（ａ）に示す状態であるとき、ＣＰＵ２２０は、ユーザからの指示を待ち続ける（Ｓ９０１）。そして、ユーザからの指示を受け付けると、ＣＰＵ２２０は、受け付けた指示が印刷指示であるか否かを判断する（Ｓ９０２）。受け付けた指示が印刷指示でない場合（Ｓ９０２のＮＯ）、ＣＰＵ２２０はＳ９０１の処理に戻る。受け付けた指示が印刷指示である場合（Ｓ９０２のＹＥＳ）、ＣＰＵ２２０は、ＲＩＰ２３１に対して描画処理の開始を指示する（Ｓ９０３）。この指示は、図７に示すメッセージ７０２，７０４，７０６に相当する。このとき、操作部１１３は図６（ｂ）に示す状態となる。次いで、ＣＰＵ２２０は、ユーザからの中断指示があったか確認する（Ｓ９０４）。
【００５５】
中断指示がない場合（Ｓ９０４のＮＯ）、ＣＰＵ２２０は、ＲＩＰ２３１から描画終了通知を受け付けたか確認する（Ｓ９０５）。この通知は、ユーザからのキャンセル要求がないまま１ページ分の描画処理が終了した場合にＲＩＰ２３１から送信される、図７に示すメッセージ７０８に相当する。描画終了通知を受け付けている場合（Ｓ９０５のＹＥＳ）、ＣＰＵ２２０は処理を終了する。描画終了通知を受け付けていない場合（Ｓ９０５のＮＯ）、ＣＰＵ２２０はＳ９０４の処理に戻る。
【００５６】
中断指示があった場合（Ｓ９０４のＹＥＳ）、ＣＰＵ２２０は、ＲＩＰ２３１の各サブプロセッサに対し中断指示を出力する（Ｓ９０６）。この中断指示は、図８に示すメッセージ８０２，８０４，８０６，８０８に相当する。Ｓ９０６の後、ＣＰＵ２２０は、サブプロセッサ４１１から描画終了通知を受け付けたか確認する（Ｓ９０７）。この通知は、図８に示すメッセージ８１３に相当する。描画終了通知を受け付けていない場合（Ｓ９０７のＮＯ）、ＣＰＵ２２０はＳ９０７の処理を繰り返す。描画終了通知を受け付けている場合（Ｓ９０７のＹＥＳ）、ＣＰＵ２２０は、バッファ４１０内部のＳＲＡＭのデータが無くなりサブプロセッサ４１１が待機状態になるまで待つ（Ｓ９０８）。このとき、ＣＰＵ２２０は、バッファ４１０の内部ＳＲＡＭの全領域にデータが格納されているときに該ＳＲＡＭ内のデータをすべて読み出すのに要する時間、すなわち該ＳＲＡＭ内のデータの読み出しに要する最長時間分だけ待つものとする。
【００５７】
次に、ユーザからの印刷指示を受け付けた際のＲＩＰ２３１の各サブプロセッサの処理を説明する。まず、図１０を用いて、スキャンライン単位で中断指示の有無を判断する従来のサブプロセッサの動作を説明する。なお、ここではサブプロセッサ４０５の動作を例にして説明する。また、図１０に示す処理は、ＣＰＵ２２０が従来のスキャンラインレンダリングのプログラムをＲＡＭ２２２に展開し、サブプロセッサ４０５をリセット解除し、サブプロセッサ４０５に上記プログラムを実行させるメッセージを送信することで開始される。
【００５８】
サブプロセッサ４０５は、リセット解除されると、ＣＰＵ２２０からの指示を待つ（Ｓ１００１）。ＣＰＵ２２０からの指示を受け付けると、サブプロセッサ４０５は、受け付けた指示が開始指示であるか否かを判断する（Ｓ１００２）。この開始指示は、図７に示すメッセージ７０６に相当する。受け付けた指示が開始指示である場合（Ｓ１００２のＹＥＳ）、サブプロセッサ４０５は内部状態を待機中状態から処理中状態に遷移させる（Ｓ１００３）。次いで、サブプロセッサ４０５は、ＲＩＰ中にＣＰＵ２２０からの中断指示があったか否か確認する（Ｓ１００４）。
【００５９】
中断指示がない場合（Ｓ１００４のＮＯ）、サブプロセッサ４０５は、ＲＡＭ２２２に格納されているディスプレイリストから描画命令を読み込み（Ｓ１００５）、読み込んだ描画命令が描画終了を示すか否かを確認する（Ｓ１００６）。描画命令が描画終了を示す場合（Ｓ１００６のＹＥＳ）、サブプロセッサ４０５は、内部状態を処理中状態から待機中状態に遷移させ（Ｓ１０１１）、処理を終了する。描画命令が描画終了以外を示す場合（Ｓ１００６ＮＯ）、サブプロセッサ４０５は、担当する描画処理（エッジ処理）を１スキャンライン分実行する（Ｓ１００７）。エッジ処理実行後、サブプロセッサ４０５は、描画処理が完了したスキャンライン数をカウントし（Ｓ１００８）、Ｓ１００４の処理に戻る。なお、Ｓ１００８の処理は、サブプロセッサ４０５が処理すべきカレントスキャンラインを更新する処理でもある。
【００６０】
中断指示があった場合（Ｓ１００４のＹＥＳ）、サブプロセッサ４０５は、Ｓ１００８でカウントしたスキャンライン数から描画処理が未完了であるスキャンライン数を導出する（Ｓ１００９）。そして、サブプロセッサ４０５は、予め定められた色値をＳ１００９で導出したスキャンライン数分だけ出力するための命令を、サブプロセッサ４０７に送信する（Ｓ１０１０）。具体的には、サブプロセッサ４０５は、スキャンライン長分のスパンに、背景色、あるいは、背景色と同色の色に対応するレベル情報を付与し、サブプロセッサ４０７に送信する。こうして、サブプロセッサ４０７，４０９，４１１は、スキャンライン長が指定されたスパン内に、指定された色を描画するように動作する。Ｓ１０１０の後、サブプロセッサ４０５は、内部状態を処理中状態から待機中状態に遷移させ（Ｓ１０１１）、処理を終了する。
【００６１】
次に、図１１を用いて、本実施形態のサブプロセッサの動作を説明する。なお、ここではサブプロセッサ４０５の動作を例にして説明する。図１１（ａ）には、本実施形態におけるサブプロセッサ４０５が実行する処理が示されている。図１１に示す処理は、ＣＰＵ２２０が本実施形態にかかるスキャンラインレンダリングのプログラムをＲＡＭ２２２に展開し、サブプロセッサ４０５をリセット解除し、サブプロセッサ４０５に上記プログラムを実行させるメッセージを送信することで開始される。
【００６２】
サブプロセッサ４０５は、リセット解除されると、ＣＰＵ２２０から割込みメッセージが送信された際に呼び出される割込みハンドラ関数を登録する（Ｓ１１０１）。なお、本実施形態では、図８に示すように、ＣＰＵ２２０は、Ｓ９０６において中断指示を出力する際に各サブプロセッサに対して割込みメッセージを送信する。
【００６３】
Ｓ１１０４の後、サブプロセッサ４０５は、図１０におけるＳ１００４に相当する処理（中断指示があったか否かを確認する処理）を行なわい。これは、ＣＰＵ２２０がＳ９０６において中断指示を出力する際に送信する割込みメッセージによって、Ｓ１１０１で登録された割込みハンドラを呼び出すようにしているので、Ｓ１００４に相当する処理が不要となるためである。Ｓ１１０４の後、サブプロセッサ４０５は、図１０におけるＳ１００５〜Ｓ１００８，Ｓ１０１１と同様の処理を実行する（Ｓ１１０５〜Ｓ１１０８，Ｓ１１０９）。
【００６４】
次に、図１１（ｂ）を用いて、Ｓ１１０１で登録される割込みハンドラについて説明する。図１１（ｂ）には、サブプロセッサ４０５が割込みハンドラで実行する処理が示されている。サブプロセッサ４０５は、ＣＰＵ２２０の割り込みメッセージを取得すると（Ｓ１１１１）、割込みメッセージの種別を判定し、割り込みメッセージが中断指示であるか否かを確認する（Ｓ１１１２）。割り込みメッセージが中断指示以外である場合（Ｓ１１１２のＮＯ）、処理は終了する。中断指示である場合（Ｓ１１１２のＹＥＳ）、サブプロセッサ４０５は、内部状態を処理中状態から待機中状態に遷移させ（Ｓ１１１３）、バッファ４０４に対しデータ読み出し要求信号を出力する（Ｓ１１１４）。上述したように、バッファ４０４は、データ出力側に接続されたサブプロセッサまたはＤＭＡＣからデータ読み出し要求信号を受信すると、読み出しデータを要求元のサブプロセッサまたはＤＭＡＣに送信する。サブプロセッサ４０５は、バッファ４０４から送信されるデータを受け取ると、次のデータ読み出し要求信号をバッファ４０４に対し出力する。サブプロセッサ４０５は、Ｓ１１１４の処理を繰り返す。そして、バッファ４０４内部のＳＲＡＭにデータがなくなると、バッファ４０４は、サブプロセッサ４０５にＥＭＰＴＹ信号を出力する。サブプロセッサ４０５は、ＥＭＰＴＹ信号がなくなるまでデータの読み出しを完了せずに停止状態を維持する。
【００６５】
サブプロセッサ４０７，４０９，４１１においても同様に、図１１（ａ），（ｂ）に示す処理が行われる。ただし、サブプロセッサ４１１が割り込みハンドラで実行する処理は、図１１（ｃ）に示すように他のプロセッサと異なる。図１１（ｃ）には、サブプロセッサ４１１が割込みハンドラで実行する処理が示されている。なお、Ｓ１１２１，Ｓ１１２２，Ｓ１１２７，Ｓ１１２８の処理は、図１１（ｂ）におけるＳ１１１１，Ｓ１１１２，Ｓ１１１３，Ｓ１１１４の処理と同様であるため説明を省略する。
【００６６】
Ｓ１１２２の処理の後、サブプロセッサ４１１は、出力する色空間を取得する（Ｓ１１２３）。さらに、サブプロセッサ４１１は、出力済みのピクセル数を取得し（Ｓ１１２４）、該出力済みのピクセル数から、出力する必要がある残りのピクセル数を導出する（Ｓ１１２５）。サブプロセッサ４１１は、Ｓ１１２３〜Ｓ１１２５の処理で得られた情報をもとに、所定の画素値のピクセルを残りのピクセル数分出力する（Ｓ１１２６）。
【００６７】
［第１実施形態の効果］
従来は、ＲＩＰ２３１内のサブプロセッサは、スキャンライン毎の処理が終わる際に中断指示を確認して処理を切り替えていた。そのため、処理中のスキャンライン上に存在するオブジェクト数に応じて処理が切り替わるまでの時間が不定となっていた。
【００６８】
一方、本実施形態では、ＣＰＵ２２０が中断指示を出力する際に割込みメッセージを送信して割り込みハンドラを呼び出すようにしている。したがって、ＲＩＰ２３１の各サブプロセッサは、ＣＰＵ２２０からの中断指示を即時に受け付けることができ、描画処理を一定の時間以内に高速に強制停止させることが可能となる。よって、本実施形態によれば、ユーザからのジョブキャンセル要求に対して、画像形成装置が即時に対応することが可能となる。それにより、ＭＦＰ等のプリンタのユーザビリティを向上させることができる。加えて、ＲＩＰ２３１が画素データ生成中に中断指示を検知する処理（Ｓ１００４の処理に相当）が不要になるので、各サブプロセッサにおける描画処理を高速化できるという副次的効果も得られる。
【００６９】
また、本実施形態では、パイプライン処理中のキャンセル処理において、後段のハードウェア（プリンタ部１１１や画像編集部２３２）に対して所定の画素値のピクセルを未処理の画素数分出力するようにしている。したがって、それらのハードウェアを安全に停止させることができる。また、本実施形態では、後段のハードウェアに接続されるサブプロセッサ（末尾のサブプロセッサ４１１）に所定の画素値のピクセルを出力させているので、該ピクセルを後段のハードウェアに即時に出力することができる。またそれにより、ユーザの待ち時間が低減され、ユーザビリティをさらに向上させることができる。
【００７０】
さらに、本実施形態では、ＲＩＰ２３１は、内部に有する各バッファ内からデータを削除してから描画処理を終了するようにしているので、次の処理を開始する際に不要なデータがバッファから読み出されることがない。
【００７１】
＜第２実施形態＞
以下、第２実施形態について図面を用いて説明する。第２実施形態にかかる画像形成装置１１０の構成は、図１に示される第１実施形態の構成と同様である。第２実施形態にかかる画像形成装置１１０のＲＩＰ２３１内部の構成は、図４に示される第１実施形態の構成と同様である。また、本実施形態のＲＩＰ２３１が実行するパイプライン処理は、図２及び図３を用いて説明した第１実施形態のパイプライン処理と同様である。また、本実施形態の画像形成装置１１０における印刷処理の開始から終了までのシーケンスは、図７に示す第１実施形態のシーケンスと同様である。
【００７２】
図１２は、図７に示す期間７０７におけるＲＩＰ内部の第２実施形態におけるシーケンスを示す図である。図１２には、ＣＰＵ２２０がＲＩＰ２３１に対し中断指示を含むメッセージを送信してからＲＩＰ２３１が所定のピクセルを送信し終えるまでの第２実施形態におけるシーケンスが示されている。なお、図１２における×印は、各サブプロセッサや各バッファがリセット状態になったことを表している。
【００７３】
メッセージ１２０２は、リセットレジスタへのアクセスである。ＣＰＵ２２０がメッセージ１２０２を送信すると、サブプロセッサ４０５は期間１２０３を経てリセット状態になる。同様にＣＰＵ２２０がメッセージ１２０４，１２０６，１２０８を送信すると、サブプロセッサ４０７，４０９は期間１２０５，１２０７，１２０９を経てリセット状態になる。実際には、期間１２０３，１２０５，１２０７，１２０９の間に各サブプロセッサが処理することはなく、即座にリセット状態になる。
【００７４】
次に、ＣＰＵ２２０は、メッセージ１２１０により、ＲＡＭ２２２の所定領域に新たにサブプロセッサ４１１に実行させるプログラムを展開する。ＣＰＵ２２０は期間１２１１において上記プログラムを展開すると、サブプロセッサ４１１に対して、リセット解除して上記プログラムを実行させるためのメッセージ１２１２を送信する。サブプロセッサ４１１はメッセージ１２１２を受け付けると、期間１２１３において、バッファ４１２のレジスタあるいはメモリから、１ページ分の出力に必要なピクセル数と、出力チャネル数と、既に出力したピクセル数とを取得する。そして、サブプロセッサ４１１は、取得したこれらの情報に基づき残りのピクセルを出力する。残りのピクセルの出力を終えると、サブプロセッサ４１１は、ＣＰＵ２２０に処理の終了を示すメッセージ１２１４を送信する。メッセージ１２１５は、リセットレジスタへのアクセスである。ＣＰＵ２２０がメッセージ１２１５を送信すると、サブプロセッサ４１１は期間１２１６を経てリセット状態になる。その後、ＣＰＵ２２０はメッセージ１２１７により、ＲＡＭ２２２の所定領域にサブプロセッサ４１１に実行させる元のプログラムを展開する。期間１２１８は、ＣＰＵ２２０がメッセージ１２１７を受け付けてから所定領域に上記元のプログラムを展開するまでの期間を示している。元のプログラムとは、サブプロセッサ４１１に本来実行させるべき、描画処理（コンポジット処理）用のプログラムである。
【００７５】
最後に、ＣＰＵ２２０は、各バッファに対して、リセットレジスタへのアクセスを意味するメッセージ１２１９，１２２１，１２２３，１２２５，１２２７を送信する。すると、すべてのバッファが、期間１２２０，１２２２，１２２４，１２２６，１２２８を経てリセット状態になる。このとき、各バッファは、内部のＳＲＡＭに残っているデータをすべて削除する。したがって、本実施形態では、各バッファ内部のＳＲＡＭにあるデータを空にする処理（第１実施形態におけるＳ１１１４，Ｓ１１２８に相当する処理）が不要となる。
【００７６】
図１３は、第２実施形態の画像形成装置１１０の印刷処理を説明するための図である。図１３（ａ）には、第２実施形態の画像形成装置１１０の印刷処理を示すフローチャートが示されている。なお、Ｓ１３０１〜Ｓ１３０５の処理は、図９に示すＳ９０１〜Ｓ９０５の処理と同様である。
【００７７】
Ｓ１３０４にてキャンセル要求があったと判断した場合（Ｓ１３０４のＹＥＳ）、ＣＰＵ２２０は、ＲＩＰ２３１に対する停止処理を行う（Ｓ１３０６）。具体的には、各サブプロセッサにおける描画処理を停止させるため、各サブプロセッサのリセットレジスタにアクセスして、各サブプロセッサをリセット状態にする。次いで、ＣＰＵ２２０は、ＲＡＭ２２２の所定領域に、新たにサブプロセッサ４１１に実行させる所定ピクセル出力用のプログラムを展開する（Ｓ１３０７）。そして、ＣＰＵ２２０は、サブプロセッサ４１１をリセット解除し、サブプロセッサ４１１に前述したプログラムを実行させる（Ｓ１３０８）。Ｓ１３０８の後、ＣＰＵ２２０は、サブプロセッサ４１１から描画終了通知を受け付けたか確認する（Ｓ１３０９）。描画終了通知を受け付けていない場合（Ｓ１３０９のＮＯ）、ＣＰＵ２２０はＳ１３０９の処理を繰り返す。描画終了通知を受け付けている場合（Ｓ１３０９のＹＥＳ）、ＣＰＵ２２０は、サブプロセッサ４１１で実行されている、所定ピクセル出力用のプログラムによる描画処理を停止させる（Ｓ１３１０）。具体的には、ＣＰＵ２２０は、サブプロセッサ４１１のリセットレジスタにアクセスし、サブプロセッサ４１１をリセット状態にする。最後に、ＣＰＵ２２０は、ＲＡＭ２２２の所定領域にサブプロセッサ４１１に実行させる元のプログラムを展開する（Ｓ１３１７）。これにより、ＣＰＵ２２０が、次の描画開始を指示する際にサブプロセッサ４１１をリセット解除することで、サブプロセッサ４１１に元のプログラムを実行させることができる。
【００７８】
図１３（ｂ）には、サブプロセッサ４１１で実行される、所定ピクセル出力用のプログラムによる描画処理が示されている。図１３（ｂ）に示す処理は、前述したように、ＣＰＵ２２０がＳ１３０８でサブプロセッサ４１１をリセット解除することにより実行される。図１３（ｂ）に示す処理は、第１実施形態の図１１（ｃ）に示す処理と同様である。ただし、本実施形態では、上述したようにＳ１１２８に相当する処理は行われない。また、本実施形態ではサブプロセッサの処理の切り替えを割込みメッセージで行っていないため、Ｓ１１２１，Ｓ１１２２に相当する処理は行われない。
【００７９】
［第二実施形態の効果］
本実施形態では、第１実施形態と同様にＲＩＰ２３１が一定の時間以内に高速に強制停止させることが可能となる。そのため、本実施形態によれば、第１実施形態と同様の効果が得られる。
【００８０】
また、本実施形態では、各バッファのリセットレジスタにアクセスすることにより、各バッファの内部に残っているデータを削除するようにしている。よって、各サブプロセッサは、処理を終了する際に各バッファの内部に残っているデータをすべて読み出す処理を行う必要がない。したがって、本実施形態によれば、より高速に且つより安全にＲＩＰ２３１を停止させることができる。なお、第１実施形態においても、本実施形態のように各バッファのリセットレジスタにアクセスして、各バッファの内部に残っているデータを削除するようにしてもよい。その場合には、Ｓ１１１４，Ｓ１１２８の処理が不要になる。
【００８１】
（その他の実施形態）
本発明は、上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【図１】
2020026107.tif 000003
【図２】
2020026107.tif 000004
【図３】
2020026107.tif 000005
【図４】
2020026107.tif 000006
【図５】
2020026107.tif 000007
【図６】
2020026107.tif 000008
【図７】
2020026107.tif 000009
【図８】
2020026107.tif 000010
【図９】
2020026107.tif 000011
【図１０】
2020026107.tif 000012
【図１１】
2020026107.tif 000013
【図１２】
2020026107.tif 000014
【図１３】
2020026107.tif 000015