(57)【要約】【課題】  中間バッファの面数や書込み・読出し順序が異なる複数製品向けの共通回路を作成しようとすると、中間バッファの面数毎に中間バッファ制御機構を設計する必要が生じるために製品コストが増加するおそれがある。【解決手段】  複数の記憶領域を備える記憶装置について、記憶領域へのデータの入出力制御を同期させるために、前記記憶領域に対する前記データの書き込み順序または読み出し順序を保持し、保持している順序に沿って記憶領域へアクセスする記憶領域の１つを選択し、中間バッファへの入出力処理の同期制御を実施することで、中間バッファ制御機構を様々な中間バッファに適用できるようにする。【選択図】  図６
2014027529.tif 000002
【特許請求の範囲】
【請求項１】
複数の記憶領域を備える記憶手段と、
書込み対象の記憶領域を示す第１識別情報を、書込み順に出力する第１出力手段と、
読出し対象の記憶領域を示す第２識別情報を、読出し順に出力する第２出力手段と、
前記記憶手段へ書き込むデータを受信する受信手段と、
前記第１出力手段から出力される第１識別情報の示す記憶領域へ、前記受信手段により受信したデータを書き込む書込み手段と、
前記第２出力手段から出力される第２識別情報の示す記憶領域から送信するデータを読み出す読出し手段と、
前記読出し手段で読み出したデータを送信する送信手段と、
前記書込み手段による前記記憶手段へのアクセスと前記読出し手段による前記記憶手段へのアクセスとが完了したことに応じて、前記第１出力手段と前記第２出力手段のそれぞれについて次の順の識別情報を出力させるように制御する制御手段と
を有することを特徴とするバッファ。
【請求項２】
前記複数の記憶領域の其々の記憶状態を示す状態保持手段を更に備え、前記書込み手段と前記読出し手段とは、アクセス対象の記憶領域について当該状態保持手段の保持している値に基づいてアクセスを実施することを特徴とする請求項１に記載のバッファ。
【請求項３】
バッファしたＮ個（Ｎは２以上の整数）ずつのデータを並び替えながら出力するバッファであって、前記記憶手段は少なくともＮ個の記憶領域を備えることを特徴とする請求項１に記載のバッファ。
【請求項４】
前記記憶手段はＳＲＡＭを含み、前記記憶領域は当該ＳＲＡＭのバンクと対応することを特徴とする請求項１に記載のバッファ。
【請求項５】
前記第１、第２出力手段の其々はシフトレジスタであり、前記制御手段からの同期信号によって保持している値をシフトさせる請求項１に記載のバッファ。
【請求項６】
前記第１、第２出力手段の其々は、複数のレジスタとマルチプレクサを含み、マルチプレクサによって複数のレジスタの保持している値をラウンドロビンで選択して出力する請求項１に記載のバッファ。
【請求項７】
複数の記憶領域を備える記憶手段と、
書込み対象の記憶領域を示す第１識別情報を、書込み順に出力する第１、第３出力手段と、
読出し対象の記憶領域を示す第２識別情報を、読出し順に出力する第２、第４出力手段と、
前記記憶手段へ書き込むデータを受信する第１受信手段と、
前記第１出力手段から出力される第１識別情報の示す記憶領域へ、前記第１受信手段により受信したデータを書き込む第１書込み手段と、
前記第２出力手段から出力される第２識別情報の示す記憶領域から送信するデータを読み出す第１読出し手段と、
前記第１読出し手段で読み出したデータを送信する第１送信手段と、
前記第１送信手段の送信したデータを処理する複数の画像処理回路と、
前記画像処理回路で処理済みのデータを受信する第２受信手段と
前記第３出力手段から出力される第１識別情報の示す記憶領域へ、前記第２受信手段により受信したデータを書き込む第２書込み手段と、
前記第４出力手段から出力される第２識別情報の示す記憶領域から送信するデータを読み出す第２読出し手段と、前記第２読出し手段で読み出したデータを送信する第２送信手段と、
前記第１書込み手段による前記記憶手段へのアクセスと前記第１読出し手段による前記記憶手段へのアクセスとが完了したことに応じて、前記第１出力手段と前記第２出力手段のそれぞれについて次の順の識別情報を出力させるように制御する第１制御手段と、
前記第２書込み手段による前記記憶手段へのアクセスと前記第２読出し手段による前記記憶手段へのアクセスとが完了したことに応じて、前記第３出力手段と前記第４出力手段のそれぞれについて次の順の識別情報を出力させるように制御する第２制御手段と
を有することを特徴とする画像処理装置。
【請求項８】
複数の記憶領域を備える記憶手段について、当該記憶領域へのデータの入出力制御を同期させる同期制御装置であって、前記記憶領域に対する前記データの書き込み順序または読み出し順序を保持する順序設定手段と、前記記憶領域毎のデータの記憶状態を保持する保持手段と、前記順序設定手段の保持している順序に沿って前記データを書き込む、もしくは読み出すための前記記憶領域の１つを選択する記憶領域選択手段と、前記記憶領域選択手段により選択された記憶領域について前記保持手段に保持されている記憶状態に基づいて、データの入出力制御を実施する制御手段と、を有することを特徴とする同期制御装置。
【請求項９】
前記データを書き込む、もしくは読み出すために使用する前記記憶領域の数は、前記順序設定手段の設定により定まることを特徴とする請求項８に記載の同期制御装置。
【請求項１０】
前記順序設定手段の設定値を変更し、使用する前記記憶領域の数を変更することにより前記記憶手段の容量を変更することを特徴とする請求項８に記載の同期制御装置。
【請求項１１】
前記書き込み順序設定手段の設定と前記読み出し順序設定手段の設定とを異なる設定に定めることで前記記憶手段によってデータを並び替えることを特徴とする請求項８に記載の同期制御装置。
【請求項１２】
前記保持手段の保持している記憶状態に基づいて、外部から前記データを読み出すことを特徴とする請求項８に記載の同期制御装置。
【請求項１３】
前記書き込み順序設定手段の設定に代わり、外部から前記データを読み出すときの記憶領域番号を用いて、外部から受信したデータを前記記憶領域に書き込むことを特徴とする請求項１２に記載の同期制御装置。
【請求項１４】
前記データは１つ以上の画素からなる画素領域に対応し、前記記憶領域選択手段の定める記憶領域から、画像処理の走査方向に従って前記データを書き込む、もしくは読み出すことを特徴とする請求項８に記載の同期制御装置。
【請求項１５】
記憶手段を１つ以上の記憶領域に割り当ててデータを待ち合わせて処理する画像処理装置であって、前記データを読み出すためのネットワーク・オン・チップと、前記記憶領域に対して読み出し順序を定める順序設定手段と、を備え、前記ネットワーク・オン・チップで読み出されたデータを前記記憶領域に書き込み、前記読み出し順序に従い並び替えて画像処理することを特徴とする画像処理装置。
【請求項１６】
複数の記憶領域を備える記憶手段と、書込み対象の記憶領域を示す第１識別情報を、書込み順に出力する第１出力手段と、読出し対象の記憶領域を示す第２識別情報を、読出し順に出力する第２出力手段と、前記記憶手段へ書き込むデータを受信する受信手段と、前記第１出力手段から出力される第１識別情報の示す記憶領域へ、前記受信手段により受信したデータを書き込む書込み手段と、前記第２出力手段から出力される第２識別情報の示す記憶領域から送信するデータを読み出す読出し手段と、前記読出し手段で読み出したデータを送信する送信手段と、を備えるバッファの制御方法であって、
前記書込み手段による前記記憶手段へのアクセスと前記読出し手段による前記記憶手段へのアクセスとが完了したことに応じて、前記第１出力手段と前記第２出力手段のそれぞれについて次の順の識別情報を出力させるように制御することを特徴とする制御方法。
【請求項１７】
前記複数の記憶領域の其々の記憶状態を示す状態保持手段を更に備え、前記書込み手段と前記読出し手段とは、アクセス対象の記憶領域について当該状態保持手段の保持している値に基づいてアクセスを実施することを特徴とする請求項１６に記載の制御方法。
【請求項１８】
前記記憶手段は少なくともＮ個の記憶領域を備え、前記読出し手段はバッファしたＮ個（Ｎは２以上の整数）ずつのデータを並び替えながら出力することを特徴とする請求項１６に記載の制御方法。
【請求項１９】
複数の記憶領域を備える記憶手段と、前記記憶領域に対するデータの書き込み順序または読み出し順序を保持する順序設定手段と、前記記憶領域毎のデータの記憶状態を保持する保持手段と、前記順序設定手段の保持している順序に沿って前記データを書き込む、もしくは読み出すための前記記憶領域の１つを選択する記憶領域選択手段と、を備える同期制御装置による同期制御方法であって、前記記憶領域選択手段により選択された記憶領域について前記保持手段に保持されている記憶状態に基づいて、データの入出力制御を実施することを特徴とする同期制御方法。
【請求項２０】
複数の記憶領域を備える記憶手段と、書込み対象の記憶領域を示す第１識別情報を、書込み順に出力する第１、第３出力手段と、読出し対象の記憶領域を示す第２識別情報を、読出し順に出力する第２、第４出力手段と、前記記憶手段へ書き込むデータを受信する第１受信手段と、前記第１出力手段から出力される第１識別情報の示す記憶領域へ、前記第１受信手段により受信したデータを書き込む第１書込み手段と、前記第２出力手段から出力される第２識別情報の示す記憶領域から送信するデータを読み出す第１読出し手段と、前記第１読出し手段で読み出したデータを送信する第１送信手段と、前記第１送信手段の送信したデータを処理する複数の画像処理回路と、前記画像処理回路で処理済みのデータを受信する第２受信手段と前記第３出力手段から出力される第１識別情報の示す記憶領域へ、前記第２受信手段により受信したデータを書き込む第２書込み手段と、前記第４出力手段から出力される第２識別情報の示す記憶領域から送信するデータを読み出す第２読出し手段と、前記第２読出し手段で読み出したデータを送信する第２送信手段と、を備える画像処理装置による画像処理方法であって、
前記第１書込み手段による前記記憶手段へのアクセスと前記第１読出し手段による前記記憶手段へのアクセスとが完了したことに応じて、前記第１出力手段と前記第２出力手段のそれぞれについて次の順の識別情報を出力させるように制御する第１制御工程と、
前記第２書込み手段による前記記憶手段へのアクセスと前記第２読出し手段による前記記憶手段へのアクセスとが完了したことに応じて、前記第３出力手段と前記第４出力手段のそれぞれについて次の順の識別情報を出力させるように制御する第２制御工程と
を有することを特徴とする画像処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はバッファ、バッファの制御方法、同期制御装置、同期制御方法、画像処理装置および画像処理方法に関する。
【背景技術】
【０００２】
一般的に画像処理装置は、装置の全体制御を行うＣＰＵや、処理対象の画像を画像データとして記憶する外部記憶装置、画像データを処理単位ずつ転送するＤＭＡＣや画像処理を行う画像処理部等の多くの構成を有する。そして、これらの構成が連携して動作することで所望の画像処理を実現する。このとき画像処理装置は、処理対象の画像データを部分的な画像単位で記憶装置から逐次的に読み込み、一時的に画像処理部の入力バッファへ蓄え、入力バッファに蓄えたデータに基づいて画像処理を実行する。
【０００３】
また画像処理装置は、画像処理後の処理結果としてのデータを一時的に画像処理部の出力バッファへ蓄え、出力バッファから外部記憶装置へ逐次書き出す。このように構成した画像処理装置では、画像全体を一度に処理するのではなく、部分的な画像（以降、部分画像または部分画像データと称す）を順に処理することで、入力バッファまたは出力バッファの容量を削減できる。
【０００４】
一般的な画像処理装置は、複数の部品による連携動作の制御を簡便にするため、部分画像データを一時的に保持する中間バッファ（入力バッファ、出力バッファ）の其々を複数個（以降、複数面とも称す）備える。また、１つの部分画像データを１転送単位とし、この転送単位に対して中間バッファを２面備えることが多い。このような構成をダブル・バッファと呼ぶ。この構成では、２面の中間バッファの１面に対し、記憶装置から転送単位のデータを書き込み、並行して、他方の１面から既に格納済みのデータを読み出して様々な処理を行える。
【０００５】
特許文献１では、画像を主走査方向にのみ一次元的に領域分割して、分割後の画素領域について逐次的に画像処理を行っている。この技術では、この分割後の画素領域を、さらに主走査方向（行方向）のデータ長と、分割後の画素領域の高さに相当する副走査方向（列方向）のデータ長で囲まれた画素領域に再分割する。そして、この技術では、この小さな画素領域を部分画像データとして、ＤＲＡＭなどの記憶装置から画像データを読み出すときの転送単位としている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特許第４１７９７０１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
近年、１製品に搭載される処理装置の個数が増加傾向にあり、記憶装置にデータを要求する処理装置（マスタ）も増えている。そのような場合には、中間バッファの面数を増やすことで、画像処理が途切れないようにすることができる。さらに、中間バッファへのデータ書込み順序と中間バッファからのデータ読出し順序を、柔軟に設定できる中間バッファも必要となってきている。
【０００８】
しかし、特許文献１の技術を用いて、中間バッファの面数や書込み・読出し順序が異なる複数製品向けの共通回路（共通ＡＳＩＣ、共通基盤）を作成しようとすると、中間バッファの面数毎（又は書込み・読出し順序毎）に中間バッファ制御機構を設計する必要が生じるために製品コストが増加するおそれがある。例えば、中間バッファの構成（面数や書込み・読出し順序）を変更できるようにした場合に、構成を変更した中間バッファへの書き込みと構成を変更した中間バッファからの読出しとの同期をとる制御にも変更を加える必要がある。
【０００９】
本発明は、このような事情に鑑みてなされたもので、本発明の手法により、中間バッファの構成を簡単な構成によって設定できるようにすることを目的としている。
【課題を解決するための手段】
【００１０】
上記目的を達成するため、本発明は、複数の記憶領域を備える記憶手段と、書込み対象の記憶領域を示す第１識別情報を、書込み順に出力する第１出力手段と、読出し対象の記憶領域を示す第２識別情報を、読出し順に出力する第２出力手段と、前記記憶手段へ書き込むデータを受信する受信手段と、前記第１出力手段から出力される第１識別情報の示す記憶領域へ、前記受信手段により受信したデータを書き込む書込み手段と、前記第２出力手段から出力される第２識別情報の示す記憶領域から出力するデータを読み出す読出し手段と、前記読出し手段で読み出したデータを出力する出力手段と、前記書込み手段による前記記憶手段へのアクセスと前記読出し手段による前記記憶手段へのアクセスとが完了したことに応じて、前記第１出力手段と前記第２出力手段のそれぞれについて次の順の識別情報を出力させるように制御する制御手段とを有することを特徴とする。
【発明の効果】
【００１１】
本発明によれば、中間バッファの構成を簡単な構成によって設定することができる。
【図面の簡単な説明】
【００１２】
【図１】（ａ）画像処理装置の全体構成を示すブロック図である。（ｂ）画像処理部の概略構成を示すブロック図である。
【図２】画像データの一連の入出力に関わる構成を示す概略図である。
【図３】バンド処理で用いるバンド画像を示す模式図である。
【図４】点順次形式の画像データの格納様式とデータ構造とを示す概略図である。
【図５】面順次形式の画像データの格納様式とデータ構造とを示す概略図である。
【図６】データ同期制御の構成を示す概略図である。
【図７】データ同期制御の動作を示す模式図である。
【図８】記憶領域を２つに絞った際のデータ同期制御の動作を示す模式図である。
【図９】記憶領域を１つに絞った際のデータ同期制御の動作を示す模式図である。
【図１０】ページ単位でデータを保持する様式を示す模式図である。
【図１１】並べ替えを含むバッファリングにおけるデータ同期制御の動作を示す模式図である。
【図１２】並べ替えを含むバッファリングにおけるデータ同期制御の動作を示す模式図である。
【図１３】画像処理部とＮｏＣやクラウドとを含むシステム全体を示す概略図である。
【図１４】画像処理装置の処理の概略を示すフローチャートである。
【発明を実施するための形態】
【００１３】
＜＜実施形態１＞＞
（画像処理装置）
まず、本発明の一実施形態である実施形態１の画像処理装置１０１の概略について説明する。画像処理装置１０１は画像データを処理する情報処理装置であればよい。
【００１４】
図１（ａ）は、本実施形態に係る画像処理装置１０１の全体構成の一例を示すブロック図である。画像処理装置１０１は、ＣＰＵ回路部１００、画像読み取り部１２０、画像処理部１５０を備える。
【００１５】
画像読み取り部１２０は、レンズ１２４、ＣＣＤセンサ１２６、及びアナログ信号処理部１２７を有する。画像読み取り部１２０では、レンズ１２４を介してＣＣＤセンサ１２６に原稿１１０の画像情報が結像され、その画像情報をＣＣＤセンサ１２６によりＲ（Ｒｅｄ）、Ｇ（Ｇｒｅｅｎ）、Ｂ（Ｂｌｕｅ）のアナログ電気信号に変換する。アナログ電気信号に変換された画像情報は、アナログ信号処理部１２７に入力され、Ｒ、Ｇ、Ｂの色毎に補正等が行われた後にアナログ／デジタル変換（Ａ／Ｄ変換）される。こうして、デジタル化されたフルカラーのデジタル画像信号（画素値）が生成される。生成されたデジタル画像信号は、映像入力部１３０へ入力され、その後、ＤＭＡＣ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌｌｅｒ）１９２へ入力される。
【００１６】
ＤＭＡＣ１９２は、ＣＰＵ１０２により予め動作が設定されており、共有バス１９０を介して、入力されたデジタル画像信号をＣＰＵ回路部１００のＲＡＭ１０６に記憶させる。なお、複数の画素についてのデジタル画像信号を１枚の画像や一部の画像領域を形成するようにまとめたものを、以降の説明では画像データと呼ぶ。本実施形態では、デジタル画像信号は画像データとしてＲＡＭ１０６に記憶されるものとする。画像処理を行う場合、ＣＰＵ１０２はＤＭＡＣ１９４を起動してＲＡＭ１０６に記憶された画像データをＤＭＡ転送によってＤＭＡＣ１９４によって読み出させ、処理の対象となる画素に対応するデジタル画像信号を画像処理部１５０に入力させる。
【００１７】
画像処理部１５０は、入力されたデジタル画像信号に対して、例えば、スキャナなどのセンサ・デバイスの読み取り素子の個体差の補正（シェーディング）と入力ガンマ補正などの色補正とを行い、処理済みの画像データを出力する。また、画像処理部１５０は入力されたデジタル画像信号に対し、入力色補正処理、空間フィルタ処理、色空間変換、濃度補正処理、及び中間調処理などの画像処理を施してもよい。そして、ＤＭＡＣ１９６は、画像処理部１５０によって画像処理が施された画像データをＲＡＭ１０６に格納する。なお、ＤＭＡＣ１９６の制御は、例えばＣＰＵ１０２が予めＤＭＡＣ１９６の動作を設定し、ＤＭＡＣ１９６を起動するようにして制御する。この際、ＤＭＡＣ１９６は、例えば処理後の画像データをダイレクトメモリアクセスによってＲＡＭ１０６や記憶装置１０８へ書き込むように設定されている。
【００１８】
ＤＭＡＣ１９８は、ＲＡＭ１０６に格納された画像処理済みの画像データを読み出して画像印刷部１７０へ出力する。ＤＭＡＣ１９８の設定と起動はＣＰＵ１０２が行う。画像印刷部１７０は、たとえば、インクジェットヘッドやサーマルヘッド等を使用した印刷出力部（不図示）を備える。そして、入力された画像データのデジタル画像信号に基づいて紙などの記録媒体上に画像を記録する。上述の説明では、画像印刷部１７０を用いる例を説明したがこれに限られない。例えば、画像印刷部１７０の構成の代わりに映像入力部１３０や映像表示部１６０を用いることにより、入力された映像に対し所望の画像（映像）処理を施し、処理後の映像をディスプレイなどの表示装置（不図示）に表示するようにしてもよい。
【００１９】
ＣＰＵ回路部１００は、演算制御用のＣＰＵ１０２、後述の画像処理やバッファ制御処理を実現するための固定データやプログラムを格納するＲＯＭ１０４、データの一時保存やプログラムのロードに使用されるＲＡＭ１０６、及び記憶装置１０８を備える。記憶装置１０８はＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）やＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）、ＳＤＲＡＭ、フラッシュメモリなどの構成を備える。記憶装置１０８は、本実施形態の画像処理装置が使用するパラメータやプログラムや補正データを記憶する記憶媒体であり、ＲＡＭ１０６のデータやプログラム等は、外部記憶装置１０８からロードされる構成としてもよい。
【００２０】
（画像処理部）
続いて、画像データに画像処理を施す画像処理部１５０について図１（ｂ）を用いてより詳細に説明する。図に示すように、画像処理部１５０は実際に画像処理を実施する画像処理実行部１５３と画像処理実行部１５３のインターフェースとなる画像入出力部１５２とを備える。画像入出力部１５２よりＣＰＵ１０２側（上位側）ではＤＭＡＣの転送単位やシステムバスのバス幅単位でデータを入出力する。一方で、画像入出力部１５２より画像処理実行部１５３側（下位側）では画素値（１つ以上の画素を１単位とするもの）でデータを入出力する。そこで、画像入出力部１５２は記憶部２３２を用いて、画像入出力部１５２から上位側と下位側の処理速度や転送速度の差を和らげる。
【００２１】
次に、図１（ｂ）の構成の概略動作を説明する。まず、ＣＰＵ１０２がＤＭＡＣ１９４を起動し、ＤＭＡＣ１９４はＲＡＭ１０６から画像データを読み出す。画像データのデータ構造については後述する。読み出された画像データは、入力ポート１５１を介して、画像処理部１５０の画像入出力部１５２へ入力される。画像入出力部１５２の画像入力部１５２１（第１受信部）は、画像データを取得すると、中間バッファ制御部１５２２に含まれる記憶部２３２（以降、中間バッファと称す。中間バッファについての詳細は後述する）の記憶領域に取得した画像データを記憶させる。そして、画像入力部１５２１は、中間バッファ２３２に記憶されている画像データを読み出しながら画素値を抽出し、入力画素値１５５として画像処理実行部１５３へ入力する。
【００２２】
画像処理実行部１５３は、入力画素値１５５に対して所定の画像処理を実行し、出力画素値１５６を画像入出力部１５２へ出力する。画像処理実行部１５３の詳細については後述する。なお、ここでは、入力画素値１５５および出力画素値１５６のそれぞれは、１つ以上の画素値である。例えば、画像処理実行部１５３で３×３のフィルタ処理だけを実施する場合には複数（９つ）の画素値が入力画素値１５５として入力され、それに対して１つの画素値が出力画素値１５６として出力される。もちろん画像処理回路１５３１には異なる画像処理を割り当て、それらを組み合わせて実行してもよい（詳細は後述する）。
【００２３】
画像入出力部１５２では、画像出力部１５２３が、処理後の出力画素値１５６から出力画像データを生成して中間バッファ制御部１５２２内の中間バッファ２３２（記憶部）に記憶する。画像出力部１５２３は、中間バッファ２３２に一時的に記憶された出力画像データを読み出し、出力ポート１５４を介してＤＭＡＣ１９６へ送出する。ＤＭＡＣ１９６は前述の通り、ＣＰＵ１０２により既に起動されており、受け取った出力画像データをＲＡＭ１０６（または記憶装置１０８）へ書き出す。
【００２４】
このようにして、画像処理部１５０は、画像処理装置１０１のＲＡＭ１０６の画像データを読み出してデータ処理を施し、データ処理後の画像データをＲＡＭ１０６へ書き戻す。ここで、画像入出力部１５２は、画像処理実行部１５３に対するデータの入出力の調節を行うデータ入出力制御装置として機能する。
【００２５】
なお、図２（ｂ）の構成において、画像入出力部１５２の画像入力部１５２１と画像出力部１５２３は、それぞれデータ同期制御装置５００（詳細は後述する）が組み込まれ、データ同期制御装置５００によって中間バッファ２３２へのデータの入出力を監視している。
【００２６】
（画像データの入出力）
図２は、ＲＡＭ１０６に保持している１つの画像データについて、ＲＡＭ１０６から画像入出力部１５２へ入力する系と、画像入出力部１５２からＲＡＭ１０６への出力する系とを含むデータフローの様子を示す概略図である。本説明ではまず、点順次形式の画像データを用いるものとして説明する。まず、図２に示す画像データの入出力の概略を説明すると、画像データの入力系において、画像データを画像処理実行部１５３へ入力する際には中間バッファ制御部１５２２のバッファ２３２の入力領域２３４に一旦バッファリングしてから入力している。一方で、画像データの出力系において、画像処理実行部１５３で処理した画像データをＲＡＭ１０６などに出力する際には中間バッファ制御部１５２２のバッファ２３２の出力領域２３６に一旦バッファリングしてから出力している。
【００２７】
次に、図２の詳細を説明する。画像処理装置１０１は、図２（ａ）及び図２（ｂ）のように、画像データ３００の一部分であるバンド領域３０１を、画像処理部１５０への入力画像データとしてＲＡＭ１０６に格納する。なお、入力画像３００を複数の短冊状の画像に分割したものがバンド領域（バンド画像）であり、画像処理部１５０はバンド領域を順に処理する。例えば１９２０（高さ）×１０８０（長さ）の入力画像を１００（高さ）×１０８０（長さ）のバンド領域に分割すると、２０個（１つは高さ２０）に分割できる。この時、バンドメモリは１００（高さ）×１０８０（長さ）分のデータを保持できるように構成すればよい。
【００２８】
そして、このバンド領域の入力画像データは、ＲＡＭ１０６で取り扱いやすくなるように３２Ｂｙｔｅを単位としたデータ構造をもつ。そのため、バンド領域の入力画像データは図２（ｃ）の入力画像データ２１０に示すようなデータ構造となる。
【００２９】
図２（ｄ）において、ＣＰＵ１０２は、ＤＭＡＣ１９４に指示信号（図２（ｄ）の２２１）を送信する。ＤＭＡＣ１９４は、図１の共有バス１９０を介して、このバンド領域の入力画像データ２１０をＭ個の小領域毎にＲＡＭ１０６から読み出し、画像処理部１５０へ入力する。Ｍ個の小領域は、入力画像データ２１０を、図２（ｃ）に示すデータ構造にしたがって、「３２Ｂｙｔｅ×Ｂｄｈ＿ｉｎ」の単位で、Ｍ個（小領域１〜小領域Ｍ２１１）に分けたものである。ＤＭＡＣ１９４は、Ｍ個の小領域（処理単位）の其々を入力画像データとして１つずつ順に読み出して画像処理部１５０に入力する。
【００３０】
上記のＣＰＵ１０２からＤＭＡＣ１９４への指示信号には、例えば、「読み出し先の先頭アドレス」、「連続読み出し量（３２Ｂｙｔｅ単位のデータを連続何回読み出すか）」、「インクリメント・アドレス（アドレス増分）」および「繰り返し回数」が含まれる。
【００３１】
例えば、図４の点順次形式の画像データでは以下の通りとなる。
【００３２】
・「先頭アドレス」：Ｓ５＿ＩＭＧ＿ＳＴＲ＿ＡＤＤＲ
・「連続読み出し量」：１回（３２Ｂｙｔｅ）
・「インクリメント・アドレス」：１ラインのデータ量＝３２Ｂｙｔｅ×Ｍ
・「繰り返し数」：バンド領域の高さ＝Ｂｄｈ＿ｉｎ回
このようにすることにより、先頭アドレスＳ５＿ＩＭＧ＿ＳＴＲ＿ＡＤＤＲから、まず３２Ｂｙｔｅのデータが読みだされる。そして、次のデータを取得するため、アドレスを３２Ｂｙｔｅ×Ｍだけ増加させることで、小領域２〜Ｍ２１１の１行目のデータの読み出しが飛ばされて、小領域１の第２行目の３２Ｂｙｔｅのデータを読み出すことができる。この処理を、繰返し数Ｂｄｈ＿ｉｎ回繰り返す。すなわち、小領域１のＢｄｈ＿ｉｎ行分のデータを読み出すことにより、小領域１＿２１１の全てのデータを読み出すことができる。以降、入力画像データ２１０の小領域２〜小領域Ｍ２１１の読み出しでは、「先頭アドレス」を３２ＢｙｔｅずつずらしてＤＭＡＣ１９４を動作させる。
【００３３】
画像入出力部１５２の画像入力部１５２１は、ＤＭＡＣ１９４から、入力画像データを受け取る。そして画像入力部１５２１に組み込まれた、後述のデータ同期制御装置を使って、その受け取った入力画像データを中間バッファ制御部１５２２へ転送する。中間バッファ制御部１５２２は、図２（ｅ）のように中間バッファ調停回路２３０（第１送信部、第２送信部）と中間バッファ２３２とで構成される。中間バッファ２３２は入力画像データを格納する領域である入力領域２３４と出力画像データを格納する領域である出力領域２３６とを有する。ＣＰＵ１０２は、中間バッファ２３２の入力領域の先頭アドレスを入力領域先頭アドレスとして、出力領域の先頭アドレスを出力領域先頭アドレスとして予め設定しておく。なお、画像入力部１５２１は受け取った入力画像データを、まず中間バッファ調停回路２３０へ入力する。
【００３４】
中間バッファ調停回路２３０は受け取った入力画像データを、中間バッファ２３２の入力領域２３４に格納する。通常、中間バッファ２３２は１つ以上の記憶領域で構成できる。例えば、１つの記憶領域を１つの内部記憶装置（ＳＲＡＭの１バンク等）で実現する場合には、中間バッファ２３２は記憶領域の数だけ（バンクを備える）内部記憶装置（ＳＲＡＭ等）を備えるように構成すればよい。また、この内部記憶装置の１ワードあたりのビット長が２５６ビット（３２Ｂｙｔｅ）長の場合、入力領域２３４で記憶するべきワード数はバンド領域の高さに相当し、ＤＭＡ転送の繰り返し数であるＢｄｈ＿ｉｎワードとなる。
【００３５】
一方で、この内部記憶装置の１ワードあたりのビット長が６４ビット（８Ｂｙｔｅ）長の場合、３２Ｂｙｔｅ長のデータを受けるのに４ワード必要となる。そのため、入力領域２３４で記憶すべきワード数は、バンド領域の高さ（ＤＭＡ転送の繰り返し数）Ｂｄｈ＿ｉｎを４倍したワード数となる。つまり、入力領域の容量は、１回のＤＭＡ転送の単位である小領域（処理単位）の入力画像データが格納できる容量となる。なお、ＤＭＡＣ１９４は、ＤＭＡ転送や１つのバンド領域の入力画像データの転送が完了すると、そのことを割り込み信号２２２を用いてＣＰＵ１０２へ通知してもよい。
【００３６】
その後、画像入力部１５２１は、中間バッファ調停回路２３０を介して、一時的に記憶された小領域の入力画像データを読み出し、１画素ずつの画素値を順次生成して、画像処理実行部１５３へ入力する。この時、画像入力部１５２１と画像処理実行部１５３との間でハンドシェイクを実施して、画像処理実行部１５３が次のデータを受け取れる状態であることを確認してもよい。
【００３７】
画像処理実行部１５３は、入力された１つ以上の画素からなる画素領域に画像処理を施す。例えば、複数の画素からなる画素領域に対して、画像処理実行部１５３によって所定の重み係数を乗算し、それらの値を全て加算することにより、１つの出力画素を得る。また、画像処理実行部１５３によってさらに画素領域をバンド領域の高さ方向にスライドさせながら上述の処理を進め、高さ方向に１列分の画素値を出力すると、次の列の画素を出力するための処理を実行させてもよい。画像処理実行部１５３は処理後の画素値について、１画素ずつ画像入出力部１５２の画像出力部１５２３へ出力する。
【００３８】
画像出力部１５２３（第２受信部）は処理後の画素値を受信し、組み込まれた後述のデータ同期制御装置を使って、処理後の出力画素値を変換した画像データを中間バッファ制御部１５２２へ転送し、記憶装置１０８に出力する画像データとして蓄える。
【００３９】
このとき、出力画像データのデータ構造は前述の図４の点順次形式のままであるが、出力画像データ２５０の形状（２次元の配列）は、図２（ｆ）のように、入力時（図２（ｃ））から変わっていてもよい。これは、画像処理実行部１５３で、入力画素領域のサイズと出力画素領域のサイズとが異なる様な画像処理が実行されるためである。図３（ｆ）に示すように、出力画像データ２５０の出力バンド領域の高さは、Ｂｄｈ＿ｏｕｔとなり、出力画像データ２５０のバンド領域の長さは、８×Ｎとなる。
【００４０】
ここで、入力画像データ２１０と出力画像データ２５０では、バンド領域の高さが異なるため小領域（処理単位）２５１の容量が小領域２１１と異なる可能性が有る。これは、画像処理実行１５３にフィルタ処理や変倍処理などのように入出力画素が１：１にならない処理要素を含むことに起因する。そして、バンド領域の長さが異なれば、小領域（処理単位）の数も小領域２１１のＭ個からＮ個に変化する。しかし、入力画像データ２１０と出力画像データ２５０のデータ構造は同様であるため、中間バッファ２３２の出力領域２３６の容量は入力領域２３４の容量と同様の手法で設定できる。
【００４１】
画像出力部１５２３には、Ｂｄｈ＿ｏｕｔ個の画素が４列分入力され、小領域（１）２５１の出力画像データが中間バッファ２３２の出力領域２３６に揃った時点で、画像処理実行部１５３からの処理後の出力画素値１５６の受け取りを停止する。そして、出力領域２３６の出力画像データを順次読み出し、ＤＭＡＣ１９６へ送出する。そしてＤＭＡＣ１９６は、ＣＰＵ１０２からの指示信号（図２（ｄ）の信号２２５）に従って、処理後の画像データをＲＡＭ１０６へ書き込む。
【００４２】
同様の動作を小領域Ｎ２５１まで繰り返し、図２（ｇ）記載の出力バンド領域の出力画像データをＲＡＭ１０６へ書き戻す。
【００４３】
次に、本実施形態の画像処理装置１０１の処理の概略を図１４に基づいて説明する。装置の起動指示をユーザから受け付けると、ステップ１４００でＣＰＵが起動シーケンスを開始する。具体的にはＲＯＭ１０４に保持されているプログラムローダやファームウェアをＣＰＵ１０２が読み込んで実行する。そして、ステップＳ１４０１でＣＰＵ１０２がＲＯＭから読み込んだ値をファームウェアのプログラムに従って各構成要素のレジスタにレジスタアクセスで書込む。レジスタアクセスの対象は各ＤＭＡＣの制御レジスタや、後述のデータ同期制御装置５００の順序設定レジスタや、インターコネクト１５３０内の画像処理回路１５３１の転送順序を規定するレジスタ（不図示）、画像処理回路１５３１の処理内容を示すレジスタである。なお、ＣＰＵがレジスタアクセスで設定する値は、製品出荷前に工場でＲＯＭに書き込まれていてもよいし、インターネットやＣＤＲＯＭなどの記憶媒体からＲＯＭに書き込まれていてもよい。
【００４４】
ステップＳ１４０２で、ＣＰＵ１０２は画像処理部１５０に処理させる画像データの転送を開始するかどうかを判定し、データの転送を開始する際にはＤＭＡＣ１９４とＤＭＡＣ１９６に処理対象の画像データを転送するために前述の設定をする。
【００４５】
ステップＳ１４０３で、画像処理部１５０の画像入力部１５２１と画像出力部１５２３は、中間バッファ２３２内の書き込み対象と読出し対象に対して入出力データをバッファリングするためのアクセスをする。ここで、中間バッファ２３２には複数の記憶領域が設けられることが多く、画像入力部１５２１と画像出力部１５２３は複数の記憶領域のいずれかをアクセス対象として選択する。
【００４６】
ステップＳ１４０４で、画像入力部１５２１と画像出力部１５２３の其々は、自身のバッファリングのための書込みと読出しが完了したかどうかを判定する。ステップＳ１４０５で、画像入力部１５２１と画像出力部１５２３の其々は、自身のデータ転送が終了したかどうかを判定する。ステップＳ１４０５でデータ転送が終わっていなければ、ステップＳ１４０６で画像入力部１５２１と画像出力部１５２３の其々は、次の書き込み対象と読出し対象に移行してステップＳ１４０３に遷移してバッファリングを継続する。一方で、ステップＳ１４０５でデータ転送が終わっていれば、処理を終了する。
【００４７】
（データ同期制御装置）
まず、データ同期制御装置５００の概略について説明する。本実施形態に係るデータ同期制御装置５００は、画像入力部１５２１と画像出力部１５２３に、１つずつ組み込まれ、中間バッファ２３２における入力系のバッファリング動作と出力系のバッファリング状態とをそれぞれ個別に監視している。図６に示す構成では画像入力部１５２１と画像出力部１５２３に組み込まれている２つのデータ同期制御装置は、中間バッファ制御部１５２２と中間バッファ２３２および中間バッファ調停回路２３０を共有している。なお、画像処理装置１０１に、画像データの入力と画像データの出力の各々に対して１つずつ中間バッファ制御部１５２２を配置し、中間バッファ２３２や中間バッファ制御部１５２２および中間バッファ調停回路２３０を、２つのデータ同期制御装置５００で共有しない構成にしてもよい。この場合は、この２つのデータ同期制御装置は、それぞれ別の中間バッファ制御部１５２２と接続されることとなる。
【００４８】
次に、中間バッファ制御部１５２２の中間バッファ調停回路２３０の概略を説明する。      
【００４９】
中間バッファ制御部１５２２に組み込まれた中間バッファ調停回路２３０は、画像入力部１５２１または画像出力部１５２３から受信した画像データ（ｂｕｆｆｅｒ＿ｉｎ）を、中間バッファ２３２の１つの記憶領域に書き込む（Ｗｒｉｔｅ）。この際に、中間バッファ調停回路２３０は、画像入力部１５２１から受信した画像データ（ＤＭＡＣの転送単位）は入力領域２３４へバッファリングし、画像出力部１５２３から受信した画素データ（画素単位）を出力領域２３６へバッファリングする。次に、中間バッファ調停回路２３０は、中間バッファ２３２の記憶領域に記憶している画像データを読み出す。画像入力部１５２１からの画像データについては、中間バッファ調停回路２３０が画素単位（１以上の画素）で画像処理実行部１５３へ出力(送信)する。画像出力部１５２３がバッファリングした画素データについては、少なくともＤＭＡＣの転送単位の分だけ溜めてから画像出力部１５２３が画像データに変換して（ＤＭＡＣ１９６を介して）ＲＡＭ１０６又は記憶装置１０８へ出力する。
【００５０】
ここで、画像入力部１５２１のデータ同期制御回路５００は入力系のバッファリング動作について、中間バッファ２３２への書き込み動作と読出し動作を確認して同期制御を行う。一方で、画像出力部１５２３のデータ同期制御装置５００は、出力系のバッファリング動作について中間バッファ２３２への書き込み動作と読出し動作を確認して同期制御を行う。
【００５１】
次に、図６を用いてデータ同期制御装置５００の構成と動作を説明する。図６は、データ同期制御装置５００の概略構成を示すブロック図である。画像入力部１５２１に組み込まれたデータ同期制御装置５００も画像出力部１５２３に組み込まれたデータ同期制御装置５００も同じ構成でよい（ただし、入力系と出力系で扱う記憶領域が異なるため設定は異なる）。データ同期制御装置５００は、「書込み順序設定レジスタ５３０や読出し順序設定レジスタ５４０のように、中間バッファ２３２のどの領域に書き込むか（読み出すか）を示すバンクアドレスなどの情報を書込み（読出し）順で出力する構成」と、「同期制御部５７０のように読出し系と書込み系の同期制御を行う構成」によって同期制御をしている。
【００５２】
図６の構成では、入力系と出力系に配置される２つのデータ同期制御装置５００は中間バッファ２３２の４つの記憶領域［０］５１０〜記憶領域［３］５１３に対して同期制御を行う。そのため、データ同期制御装置５００は４つの記憶領域の記憶状態を監視した結果を記憶領域毎に保持するために、少なくとも４つの記憶状態保持レジスタ（記憶状態保持部）５２０を備える。例えば、同期制御部５７０がある記憶領域に書き込むべきデータが記憶領域にすべて書き込まれた段階で、この記憶領域に対応する記憶状態保持レジスタ５２０に対して有効を示すフラグを設定する。さらに、同期制御部５７０は、記憶領域から読み出すべきデータが記憶領域からすべて読み出された段階で、読み出した記憶領域に対応する記憶状態保持レジスタ５２０に対して無効を示すフラグに変更する。このように記憶状態保持レジスタ５２０には、すべての記憶領域のデータの格納状態を示すフラグが保持されている。なお、各記憶状態保持レジスタ５２０は初期値としてデータを保持していないこと（無効）を示すフラグが設定されているものとする。
【００５３】
データ同期制御装置５００には、書き込み順序を設定する書き込み順序設定レジスタ（第１出力部または第３出力部）５３０と読み出し順序設定レジスタ（第２出力部または第４出力部）５４０を備える。これらの順序設定レジスタ（順序設定部）には前述の記憶領域の各々に対応した番号（値やＩＤなど、個々を識別するための情報）を、使用する順番に沿って設定する。例えば入力系のデータ同期制御装置５００について、カスケード接続されている４つの書き込み順序レジスタ５３０には、前述のようにＣＰＵ１０２によって｛０ｘ０，０ｘ１，０ｘ０，０ｘ１｝という識別情報（第１識別情報）が設定されている。この識別情報はアクセス対象を識別するためのもので、この設定であると記憶領域［０］、記憶領域［１］、記憶領域［０］、記憶領域［１］の順序で記憶領域にアクセスすることを意味している。また、読み出し順序レジスタ５４０に保持されている識別情報（第２識別情報）も書込み順序設定レジスタ５３０と同様の設定である例について説明する。この場合は、書き込み順と同じ順で記憶領域が読出しアクセスされる。一方で、出力系のデータ同期制御装置５００の書き込み順序設定レジスタ５３０およびお読出し順序設定レジスタ５４０には｛０ｘ２，０ｘ３，０ｘ２，０ｘ３｝という識別情報をＣＰＵ１０２が設定する。
【００５４】
また、データ同期制御装置５００は、順序設定レジスタ５３０、５４０に設定されている順序に沿って記憶領域を選択させるために、書き込み記憶領域選択回路（記憶領域選択部）５３５と読み出し記憶領域選択回路（記憶領域選択部）５４５を備える。図６
の例では、記憶領域選択回路５３５，５４５はリング式のレジスタになっており、保持している値を同期信号５７２によってシフトする機構になっている。そのため、記憶領域選択回路５３５，５４５は記憶領域を識別するための値を設定された使用順で繰り返しながら出力する。図示している例では、斜線でマークされたレジスタ５３２と５４２に保持されている番号が、次に使用される記憶領域（アクセス対象として選択された記憶領域）の番号を示している。そして、データ同期制御装置５００は、選択された記憶領域の記憶状態を確認するために、セレクタ５３８と５４８を用いて領域選択回路５３５，５４５により選択された記憶領域に対応する記憶状態保持レジスタの値を各々取得する。
【００５５】
同期制御部５７０は、選択された記憶領域への書き込みを制御する書き込み制御部５５０（第１書込み部、第２書込み部）と、選択された記憶領域からの読み出しを制御する読み出し制御部５６０（第１読出し部、第２読出し部）と、の同期をとるための構成である。書き込み制御部５５０と読み出し制御部５６０は、前述の小領域（転送単位）の画像データを、ＤＭＡ転送や画像処理の走査方向などに沿って、選択された記憶領域に書き込んだり、読み出したりする。そして、書き込み制御部５５０と読み出し制御部５６０の各々は、小領域（転送単位）の画像データの書き込み，読出し処理を完了すると、同期制御部５７０に通知する。ここで、同期制御部５７０は、画像データの書き込みと読み出しの両方が完了するまで待ち合わせを行う。書き込み制御部５５０と読み出し制御部５６０の両方の処理が完了すると、同期制御部５７０は同期信号５７２を有効にして、記憶領域選択回路５３５，５４５のリング式レジスタの値をシフトさせる。これによって、記憶状態保持レジスタ５３０，５４０のうち、選択された記憶領域の状態を、無効から有効に変化させたり、有効から無効に変化させたりすることができる。データ同期制御装置５００は、以上のようにして画像データの書き込みと読み出しの同期を取る。
【００５６】
なお、書込み順序設定レジスタ５３０や読出し順序設定レジスタ５４０はシフトレジスタでなくてもよい。例えば、順序設定レジスタが４つのレジスタで構成される場合に、４つのレジスタを順にラウンドロビンで選択するようなマルチプレクサを配置すればよい。マルチプレクサを用いる場合は、同期制御部５７０からの同期信号５７２によって次のレジスタを選択すればよい。他にも、アクセス順に記憶領域の番号を保持するテーブルを保持し、テーブルのエントリに保持されている記憶領域の番号を順に出力するように構成してもよい。
【００５７】
また、書込み順序設定レジスタ５３０や読出し順序設定レジスタ５４０の値は、画像処理装置１０１による処理の開始時に、ＲＯＭ１０４に保持されているファームウェアをＣＰＵ１０２が実行し、ＣＰＵ１０２によるレジスタ設定によって書きこまれる。書込み順序設定レジスタ５３０と読出し順序設定レジスタ５４０および各画像処理回路１５３１内のレジスタ（不図示）は同一のレジスタアドレス空間に配置されていてもよい。その際、これらのレジスタはＣＰＵ１０２によって同様に設定することができる。なお、画像処理回路１５３１内のレジスタ（不図示）は各画像処理回路１５３１の処理内容を規定するパラメータである。ここで、図１（ａ），図１（ｂ）に示す構成では、ＤＭＡＣ１９４から画像処理部１５０内部へは単一のバス経路しか図示していないが、レジスタ設定をするコマンドと処理対象の画像データを単一のバス経路で多重化するように構成すればよい。
（「記憶領域の記憶状態」と「書き込みや読み出し」の関係）
次に、書込み制御部５５０や読出し制御部５６０による書込み，読出し処理によって記憶領域［０］〜［３］の記憶状態がどのように遷移するかを説明する。
【００５８】
図７〜図９は、図６の構成における書込み，読出し処理中の記憶状態の遷移を示す模式図である。図の上部には書込み，読込み対象の画像データの一部とバンド領域との関係や、書込み順序設定および読出し順序設定を示す。詳細には、１つのバンド領域に対応する画像データとしてデータ［０］〜データ［９］まで並んでいる。このデータの１つは、前述の小領域（転送単位）を示している。そしてバンド領域の左端から右端に向けて、図ではデータ［０］からデータ［９］までを順番に入力し、出力することを示している。
【００５９】
図８は、入力系のデータ同期制御装置５００の挙動を示す。図８では、書込み順序設定と読出し順序設定とが記憶領域［２］，［３］を使用しないように設定されている。
【００６０】
図８の下部には各記憶領域の記憶状態を示す模式図を示している。この模式図の横軸に記憶領域［０］から記憶領域［３］を図示し、縦軸にＴ［０］からの時間の経過を示す。また、模式図の左端に示す時間の経過の１区切りが前述の同期信号が有効になるタイミングを図示している。また模式図には、左端からデータの書き込みが行われ、右端から格納済みのデータの読み出しが行われている様を図示している。
【００６１】
Ｔ［０］のとき、書き込み順序設定レジスタ５３２に格納されている｛０ｘ０｝に対応する記憶領域［０］の記憶状態は、データが格納されていないことを示す＜無効＞である。として、書込み制御部５５０は外部から記憶領域［０］に対してデータ［０］の書き込みを行う。一方、読み出し順序設定レジスタ５４２に格納されている｛０ｘ０｝に対応する記憶領域［０］の記憶状態は＜無効＞であり、まだデータが格納されていないので、読み出し制御部５６０はデータを読み出すことができない。ここで、同期制御部５７０はＴ［０］で読み出しが行われないので読み出し完了として取り扱い、書き込みが完了した段階で同期処理する。なお、この同期処理において同期制御部５７０は、書き込み順序設定レジスタ５３０の値を１つシフトするが、読み出しは行われていないので読み出し順序設定レジスタ５４０の値はシフトしない。
【００６２】
Ｔ［１］のとき、書き込み順序設定レジスタ５３２に格納されている｛０ｘ１｝に対応する記憶領域［１］の記憶状態は、データが格納されていないことを示す＜無効＞であり、書込み制御部５５０は記憶領域［１］に対してデータ［１］の書き込みを行う。一方、読み出し順序設定レジスタ５４２に格納されている｛０ｘ０｝に対応する記憶領域［０］の記憶状態は＜有効＞であり（図にはデータ［０］を示すマークとして図示している）、読み出し制御部５６０によって格納されているデータを読み出すことができる。同期制御部５７０はデータ［１］の書き込みとデータ［０］の読み出しの両方が完了した通知を受けてから、書き込み順序設定レジスタ５３２と読み出し順序設定レジスタ５４２の値を各々１つシフトする。
【００６３】
Ｔ［２］以降も同様に、図８のように処理を行えば、データ［０］からデータ［９］までの画像データを入出力できる。
【００６４】
図８の例では、書き込み順序設定と読み出し順序設定の設定値を｛０ｘ０，０ｘ１，０ｘ０，０ｘ１｝とすることで、見かけ上の記憶領域の数を２つに設定している。順序設定の値に｛０ｘ２｝と｛０ｘ３｝がないため、記憶領域［２］と記憶領域［３］は使用されることはない。例えば、中間バッファ２３２の中に記憶領域を２つしか持たないＡＳＩＣを設計する際であっても、データ同期制御装置５００の順序設定レジスタの設定を変えるだけで対応できる。なお、出力系のデータ同期制御装置５００では書き込み順序設定と読み出し順序設定の設定値を｛０ｘ２，０ｘ３，０ｘ２，０ｘ３｝と設定することで、記憶領域［０］と記憶領域［１］を使用しない様に設定している。入力系の挙動とアクセス対象の記憶領域が異なるだけであり、出力系の挙動は図８と同様である。図８の模式図から明らかなように、入力系のデータ同期制御装置５００と出力系のデータ同期制御装置５００は、アクセス対象の記憶領域が変わるだけで、同期制御装置５００や中間バッファ制御部１５２２の論理構成を変更しなくてすむ。
【００６５】
次に、入力系と出力系で中間バッファ２３２と中間バッファ調停回路２３０とを個別に備える形態に、図６のデータ同期制御装置５００を適用した場合の挙動について、図７を用いて説明する。なお、図２に示すように中間バッファ２３２の各記憶領域が入力系の入力領域２３４と出力系の出力領域２３６とに分けられていれば、入力系と出力系の同期制御装置５００はどちらも全ての記憶領域をアクセス対象とすることができる。
【００６６】
図７の例では書き込み順序設定と読み出し順序設定はどちらも｛０ｘ０，０ｘ１，０ｘ２，０ｘ３｝と設定しているため、記憶領域［０］、記憶領域［１］、記憶領域［２］、記憶領域［３］、記憶領域［０］・・・の順序でアクセス対象として選択される。
【００６７】
また、図９の例は、記憶領域の数を１つに設定したときの模式図である。この例では書き込み順序設定と読み出し順序設定の設定値を｛０ｘ０，０ｘ０，０ｘ０，０ｘ０｝とする。順序設定の値に｛０ｘ１｝と｛０ｘ２｝と｛０ｘ３｝がないため、記憶領域［１］，［２］，［３］は使用されることはない。図９の処理についても、図６の構成について順序設定を変えるだけで実現することができる。
【００６８】
ただし、図９のように記憶領域の数を１つにすると、書き込み処理（ｂｕｆｆｅｒ＿ｉｎ）と読み出し処理（ｂｕｆｆｅｒ＿ｏｕｔ）とで同一の記憶領域［０］を共有するため、どちらかの１つ処理しか同時に実行することはできない。そのため、データ［０］からデータ［９］までの画像データを入出力するために所要する時間が図７，図８と比べて大きく延びている。
【００６９】
なお、図９や図８の例は、中間バッファ制御部１５２２を入力系と出力系に個別に設ける場合であっても、共有してもうける場合であっても適用できる。
【００７０】
（画像処理実行部）
次に、画像処理部１５０内の画像処理実行部１５３について詳細に説明する。画像処理実行部１５３は、画像処理回路（１）〜（Ｐ）の、Ｐ個の画像処理回路１５３１と、それらを繋ぐインターコネクト１５３０とで構成される。Ｐ個の画像処理回路１５３１と、インターコネクト１５３０とは、入力ポート１５３２、１５３５、並びに１５３８、および出力ポート１５３３、１５３６、並びに１５３９等のポートを介して互いに接続される。各ポートはデータとコマンド（画像処理回路１５３１での画像処理内容を決定するパラメータなど）を多重化して送信する。
【００７１】
画像処理回路１５３１は、例えば、入力色補正処理、色空間変換、濃度補正処理、中間調処理、空間フィルタ処理、解像度変換、トリミング処理、端部拡張処理、ＩＰ変換、クロマ・アップサンプリングのうち、少なくとも１つに関する処理を行う。これらの画像処理回路１５３１は、其々がパイプライン回路等のハードウエアロジックで実現されてもよいし、プロセッサがプログラム（ソフトウエア）を実行することで実現されてもよい。そして、例えば、入力ポート１５３２、１５３５、１５３８等から入力画素値１５５を受け取り、処理を施した後に、出力ポート１５３３、１５３６、１５３９から処理後の出力画素値１５６を出力する。
【００７２】
また、インターコネクト１５３０はクロスバーやリングバス等の接続手段で実現されており、入力ポートと出力ポートの接続先を任意に切り替えることができる。したがって、ＣＰＵ１０２がこれらポートの接続先の指定をインターコネクト内のレジスタに設定することで、インターコネクト１５３０は、例えばＰ個の画像処理回路１５３１の実行順序を変更し、または一部の処理をバイパス（スキップ）することができる。このように、画像処理実行部１５３は、アプリケーションに応じて、各種の処理を取捨選択して組み合せ、所望の画像処理を実現する。
【００７３】
（領域分割）
次に、本実施形態における画像データの領域分割について説明する。本実施形態では、領域分割手法の１つであるバンド処理を用いるものとする。以下、バンド処理について、図３を用いて説明する。バンド処理では、図３（ａ）〜（ｄ）に示されるように、１枚の画像データ３００を帯状のバンド領域３０１〜３０４に分割し、この領域毎に各種の画像処理を行う。なお、バンド領域は、画像データを主走査方向または副走査方向のいずれかにおいて帯状に分割したものであり、バンド領域と画像データとは、主走査方向または副走査方向のいずれかにおいて長さが一致する。例えば、図３（ａ）〜（ｄ）では、画像データは副走査方向において分割され、画像データとバンド領域とでは、主走査方向について同一の長さを有し、副走査方向において異なる長さを有する。以下では、この分割された細長い領域をバンド領域と呼び、バンド領域が展開されるアドレス領域をバンドメモリと呼び、画像データを分割する行為をバンド分割と呼ぶ。バンドメモリは、ＲＡＭ１０６内に確保されてもよく、また、システム上の適切な領域に確保されてもよい。なお、ここでは説明を簡潔にするためにバンドメモリをＲＡＭ１０６に確保する場合を例に挙げて説明する。
【００７４】
また、以下では、図３（ｅ）に示すように、画像データの座標系（主走査方向−副走査方向）を、長さ方向、高さ方向という新たな座標系（バンド領域座標系）によって定義し、バンド領域を「長さ×高さ」で表現する。バンド領域の長さ、すなわちバンド領域の長さ方向の一辺の大きさは、画像データの主走査方向の長さ、または副走査方向の長さの何れかの値とする。また、バンド領域の高さ、すなわちバンド領域の高さ方向の一辺の大きさは任意の値となる。例えば、図３（ａ）〜（ｄ）では、長さ方向は主走査方向であり、高さ方向は副走査方向である。これに対し、図３（ｐ）〜（ｒ）のように、例えば画像データを主走査方向において分割した場合、図３（ｓ）に示すように、長さ方向が副走査方向となり高さ方向が主走査方向となる。図３（ｐ）〜（ｒ）のようなバンド分割は、例えば画像データの主走査方向の大きさが副走査方向の大きさより大きい場合に行うようにしてもよい。
【００７５】
バンド処理では、まず、図３（ａ）に示す第１のバンド領域３０１を、ＲＡＭ１０６上のバンドメモリに展開して画像処理を行い、処理結果はＲＡＭ１０６のバンドメモリ外に書き戻す。次に、図３（ｂ）に示す第２のバンド領域３０２を、第１のバンド領域３０１が展開されたＲＡＭ１０６上のバンドメモリに上書き展開して、画像処理を行なう。図３（ｃ）に示す第３のバンド領域３０３や、図３（ｄ）に示す第４のバンド領域３０４も、同様にバンドメモリに上書き展開して画像処理を行なう。図３（ａ）〜（ｄ）で明らかなように、バンド領域３０１〜３０４の長さは同じであるが、高さは同じでなくてもよい。したがって、メインメモリに確保されるバンドメモリの高さは、高さ方向の一辺の大きさが最も大きいバンド領域（図３の場合、第１〜第３のバンド領域３０１〜３０３）によって決定される。
【００７６】
なお、バンド処理では、各バンド領域間で隙間なく空間フィルタ処理などの局所（近傍）画像処理を行なうため、図３（ｆ）〜（ｈ）のように、各バンド領域が、それぞれ隣接する領域との境界で一部分が互いに重なり合うようにする。そして、各領域の高さと同一の方向に１画素ずつ画素を走査ことで、局所（近傍）画像処理に必要な処理画素を保持する遅延メモリの容量を各領域の高さで規定する。以上のように領域毎に処理することにより、局所（近傍）画像処理で必要となる遅延メモリの省メモリ化を実現できる。
【００７７】
（点順次形式の画像データのデータ構造）
次に、点順次形式の画像データのデータ構造の一例について詳細に説明する。本実施形態では、前述のように、画像データはＲＡＭ１０６に一時的に格納される。一般的にＲＡＭ１０６は安価なＤＲＡＭで構成されることが多い。したがって、前述のようにＤＭＡＣを介して画像データをＤＲＡＭ対して読み書きする場合、ＤＲＡＭの性能を落とさずに読み書きできる単位（アクセス単位）で画像データを取り扱うことが望ましい。そこで、ＲＡＭ１０６（以降の説明ではＤＲＡＭとする）の画像データの格納方法の一例と、画像データのデータ構造の一例について、図４を用いて詳しく説明する。図４は、ＲＡＭ１０６上にデータが格納された状態を示している。図４の例では、あるデータ領域４０７（ＩＭＧ＿ＡＲＥＡ＿ＳＴＲ＿ＡＤＤＲからＩＭＧ＿ＡＲＥＡ＿ＥＮＤ＿ＡＤＤＲまでの領域）が予め画像処理を始める前に確保され、ここに画像処理に必要な種々の画像データが格納される。
【００７８】
図４は、点順次形式の画像データのＲＡＭ１０６への格納例であり、ＲＡＭ１０６のデータ領域に、Ｓ５＿ＩＭＧ４２５とＳ６＿ＩＭＧ４２６の２種の画像データが格納されている。この例では、ＤＲＡＭの性能を落とさずに画像データを読み書きできるように、格納される画像データの容量の最小単位は、図中の４０８に示すように、３２ｂｉｔ×８ｗｏｒｄの３２Ｂｙｔｅとしている。すなわち、Ｓ５＿ＩＭＧ４２５とＳ６＿ＩＭＧ４２６の画像データの格納容量（ＤＲＡＭ上での容量）は３２Ｂｙｔｅの整数倍となる。なお、画像処理装置１０１でのＲＡＭ１０６の構成のし方や、ＲＡＭ１０６を実現する記憶部（ＤＲＡＭ、ＳＤＲＡＭ、ＤＤＲ等）の種類、メモリバスのバス幅、そして実行する画像処理の種類等により、画像データの読み書き単位は必ずしも３２Ｂｙｔｅでなくてもよい。例えば、読み書き単位が変われば、画像データを記憶する中間バッファの容量の算出方法を変えればよい。
【００７９】
次に、点順次形式の画像データのデータ構造を詳しく説明する。画像データ４４０は点順次形式で、Ｒ（Ｒｅｄ）、Ｇ（Ｇｒｅｅｎ）、Ｂ（Ｂｌｕｅ）の其々の画素値を有する（以降、ＲＧＢの画素値の組み合わせを１つの画素値と略称する）。画像データ４４０に含まれる１つの領域４４２は３２Ｂｙｔｅ単位のデータであり、１つの領域４４２の中には、４４４で示すように、複数個（８つ）の画素値がパッキングされている。そして、４４４に含まれる８つの画素値のそれぞれには、４４６で示すようにそれぞれ１０ｂｉｔのＲ、Ｇ、Ｂの値がパッキングされている。なお、図の例では、残りの２ｂｉｔは、ＤＲＡＭへのアクセスを効率的にするための無効データ（予約領域）であり、データを格納しない（常に零値である）ものとする。図中太線で表される画像データ４４０は、８Ｍ×Ｎ画素のサイズを有する。なお、上述の例では、縦１画素、横８画素を１単位として３２Ｂｙｔｅ単位のデータの領域４４２を定めた例を示したが、画像データ４９４の例のように、縦２画素、横４画素を１単位とするデータの領域４９２を定めてもよい。
【００８０】
（面順次形式の画像データのデータ構造）
次に、面順次形式の画像データのデータ構造の一例について、図５を用いて説明する。図５に図示している例では、ＲＡＭ１０６のデータ領域に、Ｓ０＿ＩＭＧ４２０〜Ｓ３＿ＩＭＧ４２４までの４種の画像データが格納されている。この４種のデータは、画像読み取り部１２０で読み取った画像に色空間変換や濃度補正処理を施し、第１色Ｋ（Ｂｌａｃｋ）、第２色Ｍ（Ｍａｇｅｎｔａ）、第３色Ｃ（Ｃｙａｎ）、第４色Ｙ（Ｙｅｌｌｏｗ）の色毎のモノトーンの画像に変換したものである。そしてＤＲＡＭの性能を落とさずに画像データを読み書きできるように、各々格納される画像データの容量の最小単位は、点順次形式の画像データと同様に、３２Ｂｙｔｅ（３２ｂｉｔ×８ｗｏｒｄ）単位となっている。Ｓ０＿ＩＭＧ４２０〜Ｓ３＿ＩＭＧ４２６のデータの格納容量についても上述の点順次の説明と同様に３２Ｂｙｔｅの整数倍となる。
【００８１】
次に、面順次形式の画像データのデータ構造を詳しく説明する。画像データ４３０は前述のＳ０＿ＩＭＧ４２０の領域の第１色Ｋ（Ｂｌａｃｋ）の画像データを示している。画像データ４３０の領域４３２は前述３２Ｂｙｔｅ単位のデータであり、その中に８個の３２ｂｉｔ長データ４３４がパッキングされている。そして、１つの３２ｂｉｔ長データ４３４は、Ｋ（Ｂｌａｃｋ）の色要素について４つの８ｂｉｔ長データ４３６を有する。図の太枠４３０の範囲は、８×４×Ｍ×Ｎの大きさの画像データを意味する。第２色〜第４色の画像データについてもそのデータ構造は同様なのでその説明は省略する。
【００８２】
（面順次形式の画像データの入出力方法）
上述の説明では簡便のため点順次形式の画像データを用いて説明したが、次に、図５の様な面順次形式の画像データをＲＡＭ１０６から画像処理部１５０へ入力し、処理後の画像データを画像処理部１５０から出力する手法について説明する。
【００８３】
面順次形式の入力画像データについて画像処理を実施する場合、第１色〜第４色の４つの画像データの其々について、小領域（処理単位）ごとにＲＡＭ１０６から読み出す必要がある。そのため、点順次形式の画像データの場合と違い、４色の画像の同じ位置の小領域について、異なる「先頭アドレス」でＤＭＡ転送を４回実行する。詳細には、小領域１に対応する画像データについて、ＤＭＡＣ１９４に、以下の４つの先頭アドレスを順に切り替えながらＤＭＡ転送を４回実行する。
・「先頭アドレス［１回目］」：図５のＳ０＿ＩＭＧ＿ＳＴＲ＿ＡＤＤＲ
・「先頭アドレス［２回目］」：図５のＳ１＿ＩＭＧ＿ＳＴＲ＿ＡＤＤＲ
・「先頭アドレス［３回目］」：図５のＳ２＿ＩＭＧ＿ＳＴＲ＿ＡＤＤＲ
・「先頭アドレス［４回目］」：図５のＳ３＿ＩＭＧ＿ＳＴＲ＿ＡＤＤＲ
そして、画像入力部１５２１はＤＭＡＣ１９４によって読み出した４つの画像データを、一旦、中間バッファ２３２へ格納する。そして、画像入力部１５２１は４つの画像データの所定の位置（座標）の４つの色要素を読み出し、１つにまとめて点順次形式の画素値（Ｃ，Ｍ，Ｙ，Ｋ）として画像処理実行部１７０へ入力する。また、画像処理実行部１５３によって処理した点順次形式の画素値（Ｃ，Ｍ，Ｙ，Ｋ）については、画像出力部１５２３が中間バッファ２３２へ格納する際に４つの色要素を出力領域内の異なる領域に各々格納することで面順次形式の出力画像データを得る。当然ながら、入力画像データの読み出しと同様で、出力画像データのＲＡＭ１０６への書き出しについても同様に４回のＤＭＡ転送が必要となる。
【００８４】
以上のように本実施形態を用いれば、中間バッファの構成（面数や書込み・読出し順序）を変えても、中間バッファへの書込みと読出しの同期制御ができるため、簡単な構成によって中間バッファの構成を設定・変更することが可能になる。
【００８５】
従って、中間バッファへの画像データの書き込み順序と、中間バッファからの画像データの読み出し順序を別々に設定できる。また、中間バッファの面数を任意に変更できる。例えば、２種類の設定を用いて、データの書き込みと読み出しに使用する記憶領域の数をｎ個（ｎは２以上の整数）からｍ個（ｎより小さい自然数）に設定することができる。そのため高機能製品にはｎ個の記憶領域を使用し、低価格製品にはｍ個の記憶領域を使用するなどして中間バッファを構成するＳＲＡＭ等のメモリを削減し、回路規模を削減できる。また、このとき中間バッファを制御するデータ同期制御装置は同一の装置を用いればよく、各々を区別して別々に論理設計して、異なる２種類の同期制御装置を設計する必要はない。このように書き込み順序と読み出し順序の設定を変更するだけで、データ同期制御装置に接続する中間バッファの記憶領域の数を最適に変更し、中間バッファの記憶容量を最適化できる。また本実施形態を用いることで画像データ入出力の速度と回路規模のトレードオフを実現することができる。
【００８６】
また中間バッファの記憶領域をｎ個使用する高機能製品において、動作が遅くてよいときに、一時的にデータ入出力用途の中間バッファとして使用する記憶領域をｍ個に変更し、残りの記憶領域を別用途の画像処理に柔軟に割り当てて、適宜、中間バッファの記憶領域を効率的に使用することができる。ここで、別用途の例としては、フィルタ処理を実施する画像処理回路について、フィルタ処理に必要な周辺画素を保持する遅延メモリや、色変換を実施する画像処理回路についてＬＵＴを保持するＬＵＴ保持部や、データキャッシュとしての用途などがある。なお、別用途に用いる画像処理回路は、インターコネクト１５３０とは別の信号線によって中間バッファとして用いられるＳＲＡＭのコントローラの別ポートに接続されるように構成してもよい。
【００８７】
＜＜実施形態２＞＞
本実施形態では、実施形態１の構成において書込み順序設定や読出し順序設定の設定値によってバッファでのデータの並べ替えを実現する例を説明する。
【００８８】
図１０は、画像の一部ずつを左右反転するなど、前処理や他のデバイス（画像読み取り部１２０のＣＣＤ１２６の構成など）の都合上、画像データの内部のデータが並び換えられて外部記憶装置に格納されている様を示している。外部記憶装置としてＤＲＡＭを用いており、そのＤＲＡＭのページ単位（ＤＲＡＭ上における同じ行アドレス単位）に画像処理に必要な画像データが記憶されている。ＳＤＲＡＭ等のＤＲＡＭは、ページ単位でデータをバースト・アクセスしたときに効率的にデータを読み出せる。そのため、１ページ分の画像データを連続して読み出すことが効率上、望ましい。
【００８９】
図１０の例では、ＤＭＡＣは小領域（転送単位）の画像データをデータ［１］、データ［０］の順序で連続して読み出すこととなる。しかしながら、画像処理はデータ［０］、データ［１］の順序で処理する必要があるため、画像入力部１５２１が並び替える必要がある。
【００９０】
本実施形態のデータ同期制御装置を用いれば、前述の書き込み順序設定の設定値を以下のように変更するだけで、柔軟に対応することができる。
【００９１】
・４つの記憶領域を使用するときの書き込み順序設定＝｛０ｘ１，０ｘ０，０ｘ３，０ｘ２｝
・２つの記憶領域を使用するときの書き込み順序設定＝｛０ｘ１，０ｘ０，０ｘ１，０ｘ０｝
４つの記憶領域を使用するときの動作を図１１に、２つの記憶領域を使用するときの動作を図１２に図示する。２つのデータを並び換えながら画像処理するには、２つ以上の記憶領域が必要であり、１つの記憶領域では並び替えることができない。つまり、Ｎ個（Ｎは２以上の整数）のデータを並び替える場合にはＮ個以上の記憶領域が必要である。図６の構成では４つまでのデータを並び換えながら画像処理することができる。なお、記憶領域の数と、対応する記憶状態保持レジスタの数と順序設定レジスタの数と記憶領域選択回路を拡張すれば、並び替えられるデータの数を容易に増やすことが可能となる。
【００９２】
本実施形態を用いれば、上記のデータ到着順序から画像処理部の処理順序に合わせてデータを入れ替えて処理することができる。本実施形態で実現する機構により、データ同期制御装置の設定を変更するだけで、上述の様々な並び替えのケースに柔軟に対応できる。従って、本実施形態を用いれば、外部記憶装置へのデータの要求順序と、処理装置でのデータの処理順序を同一順序にしない方が、処理速度を低下させないで済む場合に柔軟に対応できる。
【００９３】
＜＜実施形態３＞＞
近年、１製品に搭載される処理装置（マスタ）の増加により、処理装置の接続形態としてネットワーク・オン・チップ（以下、ＮｏＣと略称する）を採用する場合がある。このＮｏＣでは１つの処理装置（マスタ）が複数の伝送路と接続されており、混雑していない伝送路を使用してデータ転送ができるという利点がある。しかしながら、この接続形態を用いると、データ転送がいつも同じ伝送路を経由するわけではないので、データの要求順序とデータの到着順序が異なってしまうことが起こり得る。そこで本実施形態では、ＮｏＣを採用した画像処理装置においてデータの到着順が要求順と異なっていても、バッファで対応できる構成について説明する。
【００９４】
図１３は、本実施形態に係るＮｏＣを採用した画像処理装置の一例を示すブロック図である。なお、実施形態１、２と変わらない構成については同一の符号を付すと共に、機能も変わらない場合にはその説明を省略する。図１（ａ）の構成ではシステムバス１９０（共有バス）を用いて各構成を接続していたが、本実施形態ではルータを備えた仮想チャネル１９００によって各種の構成部品が接続されている。このＮｏＣでは１つの処理装置（マスタ）が複数の伝送路と接続されており、混雑していない伝送路を使用してデータ転送ができるという利点がある。
【００９５】
例えば、画像入力部１６４に画像データを入力する際、ＤＭＡＣ１９４が画像データを外部メモリ１９２２から画像データを読み出す。基本的には最短の経路である経路１９３０のルータと仮想チャネルを利用して画像データを読み出すことが望ましい。
【００９６】
・経路１９３０：仮想チャネルＣＨ［２］→ルータ２→仮想チャネルＣＨ［１−４］→ルータ１→仮想チャネルＣＨ［１−３］→ルータ３→メモリコントローラ１→外部メモリ１（１９２２）
しかしながら、例えば、ＣＰＵ１とＣＰＵ２が通信部１９２０からインターネット経由でデータを読み出していた場合、ルータ１とルータ２に接続された仮想チャネルＣＨ［１−２］は混雑する。そこでルータ２はこの仮想チャネルＣＨ［１−２］を使用せずに、経路１９３５を用いて画像データの読み出しを迂回する。
【００９７】
・経路１９３５：仮想チャネルＣＨ［２］→ルータ２→仮想チャネルＣＨ［２−４］→
ルータ４→仮想チャネルＣＨ［４−６］→ルータ６→仮想チャネルＣＨ［５−６］→
ルータ５→仮想チャネルＣＨ［３−５］→ルータ３→メモリコントローラ１→外部メモリ１（１９２２）
このような迂回により、ネットワーク・オン・チップ（ＮｏＣ）を採用した画像処理装置ではバス競合を柔軟に回避することができる。
【００９８】
しかしながら、このようなＮｏＣを用いると、データ転送がいつも同じ伝送路を経由するわけではないので、（ＤＭＡＣ１９４による）データの要求順序と（ＤＭＡＣ１９４への）データの到着順序が異なってしまうことがある。本実施形態ではこのような課題に対しても、前述の実施形態のデータ同期制御装置の一部を変更するだけで柔軟に対応できる。
【００９９】
本実施形態では中間バッファの記憶領域を画像データの待ち合わせ用に使用する。すなわち本実施形態では、中間バッファへのデータ書き込み順序は重要ではないので、データ同期制御装置５００の書き込み順序設定レジスタ５３０と書き込み領域選択回路５３５の機能を停止すればよい。書き込み順序設定レジスタ５３０と書き込み領域選択回路５３５を機能させるかどうかを設定するために不図示のレジスタを設ければよい。
【０１００】
画像入力部１５２１は、読み出し順序設定レジスタ５３０の設定値を優先順位とし、データ同期制御装置５００の記憶状態保持レジスタ５２０の空き状態（＜無効＞）を確認する。空き状態の記憶領域には外部から画像データを書き込むことができる。画像入力部１５２１は、空き状態の記憶領域であって、読み出し順序に従った記憶領域の番号を記憶領域番号としてＤＭＡＣ１９４へ通知する（記憶領域番号発行部）。ＤＭＡＣ１９４は所望の画像データを外部メモリから読み出すときに、この記憶領域番号を属性情報としてリードコマンドに付加する。リードコマンドは、仮想チャネルとルータ経由でメモリコントローラへ送付され、メモリコントローラはリードコマンドのアドレスに従い、所望の画像データを読み出し、記憶領域番号と共にＤＭＡＣ１９４に返す。ＤＭＡＣ１９４は読み出された画像データと記憶領域番号を一緒に画像入力部１５２１に入力する。
【０１０１】
画像入力部１５２１はデータ同期制御装置５００を介して記憶領域番号の記憶領域に画像データを書き込む。書き込みが完了した段階で書き込み制御部５５０は同期制御部５７０へ完了を通知する。読み出しと書き込みの両方が完了した段階で同期制御部５７０（第１制御手段、第２制御手段）は同期信号５７２を有効にし、記憶状態保持レジスタの値を更新する。具体的には、前述の記憶領域番号の記憶領域に対応する記憶状態を＜無効＞から＜有効＞に更新すればよい。
【０１０２】
以上のように、比較的容易に仮想チャネルとルータとで構成されたネットワーク・オン・チップを採用した画像処理装置に対応することができる。
【０１０３】
本実施形態を用いれば、データ同期制御装置の外側にあるネットワークのデータ要求順序とデータ到着順序が同じ順序を維持できないときでも、データ同期制御装置の書き込み順序をデータ到着順序に合わせられる。そしてさらに本発明のデータ同期制御装置は、上記のデータ到着順序から画像処理部の処理順序に合わせてデータを入れ替えて処理することができる。本実施形態で実現する機構により、データ要求順序とデータ到着順序とデータ処理順序が異なっていても、状況に応じて柔軟に対応できる
〔その他の実施形態〕
また、上述の説明では、主にバンド処理（帯状に分割した画像データを１単位とした処理）について説明した。しかしながら、別の領域分割手法であるブロック（タイル）処理についても本発明の画像処理方法を適用できる。ブロック（タイル）処理では、主走査方向と副走査方向に沿って画像データを２次元で領域分割する。例えば、前述までに説明した小領域（処理単位）が、この２次元で領域分割された画素領域と対応させればよく、小領域（１）から小領域（Ｍ）まで順次読み出す手法はブロック（タイル）処理そのものである。また、ＲＡＭ１０６の記憶容量に余裕があり、局所（近傍）画像処理における遅延メモリを省容量化する必要がなければ、１ページ分の画像データ３００をＲＡＭ１０６に格納し、１ページの単位で画像処理を行ってもよい。いずれの場合も、画像データを記憶する中間バッファを制御するために、本発明のデータ同期制御装置が適用できることは言うまでもない。
【０１０４】
また、上述の実施形態では、ＤＭＡＣを複数備える構成を用いているが、ＤＭＡＣはそもそもＣＰＵの代わりにデータ転送を行う構成要素であり、ＣＰＵの転送負荷が増えてもよいのであれば、任意のＤＭＡＣを削除しＣＰＵにその処理を追加してもよい。
【０１０５】
上述の実施形態ではプリンタを例に説明をしているが、他にもラスタプロッタやビデオカメラなど種々の用途に適用できる。
【０１０６】
上述の実施形態では画像データについて詳細に説明しているが、本発明はサブシステム（ここではＣＰＵ以外の処理系）でデータ処理を実施する情報処理装置であればよく、画像データ以外を処理するものであっても同様に適用することができる。その場合は、画像処理回路は音声データや動画像データ、文書データについて処理するように構成されていればよい。
【０１０７】
なお、前述の各実施例の処理は、複数のハードウエアとソフトウエアの協同によって実現するようにしてもよい。この場合、ネットワーク又は各種記憶媒体を介して取得したソフトウエア（プログラム）をコンピュータ等の処理装置（ＣＰＵ、プロセッサ）にて実行することで実現できる。また、本発明は前述した実施例の機能をコンピュータに実現させるプログラムを記憶した記憶媒体を、システム或いは装置に供給することによって実現してもよい。
【０１０８】
上述の各実施形態では説明の簡便のため、実施形態毎の図面を用意して説明したが、複数の実施形態を組み合わせても本発明を実施できる。その場合、各実施形態の効果に対応する個別の課題を解決していることに相当する。
【図１】
2014027529.tif 000003
【図２】
2014027529.tif 000004
【図３】
2014027529.tif 000005
【図４】
2014027529.tif 000006
【図５】
2014027529.tif 000007
【図６】
2014027529.tif 000008
【図７】
2014027529.tif 000009
【図８】
2014027529.tif 000010
【図９】
2014027529.tif 000011
【図１０】
2014027529.tif 000012
【図１１】
2014027529.tif 000013
【図１２】
2014027529.tif 000014
【図１３】
2014027529.tif 000015
【図１４】
2014027529.tif 000016