以下、本発明の実施の形態を図面を参照して説明する。
[第1の実施の形態]
先ず、本発明の第1の実施の形態に係る画像形成装置の構成を説明する前に、画像形成対象の1ページ(ページデータ)を副走査方向に対して複数領域に区切って処理する並列分散処理を行う際のページ分割方法について説明する。
図1は、本実施の形態に係る画像形成装置において並列分散処理を行う際のページ分割方法を示す図である。
図1において、本実施の形態では、ページ300を副走査方向に対して複数に区切った領域をバンドと表記する。ページ300を副走査方向(読み取り方向)に対して一定間隔(バンド単位)(301、302、・・・)に区切り、バンド単位で処理を行う。バンド単位での処理の開始前にページをスキャナによりプリスキャンし、並列分散処理におけるバンド毎の主走査方向の分割位置(図示の破線で示す位置)を決定する。図1では、プリスキャン対象部分には負荷の軽い処理310と負荷の重い処理320が存在する。
第1のバンド301では、負荷の重い処理が2箇所存在し、それを均等化するために主走査方向の分割位置が決定される。次に、第2のバンド302では、負荷の重い処理が4箇所存在し、それを均等化するために主走査方向の分割位置が決定される。負荷の重い処理、負荷の軽い処理とは、以下のことをいう。例えば、JPEG方式、パックビッツ方式等の複数の圧縮方式が同一バンド内に存在する場合に、圧縮データの伸張に要する時間を考慮した場合、JPEG方式による伸張が重い処理となり、パックビッツ方式による伸張が軽い処理となる。
本実施の形態では、画像形成装置のシステム制御部は、ページデータの並列分散処理前にページデータ全体をプリスキャンし、ページデータ(矩形データ)の種別(圧縮方式の別など)を判別し、各領域における処理の負荷を見積もる。システム制御部は、見積もった各処理の負荷の軽重に基づき、各領域における処理の負荷が均等となるように主走査方向の分割位置を決定する。画像形成装置のシステム制御部を含む全体構成は図3乃至図5により後述する。
図2は、画像形成装置における1ページの印刷処理を示すフローチャートである。
図2において、画像形成装置のシステム制御部は、1ページの印刷が開始されると、最初にバンド単位でページのヘッダのプリスキャンを行い(ステップS1)、並列分散処理の主走査方向の分割位置を決定する(ステップS2)。その後、決定した分割位置を基に並列分散処理を実行するピクセル処理部にデータを転送し、並列分散処理を行う(ステップS3)。本処理をバンド毎に1ページ分行うことで、1ページ分の印刷処理を終了する。
次に、本実施の形態の画像形成装置の構成及び動作について詳細に説明する。
図3乃至図5は、画像形成装置の全体構成を示すブロック図である。
図3乃至図5において、本実施の形態では、画像形成装置は、スキャナ機能、プリンタ機能、複写機能、ネットワーク機能を備える複合機として構成されている。コントローラユニット 3000は、スキャナ3001やプリンタ3004と接続し、一方ではLAN3011や公衆回線WAN3051に接続することで、画像情報やデバイス情報の入出力、PDLデータのイメージ展開を行う。システム制御部3100は、コントローラユニット全体の制御を行う。2つのCPU3101は、システム全体を制御するものであり、共通のCPUバス3126とシステムバスブリッジ3107に接続される。
システムバスブリッジ3107は、バススイッチであり、以下の各部が接続される。CPUバス3126、RAMコントローラ3124、ROMコントローラ3125、IOバス1・3127、サブバススイッチ3128、IOバス2・3129、チップ間インターフェース1〜3・3160、ページプリスキャン部3150。
サブバススイッチ3128は、第二のバススイッチであり、以下の各部が接続される。画像DMA1・3130、画像DMA2・3132、フォント伸張部3134、ソート回路3135、ビットマップトレース部3136。サブバススイッチ3128は、各画像DMAから出力されるメモリアクセス要求を調停し、システムバスブリッジ3107への接続を行う。
RAM3102は、CPU3101が動作するためのシステムワークメモリであり、画像データを一時記憶するための画像メモリでもある。RAMコントローラ3124により制御される。ROM3103は、ブートROMであり、システムのブートプログラムが格納されている。ROMコントローラ3125により制御される。
画像DMA1・3130は、画像圧縮部3131に接続し、レジスタアクセスリング3137を介して設定された情報に基づき画像圧縮部3131を制御し、RAM3102上の非圧縮データの読み出し、圧縮、圧縮後データの書き戻しを行う。画像DMA23132は、画像伸張部3133に接続し、レジスタアクセスリング3137を介して設定された情報に基づき画像伸張部3133を制御し、RAM3102上の圧縮データの読み出し、伸張、伸張後データの書き戻しを行う。
フォント伸張部3134は、LANインターフェース3011等を介し外部より転送されるPDLデータに含まれるフォントコードに基づき、ROM3103もしくはRAM3102内に格納された圧縮フォントデータの伸張を行う。ソート回路3135は、PDLデータを展開する段階で生成されるディスプレイリストのオブジェクトの順番を並び替える。ビットマップトレース回路3136は、ビットマップデータよりエッジ情報を抽出する。
IOバス1・3127は、内部IOバスの一種であり、以下の各部が接続される。標準バスであるUSBバスのコントローラ、USBインターフェース3138、汎用シリアルポート3139、インタラプトコントローラ3140、GPIOインターフェース3141。IOバス1・3127には、バスアービタ(不図示)が含まれる。
操作部I/F3106は、操作部UI3012とのインターフェースを司り、操作部UI3012に表示する画像データを操作部UI3012に対して出力する。また、操作部I/F3106は、操作部UI3012から本装置の使用者が入力した情報をCPU3101に伝える。
IOバス2・3129は、内部IOバスの一種であり、以下の各部が接続される。汎用バスインターフェース1〜2・3142、LANコントローラ3010。IOバス2・3129には、バスアービタ(不図示)が含まれる。
汎用バスインターフェース3142は、2つの同一のバスインターフェースから構成され、標準IOバスをサポートするバスブリッジである。本実施の形態では、PCIバス3043を採用した例を示す。
ハードディスクドライブ(HDD)3004は、システムソフトウェア、画像データを格納する外部記憶装置であり、ディスクコントローラ3044を介して一方のPCIバス3043に接続される。LANコントローラ3110は、MAC回路3111、PHY/PMD回路3046を介しLAN3011に接続し、情報の入出力を行う。モデム3050は、公衆回線3051に接続し、情報の入出力を行う。ページプリスキャン部3150は、レジスタアクセスリング3137を介して設定された情報に基づき、RAM3102上にあるページデータの読み出しを行い、主走査方向の分割位置を決定する。
チップ間インターフェース1・3160、チップ間インターフェース2・3160は、システムバスブリッジ3107とエリア処理部(ピクセル処理部)3200を接続し、タイル(分割された1枚1枚)化された後に圧縮されたデータをRAM3102に転送するDMAコントローラである。また、チップ間インターフェース1・3160は、エリア処理部(ピクセル処理部)3300へのコマンド、インタラプトパケットの生成、転送とピクセル処理部からのパケットの受信を行う。
チップ間インターフェース3・3160は、システムバスブリッジ3107と画像入力インターフェース部3200を接続し、画像入力インターフェース部3200からのタイルデータのRAM3102への転送を行う。また、画像入力インターフェース部3200へのコマンド、インタラプトパケットの生成、転送を行う。
スキャナ用画像処理部3002は、スキャナ3001により原稿からスキャンされた画像データを補正画像処理する。画像入力インターフェース部3200は、前記補正画像処理されたラスタイメージデータを入力とし、矩形データへの構造変換、クロックの同期化、データの圧縮等を行う。画像入力インターフェース3201は、前記補正画像処理されたラスタイメージデータを入力とし、レジスタ設定バス3207を介して設定された所定の方法により矩形データへの構造変換とクロックの同期化を行い、タイルバス3209に対し出力を行う。
チップ間インターフェース3213は、システム制御部3100とタイル圧縮部1〜2・3210、コマンド処理部3212、ステータス処理部3211とを接続し、タイル化後に圧縮されたデータをシステム制御部3100に転送するDMAコントローラである。また、チップ間インターフェース3213は、システム制御部3100へのインタラプトパケットの生成、転送とシステム制御部からのパケットの受信を行う。
タイル圧縮部1〜2・3210は、チップ間インターフェース3213への接続に加え、タイルバス3209に接続され、タイルバス3209より入力された圧縮前の画像データを圧縮し、システム制御部3100へ転送するバスブリッジである。本実施の形態では、多値データにはJPEG方式、2値データにはパックビッツ方式を圧縮アルゴリズムとして採用した例を示す。
コマンド処理部3212は、チップ間インターフェース3213への接続に加え、レジスタ設定バス3207に接続される。コマンド処理部3212は、画像リングを介して入力したCPU3101より発行されたレジスタ設定要求を、レジスタ設定バス3207に接続される該当ブロックへ書き込む。また、コマンド処理部3212は、CPU3101より発行されたレジスタ読み出し要求に基づき、レジスタ設定バス3207を介して該当レジスタより情報を読み出し、チップ間インターフェース3213に転送する。
ステータス処理部3211は、各画像処理部の情報を監視し、CPU3101に対してインタラプトを発行するためのインタラプトバケットを生成し、チップ間インターフェース3213に出力する。タイルバス3209には、上記ブロックに加え、以下の機能ブロックが接続される。多値化部3206、2値化部3205、色空間変換部3204。色空間変換部3204は、カラー及びグレースケール画像の色空間の変換を行う。2値化部3205は、多値カラー、グレースケール画像を2値化する。多値化部3206は、2値画像を多値データへ変換する。
メモリ制御部3202は、メモリバス3208に接続され、各画像処理部の要求に従い、予め設定されたアドレス分割により、画像メモリ1〜2・3203に対して、画像データの書き込み、読み出し、必要に応じてリフレッシュ等の動作を行う。本実施の形態では、画像メモリにSDRAMを用いた例を示す。
エリア処理部(ピクセル処理部)3300は、データの伸張、RGBからCMYKへの色空間変換等のピクセル処理を実行する。チップ間インターフェース3301は、エリア処理部3300とシステム制御部3100及びコンポーネント処理部3400とを接続する。チップ間インターフェース3301は、システム制御部3100からのデータを受信し、タイル化されたデータをコンポーネント処理部3400へ転送するDMAコントローラである。システム制御部3100からのデータに対してはタイル伸張部3305を介してタイルバス3306と接続する。また、コンポーネント処理部3400へのデータ転送はタイルバス3306から直接接続される。
タイル伸張部1〜2・3305は、チップ間インターフェース3301への接続に加え、タイルバス3306に接続され、チップ間インターフェース3301より入力された圧縮後の画像データを伸張し、タイルバス3306へ転送するバスブリッジである。圧縮された方式に基づき、使用するタイル伸張部が選択される。
コマンド処理部3302、ステータス処理部3303は、コマンド処理部3212、ステータス処理部3211と同様の処理を行う。また、メモリ制御部3309、メモリバス3307、レジスタ設定バス3308、画像メモリ3310は、メモリ制御部3202、メモリバス3208、レジスタ設定バス3207、画像メモリ3203と同様の処理を行う。タイルバス3306に接続される色空間変換部3311は、RGBからCMYKへの色空間変換を行う。
コンポーネント処理部3400は、解像度変換処理、ラスタ画像への変換処理等のコンポーネント単位の処理を実行する。チップ間インターフェース3401は、コンポーネント処理部3400とエリア処理部3300とを接続し、タイル化されたデータを転送するDMAコントローラである。コマンド処理部3402、ステータス処理部3403は、コマンド処理部3212、ステータス処理部3211と同様の処理を行う。また、メモリ制御部3409、メモリバス3407、レジスタ設定バス3408、画像メモリ3410は、メモリ制御部3202、メモリバス3208、レジスタ設定バス3207、画像メモリ3203と同様の処理を行う。
タイルバス3407には、上記ブロックに加え、以下の機能ブロックが接続される。画像回転部3412、解像度変換部3411、タイル・ラスタ変換部3413。画像回転部3412は、画像データの回転を行う。解像度変換部3411は、画像の解像度の変更を行う。タイル・ラスタ変換部3413は、矩形のタイルフォーマットからラスタデータを生成する。
画像出力インターフェース3414は、クロックレートの変更を行い、ラスタ画像をプリンタ用画像処理部3005へ出力する。プリンタ用画像処理部3005は、プリンタ出力のための補正画像処理を行い、結果をプリンタ3004へ出力する。
次に、本実施の形態の画像形成装置を含むネットワークシステムの構成について説明する。
図6は、ネットワークシステムの構成を示す図である。
図6において、ネットワークシステムは、本実施の形態の画像形成装置1001、1023を含む図示の複数の装置を、LAN1010、インターネット/イントラネット1011、PSTN/ISDN1030を介して通信可能としたシステムである。
データベースサーバ1002は、画像形成装置1001で読み取った2値画像/多値画像をデータベースとして管理する。データベースクライアント1003は、データベース内の画像データの閲覧/検索を行う。電子メールサーバ1004は、画像形成装置1001で読み取った画像を電子メールの添付として受け取る。電子メールクライアント1005は、電子メールの受信、閲覧、送信を行う。WWWサーバ1006は、HTML文書をLAN1010に提供し、画像形成装置1001に印刷させる。プリンタ1040は、画像形成装置1001で読み取った画像を印刷する。
次に、矩形データ(パケット)フォーマットについて説明する。
画像形成装置のシステム制御部3100は、画像データ、コマンド、割り込み情報を、パケット化された形式で転送する。本実施の形態では、図10に示すデータパケット、図7に示すコマンドパケット、図8に示すインタラプトパケットの3種の異なる種類のパケットを使用する。
図10は、データパケットを示す図である。
図10において、本実施の形態では、画像Dataを32pixel ×32pixelのTile単位の画像データ7002に分割して取り扱う例を示す。Tile単位の画像に、必要なヘッダ情報7001及び画像付加情報7003を付加してデータPacketとする。
PcktType7004は、PacketのTypeを区別する。ChipID7005は、パケット送信対象チップのIDを示す。ImageType7006は、画像データのタイプを示す。PageID7007は、ページを示す。JobID7008は、Job IDを格納する。Tileの番号は、Y方向のTile座標7009とX方向のTile座標7010の組み合わせで、YnXnで表す。CompressFlag7017は、画像データが圧縮の場合と非圧縮の場合との区別を示す。Process Instruction7011は、左詰で処理順に設定する。
Process Instruction7011には、UnitID7019とMode3020が8組格納されている。UnitID7019は、各処理Unitを指定する。Mode7020は、各処理Unitでの動作Modeを指定する。PacketByteLength7012は、パケットのトータルバイト数を示す。ImageDataByteLengh7015は、画像データのバイト数を示す。ZDataByteLength7016は、画像付加情報のバイト数を示す。ImageDataOffset7013、ZDataOffset7014は、それぞれのデータのパケットの先頭からのOffsetを示す。
図9は、パケットテーブルを示す図である。
図9において、Packet Table6001により各Packetを管理する。Packet Address Pointer(27bit )+ 5b00000 = Packetの先頭Address6002。Packet Length(11bit) + 5b00000 = PacketのByte Length6005。Packet Table6001は、常に走査方向に、Yn/Xn=000/000、 000/001、000/002、・・・という順で並んでいる。Packet Table6001のEntryは一意に1つのTileを示す。また、Yn/Xmaxの次のEntryはYn+1/X0となる。
Packetが1つ前のPacketとまったく同じ Dataである場合は、そのPacketはMemory上には書かず、Packet TableのEntryに1つめのEntryと同じPacket Address Pointer、Packet Lengthを格納する。1つのPacket Dataを2つのTable Entryが指すような形になる。この場合、2つめのTable EntryのRepeat Flag6003がSetされる。PacketがChain DMAにより複数に分断された場合は、Divide Flag6004をSetし、そのPacketの先頭部分が入っているChain BlockのChain Table番号6006をSetする。
Chain Table6010のEntryはChain Block Address6011とChain Block Length6012からなっている。Chain Table6010の最後のEntryにはAddress、Length共に0を格納しておく。
図7は、コマンドパケットを示す図である。
図7において、Command Packet Formatは、レジスタ設定バス2109へのアクセスを行うためのものである。本パケットを用いることにより、CPU3101から画像メモリへのアクセスも可能である。ChipID4004には、コマンドパケットの送信先となる画像処理部2149を表すIDが格納される。PageID4007、JobID4008は、ソフトウェアで管理するためのPage IDとJob IDを格納する。
Packet ID4009は、1次元で表される。Data PacketのX-coordinateのみを使用する。Packet Byte Length4010は、128Byte固定である。Command部4002には、アドレス4011とデータ4012の組を1つのコマンドとして、最大12個のコマンドを格納することが可能である。CmdType4005は、コマンドのタイプがライトかリードかを示す。Cmdnum4006は、コマンドの数を示す。
図8は、インタラプタパケットを示す図である。
図8において、本パケットフォーマットは、画像処理部からCPU3101への割り込みを通知するためのものである。ステータス処理部は、Interrupt Packetを送信すると、次に送信の許可がされるまではInterrupt Packetを送信してはならない。Packet Byte Length5006は、128Byte固定である。Packet Data部5002には、画像処理部の各内部モジュールのステータス情報5007が格納されている。
ステータス処理部は、画像処理部内の各モジュールのステータス情報を集め、一括してシステム制御部3100に送ることができる。ChipID5004には、Interrupt Packetの送信先となるシステム制御部3100を表すIDが格納される。IntChipID5005には、Interrupt Packetの送信元となる画像処理部を表すIDが格納される。
次に、本実施形態の画像形成装置における並列分散処理としてユーザが操作部UI3012よりコピーの指示を行った場合の処理の流れについて説明する。
CPU3101は、操作部インターフェース3012より情報の伝達を受け、コピー対象の用紙のサイズ等の情報より、チップ間インターフェース3213に、転送パケット数、RAM3102上での画像格納アドレス等の必要情報をプログラムする。CPU3101は、レジスタアクセスリング3137を介してチップ間インターフェース3160内部にあるコマンドパケット生成レジスタをプログラミングする。その後、チップ間インターフェース3160は、コマンドパケットを画像入力インターフェース部3200へ転送する。
スキャナデータ取り込みに必要な情報設定が終了した後、CPU3101は、コマンドパケットを用いてスキャナ通信インターフェースをプログラミングし、スキャナ3001に対し原稿の画像情報を読み取るスキャンの開始を指示する。スキャナ3001より入力された原稿の画像情報は、画像入力インターフェース3201及びメモリバス3208を介し、メモリ制御部3202により制御される画像メモリ3203に一旦格納される。
画像メモリ3203に格納された画像情報は、再び画像入力インターフェース3201により32×32画素毎に読み出され、以下のヘッダ情報が付加される。パケットタイプ7004、チップID7005、データタイプ7006、ページID7007、ジョブID7008、Y方向のタイル座標7009、X方向のタイル座標7010、圧縮フラグ7017、プロセスインストラクション7011、パケットデータ長7012等。画像入力インターフェース3201は、画像情報からパケットデータを生成し、タイルバス3209に出力する。
上記パケットデータは、順次作成され、コマンドパケットと同様にチップ間インターフェース3213、3160を介して転送される。そして、上記パケットデータは、チップ間インターフェース3213にプログラミングされた情報に基づきRAM3102に順次格納される。チップ間インターフェース3213は、同時にパケットテーブル6001をRAM3102上に作成する。
原稿1ページのスキャンが終了すると、スキャナ用画像処理部3002は、スキャナ通信部を用い、画像入力インターフェース部3200内の画像入力インターフェース3201に終了を伝達する。画像入力インターフェース部3200内のステータス処理部3211は、インタラプトパケット5000を作成し、インタラプトコントローラ3140へ伝達する。インタラプトコントローラ3140は、インタラプトをCPU3101に伝達する。CPU3101は、スキャン動作終了を検出する。
次に、スキャナ3001により原稿から読み取られた画像情報(データ)の色空間変換を行う。CPU3101は、エリア処理部(ピクセル処理部)3300内の色空間変換部3311内の色空間変換テーブルを更新するのに必要な情報をプログラミングする。CPU3101は、レジスタアクセスリング3137を介してチップ間インターフェース3160内部にあるコマンドパケット生成レジスタをプログラミングする。CPU3101は、同時に、コマンドパケットを使用し、コンポーネント処理部3400内のプリンタ通信部により、プリンタ3004に印字待機を指示する。
その後、チップ間インターフェース3160は、コマンドパケットをエリア処理部(ピクセル処理部)3300へ転送する。色空間変換部3311は、このコマンドパケットに基づき、RAM3102より読み出したデータを色空間変換テーブルに書き込む。
続いて、CPU3101は、ページプリスキャン部3150にパケットテーブルの存在するメモリアドレス等をプログラムする。ページプリスキャン部3150は、プログラムされた情報に基づきRAM3102内よりデータパケットヘッダを読み出し、該データパケットヘッダ内の圧縮情報等により、負荷が均等となるように主走査方向の分割位置を決定する。
続いて、CPU3101は、チップ間インターフェース3160内に装備されたDMA部に、パケットテーブルの存在するメモリアドレスとページプリスキャン部3150により算出された分割位置をプログラムする。チップ間インターフェース3160のDMA部は、プログラムされた情報に基づきRAM3102内よりデータパケットを読み出した後、データパケットをエリア処理部(ピクセル処理部)3300に転送する。
チップ間インターフェース3301は、パケットヘッダ内の圧縮情報に基づき、タイル伸張部3305にデータパケットを転送する。タイル伸張部3305で伸張されたデータは、一旦、メモリ制御部3309を介して画像メモリ3310に保存される。更に、伸張されたデータは、色空間変換部3311で色空間変換され、チップ間インターフェース3301を介して、チップ間インターフェース3401に転送される。
チップ間インターフェース3301は、生成されたコンポーネントに応じてコンポーネント処理部3400にデータを転送する。コンポーネント処理部3400は、チップ間インターフェース3401、タイルバス3406を介し、順次、タイル・ラスタ変換部3413へデータパケットを転送する。タイル・ラスタ変換部3413は、受け取ったデータパケットより画像部分を抽出し、画像データを画像メモリ3410へ格納する。
必要画素分の画像データが画像メモリ3410に蓄積された時点で、画像出力インターフェース3414は、画像データを画像メモリ3410より順次読み出し、プリンタ3004に出力する。この結果、ユーザは、コピー結果である画像プリントを得ることができる。画像出力が必要画素数終了した時点で、スキャン動作と同様に、インタラプトパケットにより終了割り込みがCPU3101に伝達される。
以上説明したように、本実施の形態によれば、画像形成装置においてシステム制御部3100からエリア処理部(ピクセル処理部)3300に画像データを転送する際、以下の処理を行う。システム制御部3100は、転送する画像データのプリスキャンを実施し、ピクセル処理の負荷を見積もり、負荷が均等となるような画像データ1ページにおける各バンドの主走査方向の分割位置を決定する。
即ち、ピクセル処理開始前に主走査方向の分割位置を決定し、決定された分割位置に基づきエリア処理部3300に画像データを転送する。並列分散処理を実施する前に画像データのプリスキャンを実施することで、並列分散処理の負荷の均等化及び処理時間の均等化が図ることができる。これにより、処理時間の違いを吸収するためのバッファメモリの量を最小にすることができる。
[第2の実施の形態]
本発明の第2の実施の形態は、上述した第1の実施の形態に対して、下記の点において相違する。本実施の形態のその他の要素は、上述した第1の実施の形態(図3乃至図10)の対応するものと同一なので、説明を省略する。
図11は、本発明の第2の実施の形態に係る画像形成装置の概略構成を示すブロック図である。
図11において、本図は図3乃至図5を要約したブロック図である。画像形成装置は、スキャナ101、スキャナ用画像処理部102、画像入力インターフェース部103、システム制御部104、メモリ105、エリア処理部106−0、エリア処理部106−1を備える。画像形成装置は、更に、コンポーネント処理部107−0、コンポーネント処理部107−1、プリンタ用画像処理部108、プリンタ109を備える。システム制御部104は、各エリア処理部106−0、106−1に処理させた画像の負荷を見積もる負荷見積部110を備える。
次に、本実施の形態のページ分割方法について図12に基づき説明する。
図12は、画像形成装置において並列分散処理を行う際のページ分割方法を示す図である。
図12において、本実施の形態では、ページ300を副走査方向に対して一定間隔(バンド単位)(301、302、・・・)に区切り、バンド単位の処理を行う。第1のバンド301は、ページデータの最初のバンドである。バンド単位の処理の開始前にバンド単位で並列分散処理の主走査方向の分割位置(図示の破線で示す位置)を決定しなければならないが、ページ内には負荷の軽い処理310と負荷の重い処理320が存在する。図示例では、第1のバンド301では、分割された左側に負荷の重い処理が集中してしまっている。
一般に画像イメージでは周囲への相関性が高いので、負荷の重い部分の周辺には負荷の重い処理が集中する傾向がある。そのため、第2のバンド302の処理を行わせる際に、第1のバンド301と同じ分割位置のまま処理を行わせると、並列分散処理を行わせる片側のエリア処理部に負荷が集中してしまう。
本実施の形態では、システム制御部104は、並列分散処理を行う各エリア処理部の処理に要するであろう時間を各エリア処理部に処理画像を出力する際に、各エリア処理部に処理させる負荷の重い部分の細分化された分割領域数をカウントする。更に、システム制御部104は、分割領域数のカウント結果から各エリア処理部が処理に要するであろう時間を負荷見積部110により見積もり、次のバンドにおける主走査方向の分割位置の決定を行うために見積もった時間をフィードバックし、分割位置を決定する。
システム制御部104は、並列分散処理を行わせる各エリア処理部に対する処理の均等化を図るため、以下のように主走査方向の分割位置を再設定する。即ち、第2のバンド302では、処理の重かった左側のエリア処理部で処理を行う負荷を減らすことができるよう、図12に示すように処理の分割位置を左側にずらした位置に再設定する。上記内容を図11を用いて説明する。
画像データ1ページの印刷処理が開始されると、システム制御部104は、並列分散処理の分割位置をまず主走査方向の中央に設定する。次に、システム制御部104は、各エリア処理部106に対しエリア処理部が処理を行う最初の副走査方向を複数に区切った最初の領域の最後のタイル番号を各々設定する。この後、システム制御部104は、各々の画像データタイルをメモリ105より各エリア処理部106に対し出力し、処理を行わせる。
各エリア処理部106は、システム制御部104から出力された画像データタイルを処理した後、その処理結果をコンポーネント成分毎に指示された各コンポーネント処理部107に出力する。各コンポーネント処理部107は、受け取ったコンポーネント毎の画像データを処理し、その結果をプリンタ用画像処理部108へ出力する。プリンタ用画像処理部108は、プリンタエンジン固有の画像処理を行った結果をプリンタ109へ出力する。
この場合、システム制御部104は、各エリア処理部106に画像データタイルを出力する際に、出力する画像データタイルの処理内容を負荷見積部110により監視する。処理の負荷の重い画像データタイルであった場合には、システム制御部104は、該制御部に内蔵されている該当するエリア処理部負荷見積もり用カウンタ(不図示)の値をカウントアップする。
更に、システム制御部104は、当該バンドデータの出力終了時に各エリア処理部負荷見積もり用カウンタの値から次のバンドに対する主走査方向の分割位置を調整し、調整された分割位置に基づく設定を各エリア処理部106に対して行う。この後、システム制御部104は、次のバンドデータをメモリ105より読み出し、各エリア処理部106に対し出力し、処理を行わせる。
次に、並列分散処理としてユーザが操作部UIインターフェース3012よりコピーの指示を行った場合の処理は、上記第1の実施の形態と大部分が共通であるが、相違点について図13に基づき説明する。
図13は、チップ間インターフェース3161の構成を示すブロック図である。
図13において、チップ間インターフェース3161は、DMA部401、ヘッダ解析部402、カウンタ部403を備える。DMA部401は、リングインターフェースを介してCPU3101により設定された画像転送を実行する。ヘッダ解析部402は、後述の画像タイルヘッダから画像タイルでの画像処理の内容を解析し、負荷が重い画像タイルであるかどうかを判定する。カウンタ403は、バンドにおける負荷の重い画像タイル数をカウントする。
チップ間インターフェース3161のDMA部401は、プログラムされた情報に基づき、RAM3102内よりデータパケットを読み出す。次に、DMA部401は、生成したデータパケットをエリア処理部(ピクセル処理部)3300に1バンド分転送する。DMA部401は、DMA動作を開始する際にカウンタ部403に対しカウント値のクリアを実行する。その後、DMA部401は、設定された内容に基づきDMA動作を実行する。
ヘッダ解析部402は、DMA部401がDMA実行のためシステムバスブリッジ3107を介してRAM3102から読み出した画像タイルのヘッダ部分を解析し、画像タイルが負荷の重いタイルかどうかを判定する。ヘッダ解析部402は、負荷が重い画像タイルの場合には、カウンタ部403に対し負荷が重い画像タイルであることを示す信号を出力する。
カウンタ部403は、バンドのDMA転送開始時にDMA部401からの信号に基づきカウンタ値を0に戻した後、ヘッダ解析部402からの信号に基づきバンド内の負荷の重いタイルの数をカウントする。DMA部401は、DMA動作終了時にカウンタ部403のカウント値を読み出し、DMA動作の終了割り込みをCPU3101に通知する。
CPU3101は、DMA部401からの終了割り込みを受け取ると、リングインターフェースを介してカウンタ部403のカウンタ値を読み出す。更に、CPU3101は、2つのチップ間インターフェース3161間のカウンタ値を比較し、両者の差が小さくなるように分割位置の補正を行う。分割位置の補正量は、例えば図14に示すような関係を用いて決定する。つまり、本実施の形態では、2つのエリア処理部の各々が処理した負荷の重たい画像タイルの数の差(図14の横軸)から現在の分割位置からのシフト量(図14の縦軸)を求め、その値に方向を考慮して分割位置を再設定する。
尚、本実施の形態では、チップ間インターフェース3161にて負荷の重い画像タイル数のみをカウントし、その差から補正量を算出しているが、これに限定されるものではない。各エリア処理部で処理を行う負荷の軽い画像タイル数も考慮し、各々の画像タイルに対し重み付けを行った結果の総和の比較結果から補正量を算出するようにしてもよい。これにより、エリア処理部における正確な負荷見積もりが可能となる。
以上説明したように、本実施の形態によれば、並列分散処理を行う画像形成装置において、画像データ1ページを副走査方向に対して複数領域に区切ったバンド毎の画像出力時にそのバンドにかかるであろう負荷を把握する。更に、把握した結果から次のバンドにおける負荷が均等となるように分散処理を行わせる主走査方向の分割位置を補正する。これにより、並列分散処理の負荷の均等化を実現し、処理時間の違いを吸収するためのバッファメモリの量を最小にすることができる。
[第3の実施の形態]
本発明の第3の実施の形態は、上述した第1の実施の形態に対して、下記の点において相違する。本実施の形態のその他の要素は、上述した第2の実施の形態(図3乃至図12)の対応するものと同一なので、説明を省略する。
本実施の形態では、システム制御部104は、並列分散処理を行う各エリア処理部の処理に要した時間を、主走査方向の分割位置の決定を行うためにフィードバックする。システム制御部104は、並列分散処理を行わせる各エリア処理部に対する処理の均等化を図るため、以下のように主走査方向の分割位置を再設定する。即ち、第2のバンド302では、処理の重かった左側のエリア処理部で処理を行う負荷を減らすことができるよう、図12に示すように処理の分割位置を左側にずらした位置に再設定する。
尚、本実施の形態では、エリア処理部3300のステータス処理部3303は予め設定されたタイル番号のタイルを処理し終わったことのみを通知し、システム制御部3100のCPU3101がタイマを用いて処理時間(つまり負荷状況)の把握を行っていた。これに対し、ステータス処理部3303にて処理時間を計測し、その計測結果を終了時にCPU3101に通知することも可能である。
この場合は、CPU3101は、ステータス処理部3303にエリア処理部3300が処理を行うタイル番号の最初の番号と最後の番号をそれぞれ設定する。ステータス処理部3303は、ステータス処理部内にエリア処理部3300で用いられるクロック(或いはその分周クロック)を基準としたカウンタを用意し、タイル伸張部3305がタイルの受け取りを開始したときにそのタイル番号をステータス処理部3303に通知する。また、タイルの伸張処理が終了したときに、処理を終了したタイル番号を同様にステータス処理部3303に通知する。
ステータス処理部3303は、タイル伸張部3305がタイルを受け取ったときに通知してくるタイル番号が先に設定した最初のタイル番号と一致した場合に、カウンタの初期化を行う。以後、基準としたクロックにてカウンタにカウントアップを行わせる。また、同じく先に設定した処理すべき最後のタイル番号と一致したタイル番号の処理通知がタイル伸張部3305から得られた時点でカウントアップを中止する。そのときのカウンタ値を割り込みパケット内のデータとしてCPU3101に通知する。
上記のように制御することで、CPU3101が割り込みを受け取った後、システム制御部3100内のタイマを確認するよりも、エリア処理部3300が処理に要した時間を正確に把握することができる。
以上説明したように、本実施の形態によれば、並列分散処理を行う画像形成装置において、画像データ1ページを副走査方向に対して複数領域に区切ったバンド毎に処理の負荷状況をフィードバックし、分散処理を行わせる主走査方向の分割位置を補正する。これにより、並列分散処理の負荷の均等化を実現し、処理時間の違いを吸収するためのバッファメモリの量を最小にすることができる。
[他の実施の形態]
上記各実施の形態では、画像形成装置として複合機を例に挙げたが、複合機に限定されるものではない。本発明は、通常の複写機や、スキャナが接続可能なプリンタにも適用可能である。
また、本発明の目的は、前述した各実施の形態の機能を実現するソフトウェアのプログラムコードを記憶した記憶媒体を、システム或いは装置に供給し、以下の処理を行うことによりも達成される。即ち、そのシステム或いは装置のコンピュータ(またはCPUやMPU等)が記憶媒体に格納されたプログラムコードを読み出し実行することによりも達成される。
この場合、記憶媒体から読み出されたプログラムコード自体が前述した各実施の形態の機能を実現することになり、そのプログラムコード及び該プログラムコードを記憶した記憶媒体は本発明を構成することになる。
また、プログラムコードを供給するための記憶媒体としては、例えば、フロッピー(登録商標)ディスク、ハードディスク、光磁気ディスクを用いることができる。また、CD−ROM、CD−R、CD−RW、DVD−ROM、DVD−RAM、DVD−RW、DVD+RW等の光ディスク、磁気テープ、不揮発性のメモリカード、ROM等を用いることができる。または、プログラムコードをネットワークを介してダウンロードしてもよい。
また、コンピュータが読み出したプログラムコードを実行することにより、前述した各実施の形態の機能が実現されるだけではなく、以下の場合も含まれる。即ち、そのプログラムコードの指示に基づき、コンピュータ上で稼動しているOS(オペレーティングシステム)等が実際の処理の一部または全部を行い、その処理により前述した各実施の形態の機能が実現される場合も含まれる。
更に、記憶媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれた後、次のプログラムコードの指示に基づき、以下の処理を行う場合も含まれる。即ち、その拡張機能を拡張ボードや拡張ユニットに備わるCPU等が実際の処理の一部または全部を行い、その処理により前述した各実施の形態の機能が実現される場合も含まれる。