(57)【特許請求の範囲】
【請求項１】
一次元に配置され相互に接続された複数の演算要素を有する演算器群を複数備え、前記各演算器群間を相互接続機構によって一次元トーラス又はリング形状に接続し、前記各演算要素同士がＳＩＭＤ型として動作する並列演算処理装置において、
コントローラを備え、該コントローラが前記相互接続機構を制御することによって、
前記演算器群内ローカルに他の任意の一つの演算要素の出力を入力とするモードと、全部の演算器群が一次元トーラスまたは一続きのリングであるとみて、ラップアラウンドを考慮して所定の距離内にある演算要素の出力の任意の一つを入力とするモードとを切り換えるものである、並列演算処理装置。
【請求項２】
一次元に配置され相互に接続された複数の演算要素を有する演算器群を複数備え、前記各演算器群間を相互接続機構によって一次元トーラス又はリング形状に接続した回路を二次元に配置し、前記各演算要素同士がＳＩＭＤ型として動作する並列演算処理装置において、
コントローラを備え、該コントローラが前記相互接続機構を制御することによって、
前記演算器群内ローカルに他の任意の一つの演算要素の出力を入力とするモードと、前記一次元に配置された全部の演算器群が一次元トーラスまたは一続きのリングであるとみて、ラップアラウンドを考慮して所定の距離内にある演算要素の出力の任意の一つを入力とするモードとを切り換えるものである、並列演算処理装置。
【請求項３】
複数の演算要素が外部からの入力データを受信するインタフェースとして、ラスタ入力またはブロック入力のどちらかの入力形式を選択するための入力形式選択手段を有する入力インタフェースを設けたことを特徴とする請求項１または請求項２記載の並列演算処理装置。
【請求項４】
複数の演算要素が外部へ出力データを転送するインタフェースとして、ラスタ出力またはブロック出力のどちらかの出力形式を選択するための出力形式選択手段を有する出力インタフェースを設けたことを特徴とする請求項１から請求項３のうちのいずれか１項記載の並列演算処理装置。
【請求項５】
接続選択機構が不等の間隔で配置されることを特徴とする請求項１から請求項４のうちのいずれか１項記載の並列演算処理装置。
【請求項６】
コントローラが、複数の接続選択機構を個別に制御することを特徴とする請求項１から請求項５のうちのいずれか１項記載の並列演算処理装置。
【請求項７】
コントローラが、複数の演算要素を個別に制御することを特徴とする請求項１から請求項６のうちのいずれか１項記載の並列演算処理装置。
【請求項８】
コントローラが、複数の相互接続機構を個別に制御することを特徴とする請求項１から請求項７のうちのいずれか１項記載の並列演算処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、相互に接続された複数の演算要素が単一の命令により並列処理を行うＳＩＭＤ（Single Instruction Multiple Data-path）型の並列演算処理装置に関するものである。
【背景技術】
【０００２】
今日、種々の分野でＳＩＭＤ型のプロセッサが使用されている。ＳＩＭＤ型のプロセッサとは、１回の命令で複数データに対する処理を同時に行うプロセッサである。従来、このようなＳＩＭＤ型のプロセッサとして、入力シリアルデータをシリアルパラレル変換する第１のシフトレジスタと、この第１のシフトレジスタから出力される並列データを並列に同一プログラムにより処理する複数個のプロセッサと、これらプロセッサから出力されるパラレルデータをパラレルシリアル変換して出力シリアルデータとして出力する第２のシフトレジスタとを備えたものがあった（例えば、特許文献１参照）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開平５−２０４４８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、従来の並列演算処理装置では、複数個の演算要素を備えていても、ある演算要素が所望の距離離れた演算要素が有するデータを参照するための相互接続機構は、一斉かつ同様に動作する。このため、演算要素のＭ（Ｍ≧２）個並んだＳＩＭＤ型プロセッサで、Ｎ個（Ｎ＜Ｍ）のデータ数を持つＯ列（Ｏ≧２）のデータ列に対して同様の演算処理を実施する際、データ列毎に独立して演算を行いたい場合（データ列間で相互参照を行いたくない場合）にはＯ列のデータを１列ずつ逐次的に処理する必要があった。この場合、Ｍ個存在する演算要素のうちＮ個しか並列に使用できず、ＳＩＭＤ型プロセッサの持つ演算処理能力を全て発揮できず、処理時間の面でロスを生じるという課題があった。
【０００５】
また、従来の並列演算処理装置では、逐次入力とバス入力への演算処理が一つのＳＩＭＤ型プロセッサ内で要求される場合、ラスタ入力インタフェースを持つＳＩＭＤ型プロセッサでブロック入力を処理する際にはブロック−ラスタ変換処理（パラレル−シリアル変換処理）が、また、ブロック入力インタフェースを持つＳＩＭＤ型プロセッサでラスタ入力データを処理する際にはラスタ−ブロック変換処理（シリアル−パラレル変換処理）が、それぞれ必要とされ、処理時間の面でロスを生じるという課題があった。
【０００６】
この発明は上記のような課題を解決するためになされたもので、処理の高速化を図ることができる並列演算処理装置を得ることを目的とする。
【課題を解決するための手段】
【０００７】
この発明に係る並列演算処理装置は、一次元に配置され相互に接続された複数の演算要素を有する演算器群を複数備え、各演算器群間を相互接続機構によって一次元トーラス又はリング形状に接続し、各演算要素同士がＳＩＭＤ型として動作する並列演算処理装置において、コントローラを備え、コントローラが相互接続機構を制御することによって、演算器群内ローカルに他の任意の一つの演算要素の出力を入力とするモードと、全部の演算器群が一次元トーラスまたは一続きのリングであるとみて、ラップアラウンドを考慮して所定の距離内にある演算要素の出力の任意の一つを入力とするモードとを切り換えるようにしたものである。
【発明の効果】
【０００８】
この発明の並列演算処理装置は、コントローラが相互接続機構を制御することによって、演算器群内ローカルに他の任意の一つの演算要素の出力を入力とするモードと、全部の演算器群が一次元トーラスまたは一続きのリングであるとみて、ラップアラウンドを考慮して所定の距離内にある演算要素の出力の任意の一つを入力とするモードとを切り換えるよう構成したので、処理の高速化を図ることができる。
【図面の簡単な説明】
【０００９】
【図１】この発明の実施の形態１による並列演算処理装置を示す構成図である。
【図２】一般的な画像データの入力形式であるラスタ入力形式とブロック入力形式を示す説明図である。
【図３】この発明の実施の形態１による並列演算処理装置の入力インタフェースを示す構成図である。
【図４】この発明の実施の形態１による並列演算処理装置の入力インタフェースをラスタ入力インタフェースとして動作させた場合の説明図である。
【図５】この発明の実施の形態１による並列演算処理装置の入力インタフェースをバス入力インタフェースとして動作させた場合の説明図である。
【図６】この発明の実施の形態１による並列演算処理装置の出力インタフェースを示す構成図である。
【図７】この発明の実施の形態１による並列演算処理装置の出力インタフェースをラスタ出力インタフェースとして動作させた場合の説明図である。
【図８】この発明の実施の形態１による並列演算処理装置の出力インタフェースをバス出力インタフェースとして動作させた場合の説明図である。
【図９】この発明の実施の形態１による並列演算処理装置の相互接続機構を示す構成図である。
【図１０】この発明の実施の形態１による並列演算処理装置の相互接続機構の動作を示す説明図である。
【図１１】この発明の実施の形態１による並列演算処理装置の接続選択機構を示す構成図である。
【図１２】この発明の実施の形態１による並列演算処理装置のＮ＝１６、Ｍ＝８とした場合の相互接続機構、接続選択機構および演算要素の構成図である。
【図１３】この発明の実施の形態２による並列演算処理装置の構成図である。
【図１４】この発明の実施の形態３による並列演算処理装置の構成図である。
【図１５】この発明の実施の形態４による並列演算処理装置の構成図である。
【図１６】この発明の実施の形態５による並列演算処理装置の構成図である。
【図１７】この発明の実施の形態５による並列演算処理装置の垂直相互接続機構を示す構成図である。
【図１８】この発明の実施の形態５による並列演算処理装置の垂直接続選択機構を示す構成図である。
【発明を実施するための形態】
【００１０】
実施の形態１．
図１は、この発明の実施の形態１による並列演算処理装置を示す構成図である。
図１に示す並列演算処理装置はＳＩＭＤ型プロセッサであり、演算要素１、入力インタフェース２、出力インタフェース３、コントローラ４、相互接続機構５、接続選択機構６を備えている。演算要素１は複数個が一次元に配置され、演算と演算途中結果の記録を実施するものであり、ＡＬＵ（Arithmetic Logic Unit）１１、内部メモリ１２ａ，１２ｂを備えている。ＡＬＵ１１は、コントローラ４からの演算命令によって所望の演算を実施する演算部である。内部メモリ１２ａ，１２ｂは、ＡＬＵ１１から出力される演算結果を記録し、ＡＬＵ１１および出力インタフェース３に対して転送するためのデータ記録手段である。
【００１１】
入力インタフェース２は、外部からラスタ形式またはブロック形式で入力される例えば画像データといったデータを受信し、並列演算処理装置内部に転送するためのインタフェースであり、入力バッファ２１とセレクタ２２とを有している。入力バッファ２１は、演算要素１に対応して同数設けられ、外部から受信した入力データを記録し、それぞれの演算要素１に対して並列に転送するためのバッファである。セレクタ２２は、入力インタフェース２の入力データ形式を選択するための入力形式選択手段である。
【００１２】
図２は、一般的な画像データの入力形式であるラスタ入力形式とブロック（バス）入力形式を示す説明図であり、（ａ）はラスタ入力形式、（ｂ）はブロック（バス）入力形式を表す。図中の丸印が画素データを示している。尚、ブロック入力形式については、一例として４×４データのバス入力を示している。但し、バス入力のバス幅については一例としてバス幅＝４データとしている。また、図中の数字はそれぞれの形式における一般的な入力順序を表している。
【００１３】
図１に戻り、出力インタフェース３は、演算要素１からの出力データを受信し、外部にラスタ形式またはブロック形式でデータを転送するためのインタフェースであり、内部に、出力バッファ３１とセレクタ３２とを有している。出力バッファ３１は、それぞれの演算要素１に対応して同数設けられ、各演算要素１から出力される演算結果データを記録し、外部に転送するためのバッファである。セレクタ３２は、出力インタフェース３の出力データ形式を選択するための出力形式選択手段である。
【００１４】
コントローラ４は、演算要素１、入力インタフェース２、出力インタフェース３、相互接続機構５および接続選択機構６に対して単一の演算命令を転送し、演算処理を制御するための制御部である。相互接続機構５は、各演算要素１を相互に接続し、コントローラ４の演算命令によって任意の距離の演算要素１からのデータを転送する参照データ距離の選択手段である。接続選択機構６は、相互接続機構５の間に一定の間隔で配置され、相互接続機構５の接続構成を選択するための参照データ群の選択手段である。
【００１５】
図３に入力インタフェース２の詳細を示す。
各セレクタ２２は、コントローラ４からの制御信号により入力形式を選択するよう構成されている。各セレクタ２２は、ラスタ入力データとバス入力データとを入力し、その選択出力を入力バッファ２１に出力する。入力バッファ２１は、コントローラ４の制御信号に基づいてセレクタ２２からのデータを受信し、それぞれの演算要素１に対して出力するよう構成されている。このような構成により、入力インタフェース２は、ラスタ入力インタフェースの機能とバス入力インタフェースの機能の二つの機能を持つ。尚、ここでは、一例としてバス入力を４データのバス幅としたが、バス幅は４データに限らない。
【００１６】
図４は、入力インタフェース２がラスタ入力インタフェースとして動作する際の説明図であり、そのデータフローを破線で示している。
ラスタ入力によりデータが入力される際は、左端のセレクタ２２では外部からのラスタ入力データが選択されるように、その他のセレクタ２２では左隣の入力バッファ２１のデータが選択されるように、即ち、全てのセレクタ２２で左側の入力信号が選択されるように、コントローラ４からのセレクタ制御信号を与える。
更に、コントローラ４からの入力バッファ制御信号を、全ての入力バッファ２１が受信を行うように与える。これによって、左端の入力バッファ２１が外部からのラスタ入力データを、その他の入力バッファ２１が左隣の入力バッファ２１のデータをそれぞれ受信し、ラスタ入力インタフェースと同等の動作が可能となる。
【００１７】
図５は、入力インタフェース２がバス入力インタフェースとして動作する際の説明図であり、そのデータフローを破線で示している。
バス入力によりデータが入力される際は、セレクタ２２上部右側の入力信号が選択されるように、コントローラ４からのセレクタ制御信号を与える。
更に、コントローラ４からの入力バッファ制御信号については、書き込みたい部分のみ受信を行うように与える。これによって、バス入力を任意の連続した入力バッファ２１がバス入力データを受信し、バス入力インタフェースと同等の動作が可能となる。
【００１８】
図６に出力インタフェース３の詳細を示す。
各セレクタ３２は、コントローラ４からの制御信号（上部セレクタ制御信号）により、演算要素１からのデータと、ラスタ出力時のシフト用データを選択するよう構成されている。即ち、ラスタ出力時のシフト用データの選択として、図面左端以外のセレクタ３２は、それぞれ一つ左側の出力バッファ３１の出力を入力するようになっている。また、セレクタ３３は、コントローラ４からの制御信号（下部セレクタ制御信号）によって任意の位置の１データを選択するためのセレクタである。更に、出力バッファ３１は、コントローラ４の制御信号によって各セレクタ３２からのデータを受信するよう構成されている。
このような構成により、出力インタフェース３は、ラスタ出力インタフェースの機能とバス出力インタフェースの機能の二つの機能を持つ。尚、ここでは一例としてバス出力を４データのバス幅としたが、バス幅は４データに限らない。
【００１９】
また、演算要素１からデータを取り込む際の動作は、ラスタ出力、バス出力で共通である。コントローラ４からの上部セレクタ制御信号によりセレクタ３２右側の入力信号を選択し、同時にコントローラ４からの出力バッファ制御信号を与える。これによって、演算要素１から転送されるデータを並列に出力バッファ３１で受信する。
【００２０】
図７は、出力インタフェース３がラスタ出力インタフェースとして動作する際の説明図であり、そのデータフローを破線で示している。
ラスタ出力によりデータを出力する際はコントローラ４からの上部セレクタ制御信号によりセレクタ３２左側の入力信号を選択し、同時にコントローラ４からの出力バッファ制御信号を与える。これによって、全ての出力バッファ３１が一斉に隣の出力バッファ３１（図では右隣）へデータを転送し、かつ隣の出力バッファ３１（図では左隣）からデータを受信する。ここで、右端の出力バッファ３１が外部への転送を実施する。
このようにして、出力インタフェース３はラスタ出力インタフェースとしての動作が可能である。
【００２１】
図８は、出力インタフェースがバス出力インタフェースとして動作する際の説明図であり、そのデータフローを破線で示している。
バス出力によりデータを出力する際は、コントローラ４からの下部セレクタ制御信号によって４つのセレクタ３３を制御し、出力したい位置の連続した４つの出力バッファを選択する。このようにして、出力インタフェース３はバス出力インタフェースとしての動作が可能である。
【００２２】
上述の入力インタフェース２および出力インタフェース３により、ラスタ入力およびバス入力に対して単一の構成で対応可能となる。これにより、従来に比べて、ラスタ入力およびバス入力が単一のＳＩＭＤ型プロセッサで要求される場合に、シリアル−パラレル変換処理もしくはパラレル−シリアル変換処理に必要とされる演算処理を削減することができるという効果が得られる。
【００２３】
図９に相互接続機構５の詳細を示す。
図中のセレクタ５１は、コントローラ４からの制御信号に従い、任意の距離の演算要素１から転送されたデータを選択するための選択手段である。但し、ここでは相互接続機構５のうち、左側の演算要素１のデータを参照するための部分のみを示している。右側の演算要素１のデータを参照するための部分については、左側と同様（左右対称）の構成および動作となるため、ここでは説明を省略する。
図中のカギ括弧内の数値［］は、演算要素の位置を表している。即ち、演算要素［ｘ］が相互接続機構５直下の演算要素であり、例えば、演算要素［ｘ−８］は八つ左隣の演算要素を、演算要素［ｘ＋４］は四つ右隣の演算要素を表す。
相互接続機構５は、コントローラ４の演算命令に従い、全てが一斉に所望の距離離れた演算要素１の内部メモリ１２ａまたは１２ｂのデータを転送する。例えば、左１の距離の転送を命じる場合、各相互接続機構５は図１０の破線で示すように、右に１つ分離れた位置の演算要素１から内部メモリのデータを転送する。尚、図１０では、接続選択機構６の図示は省略している。
【００２４】
このような相互接続機構５の機能により、入力インタフェース２を動作させることなく近隣の演算要素１の保持するデータを参照可能である。ここでは一例として左隣８の距離までの参照が可能な相互接続機構５の例を示したが、この個数や最大距離は８に限らない。また、相互接続機構５が連続しない演算要素を参照することも考えられる。
【００２５】
図１１に接続選択機構６の詳細を示す。但し、相互接続機構５と同様、ここでは左側の演算要素１のデータを参照するための部分のみを示している。右側の演算要素１のデータを参照するための部分については、左側と同様（左右対称）の構成および動作となるため、説明を省略する。
接続選択機構６は、相互接続機構５の数（＝演算要素１の数）にしてＭ個おきに配置される。Ｍは、相互接続機構５の数の合計をＮとすると、Ｍ≦Ｎ／２を満たす数である。セレクタ６１は、コントローラ４からのセレクタ制御信号により、演算要素［ｘ’−Ｏ］からのデータと演算要素［ｘ’＋Ｍ−Ｏ］からのデータ（図では１≦Ｏ≦８）から片方を選択し、演算要素［ｘ’＋８−Ｏ］へ出力するための選択手段である。
接続選択機構６により、演算要素［ｘ’−０１］から演算要素［ｘ’−０８］の８データと、演算要素［ｘ’＋Ｍ−０１］から演算要素［ｘ’＋Ｍ−０８］の８データのうち片方を選択し、演算要素［ｘ’］から演算要素［ｘ’＋０７］へ出力可能である。ここでｘ’は、接続選択機構の右側に位置する演算要素が演算要素［ｘ’］となるような値である。
【００２６】
図１２に、一例としてＮ＝１６、Ｍ＝８とした場合の相互接続機構５、接続選択機構６および演算要素１の一部の詳細を示す。
接続選択機構６に対して、演算要素［ｘ’−Ｏ］のデータを選択するようにコントローラ４からの制御信号を与えることにより、演算要素［０］から演算要素［１５］までの１６個の相互接続機構は全てが繋がった形で動作が可能となる。
また、接続選択機構６に対して、演算要素［ｘ’＋Ｍ−Ｏ］を選択するようにコントローラ４からの制御信号を与えることにより、演算要素［０］から演算要素［７］までの８個の相互接続機構がひとまとまり、演算要素［８］から演算要素［１５］までの８個の相互接続機構がひとまとまりとなり、８並列×２個の相互接続機構５を独立して使用可能となる。
【００２７】
従来では、データ列毎に独立の相互参照が必要とされ、かつ、データ数Ｐの大データ列とデータ数Ｑの小データ列（Ｑ≦Ｐ／２）に対する処理が単一のＳＩＭＤプロセッサで要求される場合、小データ列を一つずつ逐次的に処理する必要があった。
しかし、実施の形態１に示すように、接続選択機構６を用い、Ｎ＝Ｐ、Ｍ＝ＱとしてＳＩＭＤ型プロセッサを構成することにより、Ｐ／Ｑ個（但し端数は切捨て）の小データ列を同時に処理可能となる。即ち、従来に対し小データ列の処理速度をＰ／Ｑ倍に向上できる。
【００２８】
以上のようにして、この実施の形態１によれば、従来よりも小さい演算処理時間で、ラスタ入力とバス入力の双方に対応可能である。また、従来よりも小さい演算処理時間で、データ数の異なる２種類のデータ列に対する演算処理を行うことが可能である。
【００２９】
尚、上記実施の形態１では、一例として１データを８ビットとしたが、これはどのような値でもかまわない。また、上記実施の形態１では、一例としてＮ＝１６、Ｍ＝８としたが、これはどのような数でもかまわない。ＮはＭの倍数でなくてもよいし、ＮおよびＭは偶数でなくても、２のべき乗でなくてもよい。更に、上記例では、入力インタフェースおよび出力インタフェースのバス入出力を４データのバス幅としたが、これはどのような値でもかまわない。また、入力インタフェースと出力インタフェースのバス幅が異なっていてもかまわない。
【００３０】
また、上記例では、相互接続機構５で参照可能な演算要素を左右に連続した８演算要素としたが、これはどのような値でもかまわない。また、連続していない演算要素１を選択可能な構成としてもかまわない。さらに、左と右で参照できる演算要素数が異なっていてもかまわない。
【００３１】
以上のように、実施の形態１の並列演算処理装置によれば、一次元に配置され相互に接続された複数の演算要素を有する演算器群を複数備え、各演算器群間を相互接続機構によって一次元トーラス又はリング形状に接続し、各演算要素同士がＳＩＭＤ型として動作する並列演算処理装置において、コントローラを備え、コントローラが相互接続機構を制御することによって、演算器群内ローカルに他の任意の一つの演算要素の出力を入力とするモードと、全部の演算器群が一次元トーラスまたは一続きのリングであるとみて、ラップアラウンドを考慮して所定の距離内にある演算要素の出力の任意の一つを入力とするモードとを切り換えるようにしたので、処理時間のロスを無くすことができ、処理の高速化を図ることができる。
【００３２】
また、実施の形態１の並列演算処理装置によれば、複数の演算要素１が外部からの入力データを受信するインタフェースとして、ラスタ入力またはブロック入力のどちらかの入力形式を選択するための入力形式選択手段を有する入力インタフェース２を設けたので、ラスタ入力およびバス入力が単一のＳＩＭＤ型プロセッサで要求される場合に、シリアル−パラレル変換処理もしくはパラレル−シリアル変換処理に必要とされる演算処理を削減することができる。
【００３３】
また、実施の形態１の並列演算処理装置によれば、複数の演算要素１が外部へ出力データを転送するインタフェースとして、ラスタ出力またはブロック出力のどちらかの出力形式を選択するための出力形式選択手段を有する出力インタフェース３を設けたので、ラスタ入力およびバス入力が単一のＳＩＭＤ型プロセッサで要求される場合に、シリアル−パラレル変換処理もしくはパラレル−シリアル変換処理に必要とされる演算処理を削減することができる。
【００３４】
実施の形態２．
図１３は、実施の形態２の並列演算処理装置の構成図である。
実施の形態２では、実施の形態１で示した図１の並列演算処理装置と比べて、コントローラ４から接続選択機構６に対する制御信号線が接続選択機構６毎に分離している点が異なる（図中の相違点１００参照）。その他の構成では実施の形態１と同様であるため、以下では、実施の形態１と異なる点に絞って説明を行う。
実施の形態２においては、コントローラ４から接続選択機構６への制御信号線を独立することによって、演算要素［ｘ’−Ｏ］のデータと、演算要素［ｘ’＋Ｍ−Ｏ］のデータどちらを選択するか、接続選択機構６毎に独立に決定可能である。
上記の構成によって、任意の位置で接続選択機構６の参照先を切替えることができ、複数種類の異なるデータ数を持つ小データ列に対してデータ列を同時に処理可能となる。
【００３５】
一例として、Ｎ＝２５６、Ｍ＝１６とした場合について説明する。任意の位置で接続選択機構６を切替えることが可能となるため、例えば３２個の相互接続機構５をひとまとまりとして８つのデータ列、６４個の相互接続機構５をひとまとまりとして４つのデータ列など、１６×ｉ個（ｉは正の整数）の相互接続機構５をひとまとまりとして１６／ｉ個（ｉは正の整数、端数は切捨て）のデータ列を同時に、独立に処理可能となる。
【００３６】
また、相互接続機構５を不等な間隔で区切り、それぞれをひとまとまりとしてデータ列の処理を行うことも可能である。一例として、１２８個、６４個、３２個、３２個のように、相互接続機構５を不等な間隔で区切るようにコントローラ４からの制御信号を与える。これによって、データ数が１２８個のデータ列を１個、データ数が６４個のデータ列を１個、データ数が３２個のデータ列をそれぞれ独立に処理できる。
【００３７】
以上のようにして、この実施の形態２によれば、実施の形態１よりも小さい演算処理時間で、データ数の異なる３種類以上のデータ列に対する演算処理を行うことが可能である。
【００３８】
尚、上記例では、一例としてＮ＝２５６、Ｍ＝１６としたが、これはどのような数でもかまわない。ＮはＭの倍数でなくてもよいし、ＮおよびＭは偶数でなくても、２のべき乗でなくてもよい。
また、上記例では、相互接続機構５をひとまとまりとして扱う個数の例として３２個、６４個、１２８個を挙げたが、これは、Ｍ×ｉ個（ｉは正の整数）であることを満たせばどのような数でもよい。それぞれが偶数でなくてもよいし、２のべき乗でなくてもよい。
【００３９】
以上のように、実施の形態２の並列演算処理装置によれば、コントローラ４が、複数の接続選択機構６を個別に制御するようにしたので、複数種類の異なるデータ数を持つ小データ列に対してデータ列を同時に処理可能とすることができる。
【００４０】
また、実施の形態２の並列演算処理装置によれば、接続選択機構６を不等の間隔で配置するようにしたので、データ数の異なる３種類以上のデータ列に対する演算処理を行うことができる。
【００４１】
実施の形態３．
図１４は、実施の形態３の並列演算処理装置の構成図である。
実施の形態３では、図１で示した実施の形態１の並列演算処理装置と比べて、コントローラ４から相互接続機構５に対する制御信号線がＭ個の相互接続機構５毎に分離しており（図中、相違点１０１参照）、更に、コントローラ４から演算要素１に対する制御信号線がＭ個の演算要素１毎に分離している（図中、相違点１０２参照）点が異なる。その他の構成では実施の形態１と同様であるため、以下では、実施の形態１と異なる点に絞って説明を行う。また、以下では、Ｍ個の演算要素１および相互接続機構５をまとめて演算要素群と呼ぶ。
【００４２】
演算要素群毎にコントローラ４からの制御信号線を独立に与えることによって、各演算要素群をそれぞれが独立したＳＩＭＤ型プロセッサであるかのように使用可能となる。即ち、全体がＮ／Ｍ個の（但し端数は切捨て）演算要素群（＝並列数ＭのＳＩＭＤ型プロセッサ）を有するMultiple Instruction Multiple Data（ＭＩＭＤ）型プロセッサとして使用可能となる。
【００４３】
ＭＩＭＤ型プロセッサとして使用する場合、先ず、接続選択機構６に、演算要素［ｘ’＋Ｍ−Ｏ］のデータを選択するようにコントローラ４からの制御信号を与える。これによって、各演算要素間の相互接続が分断される。同時に、コントローラ４から演算要素群に対し、各演算要素群で別個の演算処理が実施されるように、また、別個の相互参照を行うように制御信号を与える。
このような制御信号を与えることにより、各演算要素群が、独立したデータ列に対し、別個の演算命令を実施可能となり、ＭＩＭＤ型プロセッサとしての機能が実現される。
【００４４】
従来通りのＳＩＭＤ型プロセッサとして使用する場合は、コントローラ４から接続選択機構６への制御信号を、演算要素［ｘ’−Ｏ］のデータを選択するように与え、同時に各演算要素群に対して全て同じ制御信号を与える。
上記のように制御信号を与えることにより、ＳＩＭＤ型プロセッサ全体を従来通り１個のＳＩＭＤ型プロセッサとして使用可能となる。
【００４５】
以上のようにして、この実施の形態３によれば、ＳＩＭＤ型プロセッサがＭＩＭＤ型プロセッサとしても使用可能となる。
【００４６】
尚、上記例では、単一のコントローラ４で全体を制御する構成としたが、コントローラ４が複数個に分かれていてもよい。また、コントローラ４を複数に分割した場合は、分割したコントローラそれぞれが制御する演算要素群の数はいくつであってもよい。
【００４７】
以上のように、実施の形態３の並列演算処理装置によれば、コントローラ４が、複数の演算要素１を個別に制御するようにしたので、ＭＩＭＤ型プロセッサとしての機能を実現することができる。
【００４８】
また、実施の形態３の並列演算処理装置によれば、コントローラ４が、複数の相互接続機構５を個別に制御するようにしたので、ＭＩＭＤ型プロセッサとしての機能を実現することができる。
【００４９】
実施の形態４．
図１５は、実施の形態４の並列演算処理装置の構成図である。
実施の形態４は、図１で示した実施の形態１の並列演算処理装置と比べて、入力インタフェース２ａおよび出力インタフェース３ａに従来インタフェースを用いている点が異なる。即ち、実施の形態４は従来の構成に対して接続選択機構６のみを付け加えた構成である。以下では、実施の形態１と異なる点に絞って説明を行う。
入力形式、出力形式は単一だが、データ数の異なるデータ列が存在する場合には、従来の構成に対して接続選択機構６のみを付け加え、入力インタフェース２ａおよび出力インタフェース３ａには従来のものを用いてもよい。即ち、接続選択機構６は、図３〜図５に示す入力インタフェース２や、図６〜図８に示す出力インタフェース３と必ずしも組み合わせて用いる必要はなく、単独で追加することにより、実施の形態１で説明したように、Ｎ＝Ｐ（大データ列）、Ｍ＝Ｑ（小データ列）としてＳＩＭＤ型プロセッサを構成することにより、Ｐ／Ｑ個の小データ列を同時に処理可能とすることができる。
【００５０】
以上のようにして、この実施の形態４によれば、従来よりも小さい演算処理時間で、データ数の異なる２種類のデータ列に対する演算処理を行うことが可能である。
【００５１】
尚、実施の形態４では、入力インタフェース２ａにはラスタ入力インタフェースを用いてもよいし、バス入力インタフェースを用いてもよい。同様にして、出力インタフェース３ａにはラスタ出力インタフェースを用いてもよいし、バス出力インタフェースを用いてもよい。また、ラスタ入力インタフェースとバス出力インタフェースを同時に用いてもよいし、バス入力インタフェースとラスタ出力インタフェースを同時に用いてもよい。更に、ラスタ形式、バス形式以外の入出力インタフェースを用いることももちろん可能である。
【００５２】
実施の形態５．
実施の形態５は、実施の形態１に比べて、演算要素１が二次元に配置されており、垂直方向への相互参照が存在する点が異なる。
図１６に、実施の形態５における演算要素１および水平相互接続機構５ａ，垂直相互接続機構５ｂと、水平接続選択機構６ａ，垂直接続選択機構６ｂの接続関係を示す。図示のように、実施の形態５では、水平方向の水平相互接続機構５ａと水平接続選択機構６ａおよび垂直方向の垂直相互接続機構５ｂと垂直接続選択機構６ｂが設けられており、それぞれの機能は実施の形態１における相互接続機構５および接続選択機構６と同様である。また、セレクタ７は、コントローラ４からの制御信号によって水平相互接続機構５ａと垂直相互接続機構５ｂ、どちらかのデータを選択するためのセレクタである。これ以外の並列演算処理装置としての構成は実施の形態１と同様であるため、以下では、実施の形態１と異なる点に絞って説明を行う。
【００５３】
図１７に、垂直相互接続機構５ｂの詳細構成を示す。
垂直相互接続機構５ｂの構成および動作の原理は、実施の形態１における相互接続機構５と全く同様である。但し、図１６中の左側のデータではなく、上側のデータを参照する点が異なる。セレクタ５１ｂは、コントローラ４からの制御信号に従い、上に任意の距離の演算要素１から転送されたデータを選択するための選択手段である。但し、ここでは垂直相互接続機構５ｂのうち、上側の演算要素１のデータを参照する部分のみを示している。下側の演算要素１のデータを参照する部分については、上側と同様（上下対称）の構成および動作となるため、ここでは説明を省略する。また、図中の演算要素［ｙ］は、演算要素の位置を表している。演算要素［ｙ］が垂直相互接続機構５ｂ直近の演算要素であり、演算要素［ｙ−８］は８つ上隣の演算要素を、演算要素［ｙ＋４］は４つ下隣の演算要素を表す。
【００５４】
垂直相互接続機構５ｂは、コントローラ４の演算命令に従い、全てが一斉に所望の距離離れた演算要素１の内部メモリ１２ａもしくは１２ｂのデータを転送する。この機能により、入力インタフェース２を動作させることなく近隣の演算要素１の保持するデータを参照可能である。この図１７では、一例として、上隣八つの距離までの参照が可能な相互接続機構を示している。
【００５５】
図１８に垂直接続選択機構６ｂの詳細を示す。
垂直相互接続機構６ｂの構成および動作の原理は、実施の形態１における接続選択機構６と全く同様である。但し、図１６中の左側のデータではなく、上側のデータを参照する点が異なる。
図１８では、図１７で示した垂直相互接続機構５ｂと同様に、ここでは上側の演算要素のデータを参照するための部分のみを示している。下側の演算要素のデータを参照するための部分については、上側と同様（上下対称）の構成および動作となるため、説明を省略する。
垂直接続選択機構６ｂは、垂直相互接続機構５ｂの数（＝演算要素１の数）にしてＲ個おきに配置される。Ｒは、垂直の相互接続機構５の数の合計をＳとすると、Ｒ≦Ｓ／２を満たす数である。また、セレクタ６１ｂは、コントローラ４からのセレクタ制御信号により、演算要素［ｙ’−Ｔ］からのデータと演算要素［ｙ’＋Ｒ−Ｔ］からのデータ（図では１≦Ｔ≦８）から片方を選択し、演算要素［ｙ’＋８−Ｔ］へ出力するための選択手段である。
このような垂直接続選択機構６ｂにより、演算要素［ｙ’−０１］から演算要素［ｙ’−０８］の８データと、演算要素［ｙ’＋Ｍ−０１］から演算要素［ｙ’＋Ｍ−０８］の８データのうち片方を選択し、演算要素［ｙ’］から演算要素［ｙ’＋０７］へ出力可能である。ここでｙ’は、接続選択機構の下側に位置する演算要素が演算要素［ｙ’］となるような値である。
【００５６】
以上のような垂直相互接続機構５ｂおよび垂直接続選択機構６ｂにより、水平方向と同様にして、上下方向に任意の位置からデータを参照することが可能となる。
更に、セレクタ７は、コントローラ４からの制御信号により、水平相互接続機構５ａから出力される水平方向任意位置のデータと、垂直相互接続機構５ｂから出力される垂直方向任意位置のデータからどちらかのデータを選択し、演算要素１に対して転送する。
【００５７】
以上のようにして、実施の形態５によれば、演算要素が二次元に並んだＳＩＭＤ型プロセッサにおいて、左右方向および上下方向の、任意の演算要素１の内部データを参照することが可能となる。
【００５８】
尚、上記例では、一例として水平相互接続機構５ａおよび垂直相互接続機構５ｂで参照可能な演算要素１を上下に連続した８演算要素としたが、これはどのような値でもかまわない。また、連続していない演算要素１を選択可能な構成としてもかまわない。さらに、上と下で参照できる演算要素数が異なっていてもかまわない。
また、上記の図１６の構成では、一例として水平接続選択機構６ａ、垂直接続選択機構６ｂの配置間隔を共に２個おきとしたが、これはどのような値であってもよい。また、水平と垂直で異なった値でもよい。
【００５９】
以上のように、実施の形態５の並列演算処理装置によれば、一次元に配置され相互に接続された複数の演算要素を有する演算器群を複数備え、各演算器群間を相互接続機構によって一次元トーラス又はリング形状に接続した回路を二次元に配置し、各演算要素同士がＳＩＭＤ型として動作する並列演算処理装置において、コントローラを備え、コントローラが相互接続機構を制御することによって、演算器群内ローカルに他の任意の一つの演算要素の出力を入力とするモードと、一次元に配置された全部の演算器群が一次元トーラスまたは一続きのリングであるとみて、ラップアラウンドを考慮して所定の距離内にある演算要素の出力の任意の一つを入力とするモードとを切り換えるようにしたので、実施の形態１の効果に加えて、二次元配置における左右方向および上下方向の、任意の演算要素１の内部データを参照することができる。
【符号の説明】
【００６０】
１  演算要素、２，２ａ  入力インタフェース、３，３ａ  出力インタフェース、４  コントローラ、５  相互接続機構、５ａ  水平相互接続機構、５ｂ  垂直相互接続機構、６  接続選択機構、６ａ  水平接続選択機構、６ｂ  垂直接続選択機構、７，２２，３２，５１，５１ｂ，６１，６１ｂ  セレクタ、１１  ＡＬＵ、１２ａ，１２ｂ  内部メモリ、２１  入力バッファ、３１  出力バッファ。
【図１】
0005601817.tif 000002
【図２】
0005601817.tif 000003
【図３】
0005601817.tif 000004
【図４】
0005601817.tif 000005
【図５】
0005601817.tif 000006
【図６】
0005601817.tif 000007
【図７】
0005601817.tif 000008
【図８】
0005601817.tif 000009
【図９】
0005601817.tif 000010
【図１０】
0005601817.tif 000011
【図１１】
0005601817.tif 000012
【図１２】
0005601817.tif 000013
【図１３】
0005601817.tif 000014
【図１４】
0005601817.tif 000015
【図１５】
0005601817.tif 000016
【図１６】
0005601817.tif 000017
【図１７】
0005601817.tif 000018
【図１８】
0005601817.tif 000019