(57)【特許請求の範囲】
【請求項１】
ＡＬＵアレイのパイプラインで構成されたプログラマブルデバイスでＪＰＥＧ符号化を行うデータ処理方法であって、
処理対象のブロックにおけるＡＣ係数を本来の取扱い順とは逆順で取り込み、最初のゼロでないデータが現われるまでのゼロのデータに対してはフラグデータを記憶し、前記最初のゼロでないデータが現われた以降のデータに対しては、そのままのデータを記憶し、
記憶されたフラグデータを含むデータを本来の取扱い順と同じ正順で取り込み、データがゼロでもフラグデータでもないときはＡＣ符号化を、ゼロの連続個数が所定数を超えたときにはＺＲＬ符号化を、データがフラグデータのときにはＥＯＢ符号化をし、
ＥＯＢ符号化後に、処理サイクル数が処理対象のブロックにおけるＡＣ係数の数と等しくなるまで処理サイクルを空回りさせる処理をする
ことを特徴とするデータ処理方法。
【請求項２】
ＡＬＵアレイのパイプラインで構成されたプログラマブルデバイスでＪＰＥＧ符号化を行うデータ処理装置であって、
データを記憶するデータ記憶部と、
処理対象のブロックにおけるＡＣ係数を本来の取扱い順とは逆順で取り込み、最初のゼロでないデータが現われるまでのゼロのデータに対してはフラグデータを前記データ記憶部に記憶させ、前記最初のゼロでないデータが現われた以降のデータに対しては、そのままのデータを前記データ記憶部に記憶させる処理部と、
前記データ記憶部に記憶されているフラグデータを含むデータを本来の取扱い順と同じ正順で取り込み、データがゼロでもフラグデータでもないときはＡＣ符号化を、ゼロの連続個数が所定数を超えたときにはＺＲＬ符号化を、データがフラグデータのときにはＥＯＢ符号化を行う符号化部と、
を有し、
ＥＯＢ符号化後に、処理サイクル数が処理対象のブロックにおけるＡＣ係数の数と等しくなるまで処理サイクルを空回りさせる処理をする
ことを特徴とするデータ処理装置。
【請求項３】
前記データ記憶部は、データの書込みと読出しとを同時に可能な構成となっている
ことを特徴とする請求項２に記載のデータ処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像信号や音声信号の符号化を行なう符号化装置などに用いられるデータ処理方法およびデータ処理装置に関する。
【背景技術】
【０００２】
画像信号や音声信号などの情報を始めとする種々のデジタルデータを取り扱うデジタルデータ処理に当たっては、ソフトウェア処理により行なう手法とハードウェア回路を用いて行なう手法とがある。
【０００３】
一方、デジタルデータ処理の際には、その処理内容によっては、所定の条件を満たすまである処理を繰り返すいわゆるループ処理（判定処理）が必要となることがあり、またその繰返し数が処理データの内容によって種々異なることがある。
【０００４】
特に、複数のデータが関わり合う単一もしくは複数のループ処理を行なう場合には、あるデータの取扱い時に即時にループ処理結果を確定させることができず、後段のデータに関しての処理を待たなくてはならず複雑な制御が必要になることがある。たとえば、あるデータの取扱い時に一方のループ処理結果を確定させる際に、そのデータよりも後段のデータに関わる他方のループ処理の確定結果が影響を与える場合は、一方のループ処理時には他方のループ処理結果の確定を待たざるを得ず、さらに複雑な制御が必要になる。
【０００５】
したがって、このような複数のデータが関わるループ処理を行なうと、その分だけ処理サイクルが増え出力結果が得られるまでのサイクル数が長くなるし、その繰返し数が異なると、サイクル数が一定しなくなるし、また全体としては、たとえば後段の処理を開始するタイミングを合わせるなどの付加的な処理も必要になる。つまり、このような複数のデータが関わるループ処理は処理するデータの内容によって、ループを実行する必要があるのかないのかや、実行するならば何回実行するのかや、即時にループ処理結果を確定させることができるのか、などが変わってくるので、きめ細かな制御が必要になるのである。
【発明の開示】
【発明が解決しようとする課題】
【０００６】
ソフトウェア処理の場合には、並列処理や連続処理に柔軟に対処し得るので、複数のデータが関わるループ処理を行なう場合でも、きめ細かな制御には容易に対処できるが、出力結果が得られるまでのサイクル数が一定しないと言う点については依然として問題がある。また、そもそもソフトウェア処理の場合には、その処理が複雑になるに連れ処理時間が長くなるため、処理速度の低下が問題となる。
【０００７】
一方、複数のデータが関わるループ処理をソフトウェアで行なうのではなく、これら機能部分を専用のハードウェア回路にて行なうことで、高速化を図ったアクセラレータシステムを構築することができるようになる。アクセラレータシステムは、処理が複雑であっても、処理速度の低下を防ぐことができ、高いスループットを得ることができる。
【０００８】
しかしながら、複数のデータが関わるループ処理をハードウェア回路で実現しようとすると、複数のデータを時系列的に読み出すあるいは保存する、さらには処理サイクル数の変更に対処するためのバッファやシフトレジスタやＦＩＦＯ（First In First Out）方式などの各種メモリ、それらの処理経路を切替える切替手段、これらを制御する制御回路などの、複雑な処理制御回路を付加することが必要となる。
【０００９】
この点については、各種メモリを内蔵したＡＳＩＣ（Application Specific Integrated Circuit ；特定用途向けＩＣ）やＦＰＧＡ（Flexible Programmable Gate Array）などのデジタル回路で構成することで実現することもできる。しかしながら、出力結果が得られるまでのサイクル数が一定しないと言う点については依然として問題がある。
【００１０】
加えて、各種メモリや切替え手段などを内蔵していない、あるいは「ＡＬＵアレイのパイプラインで構成されたプログラマブルデバイス」（たとえば図１０および図１１、並びに非特許文献１〜３を参照）など、デジタル集積回路の種類によっては、処理経路を切り替えることや、サイクル数の変化などに対しての対応が困難なものも存在し、周辺回路を設けて対処しようとした場合には設計の難易度が上がる、あるいは処理制御回路の回路規模が大きくなり過ぎる、などといった問題も発生する。
【００１１】
たとえば、ＪＰＥＧ（Joint Photographic Experts Group）などの画像符号化をハードウェア回路を用いて行なうには、複数の処理を次々に実行させるために、複数のモジュールをパイプライン状に接続した構成が一般的に知られている（図１２および図１３、並びに特許文献１，非特許文献４を参照）。たとえば、非特許文献４では、各モジュールの処理能力のばらつきを吸収したり、データの処理順序がモジュールによって異なることの対処を行なったりするために、モジュール間にバッファメモリやＦＩＦＯを設けている。
【００１２】
ここで、ＪＰＥＧの規格書では、ＡＣ係数の符号化処理方法の例が示されている（後述する図５、および非特許文献５を参照）。このＡＣ係数符号化処理では、外側の第１のループ（メインループ）を６３回実行することで、６３個のＡＣ係数を符号化することを基本としている。
【００１３】
また、ブロック内の最後尾側のデータ値を参照してＥＯＢ（End Of Block）を出力する第２のループ処理と、ＺＲＬ（Zero Run Length）を確定する第３の処理ループとが存在する。ここで、第２のループ処理の方が第３の処理ループよりも処理結果の確定が優先され、ＺＲＬ符号化の確定よりもＥＯＢ符号化の方が優先されるようになっている。
【００１４】
このため、ＺＲＬを確定する第３の処理ループは、処理するデータの内容によって、ループ実行の可否が第２のループ処理と関わりを持つ場合もあるし、その実行回数が変わる場合もあるので、高度な処理制御機能を持つＡＳＩＣやＦＰＧＡであれば容易に対処できるが、非特許文献１に記載のような集積回路では、その対処のための周辺回路の設計が困難になるし、制御用回路の回路規模が大きくなってしまう。
【００１５】
【特許文献１】特開平０８−１３７６７１号公報
【非特許文献１】編集部著，「動的再構成可能デバイス、その素性と実力」、第１章「正統進化か異端児か？プロセッサ史の中の動的再構成可能技術」，デザインウェーブマガジン，ＣＱ出版社，２００４年０８月号，ｐ．２０〜２９
【非特許文献２】榊原泰徳，佐藤友美著，「動的再構成可能デバイス、その素性と実力」、第２章「ＤＡＰＤＮＡのデバイス・アーキテクチャ」，デザインウェーブマガジン，ＣＱ出版社，２００４年０８月号，ｐ．３０〜３８
【非特許文献３】ダイナミック・リコンフィギュラブル・プロセッサ（特に「DAPDNA-2  アーキテクチャ」、［online］、［平成１７年３月８日検索］、インターネット＜ＵＲＬ：http://www.ipflex.com/jp/1-products/3_dd2_arch.html＞
【非特許文献４】「TD-JPEGip  高速JPEGエンコーダ・デコーダIＰ」，特に「ＪＰＥＧエンコーダＩＰ  機能ブロック図」、［online］、［平成１７年３月８日検索］、インターネット＜ＵＲＬ：http://www.inrevium.jp/data/pm/TD-JPEGip.pdf＞
【非特許文献５】ＪＰＥＧの規格書，「Figure F.2 Procedure for sequential encoding of AC coefficients with Huffman coding」，ＩＳＯ／ＩＥＣ１０９１８−１，１９９３（Ｅ）
【００１６】
本発明は、上記事情に鑑みてなされたものであり、処理対象データが所定の条件に合致しているか否かに基づいて処理結果を確定させることで所定のデータ処理を行なう場合に、データの内容によらず、一定のサイクル数で処理することができる仕組みを提供することを目的とする。たとえば、データの内容によらず、一定のサイクル数でＪＰＥＧのＡＣ符号化を行なうことができる仕組みを提供することを目的とする。
【課題を解決するための手段】
【００１７】
本発明に係るデータ処理の仕組みにおいては、符号化処理や画像処理などにおける判定処理を行なうに際して、処理対象データの本来の取扱い順とは逆順でデータを取り込んで第１の判定処理を行ないその結果を示すフラグデータを所定のデータ記憶部に保持しておき、このデータ記憶部に保持されているフラグデータを含むデータを本来の取扱い順と同じ正順で取り込んで、第１の判定処理の結果を示すフラグデータを参照しつつ、処理対象データについて第２の判定処理を行なうようにした。
【００１８】
なお、第１の判定処理は第２の判定処理よりも処理結果が優先されるものであって、加えて、通常の処理順においてより後順側のデータが判定処理結果に影響を与えるものである。つまり、第２の判定処理よりも、本来の処理順におけるより後段側のデータに基づく第１の判定処理の方が優先されるのである。
【００１９】
要するに、本発明に係るデータ処理の仕組みにおいては、通常の処理順においてより後順側のデータが優先される第１の判定処理結果を示すフラグデータを予め処理対象データに対応付けてデータ記憶部に保存しておき、第２の判定処理時には、データ記憶部に保持されている第１の判定処理結果を示すフラグデータを含むデータを本来の取扱い順と同じ正順で取り込んで、そのフラグデータを参照しつつ、処理対象データについて第２の判定処理を行なうのである。
【００２０】
また従属項に記載された発明は、本発明に係るデータ処理の仕組みのさらなる有利な具体例を規定する。なお、本発明に係るデータ処理の仕組みは、ソフトウェア処理でも実現できる。よって、本発明に係るデータ処理の仕組みを、電子計算機を用いてソフトウェアで実現するために好適なプログラムやこのプログラムを格納した記憶媒体を発明として抽出することもできる。プログラムは、コンピュータ読取り可能な記憶媒体に格納されて提供されてもよいし、有線あるいは無線による通信手段を介した配信により提供されてもよい。
【００２１】
たとえば、通常の処理順においてより後順側のデータが優先される第１の判定処理を行なうに際しては、その優先性に鑑みれば、本来とは逆順にデータを取り扱って判定処理を行なうのが好ましい。もちろん、本来と同じ正順にデータを取り扱う場合でも、第１の判定処理を行なうことは可能である。
【発明の効果】
【００２２】
本発明によれば、通常の処理順において、より後順側のデータが優先される第１の判定処理結果を示すフラグデータを予め処理対象データに対応付けてデータ記憶部に保存しておき、第２の判定処理時には、第１の判定処理結果を示すフラグデータを含むデータをデータ記憶部から本来の取扱い順と同じ正順で取り込んで、通常の処理順においてより後順側のデータに基づいて判定された第１の判定処理結果を示すフラグデータを参照しつつ、処理対象データについて第２の判定処理を行なうようにした。
【００２３】
これにより、第２の判定処理を正順に行なう場合でも、ある時点の処理対象データよりも後順側のデータに基づいて判定された第１の判定処理結果を示すフラグデータを参照することができるので、第２の判定処理結果を即時に確定することができる。その結果、データの内容によらず、一定のサイクル数でデータ処理を行なうことができるようになり、このため、比較的単純な構造の制御回路で制御可能なデータパスを構成することができるようにもなる。
【発明を実施するための最良の形態】
【００２４】
以下、図面を参照して本発明の実施形態について詳細に説明する。
【００２５】
＜基本構成＞
図１は、本発明に係るデータ処理装置の基本構成を示す回路ブロック図である。この基本構成のデータ処理装置１は、一部のループ処理（判定処理）を従属処理に置き換えて実行する本発明に係る主要部のデジタルデータ処理（置換え処理）に先立って種々のデータ処理を行なう前段処理部１１０と、前段処理部１１０により処理された処理済みデータを処理順に格納する第１のデータ記憶部としての第１バッファメモリ部１２０とを備えている。
【００２６】
またデータ処理装置１は、第１バッファメモリ部１２０から逆順に読み出した処理対象のブロックデータのうち、ブロックの末尾側（逆順に読み出した先頭側）に存在する一定の関係を持つデータに対してその旨を示すフラグを付加する第１の判定処理部の一例であるフラグ付加部１３０と、フラグ付加部１３０により処理された処理済みデータを順次格納する第２のデータ記憶部としての第２バッファメモリ部１４０と、第２バッファメモリ部１４０から本来の処理順と同じ順（正順）にデータを読み出して種々のデータ処理を行なう第２の判定処理部としての後段処理部１５０とを備えている。
【００２７】
第１バッファメモリ部１２０、フラグ付加部１３０、第２バッファメモリ部１４０、および後段処理部１５０によって、あるループ処理を従属処理に置き換えて判定処理を行なう置換処理部３が構成され、処理対象データが所定の条件に合致しているか否かに基づいて処理結果を確定させることで画像処理や符号化処理など所定のデータ処理を行なう。
【００２８】
この基本構成例の第１バッファメモリ部１２０および第２バッファメモリ部１４０には、それぞれデータの書込みと読出しとを同時に行なうことのできない１個のバッファメモリ１２２，１４２が設けられている。
【００２９】
データ処理装置１をＪＰＥＧ符号化を行なう符号化装置として構成する場合、前段処理部１１０としては、ＤＣＴ係数を算出するＤＣＴ計算部１１２と、量子化計算を行なう量子化計算部１１４とが設けられる。この場合、第１バッファメモリ部１２０には、量子化計算後のＤＣＴ係数データが格納される。
【００３０】
また、フラグ付加部１３０としては、ＡＣ成分が“０”の値が末尾側に連続して存在することを示すエンドフラグｅを生成するＥＯＢ処理部１３２が設けられる。ＥＯＢ処理部１３２は、第１バッファメモリ部１２０から量子化後の係数データを１ブロックごとに、本来の処理順とは逆順に読み出して、つまりジグザグスキャンの逆順に読み出して、最後部側から連続するゼロのデータに対応付けてその旨を示すエンドフラグｅを第２バッファメモリ部１４０に保持させるとともに、最後尾側から最初にゼロでないデータが現われた後には、そのデータをそのまま第２バッファメモリ部１４０に保持させる。
【００３１】
また、後段処理部１５０としては、エントロピー符号化部１５２と、バイトパッキング部１５４とが設けられる。エントロピー符号化部１５２は、第２バッファメモリ部１４０からフラグ付加部１３０での結果（エンドフラグｅ）を含む処理対象データを本来の処理順と同じ正順で読み出して、つまりジグザグスキャン順の先頭から読み出して所定の条件に従ってハフマン符号へ変換する。バイトパッキング部１５４は、エントロピー符号化部１５２により符号化されたデータを一纏めにする。
【００３２】
ＤＣＴ計算部１１２、量子化計算部１１４、エントロピー符号化部１５２、およびバイトパッキング部１５４の基本的な処理は、ＪＰＥＧ符号化を行なう場合に用いられるものとして基本的なもので、周知のものであるので、ここでは、それらの詳細な説明を割愛する。
【００３３】
＜処理手順＞
図２は、置換処理部３での置換え処理の対象となるループ処理を包含したデータ処理の基本事例を示すフローチャートである。また、図３は、本実施形態のデータ処理装置１の処理手順を説明するフローチャートである。
【００３４】
デジタルデータ処理を行なう際には、前もってある処理（前段処理という）がなされた処理対象の全データの内の所定数のデータ（ブロックデータという）に関して、ある条件を満たしているか否かを判定し、その判定結果に応じて処理結果の確定を切り替えるループ処理（判定処理）を行なうことがある。また、ループ処理が複数存在し、どちらか一方の判定基準の方が優先されることもある。以下、優先される方の判定基準を優先基準、その判定ループ処理を優先ループ処理といい、他方の判定基準を従属基準、その判定ループ処理を従属ループ処理ともいう。
【００３５】
ここで、優先される方のループ処理結果を確定させるには本来の処理順として後側のデータ値を参照する必要がある場合において、ブロック内の所定番目のデータについての処理中に、従属ループ処理によってデータ処理結果を確定させようとしたときに、その処理対象データが従属基準に合致するだけでなく優先基準の判定結果にも影響を与えるがために優先ループ処理結果の確定と関わりを持つ場合を考える。
【００３６】
この場合、前段処理済のデータを順に受け取って処理を行なうといった単純な逐次処理では、その時点では従属ループ処理の処理結果を確定させることができず、優先ループ処理結果の確定を待ってから、従属ループ処理結果の確定を行なうようにする必要があり、処理順として後側のデータについての優先ループ処理が完了するまで、従属ループ処理結果の確定を待たざるを得ない。
【００３７】
このような処理を行なうための処理手順の一例をフローチャートで示すと図２のようになる。具体的には、外側にメインの判定基準（メイン基準）に従って判定処理を行ないつつ（Ｓ１３４）、判定結果に応じてメインとなる所定のデータ処理（Ｓ１５４）を行なうためのメインループが構成されており、その中に、優先ループ処理（Ｓ１３２〜Ｓ１３８）と従属ループ処理（Ｓ１５０〜Ｓ１５２）とが組み込まれている。ここでは、ブロック内の最後尾のデータ値がメイン基準を満たしているときには、優先ループ処理の判定結果の方が従属ループ処理の判定結果よりも優先される場合で説明する。
【００３８】
先ず、前段処理済みデータをブロックサイズで分割して、ブロック内のデータを所定順に処理するため、ブロック内の何番目のデータを処理対象とするのかを特定するためのオペレータｎ１をゼロ（０）にリセットするとともに、従属ループ処理における条件判定のためのオペレータｎ２もリセットする（Ｓ１３０）。
【００３９】
次に、メインループ処理（従属ループ処理や優先ループ処理の一部を包含する）において、先ずブロック内のデータを所定順に処理するためオペレータｎ１に“１”を加えた後（Ｓ１３２）、そのｎ１番目の処理対象データＤ（ｎ１）が所定の値であるか否か、すなわちメイン基準を満たしているか否かを判定する（Ｓ１３４）。処理対象データＤ（ｎ１）がメイン基準を満たしているときには（Ｓ１３４−ＹＥＳ）、さらに処理対象データＤ（ｎ１）が優先基準をも満たしているか否かを判定する（Ｓ１３６）。ここで、優先基準としては、処理対象データＤ（ｎ１）がブロックの最後尾のデータであるか否かであるとする。そして、ブロック内の最後尾のデータであるときには（Ｓ１３６−ＹＥＳ）、優先ループ処理の処理結果を確定させ（Ｓ１７０）、そのブロックについての処理を完了させる。
【００４０】
一方、処理対象データＤ（ｎ１）がメイン基準を満たしていても（Ｓ１３４−ＹＥＳ）、ブロックの最後尾のデータでなければ（Ｓ１３６−ＮＯ）、従属ループ処理における条件判定のためのオペレータｎ２を所定の条件に従って修正を加えた後に（Ｓ１３８）、ステップＳ１３２に戻って、次の処理対象データの処理に移行する。このステップＳ１３８の処理は、処理対象データＤ（ｎ１）がメイン基準を満たさなくなったときに、それ以前にメイン基準を満たしていたデータについて、従属基準を満たすものであったか否かを（事後的に）判定するためのものである。
【００４１】
次に、処理対象データＤ（ｎ１）がメイン基準を満たしていない場合には（Ｓ１３４−ＮＯ）、従属ループ処理におけ条件判定のためのオペレータｎ２が第２の判定条件（従属基準）に合致するか否かを判定する（Ｓ１５０）。そして、この従属基準を満たすものでを満たすものである場合には（Ｓ１５０−ＹＥＳ）、第２のループ処理である従属ループ処理における所定のデータ処理を行なって（Ｓ１５２）、従属ループ処理における条件判定のためのオペレータｎ２に所定の条件に従って修正を加えてから（Ｓ１５３）、メインのデータ処理を行なう（Ｓ１５４）。なお、オペレータｎ２に修正を加えても依然として従属基準を満たすものである場合には（Ｓ１５０−ＹＥＳ）、従属ループ処理における所定のデータ処理などを再度行なう（Ｓ１５２，Ｓ１５３）。一方、従属基準を満たさない場合には（Ｓ１５０−ＮＯ）、即時にメインのデータ処理を行なう（Ｓ１５４）。
【００４２】
そして、このメインのデータ処理（Ｓ１５４）の後には、従属ループ処理における条件判定のためのオペレータｎ２をリセットし（Ｓ１５６）、ブロックの最後尾のデータでないときにはステップＳ１３２に戻って次の処理対象データの処理に移行するが（Ｓ１５８−ＮＯ）、ブロックの最後尾のデータであるときにはそのブロックについての処理を完了させる（Ｓ１５８−ＹＥＳ）。
【００４３】
このような処理は、ソフトウェア処理であればフローチャート通りに記述して実行することで柔軟に対処できるが、ハードウェア回路で実現しようとすると、メモリからデータを読み出して逐次処理すると言った単純な処理では従属ループ処理結果を即時に確定させることができないので、従属ループ処理結果を確定させる前に優先ループ処理を待つための仕組み（具体的には多くのメモリを必要とする）や、処理経路を切替える切替手段や、これらを制御する制御回路などの、複雑な制御処理回路が必要になるので、集積回路によっては、その実装が非常に困難となり得る。
【００４４】
＜本実施形態の処理手順＞
そこで、本実施形態では、従属ループ処理で取り扱っているデータよりも処理順として後側のデータを優先ループ処理（第１の判定処理）の確定のために必要とするがために、単純な逐次処理では従属ループ処理（第２の判定処理）結果を即時に確定させることができないという点に着目し、通常の処理順においてより後順側のデータが優先される優先ループ処理を予め行なっておき、その結果を示すフラグデータを予め処理対象データに対応付けてデータ記憶部に保存しておき、従属ループ処理時には、そのフラグデータを含むデータをデータ記憶部から本来の取扱い順と同じ正順で取り込んで、そのフラグデータを参照しつつ、処理対象データについて第２の判定処理を行なうことで解決することとした。特に、通常の処理順においてより後順側（典型例は最後尾）のデータが優先される優先ループ処理を行なうに際しては、その優先性に鑑みて、本来とは逆順にデータを取り扱って判定処理を行なうようにした。
【００４５】
すなわち、図３に示すように、前段処理部１１０で処理された処理済データを一旦第１バッファメモリ部１２０に１ブロック分蓄積する（Ｓ２０２）。
【００４６】
次に、フラグ付加部１３０は、前段処理済みデータをブロックサイズで分割して処理するため、先ず、ブロックサイズ判定用のオペレータｎ３をブロックサイズＳＩＺＥ（たとえば６４）にリセットする（Ｓ２１０）。
【００４７】
次に、フラグ付加部１３０は、従属ループ処理に先立つ優先ループ処理において、通常の処理順とは逆順で判定処理を行なうべく、先ずブロックサイズ内の何番目のデータを処理対象としているのかを特定するオペレータｎ３から“１”を差し引いた後（Ｓ２１２）、その処理対象データＤ（ｎ３）がメイン基準を満たしているか否かを判定する（Ｓ２１４）。データの最後尾側から処理を開始しているので、処理対象データＤ（ｎ３）がメイン基準を満たすか否かの判定を行なうことで、同時に、処理対象データＤ（ｎ３）が優先基準を満たすか否かの判定をもできるようになるのである。
【００４８】
フラグ付加部１３０は、処理対象データＤ（ｎ３）がメイン基準を満たしているときには、その旨の判定フラグデータを処理対象データＤ（ｎ３）に代えて第２バッファメモリ部１４０に記憶し、ステップＳ２１２に戻って、次の処理対象データの処理に移行する（Ｓ２１４−ＹＥＳ，Ｓ２１５）。
【００４９】
一方、処理対象データＤ（ｎ３）がメイン基準を満たしていないときには、フラグ付加部１３０は、第１バッファメモリ部１２０から読み出した処理対象データＤ（ｎ３）をそのまま第２バッファメモリ部１４０に記憶する（Ｓ２１４−ＮＯ，Ｓ２１６）。全データについての処理が完了していなければ（Ｓ２１８−ＮＯ）、フラグ付加部１３０は、オペレータｎ３から“１”を差し引いた後（Ｓ２１９）、ステップＳ２１６に戻って、次の処理対象データについて同様に処理する。
【００５０】
こうすることで、最後尾側から連続するメイン基準を満たすものについては、最後尾のデータが優先基準を満たすものであったことを示すフラグデータを第２バッファメモリ部１４０に保持させることができるとともに、最後尾側から最初にメイン基準を満たさなくなった以降には、元データをそのまま第２バッファメモリ部１４０に保持させることができる。
【００５１】
通常の処理順とは逆順で行なったフラグ付加部１３０によるメインループ処理および優先ループ処理に従ったデータの事前確認処理が完了すると（Ｓ２１８−ＹＥＳ）、後段処理部１５０は、第２バッファメモリ部１４０に保持されているデータを処理対象としてブロックサイズで分割して処理するため、先ず、ブロックサイズ判定用のオペレータｎ１をゼロ（０）にリセットするとともに、従属ループ処理における条件判定のためのオペレータｎ２もリセットする（Ｓ２３０）。
【００５２】
次に、後段処理部１５０は、メインループ処理（従属ループ処理や優先ループ処理の一部を包含する）において、通常の処理順と同じ正順で判定処理を行なうべく、先ずブロックサイズ内の何番目のデータを処理対象としているのかを特定するオペレータｎ１に“１”を加えた後に（Ｓ２３２）、その処理対象データＤ（ｎ１）が、フラグデータであるのかやメイン基準を満たしているか否かを判定する（Ｓ２３４）。
【００５３】
具体的には、後段処理部１５０は、先ず、処理対象データＤ（ｎ１）が判定フラグであるときには（Ｓ２３４−フラグ）、判定フラグに対応した所定の処理として、優先ループ処理の処理結果を確定させ（Ｓ２７０）、ブロックの最後尾のデータとなるまで、処理サイクルを空回りさせ（Ｓ２７２−ＮＯ，Ｓ２７４）、ブロック内の最終番目となったらそのブロックについての処理を完了させる（Ｓ２７２−ＹＥＳ）。
【００５４】
一方、後段処理部１５０は、処理対象データＤ（ｎ１）がメイン基準を満たしているときには（Ｓ２３４−ＹＥＳ）、従属ループ処理における条件判定のためのオペレータｎ２を所定の条件に従って修正を加えた後に（Ｓ２３５）、修正されたオペレータｎ２が第２の判定条件（従属基準）を満たすか否かを判定する（Ｓ２５０）。そして、後段処理部１５０は、修正されたオペレータｎ２が従属基準を満たさなければステップＳ２３２に戻って次の処理対象データの処理に移行する（Ｓ２５０−ＮＯ）。また、修正されたオペレータｎ２が従属基準を満たすときには、後段処理部１５０は、第２のループ処理である従属ループ処理における所定のデータ処理を直ちに行なう（Ｓ２５２）。また、後段処理部１５０は、処理対象データＤ（ｎ１）が判定フラグでもないしメイン基準をも満たしていないときには（Ｓ２３４−ＮＯ）、メインのデータ処理を直ちに行なう（Ｓ２５４）。
【００５５】
この後（Ｓ２５２，Ｓ２５４）、後段処理部１５０は、オペレータｎ２をリセットしてから（Ｓ２５６）、ブロックの最後尾のデータでないときにはステップＳ２３２に戻って次の処理対象データの処理に移行するが（Ｓ２５８−ＮＯ）、ブロックの最後尾のデータであるときにはそのブロックについての処理を完了させる（Ｓ２５８−ＹＥＳ）。
【００５６】
このように、ステップＳ２１２〜Ｓ２１８によるデータの事前確認処理を行なっておくことで、第２の判定処理である従属ループ処理における判定基準（従属基準）にも合致し、かつ、第１の判定処理である優先ループ処理における判定基準（優先基準）にも合致し得るようなデータについては、予め優先基準に合致する旨の判定フラグデータに修正して第２バッファメモリ部１４０に保存することができる。
【００５７】
したがって、後段処理部１５０における判定処理においては、第２バッファメモリ部１４０から本来の処理順と同じ正順にデータを読み出してデータ判定を行なうことで、メイン基準に合致しかつ優先基準にも合致し得るようなデータについては従属基準にも合致するか否かを問わず、それに応じた確定処理を（Ｓ２７０）、またメイン基準に合致しかつ従属基準にも合致するデータに応じた確定処理を（Ｓ２５２）、またメイン基準に合致しないデータに応じた確定処理（Ｓ２５４）を、それぞれ直ちに行なうことができるので、データの内容によらず、一定のサイクル数で処理することができるようになる。
【００５８】
＜変形構成＞
図４は、本発明に係るデータ処理装置の変形構成を示す回路ブロック図である。この変形構成のデータ処理装置１は、図１に示した基本構成における第１バッファメモリ部１２０および第２バッファメモリ部１４０を、複数のバッファメモリの並列回路で構成したものである。すなわち、第１バッファメモリ部１２０および第２バッファメモリ部１４０には、それぞれ２個のバッファメモリ１２２，１２４，１４２，１４４が設けられている。
【００５９】
基本構成例のように、第１バッファメモリ部１２０および第２バッファメモリ部１４０に、それぞれデータの書込みと読出しとを同時に行なうことのできない１個のバッファメモリを設けると、あるブロックについて処理を完結するには、第１バッファメモリ部１２０からの読出しと第２バッファメモリ部１４０への書込みとを行なう逆順の処理と、第２バッファメモリ部１４０からの読出しを利用した正順の処理とをする必要があるので、全体としては、処理を途切れ、２ブロック分の処理サイクルが必要になってしまう。
【００６０】
これに対して、変形構成例のように、第１バッファメモリ部１２０および第２バッファメモリ部１４０に、それぞれ複数個のバッファメモリを設けると、ブロックデータを交互に取り扱うことができ、たとえば一方のバッファメモリにデータを書込みつつ他方のバッファメモリからデータを読み出すことが同時にできるようになり、処理の途切れが生じない。たとえば、一方のブロックについてはバッファメモリ１２２，１４２を使用し、他方のブロックについてはバッファメモリ１２４，１４４を使用することができる。
【００６１】
これにより、一方のブロック（たとえば奇数番目のブロックデータ）についてのバッファメモリ１２２を利用したフラグ付加部１３０による逆順の処理と、他方のブロック（たとえば偶数番目のブロックデータ）についてのバッファメモリ１４４を利用した後段処理部１５０による処理順の処理とを並行して行なうことができるし、一方のブロック（たとえば奇数番目のブロックデータ）についてのバッファメモリ１２４を利用したフラグ付加部１３０による処理順の処理と、他方のブロック（たとえば偶数番目のブロックデータ）についてのバッファメモリ１２４を利用した後段処理部１５０による逆順の処理とを並行して行なうといった、パイプライン処理を行なうことができるので、全体としては、処理を途切れなく継続することができ、１ブロック分の処理サイクルで済ますことができるようになる。
【００６２】
なおこの変形構成例では、ダブルバッファ構成としていたが、データの書込みと読出しとを同時に可能な構成であればよく、第１バッファメモリ部１２０および第２バッファメモリ部１４０に、それぞれ１個の２ポートメモリを使用することでも、同様の効果を得ることができる。
【００６３】
＜ＪＰＥＧ符号化の場合＞
次に、ＪＰＥＧ符号化処理におけるＡＣ係数のエンコード処理を事例にして、具体的に説明する。
【００６４】
図５は、ＪＰＥＧ符号化処理におけるＡＣ係数のエンコード処理を説明する図であり、図５（Ａ）はその処理手順を示したフローチャート、図５（Ｂ）はブロック内のデータスキャン順を説明する図である。なお、図５（Ａ）に示すフローチャートは、ＪＰＥＧの規格書（ＩＳＯ／ＩＥＣ１０９１８−１；１９９３（Ｅ））にて規定されているものである。
【００６５】
ＪＰＥＧでは、８×８＝６４個のデータを最小単位ＭＣＵ（Minimum Coded Unit）とし、このＭＣＵごとに符号化を行なう。ここで、ＡＣ成分の符号化に際しては、外側のメインループで、８×８個の計６４個でなるブロック内の各データのうち、図５（Ｂ）の左上隅のＤＣ成分を除く６３個のＡＣ成分について、データがメイン基準を満たすか否かの判定処理を行なって（Ｓ３３４）、その判定結果に基づいて、メインのデータ処理としての符号化処理（Ｓ３５４）を順次行なう。
【００６６】
その処理順は、ブロックの右下に向かうほど、量子化により“０”の発生する確率が高くなるため、左上側から斜め右下方向にデータを読むことにより“０”成分が連続して発生し易いように「ジグザグスキャン」を行なう。このジグザグスキャンでは、図５（Ｂ）に示すように、ブロックの左上隅（０番目のＤＣ成分を除く１番目から）を起点として、最初に左下方向へ進みながらデータを読み、端まで到達したら今度は右上方向へ進みながらデータを読む。このようにデータを読むことで、“０”成分が連続して出現することが期待できるため、符号化処理もそれにあった形で行なう。
【００６７】
これにより、ＡＣ成分をＺＺ（１）から順番にみていき、“０”でないデータ（ノンゼロのデータ）が見つかったとき、それまでに発生した“０”成分の連続個数（ｒｕｎ；４ビットのRRRR（ここで、０≦RRRR≦１５））、さらに現在のノンゼロのＡＣ成分に対応するカテゴリを４ビットの有効ビット数SSSSとして表わし、それらの組合せを用いて既知のテーブル（たとえば輝度成分に対するハフマン符号）から対応するハフマン符号を求めるなどして符号化してデータ列に加えるのを符号化処理の基本とするのである。
【００６８】
ここで、外側のメインループ内には、図５（Ｂ）の右下隅に示す最後尾（６３番目）のＡＣ成分が“０”の場合には、つまりメイン基準を満たすとともに優先基準をも満たす場合には、最終ブロック信号ＥＯＢ（End Of Block）を出力するための優先ループ処理（以下ＥＯＢ生成ループ処理ともいう）が存在するとともに、“０”成分の連続個数（ｒｕｎ）が“１５”を越えたときには、つまりメイン基準を満たすとともに従属基準をも満たす場合には、ｒｕｎの値をリセットしてゼロ長数信号ＺＲＬ（Zero Run Length）を出力するための従属ループ処理（以下ＺＲＬ生成ループ処理ともいう）が存在する。
【００６９】
最終ブロック信号ＥＯＢは、最後のＡＣ成分が“０”の場合には、その前に“０”成分が幾つ続いていても最終ブロック信号ＥＯＢを出力するという優先性があり、最終ブロック信号ＥＯＢが出力されるときには、たとえメイン基準を満たすとともに従属基準をも満たす場合であってもゼロ長数信号ＺＲＬを出力しない。
【００７０】
つまり、ＪＰＥＧの符号化処理では、ＤＣＴ計算の結果の６４個のＤＣＴ係数を量子化し、先頭の１個はＤＣ（直流）係数として符号に変換し、残り６３個はＡＣ係数として処理する。ここで、“０”（ゼロ）ではないＡＣ係数はそのままＡＣ符号に変換し、ＡＣ係数が“０”の場合は連続する“０”の個数をカウントして次に現れるノンゼロ係数と一緒に符号化するのを基本とするが、ブロックの末尾にゼロが現れた場合は、それ以前の“０”の連続個数に拘わらず（ＺＲＬ符号化に優先して）ＥＯＢ符号に変換するし、“０”の連続個数が所定数に達すると、ＥＯＢ符号への変換がない限りにおいてＺＲＬ符号に変換するのである（後述する図６を参照）。以下、具体的に説明する。
【００７１】
前段処理部１１０のＤＣＴ計算部１１２でＤＣＴ係数が算出され、量子化計算部１１４によって算出された量子化済みデータをブロックサイズで分割して処理するため、先ず、ブロックサイズ判定用のオペレータＫをゼロ（０）にリセットするとともに、ＺＲＬ生成ループ処理における条件判定のためのオペレータＲもゼロ（０）にリセットする（Ｓ３３０）。
【００７２】
次に、メインループ処理において、先ずブロックサイズ内の何番目のデータを処理対象としているのかを特定するべく、オペレータＫに“１”を加えた後（Ｓ３３２）、その処理対象データＺＺ（Ｋ）が“０”であるか否か（メイン基準を満たしているか否か）を判定する（Ｓ３３４）。処理対象データＺＺ（Ｋ）が“０”であって（Ｓ３１４−ＹＥＳ）、かつブロックの最後尾のデータであるとき、つまりオペレータＫが“６３”である（優先基準を満たす）ときには（Ｓ３３６−ＹＥＳ）、最終ブロック信号ＥＯＢを出力し、そのブロックについての処理を完了させる（Ｓ３７０）。なお、最終ブロック信号として、有効ビット数SSSS＝０，ｒｕｎ＝０が割り当てられている。つまり、末尾の“０”はまとめてＥＯＢ符号に変換する。
【００７３】
こうすることで、先頭から順にＡＣ成分をジグザグスキャンして“０”の成分が見つかった場合、最後の（右下隅の）ＡＣ成分が“０”のときには、その前に“０”成分がいくつ続いていても、ゼロ長数信号ＺＲＬを出力することなく、最終ブロック信号ＥＯＢを優先的に出力して、そのブロックに対する処理を終了できるのである。
【００７４】
一方、処理対象データがメイン基準を満たしていても（Ｓ３３４−ＹＥＳ）、ブロックの最後尾のデータでなければ（Ｓ３３６−ＮＯ）、ＺＲＬ生成ループ処理における条件判定のためのオペレータＲに“１”を加えた後に（Ｓ３３８）、ステップＳ３３２に戻って、次の処理対象データの処理に移行する。
【００７５】
また、処理対象データＺＺ（Ｋ）が“０”でない（メイン基準を満たしていない）場合には（Ｓ３３４−ＮＯ）、ＺＲＬ生成ループ処理における条件判定のためのオペレータＲが“１５”を超えるか否か（第２の判定条件を満たしているか否か）を判定する、つまりｒｕｎの値が１５を越えるか否か（従属基準を満たすか否か）を判定する（Ｓ３５０）。そして、オペレータＲが“１５”を超える場合（ｒｕｎの値が１５を越えるとき）、つまりＲ＝１６の場合には（Ｓ３５０−ＹＥＳ）、ゼロ長数信号ＺＲＬを出力するとともに、オペレータＲから“１６”を差し引いてから（Ｓ３５２）、それまでに発生した“０”成分の連続個数（ｒｕｎ）と有効ビット数SSSSの組合せを符号化してデータ列に加える（Ｓ３５４）。オペレータＲから“１６”を差し引いたときに、依然としてオペレータＲが“１５”を超える場合には、再度ステップＳ３５２の処理を繰り返すことになる。こうすることで、“０”でないＡＣ成分（ノンゼロ）が現われる前に連続して存在する“０”のデータについて、ＥＯＢ符号への変換（Ｓ３７０）がない限りにおいて、１６個ごとにゼロ長数信号ＺＲＬを出力することができるようになる。
【００７６】
一方、オペレータＲが“１５”を超えない場合つまりｒｕｎの値が１５を越えないときには（Ｓ３３０−ＮＯ）、要するに、データＺＺ（Ｋ）がメイン基準（ＺＺ（Ｋ）＝０）を満たさず、かつそれ以前のｒｕｎの値が１５を越えないときには、即時に、メインのデータ処理としてのＡＣ符号化処理を行なう。具体的には、それまでに発生した“０”成分の連続個数（ｒｕｎ）とＡＣ成分の有効ビット数SSSSの組合せを符号化してデータ列に加える（Ｓ３５４）。なお、ゼロ長数信号ＺＲＬとしては、有効ビット数SSSS＝０，ｒｕｎ＝１５が割り当てられている。
【００７７】
そして、このＡＣ符号化処理（Ｓ３５４）の後には、オペレータＲをゼロ（０）にリセットし（Ｓ３５６）、ブロックの最後尾のデータでないとき、つまりオペレータＫが“６３”でないときにはステップＳ３１２に戻って次の処理対象データの処理に移行するが（Ｓ３５８−ＮＯ）、ブロックの最後尾のデータであるとき、つまりオペレータＫが“６３”であるときにはそのブロックについての処理を完了させる（Ｓ３５８−ＹＥＳ）。
【００７８】
つまり、ＡＣ成分をジグザグスキャンして、連続する“０”成分を数えながら“０”でない成分を見つけ、“０”でないデータが見つかったときに（ノンゼロが現れたら）、ＡＣ符号を発生する、すなわち、それまでに発生した“０”成分の連続個数（ｒｕｎ）と有効ビット数SSSSの組合せを符号化してデータ列に加えるのである。
【００７９】
このような処理をソフトウェアで実装するならば、フローチャート通りに記述することで柔軟に対処できるし、ＡＳＩＣやＦＰＧＡなどに実装する場合には、“０”成分の連続個数（ｒｕｎ）が“１５”を超えるようなときに最終データ値も“０”であるとき、ＺＲＬ出力に優先してＥＯＢ出力を行なうためのＥＯＢ生成ループ処理を待つための仕組み（具体的には多くのメモリを必要とする）や、処理経路を切替える切替手段や、これらを制御する制御回路などの、複雑な制御処理回路が必要になるのであるが、これらは、ステートマシンなどで制御回路を構成すれば実現できる。
【００８０】
一方、非特許文献１に記載されているような「ＡＬＵアレイタイプの信号処理用半導体デバイス」に実装する場合は、制御回路の実装に向いていないため、その設計の難易度が上がり、回路規模も大きくなる。
【００８１】
＜ＡＣ係数とＺＲＬ符号とＥＯＢ符号の関係について＞
図６は、ＪＰＥＧ符号化における、ＡＣ係数とＺＲＬ符号とＥＯＢ符号の関係をさらに詳細に説明する図である。
【００８２】
なお、ＪＰＥＧでは、８×８＝６４個のデータを最小単位ＭＣＵとし、このＭＣＵごとに符号化を行なうが、ここでは、１ブロック＝３２個のデータ、ＺＲＬ＝８個のゼロ、と仮定して説明する。これは、図を見易くするためであるが、状況はどちらも変わらない。
【００８３】
ここで、ＡＣ成分の符号化に際しては、図５を用いて説明したように、ＭＣＵ内でＡＣ成分をジグザグスキャンして、連続する“０”成分を数えながら“０”でない成分を見つける。そして、“０”でない成分の有効ビット数SSSSを求める。そして、“０”成分の連続個数（ｒｕｎ）と有効ビット数SSSSの組合せを符号化して、データ列に加える。また、“０”でない成分の下位有効ビット数SSSSをデータ列に加える。
【００８４】
ただし、この処理フローにはさらに例外処理として、図５を用いて説明したように、優先基準に合致しているか否かにに応じたループ処理を行なう優先処理（Ｓ３３６，３３８，３７０）と、従属基準に合致しているか否かにに応じたループ処理を行なう従属処理（Ｓ３５０，３５２）とがある。
【００８５】
たとえば、図６に示すように、最後のＡＣ成分が“０”の場合には、その前に“０”成分が幾つ続いていても、最終ブロック信号ＥＯＢを出力して、そのブロックに対する処理を終了するのである。また、ｒｕｎの値が“７”（実際のＪＰＥＧでは“１５”；以下同様）、を越えた場合には、ｒｕｎの値をリセットしてゼロ長数信号ＺＲＬを出力するのである。
【００８６】
したがって、図６（Ａ）に示すように、ｒｕｎの値が“７”を越えない範囲で“０”が連続している場合には、ノンゼロが現われると直ちにＡＣ符号を発生すればよいし、最後尾側でのゼロは、纏めてＥＯＢ符号に変換すればよい。
【００８７】
一方、処理対象ブロックのデータ系列によっては、ゼロ長数信号ＺＲＬの発生よりも、最終ブロック信号ＥＯＢの発生の方を優先させなければならないことが起こり得る。たとえば、ｒｕｎの値が“７”を越える場合には、ゼロ長数信号ＺＲＬを出力する対象となり得るのであるが、それが最後尾まで続くか否かによってゼロ長数信号ＺＲＬの発生可否が規定されるので、ｒｕｎの値が“７”を越える場合でも、即時にゼロ長数信号ＺＲＬを出力することはできない。“０”が連続して最後尾まで続く場合は、ゼロ長数信号ＺＲＬを出力する対象となり得る場合であっても、最終ブロック信号ＥＯＢの発生を優先させる必要があるからである。
【００８８】
たとえば、図６（Ｂ）に示すように、ｒｕｎの値が“７”を越える場合でも、即時にゼロ長数信号ＺＲＬを出力することはできず、ノンゼロが現われたときに、ＡＣ符号を発生するのに合わせて、ゼロ長数信号ＺＲＬを出力する必要がある。つまり、ノンゼロが現われたときに、それまでにゼロが連続して８個出現していた場合にはＺＲＬ符号に変換する。このため、ノンゼロのＡＣ成分が現れたときに、複数の符号（ＡＣ符号とＺＲＬ符号）を発生することが必要になってしまう。
【００８９】
また、図６（Ｃ）に示すように、ｒｕｎの値が“７”を越え、かつ連続して最後尾まで続く場合には、ゼロ長数信号ＺＲＬを出力することなく、最終ブロック信号ＥＯＢを発生させなければならない。
【００９０】
結局の所、ｒｕｎの値が“７”を越える場合には、最後尾のＡＣ成分が“０”であるのかノンゼロであるのかによってゼロ長数信号ＺＲＬの出力可否が規定されるので、最後尾のＡＣ成分がメイン基準（ＺＺ（Ｋ）＝０）を満たすか否かの判定処理をした後でないと、ゼロ長数信号ＺＲＬの出力を行なうことができないのである。
【００９１】
このような処理をするためには、“０”が連続して８個（ＪＰＥＧのＡＣ符号化の場合には１６個）現れても、ＺＲＬ符号の発行を保留しておき、ノンゼロ係数が現れた時点で、それまでの“０”の連続個数を判定して、ＺＲＬ符号の発行（必要があれば複数回数）とＡＣ符号の発行を実行する必要がある。
【００９２】
＜解決手法＞
図７は、上述した従来のＪＰＥＧ符号化処理の問題を解決する本実施形態による処理手法と、ＡＣ係数とＺＲＬ符号とＥＯＢ符号の関係を説明する図である。また、図８は、本実施形態でのＪＰＥＧ符号化処理手順を示したフローチャートである。また、図９は、本実施形態のデータ処理手順（ＪＰＥＧ符号化処理手順）における、ブロック内のデータスキャン順を説明する図である。
【００９３】
先ず、図７（Ａ１），（Ｂ１）に示すように、前段処理部１１０においてＤＣＴ計算と量子化処理とを行なった処理順にデータを第１バッファメモリ部１２０に１ブロック分保存する（Ｓ４０２）。そして、フラグ付加部１３０のＥＯＢ処理部１３２は、本来の処理順とは逆順、すなわち図９（Ａ）に示すようにジグザグスキャンの逆順に、末尾側から順にデータを第１バッファメモリ部１２０から取り込んで、最後尾側から、順にＡＣ成分が“０”であるのかノンゼロであるのかを予め判定する（Ｓ４１０〜４１４）。そして、ＡＣ成分が“０”であるときには、その判定結果を示すフラグを元のデータと対応付けて第２バッファメモリ部１４０に保存しておく（Ｓ４１４−ＹＥＳ，Ｓ４１５）。また、最後尾側から最初にノンゼロが現われた後には、ＡＣ成分がノンゼロであるのか“０”であるのかを問わず、そのＡＣ成分をそのまま第２バッファメモリ部１４０に保存しておく（Ｓ４１４−ＮＯ，Ｓ４１６〜Ｓ４１９）。
【００９４】
具体的には、図７（Ａ１），（Ｂ１）に示すように末尾側に連続して“０”が存在すると、図７（Ａ２），（Ｂ２）に示すように、その“０”をエンドフラグｅに置き換えて第２バッファメモリ部１４０に保存するし、最後尾側から最初にノンゼロが現われた後にはそのＡＣ成分をそのまま第２バッファメモリ部１４０に保存する。つまり、末尾のデータから順に連続して現れるゼロを判定してエンドフラグｅを付加し、この処理後のデータを第２バッファメモリ部１４０に１ブロック分保存する。
【００９５】
次に後段処理部１５０のエントロピー符号化部１５２は、オペレータＫ，Ｒをリセットした後（Ｓ４３０）、図７（Ａ３），（Ｂ３）に示すように、本来の順に、すなわち図９（Ｂ）に示すようにジグザグスキャンの正順に、先頭側から順にデータを第２バッファメモリ部１４０から取り込んで、連続する“０”成分を数えながら、エンドフラグｅや“０”でない成分（エンドフラグｅを除く）を見つける（Ｓ４３２，Ｓ４３４）。
【００９６】
そして、図７（Ａ３），（Ｂ３）に示すように、エントロピー符号化部１５２は、エンドフラグｅが現われると直ちにＥＯＢ符号を発生する（Ｓ４３４−フラグ，Ｓ４７０）。また、処理サイクルの調整のため、ブロック内の最終番目となるまで処理サイクルを空回りさせ（Ｓ４７２−ＮＯ，Ｓ４７４）、ブロック内の最終番目となったらそのブロックについての処理を完了させる（Ｓ４７２−ＹＥＳ）。
【００９７】
第２バッファメモリ部１４０からジグザグスキャン順にデータを読み出したときにエンドフラグｅが現われた後には、最後尾までエンドフラグｅが続くことになるので、第１バッファメモリ部１２０に保存しておいた元のデータとしてはゼロ長数信号ＺＲＬを出力する対象となり得る場合であっても、第２バッファメモリ部１４０から読み出したデータを取り扱う限り、エントロピー符号化部１５２は、“０”を検知することがないので、確実に、ゼロ長数信号ＺＲＬの出力よりもＥＯＢ信号の出力を優先させることができる。
【００９８】
また、エントロピー符号化部１５２は、“０”成分が現われると、従属ループ処理における判定条件であるゼロの連続数を監視するのためのオペレータＲに“１”を加えた後に（Ｓ４３５）、連続する“０”成分が“８”（ＪＰＥＧ符号化の場合には“１６”；以下同様）であるか否かを判定する（Ｓ４５０）。そして、エントロピー符号化部１５２は、連続する“０”成分が“８”でなければステップＳ４３２に戻って次の処理対象データの処理に移行するし（Ｓ４５０−ＮＯ）、図７（Ａ２）に示すように、連続する“０”成分が“８”になると、直ちにＺＲＬ符号を発生する（Ｓ４５０−ＹＥＳ，Ｓ４５２）。また、エントロピー符号化部１５２は、図７（Ａ３），（Ｂ３）に示すように、ノンゼロ（エンドフラグｅを除く）が現われると直ちにＡＣ符号を発生する（Ｓ４３４−ＮＯ，Ｓ４５４）。
【００９９】
この後、従属ループ処理におけ条件判定のためのオペレータＲをゼロ（０）にリセットし（Ｓ４５６）、ブロックの最後尾のデータでないときにはステップＳ４３２に戻って次の処理対象データの処理に移行するが（Ｓ４５８−ＮＯ）、ブロックの最後尾のデータであるときにはそのブロックについての処理を完了させる（Ｓ４５８−ＹＥＳ）。
【０１００】
ステップＳ４３２〜Ｓ４５８もしくはステップＳ４７０を行なうことで、エントロピー符号化部１５２は、第２バッファメモリ部１４０からジグザグスキャン順にデータを読み出してデータ判定を行なうことで、ＡＣ符号、ＺＲＬ符号、およびＥＯＢ符号の何れかの出力を直ちに確定させることができるので、データの内容によらず、一定のサイクル数で処理することができるようになる。
【０１０１】
たとえば、ＪＰＥＧにおけるＡＣ符号化処理であれば、ゼロが１６個現れたら即時にＺＲＬ符号を発行することができ、エンドフラグｅが現れたら即時にＥＯＢ符号を発行することができる。ＺＲＬ符号の発行を保留する必要がないし、図６（Ｂ）に示したようにノンゼロの係数が現れたときに複数の符号を発生することも必要ないので、６３個の係数を必ず６３サイクルで処理する回路を容易に構成することができ、制御回路が単純なものになる。
【０１０２】
これにより、比較的単純な構造の制御回路で制御可能なデータパスを構成することができるようになり、たとえば「ＡＬＵアレイのパイプラインで構成されたプログラマブルデバイス」でも容易にＪＰＥＧなどの画像処理装置を実装することが可能となる。
【０１０３】
なお、エンドフラグｅが現れた時点で次のブロックの処理に移ることによって、処理の高速化を図ることもできるが、こうしてしまうと、データの内容によって処理サイクル数に違いができてくるので、ＡＬＵアレイに不向きな構成になってしまう。
【０１０４】
もちろん、ＡＳＩＣやＦＰＧＡなどの回路構成においても、このような処理を実装することもできるので、回路規模削減や設計難易度の容易化、あるいは動作クロック周波数の向上などの効果を期待することができる。この場合、ＡＬＵアレイを用いた構成とは異なり、エンドフラグｅが現れた時点で次のブロックの処理に移ることによって、処理の高速化を図ることは有効である。
【０１０５】
なお、前述の具体的な事例では、ある判定処理よりも本来の処理順におけるより後段側のデータに基づく他の判定処理の方が優先される判定処理ループを持つデータ処理の典型的なものとして、ＪＰＥＧにおけるＡＣ符号化処理を一例として、本願発明を適用した事例で説明したが、ＡＣ符号化処理以外の符号化処理や、その他のデータ処理にも同様に適用できる。
【０１０６】
また、「ＡＬＵアレイのパイプラインで構成されたプログラマブルデバイス」あるいはＡＳＩＣやＦＰＧＡなどのハードウェア回路を用いて実現することに限らず、図８に示したフローチャート通りにソフトウェア処理を記述することでも実現することができる。よって、本発明に係るデータ処理技術（画像処理技術）は、電子計算機（コンピュータ）を用いてソフトウェアで実現することもでき、本発明に係るデータ処理装置（画像処理装置や符号化装置など）を、電子計算機を用いてソフトウェアで実現するために好適なプログラムあるいはこのプログラムを格納したコンピュータ読取可能な記憶媒体を発明として抽出することもできるのである。
【図面の簡単な説明】
【０１０７】
【図１】本発明に係るデータ処理装置の基本構成を示す回路ブロック図である。
【図２】ループ処理を包含したデータ処理の基本事例を示すフローチャートである。
【図３】本実施形態のデータ処理装置の処理手順を説明するフローチャートである。
【図４】本発明に係るデータ処理装置の変形構成を示す回路ブロック図である。
【図５】ＪＰＥＧ符号化処理におけるＡＣ係数のエンコード処理を説明する図である。
【図６】ＪＰＥＧ符号化における、ＡＣ係数とＺＲＬ符号とＥＯＢ符号の関係を説明する図である。
【図７】従来のＪＰＥＧ符号化処理の問題を解決する本実施形態による処理手法と、ＡＣ係数とＺＲＬ符号とＥＯＢ符号の関係を説明する図である。
【図８】本実施形態でのＪＰＥＧ符号化処理手順を示したフローチャートである。
【図９】本実施形態のＪＰＥＧ符号化処理手順における、ブロック内のデータスキャン順を説明する図である。
【図１０】非特許文献１に記載の仕組みを示す図である。
【図１１】非特許文献２，３に記載の仕組みを示す図である。
【図１２】特許文献１に記載の仕組みを示す図である。
【図１３】非特許文献４に記載の仕組みを示す図である。
【符号の説明】
【０１０８】
１…データ処理装置、３…置換処理部、１１０…前段処理部、１１２…ＤＣＴ計算部、１１４…量子化計算部、１２０…第１バッファメモリ部、１２２，１２４…バッファメモリ、１３０…フラグ付加部、１３２…ＥＯＢ処理部、１４０…第２バッファメモリ部、１４２，１４４…バッファメモリ、１５０…後段処理部、１５２…エントロピー符号化部、１５４…バイトパッキング部
【図１】
0004582413.tif 000002
【図２】
0004582413.tif 000003
【図３】
0004582413.tif 000004
【図４】
0004582413.tif 000005
【図５】
0004582413.tif 000006
【図６】
0004582413.tif 000007
【図７】
0004582413.tif 000008
【図８】
0004582413.tif 000009
【図９】
0004582413.tif 000010
【図１２】
0004582413.tif 000011
【図１０】
0004582413.tif 000012
【図１１】
0004582413.tif 000013
【図１３】
0004582413.tif 000014