(57)【要約】集積回路装置が、プロセッサ素子(4)を有するプロセッサアレイ(2)、及び行(32)及び列(30)の形に配列されたメモリ素子(8)を有するメモリ６を有する。メモリ素子(8)の列(30)は、それぞれのプロセッサ素子(4)によってアドレス指定される。ブロック及びラインベースの処理を実行するため、入力シーケンサ１４とフィードバック経路２４とが協働して、入力データをメモリ(6)内で並べ替えて、ブロックベース及びラインベースの処理を実行する。
2009538464.tif 000002
【特許請求の範囲】
【請求項１】
データを並列に処理するための複数のプロセッサ素子を有するプロセッサアレイと；
前記複数のプロセッサ素子によって並列にアクセス可能な複数のメモリ素子を含むメモリアレイと；
データを受け取るためのデータ入力端子と；
入力データを受け取り、この入力データを前記メモリアレイの前記メモリ素子に記憶するように構成された入力シーケンサと；
前記メモリアレイからデータを取り出すための出力プロセッサと；
前記プロセッサアレイを制御するためのコントローラとを具えた集積回路装置において、
前記集積回路装置がさらに、前記出力プロセッサから前記入力シーケンサへのフィードバック経路を具え、
前記入力シーケンサが、前記データ入力端子及び／または前記フィードバック経路２４から前記入力データを受け取るように構成され、
前記出力プロセッサが、前記メモリアレイからデータを取り出し、前記メモリアレイからの前記データを前記出力プロセッサに対して出力し、かつ前記データを前記メモリアレイから前記フィードバック経路を通して前記入力シーケンサに返送するように構成され、あるいは、
前記出力プロセッサが、前記メモリアレイからデータを取り出し、前記メモリアレイからの前記データを前記出力プロセッサに対して出力するか、または前記データを前記メモリアレイから前記フィードバック経路を通して前記入力シーケンサに返送するように構成されていることを特徴とする集積回路装置
【請求項２】
前記メモリアレイが列のアレイを含み、前記列の各々が複数のメモリ素子の列を含み、前記列の各々が、１つ以上の前記プロセッサ素子のそれぞれによってアドレス指定可能であることを特徴とする請求項１に記載の集積回路装置。
【請求項３】
前記コントローラが、前記プロセッサアレイを、複数のモードから選択した１つのモードで動作させるように構成され、前記入力データが、前記選択したモードに応じて異なる配列で前記メモリ素子に記憶されることを特徴とする請求項２に記載の集積回路装置。
【請求項４】
前記複数のモードの１つが列処理モードであり、この列処理モードでは、前記入力シーケンサがデータアイテムのシーケンスを前記入力データとして受け取り、前記データアイテムを前記メモリ素子に、前記メモリ素子の前記列の１つから始めて、前記メモリ素子の後続する前記列に順に続けて記憶するように構成されていることを特徴とする請求項３に記載の集積回路装置。
【請求項５】
前記複数のモードの１つが行処理モードであり、この行処理モードでは、前記入力シーケンサがデータアイテムのシーケンスを前記入力データとして受け取り、前記データアイテムを前記メモリ素子に対して行単位で、前記メモリ素子の行の１つから始めて前記メモリ素子の後続する行に順に続けて出力するように構成されていることを特徴とする請求項３または４に記載の集積回路装置。
【請求項６】
前記複数のモードの１つが並べ替えモードであり、この並べ替えモードでは、前記入力シーケンサが、前記データアイテムのシーケンスを入力データとして受け取り、前記データアイテムを前記メモリ素子に対して、前記メモリ素子内の前記行または前記列の順序以外の順序に並べ替えて出力するように構成されていることを特徴とする請求項３、４または５に記載の集積回路装置。
【請求項７】
前記並べ替えモードにおいて、前記コントローラが、前記データアイテムを、前記入力シーケンサから始まり前記メモリ素子、前記出力プロセッサ、及び前記フィードバック経路を通って前記入力シーケンサに戻る経路に流すように構成されていることを特徴とする請求項６に記載の集積回路配置。
【請求項８】
前記入力データを第１パターンで前記メモリ素子に記憶し、前記第１パターンのデータに対する処理を実行し、前記メモリ素子からのデータを、前記フィードバック経路及び前記入力シーケンサを通して出力して、前記データを前記メモリ素子内で異なるパターンに並べ替え、前記異なるパターンのデータに対して他の処理を実行するように構成されていることを特徴とする請求項１〜７のいずれかに記載の集積回路装置。
【請求項９】
入力シーケンサと、データを並列に処理するための複数のプロセッサ素子を有するプロセッサアレイと、前記複数のプロセッサ素子によって並列にアクセス可能な複数のメモリ素子を有するメモリアレイと、前記メモリアレイの出力端子から前記入力シーケンサへのフィードバック経路とを有する集積回路装置を動作させる方法において、
前記入力シーケンサにおいて入力データを受け取るステップと；
前記入力データを第１パターンで前記メモリ素子に記憶するステップと；
前記メモリ素子からデータを出力し、前記出力したデータを、前記フィードバック経路及び前記入力シーケンサを通して異なる第２パターンにして前記メモリ素子に返送するステップと；
を具えていることを特徴とする集積回路装置の動作方法。
【請求項１０】
前記メモリ素子が行及び列の形に配列され、前記列の各々が、１つ以上の前記プロセッサ素子のそれぞれによってアドレス指定可能であり、前記方法がさらに、
前記集積回路装置を、複数のモードから選択した１つのモードで動作させるステップを具え、前記入力シーケンサが、前記入力データを、前記選択したモードに応じて異なる配列で前記メモリ素子に記憶するように構成されていることを特徴とする請求項９に記載の方法。
【請求項１１】
前記複数のモードの１つが列処理モードであり、この列処理モードが、
データアイテムのシーケンスを前記入力データとして受け取るステップと；
前記データアイテムを前記メモリ素子に、前記メモリ素子の前記列の１つから始めて前記メモリ素子の後続する前記列に順に続けて記憶するステップと
を具えていることを特徴とする請求項１０に記載の方法。
【請求項１２】
前記複数のモードの１つが行処理モードであり、この行処理モードが、
データアイテムのシーケンスを前記入力データとして受け取るステップと；
前記データアイテムを前記メモリ素子に行単位で、前記メモリ素子の前記行の１つから始めて前記メモリ素子の後続する前記行に順に続けて記憶するステップと
を具えていることを特徴とする請求項１０または１１に記載の方法。
【請求項１３】
前記複数のモードの１つが並べ替えモードであり、この並べ替えモードが、
データアイテムのシーケンスを前記入力データとして受け取るステップと；
前記データアイテムを、前記メモリ素子内で並べ替えた順序で、前記メモリ素子に記憶するステップと
を具えていることを特徴とする請求項１０、１１または１２に記載の方法。
【請求項１４】
前記並べ替えモードにおいて、
前記データアイテムを前記メモリアレイに記憶するステップと；
前記データアイテムを前記メモリアレイから出力するステップと；
前記データアイテムを前記フィードバック経路を通して前記メモリアレイに返送して、前記データアイテムを並べ替えた順序で前記メモリ素子に記憶するステップと
を具えていることを特徴とする請求項１３に記載の方法。
【請求項１５】
請求項１〜８のいずれかに記載のプロセッサアレイを、請求項９〜１４のいずれかに記載の方法で動作させるように構成されたコンピュータプログラムコード手段を含むコンピュータプログラム製品。
【請求項１６】
データキャリア上に記録された請求項１５に記載のコンピュータプログラム製品。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、集積回路装置、これに限定されないが特に単一命令複数データ（ＳＩＭＤ）プロセッサアレイを用いた集積回路装置、並びに集積回路装置の動作方法及びこの集積回路装置を動作させるためのコンピュータプログラムに関するものである。
【背景技術】
【０００２】
ＳＩＭＤ処理アレイ内では、多数の処理要素（ＰＥ）の各々が、共通の命令ストリームから同一命令を受信し、当該処理素子にとって一意的なデータに基づいてこの命令を実行し、このデータはローカルデータと称することができる。こうした処理アレイは、例えば画像処理の分野で生じ得る、同一演算を複数のデータアイテムに対して同時に実行する非常に反復的なタスクに適している。
【０００３】
図１に、複数の処理要素４を有するプロセッサアレイ２、及び列３０として配列された複数のメモリ素子８を有するメモリ６を具えた従来のＳＩＭＤアレイを示す。各処理要素４は、それぞれの列３０のメモリ素子８に対して動作する。命令入力端子２６は、全ての処理素子用の命令を並列に受け取る。
【０００４】
使用中には、処理要素４は、同じ命令、即ち共通命令を同時に実行するが、それぞれのメモリ素子８に対して実行する。
【０００５】
このアーキテクチャは、共通命令を実行するか実行しないためのメカニズムを各処理要素に提供し、すなわち、命令入力端子２６は、共通命令のシーケンスを受け取るだけでなく、どの処理要素が各共通命令を実行するかを指示するデータも受け取る。
【０００６】
こうしたアーキテクチャは、データのラインを並列に処理するのに非常に適している。例えば、画像処理のアプリケーションを考える。こうしたアプリケーションで、画素毎のベースでデータを処理する必要があることが多く、図１の並列的なＳＩＭＤアーキテクチャは、画像上の最初のデータラインを処理し、続いて次のデータラインを処理し、このように各データラインを並列に処理することによって、優れた処理性能を生み出すことができる。
【０００７】
しかし、必ずしも全てのデータ処理がこうした画素毎のベースで進行するとは限らず、データのブロックを並列に処理する必要がしばしば存在する。例えば、ＭＰＥＧ及びＪＰＥＧのような圧縮アルゴリズムは、８×８ブロックに対して離散コサイン変換（ＤＣＴ）を用いる。各ブロックは、横８画素、高さ８画素の正方形の画像を表現する。
【０００８】
他の例として、８つの要素Ｆik（ｋ＝０，１...７）にブロックｉに対して次の演算を行うことが必要な場合を考える。
Ｑi0＝Ｆi0＋Ｃ0、及び
Ｑik＝ＦikＣk  （ｋ＝１，２...７）
【０００９】
変換を行うために、各要素を、ブロック内の当該要素の位置に応じて異なる係数を用いて処理する。
【００１０】
メモリ素子８上の行に配列された、画像中の６４画素の水平ラインに相当するデータラインの場合を考え、６４本の列３０及び６４個の処理要素４が存在するものと仮定する。ラインの６４画素は８つの異なるブロック内に含まれ、処理要素４は各ブロックの第１画素、各ブロックの第２画素、等に対して異なる演算を実行する必要がある。
【００１１】
従って、図１に示す種類のＳＩＭＤアレイにおける処理を実行するための共通の命令は、Ｃ0を加算することである。しかし、これは各ブロックの第１画素のみに対して適正な命令であり、他の画素の処理要素は命令を実行しない。そして、各ブロックの第２画素はＣ1を乗算する命令を用いて処理され、等である。このことの結果は、各命令は８つのうち１つのプロセッサ要素４上でしか実行されない、ということである。
【００１２】
従って、この方法でのブロックに対するデータ処理は、ＳＩＭＤアレイの必ずしも全能力を利用しない。
【００１３】
これは単純な例ではあるが、ＳＩＭＤアレイのブロックベースの処理では一般に、同様の処理の問題が生じる。
【００１４】
もちろん、一部の処理演算をＳＩＭＤアレイ上で実行し、他の処理演算をより好都合なプロセッサ上で実行することは可能であるが、一般に、全ての処理演算を単一種類のデバイスで実行することができる方が好都合である。従って、ブロック処理演算用のＳＩＭＤアレイの処理性能を改善する必要がある。
【先行技術文献】
【特許文献】
【００１５】
【特許文献１】国際公開第２００６／０２７７５１号明細書
【００１６】
やや異なる目的で設計された特定のＳＩＭＤアレイプロセッサが、特許文献１（フィリップス社）に記載されている。このプロセッサは、プロセッサ素子４が、自分自身のデータ列３０にアクセスするだけでなく、隣接する列３０にもアクセスすることを可能にすることによってデータ列間の通信を提供する。このことは特定種類の処理演算において有用であり得る。
【００１７】
特許文献１は、画素をメモリ素子内でグループ化して処理する方法も記載している。例えば、１つの配列では、第１列が最初の２つの赤色画素、最初の２つの緑色画素、最初の２つの青色画素を含む。次の列は、次の２つの赤色画素、次の２つの緑色画素、次の２つの青色画素を含む。このことは配列を通して継続される。こうして、各列は一対の画素値を含む。このことは、特定数の画素を有するデータラインを、半数の処理要素のみを用いて処理することを可能にする。
【発明の概要】
【発明が解決しようとする課題】
【００１８】
しかし、この配列は、特定のよくある種類のブロック処理については、ＳＩＭＤアレイの処理性能を改善する問題を解決しない。
【課題を解決するための手段】
【００１９】
本発明によれば、集積回路装置が提供され、この集積回路装置は：
データを並列に処理するための複数のプロセッサ素子を有するプロセッサアレイと；
これら複数のプロセッサ素子によって並列にアクセス可能な複数のメモリ素子を含むメモリアレイと；
データを受け取るためのデータ入力端子と；
入力データを受け取り、このデータを上記メモリアレイのメモリ素子に記憶するように構成された入力シーケンサと；
上記メモリアレイからデータを取り出すための出力プロセッサと；
上記プロセッサアレイを制御するためのコントローラと；
上記出力プロセッサから上記入力シーケンサへのフィードバック経路とを具え、上記入力シーケンサは、上記データ入力端子及び／または上記フィードバック経路から入力データを受け取るように構成され、上記出力プロセッサは、上記メモリアレイからデータを取り出し、上記メモリアレイからのデータを出力端子上に出力し、かつ／あるいはメモリアレイからのデータを上記フィードバック経路を通して上記入力シーケンサに返送するように構成されている。
【００２０】
入力シーケンサ及びフィードバック経路を設けることによって、データを並列処理用により効率的に配列することができ、従って、データ処理の効率を改善することができる。とくに、複数の演算が異なるデータ配列を必要とする際にも、これらの演算を効率的に実行することができるようにデータを再配列することができる。
【００２１】
例えば、この集積回路装置は、画素ベースの演算用のデータラインとしてのデータラインの形に配列された画像データを処理することができ、そして、これらのデータを、ブロックベースの演算用の異なる形で上記メモリ素子内に再配列することができる。
【００２２】
上記プロセッサアレイはＳＩＭＤとすることができる。
【００２３】
上記メモリアレイは特に、メモリ素子の列のアレイを有し、各列は、１つ以上のプロセッサ素子のそれぞれによってアドレス指定可能である。
【００２４】
上記コントローラは、上記集積回路装置を、複数のモードから選択した１つのモードで動作させるように構成することができ、上記入力シーケンサは、入力データを、選択したモードに応じて異なる配列で上記メモリ素子に記憶するように構成されている。
【００２５】
上記モードの１つは列処理モードとすることができ、このモードでは、上記入力シーケンサがデータアイテムのシーケンスを入力データとして受け取り、これらのデータアイテムを上記メモリ素子に、メモリ素子の1つの列から始まり、メモリ素子の後続列に順に続けて記憶するように構成されている。
【００２６】
上記モードの１つは行処理モードとすることができ、このモードでは、上記入力シーケンサが、データアイテムのシーケンスを入力データとして受け取り、これらのデータアイテムを上記メモリアレイに対して行単位で、メモリ素子の1つの行から始まり、メモリ素子の後続行に順に続けて出力するように構成されている。
【００２７】
上記モードのうちの１つは並べ替えモードとすることができ、このモードでは、上記入力シーケンサが、データアイテムをデータ入力端子上の入力データとして受け取り、これらのデータアイテムを上記メモリアレイに対して、上記メモリ素子内で並べ替えた順序で出力するように構成されている。
【００２８】
この並べ替えモードでは、上記コントローラは、データアイテムを、上記入力シーケンサから始まり、上記メモリ素子、上記出力プロセッサ、及び上記フィードバック経路を通って上記入力シーケンサに戻る経路に流し、これらのデータアイテムを並べ替えた順序で上記メモリ素子に記憶することができる。
【００２９】
上記コントローラは、入力データを第１パターンで上記メモリ素子に記憶し、このパターンのデータに対する処理を実行し、そして上記メモリ素子からのデータを、上記フィードバック経路及び上記入力シーケンサを通して出力して、このデータを上記メモリ素子内で異なるパターンに並べ替え、そして、この異なるパターンのデータに対して他の処理を実行するように構成されている。
【００３０】
他の態様では、本発明は集積回路装置を動作させる方法に関するものであり、この集積回路装置は、入力シーケンサ、データを並列に処理するための複数のプロセッサ素子を有するプロセッサアレイ、これら複数のプロセッサ素子によって並列にアクセス可能な複数のメモリ素子を有するメモリアレイ、及びこのメモリアレイの出力端子から上記入力シーケンサへのフィードバック経路を有し、この方法は：
上記入力シーケンサにおいて入力データを受け取るステップと；
この入力データを第１パターンで上記メモリ素子に記憶するステップと；
上記メモリ素子からデータを出力し、出力したデータを、上記フィードバック経路及び上記入力シーケンサを通して異なる第２パターンにして上記メモリ素子に返送するステップと
を具えている。
【００３１】
他の態様では、本発明はコンピュータプログラム製品に関するものであり、このコンピュータプログラム製品は、上述した集積回路装置を上述した方法で動作させるように構成されたコンピュータプログラムコード手段を含む。
【００３２】
本発明のより良い理解のため、実施例を純然たる例として図面を参照しながら説明する。
【図面の簡単な説明】
【００３３】
【図１】従来技術のＳＩＭＤアレイを示す図である。
【図２】本発明の第１実施例による集積回路装置を示す図である。
【図３】本発明の第２実施例による集積回路装置を示す図である。
【図４】データの８×８ブロックを示す図である。
【図５】ブロック処理モードを概略的に示す図である。
【図６】ライン処理モードを概略的に示す図である。
【発明を実施するための形態】
【００３４】
異なる図面中では、類似または同様の要素に同一参照番号を与える。これらの図面は概略的なものであり一定寸法比で描いたものではない。
【００３５】
まず、図２を参照しながら、本発明による集積回路装置の非常に単純な例を説明する。この例はＳＩＭＤアレイであり、並列処理用の複数のプロセッサ素子４を含むプロセッサアレイ２、及び複数のメモリ素子８を含むメモリアレイ６を含む。並列データ経路１０が、プロセッサ素子４をそれぞれのメモリ素子８に接続する。
【００３６】
データは集積回路装置内に、入力端子１２から入力シーケンサ１４内に供給され、入力シーケンサ１４は以下でより詳細に説明するようにデータを並べ、並べたデータをダイレクトメモリアクセスチャネル１６を通して直接メモリ素子８に渡す。
【００３７】
出力プロセッサ１８はメモリ素子８からデータを取り出し、このデータを出力端子２２から出力する。
【００３８】
出力プロセッサは、メモリ素子８からデータを取り出し、フィードバック経路２４によって入力シーケンサ１４に返送することもできる。
【００３９】
このデータフロー及びデータ処理はコントローラ２０によって制御される。
【００４０】
ＳＩＭＤアレイの構成部品は全て単一のチップ上に集積されていることが好都合である。しかし、その代わりに、特定構成部品を分離することもできる。例えば、フィードバック経路２４及び／または入力シーケンサ１４は、分離した外部フィードバック経路及び／または構成部品として実現することができる。このことは、ＳＩＭＤアレイを、ここに説明する本発明の実施例用に特別に設計したものではないチップ上に実現することを可能にする。
【００４１】
入力シーケンサ１４とフィードバック経路２４の組合せは、以下に説明するように処理を改善することを可能にする。説明を明瞭にするために、本発明によるＳＩＭＤアレイの使用法は特定実施例を参照して説明する。しかし、この例は、こうしたアレイにおける処理に適した多くの例よりも幾分単純である。特に、この例は、プロセッサアレイ２内の８つのプロセッサ素子４及びメモリアレイ６内の８つのメモリ素子８の使用を説明するが、実際の集積回路装置の実現はこれよりずっと多数の素子を有することができる。
【００４２】
まず上記の例を考え、ここでは次式を計算する必要がある：
Ｑi0＝Ｆi0＋Ｃ0、及び
Ｑik＝ＦikＣk  （ｋ＝１，２...７）
【００４３】
この例では、入力シーケンサ１４は、各プロセッサが単一のブロックに対する処理を実行するように、データを複数ブロックに並べ替える。
【００４４】
まず入力シーケンサ１４は、８つのブロックの各々の第１要素を８つのメモリ素子８に渡す。次にプロセッサ素子４は、「Ｃ0を加算する」命令を全てのメモリ素子８に対して並列に実行する。次にシーケンサは、各ブロックの第２要素をそれぞれのメモリ素子８に渡し、そして「Ｃ1を乗算する」命令を全てのブロックに対して並列に実行する。従って、この例では、結果的に図１のプロセッサを使用して行うのに比べてずっと高い効率で、処理を並列に実行する。
【００４５】
フィードバック経路２４は、中間結果を入力シーケンサ１４に返送してさらに処理することを可能にする。フィードバック経路２４は、以下に説明するようにデータを並べ替えるために使用することもできる。
【００４６】
以下、本発明のＩＣ装置のより現実的な例を図３を参照しながら説明し、図３は、列３０及び行３２の形に配列されたメモリ素子８のアレイを示す。各プロセッサは、単一のメモリ素子８ではなく、列３０に対して動作する。各列は「ラインメモリ」と称することができる。この特定例では、各列３０は８つのメモリ素子８を含み、６４本の列３０が並列に存在するが、代案も可能であり、特にずっと多数の行及び列が存在し得る。明瞭にするために、メモリ素子８のアレイ全体は図３には示していない。メモリ素子８の行３２は、並列に処理することのできるメモリ素子で構成される（図３参照）。
【００４７】
「行」及び「列」とは、メモリ素子８に適用する際には基本的に任意であるが、本明細書は行３２及び列３０を、図３の向きに対応して用いる。また、データの行４０（図４）は、メモリ素子の第１列３０に記憶することができる。
【００４８】
処理の例として、図３の例を用いて、８×８のアレイとして配列された６４画素のブロックに対して動作する画像圧縮において使用する種類のＤＣＴ（離散コサイン変換）処理を実行する場合を考える。これらの画素は図４に示すように０から６３までの番号を付け、行４０は図４の横向きに配置され、列４２は図４の縦向きに配置されている。従って、要素０〜７がデータ行を構成する。
【００４９】
ブロックのシーケンス（列）が、データアイテムのシーケンスとして入力１２を通して入力シーケンサ１４に送信され、各データは１つのの画素を表現する。第１ブロックの画素は、要素０から６３までの順に送信される。これに続いて、第２ブロックの要素０から６３までがこの順に送信され、このことは第８ブロックまで継続される。
【００５０】
これら８つのブロックは、各々が８つの素子を有する６４個のラインメモリ３０を満たすデータを与える。入力シーケンサ１４は、メモリ素子８を入力データで次のように満たす。第１ブロックの最初８つの要素、即ち要素０から７は第１列３０に記憶し、第１ブロックの２番目の８つの要素、即ち８から１５は第２列３０に記憶し、等を第１ブロックの最終まで行う。こうして、ｉ番目のブロックのｋ番目のデータ要素をＤi,k（ここにｉ＝０，１...７及びｋ＝０，１，２...６３）として表し、これらの要素は次の第１パターンに従ってメモリ素子８を満たす：
列    データ
０    Ｄ0,0 Ｄ0,1 Ｄ0,2...Ｄ0,7
１    Ｄ0,8 Ｄ0,9 Ｄ0,10...Ｄ0,15
...
７    Ｄ0,56Ｄ0,57Ｄ0,58...Ｄ0,63
８    Ｄ1,0Ｄ1,1Ｄ1,2...Ｄ1,7
...
６３  Ｄ7,56Ｄ7,57Ｄ7,58...Ｄ7,63
【００５１】
次にプロセッサ４は、列３０に対する並列処理を実行する。各列は、元のブロックの１行のデータを含む（上記の表を図４と対比されたい）。各プロセッサが同じ命令を同時に実行することができるので、このことは効率的に行われる。
【００５２】
８×８ブロックに対するＤＣＴは、行及び列の両方に対してコサイン変換を実行し、上記データの並べ替えは、（図４の列４２に対する）最初の変換を並列に実行するのに適している。しかし、同じデータの配列を用いて行４０（図４）に対する２番目の変換を実行する場合には、これらのデータは、並列処理が効率的に動作するように配列されていない。
【００５３】
従って、データをメモリ素子８から出力プロセッサ１８を通して読み出し、フィードバック経路２４及び入力シーケンサ１４を通してライン要素３０に戻す。これらのデータは出力プロセッサ１８を通して、まずデータの第１行、即ち各列３０の全ての第１メモリ素子８を取り出し、次に各列３０の第２メモリ素子８を含む第２行を取り出し、等の順に出力される。従って、この例では、データは出力プロセッサ１８を通して、Ｄ0,0Ｄ0,8Ｄ0,16...Ｄ0,56，Ｄ1,0...Ｄ7,56，Ｄ0,1，Ｄ0,10...Ｄ7,63の順に出力される。そしてこれらのデータは前と同じ方法で、第１列３０に記憶された最初８つの要素から始まり、等のように第１列３０に読み戻される。このことは、データを次の異なる第２パターンに並べ替える。
列    データ
０    Ｄ0,0Ｄ0,8Ｄ0,16...Ｄ0,56
１    Ｄ1,0Ｄ1,17...Ｄ1,57
...
６３  Ｄ7,7Ｄ7,15Ｄ7,23...Ｄ7,63
この並べ替えたデータは、行４０に対するＤＣＴを効率的に並列処理するのに適した配列にされている。
【００５４】
以下、同一のプロセッサが各画素に対する画素演算を実行する場合を考える。前と全く同様に、前の状態のデータをライン要素から出力プロセッサ１８を通して読み出し、フィードバック経路２４及び入力シーケンサを通してメモリ素子８に戻すことができる。換言すれば、このことは、フィードバック経路２４を通した２回目のデータの通過を表す。このことは、データを再度並べ替え、次のような異なる第３パターンを生じさせる：
列    データ
０    Ｄ0,0Ｄ1,0Ｄ2,0...Ｄ7,0
１    Ｄ0,1Ｄ1,1Ｄ2,1...Ｄ7,1
...
６３  Ｄ0,63Ｄ1,63Ｄ2,63...Ｄ7,63
【００５５】
従って、並べ替えたデータは、８ブロックの各々の第１画素を第１列内に有し、８ブロックの各々の第２画素を第２列内に有し、等を８ブロックの各々の最終画素まで繰り返す。
【００５６】
このデータ配列は、ジグザグ（ＺｉｇＺａｇ）スキャン（走査）、量子化のような多数の画素ベースの演算を効率的に実行するのに非常に好都合である。
【００５７】
なお、フィードバック経路の使用は、並べ替えが非常に多数回であり、第１列が最終ブロックからの１つの要素を有する場合でも、各データアイテムをまず入力シーケンサ１４に記憶する必要なしにデータを並べ替えることを可能にする。従って、データを列内に順に読み込み、第１列から始まる場合には、第１列は最終ブロックを受信して初めて完結する。例で用いたループ２４を通る２回の通過なしに入力シーケンサ１４のみで並べ替えを実行する場合には、このことは入力シーケンサ１４内に大量のデータ記憶を必要とする。実際に、入力シーケンサは、任意時点で同時に処理されるデータを基本的に全て記憶するのに十分なメモリを有する必要がある。
【００５８】
この例では、入力シーケンサ内に全くデータを記憶する必要なしに、複合的な並べ替えを実行する。
【００５９】
フィードバック経路２４は、同じデータを複数の異なる方法で処理し、入力シーケンサ１４内で毎回データを並べ替え、処理演算毎にデータを適正に配列することを可能にする。従って、データを１つの処理演算用に配列し、この演算を実行し、そして、異なる順序を用いればより効率的である次の処理演算用に並べ替えることができる。
【００６０】
なお、入力データをメモリ素子８内の行に並べる場合、すなわち入力データアイテムのシーケンスでメモリアレイ６を行毎に、第１行から始まり後続行を続けて満たす場合には、最終的なデータ順序は異なる方法で達成される。フィードバック経路を通る複数回の通過は同じ効果を達成する。入力シーケンサは、メモリ素子８にデータをこの方法で直接記憶するように構成することができる。
【００６１】
上記の例は比較的単純である。しかし本発明の使用は、ずっと大きいプロセッサアレイ及びメモリアレイ、例えば画像データの全ラインを一度に並列に処理することのできる３２０または６４０個、またはそれ以上のプロセッサのアレイにおいて特に有用である。例えば、各列３０内に６４個のメモリ素子８が存在し得る。本発明は、こうしたより大きなアレイが大量のデータを並列に処理することを可能にする。
【００６２】
フィードバック経路２４を用いた入力シーケンサ１４内のメモリの低減は、こうしたより大きなアレイにおいて得に重要である。これらの場合には、入力シーケンサ１４内のメモリの量と、メモリ素子８内にデータを要求された配列の形に配列するために必要なフィードバック経路を通る通過の回数とのトレードオフが存在する。１つの最終形態では、メモリアレイと同量のメモリを有する入力シーケンサにより、フィードバック経路を使用せずにデータを任意のパターンに並べ替えることが可能である。
【００６３】
しかし、一般に、この方法が大きなメモリアレイ用に必要とする入力シーケンサ１４内のメモリの量は、非常に高額になる。さらに、この場合には、入力シーケンサは一般に、ほぼ全てのデータを受信するまではデータの書き込みを開始することができず、このことは処理の遅延をもたらす。フィードバック経路の使用は、所定量のメモリに対して、フィードバック経路を使用しないよりも多数回のインターリーブ（並べ替え）を可能にする。
【００６４】
好適な実施例では、入力シーケンサ１４が、データを２つ以上の方法で配列して、このデータに異なる処理をすることができるように構成されている。
【００６５】
図５及び図６に、入力シーケンサがデータを配列することのできる２つの方法を概略的に示し、一般に、ＳＩＭＤアレイの意図した通りの使用法に応じた、ここに図示していない他の方法が存在し得る。
【００６６】
概略的には、図５に示す列モードと称される第１モードでは、入力端子１２に到着する入力データアイテムは、第１列から始まる素子内に記憶される。そして第１列が満たされると、データ要素は矢印５０で示すように次の列に記憶される。
【００６７】
列モードでは、ブロック形式で到着する入力データをできる限りライン要素の形にグループ化して、１つのブロックからのデータをできる限り少数のライン要素内に保持する。異なるブロックが異なるライン要素内に存在するので、このことは、プロセッサ素子４が異なるブロックを同時に並列処理することを可能にする。各プロセッサ素子４は可能な限り１ブロックのデータを含むそれぞれのライン要素３０に対して動作するので、ブロックベースの処理については、このことは各プロセッサが効率的に並列動作することを可能にする。
【００６８】
なお、ブロックの長さが各列３０内のメモリ素子８の数に一致しない場合には、データのブロックと列との間に正確な対応が存在しない。このことは多数の方法で、例えば個数を低減した要素で各列を満たすことによって対処することができる。例えば、ＲＧＢ（赤色、緑色、青色）値で表現される２つの画素値を記憶するために用いるデータ列の場合には、画素毎に記憶すべき３つの値が存在する。この場合には、８つのメモリ素子の各列を用いて２つの画素を記憶し、８つのうち２つのメモリ素子を空のままにすることができる。
【００６９】
第２の動作モードは行モードと称し、このモードでは、入力シーケンサが入力データアイテムを取得し、これらのデータアイテムをメモリ素子上の行に分配する。従って、この操作モードでは、図６に示すように、入力シーケンサ１４は、第１列内に記憶された第１データアイテムで第１行を満たすことから始め、第１行が完結するまで、後続のデータアイテムを各列内に順に満たす。次に、第２列が満たされ、第３列が続く、等である。これ以上データが存在しなくなるか、あるいはアレイ全体が満たされると、このことを中止する。
【００７０】
行モードは、例えばデータがデータラインの形で到着する場合、即ちデータアイテムのシーケンスが画像のラインを表現する場合のように、データラインを並列に処理するのに特に適している。
【００７１】
上述したように、この行モードは、データを行の形で直接、メモリ素子８に記憶するか、あるいは最初は列の形で記憶し、フィードバック経路２４を用いて行の形に並べ替えるかのいずれかによって達成することができる。
【００７２】
列モードと同様に、行を完全に満たす必要はなく、このことは、各行の長さが処理されるデータラインの長さと同じでない場合に有用であり得る。
【００７３】
なお、列モードにおけるデータブロック及び行モードにおけるデータラインは共に、単にグループ化されたデータアイテムのシーケンスとして入力端子１２上に到着し、データが「ブロック」であるか「ライン」であるかはデータの検査によって決めることはできない。
【００７４】
データが入力シーケンサ１４、メモリ素子８、出力プロセッサ１８及びフィードバック経路２４から入力シーケンサ１４に戻るループを回って送信される動作モードは、並べ替えモードとして機能する。行モードまたは列モードよりも複雑なこの動作モードの例は以上で説明している。
【００７５】
モードの選択の提供することによって、説明した実施例は、単一のＳＩＭＤアレイが種々の処理タスクを実行することを可能にする。
【００７６】
上述した特定例におけるように、種々のモード、及びこれに対応してメモリ素子に記憶されるデータのパターンは、データをメモリ素子に直接、所望のパターンで記憶するか、あるいはデータをフィードバック経路にデータを流すかのいずれかによって達成することができる。
【００７７】
上記プロセッサアレイは、一部の演算をデータラインに対してライン毎に好適に実行し、他の演算はブロックの形のデータに対して実行するビデオ処理に特に適している。実施例の集積回路装置は、この種々の処理タスクを効率的に実行することができる。
【００７８】
説明した実施例に対する多数の変形が可能であることは、当業者にとって明らかである。例えば当業者は、直接的なメモリアクセス以外のデータラインにアクセスする方法が可能であることは、当業者にとって明らかである。
【００７９】
プロセッサ素子の数は調整することができ、メモリ素子と同数のプロセッサ素子を有する必要はない。
【００８０】
本発明の方法は、上述したＳＩＭＤアレイの他に、複数命令複数データ（ＭＩＭＤ）アレイでも用いることができる。
【００８１】
本発明のメモリアレイは、プロセッサアレイと分離して配置する必要はなく、具体例では、プロセッサと共に集積したメモリ素子で構成することができ、この場合には、これらのメモリ素子はレジスタと称することができる。
【００８２】
特許文献１に記載されたような構成も使用することができる。とくに、処理要素は、単にメモリ素子の１列にアクセスすることができるだけでなく、隣接する処理要素に対応する隣接する列にアクセスすることもできるように構成することができる。
【００８３】
さらに、説明した実施例では、処理要素またはシーケンス（順序化）要素をフィードバック経路上に設けていないが、代案の実施例は、こうした追加的な処理要素またはシーケンス要素をフィードバック経路上に含むことができる。
【図１】
2009538464.tif 000003
【図２】
2009538464.tif 000004
【図３】
2009538464.tif 000005
【図４】
2009538464.tif 000006
【図５】
2009538464.tif 000007
【図６】
2009538464.tif 000008
【国際調査報告】
2009538464.tif 000009
2009538464.tif 000010
2009538464.tif 000011