画像処理装置及びその制御方法
【課題】 処理性能を向上させるためにプロセッサの数を増加すると、共有のメモリに対するアクセスが集中してスループットが低下する。
【解決手段】 メインメモリ202と複数のプロセッサ230〜233とを有し、複数のDSPにより並行して画像処理を行う画像処理装置とその制御方法であって、各DSPが独立してアクセス可能な固有メモリ234〜237と、複数のDSPが共通してアクセス可能な共有メモリ240と、メインメモリと共有メモリとの間で画像データを転送するDMAC239とを有し、各共有メモリに転送された画像データのうち、各DSPの処理対象の画像データを、そのDSPに対応する固有メモリに転送して画像処理を行って共有メモリに書き戻し、各DSPの処理対象の画像データの周辺画像データを参照する画像処理の場合は、共有メモリに格納されている画像データを参照する。
【解決手段】 メインメモリ202と複数のプロセッサ230〜233とを有し、複数のDSPにより並行して画像処理を行う画像処理装置とその制御方法であって、各DSPが独立してアクセス可能な固有メモリ234〜237と、複数のDSPが共通してアクセス可能な共有メモリ240と、メインメモリと共有メモリとの間で画像データを転送するDMAC239とを有し、各共有メモリに転送された画像データのうち、各DSPの処理対象の画像データを、そのDSPに対応する固有メモリに転送して画像処理を行って共有メモリに書き戻し、各DSPの処理対象の画像データの周辺画像データを参照する画像処理の場合は、共有メモリに格納されている画像データを参照する。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、複数のプロセッサの並列処理によって画像処理を実現する画像処理装置及びその制御方法に関するものである。
【背景技術】
【0002】
従来の複写機やプリンタ、ファクシミリの制御部のハードウェアでは、印刷用の画像処理、ページ記述言語(以下、PDL)から印刷画像へのレンダリング、スキャナ画像処理などを実施する専用画像処理回路を設けている。また最近のマルチファンクションプリンタ(MFP)の制御部でも、このような専用画像処理回路を個別に有し、複写動作中にページ記述言語から印刷画像へのレンダリングを実施するという並列処理を可能にしている。また、このような並列処理を制限し、画像スプールのメモリ量を削減することにより制御部のコストを削減するMFPも存在している。このように並列処理を制限してコスト低減を実現した場合、同時に動作しない専用画像処理回路を持つことは不経済である。
【0003】
そこでデジタルシグナルプロセッサ(以下、DSP)やコンフィギャラブルプロセッサ、汎用CPU等のソフトウェアによって処理が切り替えられるプロセッサを専用画像処理回路の代わりに設けることが提案されている。これによれば、複写やプリント、ファクシミリといった機器の動作に応じて各プロセッサによる処理を切り替えている。
【0004】
従来の専用画像処理回路では、個別の画像処理のパイプライン処理を実現している。それによれば、処理性能をより向上させるために、複数のプロセッサで専用画像処理回路の置き換え処理を実施する場合に、専用画像処理回路と同等に個別の画像処理を個別のプロセッサに割り当てることが知られている(特許文献1)。
【特許文献1】特開2006−133839
【特許文献2】特開2006−139803
【発明の開示】
【発明が解決しようとする課題】
【0005】
従来技術の第一の課題は、複数のプロセッサのそれぞれに互いに異なる画像処理を割り当ててパイプライン処理を実現した場合には、各画像処理の計算量が異なるために各プロセッサの処理時間が異なってしまう。これにより、パイプライン処理のスループットが最も処理時間の長いプロセッサの処理時間によって制限されると共に、パイプライン処理の各ステージにおいて待ち時間が生じてしまうため効率が悪いという課題があった。
【0006】
この第一の課題に付随する課題として、効率を改善するために特許文献1に記載されているようなパイプライン処理の各ステージ間において負荷分散を行うと、処理のオーバーヘッドが大きく処理効率の向上が難しい。更に第一の課題を改善するために、コンフィギャラブルプロセッサを用いてパイプラインステージの各画像処理の処理時間を揃える場合、他の専用画像処理回路の処理を代行して異なる画像処理を実施した場合には処理時間が揃えられなくなる。このため、複数の処理に跨った処理効率が向上が期待できない。
【0007】
また第二の課題は、処理性能を向上させるためにプロセッサの数を増加したり、或はコストを削減するためにプロセッサの数を削減すると、パイプライン処理における各ステージへの画像処理の割り当てを再度行う必要が生じる。しかし、このような再割り当てによって、最も処理時間の長い画像処理を実施するステージが変わってしまい、プロセッサ数の増加に相当する性能の向上が得られないといった問題や、プロセッサ数を削減した以上に性能が低下するという問題がある。
【0008】
本発明の目的は、上述した従来の課題を解決することにある。
【0009】
また本願発明の特徴は、複数のプロセッサによる並列処理のスループットの向上を図った画像処理装置及びその制御方法を提供することにある。
【課題を解決するための手段】
【0010】
上記目的を達成するために本発明の一態様に係る画像処理装置は以下のような構成を備える。即ち、
メインメモリと複数のプロセッサとを有し、前記複数のプロセッサにより並行して画像処理を行う画像処理装置であって、
前記複数のプロセッサのそれぞれに設けられ、各プロセッサが独立してアクセス可能な固有メモリと、
前記複数のプロセッサが共通してアクセス可能な共有メモリと、
前記メインメモリと前記共有メモリとの間で画像データを転送する転送手段とを有し、
前記各プロセッサは、
前記転送手段により前記共有メモリに転送された画像データのうち、当該プロセッサの処理対象の画像データを当該プロセッサに対応する前記固有メモリに転送して画像処理を行って前記共有メモリに書き戻し、
当該プロセッサの処理対象の画像データの周辺画像データを参照する画像処理の場合は、前記共有メモリに格納されている画像データを参照することを特徴とする。
【0011】
上記目的を達成するために本発明の一態様に係る画像処理装置の制御方法は以下のような工程を備える。即ち、
メインメモリと複数のプロセッサとを有し、前記複数のプロセッサにより並行して画像処理を行う画像処理装置の制御方法であって、
前記メインメモリから前記複数のプロセッサが共通してアクセス可能な共有メモリへ画像データを転送する転送工程と、
前記転送工程で前記共有メモリに転送された前記画像データのうち、各プロセッサの処理対象の画像データを当該各プロセッサに対応する、各プロセッサが独立してアクセス可能な固有メモリに転送する工程と、
各プロセッサが、前記固有メモリに転送された画像データに対して画像処理を行う処理工程と、
前記画像処理において、当該各プロセッサの処理対象の画像データの周辺画像データを参照する画像処理の場合は、前記共有メモリに格納されている画像データを参照する工程と、
処理済みの画像データを前記各プロセッサに対応する前記固有メモリから前記共有メモリに転送する工程と、
前記共有メモリの画像データが処理済みになると、当該画像データを前記メインメモリに転送する工程と、
を有することを特徴とする。
【発明の効果】
【0012】
本発明によれば、各プロセッサが各プロセッサに固有のメモリで画像処理を行うとともに、周辺画素を参照する処理の場合に共有メモリの画像データを参照するため、プロセッサの数が増えても画像処理のスループットが低下することがない。
【0013】
また本発明によれば、少ないメモリ容量の固有メモリと共有メモリで画像処理の並列処理を実現できるため、メモリコストを削減しながら効率の良い画像処理が可能となる。
【発明を実施するための最良の形態】
【0014】
以下、添付図面を参照して本発明の好適な実施形態を詳しく説明する。尚、以下の実施形態は特許請求の範囲に係る本発明を限定するものでなく、また本実施形態で説明されている特徴の組み合わせの全てが本発明の解決手段に必須のものとは限らない。
【0015】
以下、本実施形態を説明する前に、本発明の実施形態の概要を簡単に説明する。
【0016】
本実施形態では、複数のDSP(プロセッサ)を用いて画像処理を行う。各DSPに固有の固有ローカルメモリ(固有メモリ)を有し、メインメモリの画像データの処理対象の矩形領域を固有ローカルメモリに転送し、各DSPにより画像処理を実行する。その後、その矩形画像データを出力画像の所定の領域として固有ローカルメモリからメインメモリに転送する。各DSPは、各対応する固有ローカルメモリに転送された矩形領域の画像データに対して周知のパイプライン処理に割り当てられた画像処理を実施する。
【0017】
この画像処理には、注目画素の周辺の画素を参照して計算する周辺画素(周辺画像データ)参照処理(以下、エリア処理)と、注目画素のデータのみを参照して計算する周辺画素非参照処理(以下、非エリア処理)とが存在する。ここではエリア処理も実施できるようにするために、入力した画像データの内、固有ローカルメモリに転送される矩形画像の画像データは、隣接した矩形画像の一部を重複して持つようにしている。
【0018】
図1(A)は、重複した矩形画像と、ページ全体との関係を示す図である。
【0019】
図において、100はページ全体を示し、101は、処理対象となる矩形画像を示している。102は重複した矩形画像を示し、103は、その重複部分を示している。
【0020】
図1(B)は、重複した矩形画像102と、処理対象の矩形画像101との関係を説明する図である。
【0021】
固有ローカルメモリに必要なメモリ容量は、以下の式(1)で求められる。ここで矩形画像101の幅をA[pixel]、矩形画像101の高さをB[pixel]、エリア処理に必要な画像の重複幅をH[pixel]、エリア処理に必要な画像の重複高さV[pixel]、1画素データのバイト数をP[byte]とする。
【0022】
(A[pixel]+2×H[pixel])×(B[pixel]+2×V[pixel])×P[byte]×2[bank] …式(1)
性能を向上させるためにプロセッサ(DSP)の数を増加させると、固有ローカルメモリもプロセッサの数に比例して増加するため、メモリのコストが増大する。特に隣接した矩形画像の一部を互いの固有ローカルメモリに重複して持つことになるため、上記構成ではコストが高くなるという新たな課題が生じる。また、隣接した矩形画像の一部を互いの固有ローカルメモリに重複して持たせると、非エリア処理の場合でも、重複した画像部分を二重に計算しなければならないため、計算負荷が重くなるという新たな課題もある。更に、矩形画像の画像データを固有ローカルメモリ間で転送する際に、矩形画像内の主走査ラインが切り替わるごとにメモリアドレスが大幅に変わる。このため、ページミスが発生したり、メモリアクセス効率が大幅に低下するといった新たな問題も発生する。
【0023】
これら課題を解決するために、上記構成に加え、複数のプロセッサが共通にアクセス可能な共有ローカルメモリ(共有メモリ)と、複数のプロセッサ間の同期を取る手段とを設ける。そしてメインメモリから共有ローカルメモリに、複数のプロセッサで処理する画像データの領域を一括して転送する。この転送では、共有ローカルメモリを共有するプロセッサ数(N)に相当する矩形画像と、その周辺画素とを重複せずに転送する。これによりメインメモリでのページミスがN分の1に削減され、メモリアクセス効率の改善がなされる。また共有ローカルメモリには、隣接する矩形画像で互いに重複する部分を重複して記憶しない。
【0024】
こうして共有ローカルメモリに格納された画像データの処理対照部分は、各プロセッサによって画像処理が施され、非エリア処理であればプロセッサの固有ローカルメモリを主に用いて画像処理がなされる。
【0025】
一方、周辺画素を参照するエリア処理の場合には、共有ローカルメモリにエリア処理前の画像データが格納される。そして複数のプロセッサが、各プロセッサが処理対象としている矩形画像の周辺画素を、共有ローカルメモリに記憶された互いの領域を参照することにより参照する。また非エリア処理を実施する場合は、周辺画素も含めて処理対象画素を変更することで固有ローカルメモリの容量も削減される。周辺画素も含めた処理対象画素を変更することにより、エリア処理と非エリア処理を切り替える際に、複数のプロセッサ間で待ち合わせを行う必要が生じるが、これは同期処理手段によりなされる。この場合の共有ローカルメモリの容量は、プロセッサの数をNとすると以下で計算される。
【0026】
(A[pixel]×N+2×H[pixel])×(B[pixel]+2×V[pixel])×P[byte]×1[bank]
また、各プロセッサの固有ローカルメモリの容量は、以下の計算式で求めることができる。
【0027】
((A[pixel]×N+2×H[pixel])÷N)×(B[pixel]+2×V[pixel])×P[byte]×1[bank]
また、各プロセッサの固有ローカルメモリの容量は、((A[pixel]×B[pixel])×P[byte]×1[bank])を下回らないように構成される。
【0028】
以下詳しく説明する。
【0029】
[実施形態1]
図2は、本実施形態1に係るMFP201の構成を示したブロック図である。
【0030】
先ずコピー動作の場合の動作を説明する。
【0031】
ユーザが操作部(UI)205を使用してコピー動作を指示すると、その指示が、UIコントローラ220、割り込みコントローラ213を経由してCPU210,211に伝えられる。CPU210又はCPU211は、先ず最初にスキャナインターフェース(I/F)226を起動し、続いてスキャナ207を起動してコピー対象の原稿のスキャン動作を開始する。こうしてスキャナ207によって読み取られた原稿の画像データは、スキャナインターフェース226を経由してメインメモリ202に格納される。このとき、所定のラインまで画像データを読み込んだことを知らせる割り込みが、スキャナインターフェース226から割り込みコントローラ213を経由してCPU210,211に通知される。CPU210,211は、スキャナ207で読み取った画像データの処理(スキャン画像処理)を行うために、予めスキャン画像処理を実施するためのファームウェアをメインメモリ202にロードして起動しておく。これにより起動されるファームウェアは、DSPサブシステム208に該当している。そしてDSPサブシステム208に、スキャン画像処理の最初のバンド処理を指示する。
【0032】
DSPサブシステム208は、CPU210或は211からの指示に従ってスキャン画像処理を開始し、1バンドの画像処理が終了したならば、CPU210,211に対して割り込みにより終了を通知する。これによりCPU210或は211は、DSPサブシステム208からの1バンドの画像処理の終了に応答して、JPEGエンコーダ221を起動して画像データの圧縮を開始する。これらの処理を繰り返し、スキャン画像がJPEG圧縮されてメインメモリ202に格納されると、次にCPU210或は211はJPEGデコーダ222を起動して画像データの伸張(復号)を開始する。JPEGデコーダ222は、メインメモリ202に格納されたJPEG画像データを伸張し、その非圧縮画像データをメインメモリ202に書き戻す。JPEGデコーダ222は、予め指定された画像データのラインまでの伸張が終了すると、割込みによりCPU210,211に通知する。この割り込みを受けたCPU210或は211は、予めプリンタ206用の印刷データを作成するプリント画像処理のためのファームウェアを用いて起動しているDSPサブシステム209にプリント画像処理を指示する。これによりDSPサブシステム209は、メインメモリ202の画像データに対してプリント画像処理を開始し、画象処理後のハーフトーン画像をメインメモリ202に格納する。こうしてDSPサブシステム209は、処理対象のバンド画像の処理を終えるとCPU210,211にバンド処理終了の割込みを発行する。
【0033】
CPU210或は211は次に、ハーフトーン画像を圧縮するためにJBIGエンコーダ223を起動する。ここでJBIG圧縮はCMYK各色ごとに実施される。これらを繰り返しJPEG圧縮された画像データに印刷画像処理を施して各色毎のJBIG圧縮データを得てメインメモリ202に格納する。次にCPU210或は211は、JBIGデコーダ224を起動してJBIG圧縮画像データの伸張を開始する。JBIGデコーダ224は、所定のラインまで伸張を終えるとCPU210,211に割込みで通知する。これによりCPU210或は211は、プリンタインターフェース225及びプリンタ206を起動し、その伸張されたハーフトーン画像データをプリンタ206に出力して印刷する。以上がコピー動作の説明である。
【0034】
次に、ホストコンピュータからPDLデータを受信して印刷するネットワークプリンタとしての動作を説明する。
【0035】
ホストコンピュータよりネットワークインターフェース(I/F)219もしくはUSBインターフェース(I/F)218を経由してPDLデータが送られてくると、CPU210或は211はPDLデータを一旦メインメモリ202に格納する。その後、そのPDLデータの解析を開始し、ディスプレイリストをメインメモリ202に作成する。CPU210或は211は、そのディスプレイリストから印刷用画像データを生成するため、予めレンダリング処理のファームウェアを用いて起動してあるDSPサブシステム208を起動してレンダリング処理を開始する。このときDSPサブシステム208は、メインメモリ202に格納されたディスプレイリストを解釈して印刷用画像データを生成する。こうして印刷用画像データの所定のラインまでの生成が終わった後、DSPサブシステム208は、割込みをCPU210,211に発行する。これによりCPU210,211は、そのレンダリングされた印刷用画像データの最初のバンドを圧縮するためJPEGエンコーダ221を起動する。JPEGエンコーダ221は、所定のバンドまで圧縮すると、割込みによりCPU210,211に通知する。これらの処理を繰り返すことにより、ページ全面の印刷用画像データが生成され、JPEGデータとしてメインメモリ202に格納される。
【0036】
次にCPU210或は211は、JPEGデコーダ222を起動して印刷用画像データの伸張を開始する。JPEGデコーダ222は、メインメモリ202に格納されたJPEG圧縮画像データを伸張(復号)し、非圧縮画像データとしてメインメモリ202に書き戻す。こうしてJPEGデコーダ222は、予め指定された画像データのラインまでの伸張処理が達すると、割込みによりCPU210,211に通知する。この割り込みを受けたCPU210或は211は、予めプリント画像処理用にファームウェアを用いて起動してあるDSPサブシステム209にプリント画像処理を指示する。
【0037】
DSPサブシステム209は、メインメモリ202の伸張済みの画像データに対してプリント画像処理を開始し、画像処理後のハーフトーン画像を作成してメインメモリ202に格納する。こうしてDSPサブシステム209は、処理対象のバンド画像の処理を終えると、CPU210,211にバンド処理終了の割込みを発行する。これによりCPU210或は211は、そのハーフトーン画像を圧縮するためにJBIGエンコーダ223を起動する。ここでJBIG圧縮はCMYK各色ごとに実施される。これらを繰り返しJPEG圧縮画像データに印刷画像処理を施して各色毎のJBIG圧縮データが生成され、メインメモリ202に格納される。次にCPU210或は211は、JBIGデコーダ224を起動してJBIG圧縮画像データの伸張を開始する。JBIGデコーダ224は、所定のラインまで伸張を終えるとCPU210,211に割込みを発行する。これによりCPU210或は211は、プリンタインターフェース225及びプリンタ206を起動し、その伸張されたハーフトーン画像データを印刷する。
【0038】
次にファクシミリ送信処理について説明する。
【0039】
操作部205を操作してユーザがファクシミリ送信を指示すると、UIコントローラ220、割り込みコントローラ213を経由してCPU210,211に伝えられる。CPU210或はCPU211は、まずスキャナインターフェース226を起動し、続いてスキャナ207を起動して送信原稿のスキャン動作を開始する。こうしてスキャナ207によって読み取られた原稿の画像データは、スキャナインターフェース226を経由してメインメモリ202に格納される。このときスキャナインターフェース226から所定のラインまで届いたことを知らせる割り込みが、割り込みコントローラ213を経由してCPU210,211に通知される。これによりCPU210或は211は、スキャン画像処理を行うために、予めスキャン画像処理を実施するためのファームウェアをメインメモリ202にロードし起動しておいたDSPサブシステム208に、スキャン画像処理の最初のバンド処理を指示する。DSPサブシステム208は、CPU210或は211からの指示に従ってスキャン画像処理を開始し、バンドの画像処理が終了するとCPU210,211に終了の割込みを発行する。こうしてCPU210或は211は、DSPサブシステム208からバンドのスキャン画像処理の終了割込みを受け取る。
【0040】
次にCPU210或は211は、ファクシミリ送信を行うために、予め解像度変換及び二値化及びMMR圧縮のファクシミリデータ生成処理を実施するためのファームウェアをメインメモリ202にロードして起動している。このファームウェアはDSPサブシステム209であり、これに対してファクシミリデータ生成処理の最初のバンド処理を指示する。これによりDSPサブシステム209は、CPU210或は211からの指示に従って、ファクシミリデータの生成処理を開始し、1ページのファクシミリデータが生成されるとCPU210,211に終了の割込みを発行する。こうしてCPU210或は211は、DSPサブシステム209からファクシミリデータの生成処理の終了割込みを受け取る。そしてメインメモリ202に格納されたファクシミリデータをROMコントローラ217に接続されたファクシミリ(Fax)モデム204を介して通信網に送信する。
【0041】
図3は、本実施形態1に係るMFP201のコピー動作時におけるCPU210或は211で実行されるシーケンスを説明するフローチャートである。この処理を実行するプログラムは、その実行時にはメインメモリ202に格納されている。
【0042】
ユーザからコピー動作を指示されると、まず初めにステップS301で、DSPサブシステム208にスキャナ画像処理のファームウェアをダウンロードし、次にステップS302で、DSPサブシステム208を起動する。次にステップS303に進み、スキャナインターフェース226を起動し、続いてステップS305で、スキャナ207を起動する。これによりスキャナ207による原稿画像の読み取りが開始される。
【0043】
次にステップS305に進んで、割り込みコントローラ213を介して割込みが入力されるのを待つ。ここで割り込みが発生すると、その割り込みの種別を判断する。もしスキャナインターフェース226からのバンド割込みであった場合はステップS306に進み、DSPサブシステム208にスキャナ画像処理を依頼して、ステップS305の割り込み待ちに戻る。一方、ステップS305で受付けた割込みがDSPサブシステム208からのバンド処理の終了割込みであった場合はステップS307に進み、そのバンドをJPEG圧縮するためにJPEGエンコーダ221を起動する。そしてステップS305の割り込み待ちに戻る。
【0044】
またステップS305で受付けた割込みがJPEGエンコーダ221からのバンド割込みであれバステップS308に進み、1ページの終了か否かを判断する。ここでページ終了でなければステップS305に進んで次の割り込みを待つ。一方、ページ終了であればステップS309に進み、プリント画像処理を起動する。続いてステップS310に進み、連続ページ処理が終了したかを判断し、連続ページ処理が継続する場合は次のページ処理のためにステップS304に進んで、次の原稿を読み取るためにスキャナ207を起動する。一方、ステップS310で、連続ページ処理が終了であれば、この処理を終了する。
【0045】
図4は、本実施形態1に係るMFPのプリント画像処理におけるCPU210或は211で実行されるシーケンスを説明するフローチャートである。この処理を実行するプログラムは、その実行時にはメインメモリ202に格納されている。尚、この処理は、図3のステップS309のプリント画像処理に該当している。
【0046】
初めにステップS401で、DSPサブシステム209にプリント画像処理のファームウェアをダウンロードし、ステップS402で、DSPサブシステム209を起動する。次にステップS403に進み、JPEGデコーダ222を起動する。そしてステップS404に進み、割込みを待ちとなる。ここで割り込みが発生すると、その割り込みの種別を判定し、JPEGデコーダ222からのバンド割込みであった場合はステップS405に進み、DSPサブシステム209にプリント画像処理を依頼してステップS404の割り込み待ちに戻る。
【0047】
一方、ステップS404で、DSPサブシステム209からのバンド処理の終了割込みであると判定するとステップS406に進み、そのバンドをJBIG圧縮するためにJBIGエンコーダ223を起動してステップS404の割り込み待ちに戻る。
【0048】
またステップS404で、JBIGエンコーダ223からのバンド割込みであると判定するとステップS407に進み、ページ終了かを判断する。ここでページ終了でなければステップS404に進んで次の割り込みを待ちとなる。一方、ページ終了であればステップS408に進み、印刷処理を起動する。続いてステップS409に進み、連続ページ処理が終了かを判断し、連続ページ処理が継続するときは次のページ処理のためにステップS403に進んでJPEGデコーダ222を起動する。一方、連続ページ処理が終了であれば、この処理を終了する。
【0049】
図5は、本実施形態1に係るMFPの印刷処理におけるCPU210或は211の処理シーケンスを示したフローチャートである。この処理シーケンスは図4のステップS408の印刷処理処理に該当している。この処理を実行するプログラムは、その実行時にはメインメモリ202に格納されている。
【0050】
まずステップS501で、JBIGデコーダ224を起動する。そしてステップS502で、JBIGデコーダ224からのバンド終了割込みを待つ。ここでJBIGデコーダ224からのバンド処理の終了割込みがあるとステップS503に進み、プリンタインターフェース225を起動して、ステップS504でプリンタ206を起動する。次にステップS505に進み、続くバンドの画像データを伸張するためにJBIGデコーダ224を起動し、ステップS506で、JBIGデコーダ224からのバンド処理の終了割込みを待つ。ここでJBIGデコーダ224からバンド処理の終了割込みがあるとステップS507に進み、プリンタインターフェース225に次のバンドデータの転送を起動する。次にステップS508で、1ページの終了か否かを判断し、1ページの終了でなければステップS505に進み、再度、JBIGデコーダ224を起動して次のバンドの画像データの伸張を開始する。
【0051】
一方、ステップS508で、1ページの終了であればステップS509に進み、プリンタインターフェース225からのページ終了を待つ。そしてプリンタインターフェース225からのページ終了を受付けるとステップS510に進み、連続ページ処理が終了か否かを判断する。ここで連続ページ処理が終了でなければステップS501に進み、次のページのJBIGの伸張処理に進む。一方、ステップS510で、連続ページ処理の終了であれば、この処理を終了する。
【0052】
図6は、本実施形態1に係るMFP201のDSPサブシステム208によるスキャン画像処理を説明するフローチャートで、特にDSP230,231,232,233による処理シーケンスを説明している。
【0053】
先ず初めにステップS601で、DSP230,231,232,233のどれであるかを特定するプロセッサID(以下、PRID)がDSP230に該当する「1」であるかを判断する。ここでDSP230でなかった場合はステップS606に進んで、同期処理に入る。
【0054】
一方、ステップS601で、DSP230であると判定するとステップS602に進み、バンド情報をレジスタ242及びメインメモリ202から取得する。次にステップS603に進み、処理すべき画像データが格納されているメインメモリ202のアドレスを計算する。そしてステップS604で、その求めたメインメモリ202のアドレスから共有ローカルメモリ240へ画像データを転送するためにDMAC(DMAコントローラ)239を起動する。そしてステップS605で、DMA転送の終了を待ち、DMA転送が終了するとステップS606に進み、同期回路241を用いた同期処理を行う。この同期処理については後で詳しく説明する。こうしてステップS601〜S606を実施することで、DSP230,231,232,233を同じシーケンスで、かつ排他的に動作させて画像データをメインメモリ202から共有ローカルメモリ240へDMA転送することができる。
【0055】
こうしてステップS606で、同期が取れると、DSP230〜233が処理すべき画像データが共有ローカルメモリ240へ格納されていることになる。次にステップS607に進み、画像データの処理単位を非エリア処理サイズへ切り替え、次にステップS608で、画像データの色変換を行う。ここで色変換は非エリア処理であるため、処理後の画像データは、各対応する固有ローカルメモリ234,235,236,237に書き出される。続いてステップS609に進んで無彩色判定を行い、次にステップS610で同期処理を行う。ここで無彩色判定は非エリア処理であるが、ステップS612以降の画像処理がエリア処理となるため、処理後の画像データの出力先は共有ローカルメモリ240となる。次にステップS611に進み、エリア処理サイズへの切替を行う。そしてステップS612で、空間フィルタ処理を実施する。ここでエリア処理は、DSP230,231,232,233が互いに重複した画素を参照するため、競合を避けるために出力画像データは固有ローカルメモリ234,235,236,237へ出力される。
【0056】
次にステップS613に進んで同期処理を実施する。次にステップS614に進み、エリア処理のために固有ローカルメモリ234,235,236,237から共有ローカルメモリ240へ画像データを移動する。次にステップS615で同期処理を行い、ステップS616で、線形補間処理が行われる。次にステップS617で同期処理が行われ、同期が取れるとステップS608に進み、固有ローカルメモリ234〜237から共有ローカルメモリ240へ画像データを移動する。そしてステップS619で同期処理を行って同期が取れるとステップS620に進み、非エリア処理サイズへ切り替え、ステップS621で、LUT変換処理を行う。次にステップS622で同期処理を行った後、ステップS623で、PRIDを判断する。ここでPRIDが、DSP230を示していなければ(「1」でなければ)ステップS627に進み、バンド処理が終了したかを判断する。
【0057】
一方ステップS623で、PRIDがDSP230を示していればステップS624に進み、処理済みの画像データの出力アドレス(メインメモリ202のアドレス)を計算する。次にステップS625に進み、共有ローカルメモリ240に格納した処理済みの画像データをメインメモリ202に転送するためにDMAC239を起動する。そしてステップS626でDMA転送の終了を待ち、DMA転送が終了するとステップS627に進んで、1バンド分の画象データの処理が終了したかどうかを判断する。ここで1バンド分の画像データの処理が終了していなければステップS601に進み、次の矩形処理のためにPRIDの判断を行う。一方、ステップS627で、バンド処理が終了していればCPU210,211へ割込みを発行して処理を終了する。
【0058】
このようにして、DSP230,231,232,233が同じデータ量の画像データに対して並行して共通する処理を行うことができる。特に、各DSPにおける処理完了の時差を少なくし、オーバーヘッドの小さい同期回路241を用いることで、同期処理による待ち合わせ時間を小さくでき、より効率的な処理が可能となる。
【0059】
図7は、本実施形態に係るMFP201のDSPサブシステム209によるプリント画像処理におけるDSP230,231,232,233の処理シーケンスを示したフローチャートである。
【0060】
先ず初めにステップS701で、DSP230,231,232,233のどれであるかを特定するプロセッサID(PRID)がDSP230に該当する「1」であるかを判定する。DSP230でなかった場合はステップS706の同期処理に進む。一方ステップS701で、DSP230であると判定した場合はステップS702に進み、バンド情報をレジスタ242及びメインメモリ202から取得する。次にステップS703で、処理すべき画像データのアドレスを計算する。そしてステップS704で、その求めたメインメモリ202のアドレスから共有ローカルメモリ240へ画像データを転送するためにDMAC239を起動する。そしてステップS705で、DMA転送が終了したかどうかを判断し、DMA転送が終了したと判断するとステップS706に進み、同期回路241を用いた同期処理を行う。このようにステップS701〜S706を実施することで、DSP230,231,232,233を同じシーケンスでかつ排他的にDMA転送を実現できる。こうしてステップS706で同期が取れると、DSP230〜233が処理すべき画像データが共有ローカルメモリ240へ格納されていることになる。
【0061】
次にステップS707に進み、画像データの処理単位をエリア処理サイズへ切り替える。そしてステップS708で線形補間処理を行う。続いてステップS709に進み、非エリア処理サイズへ切り替え、ステップS710でlog変換処理を実行する。次にステップS711に進んで出力色の変換処理、次にステップS712で、載り量制御処理を行う。次にステップS713に進んで同期処理を行って同期が取れるとステップS714でエリア処理サイズへ切り替え、ステップS715で、スクリーン処理を実施する。次にステップS716に進み、同期処理を実施する。その後ステップS717に進み、固有ローカルメモリ234〜237から共有ローカルメモリ240へ処理済みの画像データを転送する。次にステップS718で同期処理を行う。
【0062】
次にステップS719に進んでステップS701と同様にPRIDを判別する。ここでPRIDがDSP230を示していなければ(「1」でなければ)ステップS723に進んでバンドの終了かどうかを判断する。一方、ステップS719で、PRIDがDSP230を示していればステップS720に進み、処理済みの画像データの格納アドレスを計算する。次にステップS721に進み、共有ローカルメモリ240に格納した処理済みの画像データをメインメモリ202に転送するためにDMAC239を起動する。そしてステップS722で、DMA転送の終了を待ち、DMA転送が終了するとステップS723に進んで、バンド処理が終了したかどうかを判断する。ここでバンド処理が終了していないと判断すると、次の矩形画像の画像データの処理のためにステップS701のPRIDの判断に戻るが、バンド処理が終了していれば、CPU210,211へ割込みを発行して、この処理を終了する。
【0063】
図8は、本実施形態1に係るDSP230,231,232,233における同期処理のシーケンスを示したフローチャートである。この同期処理は、図6のステップS606,S610,S615,S617,S619,S622、及び図7のステップS706,S713、S716,S718等の処理に該当している。
【0064】
先ず初めにステップS801で、同期リクエスト信号reqをセットする。次にステップS802で、同期回路241から戻される同期リクエスト信号の論理積req_andが「1」になるまで待つ。ここで同期リクエスト信号の論理積が「1」となるとステップS803に進み、同期アック信号ackをセットする。そしてステップS804で、同期回路241から戻される同期アック信号の論理積ack_andが「1」となるまで待つ。ステップS804で、同期アック信号の論理積が「1」となるとステップS805に進み、同期リクエスト信号reqをクリアする。そしてステップS806に進み、同期アック信号ackをクリアして、この同期処理を終了する。
【0065】
図9は、本実施形態1に係るDSP230〜234と同期回路241との接続及び同期回路241の構成を説明する回路図である。
【0066】
DSP230,231,232,233,234からそれぞれ同期リクエスト信号reqと同期アック信号ackが同期回路241へ入力される。AND回路901は、各DSPから出力される同期リクエスト信号reqの論理積を取っている。AND回路902は、各DSPから入力される同期アック信号ackの論理積を取っている。そして、これらAND回路901と902の出力が、それぞれ独立にDSP230,231,232,233へ入力されている。
【0067】
これら図8と図9とを参照すると、各DSPは、同期リクエスト信号reqを発行し、他のDSPの全てが同期リクエスト信号reqを発行するのを待つ。こうして全てのDSPが同期リクエスト信号reqを発行したことを確認すると、同期アック信号(同期応答)ackを発行する。そして他のDSPの全てが同期アック信号ackを発行したことを確認すると、全てのDSPとの処理の同期が取れたと確認して、自DSPが出力している同期リクエスト信号reqと同期アック信号ackとをクリア(リセット)する。
【0068】
図10は、本実施形態に係る同期回路241の動作を説明するタイミングチャートである。
【0069】
この例では、2クロック目にDSP230及びDSP233がそれぞれの同期リクエスト信号reqをセットしている(T1)。そして1クロック周期遅れてDSP232が同期リクエスト信号reqをセットしている(T2)。そして最後に4クロック目で、DSP231が同期リクエスト信号reqをセットする(T3)。これによりDSP230,231,232,233の同期リクエスト信号reqの論理積rec_andが「1」がAND回路901から出力される(T3)。これによりDSP230,232,233は、同期リクエスト信号reqの論理積が「1」になったことを検出し、次のサイクル以降で、各DSPが同期アック信号ackを「1」にセットする。図10では、DSP230,232,233が同期アック信号ackをセットしている(T4)。そして次にDSP231が、他のDSPよりも1クロック遅れて同期アック信号ackをセットしており、これによりAND回路902の出力が「1」となる(T5)。DSP230,232,233は、この同期アック信号の論理積が「1」になることによって同期終了を検出し、それぞれの同期リクエスト信号をクリアし(T6)、続くサイクルで同期アック信号をクリアする(T7)。次にDSP231も1クロック遅れて同期リクエスト信号reqをクリアし(T7)、続くサイクルで同期アック信号ackをクリアする(T8)。このような動作によってDSP間の同期が取られる。
【0070】
図11は、本実施形態1に係る各DSPによるデータの扱いと、メインメモリ、共有ローカルメモリ、固有ローカルメモリの関係を説明する模式図である。
【0071】
メインメモリ202に格納されたJPEG圧縮画像データ1100は、JPEGデコーダ222によってメインメモリ202に確保されたリングバッファ領域1101に展開される。こうしてリングバッファ領域1101に展開された画像データの一部領域1102がDMAC239によって共有ローカルメモリ240へ転送される。こうして共有ローカルメモリ240に格納されたN(=4)個の矩形画像データとその周辺画素に対して、DSP230〜243によって画像処理が施される。DSP230〜243のそれぞれは、処理の状況によって画像データの一部を固有ローカルメモリ234〜237のそれぞれに出力する。そして、各DSPは、各対応する固有ローカルメモリで画像処理を繰り返し、最終的な処理済みの画像データを共有ローカルメモリ240に戻す。こうして共有ローカルメモリ240に格納された画像処理後の画像データは、DMAC239によってメインメモリ202の出力画像リングバッファ領域1103に転送される。この出力画像リングバッファ領域1103に格納された画像処理後の画像データの1バンド分の処理を終えると、JBIGエンコーダ223によりJBIG圧縮がなされ、圧縮後の画像データ1104がメインメモリ202の出力画像領域へ格納される。
【0072】
図12(A)(B)は、本実施形態1に係るエリア処理と非エリア処理での各DSPによる処理単位の切替を説明する模式図である。
【0073】
図12(A)は、注目画素のデータのみを参照して計算する非エリア処理時のDSP230,231,232,233での処理単位分割を示している。DSPサブシステム208(209)内のDSPの数N(=4)とする。また前述したように、矩形画像の幅をA[pixel]、矩形画像の高さをB[pixel]とする。また、エリア処理に必要な画像データの重複幅をH[pixel]、エリア処理に必要な入力画像の重複高さをV[pixel]とすると、各DSPが処理する画像データのサイズは以下の式で示される。
・画像幅 (A[pixel]×N+2×H[pixel])÷N
・画像高さ B[pixel]+2×V[pixel]
図12(B)は、注目画素の周辺の画素を参照して計算するエリア処理時のDSP230,231,232,233での処理単位分割を示している。ここでもN(=4)、A[pixel]、B[pixel]、H[pixel]、V[pixel]は前述した通りである。ここで各DSPが処理する画像データのサイズは以下の式で示される。
・入力画像幅 A[pixel]+2×H[pixel]
・入力画像高さ B[pixel]+2×V[pixel]
・出力画像幅 A[pixel]
・出力画像高さ B[pixel]
図12(B)において、1200,1201,1202,1203のそれぞれは、各DSP230,231,232,233が入力する画像の幅を示している。そして1204,1205,1206,1207のそれぞれは、各DSP230,231,232,233が出力する処理済みの画像データを示している。
【0074】
このように非エリア処理時では、各DSPは、N個分の矩形画像データの幅(A[pixel]×N+2×H[pixel])をN等分し、それぞれの高さが(B[pixel]+2×V[pixel])の画像データを処理する。一方、エリア処理では、各DSPは、重複幅をH[pixel]を含む(A[pixel]+2×H[pixel])幅で、高さが(B[pixel]+2×V[pixel])の画像データを入力して処理する。そしてその処理結果として、幅A[pixel]、高さB[pixel]の矩形画像データを出力する。
【0075】
図13は、本実施形態1に係るMFPのPDLプリント動作時におけるCPU210,211の処理シーケンスを示したフローチャートである。この処理を実行するプログラムは、その実行時にはメインメモリ202に格納されている。
【0076】
先ずステップS1301で、DSPサブシステム208のDSP230,231,232,234のファームウェアをメインメモリ202に用意し、次にステップS1302に進み、DSPサブシステムを起動する。次にステップS1303で、ネットワークインターフェース219或はUSBインターフェース218を介してホストコンピュータから送られてくるPDLデータを受信する。次にステップS1304に進んでPDLデータを解析し、ディスプレイリスト(DisplayList)をメインメモリ202に生成する。次にステップS1305に進み、DSPサブシステム208にバンドのレンダリング処理を依頼する。そしてステップS1306で、DSPサブシステム208から1バンド処理の終了割込みが入るのを待つ。終了割り込みが入力されるとステップS1307に進み、JPEGエンコーダ221のリソース空き状況を確認して、JPEGエンコーダ221が空いているとステップS1308に進む。ステップS1308では、JPEGエンコーダ221を起動し、DSPサブシステム208でレンダリングされたバンドの圧縮を開始する。
【0077】
次にステップS1309に進み、そのバンドで1ページの終了か否かを判断し、1ページの終了でなければステップS1305に進む。ステップS1305では、次のバンドのレンダリング処理をDSPサブシステム208に依頼する。一方ステップS1309で、ページ終了であればステップS1301に進み、図4で示したプリント画像処理を起動する。次にステップS1311に進み、連続ページ処理が終了か否かを判断し、終了でなければステップS1304に進み、次のページのPDLデータの解析及びディスプレイリストの生成を実施する。そしてステップS1311で、連続ページ終了であれば、この処理を終了する。
【0078】
図14は、本実施形態1に係るMFPのレンダリング処理におけるDSP230〜233の処理シーケンスを示したフローチャートである。
【0079】
先ずステップS1401で、メインメモリ202からディスプレイリスト情報を取得する。次にステップS1402に進み、固有ローカルメモリ234もしくは235もしくは236もしくは237を白色画素で初期化する。次にステップS1403に進み、そのディスプレイリスト情報に基づいて、順次グラフィックオブジェクト情報をメインメモリ202に格納されたディスプレイリストから取得する。そしてグラフィックオブジェクトを固有ローカルメモリの矩形画像キャンバスに描画する。次にステップS1404で、描画オブジェクトが終了したか否かを判断し、終了でなければステップS1403に進んで次の描画オブジェクトを描画する。
【0080】
一方、ステップS1404で描画オブジェクトが終了するとステップS1405に進み、固有ローカルメモリ234もしくは235もしくは236もしくは237に描画された矩形画像の画像データを共有ローカルメモリ240へ移動する。そしてステップS1406で、前述した同期処理を行う。次にステップS1407に進んで、プロセッサIDを判断し、プロセッサIDがDSP230でなければステップS1411のバンド終了の判断に移行する。一方、プロセッサIDがDSP230であればステップS1408に進み、処理済みの画像データを転送するメインメモリ202のアドレスを計算する。次にステップS1409に進み、ステップS1408で計算したアドレスに従ってDMAC239を起動する。そしてステップS1410で、DMA転送の終了を待つ。ここでDMA転送が終了するとステップS1411に進み、全てのバンドを描画したかを判断する。全てのバンドの描画終了でなければステップS1401に進み、次の矩形画像に相当するディスプレイリスト情報を取得して、前述した処理を実行する。一方、バンド終了であればステップS1412に進み、CPU210,211へ終了の割込みを発行して、この処理を終了する。
【0081】
以上説明したように本実施形態1によれば、複数のプロセッサ(DSP)によるメインメモリへのアクセスが集中するのを抑えることができるため、プロセッサの数の増加によるスループットの低下を防止できる。
【0082】
また処理対象の矩形画像に対する周辺画素を参照しない画像処理の場合は固有ローカルメモリで処理し、周辺画素を参照する画像処理の場合は共有ローカルメモリに記憶されている画像データを参照するため、各プロセッサの処理効率を高めることができる。
【0083】
[実施形態2]
図15は、本発明の実施形態2に係るMFP201の構成を示したブロック図で、前述の図1と共通する部分は同じ記号で示している。この実施形態2では、DSPサブシステム1601,1602がそれぞれ5個のDSPを有している点が、前述の実施形態1と異なっている。
【0084】
先ずコピー動作の場合の動作を説明する。
【0085】
ユーザが操作部(UI)205を使用してコピー動作を指示すると、その指示が、UIコントローラ220、割り込みコントローラ213を経由してCPU210,211に伝えられる。CPU210又はCPU211は、先ず最初にスキャナインターフェース(I/F)226を起動し、続いてスキャナ207を起動してコピー対象の原稿のスキャン動作を開始する。こうしてスキャナ207によって読み取られた原稿の画像データは、スキャナインターフェース226を経由してメインメモリ202に格納される。このとき、所定のラインまで画像データを読み込んだことを知らせる割り込みが、スキャナインターフェース226から割り込みコントローラ213を経由してCPU210,211に通知される。CPU210,211は、スキャナ207で読み取った画像データの処理(スキャン画像処理)を行うために、予めスキャン画像処理を実施するためのファームウェアをメインメモリ202にロードして起動しておく。これにより起動されるファームウェアは、DSPサブシステム1601に該当している。そしてDSPサブシステム1601に、スキャン画像処理の最初のバンド処理を指示する。
【0086】
DSPサブシステム1601は、CPU210或は211からの指示に従って、スキャン画像処理を開始し、1バンドの画像処理が終了したならば、CPU210,211に割り込みにより終了を通知する。これによりCPU210或は211は、DSPサブシステム1601からの1バンドの画像処理の終了に応答して、JPEGエンコーダ221を起動して画像データの圧縮を開始する。これらの処理を繰り返し、スキャン画像がJPEG圧縮されてメインメモリ202に格納されると、次にCPU210或は211はJPEGデコーダ222を起動して画像データの伸張(復号)を開始する。JPEGデコーダ222はメインメモリ202に格納されたJPEG画像データを伸張し、その非圧縮画像データをメインメモリ202に書き戻す。JPEGデコーダ222は、予め指定された画像データのラインまでの伸張が終了すると、割込みによりCPU210,211に通知する。この割り込みを受けたCPU210或は211は、予めプリンタ206用の印刷データを作成するプリント画像処理のためのファームウェアを用いて起動しているDSPサブシステム1602にプリント画像処理を指示する。これによりDSPサブシステム1602は、メインメモリ202の画像データに対してプリント画像処理を開始し、画象処理後のハーフトーン画像をメインメモリ202に格納する。こうしてDSPサブシステム1602は、処理対象のバンド画像の処理を終えるとCPU210,211にバンド処理終了の割込みを発行する。
【0087】
CPU210或は211は次に、ハーフトーン画像を圧縮するためにJBIGエンコーダ223を起動する。ここでJBIG圧縮はCMYK各色ごとに実施される。これらを繰り返しJPEG圧縮された画像データに印刷画像処理を施して各色毎のJBIG圧縮データを得てメインメモリ202に格納する。次にCPU210或は211は、JBIGデコーダ224を起動してJBIG圧縮画像データの伸張を開始する。JBIGデコーダ224は、所定のラインまで伸張を終えるとCPU210,211に割込みで通知する。これによりCPU210或は211は、プリンタインターフェース225及びプリンタ206を起動し、その伸張されたハーフトーン画像データをプリンタ206に出力して印刷する。以上がコピー動作の説明である。
【0088】
次に、ホストコンピュータからPDLデータを受信して印刷するネットワークプリンタとしての動作を説明する。
【0089】
ホストコンピュータよりネットワークインターフェース(I/F)219もしくはUSBインターフェース(I/F)218を経由してPDLデータが送られてくると、CPU210或は211はPDLデータを一旦メインメモリ202に格納する。その後、そのPDLデータの解析を開始し、ディスプレイリストをメインメモリ202に作成する。CPU210或は211は、そのディスプレイリストから印刷用画像データを生成するため、予めレンダリング処理のファームウェアを用いて起動してあるDSPサブシステム1601を起動してレンダリング処理を開始する。このときDSPサブシステム1601は、メインメモリ202に格納されたディスプレイリストを解釈して印刷用画像データを生成する。こうして印刷用画像データの所定のラインまでの生成が終わった後、DSPサブシステム1601は、割込みをCPU210,211に発行する。これによりCPU210或は211は、そのレンダリングされた印刷用画像データの最初のバンドを圧縮するためJPEGエンコーダ221を起動する。JPEGエンコーダ221は、所定のバンドまで圧縮すると、割込みによりCPU210,211に通知する。これらの処理を繰り返すことにより、ページ全面の印刷用画像データが生成され、JPEGデータとしてメインメモリ202に格納される。
【0090】
次にCPU210或は211は、JPEGデコーダ222を起動して印刷用画像データの伸張を開始する。JPEGデコーダ222は、メインメモリ202に格納されたJPEG圧縮画像データを伸張(復号)し、非圧縮画像データとしてメインメモリ202に書き戻す。こうしてJPEGデコーダ222は、予め指定された画像データのラインまでの伸張処理が達すると、割込みによりCPU210,211に通知する。この割り込みを受けたCPU210或は211は、予めプリント画像処理用にファームウェアを用いて起動してあるDSPサブシステム1602にプリント画像処理を指示する。
【0091】
DSPサブシステム1602は、メインメモリ202の伸張済みの画像データに対してプリント画像処理を開始し、画像処理後のハーフトーン画像を作成してメインメモリ202に格納する。こうしてDSPサブシステム1602は、処理対象のバンド画像の処理を終えると、CPU210,211にバンド処理終了の割込みを発行する。これによりCPU210或は211は、そのハーフトーン画像を圧縮するためにJBIGエンコーダ223を起動する。ここでJBIG圧縮はCMYK各色ごとに実施される。これらを繰り返しJPEG圧縮画像データに印刷画像処理を施して各色毎のJBIG圧縮データが生成され、メインメモリ202に格納される。次にCPU210或は211は、JBIGデコーダ224を起動してJBIG圧縮画像データの伸張を開始する。JBIGデコーダ224は、所定のラインまで伸張を終えるとCPU210,211に割込みを発行する。これによりCPU210或は211は、プリンタインターフェース225及びプリンタ206を起動し、その伸張されたハーフトーン画像データを印刷する。
【0092】
次にファクシミリ送信処理について説明する。
【0093】
操作部205を操作してユーザがファクシミリ送信を指示すると、UIコントローラ220、割り込みコントローラ213を経由してCPU210,211に伝えられる。CPU210或はCPU211は、まずスキャナインターフェース226を起動し、続いてスキャナ207を起動して送信原稿のスキャン動作を開始する。こうしてスキャナ207によって読み取られた原稿の画像データは、スキャナインターフェース226を経由してメインメモリ202に格納される。このときスキャナインターフェース226から所定のラインまで届いたことを知らせる割り込みが、割り込みコントローラ213を経由してCPU210,211に通知される。これによりCPU210或は211は、スキャン画像処理を行うために、予めスキャン画像処理を実施するためのファームウェアをメインメモリ202にロードし起動しておいたDSPサブシステム1601に、スキャン画像処理の最初のバンド処理を指示する。DSPサブシステム1601は、CPU210或は211からの指示に従ってスキャン画像処理を開始し、バンドの画像処理が終了するとCPU210,211に終了の割込みを発行する。こうしてCPU210或は211は、DSPサブシステム1601からバンドのスキャン画像処理の終了割込みを受け取る。
【0094】
次にCPU210或は211は、ファクシミリ送信を行うために、予め解像度変換及び二値化及びMMR圧縮のファクシミリデータ生成処理を実施するためのファームウェアをメインメモリ202にロードして起動している。このファームウェアはDSPサブシステム1602であり、これに対してファクシミリデータ生成処理の最初のバンド処理を指示する。これによりDSPサブシステム1602は、CPU210或は211からの指示に従って、ファクシミリデータの生成処理を開始し、1ページのファクシミリデータが生成されるとCPU210,211に終了の割込みを発行する。こうしてCPU210或は211は、DSPサブシステム1602からファクシミリデータの生成処理の終了割込みを受け取る。そしてメインメモリ202に格納されたファクシミリデータをROMコントローラ217に接続されたファクシミリ(Fax)モデム204を介して通信網に送信する。
【0095】
図16(A)(B)は、本実施形態2におけるエリア処理と非エリア処理での処理単位切替を示した模式図である。
【0096】
図16(A)は、非エリア処理時のDSP230,231,232,233,1603での処理単位分割例を示している。ここでDSP1603は図16(A)に示すように、共有ローカルメモリ240の画像データの先頭と末尾の重複部分の画像データを処理するように割り当てられている。このDSPサブシステムのDSPの数N(=5)、矩形画像の幅をA[pixel]、矩形画像の高さをB[pixel]とする。また、エリア処理に必要な入力画像の重複幅をH[pixel]、エリア処理に必要な入力画像の重複高さをV[pixel]とする。このとき各DSPが処理する画像データのサイズは以下の式で示される。
(1)DSP230〜233の場合
・画像幅 A[pixel]
・画像高さ B[pixel]+2×V[pixel]
(2)DSP1603の場合
・画像幅 2×H[pixel]
・画像高さ B[pixel]+2×V[pixel]
図16(B)は、エリア処理時のDSP230,231,232,233での処理単位の分割例を示している。DSPサブシステムのDSPの数N、矩形画像の幅をA[pixel]、矩形画像の高さをB[pixel]とする。またエリア処理に必要な入力画像の重複幅をH[pixel]、エリア処理に必要な入力画像の重複高さをV[pixel]とする。この場合、各DSPが処理する画像のサイズは以下の式で示される。この実施形態2では、DSP1603はエリア処理を実施しないものとする。
(1)DSP230,231,232,233の場合
・入力画像幅 A[pixel]+2×H[pixel]
・入力画像高さ B[pixel]+2×V[pixel]
・出力画像幅 A[pixel]
・出力画像高さ B[pixel]
これは前述の実施の形態1の図12(B)と同じである。
【0097】
図17は、本実施の形態2に係るDSP1603によるプリント画像処理の処理シーケンスを示したフローチャートである。尚、この場合、DSP230,231,232,233は、前述の図7のフローチャートで示す処理を実施する。
【0098】
まず初めにステップS1801で、DSP230,231,232,233との同期処理を実施する。次にステップS1802に進み、log変換処理を実施する。次にステップS1803に進んで出力色変換処理を実施し、更にステップS1804に進んで、載り量制御処理を実施する。これらの処理ステップは、図17(A)で示されたDSP1603の処理範囲に対して実施される。次にステップS1805〜S1807で、DSP230,231,232,233のシーケンスに従って同期処理を3回実施する。そしてステップS1808に進み、バンドの終了か否かを判断する。ここでバンド終了でなければステップS1801に進の同期処理に進み、前述した処理を実行する。そしてステップS1808でバンド終了になるとステップS1809に進み、CPU210、211に終了割込みを発行して、この処理を終了する。
【0099】
図18(A)(B)は、本実施形態2に係るDMAC239によるDRAMのメモリアクセスパターンを説明する模式図である。
【0100】
図18(A)は、メインメモリ(DRAM)202から固有ローカルメモリ234,235,236,237へ周辺画素も含む矩形画像を転送した場合のメモリアクセスパターンを示している。図に示したポイントにおいてメモリのページミスが発生する。
【0101】
図18(B)は、メインメモリ202から共有ローカルメモリ240へ周辺画素も含むN個の矩形画像を転送した場合のメモリアクセスパターンを説明する図である。
【0102】
図示したポイントにおいてメモリのページミスが発生する。
【0103】
このように共有ローカルメモリに転送することにより、メモリのページミスがN分の1に減少している。このことによりメモリ転送効率が向上する。
【0104】
(他の実施形態)
以上、本発明の実施形態について詳述したが、本発明は、複数の機器から構成されるシステムに適用しても良いし、また一つの機器からなる装置に適用しても良い。
【0105】
なお、本発明は、前述した実施形態の機能を実現するソフトウェアのプログラムを、システム或いは装置に直接或いは遠隔から供給し、そのシステム或いは装置のコンピュータが該供給されたプログラムを読み出して実行することによっても達成され得る。その場合、プログラムの機能を有していれば、形態は、プログラムである必要はない。
【0106】
従って、本発明の機能処理をコンピュータで実現するために、該コンピュータにインストールされるプログラムコード自体も本発明を実現するものである。つまり、本発明のクレームでは、本発明の機能処理を実現するためのコンピュータプログラム自体も含まれる。その場合、プログラムの機能を有していれば、オブジェクトコード、インタプリタにより実行されるプログラム、OSに供給するスクリプトデータ等、プログラムの形態を問わない。
【0107】
プログラムを供給するための記録媒体としては、様々なものが使用できる。例えば、フロッピー(登録商標)ディスク、ハードディスク、光ディスク、光磁気ディスク、MO、CD−ROM、CD−R、CD−RW、磁気テープ、不揮発性のメモリカード、ROM、DVD(DVD−ROM,DVD−R)などである。
【0108】
その他、プログラムの供給方法としては、クライアントコンピュータのブラウザを用いてインターネットのホームページに接続し、該ホームページからハードディスク等の記録媒体にダウンロードすることによっても供給できる。その場合、ダウンロードされるのは、本発明のコンピュータプログラムそのもの、もしくは圧縮され自動インストール機能を含むファイルであってもよい。また、本発明のプログラムを構成するプログラムコードを複数のファイルに分割し、それぞれのファイルを異なるホームページからダウンロードすることによっても実現可能である。つまり、本発明の機能処理をコンピュータで実現するためのプログラムファイルを複数のユーザに対してダウンロードさせるWWWサーバも、本発明のクレームに含まれるものである。
【0109】
また、本発明のプログラムを暗号化してCD−ROM等の記憶媒体に格納してユーザに配布する形態としても良い。その場合、所定の条件をクリアしたユーザに対し、インターネットを介してホームページから暗号化を解く鍵情報をダウンロードさせ、その鍵情報を使用することにより暗号化されたプログラムが実行可能な形式でコンピュータにインストールされるようにする。
【0110】
また、コンピュータが、読み出したプログラムを実行することによって、前述した実施形態の機能が実現される形態以外の形態でも実現可能である。例えば、そのプログラムの指示に基づき、コンピュータ上で稼動しているOSなどが、実際の処理の一部または全部を行ない、その処理によっても前述した実施形態の機能が実現され得る。
【0111】
更に、記録媒体から読み出されたプログラムが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれるようにしてもよい。この場合、その後で、そのプログラムの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるCPUなどが実際の処理の一部または全部を行ない、その処理によって前述した実施形態の機能が実現される。
【図面の簡単な説明】
【0112】
【図1】本実施形態に係る矩形画像とその重複部を説明する模式図で、図1(A)は、重複した矩形画像とページ全体との関係を示す図で、図1(B)は、重複した矩形画像と、処理対象の矩形画像との関係を説明する図である。
【図2】本実施形態に係るMFPの構成を示したブロック図である。
【図3】本実施形態1に係るMFPのコピー動作時においてCPUで実行されるシーケンスを説明するフローチャートである。
【図4】本実施形態1に係るMFPのプリント画像処理においてCPUで実行されるシーケンスを説明するフローチャートである。
【図5】本実施形態に係るMFPの印刷処理におけるCPUの処理シーケンスを示したフローチャートである。
【図6】本実施形態1に係るMFPのDSPサブシステムによるスキャン画像処理を説明するフローチャートである。
【図7】本実施形態1に係るMFPのDSPサブシステムによるプリント画像処理における各DSPの処理シーケンスを示したフローチャートである。
【図8】本実施形態1に係るDSPにおける同期処理のシーケンスを示したフローチャートである。
【図9】本実施形態1に係るDSPと同期回路との接続及び同期回路の構成を説明する回路図である。
【図10】本発明の実施形態に係る同期回路の動作を説明するタイミングチャートである。
【図11】本実施形態1に係る各DSPによるデータの扱いと、メインメモリ、共有ローカルメモリ、固有ローカルメモリの関係を説明する模式図である。
【図12】本実施形態1に係るエリア処理と非エリア処理での各DSPによる処理単位の切替を説明する模式図である。
【図13】本実施形態1に係るMFPのPDLプリント動作時におけるCPUの処理シーケンスを示したフローチャートである。
【図14】本実施形態に係るMFPのレンダリング処理におけるDSPの処理シーケンスを示したフローチャートである。
【図15】本発明の実施形態2に係るMFPの構成を示したブロック図である。
【図16】本実施形態2におけるエリア処理と非エリア処理での処理単位切替を示した模式図である。
【図17】本実施の形態2に係るDSPによるプリント画像処理の処理シーケンスを示したフローチャートである。
【図18】本実施形態2に係るDMACによるDRAMのメモリアクセスパターンを説明する模式図である。
【技術分野】
【0001】
本発明は、複数のプロセッサの並列処理によって画像処理を実現する画像処理装置及びその制御方法に関するものである。
【背景技術】
【0002】
従来の複写機やプリンタ、ファクシミリの制御部のハードウェアでは、印刷用の画像処理、ページ記述言語(以下、PDL)から印刷画像へのレンダリング、スキャナ画像処理などを実施する専用画像処理回路を設けている。また最近のマルチファンクションプリンタ(MFP)の制御部でも、このような専用画像処理回路を個別に有し、複写動作中にページ記述言語から印刷画像へのレンダリングを実施するという並列処理を可能にしている。また、このような並列処理を制限し、画像スプールのメモリ量を削減することにより制御部のコストを削減するMFPも存在している。このように並列処理を制限してコスト低減を実現した場合、同時に動作しない専用画像処理回路を持つことは不経済である。
【0003】
そこでデジタルシグナルプロセッサ(以下、DSP)やコンフィギャラブルプロセッサ、汎用CPU等のソフトウェアによって処理が切り替えられるプロセッサを専用画像処理回路の代わりに設けることが提案されている。これによれば、複写やプリント、ファクシミリといった機器の動作に応じて各プロセッサによる処理を切り替えている。
【0004】
従来の専用画像処理回路では、個別の画像処理のパイプライン処理を実現している。それによれば、処理性能をより向上させるために、複数のプロセッサで専用画像処理回路の置き換え処理を実施する場合に、専用画像処理回路と同等に個別の画像処理を個別のプロセッサに割り当てることが知られている(特許文献1)。
【特許文献1】特開2006−133839
【特許文献2】特開2006−139803
【発明の開示】
【発明が解決しようとする課題】
【0005】
従来技術の第一の課題は、複数のプロセッサのそれぞれに互いに異なる画像処理を割り当ててパイプライン処理を実現した場合には、各画像処理の計算量が異なるために各プロセッサの処理時間が異なってしまう。これにより、パイプライン処理のスループットが最も処理時間の長いプロセッサの処理時間によって制限されると共に、パイプライン処理の各ステージにおいて待ち時間が生じてしまうため効率が悪いという課題があった。
【0006】
この第一の課題に付随する課題として、効率を改善するために特許文献1に記載されているようなパイプライン処理の各ステージ間において負荷分散を行うと、処理のオーバーヘッドが大きく処理効率の向上が難しい。更に第一の課題を改善するために、コンフィギャラブルプロセッサを用いてパイプラインステージの各画像処理の処理時間を揃える場合、他の専用画像処理回路の処理を代行して異なる画像処理を実施した場合には処理時間が揃えられなくなる。このため、複数の処理に跨った処理効率が向上が期待できない。
【0007】
また第二の課題は、処理性能を向上させるためにプロセッサの数を増加したり、或はコストを削減するためにプロセッサの数を削減すると、パイプライン処理における各ステージへの画像処理の割り当てを再度行う必要が生じる。しかし、このような再割り当てによって、最も処理時間の長い画像処理を実施するステージが変わってしまい、プロセッサ数の増加に相当する性能の向上が得られないといった問題や、プロセッサ数を削減した以上に性能が低下するという問題がある。
【0008】
本発明の目的は、上述した従来の課題を解決することにある。
【0009】
また本願発明の特徴は、複数のプロセッサによる並列処理のスループットの向上を図った画像処理装置及びその制御方法を提供することにある。
【課題を解決するための手段】
【0010】
上記目的を達成するために本発明の一態様に係る画像処理装置は以下のような構成を備える。即ち、
メインメモリと複数のプロセッサとを有し、前記複数のプロセッサにより並行して画像処理を行う画像処理装置であって、
前記複数のプロセッサのそれぞれに設けられ、各プロセッサが独立してアクセス可能な固有メモリと、
前記複数のプロセッサが共通してアクセス可能な共有メモリと、
前記メインメモリと前記共有メモリとの間で画像データを転送する転送手段とを有し、
前記各プロセッサは、
前記転送手段により前記共有メモリに転送された画像データのうち、当該プロセッサの処理対象の画像データを当該プロセッサに対応する前記固有メモリに転送して画像処理を行って前記共有メモリに書き戻し、
当該プロセッサの処理対象の画像データの周辺画像データを参照する画像処理の場合は、前記共有メモリに格納されている画像データを参照することを特徴とする。
【0011】
上記目的を達成するために本発明の一態様に係る画像処理装置の制御方法は以下のような工程を備える。即ち、
メインメモリと複数のプロセッサとを有し、前記複数のプロセッサにより並行して画像処理を行う画像処理装置の制御方法であって、
前記メインメモリから前記複数のプロセッサが共通してアクセス可能な共有メモリへ画像データを転送する転送工程と、
前記転送工程で前記共有メモリに転送された前記画像データのうち、各プロセッサの処理対象の画像データを当該各プロセッサに対応する、各プロセッサが独立してアクセス可能な固有メモリに転送する工程と、
各プロセッサが、前記固有メモリに転送された画像データに対して画像処理を行う処理工程と、
前記画像処理において、当該各プロセッサの処理対象の画像データの周辺画像データを参照する画像処理の場合は、前記共有メモリに格納されている画像データを参照する工程と、
処理済みの画像データを前記各プロセッサに対応する前記固有メモリから前記共有メモリに転送する工程と、
前記共有メモリの画像データが処理済みになると、当該画像データを前記メインメモリに転送する工程と、
を有することを特徴とする。
【発明の効果】
【0012】
本発明によれば、各プロセッサが各プロセッサに固有のメモリで画像処理を行うとともに、周辺画素を参照する処理の場合に共有メモリの画像データを参照するため、プロセッサの数が増えても画像処理のスループットが低下することがない。
【0013】
また本発明によれば、少ないメモリ容量の固有メモリと共有メモリで画像処理の並列処理を実現できるため、メモリコストを削減しながら効率の良い画像処理が可能となる。
【発明を実施するための最良の形態】
【0014】
以下、添付図面を参照して本発明の好適な実施形態を詳しく説明する。尚、以下の実施形態は特許請求の範囲に係る本発明を限定するものでなく、また本実施形態で説明されている特徴の組み合わせの全てが本発明の解決手段に必須のものとは限らない。
【0015】
以下、本実施形態を説明する前に、本発明の実施形態の概要を簡単に説明する。
【0016】
本実施形態では、複数のDSP(プロセッサ)を用いて画像処理を行う。各DSPに固有の固有ローカルメモリ(固有メモリ)を有し、メインメモリの画像データの処理対象の矩形領域を固有ローカルメモリに転送し、各DSPにより画像処理を実行する。その後、その矩形画像データを出力画像の所定の領域として固有ローカルメモリからメインメモリに転送する。各DSPは、各対応する固有ローカルメモリに転送された矩形領域の画像データに対して周知のパイプライン処理に割り当てられた画像処理を実施する。
【0017】
この画像処理には、注目画素の周辺の画素を参照して計算する周辺画素(周辺画像データ)参照処理(以下、エリア処理)と、注目画素のデータのみを参照して計算する周辺画素非参照処理(以下、非エリア処理)とが存在する。ここではエリア処理も実施できるようにするために、入力した画像データの内、固有ローカルメモリに転送される矩形画像の画像データは、隣接した矩形画像の一部を重複して持つようにしている。
【0018】
図1(A)は、重複した矩形画像と、ページ全体との関係を示す図である。
【0019】
図において、100はページ全体を示し、101は、処理対象となる矩形画像を示している。102は重複した矩形画像を示し、103は、その重複部分を示している。
【0020】
図1(B)は、重複した矩形画像102と、処理対象の矩形画像101との関係を説明する図である。
【0021】
固有ローカルメモリに必要なメモリ容量は、以下の式(1)で求められる。ここで矩形画像101の幅をA[pixel]、矩形画像101の高さをB[pixel]、エリア処理に必要な画像の重複幅をH[pixel]、エリア処理に必要な画像の重複高さV[pixel]、1画素データのバイト数をP[byte]とする。
【0022】
(A[pixel]+2×H[pixel])×(B[pixel]+2×V[pixel])×P[byte]×2[bank] …式(1)
性能を向上させるためにプロセッサ(DSP)の数を増加させると、固有ローカルメモリもプロセッサの数に比例して増加するため、メモリのコストが増大する。特に隣接した矩形画像の一部を互いの固有ローカルメモリに重複して持つことになるため、上記構成ではコストが高くなるという新たな課題が生じる。また、隣接した矩形画像の一部を互いの固有ローカルメモリに重複して持たせると、非エリア処理の場合でも、重複した画像部分を二重に計算しなければならないため、計算負荷が重くなるという新たな課題もある。更に、矩形画像の画像データを固有ローカルメモリ間で転送する際に、矩形画像内の主走査ラインが切り替わるごとにメモリアドレスが大幅に変わる。このため、ページミスが発生したり、メモリアクセス効率が大幅に低下するといった新たな問題も発生する。
【0023】
これら課題を解決するために、上記構成に加え、複数のプロセッサが共通にアクセス可能な共有ローカルメモリ(共有メモリ)と、複数のプロセッサ間の同期を取る手段とを設ける。そしてメインメモリから共有ローカルメモリに、複数のプロセッサで処理する画像データの領域を一括して転送する。この転送では、共有ローカルメモリを共有するプロセッサ数(N)に相当する矩形画像と、その周辺画素とを重複せずに転送する。これによりメインメモリでのページミスがN分の1に削減され、メモリアクセス効率の改善がなされる。また共有ローカルメモリには、隣接する矩形画像で互いに重複する部分を重複して記憶しない。
【0024】
こうして共有ローカルメモリに格納された画像データの処理対照部分は、各プロセッサによって画像処理が施され、非エリア処理であればプロセッサの固有ローカルメモリを主に用いて画像処理がなされる。
【0025】
一方、周辺画素を参照するエリア処理の場合には、共有ローカルメモリにエリア処理前の画像データが格納される。そして複数のプロセッサが、各プロセッサが処理対象としている矩形画像の周辺画素を、共有ローカルメモリに記憶された互いの領域を参照することにより参照する。また非エリア処理を実施する場合は、周辺画素も含めて処理対象画素を変更することで固有ローカルメモリの容量も削減される。周辺画素も含めた処理対象画素を変更することにより、エリア処理と非エリア処理を切り替える際に、複数のプロセッサ間で待ち合わせを行う必要が生じるが、これは同期処理手段によりなされる。この場合の共有ローカルメモリの容量は、プロセッサの数をNとすると以下で計算される。
【0026】
(A[pixel]×N+2×H[pixel])×(B[pixel]+2×V[pixel])×P[byte]×1[bank]
また、各プロセッサの固有ローカルメモリの容量は、以下の計算式で求めることができる。
【0027】
((A[pixel]×N+2×H[pixel])÷N)×(B[pixel]+2×V[pixel])×P[byte]×1[bank]
また、各プロセッサの固有ローカルメモリの容量は、((A[pixel]×B[pixel])×P[byte]×1[bank])を下回らないように構成される。
【0028】
以下詳しく説明する。
【0029】
[実施形態1]
図2は、本実施形態1に係るMFP201の構成を示したブロック図である。
【0030】
先ずコピー動作の場合の動作を説明する。
【0031】
ユーザが操作部(UI)205を使用してコピー動作を指示すると、その指示が、UIコントローラ220、割り込みコントローラ213を経由してCPU210,211に伝えられる。CPU210又はCPU211は、先ず最初にスキャナインターフェース(I/F)226を起動し、続いてスキャナ207を起動してコピー対象の原稿のスキャン動作を開始する。こうしてスキャナ207によって読み取られた原稿の画像データは、スキャナインターフェース226を経由してメインメモリ202に格納される。このとき、所定のラインまで画像データを読み込んだことを知らせる割り込みが、スキャナインターフェース226から割り込みコントローラ213を経由してCPU210,211に通知される。CPU210,211は、スキャナ207で読み取った画像データの処理(スキャン画像処理)を行うために、予めスキャン画像処理を実施するためのファームウェアをメインメモリ202にロードして起動しておく。これにより起動されるファームウェアは、DSPサブシステム208に該当している。そしてDSPサブシステム208に、スキャン画像処理の最初のバンド処理を指示する。
【0032】
DSPサブシステム208は、CPU210或は211からの指示に従ってスキャン画像処理を開始し、1バンドの画像処理が終了したならば、CPU210,211に対して割り込みにより終了を通知する。これによりCPU210或は211は、DSPサブシステム208からの1バンドの画像処理の終了に応答して、JPEGエンコーダ221を起動して画像データの圧縮を開始する。これらの処理を繰り返し、スキャン画像がJPEG圧縮されてメインメモリ202に格納されると、次にCPU210或は211はJPEGデコーダ222を起動して画像データの伸張(復号)を開始する。JPEGデコーダ222は、メインメモリ202に格納されたJPEG画像データを伸張し、その非圧縮画像データをメインメモリ202に書き戻す。JPEGデコーダ222は、予め指定された画像データのラインまでの伸張が終了すると、割込みによりCPU210,211に通知する。この割り込みを受けたCPU210或は211は、予めプリンタ206用の印刷データを作成するプリント画像処理のためのファームウェアを用いて起動しているDSPサブシステム209にプリント画像処理を指示する。これによりDSPサブシステム209は、メインメモリ202の画像データに対してプリント画像処理を開始し、画象処理後のハーフトーン画像をメインメモリ202に格納する。こうしてDSPサブシステム209は、処理対象のバンド画像の処理を終えるとCPU210,211にバンド処理終了の割込みを発行する。
【0033】
CPU210或は211は次に、ハーフトーン画像を圧縮するためにJBIGエンコーダ223を起動する。ここでJBIG圧縮はCMYK各色ごとに実施される。これらを繰り返しJPEG圧縮された画像データに印刷画像処理を施して各色毎のJBIG圧縮データを得てメインメモリ202に格納する。次にCPU210或は211は、JBIGデコーダ224を起動してJBIG圧縮画像データの伸張を開始する。JBIGデコーダ224は、所定のラインまで伸張を終えるとCPU210,211に割込みで通知する。これによりCPU210或は211は、プリンタインターフェース225及びプリンタ206を起動し、その伸張されたハーフトーン画像データをプリンタ206に出力して印刷する。以上がコピー動作の説明である。
【0034】
次に、ホストコンピュータからPDLデータを受信して印刷するネットワークプリンタとしての動作を説明する。
【0035】
ホストコンピュータよりネットワークインターフェース(I/F)219もしくはUSBインターフェース(I/F)218を経由してPDLデータが送られてくると、CPU210或は211はPDLデータを一旦メインメモリ202に格納する。その後、そのPDLデータの解析を開始し、ディスプレイリストをメインメモリ202に作成する。CPU210或は211は、そのディスプレイリストから印刷用画像データを生成するため、予めレンダリング処理のファームウェアを用いて起動してあるDSPサブシステム208を起動してレンダリング処理を開始する。このときDSPサブシステム208は、メインメモリ202に格納されたディスプレイリストを解釈して印刷用画像データを生成する。こうして印刷用画像データの所定のラインまでの生成が終わった後、DSPサブシステム208は、割込みをCPU210,211に発行する。これによりCPU210,211は、そのレンダリングされた印刷用画像データの最初のバンドを圧縮するためJPEGエンコーダ221を起動する。JPEGエンコーダ221は、所定のバンドまで圧縮すると、割込みによりCPU210,211に通知する。これらの処理を繰り返すことにより、ページ全面の印刷用画像データが生成され、JPEGデータとしてメインメモリ202に格納される。
【0036】
次にCPU210或は211は、JPEGデコーダ222を起動して印刷用画像データの伸張を開始する。JPEGデコーダ222は、メインメモリ202に格納されたJPEG圧縮画像データを伸張(復号)し、非圧縮画像データとしてメインメモリ202に書き戻す。こうしてJPEGデコーダ222は、予め指定された画像データのラインまでの伸張処理が達すると、割込みによりCPU210,211に通知する。この割り込みを受けたCPU210或は211は、予めプリント画像処理用にファームウェアを用いて起動してあるDSPサブシステム209にプリント画像処理を指示する。
【0037】
DSPサブシステム209は、メインメモリ202の伸張済みの画像データに対してプリント画像処理を開始し、画像処理後のハーフトーン画像を作成してメインメモリ202に格納する。こうしてDSPサブシステム209は、処理対象のバンド画像の処理を終えると、CPU210,211にバンド処理終了の割込みを発行する。これによりCPU210或は211は、そのハーフトーン画像を圧縮するためにJBIGエンコーダ223を起動する。ここでJBIG圧縮はCMYK各色ごとに実施される。これらを繰り返しJPEG圧縮画像データに印刷画像処理を施して各色毎のJBIG圧縮データが生成され、メインメモリ202に格納される。次にCPU210或は211は、JBIGデコーダ224を起動してJBIG圧縮画像データの伸張を開始する。JBIGデコーダ224は、所定のラインまで伸張を終えるとCPU210,211に割込みを発行する。これによりCPU210或は211は、プリンタインターフェース225及びプリンタ206を起動し、その伸張されたハーフトーン画像データを印刷する。
【0038】
次にファクシミリ送信処理について説明する。
【0039】
操作部205を操作してユーザがファクシミリ送信を指示すると、UIコントローラ220、割り込みコントローラ213を経由してCPU210,211に伝えられる。CPU210或はCPU211は、まずスキャナインターフェース226を起動し、続いてスキャナ207を起動して送信原稿のスキャン動作を開始する。こうしてスキャナ207によって読み取られた原稿の画像データは、スキャナインターフェース226を経由してメインメモリ202に格納される。このときスキャナインターフェース226から所定のラインまで届いたことを知らせる割り込みが、割り込みコントローラ213を経由してCPU210,211に通知される。これによりCPU210或は211は、スキャン画像処理を行うために、予めスキャン画像処理を実施するためのファームウェアをメインメモリ202にロードし起動しておいたDSPサブシステム208に、スキャン画像処理の最初のバンド処理を指示する。DSPサブシステム208は、CPU210或は211からの指示に従ってスキャン画像処理を開始し、バンドの画像処理が終了するとCPU210,211に終了の割込みを発行する。こうしてCPU210或は211は、DSPサブシステム208からバンドのスキャン画像処理の終了割込みを受け取る。
【0040】
次にCPU210或は211は、ファクシミリ送信を行うために、予め解像度変換及び二値化及びMMR圧縮のファクシミリデータ生成処理を実施するためのファームウェアをメインメモリ202にロードして起動している。このファームウェアはDSPサブシステム209であり、これに対してファクシミリデータ生成処理の最初のバンド処理を指示する。これによりDSPサブシステム209は、CPU210或は211からの指示に従って、ファクシミリデータの生成処理を開始し、1ページのファクシミリデータが生成されるとCPU210,211に終了の割込みを発行する。こうしてCPU210或は211は、DSPサブシステム209からファクシミリデータの生成処理の終了割込みを受け取る。そしてメインメモリ202に格納されたファクシミリデータをROMコントローラ217に接続されたファクシミリ(Fax)モデム204を介して通信網に送信する。
【0041】
図3は、本実施形態1に係るMFP201のコピー動作時におけるCPU210或は211で実行されるシーケンスを説明するフローチャートである。この処理を実行するプログラムは、その実行時にはメインメモリ202に格納されている。
【0042】
ユーザからコピー動作を指示されると、まず初めにステップS301で、DSPサブシステム208にスキャナ画像処理のファームウェアをダウンロードし、次にステップS302で、DSPサブシステム208を起動する。次にステップS303に進み、スキャナインターフェース226を起動し、続いてステップS305で、スキャナ207を起動する。これによりスキャナ207による原稿画像の読み取りが開始される。
【0043】
次にステップS305に進んで、割り込みコントローラ213を介して割込みが入力されるのを待つ。ここで割り込みが発生すると、その割り込みの種別を判断する。もしスキャナインターフェース226からのバンド割込みであった場合はステップS306に進み、DSPサブシステム208にスキャナ画像処理を依頼して、ステップS305の割り込み待ちに戻る。一方、ステップS305で受付けた割込みがDSPサブシステム208からのバンド処理の終了割込みであった場合はステップS307に進み、そのバンドをJPEG圧縮するためにJPEGエンコーダ221を起動する。そしてステップS305の割り込み待ちに戻る。
【0044】
またステップS305で受付けた割込みがJPEGエンコーダ221からのバンド割込みであれバステップS308に進み、1ページの終了か否かを判断する。ここでページ終了でなければステップS305に進んで次の割り込みを待つ。一方、ページ終了であればステップS309に進み、プリント画像処理を起動する。続いてステップS310に進み、連続ページ処理が終了したかを判断し、連続ページ処理が継続する場合は次のページ処理のためにステップS304に進んで、次の原稿を読み取るためにスキャナ207を起動する。一方、ステップS310で、連続ページ処理が終了であれば、この処理を終了する。
【0045】
図4は、本実施形態1に係るMFPのプリント画像処理におけるCPU210或は211で実行されるシーケンスを説明するフローチャートである。この処理を実行するプログラムは、その実行時にはメインメモリ202に格納されている。尚、この処理は、図3のステップS309のプリント画像処理に該当している。
【0046】
初めにステップS401で、DSPサブシステム209にプリント画像処理のファームウェアをダウンロードし、ステップS402で、DSPサブシステム209を起動する。次にステップS403に進み、JPEGデコーダ222を起動する。そしてステップS404に進み、割込みを待ちとなる。ここで割り込みが発生すると、その割り込みの種別を判定し、JPEGデコーダ222からのバンド割込みであった場合はステップS405に進み、DSPサブシステム209にプリント画像処理を依頼してステップS404の割り込み待ちに戻る。
【0047】
一方、ステップS404で、DSPサブシステム209からのバンド処理の終了割込みであると判定するとステップS406に進み、そのバンドをJBIG圧縮するためにJBIGエンコーダ223を起動してステップS404の割り込み待ちに戻る。
【0048】
またステップS404で、JBIGエンコーダ223からのバンド割込みであると判定するとステップS407に進み、ページ終了かを判断する。ここでページ終了でなければステップS404に進んで次の割り込みを待ちとなる。一方、ページ終了であればステップS408に進み、印刷処理を起動する。続いてステップS409に進み、連続ページ処理が終了かを判断し、連続ページ処理が継続するときは次のページ処理のためにステップS403に進んでJPEGデコーダ222を起動する。一方、連続ページ処理が終了であれば、この処理を終了する。
【0049】
図5は、本実施形態1に係るMFPの印刷処理におけるCPU210或は211の処理シーケンスを示したフローチャートである。この処理シーケンスは図4のステップS408の印刷処理処理に該当している。この処理を実行するプログラムは、その実行時にはメインメモリ202に格納されている。
【0050】
まずステップS501で、JBIGデコーダ224を起動する。そしてステップS502で、JBIGデコーダ224からのバンド終了割込みを待つ。ここでJBIGデコーダ224からのバンド処理の終了割込みがあるとステップS503に進み、プリンタインターフェース225を起動して、ステップS504でプリンタ206を起動する。次にステップS505に進み、続くバンドの画像データを伸張するためにJBIGデコーダ224を起動し、ステップS506で、JBIGデコーダ224からのバンド処理の終了割込みを待つ。ここでJBIGデコーダ224からバンド処理の終了割込みがあるとステップS507に進み、プリンタインターフェース225に次のバンドデータの転送を起動する。次にステップS508で、1ページの終了か否かを判断し、1ページの終了でなければステップS505に進み、再度、JBIGデコーダ224を起動して次のバンドの画像データの伸張を開始する。
【0051】
一方、ステップS508で、1ページの終了であればステップS509に進み、プリンタインターフェース225からのページ終了を待つ。そしてプリンタインターフェース225からのページ終了を受付けるとステップS510に進み、連続ページ処理が終了か否かを判断する。ここで連続ページ処理が終了でなければステップS501に進み、次のページのJBIGの伸張処理に進む。一方、ステップS510で、連続ページ処理の終了であれば、この処理を終了する。
【0052】
図6は、本実施形態1に係るMFP201のDSPサブシステム208によるスキャン画像処理を説明するフローチャートで、特にDSP230,231,232,233による処理シーケンスを説明している。
【0053】
先ず初めにステップS601で、DSP230,231,232,233のどれであるかを特定するプロセッサID(以下、PRID)がDSP230に該当する「1」であるかを判断する。ここでDSP230でなかった場合はステップS606に進んで、同期処理に入る。
【0054】
一方、ステップS601で、DSP230であると判定するとステップS602に進み、バンド情報をレジスタ242及びメインメモリ202から取得する。次にステップS603に進み、処理すべき画像データが格納されているメインメモリ202のアドレスを計算する。そしてステップS604で、その求めたメインメモリ202のアドレスから共有ローカルメモリ240へ画像データを転送するためにDMAC(DMAコントローラ)239を起動する。そしてステップS605で、DMA転送の終了を待ち、DMA転送が終了するとステップS606に進み、同期回路241を用いた同期処理を行う。この同期処理については後で詳しく説明する。こうしてステップS601〜S606を実施することで、DSP230,231,232,233を同じシーケンスで、かつ排他的に動作させて画像データをメインメモリ202から共有ローカルメモリ240へDMA転送することができる。
【0055】
こうしてステップS606で、同期が取れると、DSP230〜233が処理すべき画像データが共有ローカルメモリ240へ格納されていることになる。次にステップS607に進み、画像データの処理単位を非エリア処理サイズへ切り替え、次にステップS608で、画像データの色変換を行う。ここで色変換は非エリア処理であるため、処理後の画像データは、各対応する固有ローカルメモリ234,235,236,237に書き出される。続いてステップS609に進んで無彩色判定を行い、次にステップS610で同期処理を行う。ここで無彩色判定は非エリア処理であるが、ステップS612以降の画像処理がエリア処理となるため、処理後の画像データの出力先は共有ローカルメモリ240となる。次にステップS611に進み、エリア処理サイズへの切替を行う。そしてステップS612で、空間フィルタ処理を実施する。ここでエリア処理は、DSP230,231,232,233が互いに重複した画素を参照するため、競合を避けるために出力画像データは固有ローカルメモリ234,235,236,237へ出力される。
【0056】
次にステップS613に進んで同期処理を実施する。次にステップS614に進み、エリア処理のために固有ローカルメモリ234,235,236,237から共有ローカルメモリ240へ画像データを移動する。次にステップS615で同期処理を行い、ステップS616で、線形補間処理が行われる。次にステップS617で同期処理が行われ、同期が取れるとステップS608に進み、固有ローカルメモリ234〜237から共有ローカルメモリ240へ画像データを移動する。そしてステップS619で同期処理を行って同期が取れるとステップS620に進み、非エリア処理サイズへ切り替え、ステップS621で、LUT変換処理を行う。次にステップS622で同期処理を行った後、ステップS623で、PRIDを判断する。ここでPRIDが、DSP230を示していなければ(「1」でなければ)ステップS627に進み、バンド処理が終了したかを判断する。
【0057】
一方ステップS623で、PRIDがDSP230を示していればステップS624に進み、処理済みの画像データの出力アドレス(メインメモリ202のアドレス)を計算する。次にステップS625に進み、共有ローカルメモリ240に格納した処理済みの画像データをメインメモリ202に転送するためにDMAC239を起動する。そしてステップS626でDMA転送の終了を待ち、DMA転送が終了するとステップS627に進んで、1バンド分の画象データの処理が終了したかどうかを判断する。ここで1バンド分の画像データの処理が終了していなければステップS601に進み、次の矩形処理のためにPRIDの判断を行う。一方、ステップS627で、バンド処理が終了していればCPU210,211へ割込みを発行して処理を終了する。
【0058】
このようにして、DSP230,231,232,233が同じデータ量の画像データに対して並行して共通する処理を行うことができる。特に、各DSPにおける処理完了の時差を少なくし、オーバーヘッドの小さい同期回路241を用いることで、同期処理による待ち合わせ時間を小さくでき、より効率的な処理が可能となる。
【0059】
図7は、本実施形態に係るMFP201のDSPサブシステム209によるプリント画像処理におけるDSP230,231,232,233の処理シーケンスを示したフローチャートである。
【0060】
先ず初めにステップS701で、DSP230,231,232,233のどれであるかを特定するプロセッサID(PRID)がDSP230に該当する「1」であるかを判定する。DSP230でなかった場合はステップS706の同期処理に進む。一方ステップS701で、DSP230であると判定した場合はステップS702に進み、バンド情報をレジスタ242及びメインメモリ202から取得する。次にステップS703で、処理すべき画像データのアドレスを計算する。そしてステップS704で、その求めたメインメモリ202のアドレスから共有ローカルメモリ240へ画像データを転送するためにDMAC239を起動する。そしてステップS705で、DMA転送が終了したかどうかを判断し、DMA転送が終了したと判断するとステップS706に進み、同期回路241を用いた同期処理を行う。このようにステップS701〜S706を実施することで、DSP230,231,232,233を同じシーケンスでかつ排他的にDMA転送を実現できる。こうしてステップS706で同期が取れると、DSP230〜233が処理すべき画像データが共有ローカルメモリ240へ格納されていることになる。
【0061】
次にステップS707に進み、画像データの処理単位をエリア処理サイズへ切り替える。そしてステップS708で線形補間処理を行う。続いてステップS709に進み、非エリア処理サイズへ切り替え、ステップS710でlog変換処理を実行する。次にステップS711に進んで出力色の変換処理、次にステップS712で、載り量制御処理を行う。次にステップS713に進んで同期処理を行って同期が取れるとステップS714でエリア処理サイズへ切り替え、ステップS715で、スクリーン処理を実施する。次にステップS716に進み、同期処理を実施する。その後ステップS717に進み、固有ローカルメモリ234〜237から共有ローカルメモリ240へ処理済みの画像データを転送する。次にステップS718で同期処理を行う。
【0062】
次にステップS719に進んでステップS701と同様にPRIDを判別する。ここでPRIDがDSP230を示していなければ(「1」でなければ)ステップS723に進んでバンドの終了かどうかを判断する。一方、ステップS719で、PRIDがDSP230を示していればステップS720に進み、処理済みの画像データの格納アドレスを計算する。次にステップS721に進み、共有ローカルメモリ240に格納した処理済みの画像データをメインメモリ202に転送するためにDMAC239を起動する。そしてステップS722で、DMA転送の終了を待ち、DMA転送が終了するとステップS723に進んで、バンド処理が終了したかどうかを判断する。ここでバンド処理が終了していないと判断すると、次の矩形画像の画像データの処理のためにステップS701のPRIDの判断に戻るが、バンド処理が終了していれば、CPU210,211へ割込みを発行して、この処理を終了する。
【0063】
図8は、本実施形態1に係るDSP230,231,232,233における同期処理のシーケンスを示したフローチャートである。この同期処理は、図6のステップS606,S610,S615,S617,S619,S622、及び図7のステップS706,S713、S716,S718等の処理に該当している。
【0064】
先ず初めにステップS801で、同期リクエスト信号reqをセットする。次にステップS802で、同期回路241から戻される同期リクエスト信号の論理積req_andが「1」になるまで待つ。ここで同期リクエスト信号の論理積が「1」となるとステップS803に進み、同期アック信号ackをセットする。そしてステップS804で、同期回路241から戻される同期アック信号の論理積ack_andが「1」となるまで待つ。ステップS804で、同期アック信号の論理積が「1」となるとステップS805に進み、同期リクエスト信号reqをクリアする。そしてステップS806に進み、同期アック信号ackをクリアして、この同期処理を終了する。
【0065】
図9は、本実施形態1に係るDSP230〜234と同期回路241との接続及び同期回路241の構成を説明する回路図である。
【0066】
DSP230,231,232,233,234からそれぞれ同期リクエスト信号reqと同期アック信号ackが同期回路241へ入力される。AND回路901は、各DSPから出力される同期リクエスト信号reqの論理積を取っている。AND回路902は、各DSPから入力される同期アック信号ackの論理積を取っている。そして、これらAND回路901と902の出力が、それぞれ独立にDSP230,231,232,233へ入力されている。
【0067】
これら図8と図9とを参照すると、各DSPは、同期リクエスト信号reqを発行し、他のDSPの全てが同期リクエスト信号reqを発行するのを待つ。こうして全てのDSPが同期リクエスト信号reqを発行したことを確認すると、同期アック信号(同期応答)ackを発行する。そして他のDSPの全てが同期アック信号ackを発行したことを確認すると、全てのDSPとの処理の同期が取れたと確認して、自DSPが出力している同期リクエスト信号reqと同期アック信号ackとをクリア(リセット)する。
【0068】
図10は、本実施形態に係る同期回路241の動作を説明するタイミングチャートである。
【0069】
この例では、2クロック目にDSP230及びDSP233がそれぞれの同期リクエスト信号reqをセットしている(T1)。そして1クロック周期遅れてDSP232が同期リクエスト信号reqをセットしている(T2)。そして最後に4クロック目で、DSP231が同期リクエスト信号reqをセットする(T3)。これによりDSP230,231,232,233の同期リクエスト信号reqの論理積rec_andが「1」がAND回路901から出力される(T3)。これによりDSP230,232,233は、同期リクエスト信号reqの論理積が「1」になったことを検出し、次のサイクル以降で、各DSPが同期アック信号ackを「1」にセットする。図10では、DSP230,232,233が同期アック信号ackをセットしている(T4)。そして次にDSP231が、他のDSPよりも1クロック遅れて同期アック信号ackをセットしており、これによりAND回路902の出力が「1」となる(T5)。DSP230,232,233は、この同期アック信号の論理積が「1」になることによって同期終了を検出し、それぞれの同期リクエスト信号をクリアし(T6)、続くサイクルで同期アック信号をクリアする(T7)。次にDSP231も1クロック遅れて同期リクエスト信号reqをクリアし(T7)、続くサイクルで同期アック信号ackをクリアする(T8)。このような動作によってDSP間の同期が取られる。
【0070】
図11は、本実施形態1に係る各DSPによるデータの扱いと、メインメモリ、共有ローカルメモリ、固有ローカルメモリの関係を説明する模式図である。
【0071】
メインメモリ202に格納されたJPEG圧縮画像データ1100は、JPEGデコーダ222によってメインメモリ202に確保されたリングバッファ領域1101に展開される。こうしてリングバッファ領域1101に展開された画像データの一部領域1102がDMAC239によって共有ローカルメモリ240へ転送される。こうして共有ローカルメモリ240に格納されたN(=4)個の矩形画像データとその周辺画素に対して、DSP230〜243によって画像処理が施される。DSP230〜243のそれぞれは、処理の状況によって画像データの一部を固有ローカルメモリ234〜237のそれぞれに出力する。そして、各DSPは、各対応する固有ローカルメモリで画像処理を繰り返し、最終的な処理済みの画像データを共有ローカルメモリ240に戻す。こうして共有ローカルメモリ240に格納された画像処理後の画像データは、DMAC239によってメインメモリ202の出力画像リングバッファ領域1103に転送される。この出力画像リングバッファ領域1103に格納された画像処理後の画像データの1バンド分の処理を終えると、JBIGエンコーダ223によりJBIG圧縮がなされ、圧縮後の画像データ1104がメインメモリ202の出力画像領域へ格納される。
【0072】
図12(A)(B)は、本実施形態1に係るエリア処理と非エリア処理での各DSPによる処理単位の切替を説明する模式図である。
【0073】
図12(A)は、注目画素のデータのみを参照して計算する非エリア処理時のDSP230,231,232,233での処理単位分割を示している。DSPサブシステム208(209)内のDSPの数N(=4)とする。また前述したように、矩形画像の幅をA[pixel]、矩形画像の高さをB[pixel]とする。また、エリア処理に必要な画像データの重複幅をH[pixel]、エリア処理に必要な入力画像の重複高さをV[pixel]とすると、各DSPが処理する画像データのサイズは以下の式で示される。
・画像幅 (A[pixel]×N+2×H[pixel])÷N
・画像高さ B[pixel]+2×V[pixel]
図12(B)は、注目画素の周辺の画素を参照して計算するエリア処理時のDSP230,231,232,233での処理単位分割を示している。ここでもN(=4)、A[pixel]、B[pixel]、H[pixel]、V[pixel]は前述した通りである。ここで各DSPが処理する画像データのサイズは以下の式で示される。
・入力画像幅 A[pixel]+2×H[pixel]
・入力画像高さ B[pixel]+2×V[pixel]
・出力画像幅 A[pixel]
・出力画像高さ B[pixel]
図12(B)において、1200,1201,1202,1203のそれぞれは、各DSP230,231,232,233が入力する画像の幅を示している。そして1204,1205,1206,1207のそれぞれは、各DSP230,231,232,233が出力する処理済みの画像データを示している。
【0074】
このように非エリア処理時では、各DSPは、N個分の矩形画像データの幅(A[pixel]×N+2×H[pixel])をN等分し、それぞれの高さが(B[pixel]+2×V[pixel])の画像データを処理する。一方、エリア処理では、各DSPは、重複幅をH[pixel]を含む(A[pixel]+2×H[pixel])幅で、高さが(B[pixel]+2×V[pixel])の画像データを入力して処理する。そしてその処理結果として、幅A[pixel]、高さB[pixel]の矩形画像データを出力する。
【0075】
図13は、本実施形態1に係るMFPのPDLプリント動作時におけるCPU210,211の処理シーケンスを示したフローチャートである。この処理を実行するプログラムは、その実行時にはメインメモリ202に格納されている。
【0076】
先ずステップS1301で、DSPサブシステム208のDSP230,231,232,234のファームウェアをメインメモリ202に用意し、次にステップS1302に進み、DSPサブシステムを起動する。次にステップS1303で、ネットワークインターフェース219或はUSBインターフェース218を介してホストコンピュータから送られてくるPDLデータを受信する。次にステップS1304に進んでPDLデータを解析し、ディスプレイリスト(DisplayList)をメインメモリ202に生成する。次にステップS1305に進み、DSPサブシステム208にバンドのレンダリング処理を依頼する。そしてステップS1306で、DSPサブシステム208から1バンド処理の終了割込みが入るのを待つ。終了割り込みが入力されるとステップS1307に進み、JPEGエンコーダ221のリソース空き状況を確認して、JPEGエンコーダ221が空いているとステップS1308に進む。ステップS1308では、JPEGエンコーダ221を起動し、DSPサブシステム208でレンダリングされたバンドの圧縮を開始する。
【0077】
次にステップS1309に進み、そのバンドで1ページの終了か否かを判断し、1ページの終了でなければステップS1305に進む。ステップS1305では、次のバンドのレンダリング処理をDSPサブシステム208に依頼する。一方ステップS1309で、ページ終了であればステップS1301に進み、図4で示したプリント画像処理を起動する。次にステップS1311に進み、連続ページ処理が終了か否かを判断し、終了でなければステップS1304に進み、次のページのPDLデータの解析及びディスプレイリストの生成を実施する。そしてステップS1311で、連続ページ終了であれば、この処理を終了する。
【0078】
図14は、本実施形態1に係るMFPのレンダリング処理におけるDSP230〜233の処理シーケンスを示したフローチャートである。
【0079】
先ずステップS1401で、メインメモリ202からディスプレイリスト情報を取得する。次にステップS1402に進み、固有ローカルメモリ234もしくは235もしくは236もしくは237を白色画素で初期化する。次にステップS1403に進み、そのディスプレイリスト情報に基づいて、順次グラフィックオブジェクト情報をメインメモリ202に格納されたディスプレイリストから取得する。そしてグラフィックオブジェクトを固有ローカルメモリの矩形画像キャンバスに描画する。次にステップS1404で、描画オブジェクトが終了したか否かを判断し、終了でなければステップS1403に進んで次の描画オブジェクトを描画する。
【0080】
一方、ステップS1404で描画オブジェクトが終了するとステップS1405に進み、固有ローカルメモリ234もしくは235もしくは236もしくは237に描画された矩形画像の画像データを共有ローカルメモリ240へ移動する。そしてステップS1406で、前述した同期処理を行う。次にステップS1407に進んで、プロセッサIDを判断し、プロセッサIDがDSP230でなければステップS1411のバンド終了の判断に移行する。一方、プロセッサIDがDSP230であればステップS1408に進み、処理済みの画像データを転送するメインメモリ202のアドレスを計算する。次にステップS1409に進み、ステップS1408で計算したアドレスに従ってDMAC239を起動する。そしてステップS1410で、DMA転送の終了を待つ。ここでDMA転送が終了するとステップS1411に進み、全てのバンドを描画したかを判断する。全てのバンドの描画終了でなければステップS1401に進み、次の矩形画像に相当するディスプレイリスト情報を取得して、前述した処理を実行する。一方、バンド終了であればステップS1412に進み、CPU210,211へ終了の割込みを発行して、この処理を終了する。
【0081】
以上説明したように本実施形態1によれば、複数のプロセッサ(DSP)によるメインメモリへのアクセスが集中するのを抑えることができるため、プロセッサの数の増加によるスループットの低下を防止できる。
【0082】
また処理対象の矩形画像に対する周辺画素を参照しない画像処理の場合は固有ローカルメモリで処理し、周辺画素を参照する画像処理の場合は共有ローカルメモリに記憶されている画像データを参照するため、各プロセッサの処理効率を高めることができる。
【0083】
[実施形態2]
図15は、本発明の実施形態2に係るMFP201の構成を示したブロック図で、前述の図1と共通する部分は同じ記号で示している。この実施形態2では、DSPサブシステム1601,1602がそれぞれ5個のDSPを有している点が、前述の実施形態1と異なっている。
【0084】
先ずコピー動作の場合の動作を説明する。
【0085】
ユーザが操作部(UI)205を使用してコピー動作を指示すると、その指示が、UIコントローラ220、割り込みコントローラ213を経由してCPU210,211に伝えられる。CPU210又はCPU211は、先ず最初にスキャナインターフェース(I/F)226を起動し、続いてスキャナ207を起動してコピー対象の原稿のスキャン動作を開始する。こうしてスキャナ207によって読み取られた原稿の画像データは、スキャナインターフェース226を経由してメインメモリ202に格納される。このとき、所定のラインまで画像データを読み込んだことを知らせる割り込みが、スキャナインターフェース226から割り込みコントローラ213を経由してCPU210,211に通知される。CPU210,211は、スキャナ207で読み取った画像データの処理(スキャン画像処理)を行うために、予めスキャン画像処理を実施するためのファームウェアをメインメモリ202にロードして起動しておく。これにより起動されるファームウェアは、DSPサブシステム1601に該当している。そしてDSPサブシステム1601に、スキャン画像処理の最初のバンド処理を指示する。
【0086】
DSPサブシステム1601は、CPU210或は211からの指示に従って、スキャン画像処理を開始し、1バンドの画像処理が終了したならば、CPU210,211に割り込みにより終了を通知する。これによりCPU210或は211は、DSPサブシステム1601からの1バンドの画像処理の終了に応答して、JPEGエンコーダ221を起動して画像データの圧縮を開始する。これらの処理を繰り返し、スキャン画像がJPEG圧縮されてメインメモリ202に格納されると、次にCPU210或は211はJPEGデコーダ222を起動して画像データの伸張(復号)を開始する。JPEGデコーダ222はメインメモリ202に格納されたJPEG画像データを伸張し、その非圧縮画像データをメインメモリ202に書き戻す。JPEGデコーダ222は、予め指定された画像データのラインまでの伸張が終了すると、割込みによりCPU210,211に通知する。この割り込みを受けたCPU210或は211は、予めプリンタ206用の印刷データを作成するプリント画像処理のためのファームウェアを用いて起動しているDSPサブシステム1602にプリント画像処理を指示する。これによりDSPサブシステム1602は、メインメモリ202の画像データに対してプリント画像処理を開始し、画象処理後のハーフトーン画像をメインメモリ202に格納する。こうしてDSPサブシステム1602は、処理対象のバンド画像の処理を終えるとCPU210,211にバンド処理終了の割込みを発行する。
【0087】
CPU210或は211は次に、ハーフトーン画像を圧縮するためにJBIGエンコーダ223を起動する。ここでJBIG圧縮はCMYK各色ごとに実施される。これらを繰り返しJPEG圧縮された画像データに印刷画像処理を施して各色毎のJBIG圧縮データを得てメインメモリ202に格納する。次にCPU210或は211は、JBIGデコーダ224を起動してJBIG圧縮画像データの伸張を開始する。JBIGデコーダ224は、所定のラインまで伸張を終えるとCPU210,211に割込みで通知する。これによりCPU210或は211は、プリンタインターフェース225及びプリンタ206を起動し、その伸張されたハーフトーン画像データをプリンタ206に出力して印刷する。以上がコピー動作の説明である。
【0088】
次に、ホストコンピュータからPDLデータを受信して印刷するネットワークプリンタとしての動作を説明する。
【0089】
ホストコンピュータよりネットワークインターフェース(I/F)219もしくはUSBインターフェース(I/F)218を経由してPDLデータが送られてくると、CPU210或は211はPDLデータを一旦メインメモリ202に格納する。その後、そのPDLデータの解析を開始し、ディスプレイリストをメインメモリ202に作成する。CPU210或は211は、そのディスプレイリストから印刷用画像データを生成するため、予めレンダリング処理のファームウェアを用いて起動してあるDSPサブシステム1601を起動してレンダリング処理を開始する。このときDSPサブシステム1601は、メインメモリ202に格納されたディスプレイリストを解釈して印刷用画像データを生成する。こうして印刷用画像データの所定のラインまでの生成が終わった後、DSPサブシステム1601は、割込みをCPU210,211に発行する。これによりCPU210或は211は、そのレンダリングされた印刷用画像データの最初のバンドを圧縮するためJPEGエンコーダ221を起動する。JPEGエンコーダ221は、所定のバンドまで圧縮すると、割込みによりCPU210,211に通知する。これらの処理を繰り返すことにより、ページ全面の印刷用画像データが生成され、JPEGデータとしてメインメモリ202に格納される。
【0090】
次にCPU210或は211は、JPEGデコーダ222を起動して印刷用画像データの伸張を開始する。JPEGデコーダ222は、メインメモリ202に格納されたJPEG圧縮画像データを伸張(復号)し、非圧縮画像データとしてメインメモリ202に書き戻す。こうしてJPEGデコーダ222は、予め指定された画像データのラインまでの伸張処理が達すると、割込みによりCPU210,211に通知する。この割り込みを受けたCPU210或は211は、予めプリント画像処理用にファームウェアを用いて起動してあるDSPサブシステム1602にプリント画像処理を指示する。
【0091】
DSPサブシステム1602は、メインメモリ202の伸張済みの画像データに対してプリント画像処理を開始し、画像処理後のハーフトーン画像を作成してメインメモリ202に格納する。こうしてDSPサブシステム1602は、処理対象のバンド画像の処理を終えると、CPU210,211にバンド処理終了の割込みを発行する。これによりCPU210或は211は、そのハーフトーン画像を圧縮するためにJBIGエンコーダ223を起動する。ここでJBIG圧縮はCMYK各色ごとに実施される。これらを繰り返しJPEG圧縮画像データに印刷画像処理を施して各色毎のJBIG圧縮データが生成され、メインメモリ202に格納される。次にCPU210或は211は、JBIGデコーダ224を起動してJBIG圧縮画像データの伸張を開始する。JBIGデコーダ224は、所定のラインまで伸張を終えるとCPU210,211に割込みを発行する。これによりCPU210或は211は、プリンタインターフェース225及びプリンタ206を起動し、その伸張されたハーフトーン画像データを印刷する。
【0092】
次にファクシミリ送信処理について説明する。
【0093】
操作部205を操作してユーザがファクシミリ送信を指示すると、UIコントローラ220、割り込みコントローラ213を経由してCPU210,211に伝えられる。CPU210或はCPU211は、まずスキャナインターフェース226を起動し、続いてスキャナ207を起動して送信原稿のスキャン動作を開始する。こうしてスキャナ207によって読み取られた原稿の画像データは、スキャナインターフェース226を経由してメインメモリ202に格納される。このときスキャナインターフェース226から所定のラインまで届いたことを知らせる割り込みが、割り込みコントローラ213を経由してCPU210,211に通知される。これによりCPU210或は211は、スキャン画像処理を行うために、予めスキャン画像処理を実施するためのファームウェアをメインメモリ202にロードし起動しておいたDSPサブシステム1601に、スキャン画像処理の最初のバンド処理を指示する。DSPサブシステム1601は、CPU210或は211からの指示に従ってスキャン画像処理を開始し、バンドの画像処理が終了するとCPU210,211に終了の割込みを発行する。こうしてCPU210或は211は、DSPサブシステム1601からバンドのスキャン画像処理の終了割込みを受け取る。
【0094】
次にCPU210或は211は、ファクシミリ送信を行うために、予め解像度変換及び二値化及びMMR圧縮のファクシミリデータ生成処理を実施するためのファームウェアをメインメモリ202にロードして起動している。このファームウェアはDSPサブシステム1602であり、これに対してファクシミリデータ生成処理の最初のバンド処理を指示する。これによりDSPサブシステム1602は、CPU210或は211からの指示に従って、ファクシミリデータの生成処理を開始し、1ページのファクシミリデータが生成されるとCPU210,211に終了の割込みを発行する。こうしてCPU210或は211は、DSPサブシステム1602からファクシミリデータの生成処理の終了割込みを受け取る。そしてメインメモリ202に格納されたファクシミリデータをROMコントローラ217に接続されたファクシミリ(Fax)モデム204を介して通信網に送信する。
【0095】
図16(A)(B)は、本実施形態2におけるエリア処理と非エリア処理での処理単位切替を示した模式図である。
【0096】
図16(A)は、非エリア処理時のDSP230,231,232,233,1603での処理単位分割例を示している。ここでDSP1603は図16(A)に示すように、共有ローカルメモリ240の画像データの先頭と末尾の重複部分の画像データを処理するように割り当てられている。このDSPサブシステムのDSPの数N(=5)、矩形画像の幅をA[pixel]、矩形画像の高さをB[pixel]とする。また、エリア処理に必要な入力画像の重複幅をH[pixel]、エリア処理に必要な入力画像の重複高さをV[pixel]とする。このとき各DSPが処理する画像データのサイズは以下の式で示される。
(1)DSP230〜233の場合
・画像幅 A[pixel]
・画像高さ B[pixel]+2×V[pixel]
(2)DSP1603の場合
・画像幅 2×H[pixel]
・画像高さ B[pixel]+2×V[pixel]
図16(B)は、エリア処理時のDSP230,231,232,233での処理単位の分割例を示している。DSPサブシステムのDSPの数N、矩形画像の幅をA[pixel]、矩形画像の高さをB[pixel]とする。またエリア処理に必要な入力画像の重複幅をH[pixel]、エリア処理に必要な入力画像の重複高さをV[pixel]とする。この場合、各DSPが処理する画像のサイズは以下の式で示される。この実施形態2では、DSP1603はエリア処理を実施しないものとする。
(1)DSP230,231,232,233の場合
・入力画像幅 A[pixel]+2×H[pixel]
・入力画像高さ B[pixel]+2×V[pixel]
・出力画像幅 A[pixel]
・出力画像高さ B[pixel]
これは前述の実施の形態1の図12(B)と同じである。
【0097】
図17は、本実施の形態2に係るDSP1603によるプリント画像処理の処理シーケンスを示したフローチャートである。尚、この場合、DSP230,231,232,233は、前述の図7のフローチャートで示す処理を実施する。
【0098】
まず初めにステップS1801で、DSP230,231,232,233との同期処理を実施する。次にステップS1802に進み、log変換処理を実施する。次にステップS1803に進んで出力色変換処理を実施し、更にステップS1804に進んで、載り量制御処理を実施する。これらの処理ステップは、図17(A)で示されたDSP1603の処理範囲に対して実施される。次にステップS1805〜S1807で、DSP230,231,232,233のシーケンスに従って同期処理を3回実施する。そしてステップS1808に進み、バンドの終了か否かを判断する。ここでバンド終了でなければステップS1801に進の同期処理に進み、前述した処理を実行する。そしてステップS1808でバンド終了になるとステップS1809に進み、CPU210、211に終了割込みを発行して、この処理を終了する。
【0099】
図18(A)(B)は、本実施形態2に係るDMAC239によるDRAMのメモリアクセスパターンを説明する模式図である。
【0100】
図18(A)は、メインメモリ(DRAM)202から固有ローカルメモリ234,235,236,237へ周辺画素も含む矩形画像を転送した場合のメモリアクセスパターンを示している。図に示したポイントにおいてメモリのページミスが発生する。
【0101】
図18(B)は、メインメモリ202から共有ローカルメモリ240へ周辺画素も含むN個の矩形画像を転送した場合のメモリアクセスパターンを説明する図である。
【0102】
図示したポイントにおいてメモリのページミスが発生する。
【0103】
このように共有ローカルメモリに転送することにより、メモリのページミスがN分の1に減少している。このことによりメモリ転送効率が向上する。
【0104】
(他の実施形態)
以上、本発明の実施形態について詳述したが、本発明は、複数の機器から構成されるシステムに適用しても良いし、また一つの機器からなる装置に適用しても良い。
【0105】
なお、本発明は、前述した実施形態の機能を実現するソフトウェアのプログラムを、システム或いは装置に直接或いは遠隔から供給し、そのシステム或いは装置のコンピュータが該供給されたプログラムを読み出して実行することによっても達成され得る。その場合、プログラムの機能を有していれば、形態は、プログラムである必要はない。
【0106】
従って、本発明の機能処理をコンピュータで実現するために、該コンピュータにインストールされるプログラムコード自体も本発明を実現するものである。つまり、本発明のクレームでは、本発明の機能処理を実現するためのコンピュータプログラム自体も含まれる。その場合、プログラムの機能を有していれば、オブジェクトコード、インタプリタにより実行されるプログラム、OSに供給するスクリプトデータ等、プログラムの形態を問わない。
【0107】
プログラムを供給するための記録媒体としては、様々なものが使用できる。例えば、フロッピー(登録商標)ディスク、ハードディスク、光ディスク、光磁気ディスク、MO、CD−ROM、CD−R、CD−RW、磁気テープ、不揮発性のメモリカード、ROM、DVD(DVD−ROM,DVD−R)などである。
【0108】
その他、プログラムの供給方法としては、クライアントコンピュータのブラウザを用いてインターネットのホームページに接続し、該ホームページからハードディスク等の記録媒体にダウンロードすることによっても供給できる。その場合、ダウンロードされるのは、本発明のコンピュータプログラムそのもの、もしくは圧縮され自動インストール機能を含むファイルであってもよい。また、本発明のプログラムを構成するプログラムコードを複数のファイルに分割し、それぞれのファイルを異なるホームページからダウンロードすることによっても実現可能である。つまり、本発明の機能処理をコンピュータで実現するためのプログラムファイルを複数のユーザに対してダウンロードさせるWWWサーバも、本発明のクレームに含まれるものである。
【0109】
また、本発明のプログラムを暗号化してCD−ROM等の記憶媒体に格納してユーザに配布する形態としても良い。その場合、所定の条件をクリアしたユーザに対し、インターネットを介してホームページから暗号化を解く鍵情報をダウンロードさせ、その鍵情報を使用することにより暗号化されたプログラムが実行可能な形式でコンピュータにインストールされるようにする。
【0110】
また、コンピュータが、読み出したプログラムを実行することによって、前述した実施形態の機能が実現される形態以外の形態でも実現可能である。例えば、そのプログラムの指示に基づき、コンピュータ上で稼動しているOSなどが、実際の処理の一部または全部を行ない、その処理によっても前述した実施形態の機能が実現され得る。
【0111】
更に、記録媒体から読み出されたプログラムが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれるようにしてもよい。この場合、その後で、そのプログラムの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるCPUなどが実際の処理の一部または全部を行ない、その処理によって前述した実施形態の機能が実現される。
【図面の簡単な説明】
【0112】
【図1】本実施形態に係る矩形画像とその重複部を説明する模式図で、図1(A)は、重複した矩形画像とページ全体との関係を示す図で、図1(B)は、重複した矩形画像と、処理対象の矩形画像との関係を説明する図である。
【図2】本実施形態に係るMFPの構成を示したブロック図である。
【図3】本実施形態1に係るMFPのコピー動作時においてCPUで実行されるシーケンスを説明するフローチャートである。
【図4】本実施形態1に係るMFPのプリント画像処理においてCPUで実行されるシーケンスを説明するフローチャートである。
【図5】本実施形態に係るMFPの印刷処理におけるCPUの処理シーケンスを示したフローチャートである。
【図6】本実施形態1に係るMFPのDSPサブシステムによるスキャン画像処理を説明するフローチャートである。
【図7】本実施形態1に係るMFPのDSPサブシステムによるプリント画像処理における各DSPの処理シーケンスを示したフローチャートである。
【図8】本実施形態1に係るDSPにおける同期処理のシーケンスを示したフローチャートである。
【図9】本実施形態1に係るDSPと同期回路との接続及び同期回路の構成を説明する回路図である。
【図10】本発明の実施形態に係る同期回路の動作を説明するタイミングチャートである。
【図11】本実施形態1に係る各DSPによるデータの扱いと、メインメモリ、共有ローカルメモリ、固有ローカルメモリの関係を説明する模式図である。
【図12】本実施形態1に係るエリア処理と非エリア処理での各DSPによる処理単位の切替を説明する模式図である。
【図13】本実施形態1に係るMFPのPDLプリント動作時におけるCPUの処理シーケンスを示したフローチャートである。
【図14】本実施形態に係るMFPのレンダリング処理におけるDSPの処理シーケンスを示したフローチャートである。
【図15】本発明の実施形態2に係るMFPの構成を示したブロック図である。
【図16】本実施形態2におけるエリア処理と非エリア処理での処理単位切替を示した模式図である。
【図17】本実施の形態2に係るDSPによるプリント画像処理の処理シーケンスを示したフローチャートである。
【図18】本実施形態2に係るDMACによるDRAMのメモリアクセスパターンを説明する模式図である。
【特許請求の範囲】
【請求項1】
メインメモリと複数のプロセッサとを有し、前記複数のプロセッサにより並行して画像処理を行う画像処理装置であって、
前記複数のプロセッサのそれぞれに設けられ、各プロセッサが独立してアクセス可能な固有メモリと、
前記複数のプロセッサが共通してアクセス可能な共有メモリと、
前記メインメモリと前記共有メモリとの間で画像データを転送する転送手段とを有し、
前記各プロセッサは、
前記転送手段により前記共有メモリに転送された画像データのうち、当該プロセッサの処理対象の画像データを当該プロセッサに対応する前記固有メモリに転送して画像処理を行って前記共有メモリに書き戻し、
当該プロセッサの処理対象の画像データの周辺画像データを参照する画像処理の場合は、前記共有メモリに格納されている画像データを参照することを特徴とする画像処理装置。
【請求項2】
前記複数のプロセッサ間の処理の同期をとるための同期手段を更に有することを特徴とする請求項1に記載の画像処理装置。
【請求項3】
前記同期手段は、前記複数のプロセッサの全てが同期リクエスト信号を発行したことに応じて、前記複数のプロセッサの全てから同期応答が発行されたことを前記複数のプロセッサに通知することを特徴とする請求項2に記載の画像処理装置。
【請求項4】
前記処理対象の画像データの周辺画像データを参照する画像処理の場合に、前記共有メモリに記憶された画像データの先頭と末尾の重複部分の画像データを処理するプロセッサを更に有することを特徴とする請求項1に記載の画像処理装置。
【請求項5】
前記処理対象の画像データの高さをB[pixel]、幅をA[pixel]、周辺画像データを参照する画像処理に必要な画像データの重複幅をH[pixel]、周辺画像データを参照する画像処理に必要な画像データの重複高さをV[pixel]としたとき、
前記共有メモリの容量は式(1)で得られる容量よりも多く、
(A[pixel]×N+2×H[pixel])×(B[pixel]+2×V[pixel])×P[byte]×1[bank] …式(1)
(A[pixel]×N+2×H[pixel])÷N)×(B[pixel]+2×V[pixel])×P[byte]×1[bank] …式(2)
ここで、P[byte]は1画素データのバイト数を示し、
前記固有メモリの容量が、式(2)で得られる容量よりも多いことを特徴とする請求項1乃至4のいずれか1項に記載の画像処理装置。
【請求項6】
メインメモリと複数のプロセッサとを有し、前記複数のプロセッサにより並行して画像処理を行う画像処理装置の制御方法であって、
前記メインメモリから前記複数のプロセッサが共通してアクセス可能な共有メモリへ画像データを転送する転送工程と、
前記転送工程で前記共有メモリに転送された前記画像データのうち、各プロセッサの処理対象の画像データを当該各プロセッサに対応する、各プロセッサが独立してアクセス可能な固有メモリに転送する工程と、
各プロセッサが、前記固有メモリに転送された画像データに対して画像処理を行う処理工程と、
前記画像処理において、当該各プロセッサの処理対象の画像データの周辺画像データを参照する画像処理の場合は、前記共有メモリに格納されている画像データを参照する工程と、
処理済みの画像データを前記各プロセッサに対応する前記固有メモリから前記共有メモリに転送する工程と、
前記共有メモリの画像データが処理済みになると、当該画像データを前記メインメモリに転送する工程と、
を有することを特徴とする画像処理装置の制御方法。
【請求項7】
前記複数のプロセッサ間の処理の同期をとるための同期工程を更に有することを特徴とする請求項6に記載の画像処理装置の制御方法。
【請求項8】
前記同期工程では、前記複数のプロセッサの全てが同期リクエスト信号を発行したことに応じて、前記複数のプロセッサの全てから同期応答が発行されたことを前記複数のプロセッサに通知することを特徴とする請求項7に記載の画像処理装置の制御方法。
【請求項9】
前記処理対象の画像データの高さをB[pixel]、幅をA[pixel]、周辺画像データを参照する画像処理に必要な画像データの重複幅をH[pixel]、周辺画像データを参照する画像処理に必要な画像データの重複高さをV[pixel]としたとき、
前記共有メモリの容量は式(1)で得られる容量よりも多く、
(A[pixel]×N+2×H[pixel])×(B[pixel]+2×V[pixel])×P[byte]×1[bank] …式(1)
(A[pixel]×N+2×H[pixel])÷N)×(B[pixel]+2×V[pixel])×P[byte]×1[bank] …式(2)
ここで、P[byte]は1画素データのバイト数を示し、
前記固有メモリの容量が、式(2)で得られる容量よりも多いことを特徴とする請求項6乃至8のいずれか1項に記載の画像処理装置の制御方法。
【請求項1】
メインメモリと複数のプロセッサとを有し、前記複数のプロセッサにより並行して画像処理を行う画像処理装置であって、
前記複数のプロセッサのそれぞれに設けられ、各プロセッサが独立してアクセス可能な固有メモリと、
前記複数のプロセッサが共通してアクセス可能な共有メモリと、
前記メインメモリと前記共有メモリとの間で画像データを転送する転送手段とを有し、
前記各プロセッサは、
前記転送手段により前記共有メモリに転送された画像データのうち、当該プロセッサの処理対象の画像データを当該プロセッサに対応する前記固有メモリに転送して画像処理を行って前記共有メモリに書き戻し、
当該プロセッサの処理対象の画像データの周辺画像データを参照する画像処理の場合は、前記共有メモリに格納されている画像データを参照することを特徴とする画像処理装置。
【請求項2】
前記複数のプロセッサ間の処理の同期をとるための同期手段を更に有することを特徴とする請求項1に記載の画像処理装置。
【請求項3】
前記同期手段は、前記複数のプロセッサの全てが同期リクエスト信号を発行したことに応じて、前記複数のプロセッサの全てから同期応答が発行されたことを前記複数のプロセッサに通知することを特徴とする請求項2に記載の画像処理装置。
【請求項4】
前記処理対象の画像データの周辺画像データを参照する画像処理の場合に、前記共有メモリに記憶された画像データの先頭と末尾の重複部分の画像データを処理するプロセッサを更に有することを特徴とする請求項1に記載の画像処理装置。
【請求項5】
前記処理対象の画像データの高さをB[pixel]、幅をA[pixel]、周辺画像データを参照する画像処理に必要な画像データの重複幅をH[pixel]、周辺画像データを参照する画像処理に必要な画像データの重複高さをV[pixel]としたとき、
前記共有メモリの容量は式(1)で得られる容量よりも多く、
(A[pixel]×N+2×H[pixel])×(B[pixel]+2×V[pixel])×P[byte]×1[bank] …式(1)
(A[pixel]×N+2×H[pixel])÷N)×(B[pixel]+2×V[pixel])×P[byte]×1[bank] …式(2)
ここで、P[byte]は1画素データのバイト数を示し、
前記固有メモリの容量が、式(2)で得られる容量よりも多いことを特徴とする請求項1乃至4のいずれか1項に記載の画像処理装置。
【請求項6】
メインメモリと複数のプロセッサとを有し、前記複数のプロセッサにより並行して画像処理を行う画像処理装置の制御方法であって、
前記メインメモリから前記複数のプロセッサが共通してアクセス可能な共有メモリへ画像データを転送する転送工程と、
前記転送工程で前記共有メモリに転送された前記画像データのうち、各プロセッサの処理対象の画像データを当該各プロセッサに対応する、各プロセッサが独立してアクセス可能な固有メモリに転送する工程と、
各プロセッサが、前記固有メモリに転送された画像データに対して画像処理を行う処理工程と、
前記画像処理において、当該各プロセッサの処理対象の画像データの周辺画像データを参照する画像処理の場合は、前記共有メモリに格納されている画像データを参照する工程と、
処理済みの画像データを前記各プロセッサに対応する前記固有メモリから前記共有メモリに転送する工程と、
前記共有メモリの画像データが処理済みになると、当該画像データを前記メインメモリに転送する工程と、
を有することを特徴とする画像処理装置の制御方法。
【請求項7】
前記複数のプロセッサ間の処理の同期をとるための同期工程を更に有することを特徴とする請求項6に記載の画像処理装置の制御方法。
【請求項8】
前記同期工程では、前記複数のプロセッサの全てが同期リクエスト信号を発行したことに応じて、前記複数のプロセッサの全てから同期応答が発行されたことを前記複数のプロセッサに通知することを特徴とする請求項7に記載の画像処理装置の制御方法。
【請求項9】
前記処理対象の画像データの高さをB[pixel]、幅をA[pixel]、周辺画像データを参照する画像処理に必要な画像データの重複幅をH[pixel]、周辺画像データを参照する画像処理に必要な画像データの重複高さをV[pixel]としたとき、
前記共有メモリの容量は式(1)で得られる容量よりも多く、
(A[pixel]×N+2×H[pixel])×(B[pixel]+2×V[pixel])×P[byte]×1[bank] …式(1)
(A[pixel]×N+2×H[pixel])÷N)×(B[pixel]+2×V[pixel])×P[byte]×1[bank] …式(2)
ここで、P[byte]は1画素データのバイト数を示し、
前記固有メモリの容量が、式(2)で得られる容量よりも多いことを特徴とする請求項6乃至8のいずれか1項に記載の画像処理装置の制御方法。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【公開番号】特開2009−295032(P2009−295032A)
【公開日】平成21年12月17日(2009.12.17)
【国際特許分類】
【出願番号】特願2008−149760(P2008−149760)
【出願日】平成20年6月6日(2008.6.6)
【出願人】(000001007)キヤノン株式会社 (59,756)
【Fターム(参考)】
【公開日】平成21年12月17日(2009.12.17)
【国際特許分類】
【出願日】平成20年6月6日(2008.6.6)
【出願人】(000001007)キヤノン株式会社 (59,756)
【Fターム(参考)】
[ Back to top ]