(57)【要約】【課題】プロセッサから連続して出力される制御コマンドに対して、制御コマンドを保存するための専用のバッファの追加、またはメモリ領域の確保を行うことなしに、プロセッサがストールすることを回避できる画像処理装置を提供する。【解決手段】ＣＰＵ１０１と、ＦＩＦＯ部１０２と、ＣＰＵ１０１が出力した制御コマンドを実行することにより画像処理を行う画像処理部１０３と、を備える画像処理装置１を設ける。ＦＩＦＯ部１０２は、ＣＰＵ１０１が出力した制御コマンドであって画像処理部１０３に未送信の制御コマンドを、画像処理の結果を保存するために確保されたメモリ１０４の領域に保存する制御を行う。【選択図】図１
2016178547.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサと、
前記プロセッサが出力したコマンドを実行することにより画像処理を行う画像処理手段と、
前記プロセッサが出力したコマンドであって、前記画像処理手段に未送信のコマンドを、前記画像処理の結果を保存する記憶手段の保存領域に保存する制御を行う制御手段と、
を備える、ことを特徴とする画像処理装置。
【請求項２】
前記プロセッサは、前記保存領域を前記画像処理のジョブごとに確保し、
前記制御手段は、前記確保された保存領域に対応するジョブのコマンドを保存する制御を行う、ことを特徴とする請求項１に記載の画像処理装置。
【請求項３】
前記プロセッサが出力したコマンドを受け付け、一時的に記憶する第１の一時記憶手段、をさらに備え、
前記制御手段は、
前記第１の一時記憶手段に記憶されたコマンドのうち、１つのジョブに関するコマンドを抽出し、
前記画像処理手段が新たなジョブの処理を受け付けていない場合に、前記１つのジョブに関するコマンドを前記記憶手段の保存領域に保存し、
該画像処理手段が新たなジョブの処理を受け付けている際に、前記１つのジョブに関するコマンドを前記保存領域から読み出し、前記画像処理手段に送信する、
ことを特徴とする請求項１または２に記載の画像処理装置。
【請求項４】
前記制御手段は、前記第１の一時記憶手段に記憶されたコマンドのうち、前記画像処理手段に画像処理開始を指示するコマンドまでの一連のコマンドを前記１つのジョブに関するコマンドとして抽出する、
ことを特徴とする請求項３に記載の画像処理装置。
【請求項５】
前記制御手段は、前記第１の一時記憶手段に記憶されたコマンドのうち、前記画像処理手段に処理結果の出力先を指示するコマンドから、前記保存領域のアドレス情報を抽出する、
ことを特徴とする請求項３または４に記載の画像処理装置。
【請求項６】
前記制御手段が前記第１の一時記憶手段から抽出した前記１つのジョブに関するコマンドの数、及び前記保存領域のアドレス情報を一時的に記憶する第２の一時記憶手段、をさらに備え、
前記制御手段は、
前記画像処理手段が新たなジョブの処理を受け付けていない場合に、前記１つのジョブに関するコマンドの数、及び前記保存領域のアドレス情報を、第２の一時記憶手段に記憶するよう制御し、
前記画像処理手段が新たなジョブの処理を受け付けている際に、前記１つのジョブに関するコマンドの数、及び前記保存領域のアドレス情報が前記第２の一時記憶手段に記憶されている場合に、該第２の一時記憶手段から該コマンドの数、及び該アドレス情報を読み出し、該読み出したコマンドの数、及びアドレス情報に基づき、該１つのジョブに関するコマンドを前記保存領域から読み出す、ことを特徴とする請求項３ないし５のいずれか１項に記載の画像処理装置。
【請求項７】
前記第１の一時記憶手段、及び第２の一時記憶手段は、ＦＩＦＯバッファである、ことを特徴とする請求項６に記載の画像処理装置。
【請求項８】
前記画像処理手段が実行する画像処理は、ＪＰＥＧ形式のデータのデコード処理である、ことを特徴とする請求項１ないし７のいずれか１項に記載の画像処理装置。
【請求項９】
プロセッサがコマンドを出力する出力工程と、
前記コマンドを実行することにより画像処理を行う画像処理工程と、
前記出力工程において出力されたコマンドであって、画像処理を行う画像処理手段に未送信のコマンドを、前記画像処理の結果を保存する記憶手段の保存領域に保存する制御を行う制御工程と、
を有する、ことを特徴とする画像処理装置の制御方法。
【請求項１０】
請求項１乃至８のいずれか１項に記載の画像処理装置が備える各手段としてコンピュータを機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像処理装置、制御方法、及びプログラムに関する。
【背景技術】
【０００２】
従来、プロセッサから制御コマンドを受信し、画像処理に必要なパラメータの値の書き換や、データ入出力等の動作を行うように設計された画像処理回路がある。画像処理回路が画像処理の開始コマンドを受信した後に、画像処理が完了するまで自律動作を行う構成とすることにより、プロセッサは、制御コマンドを送信し終えた後に別の処理を行うことができる。
【０００３】
画像処理回路は、特定の画像処理を高速に行うハードウェアである。画像処理回路には、例えば、プロセッサが画像データのレンダリング処理を行う画像処理装置において、ＪＰＥＧ（Ｊｏｉｎｔ  Ｐｈｏｔｏｇｒａｐｈｉｃ  Ｅｘｐｅｒｔｓ  Ｇｒｏｕｐ）画像データをデコード処理するＪＰＥＧデコード回路がある。画像処理装置では、プロセッサは、ＰＤＬ（Ｐａｇｅ  Ｄｅｓｃｒｉｐｔｉｏｎ  Ｌａｎｇｕａｇｅ）データやそれを変換した中間言語であるＤＬ（Ｄｉｓｐｌａｙ  Ｌｉｓｔ）データを解釈する処理を行う。そして、ＪＰＥＧデコード回路は、データに含まれるＪＰＥＧ形式の画像データ（ＪＰＥＧデータ）のデコード処理を行う。具体的には、プロセッサは、メインメモリ上のＤＬデータに含まれるＪＰＥＧデータのアドレス、サイズ、及びデコードに必要なテーブル等の情報を制御コマンドとしてＪＰＥＧデコード回路に対して送信する。そして、ＪＰＥＧデコード回路は、受信した制御コマンドに従いメインメモリからＪＰＥＧデータを読み出し、デコードに必要なテーブル等の情報に従いＪＰＥＧデコード処理を行う。また、ＪＰＥＧデコード回路は、デコード処理を行った結果の画像データをメインメモリに書き込む処理を行う。
【０００４】
画像処理回路は、画像処理の開始コマンドを受信して画像処理を開始した後は、画像処理が完了するまで制御コマンドを受け付けない。これは、画像処理の途中で画像処理に必要なパラメータや画像データ等の設定内容が変わらないようにするためである。そのため、プロセッサが画像処理回路に別の画像データを処理対象とする制御コマンドを送信しようとしても、画像処理回路はこれを受信しないので、制御コマンドが受信されるまでプロセッサの処理が停止するストール状態となる可能性がある。
【０００５】
特許文献１は、動画像の圧縮／伸長に必要なコマンド列を事前にＣＰＵからバッファに蓄え、動画像の垂直同期信号に従ってその圧縮／伸長を制御する画像処理装置を開示している。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開平７−２２５５７７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、例えば、ＪＰＥＧデコード回路の設定には６４個の要素を持つ量子化テーブルの設定等も含み、１つのＪＰＥＧ形式の画像データ（ＪＰＥＧコードデータ）のデコード処理（１ジョブ分）の制御コマンドの数は、１００近くになる。さらに、ＰＤＬデータやＤＬデータによっては、データに含まれる画像データの数が多いものがある。特許文献１では、バッファの容量を超える制御コマンドがプロセッサから出力されることは考慮されていない。プロセッサがＤＬデータに含まれる全てのジョブの制御コマンドを続けて画像処理回路に送信する場合においても、プロセッサをストールさせないためには、制御コマンドを保持するバッファの容量を大きくすることが考えられる。しかし、バッファの容量を大きくすると回路規模が大きくなるため、コストアップの要因となる。また、制御コマンドを保存するための専用のバッファを備える代わりに、ＤＭＡ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）コントローラによるメインメモリへの書き込み及び読み込みによりバッファを実現することが考えられる。しかし、専用のバッファを備える場合と同様に、制御コマンドを保存するために大きなメモリ領域を確保する必要があり、コストアップの要因となる。
【０００８】
本発明は、プロセッサから連続して出力される制御コマンドに対して、制御コマンドを保存するための専用のバッファの追加、またはメモリ領域の確保を行うことなしに、プロセッサがストールすることを回避できる画像処理装置を提供することを目的とする。
【課題を解決するための手段】
【０００９】
本発明の一実施形態の画像処理装置は、プロセッサと、プロセッサが出力したコマンドを実行することにより画像処理を行う画像処理手段と、プロセッサが出力したコマンドであって、画像処理手段に未送信のコマンドを、画像処理の結果を保存する記憶手段の保存領域に保存する制御を行う制御手段と、を備える。
【発明の効果】
【００１０】
本発明の画像処理装置によれば、プロセッサから連続して出力される制御コマンドに対して、制御コマンドを保存する専用のバッファの追加、またはメモリ領域の確保を行うことなしに、プロセッサがストールすることを回避できる。
【図面の簡単な説明】
【００１１】
【図１】画像処理装置のハードウェア構成例を示すブロック図である。
【図２】画像処理装置のＦＩＦＯ部のハードウェア構成例を示すブロック図である。
【図３】図１に示した画像処理装置の詳細なハードウェア構成例を示す図である。
【図４】図３に示したデータ転送箇所の状態を示すシーケンス図である。
【図５】図４に示したシーケンス図の各時刻におけるメモリの状態を示す図である。
【図６】図４に示したシーケンス図の各時刻におけるメモリの状態を示す図である。
【図７】図４に示したシーケンス図の各時刻におけるメモリの状態を示す図である。
【図８】図４に示したシーケンス図の各時刻におけるメモリの状態を示す図である。
【発明を実施するための形態】
【００１２】
以下、本発明を実施するための形態について図面などを参照して説明する。
（第１実施形態）
図１は、画像処理装置のハードウェア構成例を示すブロック図である。
画像処理装置１は、ＣＰＵ１０１、ＦＩＦＯ部１０２、画像処理部１０３、メモリ１０４、及びバス１０５を備える。ＣＰＵ１０１は、メモリ１０４に記憶されたプログラムを、バス１０５を介して読み出し、プログラムに従って動作するプロセッサである。ＣＰＵ１０１は、データ出力ポートを備え、ＦＩＦＯ部１０２に対して制御コマンドを出力する。図１のＣＰＵ１０１とＦＩＦＯ部１０２とを接続する片方向の矢印は、データの転送される方向を示し、双方向の矢印は、データ転送の制御信号の出力される方向を示している。データ転送の制御信号とは、データの書き出しを要求する信号（データ書き出し要求信号）とＢＵＳＹ信号である。ＢＵＳＹ信号は、データ受信側がデータを受信できない間に出力する信号であり、データ転送を制御する信号である。データ受信側がＢＵＳＹ信号を出力していないときにデータ送信側がデータ書き出し要求信号を出力した場合には、データ転送が実行される。また、データ受信側がＢＵＳＹ信号を出力しているときにデータ送信側がデータ書き出し要求信号を出力した場合には、データ転送は実行されず、データ送信側は、ＢＵＳＹ信号が出力されなくなるまで停止し、待機する必要がある。
【００１３】
ＦＩＦＯ部１０２は、ＣＰＵ１０１と接続されるデータ入力ポート、及び画像処理部１０３と接続されるデータ出力ポートを備え、データ入力ポートから受信した制御コマンドを、受信した順番にデータ出力ポートから出力するＦＩＦＯバッファである。また、ＦＩＦＯ部１０２は、バス１０５を介してメモリ１０４と接続されており、メモリ１０４へのデータの書き出し及びメモリ１０４からのデータの読み込みを行う。ＦＩＦＯ部１０２は、ＣＰＵ１０１が出力する制御コマンドを受信し、受信した制御コマンドを、バス１０５を介してメモリ１０４に書き出す。さらに、メモリ１０４に書き出した制御コマンドを、先入れ先出しの順番に従い、バス１０５を介して読み込み、読み込んだ制御コマンドを画像処理部１０３に出力する。ＦＩＦＯ部１０２の詳細な動作については後述する。
【００１４】
画像処理部１０３は、バス１０５を介してメモリ１０４と接続されており、メモリ１０４からのＪＰＥＧデータの読み込み、及びメモリ１０４へのデコード処理済みの画像データの書き出しを行うＪＰＥＧデコード回路である。画像処理部１０３は、データ入力ポートを備え、ＦＩＦＯ部１０２が出力する制御コマンドを受信する。画像処理部１０３は、受信した制御コマンドに応じてＪＰＥＧデコード処理のパラメータ設定、メモリ１０４からのデータの読み込み及び書き出しの設定、及びＪＰＥＧデコード処理の開始制御を行う。画像処理部１０３は、データ入力ポートから画像処理開始の制御コマンドを受信すると、データ入力ポートのＢＵＳＹ信号を出力して制御コマンドの受信を行わないようにしてから、ＪＰＥＧデコード処理を開始する。ＪＰＥＧデコード処理とは、画像処理部１０３が、メモリ１０４からＪＰＥＧコードデータを読み込み、ＪＰＥＧコードデータに対してデコード処理を行い生成した画像データをメモリ１０４に書き込む処理のことである。画像処理部１０３は、画像データの書き込みが終了すると、データ入力ポートのＢＵＳＹ信号の出力をやめ、制御コマンドの受信を行えるようにする。
【００１５】
図２は、画像処理装置のＦＩＦＯ部のハードウェア構成例を示すブロック図である。
ＦＩＦＯ部１０２は、バッファ１０２１、ライトＤＭＡＣ１０２２、リードＤＭＡＣ１０２３、制御部１０２４、及びアドレスバッファ１０２５を備える。バッファ１０２１は、ＣＰＵ１０１が出力する制御コマンドを受信して内部に一時的に保存し、保存した制御コマンドを受信した順番（先入れ先出し方式）にライトＤＭＡＣ１０２２に対して出力するバッファ（ＦＩＦＯバッファ、第１の一時記憶手段）である。バッファ１０２１は、制御コマンドを１２８個保存することができる容量を備える。バッファの容量はこれに限られるものではなく、１回のＪＰＥＧデコード処理（１ジョブ分）に必要な制御コマンドの数を上回る数であればよい。本実施形態によれば、ＣＰＵ１０１が１回のＪＰＥＧデコード処理を実行するための制御コマンドを連続して出力した場合であってもバッファの容量が一杯（バッファフル）にならずに連続して制御コマンドを受信することができる。
【００１６】
ライトＤＭＡＣ１０２２は、制御部１０２４の制御により動作するライトＤＭＡコントローラである。ライトＤＭＡＣ１０２２は、制御部１０２４の制御によりバッファ１０２１が出力する制御コマンドを受信し、受信した制御コマンドをバス１０５を介してメモリ１０４に書き込む。ライトＤＭＡＣ１０２２は、制御部１０２４によりＤＭＡ転送開始の制御が行われるまでは、バッファ１０２１からのデータ入力ポートに対するＢＵＳＹ信号を出力する。ライトＤＭＡＣ１０２２は、制御部１０２４によりＤＭＡ転送開始の制御が行われると、ＢＵＳＹ信号を解除し、制御部１０２４の制御により指定された数の制御コマンドを受信し、メモリ１０４の指定されたアドレス領域に制御コマンドの書き込みを行う。
【００１７】
リードＤＭＡＣ１０２３は、制御部１０２４の制御により動作するリードＤＭＡコントローラである。リードＤＭＡＣ１０２３は、制御部１０２４の制御によりメモリ１０４から制御コマンドをバス１０５を介して読み出し、読み出した制御コマンドを画像処理部１０３に出力する。リードＤＭＡＣ１０２３がメモリ１０４から読み出す制御コマンドは、前述したライトＤＭＡＣ１０２２がメモリ１０４に書き込みを行った制御コマンドのことである。
【００１８】
制御部１０２４は、ＣＰＵ１０１が出力し、バッファ１０２１に保存される制御コマンドを観測する。制御部１０２４は、所定の制御コマンドに含まれる情報を取得し、その情報に基づいてライトＤＭＡＣ１０２２、及びリードＤＭＡＣ１０２３を制御する。制御部１０２４が情報を取得する所定の制御コマンドの１つは、画像処理部１０３に対して処理済みの画像データの出力先であるメモリアドレスを設定する制御コマンドである。制御部１０２４は、処理済みの画像データを書き出す（保存する）メモリ１０４上の保存領域のメモリアドレスを設定する制御コマンドからメモリアドレスの情報（アドレス情報）を取得する。そして、制御部１０２４は、バッファ１０２１に記憶されている制御コマンドを次にメモリ１０４に書きこむ際のライトアドレスとして記憶する。制御部１０２４が情報を取得する所定の制御コマンドの他の１つは、画像処理部１０３に対して画像処理を開始させる制御コマンドである。制御部１０２４は、バッファ１０２１に記憶されている制御コマンドのうち、画像処理を開始させる制御コマンドまでの一連の制御コマンド（コマンド列）を１回のＪＰＥＧデコード処理（１ジョブ分）のための制御コマンド列であると認識する。
【００１９】
制御部１０２４は、画像処理開始の制御コマンドを観測すると、前述した記憶している次のライトアドレスをライトＤＭＡＣ１０２２に送信し、ライトＤＭＡＣ１０２２に対して制御コマンドを書き込む先頭アドレスとして設定する。さらに、制御部１０２４は、一連の制御コマンド列を構成する制御コマンドの数をライトＤＭＡＣ１０２２に送信し、ライトＤＭＡＣ１０２２に対してメモリ１０４に転送する制御コマンドの数として設定する。制御部１０２４は、ライトＤＭＡＣ１０２２に対してＤＭＡ転送開始の制御を行い、バッファ１０２１に記憶されている一連の制御コマンド列をメモリ１０４に対して書き込む処理を行わせる。すなわち、画像処理部１０３に未送信の制御コマンドを、画像処理部１０３が処理済みの結果を保存するメモリ１０４の保存領域に保存する制御を行う制御手段として機能する。制御部１０２４は、ライトＤＭＡＣ１０２２のＤＭＡ転送が完了したことを確認すると、ライトＤＭＡＣ１０２２に送信したライトアドレス及び制御コマンドの数の情報を、アドレスバッファ１０２５に送信する。
【００２０】
制御部１０２４は、上述したライトＤＭＡＣ１０２２の制御の他に、リードＤＭＡＣ１０２３の制御をも並行して行う。制御部１０２４は、リードＤＭＡＣ１０２３が、メモリ１０４からの制御コマンド列の読み出し及び画像処理部１０３への出力を行っている場合は、読み出し及び出力が終了するまで待機する。また、制御部１０２４は、画像処理部１０３からＢＵＳＹ信号が出力されている場合は、ＢＵＳＹ信号が解除されるまで待機する。制御部１０２４は、上述した２つの待機の条件に当てはまらない場合に、ライトアドレス及び制御コマンドの数の情報がアドレスバッファ１０２５に保存されているか否かを確認する。保存されている場合は、保存されている情報を保存された順番に読み出し、読み出した情報をアドレスバッファ１０２５から消去する。制御部１０２４は、リードＤＭＡＣ１０２３に読み出したライトアドレス及び制御コマンドの数の情報を送信し、リードＤＭＡＣ１０２３に対して制御コマンドをメモリ１０４から読み出す先頭アドレス、及び読み出す制御コマンドの数として設定する。続いて、制御部１０２４は、リードＤＭＡＣ１０２３に対してＤＭＡ転送開始の制御を行い、メモリ１０４に記憶されている一連の制御コマンド列を画像処理部１０３に出力する処理を行わせる。
【００２１】
アドレスバッファ１０２５は、制御部１０２４から出力されるライトアドレス及び制御コマンドの数の情報を組にして記憶するバッファ（第２の一時記憶手段）である。制御部１０２４は、ライトＤＭＡＣ１０２２を制御してＪＰＥＧデコード処理に関する一連の制御コマンド列をまとめてメモリ１０４に書き込む。このために、アドレスバッファ１０２５は、一連の制御コマンド列がまとめて読み出されるまでの間はライトアドレス及び制御コマンドの数を記憶しておく。
【００２２】
図３及び図４を用いて、ＣＰＵから連続してＪＰＥＧでコード処理に関する制御コマンドが画像処理部に対して出力された場合の画像処理装置の動作について説明する。
図３は、画像処理装置のハードウェア構成例の詳細を示すブロック図である。また、図４は、ＣＰＵ１０１から連続して制御コマンドが画像処理部１０３に対して出力された場合の、図３に示す３０１〜３０７の各データ転送箇所の状態を示すシーケンス図である。ＣＰＵ制御コマンド出力３０１は、ＣＰＵ１０１がバッファ１０２１に対して制御コマンドを出力するデータ出力ポートの状態を示す。バッファ制御コマンド出力３０２は、バッファ１０２１がライトＤＭＡＣ１０２２に対して制御コマンドを出力するデータ出力ポートの状態を示す。
【００２３】
ライトＤＭＡＣ制御コマンド出力３０３は、ライトＤＭＡＣ１０２２がメモリ１０４に対して制御コマンドを書き出すバス出力の状態を示す。リードＤＭＡＣ制御コマンド出力３０４は、リードＤＭＡＣ１０２３が画像処理部１０３に対して制御コマンドを出力するデータ出力ポートの状態を示す。画像処理部制御コマンド入力状態３０５は、画像処理部１０３がリードＤＭＡＣ１０２３から制御コマンドを送信される際にＢＵＳＹ信号を出力しているか否かの状態を示す。３０６は、画像処理部１０３がメモリ１０４からＪＰＥＧコードデータを読み出すバス入力の状態を示す。３０７は、画像処理部１０３がメモリ１０４に対して処理済みの画像データを書き出すバス出力の状態を示す。
【００２４】
図４では、ＣＰＵ１０１が、メモリ１０４に保存されているＤＬデータをレンダリング処理するシーケンスの中で、ＪＰＥＧデコード処理を行う部分のみを取り出したものである。一例として、ＣＰＵ１０１がＤＬデータを解析することで３つのＪＰＥＧコードデータを抽出し、各ＪＰＥＧコードデータに対して画像処理部１０３にＪＰＥＧデコード処理を行わせる制御コマンド列を出力する場合について説明する。Ｔ１からＴ９は時刻を示す。各時刻におけるメモリ１０４の状態は、図５及び図６を参照して後述する。
【００２５】
図４では、図３に示した各データ転送箇所３０１〜３０７の状態を時間遷移で示したものである。ＣＰＵ制御コマンド出力３０１の状態を示す行は、ＣＰＵ１０１がデータ出力ポートに制御コマンドを出力する状態を示している。ＣＰＵ１０１は、ＤＬデータに含まれるＪＰＥＧコードデータを抽出した際に、データ出力ポートにＪＰＥＧデコード処理のための一連の制御コマンド列を出力する。本実施形態では、ＣＰＵ１０１は、時刻Ｔ２、Ｔ４、及びＴ６においてＪＰＥＧデコード処理を画像処理部１０３に実行させるための一連の制御コマンド列を出力する。
【００２６】
なお、時刻Ｔ２、Ｔ４、及びＴ６において、ＣＰＵ１０１が出力する３つの制御コマンド列、及び３つの制御コマンド列により実行されるＪＰＥＧデコード処理をそれぞれ区別するため、以下では次のように記載する。すなわち、時刻Ｔ２にＣＰＵ１０１が出力する制御コマンド列は制御コマンド列Ａ、制御コマンド列Ａにより実行される（対応する）ＪＰＥＧデコード処理はＪＰＥＧデコード処理Ａとする。時刻Ｔ４にＣＰＵ１０１が出力する制御コマンド列は制御コマンド列Ｂ、制御コマンド列Ｂにより実行されるＪＰＥＧデコード処理はＪＰＥＧデコード処理Ｂとする。時刻Ｔ６にＣＰＵ１０１が出力する制御コマンド列は制御コマンド列Ｃ、制御コマンド列Ｃにより実行されるＪＰＥＧデコード処理はＪＰＥＧデコード処理Ｃとする。また、各制御コマンド列Ａ〜Ｃにおいて、各ＪＰＥＧデコード処理Ａ〜Ｃの対象となるＪＰＥＧコードデータをそれぞれＪＰＥＧデコードデータＡ〜Ｃとし、ＪＰＥＧデコード処理Ａ〜Ｃの処理結果である画像データをそれぞれ画像データＡ〜Ｃとして区別する。
【００２７】
表Ａは、ＣＰＵ１０１が出力する制御コマンドの一覧表を示す。
【表１】
2016178547.tif 000003
表の制御コマンドの列にある文字列“＊＊＊＊＿＊＊＊＊”は、任意の３２ビット１６進数整数を表し、ＣＰＵ１０１が処理内容に応じて決定する数値である。ＣＰＵ１０１は、この箇所に適切な数値を入れて制御コマンドを出力する。また、表Ａの制御コマンドは、ＣＰＵ１０１が画像処理部１０３に対する動作要求の必要に応じて出力するものであり、全てのコマンドを必ず出力する必要はなく、不要な制御コマンドは出力しない。ただし、０ｘ０００２で始まる制御コマンドは、メモリ１０４転送に関する制御コマンド、及び画像処理開始の制御コマンドを表し、ＪＰＥＧデコード処理に必須のものであるので、ＣＰＵ１０１は必ずこれらの制御コマンドを出力する。また、制御コマンド０ｘ０００２＿０００４＿＊＊＊＊＿＊＊＊＊は、１回のＪＰＥＧデコード処理に関する一連の制御コマンド列の最後に出力されるコマンドである。
【００２８】
表Ｂは、ＪＰＥＧデコード処理Ａを画像処理部１０３に実行させる一連の制御コマンド列Ａを示す。すなわち、表Ａの制御コマンド一覧に対して、“＊＊＊＊＿＊＊＊＊”の箇所には、ＣＰＵ１０１により具体的な数値が設定されている。同様に、表Ｃは、ＪＰＥＧデコード処理Ｂを画像処理部１０３に実行させる一連の制御コマンド列Ｂを示し、表Ｄは、ＪＰＥＧデコード処理Ｃを画像処理部１０３に実行させる一連の制御コマンド列Ｃを示す。ＪＰＥＧデコード処理Ａ〜Ｃは、表の番号列が示す通り、それぞれ９６個の制御コマンドから構成されている。各表が示す制御コマンド列において、ＪＰＥＧデコード処理の処理済みの画像データを出力するアドレス（出力アドレス）に値を設定する制御コマンド（０ｘ０００２＿０００２で始まる制御コマンド）が、制御コマンド列の途中に含まれていることがわかる。また、各表が示す制御コマンド列Ａ〜Ｃにおいて、画像処理開始を指示する制御コマンド（０ｘ０００２＿０００４で始まる制御コマンド）が、一連の制御コマンド列の最後に含まれていることがわかる。
【表２】
2016178547.tif 000004
【表３】
2016178547.tif 000005
【表４】
2016178547.tif 000006
【００２９】
ＣＰＵ１０１が出力した制御コマンド列は、バッファ１０２１に一時的に記憶される。制御部１０２４は、バッファ１０２１に制御コマンド列が記憶されているか否かを観測しており、出力アドレスに値を設定する制御コマンド（０ｘ０００２＿０００２で始まる制御コマンド）を観測した場合にそのアドレスを記憶する。また、制御部１０２４は、画像処理開始を指示する制御コマンド（０ｘ０００２＿０００４で始まる制御コマンド）を観測した場合に、ライトＤＭＡＣ１０２２に対してＤＭＡ転送開始の制御を行う。ライトＤＭＡＣ１０２２は、制御部１０２４からＤＭＡ転送開始の制御が行われた場合に、バッファ１０２１からのデータ入力ポートのＢＵＳＹ信号を解除する。したがって、バッファ１０２１が制御コマンドをライトＤＭＡＣ１０２２に出力するのは、制御部１０２４が画像処理開始を指示する制御コマンドをバッファ１０２１において観測した後になる。
【００３０】
図４のバッファ制御コマンド出力３０２の状態を示す行は、バッファ１０２１が記憶している一連の制御コマンド列をライトＤＭＡＣ１０２２に対して出力する状態を示している。ＪＰＥＧデコード処理Ａ〜Ｃのいずれにおいても、ライトＤＭＡＣ１０２２がバッファ１０２１からのデータ入力ポートのＢＵＳＹ信号を解除するタイミングに合わせて、バッファ１０２１は、一連の制御コマンド列をライトＤＭＡＣ１０２２に出力する。
【００３１】
図４のライトＤＭＡＣ制御コマンド出力３０３の状態を示す行は、ライトＤＭＡＣ１０２２がバッファ１０２１から受信した一連の制御コマンド列を、バス１０５を介してメモリ１０４に対して書き込む状態を示している。ＪＰＥＧデコード処理Ａ〜Ｃのいずれにおいても、ライトＤＭＡＣ１０２２は、バッファ１０２１がライトＤＭＡＣ１０２２に対して出力した一連の制御コマンド列をそのままメモリ１０４に書き込む。
【００３２】
図４のリードＤＭＡＣ制御コマンド出力３０４の状態を示す行は、リードＤＭＡＣ１０２３がメモリ１０４から読み出した一連の制御コマンド列を、画像処理部１０３に対して出力する状態を示している。制御部１０２４は、ライトＤＭＡＣ１０２２による一連の制御コマンド列のＤＭＡ転送が完了したことを確認すると、該制御コマンド列に含まれていた出力アドレス、及び制御コマンドの数の情報をアドレスバッファ１０２５が記憶するように制御する。また、制御部１０２４は、アドレスバッファ１０２５に情報が記憶されており、かつ、画像処理部１０３からＢＵＳＹ信号が出力されていない場合に、リードＤＭＡＣ１０２３がメモリ１０４から制御コマンドを読み出すように制御する。
【００３３】
リードＤＭＡＣ１０２３が制御コマンド列Ａの出力を開始するタイミングは、ライトＤＭＡＣ１０２２がメモリ１０４への制御コマンドの出力を完了した時刻Ｔ３である。時刻Ｔ３では、画像処理部１０３がＢＵＳＹ信号を出力していないからである。一方、リードＤＭＡＣ１０２３が制御コマンド列Ｂまたは制御コマンド列Ｃの出力を開始するタイミングは、ライトＤＭＡＣ１０２２がメモリ１０４への制御コマンドの出力を完了する時刻Ｔ５や時刻Ｔ７ではない。時刻Ｔ５や時刻Ｔ７では、画像処理部１０３がＪＰＥＧデコード処理Ａを実行中のため、ＢＵＳＹ信号を出力しているからである。このため、リードＤＭＡＣ１０２３が制御コマンド列Ｂまたは制御コマンド列Ｃの出力を開始するタイミングは、それぞれ時刻Ｔ５またはＴ７の後で、かつ画像処理部１０３がＢＵＳＹ信号を解除した時刻である時刻Ｔ８及び時刻Ｔ９となる。
【００３４】
図４の画像処理部制御コマンド入力状態３０５の状態を示す行は、画像処理部１０３がＪＰＥＧデコード処理を実行している間にデータ入力ポートのＢＵＳＹ信号を出力する状態を示している。ＪＰＥＧデコード処理は、画像処理部１０３がデータ入力ポートから画像処理開始の制御コマンドを受信してから、デコード処理を行い生成した画像データをメモリ１０４に書き込むまでの処理を含む。
図４の画像処理部ＪＰＥＧコードデータ入力３０６の状態を示す行は、画像処理部１０３がメモリ１０４からＪＰＥＧコードデータを読み出す状態を示している。
図４の画像処理部画像データ出力３０７の状態を示す行は、画像処理部１０３がメモリ１０４にＪＰＥＧデコード処理を行った結果である画像データを書き込む状態を示している。
【００３５】
図５〜図８は、図４で示した画像処理装置の各データ転送箇所の状態を時間遷移で示したシーケンス図の時刻Ｔ１〜Ｔ１０におけるメモリ１０４の状態を示すメモリマップである。
以下では、説明の簡略化のために、メモリ１０４のメモリアドレス０ｘ００００＿００００から０ｘ３ＦＦＦ＿ＦＦＦＦまでの領域は、“０ｘ００００＿００００〜０ｘ４０００＿００００”のように表記する。
【００３６】
図５（Ａ）は、図４の時刻Ｔ１におけるメモリ１０４の状態を示すメモリマップである。時刻Ｔ１では、０ｘ４０００＿００００〜０ｘ４２００＿００００にＤＬデータが記憶されている。
図５（Ｂ）は、図４の時刻Ｔ２におけるメモリ１０４の状態を示すメモリマップである。時刻Ｔ２では、ＣＰＵ１０１により、ＤＬデータが解析され、ＤＬデータに含まれる３つのＪＰＥＧコードデータのうち、１つめのＪＰＥＧコードデータＡが抽出されている。そして、ＣＰＵ１０１により、画像処理部１０３にＪＰＥＧデコード処理Ａを行わせる制御コマンド列Ａが出力される前に、デコード処理後の画像データＡを記憶するメモリ領域が確保されている。すなわち、０ｘ４１００＿００００〜０ｘ４１００＿１０００にＪＰＥＧコードデータＡが記憶されており、０ｘ４３００＿００００〜０ｘ４３００＿２０００に画像データＡを記憶するための空き領域が確保されている。
【００３７】
図５（Ｃ）は、図４の時刻Ｔ３におけるメモリ１０４の状態を示すメモリマップである。時刻Ｔ３では、制御部１０２４により、ライトＤＭＡＣ１０２２が制御コマンド列Ａを、画像データＡを記憶するための空き領域に書き込むように制御され、書き込みが完了している。すなわち、時刻Ｔ３では、０ｘ４３００＿００００〜０ｘ４３００＿２０００に確保されている画像データＡを記憶するための空き領域に、一時的に制御コマンド列Ａが記憶されている。また、この空き領域に制御コマンド列Ａの書き出しが完了したことを引き金にして、制御部１０２４により、リードＤＭＡＣ１０２３が制御コマンド列Ａを読み出し、画像処理部１０３に対する制御コマンド列Ａの出力を開始するように制御される。
【００３８】
続いて、図６（Ａ）は、図４の時刻Ｔ４におけるメモリ１０４の状態を示すメモリマップである。時刻Ｔ４では、リードＤＭＡＣ１０２３から画像処理部１０３への制御コマンド列Ａの出力が完了しており、画像処理部１０３によりＪＰＥＧデコード処理Ａが開始される。画像処理部１０３は、この後にＪＰＥＧデコード処理Ａを実行することにより生成した画像データＡを０ｘ４３００＿００００〜０ｘ４３００＿２０００に書き込む。この領域には一時的に制御コマンド列Ａが保存されているが、時刻Ｔ４では、制御コマンド列Ａに含まれる全ての制御コマンドがリードＤＭＡＣ１０２３により読み出されているので、上書きされてもよい。また、時刻Ｔ４では、ＣＰＵ１０１によりＤＬデータが解析され、ＤＬデータに含まれる２つめのＪＰＥＧコードデータＢが抽出されている。そして、ＣＰＵ１０１により、画像処理部１０３にＪＰＥＧデコード処理Ｂを行わせる制御コマンド列Ｂが出力される前に、デコード処理後の画像データＢを記憶するメモリ領域が確保されている。すなわち、０ｘ４１００＿１０００〜０ｘ４１００＿２０００にＪＰＥＧコードデータＢが記憶されており、０ｘ４３００＿２０００〜０ｘ４３００＿４０００に画像データＢを記憶するための空き領域が確保されている。
【００３９】
図６（Ｂ）は、図４の時刻Ｔ５におけるメモリ１０４の状態を示すメモリマップである。時刻Ｔ５では、制御部１０２４により、ライトＤＭＡＣ１０２２が制御コマンド列Ｂを、画像データＢを記憶するための空き領域に書き込むように制御され、書き込みが完了している。すなわち、時刻Ｔ５では、０ｘ４３００＿２０００〜０ｘ４３００＿４０００に確保されている画像データＢを記憶するための空き領域に、一時的に制御コマンド列Ｂが記憶されている。また、時刻Ｔ５では、先の時刻Ｔ４から開始されたＪＰＥＧデコード処理Ａが途中まで進行しており、画像処理部１０３により画像データＡを記憶するための領域にデコード処理の結果である画像データＡが途中まで記憶されている。
【００４０】
図４（Ｃ）は、図４の時刻Ｔ６におけるメモリ１０４の状態を示すメモリマップである。時刻Ｔ６では、ＣＰＵ１０１によりＤＬデータが解析され、ＤＬデータに含まれる３つめのＪＰＥＧコードデータＣが抽出されている。そして、ＣＰＵ１０１により、画像処理部１０３にＪＰＥＧデコード処理Ｃを行わせる制御コマンド列Ｃが出力される前に、デコード処理後の画像データＣを記憶するメモリ領域が確保されている。すなわち、０ｘ４１００＿２０００〜０ｘ４１００＿３０００にＪＰＥＧコードデータＣが記憶されており、０ｘ４３００＿４０００〜０ｘ４３００＿６０００に画像データＣを記憶するための空き領域が確保されている。また、時刻Ｔ６では、先の時刻Ｔ４から開始されたＪＰＥＧデコード処理Ａがさらに進行しており、画像処理部１０３により画像データＡを記憶するための領域にデコード処理の結果である画像データＡが途中まで記憶されている。
【００４１】
図７（Ａ）は、図４の時刻Ｔ７におけるメモリ１０４の状態を示すメモリマップである。時刻Ｔ７では、制御部１０２４により、ライトＤＭＡＣ１０２２が制御コマンド列Ｃを、画像データＣを記憶するための空き領域に書き込むように制御され、書き込みが完了している。すなわち、時刻Ｔ７では、０ｘ４３００＿４０００〜０ｘ４３００＿６０００に確保されている画像データＣを記憶するための空き領域に、一時的に制御コマンド列Ｃが記憶されている。また、時刻Ｔ７では、先の時刻Ｔ４から開始されたＪＰＥＧデコード処理Ａがさらに進行しており、画像処理部１０３により画像データＡを記憶するための領域にデコード処理の結果である画像データＡが途中まで記憶されている。
【００４２】
図７（Ｂ）は、図４の時刻Ｔ８におけるメモリ１０４の状態を示すメモリマップである。時刻Ｔ８では、先の時刻Ｔ４から開始されたＪＰＥＧデコード処理Ａが完了しており、画像処理部１０３により画像データＡを記憶するための領域にデコード処理の結果である画像データＡの書き出しが完了している。すなわち、０ｘ４３００＿００００〜０ｘ４３００＿２０００に画像データＡが記憶されている。また、ＪＰＥＧデコード処理Ａが完了したことを引き金にして、画像処理部１０３によりデータ入力ポートのＢＵＳＹ信号が解除される。さらに、制御部１０２４により、リードＤＭＡＣ１０２３が制御コマンド列Ｂを読み出し、画像処理部１０３に対する制御コマンド列Ｂの出力を開始するように制御される。
【００４３】
図８（Ａ）は、図４の時刻Ｔ９におけるメモリ１０４の状態を示すメモリマップである。時刻Ｔ９では、先の時刻Ｔ８から開始されたＪＰＥＧデコード処理Ｂが完了しており、画像処理部１０３により画像データＢを記憶するための領域にデコード処理の結果である画像データＢの書き出しが完了している。すなわち、０ｘ４３００＿２０００〜０ｘ４３００＿４０００に画像データＢが記憶されている。また、ＪＰＥＧデコード処理Ｂが完了したことを引き金にして、画像処理部１０３によりデータ入力ポートのＢＵＳＹ信号が解除される。さらに、制御部１０２４により、リードＤＭＡＣ１０２３が制御コマンド列Ｃを読み出し、画像処理部１０３に対する制御コマンド列Ｃの出力を開始するように制御される。
【００４４】
図８（Ｂ）は、図４の時刻Ｔ１０におけるメモリ１０４の状態を示すメモリマップである。時刻Ｔ１０では、先の時刻Ｔ９から開始されたＪＰＥＧデコード処理Ｃが完了しており、画像処理部１０３により画像データＣを記憶するための領域にデコード処理の結果である画像データＣの書き出しが完了している。すなわち、０ｘ４３００＿４０００〜０ｘ４３００＿６０００に画像データＣが記憶されている。
【００４５】
以上のように、本実施形態によれば、処理済みの画像データを記憶する領域を流用することにより、ＣＰＵ１０１から出力される一連の制御コマンド列を一時的に記憶するための領域を新たに確保する必要がない。また、画像処理部１０３がＪＰＥＧデコード処理を実行中であって、制御コマンドを新たに受け付けることができない場合であっても、ＦＩＦＯ部１０２が新たなＪＰＥＧデコード処理のための制御コマンドをＣＰＵ１０１から受信することが可能である。したがって、ＣＰＵ１０１がストールすることを回避できる。すなわち、プロセッサから連続して出力される制御コマンドに対して、制御コマンドを保存する専用のバッファの追加、またはメモリ領域の確保を行うことなしに、プロセッサがストールすることを回避できる仕組みを提供できる。
【００４６】
なお、本実施形態では、画像処理部はＪＰＥＧデコード回路である場合について説明したが、これに限られるものではない。例えば、画像処理部が、ＪＰＥＧ形式を含む画像データに対する圧縮及び伸長処理を行う場合や、画像補正を行う場合等、その他の画像処理を行う場合であっても適用可能である。
【００４７】
（その他の実施形態）
本発明は、上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【００４８】
以上、本発明の好ましい実施形態について説明したが、本発明は、これらの実施形態に限定されず、その要旨の範囲内で種々の変形および変更が可能である。
【符号の説明】
【００４９】
１０１  ＣＰＵ
１０２  ＦＩＦＯ部
１０３  画像処理部
１０４  メモリ
【図１】
2016178547.tif 000007
【図２】
2016178547.tif 000008
【図３】
2016178547.tif 000009
【図４】
2016178547.tif 000010
【図５】
2016178547.tif 000011
【図６】
2016178547.tif 000012
【図７】
2016178547.tif 000013
【図８】
2016178547.tif 000014