(57)【要約】【課題】複数のプロセッサの間の通信を適切に制御することができる情報処理装置を提供することを課題とする。【解決手段】情報処理装置は、パイプラインを形成する複数のプロセッサ（５０１〜５０４）と、前記複数のプロセッサの間のデータの通信を行う通信部（６０１〜６０３）と、前記複数のプロセッサに機能を割り当てる制御部（１０６）とを有し、前記制御部又は前記プロセッサは、前記機能に応じて通信モードを設定し、前記通信部は、前記通信モードに応じて、異なるバッファ領域に前記データをバッファリングし、前記複数のプロセッサの間のデータの通信を行う。【選択図】図５
2018106222.tif 000002
【特許請求の範囲】
【請求項１】
パイプラインを形成する複数のプロセッサと、
前記複数のプロセッサの間のデータの通信を行う通信部と、
前記複数のプロセッサに機能を割り当てる制御部とを有し、
前記制御部又は前記プロセッサは、前記機能に応じて通信モードを設定し、
前記通信部は、前記通信モードに応じて、異なるバッファ領域に前記データをバッファリングし、前記複数のプロセッサの間のデータの通信を行う情報処理装置。
【請求項２】
前記通信部は、
前記複数のプロセッサの間に設けられるＦＩＦＯバッファと、
メモリに対してダイレクトメモリアクセスするＤＭＡコントローラとを有し、
前記制御部又は前記プロセッサは、前記機能に応じて、第１の通信モード又は第２の通信モードを設定し、
前記通信部は、前記第１の通信モードでは、前記ＤＭＡコントローラにより前記メモリのバッファ領域に前記データをバッファリングし、前記第２の通信モードでは、前記ＦＩＦＯバッファに前記データをバッファリングする請求項１に記載の情報処理装置。
【請求項３】
さらに、前記複数のプロセッサ及び前記ＤＭＡコントローラに接続される第１のバスと、
前記第１のバス及び前記制御部に接続される第２のバスとを有し、
前記メモリは、前記第２のバスに接続される請求項２に記載の情報処理装置。
【請求項４】
さらに、前記複数のプロセッサ及び前記ＤＭＡコントローラに接続される第１のバスと、
前記第１のバス及び前記制御部に接続される第２のバスとを有し、
前記メモリは、前記第１のバスに接続される請求項２に記載の情報処理装置。
【請求項５】
前記制御部は、前記機能に応じて、前記第１の通信モード又は前記第２の通信モードを設定し、前記第１の通信モードでは前記メモリのバッファ領域を確保する請求項２乃至４のいずれか１項に記載の情報処理装置。
【請求項６】
前記プロセッサは、前記機能に応じて、前記第１の通信モード又は前記第２の通信モードを設定し、前記第１の通信モードでは前記メモリのバッファ領域を確保する請求項２乃至４のいずれか１項に記載の情報処理装置。
【請求項７】
前記メモリのバッファ領域のサイズは、前記ＦＩＦＯバッファのサイズより大きい請求項２乃至６のいずれか１項に記載の情報処理装置。
【請求項８】
前記制御部又は前記プロセッサは、前記複数のプロセッサの間の通信データ量に応じて、通信モードを設定する請求項１乃至７のいずれか１項に記載の情報処理装置。
【請求項９】
前記制御部又は前記プロセッサは、前記複数のプロセッサの間の通信データ量が閾値より多い場合には前記第１の通信モードを設定し、前記複数のプロセッサの間の通信データ量が前記閾値より少ない場合には前記第２の通信モードを設定する請求項２乃至７のいずれか１項に記載の情報処理装置。
【請求項１０】
前記複数のプロセッサは、前記機能を時分割で切り替えて実行する請求項１乃至９のいずれか１項に記載の情報処理装置。
【請求項１１】
パイプラインを形成する複数のプロセッサと、
前記複数のプロセッサの間のデータの通信を行う通信部と、
前記複数のプロセッサに機能を割り当てる制御部とを有する情報処理装置の通信制御方法であって、
前記制御部又は前記プロセッサにより、前記機能に応じて通信モードを設定するステップと、
前記通信部により、前記通信モードに応じて、異なるバッファ領域に前記データをバッファリングし、前記複数のプロセッサの間のデータの通信を行うステップと
を有する通信制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置及び通信制御方法に関する。
【背景技術】
【０００２】
複数のプロセッサを用いて単一機能を実現する場合、プロセッサ間に配置したＦＩＦＯバッファを経由してプロセッサ間でコマンドを送受信しながら、各プロセッサが単一機能の部分処理を並列に実行することで、システム性能を向上する方法が知られている。ＦＩＦＯバッファは、ファーストインファーストアウト（Ｆｉｒｓｔ  Ｉｎ  Ｆｉｒｓｔ  Ｏｕｔ）バッファである。更に、これらの複数のプロセッサに割り当てるプログラムを時分割で切り替えることで、複数のプロセッサを用いて複数の機能を多重化して実現する方法も知られている。
【０００３】
この時、前段のプロセッサがコマンドを送信するまでに要する時間と後段のプロセッサがコマンドを受信するまでに要する時間の大小関係は、処理対象データに対して各プロセッサに割り当てられた部分処理を実行するプログラムの処理時間に依存して変化する。例えば、前段のプロセッサの処理時間が後段のプロセッサの処理時間よりも短い場合、プロセッサ間のＦＩＦＯバッファがフル（Ｆｕｌｌ）状態になり、前段のプロセッサに処理待ち時間（ストール）が発生する。逆に、前段のプロセッサの処理時間が後段のプロセッサの処理時間よりも長い場合、プロセッサ間のＦＩＦＯバッファが空（Ｅｍｐｔｙ）状態になり、後段のプロセッサに処理待ち時間（ストール）が発生する。これらの課題によって、複数のプロセッサのパイプライン構成を有する情報処理装置のシステム性能を十分に引き出せていない。
【０００４】
これらの課題に対処するために、特許文献１は、プロセッサ間のＦＩＦＯバッファの状態に応じて、ＦＩＦＯバッファに記憶したデータをＤＭＡコントローラ経由でシステムメモリに転送する技術を開示している。ＤＭＡコントローラは、ダイレクトメモリアクセス（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）コントローラである。すなわち、ＦＩＦＯバッファがフル状態になると、ＤＭＡコントローラ経由でＦＩＦＯバッファからシステムメモリにデータ転送するようにデータパスを切り替える。一方で、ＦＩＦＯバッファが空状態になると、ＤＭＡコントローラ経由でシステムメモリからＦＩＦＯバッファにデータ転送するようにデータパスを切り替える。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１１−５６７０３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、特許文献１は、ＦＩＦＯバッファのフル状態／空状態を回避できる局所最適の制御方法ではあるが、必ずしも複数のプロセッサのシステム性能を向上できる全体最適の制御方法ではない。すなわち、ＦＩＦＯバッファのＤＭＡコントローラによるメモリアクセスと複数のプロセッサによるメモリアクセスが互いに競合し、メモリ帯域を圧迫してメモリアクセス待ち時間（レイテンシ）を増加させるため、システム性能を低下させる場合がある。また、特許文献１は、パイプライン内部で自律的にデータパスを切り替える制御方法を提供しているが、パイプライン外部から前述したシステムバス上のメモリ帯域を考慮してデータパスを切り替える制御方法を提供していない。
【０００７】
本発明の目的は、複数のプロセッサの間の通信を適切に制御することができる情報処理装置及び通信制御方法を提供することである。
【課題を解決するための手段】
【０００８】
本発明の情報処理装置は、パイプラインを形成する複数のプロセッサと、前記複数のプロセッサの間のデータの通信を行う通信部と、前記複数のプロセッサに機能を割り当てる制御部とを有し、前記制御部又は前記プロセッサは、前記機能に応じて通信モードを設定し、前記通信部は、前記通信モードに応じて、異なるバッファ領域に前記データをバッファリングし、前記複数のプロセッサの間のデータの通信を行う。
【発明の効果】
【０００９】
本発明によれば、複数のプロセッサの間の通信を適切に制御することができる。
【図面の簡単な説明】
【００１０】
【図１】画像処理装置のコントローラの構成例を示すブロック図である。
【図２】汎用画像処理部の内部構成例を示すブロック図である。
【図３】制御部の機能実行制御を示すフローチャートである。
【図４】汎用画像処理部の処理プログラムの実行を示すフローチャートである。
【図５】機能Ａの機能実行制御を説明する概念図である。
【図６】機能Ｂの機能実行制御を説明する概念図である。
【図７】機能Ｃの機能実行制御を説明する概念図である。
【図８】制御部の機能実行制御を示すフローチャートである。
【図９】汎用画像処理部の処理プログラムの実行を示すフローチャートである。
【図１０】機能Ａ〜Ｃの処理プログラムと通信部制御方法の対応を示す図である。
【発明を実施するための形態】
【００１１】
（第１の実施形態）
図１は、本発明の第１の実施形態による画像処理システムの構成例を示すブロック図である。画像処理システムは、画像処理装置１０と、ネットワーク２０と、ホストコンピュータ３０と、サーバ４０とを有する。画像処理装置１０は、情報処理装置であり、例えば、スキャン、プリント、コピーなどの複数の機能を有するデジタル複合機（ＭＦＰ：Ｍｕｌｔｉ  Ｆｕｎｃｔｉｏｎ  Ｐｅｒｉｐｈｅｒａｌ）である。
【００１２】
画像処理装置１０は、コントローラ１００、操作部２００、スキャンエンジン３００、及びプリントエンジン４００を有し、ネットワーク２０を介して、ホストコンピュータ３０及びサーバ４０に接続される。ネットワーク２０は、ＬＡＮやＷＡＮなどであり、ホストコンピュータ３０又はサーバ４０などの外部装置と画像処理装置１０との間で画像データやデバイス情報を送受信する通信部である。ホストコンピュータ３０は、ネットワーク２０上の端末であって、アプリケーションソフトで作成した文書データを基に画像処理装置１０でプリント出力可能なＰＤＬ（Ｐａｇｅ  Ｄｅｓｃｒｉｐｔｉｏｎ  Ｌａｎｇｕａｇｅ）データを生成して送信する。サーバ４０は、ホストコンピュータ３０で生成して送信したＰＤＬデータを受信して一時格納する端末であって、画像処理装置１０の操作部２００からのＰＤＬプリント実行などの指示に従って画像処理装置１０にＰＤＬデータを送信する。
【００１３】
コントローラ１００は、ネットワーク２０、操作部２００、スキャンエンジン３００、及びプリントエンジン４００に接続され、画像処理装置１０全体の制御を行う制御部である。コントローラ１００は、ＲＯＭ１０１、ＲＡＭ１０２、ＨＤＤ１０３、操作部Ｉ／Ｆ１０４、及びネットワークＩ／Ｆ１０５がシステムバス１１０を介して互いに接続されている。また、コントローラ１００は、ＣＰＵ１０６、及び汎用画像処理部１０７、スキャン画像処理部１０８、及びプリント画像処理部１０９がシステムバス１１０を介して互いに接続されている。
【００１４】
ＲＯＭ１０１（不揮発性メモリ）１０１は、ＣＰＵ１０６がシステムを起動するためのブートプログラムが格納されている記憶部である。ＲＡＭ１０２（揮発性メモリ）１０２は、ＤＲＡＭなどであり、ＣＰＵ１０６がシステム上で動作するためのワーク領域として使用されたり、画像データやコマンドデータを一次記憶するためのバッファ領域として使用されたりする記憶部である。ＨＤＤ１０３は、ハードディスクドライブであって、主に画像処理装置１０の内部の画像データを格納しておくための大容量記憶部である。操作部Ｉ／Ｆ１０４は、操作部２００とコントローラ１００の間で入出力データを送受信するインタフェース部である。操作部Ｉ／Ｆ１０４は、操作部２００からの操作入力をコントローラ１００内部に転送したり、コントローラ１００内部から操作部２００への表示出力を転送したりする。ネットワークＩ／Ｆ１０５は、例えばＬＡＮカードなどであり、ネットワーク２０を介してホストコンピュータ３０やサーバ４０などの外部装置と画像処理装置１０との間で画像データやデバイス情報を送受信するインタフェース部である。
【００１５】
ＣＰＵ（制御部）１０６は、画像処理装置１０のコントローラ１００全体を制御する制御部である。ＣＰＵ１０６は、例えば、カラーのＰＤＬプリント処理時に、ネットワーク２０を介して受信したＰＤＬデータを解釈して、ページを構成する描画データ（ＤＬ：Ｄｉｓｐｌａｙ  Ｌｉｓｔ）に変換して、ＲＡＭ１０２に格納するように制御する。また、ＣＰＵ１０６は、例えば、モノクロのコピー処理時に、スキャン画像処理部１０８を介してスキャンエンジン３００から受信した画像データを、ＲＡＭ１０２に格納するように制御する。汎用画像処理部１０７は、ＣＰＵ１０６の指示に基づいて実行するプログラムを切り替えることで、時分割で複数の異なる機能を実現可能な汎用の画像処理部である。汎用画像処理部１０７は、例えば、カラーのＰＤＬプリント処理時に、描画（ＲＩＰ：Ｒａｓｔｅｒ  Ｉｍａｇｅ  Ｐｒｏｃｅｓｓｉｎｇ）機能を実現するプログラムを実行するように制御される。この時、汎用画像処理部１０７は、ＣＰＵ１０６が生成したベクタ形式の描画データ（ＤＬ）を、ラスタ形式の画像データに展開する。また、汎用画像処理部１０７は、例えば、モノクロのコピー処理時に、画像編集処理を実現するプログラムを実行するように制御される。この時、汎用画像処理部１０７は、ＲＡＭ１０２上のラスタ形式の画像データを取得して画像フィルタや画素カウントなどの画像編集処理を実行する。スキャン画像処理部１０８は、スキャンエンジン３００に接続され、スキャンエンジン３００から入力された画像データに対して、スキャンエンジン３００のデバイス特性に合わせた補正のための画像処理を行う画像処理部である。プリント画像処理部１０９は、プリントエンジン４００に接続され、プリントエンジン４００のデバイス特性に合わせた補正のための画像処理を行った後に、プリントエンジン４００に対して画像データを出力する画像処理部である。システムバス１１０は、コントローラ１００を構成する各処理部を互いに接続し、各処理部の間で画像データやコマンドデータの送受信を行う処理部である。スキャンエンジン３００は、スキャンにより画像データを生成する。プリントエンジン４００は、画像データをプリントする。
【００１６】
図２は、図１に示した汎用画像処理部１０７の内部構成例を示すブロック図である。図２に示すように、汎用画像処理部１０７は、パイプラインを形成する複数のプロセッサ５０１〜５０４を有する。図２の例では、汎用画像処理部１０７は、Ｓｕｂ−ＣＰＵ１（５０１）、Ｓｕｂ−ＣＰＵ２（５０２）、Ｓｕｂ−ＣＰＵ３（５０３）、Ｓｕｂ−ＣＰＵ４（５０４）の４つのＳｕｂ−ＣＰＵを有する。Ｓｕｂ−ＣＰＵ１（５０１）、Ｓｕｂ−ＣＰＵ２（５０２）、Ｓｕｂ−ＣＰＵ３（５０３）、及びＳｕｂ−ＣＰＵ４（５０４）は、それぞれ、プロセッサである。複数のＤＭＡ付きＦＩＦＯ（６０１〜６０３）は、複数の通信部であり、複数のＳｕｂ−ＣＰＵ（５０１〜５０４）の間のデータの通信を行う。Ｓｕｂ−ＣＰＵ１（５０１）とＳｕｂ−ＣＰＵ２（５０２）は、ＤＭＡ付きＦＩＦＯ１（６０１）によって接続されている。また、Ｓｕｂ−ＣＰＵ２（５０２）とＳｕｂ−ＣＰＵ３（５０３）は、ＤＭＡ付きＦＩＦＯ２（６０２）によって接続されている。また、Ｓｕｂ−ＣＰＵ３（５０３）とＳｕｂ−ＣＰＵ４（５０４）は、ＤＭＡ付きＦＩＦＯ３（６０３）によって接続されている。これらのＤＭＡ付きＦＩＦＯ（６０１〜６０３）は、上記のパイプラインの上流のＳｕｂ−ＣＰＵと下流のＳｕｂ−ＣＰＵとの間で転送されたプロセッサ間の通信データを一時的に内部のＦＩＦＯ式のバッファに記憶する通信部として機能する。また、Ｓｕｂ−ＣＰＵ１〜Ｓｕｂ−ＣＰＵ４（５０１〜５０４）、及び、ＤＭＡ付きＦＩＦＯ１〜ＤＭＡ付きＦＩＦＯ３（６０１〜６０３）のそれぞれは、システムバス１１０への入出力が可能な構成になっている。すなわち、これらのブロックから発行されたバストランザクションは、汎用画像処理部１０７の内部でバスアービター７０１によって調停された後に、システムバス１１０を介して接続されたＲＡＭ１０２へのメモリアクセスとして発行される。
【００１７】
Ｓｕｂ−ＣＰＵ（５０１〜５０４）のそれぞれは、ＲＡＭ１０２のシステムメモリに格納された複数のプログラム（機能）８０１ａや８０１ｂを時分割で切り替えて実行することで、機能Ａや機能Ｂの各機能の部分処理を実行する。この時、Ｓｕｂ−ＣＰＵ（５０１〜５０４）のそれぞれは、ＲＡＭ１０２のシステムメモリに格納された入力データ８０２ａや８０２ｂを取得することで、機能Ａや機能Ｂの各機能を実行する際の入力データとする。同様に、Ｓｕｂ−ＣＰＵ（５０１〜５０４）のそれぞれは、機能Ａや機能Ｂの各機能を実行して得られた結果の出力データを、ＲＡＭ１０２のシステムメモリ上にデータ８０３ａや８０３ｂとして格納する。
【００１８】
ＤＭＡ付きＦＩＦＯ１（６０１）は、ＦＩＦＯ１（６０１ａ）及びＤＭＡ１（６０１ｂ）を有する。ＤＭＡ付きＦＩＦＯ２（６０２）は、ＦＩＦＯ２（６０２ａ）及びＤＭＡ２（６０２ｂ）を有する。ＤＭＡ付きＦＩＦＯ３（６０３）は、ＦＩＦＯ３（６０３ａ）及びＤＭＡ３（６０３ｂ）を有する。ＦＩＦＯ（６０１ａ〜６０３ａ）は、ＦＩＦＯバッファであり、ファーストインファーストアウト（Ｆｉｒｓｔ  Ｉｎ  Ｆｉｒｓｔ  Ｏｕｔ）バッファである。ＤＭＡ（６０１ｂ〜６０３ｂ）は、ＤＭＡコントローラであり、ダイレクトメモリアクセス（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）コントローラである。ＦＩＦＯ（６０１ａ〜６０３ａ）は、それぞれ、複数のＳｕｂ−ＣＰＵ（５０１〜５０４）の間に設けられる。ＤＭＡ（６０１ｂ〜６０３ｂ）は、それぞれ、ＲＡＭ１０２に対してダイレクトメモリアクセスする。
【００１９】
バスアービター７０１は、第１のバスであり、複数のＳｕｂ−ＣＰＵ（５０１〜５０４）、ＤＭＡ（６０１ｂ〜６０３ｂ）、及びシステムバス１１０に接続される。システムバス１１０は、第２のバスであり、バスアービター７０１及びＣＰＵ１０６に接続される。ＲＡＭ１０２は、システムバス１１０に接続される。
【００２０】
ＤＭＡ付きＦＩＦＯ（６０１〜６０３）のそれぞれは、ＣＰＵ１０６の指示に従い、上流のプロセッサから受信した通信データをＦＩＦＯ（６０１ａ〜６０３ａ）経由で下流のプロセッサに送信する。また、ＤＭＡ付きＦＩＦＯ（６０１〜６０３）のそれぞれは、ＣＰＵ１０６の指示に従い、上流のプロセッサからＦＩＦＯインタフェースで受信した通信データをＤＭＡ（６０１ｂ〜６０３ｂ）経由でＲＡＭ１０２のシステムメモリ上のバッファ領域に一時保持する。更に、ＤＭＡ付きＦＩＦＯ（６０１〜６０３）のそれぞれは、ＲＡＭ１０２のシステムメモリ上のバッファ領域に一時保持した通信データを、再びＤＭＡ（６０１ｂ〜６０３ｂ）経由で下流のプロセッサにＦＩＦＯインタフェースで送信する。ここで、ＦＩＦＯ経由のデータパスで用いられるＦＩＦＯ（６０１ａ〜６０３ａ）内部のバッファ領域は、一般に、比較的小さいサイズのＳＲＡＭなどで構成され、固定サイズ（例：６４ビット×３２段ＦＩＦＯ）で用いることが多い。また、ＤＭＡ経由のデータパスで用いられるＲＡＭ１０２内部のバッファ領域は、一般に、比較的大きいサイズのＤＲＡＭなどで構成され、その一部の領域を可変サイズ（例：６４ビット×４０９６段ＦＩＦＯ相当）で確保して用いることが多い。なお、図２に示した構成は、パイプラインを形成する複数のプロセッサを用いたサブシステムの一例であって、プロセッサ数や接続構成を制限するものではない。
【００２１】
図３は、本発明の第１の実施形態において、ＣＰＵ１０６が汎用画像処理部１０７の機能実行を制御する流れを説明するためのフローチャートである。なお、図３のフローチャートに記載のステップＳ３０１〜Ｓ３１５のプログラムは、画像処理装置１００の起動時にＲＡＭ１０２に展開され、ＣＰＵ１０６によって実行されるものである。また、図１０は、本実施形態において、汎用画像処理部１０７が実現可能な複数の機能に対するＳｕｂ−ＣＰＵの処理プログラムとＤＭＡ付きＦＩＦＯ制御方法を管理するテーブルである。図３の各ステップＳ３０１〜Ｓ３１５では、必要に応じて図１０の例を参照しながら説明する。
【００２２】
まず、ステップＳ３０１では、ＣＰＵ１０６は、画像処理装置１０で受信したジョブ毎に、汎用画像処理部１０７に対する機能要求を取得する。例えば、ＣＰＵ１０６は、カラーのＰＤＬプリント処理のジョブ実行を要求された場合、汎用画像処理部１０７に対して予め定めた機能Ａとしてのカラー描画（ＲＩＰ）機能を実現するプログラムを実行するように制御する。また、例えば、ＣＰＵ１０６は、モノクロのコピー処理のジョブ実行を要求された場合、汎用画像処理部１０７に対して予め定めた機能Ｂとしてのモノクロ編集機能を実現するプログラムを実行するように制御する。
【００２３】
次に、ステップＳ３０２では、ＣＰＵ１０６は、ステップＳ３０１で対応付けされた各機能のプログラムをＳｕｂ−ＣＰＵ（５０１〜５０４）にロードする。すなわち、ＣＰＵ１０６は、機能Ａのカラー描画（ＲＩＰ）機能が選択されたならば、これに対応する処理プログラム８０１ａのＡ１〜Ａ４をロードする。また、ＣＰＵ１０６は、機能Ｂのモノクロ編集機能が選択されたならば、これに対応する処理プログラム８０１ｂのＢ１〜Ｂ４をロードする。ＣＰＵ１０６は、上記のロードにより、複数のＳｕｂ−ＣＰＵ（５０１〜５０４）に機能を割り当てる。
【００２４】
次に、ステップＳ３０３では、ＣＰＵ１０６は、汎用画像処理部１０７で実現する機能に対応したプログラムを識別するための機能ＩＤを取得する。例えば、ＣＰＵ１０６は、図１０に示した機能Ａのカラー描画（ＲＩＰ）機能が選択され、Ｓ３０２で機能Ａに対応するＳｕｂ−ＣＰＵプログラムＡ１〜Ａ４をＳｕｂ−ＣＰＵ（５０１〜５０４）にロードしたならば、これを示す機能ＩＤ＝０ｘ１を取得する。また、例えば、ＣＰＵ１０６は、図１０に示した機能Ｂのモノクロ編集機能が選択され、Ｓ３０２で機能Ｂに対応するＳｕｂ−ＣＰＵプログラムＢ１〜Ｂ４をＳｕｂ−ＣＰＵ（５０１〜５０４）にロードしたならば、これを示す機能ＩＤ＝０ｘ２を取得する。
【００２５】
次に、ステップＳ３０４では、ＣＰＵ１０６は、プロセッサ間のデータ通信があるか否かを判断する。単一機能がパイプライン接続された２つ以上のプロセッサによる部分処理で実現され、かつ、プロセッサ間で画像データや制御コマンドなどの通信データを転送しながら並列処理を実行する場合（Ｓ３０４でＹＥＳ）は、ＣＰＵ１０６は、Ｓ３０６に遷移する。一方で、単一機能が単一のプロセッサで完結した処理で実現したり、プロセッサ間で画像データや制御コマンドなどの通信データを転送せずに並列処理を実現したりする場合（Ｓ３０４でＮＯ）は、ＣＰＵ１０６は、Ｓ３０５に遷移する。
【００２６】
ステップＳ３０５では、ＣＰＵ１０６は、当該プロセッサ間のＤＭＡ付きＦＩＦＯに対してデータ通信を必要としないため、プロセッサ間の通信部であるＤＭＡ付きＦＩＦＯのリセット制御を実行し、ステップＳ３１１に遷移する。
【００２７】
ステップＳ３０６では、ＣＰＵ１０６は、プロセッサ間の通信部であるＤＭＡ付きＦＩＦＯのそれぞれに対して、ステップＳ３０３で取得した機能ＩＤに対応した通信モードを選択（設定）する。通信モードは、ＤＭＡ転送の通信モード（第１の通信モード）と、ＦＩＦＯ直結の通信モード（第２の通信モード）とを有する。次に、ステップＳ３０７では、ＣＰＵ１０６は、ステップＳ３０６で選択した通信モードがＦＩＦＯ直結の通信モードであるか否かを判断する。ＣＰＵ１０６は、通信モードがＦＩＦＯ直結の通信モードであると判断した場合（Ｓ３０７でＹＥＳ）には、ステップＳ３０８に遷移する。また、ＣＰＵ１０６は、通信モードがＤＭＡ転送の通信モードであると判断した場合（Ｓ３０７でＮＯ）には、ステップＳ３０９に遷移する。
【００２８】
ステップＳ３０８では、ＣＰＵ１０６は、ＦＩＦＯ直結の通信モードを設定し、ステップＳ３１０に遷移する。具体的には、ＣＰＵ１０６は、固定サイズで比較的小さいサイズのＳＲＡＭ（例：６４ビット×３２段ＦＩＦＯ）などで構成されるＦＩＦＯ経由で、上流のプロセッサから下流のプロセッサへのデータパスを確立する。すなわち、ＦＩＦＯ直結の通信モードにおいて、ＣＰＵ１０６は、図２で説明したＦＩＦＯ（６０１ａ〜６０３ａ）内部のバッファ領域を用いて、プロセッサ間のデータ通信を行うように制御する。
【００２９】
ステップＳ３０９では、ＣＰＵ１０６は、ＤＭＡ転送の通信モードを設定し、ステップＳ３１０に遷移する。具体的には、ＣＰＵ１０６は、可変サイズで比較的大きいサイズのＤＲＡＭなどで構成されるＤＭＡ経由で、上流のプロセッサから下流のプロセッサへのデータパスを確立する。すなわち、ＤＭＡ転送の通信モードにおいて、ＣＰＵ１０６は、図２で説明したＲＡＭ１０２内部で確保した一部の領域をバッファ領域として用いて、プロセッサ間のデータ通信を行うように制御する。
【００３０】
例えば、ＣＰＵ１０６は、Ｓ３０３で図１０に示した機能ＩＤ＝０ｘ１を取得したならば、図２に示したＤＭＡ付きＦＩＦＯ１及び２（６０１、６０２）をＤＭＡ転送の通信モードに設定し、ＤＭＡ付きＦＩＦＯ３（６０３）をＦＩＦＯ直結の通信モードに設定する。また、例えば、ＣＰＵ１０６は、Ｓ３０３で図１０に示した機能ＩＤ＝０ｘ２を取得したならば、図２に示したＤＭＡ付きＦＩＦＯ１〜ＤＭＡ付きＦＩＦＯ３（６０１〜６０３）をＦＩＦＯ直結の通信モードに設定する。
【００３１】
ステップＳ３０９では、ＣＰＵ１０６は、ＤＭＡ付きＦＩＦＯ（６０１〜６０３）のそれぞれに対して、ＤＭＡ転送先アドレス、及び、ＤＭＡ転送先バッファサイズを設定することで、システムメモリのＲＡＭ１０２のバッファ領域を確保する。なお、ＤＭＡ転送の通信モードの場合、ＣＰＵ１０６は、ＤＲＡＭ上に確保するバッファ領域のサイズを併せて設定することで、バッファサイズそのものも任意の可変サイズに設定可能である。すなわち、例えば、図１０に示した機能ＩＤ＝０ｘ１の場合、ＣＰＵ１０６は、Ｓｕｂ−ＣＰＵ１（５０１）とＳｕｂ−ＣＰＵ２（５０２）の間のバッファ領域を６４ビット×４０９６段ＦＩＦＯ相当に設定可能である。その一方で、例えば、図１０に示した機能ＩＤ＝０ｘ１の場合、ＣＰＵ１０６は、Ｓｕｂ−ＣＰＵ２（５０２）とＳｕｂ−ＣＰＵ３（５０３）の間のバッファ領域を６４ビット×５１２段ＦＩＦＯ相当に設定可能である。
【００３２】
ステップＳ３１０では、ＣＰＵ１０６は、通信部である当該ＤＭＡ付きＦＩＦＯに対してリセット解除し、汎用画像処理部１０７のＳｕｂ−ＣＰＵによるプログラム実行待ち状態となるようにスタンバイ制御する。
【００３３】
次に、ステップＳ３１１では、ＣＰＵ１０６は、汎用画像処理部１０７を構成する全ての通信部のＤＭＡ付きＦＩＦＯに対して設定したか否かを判断する。ＣＰＵ１０６は、全ての通信部に対して設定したと判断した場合にはステップＳ３１２に遷移し、全ての通信部に対して設定していないと判断した場合にはステップＳ３０４に戻る。すなわち、ＣＰＵ１０６は、全てのＤＭＡ付きＦＩＦＯが設定完了するまで（Ｓ３１１でＮＯ）、ステップＳ３０４〜Ｓ３１０を繰り返し、全ての通信部のＤＭＡ付きＦＩＦＯが設定完了後（Ｓ３１１でＹＥＳ）、ステップＳ３１２に遷移する。
【００３４】
ステップＳ３１２では、ＣＰＵ１０６は、Ｓｕｂ−ＣＰＵ（５０１〜５０４）に対してリセット解除し、汎用画像処理部１０７のＳｕｂ−ＣＰＵ（５０１〜５０４）がＲＡＭ１０２上のプログラムの命令をフェッチし、それぞれに割り当てられた部分処理を実行する。次に、ステップＳ３１３では、ＣＰＵ１０６は、汎用画像処理部１０７から、機能実行完了を示す割り込み通知を受信するまで待機し（Ｓ３１３でＮＯ）、割り込み通知を受信後に（Ｓ３１３でＹＥＳ）、ステップＳ３１４に遷移する。
【００３５】
ステップＳ３１４では、ＣＰＵ１０６は、汎用画像処理部１０７を構成するＳｕｂ−ＣＰＵ（５０１〜５０４）に対して、リセット実行し、プログラム実行を停止する。最後に、ステップＳ３１５では、ＣＰＵ１０６は、汎用画像処理部１０７を構成するプロセッサ間の通信部のＤＭＡ付きＦＩＦＯ（６０１〜６０３）に対して、リセット実行し、汎用画像処理部１０７による機能実行時に使用したバッファ領域を初期化する。なお、機能ＩＤ毎のＦＩＦＯ直結とＤＭＡ転送のデータ転送については、後に図５及び図６を用いて説明する。
【００３６】
図４は、本発明の第１の実施形態において、汎用画像処理部１０７がＣＰＵ１０６の指示に従い機能実行する流れを説明するためのフローチャートである。なお、図４のフローチャートに記載のステップＳ４０１〜Ｓ４０３のプログラムは、画像処理装置１００の起動時にＲＡＭ１０２に展開され、Ｓｕｂ−ＣＰＵ（５０１〜５０４）によって実行されるものである。また、図１０は、本実施形態において、汎用画像処理部１０７が実現可能な複数の機能に対するＳｕｂ−ＣＰＵの処理プログラムとＤＭＡ付きＦＩＦＯ制御方法を管理するテーブルである。図４の各ステップＳ４０１〜Ｓ４０３では、必要に応じて図１０の例を参照しながら説明する。
【００３７】
まず、ステップＳ４０１では、Ｓｕｂ−ＣＰＵ（５０１〜５０４）は、ステップＳ３０２でＣＰＵ１０６によってＲＡＭ１０２上にロードされたプログラムで実行すべき機能ＩＤを取得する。このプログラムは、複数の機能のそれぞれに対して複数のプログラムを用意しても良いし、予め複数のモードを実装した単一のプログラム内で、機能ＩＤ毎に分岐するようにしても良い。ここで、複数のプログラムを用意する場合は、ＲＡＭ１０２上の異なるメモリ領域（例えば、８０１ａと８０１ｂ）に予め複数のプログラムを格納した上で、Ｓｕｂ−ＣＰＵ（５０１〜５０４）の参照先アドレスをＣＰＵ１０６が機能ＩＤ毎に切り替え制御しても良い。また、複数のプログラムを用意する場合は、ＲＡＭ１０２上の固定のメモリ領域（例えば、８０１ａ）をＳｕｂ−ＣＰＵ（５０１〜５０４）の参照先アドレスとした上で、格納するプログラムをＣＰＵ１０６が機能ＩＤ毎に書き換え制御しても良い。また、ＣＰＵ１０６は、各Ｓｕｂ−ＣＰＵ（５０１〜５０４）に予め複数のモードを実装したプログラム内で動作モードを切り替えることで、各Ｓｕｂ−ＣＰＵ（５０１〜５０４）に割り当てるプログラムを時分割で切り替え制御しても良い。一方で、機能ＩＤ毎に分岐する場合は、Ｓｕｂ−ＣＰＵ（５０１〜５０４）は、汎用画像処理部１０７の内部レジスタ（不図示）、あるいは、ＲＡＭ１０２上の所定アドレス領域にＣＰＵ１０６によって設定された機能ＩＤを取得する。
【００３８】
次に、ステップＳ４０２では、Ｓｕｂ−ＣＰＵ（５０１〜５０４）のそれぞれは、機能毎に割り当てられた部分処理のプログラムを実行する。すなわち、例えば、Ｓｕｂ−ＣＰＵ（５０１〜５０４）のそれぞれは、機能ＩＤ＝０ｘ１であれば、機能Ａのカラー描画（ＲＩＰ）機能を実行し、機能ＩＤ＝０ｘ２であれば、機能Ｂのモノクロ編集機能を実行する。
【００３９】
次に、ステップＳ４０３では、Ｓｕｂ−ＣＰＵ（５０１〜５０４）のそれぞれは、機能毎に割り当てられた部分処理のプログラムが終了後、ＣＰＵ１０６に対して割り込み通知する。ここで、Ｓｕｂ−ＣＰＵ（５０１〜５０４）からＣＰＵ１０６への割り込み通知は、Ｓｕｂ−ＣＰＵの使用プロセッサ数だけ割り込み通知するようにしても良いし、Ｓｕｂ−ＣＰＵ（５０１〜５０４）の代表プロセッサのみから割り込み通知するようにしても良い。その後、ステップＳ４０３のＳｕｂ−ＣＰＵ（５０１〜５０４）による割り込み通知が、ステップＳ３１３のＣＰＵ１０６によって検知される。
【００４０】
図５及び図６は、本発明の第１の実施形態において、機能Ａ及び機能Ｂを実行制御する場合のＤＭＡ付きＦＩＦＯの通信制御方法を説明する概念図である。図５に示すように、機能Ａのカラー描画（ＲＩＰ）機能の例では、パイプライン接続されたプロセッサ間でのデータ転送において、ＤＭＡ転送の通信モードとＦＩＦＯ直結の通信モードを組み合わせた通信モードに設定するように制御すると良い。すなわち、ＣＰＵ１０６は、ＤＭＡ付きＦＩＦＯ１及び２（６０１、６０２）をＤＭＡ転送の通信モードに設定し、ＤＭＡ付きＦＩＦＯ３（６０３）をＦＩＦＯ直結の通信モードに設定する。その理由は、ＰＤＬデータの描画処理が、ベクタ形式の画像データを入力データとし、ラスタ形式の画像データを出力データとして扱うためである。すなわち、ベクタ形式の画像データは、文字、写真、グラフィックスなどの描画オブジェクトのそれぞれが、ページ内の描画位置座標とオブジェクト間の重ね合わせ情報を持つため、扱うデータによって特徴量の相対的な大小関係が変化する。具体的には、例えば、プロセッサ５０１〜５０４のそれぞれに対して、エッジ処理、レベル処理、フィル処理、コンポジット処理のように、特性の異なる処理を割り当てた場合に、エッジやレベルなどの特徴量が増大する傾向がある。そこで、各プロセッサ処理時に必要なバッファ容量を考慮して、比較的大きなバッファのＤＭＡ転送と比較的小さなバッファのＦＩＦＯ転送を組み合わせることで、単位領域（例えば、１ライン）当たりの処理中に必要となるバッファ容量の変化に対応できる。すなわち、特に、プロセッサ間で比較的大きなバッファ容量が必要な場合に、各プロセッサ間で受け渡すデータ量に応じてバッファ容量が最適なバランスとなるように、ＲＡＭ１０２内部のバッファ領域（９０１、９０２）を確保すれば良い。
【００４１】
ＲＡＭ１０２のバッファ領域（９０１、９０２）のサイズは、ＦＩＦＯ（６０１ａ〜６０３ａ）のサイズより大きい。ＣＰＵ１０６は、複数のＳｕｂ−ＣＰＵ（５０１〜５０４）の間の通信データ量に応じて、通信モードを設定する。例えば、ＣＰＵ１０６は、複数のＳｕｂ−ＣＰＵ（５０１〜５０４）の間の通信データ量が閾値より多い場合には、ＤＭＡ転送の通信モードを設定する。また、ＣＰＵ１０６は、複数のＳｕｂ−ＣＰＵ（５０１〜５０４）の間の通信データ量が閾値より少ない場合には、ＦＩＦＯ直結の通信モードを設定する。
【００４２】
まず、ＤＭＡ付きＦＩＦＯ１（６０１）のＤＭＡ転送の通信モードについて説明する。ＦＩＦＯ１（６０１ａ）は、上流のＳｕｂ−ＣＰＵ１（５０１）から通信データを受信する。ＤＭＡ１（６０１ｂ）は、ＦＩＦＯ１（６０１ａ）が受信した通信データをＲＡＭ１０２のＤＭＡバッファ領域１（９０１）に一時保持する。更に、ＤＭＡ１（６０１ｂ）は、ＲＡＭ１０２のＤＭＡバッファ領域１（９０１）に一時保持した通信データを、再び、ＦＩＦＯ１（６０１ａ）に書き込む。ＦＩＦＯ１（６０１ａ）は、書き込まれた通信データを下流のＳｕｂ−ＣＰＵ２（５０２）に送信する。
【００４３】
次に、ＤＭＡ付きＦＩＦＯ２（６０２）のＤＭＡ転送の通信モードについて説明する。ＦＩＦＯ２（６０２ａ）は、上流のＳｕｂ−ＣＰＵ２（５０２）から通信データを受信する。ＤＭＡ２（６０２ｂ）は、ＦＩＦＯ２（６０２ａ）が受信した通信データをＲＡＭ１０２のＤＭＡバッファ領域２（９０２）に一時保持する。更に、ＤＭＡ２（６０２ｂ）は、ＲＡＭ１０２のＤＭＡバッファ領域２（９０２）に一時保持した通信データを、再び、ＦＩＦＯ２（６０２ａ）に書き込む。ＦＩＦＯ２（６０２ａ）は、書き込まれた通信データを下流のＳｕｂ−ＣＰＵ３（５０３）に送信する。
【００４４】
次に、ＤＭＡ付きＦＩＦＯ３（６０３）のＦＩＦＯ直結の通信モードについて説明する。ＦＩＦＯ３（６０３ａ）は、上流のＳｕｂ−ＣＰＵ３（５０３）から通信データを受信し、その受信した通信データを、ファーストインファーストアウトで、下流のＳｕｂ−ＣＰＵ４（５０４）に送信する。
【００４５】
図６に示すように、機能Ｂのモノクロ編集機能の例では、パイプライン接続されたプロセッサ間でのデータ転送において、ＦＩＦＯ直結の通信モードのみの通信モードに設定するように制御すると良い。すなわち、ＣＰＵ１０６は、ＤＭＡ付きＦＩＦＯ１〜３（６０１〜６０３）をＦＩＦＯ直結の通信モードに設定する。その理由は、フィルタ処理やカウント処理などの一般的な編集処理が、ラスタ形式の画像データを入出力データとして扱うためである。すなわち、ラスタ形式の画像データは、画素値の異なる複数の画素でページを構成した画像データであるため、画像データの中身によってプロセッサの処理内容が変化しないことが多い。具体的には、例えば、プロセッサ５０１〜５０４のそれぞれに対して、ページ内の部分領域として分割した領域１処理、領域２処理、領域３処理、領域４処理のように、特性が同じ処理を割り当てた場合に、いずれも処理速度が均一になる傾向がある。そこで、各プロセッサ処理時に必要なバッファ容量を考慮して、比較的小さなバッファのＦＩＦＯ直結の通信モードのみを設定することで、不必要にシステムバス１１０のメモリ帯域を消費するＤＭＡ転送を行わないように制御することができる。
【００４６】
まず、ＤＭＡ付きＦＩＦＯ１（６０１）のＦＩＦＯ直結の通信モードについて説明する。ＦＩＦＯ１（６０１ａ）は、上流のＳｕｂ−ＣＰＵ１（５０１）から通信データを受信し、その受信した通信データを、ファーストインファーストアウトで、下流のＳｕｂ−ＣＰＵ２（５０２）に送信する。
【００４７】
次に、ＤＭＡ付きＦＩＦＯ２（６０２）のＦＩＦＯ直結の通信モードについて説明する。ＦＩＦＯ２（６０２ａ）は、上流のＳｕｂ−ＣＰＵ２（５０２）から通信データを受信し、その受信した通信データを、ファーストインファーストアウトで、下流のＳｕｂ−ＣＰＵ３（５０３）に送信する。
【００４８】
次に、ＤＭＡ付きＦＩＦＯ３（６０３）のＦＩＦＯ直結の通信モードについて説明する。ＦＩＦＯ３（６０３ａ）は、上流のＳｕｂ−ＣＰＵ３（５０３）から通信データを受信し、その受信した通信データを、ファーストインファーストアウトで、下流のＳｕｂ−ＣＰＵ４（５０４）に送信する。
【００４９】
以上述べたように、ＤＭＡ付きＦＩＦＯ（６０１〜６０３）のそれぞれは、通信モードに応じて、異なるバッファ領域にデータをバッファリングし、複数のＳｕｂ−ＣＰＵ（５０１〜５０４）の間のデータの通信を行う。具体的には、ＤＭＡ付きＦＩＦＯ（６０１〜６０３）のそれぞれは、ＤＭＡ転送の通信モードでは、ＤＭＡ（６０１ｂ〜６０３ｂ）によりＲＡＭ１０２のＤＭＡバッファ領域（９０１〜９０２）にデータをバッファリングする。また、ＤＭＡ付きＦＩＦＯ（６０１〜６０３）のそれぞれは、ＦＩＦＯ直結の通信モードでは、ＦＩＦＯ（６０１ａ〜６０３ａ）にデータをバッファリングする。
【００５０】
本実施形態によれば、複数のプロセッサ５０１〜５０４で実現する機能毎に割り当てられた部分処理に応じてプロセッサ５０１〜５０４間のデータ転送方式を切り替えて制御することで、システム性能を向上できる。特に、本実施形態によれば、複数のプロセッサ５０１〜５０４で複数の機能のプログラムを切り替えて実行する場合であっても、各機能のシステム性能を向上できる。
【００５１】
（第２の実施形態）
以下、本発明の第２の実施形態について、図７及び図１０を用いて説明する。図７は、第２の実施形態において、機能Ｃを実行制御する場合のＤＭＡ付きＦＩＦＯ（６０１〜６０３）の通信制御方法を説明する概念図である。以下、第２の実施形態が第１の実施形態と異なる点を説明する。図７に示すように、第２の実施形態では、図２を用いて説明した汎用画像処理部１０７は、更に、ローカルＲＡＭ（揮発性メモリ）７０２をバスアービター７０１に接続した構成になっている。この構成において、Ｓｕｂ−ＣＰＵ（５０１〜５０４）及びＤＭＡ付きＦＩＦＯ（６０１〜６０３）のそれぞれは、ローカルＲＡＭ７０２にアクセスすることもできるし、システムバス１１０を介してシステムメモリのＲＡＭ１０２にアクセスすることもできる。図１０の機能Ｃのモノクロ描画（ＲＩＰ）機能の例では、システムメモリのＲＡＭ１０２の代わりに、ローカルＲＡＭ７０２を用いて、ＤＭＡ付きＦＩＦＯ（６０１及び６０２）は、ＤＭＡ転送によってプロセッサ５０１〜５０３間の通信データを一時保持する。ここで、ローカルＲＡＭ７０２を用いたＤＭＡ転送方法は、図３を用いて説明したフローチャートと同様のため、説明を省略する。ステップＳ３０９では、ＣＰＵ１０６は、ＤＭＡ付きＦＩＦＯ（６０１〜６０３）に対して、ＤＭＡ転送先アドレス、及び、ＤＭＡ転送先バッファサイズを設定する際に、ローカルＲＡＭ７０２内部のバッファ領域（９１１、９１２）に対してこれを設定すれば良い。なお、ＤＭＡ転送のデータパスで用いられるローカルＲＡＭ７０２内部のバッファ領域は、ＦＩＦＯ（６０１ａ〜６０３ｃ）よりも大きくＲＡＭ１０２よりも小さいサイズのＳＲＡＭなどで構成され、その一部の領域を可変サイズで確保して用いることが多い。
【００５２】
ＤＭＡ付きＦＩＦＯ１（６０１）は、ＣＰＵ１０６により、ＤＭＡ転送の通信モードに設定される。ＦＩＦＯ１（６０１ａ）は、上流のＳｕｂ−ＣＰＵ１（５０１）から通信データを受信する。ＤＭＡ１（６０１ｂ）は、ＦＩＦＯ１（６０１ａ）が受信した通信データをローカルＲＡＭ７０２のＤＭＡバッファ領域１（９１１）に一時保持する。更に、ＤＭＡ１（６０１ｂ）は、ローカルＲＡＭ７０２のＤＭＡバッファ領域１（９１１）に一時保持した通信データを、再び、ＦＩＦＯ１（６０１ａ）に書き込む。ＦＩＦＯ１（６０１ａ）は、書き込まれた通信データを下流のＳｕｂ−ＣＰＵ２（５０２）に送信する。
【００５３】
ＤＭＡ付きＦＩＦＯ２（６０２）は、ＣＰＵ１０６により、ＤＭＡ転送の通信モードに設定される。ＦＩＦＯ２（６０２ａ）は、上流のＳｕｂ−ＣＰＵ２（５０２）から通信データを受信する。ＤＭＡ２（６０２ｂ）は、ＦＩＦＯ２（６０２ａ）が受信した通信データをローカルＲＡＭ７０２のＤＭＡバッファ領域２（９１２）に一時保持する。更に、ＤＭＡ２（６０２ｂ）は、ローカルＲＡＭ７０２のＤＭＡバッファ領域２（９１２）に一時保持した通信データを、再び、ＦＩＦＯ２（６０２ａ）に書き込む。ＦＩＦＯ２（６０２ａ）は、書き込まれた通信データを下流のＳｕｂ−ＣＰＵ３（５０３）に送信する。
【００５４】
ＤＭＡ付きＦＩＦＯ３（６０３）は、ＣＰＵ１０６により、ＦＩＦＯ直結の通信モードに設定される。ＦＩＦＯ３（６０３ａ）は、上流のＳｕｂ−ＣＰＵ３（５０３）から通信データを受信し、その受信した通信データを、ファーストインファーストアウトで、下流のＳｕｂ−ＣＰＵ４（５０４）に送信する。
【００５５】
以上述べたように、本発明の第２の実施形態によれば、ＲＡＭ１０２の代わりにローカルＲＡＭ７０２を用いたプロセッサ５０１〜５０４間のＤＭＡ転送の通信モードを提供する。これにより、システムバス１１０のメモリ帯域を圧迫することなく、システム性能を向上できる。
【００５６】
（第３の実施形態）
以下、本発明の第３の実施形態について、図８及び図９を用いて説明する。本発明の第３の実施形態では、ＣＰＵ１０６が汎用画像処理部１０７の機能実行を制御する際に、Ｓｕｂ−ＣＰＵ（５０１〜５０４）がＣＰＵ１０６の代わりにＤＭＡ付きＦＩＦＯ（６０１〜６０３）を制御するものである。以下、本実施形態が第１及び第２の実施形態と異なる点を説明する。図８及び図９のそれぞれは、図３及び図４のフローチャートに対応した変形例である。
【００５７】
図８は、本発明の第３の実施形態において、ＣＰＵ１０６が汎用画像処理部１０７の機能実行を制御する流れを説明するためのフローチャートである。なお、図８のフローチャートに記載のステップＳ８０１〜Ｓ８０５のプログラムは、画像処理装置１００の起動時にＲＡＭ１０２に展開され、ＣＰＵ１０６によって実行されるものである。まず、ＣＰＵ１０６は、ステップＳ８０１及びＳ８０２の処理を行う。ステップＳ８０１及びＳ８０２は、図３のステップＳ３０１及びＳ３０２と同じなので、説明を省略する。次に、ＣＰＵ１０６は、ステップＳ８０３〜Ｓ８０５の処理を行う。ステップＳ８０３〜Ｓ８０５は、図３のステップＳ３１２〜Ｓ３１４と同じなので、説明を省略する。すなわち、図８のフローチャートは、図３のフローチャートに含まれていたＳ３０３〜Ｓ３１１を除いたフローチャートになっている。
【００５８】
図９は、本発明の第３の実施形態において、汎用画像処理部１０７がＣＰＵ１０６の指示に従い機能実行する流れを説明するためのフローチャートである。なお、図９のフローチャートに記載のステップＳ９０１〜Ｓ９１２のプログラムは、画像処理装置１００の起動時にＲＡＭ１０２に展開され、Ｓｕｂ−ＣＰＵ（５０１〜５０４）によって実行されるものである。ステップＳ９０１〜Ｓ９０９では、Ｓｕｂ−ＣＰＵ（５０１〜５０４）は、図３を用いて説明したＣＰＵ１０６のステップＳ３０３〜Ｓ３１１と同じステップを実行する。すなわち、これらのステップＳ９０１〜Ｓ９０９によって、Ｓｕｂ−ＣＰＵ（５０１〜５０４）は、ＣＰＵ１０６の代わりに、ＤＭＡ付きＦＩＦＯ（６０１〜６０３）の通信モードを機能ＩＤ毎に設定した後に、リセット解除する。次に、ステップＳ９１０では、Ｓｕｂ−ＣＰＵ（５０１〜５０４）のそれぞれは、図４のステップＳ４０２と同様に、機能毎に割り当てられた部分処理のプログラムを実行する。次に、ステップＳ９１１では、Ｓｕｂ−ＣＰＵ（５０１〜５０４）のそれぞれは、図３のステップＳ３１５と同様に、ＤＭＡ付きＦＩＦＯ（６０１〜６０３）に対して、リセット実行し、汎用画像処理部１０７による機能実行時に使用したバッファ領域を初期化する。最後に、ステップＳ９１２では、Ｓｕｂ−ＣＰＵ（５０１〜５０４）のそれぞれは、図４のステップＳ４０３と同様に、機能毎に割り当てられた部分処理のプログラムが終了後、ＣＰＵ１０６に対して割り込み通知する。
【００５９】
以上述べたように、本発明の第３の実施形態によれば、ＣＰＵ１０６の代わりにＳｕｂ−ＣＰＵ（５０１〜５０４）がプロセッサ５０１〜５０４間の通信モードを制御する手段を提供する。これにより、ＣＰＵ１０６の制御に関わる処理負荷を軽減しながら、システム性能を向上できる。
【００６０】
第１〜第３の実施形態によれば、複数のＳｕｂ−ＣＰＵ（５０１〜５０４）で実現する機能毎に割り当てられた部分処理に応じて、Ｓｕｂ−ＣＰＵ（５０１〜５０４）間のデータ転送方式を切り替えて制御することで、システム性能を向上できる。特に、複数のＳｕｂ−ＣＰＵ（５０１〜５０４）で複数の機能のプログラムを切り替えて実行する場合であっても、各機能のシステム性能を向上できる。
【００６１】
（その他の実施形態）
本発明は、上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサがプログラムを読み出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【００６２】
なお、上記実施形態は、何れも本発明を実施するにあたっての具体化の例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその技術思想、又はその主要な特徴から逸脱することなく、様々な形で実施することができる。
【符号の説明】
【００６３】
１０  画像処理装置、１０２  ＲＡＭ、１０６  制御部（メインＣＰＵ）、１０７  汎用画像処理部、５０１〜５０４  プロセッサ（サブＣＰＵ）、６０１〜６０３  ＤＭＡ付きＦＩＦＯ、７０２  ローカルＲＡＭ
【図１】
2018106222.tif 000003
【図２】
2018106222.tif 000004
【図３】
2018106222.tif 000005
【図４】
2018106222.tif 000006
【図５】
2018106222.tif 000007
【図６】
2018106222.tif 000008
【図７】
2018106222.tif 000009
【図８】
2018106222.tif 000010
【図９】
2018106222.tif 000011
【図１０】
2018106222.tif 000012