(57)【特許請求の範囲】
【請求項１】
画素の透明度を表すαデータを含んだ画像の画像処理を行う並列処理プロセッサであって、該並列処理プロセッサは、
（ａ）単一の命令によって制御される算術論理演算を並列に実行する複数の演算実行ユニットと、
（ｂ）データパスによって該演算実行ユニットに接続され、該演算実行ユニットにデータを入力するとともに演算結果を受け取る汎用レジスタと、
（ｃ）別のデータパスによって該演算実行ユニットに接続され、該演算実行ユニットにデータを入力するαデータ専用レジスタと、
（ｄ）αデータ専用命令に従い該汎用レジスタのデータと該αデータ専用レジスタのデータとを同期して該演算実行ユニットの各々に導くよう制御する制御手段とを有することを特徴とする並列処理プロセッサ。
【請求項２】
画素の透明度を表すαデータを含んだ画像の画像処理を行う並列処理プロセッサであって、該並列処理プロセッサは、
（ａ）単一の命令によって制御される算術論理演算を並列に実行する複数の演算実行ユニットと、
（ｂ）データパスによって該演算実行ユニットに接続され、該演算実行ユニットにデータを入力するとともに演算結果を受け取る汎用レジスタと、
（ｃ）別のデータパスによって該演算実行ユニットに接続され、該演算実行ユニットにデータを入力するαデータ専用レジスタとを有し、
該演算実行ユニットは、αデータ専用命令に従い該汎用レジスタからデータを入力して算術演算を行い、その演算結果を該汎用レジスタに戻すことなくメモリに一時保存し、該汎用レジスタからのデータ入力と同期して入力される該αデータ専用レジスタからのデータを用い、該演算結果に対して論理演算を行うように動作することを特徴とする並列処理プロセッサ。
【請求項３】
前記汎用レジスタのデータは色データについての演算結果であり、前記αデータ専用レジスタのデータはαデータである請求項１又は請求項２記載の並列処理プロセッサ。
【請求項４】
前記並列処理プロセッサは、さらにαデータを全ビット０又は１のバイナリデータに変換するαデータ変換回路を有し、該αデータ変換回路によるデータ変換と前記αデータ専用レジスタヘの該バイナリデータのロードとを行う請求項１又は請求項２記載の並列処理プロセッサ。
【請求項５】
前記並列処理プロセッサは、さらにαデータを値０又は１のマスクデータに変換するαデータ変換回路を有し、該αデータ変換回路によるデータ変換と前記αデータ専用レジスタヘの該マスクデータのロードとを行う請求項１又は請求項２記載の並列処理プロセッサ。
【請求項６】
前記並列処理プロセッサは、さらに入力されるαデータと所定のしきい値との間で比較演算を行い、その演算結果の正否に応じて該αデータを全ビット０又は１のバイナリデータに変換するαデータ変換回路を有し、該αデータ変換回路によるデータ変換と前記αデータ専用レジスタヘの該バイナリデータのロードとを行う請求項１又は請求項２記載の並列処理プロセッサ。
【請求項７】
前記並列処埋プロセッサは、さらに入力されるαデータと所定のしきい値との間で比較演算を行い、その演算結果の正否に応じて該αデータを値０又は１のマスクデータに変換するαデータ変換回路を有し、該αデータ変換回路によるデータ変換と前記αデータ専用レジスタヘの該マスクデータのロードとを行う請求項１又は請求項２記載の並列処理プロセッサ。
【請求項８】
前記αデータ専用レジスタはアドレス付け可能な複数のレジスタから構成され、前記演算実行ユニットは、命令によって指定された前記αデータ専用レジスタの中の１つのレジスタからデータを入力して前記論理演算を実行する請求項２記載の並列処理プロセッサ。
【請求項９】
前記αデータ変換回路が出力し、前記αデータ専用レジスタに入力し、前記演算実行ユニットに入力するマスクデータは１画素当り１ビットのデータである請求項５又は請求項７記載の並列処理プロセッサ。
【請求項１０】
前記αデータ専用レジスタは前記汎用レジスタ内に設けられていることを特徴とする請求項１又は請求項２記載の並列処理プロセッサ。
【請求項１１】
単一の命令によって制御される算術論理演算を並列に実行する複数の演算実行ユニットを利用して、画素の透明度を表すαデータを含んだ画像の画像処理を行う並列処理プロセッサの制御方法であって、
αデータ専用命令に従い、
（ａ）汎用レジスタから複数の第１のデータをそれぞれ該演算実行ユニットの各々に入力して並列に算術演算を行い、
（ｂ）その算術演算結果を該汎用レジスタに戻すことなくメモリに一時保存し、αデータ専用レジスタから複数の第１のデータに対応し、該汎用レジスタからのデータ入力と同期して入力される複数の第２のデータをそれぞれ該演算実行ユニットの各々に入力して該算術演算結果に対して並列に論理演算を行い、
（ｃ）その論理演算結果を命令によって指定された汎用レジスタに出力する
ことを特徴とする並列処理方法。
【請求項１２】
前記汎用レジスタ内の第１のデータは色データについての演算結果であり、前記αデータ専用レジスタ内の第２のデータはαデータである請求項１１記載の並列処理方法。
【請求項１３】
αデータを全ビット０又は１のバイナリデータに変換し、該バイナリデータを該αデータ専用レジスタにロードして第２のデータとする請求項１１記載の並列処理方法。
【請求項１４】
αデータを値０又は１のマスクデータに変換し、該マスクデータを該αデータ専用レジスタにロードして第２のデータとする請求項１１記載の並列処理方法。
【請求項１５】
前記αデータ専用レジスタはアドレス付け可能な複数のレジスタから構成され、前記演算実行ユニットによって、命令により指定された前記αデータ専用レジスタの中の１つのレジスタからデータを入力して前記論理演算を実行する請求項１１記載の並列処理方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、並列処理プロセッサ、および、並列処理方法に係り、画像の透明度を表すαデータを専用に処理する機構を備え、高速に画像処理をするのに好適な並列処理プロセッサ、および、並列処理方法に関する。
【０００２】
【従来の技術】
ディジタル動画像符号化の標準化規格では、画像を特定サイズのブロックに分割し、そのブロック毎に動きの予測と予測誤差の符号化をおこなう方法が用いられてきた。このようなブロック単位の処理をソフトウェアでおこなうには、１個の命令で多数の画素に対して演算を施すことが可能なプロセッサの利用が有効である。プロセッサの分類には様々な定義があるが、Flynnが1966年に発表したコンピュータの分類(Flynn, M.J.(1996), "Very high speed computing system", Proc. IEEE, 12, 1901-9. )が広く知られている。この文献によるとコンピュータは、SISD(single instruction stream - signal data stream), MIMD(multiple instruction stream - multiple data stream), SIMD(single instruction stream - multiple data stream), MISD(multiple instruction stream - single data stream)の４種類に分類されており、このうちＳＩＭＤが上記の概念に適合する。文献では、ＳＩＭＤを「１つの制御ユニットによって生成された単一の命令の流れを複数のプロセッサにブロードキャストし、各プロセッサはその命令の流れで異なったデータの流れを処理する方式」と定義しており、「この場合、データはベクトルをなしていると考えられ、１命令サイクルで１つのベクトルが処理される」と説いている。この分類はコンピュータに関するものであるが、考え方はプロセッサにも適用できる。
【０００３】
以降、ＳＩＭＤ型のプロセッサを例にとって画像符号化アルゴリズムのソフトウェア処理について考える。
【０００４】
ＳＩＭＤ型プロセッサの適用が有効となる例としては、時間的に隣接するフレーム間の相関を取り除く技術である動き補償方法が挙げられる。この動き補償に関しては、動画像符号化方式の国際標準MPEG1とMPEG2でもブロックマッチングと呼ばれる技術が用いられている。
【０００５】
以下では、図２を用いてブロックマッチングについて説明する。
図２は、ブロックマッチングを説明するための概念図である。
【０００６】
現フレーム２１は、符号化しようとするフレームであり、参照フレーム２２は、現フレームの画像と時間的に近接しており、既に符号化が完了しているフレームの復号画像である。このブロックマッチングには、輝度信号のみを用いる方法と輝度および色差信号の両者を用いる方法があるが、ソフトウェアで処理する場合には演算量の点を考慮して前者の場合が一般に用いられる。そこで、ここでは前者の場合で説明する。
【０００７】
先ず、現フレーム２１を点線で示すように同サイズの小ブロックに分割する（一般的には、１６画素×１６画素、または１６画素×８画素）。次に、現フレーム２１と参照フレーム２２との間の時間的な動きをブロック毎に検出する。ここで、ブロック２３を例に取って具体的な動きの検出方法を説明する。ブロック２４は、参照フレーム上において現フレーム上のブロック２３と空間的に同一位置のブロックを意味する。このブロック２４に示される領域をそのサイズを保ったまま、整数画素あるいは半画素精度でブロック２５のように移動し、その度にブロック２３との間で２ブロック内の全画素を対象として差分の絶対値和を求める。この処理を予め定めた探索範囲（例えば、ブロック２４に対して、水平方向に−１５画素〜＋１５画素、垂直方向に−１５画素〜＋１５画素）内で規定できる全ての動きパターンに対しておこない、その差分の絶対値和が最も小さいブロック位置へのブロック２４からの移動量を動きベクトルとして検出する。例えば、ブロック２５が差分の絶対値和が最も小さいブロックであった場合には、ベクトル２６が動きベクトルとして検出される。
【０００８】
このブロックマッチングは、符号化性能上欠かせない技術である一方、画素単位の演算（差分演算、絶対値演算、加算演算）が無数に必要となる方法である。例えば、画像サイズが１７６画素×１４４画素でブロックサイズが１６画素×１６画素の場合、分割フロック数が９９個となるが、この場合、ブロックマッチングの探索範囲を±８画素、探索精度を整数画素としても探索ブロックパターンは各ブロック毎に２８９バターンあり、２８９×９９×２５６（ブロック内の画素数）回分上記３種類の演算が必要となる。さらに、画像サイズが標準ＴＶ（ＳＤＴＶ）であったり、スポーツ映像のように動きの探索範囲を大きくする必要がある場合、また、探索時の画素精度を高く保つ必要がある場合等には、その演算量はその数十、数百倍になる。そのような理由から、これまではブロックマッチングを用いるためには専用ハードウェアを用いることが一般的であった。しかし、最近では、プロセッサ技術の進歩や簡略されたブロックマッチング方法の出現等により、汎用プロセッサでこの処理をおこなうことが可能となってきた。先に触れたようにブロックマッチングのようなブロック単位の処理をプロセッサで行うためにはＳＩＭＤ型プロセッサの使用が有効的である。
【０００９】
以下では、図３を用いて従来技術に係るＳＩＭＤ型の並列処理プロセッサを説明しよう。
図３は、従来技術に係る並列処理プロセッサの構成を示すブロック図である。
【００１０】
この並列処理プロセッサの動作について説明すると、先ず、プロセッサ・主記憶間バス１８０を通して外部メモリ１３０から命令フェッチ回路１１０に実行すべき命令が送られる。命令フェッチ回路は、一般に命令を蓄えるための命令メモリ、プログラムカウンタ、プログラムカウンタ内のレジスタのアドレスを制御する加算回路等からなり、受信した命令を実行順に命令デコーダ１２０に供給する。命令デコーダは、命令を演算の種類、読み出しアドレス、書き込みアドレス等に解読し、その情報を制御回路１４０、汎用レジスタ１５０へ送信する。その後、制御回路の制御情報(１４１、１４２，１４３)に従い、汎用レジスタ１５０、ＳＩＭＤ型ＡＬＵ１６０、データメモリ１７０によって各種命令が処理される。なお、図３に示された並列処理プロセッサでは、簡単のためＳＩＭＤ型ＡＬＵを４並列とし、４個の画素の処理が同時におこなえるものと仮定している。
【００１１】
次に、ｃ言語とアセンブラコードを用いてブロックマッチングの処理を説明する。
【００１２】
以下のｃコード１は、１ブロックにおけるブロックマッチングのアルゴリズムをｃ言語で記述した例である。ブロックサイズは１６画素×１６画素とし、値errorが最小となる時の(vec_x, vec_y)が動きベクトルとして検出されるものとする。
【００１３】
ｃコード１：ブロックマッチングの例
0003869947.tif 000002
ここで、forは、C言語とループを記述するためのステートメントであり、外側の二つのfor文は、縦横１６×１６の探索範囲をループさせていて、内部の二つのfor文は、一つのブロック内での画像データの差分を求めるためのループである。また、currentは、引数に対する現フレームの画像データを表し、referenceは、参照フレームの画像データを表している。
【００１４】
以下のアセンブラコード１は、Cコード１における値errorへの加算値を求める式(abs(current(x+j, y+i) - reference(x+j+vec_x, y+i+vec_y)))をアセンブラコードに置き換えたものである。
【００１５】
アセンブラコード１：動きベクトルを求めるための加算式をアセンブラコードに展開
LOAD R1, start_curr(R3)   # R1 = 外部メモリ[R3+start_curr]
LOAD R2, start_reference(R4)   # R2 = 外部メモリ[R4+start_reference]
＃ start_current : 外部メモリにおける現フレームデータのアドレス
＃ start_reference : 外部メモリにおける参照フレームデータのアドレス
SUB R0, R1, R2
ABS R5, R0
ここで、LOADは、外部メモリから汎用レジスタへのデータ転送命令、SUBは差分算術演算命令（R0=R1-R2）、ABSは絶対値化算術演算命令（R5＝|R0|）をそれぞれ意味する。
【００１６】
次に、図３および図４を用いてアセンブラコード１におけるデータの演算過程について説明する。
図４は、従来技術に係るＡＬＵ内のデータの演算過程を示す模式図である。なお、図４で、左矢印は、レジスタからＡＬＵへのデータ読み出し、右矢印は、ＡＬＵからレジスタへのデータの書き込みを意味する。
【００１７】
先ず、LOAD命令により図３のデータメモリ１７０に現フレームならびに参照フレーム上のデータが外部メモリ１３０から順に書き込まれる。データメモリ１７０に読み込まれた各データは、命令デコーダ１２０から得られた書き込みレジスタ情報(R3、R4は、各フレーム上における画素の位置を示すベースレジスタ)に応じてレジスタR1、R2にそれぞれ格納される。
【００１８】
次に、差分演算命令では、命令デコーダ１２０から得られた読み出しレジスタ情報に応じてレジスタR1およびR2のデータが汎用レジスタからＳＩＭＤ型ＡＬＵ１６０に読み出される。これと同時にＳＩＭＤ型ＡＬＵ１６０は、制御回路から演算の種類を決めるＡＬＵ制御情報１４２を得る。ここでは差分演算をおこなうことが知らされる。ＳＩＭＤ型ＡＬＵ１６０では、まず得られた各情報がデータ分割回路(deMux)１６１により図４の４０１と４０２に示す４個の画素データ(（g1〜g4）および（p1〜p4)）に分割する。分割されたデータは、図３に示す４個のＡＬＵ１６２aから１６２dに振り分けられた後、図４の４０３aから４０３dの演算素子により各画素データ毎に差分演算がおこなわれる。演算終了後、図３のデータ合成回路(Mux)１６３によりデータの合成がおこなわれ、命令デコーダ１２０から得られた書き込みレジスタ情報に応じてレジスタR0に演算結果が格納される。
【００１９】
絶対値化演算についても、これとほぼ同様の処理がおこなわれる。先ず、命令デコーダ１２０から得られた読み出しレジスタ情報に応じてレジスタR0のデータが汎用レジスタからＳＩＭＤ型ＡＬＵ１６０に読み出される。これと同時にＳＩＭＤ型ＡＬＵ１６０は制御回路から絶対値化演算を示すＡＬＵ制御情報を得る。ＳＩＭＤ型ＡＬＵ１６０では、先ず、得られた各情報がデータ分割回路(deMux)１６１により、図４の４０４に示す４個の画素データ(g1-p1〜g4-p4)に分割される。分割されたデータは、図３に示す４個のＡＬＵ１６２aから１６２dに振り分けられた後、各データ毎に絶対値化演算がおこなわれ、図４の４０５に示すような絶対値データに変換される。演算終了後、図３のデータ合成回路(Mux)１６３によりデータの合成が行われ、命令デコーダ１２０から得られた書き込みレジスタ情報に応じてレジスタR5に演算結果が格納される。なお、以上の処理を実行するための時刻管理は制御回路１４０により行われる。
【００２０】
このように、ＳＩＭＤ型プロセッサは、繰り返し演算に強い構成となっている。したがって、ブロックマッチングのようにブロック内の画素に対して同一の演算が繰り返されるケースでは、この特長を十分に生かすことができる。
【００２１】
【発明が解決しようとする課題】
上記従来技術の項で説明した様に、並列処理プロセッサは、ブロックマッチングの様な画像処理のためには、スループットを上げるために有用な技術である。
【００２２】
一方、コンピュータグラフィクスの分野では、必ずしも矩形画像ではない任意形状の物体を含む画像を処理するために、色空間上の各画素に対して画素の透明度を表すαデータを持たせる技術が一般的におこなわれている。このαデータを含む画像に対してブロックマッチングのような、動き推定を行なう場合、画素単位のデータマスク処理が必要となるため、ＳＩＭＤ型演算器の処理量が増大して、スループットが向上しないという問題点があった。
【００２３】
以下、図５を用いてこのαデータの意義とαデータを考慮したブロックマッチングアルゴリズムを概説し、それにより処理量が増大することを詳細に説明しよう。
図５は、フレームとbounding boxの関係を示した模式図である。
【００２４】
上記従来の技術の項で説明したブロックマッチングは、矩形画像に適用される技術である。ところが、近年ではこれまでコンピュータグラフィック等の分野で扱われていた任意形状画像を画像符号化の分野において扱う試みが現実のものとなりつつある。この任意形状画像は、輝度信号と色差信号から構成される色情報の他に、形状情報を含んでいて、この形状情報は、αデータまたはα画像と呼ばれている。αデータは、色信号と同様に０〜２５５（８ビット画像の場合）の値を持ち、画素の透明度を表す。そして、この透明度を表すαデータは２個以上の任意形状画像を組み合わせて表示する場合に重要な役割を果たす。すなわち、背景、人物、文字などのいくつかの任意形状画像の色信号は、そのαデータの値の比率によって表示画像に重ねられ、その組み合わせによって１個の表示画像が構成される。したがって、αデータの値が、０である領域に位置する画素の色情報は画像の符号化・復号化において無意な画素情報となる。そのため、αデータを持つ任意形状画像にフロック単位の動き推定を施す際に、ブロックマッチングのようにブロック内の全画素を対象として誤差計算（差分、絶対値演算）をおこなうと、任意形状物体の境界部において動き推定の精度が落ちることになる。そこで、αデータを用いて各画素が有意画素であるか否かを判定し、無意な画素すなわち透明画素についてはその誤差値の絶対値和への加算をマスクする(加算をおこなわない、または加算値を０とする)ことが必要となる。
【００２５】
以下では、図５に示される画像について動きベクトル検出方法を適用する例を説明しよう。物体５１は、画像処理する場合に矩形化した画像５２として取り扱われる。矩形化した画像５２は、一般に「bounding box」と呼ばれ、画像符号化では、このbounding boxの単位で符号化処理がおこなわれる。そのサイズは、通常、符号化処理をおこなうブロックサイズ（一般には、１６画素×１６画素）の倍数となる。ここで、色情報を持つ領域５４と持たない領域５５が含まれるブロック５３（以下、「境界ブロック」と呼ぶ）の動きベクトル検出方法について説明する。ここで、αデータは、色情報を持たない透明画素に対しては、値０を持っていることに注意しておく。
【００２６】
さて、αデータを考慮に入れたブロック単位の動き推定を実現するためには、ブロックマッチング用のｃコード１を以下に示すｃコード２、ｃコード３に示すように書き換えれば良い。
【００２７】
この動き推定方法は、ブロックマッチングに対して「ポリゴンマッチング」と呼ばれる。なお、αデータには、０から２５５(８ビット画像の場合)までの値を持ち得る場合(グレースケールデータ)と、０と２５５(８ビット画像の場合)の値のみで表現される場合(バイナリーデータ)が考えられる。
【００２８】
以下で、ｃコード２は、バイナリーデータの場合であり、ｃコード３は、グレースケールデータの場合である。
【００２９】
なお、参照フレームについては、αデータが０となる画素は存在しない。これは、即に復号化済みの再生フレームを参照フレームとして使用する際に、再生フレーム上においてαデータが０となる画素について、その色情報を周囲の画素から補填し、αデータを２５５（８ビット画像の場合）とする処理が符号化側、復号化側で行なわれるためである。
【００３０】
ｃコード２：αデータを考慮したポリゴンマッチング、バイナリデータの場合
0003869947.tif 000003
ｃコード３：αデータを考慮したポリゴンマッチング、グレースケールデータの場合
0003869947.tif 000004
すなわち、ｃコード２では、現フレームの色データと、参照フレームの色データとの絶対値を取り、αデータとのビット毎の論理積を取っている。したがって、αデータが０のときには、加算する値は、演算した値が何であろうとも、０になる。
【００３１】
ｃコード３では、αデータが０であるかを判定して、０のときには、論理式が真（値として、１）になり、それの論理否定を取るため、０になる。０以外のときには、論理否定を取ったときには、１になる。その結果、加算する値は、αデータが０のときには、０になり、それ以外のときには、演算した値になるのである。
【００３２】
このように、ｃコード２の場合であっても、ｃコード３の場合であっても、αデータを考慮に入れたポリゴンマッチングの場合には、値errorへの加算データを０値に置き換えるデータマスク処理が頻繁に(画素毎に)発生することが分かる。
【００３３】
本発明は、上記問題点を解決するためになされたもので、その目的は、αデータを含んだ画像処理をおこなう並列処理プロセッサにおいて、αデータを処理するための専用の機構を設け、各並列実行ユニットの処理負担を軽減し、プロセッサのスループットを向上させた並列処理プロセッサを提供することにある。
【００３４】
【課題を解決するための手段】
上記目的を達成するために、本発明に係る並列処理プロセッサに係る発明の構成は、画素の透明度を表すαデータを含んだ画像の画像処理を行う並列処理プロセッサであって、該並列処理プロセッサは、（ａ）単一の命令によって制御される算術論理演算を並列に実行する複数の演算実行ユニットと、（ｂ）データパスによって該演算実行ユニットに接続され、該演算実行ユニットにデータを入力するとともに演算結果を受け取る汎用レジスタと、（ｃ）別のデータパスによって該演算実行ユニットに接続され、該演算実行ユニットにデータを入力するαデータ専用レジスタと、（ｄ）αデータ専用命令に従い該汎用レジスタのデータと該αデータ専用レジスタのデータとを同期して該演算実行ユニットの各々に導くよう制御する制御手段とを有するようにしたものである。
【００３５】
また、本発明に係る並列処理プロセッサに係る発明の別の構成は、画素の透明度を表すαデータを含んだ画像の画像処理を行う並列処理プロセッサであって、該並列処理プロセッサは、（ａ）単一の命令によって制御される算術論理演算を並列に実行する複数の演算実行ユニットと、（ｂ）データパスによって該演算実行ユニットに接続され、該演算実行ユニットにデータを入力するとともに演算結果を受け取る汎用レジスタと、（ｃ）別のデータパスによって該演算実行ユニットに接続され、該演算実行ユニットにデータを入力するαデータ専用レジスタとを有し、該演算実行ユニットは、αデータ専用命令に従い該汎用レジスタからデータを入力して算術演算を行い、その演算結果を該汎用レジスタに戻すことなくメモリに一時保存し、該汎用レジスタからのデータ入力と同期して入力される該αデータ専用レジスタからのデータを用い、該演算結果に対して論理演算を行うように動作するようにしたものである。
【００３６】
より詳しくは、上記並列処理プロセッサにおいて、前記汎用レジスタのデータは色データについての演算結果であり、前記αデータ専用レジスタのデータはαデータであるようにしたものである。
【００３７】
さらに詳しくは、前記並列処理プロセッサは、さらにαデータを全ビット０又は１のバイナリデータに変換するαデータ変換回路を有し、該αデータ変換回路によるデータ変換と前記αデータ専用レジスタヘの該バイナリデータのロードとを行うようにしたものである。
【００３８】
さらにまた詳しくは、前記並列処理プロセッサは、さらにαデータを値０又は１のマスクデータに変換するαデータ変換回路を有し、該αデータ変換回路によるデータ変換と前記αデータ専用レジスタヘの該マスクデータのロードとを行うようにしたものである。
【００３９】
より詳しくは、前記並列処理プロセッサは、さらに入力されるαデータと所定のしきい値との間で比較演算を行い、その演算結果の正否に応じて該αデータを全ビット０又は１のバイナリデータに変換するαデータ変換回路を有し、該αデータ変換回路によるデータ変換と前記αデータ専用レジスタヘの該バイナリデータのロードとを行うようにしたものである。
【００４０】
また詳しくは、前記並列処埋プロセッサは、さらに入力されるαデータと所定のしきい値との間で比較演算を行い、その演算結果の正否に応じて該αデータを値０又は１のマスクデータに変換するαデータ変換回路を有し、該αデータ変換回路によるデータ変換と前記αデータ専用レジスタヘの該マスクデータのロードとを行うようにしたものである。
【００４１】
さらに詳しくは、上記並列処理プロセッサにおいて、前記αデータ専用レジスタはアドレス付け可能な複数のレジスタから構成され、前記演算実行ユニットは、命令によって指定された前記αデータ専用レジスタの中の１つのレジスタからデータを入力して前記論理演算を実行するようにしたものである。
【００４２】
さらにまた詳しくは、上記並列処理プロセッサにおいて、前記αデータ変換回路が出力し、前記αデータ専用レジスタに入力し、前記演算実行ユニットに入力するマスクデータは１画素当り１ビットのデータであるようにしたものである。
【００４３】
より詳しくは、上記並列処理プロセッサにおいて、前記αデータ専用レジスタは前記汎用レジスタ内に設けられているようにしたものである。
【００４６】
上記目的を達成するために、本発明の並列処理方法に係る発明の構成は、単一の命令によって制御される算術論理演算を並列に実行する複数の演算実行ユニットを利用して、画素の透明度を表すαデータを含んだ画像の画像処理を行う並列処理プロセッサの制御方法であって、αデータ専用命令に従い、（ａ）汎用レジスタから複数の第１のデータをそれぞれ該演算実行ユニットの各々に入力して並列に算術演算を行い、（ｂ）その算術演算結果を該汎用レジスタに戻すことなくメモリに一時保存し、αデータ専用レジスタから複数の第１のデータに対応し、該汎用レジスタからのデータ入力と同期して入力される複数の第２のデータをそれぞれ該演算実行ユニットの各々に入力して該算術演算結果に対して並列に論理演算を行い、（ｃ）その論理演算結果を命令によって指定された汎用レジスタに出力するようにしたものである。
【００４７】
より詳しくは、前記汎用レジスタ内の第１のデータは色データについての演算結果であり、前記αデータ専用レジスタ内の第２のデータはαデータであるようにしたものである。
【００４８】
また詳しくは、αデータを全ビット０又は１のバイナリデータに変換し、該バイナリデータを該αデータ専用レジスタにロードして第２のデータとするようにしたものである。
【００４９】
さらに詳しくは、αデータを値０又は１のマスクデータに変換し、該マスクデータを該αデータ専用レジスタにロードして第２のデータとするようにしたものである。
【００５０】
さらにまた詳しくは、前記αデータ専用レジスタはアドレス付け可能な複数のレジスタから構成され、前記演算実行ユニットによって、命令により指定された前記αデータ専用レジスタの中の１つのレジスタからデータを入力して前記論理演算を実行するようにしたものである。
【００５７】
【発明の実施の形態】
以下、本発明に係る各実施形態を、図１、図６ないし図１２を用いて説明する。
【００５８】
〔αデータを考慮したブロックマッチングの命令形態と、本発明の並列処理プロセッサの構成〕
発明が解決しようとする課題の項で説明した様に、αデータを考慮に入れたポリゴンマッチングの場合には、データマスク処理が頻繁に発生することにより、プロセッサのスループット低下の要因となる。そのため、本発明では、先ず、αデータを色情報と同期して扱うためのデータパスとその動作をおこなわせるための命令形態を考える。また、αデータがバイナリーデータである場合とグレースケールデータである場合を比較すると、グレースケールデータの場合の方が比較演算等多くの処理を行わなければならないことが分かる。そこで、さらに、本発明ではグレースケールデータに対するデータマスク処理を容易にするため、ＳＩＭＤ型ＡＬＵ内に読み出される前に、予めαデータをバイナリーデータに変換することが可能となるデータパスとその動作を援助するための命令形態についても考慮する。
【００５９】
（I）αデータがバイナリーデータである場合のポリゴンマッチング
最初に、αデータがバイナリーデータである場合のポリゴンマッチングを例にとり、αデータを色情報と同期して扱うためのデータパスとその動作を援助するための命令形態について説明する。
【００６０】
ｃコード２における値errorへの加算値を求める式((alpha(x+i, y+j)) & (abs(current(x+j, y+i) - reference(x+j+vec_x, y+i+vec_y))))をアセンブラコード(アセンブラコード２)に置き換えると以下のようになる。
【００６１】
アセンブラコード２：ポリゴンマッチング  αデータがバイナリーデータ
ｃコード２の動きベクトルを求めるための加算式を従来技術の命令により、展開したもの
LOAD R1, start_curr(R4)   # R1 = 外部メモリ[R4+start_curr]
LOAD R2, start_reference(R5)   # R2 = 外部メモリ[R5+start_reference]LOAD R3, start_alpha(R6)  # R3 = 外部メモリ[R6+start_alpha]
＃ start_current : 外部メモリにおける現フレームデータのアドレス
＃ start_reference : 外部メモリにおける参照フレームデータのアドレス
#  start_alpha : 外部メモリにおける現フレームαデータのアドレス
SUB R0, R1, R2
ABS R7, R0
AND R9, R7, R3
ここで、LOADは外部メモリから汎用レジスタへのデータ転送命令、SUBは差分算術演算命令（R0=R1-R2）、ABSは絶対値化算術演算命令（R7＝|R0|）、ANDはビット毎のAND論理演算命令(R9=R7&R3)をそれぞれ意味する。
【００６２】
このアセンブラコード２では、外部メモリから、現フレーム上の色データを汎用レジスタＲ１に、参照フレーム上の色データを汎用レジスタＲ２に、現フレーム上のαデータを汎用レジスタＲ３に、ＬＯＡＤする。そして、汎用レジスタＲ０に、現フレーム上の色データから、参照フレーム上の色データを引いた値を入れ、汎用レジスタＲ７に絶対値を取った値を入れて、最後に、汎用レジスタＲ７と、現フレーム上のαデータとで、ＡＮＤ命令によりマスク処理をしている。
【００６３】
このアセンブラコード２をアセンブラコード１と比較すると、レジスタR3へのαデータのロードと絶対値化演算後のマスク処理が加わっていることが分かる。そこで本発明では、αデータの扱いを扱うための専用レジスタ(以下、「αデータ専用レジスタ」と呼ぶ)を用意することにより、データマスク処理と加算等の算術演算を同時におこなうことが可能となるデータパスを提供することにした。また、αデータを色情報と同期して扱うための命令形態もあわせて提供する。
【００６４】
以下では、図１を用いて本発明の並列処理プロセッサの構成を説明しよう。
図１は、αデータがバイナリーデータの場合に適用する本発明の並列処理プロセッサの構成を示すブロック図である。
【００６５】
本発明の並列処理プロセッサと、従来技術に係る並列処理プロセッサと異なるのは、図１と図３を比較して分かるように、αデータ専用レジスタ１９０がプロセッサ内に存在することである。このαデータ専用レジスタ１９０は、制御回路１４０からの制御情報１９２によって動作する。また、αデータ専用レジスタ１９０は、汎用レジスタ１５０と同様に、命令デコーダ１２０、データメモリ１７０、ＳＩＭＤ型ＡＬＵ１６０と接続されている。したがって、本発明のプロセッサは、αデータ専用レジスタ１９０が、αデータのロード、命令デコーダからの命令受信、ＳＩＭＤ型ＡＬＵへのデータ読み出しを汎用レジスタと同期しておこなうことが可能な構成となっている。すなわち、データマスク処理と加算等の算術演算を同時におこなうことが可能となる。なお、ここでは簡単のため図３と同様にＳＩＭＤ型ＡＬＵを４並列とし、４個の画素の処理が同時におこなえるものと仮定している。
【００６６】
次に、本発明の並列処理プロセッサに対応した命令形態と、その動作について説明する。
【００６７】
αデータ専用レジスタの構造という観点からすると、αデータ専用レジスタ内のレジスタのアドレス数が、１個の場合と複数の場合とが考えられる。
【００６８】
（１）αデータ専用レジスタ内のレジスタのアドレス数が１個の場合
αデータ専用レジスタ内のレジスタのアドレス数が１個の場合には、従来命令で記述したアセンブラコード２は、アセンブラコード３に変更することができる。
【００６９】
アセンブラコード３：本発明の並列処理プロセッサに対応した命令形態
αデータがバイナリデータ
αデータ専用レジスタ内のレジスタが１個の場合
LOAD R1, start_curr(R4)
LOAD R2, start_reference(R5)
LOAD Rα, start_alpha(R6)
SUB R0, R1, R2
ABSAND R9, R0
ここで、LOADは外部メモリから汎用レジスタへのデータ転送命令、SUBは差分算術演算命令（R0=R1-R2）、ABSANDは絶対値化算術演算命令とビット毎のAND論理演算命令を組み合わせた命令(R9=|R0|&Rα)をそれぞれ意味する。このアセンブラコード３は、図１に示した本発明の並列処理プロセッサを、有効に活用するためには、αデータを外部メモリからαデータ専用レジスタへロードする命令、および、絶対値演算とAND論理演算を組み合わせたABSANDという新しい命令が必要となることが分かる。なお、αデータ専用レジスタのレジスタアドレス数が１個の場合、そのアドレスを指定することなく各ＡＬＵへのデータ読み出しアドレスは確定する。したがって、レジスタRαは命令の入力として必要不可欠なものではない。
【００７０】
次に、図１および図６を用いてこのアセンブラコード３におけるデータの演算過程について説明する。
図６は、ＡＬＵ内のデータの演算過程を示す模式図である（その一）。
【００７１】
なお、図６で左側の、左矢印はレジスタからＡＬＵへのデータ読み出し、右矢印はＡＬＵからレジスタへのデータの書き込みを意味する。
【００７２】
先ず、LOAD命令により、図１に示した外部メモリ１３０からデータメモリ１７０に、現フレーム上の色データとαデータ、および、参照フレーム上の色データが順に書き込まれる。
【００７３】
データメモリ１７０に読み込まれた各データは、命令デコーダ１２０から得られた書き込みレジスタ情報(R4、R5、R6は、各フレーム上における画素の位置を示すベースレジスタ)に応じて、色データは汎用レジスタ内のレジスタR1、R2に、αデータはα専用レジスタ内のレジスタRαにそれぞれ格納される。
【００７４】
次に、差分演算命令が実行されるが、この命令については、従来の技術の項で既に説明してものと同様である。
【００７５】
次に、絶対値化演算とAND論理演算の組み合わせ命令がおこなわれる。
【００７６】
先ず、命令デコーダ１２０から得られた読み出しレジスタ情報１２２に応じて、レジスタR0のデータが汎用レジスタからＳＩＭＤ型ＡＬＵ１６０に読み出される。また、命令デコーダ１２０から得られたデータ読み出し命令１９１に応じて、レジスタRαのデータがαデータ専用レジスタからＳＩＭＤ型ＡＬＵ１６０に読み出される。これと同時に、ＳＩＭＤ型ＡＬＵ１６０は制御回路から絶対値演算とAND論理演算の組み合わせを示すＡＬＵ制御情報を得る。
【００７７】
ＳＩＭＤ型ＡＬＵ１６０では、まず得られた差分演算結果が図１のデータ分割回路(deMux)１６１により、αデータ情報が図１のデータ分割回路(deMux)１９４により、それぞれ、図６に示される４０４、６０２の４個のデータ((g1-p1)〜(g4-p4)）ならびに(m1〜m4))に分割される。分割されたデータは図１に示す４個のＡＬＵ１６２ａから１６２ｄに振り分けられた後、各データ毎に演算処理がなされる。
【００７８】
具体的には、第一の処理として、図６の４０４に示す４個のデータに絶対値演算が施され、その結果が、図６に示す６０１のＡＬＵ内のメモリｔ０に一時保存される。第二の処理として、ｔ０内の各データと、図６に示す６０２の分割されたαデータとの間でビット毎のAND演算、すなわちαデータの値が０である画素に対するデータマスク処理が実行される。第二の処理終了後、図１に示されるデータ合成回路(Mux)１６３によりデータの合成がおこなわれ、命令デコーダ１２０から得られた書き込みレジスタ情報に応じて、レジスタR5に演算結果が格納される。なお、以上の処理を実行するための時刻管理は制御回路１４０によりおこなわれる。
【００７９】
（２）αデータ専用レジスタ内のレジスタのアドレス数が複数の場合
一方、αデータ専用レジスタ内のレジスタのアドレス数が複数の場合には、２種類の命令形態が考えられる。
【００８０】
第一の場合は、αデータ専用レジスタ内の各レジスタのアドレスと汎用レジスタ内のレジスタのアドレスが１対１で対応づけされているケースである。この場合には、現フレーム上の各αデータと現フレーム上の各色データを、それぞれ対応づけされているαデータ専用レジスタ内のレジスタと汎用レジスタ内のレジスタにロードしておくことにより、上記アセンブラコード３をそのまま用いることが可能である。これは、ＳＩＭＤ型ＡＬＵに読み出されるαデータが格納されているレジスタのアドレスは、ＳＩＭＤ型ＡＬＵに読み出されるデータが格納されている汎用レジスタ内のレジスタアドレスから一意に確定されるからである。
【００８１】
第二の場合は、ＳＩＭＤ型ＡＬＵに読み出されるα専用レジスタ内のレジスタのアドレスを別途指定する方法である、この場合には、アセンブラコード３におけるABSANDの命令形態を以下に示すアセンブラコード４のように変更する必要が生じる。
【００８２】
アセンブラコード４：本発明の並列処理プロセッサに対応した命令形態
αデータがバイナリデータ
明示的にα専用レジスタ内のレジスタのアドレスを指定
LOAD R1, start_curr(R4)
LOAD R2, start_reference(R5)
LOAD Rα1, start_alpha(R6)
SUB R0, R1, R2
ABSAND R9, R0, Rα1
ここで、LOADは外部メモリから汎用レジスタへのデータ転送命令、SUBは差分算術演算命令（R0=R1-R2）、ABSANDは絶対値化算術演算命令とビット毎のAND論理演算命令を組み合わせた命令(R9=|R0|&Rα1)をそれぞれ意味する。
【００８３】
上記のように、アセンブラコード４では、アセンブラコード３とは異なり、ＳＩＭＤ型ＡＬＵに読み出されるαデータが格納されているαデータ専用レジスタ内のレジスタのアドレスをABSAND命令において指定している。すなわち、アセンブラコード４の例ではレジスタRα1がABSAND命令内で指定されている。
【００８４】
このアセンブラコード４のデータの演算過程については、アセンブラコード３で説明したものと同様である。
【００８５】
ただ、αデータのLOADで使われるレジスタが、レジスタRα1になり、ABSAND命令で使われるデータがレジスタRα1にあるものを使う点が異なっているのみである。
【００８６】
（II）αデータがグレースケールデータである場合のポリゴンマッチング
それでは次に、αデータがグレースケールデータである場合のポリゴンマッチングについて説明しよう。
【００８７】
グレースケールαデータを０〜２５５(８ビット画像の場合)の値で用いたい場合、例えば、αデータの比率に応じて、いくつかの任意形状画像から表示用の合成画像を作成するような場合には、図１に示した並列処理プロセッサの構成で十分である。
【００８８】
しかしながら、ポリゴンマッチングのようにデータマスク処理をおこなう場合にはグレースケールデータのまま扱うことは好ましくない。既に説明した様に、αデータを考慮したポリゴンマッチングのデータマスク処理では、αデータが０のときには、色データを無視し、それ以外のときには、色データをそのまま計算した。このような処理を既存のＳＩMＤ型プロセッサでおこなわせるには、次のような方法がある。
【００８９】
（１）図３に示す制御回路１４０の各ＡＬＵ１６２ａ〜1６２ｄに対して、データマスク処理をおこなうためのメモリレジスタを持たせる。各αデータが、０であるか否かの判定結果は０、１の値としてメモリレジスタに格納される。データマスクは、メモリレジスタ、およびＡＬＵに対する特殊命令によっておこなわれる。
【００９０】
（２）各αデータが０であるか否かの判定結果に応じて規定された汎用レジスタの内容を特定の状態に書き換える。その内容から、特殊命令によって指定されたデータにマスクをかける。
【００９１】
この２種類の例で示したように、ＳＩＭＤ型プロセッサにとって、データマスクはあくまで特殊な命令であり、ＳＩＭＤ型プロセッサの苦手とする命令の１つである。したがって、ポリゴンマッチングのように画素単位の条件分岐処理が繰り返される場合、従来仕様のＳＩＭＤ型プロセッサの使用は好ましくない。例えば、上記（２）の方法を採ったときに、ｃコード３の値errorへの加算値を求める式をアセンブラコードに置き換えると次のようになる。
【００９２】
アセンブラコード５：ポリゴンマッチング  αデータがグレースケールデータ
ｃコード３の一部のコードを従来技術の命令により、展開したもの
LOAD R1, start_curr(R4)
LOAD R2, start_reference(R5)
LOAD R3, start_alpha(R6)
SUB R0, R1, R2
ABS R7, R0
SMTIU R8, R3, 0
MULTU R9, R8, R7
ここで、LOADは外部メモリから汎用レジスタへのデータ転送命令、SUBは差分算術演算命令（R0=R1-R2）、ABSは絶対値化算術演算命令（R7＝|R0|）、SMTIUは条件分岐命令(if(R3>0)R8=1; else R8=0)、MULTUは乗算算術演算命令(R9=R8×R7)をそれぞれ意味する。
【００９３】
上記アセンブラコード５をαデータがバイナリーデータの場合、すなわちアセンブラコード２と比較すると、アセンブラコード５の方が多くの処理量を必要とすることが分かる。
【００９４】
そこで、本発明ではＳＩＭＤ型ＡＬＵ内に読み出される前に予めグレースケールのαデータをバイナリーデータに変換する方法が有効と考え、そのために必要なデータパス構成と命令形態を提供する。すなわち、この変換処理を予めおこなっておくことにより、先に説明したアセンブラコード３とアセンブラコード４のように、絶対値化演算とビット毎のAND論理演算の組み合わせ命令を使用することが可能となる。
【００９５】
以下、図７および図８を用いてαデータがグレースケールの場合に適用される本発明の並列処理プロセッサの構成について説明しよう。
図７は、αデータがグレースケールデータの場合に適用する本発明の並列処理プロセッサの構成を示すブロック図である（その一）。
図８は、αデータがグレースケールデータの場合に適用する本発明の並列処理プロセッサの構成を示すブロック図である（その二）。
【００９６】
（II−１）αデータがグレースケールデータの場合で、αデータ自体をバイナリデータに変換してαデータ専用レジスタに格納する場合
本発明の並列処理プロセッサは、ＳＩＭＤ型ＡＬＵと同等の並列度でグレースケールαデータをバイナリーデータに変換する機能を持つ並列実行ユニットをプロセッサ内に別途設けることにより、ＳＩＭＤ型ＡＬＵ内に読み出される前の変換を可能にしたものである。すなわち、図７、図８と図１を比較して分かるように、αデータ制御回路７０１がプロセッサ内に存在することが異なっている。
【００９７】
このαデータ制御回路７０１は、制御回路１４０からの制御情報７０３によって動作する。また、図７，図８ともαデータ制御回路７０１は、命令デコーダ１２０とαデータ専用レジスタ１９０に接続されている。図７と図８の違いは、図８はαデータ制御回路が常にαデータ専用レジスタからデータを得る構成になっているのに対し、図７はαデータ制御回路がデータメモリから直接データを得る構成となっている点である。この２種類の構成にはそれぞれ長所と短所がある。すなわち、図７の方がデータのロードから変換へ至るまでの処理は少なくてすむが、その一方で、図８のようにαデータ専用レジスタ内のデータに対して変換処理をおこなうことはできない。したがって、この図７と図８の機能を両方持つ構成(図７のデータ線７０５と図８のデータ線７０６を両方持つ構成)も考えられる。なお、ここでも簡単のためＳＩＭＤ型ＡＬＵならびにαデータ制御回路内の実行ユニットを４並列とした。
【００９８】
このように、αデータの変換機能をＳＩＭＤ型ＡＬＵ１６０から切り離すことにより、色データとグレースケールαデータの並列処理が可能となる。
【００９９】
本実施形態では、図７、図８の並列処理プロセッサの構成を有効に活用し、色データとグレースケールαデータの並列処理を可能とするために、αデータ専用レジスタへのαデータのロード命令とバイナリーデータへの変換命令とを組み合わせた新しい命令を用意することにした。
【０１００】
以下、図９および図１０を用いて、αデータがグレースケールデータの場合の本発明の並列処理プロセッサに対応した命令形態と、その動作について説明する。
図９は、αデータ制御回路の構成を示すブロック図である。
図１０は、αデータ専用制御回路内のデータの演算過程を示す模式図である（その一）。
【０１０１】
なお、図１０で、左矢印はαデータ専用レジスタからαデータ専用制御回路内のＡＬＵへのデータ読み出し、右矢印はαデータ専用制御回路内のＡＬＵからαデータ専用レジスタへのデータの書き込みを意味する。
【０１０２】
先ず、図７または図８に示されたデータメモリ１７０に、αデータがロードされる。ロードされたデータは図７の場合には直接データ線７０５から、図８の場合にはαデータ専用レジスタを介してデータ線７０６から図９のデータ分割回路(deMux)７１１に読み出される。読み出されたαデータは、図１０に示すような４個のデータ(m1〜m4)に分割されたのち、それぞれ変換器７１２ａ〜７１４ｄに入力される。
【０１０３】
変換器内では、図１０の８０３ａ〜８０３ｄに示すように、ｍ１〜ｍ４と命令により指定されるしきい値(ここでは、０値)がそれぞれ比較され、８０４に示すように０または２５５(８ビット画像の場合)を示す4個の変換値が得られる。すなわち、αデータが０のときには、変換後は、0x0000（１６進数表記の２バイトの０）であり、αデータが０以外のときには、変換後は、0x00ffとなる。これらの変換値は図９のデータ合成回路(Mux)７１３により、１個のデータに合成された後、データ線７０４を通してαデータ専用レジスタに出力される。
【０１０４】
このロード命令とバイナリーデータへの変換命令を組み合わせた命令は、例えば、次のようなアセンブラ形式で表現できる。なお、０は比較演算時のしきい値を意味する。
【０１０５】
LOADBin Rα, start_alpha(R6), 0
ところで、上記αデータがグレースケールデータである場合の本発明の並列処理方法は、グレースケールのαデータをバイナリデータに変換して、αデータ専用レジスタ１９０にロードして、以下の処理は、そのαデータを用いるものである。したがって、この場合のマスク処理は、アセンブラコード３と、アセンブラコード４で示した組み合わせ命令であるABSAND命令を用いれば良い。すなわち、この場合のアセンブラコードの展開は、３行目のLOAD命令を上のLOADBin命令に置きかえれば良い。
【０１０６】
（II−２）αデータがグレースケールデータの場合で、αデータとは別にマスクデータを生成してαデータ専用レジスタに格納する場合
次に、αデータがグレースケールデータである場合の、さらに他の処理方法について説明する。
【０１０７】
上記（II−１）の例では、グレースケールのαデータをバイナリデータに変換して、αデータ専用レジスタ１９０に格納した。この場合には、前のアセンブラコード３とアセンブラコード４を用いることができ、αデータ専用レジスタに格納されたバイナリαデータに対して、色データとビット毎のAND論理演算を組み合わせた命令であるABSAND命令を用いることは上述の通りである。
【０１０８】
ここで示すαデータがグレースケールデータの場合の処理方法は、各画素に対してマスクデータ割り当て、データマスク処理用の演算命令を用意して処理するものである。
【０１０９】
例えば、データマスク処理をおこなわない画素については、値０のマスクデータを、データマスク処理をおこなう画素については、値１のマスクデータを割り当て、マスクデータの値に応じて各画素に対してデータマスクをおこなうか否かを判定するという方法が考えられる。すなわち、マスクデータが、０の場合のみ、色データの出力値を０値に置き換えれば良い。
【０１１０】
この場合の本発明並列の処理プロセッサの構成としては、画素毎のマスクデータを図７および図８に示すαデータ専用レジスタ１９０に保存することとし、かつ、αデータからマスクデータへの変換機能を図９の変換器に持たせることにする。また、マスクデータは、１ビットのデータでもよいので、図７、図８に示すαデータ専用レジスタ１９０内のレジスタの1部を、１画素1ビットのレジスタ構成とすることも可能である。
【０１１１】
以下、図９および図１１を用いてこの並列処理プロセッサの動作とデータマスク処理用の演算命令について説明する。
図１１は、αデータ専用制御回路内のデータの演算過程を示す模式図である（その二）。
【０１１２】
αデータ専用制御回路の処理は、（II−１）で示したものとほぼ同様である。しかしながら、出力の９０４は、マスクデータであり、これが、合成された形式でαデータ専用レジスタ１９０に出力される。なお、マスクデータを１６ビットで表現するか、１ビットで表現するかはαデータ専用レジスタの構成に依存する。
【０１１３】
次に、この場合の並列処理プロセッサに対する命令について説明しよう。
【０１１４】
外部メモリ１３０から、αデータ専用レジスタ１９０に、αデータをロードし、かつ、マスクデータを生成する組み合わせ命令は、例えば、次のようなアセンブラ形式で表現できる。なお、０は比較演算時のしきい値を意味する。
【０１１５】
LOADMask Rα, start_alpha(R6), 0
このマスクデータを用いた場合には、アセンブラコード３とアセンブラコード４は、それぞれ、以下に示すアセンブラコード６とアセンブラコード７に書き換えられる。ここで、アセンブラコード３は、α専用レジスタ内のレジスタのアドレス数が１個の場合あるいはα専用レジスタ内の各レジスタが汎用レジスタ内のレジスタと１対１で対応づけされている場合であり、アセンブラコード４は、α専用レジスタ内のレジスタのアドレス数が複数個の場合に用いられるアセンブラコードである。
【０１１６】
アセンブラコード６：αデータがグレースケールデータ
αデータ専用レジスタ内のレジスタが１個の場合
LOAD R1, start_curr(R4)
LOAD R2, start_reference(R5)
LOADMask Rα, start_alpha(R6), 0
SUB R0, R1, R2
ABSMask R9, R0
アセンブラコード７：αデータがグレースケールデータ
明示的にα専用レジスタ内のレジスタのアドレスを指定
LOAD R1, start_curr(R4)
LOAD R2, start_reference(R5)
LOADMask Rα1, start_alpha(R6),0
SUB R0, R1, R2
ABSMask R9, R0, Rα1
ここで、LOADは、外部メモリから汎用レジスタへのデータ転送命令、SUBは、差分算術演算命令（R0=R1-R2）、ABSMaskは、絶対値化算術演算命令とデータマスク処理命令を組み合わせた命令(R9=Mask(|R0|))をそれぞれ意味する。
【０１１７】
ここで、アセンブラコード３、アセンブラコード４とアセンブラコード６、アセンブラコード７の違いは、３行目のLOAD命令が、LOADMask命令に、ABSAND命令がABSMask命令に置き換えられている点である。ABSMask命令は、αデータ専用レジスタ内のマスクデータにより、マスク処理をおこなう点がABSAND命令とは異なっている。
【０１１８】
以下では、図１２を用いてこの場合の並列処理プロセッサの動作について説明する。
図１２は、ＡＬＵ内のデータの演算過程を示す模式図である（その一）。
【０１１９】
この図６と図１２における違いは、各ＡＬＵへの入力データが、図６ではαデータであったのが、マスクデータに置き換えられている点である。
【０１２０】
ここでは、上記アセンブラコード６におけるデータ並列処理の流れを例に採って説明しよう。
【０１２１】
図６を用いたアセンブラコード３の説明では、データ６０１と、データ６０２とで、ABSANS命令を４並列で実行し、その結果６０４をＲ５に書き出した。この例では、データ６０１と、マスクデータ１２０１とで、ABSMask命令を実行し、その結果６０４をＲ５に書き出すものであり、データ６０２と、マスクデータ１２０１の形式が異なっているのに過ぎない。すなわち、アセンブラコード３のABSAND命令では、αデータ専用レジスタ１９０内にあるバイナリデータに変換された１６ビットのαデータを、オペランドとするのに対して、このアセンブラコード６のABSMask命令では、αデータ専用レジスタ１９０内にあるマスクデータを、オペランドにする。
【０１２２】
〔本発明の適用範囲について〕
以上、本発明の代表的な実施形態を、実行するアセンブラコードと共に説明してきた。しかしながら、本発明の適用範囲は以上に限定されるものではなく、以下のような場合も含まれる。
【０１２３】
（１）本実施形態では、画像データに関して、特にポリゴンマッチングのケースで本発明の適用例を示したが、それ以外にもαデータを扱う演算、例えば、画像合成、誤差計算などにも本発明は適用可能である。
【０１２４】
（２）本実施形態では、図１や、図７、図８の並列処理プロセッサ構成の有意性を、アセンブラコード３のABSAND命令、アセンブラコード６、アセンブラコード７のLOADMask命令、ABSMask命令のような命令と組み合わせて述べてきた。しかしながら、本発明のαデータ専用レジスタ、およびαデータ制御回路は、これらのような命令を持たないプロセッサにおいても有効である。例えば、本発明の構成により、データの並列処理がよりスムーズになり（αデータの処理を、それを使用する最終段まで切り離せるため）、ポリゴンマッチングにおける色信号の誤差計算とそのマスク処理の時分割処理がより容易になる。
【０１２５】
（３）本実施形態では、αデータにおけるマスク処理をANDまたはMask命令と絶対値化命令(ABS)の組み合わせ命令に関してのみ説明してきたが、ABS以外の演算、例えば、加算、差分、乗算、除算等の一般的な算術論理演算においても本発明の並列処理プロセッサによって実施できるため、その場合にも、本発明を適用することができる。また、２種類以上の演算を組み合わせた演算命令とマスク処理の組み合わせに関しても本発明に含まれる。さらに、αデータに対する命令に関しても、ANDだけでなく乗算、除算、シフト演算等の一般的な算術論理演算においても本発明の並列処理プロセッサによって実施できる。
【０１２６】
（４）本実施形態では、αデータ制御回路内の変換器が持つ機能として、αデータのバイナリーデータ化とマスクデータ化を実用的な例として説明してきたが、これ以外にも、αデータの量子化、シフト演算処理を行うためのシフト量への変換機能を持つ場合も有効的であるため、このようなデータパス構成と、その処理を実施する方法も本発明に含まれる。
【０１２７】
（５）本実施形態では、データフォーマットを、１６ビット、並列実行ユニットの並列数を、４並列として説明してきたが、本発明の並列処理プロセッサは、それ以外のデータフォーマット、および並列数の異なる演算ユニットで実現できるため、上記以外の形態でも本発明を適用することができる。特にαデータ８ビットのデータを８並列で扱うことは画像処理において重要である。また、本実施形態では、画像データを８ビットとして説明してきたが、画像の解像度が９ビット以上の場合にも本発明を適用することができる。
【０１２８】
（６）本実施形態は、αデータ専用レジスタを汎用レジスタと別に用意する方法について説明してきた。しかしながら、同じ機能を有するその他の実現形態として、汎用レジスタ内の１部のレジスタをαデータ専用レジスタとして扱う方法やα汎用レジスタ内にαデータ専用レジスタが含まれる方法が考えられる。ただし、この場合に、ＳＩＭＤ型ＡＬＵは、色データとαデータを汎用レジスタから同時に受信可能である必要がある。また、αデータ制御回路が存在するデータパスでは、汎用レジスタ内の設けたαデータ専用レジスタとαデータ制御回路が接続されている必要がある。
【０１２９】
（７）本実施形態は、ＳＩＭＤ型プロセッサを例にとって説明したが、本発明が適用できるその他の構成としては、実行ユニット内に命令処理の並列性を持つプロセッサや回路がある。したがって、動き推定回路、DSP(ディジタル・シグナル・プロセッサ)、その他の特殊機能を実行するためのプロセッサ等にも本発明は活用することができる。また、複数のSISD型プロセッサに対して単一の命令がブロードキャストされるようなＳＩＭＤ型並列コンピュータにも本発明は活用することができる。
【０１３０】
【発明の効果】
本発明によれば、αデータを含んだが画像処理をおこなう並列処理プロセッサにおいて、αデータを処理するための専用の機構を設け、各並列実行ユニットの処理負担を軽減し、プロセッサのスループットを向上させた並列処理プロセッサを提供することができる。
【図面の簡単な説明】
【図１】αデータがバイナリーデータの場合に適用する本発明の並列処理プロセッサの構成を示すブロック図である。
【図２】ブロックマッチングを説明するための概念図である。
【図３】従来技術に係る並列処理プロセッサの構成を示すブロック図である。
【図４】従来技術に係るＡＬＵ内のデータの演算過程を示す模式図である。
【図５】フレームとbounding  boxの関係を示した模式図である。
【図６】ＡＬＵ内のデータの演算過程を示す模式図である（その一）。
【図７】αデータがグレースケールデータの場合に適用する本発明の並列処理プロセッサの構成を示すブロック図である（その一）。
【図８】αデータがグレースケールデータの場合に適用する本発明の並列処理プロセッサの構成を示すブロック図である（その二）。
【図９】αデータ制御回路の構成を示すブロック図である。
【図１０】αデータ専用制御回路内のデータの演算過程を示す模式図である（その一）。
【図１１】αデータ専用制御回路内のデータの演算過程を示す模式図である（その二）。
【図１２】ＡＬＵ内のデータの演算過程を示す模式図である（その一）。
【符号の説明】
１１０…命令フェッチ回路、１２０…命令デコーダ、１３０…外部メモリ、１４０…制御回路、１５０…汎用レジスタ、１６０…ＳＩＭＤ型ＡＬＵ、１６１、１９４、７１１…データ分割回路、１６２ａ、１６２ｂ、１６２ｃ、１６２ｄ…ＡＬＵ、１６３、７１３…データ合成回路、１７０…データメモリ、１９０…αデータ専用レジスタ、２１…現フレーム、２２…参照フレーム、２３、２４、２５、５３…ブロック、２６…動きベクトル、５１…任意形状物体、５２…bounding  box、５４…有効画素領域、５５…透明画素領域、７０１…αデータ制御回路、７１２ａ、７１２ｂ、７１２ｃ、７１２ｄ…変換器、４０１、４０２、４０４、４０５、６０１、６０２、６０４、８０１、８０２、８０４、９０４、１２０１…メモリ、４０３ａ、４０３ｂ、４０３ｃ、４０３ｄ…差分器、６０３ａ、６０３ｂ、６０３ｃ、６０３ｄ…AND演算器、８０３ａ、８０３ｂ、８０３ｃ、８０３ｄ、９０３ａ、９０３ｂ、９０３ｃ、９０３ｄ…比較器。
【図１】
0003869947.tif 000005
【図２】
0003869947.tif 000006
【図３】
0003869947.tif 000007
【図４】
0003869947.tif 000008
【図５】
0003869947.tif 000009
【図６】
0003869947.tif 000010
【図７】
0003869947.tif 000011
【図８】
0003869947.tif 000012
【図９】
0003869947.tif 000013
【図１０】
0003869947.tif 000014
【図１１】
0003869947.tif 000015
【図１２】
0003869947.tif 000016