(57)【要約】【課題】補助処理装置のすべてが有効利用されるという点を維持しつつも、ページの画像データを補助処理装置の数に応じた数の処理単位に分割する方式と比較して、処理効率をより高める。【解決手段】各ＤＲＰはデータ入出力とデータ処理とを並列して実行するので、同時に２つの処理単位を取扱可能である。ここで、個々のＤＲＰが１ページの画像データを処理する間に、ＲＩＰ部１０から分割部１２に対して３ページの中間形式の画像データが入力されるとする。この場合、分割部１２は、「ＤＲＰ数」×「１つのＤＲＰが同時取扱可能な処理単位数」／「ページ並列度」＝６×２／３＝４が、適切な分割数として求め、個々のページを４つの処理単位（例えばタイル）に分割する。分割結果の各処理単位は、分配部１４により、ページ順が小さいものから順に各ＤＲＰに分配される。【選択図】図３
2013196602.tif 000002
【特許請求の範囲】
【請求項１】
画像データに対してあらかじめ定められた処理を行う複数の補助処理装置と、
１ページの画像データを複数の処理単位に分割して前記各補助処理装置に対して分配する分配手段と、
を備え、
前記分配手段は、前記補助処理装置の数と、１つの補助処理装置が同時に入力及び処理可能な処理単位の数と、１つの補助処理装置が１ページの画像データを処理する間に入力される画像データのページ数を表すページ並列度と、に基づいて、１ページの画像データをいくつに分割するかを示す分割数を算出し、前記１ページの画像データを前記算出した分割数の処理単位に分割して前記各補助処理装置に分配する、
画像処理装置。
【請求項２】
各ページの画像データが入力されるのと並行してそれら各ページの入力の時間間隔を測定する測定手段を更に備え、
前記分配手段は、前記測定手段が測定した前記時間間隔を用いて前記ページ並列度を更新し、更新された前記ページ並列度を用いて前記分割数を算出する、
ことを特徴とする請求項１に記載の画像処理装置。
【請求項３】
前記分配手段は、前記各補助処理装置に過去に分配した処理単位の処理負荷レベルの履歴を記録し、前記各補助処理装置に分配する処理単位を選択する際に前記履歴を参照することにより、ページ順を維持する範囲内で、前記各補助処理装置に分配される処理単位の処理負荷レベルの時間平均がそれら補助処理装置間で等しくなるよう、前記各補助処理装置に分配する処理単位を選択する、
ことを特徴とする請求項１又は２に記載の画像処理装置。
【請求項４】
前記分配手段は、補助処理装置が第１の処理単位についての処理を実行中に、次に分配する第２の処理単位を当該補助処理装置に転送し、当該補助処理装置が前記第１の処理単位の処理を完了すると、前記第２の処理単位の処理が開始されるようにし、
前記１つの補助処理装置が同時に入力及び処理する処理単位の数は２である、
ことを特徴とする請求項１〜３のいずれか１項に記載の画像処理装置。
【請求項５】
コンピュータを、１ページの画像データを複数の処理単位に分割して各補助処理装置に対して分配する分配手段、として機能させるためのプログラムであって、
前記分配手段は、前記補助処理装置の数と、１つの補助処理装置が同時に入力及び処理可能な処理単位の数と、１つの補助処理装置が１ページの画像データを処理する間に入力される画像データのページ数を表すページ並列度と、に基づいて、１ページの画像データをいくつの処理単位に分割するかを示す分割数を算出し、前記１ページの画像データを前記算出した分割数の処理単位に分割して前記各補助処理装置に分配する、
ことを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像処理装置及びプログラムに関する。
【背景技術】
【０００２】
デジタルプリンタやデジタル複合機（プリンタ、スキャナ、コピー機等の機能を併せ持つ多機能装置）は、印刷等のために、ページ記述言語で記述された印刷データの解釈、解釈結果に基づくラスター画像の生成、色空間変換等のカラーマッチング処理、一時保存や転送のためのラスター画像データの圧縮及び伸張等のように各種の画像処理を実行している。印刷業務分野等で用いられる高速なシステムでは、このような画像処理の一部をハードウエアアクセラレータ等の補助処理装置に実行させることで処理の高速化を図っているケースが少なくない。更なる高速化のために、プリンタシステムにハードウエアアクセラレータを複数搭載し、１ページの画像データをバンド又はタイルと呼ばれる複数の処理単位に分割し、それら複数のハードウエアアクセラレータに並列処理させることも考えられる。
【０００３】
ハードウエアアクセラレータとして、内部の論理回路構成を動的に再構成可能なＤＲＰ（Dynamic Reconfigurable Processor：動的再構成可能プロセッサ）を用いる例も知られている。
【０００４】
特許文献１には、リコンフィギュラブル回路内部で時分割で複数のタスクを並列実行する仕組みが開示されている。
【０００５】
特許文献２には、再構成可能ハードウエアにおいて、ハードウエア内部のある機能オブジェクトが過負荷になったときに、空き領域にその機能オブジェクトを複製し、その複製オブジェクトに対して処理待ちメッセージを転送して実行させる方式が開示されている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００６−０１８５３９号公報
【特許文献２】特開２０００−１４８７０７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
ところで、画像データを処理するハードウエアアクセラレータ等の補助処理装置を複数備える場合、単純には、ページごとの画像データをそれぞれ補助処理装置の数に応じた数の処理単位に分割し、それら処理単位を各補助処理装置に分配すれば、それらすべての補助処理装置が有効利用される。
【０００８】
一方、ページを細かく分割するほど、分割処理の処理性能は高くなる。一方、補助処理装置は、処理単位ごとに初期処理等が必要なので、ページの分割が細かくなればなるほど、初期処理等によるオーバーヘッドが増え、処理効率が低下する。
【０００９】
本発明は、補助処理装置のすべてが有効利用されるという点を維持しつつも、ページの画像データを補助処理装置の数に応じた数の処理単位に分割する従来の方式と比較して、処理効率をより高めることを目的とする。
【課題を解決するための手段】
【００１０】
請求項１に係る発明は、画像データに対してあらかじめ定められた処理を行う複数の補助処理装置と、１ページの画像データを複数の処理単位に分割して前記各補助処理装置に対して分配する分配手段と、を備え、前記分配手段は、前記補助処理装置の数と、１つの補助処理装置が同時に入力及び処理可能な処理単位の数と、１つの補助処理装置が１ページの画像データを処理する間に入力される画像データのページ数を表すページ並列度と、に基づいて、１ページの画像データをいくつの処理単位に分割するかを示す分割数を算出し、前記１ページの画像データを前記算出した分割数の処理単位に分割して前記補助処理装置に分配する画像処理装置である。
【００１１】
請求項２に係る発明は、各ページの画像データが入力されるのと並行してそれら各ページの入力の時間間隔を測定する測定手段を更に備え、前記分配手段は、前記測定手段が測定した前記時間間隔を用いて前記ページ並列度を更新し、更新された前記ページ並列度を用いて前記分割数を算出する、ことを特徴とする請求項１に記載の画像処理装置である。
【００１２】
請求項３に係る発明は、前記分配手段は、前記各補助処理装置に過去に分配した処理単位の処理負荷レベルの履歴を記録し、前記各補助処理装置に分配する処理単位を選択する際に前記履歴を参照することにより、ページ順を維持する範囲内で、前記各補助処理装置に分配される処理単位の処理負荷レベルの時間平均がそれら補助処理装置間で等しくなるよう、前記各補助処理装置に分配する処理単位を選択する、ことを特徴とする請求項１又は２に記載の画像処理装置である。
【００１３】
請求項４に係る発明は、前記分配手段は、補助処理装置が第１の処理単位についての処理を実行中に、次に分配する第２の処理単位を当該補助処理装置に転送し、当該補助処理装置が前記第１の処理単位の処理を完了すると、前記第２の処理単位の処理が開始されるようにし、前記１つの補助処理装置が同時に入力及び処理する処理単位の数は２である、ことを特徴とする請求項１〜３のいずれか１項に記載の画像処理装置である。
【００１４】
請求項５に係る発明は、コンピュータを、１ページの画像データを複数の処理単位に分割して各補助処理装置に対して分配する分配手段、として機能させるためのプログラムであって、前記分配手段は、前記補助処理装置の数と、１つの補助処理装置が同時に入力及び処理可能な処理単位の数と、１つの補助処理装置が１ページの画像データを処理する間に入力される画像データのページ数を表すページ並列度と、に基づいて、１ページの画像データをいくつの処理単位に分割するかを示す分割数を算出し、前記１ページの画像データを前記算出した分割数の処理単位に分割して前記補助処理装置に分配する、ことを特徴とするプログラムである。
【発明の効果】
【００１５】
請求項１又は５に係る発明によれば、補助処理装置のすべてが有効利用されるという点を維持しつつも、ページの画像データを補助処理装置の数に応じた分割数の処理単位に分割する従来の方式と比較して、処理効率をより高めることができる。
【００１６】
請求項２に係る発明によれば、ページ群の画像データが入力される速度が時間的に変化する場合でも、その変化に追従して適切な分割数を求めることができる。
【００１７】
請求項３に係る発明によれば、各補助処理装置の処理負荷を平準化することができる。
【００１８】
請求項４に係る発明によれば、個々の補助処理装置に対する処理単位の転送と、転送した処理単位に対する補助処理装置での画像処理とを順番に行う方式よりも、補助処理装置の処理速度を高めることができる。
【図面の簡単な説明】
【００１９】
【図１】実施形態の画像処理装置の一例を示す図である。
【図２】ＤＲＰ内でのデータ入出力とデータ処理とを順番に行う場合と並列して行う場合との比較のための図である。
【図３】ＤＲＰを６つ備える装置において、単位時間に３ページ分の中間形式データがＲＩＰ部から供給される場合の、ページの分割及び分配の例を説明するための図である。
【図４】分割部の処理手順の一例を示す図である。
【図５】分配部の全体的な処理手順の一例を示す図である。
【図６】分配部における配信対象の処理単位を決定するための手順の一例を示す図である。
【発明を実施するための形態】
【００２０】
まず図１を参照して、本実施形態の画像処理装置の例を説明する。この画像処理装置は、プリンタ（図示省略）に内蔵又は接続される装置であり、プリンタに対して供給するラスター画像データを生成する。
【００２１】
図１の例では、ＲＩＰ（Raster Image Processor）部１０は、外部（例えばパーソナルコンピュータや可搬型記憶媒体）からこの画像処理装置に入力される、ページ記述言語（以下、ＰＤＬと略す。ＰＤＬは、Ｐａｇｅ  Ｄｅｓｃｒｉｐｔｉｏｎ  Ｌａｎｇｕａｇｅの略）で記述された印刷データを解釈し、中間形式の画像データへと変換する。中間形式には、例えばディスプレイリスト等があるが、これらに限定されるものではない。中間形式のデータの形式例としては、画像を構成する画像要素である各オブジェクト（例えば、文字フォント、グラフィックス図形、連続調イメージ）を、ラスター走査の走査線ごとやレクトアングル（Ｒｅｃｔａｎｇｌｅ）と呼ばれる矩形に区切った集まりで表現する形式が挙げられる。矩形に区切った場合は、例えば、矩形の角の座標でそのオブジェクトの配置を管理する。例えば、オブジェクトが１つの走査線上に占める区間を表す区間データとして管理し、個々の区間データには、その区間の開始点と終了点の座標、その区間に配置されるオブジェクト種類（文字、グラフィックス、連続調イメージ等）を示す情報、区間データ上の画素値属性（文字やグラフィックスの場合は画素値、連続調イメージの場合はその区間データ上にマップされるイメージ（すなわちこの例ではイメージ本体は別の場所に記憶されている）のアドレスなど）などが含まれる。ＲＩＰ部１０は、ＰＤＬを処理することで、ページ順に、ページ単位の中間形式データを生成する。
【００２２】
ＲＩＰは、その言葉の由来からすればＰＤＬの印刷データをラスター画像データに変換する処理乃至その処理のための処理装置を意味するが、近年ではデータの取扱（例えば一時保存や転送、或いは一部の画像処理）のしやすさから、ＰＤＬのデータをいったん中間形式に変換して取り扱うケースが増えており、このような変換又はその変換のための装置をＲＩＰと呼ぶことも増えている。図１の例はその一例である。
【００２３】
なお、ＲＩＰ部１０は、単一の解釈プロセスで印刷データの先頭ページから順に１ページずつ処理していってもよいし、複数の解釈プロセスを実行してそれらに順にページを割り振ることで複数のページを並列に処理していくようにしてもよい。後者の場合、個々のページの処理負荷の相違等から、ページ順が後のページの中間形式データが前のものよりも先に完成する場合もあるが、このような順番の乱れは、最終的に各ページのラスター画像データをページ順にプリンタに出力するまでのいずれかのステップで修正すればよい。例えば、ＲＩＰ部１０から出力する際に修正してもよいし、分配部１４から各ＤＲＰ１６に処理単位を分配する際に修正してもよいし、また分配部１４が各ＤＲＰ１６から各処理単位についての処理結果を受け取り、それら処理結果をページのラスター画像へと合成してプリンタへと転送する際に修正してもよい（或いはそれらステップのうちの２以上でその都度修正してもよい）。
【００２４】
ＲＩＰ部１０の出力は分配処理部１１に入力される。分配処理部１１は分割部１２と分配部１４とからなる。分割部１２は、ＲＩＰ部１０からページ順に供給される各ページの中間形式データを、バンド又はタイル等の処理単位に分割する。なお、バンドは、ページを副走査方向（印刷時の用紙の搬送方向）または主走査方向（副走査方向と垂直な方向）に沿って分割することによりできる面積の範囲であり、タイルは、ページを主走査方向（副走査方向に垂直な方向）及び副走査方向の両方について分割してできる面積の範囲である。１ページの分割結果である個々の処理単位は、必ずしも互いに等しい面積でなくてもよい。本実施形態では、この分割部１２の処理において、ページを適切な数の処理単位に分割する。１ページをいくつの処理単位に分割するかを示す数を分割数と呼ぶ。分割数の求め方については後で詳しく説明する。
【００２５】
分配部１４は、分割部１２の分割処理により得られた各処理単位の中間形式データを、複数のＤＲＰ１６に分配する。分配部１４の分配処理については、後で詳細な例を説明する。
【００２６】
以上に説明したＲＩＰ部１０、分割部１２及び分配部１４は、例えば、ＣＰＵ（中央演算装置）及びメモリを備えたコンピュータにより、それら各部の処理を記述したプログラムを実行することにより実現される。このコンピュータに対して、複数のＤＲＰ１６がハードウエア的な補助処理装置として接続される。このように、本実施形態の画像処理装置は、メインとなるＲＩＰ部１０等の機能を果たすコンピュータと、補助処理装置としての複数のＤＲＰ１６とから構成される。
【００２７】
ＤＲＰ１６は、内部の論理回路構成を動的に再構成可能なプロセッサである。この実施形態では、例えば、ＤＲＰ１６を、まずラスタライズ回路に再構成することで、処理対象である処理単位の中間形式データからラスター画像を生成（ラスタライズ）する。次に、そのＤＲＰ１６をカラーマッチング回路に再構成することで、そのラスター画像に対してカラーマッチング処理を施し、更にそのＤＲＰ１６をデータ圧縮回路として構成することでカラーマッチング後のラスター画像をデータ圧縮する。各ＤＲＰ１６が出力する圧縮されたラスター画像データは、図示省略した合成部に送られ、合成部にて１つのページの圧縮ラスター画像データへと統合される。そして、ページごとに統合された圧縮ラスター画像データが、例えば、この画像処理装置の後段に接続されたプリントエンジンに転送され、プリントエンジン内に設けられた伸長回路で伸張されてラスター画像データとなる。このラスター画像データに従い、プリントエンジンが用紙に画像を印刷する。なお、ここでは、ＤＲＰ１６が実行する画像処理の一例として、ラスタライズ、カラーマッチング、及び画像データ圧縮を例示したが、これは一例に過ぎない。ＤＲＰ１６にどのような画像処理を実行させるかは、用途や達成したい処理性能等を考慮して決めればよい。例えば、ＤＲＰ１６がラスタライズ及びカラーマッチングのみを行い、合成部（図示省略）が、各ＤＲＰ１６の出力をページごとのラスター画像データに統合した上で、そのページのラスター画像データを圧縮するという構成をとってもよい（これも一例に過ぎない）。
【００２８】
ＤＲＰ１６に入力された処理対象のデータは、ＤＲＰ１６の内部にコンフィギュレーションデータにしたがって構成されたパイプラインをなす一連の処理回路により順に処理されていく。ＤＲＰ１６は、そのようなパイプライン処理の結果を保持するローカルのメモリを持っていてもよい。また、ＤＲＰ１６を別のコンフィギュレーションデータに従って再構成することで、ＤＲＰ１６内の別の処理のためのパイプラインを構成し、前段のコンフィギュレーションの処理結果のデータを、この新たなコンフィギュレーションのパイプラインに入力して処理する。このような再構成及びデータ入力を繰り返すことで、ＤＲＰ１６により一連の画像処理が実行される。
【００２９】
ＤＲＰ１６は、画像処理装置のコンピュータとの間でのデータの入出力と、入力されたデータに対する内部の回路構成による処理とを並列して実行可能な構成を有する。例えば、ＤＲＰ１６は、データの入出力のための回路構成と、入力され（いったんローカルのメモリに保存され）たデータを処理するための回路構成と、を独立に動作させ、それらに別々の処理単位のデータを取り扱わせることができる。本実施形態では、このようなＤＲＰ１６の機能性を利用して、ＤＲＰ１６の処理効率の改善を図っている。この点を、図２を参照して説明する。
【００３０】
図２の上段のタイムチャート（ａ）は、個々の処理単位のデータを単純に順番にＤＲＰ１６に処理させる場合を示している。１つの処理単位のデータをＤＲＰ１６に処理させる場合、まず画像処理装置のメインＣＰＵは、ＤＲＰ１６に対して処理対象の処理単位データを配信する（「Ｗｒｉｔｅ」動作）。配信が完了すると、ＤＲＰ１６は、内部回路を動的に再構成しながらその処理単位データを処理し（「ＤＲＰ処理」）、その処理が完了するとその処理結果のデータをメインＣＰＵに返信する（メインＣＰＵの観点では「Ｒｅａｄ」動作）。データ入出力とデータ処理との並列性を利用しない（ａ）のケースでは、個々の処理単位についてこのようなデータ配信、データ処理、データ返信のサイクルが順に繰り返される。
【００３１】
これに対してタイムチャート（ｂ）は、ＤＲＰ１６にデータ入出力とデータ処理とを並列に実行させた場合を示している。この例では、ＤＲＰ１６が最初の処理単位（図中最も左上のバー）についてのＤＲＰ処理を実行している間に、同じＤＲＰ１６に対して次の処理単位のデータを配信している（図中の中央のバー参照）。図では最初の処理単位についてのＤＲＰ処理の完了と同時に、その次の処理単位の配信が完了するようにしているが、これは一例に過ぎない。前の処理単位についてのＤＲＰ処理が完了した時点で次の処理単位のデータ配信が完了していればよい。そして、最初の処理単位のＤＲＰ処理が完了すると、即座に、既に受信済みの次の処理単位についてのＤＲＰ処理を開始する。このＤＲＰ処理は、最初の処理単位のＤＲＰ処理の結果のメインＣＰＵへの返信と並列に実行される。このように、ＤＲＰ１６においてデータの入出力とデータ処理とを並行して行うことで、データの入出力に要する時間が実質的に隠蔽され、その分だけ処理速度が向上する。
【００３２】
本実施形態では、一例として、各ＤＲＰ１６に、タイムチャート（ｂ）のようにデータの入出力とデータ処理とを並行して行わせる。
【００３３】
このようにＤＲＰ１６がデータ入出力とデータ処理とを並行的に実行する場合、おおまかには、ＤＲＰ１６に対して常に２つの処理単位が関係している（すなわち、１つは入力又は出力され、もう１つは処理されている）。したがって、このようなモードで動作するＤＲＰ１６を無駄なく動作させるには、個々のＤＲＰ１６に対して平均して２つずつ処理単位を分配する必要がある。
【００３４】
このためには、単純には、個々のページのデータをＤＲＰ１６の個数×２の数に分割すればよいが、これではデータが細分化されすぎ、処理単位毎の初期化等のように、ＤＲＰ１６の動作のオーバーヘッドが多くなりすぎる。そこで、本実施形態では、分割部１２は、そのようなオーバーヘッドを減らすために、以下のようにしてページの分割数を定める。
【００３５】
すなわち、まずページ並列度Ｐを以下の式に従い求める。
【００３６】
Ｐ＝Ｔ１／Ｔ２
ここで、Ｔ１は１つのＤＲＰ１６が１ページの中間形式データを処理するのに要する時間であり、Ｔ２は分割部１２がＲＩＰ部１０から１ページずつの中間形式データを受け取る時間間隔（言い換えればＲＩＰ部１０が１ページの中間形式データを生成するのに要する時間）である。言い換えればページ並列度Ｐは、ＲＩＰ部１０の処理速度をＤＲＰの処理速度で除算した値である  。すなわち、ページ並列度Ｐは、ＤＲＰ１６が１ページの中間形式データを処理する間に、ＲＩＰ部１０が何ページ分の中間形式データを生成するのかを示す値である。
【００３７】
ここで、ページ並列度Ｐは、固定値として画像処理装置に設定しておいてもよい。例えば、画像処理装置で取り扱う平均的な内容のページについてのＲＩＰ部１０及びＤＲＰ１６の処理速度を実験等で求め、この実験結果からページ並列度Ｐを計算して設定しておくなどである。
【００３８】
また、別の例として、印刷データの処理中にＲＩＰ部１０又はＤＲＰ１６又はその両方の処理速度を継続的に監視（例えば分割部１２がＲＩＰ部１０からのページの到来間隔を監視するなど）し、監視結果からページ並列度Ｐを動的に計算して利用してもよい。例えば、ある期間の監視結果から求めたページ並列度Ｐを、次の期間の分割数を計算するために用いるという、フィードバック制御を行うなどである。なお、ＲＩＰ部１０又はＤＲＰ１６の一方しか処理速度の監視を行わない場合は、もう一方の処理速度は、実験等であらかじめ求めておいた、標準的なページについての処理速度を用いればよい。
【００３９】
次に、次式に従って分割数（１ページをいくつの処理単位に分割するかを示す数）Ｎを計算する。
【００４０】
分割数Ｎ＝（ＤＲＰ数×２）／ページ並列度Ｐ    ・・・（１）
この（１）式でＤＲＰ数に２を乗じているのは、単位時間（すなわちこの例では１つのＤＲＰ１６が１ページの中間形式データを処理するのに要する時間）に１つのＤＲＰ１６に対して２つの処理単位を分配するからである。すなわち、この（１）式は、ＤＲＰ１６が同時に２つの処理単位を取扱可能（１つは入出力の対象、１つはデータ処理の対象）な場合の例である。ページ並列度Ｐを分母にしているのは、その単位時間にＰページ分のデータが処理対象として入力されるからである。
【００４１】
分割部１２は、ＲＩＰ部１０から入力される１ページの中間形式データを、このようにして求めた分割数Ｎの処理単位に分割する。
【００４２】
図３の例は、ＲＩＰ部１０から分割部１２に対し、単位時間当たり３ページのデータが供給される場合（すなわちページ並列度Ｐが３）の例である。画像処理装置が備えるＤＲＰ１６の数は６個であるとする。
【００４３】
この場合、上述の計算式から分割数Ｎ＝４となり、分割部１２は１ページを４つの処理単位（例えばタイル）に分割する。したがって、単位時間当たりの３ページのデータは、合計で１２個の処理単位に分割され、それら１２個の処理単位が６個のＤＲＰ１６に対して２個ずつ分配されることになる。このように分割数を求めることで、１つ１つのＤＲＰ１６に対して、単位時間当たり２つ（すなわち１つのＤＲＰ１６が同時に並列して取り扱える処理単位の数）の処理単位が配信されることとなる。
【００４４】
このような分割部１２の処理により、各ページをそれぞれ６×２＝１２個に分割する場合と比べて、同じ３ページのデータに対応する処理単位の数が少なくなるので、処理単位毎のＤＲＰ１６の初期化等の回数が少なくて済み、ＤＲＰ１６の処理効率が改善される。
【００４５】
図４に、分割部１２の処理手順の一例を示す。この手順では、分割部１２は上流のＲＩＰ部１０からコマンドを待ち受け（Ｓ１０）、停止指示コマンドを受信した場合には処理を終了し、ページ分割指示を受けた場合には、対象となる１ページの中間形式データを受信してＳ１２に進む。Ｓ１２では、ページ並列度Ｐを求める。ここでは、ページ並列度Ｐを固定値とする例では、画像処理装置に設定されている固定値Ｐを取得すればよい。また、実際の処理の監視結果からページ並列度Ｐを動的に調整する例では、直近のＲＩＰ部１０からのページ受信間隔等からページ並列度Ｐを計算する。このようにしてページ並列度Ｐが得られると、この値ＰとＤＲＰ数（これは画像処理装置にあらかじめ設定しておけばよい）とを用いて、分割数Ｎを算出する（Ｓ１４）。そして、受信したページの中有関係式データを、求めた分割数Ｎに従って、Ｎ個の処理単位（例えばタイル）に分割する（Ｓ１６）。そして、分割結果であるそれらＮ個の処理単位の中間形式データを、分配部１４が備える処理待ちキューに登録する（Ｓ１８）。なお、キューに登録する各処理単位の中間形式データには、そのデータが印刷データ中の第何ページの、何番目の処理単位であるかを示す識別情報を対応づける。
【００４６】
なお、分割部１２は、ＲＩＰ部１０から与えられるページの中間形式データを、単一の分割プロセスで順に１ページずつ分割していってもよいし、複数の分割プロセスを実行してそれらに順にページを割り振ることで複数のページの分割処理を並列実行してもよい。後者の場合、個々のページの分割処理の負荷の相違（中間形式データの場合、分割するといっても、ラスター画像のように簡単にはいかない）等から、ページ順が後のページの分割が前のページの分割よりも先に完了する場合もあるが、このような順番の乱れは、最終的に各ページのラスター画像データをページ順にプリンタに出力するまでのいずれかのステップで修正すればよい。例えば、分配部１４から各ＤＲＰ１６に処理単位を分配する際に修正してもよいし、また分配部１４、又は分配部１４以外の合成処理を行う合成部（図示省略）が各ＤＲＰ１６から各処理単位についての処理結果を受け取り、それら処理結果をページのラスター画像へと合成してプリンタへと転送する際に修正してもよい（或いはそれらステップのうちの２以上でその都度修正してもよい）。
【００４７】
次に、分配部１４の処理手順の一例を説明する。
【００４８】
分割結果である個々の処理単位の中間形式データは、ラスター画像データと違って処理単位ごとにデータ量が異なる（例えば複雑な画像を含んだ処理単位は、中間形式データのデータ量が多くなる）などの理由から、ＤＲＰ１６での処理負荷が一般に処理単位ごとに異なる。もちろん、処理負荷を考慮せず、単純にページ順を崩さないという基準のみで各処理単位を順に各ＤＲＰ１６に分配してももちろんよいが、以下では、各ＤＲＰ１６の処理負荷ができるだけ均一になるように制御する例を示す。このような処理手順の例を図５及び図６に示す。
【００４９】
図５の手順では、まず分配部１４は、処理待ちキュー内に、未分配の処理単位（例えばタイル）があるかどうかを判定する（Ｓ２０）。無い場合には（Ｓ２０の判定結果がＮ）、印刷データの終了等による停止指示が上位の制御部（図示省略）から到来しているかどうかを判定し（Ｓ２２）、到来すればこの手順を終了し、到来していなければキューの監視（Ｓ２０）を続ける。
【００５０】
Ｓ２０で処理待ちキュー内に未分配の処理単位があることを検知した場合、分配部１４は、それらキュー内の処理単位のうち、ＤＲＰ１６への配信対象とするものを判定し、配信する処理を実行する（Ｓ２４）。このＳ２４の処理の詳細な例を図６に示す。
【００５１】
図６の手順では、いずれかのＤＲＰ１６から処理単位（タイル等）の配信要求を取得するごとに（Ｓ３０）、Ｓ３２〜Ｓ４２の処理を実行する。この例では、各ＤＲＰ１６は、それまで実行していた処理単位の処理を完了するごとに、その処理と並行して受信した次の処理単位についての処理を開始すると共に、更にその次の処理単位の配信を分配部１４に要求するものとする。
【００５２】
ＤＲＰ１６から配信要求を受けた分配部１４は、そのＤＲＰ１６に対する直近のあらかじめ定めた回数の配信データの処理負荷レベルの履歴情報を取得する（Ｓ３２）。
【００５３】
ここで処理負荷レベルは、処理単位の中間形式データの処理負荷の重さを示すレベルである。処理単位の処理負荷レベルは、例えば、その処理単位内に含まれるオブジェクトの種類や数から求めればよい。例えば、連続調イメージは文字やグラフィックスよりも処理負荷が高いので、中間形式データが画像を構成する画像要素である各オブジェクトを、ラスター走査の走査線ごとやレクトアングルに区切った区間データで表現する形式を用いる場合、処理単位内のオブジェクト種類ごとの区間データの数を求め、オブジェクト種類ごとの処理負荷の重み値（これはあらかじめ定めておけばよい）を処理単位内のオブジェクト種類ごとの区間データの数に乗じて重み付け加算する等の処理により、その処理単位の処理負荷量を数値化することができる。そのようにして求めた処理負荷量を、閾値判定などにより、あらかじめ定めた処理負荷レベルにマッピングする。例えば、処理負荷レベルとしては、処理負荷が「重い」（例えば数値「１」で表す）、「標準」（例えば「０」で表す）、「軽い」（例えば「−１」で表す）の３段階などであってもよいし、必要ならもっと細かいレベルとしてもよい。もちろん、処理負荷量自体を処理負荷レベルの値として用いてもよい。例えば、分配部１４が、ＤＲＰ１６ごとに、そのＤＲＰ１６に配信した処理単位の処理負荷レベルを、例えばリングバッファのような方式で最新のあらかじめ定めた配信回数分だけ記憶するようにしておき、Ｓ３２ではその記憶された直近の処理負荷レベル群を取得する。なお、ＤＲＰ１６が、分配部１４から処理単位のデータと共に処理負荷レベルの情報を受け取って、最新のあらかじめ定めた配信回数分だけ記憶し、分配部１４に次の処理単位の配信を要求する際に、その記憶情報を分配部１４に通知してもよい。
【００５４】
そして、分配部１４は、Ｓ３２で取得した情報に基づき、Ｓ３０で取得した要求に応じて要求元のＤＲＰ１６に配信する処理単位の処理負荷レベルを判定する（Ｓ３４）。この判定は、ページ順を維持しつつも、各ＤＲＰ１６に分配される処理単位の処理負荷レベルの時間平均がそれらＤＲＰ１６間でほぼ均等になるようにするという基準に基づいて行う。
【００５５】
例えば、処理負荷レベルが「重い」、「標準」、「軽い」の３段階であり、Ｓ３２で情報を取得する直近の過去の処理単位の数を１つ（すなわち前回配信した処理単位のみの情報のみを取得）とする。この場合、前回の処理負荷レベルが「重い」（＝１）であれば今回配信するレベルは「軽い」（＝−１）が適切と判定し、逆に前回の処理負荷レベルが「軽い」であれば今回配信するレベルは「重い」が適切と判定する。また、前回の処理負荷レベルが「標準」であれば今回配信するレベルは「標準」が適切と判定する。
【００５６】
また、直近の過去ｎ回（ｎは２以上の整数）に当該ＤＲＰ１６に配信した処理単位の処理負荷レベルを取得し、それら取得した処理負荷レベル群と今回配信する処理単位の処理負荷レベルの平均が「標準」に近づくよう、今回配信する処理単位の処理負荷レベルを決定してもよい。
【００５７】
通常の印刷データであれば、どのように分割しても分割結果の処理単位の処理負荷の平均は「標準」になると考えてよいので、以上の例のように単体のＤＲＰ１６ごとに配信した処理単位の処理負荷レベルの時間平均が「標準」となるようにすれば、結果として各ＤＲＰ１６にほぼ均等に負荷が分散されることとなる。
【００５８】
以上のようにＤＲＰ１６ごとの履歴から判定する代わりに、各ＤＲＰ１６に配信した処理単位の処理負荷レベルの履歴を相互に比較し、それら履歴における各ＤＲＰ１６の処理負荷レベルの平均値が均等に近づくように、要求元のＤＲＰ１６に対して今回配信する処理単位の処理負荷レベルを決定してもよい。
【００５９】
次に分配部１４は、処理待ちキュー内にある処理単位の中の、ページ番号が最小である処理単位の中から、Ｓ３４で求めた処理負荷レベルに該当する処理単位を探す（Ｓ３６）。なお、各処理単位のデータの処理負荷レベルは、例えば分割部１２がページを処理単位に分割する際に求め、処理単位のデータと対応づけて処理待ちキューに入れておけばよい。また、この代わりに、分割部１２から分割結果である各処理単位のデータを受け入れる際に、分配部１４がそれら各処理単位の処理負荷レベルを求めてもよい。いずれの場合でも、分配部１４は、処理待ちキュー内の各処理単位の処理負荷レベルを知ることができるので、その情報からＳ３６の条件を満たす処理単位を特定すればよい。
【００６０】
条件に合致する処理単位が見つかれば（Ｓ３６の判定結果がＹ）、その処理単位をキューから取りだして（Ｓ３８）、要求元のＤＲＰ１６に配信する（Ｓ４２）。条件に合致する処理単位が見つからなければ（Ｓ３６の判定結果がＮ）、キュー内でページ番号が最小の処理単位の中から任意の１つを取りだして（Ｓ４０）、要求元のＤＲＰ１６に配信する（Ｓ４２）。
【００６１】
このような処理手順によれば、各処理単位が、ページ順を維持しつつも、できるだけ各ＤＲＰ１６の負荷が平準化されるように、各ＤＲＰ１６に分配される。
【００６２】
なお、図６の手順では、要求元のＤＲＰ１６に配信する処理単位の処理負荷レベルをＳ３４で決定し、その決定した処理負荷レベルに該当する処理単位をＳ３６で探索したが、このような処理の流れは一例に過ぎない。このような２段階のステップに分ける代わりに、処理待ちキューの中のページ番号が最小である処理単位のうち、要求元のＤＲＰ１６に配信した処理単位の処理負荷レベルの時間平均を全ＤＲＰ１６の平均に最も近づけるものを配信対象としてもよい。
【００６３】
以上のようにして配信する処理単位の判定及び配信（図５のＳ２４）が完了すると、分配部１４は、その処理単位の配信先のＤＲＰ１６が前回に配信された処理単位についてのパイプライン処理を実行中かどうか判定し（Ｓ２６）、実行中であればＤＲＰ１６からそのパイプライン処理を完了した旨の通知を待つ（Ｓ２８）。そして、前回に配信した処理単位のパイプライン処理が完了したら、今回配信した処理単位についてパイプライン処理を開始するよう、そのＤＲＰ１６に対して指示を送る（Ｓ２９）。このあと、Ｓ２０に戻る。このようなＳ２０〜Ｓ４２の処理ループを、印刷データ全部の処理が終わるまで繰り返す。
【００６４】
以上のような配信制御によれば、ページ順を維持しつつもすべてのＤＲＰ１６が常にほぼ均等な負荷で稼働するようにでき、このことがひいてはＤＲＰ１６群全体としての処理速度の改善をもたらす。
【００６５】
以上は、ＤＲＰ１６が最大２つの処理単位を同時に取扱可能（１つは入出力の対象として、もう１つはデータ処理の対象として）である場合の例であるが、本実施形態のページ分割及び分配の方式は、ＤＲＰ１６が同時取扱可能な処理単位の数が２以外の場合にも適用可能である。例えば、１つのＤＲＰ１６内に同じ回路を複数構成することで複数の処理単位を並列に処理する場合には、その並列処理可能な処理単位の数に応じてＤＲＰ１６の同時取扱可能な処理単位の数が増えるが、このような場合には、分割数を決める上述の（１）式において、係数「２」を、ＤＲＰが同時取扱可能な処理単位数に変更すればよい。
【００６６】
以上に例示した画像処理装置のうちのＤＲＰ１６以外の部分（特に分配処理部１１）は、例えば、汎用のコンピュータにそれら各機能モジュールの処理を表すプログラムを実行させることにより実現される。ここで、コンピュータは、例えば、ハードウエアとして、ＣＰＵ等のマイクロプロセッサ、ランダムアクセスメモリ（ＲＡＭ）およびリードオンリメモリ（ＲＯＭ）等のメモリ（一次記憶）、ＨＤＤ（ハードディスクドライブ）を制御するＨＤＤコントローラ、各種Ｉ／Ｏ（入出力）インタフェース、ローカルエリアネットワークなどのネットワークとの接続のための制御を行うネットワークインタフェース等が、たとえばバスを介して接続された回路構成を有する。また、そのバスに対し、例えばＩ／Ｏインタフェース経由で、ＣＤやＤＶＤなどの可搬型ディスク記録媒体に対する読み取り及び／又は書き込みのためのディスクドライブ、フラッシュメモリなどの各種規格の可搬型の不揮発性記録媒体に対する読み取り及び／又は書き込みのためのメモリリーダライタ、などが接続されてもよい。上に例示した各機能モジュールの処理内容が記述されたプログラムがＣＤやＤＶＤ等の記録媒体を経由して、又はネットワーク等の通信手段経由で、ハードディスクドライブ等の固定記憶装置に保存され、コンピュータにインストールされる。固定記憶装置に記憶されたプログラムがＲＡＭに読み出されＣＰＵ等のマイクロプロセッサにより実行されることにより、上に例示した機能モジュール群が実現される。
【符号の説明】
【００６７】
１０  ＲＩＰ部、１１  分配処理部、１２  分割部、１４  分配部、１６  ＤＲＰ。
【図１】
2013196602.tif 000003
【図２】
2013196602.tif 000004
【図３】
2013196602.tif 000005
【図４】
2013196602.tif 000006
【図５】
2013196602.tif 000007
【図６】
2013196602.tif 000008
【手続補正書】
【提出日】平成24年4月26日(2012.4.26)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】００１４
【補正方法】変更
【補正の内容】
【００１４】
請求項５に係る発明は、前記分配手段は、前記補助処理装置の数と、１つの補助処理装置が同時に入力及び処理可能な処理単位の数と、を乗じた値を、１つの補助処理装置が１ページの画像データを処理する間に入力される画像データのページ数を表すページ並列度で除することにより、前記分割数を算出する、ことを特徴とする請求項１〜４のいずれか１項に記載の画像処理装置である。
請求項６に係る発明は、コンピュータを、１ページの画像データを複数の処理単位に分割して各補助処理装置に対して分配する分配手段、として機能させるためのプログラムであって、前記分配手段は、前記補助処理装置の数と、１つの補助処理装置が同時に入力及び処理可能な処理単位の数と、１つの補助処理装置が１ページの画像データを処理する間に入力される画像データのページ数を表すページ並列度と、に基づいて、１ページの画像データをいくつの処理単位に分割するかを示す分割数を算出し、前記１ページの画像データを前記算出した分割数の処理単位に分割して前記補助処理装置に分配する、ことを特徴とするプログラムである。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】００１５
【補正方法】変更
【補正の内容】
【００１５】
請求項１又は５又は６に係る発明によれば、補助処理装置のすべてが有効利用されるという点を維持しつつも、ページの画像データを補助処理装置の数に応じた分割数の処理単位に分割する従来の方式と比較して、処理効率をより高めることができる。
【手続補正３】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
画像データに対してあらかじめ定められた処理を行う複数の補助処理装置と、
１ページの画像データを複数の処理単位に分割して前記各補助処理装置に対して分配する分配手段と、
を備え、
前記分配手段は、前記補助処理装置の数と、１つの補助処理装置が同時に入力及び処理可能な処理単位の数と、１つの補助処理装置が１ページの画像データを処理する間に入力される画像データのページ数を表すページ並列度と、に基づいて、１ページの画像データをいくつに分割するかを示す分割数を算出し、前記１ページの画像データを前記算出した分割数の処理単位に分割して前記各補助処理装置に分配する、
画像処理装置。
【請求項２】
各ページの画像データが入力されるのと並行してそれら各ページの入力の時間間隔を測定する測定手段を更に備え、
前記分配手段は、前記測定手段が測定した前記時間間隔を用いて前記ページ並列度を更新し、更新された前記ページ並列度を用いて前記分割数を算出する、
ことを特徴とする請求項１に記載の画像処理装置。
【請求項３】
前記分配手段は、前記各補助処理装置に過去に分配した処理単位の処理負荷レベルの履歴を記録し、前記各補助処理装置に分配する処理単位を選択する際に前記履歴を参照することにより、ページ順を維持する範囲内で、前記各補助処理装置に分配される処理単位の処理負荷レベルの時間平均がそれら補助処理装置間で等しくなるよう、前記各補助処理装置に分配する処理単位を選択する、
ことを特徴とする請求項１又は２に記載の画像処理装置。
【請求項４】
前記分配手段は、補助処理装置が第１の処理単位についての処理を実行中に、次に分配する第２の処理単位を当該補助処理装置に転送し、当該補助処理装置が前記第１の処理単位の処理を完了すると、前記第２の処理単位の処理が開始されるようにし、
前記１つの補助処理装置が同時に入力及び処理する処理単位の数は２である、
ことを特徴とする請求項１〜３のいずれか１項に記載の画像処理装置。
【請求項５】
前記分配手段は、前記補助処理装置の数と、１つの補助処理装置が同時に入力及び処理可能な処理単位の数と、を乗じた値を、１つの補助処理装置が１ページの画像データを処理する間に入力される画像データのページ数を表すページ並列度で除することにより、前記分割数を算出する、ことを特徴とする請求項１〜４のいずれか１項に記載の画像処理装置。
【請求項６】
コンピュータを、１ページの画像データを複数の処理単位に分割して各補助処理装置に対して分配する分配手段、として機能させるためのプログラムであって、
前記分配手段は、前記補助処理装置の数と、１つの補助処理装置が同時に入力及び処理可能な処理単位の数と、１つの補助処理装置が１ページの画像データを処理する間に入力される画像データのページ数を表すページ並列度と、に基づいて、１ページの画像データをいくつの処理単位に分割するかを示す分割数を算出し、前記１ページの画像データを前記算出した分割数の処理単位に分割して前記各補助処理装置に分配する、
ことを特徴とするプログラム。