(57)【特許請求の範囲】
【請求項１】
内部に記録手段を備えた演算要素が複数個一次元に配置され、それぞれの演算要素がデータ線により相互に接続されたSIMD型の並列処理装置において、
各演算要素内の記録手段の任意の領域に記録された、どの方向にいくつ離れた演算要素のデータを参照するかの参照距離情報を読み出す参照距離選択手段と、
参照距離選択手段によって読み出された参照距離情報に基づいて、上記データ線を選択し、選択したデータ線のデータを、対応する演算要素に出力する参照データ選択手段と、
各演算要素内の記録手段の任意の領域に記録された自記録手段のアドレスを読み出すメモリアドレス選択手段と、
メモリアドレス選択手段によって読み出されたアドレスに記録されたデータを選択する出力データ選択手段を備え、
演算要素は、自らに対応する参照データ選択手段が出力するデータと、出力データ選択手段が出力するデータを参照し演算処理を実行し、
参照データと参照距離情報を同一の記録手段に記録することで各演算要素に共通する一回の命令で自らと異なる演算要素の記録手段を参照する演算処理を行う
ことを特徴とする並列処理装置。
【請求項２】
内部に記録手段を備えた演算要素が複数個二次元に配置され、それぞれの演算要素が水平方向データ線と垂直方向データ線により相互に接続されたSIMD型の並列処理装置において、
各演算要素内の記録手段の任意の領域に記録された、水平方向または垂直方向どの方向にいくつ離れた演算要素のデータを参照するかの参照距離情報を読み出す参照距離選択手段と、
参照距離選択手段によって読み出された参照距離情報が水平方向のどの方向にいくつ離れた演算要素のデータを参照するかである時は、その参照距離情報に基づいて、水平方向データ線の所望のデータ線を選択し、選択したデータ線のデータを、対応する演算要素に出力する水平参照データ選択手段と、
参照距離選択手段によって読み出された参照距離情報が垂直方向のどの方向にいくつ離れた演算要素のデータを参照するかである時は、その参照距離情報に基づいて、垂直方向データ線の所望のデータ線を選択し、選択したデータ線のデータを、対応する演算要素に出力する垂直参照データ選択手段と、
各演算要素内の記録手段の任意の領域に記録された、水平参照データ選択手段の出力または垂直参照データ選択手段の出力の何れを選択するかの参照方向情報を読み出す参照方向選択手段と、
参照方向選択手段によって制御され、水平参照データ選択手段と垂直参照データ選択手段の出力を選択し、選択した出力のデータを、対応する演算要素に出力する水平垂直データ選択手段と、
各演算要素内の記録手段の任意の領域に記録された自記録手段のアドレスを読み出すメモリアドレス選択手段と、
メモリアドレス選択手段によって読み出されたアドレスに記録されたデータを選択する出力データ選択手段を備え、
演算要素は、自らに対応する水平垂直データ選択手段と出力データ選択手段が出力するデータを参照し演算処理を実行することを特徴とする並列処理装置。
【請求項３】
内部に記録手段を備えた演算要素が複数個三次元に配置され、それぞれの演算要素が水平方向データ線と垂直方向データ線と前後方向データ線により相互に接続されたSIMD型の並列処理装置において、
各演算要素内の記録手段の任意の領域に記録された、水平方向または垂直方向または前後方向のどの方向にいくつ離れた演算要素のデータを参照するかの参照距離情報を読み出す参照距離選択手段と、
参照距離選択手段によって読み出された参照距離情報が水平方向のどの方向にいくつ離れた演算要素のデータを参照するかである時は、その参照距離情報に基づいて、水平方向データ線の所望のデータ線を選択し、選択したデータ線のデータを、対応する演算要素に出力する水平参照データ選択手段と、
参照距離選択手段によって読み出された参照距離情報が垂直方向のどの方向にいくつ離れた演算要素のデータを参照するかである時は、その参照距離情報に基づいて、垂直方向データ線の所望のデータ線を選択し、選択したデータ線のデータを、対応する演算要素に出力する垂直参照データ選択手段と、
参照距離選択手段によって読み出された参照距離情報が前後方向のどの方向にいくつ離れた演算要素のデータを参照するかである時は、その参照距離情報に基づいて、前後方向データ線の所望のデータ線を選択し、選択したデータ線のデータを、対応する演算要素に出力する前後参照データ選択手段と、
各演算要素内の記録手段の任意の領域に記録された、水平参照データ選択手段の出力または垂直参照データ選択手段の出力、または前後参照データ選択手段の出力の何れを選択するかの参照方向情報を読み出す参照方向選択手段と、
参照方向選択手段によって制御され、水平参照データ選択手段と垂直参照データ選択手段と前後参照データ選択手段の出力を選択し、選択した出力のデータを、対応する演算要素に出力する水平垂直前後データ選択手段と
各演算要素内の記録手段の任意の領域に記録された自記録手段のアドレスを読み出すメモリアドレス選択手段と、
メモリアドレス選択手段によって読み出されたアドレスに記録されたデータを選択する出力データ選択手段を備え、
演算要素は、自らに対応する水平垂直前後データ選択手段と出力データ選択手段が出力するデータを参照し演算処理を実行することを特徴とする並列処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は相互に接続された複数の演算要素が処理を行うSIMD（Single Instruction Multiple Data stream）型のプロセッサに関するものである。
【背景技術】
【０００２】
従来の並列処理装置の全体構成例を図１３に示す。図１３において、1は様々な演算を実施する演算要素（Processor Element）であり、水平方向に複数個配置されている。2は各演算要素1に対して共通の命令ストリームを転送し制御するプログラムコントローラである。3は処理するデータを一旦記録し、各演算要素1に転送する入力データメモリである。4は演算要素1で処理したデータを一旦記録し、外部に転送する出力データメモリである。5は各演算要素1を相互に接続し、プログラムコントローラ2の命令ストリームによって任意の距離離れた演算要素1のデータを転送する相互接続機構である。7はプログラムコントローラ2からの命令ストリームにより、所望の演算を実施するALU（Arithmetic Logic Unit）である。8a及び8bは演算要素1のローカルメモリであり、これらのローカルメモリ8a、8bから読み出されたデータに対してALU7が演算を実施する。
なお、ALU7及びローカルメモリ8a、8bは夫々各演算要素1に備えられている。
【０００３】
入力データメモリ3は、プログラムコントローラ2の命令を受信し、ローカルメモリ8aとローカルメモリ8bにデータの転送を行う。各演算要素1は、プログラムコントローラ2の命令ストリームに従い、ローカルメモリ8aとローカルメモリ8bのデータに対し、ALU7で所望の演算を実施する。また相互接続機構5は、同様にプログラムコントローラ2の命令ストリームに従い、所望の距離離れた演算要素1のローカルメモリ8a、8b、あるいはALU7のデータを転送する。
このようにSIMD処理では、各演算要素1と各相互接続機構5が、共通の単一命令によって一斉に同じ動作をするため、反復性の高い処理を行うのに適している。
また、特表2007-503039号公報には、演算（処理）要素(PE)ごとに複数の格納要素を設け、データ依存の処理を支援するために、間接アドレッシングにより格納要素を参照するものが開示されているが、演算（処理）要素間で任意のビットを参照することはできない。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特表2007-503039号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、データの配置などを考慮して演算を実施する場合、例えば各演算要素が異なる距離の演算要素を参照して処理を実施する場合、距離に応じた命令を逐次実施する必要が生じ、処理時間の面で大幅なロスを生じていた。
【０００６】
この発明は、上述のような課題を解決するためになされたもので、第１の目的は、各演算要素共通の単一命令で、各演算要素が異なる距離の演算要素のデータを参照可能とし、処理の高速化を実現するものである、
また第２の目的は、各演算要素共通の単一命令で、各演算要素が異なるアドレスに記録されたローカルメモリのデータを参照可能とし、処理の高速化を実現するものである。
また第３の目的は、各演算要素共通の単一命令で、各演算要素が二次元に配置された任意の位置の演算要素のデータ参照と、異なるアドレスに記録されたローカルメモリのデータ参照を可能とし、処理の高速化を実現するものである。
また第４の目的は、各演算要素共通の単一命令で、各演算要素が三次元に配置された任意の位置の演算要素のデータ参照と、異なるアドレスに記録されたローカルメモリのデータ参照を可能とし、処理の高速化を実現するものである。
【課題を解決するための手段】
【０００７】
この発明に係る並列処理装置は、
内部に記録手段を備えた演算要素が複数個一次元に配置され、それぞれの演算要素がデータ線により相互に接続されたSIMD型の並列処理装置において、
各演算要素内の記録手段の任意の領域に記録された、どの方向にいくつ離れた演算要素のデータを参照するかの参照距離情報を読み出す参照距離選択手段と、
参照距離選択手段によって読み出された参照距離情報に基づいて、上記データ線を選択し、選択したデータ線のデータを、対応する演算要素に出力する参照データ選択手段と、
各演算要素内の記録手段の任意の領域に記録された自記録手段のアドレスを読み出すメモリアドレス選択手段と、
メモリアドレス選択手段によって読み出されたアドレスに記録されたデータを選択する出力データ選択手段を備え、
演算要素は、自らに対応する参照データ選択手段が出力するデータと、出力データ選択手段が出力するデータを参照し演算処理を実行し、
参照データと参照距離情報を同一の記録手段に記録することで各演算要素に共通する一回の命令で自らと異なる演算要素の記録手段を参照する演算処理を行う。
【発明の効果】
【０００８】
この発明に係る並列処理装置によれば、
データ線によりそれぞれ相互に接続された演算要素が、その演算要素内部の記録手段の任意の領域にどの方向にいくつ離れた演算要素のデータを参照するかの参照距離情報を記録しておき、参照距離選択手段が参照距離情報を読み出し、参照距離情報に基づいて、参照データ選択手段が上記データ線を選択し参照データを保持する演算要素に接続し、また、自記録手段のアドレスを読み出すメモリアドレス選択手段によって読み出されたアドレスに記録されたデータを選択する出力データ選択手段を備えることで、他の演算要素のデータと自記録手段のデータを各演算要素PE共通の一回の命令ストリームで参照し演算を実行することが可能となる。
【図面の簡単な説明】
【０００９】
【図１】この発明の実施の形態１における並列処理装置の全体構成図である。
【図２】選択回路とローカルメモリ及び相互接続機構の一部を示す構成図である。
【図３】参照距離情報を元に、左方向の演算要素のデータ参照例の説明図である。
【図４】複数の演算要素を水平方向に接続した構成図である。
【図５】1次元DCT処理対象の8×8画素ブロックの説明図である。
【図６】変換式X0〜X7を各演算要素PE0〜PE7に対応させた説明図である。
【図７】この発明の実施の形態２における選択回路とローカルメモリ及び相互接続機構の一部を示した構成図である。
【図８】8×8画素ブロックの各列に対応させた各演算要素PE0〜PE7の処理例の説明図である。
【図９】図８の処理を実施する一例の説明図である。
【図１０】8×8画素ブロックの矢印で結ばれた斜線の画素同士の処理例の説明図である。
【図１１】この発明の実施の形態３における選択回路とローカルメモリ及び相互接続機構の一部を示す構成図である。
【図１２】実施の形態３の構成を２次元に配列した構成図である。
【図１３】従来の並列処理装置の全体構成図である。
【発明を実施するための形態】
【００１０】
実施の形態１．
以下にこの発明の実施の形態１による並列処理装置について説明する。図１はこの実施の形態１における並列処理装置の全体構成を示すものである。1は様々な演算を実施する演算要素（Processor Element）である。演算要素PE1は一例として1ビットの演算器を搭載し、水平方向に複数配置されているものとする。2は各演算要素PE1に対して共通の命令ストリームを転送し制御するプログラムコントローラである。3は処理するデータを一旦記録し、各演算要素PE1に転送する入力データメモリである。4は演算要素PE1で処理したデータを一旦記録し、外部に転送する出力データメモリである。5は各演算要素PE1を相互に接続し、プログラムコントローラ2の命令ストリームによって任意の距離の演算要素PE1のデータを転送する相互接続機構である。6は演算要素PE1毎に異なる距離の離れた演算要素PE1を参照させるための選択回路である。この選択回路6については図２において詳細に説明する。7はプログラムコントローラ2からの命令ストリームにより、所望の演算を実施するALU（Arithmetic Logic Unit）である。8a及び8bは演算要素PE1のローカルメモリであり、これらのローカルメモリ8a、8bから読み出されたデータに対してALU7が演算を実施する。
なお、選択回路6とALU7及びローカルメモリ8a、8bは各演算要素PE1に夫々備えられている。
【００１１】
図２は選択回路6とローカルメモリ8a及び相互接続機構5の一部を示したもので、各演算要素PE1が左方向の演算要素PEのデータを参照するための構成である。相互接続機構5は近接する演算要素PE同士を接続する機構であり、「From PE[x-01]」は1つ離れた左方向の演算要素PEと、「From PE[x-02]」は2つ離れた左方向の演算要素PEと接続していることを示しており、最大9個離れた左側演算要素PEのデータの参照を可能としている。一方、「To PE[x+01]」は1つ離れた右方向の演算要素PEと、「To PE[x+02]」は2つ離れた右方向の演算要素PEと接続されていることを示しており、最大9個離れた右側演算要素PEへのデータ転送を可能としている。なお各演算要素PEは右方向の演算要素PEのデータについても参照する必要があるが、図２のデータ転送方向を左右反対にした同様の構成で実現できるため、ここでは割愛する。
【００１２】
ローカルメモリ8aの任意の4ビットの領域には、左方向にいくつ離れた演算要素PEを参照するかの参照距離情報が、演算要素PE毎に記録されている。10はプログラムコントローラ2からの命令ストリームにより、ローカルメモリ8aに記録された4ビットの参照距離情報を選択する参照距離選択手段としての参照距離セレクタである。11は参照距離セレクタ10によって選択された4ビットの参照距離情報を元に、「From PE[x-01]」から「From PE[x-09]」のうち、いずれか一つのデータパスを選択する参照データ選択としての手段参照データセレクタである。12はプログラムコントローラ2からの命令ストリームにより、ローカルメモリ8aの任意の領域に記録された処理データを、相互接続機構5に転送する出力データセレクタである。13は入力データメモリ3または参照データセレクタ11の出力データをローカルメモリ8aに記録する際、プログラムコントローラ2からの命令ストリームにより、どのビットに記録するかを選択する入力データセレクタである。
選択回路6は、参照距離セレクタ10、参照データセレクタ11、出力データセレクタ12及び入力データセレクタ13を備える。
【００１３】
図３はローカルメモリ8aに記録された参照距離情報を元に、左方向に離れた演算要素PEのデータを参照する例である。
ローカルメモリ8aのビット124〜127には「0101」の4ビットの参照距離情報が記録され、他のビットには実際に処理するデータが記録されているものとする。なお参照距離情報は、入力データセレクタ13を経由して外部の入力データメモリ3の内容を転送したものでも、ALU7によって演算した結果をそのまま使用したものでもよく、処理するアプリケーションに応じて最適な方を採用すればよい。
参照距離セレクタ10は、ビット124〜127の内容を選択するための各演算要素PE共通の命令をプログラムコントローラ2から受け、参照データセレクタ11に出力する。図３の場合、参照距離情報は「0101」、即ち10進法の「5」となり、参照データセレクタ11は「5」に割り当てられた「From PE[x-04]」のデータパス、即ち左方向に4つ離れた演算要素PEのデータを選択する。選択された演算要素PEのデータが、ローカルメモリ8a、8bまたはALU7に転送され、図３の演算要素PEは左方向に4つ離れた演算要素PEのデータの記録、演算が可能となる。
【００１４】
図４に複数の演算要素PEを水平方向に接続した構成図を示す。
各演算要素PEのローカルメモリ8aのビット124〜127には、左から「0101」、「1000」、「0111」、「0110」の参照距離情報が記録されている。プログラムコントローラ2は、ビット124〜127の内容を選択するための各演算要素PE共通の単一命令を参照距離セレクタ10に与えるが、参照データセレクタ11は参照距離情報に基づいて、演算要素PE毎に個別の距離に存在する演算要素PEのデータの参照が可能となる。これにより、各演算要素PE共通の命令ストリームで異なる距離の演算要素PEのデータを参照することができ、処理時間の大幅な削減が可能となる。
また、参照距離情報を記録するメモリを別途設けず、処理データが記録されているローカルメモリ内に参照距離情報を記録することで、メモリ領域の効率的な活用が可能となる。さらに処理データの一部、または全てをそのまま参照距離情報として使用する場合でも、同一のローカルメモリ内に処理データと参照距離情報の両者を記録することで、データ転送のための処理時間を短縮できる。
【００１５】
以下に本構成を適用した1次元DCT（Discrete Cosine Transform ；離散コサイン変換）の処理例を示す。
図５は1次元DCTの処理対象となる8×8画素のブロックである。1次元DCTは各ライン8×1画素に対して以下の式を実施する。
【００１６】
【数１】
0005473507.tif 000002
【００１７】
ここでXは変換対象、即ち各ライン8×1画素を表し、Yは1次元DCTによって得られる8×1画素である。このときの変換式は以下となる。
【００１８】
【数２】
0005473507.tif 000003
【００１９】
上記変換式を8ライン分実施することで、8×8画素ブロックの1次元DCT結果を得ることができる。
【００２０】
図６は変換式のX0〜X7を各演算要素PE0〜PE7に対応させた例である。例えばa0〜a7の変換式を実施する場合、各演算要素PEは以下の参照が必要となる。
【００２１】
演算要素PE0：X0に対応させ、右方向に7つ離れたPE4（X7）のデータを参照
演算要素PE1：X1に対応させ、右方向に5つ離れたPE5（X6）のデータを参照
演算要素PE2：X2に対応させ、右方向に3つ離れたPE6（X5）のデータを参照
演算要素PE3：X3に対応させ、右方向に1つ離れたPE7（X4）のデータを参照
演算要素PE4：X7に対応させ、左方向に7つ離れたPE0（X0）のデータを参照
演算要素PE5：X6に対応させ、左方向に5つ離れたPE1（X1）のデータを参照
演算要素PE6：X5に対応させ、左方向に3つ離れたPE2（X2）のデータを参照
演算要素PE7：X4に対応させ、左方向に1つ離れたPE3（X3）のデータを参照
【００２２】
上記のように、各演算要素PEが異なる距離の演算要素PEを参照する1次元DCTの場合でも、あらかじめ各演算要素PEのローカルメモリに、必要な参照距離情報を記録しておくことで、各演算要素PE共通の一回の命令ストリームで実行することが可能となる。
【００２３】
本実施の形態では、最大左右9つ離れた演算要素PEを参照可能としたが、これに限定されるものではなく、ハードウェア規模や適用するアプリケーションに応じて、参照距離セレクタ10で選択するビット数と参照データセレクタ11で選択するデータパス数と共にこれを増減させても構わない。
【００２４】
また、本実施の形態では相互接続機構5で転送するデータ幅は1ビットとしているがこれに限定されるものではなく、必要に応じて拡張しても構わない。
【００２５】
また、本実施の形態ではローカルメモリのビット数を128としたがこれに限定されるものではなく、必要に応じて拡張しても構わない。
【００２６】
また、本実施の形態では各演算要素PEの二つのローカルメモリのうち、ローカルメモリ8aを中心に説明を実施しているが、ローカルメモリ8bの周辺回路も同様の構成で構築可能である。この場合、例えば参照データセレクタ11の制御信号線上に、プログラムコントローラ2によって制御され、ローカルメモリ8aとローカルメモリ8bのいずれかの参照距離セレクタ10の出力を選択するセレクタを設け、さらに参照データセレクタ11と入力データセレクタ13の出力信号線上についても、ローカルメモリ8aとローカルメモリ8bのいずれに転送するかのセレクタを設けることで、ローカルメモリ8aとローカルメモリ8bが相互接続機構5を共有することも可能となる。
【００２７】
実施の形態２．
以下にこの発明の実施の形態２による並列処理装置について説明する。図７はこの実施の形態２における選択回路6とローカルローカルメモリ8a及び相互接続機構5の一部を示したものである。
ローカルメモリ8aの任意の7ビットの領域には、ローカルメモリ8a自身のどのビットを読み出すかのメモリアドレス情報が、演算要素PE毎に記録されている。20はプログラムコントローラ2からの命令ストリームにより、ローカルメモリ8aに記録された7ビットのメモリアドレス（ビット）情報を選択するメモリアドレス選択手段としてのメモリアドレスセレクタである。21はメモリアドレスセレクタ20によって選択された7ビットのメモリアドレス情報を元に、ローカルメモリ8aの該当アドレスから処理するデータを選択する出力データ選択手段としての出力データセレクタである。
なお、他の構成については実施の形態１と同様であるため、詳細説明は割愛する。
また、選択回路6は、参照距離セレクタ10、参照データセレクタ11、入力データセレクタ13、メモリアドレスセレクタ20及び出力データセレクタ21を備える。
【００２８】
ローカルメモリ8aのビット117〜123には「1010010」の7ビットのメモリアドレス情報が記録され、他のビットには実際に処理するデータが記録されているものとする。なおメモリアドレス情報は、入力データセレクタ13を経由して外部の入力データメモリ3の内容を転送したものでも、ALU7によって演算した結果をそのまま使用したものでもよく、処理するアプリケーションに応じて最適な方を採用すればよい。
メモリアドレスセレクタ20は、ビット117〜123の内容を選択するための各演算要素PE共通の命令をプログラムコントローラ2から受け、出力データセレクタ21に出力する。図７の場合、参照距離情報は「1010010」、即ち10進法の「82」となり、出力データセレクタ21はローカルメモリ8aのアドレス（ビット）「82」に記録された処理データを選択する。選択された処理データは、相互接続機構5に転送され、演算要素PE間データ参照に使用されるか、あるいはALU7に転送され、所望の演算処理が実行される。
【００２９】
このように各演算要素PEのローカルメモリ8aのビット117〜123に、各演算要素PEが必要とするメモリアドレスを個別に記録することで、プログラムコントローラ2は、ビット117〜123の内容を選択するための各演算要素PE共通の単一命令をメモリアドレスセレクタ20に与えるが、出力データセレクタ21はメモリアドレス情報に基づいて、演算要素PE毎に個別のメモリアドレスに存在する処理データの参照が可能となる。これにより、各演算要素PE同一の命令ストリームで異なるメモリアドレスの処理データを参照することができ、処理時間の大幅な削減が可能となる。
【００３０】
図８は8×8画素ブロックの各列に対して各演算要素PE0〜PE7を対応させ、各演算要素PE0〜PE7が斜線を施した画素同士を処理する例で、1画素が8ビットで構成されたものとする。図９は図８の処理を実施する一例で、各演算要素PE0〜PE7のローカルメモリ8a及び8bに、Y0〜Y7データが以下のように記録されているものとする。
【００３１】
Y0データ：各演算要素PEのローカルメモリ8a ビット0〜7
Y1データ：各演算要素PEのローカルメモリ8a ビット8〜15
Y2データ：各演算要素PEのローカルメモリ8a ビット16〜23
Y3データ：各演算要素PEのローカルメモリ8a ビット24〜31
Y4データ：各演算要素PEのローカルメモリ8b ビット0〜7
Y5データ：各演算要素PEのローカルメモリ8b ビット8〜15
Y6データ：各演算要素PEのローカルメモリ8b ビット16〜23
Y7データ：各演算要素PEのローカルメモリ8b ビット24〜31
【００３２】
この場合、各演算要素PE0〜PE7は以下のアドレス（ビット）を参照することで、斜線を施した画素同士の処理が可能となる。
【００３３】
演算要素PE0：ローカルメモリ8a アドレス（ビット）8〜15と
ローカルメモリ8b アドレス（ビット）8〜15
演算要素PE1：ローカルメモリ8a アドレス（ビット）16〜23と
ローカルメモリ8b アドレス（ビット）24〜31
演算要素PE2：ローカルメモリ8a アドレス（ビット）8〜15と
ローカルメモリ8b アドレス（ビット）0〜7
演算要素PE3：ローカルメモリ8a アドレス（ビット）0〜7と
ローカルメモリ8b アドレス（ビット）24〜31
演算要素PE4：ローカルメモリ8a アドレス（ビット）16〜23と
ローカルメモリ8b アドレス（ビット）16〜23
演算要素PE5：ローカルメモリ8a アドレス（ビット）24〜31と
ローカルメモリ8b アドレス（ビット）0〜7
演算要素PE6：ローカルメモリ8a アドレス（ビット）24〜31と
ローカルメモリ8b アドレス（ビット）8〜15
演算要素PE7：ローカルメモリ8a アドレス（ビット）0〜7と
ローカルメモリ8b アドレス（ビット）16〜23
【００３４】
上記のように、各演算要素PEがローカルメモリの異なるアドレスを参照する場合でも、あらかじめ各演算要素PEのローカルメモリに、必要なメモリアドレス情報を記録しておくことで、各演算要素PE共通の一回の命令ストリームで実行することが可能となる。
【００３５】
図１０は8×8画素ブロックのうち、矢印で結ばれた斜線の画素同士を処理する例である。本実施の形態及び実施の形態１に示した通り、ローカルメモリ8aと8bに参照距離情報及びメモリアドレス情報を記録し、プログラムコントローラ2の命令ストリームによって、参照距離セレクタ10とメモリアドレスセレクタ20がそれぞれの情報を選択することで、水平垂直方向の任意の画素の参照が可能となる。
【００３６】
本実施の形態では、ローカルメモリのビット数を128としたがこれに限定されるものではなく、ハードウェア規模や適用するアプリケーションに応じて、メモリアドレスセレクタ20で選択するビット数と、参照距離セレクタ10で選択するビット数と、出力データセレクタ21で選択するビット数と共に、これを増減させても構わない。
【００３７】
また、本実施の形態では、最大左右9つ離れた演算要素PEを参照可能としたが、これに限定されるものではなく、ハードウェア規模や適用するアプリケーションに応じて、参照距離セレクタ10で選択するビット数と参照データセレクタ11で選択するデータパス数と共にこれを増減させても構わない。
【００３８】
また、本実施の形態では相互接続機構5で転送するデータ幅は1ビットとしているがこれに限定されるものではなく、必要に応じて拡張しても構わない。
【００３９】
また、本実施の形態では各演算要素PEの二つのローカルメモリのうち、ローカルメモリ8aを中心に説明を実施しているが、ローカルメモリ8bの周辺回路も同様の構成で構築可能である。この場合、例えば参照データセレクタ11の制御信号線上に、プログラムコントローラ2によって制御され、ローカルメモリ8aとローカルメモリ8bのいずれかの参照距離セレクタ10の出力を選択するセレクタを設け、さらに参照データセレクタ11と入力データセレクタ13の出力信号線上についても、ローカルメモリ8aとローカルメモリ8bのいずれに転送するかのセレクタを設けることで、ローカルメモリ8aとローカルメモリ8bが相互接続機構5を共有することも可能となる。
【００４０】
実施の形態３．
以下にこの発明の実施の形態３による並列処理装置について説明する。実施の形態３は複数の演算要素PEを水平及び垂直方向の２次元に配置して相互に接続し、構成されたものである。図１１はこの実施の形態３における選択回路6とローカルローカルメモリ8a及び相互接続機構5の一部を示す。
図１１において、55aは各演算要素PEを水平方向に相互に接続する水平相互接続機構、55bは各演算要素PEを垂直方向に相互に接続する垂直相互接続機構である。
ローカルメモリ8aの任意の4ビットの領域には、水平な左右方向にいくつ離れた演算要素PE、または垂直な上下方向にいくつ離れた演算要素PEを参照するかの参照距離情報が演算要素PE毎に記録されている。10はプログラムコントローラ2からの命令ストリームにより、ローカルメモリ8aに記録された4ビットの参照距離情報を選択する参照距離セレクタである。
【００４１】
51aは参照距離セレクタ10によって選択された4ビットの参照距離情報が左右方向にいくつ離れた演算要素PEのデータを参照するかである場合、この参照距離情報を元に、「From PE[x-01]」から「From PE[x-09]」のうち、いずれか一つのデータパスを選択する水平参照データ選択手段としての水平参照データセレクタである。51bは参照距離セレクタ10によって選択された4ビットの参照距離情報が上下方向にいくつ離れた演算要素PEのデータを参照するかである場合、この参照距離情報を元に、「From PE[y-01]」から「From PE[y-09]」のうち、いずれか一つのデータパスを選択する垂直参照データ選択手段としての垂直参照データセレクタである。
【００４２】
また、ローカルメモリ8aの任意の1ビットの領域には、参照距離情報を元に、水平相互接続機構あるいは垂直相互接続機構のどちらのデータを選択するかの参照方向情報が、演算要素PE毎に記録されている。50はプログラムコントローラ2からの命令ストリームにより、ローカルメモリ8aに記録された1ビットの参照方向情報を選択する参照方向選択手段としての参照方向セレクタである。52は参照方向セレクタ50によって選択された1ビットの参照方向情報を元に、データを選択する水平垂直データ選択手段としての水平垂直データセレクタである。
【００４３】
さらに、ローカルメモリ8aの任意の7ビットの領域には、ローカルメモリ8a自身のどのビットを読み出すかのメモリアドレス情報が、演算要素PE毎に記録されている。20はプログラムコントローラ2からの命令ストリームにより、ローカルメモリ8aに記録された7ビットのメモリアドレス（ビット）情報を選択するメモリアドレスセレクタである。21はメモリアドレスセレクタ20によって選択された7ビットのメモリアドレス情報を元に、ローカルメモリ8aの該当アドレスから処理するデータを選択する、出力データセレクタである。
【００４４】
なお、他の構成については実施の形態１及び実施の形態２と同様であるため、詳細説明は割愛する。
また、選択回路6は、参照距離セレクタ10、入力データセレクタ13、メモリアドレスセレクタ20、出力データセレクタ21、参照方向セレクタ50、水平参照データセレクタ51a、垂直参照データセレクタ51b、水平垂直データセレクタ52を備える。
【００４５】
図１２は各演算要素PEを２次元に配列した本実施の形態の構成を示すものである。
本実施の形態２のように構成することで、各演算要素PE共通の一回の命令ストリームで、水平及び垂直方向の任意の位置に配置されているPEデータを参照することが可能となる。
【００４６】
実施の形態４．
実施の形態３では複数の演算要素PEが２次元に配置された例について述べたが、複数の演算要素PEが３次元に配置された構成とされることもできる。
実施の形態４は複数の演算要素PEが３次元に配置された例で、以下の構成を備える。
各演算要素PEは水平な左右方向、水平な前後方向及び垂直な上下方向の３次元に配置され、各演算要素PEを相互に接続する相互接続機構は、水平な左右方向に相互に接続する水平相互接続機構、垂直な上下方向に相互に接続する垂直相互接続機構及び水平な前後方向に相互に接続する前後相互接続機構を備える。
【００４７】
ローカルメモリの任意の4ビットの領域には、水平な左右方向にいくつ離れた演算要素PE、または垂直な上下方向にいくつ離れた演算要素PE、及び水平な前後方向にいくつ離れた演算要素PEの何れを参照するかの参照距離情報が演算要素PE毎に記録される。
各演算要素PE内の記録手段の任意の領域に記録された参照距離情報を読み出す参照距離選択手段を備え、この参照距離選択手段で読み出された参照距離情報によって制御され、演算要素PEを相互に接続する水平相互接続機構のデータ線のうち、所望のデータ線を選択する水平参照データ選択手段と、参照距離情報によって制御され、演算要素PEを相互に接続する垂直相互接続機構のデータ線のうち、所望のデータ線を選択する垂直参照データ選択手段と、参照距離情報によって制御され、演算要素PEを相互に接続する前後相互接続機構のデータ線のうち、所望のデータ線を選択する前後参照データ選択手段を備える。
【００４８】
また、ローカルメモリの任意の1ビットの領域には、参照距離情報を元に、水平相互接続機構、垂直相互接続機構、前後相互接続機構の何れのデータを選択するかの参照方向情報が演算要素PE毎に記録され、さらに記録した参照方向情報を読み出す参照方向選択手段と、読み出された参照方向情報によって制御され、水平参照データ選択手段と垂直参照データ選択手段と前後参照データ選択手段の何れかの出力を選択する水平垂直前後データ選択手段を備えている。
【００４９】
さらに、ローカルメモリの任意の7ビットの領域には、ローカルメモリ自身のどのビットを読み出すかのメモリアドレス情報が、演算要素PE毎に記録されており、プログラムコントローラからの命令ストリームにより、ローカルメモリに記録された7ビットのメモリアドレス（ビット）情報を選択するメモリアドレスセレクタと、メモリアドレスセレクタによって選択された7ビットのメモリアドレス情報を元に、ローカルメモリの該当アドレスから処理するデータを選択する出力データセレクタが備えられる。
なお、他の構成については実施の形態１及び実施の形態２と同様であるため、詳細説明は割愛する。
【産業上の利用可能性】
【００５０】
この発明は、特に画像信号データを並列処理するSIMD型の並列処理装置に利用される可能性がある。
【符号の説明】
【００５１】
1；演算要素、2；プログラムコントローラ、3；入力データメモリ、4；出力データメモリ、5；相互接続機構、6；選択回路、7；ALU、8a、8b；ローカルメモリ、10；参照距離セレクタ、11；参照データセレクタ、12；出力データセレクタ、13；入力データセレクタ、20；メモリアドレスセレクタ、21；出力データセレクタ、50；参照方向セレクタ、51a；水平参照データセレクタ、51b；垂直参照データセレクタ、52；水平垂直データセレクタ、55a；水平相互接続機構、55b；垂直相互接続機構。
【図１】
0005473507.tif 000004
【図２】
0005473507.tif 000005
【図３】
0005473507.tif 000006
【図４】
0005473507.tif 000007
【図５】
0005473507.tif 000008
【図６】
0005473507.tif 000009
【図７】
0005473507.tif 000010
【図８】
0005473507.tif 000011
【図９】
0005473507.tif 000012
【図１０】
0005473507.tif 000013
【図１１】
0005473507.tif 000014
【図１２】
0005473507.tif 000015
【図１３】
0005473507.tif 000016