(57)【要約】【課題】  パイプライン処理の全体の処理速度が、もっとも処理速度が遅いステージ、ボトルネックとなるステージの処理速度にそのまま律速されてしまう。【解決手段】  複数のデータ転送の停止状況からデータ転送を停止させているステージを特定し、そのカウンタ値を加算し、カウンタ値に応じて各ステージの処理の優先度を決定する。【選択図】  図１
2016091307.tif 000002
【特許請求の範囲】
【請求項１】
データを、複数のステージを有する情報処理パイプラインで処理する情報処理装置であって、
各ステージの優先度を決定する手段と、
前記優先度が高いステージの処理を優先する制御手段と
を備えたことを特徴とする情報処理装置。
【請求項２】
前記制御手段は、各ステージのバスの優先度制御することを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記優先度を決定する手段は、複数のステージの間のデータ転送が停止する状況を観測した結果に基づき優先度を決定する
ことを特徴とする請求項１又は２に記載の情報処理装置。
【請求項４】
前記優先度を決定する手段は、データの特徴を抽出した結果に基づき優先度を決定する
ことを特徴とする請求項１又は２に記載の情報処理装置。
【請求項５】
前記各ステージの前後には、それぞれ転送されるデータが書き込まれるバッファと、
該ステージに対応し、その前後のバッファの状況を判断するための複数のカウンタ手段を有し、
前記観測した結果は、前記カウンタ手段の値に基づいたものである
ことを特徴とする請求項３に記載の情報処理装置。
【請求項６】
前記カウンタ手段は、対応するステージの入力側のバッファがＦＵＬＬの時にカウンタ値をカウントアップするカウンタ手段を含むことを特徴とする請求項５に記載の情報処理装置。
【請求項７】
前記カウンタ手段は、さらに、対応するステージの出力側のバッファがＦＵＬＬでない時にカウンタ値をカウントアップするカウンタ手段であることを特徴とする請求項６に記載の情報処理装置。
【請求項８】
前記カウンタ手段は、対応するステージの出力側のバッファがＥＭＰＴＹの時にカウンタ値をカウントアップするカウンタ手段を含むことを特徴とする請求項５又は７に記載の情報処理装置。
【請求項９】
前記カウンタ手段は、さらに、対応するステージの入力側のバッファがＥＭＰＴＹでない時にカウンタ値をカウントアップするカウンタ手段を含むことを特徴とする請求項８に記載の情報処理装置。
【請求項１０】
前記各ステージは、ＤＭＡＣ又はＣＰＵが行う
ことを特徴とする請求項１乃至９のいずれか１項に記載の情報処理装置。
【請求項１１】
前記優先度を決定する手段の決定した優先度の変更に応じて、カウンタ手段のカウンタの値をリセットする
ことを特徴とする請求項１乃至１０のいずれか１項に記載の情報処理装置。
【請求項１２】
情報処理パイプラインの処理を観測する手段と、
決定された前記優先度を記憶する記憶手段とを有し、
処理を観測する手段が示す処理中の各ステージの優先度を記憶手段から読み出し、
前記制御手段は、該優先度に応じて、各ステージを制御する
ことを特徴とする請求項４に記載の情報処理装置。
【請求項１３】
前記データを複数のバンド分割し、
前記優先度は、バンド毎に決定されるものであることを特徴とする請求項４または１２に記載の情報処理装置。
【請求項１４】
前記情報処理装置は、画像処理装置であることを特徴とする請求項１乃至１３のいずれか１項に記載の情報処理装置。
【請求項１５】
前記情報処理装置は、画像形成装置の中にある
ことを特徴とする請求項１４に記載の情報処理装置。
【請求項１６】
データを、複数のステージを有する情報処理パイプラインで処理する情報処理装置の制御方法であって、
各ステージの優先度を決定する優先度を決定する手段による優先度を決定する工程と、
前記優先度が高いステージの処理を優先する制御手段による優先度が高い処理を優先する制御工程と
を備えたことを特徴とする情報処理装置の制御方法。
【請求項１７】
請求項１乃至１３のいずれか１項に記載の情報処理装置の各手段をコンピュータの実行により実現するためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、その制御方法、及びプログラムに関するものである。
【背景技術】
【０００２】
画像処理装置の中には、複数の画像処理モジュールを直列に並べて一連の画像処理として処理する、パイプライン処理による画像処理装置がある。画像処理は既定の画素サイズを単位として処理が行われることが一般的であるが、パイプライン処理のそれぞれの処理ステージで行われる画像処理の中には、入力画像データの内容に依存して処理時間が変わるものもある。そういったデータ依存の画像処理としては、画像圧縮・伸張処理や、プリント画像データのレンダリング処理がある。
【０００３】
プリント画像データのレンダリング処理では、ＰＤＬデータやそれを変換した中間言語のディスプレイリスト（ＤＬ）データを入力として、画素データの集まりであるラスター画像データを生成して出力する。入力画像データの内容に依存して画像処理装置での処理時間が変わるのは、ＰＤＬデータやＤＬデータに含まれるオブジェクトの種類と数が、印刷データの内容に依存して変わるためである。
【０００４】
一方、画像処理の単位時間内の処理能力を増強するために、画像処理を複数の処理に分割して、各処理を異なるモジュールで並列に実行するパイプライン処理の構成にする手法がある。分割後の複数の画像処理が、パイプライン処理の複数のステージに相当する。上述のプリント画像データのレンダリング処理においても、画像処理を複数の処理に分割して、複数の画像処理モジュールによるパイプライン処理を行う構成で高速処理を実現できる（特許文献１参照）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特許第４５２２２１６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、入力画像データに依存して処理時間が変わる画像処理を、複数の画像処理モジュールによってパイプライン処理をする構成の場合、多くの画像処理モジュールを搭載していても、特定のステージの画像処理に処理時間がかかる場合がある。このとき、他のステージの画像処理を行う画像処理モジュールは、停止している時間が長くなる。それは、パイプライン処理では、ステージ間に処理速度差がある場合に、速度差の分だけ速いステージの処理が停止する状況が発生してしまうからである。具体的には、処理の速いステージが前段の処理の遅いステージがデータを送信するまで待つ状況や、処理の速いステージが後段の処理の遅いステージがデータを受信するまで待つ状況等が生じる。
【０００７】
さらに入力画像データの特徴は次々に変化するものなので、ある瞬間の入力画像データではあるステージが処理のボトルネックであっても、次の瞬間の入力データでは別のステージがボトルネックとなる可能性がある。そのため、あらかじめ処理のボトルネックとなるステージを特定してアシストする等の制御が難しい。その結果として、パイプライン処理の全体の処理速度が、もっとも処理速度が遅いステージ、すなわち処理のボトルネックとなるステージの処理速度にそのまま律速されてしまうという課題がある。
【課題を解決するための手段】
【０００８】
本発明は、データを、複数のステージを有する情報処理パイプラインで処理する情報処理装置であって、各ステージの優先度を決定する優先度決定手段と、前記優先度が高いステージの処理を優先する優先制御手段とを備えたことを特徴とする。
【発明の効果】
【０００９】
本発明によれば、処理のボトルネックとなっているステージをリアルタイムに特定して、そのステージの処理を実行する情報処理モジュールを優先的に動作させることができる。それにより、情報処理パイプライン全体の処理速度が、もっとも処理速度が遅くボトルネックとなっているステージの処理速度そのままに律速されてしまうことを回避できる。
【図面の簡単な説明】
【００１０】
【図１】画像処理装置のブロック図。
【図２】画像処理装置のモニタの内部構造を示したブロック図。
【図３】レンダリング画像処理で生成する画像（ａ）。
【図４】画像（ａ）を処理するときの、時間経過による変化を表したグラフ。
【図５】レンダリング画像処理で生成する画像（ｂ）。
【図６】画像（ｂ）を処理するときの、時間経過による変化を表したグラフ。
【図７】画像処理装置の調停部とモニタの内部構造を示したブロック図。
【発明を実施するための形態】
【００１１】
以下、本発明の情報処理装置を実施するための形態として、画像処理装置を例にとって、以下に図面を用いて説明する。
［実施例１］
図１は、画像処理装置１のブロック図である。１０１、１０２、１０３及び１０４はＣＰＵ、１０５はリードＤＭＡＣ、１０６はライトＤＭＡＣ、１０７はメモリ、１０８は調停部、１０９はバス、１１０、１１１、１１２、１１３及び１１４はバッファ、１１５はモニタである。ＣＰＵ１０１、１０２、１０３及び１０４は、メモリ１０７に記憶されたプログラムを、バス１０９を介して読み出して、そのプログラムに従って動作するプロセッサである。また、各ＣＰＵは、データ入出力ポートを持ち、それぞれのＣＰＵの前後にはバッファが設けられている。各ＣＰＵは、一つのバッファに対してデータ読み込み要求信号を出力してデータの読み込みを、もう一つのバッファに対してデータ書き出し要求信号を出力してデータの書き出しを行う。図中の太い片方向矢印はデータの転送される方向を示し、細い双方向矢印はデータ転送の制御信号を示している。ここで、データ転送の制御信号とは、データ読み込み要求信号、データ書き出し要求信号、後述のＦＵＬＬ信号及びＥＭＰＴＹ信号である。
【００１２】
リードＤＭＡＣ１０５は、あらかじめ決められた動作を行うモジュールで、バス１０９を介してメモリ１０７からデータを読み出し、バッファ１１０に対してデータ書き込み要求信号を出力してデータの書き込みを行う。ライトＤＭＡＣ１０６は、あらかじめ決められた動作を行うモジュールで、バッファ１１４に対してデータ読み出し要求信号を出力してデータの読み出しを行い、バス１０９を介してメモリ１０７に対してデータの書き込みを行う。
【００１３】
メモリ１０７は、画像処理装置１の主記憶装置で、ＣＰＵのプログラムを記憶する他にＣＰＵのワークメモリとして変数やスタック領域として使用される。またメモリ１０７は、画像処理装置１が使用する画像データ、すなわち、入力画像データ、中間画像データ、出力画像データを格納する。調停部１０８は、バス１０９の使用許可調停を行うアービタで、各ＣＰＵと各ＤＭＡＣからのメモリアクセス要求を受信して、許可信号を返信する。
【００１４】
調停部１０８は、複数のメモリアクセス要求がある場合には、モニタ１１５から送信される優先度情報に従ってバスの使用許可を発行する。バス１０９は、各ＣＰＵと各ＤＭＡＣがメモリ１０７にアクセスするための共有バスである。バス１０９は、一度に一つのバスマスタ（ＣＰＵおよびＤＭＡＣ）だけがメモリにアクセスすることを許されるため、前述の通り、調停部１０８が複数のメモリアクセス要求を調停する。
【００１５】
バッファ１１０、１１１、１１２、１１３及び１１４は、各ＣＰＵと各ＤＭＡＣの間で転送されるデータを受信・送信するデータバッファであり、内部のＳＲＡＭに転送されるデータを既定数保持することができる。各バッファは、データ入力側に接続されたＣＰＵまたはＤＭＡＣからデータ書き込み要求信号と共に書き込みデータを受信して内部に格納する。このとき、内部のＳＲＡＭにすでに既定数のデータが書き込まれている場合には、入力側に接続されたＣＰＵまたはＤＭＡＣに対してＦＵＬＬ信号を出力しておくことで、データ書き込み要求には応じずに書き込みデータを受信しないことを通知する。通知を受けた、データ入力側に接続されたＣＰＵまたはＤＭＡＣはＦＵＬＬ信号がなくなるまでデータの書き込みを完了せずに停止して待機する。
【００１６】
また、各バッファは、データ出力側に接続されたＣＰＵまたはＤＭＡＣからデータ読み出し要求信号を受信すると共に読み出しデータを送信する。このとき、内部のＳＲＡＭにデータが一つも格納されていない場合には、出力側に接続されたＣＰＵまたはＤＭＡＣに対してＥＭＰＴＹ信号を出力しておくことで、データ読み出し要求には応じずに読み出しデータを送信しないことを通知する。通知を受けた、データ出力側に接続されたＣＰＵまたはＤＭＡＣはＥＭＰＴＹ信号がなくなるまでデータの読み出しを完了せずに停止して待機する。
【００１７】
モニタ１１５は、各バッファのデータ書き込みとデータ読み出しを監視するモニタで、データ書き込み要求信号、データ読み出し要求信号、ＦＵＬＬ信号及びＥＭＰＴＹ信号を観測している。モニタ１１５は、ＦＵＬＬ信号とデータ書き込み要求信号が同時に出力されていることを観測すると、内部のＦＵＬＬカウンタをカウントアップする。また、モニタ１１５は、ＥＭＰＴＹ信号とデータ読み出し要求信号が同時に出力されていることを観測すると、内部のＥＭＰＴＹカウンタをカウントアップする。また、モニタ１１５は、既定期間のカウント結果の値からバス１０９の調停の優先度を決定して、調停部１０８に対して優先度制御情報を送信する。モニタ１１５の動作の詳細は後述する。
【００１８】
画像処理装置１は、プリント画像データのレンダリング処理を行うように構成されている。以下、メモリ１０７に格納されているＤＬデータを画像処理装置１でレンダリング画像処理を行って生成した出力画像データをメモリ１０７に転送する場合について説明する。ここで、レンダリング画像処理は、ＤＬデータをメモリ１０７からリードＤＭＡＣ１０５が読み出して、ＣＰＵ１０１、１０２、１０３及び１０４がレンダリング画像処理し、出力画像データをライトＤＭＡＣ１０６がメモリ１０７に転送する処理である。４つのＣＰＵ１０１、１０２、１０３及び１０４は、レンダリング画像処理を４つの処理に分割したそれぞれの処理を実行するように構成されている。
【００１９】
＜エッジ処理：ＣＰＵ１０１＞
ＣＰＵ１０１は、ＤＬデータに含まれるオブジェクトのエッジに関する処理を行う。そのため、ＣＰＵ１０１の処理量は、ＤＬデータに含まれるオブジェクトのエッジ数に依存して増加する。
＜レベル情報の処理：ＣＰＵ１０２＞
ＣＰＵ１０２は、ＣＰＵ１０１から出力された中間データに含まれるオブジェクトの上下関係を示すレベル情報に関する処理を行う。そのため、ＣＰＵ１０２の処理量は、中間データに含まれるレベル数に依存して増加する。
＜フィル処理：ＣＰＵ１０３＞
ＣＰＵ１０３は、ＣＰＵ１０２から出力された中間データに含まれるオブジェクトの中を画素値で塗りつぶすフィルに関する処理を行う。そのため、ＣＰＵ１０３の処理量は、中間データに含まれるフィル数に依存して増加する。
＜合成処理：ＣＰＵ１０４＞
ＣＰＵ１０４は、ＣＰＵ１０３から出力された中間データに含まれる画素値と下地となる白画素とを合成する処理を行う。そのため、ＣＰＵ１０４の処理量は、下地の既定の画素数を最低の処理量として、さらに、中間データに含まれる画素値の量に依存して増加する。
【００２０】
図２は、画像処理装置１のモニタ１１５の内部構造を示したブロック図である。
＜ＦＵＬＬカウンタ＞
１１５１、１１５２、１１５３、１１５４及び１１５５はＦＵＬＬカウンタで、１１５６、１１５７、１１５８、１１５９及び１１６０はＥＭＰＴＹカウンタで、１１６１は判断部である。ＦＵＬＬカウンタ１１５１、１１５２、１１５３及び１１５４は、それぞれ、ＣＰＵ１０１、１０２、１０３及び１０４に対応したカウンタである。ＦＵＬＬカウンタ１１５１、１１５２、１１５３及び１１５４は、各ＣＰＵの出力側のバッファがＦＵＬＬではなく、かつ、各ＣＰＵの入力側のバッファがＦＵＬＬのときにカウントされる。ここで、単にＣＰＵの入力側のバッファがＦＵＬＬという条件だけではなく、出力側のバッファがＦＵＬＬではないという条件を加えるのは、対応するＣＰＵの動作が遅いことが原因となって入力側のバッファがＦＵＬＬになっていることを検出するためである。
ＦＵＬＬカウンタ１１５５は、ライトＤＭＡＣ１０６に対応したカウンタで、入力側のバッファがＦＵＬＬのときにカウントされる。
【００２１】
＜ＥＭＰＴＹカウンタ＞
ＥＭＰＴＹカウンタ１１５６は、リードＤＭＡＣ１０５に対応したカウンタで、出力側のバッファがＥＭＰＴＹのときにカウントされる。ＥＭＰＴＹカウンタ１１５７、１１５８、１１５９及び１１６０は、それぞれ、ＣＰＵ１０１、１０２、１０３及び１０４に対応したカウンタで、入力側のバッファがＥＭＰＴＹではなく、かつ、出力側のバッファがＥＭＰＴＹのときにカウントされる。ここで、単に出力側のバッファがＥＭＰＴＹという条件だけではなく、入力側のバッファがＥＭＰＴＹではないという条件を加えるのは、対応するＣＰＵの動作が遅いことが原因となって出力側のバッファがＥＭＰＴＹになっていることを検出するためである。
＜判断部１１６１＞
判断部１１６１は、ＦＵＬＬカウンタ１１５１、１１５２、１１５３、１１５４、１１５５、ＥＭＰＴＹカウンタ１１５６、１１５７、１１５８、１１５９及び１１６０からのカウンタ値の読み出しとクリアを行う。判断部１１６１は、既定の時間間隔でカウンタ値を読み出して、内部のＦＵＬＬ結果値レジスタとＥＭＰＴＹ結果値レジスタに記憶する。そして、判断部１１６１は、それらの結果値の大きさの順に元のカウンタに対応する各ＤＭＡＣと各ＣＰＵの優先度を決定し、調停部１０８に優先度情報を送信する。また、判断部１１６１は、既定の条件で各カウンタに対してリセット信号を送信してカウント値のリセットを行う。既定の条件は、カウンタ値の読み出しの回数が既定の回数行われたときと、もっとも優先するＤＭＡＣまたはＣＰＵが変更になったときである。ここで、カウンタ値をリセットするのは、古いカウンタ値を使わないことで、処理のボトルネックが変わったことを検出しやすくするためである。
【００２２】
［画像（ａ）のレンダリング］
図３は、画像処理装置１がレンダリング画像処理で生成する画像の一例である。図３（Ａ）は、レンダリング画像処理によって生成された画像（ａ）を示す。図３（Ｂ）は、図３（Ａ）の元となるＤＬデータの特徴を表に示したものである。画像処理装置１は画像（ａ）の上から順番に処理を行い、また、ページ画像を８つのバンドに分割して順番に処理するので、バンド毎にＤＬデータの特徴を示してある。バンド１とバンド８は、余白部分であり、オブジェクトが含まれないので、エッジ数、レベル数、フィル数が０である。合成数は、最低でもバンドに含まれる画素数分の処理が必要となるため、０ではない。また、バンド２からバンド７は、線や文字を表すオブジェクトが含まれるため、その量に応じた数値となっているが、画像データが複雑ではないため、いずれも少ない数値である。ここで前述の通り、エッジ数、レベル数、フィル数及び合成数は、それぞれ、ＣＰＵ１０１、ＣＰＵ１０２、ＣＰＵ１０３及びＣＰＵ１０４の処理量を左右する主な要因であり、各ＣＰＵの処理時間はこの数に依存する。ただし、この表の数値は、説明のため便宜的に示しているものである。実際にはＤＬデータを処理した結果で判明する数値なので、各ＣＰＵの処理負荷や処理時間があらかじめわかっているわけではない。この表の数値では、すべてのバンドで合成数がもっとも大きく、４つのＣＰＵの中ではＣＰＵ１０４の処理に時間がかかり、ＣＰＵ１０４が処理のボトルネックになることが予想できる。
【００２３】
図４は、画像処理装置１が図３で示した画像（ａ）のデータをレンダリング処理するときの、各バッファが格納しているデータ量と、モニタ１１５内部の判断部１１６１が読み出して記憶する各カウンタの結果値の、時間経過による変化を表したグラフである。図３（Ｂ）で示したように、ボトルネックとなるＣＰＵはＣＰＵ１０４であり、他のＣＰＵの処理負荷が少ないため、ＣＰＵ１０４の入力側のバッファ１１３がページの最初からバンド６の終わりまでＦＵＬＬ状態となっている。またその影響で、バッファ１１３がＦＵＬＬ状態となることによって、ＣＰＵ１０３がデータを出力できずに停止するため、ＣＰＵ１０３はバッファ１１２からデータを受信しなくなり、結果としてバッファ１１２もＦＵＬＬ状態となっている。さらに、バッファ１１２がＦＵＬＬ状態となることによって、ＣＰＵ１０２がデータを出力できずに停止するため、ＣＰＵ１０２はバッファ１１１からデータを受信しなくなり、結果としてバッファ１１１もＦＵＬＬ状態となっている。そしてさらに、バッファ１１１がＦＵＬＬ状態となることによって、ＣＰＵ１０１がデータを出力できずに停止するため、ＣＰＵ１０１はバッファ１１０からデータを受信しなくなり、結果としてバッファ１１０もＦＵＬＬ状態となっている。
【００２４】
これらの複数のバッファＦＵＬＬの状態でも、前述の通りモニタ１１５は発端となったＣＰＵ１０４に対応するＦＵＬＬカウンタ１１５４だけをカウントアップしている。また一方、ＣＰＵ１０４の出力側のバッファ１１４は、ページの最初から最後までＥＭＰＴＹ状態を頻繁に発生させている。これは、ＣＰＵ１０４がバッファ１１４に対してデータを書き込む速度が、ライトＤＭＡＣ１０６がバッファ１１４からデータを読み出す速度よりも遅いためである。このバッファＥＭＰＴＹの状態で、前述の通りモニタ１１５は発端となったＣＰＵ１０４に対応するＥＭＰＴＹカウンタ１１６０をカウントアップしている。また入力ＤＬデータ終了後のバンド７とバンド８の間は、リードＤＭＡＣ１０５の出力側のバッファ１１０はＥＭＰＴＹ状態を発生させている。これは、入力されるＤＬデータが完了したためである。このバッファＥＭＰＴＹの状態で、モニタ１１５はリードＤＭＡＣ１０５に対応するＥＭＰＴＹカウンタ１１５６をカウントアップしている。
【００２５】
なお、ライトＤＭＡＣ１０６からの出力はページの全領域の画素であり、バンド１からバンド８までが連続して順番に出力されるので、グラフには時間経過と共にライトＤＭＡＣ１０６がどのバンドの出力を行っているかを示してある。しかし、リードＤＭＡＣ１０５とＣＰＵ１０１とＣＰＵ１０２は、ＤＬデータに含まれるオブジェクトに依存した処理を行うため、オブジェクトの存在しないバンド１とバンド８の処理は行われない。そのため、処理開始直後には、ＣＰＵ１０１とＣＰＵ１０２はバンド２の処理を行い、ＣＰＵ１０３とＣＰＵ１０４はバンド１の余白部分の画素値出力を行うというように、すべてのＣＰＵやＤＭＡＣが同じバンドの処理を行っているわけではない。
【００２６】
この図４では、カウンタの結果値は、ＦＵＬＬカウンタ１１５４の結果値とＥＭＰＴＹカウンタ１１６０の結果値だけが大きな値となっている。前述の通り、このグラフでのカウンタの結果値は、判断部１１６１が既定時間間隔で読み出すカウンタの値で一定時間毎にしか変化しないため、最初の間隔の間は初期値の０を示して、その後、既定時間経過後のカウンタの値が反映される。
【００２７】
このグラフでは、処理開始後の既定時間経過後からバンド６の出力が終了するまでの間、ＦＵＬＬカウンタ１１５４の結果値が大きな値を示しているので、判断部１１６１はＣＰＵ１０４がこの間の処理のボトルネックになっていることを判断できる。また、バンド７からバンド８の出力が終了するまでの間、ＥＭＰＴＹカウンタ１１６０の結果値が大きな値を示しているので、判断部１１６１はＣＰＵ１０４がこの間の処理のボトルネックになっていることを判断できる。
したがって、判断部１１６１は、ＦＵＬＬカウンタ１１５４の結果値が大きな値となっている期間に、調停部１０８に対してＣＰＵ１０４を優先するように優先度情報を送信する。また判断部１１６１は、ＥＭＰＴＹカウンタ１１５６の結果値とＥＭＰＴＹカウンタ１１６０の結果値とが順番に大きな値となっている期間に、調停部１０８に対してリードＤＭＡＣ１０５とＣＰＵ１０４を順番に優先するように優先度情報を送信する。調停部１０８は、バス１０９の使用許可を判断部１１６１から受信したＣＰＵとＤＭＡＣに対して優先的に発行するため、処理のボトルネックであるＣＰＵとＤＭＡＣは通常よりもメモリアクセスが高速化され、処理時間が短縮される。
【００２８】
前述の通り、パイプライン処理の全体の処理時間は、ボトルネックとなるステージの処理時間に支配されるため、処理のボトルネックであるＣＰＵとＤＭＡＣの処理時間を短縮することで、画像処理装置１全体の処理時間を短縮することができる。このとき同時に、他のＣＰＵとＤＭＡＣのメモリアクセスの優先度は下がり、通常よりもメモリアクセスが低速になるが、処理のボトルネック以外の処理速度が下がってもパイプライン全体の処理速度には影響しない。また、最後の期間にはリードＤＭＡＣ１０５が最優先でＣＰＵ１０４が二番目の優先に設定されるが、実際には入力ＤＬデータ終了後にリードＤＭＡＣ１０５はメモリアクセスを行わないので、実質的に二番目の優先のＣＰＵ１０４が最優先されることになる。
なお、共有バスで複数のＣＰＵが連続的にメモリアクセスする構成で、特定のＣＰＵとＤＭＡＣのメモリアクセス優先度を高くしたときにそのＣＰＵとＤＭＡＣのメモリアクセスの待ち時間は短くなり、処理時間が短縮する。これは、共有バスの特徴として自明であるので説明を省略する。
【００２９】
［画像（ｂ）のレンダリング］
図５は、画像処理装置１がレンダリング画像処理で生成する画像の別の例である。図５（Ａ）は、レンダリング画像処理によって生成された画像（ｂ）を示す。図５（Ｂ）は、図５（Ａ）の元となるＤＬデータの特徴を表に示したものである。バンド分割は図３と同様であるので説明を省略する。バンド１とバンド２は、細かい文字と罫線のオブジェクトを含んでおり、エッジ数が非常に多くなっている。また、バンド３からバンド７は、塗りつぶしや重ね合わせのオブジェクトが多く含まれるため、フィル数が非常に多くなっている。バンド８は、オブジェクト数が少ないため、エッジ数、レベル数及びフィル数が小さな値で、合成数もほぼバンドに含まれる画素数分ほどの小さな値である。なお、この表の数値は、前述の図３（Ｂ）の表における数値と同様に、説明のため便宜的に示しているものであり、実際にはＤＬデータを処理した結果で判明する数値である。
【００３０】
この表の数値では、バンド１とバンド２でエッジ数がもっとも大きく、４つのＣＰＵの中ではＣＰＵ１０１の処理に時間がかかり、ＣＰＵ１０１が処理のボトルネックになることが予想できる。また、バンド３からバンド７でフィル数がもっとも大きく、４つのＣＰＵの中ではＣＰＵ１０３の処理に時間がかかり、ＣＰＵ１０３が処理のボトルネックになることが予想できる。同様に、バンド８では合成数がもっとも大きく、４つのＣＰＵの中ではＣＰＵ１０４の処理に時間がかかり、ＣＰＵ１０４が処理のボトルネックになることが予想できる。
【００３１】
図６は、画像処理装置１が図５で示した画像（ｂ）のデータをレンダリング処理するときの、各バッファが格納しているデータ量と、モニタ１１５内部の判断部１１６１が読み出して記憶する各カウンタの結果値の、時間経過による変化を表したグラフである。図５（Ｂ）で示したように、ボトルネックとなるＣＰＵはバンド１とバンド２がＣＰＵ１０１、バンド３からバンド７がＣＰＵ１０３、バンド８がＣＰＵ１０４である。
【００３２】
（バンド１〜２）
そのため、バンド１とバンド２の間はＣＰＵ１０１の入力側のバッファ１１０がＦＵＬＬ状態となっており、モニタ１１５はＣＰＵ１０１に対応するＦＵＬＬカウンタ１１５１をカウントアップしている。なお、バンド１とバンド２の間はＣＰＵ１０２、ＣＰＵ１０３及びＣＰＵ１０４の入力側のバッファであるバッファ１１１，１１２，１１３はＥＭＰＴＹ状態を頻繁に発生させている。これは、ＣＰＵ１０１が大量のエッジ数の処理をする間に、ＣＰＵ１０２、ＣＰＵ１０３及びＣＰＵ１０４は少ないレベル数、フィル数、合成数の処理を速く完了できるからである。ただ、この間のＥＭＰＴＹカウンタ１１５７、１１５８、１１５９，１１６０の値はＦＵＬＬカウンタ１１５１の値よりも小さいので、優先度の判断結果には影響を与えない。
【００３３】
（バンド３〜７）
また一方、バンド３からバンド７の間はＣＰＵ１０３の入力側のバッファ１１２がＦＵＬＬ状態となっている。またその影響で、図４の場合と同様に、バッファ１１２がＦＵＬＬ状態となることによってバッファ１１１が、またその影響でバッファ１１０が、それぞれＦＵＬＬ状態となっている。これらの複数のバッファＦＵＬＬの状態でも、前述の通りモニタ１１５は発端となったＣＰＵ１０３に対応するＦＵＬＬカウンタ１１５３だけをカウントアップしている。
【００３４】
（バンド８）
またさらに一方で、バンド８の間は、ＣＰＵ１０４の出力側のバッファ１１４はＥＭＰＴＹ状態を頻繁に発生させている。これは、ＣＰＵ１０４がバッファ１１４に対してデータを書き込む速度が、ライトＤＭＡＣ１０６がバッファ１１４からデータを読み出す速度よりも遅いためである。このバッファＥＭＰＴＹの状態で、モニタ１１５は発端となったＣＰＵ１０４に対応するＥＭＰＴＹカウンタ１１６０をカウントアップしている。また入力ＤＬデータ終了後のバンド８では、リードＤＭＡＣ１０５の出力側のバッファ１１０はＥＭＰＴＹ状態を発生させている。これは、入力されるＤＬデータが完了したためである。このバッファＥＭＰＴＹの状態で、モニタ１１５はリードＤＭＡＣ１０５に対応するＥＭＰＴＹカウンタ１１５６をカウントアップしている。
【００３５】
この図６では、カウンタの結果値は、バンド１からバンド２の間はＦＵＬＬカウンタ１１５１の結果値が大きな値となっている。また、バンド３からバンド７の間はＦＵＬＬカウンタ１１５３の結果値が、また、バンド８の間はＥＭＰＴＹカウンタ１１５６とＥＭＰＴＹカウンタ１１６０の結果値が、それぞれ大きなカウンタの結果値となっている。前述の通り、このグラフでのカウンタの結果値は、判断部１１６１が既定時間間隔で読み出すカウンタ値で一定時間毎にしか変化しないため、最初の間隔の間は初期値の０を示して、その後、既定時間経過後のカウンタ値が反映される。
【００３６】
（バンド１〜２）
このグラフでは、処理開始後の既定時間経過後からバンド２の出力が終了するまでの間、ＦＵＬＬカウンタ１１５１の結果値が大きな値を示しているので、判断部１１６１はＣＰＵ１０１がこの間の処理のボトルネックになっていることを判断できる。
【００３７】
（バンド３〜７）
また、バンド３からバンド７の出力が終了するまでの間、ＦＵＬＬカウンタ１１５３の結果値が大きな値を示しているので、判断部１１６１はＣＰＵ１０３がこの間の処理のボトルネックになっていることを判断できる。
【００３８】
（バンド８）
またさらに、バンド８の出力開始から終了までの間、ＥＭＰＴＹカウンタ１１５６の結果値が大きな値を示しているので、判断部１１６１はリードＤＭＡＣ１０５がこの間の処理のボトルネックになっていると判断する。それと同時にバンド８の出力開始から終了までの間、ＥＭＰＴＹカウンタ１１６０の結果値が次に大きな値を示しているので、判断部１１６１はＣＰＵ１０４がこの間の処理の二番目のボトルネックになっていると判断できる。
【００３９】
したがって、判断部１１６１は、ＦＵＬＬカウンタ１１５１の結果値が大きな値となっている期間（バンド１〜２）に、調停部１０８に対してＣＰＵ１０１を優先するように優先度情報を送信する。また判断部１１６１は、ＦＵＬＬカウンタ１１５４の結果値が大きな値となっている期間（バンド３〜７）に、調停部１０８に対してＣＰＵ１０４を優先するように優先度情報を送信する。また判断部１１６１は、ＥＭＰＴＹカウンタ１１５６の結果値とＥＭＰＴＹカウンタ１１６０の結果値とが順番に大きな値となっている期間（バンド８）に、調停部１０８にリードＤＭＡＣ１０５とＣＰＵ１０４を順番に優先するように優先度情報を送信する。
【００４０】
調停部１０８は、バス１０９の使用許可を判断部１１６１から受信したＣＰＵとＤＭＡＣに対して優先的に発行するため、処理のボトルネックであるＣＰＵとＤＭＡＣは通常よりもメモリアクセスが高速化され、処理時間が短縮される。前述の通り、パイプライン処理の全体の処理時間は、ボトルネックとなるステージの処理時間に支配されるため、処理のボトルネックであるＣＰＵとＤＭＡＣの処理時間を短縮することで、画像処理装置１全体の処理時間を短縮することができる。このとき同時に、他のＣＰＵとＤＭＡＣのメモリアクセスの優先度は下がり、通常よりもメモリアクセスが低速になるが、処理のボトルネック以外の処理速度が下がってもパイプライン全体の処理速度には影響しない。また、最後の期間（バンド８）にはリードＤＭＡＣ１０５が最優先でＣＰＵ１０４が二番目の優先に設定される。しかし、実際には入力ＤＬデータ終了後にリードＤＭＡＣ１０５はメモリアクセスを行わないので、実質的に二番目の優先であるＣＰＵ１０４が最優先されることになる。
【００４１】
なお、共有バスで複数のＣＰＵとＤＭＡＣが連続的にメモリアクセスする構成で、特定のＣＰＵとＤＭＡＣのメモリアクセス優先度を高くしたときにそのＣＰＵとＤＭＡＣのメモリアクセスの待ち時間は短くなり、処理時間が短縮する。これは、共有バスの特徴として自明であるので説明を省略する。
【００４２】
［実施例１の効果］
以上の構成により、画像処理装置１は、ボトルネックとなっているステージをリアルタイムに特定して、そのステージの処理を実行する画像処理モジュールを優先的に動作させることができる。それにより、画像処理パイプライン全体の処理速度がもっとも処理速度が遅いボトルネックとなっているステージの処理速度そのままに律速されてしまうことを回避できる。
【００４３】
［実施例２］
本発明を実施するための形態として、以下の実施例２について図面を用いて説明する。
図１、図３及び図５は、実施例１と同じである。
実施例２では、ＰＤＬデータをＤＬデータに変換するときに、バンドごとの、エッジ数、レベル数、フィル数及び合成数をカウントし、これを図３（Ｂ），図５（Ｂ）のような一覧表を作成します。これら一覧表のデータから、どのＣＰＵまたはＤＭＡＣの優先度を高くするか、演算を行って決定し、下記の表１を作成する。
【００４４】
図７は、画像処理装置１の調停部１０８とモニタ１１５の内部構造を示したブロック図である。調停部１０８内部の１０８１は優先度設定表である。優先度設定表１０８１はバンド番号毎の優先度設定情報を保持することができ、バス１０９を介したＣＰＵ１０１の制御で保持内容を書き換えることができる。
【００４５】
調停部１０８は、モニタ１１５から優先度情報として現在処理中のバンド番号情報を受信して、優先度設定表１０８１からそのバンド番号に対応する優先度設定情報を読み出し、その優先度に従ってバス１０９の優先度制御を行う。モニタ１１５内部の１１６２はバンド識別部である。バンド識別部１１６２は、ライトＤＭＡＣ１０６がバッファ１１４からデータを読み出した回数を内部でカウントして画素値に換算することで、現在処理中のバンド番号を識別することができ、そのバンド情報を調停部１０８に対して送信する。
【００４６】
ＣＰＵ１０１は、図３に示すＤＬデータを処理する前に、あらかじめ表１の内容を優先度設定表１０８１に対して設定する。
この表１の作成方法は、次のようにする。まず、図３に示す画像（ａ）のＰＤＬデータをＤＬデータに変換する時に、エッジ数、レベル数、フィル数及び合成数をカウントした値を保持する。そして、この値からバンド毎の処理でボトルネックになるＣＰＵやＤＭＡＣを予想する。以上の結果をまとめて表１として、レンダリング処理の前に作成するのである。
【表１】
2016091307.tif 000003
【００４７】
設定後に画像処理装置１に画像（ａ）（図３に示すＤＬデータ）を処理させることで、ボトルネックとなるＣＰＵとＤＭＡＣを優先した処理を実行することができる。
【００４８】
［画像（ｂ）の処理］
画像（ｂ）の処理も画像（ａ）の処理と同様で、ＣＰＵ１０１は、図５に示すＤＬデータを処理する前に、あらかじめ下記の表２の内容を優先度設定表１０８１に対して設定する。
この表２の作成方法は、次のようにする。まず、図５に示す画像（ｂ）のＰＤＬデータをＤＬデータに変換する時に、エッジ数、レベル数、フィル数及び合成数をカウントした値を保持する。そして、この値からバンド毎の処理でボトルネックになるＣＰＵやＤＭＡＣを予想する。以上の結果をまとめて表２として、レンダリング処理の前に作成するのである。
【表２】
2016091307.tif 000004
【００４９】
設定後に画像処理装置１に画像（ｂ）（図５に示すＤＬデータ）を処理させることで、ボトルネックとなるＣＰＵとＤＭＡＣを優先した処理を実行することができる。
【００５０】
［実施例２の効果］
この実施例２によれば、画像処理装置１は、レンダリング処理の前に画像データの特徴を抽出し、その情報を用いてバンド毎のボトルネックとなっているステージを事前に特定し、ボトルネックとなるステージを優先的に処理させることができる。それにより、バッファの蓄積状況を観測することなく、画像処理パイプライン全体の処理速度がもっとも処理速度が遅いボトルネックとなっているステージの処理速度に律速されてしまうことを回避できる。
【００５１】
なお、上述した各種データの構成及びその内容はこれに限定されるものではなく、用途や目的に応じて、様々な構成や内容で構成される。
つまり、本明細書では、本発明における情報処理装置の一例として、画像処理装置を例にとって説明したが、この画像処理は、プリンター等の画像形成装置（印刷装置等）に出力するための画像処理に限定されるものではない。
本発明は、画像形成装置用の画像処理装置に限らず、ディスプレイに表示する画像を形成するグラフィック・プロセッシング・ユニット（ＧＰＵ）も当然に含まれる。
さらに本発明は、重力多体問題、分子動力学等の種々の並列計算を行うために、情報処理パイプラインを用いた計算装置にも適用可能である。
【００５２】
［その他の実施例］
本発明は、上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサがプログラムを読出し実行する処理でも実現可能である。
また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【符号の説明】
【００５３】
１０１〜１０４  ＣＰＵ
１０５  リードＤＭＡＣ
１０６  ライトＤＭＡＣ
１０７  メモリ
１０８  調停部
１０９  バス
１１０〜１１４  バッファ
１１５  モニタ
１１６  電源部
【図１】
2016091307.tif 000005
【図２】
2016091307.tif 000006
【図３】
2016091307.tif 000007
【図４】
2016091307.tif 000008
【図５】
2016091307.tif 000009
【図６】
2016091307.tif 000010
【図７】
2016091307.tif 000011