(57)【要約】【課題】  処理装置において、データの処理状態を維持したまま、処理を中断または中止すること。【解決手段】  制御装置は、入力されたデータ処理コマンドに応じてデータ処理を実行する実行機能に対して、コマンドの入力または出力を制御する制御機能を有する。制御機能は、所定の指示を受け付けた場合、実行機能に対するデータ処理コマンドの入力を停止すると共に実行機能から出力されたデータ処理コマンドを破棄する。そして、制御機能は、実行機能に対して所定のコマンドを入力すると共に実行機能から出力された所定のコマンドを受け付けて、実行機能の処理の状態を維持したまま処理が可能な状態で処理を中断または中止する。【選択図】  図７
2015115902.tif 000002
【特許請求の範囲】
【請求項１】
入力されたデータ処理コマンドに応じてデータ処理する実行手段に対して、コマンドの入力または出力を制御する制御手段を有する制御装置であって、
前記制御手段は、所定の指示を受け付けた場合、前記実行手段に対する前記データ処理コマンドの入力を停止すると共に前記実行手段から出力された前記データ処理コマンドを破棄し、前記実行手段に対して所定のコマンドを入力すると共に当該実行手段から出力された当該所定のコマンドを受け付けて、前記実行手段の処理の状態を維持したまま処理が可能な状態で処理を中断または中止する、
ことを特徴とする制御装置。
【請求項２】
前記制御手段は、ユーザからの処理の中断の操作を受け付けた場合に発行される前記所定の指示を受け付けた場合、前記実行手段の処理を中断する、
ことを特徴とする請求項１に記載の制御装置。
【請求項３】
前記実行手段におけるエラーを検出する検出手段をさらに有し、
前記制御手段は、前記エラーが検出された場合に発行される前記所定の指示を受け付けた場合、前記実行手段の処理を中断または中止する、
ことを特徴とする請求項１に記載の制御装置。
【請求項４】
前記検出手段は、前記エラーを検出したことを前記所定の指示を発行する発行手段へ通知し、
前記制御手段は、前記発行手段から前記所定の指示を受け付ける、
ことを特徴とする請求項３に記載の制御装置。
【請求項５】
前記検出手段は、前記実行手段に対して、所定時間の間に、所定の量のデータ処理コマンドの入力を完了できない場合に、前記エラーを検出する、
ことを特徴とする請求項３又は４に記載の制御装置。
【請求項６】
前記検出手段は、前記実行手段から、所定時間の間に、前記処理を実行した後のデータを含む所定の量のデータ処理コマンドが出力されなかった場合に、前記エラーを検出する、
ことを特徴とする請求項３又は４に記載の制御装置。
【請求項７】
前記所定の量のデータ処理コマンドは、画像データの所定の領域またはページに含まれる画素のデータに対するデータ処理コマンドである、
ことを特徴とする請求項５又は６に記載の制御装置。
【請求項８】
前記所定の量のデータ処理コマンドは、１つのデータ処理コマンドである、
ことを特徴とする請求項５又は６に記載の制御装置。
【請求項９】
前記実行手段から出力されたデータ処理コマンドに含まれる前記処理を実行した後のデータを出力する出力手段をさらに有し、
前記検出手段は、前記出力手段から、所定時間の間、データが出力されていない場合に、前記エラーを検出する、
ことを特徴とする請求項３又は４に記載の制御装置。
【請求項１０】
前記実行手段へ入力されるデータ処理コマンドに含まれるデータを記憶する記憶手段をさらに有し、
前記検出手段は、前記データが前記記憶手段に記憶されてから所定時間が経過したときに、当該データの少なくとも一部が前記実行手段へ入力されずに前記記憶手段に残っている場合に、前記エラーを検出する、
ことを特徴とする請求項３又は４に記載の制御装置。
【請求項１１】
前記所定時間は、前記記憶手段に記憶されたデータの量、前記実行手段におけるデータの処理の速度に基づいて定められる、
ことを特徴とする請求項１０に記載の制御装置。
【請求項１２】
前記記憶手段は、ダイレクト・メモリ・アクセスによってメモリから取得された、前記実行手段へ入力されるデータ処理コマンドに含まれるデータを記憶し、
前記所定時間は、前記ダイレクト・メモリ・アクセスによる所定の単位のデータを取得するのに要する時間にさらに基づいて、定められる、
ことを特徴とする請求項１１に記載の制御装置。
【請求項１３】
前記実行手段から出力されたデータ処理コマンドに含まれる前記処理を実行した後のデータを記憶する記憶手段と、
前記記憶手段に記憶されているデータを出力する出力手段と、
をさらに有し、
前記検出手段は、前記データの少なくとも一部が前記記憶手段に記憶されてから所定時間が経過したときに、当該データが前記出力手段によって出力されずに前記記憶手段に残っている場合に、前記エラーを検出する、
ことを特徴とする請求項３又は４に記載の制御装置。
【請求項１４】
前記出力手段は、ダイレクト・メモリ・アクセスによって、前記記憶手段に記憶されているデータをメモリに出力し、
前記所定時間は、前記記憶手段に記憶されているデータの量と、前記ダイレクト・メモリ・アクセスによる所定の単位のデータのメモリへの転送に要する時間とに基づいて定められる、
ことを特徴とする請求項１３に記載の制御装置。
【請求項１５】
前記制御手段は、前記実行手段に対する前記データ処理コマンドの入力を停止した後に、所定の期間、前記実行手段から前記データ処理コマンドが出力されなかった場合に、前記所定のコマンドを前記実行手段に対して入力する、
ことを特徴とする請求項１から１４のいずれか１項に記載の制御装置。
【請求項１６】
前記所定のコマンドは、前記実行手段に含まれる処理の状態を示す値を読み出すコマンドである、
ことを特徴とする請求項１から１５のいずれか１項に記載の制御装置。
【請求項１７】
前記所定のコマンドを前記実行手段から受け付けた後に、前記実行手段に含まれる処理の状態を示す値を読み出すコマンドを前記実行手段に入力する、
ことを特徴とする請求項１から１５のいずれか１項に記載の制御装置。
【請求項１８】
入力されたデータ処理コマンドに応じてデータ処理を実行する実行手段に対して、コマンドの入力または出力を制御する制御手段を有する制御装置であって、
前記制御手段は、中断指示を受け付けた場合に前記実行手段に前記データ処理コマンドの残留がないことを判定する判定手段を備え、前記判定手段の判定に基づいて、前記実行手段の処理の状態を維持したまま処理が可能な状態で処理を中断または中止する、
ことを特徴とする制御装置。
【請求項１９】
前記判定手段は、前記実行手段に対して所定のコマンドを入力すると共に当該実行手段から出力された当該所定のコマンドを受け付けることにより、前記データ処理コマンドの残留がないことを判定する、
ことを特徴とする請求項１８に記載の制御装置。
【請求項２０】
前記判定手段は、前記実行手段が並列接続された複数の回路であるときに、前記複数の回路にバリア同期コマンドを入力し、当該複数の回路から出力された当該バリア同期コマンドを受け付けて、前記データ処理コマンドの残留がないことを判定する、
ことを特徴とする請求項１８に記載の制御装置。
【請求項２１】
前記実行手段と、請求項１から２０のいずれか１項に記載の制御装置とを有することを特徴とする処理装置。
【請求項２２】
入力されたデータ処理コマンドに応じてデータ処理を実行する実行手段に対して、コマンドの入力または出力を制御する制御手段を有する制御装置の制御方法であって、
前記制御手段が、所定の指示を受け付けた場合、前記実行手段に対する前記データ処理コマンドの入力を停止すると共に前記実行手段から出力された前記データ処理コマンドを破棄し、前記実行手段に対して所定のコマンドを入力すると共に当該実行手段から出力された当該所定のコマンドを受け付けて、前記実行手段の処理の状態を維持したまま処理が可能な状態で処理を中断または中止する工程を有する、
ことを特徴とする制御方法。
【請求項２３】
入力されたデータ処理コマンドに応じてデータ処理を実行する実行手段に対して、コマンドの入力または出力を制御する制御手段を有する制御装置の制御方法であって、
前記制御手段が、中断指示を受け付けた場合に前記実行手段に前記データ処理コマンドの残留がないことを判定する工程と、
前記制御手段が、当該判定に基づいて、前記実行手段の処理の状態を維持したまま処理が可能な状態で処理を中断または中止する工程と、
を有することを特徴とする制御方法。
【請求項２４】
入力されたデータ処理コマンドに応じてデータ処理を実行する実行手段に対して、コマンドの入力または出力を制御する制御手段を有する制御装置に備えられたコンピュータに、
所定の指示を受け付けた場合、前記実行手段に対する前記データ処理コマンドの入力を停止すると共に前記実行手段から出力された前記データ処理コマンドを破棄し、前記実行手段に対して所定のコマンドを入力すると共に当該実行手段から出力された当該所定のコマンドを受け付けて、前記実行手段の処理の状態を維持したまま処理が可能な状態で処理を中断または中止する工程を実行させるためのプログラム。
【請求項２５】
入力されたデータ処理コマンドに応じてデータ処理を実行する実行手段に対して、コマンドの入力または出力を制御する制御手段を有する制御装置に備えられたコンピュータに、
中断指示を受け付けた場合に前記実行手段に前記データ処理コマンドの残留がないことを判定する工程と、
当該判定に基づいて、前記実行手段の処理の状態を維持したまま処理が可能な状態で処理を中断または中止する工程と、
を実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は制御装置、処理装置、制御方法及びプログラムに関する。
【背景技術】
【０００２】
近年、製品の高画質化、機能強化、高速化などのため、画像処理装置が多岐に渡る製品の動作モードで画像処理を実行することが求められている。画像処理装置には、例えば、高画質化や機能強化と高速化とを両立するために、多種多様な画像処理回路が搭載されている。そして、画像処理装置は、多岐に渡る製品の動作モードに対応して、これらの多種多様な画像処理回路を切り替え、また個々の画像処理回路の動作設定を変更して、画像処理装置の全体を制御する。
【０００３】
このとき、個々の画像処理回路は、画像、テーブル、設定値などを一時記憶するための大容量のメモリを含み、画像処理装置は、前述の多岐にわたる動作モードに応じて、これらのメモリに記憶される情報を書き換える。すなわち、画像処理装置は、動作モードに応じて画像処理回路を切り替えるために、画像処理の前に、必要となる情報を設定する処理を実行する。また、画像処理装置は、この設定の後に、設定された値に従って画像処理を実行する。そして、画像処理装置は、これらの２つの処理を順次実行しながら所定の画像処理を行う。
【０００４】
特許文献１には、設定のためのレジスタ制御コマンドと画像処理のためのデータ処理コマンドとを用意し、外部メモリ（ＤＲＡＭ等）からこれらのコマンドを交互に読み出して種々の画像処理回路に時分割多重で入力して、画像処理を行うことが記載されている。そして、特許文献１の画像処理装置は、処理後のコマンドを画像処理回路から受け取り、再び外部メモリ（ＤＲＡＭ等）に書き戻して画像処理を完了する。このとき、特許文献１の画像処理回路は、パイプライン動作により、レジスタ制御コマンドを連続して入力することで高速な設定を実現することができる。また、同様に、特許文献１の画像処理装置は、データ処理コマンドを連続して入力することで、高速な画像処理を実現することができる。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１０−２８２４２９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
画像処理装置は、上述のような多種多様な動作モードに応じて、様々な画像処理回路を組み合せて使用するため、画像処理装置の全体の制御のための設定値の算出のために複雑な計算を行う必要がある。例えば、画像処理装置は、上述のコマンドを外部メモリ（ＤＲＡＭ等）から読み出し、処理後のコマンドを外部メモリ（ＤＲＡＭ等）に書き戻す。ここで、画像処理装置は、ＤＭＡＣ（ダイレクト・メモリ・アクセス・コントローラ）を備えるものとし、この外部メモリ（ＤＲＡＭ等）への読み書きを実行するものとする。このとき、画像処理装置は、上述の動作モードに応じて処理する画像の大きさや設定の情報量が変わるため、外部メモリ（ＤＲＡＭ等）への読み書きの転送量を算出してＤＭＡＣに設定することとなる。そして、この算出された転送量と画像処理の動作とが整合していない場合、画像処理装置に含まれる画像処理回路に、先のコマンドが残留する場合がある。その結果、画像処理装置は、画像処理回路で構成される処理パイプラインに続くコマンドを投入できなくなり、画像処理装置がエラー（ハングアップ）状態になる場合がある。
【０００７】
特許文献１の画像処理装置は、上述の２種のコマンドを、設定と画像処理とのそれぞれにおいて切り替えて、時分割多重で画像処理回路へ入出力する。そして、例えば画像処理において画像処理パイプラインにデータ処理コマンドが残留し、詰まっている状態になった場合、画像処理装置は、外部からレジスタ制御コマンドを投入することができなくなる。その結果、画像処理装置は、装置内の画像処理の状態（ステータスレジスタ）を読み取ることができなくなり、画像処理装置のエラー（ハングアップ）状態の原因を知ることができない。なお、外部から画像処理装置のリセット信号をアサートして、画像処理装置全体を初期化して、エラー状態から復帰させることは可能である。しかしながら、このような復帰では画像処理の状態（ステータスレジスタ）も初期化されるため、上記のエラー（ハングアップ）状態の原因を特定することはできない。また、ユーザ操作によって処理を中断する際に、外部から画像処理装置のリセット信号をアサートして、画像処理装置全体を初期化すると、処理を再度実行する又は再開する際に、再度設定を実行する必要がある。
【０００８】
本発明は、このような事情に鑑みてなされたもので、処理装置において、データの処理状態を維持したまま、処理が可能な状態で処理を中断または中止する技術を提供することを目的とする。
【課題を解決するための手段】
【０００９】
上記目的を達成するため、本発明による制御装置は、入力されたデータ処理コマンドに応じてデータに所定の処理を実行して、処理を実行した後のデータを含むデータ処理コマンドを出力する実行手段に対して、コマンドの入力または出力を制御する制御手段を有する制御装置であって、前記制御手段は、所定の指示を受け付けたことに応じて、前記実行手段に対する前記データ処理コマンドの入力を停止すると共に前記実行手段から出力された前記データ処理コマンドを破棄し、前記実行手段に対して所定のコマンドを入力すると共に当該実行手段から出力された当該所定のコマンドを受け付けて、前記実行手段の処理の状態を維持したまま処理が可能な状態で処理を中断または中止する、ことを特徴とする。
【発明の効果】
【００１０】
本発明によれば、処理装置において、データの処理状態を維持したまま、処理が可能な状態で処理を中断または中止することができる。
【図面の簡単な説明】
【００１１】
【図１】画像処理装置の構成例を示すブロック図。
【図２】コマンドの格納例を説明する図。
【図３】コマンドのデータ構造を説明する図。
【図４】画像処理部の構成例を示すブロック図。
【図５】画像処理回路のコマンド動作の一例を説明するフローチャート。
【図６】画像処理回路のコマンド動作の一例を説明する図。
【図７】エラー状態からの画像処理部の復帰処理の例を示すシーケンス図。
【図８】ユーザからの処理の中断の操作を受け付けた場合の画像処理部の処理を中断する手順の例を示すシーケンス図。
【図９】バンド処理の動作の一例を説明する図。
【図１０】バンド処理の動作の一例を説明する図。
【図１１】画像データの格納例とデータ構造の一例を説明する図。
【図１２】画像データの入出力の動作の一例を示す図。
【発明を実施するための形態】
【００１２】
以下、添付図面を参照して本発明の実施の形態を詳細に説明する。
【００１３】
＜＜実施形態１＞＞
（画像処理装置の構成）
図１は、本実施形態に係る画像処理装置の構成例を示すブロック図である。画像処理装置は、例えば、ＣＰＵ回路部１００、画像読み取り部１２０、画像処理部１５０を有する。
【００１４】
画像読み取り部１２０は、例えば、レンズ１２４、ＣＣＤセンサ１２６、及びアナログ信号処理部１２７を有する。画像読み取り部１２０では、レンズ１２４を介してＣＣＤセンサ１２６に原稿１１０の画像情報が結像され、ＣＣＤセンサ１２６によりその画像情報がＲ（Ｒｅｄ）、Ｇ（Ｇｒｅｅｎ）、Ｂ（Ｂｌｕｅ）のアナログ電気信号に変換される。アナログ電気信号に変換された画像情報は、アナログ信号処理部１２７に入力され、Ｒ、Ｇ、Ｂの色毎に補正等が行われた後にアナログ／デジタル変換（Ａ／Ｄ変換）される。こうして、デジタル化されたフルカラーのデジタル画像信号（画素値）が生成される。生成されたデジタル画像信号は、映像入力部１３０へ入力され、その後、ＤＭＡＣ（ダイレクト・メモリ・アクセス・コントローラ）１９２へ入力される。
【００１５】
ＤＭＡＣ１９２は、ＣＰＵ１０２により予め動作が設定されており、共有バス１９０を介して、入力されたデジタル画像信号をＣＰＵ回路部１００のメモリ（ＲＡＭ１０６）に記憶させる。なお、以下では、複数の画素についてのデジタル画像信号を、１枚の画像や一部の画像領域を形成するように集合させたデータを、画像データと呼ぶ。本実施形態では、デジタル画像信号は画像データの形式でＲＡＭ１０６に記憶されるものとする。画像処理を行う場合、ＣＰＵ１０２はＤＭＡＣ１９４を起動してＲＡＭ１０６に記憶された画像データを読み出させ、処理の対象となる画素に対応するデジタル画像信号を画像処理部１５０に入力させる。
【００１６】
画像処理部１５０は、例えば、入力されたデジタル画像信号に対して、例えば、スキャナなどのセンサ・デバイスの読み取り素子の個体差の補正と入力ガンマ補正などの色補正とを行い、画像データを作成するデータ処理装置である。そして、ＤＭＡＣ１９６は、これらの処理が施された画像データをＲＡＭ１０６に格納する。なお、ＤＭＡＣ１９６の制御については、例えばＣＰＵ１０２が予めＤＭＡＣ１９６の動作を設定し、また、ＣＰＵ１０２がＤＭＡＣ１９６を起動するようにする。ＤＭＡＣ１９６の動作は、例えば処理後の画像データをＲＡＭ１０６へ書き込むように設定しておく。
【００１７】
これにより、例えば、画像処理部１５０は、入力されたデジタル画像信号に対し、入力色補正処理、空間フィルタ処理、色空間変換、濃度補正処理、及び中間調処理などの、画像の印刷のための画像処理を施す。そして、画像処理部１５０は、印刷可能な画像データを作成し、その画像データを、ＤＭＡＣ１９６によりＲＡＭ１０６に格納させる。
【００１８】
ＤＭＡＣ１９８は、ＲＡＭ１０６に格納された画像処理済みの画像データを読み出して画像印刷部１７０へ出力する。画像印刷部１７０は例えばプリンタである。ＤＭＡＣ１９８の設定は例えばＣＰＵ１０２が行う。画像印刷部１７０は、例えば、インクジェットヘッドやサーマルヘッド等を使用した印刷出力部（不図示）を有する。そして、入力された画像データのデジタル画像信号に基づいて紙上に画像を記録する。なお、上述の説明では、画像印刷部１７０を用いる例を説明したがこれに限られない。例えば、映像入力部１３０や映像表示部１６０等を用いて、入力された映像に対し所定の画像（映像）処理を施し、処理後の映像をディスプレイなどの表示装置（不図示）に表示してもよい。
【００１９】
ＣＰＵ回路部１００は、演算制御用のＣＰＵ１０２、固定データやプログラムを格納するＲＯＭ１０４、データの一時保存やプログラムのロードに使用されるＲＡＭ１０６、及び外部記憶装置１０８等を備える。ＣＰＵ回路部１００は、画像読み取り部１２０、画像処理部１５０、及び画像印刷部１７０等を制御し、本実施形態の画像処理装置のシーケンスを統括的に制御する。外部記憶装置１０８は、本実施形態の画像処理装置が使用するパラメータやプログラムや補正データを記憶するディスク等の記憶媒体であり、ＲＡＭ１０６のデータやプログラム等は、外部記憶装置１０８からロードされてもよい。
【００２０】
（画像処理コマンドの構成）
次に図２を用いてＲＡＭ１０６へのコマンドリストの格納の仕方の例を説明する。図２において、ＤＰＬ＿ＡＲＥＡ＿ＳＴＲ＿ＡＤＤＲからＤＰＬ＿ＡＲＥＡ＿ＥＮＤ＿ＡＤＤＲまでが、画像処理に必要な種々のコマンドを格納する領域である。図２は、この領域にＤＰＬ（１）からＤＰＬ（３）までの、３種のコマンドリストが格納されている状態の例を示している。ＤＲＡＭの性能を落とさずにデータにアクセスすることを可能とするため、各々格納されるデータの容量の最小単位は、図２の５０６に示すように３２ｂｉｔ×８ｗｏｒｄの３２Ｂｙｔｅとなっている。したがって、ＤＰＬ（１）からＤＰＬ（３）までのコマンドリストの格納容量は、３２Ｂｙｔｅの整数倍となる。ＣＰＵは、選択されたアプリケーション又はユーザ操作等によって、使用するコマンドリストをＤＰＬ（１）からＤＰＬ（３）の中から選択して、異なる画像処理を実行する。
【００２１】
さらに、図３を用いてメインメモリへ格納されているコマンドリストについて詳しく説明する。本発明のコマンドリストを構成するコマンドは、一例として、６４ｂｉｔ長を有し、３２Ｂｙｔｅ単位のデータ５２０に、４つのコマンドが格納される。またコマンドリストを構成するコマンドは、レジスタ制御コマンド５４０、データ取得コマンド５４２、データ処理コマンド５４４、終了コマンド５４６のように、例えば４つの種類が存在する。そして、各コマンドは上位８ｂｉｔのｏｐｃｏｄｅにより識別され、下位５６ｂｉｔは各コマンドにより用途が異なる。
【００２２】
上述のように、画像処理装置は、設定と画像処理との２つの処理を交互に繰り返す。そして、画像処理装置は、設定において、レジスタ制御コマンド５４０を用いて、多種多様の画像処理回路の制御レジスタに値の設定、又は、画像処理回路の状態を記憶しているステータスレジスタの値の読み出しなどを実行する。また画像処理装置は、画像処理において、データ処理コマンド５４４を用いて、画像処理回路に画像データを供給し、各画像処理回路は、供給されたデータに対して画像処理を実行して出力する。なお、データ取得コマンド５４２については、後述する実施形態３にて説明を行う。また終了コマンド５４６については後述する。
【００２３】
（画像処理コマンドの入出力）
これらのコマンドは、図１の画像処理部１５０における処理において機能する。以下、画像処理部１５０の構成例である図４を用いて各コマンドの機能について説明する。
【００２４】
まず、画像処理装置は、ＤＭＡＣ（Ｒｅａｄ）１９４を起動してメインメモリからコマンドリストを読み出し、入力ポート１５１を介して画像処理部１５０にコマンドを入力する。そして、コマンドリストを構成する各コマンドは、画像処理部１５０の各種画像処理回路（画像入力部１５２１、画像処理回路（１）１５３１〜画像処理回路（Ｐ）１５３７、画像出力部１５２３）で機能する。各コマンドは、その入力順にインターコネクト１５３０と内部バス（１５５、１５３２、１５３３、１５３５、１５３６、・・・、１５３８、１５３９、１５６）を経由する。そして各コマンドは、画像入力部１５２１、画像処理回路（１）１５３１〜画像処理回路（Ｐ）１５３７、画像出力部１５２３へと送られる。なお、各コマンドは、各種画像処理回路によって内部情報を書き換えられることはあるが、コマンド自体が途中で削除されることはない。
【００２５】
画像出力部１５２３は、最後に、画像処理装置によって予め起動されたＤＭＡＣ（Ｗｒｉｔｅ）１９６に出力ポート１５４を介してコマンドを送出する。そして、ＤＭＡＣ（Ｗｒｉｔｅ）１９６は受け取ったコマンドをメインメモリに書き戻す。
【００２６】
また、後述の復帰指示の送受信のために、画像処理部１５０は、ＣＰＵ１０２（上位層）とコマンド入出力部１５２との間にレジスタバス１５８を有する。このレジスタバス１５８を介して、ＣＰＵ１０２（上位層）は、コマンド入出力部１５２に含まれるステータスレジスタを直接読み出して、コマンド入出力部１５２の状態を監視することができる。
【００２７】
以下では、画像処理コマンドの動作についてさらに詳細に説明する。また画像処理回路によるコマンド動作の一例を、図５のフローチャートに示す。
【００２８】
（レジスタ制御コマンド）
レジスタ制御コマンド５４０は、画像処理部１５０の各種画像処理回路のレジスタに対して値を読み書きするためのコマンドである。コマンドの１ｂｉｔ情報“ｒｗ”が“０”のときレジスタ・リード・コマンドとなり、“ｒｗ”が“１”のときはレジスタ・ライト・コマンドとなる。７ｂｉｔの回路識別情報“ｉｐ＿ｉｄ”は、上述の各種画像処理回路を区別する情報である。例えば、回路識別情報“ｉｐ＿ｉｄ”は、画像入力部１５２１は“０”、そして、画像出力部１５２３は“３０”である。また、各画像処理回路に対する回路識別情報は、図６に示すように、画像処理回路（１）１５３１は“１”、画像処理回路（２）１５３４は“２”、・・・、そして、画像処理回路（Ｐ）１５３７は“Ｐ”である。また、１６ｂｉｔ情報“ａｄｄｒｅｓｓ”は、上述の各種画像処理回路ごとの所有するレジスタの番地を示す情報である。
【００２９】
例えば、“ｒｗ＝１、ｉｐ＿ｉｄ＝１、ａｄｄｒｅｓｓ＝０ｘ０、ｄａｔａ＝０ｘＦ”であるレジスタ制御コマンドの場合、画像入力部１５２１では、回路識別情報“ｉｐ＿ｉｄ”が異なるので無視される。そして、このレジスタ制御コマンドは、内部バス１５５を通って画像処理回路（１）１５３１に入力される。画像処理回路（１）１５３１では、画像処理回路（１）１５３１の識別情報と、このレジスタ制御コマンドの回路識別情報“ｉｐ＿ｉｄ”とが一致するため、レジスタ・ライト・コマンドが有効となる。そして、このレジスタ・ライト・コマンドは、画像処理回路（１）１５３１の“ａｄｄｒｅｓｓ＝０ｘ０”番地のレジスタに、“ｄａｔａ＝０ｘＦ”を書き込む。
【００３０】
画像処理回路（１）１５３１はこのレジスタ制御コマンドを削除せず、そのまま内部バス１５３３へ出力する。そして、このレジスタ制御コマンドは、内部バス１５３１を介して、次の画像処理回路（２）１５３４へ入力される。画像処理回路（２）１５３４以降の回路では、その回路の識別情報が、レジスタ制御コマンドの回路識別情報“ｉｐ＿ｉｄ”と異なるため、このレジスタ制御コマンドは無視される。このレジスタ制御コマンドは、同様に画像出力部１５２３で無視された後、画像出力部１５２３によりメインメモリに書き戻される。なお、そのあとの画像処理で使用予定がない場合、画像出力部１５２３は、このコマンドを削除してもよい。
【００３１】
また“ｒｗ＝０、ｉｐ＿ｉｄ  ＝２、ａｄｄｒｅｓｓ＝０ｘ４、ｄａｔａ＝０ｘ０”であるレジスタ・リード・コマンドの場合も、回路識別情報“ｉｐ＿ｉｄ  ＝２”である画像処理回路（２）１５３４以外では無視される。このレジスタ・リード・コマンドは、回路識別情報“ｉｐ＿ｉｄ”が一致する画像処理回路（２）１５３４で有効となる。そして、このレジスタ・リード・コマンドに応じて、画像処理回路（２）１５３４の“ａｄｄｒｅｓｓ＝０ｘ４”番地のレジスタ値が読み出され、このレジスタ・リード・コマンドの“ｄａｔａ”領域がこの読み出された値に置き換えられる。そして、このレジスタ・リード・コマンドは、内部バス１５３０を介して後段の画像処理回路に送られる。画像出力部１５２３では、前述のレジスタ・ライト・コマンドと異なり“ｄａｔａ”だけが抜き取られるか、このレジスタ・リード・コマンドそのものが、ＣＰＵがアクセス可能なメモリ領域に出力（記憶）される。
【００３２】
（データ処理コマンド）
データ処理コマンド５４４も、レジスタ制御コマンドと同様に、メインメモリから入力され、以降の動作で画像処理が実行された後に、メインメモリに書き戻される。データ処理コマンド５４４は、画像処理回路（１）１５３１〜画像処理回路（Ｐ）１５３７を用いて画像処理を実行するためのコマンドである。画像処理を実行する前に、画像処理回路（１）１５３１〜画像処理回路（Ｐ）１５３７には、上述のレジスタ・ライト・コマンドにより、所定のレジスタ値が設定される。
【００３３】
データ処理コマンド５４４は、８ｂｉｔデータ処理識別情報“ｓｔｅｐ”を含む。また、画像処理回路（１）１５３１〜画像処理回路（Ｐ）１５３７のそれぞれには、予め、処理すべきデータ処理コマンドを識別するためのデータ処理識別情報“ｓｔｅｐ”が設定されている。そして、各画像処理回路は、入力されたデータ処理コマンドのデータ処理識別情報“ｓｔｅｐ”が、自らに設定された“ｓｔｅｐ”と一致するコマンドについてのみ、画像処理を実行し、それ以外のコマンドは無視する。各画像処理回路は、データ処理コマンドから、各１６ｂｉｔのＲ、Ｇ、Ｂ領域の画像データを抜き出し、所定の画像処理を実行する。そして、各画像処理回路は、データ処理コマンドの各１６ｂｉｔのＲ、Ｇ、Ｂ領域に、処理結果をそれぞれ格納して内部バスを介して後段の画像処理回路に送る。画像処理回路（１）１５３１〜画像処理回路（Ｐ）１５３７のそれぞれが一連の画像処理を行うことで、パイプライン的に並列処理を行う。
【００３４】
（終了コマンド）
終了コマンド５４６は、コマンドリストの終了を示すコマンドであり、コマンドリストの最後に位置する。終了コマンド５４６も、他のコマンドと同様に、画像処理部１５０に入出力される。画像出力部１５２３は、このコマンドを受け取った後、ＣＰＵに対して終了割り込みを出力する。
【００３５】
（画像処理実行部の動作）
画像処理実行部１５３について補足する。画像処理実行部１５３は、Ｐ個の画像処理回路（画像処理回路（１）１５３１〜画像処理回路（Ｐ）１５３７）と、インターコネクト１５３０とを含んで構成される。Ｐ個の画像処理回路と、インターコネクト１５３０とは、入力ポート１５３２、１５３５並びに１５３８、および出力ポート１５３３、１５３６並びに１５３９等のポートを介して互いに接続される。
【００３６】
画像処理回路は、例えば、入力色補正処理、色空間変換、濃度補正処理、中間調処理、空間フィルタ処理、拡大処理、縮小処理、トリミング処理、端部拡張処理、ＩＰ変換、クロマ・アップサンプリングのうち、１つの処理を行う。これらの画像処理回路は、パイプライン回路等のハードウェアで実現されてもよいし、プロセッサとプログラム（ソフトウェア）等で実現されてもよい。そして、例えば、入力ポート１５３２、１５３５、１５３８等からコマンドを受け付け、処理を実行した後に、出力ポート１５３３、１５３６、１５３９から処理後のデータを含むコマンドを出力する。
【００３７】
また、インターコネクト１５３０はクロスバーやリングバス等で実現され、入力ポート及び出力ポートの接続先を任意に切り替えることができる。したがって、ＣＰＵ１０２がこれらポートの接続先の指定を設定することで、インターコネクト１５３０は、例えばＰ個の画像処理回路の実行順序を変更し、または一部の処理をバイパスすることができる。このように、画像処理実行部１５３は、アプリケーションに応じて、各種の処理を取捨選択して組み合せ、所望の画像処理を実現する。
【００３８】
（画像処理部のエラー（ハングアップ）状態の発生）
画像処理装置は、例えば画像処理の実行に際し、画像処理実行部１５３に含まれる画像処理回路において、拡大処理を行うとする。このとき、画像処理装置は、予め拡大処理の拡大率を画像処理回路の該当するレジスタに設定する。また、画像処理装置は、画像処理の際に入力及び出力するデータ処理コマンドの転送量を、ＤＭＡＣ（Ｒｅａｄ）１９４とＤＭＡＣ（Ｗｒｉｔｅ）１９６とに設定する。
【００３９】
画像処理実行部１５３は、入力されたデータ処理コマンドに対して、拡大処理を含む画像処理を施し、処理後のデータ処理コマンドとして出力する。この出力されたデータ処理コマンドは、コマンド入出力部１５２を介して、ＤＭＡＣ（Ｗｒｉｔｅ）１９６によってＲＡＭ１０６に書き戻される。
【００４０】
ここで、例えば、拡大により増加するコマンドの転送量よりＤＭＡＣ（Ｗｒｉｔｅ）１９６の転送量が小さく設定されると、画像処理実行部１５３で処理されたコマンドを全てＲＡＭ１０６に書き戻す前にＤＭＡＣ（Ｗｒｉｔｅ）１９６の転送が完了してしまう。そのため、画像処理実行部１５３にコマンドが残留してしまう。この一例では、拡大処理よってコマンドが増加するため、タイミングによってはＤＭＡＣ（Ｒｅａｄ）１９４もコマンドの入力を完了しており、画像処理装置はＤＭＡ転送を完了していると誤判定してしまう。そして、画像処理装置は、画像処理から設定に移行し、レジスタ設定コマンドを入力しようとする。しかしながら、画像処理実行部１５３にはコマンドが残留しているため、画像処理実行部１５３がレジスタ設定コマンドを受け付けることはできない。
【００４１】
（画像処理部の復帰シーケンス）
ここでは図７のフローチャートに基づいて、上述のエラー（ハングアップ）状態の発生からの、画像処理部の復帰手法について詳細説明を行う。本処理では、まず、コマンド入出力部１５２が、画像処理の入出力の状態の監視を行い（Ｓ６４０、Ｓ６４２、Ｓ６４４）、画像処理部のエラー状態が検出されたかを判定する。例えば、コマンド入出力部１５２は、所定時間の間、画像処理実行部１５３に対してデータ処理コマンドを入力できない場合に、エラー（ハングアップ）状態を検出する。また、コマンド入出力部１５２は、所定時間の間、画像処理実行部１５３から、処理を終えた後のデータを含むデータ処理コマンドを受け取らなかった場合に、エラー状態を検出する。また、さらに他のエラー状態の検出手法が用いられてもよい。例えば、他の画像処理部のエラー状態の検出の例について、後述する実施形態３において説明する。本処理においては、主としてコマンド入出力部１５２が復帰処理のための制御を行う制御装置として機能する。以下では、これらの処理について説明する。
【００４２】
上述のようなエラー（ハングアップ）状態の後、ＣＰＵ１０２（上位層）が画像処理部の復帰処理の必要性を判断し（Ｓ６５０でＹＥＳ）、復帰指示を発行してコマンド入出力部１５２に通知する。コマンド入出力部１５２は、復帰指示を受け付ける（Ｓ６１０）。このとき、図４に示すように、復帰指示の受け付けのために、ＣＰＵ１０２（上位層）とコマンド入出力部１５２との間に、レジスタバス１５８が設けられてもよい。この場合、コマンド入出力部１５２は復帰レジスタ（不図示）を有し、ＣＰＵ１０２は、レジスタバス１５８を介して、その復帰レジスタに復帰指示を書き込む。コマンド入出力部１５２は復帰レジスタの値を監視し、その値に応じて復帰指示の有無を判断することができる。また、ＣＰＵ１０２は復帰指示を送信し、コマンド入出力部１５２がそれを受信して受け付ける別の仕組みが用意されてもよい。
【００４３】
コマンド入出力部１５２は、復帰指示を受け付けると、画像処理実行部１５３において実行される所定の処理を中止し、続いて、復帰処理に移る（Ｓ６００）。まず、コマンド入出力部１５２は、ＤＭＡ転送中であれば、ＤＭＡＣ（Ｒｅａｄ）１９４及びＤＭＡＣ（Ｗｒｉｔｅ）１９６に対して転送中断を要求する。各ＤＭＡＣは、システムバス１９０に要求済みのトランザクションについては実行を完了し、新規のトランザクションの発行をアボートする。その後、各ＤＭＡＣは、内部シーケンサを初期化する（Ｓ６１２）。
【００４４】
そして、コマンド入出力部１５２は、画像処理実行部１５３への画像処理コマンドの入力を停止する（Ｓ６１４）。これにより、画像処理実行部１５３は、画像処理実行部１５３のパイプラインに空きができても新たなコマンドを受け付ける必要がなくなる。そして、コマンド入出力部１５２は、画像処理実行部１５３から出力された出力コマンドを受け取りながら、そのコマンドを破棄する（Ｓ６１６）。これにより、画像処理実行部１５３のパイプラインに残留したコマンドが徐々に削減されることとなる。
【００４５】
ここで、所定の期間の間、画像処理実行部１５３から、コマンドが出力されなくなった場合、残留したコマンドはなくなったと想定できる。したがって、コマンド入出力部１５２に、この所定時間が経過したかを判別するためのタイマーを設け、タイマーの閾値レジスタに、予めその所定時間を設定しておいてもよい。このタイマーは、画像処理実行部１５３からのコマンド出力を検出するとタイマー値を０にクリアし、コマンド出力がなければ、クロックサイクル毎に１ずつタイマー値をインクリメントする。そして、コマンド入出力部１５２は、タイマー値が閾値レジスタの値を超えたときに、所定時間が経過したことを特定することができる。
【００４６】
コマンド入出力部１５２は、復帰確認のためにレジスタ制御コマンドを画像処理実行部１５３に入力する（Ｓ６１８）。そして、コマンド入出力部１５２は、画像処理実行部１５３へ入力したレジスタ制御コマンドが、画像処理実行部１５３から出力されるまで待機する（Ｓ６２０）。そして、画像処理実行部１５３からレジスタ制御コマンドが出力されると（Ｓ６２０のＹＥＳ）、コマンド入出力部１５２は、復帰を確認して、復帰完了をＣＰＵ１０２（上位層）に通知する（Ｓ６２２）。このようにして、時間経過またはレジスタ制御コマンド等の入力と出力により、画像処理実行部にコマンドが残留していないことを確認する。
【００４７】
なお、復帰完了の通知のため、コマンド入出力部１５２からＣＰＵ１０２（上位層）への割り込みを用意し、コマンド入出力部１５２が割り込みをアサートすることにより、復帰完了を通知してもよい。またコマンド入出力部１５２に復帰完了レジスタ（不図示）を設け、コマンド入出力部１５２は、上述の復帰指示を受け付けたことにより、復帰完了レジスタを初期化する。そしてコマンド入出力部１５２は、復帰完了時に復帰完了レジスタに値を書き込む。そして、ＣＰＵ１０２（上位層）はこの復帰完了レジスタの値を読み取ることにより、復帰完了を確認してもよい。
【００４８】
ＣＰＵ１０２（上位層）は復帰完了を受信すると（Ｓ６５２）、例えば、レジスタ・リード・コマンドをＲＡＭ１０６に展開する。そして、コマンド入出力部１５２は、上述の設定と同様の手法で、レジスタ・リード・コマンドを画像処理実行部１５３に入出力し、種々の画像処理回路のステータスレジスタやレジスタの設定値を読み出す。ＣＰＵ１０２（上位層）は、読み出された値に基づいて、設定の誤りを検証し、エラー状態の原因を調査することができる。
【００４９】
なお、上述の例では、復帰確認のためのレジスタ制御コマンドとエラー状態の原因調査のためのレジスタ制御コマンド（レジスタ・リード・コマンド）を２回に分けて入力するように説明した。しかしながら、画像処理装置は、エラー状態の原因調査のためのレジスタ・リード・コマンドを用いて、復帰確認を同時に評価するようにしてもよい。
【００５０】
以上のように、本実施形態によれば、画像処理回路のレジスタ値の誤設定によるエラー状態から、容易に、画像処理部を所定の処理が実行可能な状態へと復帰させることができる。また、復帰の過程で画像処理実行部のパイプラインに残留したコマンドを破棄することにより、画像処理実行部のパイプラインを初期化することができる。そして、レジスタ制御コマンドの入出力により、復帰の確認をすることができる。また、処理の状態（ステータスレジスタ）がクリアされずに維持されるため、エラー状態を特定するための画像処理回路のステータスレジスタ値の読み出しを行うことができる。したがって、本実施形態の画像処理装置は、エラー状態からの復帰とデバッグ（原因の特定）とを効率的に実行することができる。
【００５１】
＜＜実施形態２＞＞
本実施形態では、上述の復帰シーケンスを利用することで、ユーザが画像処理の実行中に動作をキャンセルしたときの、画像処理の中断についても対応することができる。すなわち、実施形態１では、エラー状態をトリガに画像処理実行部が実行する処理を中止して復帰処理を行ったが、本実施形態では、ユーザからの処理の中断の操作を受け付けたことをトリガとして、画像処理実行部が実行する処理を中断する。
【００５２】
（画像処理部の中断シーケンス）
本実施形態では、ユーザが画像処理装置に対して処理の中断の操作を行うため、画像処理部のエラー（ハングアップ）状態の検出は不要である。したがって、図８に示すように、本シーケンスにおいては、まず、ＣＰＵ１０２（上位層）が、ユーザから中断指示を受け付けたかを判定する（Ｓ６６０）。そして、ユーザからの中断指示を受け付けた場合（Ｓ６６０でＹＥＳ）、ＣＰＵ１０２は、実施形態１と同様に、復帰指示を発行し、コマンド入出力部１５２に通知する。コマンド入出力部１５２が復帰指示を受け付け（Ｓ６１０）てから、復帰完了をＣＰＵ１０２に通知する（Ｓ６２２）までの処理（Ｓ６００）は、実施形態１と同様であるため、説明を省略する。そして、ＣＰＵ１０２は、復帰完了を受信したら（Ｓ６５２）、中断シーケンスを完了する。
【００５３】
以上のように、本実施形態によれば、ユーザによる画像処理の中断指示があった場合にも、画像処理装置を強制リセットすることによる初期化を行わず、画像処理実行部において所定の処理を実行可能な状態で、処理を中断することができる。すなわち、強制リセットにより、画像処理回路の非常に多くのレジスタ値やテーブル値が初期化されることがなくなる。この結果、画像処理装置は、処理を再度実行する又は再開する場合に、設定値を再ロードする手間を省くことができる。このようにすることで、画像処理装置は、確実な中断処理を行いつつ、ユーザ指示に応じた次の製品動作までの応答性を高めることができる。
【００５４】
＜＜実施形態３＞＞
実施形態１及び２では、メインメモリに記憶されているコマンドリストに、データ処理コマンド５４４が展開されていた。本実施形態では、メインメモリには画像データが記憶されており、データ処理コマンド５４４は、コマンドリストに展開されていない場合について説明する。コマンド入出力部１５２は、コマンドリストのデータ取得コマンド５４２によって設定から画像処理に移行する。そして、コマンド入出力部１５２は、画像データをメインメモリから読み出し、データ処理コマンド５４４に変換する。またコマンド入出力部１５２は、処理後のデータ処理コマンド５４４を画像データに変換し、メインメモリに、その画像データを画像処理の結果として書き戻す。
【００５５】
本実施形態では、画像データを部分画像（後述のページ、バンド領域、小領域）に分解して画像処理する。上述の復帰シーケンスは、これらの部分画像の処理単位ごとに実行するかどうかを選択することができる。
【００５６】
（領域分割手法の一例としてのバンド処理）
次に、本実施形態における画像データの領域分割について説明する。本実施形態では、領域分割手法の１つであるバンド処理を用いるものとする。以下、バンド処理について、図を用いて説明する。バンド処理では、図９（ａ）〜（ｄ）に示されるように、１枚の画像データ３００を帯状のバンド領域３０１〜３０４に分割し、この領域毎に逐次的に各種の画像処理を行う。なお、バンド領域は、画像データを主走査方向または副走査方向のいずれかにおいて分割したものであり、バンド領域と画像データとは、主走査方向または副走査方向のいずれかにおいて長さが一致する。例えば、図９（ａ）〜（ｄ）では、画像データは副走査方向において分割され、画像データとバンド領域とでは、主走査方向について同一の長さを有し、副走査方向において異なる長さを有する。以下では、この分割された細長い領域をバンド領域と呼び、バンド領域が展開される記憶領域をバンドメモリと呼び、画像データを分割する処理をバンド分割と呼ぶ。バンドメモリは、ＲＡＭ１０６内に記憶領域として確保されてもよく、また、システム上の適切な記憶領域に確保されてもよい。なお、ここでは説明を簡潔にするために、バンドメモリをＲＡＭ１０６に確保する場合を例に挙げて説明する。
【００５７】
また、以下では、図９（ｅ）に示すように、画像データの座標系（主走査方向−副走査方向）を、長さ方向、高さ方向という新たな座標系（バンド領域座標系）によって定義し、バンド領域を長さ×高さで表現する。バンド領域の長さ、すなわちバンド領域の長さ方向の一辺の大きさは、画像データの主走査方向の長さ、または副走査方向の長さの何れかの値とする。また、バンド領域の高さ、すなわちバンド領域の高さ方向の一辺の大きさは任意の値となる。例えば、図９（ａ）〜（ｄ）では、長さ方向は主走査方向であり、高さ方向は副走査方向である。
【００５８】
バンド処理では、まず、図９（ａ）に示す第１のバンド領域３０１を、ＲＡＭ１０６上のバンドメモリに展開して画像処理を行う。次に、図９（ｂ）に示す第２のバンド領域３０２を、第１のバンド領域３０１が展開されたＲＡＭ１０６上のバンドメモリに上書き展開して、画像処理を行なう。さらにその後、図９（ｃ）に示す第３のバンド領域３０３を、第２のバンド領域３０２が展開されたＲＡＭ１０６上のバンドメモリに上書き展開し、画像処理を行なう。最後に、図９（ｄ）に示す第４のバンド領域３０４を、第３のバンド領域３０３が展開されたＲＡＭ１０６上のバンドメモリに上書き展開して画像処理を行なう。図９（ａ）〜（ｄ）で明らかなように、バンド領域３０１〜３０４の長さは同じであるが、高さは同じでなくてもよい。したがって、メインメモリに確保される記憶領域であるバンドメモリの高さは、高さ方向の一辺の大きさが最も大きいバンド領域（図９の場合、第１〜第３のバンド領域３０１〜３０３）によって決定される。
【００５９】
なお、バンド処理では、各バンド領域間で隙間なく空間フィルタ処理などの局所（近傍）画像処理を行なうため、図１０示すように、各バンド領域が、それぞれ隣接する領域との境界で一部分が互いに重なり合うようにしてもよい。そして、各領域の高さと同一の方向に１画素ずつ画素を走査することで、局所（近傍）画像処理に必要な処理画素を保持する遅延メモリの容量を各領域の高さで規定する。このような工夫により、局所（近傍）画像処理で必要となる遅延メモリの省メモリ化を実現できる。
【００６０】
（画像データのデータ構造）
次に画像データのデータ構造の一例について詳細に説明する。本実施形態では、上述のように、画像データはＲＡＭ１０６に一時的に格納される。一般的にＲＡＭ１０６は安価なＤＲＡＭで構成されることが多い。したがって、前述のようにＤＭＡＣを介して画像データを読み書きする場合、ＤＲＡＭが性能を落とさずに読み書きできる単位で画像データを取り扱うことが望ましい。そこで、ＲＡＭ１０６の画像データの格納方法の一例と、画像データのデータ構造の一例について、図１１を用いて詳しく説明する。図１１は、ＲＡＭ１０６（ＤＲＡＭ）上にデータが格納された状態を示している。図１１の例では、あるデータ領域（ＩＭＧ＿ＡＲＥＡ＿ＳＴＲ＿ＡＤＤＲからＩＭＧ＿ＡＲＥＡ＿ＥＮＤ＿ＡＤＤＲまでの領域）が確保され、ここに画像処理に必要な種々の画像データが格納される。
【００６１】
図１１は、点順次形式の画像データの構造のＲＡＭ１０６への格納例であり、ＲＡＭ１０６（ＤＲＡＭ）のデータ領域に画像データ（ＩＭＧ４２５）が格納された例を示している。例では、ＤＲＡＭの性能を落とさずに画像データを読み書きできるように、格納される画像データの容量の最小単位は、図１１の４０８に示すように、３２ｂｉｔ×８ｗｏｒｄの３２Ｂｙｔｅとしている。すなわち、画像データの格納容量は３２Ｂｙｔｅの整数倍となる。なお、画像処理装置上でのＲＡＭ１０６の構成の仕方、ＲＡＭ１０６を実現する記憶装置（ＤＲＡＭ等）の種類、または実行する画像処理の種類等に応じて、画像データの読み書き単位は３２Ｂｙｔｅではない大きさであってもよい。
【００６２】
次に、画像データのデータ構造を詳しく説明する。画像データ４４０は、点順次形式で、Ｒ（Ｒｅｄ）、Ｇ（Ｇｒｅｅｎ）、Ｂ（Ｂｌｕｅ）の画素値を有する。画像データ４４０に含まれる１つの領域４４２は３２Ｂｙｔｅ単位のデータであり、１つの領域４４２の中には、領域４４４で示すように、複数個（８つ）の画素値がパッキングされている。そして、領域４４４に含まれる８つの画素値のそれぞれには、４４６で示すようにそれぞれ１０ｂｉｔのＲ、Ｇ、Ｂの値がパッキングされている。なお、図の例では、残りの２ｂｉｔは、ＤＲＡＭへのアクセスを簡単にするための無効データであり、データを格納しないものとする。図１１において、太線で表される画像データ４４０は、８Ｍ×Ｎ画素のサイズを有する。
【００６３】
（データ取得コマンド）
データ取得コマンド５４２は、画像入力部１５２１と画像出力部１５２３の動作を制御するコマンドである。画像入力部１５２１は、データ取得コマンドを受け取り、上述のレジスタ制御コマンドにおいて予め設定されたレジスタ値に従い、ＤＭＡＣ（Ｒｅａｄ）１９４を起動してメインメモリから上述の画像データを取得する。そして、画像入力部１５２１は、このデータ取得コマンドを、画像処理回路（１）１５３１〜画像処理回路（Ｐ）１５３７、画像出力部１５２３へ内部バスを介して送る。このとき、画像処理回路（１）１５３１〜画像処理回路（Ｐ）１５３７は何も処理は行わず、後段の画像処理回路にこのデータ取得コマンドを送出する。最後に、画像出力部１５２３が、このデータ取得コマンドを受け取り、ＤＭＡＣ（Ｗｒｉｔｅ）１９６を起動する。
【００６４】
そして、画像入力部１５２１は、取得した画像データを上述のデータ処理コマンド５４４の形式に変換して、順次画像処理回路（１）１５３１〜画像処理回路（Ｐ）１５３７、画像出力部１５２３へ内部バス１５３０を介して送る。画像出力部１５２３は、データ取得コマンドの後に続くデータ処理コマンドの画素値（ＲＧＢ）領域から情報を抜き出して所定のパッキングを行い、３２Ｂｙｔｅ単位の画像データに変換する。そして、画像出力部１５２３は、データ取得コマンドによって起動されたＤＭＡＣ（Ｗｒｉｔｅ）１９６によって、３２Ｂｙｔｅ単位の処理後の画像データをＲＡＭ１０６へ書き出す。
【００６５】
（画像データとデータ処理コマンド変換）
読み出された画像データは、入力ポート１５１を介して、画像処理部１５０のコマンド入出力部１５２へ入力される。コマンド入出力部１５２において、画像入力部１５２１は、画像データを取得すると、中間バッファ制御部１５２２に含まれる記憶装置（中間バッファ）の記憶領域（後述）に、取得した画像データを一時的に記憶させる。そして、画像入力部１５２１は、中間バッファに一時的に記憶された画像データを読み出しながら画素値（前述のＲＧＢ）を生成し、入力データ処理コマンドとして内部バス１５５を介して画像処理実行部１５３へ入力する。
【００６６】
画像処理実行部１５３は、入力されたデータ処理コマンドに対して所定の画像処理を実行し、処理後のデータを含むデータ処理コマンドを生成する。画像処理実行部１５３は、処理後のデータを含むデータ処理コマンドを、内部バス１５６を介してコマンド入出力部１５２へ出力する。なお、ここでは、画像データの複数の画素値が複数のデータ処理コマンドに変換されて画像処理される。
【００６７】
コマンド入出力部１５２では、画像出力部１５２３は、処理後のデータを含むデータ処理コマンドから出力画像データを生成して中間バッファ制御部１５２２内の記憶装置（中間バッファ）に記憶する。画像出力部１５２３は、記憶装置（中間バッファ）に一時的に記憶された処理後の画像データを読み出し、出力画像データとして出力ポート１５４を介してＤＭＡＣ１９６へ送出する。ＤＭＡＣ１９６は、上述の通り、既に起動されており、受け取った出力画像データをＲＡＭ１０６へ書き出す。
【００６８】
（画像データの入出力方法）
図１２は、本実施形態の画像処理方法を用いた場合の、ＲＡＭ１０６からコマンド入出力部１５２への、またはコマンド入出力部１５２からＲＡＭ１０６への、画像データの入出力方法についての説明図である。画像処理装置は、図１２（ａ）及び（ｂ）のように、１つの画像データ３００からバンド領域３０１を抜き出し、入力画像データとしてＲＡＭ１０６に格納する。そして、このバンド領域の入力画像データは、先に図１１を用いて説明したように、ＲＡＭ１０６で取り扱いやすくなるように３２Ｂｙｔｅを単位としたデータ構造をもつ。そのため、バンド領域の入力画像データは図１２（ｃ）の２１０に示すようなデータ構造となる。
【００６９】
図１２（ｄ）において、ＤＭＡＣ１９４は、図１の共有バス１９０を介して、このバンド領域の入力画像データ２１０をＲＡＭ１０６から読み出し、画像処理部１５０へ入力する。入力画像データ２１０は、先のデータ構造にしたがって、３２Ｂｙｔｅ×Ｂｄｈ＿ｉｎの処理単位で、領域（１）２１１から領域（Ｍ）２１９までのＭ個の小さい画素領域（小領域）に分けられる。そして、ＤＭＡＣ１９４は、このＭ個の小領域（処理単位）の入力画像データを、小領域（１）２１１から小領域（Ｍ）２１９まで１つずつ読み出し、画像処理部１５０に入力する。画像処理部１５０は、この小領域（処理単位）の入力画像データを受け取り、この単位で画像処理を実行する。
【００７０】
ＤＭＡＣ１９４は、例えば、「読み出し先の先頭アドレス」、「連続読み出し量（３２Ｂｙｔｅ単位のデータを連続何回読み出すか）」、「インクリメント・アドレス」および「繰り返し回数」をもとに動作する。例えば、図１１の点順次形式の画像データでは以下の通りとなる。
【００７１】
・「先頭アドレス」：Ｓ１＿ＩＭＧ＿ＳＴＲ＿ＡＤＤＲ
・「連続読み出し量」：１回（３２Ｂｙｔｅ）
・「インクリメント・アドレス」：１ラインのデータ量＝３２Ｂｙｔｅ×Ｍ
・「繰り返し数」：バンド領域の高さ＝Ｂｄｈ＿ｉｎ回
このようにすることにより、先頭アドレスＳ１＿ＩＭＧ＿ＳＴＲ＿ＡＤＤＲから、まず３２Ｂｙｔｅのデータが読みだされる。そして、次のデータを取得するため、アドレスを３２Ｂｙｔｅ×Ｍだけ増加させることで、小領域（２）〜（Ｍ）の１行目のデータの読み出しが飛ばされて、小領域（１）２１１の第２行目の３２Ｂｙｔｅのデータを読み出すこととなる。そして、繰返し数Ｂｄｈ＿ｉｎ回、すなわち、小領域（１）２１１のＢｄｈ＿ｉｎ行分のデータを読み出すことにより、小領域（１）２１１の全てのデータを読み出すことができる。小領域（２）〜小領域（Ｍ）の入力画像データの読み出しでは、順次「先頭アドレス」を順次３２ＢｙｔｅずつずらしてＤＭＡＣ１９４を動作させる。このように画像処理装置は、所望する小領域の入力画像データをＲＡＭ１０６からＤＭＡ転送で読み出す。
【００７２】
コマンド入出力部１５２の画像入力部１５２１は、ＤＭＡＣ１９４から画像データを受け取り、データを中間バッファ制御部１５２２へ転送する。中間バッファ制御部１５２２は、図１２（ｅ）のように中間バッファ調停回路２３０と中間バッファ２３２とで構成される。中間バッファ２３２は、ＤＭＡＣ１９４から入力された画像データを格納する領域である入力領域２３４と、ＤＭＡＣ１９６へ出力する画像データを格納する領域である出力領域２３６とを含む。中間バッファ２３２の入力領域の先頭アドレスは、入力領域先頭アドレスとして、出力領域の先頭アドレスは、出力領域先頭アドレスとして、それぞれ予め設定される。なお、画像入力部１５２１から入力された入力画像データは、まず中間バッファ調停回路２３０へ入力される。
【００７３】
中間バッファ調停回路２３０は、受け取った入力画像データを、中間バッファ２３２の入力領域２３４に一時的に格納する。通常、中間バッファ２３２（記憶装置）は１つ以上の記憶領域で構成できる。例えば、１つの記憶領域に対して１つのＳＲＡＭ等の記憶装置で実現する場合、中間バッファ２３２（記憶装置）は、記憶領域の数に応じた数のＳＲＡＭ等の記憶装置で構成されることとなる。例えば、この記憶装置の１ワードあたりのビット長が２５６ビット（３２Ｂｙｔｅ）長の場合、入力領域２３４で記憶するべきワード数はバンド領域の高さに相当し、ＤＭＡ転送の繰り返し数であるＢｄｈ＿ｉｎワードとなる。また、この記憶装置の１ワードあたりのビット長が６４ビット（８Ｂｙｔｅ）長の場合、３２Ｂｙｔｅ長のデータを受けるのに４ワード必要となる。そのため、入力領域２３４で記憶すべきワード数は、バンド領域の高さ（ＤＭＡ転送の繰り返し数）Ｂｄｈ＿ｉｎを４倍したワード数となる。つまり、入力領域の容量は、１回のＤＭＡ転送の単位である小領域（処理単位）の入力画像データが格納できる容量となる。なお、ＤＭＡＣ１９４は、ＤＭＡ転送や１つのバンド領域の入力画像データの転送が完了すると、割り込み信号を用いて、その旨をＣＰＵ１０２へ通知してもよい。
【００７４】
その後、画像入力部１５２１は、中間バッファ調停回路２３０を介して、一時的に記憶された小領域の入力画像データを読み出し、１画素ずつのデータ処理コマンドを順次生成して、画像処理実行部１５３へ入力する。
【００７５】
画像出力部１５２３は、処理後の出力データ処理コマンドから画素値に変換し中間バッファ制御部１５２２へ転送し、外部記憶装置１０８に出力する画像データとして蓄える。このとき、出力画像データのデータ構造は上述の図１１の点順次形式のままであるが、出力画像データの形状は、図１２（ｆ）の２５０のように、入力時から形状が変わっていてもよい。画像処理実行部１５３では、入力画素領域のサイズと出力画素領域のサイズとが異なる様々な画像処理が実行される。そのため、入力画像データ２１０と出力画像データ２５０との画素数が異なる場合があり、例えば、出力画像データ２５０の出力バンド領域の高さはＢｄｈ＿ｏｕｔとなる。また、出力画像データ２５０のバンド領域の長さは、８×Ｎとなる。すなわち、入力画像データ２１０と出力画像データ２５０とでは、バンド領域の高さが異なるため、小領域（処理単位）の容量が異なる。また、バンド領域の長さも異なるため、小領域（処理単位）の数もＭ個からＮ個に変化する。しかしながら、入力と出力とではデータ構造が同一であるため、中間バッファ２３２の出力領域２３６の容量は入力領域２３４の容量と同じ考え方で設定できる。
【００７６】
画像出力部１５２３は、例えば、Ｂｄｈ＿ｏｕｔ個の画素のデータが４列分入力され、小領域（１）２５１の出力画像データが中間バッファ２３２の出力領域２３６に揃った時点で、画像処理実行部１５３からの処理後の出力画素値の受け取りを停止する。そして、出力領域２３６の出力画像データを順次読み出し、ＤＭＡＣ１９６へ送出する。そしてＤＭＡＣ１９６は、処理後の画像データをＲＡＭ１０６へ書き込む。そして、同様の処理が小領域（２）から小領域（Ｎ）まで順次実行されることにより、図１２（ｇ）に示す出力バンド領域の出力画像データが、すべてＲＡＭ１０６へ書き戻される。
【００７７】
（画像処理部のエラー（ハングアップ）状態の検出）
上述の通り、画像処理部１５０にはコマンド入出力部１５２（画像入力部１５２１、画像出力部１５２３、中間バッファ制御部１５２２）が含まれる。そして、画像入力部１５２１は、中間バッファ制御部１５２２を介してＤＭＡＣ（Ｒｅａｄ）１９４から転送単位ごとの画像データを受け取り、ＤＭＡＣ（Ｒｅａｄ）１９４と同期している。また画像出力部１５２３は、中間バッファ制御部１５２２を介してＤＭＡＣ（Ｗｒｉｔｅ）１９６に転送単位ごとの画像データを送出しており、ＤＭＡＣ（Ｗｒｉｔｅ）１９６と同期している。このため、両者を含むコマンド入出力部１５２は、ＤＭＡ転送の同期状態を転送単位ごとに把握することができる。
【００７８】
具体的には、コマンド入出力部１５２は、例えば、中間バッファ制御部１５２２の記憶装置２３２の入力領域に画像データが所定時間以上受け取れないとき、エラー状態を検出する。また、コマンド入出力部１５２は、例えば、所定時間以上、記憶装置２３２の出力領域から画像データを送出できないとき、エラー状態を検出する。また、コマンド入出力部１５２は、例えば、ＤＭＡ転送が完了しているにも関わらず、上述の記憶装置２３２に未転送の画像データが残っていてもエラー状態を検出する。
【００７９】
また所定時間の計測の仕方は、実施形態１と同様でよい。例えば、コマンド入出力部１５２は、記憶装置２３２の入力領域や出力領域の更新される時間をクロックサイクル単位でカウントすればよい。小領域（１回の転送単位）の画像データに格納される画素値の個数は、画像データの格納形式から算出できる。例えば、図１１の点順次形式の一例では、小領域に８×Ｎ個の画素値が格納されており、この個数と同じだけのデータ処理コマンドが生成される。コマンドの個数と画像処理実行部１５３の処理速度をもとに、予め入力画像データの処理時間を算出する。またＤＭＡ転送の性能と小領域の転送量から予め入力画像データの転送時間も算出する。これらの算出値から記憶装置２３２の入力領域の更新間隔を算出し、タイマーの閾値とすればよい。また画像データの出力に関しても同様に考えれば対応できる。すなわち、例えば、記憶装置２３２の出力領域に記憶されるデータの量と、データの出力速度（例えばＤＭＡ転送の速度）とに応じて、所定時間を定めてもよい。
【００８０】
なお、この所定時間の算出を、バンド単位やページ単位に拡張しておけば、エラー状態の検出の単位を選択することが可能である。すなわち、バンド単位若しくはページ単位のデータを取得して、画像処理実行部１５３への入力が完了するまでに要する時間を所定時間としてもよい。また、これらの単位のデータが画像処理実行部１５３から出力されるまでの時間、またはこれらの単位のデータのＤＭＡ転送が完了するまでの時間を所定時間とすることもできる。すなわち、所定の量のデータが転送完了するのに要する時間に応じて、所定時間を算出することができる。なお、所定の量とは、１つのデータ処理コマンドに相当する料であってもよいし、上述のように、小領域単位、バンド単位、ページ単位の画素のデータであってもよい。
【００８１】
なお、エラー状態の検出後の復帰手法に関しては前述の通りである。
【００８２】
以上のように、ＤＭＡ転送の設定と画像処理の設定が合致していないときにエラー状態になるケースがあるため、両者の間に介在する中間バッファに基づいて、両者を連動させてエラー状態の検出と画像処理部の復帰とを実行することが有効である。また本実施形態では、画像入力部１５２１及び画像出力部１５２３を備えるため、転送データの入力と出力の両方を連動させたエラー状態の検出と復帰についても実現できる。
【００８３】
以上のように、本実施形態によれば、画像データの取得とデータ処理コマンドによる画像処理の実行とを連動させることができる。そして、連動したエラー状態の検出と画像処理部の復帰処理とを用いることで、エラー状態に対する効果的な対策を実行することが可能となる。またエラー状態の検出と復帰の実行単位を、中間バッファへの１転送単位（小領域）からバンド領域、ページまで広く選択できるので、より効率的なデバッグが可能である。例えば、開発当初は、中間バッファへの１転送単位（小領域）ごとに検出と復帰を繰り返して、誤設定を早期に発見することができる。そして画像処理装置の制御のためのドライバ／ファームウェアの品質の向上に伴い、バンド単位に検出と復帰の間隔を広げてもよい。また製品においては、検出と復帰の間隔をページ単位まで広げてもよい。以上のように、エラー状態の検知から復帰までの単位の選択の幅を広げ、デバッグを効率的に実現することができる。
【００８４】
なお、実施形態１〜３では、画像処理を例に説明したが、他のあらゆるデータに対しても、同様の処理が実行されてもよい。すなわち、データを処理する処理実行部を有するデータ処理装置において、処理実行部でのエラー状態の検出又はユーザ操作による中断があった時に、データの処理実行部への供給を停止して、処理実行部から出力されたデータを破棄してもよい。これにより、同様のエラー状態からの復帰などを実行することができる。
【００８５】
また、実施形態１〜３では、エラー状態をＣＰＵに通知するように説明したが、ＣＰＵを経由せずに処理が行われてもよい。すなわち、コマンド入出力部１５２においてエラー状態を検出した場合、そのエラー状態の検出からの復帰指示を内部的に生成して、エラー状態を検出したことを外部に通知することなく、復帰処理を開始するようにしてもよい。
【００８６】
＜＜実施形態４＞＞
ユーザ操作による中断指示のような外的要因により画像処理装置を緊急停止するときに、ＤＭＡ転送を停止しつつ、画像処理実行部との画像処理は通常動作させてもよい。この場合、ＤＭＡ転送が停止するため、中間バッファの１転送単位（少領域）のデータが新しく読み出されることはない。また、中間バッファ上の１転送単位（少領域）が次の１転送単位（少領域）に切り替わる（バッファチェンジする）こともない。そのため、中間バッファの１転送単位（少領域）のデータ（コマンド）は、時間の経過とともに、画像処理実行部に入力されて通常の動作により画像処理されることとなる。この結果、やがて画像処理実行部にあるデータ（コマンド）の残留は自然となくなる。このような状態に対し、コマンドを画像処理実行部に入力して、画像処理実行部から戻ってきたコマンドをもとに、データ（コマンド）の残留がないことを判定してもよい。
【００８７】
例えば、画像処理実行部の画像処理回路がパイプライン的に接続された回路ではなく、分散並列的に同時動作するように並列接続された回路のとき、これらの回路に並列にバリア同期コマンドを発行する。そして、すべてのバリア同期コマンドが戻ってくることにより、データ（コマンド）の残留がないことを判定することができる。
【００８８】
また、１転送単位（少領域）のデータ（コマンド）を画像処理実行部に入力し終わった後、画像処理実行部からデータ（コマンド）が戻ってこなくなった後の経過時間を測定し、画像処理実行部にあるデータ（コマンド）の残留がないことを判定してもよい。以上のような手法により、ユーザ操作による中断指示を受けて画像処理実行部のデータ（コマンド）の残留がないことを保証し、必要であれば、外部に通知して復帰処理を開始するようにしてもよい。経過時間を測定してデータ（コマンド）の残留がないことを確認する場合、特に外部に通知することはせず、外部システムが中断指示を発行後、時間を測定して復帰処理を行ってもよい。
【００８９】
＜＜その他の実施形態＞＞
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（またはＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理である。
【図１】
2015115902.tif 000003
【図２】
2015115902.tif 000004
【図３】
2015115902.tif 000005
【図４】
2015115902.tif 000006
【図５】
2015115902.tif 000007
【図６】
2015115902.tif 000008
【図７】
2015115902.tif 000009
【図８】
2015115902.tif 000010
【図９】
2015115902.tif 000011
【図１０】
2015115902.tif 000012
【図１１】
2015115902.tif 000013
【図１２】
2015115902.tif 000014