(57)【特許請求の範囲】
【請求項１】
同種に構築されマトリックス方式で接続された多数のプロセッサ素子（PE11〜PE44）を備えた、画像処理プロセッサにおいて、
前記各プロセッサ素子が、レジスタバンク（REGF）を介してフィードバック結合された各算術論理演算ユニット（ALU2）の他に、分割されたイメージセクションバッファの各部分記憶ユニット（ISB）と、各ローカル汎用メモリ（GPM）と、さらなる各算術論理演算ユニット（ALU1）と、各乗算器／加算器ユニット（MA）とを有し、
前記各乗算器／加算器ユニットの入力側は、前記さらなる各算術論理演算ユニットの出力側と接続され、該さらなる各算術論理演算ユニット自体は、前記各部分記憶ユニットの出力側と前記各ローカル汎用メモリの出力側に接続された入力側を有し、前記各乗算器／加算器ユニットの出力側は、前記各算術論理演算ユニット（ALU2）の入力側に接続されており、
前記レジスタバンク（REGF）の出力側が、前記ローカル汎用メモリの入力側及び／又は前記さらなる各算術論理演算ユニット（ALU1）の入力側、及び／又は前記各乗算器／加算器ユニット（MA）の入力側に接続されて出力データ（ALU2−ｏ）を供給し、
入力データ（ALU2−ｉ）が、前記各算術論理演算ユニット（ALU2）の入力側にも、前記さらなる各算術論理演算ユニットの入力側にも（ALU1）及び／又は前記各乗算器／加算器ユニット（MA）の入力側にも供給され、
前記分割されたイメージセクションバッファの各部分記憶ユニットに画像データ（im−down,im−left,im−up,im−right）が、隣接するプロセッサ素子の各部分記憶ユニット（ISB）により供給され、さらに相応の隣接するプロセッサ素子が存在しない場合には、画像データがピクセルバス（ｐ−bus）によって供給され、前記各ローカル汎用メモリ（GPM）がグローバルバス（ｇ−bus）を介して計算データを供給されることを特徴とする、画像処理プロセッサ。
【請求項２】
前記各部分記憶ユニット（ISB）と、各ローカル汎用メモリ（GPM）と、さらなる各算術論理演算ユニット（ALU1）と、各乗算器／加算器ユニット（MA）の入力ワード幅が、フレキシブルに選択可能であり、選択された入力ワード幅に応じて、入力データの多成分ベクトルがさらなる各算術論理演算ユニット（ALU1）と各乗算器／加算器ユニット（MA）において並行処理可能である、請求項１記載の画像処理プロセッサ。
【請求項３】
前記各乗算器／加算器ユニットは、並列に動作する多数の乗算器（MULTA）からなり、これらは出力側で加算器ツリー（ADDT）によって統合されている、請求項１又は２いずれか１項記載の画像処理プロセッサ。
【請求項４】
入力データバス（ｉ−bus）がキャッシュメモリ（CACHE）を介してピクセルバス（Ｐ−bus）に接続されている、請求項１〜３いずれか１項記載の画像処理プロセッサ。
【請求項５】
マルチプレクサ（MUX5）を用いて、マトリックスの最終列のプロセッサ素子（PE14〜PE44）が、同じ行の隣接するプロセッサ素子（例えばPE13）の出力側又は同じ列の隣接するプロセッサ素子（PE24）の出力側に選択的に接続可能であり、データ流の方向において水平方向にも垂直方向にも後続のプロセッサを有さない、最後のプロセッサ素子（PE14）の出力側が、評価ユニット（DU）に接続されている、請求項１〜４いずれか１項記載の画像処理プロセッサ。
【請求項６】
電子スイッチ（S1〜S8）により、マルチプレクサ（MUX′〜MUX′″）を用いて、少なくとも２つの別個のグローバルバス（ｇ−bus1,g−bus2）と少なくとも２つの別個のピクセルバス（ｐ−bus1,p−bus2）と少なくとも２つの別個のキャッシュメモリ（CACHE1,CACHE2）と少なくとも２つの別個の評価ユニット（DU1,DU2）とを備えた少なくとも２つのプロセッサ素子（PE,PE＊）グループから形成可能である、請求項１〜５いずれか１項記載の画像処理プロセッサ。
【発明の詳細な説明】
この種のプロセッサは、例えば二次元コンボルーション、ガボール変換、ガウス又はラプラシアンピラミッド、ブロックマッチング、DCT,MPEG2等の集約的コンピュータアルゴリズムの迅速な処理のために必要とされる。
公知文献“Design und Electronic 12,13.06.1995,30−35頁”からは、この目的のために例えば、次のような装置が公知である。すなわち臨界的計算時間の信号処理アルゴリズムが、思い通りのプログラミングが可能な特殊なプロセッサによって処理され、レジスタがオンチップメモリを介して供給を受け、複雑なクロスバースイッチがオンチップメモリとプロセッサの間の最適なコミュニケーションを確保する、装置が公知である。この場合の欠点は、オンチップメモリへの要求が高いことと、並行した演算装置の数が少ないことに基づく計算能力の低さである。さらに４つ以上の並行した信号プロセッサが使用されている場合には、通信コストの上昇と、それに伴うチップ面の増加が累算的となる。
また公知のマイクロプロセッサレポート“The Insider's Guide to Microprocessor−Hardware,Volume 8,Nr.13,Oktober3,1994,5−９頁”からは、２つの積分器と３つの不動小数点ユニットを有する、大規模なパイプライン式スーパースカラー64ビットRISCプロセッサが公知である。これは２つのグラフィックユニット、詳細には加減ユニットと、並列積分演算のための乗算ユニットによって拡張されている。しかしながらこの場合はレジスタポートの数が限られているため、２つの浮動小数点ないしグラフィックコマンドしか同時に処理することができない。このことは、画像処理における多くの要求に対する計算能力が不十分であることを意味する。
さらに同様の公知のマイクロプロセッサレポート“The Insider's Guide to Microprocessor−Hardware,Decmber6,1994,12−15頁”からは、部分的に異なる複数の実行ユニットが設けられ、各命令毎にそれらのうちの５つまでが同時にアドレッシング可能であるプロセッサが公知である。この場合の欠点は比較的複雑なコンパイラである。これはプロセッサの全ての待ち時間を考慮し、パラレル命令がハードウエアに最適に対立なしで使用されることを保証するものである。
1994年にシカゴで開かれたビジュアルコミュニケーションとイメージ処理（VCIP'94）に関する国際会議の議事録や、1993年にカリフォルニアのサンディエゴで開かれたIEEE国際会議“Custom Integrated Circuit Conference"の議事録4.6.1−4.6.3からは、ローカルメモリと、ローカルメモリとプロセッサ素子の間のハイデータレートを有する高度な一次元パラレルSIMDプロセッサアレイが公知である。ここでは複雑な演算が個々の演算から統合的に構築され、この統合的演算の比較的長い実行時間がここでも大量のプロセッサ素子によって補償される。最初のケースではグローバルなマトリックスメモリが設けられ、これが個々のプロセッサ素子に対する二次元画像区分の分配を許可している。第２のケースでは、グローバルなコミュニケーション機能が一度はロードされたデータの多重使用を許容し、プロセッサアレイと外部メモリの間の所要のワイヤリング帯域幅を低減する。この場合の欠点は、困難なプログラミングと、パイプライン型プロセッサ素子の複雑な制御と、非パイプライン型プロセッサ素子の低い周波数と、大容量のオンチップメモリである。
本発明の課題は、僅かな所要チップ面積のもとで、画像処理に頻繁に要される手法毎に可及的に高速な処理速度を達成することのできる、画像処理のためのプロセッサを提供することである。
この課題は請求項１の特徴部分に記載の本発明によって解決される。
本発明の有利な構成例は従属請求項に記載される。
本発明の特に有利な点は、種々のデータフォーマットに対するシステムのスカラー処理性や再構成が容易なことである。また低コストなシステム構造、例えば本発明によるプロセッサの他には実質的に標準的なメモリチップしか必要とされないような画像処理システムやニューロコンピュータへの適合性も高い。さらに大きな利点は、前述したような集約的コンピュータ画像処理アルゴリズムのリアルタイム処理の可能性である。
次に本発明を図面に基づき詳細に説明する。
図１は画像処理のための本発明によるプロセッサのプロセッサ素子のブロック回路図である。
図2Aは図１によるプロセッサ素子の第１部分の詳細な回路図である。図2Bは、図１によるプロセッサ素子の第２部分の詳細な回路図である。
図３は本発明によるプロセッサの第１実施例を示した図である。
図４は本発明によるプロセッサの第２実施例を示した図である。
図１には、画像処理のための本発明によるプロセッサのプロセッサ素子のブロック回路図が示されており、これは、算術論理演算ユニットALU2、レジスタバンクREGS、イメージセクションバッファISB、汎用メモリGPM、さらなる算術論理演算ユニットALU1、乗算器／加算器ユニットMAを有している。算術論理演算ユニットALU2は典型的には、加算部ADD、値領域シフトのためのバレル回転子ROT、ビット幅マッチングのための飽和装置SAT、最上位ビットmsbないし最下位ビットlsbを決定する検出器DET、論理演算ユニットLUを有している。この乗算器／加算器ユニットMAは典型的には乗算器アレイMULTAからなっており、このアレイは一連の個々の乗算器を有している。その個々の結果は、後置接続されている加算器ツリーADDTによって総括的な結果に統合される。バッファISBは、例えば２×２画素毎の情報を保持できる二次元の双方向シフトレジスタとして解されてもよい。バッファISBには画像データが、図中の垂直方向で入力／出力ポートim−down,im−upを介して、そして図中水平方向では入力／出力ポートim−left,im−rightを介して読み込まれたり読み出されたりする。メモリGPMは、標準メモリである。このメモリにはオンチップが設けられており、これはプロセッサ素子において第２のローカルデータ伝送部として使用され、グローバルバスｇ−busを介して供給されている。このメモリGPMは、係数、回路コア、ビットマスク、ニューラルネットワーク等のための重み付けマトリックスを含んでいる。バッファISBの場合もメモリGPMの場合も読み取りアクセスは、個々のデータに従ってではなく、データフォーマットに応じてマルチコンポーネントベクトルに対して行われる。総体的に全てのプロセッサエレメントのイメージセクションバッファは、分散された二次元イメージセクションバッファをあらわす。
プロセッサエレメント間のローカルコネクションを介して、イメージセクションはピクセル毎に上下に又は左右にシフトされ得る。このことのために、エッジ長さｎのイメージセクションに対して、ｎ個のピクセルがバッファISBのセルアレイのそれぞれのエッジに追従されなければならない。プロセッサエレメントは、その画像セグメントに読み取りのみのアクセスしか生じさせない。１つのアクセスによって個別の１個のピクセルだけが読み取られるのではなく、画素フォーマットに応じて、すなわち精度に応じて、画素のベクトル、アレイが読み取られる。
ローカルバッファISB及びメモリGPMからのデータはさらに算術論理演算ユニットALU1に供給される。この算術論理演算ユニットALU1の出力側は、乗算器／加算器ユニットMAの入力側に接続されている。この乗算器／加算器ユニットMAの出力側は、算術論理演算ユニットALU2の入力側に接続されており、この算術論理演算ユニットALU2の出力側はレジスタバンクREGFに接続されている。レジスタバンクREGFの出力側は同時にプロセッサエレメントの出力側alu2−ｏである。レジスタバンクREGFの出力側並びにプロセッサエレメントの入力側alu2−ｉは、算術論理演算ユニットALU2の入力側に接続されている。
別の構成例では、入力側alu2−ｉ及び／又はレジスタバンクREGFの出力側は別の算術論理演算ユニットALU1の入力側に接続可能である。
また第３の構成例として、入力側alu2−ｉ及び／又はレジスタバンクREGFの出力側が、乗算器／加算器ユニットMAの入力側に接続されてもよい。
さらに第４の構成例として、入力側alu2−ｉ及び／又はレジスタバンクREGFの出力側が、別の算術論理演算ユニットALU1の入力側にも乗算器／加算器ユニットMAの入力側にも接続されてもよい。
図2Aと図2Bには、本発明による画像処理のためのプロセッサのプロセッサ素子の詳細が示されており、この場合図2Aには実質的にバッファISB、メモリGPM、別の算術論理演算ユニットALU1、乗算加算ユニットMAが含まれており、図2Bには実質的に算術論理演算ユニットALU2、レジスタバンクREGFが含まれている。さらにいくつかのレジスタCREG,MSBREG、STAT、フォーマッタF1〜F4、エキスパンダEXP1〜EXP3、マルチプレクサMUX0からMUX6が設けられている。これらは算術論理演算ユニットALU1,ALU2に加えられ、データの選択ないしはワード長のマッチングに用いられる。算術論理演算ユニットALU1の入力データは、ここでは２つのイメージセクションバッファISB1,ISB2とメモリGPMから供給される。２つのイメージセクションバッファは、例えばステレオイメージの処理の際に特に有利である。さらにここでは次のようなことも可能である。すなわち32×32ビット積の乗算器への供給を直接算術論理演算ユニットALU2の結果レジスタから行うことが可能である。これは信号alu2_loc_out1を介して行われる。この場合最大で３つの入力ベクトルin_a,in_b,in_cが処理可能である。クロスバースイッチは、これらの３つの入力ベクトルに対する完全な融通性を保証する。イメージセクションバッファISB1とISB2は、その隣からないしイメージキャッシュからポートim_up,im_down,im_right,im_leftを介して再ロードされる。イメージセクションバッファへのイメージセクションの事前ロードも再ロードとシフトを介して行われる。読み込みは信号im_opを介して制御される。この信号は、様々なシフト方向とステップサイズを示す。メモリGPMは、そのデータをグローバルバスg_busを介して得るか又はレジスタReg0〜Reg15（これらは算術論理演算ユニットALU2に対する結果レジスタを形成する）を有するレジスタバンクREGFから得る。バッファISB1,ISB2とメモリGPMの出力データのデータフォーマットは、同一であり、例えばそれぞれ128ビット幅のベクトルを形成する。この場合このベクトルは４つの32ビットデータか又は８つの16ビットデータ、又は16の８ビットデータを含む。
論理演算ユニットLU1a,LU1bは、信号alu1a_lopないしalu1b_lopによって制御され、各入力側a,bの論理結合を実行する。これらの入力側はクロスバースイッチを介してバッファISB1,ISB2、メモリGPMに接続されている。これらの入力側のフォーマットは信号alu1_formを介してコミュニケーションされている。全てのバイナリ演算は、２つの入力側のフォーマットと同一でなければならない。それにより各論理演算ユニットは、16の８ビットデータ対か８つの16ビットデータ対又は４つの32ビットデータ対を平行処理することができる。論理演算ユニットLU1aとLU1bは例えば以下の論理演算を支援する。：
ａ（バイパス）
NEGa、（NOT）
a AND b、
a NAND b、
a OR b、
a NOR b、
a XOR b、
a XNOR b、
演算ユニットAU1は、論理演算ユニットLU1a,LU1bの出力信号の論理結合を実施する。さらにこのユニットAU1は、補助入力側ｃとｄを有する。この場合補助入力側ｃは一定レジスタCREGの出力側に接続され、補助入力側ｄは、クロスバースイッチを介してメモりに接続されている。このユニットAU1で実施される演算は、信号alu1_aopと入力側フォーマットalu1_formによって決定される。可能な桁拡張によって、出力フォーマットは、入力フォーマットに依存して9,17,33ビットになり、出力ベクトルは136ビットの幅を有するようになる。演算に関与する全ての入力側は同じフォーマットを有していなければならない。すなわち16個の８ビットデータ対、又は８個の16ビットデータ対、又は４個の32ビットデータ対が並行処理される。演算ユニットAU1は以下の演算を支援する。
ａ（バイパス）、
−ａ（２つの補数）、
|a|（絶対値形成）、
ａ＋ｂ、
|a＋b|、
−ａ＋ｂ、
｜−ａ＋b|、
−（ａ−ｂ）
−ａ−ｂ
種々の閾値関数がａとｂを比較し、この比較に依存してa,c,d,0の出力がなされる。
乗算器MUX0によって、制御信号alu1_o2_selに依存してユニットLU1a又はLU1bの出力信号log_a又はlog_bの１つが選択され、あるいはバッファ／メモリ内容が乗算器アレイに対するクロスバースイッチを介して選択される。一定レジスタCREGは、例えばそれぞれ128ビットの４つのベクトルを記憶できる。演算ユニットAU1の出力データアイテムを伴う事前ロードは、信号creg_opに依存して行われる。レジスタ内容は、各クロックサイクル毎に送出される。このレジスタは、頻繁に繰り返し発生する定数の記憶とメモリGPMの除去に用いられる。マルチプレクサMUX1とMUX2は、乗算入力データの選択と、信号mult_i1_sel,mult_i2_selに依存した乗算入力側i1,i2の対応付けに用いられる。このマルチプレクサの出力側までは、全てのデータがそれらが乗算ブロックのi1又はi2のどちらに対して定められているかにかかわらず統一されたフォーマットで存在する。入力側i1,i2は、種々のフォーマットと有し、乗算器アレイの個々の乗算器の入力側に直接接続される。マルチプレクサMUX1,MUX2を介してレジスタバンクREGFのレジスタも32×32ビット積に対して選択され得る。フォーマッタF1,F2によって、選択された乗算コンフィグレーション（これは信号mult_formによって確定する）に依存して、乗算器アレイの入力データが処理される。データベクトルの全ての成分が処理されるわけではないコンフィグレーションに対しては、データセグメントを136ビットワード内で選択する必要がある。このことは信号mult_i1_datもしくは信号mult_i2_datを用いて行われる。この制御情報は、演算のアドレスの構成成分とみなされてもよい。例えば16×32ビットのもとでの乗算では、乗算器の入力側i1は２つの16ビットデータを必要とし、入力側i2は２つの32ビットデータを必要とする。これらは、i1に対して供給された８つの16ビットデータと、i2に対して供給された４つの16ビットデータから選択されなければならない。
乗算器アレイMULTAはここでは８つの乗算器からなる。これらはそれぞれ16ビットのビット幅を有している。入力データのフォーマットに応じて、これらの乗算器の（部分）結果は、後置接続された加算器ツリーADDTにおいて正確な桁位置で唯一つの総結果の形成のために加算される。この総結果は、積の和であり、その数値もデータフォーマットに依存している。乗算器に対する唯一の制御ワードは、データフォーマットの確定のための信号mult_formである。それによりどのデータフラグが乗算に対し符号の無い又は２つの補数として補間されるべきかが内部制御される。加算器ツリーは、加算前の個々の積のシフト確定のために、信号mult_formを必要とする。設定されたデータフォーマットに応じて加算器／加算器ユニットMAは、以下の積からの和を計算する。
８つの８×８ビット積、又は
８つの８×16ビット積、又は
４つの16×16ビット積、又は
４つの８×32ビット積、又は
２つの16×32ビット積、又は
１つの32×32ビット積
信号add_selを用いて８つの部分積のそれぞれが選択的にブランク化され得る。このことは積の和の代わりに個々の積を明確にするのに重要である。フォーマッタF3は、結果レジスタREGFからメモリGBMへのデータ転送の際に関与する。フォーマットに応じて、結果データの下方の8,16,32ビットがフォーマッタF3によって収集され、128ビットワードが完全になるまでメモリGBMに転送される。メモリGBMは、個々のデータの書込みも許容するので、フォーマットF3でのバッファなしでも転送が可能である。信号format3を介して、いくつのビットが（例えば８ビット、16ビット、32ビット）算術論理演算ユニット２から考慮されるべきかが通達される。
算術論理演算ユニットALU2のデータ送信部は、図2bにおいて結果レジスタバンクと乱数発生器RNDGの出力により加算器ツリーADDTの出力信号add_tree_outを形成する。結果レジスタバンクの２つの出力側は、バスalu2_bus1,alu2_bus_2を介して算術論理演算ユニットALU1,ALU2並びに乗算器／加算器ユニットMAに接続され、さらに各プロセッサ素子又は隣接するプロセッサ素子のレジスタから入力側alu2_i1又はalu2_i2を介して給電される。バスalu2_bus1は、さらにコントローラから即値を供給される。サイクルの４つの結果は、常時結果レジスタバンクの４セグメントレジスタにファイルされる。この場合１つのセグメントレジスタはそれぞれ例えば４×64ビットを有している。レジスタバンクREGFの結果レジスタは、４つの64ワードを含み、４つのデータアイテムをあらわしている。32×32ビット積の累算のもとで生じる、128ビットの結果の計算の場合、レジスタreg0〜reg15のうちの１つが４つの64最上位ビットを含み、それぞれの隣接レジスタが４つの結果の４つの64最下位ビットを含む。最大／最小に対するインデックスデータは、４つのインデックス値に対するさらなるレジスタを占有する。このレジスタバンクは１つの入力ポートと３つの出力ポートを有する。クロスバースイッチを介して２つのバスalu2_bus1とalu2_bus2は、固有の結果レジスタからデータ又は２つの異なる隣接プロセッサ素子からのデータを供給し得る。隣接プロセッサ素子のデータは、ポートalu2_i1とalu2_i2から得られる。この場合選択は、マルチプレクサMUX5を介して行われる。第３のレジスタ出力側は、プロセッサ素子の出力側alu2_oに接続されている。これは同時に次の隣接プロセッサ素子ないし評価ユニットへの接続をあらわす。評価ユニットへの結果の通過も可能である。これは例えばブロックマッチングの際の例えばグローバルな最大／最小サーチに対して必要とされる。レジスタバンクの書込み入力側は、マルチプレクサMUX4を介して算術論理演算ユニットALU2の出力側に接続されている。レジスタの４つのセグメントの読み込み／読み出し順序は固定ではなく、アドレスに従って制御される。ここに記載されるプロセッサエレメントのレジスタバンクは、16個の４−セグメントレジスタを含み、これは４×４プロセッサユニットを備えたプロセッサの場合、８キロバイトのレジスタ総記憶容量を意味する。チップ面がそれを許容するならば、この数は0.5キロバイト（但し有利には１キロバイト）の細分において任意に高めることができる。
ユーザーは各装置サイクルにおいて５つの機能グループのうちの１つにアクセス可能である。これはソースレジスタから目標レジスタへのパラレルデータパスによって実現される。これらの各ループの待ち時間は、４つのクロックを有する１つの装置サイクルである。５つのデータパスは以下の通りである。
1.  累算加算器ACCADD、最終加算器FDD、マルチプレクサMUX3、エキスパンダEXP1〜EXP3、乱数発生器RNDGとの加算器ループ。この加算器ループの機能は、累算演算、最小／最大サーチ、乱数の加算、丸め演算、加算器ツリーからレジスタバンクの結果レジスタへの出力データの転送である。
2.  算術論理シフト／ローテーションや最小／最大サーチのサポートのためのバーレルローテータROTを有するシフター／ローテーターループ。
3.  64ビット値から8,16,32ビットへの飽和のための及び最小／最大サーチのための飽和ループ。
4.  最上位ビットと最下位ビットの位置を求め、シフト操作又は飽和操作の際のオーバーフロー識別を可能にする検出器ループ。
5.  ２つのオペランドの論理結合を可能にする論理ループ。
累算加算器ACCADDは、入力側i1における66ビットのデータを入力側i2における67ビットのデータに加算するか又は、入力側i2におけるデータを入力側i1におけるデータから減算する。この結果は64ビットのデータである。信号acc_opは加算か減算かの決定を下す。入力側i1とi2の２つのデータは、２の補数表示に現れる。ファイナル加算器FADDは、累算加算器ACCADDの出力データから非冗長的な67ビットフォーマットを形成する。そこからは64の下位ビットがマルチプレクサMUX4に転送される。レジスタMSBREGは、装置サイクルのそれぞれ４つのデータからファイナル加算器の３つのmsbsを記憶する。２重の値範囲を伴った加算では、これはその後に続くサイクルにおいて演算の完全性のために再び加算器ACCADDにフィードバックされる。エキスパンダEXP1は、66ビットワードを２の補数表示においてレジスタMSBREGからの３つのビットの拡張によって形成する。この場合レジスタMSBREGからの３つのビットは、下位の３つの桁とその他の63の桁を符号に応じて１と０で充たす。エキスパンダEXP2とEXP3は、符号なしか２の補数で存在する64ビットワードから２の補数表示の66ビットワードを形成する。マルチプレクサMUX3は、累算加算器ACCADDのi1に対する入力データを制御信号acc_i1_selに依存して選択する。この場合はエキスパンダEXP2を介したバスalu_bus2、乱数発生器RNDGの出力側、加算器ツリーの出力側又はエキスパンダEXP1の出力側、換言すれば先行の加算部からの伝送が選択可能である。乱数発生器RNDGは、フィードバックシフトレジスタを介して事前にロードされた初期値に基づいて疑似乱数を発生する。これはバスalu2_bus1のデータに加算可能である。初期値は、信号rnd_ldによってバスalu2_bus1からロードされる。信号rnd_opによって新たな乱数が形成され、送出されるか又は発生器ユニットに再度送出される。この乱数発生器は、定常的丸め効果（例えばディザーリング“dithering"）の発生のために必要である。ステータスレジスタSTAは、ファイナル加算器からの符号、オーバーフロー、ゼロ結果に対するフラグを含んでいる。ステータスビットは、各結果の前に算出される。信号status_opは、それが本当にステータスレジスタに受け入れられたか否かの識別を行う。コントローラは、ステータスビットを読み取り評価することが可能である。しかしながらこのステータスビットは、迂回なしでコントローラを介してマルチプレクサMUX4に直接制御入力として得ることも可能である。これは最小／最大サーチやその他の割当ての際に有利である。バーレル回転子ROTによってバスalu2_bus1のデータの算術論理リンク及び計算シフトが０〜63桁まで可能であり、さらに信号shift_opによって制御可能である。シフト係数は定数（これは信号shift_opから直接導出される）か又は変数（これはバスalu2_bus2を介して結果レジスタから供給される）である。一定のシフト係数の場合には、次の桁がバスalu2_bus2から受け入れ可能である。バスalu2_bus1とバスalu2_bus1のデータが同じ場合には、このようにローテーションが生じる。シフト／回転ループは、最小／最大サーチ又は生じ得る割当てのもとでも関与する。これに対してはシフト係数０が設定される。飽和回路SATによってバスalu2_bus2のデータは信号sat_opによって特定された値範囲に適合化される。この場合値範囲が8,16,32ビットで支援される。��定された範囲からはみ出たデータは、表示可能な最大の正の数か又は表示可能な最小の負の数に置換される（飽和）。この飽和か否かの判断は、検出器DETの信号det_resに基づいてコントローラが決定し、各データ毎に飽和回路SATの信号sat_opを介して通知する。論理演算ユニットLUは、バスalu2_bus1のデータとバスalu2_bus2のデータの論理結合を実施する。信号lu_opによって、AND、NAND、OR、NOR、XOR、XNOR、NEGの演算の制御が可能である。マルチプレクサMUX4は、信号alu2_opに依存して前述の５つのデータパスのどれをレジスタに書き込むかを判断する。第２の制御入力側は、制御レジスタSTATによって給電され、生じ得る割合て、例えば最小／最大サーチのもとで支援する。この場合累算加算器ACCADDは、２つのバスバスalu2_bus1のデータとバスalu2_bus2の間の差分を形成し、この差分の符号に基づいて、バスalu2_bus1のデータをバーレル回転子ROTを介して遮断された飽和と共にレジスタバンクへ書き込むのか、バスalu2_bus2のデータのデータを飽和ブロックSATを介して遮断された飽和と共にレジスタバンクへ書き込むのかを選択する。マルチプレクサMUX5は、信号alu_in_selに依存してプロセッサ素子の入力側alu2_i1又はalu2_i2のうちの１つと、隣接プロセッサ素子を選択する。そのデータは、オペランドとして利用される。伝送レジスタTREGは、４つの64ビットワードをバッファ記憶し、必要に応じてフォーマッタF4を介してプロセッサ素子の出力側alu2_0に送出する。伝送レジスタTREGは、さらに結果データの読み出しの際のバッファとして使用され、プロセッサ素子列の右側の隣接プロセッサ素子に対するその伝送に用いられる。それにより結果レジスタは負荷されず、既に後続の演算に対して可用である。フォーマッタF4のもとでは信号format4_formに依存してレジスタバンクのレジスタ出力側reg_outの下位の1,2,4又は８バイトが信号format4_posによって確定されたフォーマッタ出力側のバイトポジションにファイルされる。出力側のその他のバイトは、伝送レジスタから1:1の割合で受け入れられる。このフォーマッタを用いることにより、結果データの伝送の間プロセッサ素子列に沿って複数の結果1,2,又は４バイトが８バイトワードに統合され、それによって64ビットコネクションがプロセッサ素子間で良好に活用される。マルチプレクサMUX6は、制御信号alu2_out_selに依存してプロセッサ押しの出力側slu2_oに対する出力データを選択する。この選択に対してはフォーマッタF4の出力データ又はプロセッサ素子の入力データが用いられる。マルチプレクサMUX6は、プロセッサ素子の２つの入力側の１つと、プロセッサ押しの出力側alu2_oの、伝送レジスタにおけるバッファなしでの直接接続を可能にする。
図３には、16のプロセッサ素子PE11〜PE44を備えた本発明によるプロセッサが示されている。これらのプロセッサ素子はエッジ長さ４の二次元アレイのなかで接続されており、共通のコントローラによって制御されている。個々のプロセッサ素子のバッファISBがこのアレイの４つのエッジに再ロードピクセルを供給するために、これらのアレイを囲むように256ビット幅のピクセルバスｐ−busが環状に配置されている。このアレイは、グローバルバスｇ−busを介してさらなる入力データを受け取る。これはイメージキャッシュCACHEか又は入力バッファIBUFか又は評価ユニットDUによって記憶される。この評価ユニットDUを用いて例えばグレー値確定のための除算、ヒストグラム実施がなされるか、又は値テーブルを用いた評価が実施される。キャッシュメモリCACHEに対して多種の出力モードが占められ、入力バッファIBOFは外部メモリとプロセッサ素子のメモリGMPとの間のFIFOとしてのみ用いられる。
評価ユニットDUは、プロセッサ素子の結果レジスタからの入力データを受け入れるタスクを有しており、場合によってはさらに後処理の実行と最終的にデータを出力バッファを介して外部メモリへ伝送するかグローバルバスｇ−busを介してプロセッサアレイに提供できるようにする。この後処理には、除算、ヒストグラム、テーブルルックアップなどの演算が含まれる。プロセッサ素子内のそれらの実行は、エリア又はメモリ強度にもよる。個々のプロセッサ素子から評価ユニットへの伝送は、プロセッサ素子の入力側alu2_iと出力側alu2_oを介して行われる。１つの行の４つのプロセッサ素子、例えば素子PE11〜PE44は、その入力側alu2_i1とalu2_i2を介してそれぞれ１つのチェーンを形成する。マルチプレクサMUX5を介して、最後の列のプロセッサ素子PE11〜PE44は、１つのチェーンに接続可能である。それにより全ての結果データは、水平及び垂直の値範囲を介して最終的に上方右側のプロセッサ素子PE14に至りそこから評価ユニットDUに到達可能である。同様の接続は、グローバルな演算、例えば極限値サーチなどの場合でも活用され、この場合は右側の列の４つのプロセッサ素子が、上方右側のプロセッサ素子がグローバルな極限値を求める前に、それぞれその行の極限値を求める。
全ての16のプロセッサは、相互に遅延することなく同じクロックで動作する。このことは全てのプロセッサ素子に対する演算が常に同じ時点でトリガされることを意味する。それ故入力側alu2_iと出力側alu2_oを介した結果レジスタの送出又は事前ロードが全てのプロセッサ素子を同時にそのレジスタ内容を出力側に送出し、それと並行して入力側を介して供給されるデータを受け入れる。グローバルな演算の際には、類似の方法が実施され、この場合は本来の演算を実施する１つのチェーンの最後のプロセッサ素子がその入力側のデータをローカル記憶された結果と論理結合させ、その結果を再びローカル記憶する。その他のプロセッサ素子は、結果値の送出の際のような状態となる。
プロセッサ入力データは、入／出力ドライバIOTを介して入力バスＩ−Busに供給される。これは入力バッファIBUFとキャッシュメモリCACHEに供給される。マルチプレクサMUXを介してグローバルバスｇ−busは、入力バッファの出力側か又はキャッシュメモリの出力側に接続可能である。評価ユニットDUの出力側は出力バッファOBUFを介して出力バスｏ−busに接続される。これは入／出力ドライバIOTを介してプロセッサ出力側に接続されている。
図４には、16のプロセッサ素子を備えた本発明によるプロセッサが示されている。これは図３のようにのみ示されているのではなく、いわゆるSIMDアレイ（シングルインストラクションマルチプルデータアレイ）として示されている。この場合は全てのプロセッサ素子が同じ命令を受け取るのではなく、スイッチS1〜S8を用いていわゆるMIMDアレイ（マルチプルインストラクションデータアレイ）としても構築可能である。図４では２つのSIMDアレイを有する１つのMIMDアレイが、８つのプロセッサ素子PE,PE＊毎に示されている。これらの各SIMDアレイは、固有のコントローラと、固有の評価ユニットDU1,DU2と、固有のイメージキャッシュCACHE1,CACHE2と、付加的なマルチプレクサMUX′〜MUX′″を必要とする。２つのSIMDアレイのそれぞれは、環状のピクセルバスＰ−bus1とＰ−bus2を有し、それらは別個のキャッシュCACHE1、CACHE2によって供給される。これらのキャッシュは、それらのデータを、入力バスｉ−busを介して外部から受け取るか又は評価ユニットDU1ないしDU2から受け取る。キャッシュメモリCACHE2への評価ユニットDU1の結果の供給によっては、処理チェーンを構築することが可能である。この場合は、プロセッサ素子PEを有するSIMDアレイの出力データが、プロセッサ素子PE＊を有するSIMDアレイに対する入力データとして使用される。帯域幅が許容されるならば、２つのSIMDアレイは異なる演算を外部入力データでも実行可能であり、結果は再び外部メモリに送出される。ここに記載されるMIMD機能を備えたプロセッサアレイは、スイッチS1〜S8を介して再構成可能であり、この場合一方では８つのプロセッサ素子を備えた非依存性のブロックとして構築可能であり、他方では16のプロセッサ素子を備えた固有のSIMDアレイとしても構築可能である。その際スイッチを介して２つのピクセルバスｐ−bus1とｐ−bus2がシングルリングバス形成のために再構成される。同様に２つのキャッシュCACHEp1,CACHE2もグローバルなキャッシュ形成のために共に接続可能である。２つの評価ユニットは、コモンSIMDアレイの場合、タスクを共有可能である。
【図１】
0003573755.tif 000002
【図２Ａ】
0003573755.tif 000003
【図２Ｂ】
0003573755.tif 000004
【図３】
0003573755.tif 000005
【図４】
0003573755.tif 000006