(57)【要約】【課題】プロセッサを並列に実行してスループットを高めることが可能な画像処理装置を提供する。【解決手段】この発明の実施の一形態である画像処理方法は、メモリに展開された画像データを縦方向に分割し、それぞれを別のプロセッサで並列にＪＰＥＧ圧縮処理し、一定量の圧縮データが貯まる度に、非同期に一定量の符号データを書込み、また、メモリ上に自プロセッサが書き込んだことを識別可能な情報を記録することを特徴とする。【選択図】図３
2010073210.tif 000002
【特許請求の範囲】
【請求項１】
ＪＰＥＧ方式で、互いに直交する２方向についてマトリクス状に分割した複数の領域の画像データを独立して２以上のプロセッサにより並列に圧縮する画像処理方法において、
個々の画像データは、その領域の画像データを圧縮した際のプロセッサを特定する情報を含むことを特徴とする画像処理方法。
【請求項２】
ＪＰＥＧ方式で、互いに直交する２方向についてマトリクス状に分割された複数の領域毎に圧縮された画像データを伸長し、画像データに付属する圧縮時の情報に基づいて、分割前の位置に戻す、２以上のプロセッサにより並列して伸長する画像処理方法において、
個々の画像データに付属する圧縮時の情報は、圧縮時のプロセッサを特定可能な情報を含むことを特徴とする画像処理方法。
【請求項３】
ローカルメモリを持つ複数のプロセッサと、
前記プロセッサのそれぞれがアクセス可能な共有メモリと、
入力画像の一部、または、画像の全体を前記プロセッサの固有情報とともにメモリに格納する記憶制御部と、
格納された入力画像の一部または全体を、画像データをメモリ展開してアドレスが連続する方向に向かって垂直方向に沿って画像領域を分割し、それぞれの分割領域の画像データを、前記プロセッサのいずれか１つに割り当て、色変換、ＤＣＴ、量子化、ハフマン符号処理を行い、処理の結果生成されるハフマン符号データが一定量を超えた場合には、一定量のハフマン符号データを書出し、書出したプロセッサを識別可能なデータをメモリに書き込み、全てのプロセッサによる圧縮処理が完了した段階で、前記プロセッサを識別可能な書込み時プロセッサ情報を書き出し、圧縮データから、書込み時プロセッサ情報を読み込み、処理を行っているプロセッサに該当するデータだけを順に読み込みながら、ハフマン復号、逆量子化、逆ＤＣＴ、逆色変換処理を行い圧縮画像を伸長処理する画像処理部と、
を具備することを特徴とする画像処理装置。
【請求項４】
入力バッファ上の画像データを、縦方向に分割しそれぞれを異なるプロセッサで並列に処理させることを特徴とする請求項３記載の画像処理装置。
【請求項５】
上記並列に圧縮処理する際、プロセッサが持つローカルメモリに一定量の圧縮データが溜まったら他のプロセッサとの同期を取らずに書き込むことを特徴とする請求項３記載の画像処理装置。
【請求項６】
上記圧縮時、プロセッサが符号データ書込み時に、各プロセッサは、自身がデータを書き込んだことを識別できるデータを書き込むことを特徴とする請求項３記載の画像処理装置。
【請求項７】
画像データの復号の際、入力データに書き込まれた圧縮時の書込み時プロセッサ情報をもとにデータを順次よみながら複数プロセッサで並列画像復元ができることを特徴とする請求項３記載の画像処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、プロセッサを並列に実行してスループットを高めることが可能な画像処理装置に関する。
【背景技術】
【０００２】
ＭＦＰ（Multi-Functional peripheral、すなわち多機能周辺機器）と称される画像処理装置が広く普及している。
【０００３】
ＭＦＰにおいては、印刷等の画像処理の高速化、高解像度化がますます要求されつつある。さらに、ファクシミリ、イメージスキャナ等の機能を加えたＭＦＰも数多く市場に供給されており、大容量のデジタル画像データを高速に処理する必要性が大きくなってきている。
【０００４】
ＭＦＰにおいて行われる各種の画像処理は、一般に、数多くの演算をできるだけ高速に行う必要があり、処理速度の高速化の方法としては、一般に個々の演算処理を並列に実行することにより、全体としてのスループットを向上させる方法が有効であり、既に数多くの装置や方法が提案されている。
【０００５】
特許文献１（先行技術文献）には、画像をパケット（画像小区画と属性等とを含むデータ列）として生成し、各パケットを、複数のデータフロー型画像処理部を用いて並列処理する技術が提案されている。
【０００６】
特許文献２（先行技術文献）には、描画オブジェクト（図形、テキスト、画像など）毎に複数の処理ユニットに処理を並列実行させる画像処理装置が提案されている。
【０００７】
そして、この他にも、大量の画像データの高速処理に有効な方法として、処理ユニットを並列化して実行する方法がいくつか提案されている。これらの方法によれば、複数の画像パケットが個々の画像パケット毎に画像圧縮されるので、生成された個々の圧縮画像パケット（圧縮パケット）は、データ量が小さく、且つ独立して処理可能な１つの処理単位（画像単位）として扱うことが可能である。従って、圧縮画像パケットのデータ量が小さい場合には、ＭＦＰにおける利用や格納、或いは、通信ネットワークを介した転送等において利便性が高い。
【０００８】
また、画像パケットを圧縮する方法には、各種のアルゴリズムが存在するが、近年、ＪＰＥＧ（Joint Photographic Experts Group）方式が広く普及している。
【０００９】
ＭＦＰにＪＰＥＧ方式の画像圧縮を採用する大きな利点としては、市場において標準的に広く使われている方法であり、ハードウェア回路等の利用に際しても、これまでに蓄積された設計開発の過程で改善されたものを採用することができるとともに、信頼性や安定性が高く、装置内部でのデータ転送においてもフォーマットが確定しているので、ハードウェア／ソフトウェアの双方共に、設計信頼性／拡張性／再利用性が高いことが挙げられる。
【００１０】
このように、元画像の画像データを複数の画像パケットに分割すると共に、個々の画像パケット毎にＪＰＥＧ方式による画像圧縮（以下、「ＪＰＥＧ圧縮」と略称する）を施すことによって得られる圧縮画像パケットを用いて、並列処理を行う画像処理装置を用いれば、高速なデータ転送／処理を行うことができ、且つ高効率な容量で扱うことができる。
【００１１】
特許文献３（先行技術文献）には、画像データ圧縮処理であるＪＰＥＧ形式の圧縮に関して、１ページ画像の圧縮に関して、圧縮単位であるＭｃｕ（Minimum code unit）をグルーピングし、グループの圧縮符号データを、Ｍｃｕ間の依存関係をリセットするリスタートマーカーを、圧縮パケットに追加しながら、データを並列に処理する方式が提案されている。
【発明の概要】
【発明が解決しようとする課題】
【００１２】
文献１または文献２に示されたＪＰＥＧ圧縮は、上記のような利点があるが、圧縮データ長が可変であること、また、圧縮されるデータ間に依存関係があるため、圧縮・復号ともに画像先頭からの処理が必要であること、に起因して、複数プロセッサによる並列化での高速化が非常に難しい。
【００１３】
一方、文献３が開示する方式では、Ｍｃｕグループの符号化データ書出し毎に、符号データ長を一定長に揃えるため、Ｍｃｕグループが増えた場合に、データの冗長性が高くなり、圧縮率が低下するという課題がある。また、Ｍｃｕグループ毎に、データ処理の終わりを確認せねばならず、処理対象となるデータによってプロセッサ毎の処理時間にバラツキが出た＜プロセッサ毎の処理時間が異なる＞場合、処理が完了したプロセッサは、他のプロセッサの処理完了を待たねばならず、プロセッサの利用率が低下し、その結果、圧縮・伸張処理の処理時間が増大することが知られている。
【００１４】
この発明の目的は、プロセッサを複数持つシステムにおいて、ＪＰＥＧをベースとした方式で、圧縮率が高く、高速に画像の圧縮・伸長を行うための、手段、画像フォーマットを提供することである。また、この発明の目的は、メニーコアや、マルチプロセッサシステムで、サイズの大きい画像データを、並列処理により、圧縮・伸長を高速に行うことが可能なＭＦＰを提供することである。
【課題を解決するための手段】
【００１５】
この発明は、上記問題点に基づきなされたもので、ＪＰＥＧ方式で、互いに直交する２方向についてマトリクス状に分割した複数の領域の画像データを独立して２以上のプロセッサにより並列に圧縮する画像処理方法において、個々の画像データは、その領域の画像データを圧縮した際のプロセッサを特定する情報を含むことを特徴とする画像処理方法を提供するものである。
【発明の効果】
【００１６】
この発明の一つの実施の形態によれば、メニーコアや、マルチプロセッサシステムで、サイズの大きい画像データを、並列処理により、圧縮・伸長を高速に行うことができる。
【００１７】
すなわち、本発明の画像圧縮・伸張方式を適用することにより、マルチコアＣＰＵを搭載したシステムにおいて、並列に圧縮・伸張を行う際、各コアで実行する処理の実行率を高く、メモリアクセスに関する同期処理のオーバーヘッドが低く抑えることができる。
【００１８】
また、圧縮・伸張処理を別のシステムで実施する場合にも、圧縮・伸張を実行するそれぞれのシステムで、並列度が高いほうのシステムの実行率を高くすることができるため、圧縮・伸張処理トータルでスループットを向上させることができ。
【００１９】
また、複数のコアから共通にアクセスされる２次キャッシュメモリと、コアが内部に持つ１次キャッシュメモリ、共有される２次キャッシュメモリ間のスワップ動作の回数を抑えることで、処理速度が低下することを抑止できる。
【００２０】
また、２次キャッシュメモリと共有メモリ間のＤＭＡ転送のデータ転送を適切なサイズで実施することにより、処理速度が低下することが防止出来る。
【００２１】
従って、マルチコアＣＰＵによる圧縮・伸張処理を、画質を損なうことなく、高速に処理させることができる。
【図面の簡単な説明】
【００２２】
【図１】本発明が適用される可変長画像圧縮の一例を示す概略図。
【図２】本発明の複数ＰＥでの圧縮・伸長処理が可能な圧縮方式を説明する概略図。
【図３】本発明の実施形態に関わるシステム全体のブロック図。
【図４】本発明の実施形態に関わる全体処理のフローチャート。
【図５】本発明の実施形態に関わる圧縮処理のフローチャート。
【図６】本発明の実施形態に関わる伸長処理のフローチャート。
【図７】本発明の別の（第２の）実施形態に関わるシステム全体のブロック図。
【図８Ａ】図７に示した（第２の）実施形態に関わるシステムにおける１次、２次キャッシュ間メモリ操作を説明する概略図。
【図８Ｂ】図７に示した（第２の）実施形態に関わるシステムにおける１次、２次キャッシュ間メモリ操作を説明する概略図。
【図９】本発明の別の（第３の）実施形態に関わるシステム全体のブロック図。
【図１０】図９に示した（第３の）実施形態における並列分割数決定方法、ならびに圧縮データの配列例を説明する概略図。
【図１１】図９に示した（第３の）システムにおいて、分割数よりも少ないコア数のＣＰＵによる処理の例を説明する概略図。
【図１２】図９に示した（第３の）システムにおいて、分割数よりも少ないコア数のＣＰＵによる処理の別の（本願の特徴的な改良結果を含む）例を説明する概略図。
【図１３】図９に示した（第３の）システムにおいて、クライアントＰＣ内処理のフローチャート。
【図１４】図１３に示したクライアントＰＣ内処理における「並列分割数決定処理」を説明するフローチャート。
【図１５】図９に示した（第３の）システムにおいて、プリンタコントローラ内処理のフローチャート。
【図１６】本発明の別の（第４の）実施形態に関する処理のメモリ利用イメージ。
【図１７】図１６に示した方式によりコアの１つが共有メモリ上に配置するデータ（のイメージ）を説明する概略図。
【図１８】図１６に示した（第４の）システムにおいて実行される「分割数決定処理」を説明するフローチャート。
【発明を実施するための形態】
【００２３】
以下、図面を参照して、本発明の実施の形態について説明する。
【００２４】
図１は、この発明が適用可能な画像処理装置（ＭＦＰ、Multi-Functional Peripheral）の実施形態に関わる最も基本となるシステムのブロック図を示す。
【００２５】
図１に示す画像処理装置（以下、システムと称する）１は、システムバス１１を介して相互に接続する複数のデバイス、例えばＣＰＵ（主制御装置）２１、共有メモリ２３、ＨＤＤ（Hard Disc Drive、大容量記憶装置）２５、ならびにｎ（ｎは正の整数）個のＰＥ（演算ユニット）ＰＥ１〜ＰＥｎを含む。
【００２６】
システムバス１１は、外部とのデータ入出力や、内部のデータ通信に利用される。
【００２７】
共有メモリ２３については、システム内で結合されているそれぞれのプロセッサＰＥ１〜ＰＥｎからの書込み、および読込みが可能である。
【００２８】
次に、図１に示すシステム１に適用可能な広く利用されているＪＰＥＧ（Joint Photographic Experts Group）圧縮方式、およびそれをより高速度化可能な本提案（本願）の圧縮方式について説明する。
【００２９】
図２は、ＪＰＥＧ圧縮の符号化方式を簡単に説明するものである。
【００３０】
ＪＰＥＧ圧縮では、画像データは、Ｍｃｕ（Minimum code unit）と呼ばれる圧縮の最小単位の画素のまとまり毎に圧縮される。図２の例では、高さ（方向）１６ピクセル、幅（方向）１６ピクセルの画像圧縮を、高さ８ピクセル、幅８ピクセルのＭｃｕ単位で圧縮するものとする。
【００３１】
圧縮される画像データは、Ｍｃｕの行単位に処理される。
【００３２】
処理は、Ｍｃｕブロック内の６４画素を、ＲＧＢカラーの入力画像データを、ＹＣＣの輝度色差カラーデータに色変換処理し、ＹＣＣの成分毎にＤＣＴ処理して周波数成分に変換した後、周波数成分毎に量子化テーブルを用いて量子化し、最後に量子化された値をハフマン符号化により符号化するものである。
【００３３】
この処理の中で、ハフマン符号化の符号を格納する際、ＤＣＴ変換後に生成されるＭｃｕブロック内の直流成分信号の格納に関しては、前のＭｃｕを圧縮した際の直流成分との差分値として値が格納される。この場合、隣接するＭｃｕ間では、画像の直流成分は比較的似ることから、差分値の値が小さくなり格納されるデータ長が短くなり圧縮率が高くなる効果がある。
【００３４】
しかし、この方式によりＭｃｕ圧縮符号の間に依存関係が生じ、１６×１６画像のＭｃｕ符号データ間には、図示するとおり、特有の依存関係（「Ｍｃｕ（０，０）」に隣接して「Ｍｃｕ（０，１）」が位置し、「Ｍｃｕ（０，１）」の「Ｍｃｕ（０，０）」とは逆側に「Ｍｃｕ（１，０）」が位置する）が存在する。
【００３５】
このように圧縮された画像データを伸長する際には、圧縮された画像の先頭のＭｃｕブロックに該当する符号データから順に、ハフマン復号化、隣接Ｍｃｕ直流成分より直流成分算出、逆量子化、逆ＤＣＴ変換、ＹＣＣカラーデータからＲＧＢへの色変換が順に行われる。
【００３６】
図３は、広く利用されている上述のＪＰＥＧ圧縮方式の処理において実績があるハードウェア回路や装置内部におけるデータ転送のフォーマットの一部または多くの要素を共通化でき、より高速度化可能な圧縮方式とその圧縮されたデータの伸長処理を実現するもので、図１に示したｎ個のプロセッサＰＥ１〜ＰＥｎの内、２つのプロセッサＰＥ１、およびＰＥ２により、圧縮・伸長を、並行に処理することで、より処理速度を向上できる処理の一例を示す。
【００３７】
それぞれのプロセッサＰＥ１，ＰＥ２は、画像データメモリに展開したときにアドレスが連続する画像方向を横方向としたとき、それに垂直な方向を縦方向としたとき、画像データを縦方向に一定間隔で分けて、分かれた領域をプロセッサの１つに割り当てて圧縮させる。
【００３８】
それぞれのプロセッサＰＥ１，ＰＥ２は、圧縮の際、上述のＪＰＥＧとは異なり、Ｍｃｕ直流成分の差分を振り分けられた領域に閉じた形で、領域終端に来たところで、領域内の次のＭｃｕ行の先頭に当たる要素の計算のベースとして演算する。
【００３９】
これにより、分けられた領域間のデータの依存関係が無くなる。
【００４０】
それぞれのプロセッサＰＥ１，ＰＥ２が上記のように割り当てられた領域を圧縮する際、圧縮データ長は、圧縮する画像データによって変わるため、同じ速度で動作するプロセッサ同士でも、ローカルメモリ（ローカルバッファと称する場合もある）に、データが貯まっていく速度が異なる。
【００４１】
本発明では、領域を担当するそれぞれのプロセッサは、ローカルメモリにある一定量の圧縮データが貯まった段階で書込みを行うため、使用するローカルメモリが少なくても実装できる。前記書き出しを行う一定量であるが、これについては、そのシステムが書き出すメディアに対して最適化された値がよい。
【００４２】
図３から明らかであるが、システム１のＨＤＤ２５に圧縮データを書き出す場合、システム１がＨＤＤ２５にデータを書き込む際の大きさ、例えばシステム１がＨＤＤ２５にデータを書き込む際に２ｋバイト（［ｋｂ］）ずつデータを書き込むのであれば、上記ローカルバッファに貯める圧縮データの量を２ｋバイト（［ｋｂ］）とする。
【００４３】
前記ローカルバッファに蓄積された圧縮データを書き込む際、どのプロセッサが書き込みを行ったかを判別可能なデータを、同じように書き出す。このデータは、符号データとは異なる領域に記憶され、画像全体の圧縮処理が完了するまで保持される。
【００４４】
プロセッサが割り当てられた領域の画像をすべて圧縮したあと、残った圧縮データを上記のように書き出して処理を完了する。
【００４５】
すべて領域の圧縮処理が完了すると、蓄積された書込みＰＥデータ、および圧縮画像パラメータ（幅、高さ、カラー／モノクロ）と、書込みＰＥデータが書き込まれたオフセットが書き出される。
【００４６】
これにより、画像を縦に帯状に分けて圧縮されたデータの入った圧縮ファイルが完成する。
【００４７】
次に、前記圧縮された画像ファイルの伸張処理について説明する。
【００４８】
伸張処理では、それぞれのプロセッサが、書込みＰＥデータが書き込まれたオフセットを、ファイル終端部分から読み取り、続いて、書込みＰＥデータを読み込む。各プロセッサは、書込みＰＥデータを参照し、自プロセッサが書き込んだ符号化データを読み込み、順次、ハフマン復号、隣接Ｍｃｕの直流成分から自Ｍｃｕの直流成分算出、逆量子化、逆ＤＣＴ、ＹＣＣからＲＧＢへの色変換処理を行う。
【００４９】
処理の際、圧縮データが不足した際には、書込みＰＥデータを参照し、次の自ＰＥが書き出した圧縮データを読み込む。
【００５０】
復号された画像データは、各プロセッサからアクセス可能なメモリ領域（共有メモリ）２３に書き込まれる。
【００５１】
より詳細には、図示のように、    
圧縮＜１＞  →  各ＰＥが画像を縦方向に圧縮    
ＰＥ１  ＣｏｄｅＭｃｕ（０，０）  ＣｏｄｅＭｃｕ（１，０）    
ＰＥ２  ＣｏｄｅＭｃｕ（０，１）  ＣｏｄｅＭｃｕ（１，１）    
圧縮＜２＞  →  各ＰＥが、Ａ［ｋｂ］分圧縮する度、符号データを書き出す    
により、圧縮が行われる。
【００５２】
一方、伸長の場合は、    
伸長＜１＞書き込みＰＥデータに従い、Ａ［ｋｂ］ずつデータをロード    
伸長＜２＞復号処理、及び復号画像書き出し    
ＰＥ１  書き込みＰＥデータ    
ＰＥ２  書き込みＰＥデータ    
となる。
【００５３】
図４は、本発明の実施形態に関わる、全体処理のフローチャートである。
【００５４】
システムは、画像の入力処理か、出力処理を、外部から受ける［ＡＣＴ０１］。
【００５５】
入力処理を受け付けた場合［ＡＣＴ０１−ＹＥＳ］、入力される画像ファイルに関する情報を、圧縮ファイルのヘッダ部分に書き出す［ＡＣＴ０２］。
【００５６】
次に、画像領域を縦方向に分けて、それを各プロセッサに割り当てて、この領域情報と、圧縮処理の開始を指示する［ＡＣＴ０３］。
【００５７】
この後、それぞれのプロセッサは、図５を用いて以下に説明するフローチャートに示す処理を行い、割り当てられた領域を圧縮処理する［ＡＣＴ０４］。
【００５８】
圧縮を行うプロセッサは、圧縮コードとともに、書出しＰＥデータを書き出す［ＡＣＴ０５］。
【００５９】
全プロセッサの処理完了後、このデータは圧縮コードに引き続いて書き込まれ、最後に、この書出しＰＥデータが書き込まれているオフセット情報を書き出し、圧縮処理は完了する［ＡＣＴ０６］。
【００６０】
出力処理を受け付けた場合［ＡＣＴ０１−ＮＯ］、各プロセッサに復号処理を指示する［ＡＣＴ０７］。この後、復号処理を指示されたプロセッサは図６により後段に説明するフローチャートの処理を行って画像（データ）の伸長を行う。
【００６１】
すなわち、    
画像のヘッダ情報をファイルに書き出し    
各ＰＥに縦分割領域をアサインし、圧縮処理開始を指示    
各プロセッサでの圧縮終了待ち    
書き込みＰＥデータを書き出し    
書き込みＰＥデータオフセットを書き出し    
各ＰＥに伸長処理開始を指示    
が、順に実行される。
【００６２】
図５は、図４を用いて説明した圧縮時の各プロセッサでの処理に関するフローチャートを示す。
【００６３】
各プロセッサは、自プロセッサが圧縮処理する画像の領域を示す情報を取得する。領域の指定に関しては、ｘ列目〜ｙ列目という形で指定される［ＡＣＴ１１］。
【００６４】
共有メモリ上の画像データから、処理する対象となる画像データをローカルメモリにコピーして圧縮処理を行う。圧縮処理は、領域左端の８×８領域（図２におけるＭｃｕ（０，０））から始め、それを画像横方向に処理していき、領域の端（図２におけるＭｃｕ（０，１））に達したら、画像左端で、高さをＭｃｕの高さ８だけ下方にずらした位置（図２におけるＭｃｕ（１，０））から再び処理を進めるという順序で行われる。処理に際して、圧縮された符号データは、一旦、ローカルメモリに格納される。
【００６５】
一定量（Ａ［ｋｂ］）のＭｃｕデータを圧縮する毎に、ローカルメモリに書き出した符号量をチェックし、一定量を超えていれば、符号データの書き出しを行う。この際、他のプロセッサと同じ領域にデータを書き込んでしまわないよう、書込み管理用のセマフォ（semaphore）を用いて排他的にデータを書き込む［ＡＣＴ１２］〜［ＡＣＴ１３−ＹＥＳ］〜［ＡＣＴ１６−ＹＥＳ］〜［ＡＣＴ１７］〜［ＡＣＴ１８−ＮＯ］。
【００６６】
圧縮対象となる画像データの圧縮処理が完了した場合［ＡＣＴ１４−ＹＥＳ］は、符号バッファに書き込まれている符号量をチェックし、一定量に足りていない場合には、不足分を無効データの書き込みにより埋めた後、データを書き込む［ＡＣＴ１５］。
【００６７】
すなわち、    
処理する画像列情報を取得    
圧縮処理    
圧縮データがＡ［ｋｂ］以上  ？    
圧縮完了  ？    
Ａ［ｋｂ］まで無効データを詰める    
データ書き込み可能か  ？    
Ａ［ｋｂ］圧縮データ、書き込みＰＥデータ書き出し    
圧縮完了  ？    
のルーチンが実行される。
【００６８】
図６に、図４を用いて説明した各プロセッサでの処理により圧縮された符号データの伸張時の各プロセッサでの処理に関するフローチャートを示す。
【００６９】
伸張処理では、各プロセッサが圧縮データに書き込まれた画像情報を読み込む。このデータには、画像に関する（幅、高さ、カラー／モノクロ）の情報や、圧縮（どのプロセッサが、どの領域を圧縮）に関わる情報が含まれる［ＡＣＴ２１］。
【００７０】
次に、データ終端に書き込まれた書込みＰＥデータのオフセット情報、ならびに、オフセット情報を元にロードした書込みＰＥデータをロードする［ＡＣＴ２２］。画像情報と書込みＰＥデータから、自プロセッサが、画像のどの領域を伸張処理するかを読み取り、書込みＰＥデータをもとにして処理すべき圧縮データをロードしながら画像を復号処理する［ＡＣＴ２３］，［ＡＣＴ２４］。
【００７１】
復号処理の過程では、Ｍｃｕ単位で画像が復元され、各プロセッサは、一定のライン数Ｎ分画像をローカルメモリに復元した後［ＡＣＴ２５］，［ＡＣＴ２６］、画像データを共有のメモリに書き込む［ＡＣＴ２７］。
【００７２】
すべてのプロセッサの処理が完了すれば、共有メモリ上に画像が展開され、処理は終了である［ＡＣＴ２８−ＹＥＳ］。
【００７３】
換言すると、    
画像情報を取得    
書き込みＰＥデータ読み込み    
Ａ［ｋｂ］圧縮データ読み込み    
信号処理    
圧縮データなし  ？    
Ｎライン分書き出し    
復号完了  ？    
の順で、処理が行われる。
【００７４】
このように、入力画像の圧縮に関して、画像メモリ上に展開される画像を副走査方向に分割し、それぞれの領域をプロセッサに割り当て並列に符号化処理させることで、メニーコアプロセッサや、マルチＣＰＵ環境で、従来の方式に比べて高速な圧縮処理が実現できる。また、圧縮データ書き出しも、各プロセッサで圧縮された符号データが保存に適したサイズまでたまった段階ですぐに書き込むことができ、オーバーヘッドが少なく、高速化が実現できる。
【００７５】
図７は、この発明が適用可能な画像処理装置（ＭＦＰ）に適用可能な別の画像圧縮方式を実現するためのシステムのブロック図である。なお、図７に示すシステムは、図１〜図６を用いて前述した画像処理において、各プロセッサが画像圧縮データを書き出す際のデータサイズが、キャッシュメモリライン長のｎ倍（ｎ≧１）であることを特徴とするものである。
【００７６】
図７において、システム１０１は、それぞれが１次キャッシュメモリを有する複数（ｎ個（ｎは正の整数））のプロセッサコアＰＥ１，ＰＥ２，・・・，ＰＥｎ−１，ＰＥｎ、各プロセッサコアＰＥ１〜ＰＥｎから直接接続され、データの読み出しと書き込みが行なわれる２次キャッシュメモリ１１１ａ，・・・，１１１ｎ（ｎは正の整数）、それぞれのメモリへのデータ書込み、読出しを制御するメモリコントローラ１０３、システム１０１内に存在する全プロセッサコアＰＥ１〜ＰＥｎから１次、２次キャッシュメモリ１１１ａ〜１１１ｎを介してアクセスされる共有メモリ１０５、画像データ、圧縮された画像データである符号化データ、圧縮処理に関するパラメータ、並びにプロセッサコアで実行されるプログラムを格納するＨＤＤ１０７、および２次キャッシュメモリ、ＨＤＤ、および共有メモリ間でのデータの送受信を実現するシステムバス１０９からなる。なお、２次キャッシュメモリ１１１ａ〜１１１ｎは、一例ではあるが、それぞれ２つのプロセッサコアを単位としてシステムバス１０９と接続するものとする。
【００７７】
本実施形態において処理される画像データ、並びに画像データを圧縮した符号化データは、共有メモリ上１０５に格納される。
【００７８】
１次キャッシュメモリ、２次キャッシュメモリ、共有メモリは、この順に従って、ＣＰＵからのアクセス速度が遅くなり、また、格納出来るデータ容量が大きいものとする。
【００７９】
キャッシュメモリは、一定長データをラインとしてデータを格納し、このラインデータを最小単位として読出し書込みを行う。１バイト分のデータの書換えを行う場合、アクセスする１バイトのデータと同じラインに存在するデータと共に読み込みを行い、プロセッサコア内のレジスタ上で、このライン上の必要なバイトデータの書換えが行われた後、再び、同ラインのデータと共に書込みが行われる。
【００８０】
複数のプロセッサコアからなるシステムにおいて、メモリコントローラ１０３はメモリ上に保持されたデータがプログラムに記載されたとおりに保持されるような一貫性を保つためにコヒーレント処理という処理を実施する。
【００８１】
図８Ａは、図７に示したシステムを用いた１次、２次キャッシュメモリ間のメモリ操作に関する一例を示す。
【００８２】
例えば、プロセッサコア１とプロセッサコア２が、図７における左から１番目と２番目のプロセッサコアＰＥ１，ＰＥ２であるとしたとき、プロセッサコア１（ＰＥ１）とプロセッサコア２（ＰＥ２）が、アドレスが隣接するデータを読み込んだものとする。また、このとき、隣接する２つのデータが、アドレス的に２次キャッシュメモリ上の同ライン上に存在したとする。
【００８３】
この同一ライン上にあるデータは、プロセッサコア１とプロセッサコア２内の１次キャッシュメモリ上に同じデータとしてコピーされる。
【００８４】
この後、プロセッサコア１このデータを書換えたとき、プロセッサコア１とプロセッサコア２が１次キャッシュメモリとして保持しているデータに違いが発生し、状態として、プロセッサコア２のデータは、プロセッサコア１が行った変更が反映されていない古いデータが存在することになる。
【００８５】
このため、メモリコントローラ１０３は、各プロセッサコアからのメモリへのアクセスをチェックしながら、上記のようにメモリ上のデータの書換えが行われた場合、一貫性が保たれていないデータ領域の書換え処理を行う。すなわち、プロセッサコア１（ＰＥ１）が１次キャッシュメモリを書換えた場合、メモリコントローラ１０３は、プロセッサコア２（ＰＥ２）内にコピーされたデータに一貫性が保たれていないことを検出し、プロセッサコア１（ＰＥ１）内の１次キャッシュメモリの該当するキャッシュラインのデータを、プロセッサコア２（ＰＥ２）の１次キャッシュのデータに上書きする。
【００８６】
このように、キャッシュメモリの一貫性を保つためのコヒーレント処理は、ラインと呼ばれるデータ単位で処理される。
【００８７】
しかし、実際には、データを共有しない処理を、プロセッサコア１、２が実施する際、これらのデータが同一のキャッシュラインに存在する場合には、前述のコヒーレント処理が実施される（ことになる）。論理的には問題がないが、コヒーレント処理は、異なるメモリ間におけるデータコピー処理が行われ、かつこのコヒーレント処理の間は、プロセッサコアからのこの領域へのアクセスができない状態になる。
【００８８】
このため、上述のようなデータを共有しない処理に対するコヒーレント処理の実行は、オーバーヘッドが大きく、論理的には、必要のないデータのコピーであるから、フォルスシェアリング（false sharing）と呼ばれる。
【００８９】
図８Ｂは、図７に示したシステムを用いた１次、２次キャッシュメモリ間のメモリ操作に関する別の一例を示す。すなわち、図８Ｂは、図８Ａにより説明した実施形態において生じるフォルスシェアリングに関連して各プロセッサコアの実行効率が低下することを避けるため、圧縮データを書き込む際のサイズを、２次キャッシュメモリのキャッシュラインサイズのＮ倍とすることを特徴とするものである。
【００９０】
図８Ｂにおいては、図８Ａにより説明した符号化データ書込みのサイズを、キャッシュメモリのラインサイズの整数倍にとることにより、共有メモリ上で、メモリを共有する複数のコアが利用する領域が、それぞれ、キャッシュラインをまたぐことがなくなる。これにより、お互いがメモリにアクセスする際に、他のプロセッサが利用するデータを読み込まずに済む。従って、メモリコントローラ１０３が実施するコヒーレント操作が発生しなくなり、無駄なオーバーヘッドが発生せず、処理が高速に実現できる。
【００９１】
より詳細には、図８Ｂにおいて、プロセッサコア１（ＰＥ１）、およびプロセッサコア２（ＰＥ２）が、割り当てられた領域の圧縮処理を、並列に実行している場合、プロセッサコア１は、プロセッサコア１による圧縮処理が進行し、符号化データがキャッシュラインサイズに達した段階で、符号化データをキャッシュラインサイズ分だけメモリに書き込む。これにより、符号化データが２次キャッシュメモリに書き出される。
【００９２】
この書き込みサイズがキャッシュラインサイズに合っていない（一致しない）場合は、前述のように、符号化データを記載する他のＣＰＵコアに対してコヒーレント処理が発生して性能、特に処理速度が大幅に低下するが、図８Ｂに示した本方式では、メモリ書込みサイズをキャッシュラインサイズの整数倍に制限したことにより、コヒーレント動作が発生せず、各プロセッサ間の同期処理に伴うオーバーヘッドを低減することができる。
【００９３】
図９は、この発明が適用可能な画像処理装置（ＭＦＰ）に適用可能な、さらに別の画像圧縮方式を実現するためのシステムのブロック図である。
【００９４】
図９に示す実施形態は、圧縮処理、伸張処理を実施する装置の両方、もしくは、いずれかがマルチコアのプロセッサを具備する際、画像データの並列分割数を、これらのプロセッサ数に応じて切替えることにより、高いスループットを実現することを特徴とするものである。
【００９５】
図９に示すシステム２０１は、クライアントＰＣ（データ供給元）２２１とプリンタエンジン（ＭＦＰを含む）２３１が、ネットワーク（例えば、ＬＡＮ）により、相互に接続された状態において、クライアントＰＣ２２１およびプリンタエンジン２３１へ画像出力のための画像データを入力するプリンタコントローラ２３３のそれぞれが、画像圧縮、伸張処理を受け持つマルチコアＣＰＵを含むことを特徴とする。
【００９６】
このシステムでは、ユーザが印刷する文書中のイメージデータは、クライアントＰＣ側のマルチコアにより圧縮される。
【００９７】
文書中の画像が圧縮された状態のデータは、ネットワークを介してプリンタエンジン２３１と接続するプリンタコントローラ２３３に送信される。
【００９８】
プリンタコントローラ２３３では、印刷データの受信後、このデータを画像形成処理するが、この際、受信された印刷データ中の圧縮されたイメージデータの伸張処理を自身のマルチコアにより伸張処理する。
【００９９】
このように、文書中に含まれるイメージデータの圧縮、伸張処理をマルチコアで実現することにより並列処理し、印刷データ量のデータサイズを減らしてクライアントＰＣと、コントローラ間の通信時間を短縮することにより、プリントのスループットを向上させることが出来る。
【０１００】
本実施形態に関するイメージデータ圧縮の並列化処理のための、分割サイズの決定方法について説明する。
【０１０１】
図１０に、クライアントＰＣと、プリンタコントローラのＣＰＵ（プロセッサ）コア数に違いがある場合の並列分割の決定方法の例を示す。
【０１０２】
ここで、クライアントＰＣのＣＰＵコア数が２、プリンタコントローラのＣＰＵコア数が４であるとする。本実施形態における並列分割数は、圧縮処理、伸張処理を実施するＣＰＵのコア数を比較し数が多いものを採用する。
【０１０３】
図１０の場合、圧縮側がコア数２、伸張側がコア数４であるため、並列化のための画像領域の分割数は４となる。このように分割数を決定された際、圧縮処理側、伸張処理側でコア数が異なる場合には、どちらかの側が実際のＣＰＵコア数よりも多く画像を分割する形になる。
【０１０４】
図１１および図１２に、図１０に示したクライアントＰＣと、プリンタコントローラのプロセッサコア数に違いがある場合において、ＣＰＵコア数が分割数よりも少ない場合における処理例を示す。
【０１０５】
ＣＰＵコア数が少ない場合には、１つのプロセッサコアに対して、複数の画像分割領域が処理対象として割り当てられる。
【０１０６】
図１１は、ＣＰＵコア数が２に対して、並列分割数が３に設定された場合であり、この際、ＣＰＵコア１に対しては、領域Ａと領域Ｃ、ＣＰＵコア２に対しては、領域Ｂが割り当てられたものとする。
【０１０７】
この場合、本発明第１実施形態の方式をそのまま、この圧縮に用いると、図１１（ａ）のような処理の流れとなる。すなわち、初めに、コアが割り当てられた領域Ａ，Ｂの処理が実施され、圧縮データには、これらの領域の符号化データが、書込み量に達した段階で随時書き込まれていき、領域Ａの書込みが完了した段階で、ＣＰＵコア１が領域Ｃの圧縮処理を実施する。
【０１０８】
このように、圧縮処理を実施した場合、符号化されたデータは、図１１（ｂ）に示すように、はじめにＣＰＵコアが割り当てられる領域の圧縮データである「領域Ａ符号データ」と「領域Ｂ符号データ」の組に対して、そうでない領域の圧縮データである「領域Ｃ符号データ」が、データ中の離れた位置に格納されることになる。
【０１０９】
このような符号化データを本発明の方式の装置において復号する際には、近接領域のデータがファイル上の離れた位置に格納するため、メモリ、キャッシュメモリ上に同時に両方のデータが格納できず、ディスクスワップが発生して性能が極端に低下してしまうことになる。
【０１１０】
これに対して、本実施形態の方式においては、図１２（ａ）に示すように、あらかじめ領域処理に関して処理ライン数の閾値を決めておき、ライン数が一定を超えて、かつ、符号量が書込み量に達した段階、すなわちバンドラインを超え符号化データ量が達した時点で、書き込み、一旦その領域の処理を中断し、割り当てられた別の領域の処理に移行するものとする。
【０１１１】
これにより、同じラインに属する符号データを、図１２（ｂ）に模式的に示すように、圧縮データの中で近接させて格納することができるため、効率的にメモリアクセスを実施することができ、処理を高速に実施することができる。
【０１１２】
図９に示すシステムにおいては、図１０により前述した分割数決定方式、ならびに図１２を用いて説明した処理方式を用い、図１３、図１４および図１５に示す、圧縮側、伸張側の処理フローにより処理を実現するものである。
【０１１３】
図１３は、図１２に示した「並列分割を伴う処理」を説明するフローチャートである。
【０１１４】
図１３においては、最初に、図１４を用いて後段に説明する「並列分割数決定処理」が実行され、「並列分割を伴う処理」を実行する際の分割数が設定される［ＡＣＴ３１］。
【０１１５】
印刷（画像出力）対象のページを記述する際に、記述対象が圧縮画像を含むか否かがチェックされる［ＡＣＴ３３］。
【０１１６】
記述対象が圧縮画像を含む場合［ＡＣＴ３３−ＹＥＳ］、処理対象領域が指示され［ＡＣＴ３４］、符号化処理後、符号化データが書き出される［ＡＣＴ３５］。
【０１１７】
続いて、書き込みＰＥデータが書き出され［ＡＣＴ３６］、記述すべき残りページ（印刷対象）がなくなるまで［ＡＣＴ３２−ＹＥＳ］、記述対象が圧縮画像を含むか否かのチェック（［ＡＣＴ３３］）、記述対象が圧縮画像を含む場合の処理対象領域の指示（［ＡＣＴ３４］）、符号化処理後、符号化データの書き出し（［ＡＣＴ３５］）が繰り返される。
【０１１８】
なお、記述対象が圧縮画像を含まない場合［ＡＣＴ３３−ＮＯ］、次の記述対象に対する記述が繰り返される［ＡＣＴ３７］。一方、記述すべき残りページ（印刷対象）がなくなった場合には、処理終了となる［ＡＣＴ３２−ＹＥＳ］。
【０１１９】
すなわち、    
並列分離数決定処理    
印刷全ページ記述完＜記述終了＞  ？    
記述対象が圧縮画像  ？    
処理対象領域指示    
符号化処理、符号化データ書き出し    
書き込みＰＥデータ書き出し    
記述処理    
の各工程が実施される。
【０１２０】
図１４は、「並列分割数決定処理」を説明するフローチャートである。
【０１２１】
図１４に示す「並列分割数決定処理」では、はじめにプリンタコントローラＣＰＵコア数がチェックされる（プリンタコントローラＣＰＵコア数取得）［ＡＣＴ４１］。
【０１２２】
続いて、クライアント（ＰＣ）ＣＰＵコア数がチェックされる（クライアントＣＰＵコア数取得）［ＡＣＴ４２］。
【０１２３】
以下、取得したプリンタコントローラＣＰＵコア数とクライアントＣＰＵコア数とが比較され［ＡＣＴ４３］、ＣＰＵコア数の多い方に従い、分割数が設定される。すなわち、プリンタコントローラＣＰＵコア数が多い場合［ＡＣＴ４３−ＹＥＳ］、分割数はプリンタコントローラＣＰＵコア数に設定される［ＡＣＴ４４］。一方、クライアント（ＰＣ）ＣＰＵコア数が多い場合［ＡＣＴ４３−ＮＯ］、分割数はクライアント（ＰＣ）ＣＰＵコア数に設定される［ＡＣＴ４５］。
【０１２４】
すなわち、    
プリンタコントローラＣＰＵコア数取得    
クライアント＜ＰＣ＞ＣＰＵコア数取得    
＜ＣＰＵコア数比較＞    
＜コントローラＣＰＵコア数［大］＞    
分割数＝コントローラＣＰＵコア数    
＜ＰＣ＜クライアント＞ＣＰＵコア数［大］＞    
分割数＝ＰＣＣＰＵコア数    
が順に実行される。
【０１２５】
図１５は、図１４により説明したクライアントＰＣ（ＣＰＵコア）内の処理に対応するプリンタコントローラ側の処理の一例を示す。
【０１２６】
図１５から明らかなように、描画対象が圧縮画像を含むか否かがチェックされ［ＡＣＴ５２］、その対象が圧縮画像を含む場合［ＡＣＴ５２−ＹＥＳ］、並列分割数を取得し［ＡＣＴ５３］、処理対象領域が指示される［ＡＣＴ５４］。
【０１２７】
以下、復号処理が実行され［ＡＣＴ５５］、描画すべき残りページ（印刷対象）がなくなるまで［ＡＣＴ５１−ＹＥＳ］、描画対象が圧縮画像を含むか否かのチェック（［ＡＣＴ５３］）、描画対象が圧縮画像を含む場合の処理対象領域の指示（［ＡＣＴ５４］）、復号処理（［ＡＣＴ５５］）が繰り返される。
【０１２８】
なお、描画対象が圧縮画像を含まない場合［ＡＣＴ５３−ＮＯ］、次の描画対象に対する描画が繰り返される［ＡＣＴ５６］。また、描画すべき残りページ（印刷対象）がなくなった場合には、処理終了となる［ＡＣＴ５１−ＹＥＳ］。
【０１２９】
図１６は、この発明が適用可能な画像処理装置（ＭＦＰ）に適用可能なまたさらに別の画像圧縮方式を実現するためのシステムのブロック図である。なお、図１６に示す例は、実質的に、図７に示したシステムのうちの２つのプロセッサコアＰＥ１，ＰＥ２、２次キャッシュメモリ１１１Ａ、および共有メモリ１０５を抜き出した状態と等しい。
【０１３０】
図１６に示すシステムにおいては、共有メモリ１０５の利用効率の最適化のために、並列分割数を決定し処理を実施することにより、メモリにおいて生じるとされるボトルネックを解消し、処理を高速に実現することである。図１６において、処理パラメータが、それぞれのコアが持つ１次キャッシュメモリからスワップアウトされることなく、また、処理データの２次キャッシュと共有メモリ間の転送に関する読み／書きのデータ量が転送に最適なサイズで行われ、オーバーヘッドが少なく、ＤＭＡ転送が最適な条件で実行できるため、スループットを向上させることができる。なお、図１７に、図１６に示す実施形態により実現するコアの１つが共有メモリ上に配置するデータ構造の一例を示す。
【０１３１】
図１６に示す例では、各コアプロセッサＰＥ１，ＰＥ２が利用するシステム上のメモリ（共有メモリ１０５）がシステムバス１０９と接続した状態において、処理の際に、コアプロセッサＰＥ１，ＰＥ２のそれぞれのメモリ（１次キャッシュメモリ）に格納されるデータはＪＰＥＧデータであり、メモリ（共有メモリ１０５）上には、圧縮・伸張のパラメータ、具体的には、量子化テーブル、ハフマンテーブル、色差（Ｕ，Ｖ成分）の間引き率、などが格納される。また、各プロセッサＰＥ１，ＰＥ２と共有メモリ１０５との間に位置する２次キャッシュメモリ１１１ａ上のデータにおいては、個々の処理データの先頭（ヘッダ）に、パラメータが付属する。なお、各プロセッサＰＥ１，ＰＥ２内の１次キャッシュメモリ上の個々のデータにおいてもは、ワーク領域の先頭に、パラメータが付属する。
【０１３２】
これらのパラメータは、あらかじめ決められた値を利用するものとする。また、処理の対象となる画像データと、それを圧縮した符号化データもメモリに格納され、これらはワーク用として確保された領域に格納される。
【０１３３】
圧縮されるデータのサイズは、圧縮パラメータと、圧縮されるデータの内容に依存して決まるため、正確にどの程度必要かは決めることができない。通常、この領域サイズを小さくしすぎると、共有メモリと、キャッシュメモリ間のデータ転送の回数が増加し、転送によるオーバーヘッドによりパフォーマンスが低下する。また、ワーク領域のサイズを大きくとりすぎると、１次キャッシュのデータがあふれ、２次キャッシュへのスワップ操作が発生し、これもパフォーマンスを低下させる一因となる。ここで、図１７に示すが、任意のＰＥが共有メモリ上に定義するＤＭＡ最小転送サイズを最適化することで、ＤＭＡ転送のオーバーヘッドを、平均的な画像の圧縮において最適に抑えることにより、多くの使用用途に関して、高いオーバーヘッドを実現できる。
【０１３４】
なお、図１７は、任意のＰＥが共有メモリ上に定義するＤＭＡ最小転送サイズの構成の一例を示す。
【０１３５】
図１７から明らかな通り、任意のＰＥが共有メモリ上に定義するＤＭＡ最小転送サイズは、パラメータ、入力データと出力データからなる処理データを含む。
【０１３６】
このように、図１６および図１７に示した通り、共有メモリが保持するデータは、前述のようにメモリ間のスワップ処理やＤＭＡ転送のオーバーヘッドを、平均的な画像の圧縮において最適に抑えることにより、多くの使用用途に関して、高いオーバーヘッドを実現することを可能とするものである。
【０１３７】
本実施形態は、図１８により以下に説明するが、あらかじめサンプルチャートなどを、方式で採用するパラメータと同じ値によって圧縮し、平均の圧縮率を算出しておき、これを基にワークメモリサイズを予測させることで、平均的な利用シーンで、メモリスワップや、ＤＭＡによるオーバーヘッドが起こらないよう並列分割数を調整するものである。
【０１３８】
図１８は、図１６に示したシステムにおける並列分割数の決定方法について説明する一例を示す。
【０１３９】
処理に当り、システムは、キャッシュメモリを共有するプロセッサのグループの情報を取得する。例えば、４コアのＣＰＵコアを有するプロセッサであって、それぞれ、２コアずつが２次キャッシュを共有するプロセッサの場合、グループの数は２であり、それぞれのグループが有するプロセッサコア数は２となる。この際、各コアが共有する共有キャッシュメモリのサイズ情報も取得する［ＡＣＴ１０１］。
【０１４０】
プロセッサコア数の算出処理は、このグループ毎に実施され、はじめに全プロセッサグループに関する処理が完了したか、すなわちグループ数回ループしたか、の確認処理を実施する［ＡＣＴ１０２］。
【０１４１】
次に、共有グループに属するＣＰＵコア数を、そのグループの分割数に設定する。すなわち、「グループ内分割数  ←  共有グループ内のプロセッサ数」がセットされる［ＡＣＴ１０３］。
【０１４２】
続いて、この分割数でこのグループの共有キャッシュサイズを割り、１コアに割り当てる共有キャッシュ上の領域のサイズを算出する［ＡＣＴ１０４］。このとき、処理パラメータのデータサイズの情報を取得して、１プロセッサコアに割り当てられるキャッシュサイズから引くことにより、ワーク領域として利用できるメモリサイズを算出する［ＡＣＴ１０５］。
【０１４３】
ここで算出したワークサイズに関して、平均圧縮率を取得し［ＡＣＴ１０６］、これをワークサイズに掛けることにより、画像、および、符号化領域として利用される予測のサイズを算出する。すなわち、固定処理パラメータサイズを算出する［ＡＣＴ１０７］。
【０１４４】
なお、ワーク領域では、符号化されるデータの領域のほうが少ないため、これをワークメモリの最小領域サイズとする［ＡＣＴ１０８］。
【０１４５】
ここで、このワークメモリの最小領域サイズと２次キャッシュと共有メモリ間のＤＭＡ転送の最小転送サイズとを比較し［ＡＣＴ１０９］、ワークメモリの最小領域サイズよりも共有メモリ間のＤＭＡ転送の最小転送サイズ小さい場合［ＡＣＴ１０９−ＹＥＳ］、グループの分割数を１小さくし［ＡＣＴ１１０］、改めて、ワークメモリの最小領域サイズを算出し、比較を行う［ＡＣＴ１１１−ＹＥＳ］〜［ＡＣＴ１０４］，・・・，［ＡＣＴ１０９］。
【０１４６】
ワークサイズが最小ＤＭＡサイズよりも大きい場合［ＡＣＴ１０９−ＮＯ］、このプロセッサの分割数を並列処理の分割数に加え、つぎのプロセッサグループの分割数決定処理に移行する［ＡＣＴ１１２］。
【０１４７】
すなわち、    
キャッシュ共有プロセッサグループ情報取得    
プロセッサ供給グループ数だけ処理した（グループ数回ループしたか）  ？    
グループ内分割数  ←  共有グループ内のプロセッサ数    
キャッシュ共有プロセッサ数算出    
平均圧縮率データ取得    
固定処理パラメータサイズ算出    
ワーク領域サイズ算出    
ワーク領域内最小データ領域サイズ算出    
最小データ領域サイズ  ＞  ＤＭＡ最小転送サイズ  ？    
グループ内分割数  ←  グループ内分割数−１    
グループ内分割数  ≠  １  ？    
分割数  ←  分割数＋グループ内分割数    
の各工程が実施される。
【０１４８】
他のプロセッサグループに関する並列分割数決定の処理方法も、前記と同様に実施される。
【０１４９】
以上説明したように、この発明によれば、複写機（ＭＦＰ）内部など、高解像度の巨大な画像を格納するシステムにおいて、格納領域を節約するため画像データを圧縮して格納する際に、近年のプリンタエンジンの高速化や、外部デバイスであるコンピュータ等の高速化に伴う、画像データのより高速な圧縮・伸長が可能となる。すなわち、ＣＰＵを複数持つマルチプロセッサシステムや、１つのＣＰＵの中に複数のＣＰＵを持つメニーコアプロセッサの普及が目ざましく、このようなプロセッサを用いて、前記巨大画像の圧縮・高速化に関する、方法、システムを、特に圧縮率の高いＪＰＥＧ圧縮については、適用することができる。すなわち、本発明の実施形態を適用することで、複数のプロセッサを用いて、１枚の画像をＪＰＥＧ方式のベースとした圧縮・伸長を高速に行うことができるシステムが実現できる。
【０１５０】
本発明の画像処理装置（ＭＦＰ）では、圧縮の際、メモリに展開された画像データを縦方向に分割し、それぞれを別のプロセッサで並列にＪＰＥＧ圧縮処理してゆく。個々のプロセッサはローカルメモリを持ち、一定量の圧縮データが貯まる度に、非同期に一定量の符号データを書込み、また、メモリ上に自プロセッサが書き込んだ旨の情報を記録する。全プロセッサの処理終了後、この書込み順データを圧縮画像データの後ろにつけて圧縮画像ファイルとする。復号時には、個々のプロセッサが、上記書込み順データを下に、一定量ずつ圧縮データを読み込みながら、画像データをメモリ上に復号していく。上記のように、本発明によると、圧縮データの依存関係は、各プロセッサの処理する領域に閉じられるため、他のプロセッサと同期をとらずに処理できるため、圧縮・伸長処理ともに、並列度に応じた性能が得られる。
【０１５１】
従って、メニーコアや、マルチプロセッサシステムで、サイズの大きい画像データを、並列処理により、圧縮・伸長を高速に行うことができる。
【０１５２】
すなわち、本発明の画像圧縮・伸張方式を適用することにより、マルチコアＣＰＵを搭載したシステムにおいて、並列に圧縮・伸張を行う際、各コアで実行する処理の実行率を高く、メモリアクセスに関する同期処理のオーバーヘッドが低く抑えることができる。
【０１５３】
また、圧縮・伸張処理を別のシステムで実施する場合にも、圧縮・伸張を実行するそれぞれのシステムで、並列度が高いほうのシステムの実行率を高くすることができるため、圧縮・伸張処理トータルでスループットを向上させることができ。
【０１５４】
また、複数のコアから共通にアクセスされる２次キャッシュメモリと、コアが内部に持つ１次キャッシュメモリ、共有される２次キャッシュメモリ間のスワップ動作の回数を抑えることで、処理速度が低下することを抑止できる。
【０１５５】
また、２次キャッシュメモリと共有メモリ間のＤＭＡ転送のデータ転送を適切なサイズで実施することにより、処理速度が低下することが防止出来る。
【０１５６】
従って、マルチコアＣＰＵによる圧縮・伸張処理を、画質を損なうことなく、高速に処理させることができる。
【０１５７】
なお、この発明は、上述した各実施の形態に限定されるものではなく、その実施の段階ではその要旨を逸脱しない範囲で種々な変形もしくは変更が可能である。また、各実施の形態は、可能な限り適宜組み合わせて、もしくは一部を削除して実施されてもよく、その場合は、組み合わせもしくは削除に起因したさまざまな効果が得られる。
【０１５８】
例えば、画像データをメモリ展開してアドレスが連続する方向に向かって垂直方向に画像分割を行い、その画像分割された個々の領域について、それぞれ、異なるプロセッサにより、色変換、ＤＣＴ変換、量子化、ハフマン符号化し、それぞれのプロセッサで、ハフマン符号化データが一定量を超えた場合に、一定量分ずつそれぞれのプロセッサから書出された符号化データと、上記符号化データ作成時に、それぞれのプロセッサが書き込みを行う際に書出されたプロセッサを識別可能な書込みＰＥデータと、からなり、    
前記符号化データに続いて書込みＰＥデータが連続する画像圧縮フォーマットとして、実現できる。
【０１５９】
また、ローカルメモリを持つ複数のプロセッサと、    
各プロセッサがアクセス可能な共有メモリと、    
入力画像の一部ずつ、または画像の全体をメモリに格納するメモリ制御部と、    
格納された入力画像の一部、または、全体を、画像データをメモリ展開してアドレスが連続する方向に向かって垂直方向に沿って画像領域を分割し、それぞれの分割領域の画像データを、前記プロセッサのいずれか１つに割り当てる形で、色変換、ＤＣＴ、量子化、ハフマン符号処理を行い、処理の結果生成されるハフマン符号データが一定量を超えた場合には、一定量のハフマン符号データを書出し、書出したプロセッサを識別可能なデータをメモリに書き込み、全プロセッサの圧縮処理が完了した段階で、前記プロセッサを識別可能な書込みＰＥデータを書き出し、前記フォーマットの圧縮データ中から、書込みＰＥデータを読み込み、処理を行っているプロセッサに該当するデータだけを順に読み込みながら、ハフマン復号、逆量子化、逆ＤＣＴ、逆色変換処理を行い圧縮画像を伸長処理するプログラムにより動作する画像処理部と、    
を含む画像処理装置が実現できる。
【符号の説明】
【０１６０】
１、１０１…画像処理装置（画像処理システム）、１１…システムバス、２１…ＣＰＵ（主制御装置）、２３…共有メモリ、２５…ＨＤＤ（画像データ記憶装置）、１０３…メモリコントローラ、１０５…共有メモリ、１０７…ＨＤＤ（画像データ記憶装置）、１０９…システムバス、１１１ａ〜１１１ｎ…２次キャッシュメモリ、ＰＥ１〜ＰＥｎ…演算ユニット（プロセッサコア、コアプロセッサ、単位処理装置）。
【先行技術文献】
【特許文献】
【０１６１】
【特許文献１】特開平０５−１４３５５２号公報
【特許文献２】特開平１１−１７０６５７号公報
【特許文献３】特開２００３−３４８３５５号公報
【図１】
2010073210.tif 000003
【図２】
2010073210.tif 000004
【図３】
2010073210.tif 000005
【図４】
2010073210.tif 000006
【図５】
2010073210.tif 000007
【図６】
2010073210.tif 000008
【図７】
2010073210.tif 000009
【図８Ａ】
2010073210.tif 000010
【図８Ｂ】
2010073210.tif 000011
【図９】
2010073210.tif 000012
【図１０】
2010073210.tif 000013
【図１１】
2010073210.tif 000014
【図１２】
2010073210.tif 000015
【図１３】
2010073210.tif 000016
【図１４】
2010073210.tif 000017
【図１５】
2010073210.tif 000018
【図１６】
2010073210.tif 000019
【図１７】
2010073210.tif 000020
【図１８】
2010073210.tif 000021