(57)【要約】【課題】並列演算の高速化を図る。【解決手段】ＭＰＥＧ動画圧縮に代表される動きベクトル検出において、各プロセッサ（１００〜１０３，１１０〜１１３，１２０〜１２３，１３０〜１３３）は、ローカルメモリ（１２）に設定された画素データとブロードキャストバス（３０１）から入力する画素データとの差分計算と同時に、次に差分計算を行う画素データを隣接するプロセッサからローカルメモリに設定可能とし、検出画像の画像データを重複することなく各プロセッサに配置することにより、ローカルメモリの有効利用を図り、プロセッサにシフトブロックを再設定するためのオーバーヘッドを防ぐことで並列演算の高速化を達成する。【選択図】        図１
2004234407.tif 000002
【特許請求の範囲】
【請求項１】
それぞれ演算器とローカルメモリとを含み、アレイ状に配列された複数のプロセッサと、
上記プロセッサの動作を制御可能な制御ユニットと、
上記制御ユニットから全ての上記プロセッサへのデータ転送を可能とするブロードキャストバスと、
上記制御ユニットによって指定されたプロセッサから上記制御ユニットへのデータ転送を可能とする共通バスと、を含み、
上記各プロセッサは、互いに隣接するプロセッサ間で上記ローカルメモリを介したデータ授受が可能とされ、上記ブロードキャストバスから逐次的に入力されるデータと各ローカルメモリ上のデータとの演算が上記演算器で行われるのとほぼ同時に、当該演算に用いたデータを隣接プロセッサのローカルメモリに伝達可能に構成したことを特徴とするデータ処理装置。
【請求項２】
上記各プロセッサにおけるローカルメモリは、同時並列に動作可能な２つのメモリを含んで成る請求項１記載のデータ処理装置。
【請求項３】
上記ローカルメモリは、少なくとも１リードと１ライトが同時に動作可能なランダム・アクセス・メモリを含んで成る請求項１又は２記載のデータ処理装置。
【請求項４】
上記各プロセッサには２次元のアドレスが割り当てられ、上記制御ユニットからのローカルメモリ及び各種レジスタへの書き込み命令に対し、上記制御ユニットが両次元のアドレスを指定した場合にはそのアドレスのプロセッサだけが実行し、一方の次元だけを指定した場合にはその次元が一致するプロセッサが実行するように構成された請求項１乃至３何れか１項記載のデータ処理装置。
【請求項５】
上記プロセッサに含まれる演算器は、上記ブロードキャストバスと各ローカルメモリ上のデータとの差の絶対値を累積加算する演算機能を有し、上記制御ユニットは上記累積加算の結果としてのデータの最小値を持つプロセッサのアドレスを検出する機能を有し、上記制御ユニットは最小値を持つプロセッサのアドレスから各次元の所望の方向にローカルメモリの内容を移動可能に構成された請求項４記載のデータ処理装置。
【請求項６】
Ｎを１以上の整数とするとき、上記ブロードキャストバス及び上記ローカルメモリのビット幅を８×Ｎビットで構成し、上記ローカルメモリと上記演算器間には８ビット単位でデータをシフト可能な８ビット×２Ｎワードシフトレジスタを設け、上記演算器は、上記ブロードキャストバスの８×Ｎビットに対する上記ローカルメモリの８×Ｎビット演算と、上記ブロードキャストバスの任意８ビットに対するシフトレジスタを介した上記ローカルメモリの８ビット×Ｎワード演算が選択可能に構成された請求項１乃至５何れか１項記載のデータ処理装置。
【請求項７】
複数のプロセッサに検出範囲の画像が均等配置された後、全プロセッサは各ローカルメモリに配置された画素位置から始まる画像データとブロードキャストバスから逐次的に入力する検出画像とのフレーム差を並列計算し、フレーム差の最も小さい画像データを持つプロセッサを中心にして隣接するプロセッサに配置した画素位置間を次の検出範囲とするようにローカルメモリの内容をシフトして再びフレーム差を並列計算していくことを、隣接するプロセッサに配置する画素間隔が１画素になるまで反復する請求項１乃至６の何れか１項記載のデータ処理装置。
【請求項８】
一つの半導体基板にＳＩＭＤ型ＤＳＰとして構成された請求項１乃至７何れか１項記載のデータ処理装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、画像処理、ニューラルネットワークなどの並列アルゴリズムを処理するための複数のプロセッサを搭載した半導体集積回路（ＬＳＩ）からなるデータ処理装置に関する。
【０００２】
【従来の技術】
動画圧縮規格として、ＭＰＥＧ（ＩＳＯ／ＩＥＣ１４４９６−２（ＭＰＥＧ４），ＩＳＯ／ＩＥＣ１３８１３−２（ＭＰＥＧ２），ＩＳＯ／ＩＥＣ１１１７２−２（ＭＰＥＧ１））が知られている。この動画圧縮規格によれば、ディジタル化された画像をブロック分割して各ブロック毎に動きベクトルを検出し、ＤＣＴ（離散コサイン変換）、及び量子化処理を施し、ハフマン符号化して画像データを圧縮する。このとき、動きベクトル検出は、画像フレームを１６×１６画素のマクロブロックに分割し、時間的に前あるいは後のフレームのマクロブロック周囲から、現フレームのマクロブロックと差分が最も小さい１６×１６画素（シフトブロック）位置を検出する。あるいは、マクロブロックをさらに４分割した８×８画素のブロック単位で差分が最も小さい８×８画素のシフトブロック位置を検出する。この位置ベクトルとの差分（フレーム差）を現フレームのデータとすることでＤＣＴ以降の符号化のための情報量を小さくすることができる。
【０００３】
動画圧縮を含めた画像処理は、比較的単純な計算アルゴリズムの反復であり、同一命令に対するデータ並列性が大きい。そのため、画像処理の高速化には、ＳＩＭＤ（Ｓｉｎｇｌｅ  Ｉｎｓｔｒｕｃｔｉｏｎ  Ｍｕｌｔｉｐｌｅ  Ｄａｔａ  ｓｔｒｅａｍ）型並列計算手法が適する。ＳＩＭＤ型並列計算アーキテクチャの実現例としては、汎用型ニューロコンピュータがある（例えば特許文献参照）。汎用型ニューロコンピュータのアーキテクチャは、複数のプロセッサと１つの制御系からなり、制御系が全プロセッサへ共通の命令とデータをブロードキャストして動作する。各プロセッサはローカルメモリや演算器を持つ。制御系は書き換え可能なプログラムメモリやグローバルメモリを持つ。制御系とプロセッサ間のデータの授受は、制御系から全プロセッサにデータを伝達するブロードキャストバスと、アドレス信号で指定する任意１つのプロセッサがトライステートバッファを介して制御系にデータを伝達する共通バスによって行われる。制御系では、ブロードキャストバスを介して全プロセッサに伝達するデータを、制御系内のメモリ上のデータ、または制御系が共通バスを介して任意１つのプロセッサから受け取ったデータとから選択できる。また、制御系からの命令は、アドレス信号で指定する１つのプロセッサだけを指定して実行させることも可能である。これにより、制御系による各プロセッサのローカルメモリの初期設定、及びプロセッサ間の１：Ｎデータ伝達が可能となる。汎用型ニューロコンピュータにおいて、制御系からブロードキャストされる単一の命令で制御される複数のプロセッサの個々がニューロン（神経細胞）の模倣単位となり、制御系を介して全プロセッサにブロードキャストされる入力データに対して、各プロセッサが個々に持つローカルメモリ内の重み値データを演算することでニューラルネットワークの動作を模倣する。制御系のプログラムを書き換えることによって、バックプロパゲーションに代表されるニューロアルゴリズムを始め、その他のニューロアルゴリズ、あるいはニューロ以外のアルゴリズムを汎用的に並列計算することが可能とされる。
【０００４】
上記アーキテクチャを画像処理の動きベクトル検出に適用すると、複数のプロセッサをシフトブロックの計算単位とすることがきる。すなわち、１フレーム前画像上にある動きベクトル検出範囲のシフトブロック（１６×１６画素の複数）をプロセッサ（複数）のローカルメモリに初期設定する。現フレームの動きベクトル検出画像（１６×１６画素のマクロブロック）を制御系から全プロセッサにブロードキャストする。各プロセッサは、ブロードキャストされるデータとローカルメモリ内のデータのフレーム差を演算する。制御系は全プロセッサのフレーム差を比較することで最小となるプロセッサに設定したシフトブロックの画像位置を動きベクトル位置として検出することができる。
【０００５】
【特許文献】
特許公開２０００−１６３３８４公報
【０００６】
【発明が解決しようとする課題】
ＭＰＥＧ画像圧縮処理のための処理量は非常に大きく、特に動きベクトル検出処理のデータ量は膨大である。動きベクトル検出において、最も単純な“動き補償フレーム間符号化”では、１フレーム前のマクロブロックの周り±１５画素が検出範囲とされ、現フレームのマクロブロックとの比較対象となるシフトブロックは９６１個存在する。全てのマクロブロックとブロックマッチングを行うフルサーチの場合、１マクロブロック当たりマクロブロック内画素数２５６個の９６１倍の演算量を要する。例えば、ＶＧＡ（画素サイズ６４０×４８０）についての演算量は２７８メガ［回］以上であり、１秒間に３０フレームを処理する場合８ギガ［回／秒］の処理を要する。この処理を半導体集積回路の単一の演算器で行う場合、十ギガオーダの動作周波数が必要であることを意味し、そのままディジタルビデオカメラなどの低消費電力で駆動する携帯型家電に実装することは実質的に困難である。
【０００７】
汎用型ニューロコンピュータのアーキテクチャでは、フレーム差の演算に先立ち、シフトブロックを各プロセッサのローカルメモリに初期設定する必要がある。シフトブロックは画素データが重複している（１６×１６画素を行列として説明すると隣接するシフトブロック間では、最初と最後の行あるいは列を除いた画素データが同じである）ため、シフトブロック毎に１プロセッサを割り当てた場合、プロセッサのローカルメモリに多くの同一データが設定されることになり、システム全体として非効率である。具体的には、マクロブロックの±１５画素の検出範囲における画素数は２，１１６画素であるのに対し、シフトブロック（２５６画素）に分割して全てのシフトブロック（９６１個）を合計すると２４６，０１６画素データとなり、２４３，９００画素データを重複して持つことになる。
【０００８】
また、シフトブロックの個々にプロセッサを設けるには９６１個以上のプロセッサを実装する必要がありハードウェアの小型化が困難であるため、物理的なプロセッサ数はシフトブロック数より少なくし、各プロセッサを時分割に多重化して割り当てる仮想方式（仮想プロセッシング）とする必要がある。このとき、ローカルメモリの物理的容量には限界があるため、各プロセッサにシフトブロックを再設定するためのオーバヘッドが発生し、結果的に並列演算による高速化が阻害される。
【０００９】
本発明の目的は、並列演算処理の高速化を図るための技術を提供することにある。
【００１０】
本発明の前記並びにその他の目的と新規な特徴は本明細書の記述及び添付図面から明らかになるであろう。
【００１１】
【課題を解決するための手段】
本願において開示される発明のうち代表的なものの概要を簡単に説明すれば下記の通りである。
【００１２】
すなわち、それぞれ演算器とローカルメモリとを含み、アレイ状に配列された複数のプロセッサと、上記プロセッサの動作を制御可能な制御ユニットと、上記制御ユニットから全プロセッサへデータを転送するブロードキャストバスと、制御ユニットが指定する任意１つのプロセッサが上記制御ユニットにデータを転送する共通バスとを設け、上記各プロセッサは、互いに隣接するプロセッサ間で上記ローカルメモリを介したデータ授受が可能とされ、上記ブロードキャストバスから逐次的に入力されるデータと各ローカルメモリ上のデータとの演算が上記演算器で行われるのと並列に、当該演算に用いたデータを隣接プロセッサのローカルメモリに伝達可能に構成する。
【００１３】
例えばＭＰＥＧ動画圧縮に代表される動きベクトル検出において、各プロセッサは、ローカルメモリに設定された画素データとブロードキャストバスから入力する画素データとの差分計算と同時に、次に差分計算を行う画素データを隣接するプロセッサからローカルメモリに設定することができるので、検出画像の画像データを重複することなく各プロセッサに配置することができる。このことが、ローカルメモリの有効利用を達成する。
【００１４】
また、隣接するプロセッサからの受け取る画像データの複数をローカルメモリに貯えることができるので、物理的なプロセッサ数がシフトブロック数より少ない場合、プロセッサの仮想数（シフトブロック数／プロセッサ数）に等しい画素間隔のシフトブロックを各プロセッサのローカルメモリに配置することで各プロセッサは自身のローカルメモリの画素データと隣接するプロセッサから受け取った画素データとを用いて上記画素間隔の間の任意画素位置を先頭とするシフトブロックについてフレーム差計算が可能となり、このことが、仮想によるローカルメモリの書き換えのオーバヘッドを解消する。
【００１５】
任意Ｍビット数の加減算回路はＮ分のＭビットの加減算回路のＮ個について桁上げ（キャリー）信号の入力と出力を接続して構成することができるので、８ビット加減算回路をＮ個用いてそれらの桁上げ信号の入出力を制御するといった比較的僅かな回路追加で８×Ｎビット演算回路に８ビット×Ｎワードの並列加減算機能を追加することができる。そのため、ブロードキャストバス及びローカルメモリのビット幅を８×Ｎビットで構成すれば、ＭＰＥＧの離散コサイン変換などの８ビット以上の演算精度が必要な処理のための８×Ｎビット演算機能に、回路規模を大きく増大させること無く、８ビットを画素データとするＭＰＥＧの動きベクトル検出のための８ビット×Ｎワード演算機能を追加することができ、このことが、ベクトル検出の処理時間をＮ分の１に短縮する。
【００１６】
さらに、動きベクトル検出の簡易的な高速化手法として、複数のプロセッサに検出範囲の画像が均等配置された後、全プロセッサは各ローカルメモリに配置された画素位置から始まる画像データとブロードキャストバスから逐次的に入力される検出画像とのフレーム差を並列演算し、フレーム差の最も小さい画像データを持つプロセッサを中心にして隣接するプロセッサに配置した画素位置間を次の検出範囲とするようにローカルメモリの内容をシフトして再びフレーム差を並列計算していくことを、隣接プロセッサに配置する画素間隔が１画素になるまで反復するように動作させる。
【００１７】
プロセッサ数Ｐ×Ｐ個、シフトブロック数をＭ×Ｍ個としてＭ＝ｎ×Ｐ（すなわち１次元当たりの仮想度ｎ）としたとき、画像ブロックのフレーム差の反復回数は、フルサーチの場合にｎの２乗回（すなわち画像は２次元のため仮想度はｎの２乗）の反復回数を必要とするのに対し、上記動きベクトル検出の高速化手法を用いると、ｌｏｇ（Ｐ底のｎ）＋１回の反復回数ですむ。例えば、プロセッサ数を４×４個としたシステムによる動き補償フレーム間符号化では検出範囲をマクロブロックの周囲±１５画素とするとシフトブロック数は３１×３１個であるため、フルサーチの為には画像ブロックのフレーム差の反復回数が６４回必要であるのに対して３回で済む。
【００１８】
画素密度の大きい画像処理機能を例えばディジタルビデオカメラなどの低消費電力で駆動する携帯型家電に実装可能な半導体集積回路（電子部品）で提供することができる。
【００１９】
【発明の実施の形態】
図１には、本発明にかかる半導体集積回路の一例であるＳＩＭＤ型並列ＤＳＰ（ディジタル・シグナル・プロセッサ）が示される。このＳＩＭＤ型並列ＤＳＰ３０は、特に制限されないが、公知の半導体集積回路製造技術により、単結晶シリコン基板などの一つの半導体基板に形成される。図１に示されるＳＩＭＤ型並列ＤＳＰ３０は、特に制限されないが、制御ユニット１、プロセッサアレイ２、メモリユニット４０４，４１４，４２４，４３４，４４０，４４１，４４２，４４３，４４４を含む。
【００２０】
上記プロセッサアレイ２は、特に制限されないが、プロセッサ１００〜１０３，１１０〜１１３，１２０〜１２３，１３０〜１３３がアレイ状に配列されて成る。このプロセッサ１００〜１０３，１１０〜１１３，１２０〜１２３，１３０〜１３３は互いに同一構成とされる。例えばプロセッサ１００は、所定の演算処理を行うための演算器ユニット１１と、この演算器ユニット１１での演算処理に供されるデータを記憶可能なローカルメモリユニット１２と、上記演算器ユニット１１での演算結果をこのプロセッサ１００の外部に出力するためのトライステートバッファ１３とを含む。上記ローカルメモリユニット１２やメモリユニット４０４，４１４，４２４，４３４，４４０，４４１，４４２，４４３，４４４は、特に制限されないが、二つのデュアルポートＲＡＭ（ランダム・アクセス・メモリ）を含んで成る。
【００２１】
上記制御ユニット１は、外部制御手段としてのメインＣＰＵ（中央処理装置）や、外部メモリに結合され、各種制御信号や処理対象とされる画像データは上記制御ユニット１を介して取り込まれる。
【００２２】
また、命令バス３００、及びブロードキャストバスデータバス３０１を介してプロセッサアレイ２に結合されており、プロセッサアレイ２は、上記制御ユニット１によって動作制御される。上記制御ユニット１は、メモリ共通バス３０３を介してメモリユニット４０４，４１４，４２４，４３４，４４０，４４１，４４２，４４３，４４４に結合され、メモリユニット４０４，４１４，４２４，４３４，４４０，４４１，４４２，４４３，４４４は、上記制御ユニット１によって動作制御される。
【００２３】
個々のプロセッサ１００〜１０３，１１０〜１１３，１２０〜１２３，１３０〜１３３において、演算ユニット１３は、命令バス３００と、ブロードキャストデータバス３０１に結合されており、命令バス３００を介して伝達された命令に基づいて、ローカルメモリユニット１２やブロードキャストデータバス３０１を介して伝達されたデータの演算処理を行う。
【００２４】
個々のプロセッサ１００〜１０３，１１０〜１１３，１２０〜１２３，１３０〜１３３におけるローカルメモリユニット１２は、行方向及び列方向にデータの伝達が可能にデータ伝送路を介して結合される。また、このプロセッサアレイ２におけるデータ授受の終端は、対応するメモリユニット４０４，４１４，４２４，４３４，４４０，４４１，４４２，４４３，４４４に結合される。
【００２５】
図２には、上記プロセッサ１００の構成例が示される。
【００２６】
図２に示されるように、上記プロセッサ１００は、演算器ユニット１１、ローカルメモリユニット１２、及びトライステートバッファ１３とを含む。
【００２７】
上記演算器ユニット１１は、プロセッサ制御回路１１０１、ラッチ回路１１０２，１１０５，１１０７，１１２，１１１４、汎用レジスタファイル１１０３、乗算器１１０４、コンディションコードレジスタ（ＣＣＲ）１１０６、累積レジスタ１１０８、ＡＬＵ（算術論理演算ユニット）１１０９、ＳＢＲ（シフトビットレジスタ）１１１０、シフタ１１１１、差分絶対値演算器１１１３を含む。
【００２８】
ラッチ回路１１０２は、特に制限されないが、３２ビット構成のブロードキャストデータバス３０１を介して伝達されたデータを保持する。この保持データは、ローカルメモリユニット１２、乗算器１１０４、ＡＬＵ１１０９、及び差分絶対値演算器１１１３へ伝達される。
【００２９】
プロセッサ制御回路１１０１は、命令バス３００を介して伝達された命令をデコードし、Ｘプロセッサ選択信号、Ｙプロセッサ選択信号、さらにはコンディションコードレジスタ１１０６からのコンディションコードに基づいて当該プロセッサ１００における各回路の制御信号を生成する。
【００３０】
乗算器１１０４は、２４ビット構成の乗算器入力▲１▼ラインのデータと、２４ビット構成の乗算器入力▲２▼ラインのデータとの乗算を行う。この乗算結果は後段のラッチ回路１１０５を介して、４８ビット構成のシフタ入力▲１▼ラインへ伝達される。
【００３１】
ＡＬＵ１１０９は、３２ビット構成のＡＬＵ入力▲１▼ラインのデータと、３２ビット構成のＡＬＵ入力▲２▼ラインのデータとについて、上記制御信号に呼応した算術論理演算を行う。この論理演算結果は、ラッチ回路１１０７介して３２ビット構成のＬＭ書込みライン、３２ビット構成のＲＦ書込みライン、２４ビット構成の乗算器入力▲１▼ライン、４８ビット構成のシフタ入力▲１▼ライン、及び後述のＳＢＲ（シフトビットレジスタ）１１１０に伝達される。このとき、乗算器▲１▼ラインへは、ラッチ１１０７の出力の上位（ＭＳＢ側）２４ビットが伝達される。また、シフタ入力▲１▼ラインへは、上位（ＭＳＢ側）３２ビットが伝達される（下位１６ビットは論理値“０”）。また、上記ＡＬＵ１１０９での算術論理演算結果は、累積レジスタ１１０８に伝達される。
【００３２】
累積レジスタ１１０８は、上記制御信号に呼応して上記ＡＬＵ１１０９より伝達されたデータが書込まれる。累積レジスタ１１０８の出力信号は、上記ＡＬＵ入力▲２▼ラインに伝達される。
【００３３】
ＳＢＲ（シフトビットレジスタ）１１１０は、７ビット構成とされ、上記制御信号に呼応してラッチ１１０７の出力データの下位（ＬＳＢ側）７ビットが書込まれる。このとき、書込みデータに対して、２の補数表現としたオーバーフロー処理がなされる。すなわち、書込みデータが−６４〜６３の場合にはその値が書込まれ、−６４以下の場合は−６４が書込まれ、６３以上では６３が書込まれる。尚、ＳＢＲ１１１０の出力は、後述のシフタ１１１１の他に上記ＡＬＵ入力▲２▼ラインに伝達される。
【００３４】
シフタ１１１１は、４８ビット構成のシフタ入力▲１▼ラインを介して伝達された入力データについて、上記信号に呼応した算術論理シフト演算を行う。シフト量は、上記制御信号に呼応して、上記制御信号で指定された固定値、又はＳＢＲ１１１０の出力値とされる。すなわち、シフト量は７ビットの２の補数表現とされ、シフト量が−１〜−３２の場合は、入力された４８ビットデータを、右１〜３２ビットシフトした結果の４８ビットデータの上位（ＭＳＢ側）３２ビットを算術論理シフト演算結果となるように動作する。シフト量が０〜４８の場合は、入力された４８ビットデータを、左１〜４８ビットシフトした結果の４８ビットデータの上位（ＭＳＢ側）３２ビットを算術論理シフト演算結果となるように動作する。シフト量が−３２ビット以下の場合は、シフト量が−３２ビットの場合と同じ動作とされ、シフト量が４８以上の場合は、シフト量が４８の場合と同じ動作とされる。このシフタ１１１１の算術論理シフト演算結果は、ラッチ１１１２を介して、３２ビット構成のＬＭ書込みライン、３２ビット構成のＲＦ書込みライン、２４ビット構成の乗算器入力▲２▼ライン、３２ビット構成のＡＬＵ入力▲１▼ライン、及び３２ビット構成のＡＬＵ入力▲２▼ラインに伝達される。このとき、乗算器入力▲２▼ラインへは、ラッチ１１１２の出力の上位（ＭＳＢ側）２４ビットが伝達される。
【００３５】
差分絶対値演算器１１１３は、３２ビット構成の差分絶対値演算器入力▲１▼ラインからのデータと、３２ビット構成の差分絶対値演算器入力▲２▼ラインからのデータとの差分演算を行う。この差分絶対値演算結果は、後段のラッチ回路１１１４を介して上記ＡＬＵ入力▲１▼ラインに伝達される。
【００３６】
汎用レジスタファイル１１０３は、３２ビット×複数ワードのレジスタ群で構成され、１入力２出力とされる。すなわち、上記制御信号に呼応して、上記制御信号に含まれる汎用レジスタアドレス１（ＲＦＡ１）で指定されたレジスタにＲＦラインの信号が書込まれる。汎用レジスタ１１０３の２つの出力のうち、一方は、上記制御信号に含まれる汎用レジスタアドレス０（ＲＦＡ０）で指定されたレジスタのデータが出力され、差分絶対値演算器入力▲１▼ライン、乗算器入力▲１▼ライン、ＡＬＵ入力▲１▼ライン、トライステートバッファ１３、又はローカルメモリユニット１２に伝達される。汎用レジスタ１１０３の２つの出力のうちの他方は、上記汎用レジスタアドレス１（ＲＦＡ１）で指定されたレジスタのデータが出力され、乗算器入力▲２▼ライン、ＡＬＵ入力▲２▼ライン、シフタ入力▲１▼ライン、及びトライステートバッファ１３に伝達される。尚、上記書込みがなされる場合、上記出力データには書込み前のデータが出力される。
【００３７】
ブロードキャストデータバス３０１の他に、互いに隣接するプロセッサ又はローカルメモリユニット間の双方向データ転送を可能とするバス１０１０，１０２０が設けられる。上記バス１０１０，１０２０は、セレクタ１２０５，１２０６，１２０７，１２０８を介してローカルメモリ（ＬＭ０，ＬＭ１）１２０２，１２０３に接続される。セレクタ１２０７は、ローカルメモリ（ＬＭ０，ＬＭ１）１２０２，１２０４の出力データを選択的にバス１０１０、差分絶対値演算器入力▲２▼ライン、乗算器入力▲１▼ライン、シフタ入力▲１▼ライン、及びトライステートバッファに伝達する。セレクタ１２０８は、ローカルメモリ１２０２，１２０４の出力データをバス１０２０、差分絶対値演算器入力▲２▼ライン、乗算器入力▲２▼ライン、ＡＬＵ入力▲２▼ライン、シフタ入力▲１▼ライン、及びトライステートバッファに伝達する。セレクタ１２０９は、アドレス演算回路１２０１，１２０３の出力信号を選択的にＲＦ書き込みラインに伝達する。
【００３８】
ローカルメモリユニット１２は、ローカルメモリ（ＬＭ０，ＬＭ１）１２０２，１２０４、上記ローカルメモリ１２０２のアドレス信号を生成するためのアドレス演算回路１２０１、上記ローカルメモリ１２０４のアドレス信号を生成するためのアドレス演算回路１２０３、セレクタ１２０５，１２０６，１２０７，１２０８，１２０９を含む。上記ローカルメモリ１２０２，１２０３は、特に制限されないが、少なくとも１リードと１ライトが同時動作可能なランダム・アクセス・メモリ（ＲＡＭ）、例えばデュアルポート・ランダム・アクセス・メモリ（ＤＰＲＡＭ）とされる。
【００３９】
アドレス演算回路１２０１，１２０３は、それぞれ対応するローカルメモリのポインタ（ＬＭ０ＷＰ，ＬＭ０ＲＰ，ＬＭ１ＷＰ，ＬＭ１ＲＰ）を含む。このポインタは、インクリメント、デクリメントを含む加算、減算を可能とする。
【００４０】
図３には、上記プロセッサ制御回路１１０１の構成例が示される。
【００４１】
また、図４及び図５には、上記プロセッサ制御回路１１０１における実行マスク制御回路の動作の真理値表が示される。図４及び図５において、「０」は非アクティブ状態を示し、「１」はアクティブ状態を示す。「＊」はドントケア（非アクティブ状態又はアクティブ状態のどちらでも良い）であることを示す。
【００４２】
図３に示されるように、上記プロセッサ制御回路１１０１は、特に制限されないが、命令バス３００を介して伝達された命令をデコードするための命令デコード回路３１と、プロセッサ実行マスクを制御するためのプロセッサ実行マスク制御回路３２と、記憶素子の書込み制御信号と書込み許可信号とのアンド論理を得ることによって各回路への書き込み信号の制御信号を形成するためのアンド回路３３とを含む。
【００４３】
プロセッサ制御回路１１０１には、２次元に対応したグループフラグ（０，１）があり、このフラグによって制御ユニットからの命令を実行しないよう制御することができる。これを実行マスク制御という。この実行マスク制御は、図４に示されるように、命令バス３００からの命令のうちでグループフラグ以外のメモリ書き込みを無効にすることで実現される。グループフラグは、ＡＬＵ１１０９のＣＣＲのビットをセレクタで選択して設定する。これにより、複数のプロセッサに対して各々の内部状態に応じて実行マスクを制御することができる。
【００４４】
プロセッサ実行マスク制御回路３２には、このグループマスク制御の他にアドレスマスク制御があり、制御系からのプロセッサアドレス信号で指定されたプロセッサだけを選択して実行することができる。本例では、このアドレスマスクについても２次元に対応させ、ＸアドレスとＹアドレスを設けている。つまり、図４に示されるように、Ｘプロセッサ選択信号及びＹプロセッサ選択信号によってプロセッサの特定を行うことができ、片次元（Ｘ又はＹ）の同じアドレスを持つ複数のプロセッサを同時に選択動作、またはＸアドレスとＹアドレスとで選択されている唯一のプロセッサのみに動作させることができる。また、図５に示されるように、このＸアドレスとＹアドレスで選択されている唯一のプロセッサのみがトライステートバッファ１３が導通されて、汎用レジスタファイル１１０３又はローカルメモリユニット１２から命令に従って選択されたデータを共通バス３０２に出力する。
【００４５】
図６には、上記制御ユニット１の構成例が示される。
【００４６】
上記制御ユニット１は、特に制限されないが、外部メモリインタフェース６０１、外部インタフェース６０２、外部メモリインタフェース６０３、制御ユニット制御回路６０４、プログラムメモリ（ＣＳ）６０５、プログラムカウンタ制御回路６０６、命令デコーダ６０７、プロセッサポインタ制御回路６０８、最大値最小値検出回路６０９、グローバルメモリポインタ制御回路６１０、グローバルメモリ（ＧＭ）６１１、セレクタ６１２，６１３を含む。
【００４７】
外部メモリインタフェース６０１は、外部メモリとの間のインタフェースを担う。この外部メモリインタフェース６０１を介して取り込まれたプログラムは、プログラムメモリ６０５に伝達される。プログラムメモリ６０５のアドレス制御はプログラムカウンタ制御回路６０６によって行われる。プログラムカウンタ制御回路６０６はプログラムカウンタ（ＰＣ）を内蔵し、このプログラムカウンタを制御することにより、プログラムメモリ６０５の読出しアドレスを決定する。それによりプログラムメモリ６０５から制御ユニット命令や、プロセッサ命令が読出される。プログラムメモリ６０５から読出された制御ユニット命令は命令デコーダ６０７に伝達され、そこでデコードされる。制御ユニット命令のデコードにより各部の制御信号が生成される。生成された制御信号は、この制御ユニット１における各部に供給される。プログラムメモリ６０５から読出されたプロセッサ命令は、命令バス３００に伝達され、この命令バス３００を介して各プロセッサに伝達される。
【００４８】
プロセッサポインタ制御回路６０８は、Ｘプロセッサ選択信号及びＹプロセッサ選択信号を生成する。特に制限されないが、このプロセッサポインタ制御回路６０８は、Ｘプロセッサポイント情報を保持可能なＸプロセッサポイントレジスタＸＰＰＲと、Ｘプロセッサポイント情報をデコードすることによってＸプロセッサ選択信号０〜３を形成するＸアドレスデコーダ６０８Ｘと、Ｙプロセッサポイント情報を保持可能なＹプロセッサポイントレジスタＹＰＰＲと、Ｙプロセッサポイント情報をデコードすることによってＹプロセッサ選択信号０〜３を形成するＹアドレスデコーダ６０８Ｙとを含む。Ｘプロセッサポイント情報に応じて、Ｘプロセッサ選択信号０〜３の何れかがハイレベルにアサートされる。また、Ｙプロセッサポイント情報に応じてＹプロセッサ選択信号０〜３の何れかがハイレベルにアサートされる。
【００４９】
グローバルメモリ６１１は、主として画像データの記憶に使用される。グローバルメモリ６１１のポインタはグローバルメモリポインタ制御回路６１０によって制御される。グローバルメモリポインタ制御回路６１０は、グローバルメモリ６１１のリードポインタを記憶するためのグローバルメモリリードポインタ（ＧＭＲＰＲ）と、グローバルメモリ６１１のライトポインタを記憶するためのグローバルメモリライトポインタ（ＧＭＷＰＲ）とを含む。セレクタ６１２が設けられ、外部メモリインタフェース６０３、共通バス３０２、プログラムカウンタ制御回路６０６、プロセッサポインタ制御回路６０８、及び最大値最小値検出回路６０９、グローバルメモリポインタ制御回路６１０からの各種情報がセレクタ６１２を介して選択的にグローバルメモリ６１１に書き込まれるようになっている。
【００５０】
最大値最小値検出回路６０９は、共通バス３０２から取り込まれたデータを逐次的に大小比較し、プロセッサ選択アドレス（ＸアドレスとＹアドレス）の制御と合わせて最大値、又は最小値を持つプロセッサを検出する。この検出結果は、最大値プロセッサアドレスレジスタＭＡＸＰＡＲ、最大値プロセッサデータレジスタＭＡＸＰＤＲ、最小値プロセッサアドレスレジスタＭＩＮＰＡＲ、最小値プロセッサデータレジスタＭＩＮＰＤＲに保持される。
【００５１】
制御ユニット制御回路は、Ｉ／Ｏ（入出力）レジスタを含み、外部インタフェース６０２を介して伝達された制御情報に従って各部の動作を制御する。
【００５２】
次に、メモリユニット４０４，４１４，４２４，４３４，４４０，４４１，４４２，４４３の詳細な構成について説明する。メモリユニット４０４，４１４，４２４，４３４，４４０，４４１，４４２，４４３は互いに同一構成とされるため、ここでは、メモリユニット４０４についてのみ詳細に説明することにする。
【００５３】
図７には、メモリユニット４０４についての構成例が代表的に示される。
【００５４】
メモリユニット４０４は、ローカルメモリユニット１２と同様に構成することができるが、制御系を介した外部メモリからのデータ入出力バスを有し、プロセッサの処理対象となるデータのスループットを向上するように考慮されている。
【００５５】
メモリユニット４０４は、２次元に対して切り換え可能な二つのメモリ（Ｍ０，Ｍ１）７０４，７０６、上記メモリ７０４のアドレス信号を生成するためのアドレス演算回路７０２、上記メモリ７０６のアドレス信号を生成するためのアドレス演算回路７０５、データ伝達経路の選択のためのセレクタ７０７，７０８，７０９，７１０，７１１，７１２，７１３，７１４，７１５を含む。上記メモリ７０４，７０６は、少なくとも１リードと１ライトが同時動作可能なメモリとされ、特に制限されないが、デュアルポート・ランダム・アクセス・メモリ（ＤＰＲＡＭ）とされる。
【００５６】
図８には、メモリユニット４４４についての構成例が示される。
【００５７】
図８に示されるメモリユニット４４４が、図７に示されるメモリユニット４０４（４１４，４２４，４３４，４４０，４４１，４４２，４４３）と異なるのは、出力が１つ少ない点である。これは、紙面上メモリユニット４０４などに比べて結合されるデータ伝送路（バス）の数が少ないことに起因するが、同一構成とすることができる。
【００５８】
次に、上記構成のデータ処理装置において、動きベクトル検出をフルサーチで処理する場合について、図９及び図１０を参照しながら説明する。
【００５９】
ここでは、検出するマクロブロックのサイズを１６×１６画素とし、各画素をＰ（ｙ，ｘ）で表す。ただし、このとき、ｘは０〜１５、ｙは０〜１５である。また、検出範囲の画像サイズは、４６×４６画素とし、各画素をＩ（ｙ，ｘ）で表す。ただし、このとき、ｘは０〜４５、ｙは０〜４５である。
【００６０】
図９及び図１０に示される画像サーチは、図１のデータ処理装置による４×４プロセッサで、検出範囲の画像からマクロブロックとフレーム差が最も小さい１６×１６画素の位置をサーチする例である。検出するマクロブロックの記憶には、制御ユニット１内のグローバルメモリ（ＧＭ）６１１を用いる。検出範囲の画像の記憶には、メモリユニット４０４，４１４，４２４，４３４，４４０，４４１，４４２，４４３，４４４、及びプロセッサ１００〜１０３，１１０〜１１３，１２０〜１２３，１３０〜１３３内のローカルメモリ（ＬＭ０，ＬＭ１）を用いる。
【００６１】
＜処理１＞
先ず、図９に示されるように、検出範囲の画像の先頭（左上）から２次元方向に１画素づつ対応するプロセッサのローカルメモリ（ＬＭ０）に配置して初期状態を形成する。
【００６２】
＜処理２＞
次に、グローバルメモリ（ＧＭ）６１１から先頭画素Ｐ（０，０）を全てのプロセッサにブロードキャストする。各プロセッサは、図１０に示されるように、先頭画素Ｐ（０，０）と、各ローカルメモリ（ＬＭ０）内の画素Ｉ（ｙ，ｘ）と差分絶対値演算を行う。
【００６３】
＜処理３＞
同時に、上記処理２での演算処理が行われるのとほぼ同時に、各プロセッサは、上記処理２における演算に用いた画素値をｘ負方向（左方向）及びｙ負方向（上方向）の隣接プロセッサに出力する。
【００６４】
＜処理４＞
そして各プロセッサは、上記演算に用いた画素が格納されていたローカルメモリ（ＬＭ０）のアドレスに、上記処理３においてｘ正方向（右方向）のプロセッサから伝達された画素値を）書き込む。右端の４プロセッサ１０３，１１３，１２３，１３３は、メモリユニット４０４，４１４，４２４，４３４からそれぞれｘ＋１となる画素を取り込む。図１０に示される例では、メモリユニット４０４から画素Ｉ（０，４）、メモリユニット４１４から画素Ｉ（１，４）、メモリユニット４２４から画素Ｉ（２，４）、メモリユニット４３４から画素Ｉ（３，４）が、それぞれプロセッサ１０３，１１３，１２３，１３３内の各ローカルメモリ（ＬＭ０）に伝達される。
【００６５】
＜処理５＞
同時に縦列のメモリユニット４０４，４１４，４２４，４３４は、上記処理４でプロセッサに出力したデータを上方向のメモリユニットに出力する。同時に各メモリユニットは下方向のメモリユニットから入力されたデータを、上記処理４でプロセッサに出力したデータが記憶されていたアドレスに書き込む。
【００６６】
＜処理６＞
同時に、ローカルメモリ（ＬＭ１）１２０３にｙ正方向（下方向）のプロセッサから入力された画素を書き込む。下端の４プロセッサ１３０，１３１，１３２，１３３はメモリユニットからＩ（ｙ、ｘ）についてそれぞれｙ＋１となる画素を取り込む。同時に横列のメモリユニット４４０，４４１，４４２，４４３は、上端の４プロセッサ１００，１０１，１０２，１０３が出力するデータを、下端の４プロセッサに出力したデータが記憶されていたアドレスに書き込む。ただし、この処理６は、Ｐ（ｙ、ｘ）におけるｘ方向１６画素の最初の画素に対する画素値（すなわち、Ｐ（ｙ，０））に対する演算においてのみ行われる。
【００６７】
＜処理７＞
次に、グローバルメモリ（ＧＭ）６１１からＰ（ｙ、ｘ）におけるｘ＋１となる画素を全プロセッサにブロードキャストする。各プロセッサは各ローカルメモリ（ＬＭ０）内の画素Ｉ（ｙ，ｘ）と差分絶対値演算を行ない、前回の演算結果に加算する。同時に上記処理３〜５が行われる。
【００６８】
＜処理８＞
この処理８では、上記処理７が、Ｐ（ｙ、ｘ）について、ｘ＝１５になるまで繰り返される。
【００６９】
＜処理９＞
次に、グローバルメモリ（ＧＭ）６１１からＰ（ｙ，ｘ）におけるｘ＝０、ｙ＋１となる画素を全プロセッサにブロードキャストする。各プロセッサは各ローカルメモリ（ＬＭ０）内の画素Ｉ（ｙ，ｘ）と差分絶対値演算を行ない、前回の演算結果に加算する。同時に上記処理３〜６を行う。
【００７０】
＜処理１０＞
上記処理７〜９をＰ（ｙ、ｘ）について、ｘ＝１５、ｙ＝１５まで繰り返すことにより、各プロセッサは各次元４画素シフト内の合計１６個のシフトブロックについてのフレーム差計算結果を得る。
【００７１】
＜処理１１＞
上記処理１に対して、各プロセッサのローカルメモリ（ＬＭ０）に配置するＩ（ｙ，ｘ）を、それぞれｙ＝０、ｘ＋４となる初期状態として上記処理２〜１０が行われる（ｘ方向仮想処理）。
【００７２】
＜処理１２＞
この処理１２では、上記処理１１について、前回に対して各プロセッサのローカルメモリ（ＬＭ０）に配置するＩ（ｙ，ｘ）をそれぞれｙ＝０、ｘ＋４となる初期状態としながら６回繰り返される（すなわち、ｘ方向仮想のための上記処理２〜１０の反復回数は合計８回となる）。
【００７３】
＜処理１３＞
上記処理１に対して各プロセッサのローカルメモリ（ＬＭ０）に配置するＩ（ｙ，ｘ）をそれぞれｙ＋４、ｘ＝０となる初期状態として上記処理２〜１２が行われる（ｙ方向仮想処理）。
【００７４】
＜処理１４＞
この処理１４では、上記処理１３について、前回に対して各プロセッサのローカルメモリ（ＬＭ０）に配置するＩ（ｙ，ｘ）をそれぞれｙ＋４、ｘ＝０となる初期状態としながら６回繰返される（すなわち、ｙ方向仮想のための上記処理２〜１２の反復回数は合計８回となり、上記処理２〜１０の反復回数はｘ方向仮想を含めて合計６４回となる）。
【００７５】
以上により、各プロセッサに６４個のシフトブロックを含む全検出範囲の合計９６１個のシフトブロックについてのフレーム差計算結果を得る。ここで、本例においてシフトブロック数は３１×３１個のため、ｘ方向の仮想の最後（処理１２の６回目）における右端の４プロセッサ１０３，１１３，１２３，１３３及びｙ方向の仮想の最後（処理１４の６回目）における下端の４プロセッサ１３０，１３１，１３２，１３３には設定する画像がないため、フレーム差計算結果は無効値とされる。
【００７６】
＜処理１５＞
制御ユニット１は、各プロセッサ毎に上記の無効値を除くフレーム差計算結果を逐次的に共通バス３０２を介して受け取り、図６における最大値最小値検出回路６０９で最小値を検出することで、求めるシフトブロックの位置を得る。この最小値検出処理は、処理１０毎に上記一連の処理と並行して行うことができるため、実質的に最終仮想（処理１４の６回目における処理１２の６回目）の９データについての比較時間（９ステップ）で行われる。
【００７７】
上記一連の処理では、メモリユニット内の２つのメモリ（Ｍ０，Ｍ１）のうち、片方（Ｍ０）しか使用しないため、他方のメモリ（Ｍ１）に次のマクロブロック検出のための検出範囲の画像を、制御ユニット１を介して設定することができる。また、グローバルメモリ（ＧＭ）６１１も同時に次のマクロブロックを外部メモリより読込むことができるので、メモリユニット４０への初期設定のためのオーバヘッド時間を解消することができる。
【００７８】
以上により、本例によるＳＩＭＤ型の構成アーキテクチャにより、ほほプロセッサ数に比例した高速化が実現できる。また、本例によるＳＩＭＤ型の構成アーキテクチャにより、プロセッサ及びメモリユニットに配置する検出範囲の画像データは重複することなく、最小のメモリ容量でシステムを構築することができる。
【００７９】
次に、図１１乃至図１４を参照して、動きベクトル検出の高速化手法を適用した動作について説明する。
【００８０】
画像サーチを次のように高速化することができる。
【００８１】
この方法により、プロセッサ数のほぼ２乗倍の高速化が可能となる。
【００８２】
図１１において、先ず、検出範囲の画像全体に対して画素間隔が均等となるようなシフトブロックにプロセッサ数を割り当て、フレーム差を同時並列に計算し、その中で最小のフレーム差のプロセッサを検出する。一般的に画像は空間的にも相関を持つので、求めるシフトブロックは多くの場合、互いに隣接するプロセッサ間にほぼ存在する。そのため、図１２に示されるように、上記検出したプロセッサに隣接するプロセッサに配置された画素間を次の検出範囲の画像として、プロセッサに均等配置して上記フレーム差計算を行う。これをプロセッサに配置する画素間隔が例えば１画素になるまで繰り返えす。このときのフレーム差が最小となるシフトブロック位置を動きベクトルの近似とすることができる。
【００８３】
図１３及び図１４は、図１１及び図１２に示される演算処理を、図１のＤＳＰ３０で行う場合が示される。
【００８４】
図１３及び図１４では、説明の便宜上、画素間隔を２画素として１６プロセッサで動作させた場合を説明する。
【００８５】
各プロセッサのローカルメモリにおけるローカルメモリ（ＬＭ０）１２０２には、図１３に示されるように、各次元方向２画素間隔となる画素を先頭に、ｘ正方向（右方向）に隣接するプロセッサに配置する画素直前までのｘ方向画素を配置する。各プロセッサのローカルメモリユニットにおけるローカルメモリ（ＬＭ１）１２０４には、上記ｘ方向に配置した画素に対して各ｙ＋１となる画素を先頭にｙ正方向（下方向）に隣接するプロセッサに配置する画素直前まで（２画素間隔の本例の場合には結果的にｙ＋１だけ）の画素を配置する。
【００８６】
次に、図１４に示されるように、フレーム差計算が行われる。すなわち、フレーム差計算では、上記図９及び図１０の例で説明したフルサーチと同様に、グローバルメモリ（ＧＭ）６１１からマクロブロックの画素を逐次的に全プロセッサにブロードキャストしていく。各プロセッサは、上記ブロードキャストされる画素の個々に対して以下のように和差計算をしていく。
【００８７】
＜処理Ａ＞
先ず、ローカルメモリ（ＬＭ０）１２０２に配置された画素と差分を計算する。これと同時に、演算で用いたデータをｘ負方向（左方向）及びＹ負方向（上方向）に隣接するプロセッサに出力する。同時に、各プロセッサは、ローカルメモリ（ＬＭ０）１２０２内の演算されたデータのアドレスにｘ正方向（右方向）のプロセッサのデータを書き込む。同時に各プロセッサはローカルメモリＬＭ１にｙ正方向（下方向）のプロセッサのデータを書き込む。尚、左右上下端のプロセッサは、図９及び図１０の場合と同様にメモリユニット４０４，４１４，４２４，４３４，４４０，４４１，４４２，４４３，４４４との間でデータ授受をすればよい。
【００８８】
＜処理Ｂ＞
各プロセッサは、上記ブロードキャストされる画素と、初期設定されたローカルメモリ（ＬＭ０）１２０２の画素（本例では２画素）との間で、上記処理Ａをしてく。そして、初期設定されたＬＭ０内の画素の処理が終了した後、上記ｘ正方向（右方向）のプロセッサから受け取った画素を用いて引き続き上記処理Ａをしていくことで、ｘ方向１６画素分の和差計算を行う。
【００８９】
＜処理Ｃ＞
次に、上記処理Ａと処理Ｂにおいて、ローカルメモリ（ＬＭ０）１２０２と、ローカルメモリ（ＬＭ１）１２０４とを置き換えた動作により、ｙ＋１についての和差計算を行う。
【００９０】
＜処理Ｄ＞
制御ユニット１は、各プロセッサ毎にフレーム差計算結果を逐次的に共通バス３０２を介して受け取り、図６における最大値最小値検出回路６０９で最小値を検出することで、最小シフトブロックの位置を得る。
【００９１】
＜処理Ｅ＞
上記処理Ｄにおいて得られた最小シフトブロックの位置を中心にして隣接するプロセッサ間に配置した画素間を次の検出範囲として、プロセッサに演算開始画素の間隔が均等（本例では１画素間隔）になるようにローカルメモリ（ＬＭ０，ＬＭ１）１２０２，１２０４に初期設定をし、上記の処理Ａ〜Ｄを繰り返す。この初期設定の画素間隔が１画素になった場合の処理Ｄによるシフトブロックの位置が求める動きベクトルとなる。上記処理Ｅの初期設定では、ｘ方向及びｙ方向に状況に応じたローカルメモリ間（メモリユニットを含む）の画素移動が発生するが、各次元毎に同じ処理で制御することができる。そのため、これらの処理は、ｘアドレスまたはｙアドレスによる実行マスク制御、及び２つのグループフラグ制御により効率的に実現することができる。
【００９２】
以上の本発明による半導体装置を用いた処理によれば、図９及び図１０に基づいて説明したフルサーチで必要とされた６４回の仮想反復を、３回にすることができる。
【００９３】
図１５には、差分絶対値演算器１１１３の別の構成例が示される。
【００９４】
図２に示される差分絶対値演算器１１１３は、３２ビット×３２ビットの差分絶対値演算のみを行うようにしたが、図１５に示される構成によれば、３２ビット×３２ビットの差分絶対値演算の他に、８ビット×Ｎワード演算を行うことができる。
【００９５】
図１５に示される差分絶対値演算器１１１３は、それぞれ８ビット構成の４個のフリップフロップ回路ＦＦから成るフリップフロップ回路群１５１と、８ビット単位でシフト可能な３２ビットシフトレジスタ１５２，１５３と、信号経路切り換えのためのセレクタＳＥＬ１〜ＳＥＬ３と、それぞれ８ビットデータの差分演算を可能とする４個の差分絶対値演算ユニット１５４，１５５，１５６，１５７とを含む。上記セレクタＳＥＬ１〜ＳＥＬ３は、３２ビット構成の入力データＢＣｉｎを、対応する差分絶対値演算ユニット１５４，１５５，１５６，１５７に伝達する第１モードと、上記入力データＢＣｉｎにおけるＬＳＢ側の８ビットデータを差分絶対値演算ユニット１５４，１５５，１５６，１５７に伝達する第２モードの切り換えが可能とされる。このモード切り換えは、制御ユニット１におけるプログラムメモリ６０５に記憶されるプログラムによって任意に設定することができる。
【００９６】
制御ユニット１におけるプログラムメモリ６０５に記憶されるプログラムによって上記第１モードが選択されている場合には、図２に示される差分絶対値演算器１１１３と同様に３２ビット×３２ビットの差分絶対値演算が行われる。制御ユニット１におけるプログラムメモリ６０５に記憶されるプログラムによって上記第２モードが選択されている場合には、上記入力データＢＣｉｎにおけるＬＳＢ側の８ビットデータと、シフトレジスタ１５２の出力データとの差分絶対値演算が可能とされる。このとき、シフトレジスタ１５２に保持されているデータがそれぞれ８ビット構成の４ワードデータとすると、この８ビット構成の４ワードデータと、上記入力データＢＣｉｎにおけるＬＳＢ側の８ビットデータとの差分絶対値演算を行うことができる。１個の画素値が８ビットで表現される場合、上記第２モードによれば、上記入力データＢＣｉｎにおけるＬＳＢ側の８ビットデータ（基準画像）と、４画素分のデータとの差分絶対値演算を同時に行うことができるため、演算処理の高速化を図ることができる。
【００９７】
尚、ワード数及びビット数などは適宜変更することができる。
【００９８】
図１６には、図２に示されるＡＬＵ１１０９の別の構成例が示される。
【００９９】
図１６に示されるＡＬＵ１１０９は、それぞれ８ビットデータの論理演算が可能とされる４個のＡＬＵ１６１，１６２，１６３，１６４と、キャリー信号の伝達経路を断続可能なスイッチＳＷ１，ＳＷ２，ＳＷ３とを含む。スイッチＳＷ１は、ＡＬＵ１６４からＡＬＵ１６３へのキャリー信号の伝達を制限することができる。スイッチＳＷ２は、ＡＬＵ１６３からＡＬＵ１６２へのキャリー信号の伝達を制限することができる。スイッチＳＷ１は、ＡＬＵ１６２からＡＬＵ１６１へのキャリー信号の伝達を制限することができる。
【０１００】
３２ビット構成のデータを取り込んで３２ビットの論理演算を行う場合には、上記スイッチＳＷ１，ＳＷ２，ＳＷ３は導通状態とされ、キャリー信号の伝達が行われる。
【０１０１】
また、入力されるデータが８ビット構成の場合には、ＡＬＵ１６１，１６２，１６３，１６４毎に８ビットの論理演算を行うことによって、８ビット×４ワードの論理演算を同時に行うことができる。この場合、上記スイッチＳＷ１，ＳＷ２，ＳＷ３を非導通状態とすることでキャリー信号の伝達を行わないようにする。上記スイッチＳＷ１，ＳＷ２，ＳＷ３の動作は、制御ユニット１におけるプログラムメモリ６０５に記憶されるプログラムによって任意に設定することができる。
【０１０２】
例えば、図１５に示される差分絶対値演算器１１１３や、図１６に示されるＡＬＵ１１０９を使用する場合には、上記ローカルメモリ及びメモリユニットを３２ビットとして８ビット毎に１画素とし、これらをｘ方向（またはｙ方向）の連続画素に割り当てることで、ｘ方向（またはｙ方向）の処理時間は、図１５に示される差分絶対値演算器１１１３や、図１６に示されるＡＬＵ１１０９を使用しない場合に比べて、１／４に短縮することができる。
【０１０３】
上記は、画像処理の内で特に処理量の大きい画像圧縮の動きベクトル検出について説明したが、制御系内のプログラムメモリを変更することにより、画像圧縮／伸張のＤＣＴ／ＩＤＣＴ、あるいは画像処理のフィルタリング、さらには、与えるデータを音声データとすることで音声処理にも適用することができる。
【０１０４】
次に、上記上記ＳＩＭＤ型並列ＤＳＰ３０の応用例について説明する。
【０１０５】
特に制限されないが、上記データ処理装置は、ディジタルビデオカメラに応用することができる。
【０１０６】
ディジタルビデオカメラでは、例えば図１７に示されるように、ＣＣＤカメラ１７１、このＣＣＤカメラ１７１からの映像信号をＡ／Ｄ（アナログ／ディジタル）変換するためのＡ／Ｄ変換器１７２、このＡ／Ｄ変換器１７２からのディジタル信号を取り込んで画像のマッピング処理及びリサイズ処理を行うためのマッピング及びリサイズ処理手段１７３、上記マッピング及びリサイズ処理手段１７３の出力データを圧縮するための圧縮手段１７５、この圧縮手段１７５で圧縮された画像データをファイリング処理を行うファイリングシステム１７６と、ファイリングされたものを記録可能なメディア１７７と、上記ファイリングシステム１７６でファイリングされたものを伸長処理するための伸長手段１７８と、上記伸長手段１７８で伸長された画像データを表示するためのモニタ１８０とを含む。
【０１０７】
上記マッピング及びリサイズ処理手段１７３、上記圧縮手段１７５、及び上記伸長手段１７８は、特に制限されないが、画像データを記憶可能な画像メモリ１８１と、所定のプログラムに従って演算処理を行うＣＰＵ（中央処理装置）１８２と、上記ＣＰＵ１８２で実行されるプログラムが格納されたフラッシュメモリ１８３と、データ処理のためのＤＳＰ１８４とによって機能的に実現される。
【０１０８】
上記ＤＳＰ１８４には、図１に示されるＳＩＭＤ型並列ＤＳＰ３０が適用される。上記リサイズ処理、圧縮処理、及び伸長処理は演算量が多いため、上記ＳＩＭＤ型並列ＤＳＰ３０での高速化処理の効果は顕著とされる。
【０１０９】
特に、ＳＩＭＤ型並列ＤＳＰ３０はプログラマブルであるため、従来専用部品で実現していたリサイズ処理、圧縮処理、伸長処理などを一つの部品として実現することができるため、実装面積が小さくて済む。また、機能追加などによる改良は、ハード変更量が小さくて済むので容易とされる。
【０１１０】
上記の例によれば、以下の作用効果を得ることができる。
【０１１１】
（１）ＭＰＥＧ動画圧縮に代表される動きベクトル検出において、各プロセッサは、ローカルメモリに設定された画素データとブロードキャストバスから入力する画素データとの差分計算と同時に、次に差分計算を行う画素データを隣接するプロセッサからローカルメモリに設定することができるので、検出画像の画像データを重複することなく各プロセッサに配置することができるので、ローカルメモリの有効利用が図れる。
【０１１２】
（２）隣接するプロセッサからの受け取る画像データの複数をローカルメモリに貯えることができるので、物理的なプロセッサ数がシフトブロック数より少ない場合、プロセッサの仮想数（シフトブロック数／プロセッサ数）に等しい画素間隔のシフトブロックを各プロセッサのローカルメモリに配置することで各プロセッサは自身のローカルメモリの画素データと隣接するプロセッサから受け取った画素データとを用いて上記画素間隔の間の任意画素位置を先頭とするシフトブロックについてフレーム差計算が可能となるため、仮想によるローカルメモリの書き換えのオーバヘッドが解消できる。
【０１１３】
（３）任意のＭビット数の加減算回路はＮ分のＭビットの加減算回路のＮ個について桁上げ（キャリー）信号の入力と出力を接続して構成することができるので、８ビット構成のＡＬＵ１６１，１６２，１６３，１６４を用いてそれらのキャリー信号の入出力を制御するスイッチを設けることで８×４ビット演算回路に８ビット×４ワードの並列加減算機能を追加することができる。そのため、ブロードキャストバス及びローカルメモリのビット幅を８×４ビットで構成すれば、ＭＰＥＧの離散コサイン変換などの８ビット以上の演算精度が必要な処理のための８×４ビット演算機能に、回路規模を大きく増大させること無く、８ビットを画素データとするＭＰＥＧの動きベクトル検出のための８ビット×４ワード演算機能を追加することができ、これによりベクトル検出の処理時間をＮ分の１に短縮することができる。
【０１１４】
（４）動きベクトル検出の高速化手法を用いることで、プロセッサ数Ｐ×Ｐ個、シフトブロック数をＭ×ＭとしてＭ＝ｎ×Ｐ（すなわち１次元当たりの仮想度ｎ）としたとき、画像ブロックのフレーム差の反復回数は、フルサーチの場合にｎの２乗回（すなわち画像は２次元のため仮想度はｎの２乗）の反復回数を必要とするのに対し、図１３及び図１４に示される高速化手法ではｌｏｇ（Ｐ底のｎ）＋１回の反復回数ですむ。例えば、プロセッサ数を４×４個としたシステムによる動き補償フレーム間符号化では検出範囲をマクロブロックの周囲±１５画素とするとシフトブロック数は３１×３１個であるため、フルサーチの為には画像ブロックのフレーム差の反復回数が６４回必要であるが、図１３及び図１４に示される高速化手法を用いると３回ですむ。
【０１１５】
（５）プロセッサ数が比較的小規模のＳＩＭＤ型並列演算器の構成であってもＭＰＥＧに代表される動画圧縮／伸張を始めとする画像処理が実時間で処理可能になるため、従来に比べて画素密度の大きい画像処理機能を、例えばディジタルビデオカメラなどの低消費電力で駆動する携帯型家電に実装可能な半導体集積回路（電子部品）で実現することが可能となる。
【０１１６】
以上本発明者によってなされた発明を具体的に説明したが、本発明はそれに限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。
【０１１７】
例えば、図１に示されるＳＩＭＤ型並列ＤＳＰにおいて、メモリユニット４４４（図８）を省略することができる。このとき、メモリユニット４０４からメモリユニット４４４への出力をメモりユニット４０４からメモリユニット４３４への出力とし、メモリユニット４４０からメモリユニット４４４への出力をメモリユニット４４０からメモリユニット４４３への出力とすれば良い。
【０１１８】
また、メモリ共通バス３０３を介して外部メモリアクセスを行うメモリユニット４０４，４１４，４２４，４３４，４４０，４４１，４４２，４４３，又は４４４を、メモリユニット４４４だけにしても良い。
【０１１９】
以上の説明では主として本発明者によってなされた発明をその背景となった利用分野である画像処理に適用した場合について説明したが、本発明はそれに限定されるものではなく、例えば処理対象を音声データとすることで音声処理にも適用することができる。
【０１２０】
本発明は、少なくとも複数のプロセッサを含むことを条件に適用することができる。
【０１２１】
【発明の効果】
本願において開示される発明のうち代表的なものによって得られる効果を簡単に説明すれば下記の通りである。
【０１２２】
すなわち、プロセッサ数が比較的小規模のＳＩＭＤ型並列演算器構成でＭＰＥＧに代表される動画圧縮／伸張を始めとするデータ処理の高速化を図ることができる。
【図面の簡単な説明】
【図１】本発明にかかるデータ処理装置の一例であるＳＩＭＤ型並列ＤＳＰの構成例ブロック図である。
【図２】上記ＳＩＭＤ型並列ＤＳＰに含まれる演算ユニットの構成例ブロック図である。
【図３】上記演算ユニットに含まれるプロセッサ制御回路の構成例ブロック図である。
【図４】上記プロセッサ制御回路に含まれるプロセッサ実行マスク制御回路の動作説明図である。
【図５】上記プロセッサ制御回路に含まれるプロセッサ実行マスク制御回路の動作説明図である。
【図６】上記ＳＩＭＤ型並列ＤＳＰに含まれる制御ユニットの構成例ブロック図である。
【図７】上記ＳＩＭＤ型並列ＤＳＰに含まれるメモリユニットの構成例ブロック図である。
【図８】上記ＳＩＭＤ型並列ＤＳＰに含まれるメモリユニットの構成例ブロック図である。
【図９】上記ＳＩＭＤ型並列ＤＳＰにおけるフルサーチの動きベクトル検出動作の説明図である。
【図１０】上記ＳＩＭＤ型並列ＤＳＰにおけるフルサーチの動きベクトル検出動作の説明図である。
【図１１】上記ＳＩＭＤ型並列ＤＳＰにおける動きベクトル検出高速化方式の説明図である。
【図１２】上記ＳＩＭＤ型並列ＤＳＰでの動きベクトル検出高速化方式の説明図である。
【図１３】上記ＳＩＭＤ型並列ＤＳＰでの動きベクトル検出高速化動作の説明図である。
【図１４】上記ＳＩＭＤ型並列ＤＳＰでの動きベクトル検出高速化動作の説明図である。
【図１５】上記ＳＩＭＤ型並列ＤＳＰに含まれる演算器の別の構成例説明図である。
【図１６】上記ＳＩＭＤ型並列ＤＳＰに含まれる演算器の別の構成例説明図である。
【図１７】上記ＳＩＭＤ型並列ＤＳＰが適用されたディジタルビデオカメラの構成例ブロック図である。
【符号の説明】
１  制御ユニット
２  プロセッサアレイ
１１  演算器ユニット
１２  ローカルメモリユニット
１３  トライステートバッファ
１００〜１０３，１１０〜１１３，１２０〜１２３，１３０〜１３３  プロセッサ
３００  命令バス
３０１  ブロードキャストデータバス
３０２  共通バス
４０４，４１４，４２４，４３４，４４０，４４１，４４２，４４３，４４４メモリユニット
１２０２，１２０４  ローカルメモリ
【図１】
2004234407.tif 000003
【図２】
2004234407.tif 000004
【図３】
2004234407.tif 000005
【図４】
2004234407.tif 000006
【図５】
2004234407.tif 000007
【図６】
2004234407.tif 000008
【図７】
2004234407.tif 000009
【図８】
2004234407.tif 000010
【図９】
2004234407.tif 000011
【図１０】
2004234407.tif 000012
【図１１】
2004234407.tif 000013
【図１２】
2004234407.tif 000014
【図１３】
2004234407.tif 000015
【図１４】
2004234407.tif 000016
【図１５】
2004234407.tif 000017
【図１６】
2004234407.tif 000018
【図１７】
2004234407.tif 000019