(57)【要約】【課題】デバイスドライバからアプリケーションプログラムへの不要な通知を減らすことにより、性能の低下を防ぐことを可能とする。【解決手段】複数の入力側のディスクリプタ情報を参照してＤＭＡ読み出しする入力側ＤＭＡＣ１６１と、ＤＭＡ読み出しされた複数のブロックに回転処理を実施する回転処理部１６２ａと、複数の出力側ディスクリプタ情報を参照してＤＭＡ書き込みする出力側ＤＭＡＣ１６３と、を含むＡＳＩＣ１６を備え、各ディスクリプタ情報は、当該ディスクリプタ情報を参照して行われたＤＭＡ読み出しまたはＤＭＡ書き込みが完了したことを表す信号がＡＳＩＣ１６からデバイスドライバに出力されたときに、そのことをデバイスドライバプログラムからアプリケーションプログラムへ通知することが必要であるか否かを表す情報を含むテンポラリ領域を有する。【選択図】図５
2010218263.tif 000002
【特許請求の範囲】
【請求項１】
複数のブロックに分割された画像データ、前記複数のブロックのＤＭＡ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）読み出しに利用される複数の入力側ディスクリプタ情報、および前記複数のブロックに画像処理が施された後の複数のブロックのＤＭＡ書き込みに利用される複数の出力側ディスクリプタ情報を含む処理データを記録するデータ記録手段と、
前記複数の入力側のディスクリプタ情報を参照して、前記データ記録手段から前記複数のブロックをＤＭＡ読み出しする入力側ＤＭＡ制御部と、前記入力側ＤＭＡ制御部によって前記データ記録手段からＤＭＡ読み出しされた前記複数のブロックに画像処理を実施する画像処理機能部と、前記複数の出力側ディスクリプタ情報を参照して、前記画像処理機能部によって画像処理が実施された後の複数のブロックを前記データ記録手段にＤＭＡ書き込みする出力側ＤＭＡ制御部と、を含む画像処理手段と、
前記画像処理手段を制御する処理を含むデバイスドライバプログラム、および前記デバイスドライバプログラムを呼び出す処理を含むアプリケーションプログラムを記録するプログラム記録手段と、
前記アプリケーションプログラムおよび前記デバイスドライバプログラムを実行する情報処理手段と、
を備え、
前記各ディスクリプタ情報は、当該ディスクリプタ情報を参照して行われたＤＭＡ読み出しまたはＤＭＡ書き込みが完了したことを表す信号が前記画像処理手段から前記デバイスドライバプログラムに出力されたときに、そのことを前記デバイスドライバプログラムから前記アプリケーションプログラムへ通知することが必要であるか否かを表す情報を含むテンポラリ領域を有すること
を特徴とする画像処理装置。
【請求項２】
前記デバイスドライバプログラムは、前記テンポラリ領域の情報に基づいて、前記信号が前記画像処理手段から前記デバイスドライバプログラムに出力されたときに、そのことを前記アプリケーションプログラムへ通知することが必要であるか否かを判定する処理を含むこと
を特徴とする請求項１記載の画像処理装置。
【請求項３】
前記データ記録手段には、複数の前記処理データが記録されており、
前記デバイスドライバプログラムは、前記複数の処理データのうちの１つの処理データ内の前記複数の入力側および出力側のディスクリプタ情報のいずれかの前記テンポラリ領域に、前記複数の処理データのうちの他の１つの処理データに対する処理を開始することを表す情報が含まれている場合に、当該ディスクリプタ情報を参照して行われたＤＭＡ読み出しまたはＤＭＡ書き込みが完了したことを表す信号が前記画像処理手段から前記デバイスドライバプログラムに出力されたときに、前記他の１つの処理データに対する処理を開始するように前記画像処理手段を制御すること
を特徴とする請求項１または２記載の画像処理装置。
【請求項４】
前記アプリケーションプログラムは、当該アプリケーションプログラムを特定する情報を前記テンポラリ領域に設定すること
を特徴とする請求項１乃至３のいずれか１項に記載の画像処理装置。
【請求項５】
前記アプリケーションプログラムは、前記画像処理手段がストールした場合に、前記テンポラリ領域を参照することにより、前記画像処理手段が前記複数の入力側ディスクリプタ情報、および前記複数の出力側ディスクリプタ情報のいずれに基づく処理を実施した後に前記画像処理手段がストールしたかを判定すること
を特徴とする請求項４記載の画像処理装置。
【請求項６】
複数のブロックに分割された画像データ、前記複数のブロックのＤＭＡ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）読み出しに利用される複数の入力側ディスクリプタ情報、および前記複数のブロックに画像処理が施された後の複数のブロックのＤＭＡ書き込みに利用される複数の出力側ディスクリプタ情報を含む処理データを記録するデータ記録手段と、前記複数の入力側のディスクリプタ情報を参照して、前記データ記録手段から前記複数のブロックをＤＭＡ読み出しする入力側ＤＭＡ制御部と、前記入力側ＤＭＡ制御部によって前記データ記録手段からＤＭＡ読み出しされた前記複数のブロックに画像処理を実施する画像処理機能部と、前記複数の出力側ディスクリプタ情報を参照して、前記画像処理機能部によって画像処理が実施された後の複数のブロックを前記データ記録手段にＤＭＡ書き込みする出力側ＤＭＡ制御部と、を含む画像処理手段と、前記画像処理手段を制御する処理を含むデバイスドライバプログラム、および前記デバイスドライバプログラムを呼び出す処理を含むアプリケーションプログラムを記録するプログラム記録手段と、前記アプリケーションプログラムおよび前記デバイスドライバプログラムを実行する情報処理手段と、を備え、前記各ディスクリプタ情報は、当該ディスクリプタ情報を参照して行われたＤＭＡ読み出しまたはＤＭＡ書き込みが完了したことを表す信号が前記画像処理手段から前記デバイスドライバプログラムに出力されたときに、そのことを前記デバイスドライバプログラムから前記アプリケーションプログラムへ通知することが必要であるか否かを表す情報を含むテンポラリ領域を有する画像処理装置において実行される画像処理方法であって、
前記デバイスドライバプログラムが、前記テンポラリ領域の情報に基づいて、前記信号が前記画像処理手段から前記デバイスドライバプログラムに出力されたときに、そのことを前記アプリケーションプログラムへ通知することが必要であるか否かを判定するステップを含むこと
を特徴とする画像処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像処理装置および画像処理方法に関するものである。
【背景技術】
【０００２】
データ処理、特に、画像データ処理は、近年、ＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）を用いて行われるようになってきている。このようなデータ処理においては、データ処理のアルゴリズムと該アルゴリズムを実行するハードウェア、または、ソフトウェアの実装形態とが密接に関連している。そのため、ハードウェアの性能が十分であっても、ソフトウェアの計算量が多いために、ソフトウェアがボトルネックとなり、装置全体の性能低下につながってしまう場合があった。このような理由により、ハードウェア、ソフトウェアの改善が求められている。
【０００３】
ところで、下記の特許文献１には、画像データを入力する画像入力手段と、入力された画像データを記憶可能な画像記憶部と、画像記憶部に記憶された画像データを出力する画像出力手段と、画像出力手段が出力する画像データのデータ形式を該画像出力手段に適したデータ形式に変換するデータ形式変換手段と、データ形式変換手段による変換対象となる画像データを記憶する任意容量のＳＲＣ領域を画像記憶部に確保するＳＲＣ領域確保手段と、変換後の任意容量の画像データを記憶するＤＳＴ領域を画像記憶部に確保するＤＳＴ領域確保手段と、ＳＲＣ領域またはＤＳＴ領域の少なくとも一方の領域を複数に分割する領域分割手段と、入力された画像データをＳＲＣ領域に記憶させる記憶手段と、変換後の画像データをＤＳＴ領域に記憶させる変換記憶手段とを有することを特徴とする画像処理装置が記載されている。
【０００４】
この特許文献１では、ＤＳＴ領域の分割があり、ＳＲＣについてはＳＲＣ領域内に画像データがすべてある場合のＩ／Ｆの例について記載されている（特許文献１の図２３参照）。しかしながら、上記の例では、ハードウェアから制御ハードウェアに通知（完了の通知）がされると、制御ハードウェアが必ずソフトウェア（アプリケーション）に通知（終了の通知）をすることとしているので、ソフトウェアが必ずしも通知を必要としない場合であっても、制御ハードウェアがソフトウェアに通知をすることになる。このような通知が、ソフトウェアの計算量の増加を招き、装置全体の性能の圧迫（低下）を招くことが考えられる。
【０００５】
また、多機能化によりデータ処理装置のソフトウェアの構成も複雑になってきている。そのため、何らかの問題が発生した場合に、その問題がどのような設定条件下で発生しているのか、またその問題がどのタイミングで発生しているか、の手がかりをつかむ必要が生じてきている。
【発明の概要】
【発明が解決しようとする課題】
【０００６】
本発明は上記に鑑みてなされたものであって、デバイスドライバからアプリケーションプログラムへの不要な通知を減らすことにより、性能の低下を防ぐことが可能となる画像処理装置および画像処理方法を提供することを目的とする。
【課題を解決するための手段】
【０００７】
上述した課題を解決し、目的を達成するために、本発明にかかる画像処理装置は、複数のブロックに分割された画像データ、前記複数のブロックのＤＭＡ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）読み出しに利用される複数の入力側ディスクリプタ情報、および前記複数のブロックに画像処理が施された後の複数のブロックのＤＭＡ書き込みに利用される複数の出力側ディスクリプタ情報を含む処理データを記録するデータ記録手段と、前記複数の入力側のディスクリプタ情報を参照して、前記データ記録手段から前記複数のブロックをＤＭＡ読み出しする入力側ＤＭＡ制御部と、前記入力側ＤＭＡ制御部によって前記データ記録手段からＤＭＡ読み出しされた前記複数のブロックに画像処理を実施する画像処理機能部と、前記複数の出力側ディスクリプタ情報を参照して、前記画像処理機能部によって画像処理が実施された後の複数のブロックを前記データ記録手段にＤＭＡ書き込みする出力側ＤＭＡ制御部と、を含む画像処理手段と、前記画像処理手段を制御する処理を含むデバイスドライバプログラム、および前記デバイスドライバプログラムを呼び出す処理を含むアプリケーションプログラムを記録するプログラム記録手段と、前記アプリケーションプログラムおよび前記デバイスドライバプログラムを実行する情報処理手段と、を備え、前記各ディスクリプタ情報は、当該ディスクリプタ情報を参照して行われたＤＭＡ読み出しまたはＤＭＡ書き込みが完了したことを表す信号が前記画像処理手段から前記デバイスドライバプログラムに出力されたときに、そのことを前記デバイスドライバプログラムから前記アプリケーションプログラムへ通知することが必要であるか否かを表す情報を含むテンポラリ領域を有することを特徴とする。
【０００８】
また、本発明にかかる画像処理方法は、複数のブロックに分割された画像データ、前記複数のブロックのＤＭＡ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）読み出しに利用される複数の入力側ディスクリプタ情報、および前記複数のブロックに画像処理が施された後の複数のブロックのＤＭＡ書き込みに利用される複数の出力側ディスクリプタ情報を含む処理データを記録するデータ記録手段と、前記複数の入力側のディスクリプタ情報を参照して、前記データ記録手段から前記複数のブロックをＤＭＡ読み出しする入力側ＤＭＡ制御部と、前記入力側ＤＭＡ制御部によって前記データ記録手段からＤＭＡ読み出しされた前記複数のブロックに画像処理を実施する画像処理機能部と、前記複数の出力側ディスクリプタ情報を参照して、前記画像処理機能部によって画像処理が実施された後の複数のブロックを前記データ記録手段にＤＭＡ書き込みする出力側ＤＭＡ制御部と、を含む画像処理手段と、前記画像処理手段を制御する処理を含むデバイスドライバプログラム、および前記デバイスドライバプログラムを呼び出す処理を含むアプリケーションプログラムを記録するプログラム記録手段と、前記アプリケーションプログラムおよび前記デバイスドライバプログラムを実行する情報処理手段と、を備え、前記各ディスクリプタ情報は、当該ディスクリプタ情報を参照して行われたＤＭＡ読み出しまたはＤＭＡ書き込みが完了したことを表す信号が前記画像処理手段から前記デバイスドライバプログラムに出力されたときに、そのことを前記デバイスドライバプログラムから前記アプリケーションプログラムへ通知することが必要であるか否かを表す情報を含むテンポラリ領域を有する画像処理装置において実行される画像処理方法であって、前記デバイスドライバプログラムが、前記テンポラリ領域の情報に基づいて、前記信号が前記画像処理手段から前記デバイスドライバプログラムに出力されたときに、そのことを前記アプリケーションプログラムへ通知することが必要であるか否かを判定するステップを含むことを特徴とする。
【発明の効果】
【０００９】
本発明によれば、デバイスドライバからアプリケーションプログラムへの不要な通知を減らすことにより、性能の低下を防ぐことが可能となるという効果を奏する。
【図面の簡単な説明】
【００１０】
【図１】図１は、本発明の実施の形態にかかる複合機の構成を示すブロック図である。
【図２】図２は、アプリケーションプログラム、デバイスドライバ、およびＡＳＩＣ１６の連携関係を示す図である。
【図３】図３は、ディスクリプタ情報の例を示す図である。
【図４】図４は、画像データの流れを示す図である。
【図５】図５は、入力側ディスクリプタ情報、入力画像データ、および出力側ディスクリプタ情報の例を示す図である。
【図６】図６は、アプリケーション、デバイスドライバ、入力側ＤＭＡＣ１６１、回転処理部１６２ａ、および出力側ＤＭＡＣ１６３のシーケンス図である。
【図７】図７は、デバイスドライバの処理を示すフローチャートである。
【図８】図８は、アプリケーション、デバイスドライバ、入力側ＤＭＡＣ１６１、回転処理部１６２ａ、および出力側ＤＭＡＣ１６３のシーケンス図である。
【図９】図９は、デバイスドライバの処理を示すフローチャートである。
【図１０】図１０は、デバイスドライバの処理を示すフローチャートである。
【図１１】図１１は、入力側ディスクリプタ情報、入力画像データ、および出力側ディスクリプタ情報の例を示す図である。
【図１２】図１２は、入力側ディスクリプタ情報、入力画像データ、および出力側ディスクリプタ情報の例を示す図である。
【図１３】図１３は、アプリケーション、デバイスドライバ、入力側ＤＭＡＣ１６１、回転処理部１６２ａ、圧縮処理部１６２ｂ、および出力側ＤＭＡＣ１６３のシーケンス図である。
【図１４】図１４は、アプリケーションの処理を示すフローチャートである。
【図１５】図１５は、デバイスドライバの処理を示すフローチャートである。
【図１６】図１６は、入力側ディスクリプタ情報、入力画像データ、および出力側ディスクリプタ情報の例を示す図である。
【図１７】図１７は、コピーアプリケーション、デバイスドライバ、入力側ＤＭＡＣ１６１、回転処理部１６２ａ、および出力側ＤＭＡＣ１６３のシーケンス図である。
【図１８】図１８は、コピーアプリケーションの処理を示すフローチャートである。
【発明を実施するための形態】
【００１１】
以下に添付図面を参照して、この発明にかかる画像処理装置および画像処理方法の実施の形態を詳細に説明する。なお、同一の構成要素には同一の符号を付してその説明を省略している。
【００１２】
（本発明の実施の形態）
図１は、本発明の実施の形態にかかるＭＦＰ（複合機）の構成を示すブロック図である。本実施の形態は、本発明をＭＦＰに適用したものである。図１に示すように、このＭＦＰは、コントローラ１０とエンジン部（Ｅｎｇｉｎｅ）６０とをＰＣＩ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｆａｃｅ）バスで接続した構成となる。コントローラ１０は、ＭＦＰ全体の制御と描画、通信、図示しない操作部からの入力を制御するコントローラである。エンジン部６０は、ＰＣＩバスに接続可能なプリンタエンジンなどであり、たとえば白黒プロッタ、１ドラムカラープロッタ、４ドラムカラープロッタ、スキャナまたはファックスユニットなどである。なお、このエンジン部６０には、プロッタなどのいわゆるエンジン部分に加えて、誤差拡散やガンマ変換などの画像処理部分が含まれる。
【００１３】
コントローラ１０は、ＣＰＵ１１（本発明の情報処理手段に対応）と、ノースブリッジ（ＮＢ）１３と、システムメモリ（ＭＥＭ−Ｐ）１２と、サウスブリッジ（ＳＢ）１４と、ローカルメモリ（ＭＥＭ−Ｃ）１７と、ＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）１６（本発明の画像処理手段に対応）と、ハードディスクドライブ（ＨＤＤ）１８とを有し、ノースブリッジ（ＮＢ）１３とＡＳＩＣ１６との間をＡＧＰ（Ａｃｃｅｌｅｒａｔｅｄ  Ｇｒａｐｈｉｃｓ  Ｐｏｒｔ）バス１５で接続した構成となる。また、ＭＥＭ−Ｐ１２は、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）１２ａ（本発明のプログラム記録手段に対応）と、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ)１２ｂ（本発明のデータ記録手段に対応）と、をさらに有する。
【００１４】
ＣＰＵ１１は、ＭＦＰの全体制御をおこなうものであり、ＮＢ１３、ＭＥＭ−Ｐ１２およびＳＢ１４からなるチップセットを有し、このチップセットを介して他の機器と接続される。
【００１５】
ＮＢ１３は、ＣＰＵ１１とＭＥＭ−Ｐ１２、ＳＢ１４、ＡＧＰ１５とを接続するためのブリッジであり、ＭＥＭ−Ｐ１２に対する読み書きなどを制御するメモリコントローラと、ＰＣＩマスタおよびＡＧＰターゲットとを有する。
【００１６】
ＭＥＭ−Ｐ１２は、プログラムやデータの格納用メモリ、プログラムやデータの展開用メモリ、プリンタの描画用メモリなどとして用いるシステムメモリであり、ＲＯＭ１２ａとＲＡＭ１２ｂとからなる。ＲＯＭ１２ａは、プログラムやデータの格納用メモリとして用いる読み出し専用のメモリであり、ＲＡＭ１２ｂは、プログラムやデータの展開用メモリ、プリンタの描画用メモリなどとして用いる書き込みおよび読み出し可能なメモリである。
【００１７】
本実施の形態においては、ＲＯＭ１２ａには、アプリケーションプログラム（ＦＡＸアプリケーションプログラム、コピーアプリケーションプログラム、スキャナアプリケーションプログラム等）、デバイスドライバプログラム（ＡＳＩＣ１６等のハードウェアを制御するプログラム）等の各種のプログラムが記録されている。これらのプログラムは、ＣＰＵ１１によって実行される。図２は、アプリケーションプログラム（以下、単に「アプリケーション」ともいう。）、デバイスドライバプログラム（以下、単に「デバイスドライバ」ともいう。）、およびＡＳＩＣ１６の連携関係を示す図である。アプリケーションは、ＡＳＩＣ１６を動作させる（起動する）ことをデバイスドライバに要求し、デバイスドライバは、アプリケーションからの要求に応じてＡＳＩＣ１６を動作させる（起動する）。ＡＳＩＣ１６は、所定のタイミング（後述）でデバイスドライバに割り込み信号を出力し、デバイスドライバは、割り込み信号を受け取ると、必要に応じてアプリケーションに結果通知を行う。
【００１８】
本実施の形態において、アプリケーションは、ＡＳＩＣ１６に処理させるための画像データを複数のブロックに分割してＲＡＭ１２ｂ（図１参照）に用意する（記録する）。また、アプリケーションは、複数のブロックを参照する複数の入力側および出力側ディスクリプタ情報をＲＡＭ１２ｂに用意する。
【００１９】
図３は、ディスクリプタ情報の例を示す図である。ディスクリプタ情報は、次のディスクリプタ情報の格納アドレスを示すチェーン先アドレス（本実施の形態では３２ビット）、転送するデータ（ブロック）の先頭アドレスを示すデータ転送先アドレス（本実施の形態では３２ビット）、転送するデータ（ブロック）のデータ量をライン数で示すデータ転送ライン数（本実施の形態では３２ビット）、およびフォーマット情報（本実施の形態では３２ビット）を含む。本実施の形態では、フォーマット情報のうち、使われずに空いている最下位ビット（ビット０）を、ＡＳＩＣ１６からＣＰＵ１１への割り込み信号のマスクに利用する。本実施の形態では、フォーマット情報の最下位ビット（ビット０）が「１」である場合にＣＰＵ割り込みを発生させ、「０」である場合にＣＰＵ割り込みをマスクする。また、フォーマット情報のうち、同じく使われずに空いている上位１６ビット（ビット３１〜１６）をテンポラリ領域（後述）として利用する。
【００２０】
再び図１を参照すると、ＳＢ１４は、ＮＢ１３とＰＣＩデバイス、周辺デバイスとを接続するためのブリッジである。このＳＢ１４は、ＰＣＩバスを介してＮＢ１３と接続されており、このＰＣＩバスには、ネットワークインターフェース（Ｉ／Ｆ）部なども接続される。
【００２１】
ＡＳＩＣ１６は、画像処理用のハードウェア要素を有する画像処理用途向けのＩＣ（Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）であり、ＡＧＰ１５、ＰＣＩバス、ＨＤＤ１８およびＭＥＭ−Ｃ１７をそれぞれ接続するブリッジの役割を有する。このＡＳＩＣ１６は、ＰＣＩターゲットおよびＡＧＰマスタと、ＡＳＩＣ１６の中核をなすアービタ（ＡＲＢ）と、ＭＥＭ−Ｃ１７を制御するメモリコントローラと、ＣＰＵ１１によってＲＡＭ１２ｂ内に用意（記録）された画像処理対象画像データ（以下、「入力画像データ」と言う場合がある。）をＤＭＡ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）読み出しする入力側ＤＭＡＣ（ＤＭＡ  Ｃｏｎｔｒｏｌｌｅｒ）と、ハードウェアロジックなどにより画像データの回転、圧縮などの各種の画像処理をおこなう画像処理機能ブロックと、画像処理機能ブロックにより画像処理が実施された後の画像処理結果画像データ（以下、「出力画像データ」と言う場合がある。）をＲＡＭ１２ｂにＤＭＡ書き込みする出力側ＤＭＡＣと、エンジン部６０との間でＰＣＩバスを介したデータ転送をおこなうＰＣＩユニットとからなる。このＡＳＩＣ１６には、ＰＣＩバスを介してＦＣＵ（Ｆａｃｓｉｍｉｌｅ  Ｃｏｎｔｒｏｌ  Ｕｎｉｔ）３０、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）４０、ＩＥＥＥ１３９４（ｔｈｅ  Ｉｎｓｔｉｔｕｔｅ  ｏｆ  Ｅｌｅｃｔｒｉｃａｌ  ａｎｄ  Ｅｌｅｃｔｒｏｎｉｃｓ  Ｅｎｇｉｎｅｅｒｓ  １３９４）インタフェース５０が接続される。操作表示部２０はＡＳＩＣ１６に直接接続されている。
【００２２】
図４は、ＲＡＭ１２ｂ〜ＡＳＩＣ１６〜ＲＡＭ１２ｂという経路における画像データの流れを示す図である。ＡＳＩＣ１６は、入力側ＤＭＡＣ１６１、画像処理機能ブロック１６２、および出力側ＤＭＡＣ１６３を含んでおり、入力側ＤＭＡＣ１６１は、ＣＰＵ１１によってＲＡＭ１２ｂ（図１参照）内に用意された複数の入力側ディスクリプタ情報を参照することで、ＣＰＵ１１によってＲＡＭ１２ｂ（図１参照）内に用意され、複数のブロックに分割された画像処理対象画像データ（入力画像データ）をＤＭＡ読み出しして、画像処理機能ブロック１６２に出力する。画像処理機能ブロック１６２は、入力側ＤＭＡＣ１６１によってＤＭＡ読み出しされた画像処理対象画像データに画像処理を実施する。出力側ＤＭＡＣ１６３は、ＣＰＵ１１によってＲＡＭ１２ｂ内に用意された複数の出力側ディスクリプタ情報を参照して、画像処理結果画像データ（出力画像データ）をＲＡＭ１２ａにＤＭＡ書き込みする。
【００２３】
再び図１を参照すると、ＭＥＭ−Ｃ１７は、コピー用画像バッファ、符号バッファとして用いるローカルメモリであり、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）１８は、画像データの蓄積、プログラムの蓄積、フォントデータの蓄積、フォームの蓄積を行うためのストレージである。
【００２４】
ＡＧＰ１５は、グラフィック処理を高速化するために提案されたグラフィックスアクセラレーターカード用のバスインターフェースであり、ＭＥＭ−Ｐ１２に高スループットで直接アクセスすることにより、グラフィックスアクセラレーターカードを高速にするものである。
【００２５】
次に、本発明の実施の形態の第１の動作について説明する。図５は、入力画像データを時計回りに９０度回転させる回転処理をＡＳＩＣ１６に行わせる場合における、複数の入力側ディスクリプタ情報、入力画像データ、および複数の出力側ディスクリプタ情報（処理データ）の例を示す図である。入力画像データは複数（ここでは、３つ）のブロックに分割されており、各ブロックが格納されている領域の先頭アドレスは、複数（ここでは、３つ）の入力側ディスクリプタ情報ＩＤ１〜ＩＤ３内に、データ転送先アドレスとして格納されている。同様に、出力画像データも複数（ここでは、３つ）のブロックに分割される。出力画像データの複数（ここでは、３つ）のブロックが書き込まれる領域の先頭アドレスは、複数（ここでは、３つ）の出力側ディスクリプタ情報ＯＤ１〜ＯＤ３内に、データ転送先アドレスとして格納されている。なお、図５においては、便宜のため、テンポラリ領域（フォーマット情報の上位１６ビット（ビット３１〜ビット１６）、図３参照）を、ディスクリプタ情報の最下段に独立させて示している。
【００２６】
先に触れたように、本実施の形態においては、各入力側および出力側ディスクリプタ情報のフォーマット情報のうち、使われずに空いている最下位ビット（ビット０）を、ＡＳＩＣ１６からＣＰＵ１１への割り込み信号のマスクとして利用する。図５に示す例では、入力側ディスクリプタ情報ＩＤ１、ＩＤ２のフォーマット情報の最下位ビット（ビット０）は、「１」（ＣＰＵ割り込みあり）に設定されており、入力側ディスクリプタ情報ＩＤ３のフォーマット情報の最下位ビット（ビット０）は、「０」（ＣＰＵ割り込みなし）に設定されている。
【００２７】
また、本実施の形態においては、各入力側、および出力側ディスクリプタ情報のフォーマット情報のうち、使われずに空いている上位１６ビット（ビット３１〜１６）をテンポラリ領域として利用する。図５に示す例では、入力側ディスクリプタ情報ＩＤ１のテンポラリ領域（ビット３１〜１６）は、「結果通知あり」（ここでは、「１」とする。）に設定されており、入力側ディスクリプタ情報ＩＤ２、ＩＤ３のテンポラリ領域（ビット３１〜１６）は、「結果通知なし」（ここでは、「０」とする。）に設定されている。
【００２８】
また、出力側ディスクリプタ情報ＯＤ１、ＯＤ２のフォーマット情報の最下位ビット（ビット０）は、「１」（ＣＰＵ割り込みあり）に設定されており、出力側ディスクリプタ情報ＯＤ３のフォーマット情報の最下位ビット（ビット０）は、「０」（ＣＰＵ割り込みなし）に設定されている。
【００２９】
また、出力側ディスクリプタ情報ＯＤ１、ＯＤ３のテンポラリ領域（ビット３１〜１６）は、「結果通知なし」（ここでは、「０」とする。）に設定されており、出力側ディスクリプタ情報ＯＤ２のテンポラリ領域（ビット３１〜１６）は、「結果通知あり」（ここでは、「１」とする。）に設定されている。
【００３０】
このように、テンポラリ領域を「結果通知あり」、「結果通知なし」に利用する場合、各入力側および出力側ディスクリプタ情報のフォーマット情報の上位１６ビット（ビット３１〜１６）の全てのビットを利用する必要はなく、１ビット利用すれば足りる。
【００３１】
図６は、アプリケーションが図５に示す入力側ディスクリプタ情報、入力画像データ、および出力側ディスクリプタ情報をＲＡＭ１２ａ内に用意して画像処理（ここでは、９０度回転処理）の実施を要求する場合における、アプリケーション、デバイスドライバ、入力側ＤＭＡＣ１６１、ＡＳＩＣ１６の画像処理機能ブロック１６２内の画像処理部（ここでは、回転処理部１６２ａ（図５参照））、および出力側ＤＭＡＣ１６３のシーケンス図である。
【００３２】
アプリケーションは、入力側ディスクリプタ情報、入力画像データ、および出力側ディスクリプタ情報（図５参照）をＲＡＭ１２ａ内に用意した後、デバイスドライバに画像処理要求を行う（ステップＳ１）。デバイスドライバは、画像処理要求をアプリケーションから受けると、アプリケーションから要求された画像処理（ここでは、９０度回転処理）を行うように、ＡＳＩＣ１６の画像処理機能ブロック１６２内の画像処理部（ここでは、回転処理部１６２ａ）を起動する（ステップＳ２）。ＡＳＩＣ１６の画像処理機能ブロック１６２内の回転処理部１６２ａは、デバイスドライバから起動されると、入力側ＤＭＡＣ１６１を起動する（ステップＳ３）。また、ＡＳＩＣ１６の画像処理機能ブロック１６２内の回転処理部１６２ａは、出力側ＤＭＡＣ１６３を起動する（ステップＳ４）。
【００３３】
入力側ＤＭＡＣ１６１は、入力側ディスクリプタ情報ＩＤ１（図５参照）を参照して、入力画像データの第１のブロックのＤＭＡ読み出しを行う。このようにして入力側ＤＭＡＣ１６１によってＤＭＡ読み出しされた入力画像データの第１のブロックには、画像処理機能ブロック１６２内の回転処理部１６２ａ（図５参照）によって画像処理（ここでは、９０度回転処理）が実施される。ここで、入力側ディスクリプタ情報ＩＤ１のフォーマット情報の最下位ビット（ビット０）は、「１」（ＣＰＵ割り込みあり）であるので、入力側ＤＭＡＣ１６１は、入力画像データの第１のブロックのＤＭＡ読み出しが完了すると、割り込み信号をデバイスドライバに出力する（ステップＳ５）。
【００３４】
図７は、ＡＳＩＣ１６から割り込み信号が入力された場合におけるデバイスドライバの処理（割り込みハンドラ）を示すフローチャートである。ＡＳＩＣ１６から割り込み信号が入力されると、デバイスドライバは、入力側ディスクリプタ情報ＩＤ１のテンポラリ領域が「１」（「結果通知あり」）であるか否かを判定する（ステップＳ２１）。
【００３５】
デバイスドライバは、入力側ディスクリプタ情報ＩＤ１のテンポラリ領域が「１」（「結果通知あり」）であると判定した場合（ステップＳ２１：Ｙｅｓ）、アプリケーションに結果（ここでは、第１のブロックのＤＭＡ読み出しが完了したこと）を通知する（ステップＳ２２）。
【００３６】
また、デバイスドライバは、入力側ディスクリプタ情報ＩＤ１のテンポラリ領域が「１」（「結果通知あり」）ではないと判定した場合（ステップＳ２１：Ｎｏ）、アプリケーションに結果（ここでは、第１のブロックのＤＭＡ読み出しが完了したこと）を通知することなく処理を終了する。
【００３７】
ここでは、入力側ディスクリプタ情報ＩＤ１のテンポラリ領域が「１」（「結果通知あり」）であるので（ステップＳ２１：Ｙｅｓ）、デバイスドライバは、アプリケーションに結果（ここでは、第１のブロックのＤＭＡ読み出しが完了したこと）を通知する（ステップＳ２２（図６のステップＳ６に対応））。デバイスドライバから通知を受けたアプリケーションは、種々の処理（例えば、今実施されている９０度回転処理の次に実施する画像処理の準備のための処理等）を行うことができる。
【００３８】
再び図６を参照すると、出力側ＤＭＡＣ１６３は、出力側ディスクリプタ情報ＯＤ１（図５参照）を参照して、画像処理機能ブロック１６２内部の回転処理部１６２ａ（図５参照）によって画像処理が実施された後の出力画像データの第１のブロックのＤＭＡ書き込みを行う。ここで、出力側ディスクリプタ情報ＯＤ１のフォーマット情報の最下位ビット（ビット０）は、「１」（ＣＰＵ割り込みあり）であるので、出力側ＤＭＡＣ１６３は、出力画像データの第１のブロックのＤＭＡ書き込みが完了すると、割り込み信号をデバイスドライバに出力する（ステップＳ７）。
【００３９】
再び図７を参照すると、デバイスドライバは、出力側ディスクリプタ情報ＯＤ１のテンポラリ領域が「１」（「結果通知あり」）であるか否かを判定する（ステップＳ２１）。
【００４０】
デバイスドライバは、出力側ディスクリプタ情報ＯＤ１のテンポラリ領域が「１」（「結果通知あり」）であると判定した場合（ステップＳ２１：Ｙｅｓ）、アプリケーションに結果（ここでは、第１のブロックのＤＭＡ書き込みが完了したこと）を通知する（ステップＳ２２）。
【００４１】
また、デバイスドライバは、出力側ディスクリプタ情報ＯＤ１のテンポラリ領域が「１」（「結果通知あり」）ではないと判定した場合（ステップＳ２１：Ｎｏ）、アプリケーションに結果（ここでは、第１のブロックのＤＭＡ書き込みが完了したこと）を通知することなく処理を終了する。
【００４２】
ここでは、出力側ディスクリプタ情報ＯＤ１のテンポラリ領域が「１」ではなく「０」（「結果通知なし」）であるので（ステップＳ２１：Ｎｏ）、デバイスドライバは、アプリケーションに結果（ここでは、第１のブロックのＤＭＡ書き込みが完了したこと）を通知することなく、処理を終了する。
【００４３】
再び図６を参照すると、入力側ＤＭＡＣ１６１は、入力側ディスクリプタ情報ＩＤ２（図５参照）を参照して、入力画像データの第２のブロックのＤＭＡ読み出しを行う。このようにして入力側ＤＭＡＣ１６１によってＤＭＡ読み出しされた入力画像データの第２のブロックには、画像処理機能ブロック１６２内の回転処理部１６２ａ（図５参照）によって画像処理が実施される。ここで、入力側ディスクリプタ情報ＩＤ２のフォーマット情報の最下位ビット（ビット０）は、「１」（ＣＰＵ割り込みあり）であるので、入力側ＤＭＡＣ１６１は、入力画像データの第２のブロックのＤＭＡ読み出しが完了すると、割り込み信号をデバイスドライバに出力する（ステップＳ８）。
【００４４】
再び図７を参照すると、デバイスドライバは、入力側ディスクリプタ情報ＩＤ２のテンポラリ領域が「１」（「結果通知あり」）であるか否かを判定する（ステップＳ２１）。
【００４５】
デバイスドライバは、入力側ディスクリプタ情報ＩＤ２のテンポラリ領域が「１」（「結果通知あり」）であると判定した場合（ステップＳ２１：Ｙｅｓ）、アプリケーションに結果（ここでは、第２のブロックのＤＭＡ読み出しが完了したこと）を通知する（ステップＳ２２）。
【００４６】
また、デバイスドライバは、入力側ディスクリプタ情報ＩＤ２のテンポラリ領域が「１」（「結果通知あり」）ではないと判定した場合（ステップＳ２１：Ｎｏ）、アプリケーションに結果（ここでは、第２のブロックのＤＭＡ読み出しが完了したこと）を通知することなく処理を終了する。
【００４７】
ここでは、入力側ディスクリプタ情報ＩＤ２のテンポラリ領域が「１」ではなく「０」（「結果通知なし」）であるので（ステップＳ２１：Ｎｏ）、デバイスドライバは、アプリケーションに結果（ここでは、第２のブロックのＤＭＡ読み出しが完了したこと）を通知することなく、処理を終了する。
【００４８】
再び図６を参照すると、出力側ＤＭＡＣ１６３は、出力側ディスクリプタ情報ＯＤ２（図５参照）を参照して、画像処理機能ブロック１６２内の回転処理部１６２ａ（図５参照）によって画像処理が実施された後の出力画像データの第２のブロックのＤＭＡ書き込みを行う。ここで、出力側ディスクリプタ情報ＯＤ２のフォーマット情報の最下位ビット（ビット０）は、「１」（ＣＰＵ割り込みあり）であるので、出力側ＤＭＡＣ１６３は、出力画像データの第２のブロックのＤＭＡ書き込みが完了すると、割り込み信号をデバイスドライバに出力する（ステップＳ９）。
【００４９】
再び図７を参照すると、デバイスドライバは、出力側ディスクリプタ情報ＯＤ２のテンポラリ領域が「１」（「結果通知あり」）であるか否かを判定する（ステップＳ２１）。
【００５０】
デバイスドライバは、出力側ディスクリプタ情報ＯＤ２のテンポラリ領域が「１」（「結果通知あり」）であると判定した場合（ステップＳ２１：Ｙｅｓ）、アプリケーションに結果（ここでは、第２のブロックのＤＭＡ書き込みが完了したこと）を通知する（ステップＳ２２）。
【００５１】
また、デバイスドライバは、出力側ディスクリプタ情報ＯＤ２のテンポラリ領域が「１」（「結果通知あり」）ではないと判定した場合（ステップＳ２１：Ｎｏ）、アプリケーションに結果（ここでは、第２のブロックのＤＭＡ書き込みが完了したこと）を通知することなく処理を終了する。
【００５２】
ここでは、出力側ディスクリプタ情報ＯＤ２のテンポラリ領域が「１」（「結果通知あり」）であるので（ステップＳ２１：Ｙｅｓ）、デバイスドライバは、アプリケーションに結果（ここでは、第２のブロックのＤＭＡ書き込みが完了したこと）を通知する（ステップＳ２２（図６のステップＳ１０に対応））。デバイスドライバから通知を受けたアプリケーションは、種々の処理（例えば、次に実施する画像処理の準備のための処理等）を行うことができる。
【００５３】
再び図６を参照すると、入力側ＤＭＡＣ１６１は、入力側ディスクリプタ情報ＩＤ３（図５参照）を参照して、入力画像データの第３のブロックのＤＭＡ読み出しを行う。このようにして入力側ＤＭＡＣ１６１によってＤＭＡ読み出しされた入力画像データの第３のブロックには、画像処理機能ブロック１６２内の回転処理部１６２ａ（図５参照）によって画像処理が実施される。ここで、入力側ディスクリプタ情報ＩＤ３のフォーマット情報の最下位ビット（ビット０）が「０」（ＣＰＵ割り込みなし）であるので、入力側ＤＭＡＣ１６１は、入力画像データの第３のブロックのＤＭＡ読み出しが完了しても、割り込み信号をデバイスドライバに出力しないが、入力画像データのＤＭＡ読み出しが完了したことをＡＳＩＣ１６の画像処理機能ブロック１６２内の回転処理部１６２ａには通知する（ステップＳ１１）。
【００５４】
また、出力側ＤＭＡＣ１６３は、出力側ディスクリプタ情報ＯＤ３（図５参照）を参照して、画像処理機能ブロック１６２内の回転処理部１６２ａ（図５参照）によって画像処理が実施された後の出力画像データの第３のブロックのＤＭＡ書き込みを行う。ここで、出力側ディスクリプタ情報ＯＤ３のフォーマット情報の最下位ビット（ビット０）が「０」（ＣＰＵ割り込みなし）であるので、出力側ＤＭＡＣ１６３は、出力画像データの第３のブロックのＤＭＡ書き込みが完了しても、割り込み信号をデバイスドライバに出力しないが、出力画像データのＤＭＡ書き込みが完了したことをＡＳＩＣ１６の画像処理機能ブロック１６２内の回転処理部１６２ａには通知する（ステップＳ１２）。
【００５５】
そして、ＡＳＩＣ１６の画像処理機能ブロック１６２内の回転処理部１６２ａは、画像処理が完了したことを表す割り込み信号をデバイスドライバに出力し（ステップＳ１３）、デバイスドライバは、画像処理（ここでは、９０度回転処理）が完了したことをアプリケーションに通知する（ステップＳ１４）。
【００５６】
以上説明したように、アプリケーションは、入力側ディスクリプタ情報ＩＤ１〜ＩＤ３、および出力側ディスクリプタ情報ＯＤ１〜ＯＤ３のテンポラリ領域に結果通知の要否を設定してデバイスドライバを呼び出すことで、所望のタイミング（本例では、第１のブロックのＤＭＡ読み出しが完了したとき、および第２のブロックのＤＭＡ書き込みが完了したとき）で種々の処理（例えば、次に実施する画像処理の準備のための処理等）を行うことを実現することができる。
【００５７】
ここで、比較例として、アプリケーションがテンポラリ領域を結果通知の要否に利用せずに所望のタイミングで種々の処理を行うことを実現する場合の動作について説明する。
【００５８】
図８は、アプリケーションがテンポラリ領域を結果通知の要否に利用せずに所望のタイミングで種々の処理を行うことを実現する場合における、アプリケーション、デバイスドライバ、入力側ＤＭＡＣ１６１、ＡＳＩＣ１６の画像処理機能ブロック１６２内の回転処理部１６２ａ、および出力側ＤＭＡＣ１６３のシーケンス図である。
【００５９】
まず、アプリケーションは、結果通知を所望するディスクリプタ情報が何番目であるかを表す１つまたは複数の値（１つまたは複数のカウント値）をデバイスドライバに渡して、結果通知要求を行う（ステップＳ３０）。ここでは、アプリケーションは、入力側の１番目のディスクリプタ情報ＩＤ１と出力側の２番目のディスクリプタ情報ＯＤ２を表すカウント値をデバイスドライバに渡すものとする。
【００６０】
図９は、アプリケーションから結果通知要求を受けた場合におけるデバイスドライバの処理を示すフローチャートである。デバイスドライバは、アプリケーションから結果通知要求を受けると、結果通知をするディスクリプタ情報が何番目であるかを表す値（カウント値）を保持し（ステップＳ５１）、処理されたディスクリプタ情報が何番目であるかを計数するためのディスクリプタカウンタを初期化する（ステップＳ５２）。
【００６１】
再び図８を参照すると、アプリケーションは、デバイスドライバに画像処理（ここでは、９０度回転処理）要求を行う（ステップＳ３１）。デバイスドライバは、画像処理（ここでは、９０度回転処理）要求をアプリケーションから受けると、アプリケーションから要求された画像処理（ここでは、９０度回転処理）を行うように、ＡＳＩＣ１６の画像処理機能ブロック１６２内の画像処理部（ここでは、回転処理部１６２ａ）を起動する（ステップＳ３２）。画像処理機能ブロック１６２内の回転処理部１６２ａは、デバイスドライバから起動されると、入力側ＤＭＡＣ１６１を起動する（ステップＳ３３）。また、画像処理機能ブロック１６２内の回転処理部１６２ａは、出力側ＤＭＡＣ１６３を起動する（ステップＳ３４）。
【００６２】
入力側ＤＭＡＣ１６１は、入力側ディスクリプタ情報ＩＤ１（図５参照）を参照して、入力画像データの第１のブロックのＤＭＡ読み出しを行う。このようにして入力側ＤＭＡＣ１６１によってＤＭＡ読み出しされた入力画像データの第１のブロックには、画像処理機能ブロック１６２内の回転処理部１６２ａ（図５参照）によって画像処理が実施される。ここで、入力側ディスクリプタ情報ＩＤ１のフォーマット情報の最下位ビット（ビット０）は、「１」（ＣＰＵ割り込みあり）であるので、入力側ＤＭＡＣ１６１は、入力画像データの第１のブロックのＤＭＡ読み出しが完了すると、割り込み信号をデバイスドライバに出力する（ステップＳ３５）。
【００６３】
図１０は、ＡＳＩＣ１６から割り込み信号が入力された場合におけるデバイスドライバの処理（割り込みハンドラ）を示すフローチャートである。デバイスドライバは、ＡＳＩＣ１６から割り込み信号が入力されると、ステップＳ５１（図９参照）において保持した値とディスクリプタカウンタの値が同じであるか否かを判定する（ステップＳ６１）。
【００６４】
デバイスドライバは、ステップＳ５１において保持した値とディスクリプタカウンタの値が同じであると判定した場合（ステップＳ６１：Ｙｅｓ）、アプリケーションに結果を通知し（ステップＳ６２）、ディスクリプタカウンタに１を加算する（ステップＳ６３）。
【００６５】
また、デバイスドライバは、ステップＳ５１において保持した値とディスクリプタカウンタの値が同じではないと判定した場合（ステップＳ６１：Ｎｏ）、アプリケーションに結果を通知せずに、ディスクリプタカウンタに１を加算する（ステップＳ６３）。
【００６６】
ここでは、アプリケーションが入力側の１番目のディスクリプタ情報ＩＤ１の結果通知を要求しており、ステップＳ５１において保持したカウント値とディスクリプタカウンタの値が同じになるので（ステップＳ６１：Ｙｅｓ）、デバイスドライバは、アプリケーションに結果（ここでは、第１のブロックのＤＭＡ読み出しが完了したこと）を通知し（ステップＳ６２（図８のステップＳ３６に対応））、ディスクリプタカウンタに１を加算する（ステップＳ６３）。デバイスドライバから通知を受けたアプリケーションは、種々の処理（例えば、次に実施する画像処理の準備のための処理等）を行うことができる。
【００６７】
再び図８を参照すると、出力側ＤＭＡＣ１６３は、出力側ディスクリプタ情報ＯＤ１（図５参照）を参照して、画像処理機能ブロック１６２内の回転処理部１６２ａ（図５参照）によって画像処理が実施された後の出力画像データの第１のブロックのＤＭＡ書き込みを行う。ここで、出力側ディスクリプタ情報ＯＤ１のフォーマット情報の最下位ビット（ビット０）は、「１」（ＣＰＵ割り込みあり）であるので、出力側ＤＭＡＣ１６３は、出力画像データの第１のブロックのＤＭＡ書き込みが完了すると、割り込み信号をデバイスドライバに出力する（ステップＳ３７）。
【００６８】
再び図１０を参照すると、デバイスドライバは、ステップＳ５１（図９参照）において保持した値とディスクリプタカウンタの値が同じであるか否かを判定する（ステップＳ６１）。
【００６９】
デバイスドライバは、ステップＳ５１において保持した値とディスクリプタカウンタの値が同じであると判定した場合（ステップＳ６１：Ｙｅｓ）、アプリケーションに結果を通知し（ステップＳ６２）、ディスクリプタカウンタに１を加算する（ステップＳ６３）。
【００７０】
また、デバイスドライバは、ステップＳ５１において保持した値とディスクリプタカウンタの値が同じではないと判定した場合（ステップＳ６１：Ｎｏ）、アプリケーションに結果を通知せずに、ディスクリプタカウンタに１を加算する（ステップＳ６３）。
【００７１】
ここでは、アプリケーションが出力側１番目のディスクリプタ情報の結果通知を要求しておらず、ステップＳ５１において保持した値とディスクリプタカウンタの値が同じにはならないので（ステップＳ６１：Ｎｏ）、デバイスドライバは、アプリケーションに結果（ここでは、第１のブロックのＤＭＡ書き込みが完了したこと）を通知せず、ディスクリプタカウンタに１を加算する（ステップＳ６３）。
【００７２】
再び図８を参照すると、入力側ＤＭＡＣ１６１は、入力側ディスクリプタ情報ＩＤ２（図５参照）を参照して、入力画像データの第２のブロックのＤＭＡ読み出しを行う。このようにして入力側ＤＭＡＣ１６１によってＤＭＡ読み出しされた入力画像データの第２のブロックには、画像処理機能ブロック１６２内の回転処理部１６２ａ（図５参照）によって画像処理が実施される。ここで、入力側ディスクリプタ情報ＩＤ２のフォーマット情報の最下位ビット（ビット０）は、「１」（ＣＰＵ割り込みあり）であるので、入力側ＤＭＡＣ１６１は、入力画像データの第２のブロックのＤＭＡ読み出しが完了すると、割り込み信号をデバイスドライバに出力する（ステップＳ３８）。
【００７３】
再び図１０を参照すると、デバイスドライバは、ステップＳ５１（図９参照）において保持した値とディスクリプタカウンタの値が同じであるか否かを判定する（ステップＳ６１）。
【００７４】
デバイスドライバは、ステップＳ５１において保持した値とディスクリプタカウンタの値が同じであると判定した場合（ステップＳ６１：Ｙｅｓ）、アプリケーションに結果を通知し（ステップＳ６２）、ディスクリプタカウンタに１を加算する（ステップＳ６３）。
【００７５】
また、デバイスドライバは、ステップＳ５１において保持した値とディスクリプタカウンタの値が同じではないと判定した場合（ステップＳ６１：Ｎｏ）、アプリケーションに結果を通知せずに、ディスクリプタカウンタに１を加算する（ステップＳ６３）。
【００７６】
ここでは、アプリケーションが入力側２番目のディスクリプタ情報の結果通知を要求しておらず、ステップＳ５１において保持した値とディスクリプタカウンタの値が同じにはならないので（ステップＳ６１：Ｎｏ）、デバイスドライバは、アプリケーションに結果（ここでは、第２のブロックのＤＭＡ書き込みが完了したこと）を通知せず（ステップＳ６１：Ｎｏ）、ディスクリプタカウンタに１を加算する（ステップＳ６３）。
【００７７】
再び図８を参照すると、出力側ＤＭＡＣ１６３は、出力側ディスクリプタ情報ＯＤ２（図５参照）を参照して、画像処理機能ブロック１６２内の回転処理部１６２ａ（図５参照）によって画像処理が実施された後の出力画像データの第２のブロックのＤＭＡ書き込みを行う。ここで、出力側ディスクリプタ情報ＯＤ２のフォーマット情報の最下位ビット（ビット０）は、「１」（ＣＰＵ割り込みあり）であるので、出力側ＤＭＡＣ１６３は、出力画像データの第２のブロックのＤＭＡ書き込みが完了すると、割り込み信号をデバイスドライバに出力する（ステップＳ３９）。
【００７８】
再び図１０を参照すると、デバイスドライバは、ステップＳ５１（図９参照）において保持した値とディスクリプタカウンタの値が同じであるか否かを判定する（ステップＳ６１）。
【００７９】
デバイスドライバは、ステップＳ５１において保持した値とディスクリプタカウンタの値が同じであると判定した場合（ステップＳ６１：Ｙｅｓ）、アプリケーションに結果を通知し（ステップＳ６２）、ディスクリプタカウンタに１を加算する（ステップＳ６３）。
【００８０】
また、デバイスドライバは、ステップＳ５１において保持した値とディスクリプタカウンタの値が同じではないと判定した場合（ステップＳ６１：Ｎｏ）、アプリケーションに結果を通知せずに、ディスクリプタカウンタに１を加算する（ステップＳ６３）。
【００８１】
ここでは、アプリケーションが出力側２番目のディスクリプタ情報の結果通知を要求しており、ステップＳ５１において保持した値とディスクリプタカウンタの値が同じになるので（ステップＳ６１：Ｙｅｓ）、デバイスドライバは、アプリケーションに結果（ここでは、第２のブロックのＤＭＡ書き込みが完了したこと）を通知し（ステップＳ６２（図８のステップＳ４０に対応））、ディスクリプタカウンタに１を加算する（ステップＳ６３）。デバイスドライバから通知を受けたアプリケーションは、種々の処理（例えば、次に実施する画像処理の準備のための処理等）を行うことができる。
【００８２】
再び図８を参照すると、入力側ＤＭＡＣ１６１は、入力側ディスクリプタ情報ＩＤ３（図５参照）を参照して、入力画像データの第３のブロックのＤＭＡ読み出しを行う。このようにして入力側ＤＭＡＣ１６１によってＤＭＡ読み出しされた入力画像データの第３のブロックには、画像処理機能ブロック１６２内の回転処理部１６２ａ（図５参照）によって画像処理が実施される。ここで、入力側ディスクリプタ情報ＩＤ３のフォーマット情報の最下位ビット（ビット０）は「０」（ＣＰＵ割り込みなし）であるので、入力側ＤＭＡＣ１６１は、入力画像データの第３のブロックのＤＭＡ読み出しが完了しても、割り込み信号をデバイスドライバに出力しないが、入力画像データのＤＭＡ読み出しが完了したことを画像処理機能ブロック１６２内の回転処理部１６２ａには通知する（ステップＳ４１）。
【００８３】
また、出力側ＤＭＡＣ１６３は、出力側ディスクリプタ情報ＯＤ３（図５参照）を参照して、画像処理機能ブロック１６２内の回転処理部１６２ａ（図５参照）によって画像処理が実施された後の出力画像データの第３のブロックのＤＭＡ書き込みを行う。ここで、出力側ディスクリプタ情報ＯＤ３のフォーマット情報の最下位ビット（ビット０）は「０」（ＣＰＵ割り込みなし）であるので、出力側ＤＭＡＣ１６３は、出力画像データの第３のブロックのＤＭＡ書き込みが完了しても、割り込み信号をデバイスドライバに出力しないが、出力画像データのＤＭＡ書き込みが完了したことを画像処理機能ブロック１６２内の回転処理部１６２ａには通知する（ステップＳ４２）。
【００８４】
そして、ＡＳＩＣ１６は、画像処理（ここでは、９０度回転処理）が完了したことを表す割り込み信号をデバイスドライバに出力し（ステップＳ４３）、デバイスドライバは、画像処理（ここでは、９０度回転処理）が完了したことをアプリケーションに通知する（ステップＳ４４）。
【００８５】
以上説明したように、アプリケーションは、画像処理（ここでは、９０度回転処理）要求を行う前に結果通知要求を行っておくことで、所望のタイミング（本例では、第１のブロックのＤＭＡ読み出しが完了したとき、および第２のブロックのＤＭＡ書き込みが完了したとき）で種々の処理（例えば、次に実施する画像処理の準備のための処理等）を行うことを実現することができる。
【００８６】
ここで、テンポラリ領域を結果通知の要否に利用した場合のデバイスドライバの割り込み処理（図７参照）とテンポラリ領域を結果通知の要否に利用しない場合のデバイスドライバの割り込み処理（図１０参照）とを比較すると、テンポラリ領域を結果通知の要否に利用した場合のデバイスドライバの割り込み処理の方がテンポラリ領域を結果通知の要否に利用しない場合のデバイスドライバの割り込み処理よりも計算量（処理量）が少ない。すなわち、テンポラリ領域を結果通知の要否に利用することで、デバイスドライバの割り込み処理を高速化することが可能である。
【００８７】
次に、本発明の実施の形態の第２の動作について説明する。図１１は、入力画像データを時計回りに９０度回転させる回転処理をＡＳＩＣ１６に行わせる場合における、複数の入力側ディスクリプタ情報、入力画像データ、および複数の出力側ディスクリプタ情報の例を示す図である。入力画像データは複数（ここでは、３つ）のブロックに分割されており、各ブロックが格納されている領域の先頭アドレスは、複数（ここでは、３つ）の入力側ディスクリプタ情報ＩＤ１１〜ＩＤ１３内に、データ転送先アドレスとして格納されている。同様に、出力画像データも複数（ここでは、３つ）のブロックに分割される。出力画像データの複数（ここでは、３つ）のブロックが格納される領域の先頭アドレスは、複数（ここでは、３つ）の出力側ディスクリプタ情報ＯＤ１１〜ＯＤ１３内に、データ転送先アドレスとして格納されている。なお、図１１においては、便宜のため、テンポラリ領域（フォーマット情報の上位１６ビット（ビット３１〜ビット１６）、図３参照）を、ディスクリプタ情報の最下段に独立させて示している。
【００８８】
本実施の形態においては、各入力側および出力側ディスクリプタ情報のフォーマット情報のうち、使われずに空いている最下位ビット（ビット０）を、ＡＳＩＣ１６からＣＰＵ１１への割り込み信号のマスクとして利用する。図１１に示す例では、入力側ディスクリプタ情報ＩＤ１１、ＩＤ１２のフォーマット情報の最下位ビット（ビット０）は、「１」（ＣＰＵ割り込みあり）に設定されており、入力側ディスクリプタ情報ＩＤ１３のフォーマット情報の最下位ビットは、「０」（ＣＰＵ割り込みなし）に設定されている。
【００８９】
また、本実施の形態においては、各入力側、および出力側ディスクリプタ情報のフォーマット情報のうち、使われずに空いている上位１６ビット（ビット３１〜１６）をテンポラリ領域として利用する。図１１に示す例では、入力側ディスクリプタ情報ＩＤ１１のテンポラリ領域は、「入力側１番目」に設定されており、入力側ディスクリプタ情報ＩＤ１２のテンポラリ領域は、「入力側２番目」に設定されており、入力側ディスクリプタ情報ＩＤ１３のテンポラリ領域は、「入力側３番目」に設定されている。
【００９０】
また、出力側ディスクリプタ情報ＯＤ１１、ＯＤ１２のフォーマット情報の最下位ビット（ビット０）は、「１」（ＣＰＵ割り込みあり）に設定されており、出力側ディスクリプタ情報ＯＤ１３のフォーマット情報の最下位ビットは、「０」（ＣＰＵ割り込みなし）に設定されている。
【００９１】
また、出力側ディスクリプタ情報ＯＤ１１のテンポラリ領域は、「出力側１番目」に設定されており、出力側ディスクリプタ情報ＯＤ１２のテンポラリ領域は、「出力側２番目」に設定されており、出力側ディスクリプタ情報ＯＤ１３のテンポラリ領域は、「出力側３番目」に設定されている。
【００９２】
図１２は、入力画像データを圧縮する圧縮処理をＡＳＩＣ１６に行わせる場合における、複数の入力側ディスクリプタ情報、入力画像データ、および複数の出力側ディスクリプタ情報の例を示す図である。入力画像データは複数（ここでは、３つ）のブロックに分割されており、各ブロックが格納されている領域の先頭アドレスは、複数（ここでは、３つ）の入力側ディスクリプタ情報ＩＤ２１〜ＩＤ２３内に、データ転送先アドレスとして格納されている。同様に、出力画像データも複数（ここでは、２つ）のブロックに分割される。出力画像データの複数（ここでは、２つ）のブロックが書き込まれる領域の先頭アドレスは、複数（ここでは、２つ）の出力側ディスクリプタ情報ＯＤ２１〜ＯＤ２２内に、データ転送先アドレスとして格納されている。なお、図１２においては、便宜のため、テンポラリ領域（フォーマット情報の上位１６ビット（ビット３１〜ビット１６）、図３参照）を、ディスクリプタ情報の最下段に独立させて示している。
【００９３】
本実施の形態においては、各入力側、および出力側ディスクリプタ情報のフォーマット情報のうち、使われずに空いている最下位ビット（ビット０）を、ＡＳＩＣ１６からＣＰＵ１１への割り込み信号のマスクとして利用する。図１２に示す例では、入力側ディスクリプタ情報ＩＤ２１〜ＩＤ２３のフォーマット情報の最下位ビット（ビット０）は、「０」（ＣＰＵ割り込みなし）に設定されている。
【００９４】
また、本実施の形態においては、各入力側、および出力側ディスクリプタ情報のフォーマット情報のうち、使われずに空いている上位１６ビット（ビット３１〜１６）をテンポラリ領域として利用する。図１２に示す例では、入力側ディスクリプタ情報ＩＤ２１のテンポラリ領域は、「入力側１番目」に設定されており、入力側ディスクリプタ情報ＩＤ２２のテンポラリ領域は、「入力側２番目」に設定されており、入力側ディスクリプタ情報ＩＤ２３のテンポラリ領域は、「入力側３番目」に設定されている。
【００９５】
また、出力側ディスクリプタ情報ＯＤ２１、ＯＤ２２のフォーマット情報の最下位ビット（ビット０）は、「０」（ＣＰＵ割り込みなし）に設定されている。
【００９６】
また、出力側ディスクリプタ情報ＯＤ２１のテンポラリ領域は、「出力側１番目」に設定されており、出力側ディスクリプタ情報ＯＤ２２のテンポラリ領域は、「出力側２番目」に設定されている。
【００９７】
ここで、図１１に示す出力側ディスクリプタ情報ＯＤ１１〜ＯＤ１３のデータ転送先アドレス、およびデータ転送ライン数と、図１２に示す入力側ディスクリプタ情報ＩＤ２１〜ＩＤ２３のデータ転送先アドレス、およびデータ転送ライン数と、を同じ値にそれぞれ設定しておけば、画像処理機能ブロック１６２内の回転処理部１６２ａによって回転処理が実施された後の出力画像データをそのまま画像処理機能ブロック１６２内の圧縮処理部１６２ｂの入力画像データとすることができる。
【００９８】
図１３は、アプリケーションが図１１、および図１２に示す入力側ディスクリプタ情報、入力画像データ、および出力側ディスクリプタ情報をＲＡＭ１２ａ内に用意して２つの画像処理（ここでは、１つ目の画像処理が９０度回転処理であり、２つ目の画像処理が圧縮処理である。）を継続、連続して実施することを要求する場合における、アプリケーション、デバイスドライバ、入力側ＤＭＡＣ１６１、ＡＳＩＣ１６の画像処理機能ブロック１６２内の回転処理部１６２ａ（図１１参照）、ＡＳＩＣ１６の画像処理機能ブロック１６２内の圧縮処理部１６２ｂ（図１２参照）、および出力側ＤＭＡＣ１６３のシーケンス図である。
【００９９】
アプリケーションは、２つの画像処理（ここでは、１つ目の画像処理が９０度回転処理であり、２つ目の画像処理が圧縮処理である。）のための入力側ディスクリプタ情報、入力画像データ、および出力側ディスクリプタ情報（図１１、および図１２参照）をＲＡＭ１２ａ内に用意した後、２つ目の画像処理部を起動するタイミング対象のディスクリプタ情報をデバイスドライバに指定して、２つ目の画像処理部の起動タイミング要求を行う（ステップＳ７０）。図１４は、２つ目の画像処理部の起動タイミング要求をする場合におけるアプリケーションの処理を示すフローチャートである。図１４に示すように、アプリケーションは、２つ目の画像処理部を起動するタイミング対象のディスクリプタ情報をデバイスドライバに指定する（ステップＳ９１）。ここでは、アプリケーションは、「出力側２番目」を指定するものとする。デバイスドライバは、アプリケーションから指定された値（「出力側２番目」）を保持する。
【０１００】
再び図１３を参照すると、アプリケーションは、デバイスドライバに１つ目の画像処理要求を行う（ステップＳ７１）。デバイスドライバは、１つ目の画像処理要求をアプリケーションから受けると、アプリケーションから要求された画像処理（ここでは、９０度回転処理）を行うように、ＡＳＩＣ１６の画像処理機能ブロック１６２内の回転処理部１６２ａを起動する（ステップＳ７２）。画像処理機能ブロック１６２内の回転処理部１６２ａは、デバイスドライバから起動されると、入力側ＤＭＡＣ１６１を起動する（ステップＳ７３）。また、回転処理部１６２ａは、出力側ＤＭＡＣ１６３を起動する（ステップＳ７４）。
【０１０１】
入力側ＤＭＡＣ１６１は、入力側ディスクリプタ情報ＩＤ１１（図１１参照）を参照して、入力画像データの第１のブロックのＤＭＡ読み出しを行う。このようにして入力側ＤＭＡＣ１６１によってＤＭＡ読み出しされた入力画像データの第１のブロックには、画像処理機能ブロック１６２内の回転処理部１６２ａ（図１１参照）によって画像処理（ここでは、９０度回転処理）が実施される。ここで、入力側ディスクリプタ情報ＩＤ１１のフォーマット情報の最下位ビット（ビット０）は、「１」（ＣＰＵ割り込みあり）であるので、入力側ＤＭＡＣ１６１は、入力画像データの第１のブロックのＤＭＡ読み出しが完了すると、割り込み信号をデバイスドライバに出力する（ステップＳ７５）。
【０１０２】
図１５は、ＡＳＩＣ１６から割り込み信号が入力された場合におけるデバイスドライバの処理（割り込みハンドラ）を示すフローチャートである。ＡＳＩＣ１６から割り込み信号が入力されると、デバイスドライバは、入力側ディスクリプタ情報ＩＤ１１のテンポラリ領域の値とアプリケーションが指定した値（ここでは、「出力側２番目」）とが同じであるか否かを判定する（ステップＳ１０１）。
【０１０３】
デバイスドライバは、入力側ディスクリプタ情報ＩＤ１１のテンポラリ領域の値とアプリケーションが指定した値（ここでは、「出力側２番目」）とが同じであると判定した場合（ステップＳ１０１：Ｙｅｓ）、２つ目の画像処理を実施する画像処理部（ここでは、画像処理機能ブロック１６２内の圧縮処理部１６２ｂ（図１２参照））を起動する（ステップＳ１０２）。
【０１０４】
また、デバイスドライバは、入力側ディスクリプタ情報ＩＤ１１のテンポラリ領域の値とアプリケーションが指定した値（ここでは、「出力側２番目」）とが同じではないと判定した場合（ステップＳ１０１：Ｎｏ）、処理を終了する。
【０１０５】
ここでは、入力側ディスクリプタ情報ＩＤ１１のテンポラリ領域の値が「入力側１番目」であり、アプリケーションが指定した値（ここでは、「出力側２番目」）と同じではないので（ステップＳ１０１：Ｎｏ）、デバイスドライバは、２つ目の画像処理部（ここでは、画像処理機能ブロック１６２内の圧縮処理部１６２ｂ（図１２参照））を起動せずに、処理を終了する。
【０１０６】
再び図１３を参照すると、出力側ＤＭＡＣ１６３は、出力側ディスクリプタ情報ＯＤ１１（図１１参照）を参照して、画像処理機能ブロック１６２内の回転処理部１６２ａ（図１１参照）によって画像処理が実施された後の出力画像データの第１のブロックのＤＭＡ書き込みを行う。ここで、出力側ディスクリプタ情報ＯＤ１１のフォーマット情報の最下位ビット（ビット０）は、「１」（ＣＰＵ割り込みあり）であるので、出力側ＤＭＡＣ１６３は、出力画像データの第１のブロックのＤＭＡ書き込みが完了すると、割り込み信号をデバイスドライバに出力する（ステップＳ７６）。
【０１０７】
再び図１５を参照すると、デバイスドライバは、出力側ディスクリプタ情報ＯＤ１１のテンポラリ領域の値とアプリケーションが指定した値（ここでは、「出力側２番目」）とが同じであるか否かを判定する（ステップＳ１０１）。
【０１０８】
デバイスドライバは、出力側ディスクリプタ情報ＯＤ１１のテンポラリ領域の値とアプリケーションが指定した値（ここでは、「出力側２番目」）とが同じであると判定した場合（ステップＳ１０１：Ｙｅｓ）、２つ目の画像処理を実施する画像処理部（ここでは、画像処理機能ブロック１６２内の圧縮処理部１６２ｂ（図１２参照））を起動する（ステップＳ１０２）。
【０１０９】
また、デバイスドライバは、出力側ディスクリプタ情報ＯＤ１１のテンポラリ領域の値とアプリケーションが指定した値（ここでは、「出力側２番目」）とが同じではないと判定した場合（ステップＳ１０１：Ｎｏ）、処理を終了する。
【０１１０】
ここでは、出力側ディスクリプタ情報ＯＤ１１のテンポラリ領域の値が「出力側１番目」であり、アプリケーションが指定した値（ここでは、「出力側２番目」）と同じではないので（ステップＳ１０１：Ｎｏ）、デバイスドライバは、２つ目の画像処理部（ここでは、画像処理機能ブロック１６２内の圧縮処理部１６２ｂ（図１２参照））を起動せずに、処理を終了する。
【０１１１】
再び図１３を参照すると、入力側ＤＭＡＣ１６１は、入力側ディスクリプタ情報ＩＤ１２（図１１参照）を参照して、入力画像データの第２のブロックのＤＭＡ読み出しを行う。このようにして入力側ＤＭＡＣ１６１によってＤＭＡ読み出しされた入力画像データの第２のブロックには、画像処理機能ブロック１６２内の回転処理部１６２ａ（図１１参照）によって画像処理が実施される。ここで、入力側ディスクリプタ情報ＩＤ１２のフォーマット情報の最下位ビット（ビット０）は、「１」（ＣＰＵ割り込みあり）であるので、入力側ＤＭＡＣ１６１は、入力画像データの第２のブロックのＤＭＡ読み出しが完了すると、割り込み信号をデバイスドライバに出力する（ステップＳ７７）。
【０１１２】
再び図１５を参照すると、デバイスドライバは、入力側ディスクリプタ情報ＯＤ１２のテンポラリ領域の値とアプリケーションが指定した値（ここでは、「出力側２番目」）とが同じであるか否かを判定する（ステップＳ１０１）。
【０１１３】
デバイスドライバは、入力側ディスクリプタ情報ＩＤ１２のテンポラリ領域の値とアプリケーションが指定した値（ここでは、「出力側２番目」）とが同じであると判定した場合（ステップＳ１０１：Ｙｅｓ）、２つ目の画像処理を実施する画像処理部（ここでは、画像処理機能ブロック１６２内の圧縮処理部１６２ｂ（図１２参照））を起動する（ステップＳ１０２）。
【０１１４】
また、デバイスドライバは、入力側ディスクリプタ情報ＩＤ１２のテンポラリ領域の値とアプリケーションが指定した値（ここでは、「出力側２番目」）とが同じではないと判定した場合（ステップＳ１０１：Ｎｏ）、処理を終了する。
【０１１５】
ここでは、入力側ディスクリプタ情報ＩＤ１２のテンポラリ領域の値が「入力側２番目」であり、アプリケーションが指定した値（ここでは、「出力側２番目」）と同じではないので（ステップＳ１０１：Ｎｏ）、デバイスドライバは、２つ目の画像処理部（ここでは、画像処理機能ブロック１６２内の圧縮処理部１６２ｂ（図１２参照））を起動せずに、処理を終了する。
【０１１６】
再び図１３を参照すると、出力側ＤＭＡＣ１６３は、出力側ディスクリプタ情報ＯＤ１２（図１１参照）を参照して、画像処理機能ブロック１６２内の回転処理部１６２ａ（図５参照）によって画像処理が実施された後の出力画像データの第２のブロックのＤＭＡ書き込みを行う。ここで、出力側ディスクリプタ情報ＯＤ１２のフォーマット情報の最下位ビット（ビット０）は、「１」（ＣＰＵ割り込みあり）であるので、出力側ＤＭＡＣ１６３は、出力画像データの第２のブロックのＤＭＡ書き込みが完了すると、割り込み信号をデバイスドライバに出力する（ステップＳ７８）。
【０１１７】
再び図１５を参照すると、デバイスドライバは、出力側ディスクリプタ情報ＯＤ１２のテンポラリ領域の値とアプリケーションが指定した値（ここでは、「出力側２番目」）とが同じであるか否かを判定する（ステップＳ１０１）。
【０１１８】
デバイスドライバは、出力側ディスクリプタ情報ＯＤ１２のテンポラリ領域の値とアプリケーションが指定した値（ここでは、「出力側２番目」）とが同じであると判定した場合（ステップＳ１０１：Ｙｅｓ）、２つ目の画像処理を実施する画像処理部（ここでは、画像処理機能ブロック１６２内の圧縮処理部１６２ｂ（図１２参照））を起動する（ステップＳ１０２）。
【０１１９】
また、デバイスドライバは、出力側ディスクリプタ情報ＯＤ１２のテンポラリ領域の値とアプリケーションが指定した値（ここでは、「出力側２番目」）とが同じではないと判定した場合（ステップＳ１０１：Ｎｏ）、処理を終了する。
【０１２０】
ここでは、出力側ディスクリプタ情報ＯＤ１２のテンポラリ領域の値が「出力側２番目」であり、アプリケーションが指定した値（ここでは、「出力側２番目」）と同じであるので（ステップＳ１０１：Ｙｅｓ）、デバイスドライバは、２つ目の画像処理部（ここでは、画像処理機能ブロック１６２内の圧縮処理部１６２ｂ（図１２参照））を起動する（ステップＳ１０２（図１３のステップＳ８１に対応））。
【０１２１】
再び図１３を参照すると、入力側ＤＭＡＣ１６１は、入力側ディスクリプタ情報ＩＤ１３（図１１参照）を参照して、入力画像データの第３のブロックのＤＭＡ読み出しを行う。このようにして入力側ＤＭＡＣ１６１によってＤＭＡ読み出しされた入力画像データの第３のブロックには、画像処理機能ブロック１６２内の回転処理部１６２ａ（図１１参照）によって画像処理が実施される。ここで、入力側ディスクリプタ情報ＩＤ１３のフォーマット情報の最下位ビット（ビット０）は「０」（ＣＰＵ割り込みなし）であるので、入力側ＤＭＡＣ１６１は、入力画像データの第３のブロックのＤＭＡ読み出しが完了しても、割り込み信号をデバイスドライバに出力しないが、入力画像データのＤＭＡ読み出しが完了したことを画像処理機能ブロック１６２内の回転処理部１６２ａには通知する（ステップＳ７９）。
【０１２２】
また、出力側ＤＭＡＣ１６３は、出力側ディスクリプタ情報ＯＤ１３（図１１参照）を参照して、画像処理機能ブロック１６２内の回転処理部１６２ａ（図１１参照）によって画像処理が実施された後の出力画像データの第３のブロックのＤＭＡ書き込みを行う。ここで、出力側ディスクリプタ情報ＯＤ１３のフォーマット情報の最下位ビット（ビット０）は「０」（ＣＰＵ割り込みなし）であるので、出力側ＤＭＡＣ１６３は、出力画像データの第３のブロックのＤＭＡ書き込みが完了しても、割り込み信号をデバイスドライバに出力しないが、出力画像データのＤＭＡ書き込みが完了したことを画像処理機能ブロック１６２内の回転処理部１６２ａには通知する（ステップＳ８０）。
【０１２３】
そして、ＡＳＩＣ１６の画像処理機能ブロック１６２内の回転処理部１６２ａは、画像処理が完了したことを表す割り込み信号をデバイスドライバに出力し（ステップＳ８２）、デバイスドライバは、画像処理が完了したことをアプリケーションに通知する（ステップＳ８５）。
【０１２４】
一方、デバイスドライバによって起動された２つ目の画像処理部であるＡＳＩＣ１６の画像処理機能ブロック１６２内の圧縮処理部１６２ｂ（図１２参照）は、入力側ＤＭＡＣ１６１を起動する（ステップＳ８３）。また、ＡＳＩＣ１６の画像処理機能ブロック１６２内の圧縮処理部１６２ｂ（図１２参照）は、出力側ＤＭＡＣ１６３を起動する（ステップＳ８４）。
【０１２５】
入力側ＤＭＡＣ１６１は、入力側ディスクリプタ情報ＩＤ２１（図１２参照）を参照して、入力画像データ（ここでは、ＡＳＩＣ１６の画像処理機能ブロック１６２内の回転処理部１６２ａによって回転処理が実施された後の画像データ）の第１のブロックのＤＭＡ読み出しを行う。このようにして入力側ＤＭＡＣ１６１によってＤＭＡ読み出しされた入力画像データの第１のブロックには、画像処理機能ブロック１６２内の圧縮処理部１６２ｂ（図１２参照）によって画像処理（ここでは、圧縮処理）が実施される。ここで、入力側ディスクリプタ情報ＩＤ２１のフォーマット情報の最下位ビット（ビット０）は、「０」（ＣＰＵ割り込みなし）であるので、入力側ＤＭＡＣ１６１は、入力画像データの第１のブロックのＤＭＡ読み出しが完了しても、割り込み信号をデバイスドライバに出力しない。
【０１２６】
入力側ＤＭＡＣ１６１は、入力側ディスクリプタ情報ＩＤ２２（図１２参照）を参照して、入力画像データ（ＡＳＩＣ１６の画像処理機能ブロック１６２内の回転処理部１６２ａによって回転処理が実施された後の画像データ）の第２のブロックのＤＭＡ読み出しを行う。このようにして入力側ＤＭＡＣ１６１によってＤＭＡ読み出しされた入力画像データの第２のブロックには、画像処理機能ブロック１６２内の圧縮処理部１６２ｂ（図１２参照）によって画像処理（ここでは、圧縮処理）が実施される。ここで、入力側ディスクリプタ情報ＩＤ２２のフォーマット情報の最下位ビット（ビット０）は、「０」（ＣＰＵ割り込みなし）であるので、入力側ＤＭＡＣ１６１は、入力画像データの第２のブロックのＤＭＡ読み出しが完了しても、割り込み信号をデバイスドライバに出力しない。
【０１２７】
入力側ＤＭＡＣ１６１は、入力側ディスクリプタ情報ＩＤ２３（図１２参照）を参照して、入力画像データ（ＡＳＩＣ１６の画像処理機能ブロック１６２内の回転処理部１６２ａによって回転処理が実施された後の画像データ）の第３のブロックのＤＭＡ読み出しを行う。このようにして入力側ＤＭＡＣ１６１によってＤＭＡ読み出しされた入力画像データの第３のブロックには、画像処理機能ブロック１６２内の圧縮処理部１６２ｂ（図１２参照）によって画像処理（ここでは、圧縮処理）が実施される。ここで、入力側ディスクリプタ情報ＩＤ２３のフォーマット情報の最下位ビット（ビット０）は、「０」（ＣＰＵ割り込みなし）であるので、入力側ＤＭＡＣ１６１は、入力画像データの第３のブロックのＤＭＡ読み出しが完了しても、割り込み信号をデバイスドライバに出力しないが、入力画像データ（画像処理対象画像データ）の転送が完了したことを画像処理機能ブロック１６２内の圧縮処理部１６２ｂには通知する（ステップＳ８５）。
【０１２８】
出力側ＤＭＡＣ１６３は、出力側ディスクリプタ情報ＯＤ２１（図１２参照）を参照して、出力画像データ（ＡＳＩＣ１６の画像処理機能ブロック１６２内の圧縮処理部１６２ｂによって圧縮処理が実施された後の画像データ）の第１のブロックのＤＭＡ書き込みを行う。ここで、出力側ディスクリプタ情報ＯＤ２１のフォーマット情報の最下位ビット（ビット０）は、「０」（ＣＰＵ割り込みなし）であるので、出力側ＤＭＡＣ１６３は、出力画像データの第１のブロックのＤＭＡ書き込みが完了しても、割り込み信号をデバイスドライバに出力しない。
【０１２９】
出力側ＤＭＡＣ１６３は、出力側ディスクリプタ情報ＯＤ２２（図１２参照）を参照して、出力画像データ（ＡＳＩＣ１６の画像処理機能ブロック１６２内の圧縮処理部１６２ｂによって圧縮処理が実施された後の画像データ）の第２のブロックのＤＭＡ書き込みを行う。ここで、出力側ディスクリプタ情報ＯＤ２２のフォーマット情報の最下位ビット（ビット０）は、「０」（ＣＰＵ割り込みなし）であるので、出力側ＤＭＡＣ１６３は、出力画像データの第２のブロックのＤＭＡ書き込みが完了しても、割り込み信号をデバイスドライバに出力しないが、出力画像データ（画像処理結果画像データ）の転送が完了したことを画像処理機能ブロック１６２内の圧縮処理部１６２ｂには通知する（ステップＳ８６）。
【０１３０】
そして、ＡＳＩＣ１６の画像処理機能ブロック１６２内の圧縮処理部１６２ｂは、画像処理が完了したことを表す割り込み信号をデバイスドライバに出力し（ステップＳ８７）、デバイスドライバは、画像処理が完了したことをアプリケーションに通知する（ステップＳ８８）。
【０１３１】
以上説明したように、アプリケーションが、２つの画像処理を継続、連続して実施するための入力側ディスクリプタ情報ＩＤ１１〜ＩＤ１３、ＩＤ２１〜ＩＤ２３、および出力側ディスクリプタ情報ＯＤ１１〜ＯＤ１３、ＯＤ２１〜ＯＤ２２のテンポラリ領域にそれぞれ値を設定し、２つ目の画像処理部の起動タイミング要求（図１３のステップＳ７０、および図１４参照）をデバイスドライバに行うことで、２つの画像処理（ここでは、回転処理と圧縮処理）を継続、連続して行うことを実現することができる。また、２つ目の画像処理部の起動の際に、デバイスドライバとアプリケーションとの間のやり取りが不要であるので、デバイスドライバとアプリケーションとの間のやり取り(オーバーヘッド)を削減することができる。なお、ここでは、２つの画像処理（ここでは、回転処理と圧縮処理）を継続、連続して行う場合について説明したが、３つ以上の画像処理を継続、連続して行うようにしても良い。
【０１３２】
次に、本発明の実施の形態の第３の動作について説明する。先に説明したように、複合機では、ＦＡＸアプリケーションプログラム、コピーアプリケーションプログラム、スキャナアプリケーションプログラム等の複数のアプリケーションがＣＰＵ１１（図１参照）によって実行されており、ＡＳＩＣ１６（図１参照）は、これら複数のアプリケーションから利用される。そのため、何らかの要因でＡＳＩＣ１６の動作がストール（停止）した場合に、ＡＳＩＣ１６がどのアプリケーションから利用されているときにストールしたのかを知ることが容易ではないことがある。本実施の形態では、テンポラリ領域を利用することで、ＡＳＩＣ１６の動作がストール（停止）した場合に、ＡＳＩＣ１６がどのアプリケーションから利用されているときにストールしたのかを容易に知ることが可能となる。
【０１３３】
図１６は、複合機のコピー（ＣＯＰＹ）アプリケーションが、入力画像データを時計回りに９０度回転させる回転処理をＡＳＩＣ１６に行わせる場合における、複数の入力側ディスクリプタ情報、入力画像データ、および複数の出力側ディスクリプタ情報の例を示す図である。入力画像データは複数（ここでは、３つ）のブロックに分割されており、各ブロックが格納されている領域の先頭アドレスは、複数（ここでは、３つ）の入力側ディスクリプタ情報ＩＤ３１〜ＩＤ３３内に、データ転送先アドレスとして格納されている。同様に、出力画像データも複数（ここでは、３つ）のブロックに分割される。出力画像データの複数（ここでは、３つ）のブロックが格納される領域の先頭アドレスは、複数（ここでは、３つ）の出力側ディスクリプタ情報ＯＤ３１〜ＯＤ３３内に、データ転送先アドレスとして格納されている。なお、図１６においては、便宜のため、テンポラリ領域（フォーマット情報の上位１６ビット（ビット３１〜ビット１６）、図３参照）を、ディスクリプタ情報の下２段に独立させて示している。
【０１３４】
本実施の形態においては、各入力側および出力側ディスクリプタ情報のフォーマット情報のうち、使われずに空いている最下位ビット（ビット０）を、ＡＳＩＣ１６からＣＰＵ１１への割り込み信号のマスクとして利用する。図１６に示す例では、入力側ディスクリプタ情報ＩＤ３１のフォーマット情報の最下位ビット（ビット０）は、「１」（ＣＰＵ割り込みあり）に設定されており、入力側ディスクリプタ情報ＩＤ３２、ＩＤ３３のフォーマット情報の最下位ビットは、「０」（ＣＰＵ割り込みなし）に設定されている。
【０１３５】
また、本実施の形態においては、各入力側、および出力側ディスクリプタ情報のフォーマット情報のうち、使われずに空いている上位１６ビット（ビット３１〜１６）をテンポラリ領域として利用する。図１６に示す例では、入力側ディスクリプタ情報ＩＤ３１のテンポラリ領域（ビット３１〜１６）のうちの１ビットは、「結果通知あり」（ここでは、「１」）に設定されており、他のビットは、「ＣＯＰＹ」というＡＳＣＩＩコード列（またはコピーという機能を表す情報）に設定されている。なお、「ＣＯＰＹ」というＡＳＣＩＩコード列は４バイト（３２ビット）であるので、この場合には、テンポラリ領域を１６ビットから３２ビットに拡張すれば良い。また、入力側ディスクリプタ情報ＩＤ３２のテンポラリ領域（ビット３１〜１６）のうちの１ビット（以下、「第１の領域」ともいう。）は、「結果通知なし」（ここでは、「０」）に設定されており、他のビット（以下、「第２の領域」ともいう。）は、「ＣＯＰＹ」というＡＳＣＩＩコード列に設定されている。また、入力側ディスクリプタ情報ＩＤ３３のテンポラリ領域（ビット３１〜１６）のうちの１ビット（第１の領域）は、「結果通知なし」（ここでは、「０」）に設定されており、他のビット（第２の領域）は、「ＣＯＰＹ」というＡＳＣＩＩコード列に設定されている。
【０１３６】
また、出力側ディスクリプタ情報ＯＤ３１、ＯＤ３３のフォーマット情報の最下位ビット（ビット０）は、「０」（ＣＰＵ割り込みなし）に設定されており、出力側ディスクリプタ情報ＯＤ３２のフォーマット情報の最下位ビットは、「１」（ＣＰＵ割り込みあり）に設定されている。
【０１３７】
また、出力側ディスクリプタ情報ＯＤ３１のテンポラリ領域（ビット３１〜１６）のうちの１ビット（第１の領域）は、「結果通知なし」（ここでは、「０」）に設定されており、他のビット（第２の領域）は、「ＣＯＰＹ」というＡＳＣＩＩコード列に設定されている。また、出力側ディスクリプタ情報ＯＤ３２のテンポラリ領域（ビット３１〜１６）のうちの１ビット（第１の領域）は、「結果通知あり」（ここでは、「１」）に設定されており、他のビット（第２の領域）は、「ＣＯＰＹ」というＡＳＣＩＩコード列に設定されている。また、出力側ディスクリプタ情報ＯＤ３３のテンポラリ領域（ビット３１〜１６）のうちの１ビット（第１の領域）は、「結果通知なし」（ここでは、「０」）に設定されており、他のビット（第２の領域）は、「ＣＯＰＹ」というＡＳＣＩＩコード列に設定されている。
【０１３８】
図１７は、コピー（ＣＯＰＹ）アプリケーションが図１６に示す入力側ディスクリプタ情報、入力画像データ、および出力側ディスクリプタ情報をＲＡＭ１２ａ内に用意して画像処理（ここでは、９０度回転処理）の実施を要求する場合における、コピー（ＣＯＰＹ）アプリケーション、デバイスドライバ、入力側ＤＭＡＣ１６１、ＡＳＩＣ１６の画像処理機能ブロック１６２内の画像処理部（ここでは、回転処理部１６２ａ（図５参照））、および出力側ＤＭＡＣ１６３のシーケンス図である。
【０１３９】
コピー（ＣＯＰＹ）アプリケーションは、入力側ディスクリプタ情報、入力画像データ、および出力側ディスクリプタ情報（図１６参照）をＲＡＭ１２ａ内に用意した後、結果通知を所望するディスクリプタ情報が何番目であるかを表す１つまたは複数の値（１つまたは複数のカウント値）をデバイスドライバに渡して、結果通知要求を行う（ステップＳ１１０）。なお、このときのデバイスドライバの処理は、先に説明した図９の処理と同様であるので、説明を省略する。
【０１４０】
次に、コピー（ＣＯＰＹ）アプリケーションは、アプリケーション機能の設定を行う（ステップＳ１１１）。図１８は、アプリケーション機能の設定を行う場合におけるコピー（ＣＯＰＹ）アプリケーションの処理を示すフローチャートである。コピー（ＣＯＰＹ）アプリケーションは、全ディスクリプタ情報のテンポラリ領域（ビット３１〜１６）の第２の領域にアプリケーションの機能を表すＡＳＣＩＩコード列（ここでは、「ＣＯＰＹ」というＡＳＣＩＩコード列）を設定したか否かを判定する（ステップＳ１２１）。
【０１４１】
コピー（ＣＯＰＹ）アプリケーションは、全ディスクリプタ情報のテンポラリ領域の第２の領域にアプリケーションの機能を表すＡＳＣＩＩコード列（ここでは、「ＣＯＰＹ」というＡＳＣＩＩコード列）を設定していないと判定した場合（ステップＳ１２１：Ｎｏ）、全ディスクリプタ情報のテンポラリ領域の第２の領域にアプリケーションの機能を表すＡＳＣＩＩコード列（ここでは、「ＣＯＰＹ」というＡＳＣＩＩコード列）を設定する（ステップＳ１２２）。
【０１４２】
また、コピー（ＣＯＰＹ）アプリケーションは、全ディスクリプタ情報のテンポラリ領域の第２の領域にアプリケーションの機能を表すＡＳＣＩＩコード列（ここでは、「ＣＯＰＹ」というＡＳＣＩＩコード列）を設定していると判定した場合（ステップＳ１２１：Ｙｅｓ）、処理を終了する。
【０１４３】
再び図１７を参照すると、コピー（ＣＯＰＹ）アプリケーションは、デバイスドライバに画像処理要求を行う（ステップＳ１１２）。デバイスドライバは、画像処理要求をアプリケーションから受けると、アプリケーションから要求された画像処理（ここでは、９０度回転処理）を行うように、ＡＳＩＣ１６の画像処理機能ブロック１６２内の画像処理部（ここでは、回転処理部１６２ａ）を起動する（ステップＳ１１３）。ＡＳＩＣ１６の画像処理機能ブロック１６２内の回転処理部１６２ａは、デバイスドライバから起動されると、入力側ＤＭＡＣ１６１を起動する（ステップＳ１１４）。また、ＡＳＩＣ１６の画像処理機能ブロック１６２内の回転処理部１６２ａは、出力側ＤＭＡＣ１６３を起動する（ステップＳ１１５）。
【０１４４】
入力側ＤＭＡＣ１６１は、入力側ディスクリプタ情報ＩＤ３１（図１６参照）を参照して、入力画像データの第１のブロックのＤＭＡ読み出しを行う。このようにして入力側ＤＭＡＣ１６１によってＤＭＡ読み出しされた入力画像データの第１のブロックには、画像処理機能ブロック１６２内の回転処理部１６２ａ（図１６参照）によって画像処理（ここでは、９０度回転処理）が実施される。ここで、入力側ディスクリプタ情報ＩＤ３１のフォーマット情報の最下位ビット（ビット０）は、「１」（ＣＰＵ割り込みあり）であるので、入力側ＤＭＡＣ１６１は、入力画像データの第１のブロックのＤＭＡ読み出しが完了すると、割り込み信号をデバイスドライバに出力する（ステップＳ１１６）。
【０１４５】
ＡＳＩＣ１６から割り込み信号が入力された場合におけるデバイスドライバの処理（割り込みハンドラ）は、先に説明した図７と同様である。図７を参照すると、デバイスドライバは、ＡＳＩＣ１６から割り込み信号が入力されると、入力側ディスクリプタ情報ＩＤ３１のテンポラリ領域の第１の領域が「１」（「結果通知あり」）であるか否かを判定する（ステップＳ２１）。
【０１４６】
デバイスドライバは、入力側ディスクリプタ情報ＩＤ１のテンポラリ領域の第１の領域が「１」（「結果通知あり」）であると判定した場合（ステップＳ２１：Ｙｅｓ）、アプリケーションに結果（ここでは、第１のブロックのＤＭＡ読み出しが完了したこと）を通知する（ステップＳ２２）。
【０１４７】
また、デバイスドライバは、入力側ディスクリプタ情報ＩＤ１のテンポラリ領域の第１の領域が「１」（「結果通知あり」）ではないと判定した場合（ステップＳ２１：Ｎｏ）、アプリケーションに結果（ここでは、第１のブロックのＤＭＡ読み出しが完了したこと）を通知することなく処理を終了する。
【０１４８】
ここでは、入力側ディスクリプタ情報ＩＤ１のテンポラリ領域の第１の領域が「１」（「結果通知あり」）であるので（ステップＳ２１：Ｙｅｓ）、デバイスドライバは、コピー（ＣＯＰＹ）アプリケーションに結果（ここでは、第１のブロックのＤＭＡ読み出しが完了したこと）を通知する（ステップＳ２２（図１７のステップＳ１１７に対応））。デバイスドライバから通知を受けたアプリケーションは、種々の処理（例えば、今実施されている９０度回転処理の次に実施する画像処理の準備のための処理等）を行うことができる。
【０１４９】
その後、ＡＳＩＣ１６に何らかの問題が発生し、ＡＳＩＣ１６がストールした場合、コピー（ＣＯＰＹ）アプリケーションや、複合機の診断プログラム等は、入力側ディスクリプタ情報ＩＤ３１に基づくＤＭＡ読み出しが完了した後にＡＳＩＣ１６がストールしたと判定することが可能である。また、複合機の診断プログラム等は、ＡＳＩＣ１６がコピー（ＣＯＰＹ）アプリケーションから利用されているときにストールしたと判定することが可能である。
【０１５０】
本実施の形態の複合機で実行されるアプリケーションプログラム、デバイスドライバ、診断プログラムは、インストール可能な形式又は実行可能な形式のファイルでＣＤ−ＲＯＭ、フレキシブルディスク（ＦＤ）、ＣＤ−Ｒ、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋ）等のコンピュータで読み取り可能な記録媒体に記録して提供するように構成してもよい。
【０１５１】
さらに、本実施の形態の複合機で実行されるアプリケーションプログラム、デバイスドライバ、診断プログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成しても良い。また、本実施の形態の複合機で実行されるアプリケーションプログラム、デバイスドライバ、診断プログラムを、インターネット等のネットワーク経由で提供または配布するように構成しても良い。
【０１５２】
なお、本実施の形態では、本発明を複合機に適用した例を挙げて説明したが、他の種々の装置に適用することができる。
【産業上の利用可能性】
【０１５３】
以上のように、本発明にかかる画像処理装置および画像処理方法は、複合機等に有用である。
【符号の説明】
【０１５４】
１０  コントローラ
１１  ＣＰＵ
１２  ＭＥＭ−Ｐ
１２ａ  ＲＯＭ
１２ｂ  ＲＡＭ
１３  ＮＢ
１４  ＳＢ
１５  ＡＧＰ
１６  ＡＳＩＣ
１７  ＭＥＭ−Ｃ
１８  ＨＤＤ
２０  操作表示部
３０  ＦＣＵ
４０  ＵＳＢ
５０  ＩＥＥＥ１３９４
６０  エンジン部
１６１  入力側ＤＭＡＣ
１６２  画像処理機能ブロック
１６２ａ  回転処理部
１６２ｂ  圧縮処理部
１６３  出力側ＤＭＡＣ
【先行技術文献】
【特許文献】
【０１５５】
【特許文献１】特開２００４−２２０５７９号公報
【図１】
2010218263.tif 000003
【図２】
2010218263.tif 000004
【図３】
2010218263.tif 000005
【図４】
2010218263.tif 000006
【図５】
2010218263.tif 000007
【図６】
2010218263.tif 000008
【図７】
2010218263.tif 000009
【図８】
2010218263.tif 000010
【図９】
2010218263.tif 000011
【図１０】
2010218263.tif 000012
【図１１】
2010218263.tif 000013
【図１２】
2010218263.tif 000014
【図１３】
2010218263.tif 000015
【図１４】
2010218263.tif 000016
【図１５】
2010218263.tif 000017
【図１６】
2010218263.tif 000018
【図１７】
2010218263.tif 000019
【図１８】
2010218263.tif 000020