(57)【要約】【課題】低優先度ジョブと高優先度ジョブとの並列動作処理を簡易に実現する画像処理装置を提供する。【解決手段】複数の画像処理手段に含まれる特定の画像処理手段が実行する画像処理を切り換える切換手段と、生成されたパケットデータに含まれる識別子により特定の画像処理手段が識別された場合に特定の画像処理手段にパケットデータを送信する送信手段と、切換手段によって特定の画像処理手段が実行する画像処理が切り換えられている場合に、送信手段により送信されたパケットデータに含まれる識別子を変更し、変更された識別子を含むパケットデータを他の画像処理手段に転送する転送手段とを備える。【選択図】図９
2010263328.tif 000002
【特許請求の範囲】
【請求項１】
画像データを入力する入力手段と、
前記入力手段により入力された画像データを画像処理するための複数の画像処理手段と、
前記画像データの一部と前記画像処理手段を識別するための識別子を含む複数のパケットデータを生成する生成手段と、
前記複数の画像処理手段に含まれる特定の画像処理手段が実行する画像処理を切り換える切換手段と、
前記生成手段により生成されたパケットデータに含まれる前記識別子により前記特定の画像処理手段が識別された場合に、前記特定の画像処理手段にパケットデータを送信する送信手段と、
前記切換手段により前記特定の画像処理手段が実行する画像処理が切り換えられている場合に、前記送信手段により送信された前記パケットデータに含まれる前記識別子を変更し、変更された識別子を含むパケットデータを前記複数の画像処理手段に含まれる他の画像処理手段に転送する転送手段と
を備えることを特徴とする画像処理装置。
【請求項２】
前記切換手段は、前記特定の画像処理手段が実行する画像処理を、優先度の低い第２の画像処理から優先度が高い第１の画像処理に切り換えることを特徴とする請求項１に記載の画像処理装置。
【請求項３】
前記第１または第２の画像処理を行うための第１または第２のパケットデータを格納する格納手段をさらに備え、
前記送信手段は、前記格納手段から前記第１または第２のパケットデータを読み出し、前記識別子により識別された前記画像処理手段に、前記第１または第２のパケットデータを送信することを特徴とする請求項２に記載の画像処理装置。
【請求項４】
前記特定の画像処理手段が前記第１の画像処理を行っている際に、前記他の画像処理手段が前記第２の画像処理を並列して行うことを特徴とする請求項２または３に記載の画像処理装置。
【請求項５】
前記特定の画像処理手段は、リコンフィグレーション可能な回路で構成されたことを特徴とする請求項１乃至４のいずれか１項に記載の画像処理装置。
【請求項６】
入力された画像データを画像処理するための複数の画像処理手段を備える画像処理装置における画像処理方法であって、
前記画像処理装置の入力手段が、画像データを入力する入力工程と、
前記画像処理装置の生成手段が、前記画像データの一部と前記画像処理手段を識別するための識別子を含む複数のパケットデータを生成する生成工程と、
前記画像処理装置の切換手段が、前記複数の画像処理手段に含まれる特定の画像処理手段が実行する画像処理を切り換える切換工程と、
前記画像処理装置の送信手段が、前記生成工程において生成されたパケットデータに含まれる前記識別子により前記特定の画像処理手段が識別された場合に、前記特定の画像処理手段にパケットデータを送信する送信工程と、
前記画像処理装置の転送手段が、前記切換工程において前記特定の画像処理手段が実行する画像処理が切り換えられている場合に、前記送信工程において送信された前記パケットデータに含まれる前記識別子を変更し、変更された識別子を含むパケットデータを前記複数の画像処理手段に含まれる他の画像処理手段に転送する転送工程と
を備えることを特徴とする画像処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像データを処理する画像処理装置と画像処理方法に関する。
【背景技術】
【０００２】
従来、ＭＦＰ等の画像処理装置で省メモリや複数機能の並列動作を効率的に実現するため、ページ画像をブロック分割し、画像圧縮された各ブロック画像データにヘッダ情報を付加したパケットデータを処理する画像処理装置が提案されている（特許文献１）。さらに、この画像処理装置におけるCPUのデータ管理／転送制御の負荷を軽減するために、特許文献２に記載されるようなPacketTable、ChainTableと、これらをハンドリング可能なDMAを備えた画像処理装置が提案されている。
【０００３】
これらの従来技術を組み合わせることにより、CPUにかける負荷を抑え、かつ、複数機能の並列動作や、パケットデータを並列画像処理することで画像処理の高速化を可能とするようなシステムが広く用いられている。このようなシステムでは、各ブロック画像データに対して行う複数の画像処理に応じて、各画像処理部がチップ等で構成される。これらチップには、例えば、プリンタ出力の直前に行われる処理を実行するチップや、スキャナ入力の直後に行われる処理を実行するチップなどが含まれる。
【０００４】
各チップは、並列処理や回路規模を考慮して適切に内部回路を構成する。例えば、ある特定の処理を行う機能は、それぞれのチップに並列に構成される。また、複数のチップのうち一部のチップの内部構成をソフトウェアのスケジューリング機能によって切り換える。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００２−００８００２号公報
【特許文献２】特開２００２−２８１２９３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
ここで、投入されたジョブには、プリンタやスキャナを使用するような優先度の高いジョブとその他の優先度の比較的低いジョブとが存在する。低優先度ジョブを複数のチップで実行している最中に、一部のチップを高優先度ジョブのために切換えを行って処理を行う場合には、ＣＰＵからのスケジューリングのソフトウェア処理が必要になる。
【０００７】
このようなチップの切換えを行う場合、ＣＰＵから切換えを行うチップへの画像の転送を中断することが必要である。また、その中断時の情報（設定パラメータや動作進捗状況）を取得し、保持する必要がある。また、低優先度ジョブの再開時に、パラメータの再設定やデータ転送の再開などの再開処理を行う必要がある。そのような必要性のために、スケジューリングに要するソフトウェアの負荷が大きくなってしまうという問題点があった。
【０００８】
そこで、上記の点に鑑み、本発明は、複数の画像処理手段に含まれる特定の画像処理手段が実行する機能が切り換えられている場合に、パケットデータに含まれる画像処理を実行する画像処理手段を識別するための識別子を適切に変更し、適切な画像処理手段へパケットデータを転送する画像処理装置を提供することを目的とする。
【課題を解決するための手段】
【０００９】
上記課題を解決するため、本発明に係る画像処理装置は、画像データを入力する入力手段と、前記入力手段により入力された画像データを画像処理するための複数の画像処理手段と、前記画像データの一部と前記画像処理手段を識別するための識別子を含む複数のパケットデータを生成する生成手段と、前記複数の画像処理手段に含まれる特定の画像処理手段が実行する画像処理を切り換える切換手段と、前記生成手段により生成されたパケットデータに含まれる前記識別子により前記特定の画像処理手段が識別された場合に、前記特定の画像処理手段にパケットデータを送信する送信手段と、前記切換手段により前記特定の画像処理手段が実行する画像処理が切り換えられている場合に、前記送信手段により送信された前記パケットデータに含まれる前記識別子を変更し、変更された識別子を含むパケットデータを前記複数の画像処理手段に含まれる他の画像処理手段に転送する転送手段とを備えることを特徴とする。
【発明の効果】
【００１０】
本発明によれば、複数の画像処理手段に含まれる特定の画像処理手段が実行する機能が切り換えられている場合に、パケットデータに含まれる画像処理を実行する画像処理手段を識別するための識別子を適切に変更し、適切な画像処理手段へパケットデータを転送する画像処理装置を提供することができる。
【図面の簡単な説明】
【００１１】
【図１】本発明に係る第１の実施例における画像処理装置の内部構成を示す図である。
【図２】パケットデータのフォーマット例を示す図である。
【図３】ChainTabel、PacketTableの構成例を示す図である。
【図４】パケットデータの画像処理の手順を示すフローチャートである。
【図５】画像処理部に転送されたパケットデータを処理する手順を示すフローチャートである。
【図６】FuncL、FuncP、FuncSの機能を持つ画像処理部の構成例を示す図である。
【図７】本実施例における画像処理部の構成例を示す図である。
【図８】本実施例における他の画像処理部の構成例を示す図である。
【図９】画像処理部におけるパケット入出力インタフェースの構成例を示す図である。
【図１０】パケット入出力インタフェースの処理の手順を示す図である。
【図１１】Func切換え処理の手順を示す図である。
【図１２】CommandがFunction切り替えについてのCommandでない場合のデータ群を示す図である。
【図１３】各画像処理部でのパケット処理の概要を示す図である。
【図１４】第２の実施例において、再構成可能回路を用いた画像処理部の構成例を示す図である。
【図１５】ChipIDの変更について、第１の実施例と第３の実施例を比較する図である。
【図１６】パケット入出力インタフェースによる効果を説明する図である。
【発明を実施するための形態】
【００１２】
以下に、本発明を実施するための形態について、図面を参照しながら詳しく説明する。なお、同一の構成要素には同一の参照番号を付して、説明を省略する。また、初めに本実施例に必要となる構成ブロックについて説明し、次に、処理の詳細について説明する。
【００１３】
［第１の実施例］
図１は、本発明に係る実施例における画像処理装置の内部構成を示す図である。ROM１０１は、CPU１０３のブートプログラムを格納する不揮発メモリデバイスである。RAM１０２は、プログラムや画像データを格納する揮発メモリデバイスである。CPU１０３は、後述のDMAや画像処理部等を制御するプログラムを実行する。複数の画像処理部１０４〜１０６は、パケットデータに含まれるブロック画像に対して各種画像処理をおこなう。例えば、プリンタ１０８に接続される画像処理部１０４では、プリンタ出力の直前におこなうのが好適な画像処理や、パケットデータをラスタデータに変換する機能、画像圧縮された画像を展開する展開器などが含まれる。以下、そのような機能をFuncPとする。また、入力手段として機能するスキャナ１０９に接続される画像処理部１０５では、スキャナ入力の直後におこなうのが好適な画像処理や、ラスタデータをパケットデータに変換する機能、生画像を画像圧縮する圧縮器などが含まれる。以下、そのような機能をFuncSとする。また、デバイスが接続されない画像処理部１０６では、RAM１０２から転送されてきたパケットデータを処理し、再び、RAM１０２に格納して以降の処理を継続するために、圧縮器、展開器、パケット/ラスタ変換機能、回転器等が含まれる。以下、そのような機能をFuncLとする。これらの画像処理部１０４〜１０６はリングバス上に接続されており、パケットデータのヘッダに含まれる画像処理情報に従って、いずれかの画像処理部で画像処理される。画像処理部１０４〜１０６の具体的な構成例は、後述する。
【００１４】
OutputDMA１１０〜１１２は、パケットデータをRAM１０２の所定のアドレスから読み出し、リングバス上に接続された画像処理部１０４〜１０６の入力口である画像処理部１０４に入力する。また、InputDMA１１３〜１１５は、リングバス上に接続された画像処理部１０４〜１０６の出力口である画像処理部１０６から出力されてきたパケットデータを、RAM１０２の所定のアドレスに書き込む。これらのDMAは、プリンタ１０８へ画像データを出力するためには、OutputDMA１１０〜１１２のみを使用し、スキャナ１０９から画像データを入力するためには、InputDMA１１３〜１１５のみを使用する。また、RAM１０２からデータを読み出して、画像処理部１０４〜１０６で処理し、処理したパケットデータを再びRAM１０２へ書き戻すような処理をおこなう場合は、OutputDMA１１０〜１１２とInputDMA１１３〜１１５の両方を使用する。これらのOutputDMA、InputDMAは、一般的に用いられるChainTable、PacketTableにしたがって、パケットデータを転送するPacketDMAである。LAN１１６は、システム外部から、画像データを受信したり、Send用データを送信するためのNetwork I/Fである。HDD１１７は、画像データをスプールするための記憶装置である。
【００１５】
図２、図３に、本実施例における画像処理装置のCPU１０３により生成されるパケットデータのフォーマット例と、ChainTabel、PacketTableの構成例を示す。以下に、パケットヘッダ２０１に含まれる情報について説明を行なう。パケットのタイプは、パケットヘッダ２０１内のPcktType２０４で区別され、Data、Command、Interrrupt等が設定できる。ChipID２０５は、パケットを送信するターゲットとなる画像処理部１０４〜１０６を識別するためのID（識別子）を示す。PageID２０７は、パケットの属するページ番号を示しており、JobID２０８はパケットの属するジョブ番号を示している。パケットの番号はＹ方向のパケット座標２０９とＸ方向のパケット座標２１０の組み合わせで、ＹｎＸｎと表される。データパケットは、画像データが圧縮されている場合と非圧縮の場合がある。圧縮されている場合と非圧縮の場合との区別は、CompressFlag２１７で示される。なお、データパケットに付加される画像データは、ページ単位でスキャナ１０９等から入力されたページ単位の画像データを、所定の画素数（例えば、３２画素×３２画素）の矩形領域に分割したものである。従って、ページ単位の画像データの一部を含む複数のパケットデータが生成されることとなる。
【００１６】
ProcessInstruction２１１は、８組のUnitID２１９とMode２２０の組み合わせから構成され、これは各画像処理部内での画像処理の順番と処理内容を表している。例えば、図６の画像処理部であるFuncL６１０において、伸張器６０１、回転処理部６０２、２値化処理部６０３、色空間変換部６０４、圧縮器６０６までの各ユニットのUnitIDを、それぞれ１〜５と設定する(丸囲み数値)。そして、入力するパケットデータを、伸張器６０１→色空間変換部６０４→回転処理部６０２→圧縮器６０６というデータパスで画像圧縮する場合を考える。この時、ProcessInstruction２１１のUnitID２１９には、順番に、１、４、２、５という数値を入れてパケットデータを転送する必要がある。Mode２２０には、UnitIDが示す画像処理部固有の動作モードを設定する。各処理Unitは、処理後、ProcessInstructionを左に８Bit分シフトする。１つのパケットは、８つのUnitにより連続して処理されることができる。
【００１７】
PacketByteLength２１２は、パケットのトータルバイト数を示す。ImageDataByteLengh２１３は画像データのバイト数、ZdataByteLength２１４は画像付加情報のバイト数を表す。ImageDataOffset２１５、ZdataOffset２１６は、それぞれのデータのパケット先頭からのoffsetを表している。
【００１８】
次に、PacketTable３００に含まれる情報について説明を行なう。各Packetは、PacketTable３００によって管理される。PacketTable３００の構成要素は、PacketAddressPointer３０１、RepeatFlag３０２、DivideFlag３０３、PacketLength３０４、ChainTableNumber３０５である。PacketAddressPointer３０１とPacketLength３０４は、それぞれTableの値に０を５bit付加すると（以下の式）、各Packetの先頭Address、ByteLengthとなる。
【００１９】
PacketAddressPointer(27bit)＋5b00000 ＝ Packet先頭Address  ・・・（式１）
PacketLength(11bit)+5b00000 ＝ PacketのByteLength  ・・・（式２）
PacketTable３００とChainTable３１０は、分割されないものとする。PacketTable３００は、常に走査方向（Ｘ方向）に並んでおり、Ｙｎ／Ｘｎ＝０００／０００、０００／００１、０００／００２，．．．．という順で並んでいる。このPacketTable３００のEntryは、１つのパケットを一意に示す。また、Ｙｎ／Ｘｍａｘの次のEntryは、Ｙ（ｎ＋１）／Ｘ０となる。パケットがひとつ前のパケットとまったく同じDataである場合、そのパケットはRAM１０２上には書かない。そして、PacketTableのEntryに１つめのEntryと同じPacketAddressPointer３０１とPacketLength３０４を格納する。すると、１つのPacketDataを２つのTableEntryが指すような形になる。そして、２つめのTableEntryのRepeatFlag３０２をSetすることで、パケット格納に必要なRAM１０２の容量を削減できる。パケットが複数のメモリブロック（以下、ChainBlock）に分断された場合は、DivideFlag３０３をSetし、そのパケットの先頭部分が入っているChainBlockのChainTableNumber３０５をSetする。ChainTable３１０のEntryは、ChainBlockAddress３１１とChainBlockLength３１２とからなっている。Tableの最後のEntryには、ChainBlockAddress３１１、ChainBlockLength３１２について共に０を格納しておく。
【００２０】
パケットヘッダの中で、ChipID２０５は、パケットを送信するターゲットとなる画像処理部１０４〜１０６のIDを示す。また、PageID２０７は、当該パケットが属するページのページ番号を示しており、JobID２０８は、当該パケットが属するジョブのジョブ番号を示している。OutputDMA１１０〜１１２は、パケットデータのこれらのIDを適宜変更し、ターゲットとなる画像処理部にパケットデータを転送することで、所望の画像処理を実現する。即ち、画像処理部１０４〜１０６がそれぞれ１〜４というChipIDが割り当てられている場合、プリンタ１０８にデータ転送する時には、パケットデータのヘッダのChipIDに１を付加して転送するように、OutputDMAを設定して実行する。すると、OutputDMAは、処理するパケット群を示す図３に記載のChainTabel、PacketTableにしたがって、パケットデータをRAM１０２から読み出す。そして、画像処理部１０４へ転送し、その内部で画像処理をおこない、プリンタ１０８で印刷出力を行うように動作する。
【００２１】
本実施例におけるパケットデータの画像処理フローに関して、図４に基づきながら、CPU１０３におけるソフト処理に注目して、より詳細に説明する。まず、以下では、RAM１０２上に格納されているパケットデータを、FuncLにて画像処理する際のCPU１０３による処理フロー(図４の（ａ）に示すＦ４００)に関して説明する。なお、以下、例えばＦ４００とは、フローチャートを示す参照符号であり、例えばＳ４１１とは、フローチャートにおけるステップを示す参照符号である。
【００２２】
最初に、CPU１０３は、RAM１０２のどのアドレスに、FuncL画像処理後のパケットデータを格納するかを示す受信側ChainTableを作成する（Ｓ４１０）。次に、画像処理部に送信するパケットデータの格納場所を示す送信側ChainTableおよび送信側PacketTableを作成する（Ｓ４１１）。そして、Ｓ４１１で作成したTableの位置に格納されている送信パケットデータに、所望のPageID２０７、JobID２０８を設定する（Ｓ４１２）。続いて、画像処理をおこなう画像処理部がもつChipIDをChipID２０５に設定し、その画像処理部の内部画像処理パスを指定するためにProcessInstruction２１１を決定し、パケットヘッダ２０１に設定する（Ｓ４１３）。
【００２３】
これらPageID２０７、JobID２０８、ChipID２０５、ProcessInstruction２１１は、画像処理するパケット全てに対して設定する。設定の方法は、CPU１０３によってパケットヘッダを書き換える方法や、OutputDMA１１０〜１１２への設定によって、画像処理部に転送する前にハードウェアで書き換える方法などがある。そして、FuncLのように、パケットデータの送受信が必要なデータパスの画像処理を行う場合には、転送側であるOutputDMA１１０〜１１２のいずれかと、受信側であるInputDMAのいずれかの設定をおこなう（Ｓ９１４）。最後に、それぞれのDMAの処理をスタートさせることで、パケットに対する画像処理をスタートする（Ｓ４１５、Ｓ４１６）。
【００２４】
以上のCPU１０３処理フローは、FuncL画像処理の実行を前提に記載したが、FuncS画像処理時は、入力パケットデータはスキャナ１０９から画像処理部を介してRAM１０２に送られる。そのため、送信側のTable作成やOutputDMA設定等は必要ない（Ｆ４０１の場合）。また、FuncP画像処理時には、出力パケットデータは、画像処理部を介してプリンタ１０８から出力されるので、受信側のTable作成やInputDMA設定等は必要ない（Ｆ４０２の場合）。
【００２５】
図５に、画像処理部に転送されたパケットデータの処理フローＦ５００を示す。パケットデータへの画像処理自体は、各画像処理部の機能によって異なるため、ここでは、各画像処理部が共通でもつパケット入出力I/F４２０（４２１、５２０、６０４、７２０等も同じ）の処理に注目して説明する。パケット入出力I/Fは、パケットデータを受信すると（Ｓ５０１）、パケットヘッダのChipIDが自身に割り振られたChipIDと同一かどうかを検査する（Ｓ５０２）。パケットヘッダのChipIDが自身に割り振られたChipIDと異なる場合、自身の画像処理部で処理すべきパケットデータではないと判断して、次の画像処理部にパケットデータを転送する（Ｓ５０５）。一方、パケットヘッダのChipIDが自身に割り振られたChipIDと同一である場合、ProcessInstructionにしたがって、内部の画像処理パスを通し、画像処理を実行する（Ｓ５０３）。そして、FuncL等の画像処理部で、RAM１０２にパケットデータを返す必要がある場合には、パケットデータをパケット入出力I/Fに戻す。そして、そこでChipIDを「０」（システムのRAM１０２への書き戻しを表す）に変更し（Ｓ５０４）、次の画像処理部に転送する（Ｓ５０５）。
【００２６】
本画像処理装置においては、CPU１０３自身は画像データの画像処理をおこなう必要がなく、所望の画像処理部１０４〜１０６の画像処理設定と、DMA１１０〜１１５によるパケットデータの転送設定のみをおこなえば良い。そのため、CPUのデータ管理およびデータ転送制御に必要な負荷は非常に軽減される。また、Copy機能やSend機能などの各ジョブの画像処理が、複数の画像処理部１０４〜１０６と複数のDMA１１０〜１１５によって並列に動作させることが可能である。
【００２７】
画像処理部１０４〜１０６において、FuncLの機能をもつ画像処理回路を複数使用することで、FuncL機能の高速化を図ることができる。また、画像データの高速処理を図りつつ、回路規模の肥大化を抑えるために、以下のような方法をとる。
【００２８】
例えば、第１の方法として、システムの例において、各画像処理部１０４〜１０６をリコンフィギュアラブル・プロセッサによって構成し、実装されているFuncP、FuncS、FuncLを切り替えて使用する。これによって、画像処理部を削減し、全体回路規模を削減できる。また、第２の方法として、FuncLに搭載される圧縮器、伸張器、ラスタ/パケット変換機能を、FuncPやFuncSと共用し、差分の画像処理部は、データパスを切り替えて使用する。これによって、全体の回路規模を削減できる。
【００２９】
第２の方法の例として、図６の（ａ）に示すようなFuncL、FuncPの機能を持つ画像処理部６１０、６２０があった場合、パケット入出力I/Fと、伸張器が両Functionに対して共通である。そして、それ以外の部分（以下、FuncL’６０８、FuncP’６２３とする）に関しては、FuncL、FuncPに固有のデータ処理部分となる。そこで、図７の画像処理部であるFuncLP７００のように、FuncLとFuncPに共通部分のみ共有化する。そして、それ以外の部分は、スイッチ７０１にてデータパスを切り替えるような構成を採り、２つの機能を時分割で排他的に使用することで、共通化部分の回路規模を削減することができる。
【００３０】
また、同様に、図６の（ｂ）に示すようなFuncL、FuncSの機能を持つ画像処理部６１０、６３０があった場合、圧縮器６０６が両Functionに対して共通である。そして、それ以外の部分（以下、FuncL’６０８、FuncS’６３３とする）に関しては、FuncL、FuncSに固有のデータ処理部分となる。そこで、図８のFuncLS８００のように、FuncLとFuncSに共通部分のみ共有化する。そして、それ以外の部分は、スイッチ８０１にてデータパスを切り替えるような構成を採り、２つの機能を時分割で排他的に使用することで、共通化部分の回路規模を削減することができる。
【００３１】
図１に示す画像処理部１０４は、図７のFuncLP７００のような構成をもつ画像処理部であり、ChipID=１が割り当てられている。画像処理部１０５は、図８のFuncLS８００のような構成をもつ画像処理部であり、ChipID=２ が割り当てられている。画像処理部１０６は、図６の（ａ）のFuncL６１０のような構成をもつ画像処理部であり、ChipID=３が割り当てられている。
【００３２】
図７のFuncLP７００の詳細についてさらに説明する。FuncLP７００は、図６の（ａ）のFuncL６１０とFuncP６２０の両方の画像処理機能を時分割で処理できる画像処理部である。図６の（ａ）のFuncL６１０は、先に述べた図５の処理フローで、入力したパケットデータを伸張し、画像処理した後に再び圧縮して、後段の画像処理部に転送する処理をおこなう。一方、FuncP６２０は、入力されたパケットデータを、伸張器６０１で伸張し、パケット・ラスタ変換器６２１でラスタ展開した後に、プリンタ出力前画像処理部６２２で画像処理し、プリンタ１０８に画像を出力する。FuncLP７００は、FuncL６１０とFuncP６２０がそれぞれ独自にもつ部分FuncL’６０８、FuncP’６２３は、スイッチ７０１で切り替えられるようになっている。そして、FuncL６１０とFuncP６２０が共通で持つパケット入出力I/F６０７と伸張器６０１を共通化することで、回路規模を削減している。
【００３３】
次に、図８のFuncLS８００の詳細についてさらに説明する。FuncLS８００は、図６の（ｂ）のFuncL６１０とFuncS６３０の両方の画像処理機能を時分割で処理できる画像処理部である。図６の（ｂ）のFuncS６３０は、スキャナから入力されたラスタデータを、スキャナ入力後画像処理部６３１で画像処理し、ラスタ・パケット変換器６３２でパケット化した後に、圧縮器６０６で圧縮し、後段の画像処理部に画像を出力する。FuncLS８００は、FuncL６１０とFuncS６３０がそれぞれ独自にもつ部分FuncL’６０８、FuncS’６３３は、スイッチ８０１で切り替えられるようになっている。そして、FuncL６１０とFuncS６３０が共通で持つパケット入出力I/F６０７と圧縮器６０６を共通化することで、回路規模を削減している。
【００３４】
図９に、本実施例におけるパケット入出力I/F６０７の内部構成を示す。パケット入出力I/F６０７における処理の流れを、図１０、図１１のフローチャートＦ１０００を元に説明する。まず、パケット入出力I/Fは、入力I/F９０１で外部からパケットデータを受信する（Ｓ１００１）。次に、受信したパケットデータをヘッダ判定部９０２に転送し、パケットヘッダのChipID２０５が、自身の画像処理部に割り当てられているChipIDと同一かどうかを判定する（Ｓ１００２）。同一でない場合、ヘッダ変換部９０５、出力I/F９０６を経由し、そのまま次の画像処理部へパケットデータを出力する（Ｓ１０１１）。同一である場合、ヘッダ判定部９０２は、パケットヘッダのPcktType２０４が、Data（0x001）かCommand（0x010）かを判定する（Ｓ１００３）。
【００３５】
パケットヘッダのPcktType２０４がCommandの場合、ヘッダ判定部９０２はパケットをパケット解釈部９０３に転送する。パケット解釈部９０３では、パケットデータのImageData部２０２が、図１２のようなデータフォーマットをもつCommand用パケットのデータを解釈し、CommandがFunction切り替えのCommandかどうかを判定する（Ｓ１００５）。CommandがFunction切り替えについてのCommandでない場合、図１２に示すデータ群１２００は画像処理部内のいずれかのモジュールのレジスタアドレスと設定値の組み合わせであり、その設定を各モジュールにおこなう（Ｓ１００９）。一方、CommandがFunction切り替えのCommandの場合、パケット解釈部９０３は機能切り替え部９０４にその旨を通知する。
【００３６】
機能切り替え部９０４では、図１１に示すようなフローで、画像処理部の機能切り替えをおこなう。まず、入力I/F９０１経由でBusy信号を発行し、新規パケットデータの受信を停止する（Ｓ１１０１）。次に、パケット入出力I/Fに入出力したパケット数カウント値から、画像処理部内部で処理しているイメージパケットデータがあるか否かを判定する（Ｓ１１０２）。画像処理部内部で処理しているイメージパケットデータがあった場合、その処理が完了し、出力されるまで待機する。画像処理部内部で処理していたイメージパケットデータがすべて後段へ出力されると、機能切り替え部９０４は、パケットデータがFuncL’側からFuncP’、FuncS’側へ転送されるようにスイッチ７０１もしくは８０１を切り替える（Ｓ１１０３）。そして、ヘッダ判定部９０２でおこなわれる後述のＳ１００４において所定のJobIDを受け取った場合に行われるChipIDのインクリメント処理を有効にする（Ｓ１１０４）。以上の処理をおこなった後、入力I/F９０１経由で発行していたBusy信号を解除し、新規のパケットデータを受け付ける（Ｓ１１０５）。
【００３７】
Ｓ１００３の判定において、PcktTypeがCommandであった場合は、Ｓ１００８もしくはＳ１００９の処理後、ヘッダ変換部９０５において、元のパケットデータのChipIDを０に変更し、後段の画像処理部に出力する（Ｓ１０１０）。こうすることで、後段の画像処理部でパケットデータを受信させないようにすることができる。
【００３８】
Ｓ１００３の判定に戻り、パケットヘッダのPcktType２０４がDataの場合、ヘッダ判定部９０２はさらに、パケットヘッダのJobID２０８が後段への転送対象かどうかを判定する。判定は２通り行い、まず、Func切り替え処理Ｓ１００８で、ステップＳ１１０４において判定処理が有効とされたかどうかを判定する。そして、有効である場合には、JobID２０８の数値の大きさが予め決められた数値より小さい場合は、FuncLで処理すべきパケットデータであると判定し、画像処理部内部にパケットデータを転送せず、ヘッダ変換部９０５に転送する。ヘッダ変換部９０５では、本パケットが後段のFuncLの画像処理部で処理されるべきパケットであると判断し、パケットヘッダのChipID２０５をインクリメントする（Ｓ１００６）。その後、後段の画像処理部が受信して処理できるようにして出力する（Ｓ１０１１）。一方、JobID２０８の数値の大きさが予め決められた数値以上である場合は、FuncP’又はFuncS’で処理すべきパケットデータであると判定する。その場合に、内部の後段モジュールへパケットデータを転送して画像処理を行う（Ｓ１００７）。その後、Ｓ１０１０において、元のパケットデータのChipIDを０に変更し、後段の画像処理部に出力する。
【００３９】
なお、ここでは、Ｓ１００４の判定において、ある閾値に対する大小で、ジョブの優先度を判断し、パケットデータを振り分けたが、JobID２０８を用いた判定は別の方法を用いても良い。例えば、JobID２０８のいずれかのビットに、パケット処理すべきFunc種別を割り当て、当該パケットがFuncLで処理されるべきパケットなのか、FuncPやFuncSで処理されるべきなのかを判定する方法でも良い。又は、ステップＳ１００８におけるFunc切り替え処理の直前に処理したイメージパケットデータのJobID２０８を保持しておき、Ｓ１００４で判定するパケットデータがFuncLで処理されるべきかFuncPやFuncSで処理されるべきかを判定しても良い。
【００４０】
上記の方法の重要な点は、画像処理部での処理を低優先度ジョブ用のFuncL’機能から高優先度ジョブ用のFuncP’、FuncS’に切り替えた際に、FuncL’機能で処理されることを前提に送信されてきたパケットデータを検出することである。そして、その検出したパケットデータを後段のFuncL’機能をもつ画像処理部に転送して代替処理させるべくChipID２０５を変更することである。なお、本実施例において、優先度が高いFuncP’やFuncS’の機能についての画像処理を第１の画像処理とする。また、FuncP’やFuncS’に比べて、優先度が低いFuncL’の機能についての画像処理を第２の画像処理とする。また、第１の画像処理を行うためのパケットデータを第１のパケットデータとし、第２の画像処理を行うためのパケットデータを第２のパケットデータとする。
【００４１】
図１３にFunc切り替え前と切り替え後の、各画像処理部でのパケット処理の概要を表す。図１０のフローチャートによれば、イメージデータパケットの処理は大きく分けて以下の３パターンがある。１つは、ヘッダのChipIDが自身のChipIDと異なり、そのまま後段に転送するフローである（処理１）。フローチャートＦ１０００においては、Ｓ１００１→Ｓ１００２→Ｓ１０１１の系である。１つは、Func切り替え前に低優先度ジョブのJobID２０８をもつイメージデータパケットを受信するか、Func切り替え後に高優先度ジョブのJobID２０８をもつイメージデータパケットを受信し画像処理部内部で画像処理するフローである（処理２）。フローチャートＦ１０００においては、Ｓ１００１→Ｓ１００２→Ｓ１００３→Ｓ１００４→Ｓ１００７→Ｓ１０１０→Ｓ１０１１の系である。１つは、Func切り替え後に、低優先度ジョブのJobIDをもつイメージデータパケットを受信した場合に、パケットヘッダのChipIDをインクリメントして後段の画像処理部に出力するフローである（処理３）。フローチャートＦ１０００においては、Ｓ１００１→Ｓ１００２→Ｓ１００３→Ｓ１００４→Ｓ１００６→Ｓ１０１１の系である。
【００４２】
図１３に示す処理で転送されるイメージパケットデータに対して、各画像処理部１０４〜１０６に割り振られているChipID、ヘッダのJobID２０８及びChipID２０５に応じて、各画像処理部で上記の処理１〜３のいずれかの処理が行われる。まず、各画像処理部が全てFuncLで動作しているパターン１の場合、ChipID=1、JobID=１０がヘッダに付加されているイメージデータパケット１３０１は、画像処理部１０４でFuncL処理が行われ、ヘッダのChipID２０５が０に書き換えられる（処理２）。以降の画像処理部１０５、１０６では、そのまま後段に転送される（処理１）。ChipID=２, JobID=１０がヘッダに付加されているイメージデータパケット１３０２は、画像処理部１０４で処理１がおこなわれ、次段の画像処理部１０５で処理２がおこなわれ、画像処理部１０６では、処理１がおこなわれる。ChipID＝３、JobID＝１０がヘッダに付加されているイメージデータパケット１３０３は、画像処理部１０４、１０５で処理１が行われ、画像処理部１０６で処理３が行われる。
【００４３】
次に、ChipID=１とJobID=１０がヘッダに付加されているイメージデータパケット１３１１に、FuncP、FuncSに機能が切り替わった（パターン２）画像処理部１０４、８０５で、ChipID２０５をインクリメントする処理３が行われる。そして、画像処理部１０６でFuncLの画像処理を行う処理２が行われる。その結果、元々、画像処理部１０４（特定の画像処理手段）で処理する予定であったイメージデータパケットを画像処理部１０６（他の画像処理手段）で処理できるようになる。また、ChipID=２, JobID=１０がヘッダに付加されているイメージデータパケット１３１２に、画像処理部１０４で処理１が行われ、FuncSに機能が切り替わった画像処理部１０５で、ChipID２０５をインクリメントする処理３が行われる。そして、画像処理部１０６でFuncLの画像処理を行う処理２が行われる。その結果、元々画像処理部１０５で処理する予定であったイメージデータパケットを画像処理部１０６で処理できるようになる。また、ChipID=３, JobID=１０がヘッダに付加されているイメージデータパケット１３１３に、Func切り替え前（パターン１）のイメージデータパケット１３０３と同様の処理が各画像処理部で行われる。
【００４４】
一方、ChipID=１, JobID=２０がヘッダに付加されている高優先度ジョブのイメージデータパケット１３１４に、画像処理部１０４でFuncPの処理２が行われる。そして画像処理部１０５、１０６では、処理１がおこなわれる。また、スキャナ１０９からFuncSに切り替わった画像処理部１０５に入力されるイメージデータパケット１３１５は、ラスタ・パケット変換器６３２でパケット化される。さらに、イメージデータパケット１３１５は、ChipID=０、JobID=FuncSへの設定値をヘッダに付加され、後段の画像処理部１０６に出力される。画像処理部１０６では、処理１が行われる。
【００４５】
さらに、本発明による効果を図１６を参照して説明する。図９に示すパケット入出力Ｉ／Ｆがない場合には、CPU１０３が、図１６の（ａ）のＦ１６００に示すように画像処理部のリソース管理を行う必要がある。まず、これまでFuncLの機能として動作していた画像処理部１０４〜１０６へのパケットデータ送信を停止する（Ｓ１６０１）。次に、高優先度ジョブで使用するために、画像処理部１０４のFuncLPを、FuncLの機能からFuncPの機能となるように切り替えをおこなう（Ｓ１６０２）。そして、同様に、画像処理部１０５のFuncLSを、FuncLの機能からFuncSの機能となるように切り替えをおこなう（Ｓ１６０３）。次に、これらの切り替えをおこなった画像処理部１０４、１０５を使用する高優先度ジョブの動作を開始する（Ｓ１６０４）。図示しないが、高優先度ジョブにおいては、スキャナ１０９からの画像の入力、FuncSによる画像処理、FuncPによる画像処理、プリンタ１０８への画像の出力といった処理がおこなわれる。一方、３つのFuncL機能を有する画像処理部１０４〜１０６へのパケットデータを停止していた低優先度ジョブについて、使用可能な画像処理部は、画像処理部１０６のみである。従って、パケットヘッダのChipIDは、全て画像処理部１０６を表す「３」に変更される（Ｓ１６０５）。そして、FuncLへのパケットデータ送信が再開される（Ｓ１６０６）。
【００４６】
しかしながら、図９に示すパケット入出力Ｉ／Ｆが構成されると、図１６の（ｂ）のＦ１６０１に示すように、ソフトウェア処理において、Ｓ１６０１の画像処理部へのパケットデータ送信の停止や、Ｓ１６０５のChipIDの変更を行う必要がない。即ち、ＣＰＵによるリソース管理で必要となるのは、各画像処理部において、高優先度ジョブに応じた機能の切換えと、高優先度ジョブの動作の開始のみである。従って、スケジューリングに関わるソフトウェアの負担が低減される。
【００４７】
以上に示した処理フローでわかる通り、本発明の趣意を実現したパケット入出力I/Fを搭載することで、低優先度ジョブのイメージデータパケットのDMA転送を止めることなく、後段の画像処理部への自動転送が可能となる。そのため、低優先度ジョブのDMA転送処理に関わるソフトウェア処理の負荷を減少させることができる。
【００４８】
［第２の実施例］
第１の実施例においては、画像処理部１０４、１０５は、内部の画像処理パスのスイッチを切替えることで、２つの画像処理を切替えるような構成であったが、本発明はこのような構成に限られるものではない。即ち、再構成可能回路（リコンフィギュアラブルプロセッサ等）のようなデバイスを使用し、時分割で使用する画像処理回路を両持ちすることなく、内部回路を書換えて使用するような構成を採っても良い。
【００４９】
図１４に、内部のロジックを動的に切替えることができる再構成可能回路１４０１をもつ画像処理部１４００を示す。本実施例においては、画像処理部１０４〜１０６は、図１４に示すような画像処理部１４００として構成されている。
【００５０】
画像処理部１４００は、再構成可能回路１４０１と、パケット入出力I/F６０７から構成され、パケット入出力I/Fは、図９に示すものと同様の構成をもつ。そして、第１の実施例で示した画像処理部７００、８００とは以下の点が異なる。
【００５１】
再構成可能回路１４０１は、画像処理部１４００全体が、図６の（ａ）のFuncL６１０、FuncP６２０、もしくは図６の（ｂ）のFuncS６３０のいずれかとなるように、内部の回路構成を書換えることができるリコンフィグレーション可能な回路である。即ち、図１１のフローに示されるFunc切替え処理の中で、機能切替え部９０４がスイッチ７０１、８０１に出していた切替え指示を、再構成可能回路切替え部１４０２に出すように実装される(点線１４０４)。そして、再構成可能回路切替え部１４０２は、切替え指示を受信すると、あらかじめメモリ１４０３に格納してあるコンフィグレーション情報に基づいて、再構成可能回路１４０１を、画像処理部１４００がFuncS、FuncP、FuncLのいずれかになるように書換える(点線１４０５)。以上の点が第１の実施例と異なる点である。
【００５２】
このような画像処理部の構成を採ることにより、画像処理部１４００は、画像処理部７００、８００のように、切替える回路を２重持ちすることなく、回路構成することができるため、回路規模をより削減することができる。
【００５３】
［第３の実施例］
第１、第２の実施例においては、画像処理部が、高優先度の画像処理回路に切り替わっている際に、低優先度処理するパケットを受信すると、ChipIDをインクリメントして、後段の低優先度用の画像処理部が受信して処理できるようにしていた(Ｓ１００６)。しかし、本発明の後段画像処理部への転送方法は、この方法に限られるものではない。
【００５４】
例えば、各画像処理部の切替え状態をソフトウェアが把握しているならば、高優先度のジョブ投入によって、画像処理部１０４〜１０６をどのような画像処理部に切替えるべきかをソフトウェアは判断することができる。即ち、FuncLを画像処理部１０４〜８０６で並列処理している際、高優先度ジョブの投入によって、画像処理部１０４、８０５をFuncP、FuncSに切替える必要がある場合、低優先度ジョブは画像処理部１０６に転送すれば良いことも把握できる。この時、FuncP、FuncSに切り替えた後の画像処理部１０４、１０５が、低優先度処理するパケットデータについてChipIDをインクリメントする処理ではなく画像処理部１０６を表すChipID=3に書換えれば、各画像処理部での判断のオーバヘッドが少なくなる。つまり、画像処理部１０４〜１０６全体でのスループットが高くなる。
【００５５】
画像処理部１０４、１０５で、低優先度処理するパケットデータのChipIDを３に書換えるために、画像処理部１０４、１０５の機能切替え指示の前、もしくは同時に、ChipIDを書換える指示を与える。画像処理部１０４、１０５は、パケット解釈部９０３で、書換えるChipIDの番号を認識すると、その情報をヘッダ変換部９０５に転送し、その情報を保持する（図９の１点鎖線）。すると、機能切替え後に低優先度パケットを画像処理部１０４、１０５が受信すると、上記保持したChipID情報に従って、ヘッダ変換部９０５でChipIDを３に書換えて後段に転送する。画像処理部１０６は、転送されてきたChipID=3が付加された低優先度パケットを処理する。
【００５６】
図１５に、イメージデータパケット１３１１、１５０１それぞれが、第１の実施例と第３の実施例において、機能切替え後にChipID=1、JOBID＝１０の、画像処理部１０４に低優先度処理するパケットを転送した時のChipIDの変遷を示す。第１の実施例の場合、機能がFuncPに切替わった画像処理部１０４では、ChipIDは1からインクリメントされて２となり、後段に転送される。そのため、機能がFuncSに切替わった画像処理部１０５でもChipIDインクリメント処理が発生する。第３の実施例の場合、機能がFuncPに切替わった画像処理部１０４では、ChipIDは1から３に書換えられるようになる。そのため、画像処理部１０５ではそのまま後段に転送され、画像処理部１０６で処理される。その結果、画像処理部１０５における判断処理やChipID変換処理等のオーバヘッドが減り、スループットを向上することができる。この効果は、画像処理部をより多く連結した場合に、大きくなる。
【図１】
2010263328.tif 000003
【図２】
2010263328.tif 000004
【図３】
2010263328.tif 000005
【図４】
2010263328.tif 000006
【図５】
2010263328.tif 000007
【図６】
2010263328.tif 000008
【図７】
2010263328.tif 000009
【図８】
2010263328.tif 000010
【図９】
2010263328.tif 000011
【図１０】
2010263328.tif 000012
【図１１】
2010263328.tif 000013
【図１２】
2010263328.tif 000014
【図１３】
2010263328.tif 000015
【図１４】
2010263328.tif 000016
【図１５】
2010263328.tif 000017
【図１６】
2010263328.tif 000018