(57)【要約】【課題】複雑なデータ入出力機構を用いることなく、プロセッシングエレメントに対するデータの入出力を容易かつ適切に行うこと。【解決手段】外部入力端子ＩＮ０１，０２，０３と外部出力端子ＯＵＴ０１，０２，０３とを有するプロセッシングエレメントＰＥ０１〜ＰＥ０４が前後左右に規則正しく二次元状に配置され、隣接する一方のプロセッシングエレメントＰＥ０１〜ＰＥ０４における外部出力端子ＯＵＴ０１，０２，０３を隣接する他方のプロセッシングエレメントＰＥ０１〜ＰＥ０４の外部入力端子ＩＮ０１，０２，０３に接続し、一端部に配置されたプロセッシングエレメントＰＥ０１〜ＰＥ０４の外部出力端子ＯＵＴ０１，０２，０３と他端部に配置されたプロセッシングエレメントＰＥ０１〜ＰＥ０４の外部入力装置ＩＮ０１，０２，０３とを、ＦＩＦＯ記録手段Ｍ０１〜Ｍ０３を介してトーラス状に接続する。【選択図】  図１
2009163491.tif 000002
【特許請求の範囲】
【請求項１】
入力データまたは演算結果を入力するための複数の外部入力端子と、前記入力データまたは前記演算結果を出力するための複数の外部出力端子とを有し、前記外部入力端子を介して入力された入力データの演算処理を行い、前記外部出力端子を介して演算結果を出力するプロセッシングエレメントが前後左右に規則正しく二次元状に配置され、
隣接する一方のプロセッシングエレメントの外部出力端子を隣接する他方のプロセッシングエレメントの外部入力端子に接続し、左端側に配置されたプロセッシングエレメントの外部出力端子と右端側に配置されたプロセッシングエレメントの外部入力端子とを、一のＦＩＦＯ記録手段を介して接続し、前端側に配置されたプロセッシングエレメントの外部出力端子と後端側に配置されたプロセッシングエレメントの外部入力端子とを、他のＦＩＦＯ記録手段を介して接続することにより、複数の前記プロセッシングエレメントと前記ＦＩＦＯ記録手段とをトーラス状に接続し、
前記プロセッシングエレメントの各々において、前記外部入力端子より入力された前記入力データまたは前記演算結果を、前記外部出力端子より出力して隣接したプロセッシングエレメントへ順次転送させ、前記入力データまたは前記演算結果を前記プロセッシングエレメント間で前記ＦＩＦＯ記録手段を介して周回させることにより、並列演算処理を行うことを特徴とするアレイプロセッサ。
【請求項２】
前記ＦＩＦＯ記録手段は、
並列に配置された複数のＦＩＦＯメモリ部と、
該ＦＩＦＯメモリ部の入力側に設けられ、前記ＦＩＦＯ記録手段に入力されたデータの記録対象メモリを、前記複数のＦＩＦＯメモリ部のいずれかより選択する入力側選択手段と、
前記ＦＩＦＯメモリ部の出力側に設けられ、前記ＦＩＦＯ記録手段より出力するデータの読出対象メモリを、前記複数のＦＩＦＯメモリ部のいずれかより選択する出力側選択手段と、
を有することを特徴とする請求項１に記載のアレイプロセッサ。
【請求項３】
２つの入力端子と２つの出力端子を有し、前記入力端子と前記出力端子との接続を組み合わせることにより、データの入出力経路を切り替えることが可能なクロスバススイッチが、トーラス状に接続された前記プロセッシングエレメントと前記ＦＩＦＯ記録手段の間に設置され、
前記クロスバススイッチの切替状態に応じて、アレイプロセッサの外部より、前記プロセッシングエレメントまたは前記ＦＩＦＯ記録手段に対して入力データを導き入れ、また、前記プロセッシングエレメントの演算結果または前記ＦＩＦＯ記録手段に記録される入力データを外部に出力すること
を特徴とする請求項１または請求項２に記載のアレイプロセッサ。
【請求項４】
前記クロスバススイッチは、当該クロスバススイッチの切替状態に拘わらず、予め設定される固定値を入力データとして前記出力端子より出力することができることを特徴とする請求項３に記載のアレイプロセッサ。
【請求項５】
前記プロセッシングエレメントは、前記入力データおよび前記演算結果を記録するための複数の内部記録手段を備え、
複数の前記内部記録手段のうちいずれかが前記演算結果を記録する役割を有する演算結果記録手段として機能し、
該演算結果記録手段は、演算処理に応じて他の前記内部記録手段に変更されること
を特徴とする請求項１乃至請求項４のいずれか１項に記載のアレイプロセッサ。
【請求項６】
二次元状に配置された前記プロセッシングエレメントが前記ＦＩＦＯ記録手段を介してトーラス状に接続される構成を１つの構成単位とし、複数の構成単位を前後左右に二次元的に配置し、各構成単位における前記プロセッシングエレメントの外部出力端子とＦＩＦＯ記録手段の入力側との接続を解除して、一の構成単位におけるプロセッシングエレメントの外部出力端子と他の構成単位におけるＦＩＦＯ記録手段の入力側とを接続し、
一端側に位置するプロセッシングエレメントの外部出力端子と、他端側に位置するＦＩＦＯ記録手段の入力側とを接続することにより、前記プロセッシングエレメントおよび前記ＦＩＦＯ記録手段をトーラス状に接続すること
を特徴とする請求項１乃至請求項５のいずれか１項に記載のアレイプロセッサ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はアレイプロセッサに関し、より詳細には、隣接する外部入力端子と外部出力端子とを接続して複数のプロセッシングエレメントをトーラス状に接続したアレイプロセッサに関する。
【背景技術】
【０００２】
従来より、科学技術計算やデジタル信号演算処理などの複雑な演算を迅速に行う演算処理装置としてアレイプロセッサが知られている。アレイプロセッサは、演算処理を行うプロセッシングエレメントを複数設置し、隣接するプロセッシングエレメントを、データバスを用いて一次元状態、または、二次元状態に相互に接続することにより構成される。
【０００３】
このようにして構成されるアレイプロセッサでは、同一の演算処理をプロセシングエレメント毎に異なるデータに対して同一のクロック周期で一斉に実行する処理と、各プロセッシングエレメントで算出された演算結果を隣接するプロセッシングエレメントに同一のクロック周期で一斉に転送する処理とを繰り返し実行することにより、ベクトル演算や行列演算を効率的に行うことが可能となっている。
【０００４】
このように同期されたクロック駆動により、一斉に各プロセッシングエレメントが演算を行い、隣接するプロセッシングエレメントに演算結果等を出力するアレイプロセッサを、一般にシストリックアレイという（例えば、非特許文献１および非特許文献２参照）。
【０００５】
シストリックアレイでは、各プロセッシングエレメントが演算機能および演算結果の転送機能だけを備え、入力データや演算結果等を保持するための内部メモリ等を有していないため、回路構成を比較的小さく抑えることが可能となっている。
【非特許文献１】梅尾博司著「超並列計算機アーキテクチャとそのアルゴリズム」共立出版、２００４年２月２５日  初版第６版発行、Ｐ２７―Ｐ５９.
【非特許文献２】C. Mead and Ｌ．Conway, “Introduction to VLSI Systems.” Addison-Wesley, ISBN0-201-04358-0, P271-P288.
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかしながら、プロセッシングエレメントは、上述したように演算機能と転送機能だけを備えるため、演算処理に用いる入力データを予め保持することができない。このため、プロセッシングエレメントに対して入力データを入力させる場合には、シストリックアレイの外部に入力データを入力させるためのデータ入力機構を設ける必要があった。特に、シストリックアレイにおいて入力データを入力する方法は、演算処理のアルゴリズムに応じて異なっているため、このアルゴリズムに応じてデータ入力機構を構築する必要があるという問題があった。
【０００７】
また、予め入力データを保持させるために、プロセッシングエレメントに内部メモリを設けることも考えられるが、内部メモリをプロセッシングエレメント内に設けると、プロセッシングエレメントが大型化してしまい、結果としてコスト上昇等を招くという問題があった。
【０００８】
さらに、演算処理のアルゴリズムによっては、シストリックアレイのプロセッシングエレメントより一旦出力されたデータを、適切なタイミングで、再度プロセッシングエレメントに対して再入力させる必要が生ずる場合もある。このような演算処理を行う場合には、シストリックアレイの外部に、一旦出力したデータを一時格納するためのメモリやレジスタを設け、それらを制御する機構が別途必要になってしまうという問題があった。
【０００９】
このため、シストリックアレイは、様々な問題を解くために有効なハードウエア構成であることは広く知られているが、データの入出力を制御する外部機構が別途必要となるため、実用化することが容易ではなかった。また、データ入出力を制御する外部機構は、汎用計算機を用いて実現することが多いため、速度面で満足することが容易ではなかった。
【００１０】
本発明は上記問題に鑑みて成されたものであり、複雑なデータ入出力機構を用いることなく、プロセッシングエレメントに対するデータの入出力を容易かつ適切に行うことが可能なアレイプロセッサを提供することを課題とする。
【課題を解決するための手段】
【００１１】
上記課題を解決するために、本発明に係るアレイプロセッサは、入力データまたは演算結果を入力するための複数の外部入力端子と、前記入力データまたは前記演算結果を出力するための複数の外部出力端子とを有し、前記外部入力端子を介して入力された入力データの演算処理を行い、前記外部出力端子を介して演算結果を出力するプロセッシングエレメントが前後左右に規則正しく二次元状に配置され、隣接する一方のプロセッシングエレメントの外部出力端子を隣接する他方のプロセッシングエレメントの外部入力端子に接続し、左端側に配置されたプロセッシングエレメントの外部出力端子と右端側に配置されたプロセッシングエレメントの外部入力端子とを、一のＦＩＦＯ記録手段を介して接続し、前端側に配置されたプロセッシングエレメントの外部出力端子と後端側に配置されたプロセッシングエレメントの外部入力端子とを、他のＦＩＦＯ記録手段を介して接続することにより、複数の前記プロセッシングエレメントと前記ＦＩＦＯ記録手段とをトーラス状に接続し、前記プロセッシングエレメントの各々において、前記外部入力端子より入力された前記入力データまたは前記演算結果を、前記外部出力端子より出力して隣接したプロセッシングエレメントへ順次転送させ、前記入力データまたは前記演算結果を前記プロセッシングエレメント間で前記ＦＩＦＯ記録手段を介して周回させることにより、並列演算処理を行うことを特徴とする。なお、ＦＩＦＯ記録手段とは、先入れ先出し（First In, First Out）機能を備えた記録手段を意味している。
【００１２】
本発明に係るアレイプロセッサによれば、プロセッシングエレメントに対しＦＩＦＯ記録手段がトーラス状に接続される。このため、ＦＩＦＯ記録手段に入力データを記録させておくことによって、適切な入力データをプロセッシングエレメントに入力させることが可能となる。また、ＦＩＦＯ記録手段がプロセッシングエレメントに対しトーラス状に接続されているため、プロセッシングエレメントにおける演算結果を、外部出力端子を介してＦＩＦＯ記録手段で記録（取得）することが可能となる。従って、従来のアレイプロセッサのように、外部に複雑なデータ入出力機構を設ける必要が無くなり、プロセッシングエレメントに対するデータの入出力を容易かつ適切に実現することが可能となる。
【００１３】
また、上述したアレイプロセッサにおいて、前記ＦＩＦＯ記録手段が、並列に配置された複数のＦＩＦＯメモリ部と、該ＦＩＦＯメモリ部の入力側に設けられ、前記ＦＩＦＯ記録手段に入力されたデータの記録対象メモリを、前記複数のＦＩＦＯメモリ部のいずれかより選択する入力側選択手段と、前記ＦＩＦＯメモリ部の出力側に設けられ、前記ＦＩＦＯ記録手段より出力するデータの読出対象メモリを、前記複数のＦＩＦＯメモリ部のいずれかより選択する出力側選択手段とを有するものであってもよい。
【００１４】
このように、ＦＩＦＯ記録手段が、並列に配置された複数のＦＩＦＯメモリ部と、ＦＩＦＯメモリ部の入力側に設置される入力側選択手段と、ＦＩＦＯメモリ部の出力側に設置される出力側選択手段とを有する場合には、プロセッシングエレメントに入力させるデータが重複する入力データにより構成される場合であっても、入力データに応じて入力側選択手段または出力側選択手段で適切なＦＩＦＯメモリ部を選択することにより、重複する全ての入力データをＦＩＦＯ記録手段に記録させることなく、適切な順番で入力データをプロセッシングエレメントに入力させることが可能となる。このため、ＦＩＦＯ記録手段における記録容量の低減を図ることが可能となり、ＦＩＦＯ記録手段のコストダウンを図ることが容易となる。
【００１５】
特に、アレイプロセッサを用いて行列演算を行う場合には、その演算の特殊性から繰り返し同一の行列要素を積算する必要性が生ずる。このため、上述したように、ＦＩＦＯ記録手段が、並列に配置された複数のＦＩＦＯメモリ部と、入力側選択手段と、出力側選択手段とを備えることによって、より効果的に記録容量の低減を実現することが可能となる。
【００１６】
さらに、上記アレイプロセッサにおいて、２つの入力端子と２つの出力端子を有し、前記入力端子と前記出力端子との接続を組み合わせることにより、データの入出力経路を切り替えることが可能なクロスバススイッチが、トーラス状に接続された前記プロセッシングエレメントと前記ＦＩＦＯ記録手段の間に設置され、前記クロスバススイッチの切替状態に応じて、アレイプロセッサの外部より、前記プロセッシングエレメントまたは前記ＦＩＦＯ記録手段に対して入力データを導き入れ、また、前記プロセッシングエレメントの演算結果または前記ＦＩＦＯ記録手段に記録される入力データを外部に出力するものであってもよい。
【００１７】
このように、クロスバススイッチをプロセッシングエレメントとＦＩＦＯ記録手段の間に設置することにより、外部より適切な入力データをプロセッシングエレメントに入力させたり、ＦＩＦＯ記録手段に対して適切な入力データを記録させたりすることが容易となる。また、クロスバススイッチを介して、ＦＩＦＯ記録手段に記録されるデータを外部に出力したり、プロセッシングエレメントにおける演算結果を外部に出力することが容易となる。
【００１８】
さらに、上記クロスバススイッチは、当該クロスバススイッチの切替状態に拘わらず、予め設定される固定値を入力データとして前記出力端子より出力することができるものであってもよい。
【００１９】
このようにクロスバススイッチにおいて外部出力端子より固定値を入力データとして出力することができれば、ＦＩＦＯ記録手段に記録されるデータやプロセッシングエレメントに入力されるデータなどの初期化処理を、固定値を用いて容易に実行することが可能となる。
【００２０】
また、上述したアレイプロセッサにおいて、前記プロセッシングエレメントが、前記入力データおよび前記演算結果を記録するための複数の内部記録手段を備え、複数の前記内部記録手段のうちいずれかが前記演算結果を記録する役割を有する演算結果記録手段として機能し、該演算結果記録手段は、演算処理に応じて他の前記内部記録手段に変更されるものであってもよい。
【００２１】
このように、プロセッシングエレメントが複数の内部記録手段を備え、いずれかの内部記録手段が演算結果記録手段として機能し、演算結果記録手段が、演算処理に応じて他の前記内部記録手段に変更される構成とすることによって、アレイプロセッサにおける演算結果の退避処理と、次の演算処理に必要な入力データの記録処理とを効率的に行うことが可能となり、入力データの入力処理効率の向上を図ることが可能となる。
【００２２】
また、プロセッシングエレメントにおいて演算処理が行われる過程において、予め次の演算処理に必要な入力データを内部記録手段に記録させておくことができ、次の演算処理を行う際に、入力データが記録された内部記録手段を演算結果記録手段に変更することによって、記録された入力データを用いて迅速に演算処理を行うことが可能となる。
【００２３】
加えて、本発明に係るアレイプロセッサにおいて、二次元状に配置された前記プロセッシングエレメントが前記ＦＩＦＯ記録手段を介してトーラス状に接続される構成を１つの構成単位とし、複数の構成単位を前後左右に二次元的に配置し、各構成単位における前記プロセッシングエレメントの外部出力端子とＦＩＦＯ記録手段の入力側との接続を解除して、一の構成単位におけるプロセッシングエレメントの外部出力端子と他の構成単位におけるＦＩＦＯ記録手段の入力側とを接続し、一端側に位置するプロセッシングエレメントの外部出力端子と、他端側に位置するＦＩＦＯ記録手段の入力側とを接続することにより、前記プロセッシングエレメントおよび前記ＦＩＦＯ記録手段をトーラス状に接続するようにしてもよい。
【００２４】
このように、二次元状に配置されたプロセッシングエレメントとＦＩＦＯ記録手段とのトーラス状の接続構成を１つの構成単位とし、各構成単位を二次元的に配置すると共に、各構成単位を成すプロセッシングエレメントおよびＦＩＦＯ記録手段をトーラス状に接続することによって、アレイプロセッサを容易に拡張させることが可能となり、アレイプロセッサの大型化を容易に実現することができる。
【００２５】
このため、より高度な演算処理を必要とする場合には、アレイプロセッサを拡張させて適切な処理能力を備えたアレイプロセッサを提供することが可能となる。また、アレイプロセッサの拡張が容易であるため、処理内容に応じて容易にアレイプロセッサを構築することができる。
【００２６】
また、拡張されたアレイプロセッサでは、構成単位毎の連結部分にＦＩＦＯ記録手段が挿入された構造となるため、ＦＩＦＯ記録手段をプロセッシングエレメント間の速度調整用のバッファとして利用することも可能となる。アレイプロセッサが大きく拡張される場合には、全てのプロセッシングエレメントにおいて処理の同期を確保することが困難となる場合も生じ得るため、ＦＩＦＯ記録手段を速度調整用のバッファとして利用することにより、アレイプロセッサが大型化された場合であっても、各プロセッシングエレメントの同期調整を容易に行うことが可能となる。
【発明の効果】
【００２７】
本発明に係るアレイプロセッサでは、プロセッシングエレメントに対しＦＩＦＯ記録手段がトーラス状に接続されているため、ＦＩＦＯ記録手段に入力データを記録させておくことによって適切な入力データをプロセッシングエレメントに入力させることが可能となる。また、ＦＩＦＯ記録手段がプロセッシングエレメントに対しトーラス状に接続されているため、プロセッシングエレメントにおける演算結果を、外部出力端子を介してＦＩＦＯ記録手段で記録（取得）することが可能となる。従って、従来のアレイプロセッサのように、外部に複雑なデータ入出力機構を用いる必要が無くなり、プロセッシングエレメントに対するデータの入出力を容易かつ適切に実現することが可能となる。
【発明を実施するための最良の形態】
【００２８】
以下に、本発明に係るアレイプロセッサを、図面を用いて詳細に説明する。
【００２９】
図１は、アレイプロセッサの基本構成を示した図である。アレイプロセッサ１は、４個のプロセッシングエレメントＰＥ０１，ＰＥ０２，ＰＥ０３，ＰＥ０４と、３組のＦＩＦＯメモリ（ＦＩＦＯ記録手段）Ｍ０１，Ｍ０２、Ｍ０３とを有している。
【００３０】
プロセッシングエレメントＰＥ０１〜ＰＥ０４には、３つの外部入力端子ＩＮ０１，ＩＮ０２，ＩＮ０３と３つの外部出力端子ＯＵＴ０１，ＯＵＴ０２，ＯＵＴ０３とが設けられている。このため、プロセッシングエレメントＰＥ０１〜ＰＥ０４には、入力データまたは他のプロセッシングエレメントにおいて演算された演算結果を、外部入力端子ＩＮ０１〜ＩＮ０３を介して入力することが可能となっており、また、演算された演算結果または外部入力端子ＩＮ０１〜ＩＮ０３を介して入力された入力データを、外部出力端子ＯＵＴ０１〜ＯＵＴ０３を介して外部に出力することが可能となっている。
【００３１】
なお、本実施の形態に係るプロセッシングエレメントＰＥ０１〜ＰＥ０４では、プロセッシングエレメントＰＥ０１〜ＰＥ０４の右側部に１つの外部入力端子ＩＮ０１が設けられると共に、左側部に１つの外部出力端子ＯＵＴ０１が設けられ、また、後側部に２つの外部入力端子ＩＮ０２，ＩＮ０３が設けられると共に、前側部に２つの外部出力端子ＯＵＴ０２，ＯＵＴ０３が設けられている。
【００３２】
プロセッシングエレメントＰＥ０１〜ＰＥ０４は、外部入力端子ＩＮ０１〜ＩＮ０３を介して入力されたデータに基づいて各種演算処理を行う基本演算要素としての役割を有しており、アレイプロセッサ１における演算処理機能と、演算された結果または入力された入力データを隣接するプロセッシングエレメントＰＥ０１〜ＰＥ０４へと出力（転送）する機能とを備えている。
【００３３】
なお、本実施の形態に係るアレイプロセッサ１では、プロセッシングエレメントＰＥ０１〜ＰＥ０４を用いて行列演算を行う場合について説明を行うが、アレイプロセッサ１により実現される演算処理は行列演算のみに限定されるものではなく、他の演算処理を行うことも可能である。
【００３４】
図２は、プロセッシングエレメントＰＥ０１〜ＰＥ０４の内部構造を示した図である。プロセッシングエレメントＰＥ０１〜ＰＥ０４は、３入力演算器５と、ａレジスタ６と、ｂレジスタ７と、ｃ０レジスタ（内部記録手段）８と、ｃ１レジスタ（内部記録手段）９と、出力切替器１０とを有している。なお、ｃ０レジスタ８とｃ１レジスタ９とのいずれか一方は、入力データを記録するための記録手段（以下、入力データ記録手段という。）として機能し、他方は演算結果を記録するための演算結果記録手段として機能する。この入力データ記録手段と演算結果記録手段との役割は、演算処理に応じてｃ０レジスタ８とｃ１レジスタ９とで切り替えることが可能となっている。
【００３５】
ａレジスタ６には、右側部に設けられる外部入力端子ＩＮ０１を介して入力された入力データａが記録される。また、ｂレジスタ７には、後側部に設けられる一の外部入力端子ＩＮ０２を介して入力された入力データｂが記録される。さらにｃ０レジスタ８またはｃ１レジスタ９のいずれか一方には、後側部に設けられる他の外部入力端子ＩＮ０３を介して入力された入力データｃが記録される。各レジスタは、３入力演算器５にバスを介して接続されており、３入力演算器５は、ａレジスタ６と、ｂレジスタ７と、ｃ０レジスタ８またはｃ１レジスタ９とに記録される入力データに基づいて演算を行うことが可能となっている。具体的に３入力演算器５は、ａレジスタ６に記録される入力データａと、ｂレジスタ７に記録される入力データｂと、ｃ０レジスタ８またはｃ１レジスタ９に記録される入力データｃとに基づいて、ａ×ｂ＋ｃの演算を１クロックで実行する。
【００３６】
出力切替器１０は、ａレジスタ６、ｂレジスタ７および３入力演算器５にバスを介して接続されており、出力切替器１０に対して、ａレジスタ６に記録される入力データａと、ｂレジスタ７に記録される入力データｂと、３入力演算器５により演算された演算結果ｄとが入力される。出力切替器１０は、前側部に設けられる外部出力端子ＯＵＴ０２と左側部に設けられる外部出力端子ＯＵＴ０１とに接続される２つの出力部を有しており、出力切替器１０において出力先の切り替えを制御することによって、ａレジスタ６に記録される入力データａ、ｂレジスタ７に記録される入力データｂ、３入力演算器５により演算処理された演算結果ｄを、外部出力端子ＯＵＴ０１，ＯＵＴ０２を介して隣接するプロセッシングエレメントＰＥ０１〜ＰＥ０４またはＦＩＦＯメモリＭ０１〜Ｍ０３に出力することが可能となっている。なお、本実施の形態における出力切替器１０では、前側部に設けられる外部出力端子ＯＵＴ０２からｂレジスタ７に記録される入力データｂが出力され、左側部に設けられる外部出力端子ＯＵＴ０１からａレジスタ６に記録される入力データａが出力されるように設定されている。
【００３７】
また、３入力演算器５は、演算結果記録手段として機能するレジスタ（ｃ０レジスタ８またはｃ１レジスタ９）に接続されており、３入力演算器５の演算結果ｄは、この演算結果記録手段としてのレジスタ（ｃ０レジスタ８またはｃ１レジスタ９）に毎回記録されることになる。一方で、演算結果記録手段として機能を有するレジスタ（ｃ０レジスタ８またはｃ１レジスタ９）は、前側部に設けられる外部出力端子ＯＵＴ０３に接続されており、このレジスタ（ｃ０レジスタ８またはｃ１レジスタ９）に記録された演算結果ｄを隣接するプロセッシングエレメントＰＥ０１〜ＰＥ０４またはＦＩＦＯメモリＭ０１〜Ｍ０３に出力することが可能となっている。
【００３８】
このようにプロセッシングエレメントＰＥ０１〜ＰＥ０４が構成されているため、右側部に設けられる外部入力端子ＩＮ０１を介して入力された入力データａは、ａレジスタ６に記録された後に、出力切替器１０を介して左側部に設けられる外部出力端子ＯＵＴ０１から隣接するプロセッシングエレメントＰＥ０１〜ＰＥ０４またはＦＩＦＯメモリＭ０１〜Ｍ０３に出力されることになる。また、後側部に設けられる外部入力端子ＩＮ０２を介して入力された入力データｂは、ｂレジスタ７に記録された後に、出力切替器１０を介して前側部に設けられる外部出力端子ＯＵＴ０２から隣接するプロセッシングエレメントＰＥ０１〜ＰＥ０４またはＦＩＦＯメモリＭ０１〜Ｍ０３に出力されることになる。さらに、後側部の他の外部入力端子ＩＮ０３を介して入力された入力データｃは、ｃ０レジスタ８またはｃ１レジスタ９に記録された後に、入力データ記録手段と演算結果記録手段との設定に応じて、前側部に設けられる外部出力端子ＯＵＴ０３を介して隣接するプロセッシングエレメントＰＥ０１〜ＰＥ０４またはＦＩＦＯメモリＭ０１〜Ｍ０３に出力されるか、または、３入力演算器５の演算に用いられる。
【００３９】
従って、隣接するプロセッシングエレメントＰＥ０１〜ＰＥ０４では、ＦＩＦＯメモリＭ０１〜Ｍ０３より入力された入力データａ，ｂ，ｃを順次転送することが可能となっており、このように転送された入力データａ，ｂ，ｃを用いて各プロセッシングエレメントＰＥ０１〜ＰＥ０４で演算処理を行うことによって、行列演算を行うことが可能となる。
【００４０】
また、プロセッシングエレメントＰＥ０１〜ＰＥ０４は、前側部に設けられる外部出力端子ＯＵＴ０３を介して、演算結果をプロセッシングエレメントＰＥ０１〜ＰＥ０４の外部に出力することが可能であるため、行列の要素毎に算出された演算結果を、後述するクロスバススイッチＳ０１，Ｓ０２を介してアレイプロセッサ１の外部に出力することが可能となっている。
【００４１】
なお、行列演算を行う場合には、各プロセッシングエレメントＰＥ０１〜ＰＥ０４においてＮ回（例えば、行列が正方行列である場合には１行の要素数または行列の列数がＮに該当する。）だけ積算演算を行う必要があるため、Ｎ回だけａレジスタ６に記録される入力データａとｂレジスタ７に記録される入力データｂとを転送（シフト）させる必要がある。一方で、加算演算に用いられる入力データｃは、入力データａおよび入力データｂがＮ回転送（シフト）される間に１回しか加算されないため、１度しか転送（シフト）する必要がない。このため、入力データ記録手段と演算結果記録手段との役割を、演算処理に応じてｃ０レジスタ８とｃ１レジスタ９とで切り替えることにより、プロセッシングエレメントＰＥ０１〜ＰＥ０４で計算を行う過程において次の演算処理（加算処理）に用いられる入力データｃを予めｃ０レジスタ８またはｃ１レジスタ９に記録させることができ、入力データｃの入力処理効率を向上することが可能となる。
【００４２】
４個のプロセッシングエレメントＰＥ０１〜ＰＥ０４は、図１に示すように左右に２つずつ、前後に２つずつ並ぶようにして二次元的に配置されている。そして、左右に配置されたプロセッシングエレメント（ＰＥ０１とＰＥ０２、ＰＥ０３とＰＥ０４）では、左側に位置するプロセッシングエレメント（ＰＥ０１，ＰＥ０３）の外部入力端子ＩＮ０１と右側に位置するプロセッシングエレメント（ＰＥ０２，ＰＥ０４）の外部出力端子ＯＵＴ０１とが接続されることによりアレイ構造が形成され、前後に配置されたプロセッシングエレメント（ＰＥ０１とＰＥ０３、ＰＥ０２とＰＥ０４）では、前側に位置するプロセッシングエレメント（ＰＥ０１，ＰＥ０２）の外部入力端子ＩＮ０２，ＩＮ０３と後側に位置するプロセッシングエレメント（ＰＥ０３，ＰＥ０４）の外部出力端子ＯＵＴ０２，ＯＵＴ０３とが接続されることによりアレイ構造が形成されている。
【００４３】
ＦＩＦＯメモリＭ０１〜Ｍ０３は、右側に位置する２つのプロセッシングエレメントＰＥ０２、ＰＥ０４に対して入力データの供給を行う第１ＦＩＦＯメモリＭ０１と、後側に位置する２つのプロセッシングエレメントＰＥ０３，ＰＥ０４に対して入力データの供給を行う第２ＦＩＦＯメモリＭ０２および第３ＦＩＦＯメモリＭ０３とにより概略構成されている。ここで、ＦＩＦＯメモリとは、先に入力されたデータから順番に出力する機能（いわゆるファースト・イン・ファースト・アウト機能）を備えたメモリを意味している。
【００４４】
第１ＦＩＦＯメモリＭ０１は、第１ＦＩＦＯメモリＭ０１の出力側が、右側に位置するプロセッシングエレメントＰＥ０２，ＰＥ０４の右側部の外部入力端子ＩＮ０１に接続され、さらに入力側が、左側に位置するプロセッシングエレメントＰＥ０１，ＰＥ０３の左側部の外部出力端子ＯＵＴ０１に接続されている。このため、左右に配置される２つのプロセッシングエレメント（ＰＥ０１とＰＥ０２，ＰＥ０３とＰＥ０４）は、第１ＦＩＦＯメモリＭ０１を介して、トーラス状に接続されることになる。
【００４５】
第１ＦＩＦＯメモリＭ０１は、前側のプロセッシングエレメント（ＰＥ０１およびＰＥ０２）に接続される第１ＦＩＦＯメモリ部Ｍ０１＿Ａと、後側のプロセッシングエレメント（ＰＥ０３およびＰＥ０４）に接続される第１ＦＩＦＯメモリ部Ｍ０１＿Ｂとによって構成されている。
【００４６】
第１ＦＩＦＯメモリ部Ｍ０１＿Ａおよび第１ＦＩＦＯメモリ部Ｍ０１＿Ｂのそれぞれは、２行２列の行列の列要素を２行列分だけ記録可能なＡ１メモリ部（ＦＩＦＯメモリ部）１２と同行列の列要素を４行列分だけ記録可能なＡ２メモリ部（ＦＩＦＯメモリ部）１３と、２組のマルチプレクサ（入力側選択手段，出力側選択手段）１４，１５とにより概略構成されている。Ａ１メモリ部１２とＡ２メモリ部１３とは、並列に設けられており、各メモリ部１２，１３の入力側にマルチプレクサ（入力側選択手段）１５が設けられ、出力側にマルチプレクサ（出力側選択手段）１４が設けられている。
【００４７】
マルチプレクサ１５は、第１ＦＩＦＯメモリＭ０１の入力側より取得したデータをＡ１メモリ部１２に記録させるか、または、Ａ２メモリ部１３に記録させるかを選択する機能を有している。また、マルチプレクサ１４は、Ａ１メモリ部１２に記録されるデータとＡ２メモリ部１３に記録されるデータとを選択していずれか一方のデータをプロセッシングエレメントＰＥ０２またはプロセッシングエレメントＰＥ０４の外部入力端子ＩＮ０１へ出力する機能を有している。なお、Ａ１メモリ部１２およびＡ２メモリ部１３は、上述したファースト・イン・ファースト・アウト機能を備えたメモリである。
【００４８】
このように、Ａ１メモリ部１２とＡ２メモリ部１３とを並列に設けて、マルチプレクサ１４，１５によりデータの入出力を制御することにより、重複した入力データをプロセッシングエレメントＰＥ０１〜ＰＥ０４に対して出力する必要がある場合であっても、Ａ１メモリ部１２とＡ２メモリ部１３とを使い分けることによって重複した入力データを第１ＦＩＦＯメモリＭ０１に記録させる必要が無くなる。
【００４９】
例えば、入力データ「ａ０」，「ａ１」，「ａ０」，「ａ１」，「ａ２」，「ａ３」，「ａ２」，「ａ３」を、この順番でプロセッシングエレメントＰＥ０２に入力させる場合、図３（ａ）に示すように、第１ＦＩＦＯメモリ部が１つのメモリ部１６のみから構成されていると、全ての入力データを重複させた状態で順番にメモリ部１６に記録（「ａ０」，「ａ１」，「ａ０」，「ａ１」，「ａ２」，「ａ３」，「ａ２」，「ａ３」の順番で８個分全ての入力データを記録）させる必要がある。一方で、図３（ｂ）に示すように、第１ＦＩＦＯメモリ部Ｍ０１＿Ａに、並列に接続されたＡ１メモリ部１２とＡ２メモリ部１３が設けられている場合には、Ａ１メモリ部１２を空にし、Ａ２メモリ部１３に「ａ０」，「ａ１」，「ａ２」，「ａ３」を入れておくことによって、入力データを、「ａ０」，「ａ１」，「ａ０」，「ａ１」，「ａ２」，「ａ３」，「ａ２」，「ａ３」の順番にプロセッシングエレメントＰＥ０２に入力させる（出力する）ことができる。
【００５０】
具体的には、最初に、Ａ２メモリ部１３に記録されるデータが優先的にプロセッシングエレメントＰＥ０２へ出力されるようにマルチプレクサ１４を制御し、Ａ２メモリ部１３に記録される２つのデータ「ａ０」，「ａ１」を、順番に（クロック毎に）プロセッシングエレメントＰＥ０２に出力する。プロセッシングエレメントＰＥ０２およびプロセッシングエレメントＰＥ０１は、上述したように第１ＦＩＦＯメモリ部Ｍ０１＿Ａを介してトーラス状に接続されているので、プロセッシングエレメントＰＥ０２，ＰＥ０１で利用された入力データ「ａ０」，「ａ１」は、プロセッシングエレメントＰＥ０１の外部出力端子ＯＵＴ０１を介して再び第１ＦＩＦＯメモリ部Ｍ０１＿Ａの入力側へと戻ってくる。次に、マルチプレクサ１５を操作することによって、図４（ａ）に示すように、戻ってきた入力データ「ａ０」，「ａ１」を、Ａ２メモリ部１３ではなく、Ａ１メモリ部１２に記録させる。このとき、Ａ２メモリ部１３は、入力データａ０，ａ１が出力された後であるため、入力データａ２およびａ３だけが記録された状態となる。
【００５１】
その後、マルチプレクサ１４を操作して、Ａ１メモリ部１２に記録された入力データ「ａ０」，「ａ１」を、順番に（クロック毎に）プロセッシングエレメントＰＥ０２へ出力する。すると、再度プロセッシングエレメントＰＥ０１の外部出力端子ＯＵＴ０１を介して第１ＦＩＦＯメモリ部Ｍ０１＿Ａの入力側へ入力データ「ａ０」，「ａ１」が戻ってくるので、戻ってきた入力データ「ａ０」，「ａ１」を、今度はマルチプレクサ１５を操作することによって、図４（ｂ）に示すように、Ａ２メモリ部１３に記録させる。このようにマルチプレクサ１５を操作することによって、入力データ「ａ０」，「ａ１」がＡ２メモリ部１３に記録されるため、Ａ１メモリ部１２が空となる。
【００５２】
続いて、マルチプレクサ１４を操作することによって、Ａ２メモリ部１３に記録される入力データ「ａ２」，「ａ３」を、順番に（クロック毎に）プロセッシングエレメントＰＥ０２に出力する。すると、上述した入力データ「ａ０」，「ａ１」と同様に、入力データ「ａ２」，「ａ３」が、プロセッシングエレメントＰＥ０１の外部出力端子ＯＵＴ０１を介して再び第１ＦＩＦＯメモリ部Ｍ０１＿Ａの入力側へと戻ってくる。このようにして戻ってきた入力データ「ａ２」，「ａ３」を、マルチプレクサ１５を操作することによって、図５（ａ）に示すように、Ａ２メモリ部１３ではなく、Ａ１メモリ部１２に記録させる。
【００５３】
Ａ１メモリ部１２には、図５（ａ）に示すように、入力データ「ａ２」，「ａ３」しか記録されていないため、マルチプレクサ１４を制御することによって、入力データ「ａ２」，「ａ３」を続けてプロセッシングエレメントＰＥ０２に出力することが可能となる。従って、Ａ１メモリ部１２に記録された入力データ「ａ２」，「ａ３」を、引き続きプロセッシングエレメントＰＥ０２に出力することによって、入力データを「ａ０」，「ａ１」，「ａ０」，「ａ１」，「ａ２」，「ａ３」，「ａ２」，「ａ３」の順番にプロセッシングエレメントＰＥ０２へ出力することが可能となる。そして、プロセッシングエレメントＰＥ０１の外部出力端子ＯＵＴ０１を介して戻ってきた入力データ「ａ２」，「ａ３」を、マルチプレクサ１５を操作することによって、図５（ｂ）に示すようにＡ２メモリ部１３に記録させることによって、図３（ｂ）に示す初期状態と同様にして、入力データ「ａ０」，「ａ１」，「ａ２」，「ａ３」をＡ２メモリ部１３に記録させることが可能となる。
【００５４】
また、図３（ａ）に示すＦＩＦＯメモリ部の構成では、計８個分の入力データを一度に記録することが可能な記録容量が必要であったが、図３（ｂ）に示す第１ＦＩＦＯメモリ部Ｍ０１＿Ａの構成では、Ａ１メモリ部１２に対して２個分の入力データを記録可能な記録容量を確保し、Ａ２メモリ部１３に対して４個分の入力データを記録可能な記録容量を確保すれば足りる。このため、本実施の形態に係る第１ＦＩＦＯメモリ部Ｍ０１＿Ａ，Ｍ０１＿Ｂの構成によれば、図３（ａ）に示す構成よりも、メモリ部の記録容量を低減させることが可能となる。
【００５５】
第２ＦＩＦＯメモリＭ０２は、第２ＦＩＦＯメモリ部Ｍ０２＿Ａと、第２ＦＩＦＯメモリ部Ｍ０２＿Ｂとによって構成されており、また、第３ＦＩＦＯメモリＭ０３は、第３ＦＩＦＯメモリ部Ｍ０３＿Ａと、第３ＦＩＦＯメモリ部Ｍ０３＿Ｂとによって構成されている。
【００５６】
第２ＦＩＦＯメモリ部Ｍ０２＿Ａは、第２ＦＩＦＯメモリ部Ｍ０２＿Ａの出力側が、左後側に位置するプロセッシングエレメントＰＥ０３の後側部の一方の外部入力端子ＩＮ０２に接続され、さらに入力側が、左前側に位置するプロセッシングエレメントＰＥ０１の前側部の一方の外部出力端子ＯＵＴ０２に接続されている。このため、左側前後に配置される２つのプロセッシングエレメントＰＥ０１，ＰＥ０３は、第２ＦＩＦＯメモリ部Ｍ０２＿Ａを介して、トーラス状に接続されることになる。
【００５７】
また、第２ＦＩＦＯメモリ部Ｍ０２＿Ｂは、第２ＦＩＦＯメモリ部Ｍ０２＿Ｂの出力側が、右後側に位置するプロセッシングエレメントＰＥ０４の後側部の一方の外部入力端子ＩＮ０２に接続され、さらに入力側が、右前側に位置するプロセッシングエレメントＰＥ０２の前側部の一方の外部出力端子ＯＵＴ０２に接続されている。このため、右側前後に配置される２つのプロセッシングエレメントＰＥ０２，ＰＥ０４は、第２ＦＩＦＯメモリ部Ｍ０２＿Ｂを介して、トーラス状に接続されることになる。
【００５８】
さらに、第３ＦＩＦＯメモリ部Ｍ０３＿Ａは、第３ＦＩＦＯメモリ部Ｍ０３＿Ａの出力側が、左後側に位置するプロセッシングエレメントＰＥ０３の後側部の他方の外部入力端子ＩＮ０３に接続され、さらに入力側が、左前側に位置するプロセッシングエレメントＰＥ０１の前側部の他方の外部出力端子ＯＵＴ０３に接続されている。このため、左側前後に配置される２つのプロセッシングエレメントＰＥ０１，ＰＥ０３は、第３ＦＩＦＯメモリ部Ｍ０３＿Ａを介して、トーラス状に接続されることになる。
【００５９】
また、第３ＦＩＦＯメモリ部Ｍ０３＿Ｂは、第３ＦＩＦＯメモリ部Ｍ０３＿Ｂの出力側が、右後側に位置するプロセッシングエレメントＰＥ０４の後側部の他方の外部入力端子ＩＮ０３に接続され、さらに入力側が、右前側に位置するプロセッシングエレメントＰＥ０２の前側部の他方の外部出力端子ＯＵＴ０３に接続されている。このため、右側前後に配置される２つのプロセッシングエレメントＰＥ０２，ＰＥ０４は、第３ＦＩＦＯメモリ部Ｍ０３＿Ｂを介して、トーラス状に接続されることになる。
【００６０】
第２ＦＩＦＯメモリ部Ｍ０２＿Ａ、第２ＦＩＦＯメモリ部Ｍ０２＿Ｂ、第３ＦＩＦＯメモリ部Ｍ０３＿Ａおよび第３ＦＩＦＯメモリ部Ｍ０３＿Ｂは、それぞれ４行列分のデータを記録することが可能なメモリ部により構成されている。なお、第２ＦＩＦＯメモリ部Ｍ０２＿Ａ、第２ＦＩＦＯメモリ部Ｍ０２＿Ｂ、第３ＦＩＦＯメモリ部Ｍ０３＿Ａおよび第３ＦＩＦＯメモリ部Ｍ０３＿Ｂは、先に入力されたデータから順番に出力する機能（いわゆるファースト・イン・ファースト・アウト機能）を備えたメモリである。
【００６１】
また、本実施の形態に係るアレイプロセッサ１では、図１に示すｘ点には図６（ａ）に示すクロスバススイッチＳ０１が設けられ、図１に示すｙ点には図６（ｂ）に示すクロスバススイッチＳ０２が設けられている。クロスバススイッチＳ０１，Ｓ０２は、２つの入力端子ｉ１，ｉ２と２つの出力端子ｏ１,ｏ２とを備えたスイッチであり、クロスバススイッチＳ０１，Ｓ０２において各入出力端子の接続状態を切替制御することによって（１）入力端子ｉ１より入力されたデータを出力端子ｏ１に出力する場合、（２）入力端子ｉ１より入力されたデータを出力端子ｏ２に出力する場合、（３）入力端子ｉ２より入力されたデータを出力端子ｏ１に出力する場合、（４）入力端子ｉ２より入力されたデータを出力端子ｏ２に出力する場合の４通りの入出力切替を行うことが可能になっている。
【００６２】
さらに、クロスバススイッチＳ０１，Ｓ０２は、切替状態に拘わらず、出力端子ｏ１または出力端子ｏ２に対して、定数０，定数１および最大値（定数）を出力することが可能となっている。このように、出力端子ｏ１または出力端子ｏ２に対して、定数０，定数１および最大値（定数）を出力することによって、ＦＩＦＯメモリＭ０１〜Ｍ０３およびプロセッシングエレメントＰＥ０１〜ＰＥ０４に対する初期値（固定値）の設定を行うことが可能となる。なお、最大値とは、具体的にプロセッシングエレメントＰＥ０１〜ＰＥ０４において演算可能な入力データの最大値を示している。
【００６３】
図７は、クロスバススイッチＳ０１，Ｓ０２における出力端子ｏ１および出力端子ｏ２の出力信号の組合せを示した表である。このように、出力端子ｏ１および出力端子ｏ２では、それぞれ入力端子ｉ１のデータ，入力端子ｉ２のデータ，定数０，定数１，最大値（図７においては便宜上∞と表記）の５種類の信号を出力することが可能となっている。
【００６４】
図１のｘ点に設置されるクロスバススイッチＳ０１は、図６（ａ）に示すように、入力端子ｉ１がアレイプロセッサ１の外部に接続され、入力端子ｉ２がＦＩＦＯメモリＭ０１〜Ｍ０３の出力側に接続され、出力端子ｏ１がアレイプロセッサ１の外部に接続され、出力端子ｏ２がＦＩＦＯメモリＭ０１〜Ｍ０３の出力側に位置するプロセッシングエレメントＰＥ０１〜ＰＥ０４の外部入力端子ＩＮ０１，ＩＮ０２，ＩＮ０３に接続される。このようにしてクロスバススイッチＳ０１が接続されることによって、外部より入力されたデータをプロセッシングエレメントＰＥ０１〜ＰＥ０４に入力データとして入力させることができ、また、ＦＩＦＯメモリＭ０１〜Ｍ０３に記録されたデータを外部に出力させることが可能となる。
【００６５】
また、図１のｙ点に設置されるクロスバススイッチＳ０２は、図６（ｂ）に示すように、入力端子ｉ１がアレイプロセッサ１の外部に接続され、入力端子ｉ２がＦＩＦＯメモリＭ０１〜Ｍ０３の入力側に位置するプロセッシングエレメントＰＥ０１〜ＰＥ０４の外部出力端子ＯＵＴ０１，ＯＵＴ０２，ＯＵＴ０３に接続され、出力端子ｏ１がアレイプロセッサ１の外部に接続され、出力端子ｏ２がＦＩＦＯメモリＭ０１〜Ｍ０３の入力側に接続される。このようにしてクロスバススイッチＳ０２が接続されることによって、外部より入力されたデータをＦＩＦＯメモリＭ０１〜Ｍ０３に記録させることができ、また、プロセッシングエレメントＰＥ０１〜ＰＥ０４より出力されたデータを、ＦＩＦＯメモリＭ０１〜Ｍ０３に記録させることなく外部に出力することが可能となる。
【００６６】
次に、上述したようにして構成されるアレイプロセッサ１を用いて行列演算を行う場合について説明を行う。本実施の形態では、図８（ａ）に示すような４行４列からなる行列Ａ,行列Ｂ,行列Ｃを用いて、行列Ａ×行列Ｂ＋行列Ｃの演算を行う場合を、一例として示して説明を行う。
【００６７】
本実施の形態に係るアレイプロセッサ１は、図１に示すように、前後左右に２個ずつ、合計４個のプロセッシングエレメントＰＥ０１〜ＰＥ０４を用いて演算処理を行う構成となっている。従って、図８（ａ）に示すように、４行４列により構成される行列の演算処理を行う場合、本実施の形態に係るアレイプロセッサ１では、図８（ｂ）に示すように、４行４列の行列を、２行２列の行列に分割して計算を行う。
【００６８】
図９は、アレイプロセッサ１を用いて演算処理を行う場合に、アレイプロセッサ１のプロセッシングエレメントＰＥ０１〜ＰＥ０４に対して入力させる入力データ（行列要素）を模式的に示した図である。図８（ａ）に示す行列演算を行う場合には、右前側に位置するプロセッシングエレメントＰＥ０２のａレジスタ６に対して、図８（ｂ）に示す分割された行列Ａ１の上段要素、行列Ａ２の上段要素、行列Ａ３の上段要素および行列Ａ４の上段要素を、Ａ１−Ａ２―Ａ１−Ａ２―Ａ３−Ａ４―Ａ３−Ａ４の順番で入力する必要がある。一方で、右後側に位置するプロセッシングエレメントＰＥ０４のａレジスタ６に対しては、行列Ａ１の下段要素、行列Ａ２の下段要素、行列Ａ３の下段要素および行列Ａ４の下段要素を、Ａ１−Ａ２―Ａ１−Ａ２―Ａ３−Ａ４―Ａ３−Ａ４の順番で入力する必要がある。
【００６９】
右前側に位置するプロセッシングエレメントＰＥ０２と右後側に位置するプロセッシングエレメントＰＥ０４とのａレジスタ６に対して、行列Ａ１と行列Ａ２と行列Ａ３と行列Ａ４の値（行列要素）を２回ずつ入力する理由は、行列演算を行う場合に行要素と列要素とをそれぞれ積算する必要が生ずるが、本実施の形態に係るアレイプロセッサ１では、上述したように４行４列の行列を２行２列の行列に分割して演算を行う必要があるため、行列の分割に伴って行列Ａ１と行列Ａ２と行列Ａ３と行列Ａ４の値（行列要素）を２回ずつ入力する必要が生じるからである。
【００７０】
しかしながら、本実施の形態に係るアレイプロセッサ１では、上述したように第１ＦＩＦＯメモリＭ０１が、第１ＦＩＦＯメモリ部Ｍ０１＿Ａと第１ＦＩＦＯメモリ部Ｍ０１＿Ｂとを有し、各第１ＦＩＦＯメモリ部Ｍ０１＿Ａ，Ｍ０１＿Ｂが、Ａ１メモリ部１２とＡ２メモリ部１３を有している。このため、既に説明したように、行列Ａ１，行列Ａ２，行列Ａ３，行列Ａ４との値（行列要素）をＡ２メモリ部１３に記録させ、Ａ１メモリ部１２を空にしておくことによって、第１ＦＩＦＯメモリＭ０１に記録させる行列Ａ１と行列Ａ２と行列Ａ３と行列Ａ４の値を重複させる必要が無くなる。
【００７１】
具体的には、右前側に位置するプロセッシングエレメントＰＥ０２に対して、「１」，「５」，「９」，「１３」，「１」，「５」，「９」，「１３」，「３」，「７」，「１１」，「１５」，「３」，「７」，「１１」，「１５」の順番で入力データを入力する必要があるが、この１６個分の入力データをそのまま、第１ＦＩＦＯメモリ部Ｍ０１＿Ａで記録するのではなく、図１０に示すように、第１ＦＩＦＯメモリ部Ｍ０１＿ＡのＡ１メモリ部１２を空にし、Ａ２メモリ部１３に対して、「１」，「５」，「９」，「１３」，「３」，「７」，「１１」，「１５」を記録する。このようにＡ２メモリ部１３に対して行列Ａ１と行列Ａ２と行列Ａ３と行列Ａ４の上段要素を１組ずつだけ記録し、Ａ１メモリ部１２を空にすることによって、第１ＦＩＦＯメモリ部Ｍ０１＿Ａに必要とされるメモリの記録容量を低減させることができる。
【００７２】
本実施の形態に係るアレイプロセッサ１では、後述する第２ＦＩＦＯメモリ部Ｍ０２＿Ａ，Ｍ０２＿Ｂおよび第３ＦＩＦＯメモリ部Ｍ０３＿Ａ，Ｍ０３＿Ｂにおいて確保すべき入力データのデータ量と同一の記録容量をＡ２メモリ部１３に確保し、分割した行列（行列Ａ，行列Ｂ，行列Ｃ）の行数または列数に応じた入力データのデータ量と同一記録容量をＡ１メモリ部１２において確保すればよい。本実施の形態に係るアレイプロセッサ１では、Ａ１メモリ部１２として２行列分（４個分の行列要素）の入力データを記録することが可能な記録容量を確保すればよく、Ａ２メモリ部１３として４行列分（８個分の行列要素）の入力データを記録することが可能な記録容量を確保すれば足りる。
【００７３】
一方、図８（ａ）に示す行列演算を行う場合には、左後側に位置するプロセッシングエレメントＰＥ０３のｂレジスタ７に対して、図９に示すように、図８（ｂ）に示す分割された行列Ｂ１の左列要素、行列Ｂ２の左列要素、行列Ｂ３の左列要素および行列Ｂ４の左列要素を、Ｂ１−Ｂ３―Ｂ２−Ｂ４の順番で入力する必要がある。一方で、右後側に位置するプロセッシングエレメントＰＥ０４のｂレジスタ７に対しては、図９に示すように、行列Ｂ１の右列要素、行列Ｂ２の右列要素、行列Ｂ３の右列要素および行列Ｂ４の右列要素を、Ｂ１−Ｂ３―Ｂ２−Ｂ４の順番で入力する必要がある。
【００７４】
さらに、左後側に位置するプロセッシングエレメントＰＥ０３の入力データ記録手段としてのレジスタ（ｃ０レジスタ８またはｃ１レジスタ９）に対して、図９に示すように、図８（ｂ）に示す分割された行列Ｃ１の左列要素、行列Ｃ２の左列要素、行列Ｃ３の左列要素および行列Ｃ４の左列要素を、Ｃ１−Ｃ２―Ｃ３−Ｃ４の順番で入力する必要がある。一方で、右後側に位置するプロセッシングエレメントＰＥ０４の入力データ記録手段としてのレジスタ（ｃ０レジスタ８またはｃ１レジスタ９）に対しては、図９に示すように、行列Ｃ１の右列要素、行列Ｃ２の右列要素、行列Ｃ３の右列要素および行列Ｃ４の右列要素を、Ｃ１−Ｃ２―Ｃ３−Ｃ４の順番で入力する必要がある。
【００７５】
このため、第２ＦＩＦＯメモリＭ０２の第２ＦＩＦＯメモリ部Ｍ０２＿Ａには、図１０に示すように、行列Ｂ１の左列要素「２１」，「２２」、行列Ｂ２の左列要素「２９」，「３０」、行列Ｂ３の左列要素「２３」，「２４」および行列Ｂ４の左列要素「３１」，「３２」が、Ｂ１−Ｂ３―Ｂ２−Ｂ４の順番で入力され、第２ＦＩＦＯメモリＭ０２の第２ＦＩＦＯメモリ部Ｍ０２＿Ｂには、行列Ｂ１の右列要素「２５」，「２６」、行列Ｂ２の右列要素「３３」，「３４」、行列Ｂ３の右列要素「２７」，「２８」および行列Ｂ４の右列要素「３５」，「３６」が、Ｂ１−Ｂ３―Ｂ２−Ｂ４の順番で入力される。
【００７６】
一方で、第３ＦＩＦＯメモリＭ０３の第３ＦＩＦＯメモリ部Ｍ０３＿Ａには、図１０に示すように、行列Ｃ１の左列要素「２００」，「２００」、行列Ｃ２の左列要素「２００」，「２００」、行列Ｃ３の左列要素「２００」，「２００」および行列Ｃ４の左列要素「２００」，「２００」が、Ｃ１−Ｃ２―Ｃ３−Ｃ４の順番で入力され、第３ＦＩＦＯメモリＭ０３の第３ＦＩＦＯメモリ部Ｍ０３＿Ｂには、列Ｃ１の右列要素「２００」，「２００」、行列Ｃ２の右列要素「２００」，「２００」、行列Ｃ３の右列要素「２００」，「２００」および行列Ｃ４の右列要素「２００」，「２００」が、Ｃ１−Ｃ２―Ｃ３−Ｃ４の順番で入力される。
【００７７】
次に、図８（ａ）に示した行列式の行列演算過程を、ａレジスタ６、ｂレジスタ７、ｃ０レジスタ８、ｃ１レジスタ９に記録されるデータを示しつつ説明する。なお、初めの処理では、ｃ０レジスタ８が演算結果記録手段として機能し、ｃ１レジスタ９が入力データ記録手段として機能する。
【００７８】
図１１は、ａレジスタ６に記録される行列Ａの要素（入力データａ）と、ｂレジスタ７に記録される行列Ｂの要素（入力データｂ）との入力および演算処理と、行列Ｃの要素（入力データｃ）をｃ０レジスタ８またはｃ１レジスタ９に入力（記録）させる処理と、演算結果を隣接するプロセッシングエレメントＰＥ０１〜ＰＥ０４に対して出力する処理とを時間軸を用いて示したタイミングチャートである。
【００７９】
本実施の形態に係るアレイプロセッサ１は、各プロセッシングエレメントＰＥ０１〜ＰＥ０４が同期して、一定間隔（一定クロック）毎に、演算処理とデータの転送（データの出力および入力）処理とを行う。
【００８０】
なお、図１２〜図２０は、アレイプロセッサ１で演算処理を行う過程において各プロセッシングエレメントＰＥ０１〜ＰＥ０４のａレジスタ６，ｂレジスタ７，ｃ０レジスタ８およびｃ１レジスタ９に記録させるデータを示している、具体的には、図１２は、図１１に示すα１のタイミングにおける各レジスタ６，７，８，９の記録データを示し、図１３は、図１１に示すα２のタイミングにおける各レジスタ６，７，８，９の記録データを示し、図１４は、図１１に示すα３のタイミングにおける各レジスタ６，７，８，９の記録データを示し、図１５は、図１１に示すα４のタイミングにおける各レジスタ６，７，８，９の記録データを示し、図１６は、図１１に示すα５のタイミングにおける各レジスタ６，７，８，９の記録データを示し、図１７は、図１１に示すα６のタイミングにおける各レジスタ６，７，８，９の記録データを示し、図１８は、図１１に示すα７のタイミングにおける各レジスタ６，７，８，９の記録データを示し、図１９は、図１１に示すα８のタイミングにおける各レジスタ６，７，８，９の記録データを示し、図２０は、図１１に示すα９のタイミングにおける各レジスタ６，７，８，９の記録データを示している。
【００８１】
まずアレイプロセッサ１では、
【数１】
2009163491.tif 000003
に示す入力データを全てのプロセッシングエレメントＰＥ０１〜ＰＥ０４の演算結果記録領域としてのレジスタ（ｃ０レジスタ８）に入力する。
【００８２】
このときには、まず１クロック目に、右後側よび左後側に位置するプロセッシングエレメントＰＥ０３，ＰＥ０４に対して、行列Ｃ１の上段要素である（２００，２００）を入力し、２クロック目に、さらに右後側よび左後側に位置するプロセッシングエレメントＰＥ０３，ＰＥ０４に対して、行列Ｃ１の下段要素である（２００，２００）を入力する。右後側および左後側に位置するプロセッシングエレメントＰＥ０３，ＰＥ０４では、２クロック目に行列Ｃ１の下段要素である（２００，２００）が入力されると同時に、各プロセッシングエレメントＰＥ０３，ＰＥ０４のｃ０レジスタ８に記録されていた行列Ｃ１の上段要素（２００，２００）を、左右前側に位置するプロセッシングエレメントＰＥ０１，ＰＥ０２に転送する。このため、２クロック目（図１１のα１のタイミング）では、図１２に示すように、左前側に位置するプロセッシングエレメントＰＥ０１のｃ０レジスタ８に、行列Ｃ１の左上要素である「２００」が記録され、右前側に位置するプロセッシングエレメントＰＥ０２のｃ０レジスタ８に、行列Ｃ１の右上要素である「２００」が記録され、左後側に位置するプロセッシングエレメントＰＥ０３のｃ０レジスタ８に、行列Ｃ１の左下要素である「２００」が記録され、右側に位置するプロセッシングエレメントＰＥ０４のｃ０レジスタ８に、行列Ｃ１の右下要素である「２００」が記録される。
【００８３】
続く３クロック目（図１１のα２のタイミング）では、図１３に示すように、
【数２】
2009163491.tif 000004
に示す行列要素の左下側の要素「２」を、右後側に位置するプロセッシングエレメントＰＥ０４のａレジスタ６に入力し、
【数３】
2009163491.tif 000005
に示す行列要素の右上側の要素「２５」を、右後側に位置するプロセッシングエレメントＰＥ０４のｂレジスタ７に入力する。
【００８４】
また、同時に、左後側および右後側に位置するプロセッシングエレメントＰＥ０３，ＰＥ０４の入力データ記録領域としてのレジスタ（ｃ１レジスタ９）に対して、
【数４】
2009163491.tif 000006
に示す行列要素の上段要素「２００」，「２００」をそれぞれ入力する。
【００８５】
なお、本実施の形態に係るプロセッシングエレメントＰＥ０１〜ＰＥ０４は行列演算を行うことを目的とするため、３入力演算器５は、ａレジスタ６に入力された入力データａと、ｂレジスタ７に入力された入力データｂと、ｃ０レジスタ８に入力された入力データｃとに基づいてａ×ｂ＋ｃの演算を行い、演算結果をｃ０レジスタ８に記録させる。このため、図１３に示すように、右後側に位置するプロセッシングエレメントＰＥ０４のｃ０レジスタ８には、ａレジスタ６に入力された入力データの値である「２」と、ｂレジスタ７に入力された入力データの値である「２５」との積算値（２×２５＝５０）と、この積算結果が行われるときにｃ０レジスタ８に記録されていた初期値２００との加算値（５０＋２００＝２５０）の値が記録される。
【００８６】
次の４クロック目（図１１のα３のタイミング）では、図１４に示すように、右後側に位置するプロセッシングエレメントＰＥ０４のａレジスタ６に記録されていた入力データ「２」が左後側に位置するプロセッシングエレメントＰＥ０３のａレジスタ６に転送され、また、右後側に位置するプロセッシングエレメントＰＥ０４のｂレジスタ７に記録されていた入力データ「２５」が右前側に位置するプロセッシングエレメントＰＥ０２のｂレジスタ７に転送される。また、右前側に位置するプロセッシングエレメントＰＥ０２のａレジスタ６に、式２に示した行列Ａ１の左上要素「１」が入力され、右後側に位置するプロセッシングエレメントＰＥ０４のａレジスタ６に、式２に示した行列Ａ１の右下要素「６」が入力される。
【００８７】
さらに、左後側に位置するプロセッシングエレメントＰＥ０３のｂレジスタ７に、式３に示した行列Ｂ１の左上要素「２１」が入力され、右後側に位置するプロセッシングエレメントＰＥ０４のｂレジスタ７に、式３に示した行列Ｂ１の右下要素「２６」が入力される。また、各プロセッシングエレメントのｃ０レジスタ８には、ａレジスタ６の値×ｂレジスタ７の値＋ｃ０レジスタ８の値が記録される。
【００８８】
次の５クロック目（図１１のα４のタイミング）では、図１５に示すように、右側に位置するプロセッシングエレメントＰＥ０２，ＰＥ０４のａレジスタ６の値が、左側に位置するプロセッシングエレメントＰＥ０１，ＰＥ０３のａレジスタ６に転送され、後側に位置するプロセッシングエレメントＰＥ０３，ＰＥ０４のｂレジスタ７の値が、前側に位置するプロセッシングエレメントＰＥ０１，ＰＥ０２のｂレジスタ７に転送される。
【００８９】
また、右前側に位置するプロセッシングエレメントＰＥ０２のａレジスタ６に、式２に示した行列Ａ１の右上要素「５」が入力され、左後側に位置するプロセッシングエレメントＰＥ０３のｂレジスタ７に、式３に示した行列Ｂ１の左下要素「２２」が入力される。
【００９０】
さらに、右後側に位置するプロセッシングエレメントＰＥ０４のａレジスタ６に対して、
【数５】
2009163491.tif 000007
に示す行列Ａ２の左下側の行列要素「１０」が入力され、同プロセッシングエレメントＰＥ０４のｂレジスタ７に対して、
【数６】
2009163491.tif 000008
に示す行列Ｂ３の右上側の行列要素「２７」が入力される。
【００９１】
そして、各プロセッシングエレメントＰＥ０１〜ＰＥ０４のｃ０レジスタ８には、ａレジスタ６の値×ｂレジスタ７の値＋ｃ０レジスタ８の値が記録される。
【００９２】
次の６クロック目（図１１のα５のタイミング）では、図１６に示すように、右側に位置するプロセッシングエレメントＰＥ０２，ＰＥ０４のａレジスタ６の値が、左側に位置するプロセッシングエレメントＰＥ０１，ＰＥ０３のａレジスタ６に転送され、後側に位置するプロセッシングエレメントＰＥ０３，ＰＥ０４のｂレジスタ７の値が、前側に位置するプロセッシングエレメントＰＥ０１，ＰＥ０２のｂレジスタ７に転送される。
【００９３】
また、右前側に位置するプロセッシングエレメントＰＥ０２のａレジスタ６に、式５に示した行列Ａ２の左上要素「９」が入力され、左後側に位置するプロセッシングエレメントＰＥ０３のｂレジスタ７に、式６に示した行列Ｂ３の左上要素「２３」が入力される。
【００９４】
さらに、右後側に位置するプロセッシングエレメントＰＥ０４のａレジスタ６に、式５に示した行列Ａ２の右下要素「１４」が入力され、同プロセッシングエレメントＰＥ０４のｂレジスタ７に、式６に示した行列Ｂ３の右下要素「２８」が入力される。
【００９５】
そして、各プロセッシングエレメントＰＥ０１〜ＰＥ０４のｃ０レジスタ８には、ａレジスタ６の値×ｂレジスタ７の値＋ｃ０レジスタ８の値が記録される。
【００９６】
次の７クロック目（図１１のα６のタイミング）では、図１７に示すように、右側に位置するプロセッシングエレメントＰＥ０２，ＰＥ０４のａレジスタ６の値が、左側に位置するプロセッシングエレメントＰＥ０１，ＰＥ０３のａレジスタ６に転送され、後側に位置するプロセッシングエレメントＰＥ０３，ＰＥ０４のｂレジスタ７の値が、前側に位置するプロセッシングエレメントＰＥ０１，ＰＥ０２のｂレジスタ７に転送される。
【００９７】
また、右前側に位置するプロセッシングエレメントＰＥ０２のａレジスタ６に、式５に示した行列Ａ２の右上要素「１３」が入力され、左後側に位置するプロセッシングエレメントＰＥ０３のｂレジスタ７に、式６に示した行列Ｂ３の左下要素「２４」が入力される。
【００９８】
また、右後側に位置するプロセッシングエレメントＰＥ０４のａレジスタ６には、クロスバススイッチＳ０１により定数０が入力され、また、同プロセッシングエレメントＰＥ０４のｂレジスタ７にも、クロスバススイッチＳ０１により定数０が入力される。なお、図１７では、定数０となるａレジスタ６およびｂレジスタ７を、便宜上空欄で表示している。
【００９９】
そして、各プロセッシングエレメントＰＥ０１〜ＰＥ０４のｃ０レジスタ８には、ａレジスタ６の値×ｂレジスタ７の値＋ｃ０レジスタ８の値が記録される。
【０１００】
次の８クロック目（図１１のα７のタイミング）では、図１８に示すように、右側に位置するプロセッシングエレメントＰＥ０２，ＰＥ０４のａレジスタ６の値が、左側に位置するプロセッシングエレメントＰＥ０１，ＰＥ０３のａレジスタ６に転送され、後側に位置するプロセッシングエレメントＰＥ０３，ＰＥ０４のｂレジスタ７の値が、前側に位置するプロセッシングエレメントＰＥ０１，ＰＥ０２のｂレジスタ７に転送される。
【０１０１】
また、右前側に位置するプロセッシングエレメントＰＥ０２のａレジスタ６と、右後側に位置するプロセッシングエレメントＰＥ０４のａレジスタ６には、クロスバススイッチＳ０１により定数０が入力され、左後側に位置するプロセッシングエレメントＰＥ０３のｂレジスタ７と、右後側に位置するプロセッシングエレメントＰＥ０４のｂレジスタ７にも、クロスバススイッチＳ０１により定数０が入力される。
【０１０２】
そして、各プロセッシングエレメントＰＥ０１〜ＰＥ０４のｃ０レジスタ８には、ａレジスタ６の値×ｂレジスタ７の値＋ｃ０レジスタ８の値が記録される。この処理により各プロセッシングエレメントＰＥ０１〜ＰＥ０４のｃ０レジスタ８に記録されるデータが、アレイプロセッサ１の行列演算により求められる解である行列の左上の４つの要素を示している。つまり、演算結果となる行列の左上部分における上段の要素は、左前側に位置するプロセッシングエレメントＰＥ０１のｃ０レジスタ８に記録される「８５０」と、右前側に位置するプロセッシングエレメントＰＥ０２のｃ０レジスタ８に記録される「９６２」となり、演算結果となる行列の左上部分における下段の要素は、左後側に位置するプロセッシングエレメントＰＥ０３のｃ０レジスタ８に記録される「９４０」と、右後側に位置するプロセッシングエレメントＰＥ０４のｃ０レジスタ８に記録される「１０６８」となる。
【０１０３】
次の９クロック目（図１１のα８のタイミング）では、図１９に示すように、右側に位置するプロセッシングエレメントＰＥ０２，ＰＥ０４のａレジスタ６の値「０」が、左側に位置するプロセッシングエレメントＰＥ０１，ＰＥ０３のａレジスタ６に転送され、後側に位置するプロセッシングエレメントＰＥ０３，ＰＥ０４のｂレジスタ７の値「０」が、前側に位置するプロセッシングエレメントＰＥ０１，ＰＥ０２のｂレジスタ７に転送される。つまり、左前側,右前側および左後側に位置するプロセッシングエレメントＰＥ０１，ＰＥ０２，ＰＥ０３のａレジスタ６およびｂレジスタ７の値が全て「０」となる。
【０１０４】
さらに、本クロックにおける処理では、各プロセッシングエレメントＰＥ０１〜ＰＥ０４のｃ０レジスタ８に記録されている値が、各プロセッシングエレメントＰＥ０１〜ＰＥ０４の前側部に設けられる外部出力端子ＯＵＴ０３を介して前側方向へと転送される。つまり、左前側および右前側に位置するプロセッシングエレメントＰＥ０１，ＰＥ０２のｃ０レジスタ８の値は、外部出力端子ＯＵＴ０３を介してクロスバススイッチＳ０２により外部へと出力される。また、左後側および右後側に位置するプロセッシングエレメントＰＥ０３，ＰＥ０４のｃ０レジスタ８の値は、左前側および右前側に位置するプロセッシングエレメントＰＥ０１，ＰＥ０２のｃ０レジスタ８に転送される。このようにｃ０レジスタ８の値が転送されることによって、演算結果となる行列の左上部分における上段の要素を、アレイプロセッサ１の外部へと退避させることが可能となる。
【０１０５】
さらに、本クロックにおける処理では、ｃ０レジスタ８とｃ１レジスタ９との役割が切り替えられ、ｃ１レジスタ９が演算結果記録手段として機能し、ｃ０レジスタ８が入力データ記録手段として機能することになる。このため、左後側および右後側に位置するプロセッシングエレメントＰＥ０３，ＰＥ０４のｃ０レジスタ８には、
【数７】
2009163491.tif 000009
に示す行列Ｃ３の上段の要素「２００」「２００」が記録される。
【０１０６】
また、右後側に位置するプロセッシングエレメントＰＥ０４のａレジスタ６には、
【数８】
2009163491.tif 000010
に示す行列Ａ１の左下要素「２」が入力され、同プロセッシングエレメントＰＥ０４のｂレジスタ７には、
【数９】
2009163491.tif 000011
に示す行列Ｂ２の右上要素「３３」が入力される。そして、ｃ１レジスタ９に対して、各プロセッシングエレメントＰＥ０１〜ＰＥ０４のａレジスタ６の値×ｂレジスタ７の値＋ｃ１レジスタ９の値が記録される。このため、図１９に示すように、右下側に位置するプロセッシングエレメントＰＥ０４のｃ１レジスタ９には、ａレジスタ６に入力された入力データの値である「２」と、ｂレジスタ７に入力された入力データの値である「３３」との積算値（２×３３＝６６）と、この積算結果が行われるときにｃ１レジスタ９に記録されていた初期値２００との加算値（６６＋２００＝２６６）の値が記録される。
【０１０７】
次の１０クロック目（図１１のα９のタイミング）では、図２０に示すように、右後側に位置するプロセッシングエレメントＰＥ０４のａレジスタ６に記録されていた入力データ「２」が左後側に位置するプロセッシングエレメントＰＥ０３のａレジスタ６に転送され、また、右後側に位置するプロセッシングエレメントＰＥ０４のｂレジスタ７に記録されていた入力データ「３３」が右前側に位置するプロセッシングエレメントＰＥ０２のｂレジスタ７に転送される。また、右前側に位置するプロセッシングエレメントＰＥ０２のａレジスタ６に、式８に示した行列Ａ１の左上要素「１」が入力され、右後側に位置するプロセッシングエレメントＰＥ０４のａレジスタ６に、式８に示した行列Ａ１の右下要素「６」が入力される。
【０１０８】
さらに、左後側に位置するプロセッシングエレメントＰＥ０３のｂレジスタ７に、式９に示した行列Ｂ２の左上要素「２９」が入力され、右後側に位置するプロセッシングエレメントＰＥ０４のｂレジスタ７に、式９に示した行列Ｂ２の右下要素「３４」が入力される。
【０１０９】
また、本クロックにおける処理では、各プロセッシングエレメントＰＥ０１〜ＰＥ０４のｃ０レジスタ８に記録されている値が、各プロセッシングエレメントＰＥ０１〜ＰＥ０４の前側に設けられる外部出力端子ＯＵＴ０３を介して前側方向へと転送される。つまり、左前側および右前側に位置するプロセッシングエレメントＰＥ０１，ＰＥ０２のｃ０レジスタの値は、外部出力端子ＯＵＴ０３を介してクロスバススイッチＳ０２により外部へと出力される。また、左後側および右後側に位置するプロセッシングエレメントＰＥ０３，ＰＥ０４のｃ０レジスタ８の値は、左前側および右前側に位置するプロセッシングエレメントＰＥ０１，ＰＥ０２のｃ０レジスタ８に転送される。このようにｃ０レジスタ８の値が転送されることによって、演算結果となる行列の左上部分における下段の要素を、アレイプロセッサ１の外部へと退避させることが可能となる。なお、左後側および右後側に位置するプロセッシングエレメントＰＥ０３，ＰＥ０４のｃ０レジスタ８には、式４に示す行列Ｃ１の下段の要素「２００」「２００」が記録される。
【０１１０】
そして、各プロセッシングエレメントＰＥ０１〜ＰＥ０４のｃ１レジスタ９には、ａレジスタ６の値×ｂレジスタ７の値＋ｃ１レジスタ９の値が記録される。
【０１１１】
アレイプロセッサ１では、上述した処理を、図１１に示すように順次繰り返し実行することによって、図８（ａ）に示した行列演算を行い、行列の全ての要素を算出する。
【０１１２】
以上説明したように、本実施の形態に係るアレイプロセッサ１によれば、プロセッシングエレメントＰＥ０１〜ＰＥ０４において演算処理を行うために用いる入力データを、プロセッシングエレメントＰＥ０１〜ＰＥ０４に入力させる順番でＦＩＦＯメモリＭ０１〜Ｍ０３に記録させることによって、データの入力制御処理を行うことができるため、従来のアレイプロセッサのように、外部に複雑な制御部を設けることなく、適切かつ容易にデータの入力処理を行うことが可能となる。
【０１１３】
また、第１ＦＩＦＯメモリ部Ｍ０１＿Ａ，Ｍ０１＿Ｂは、Ａ１メモリ部１２とＡ２メモリ部１３とが並列して設けられており、マルチプレクサ１４，１５により両メモリ部１２，１３の出入力制御を行う構成となっているので、プロセッシングエレメントＰＥ０２，ＰＥ０４に入力させるデータが重複する場合には、重複するデータを全ての第１ＦＩＦＯメモリＭ０１に記録させる必要が無くなる。このため、第１ＦＩＦＯメモリＭ０１における記録容量の低減を図ることが可能となり、ＦＩＦＯメモリＭ０１〜Ｍ０３のコストダウンを図ることが容易となる。
【０１１４】
特に、本実施の形態で示したように、アレイプロセッサ１で行列演算を行う場合には、その演算の特殊性から繰り返し同一の行列要素を積算する必要性が生ずる。このため、本実施の形態に示したように第１ＦＩＦＯメモリ部Ｍ０１＿Ａ，Ｍ０１＿ＢをＡ１メモリ部１２とＡ２メモリ部１３との並列配置構造とすることによって、より効果的にメモリ部の記録容量の低減を実現することが可能となる。
【０１１５】
また、ＦＩＦＯメモリＭ０１〜Ｍ０３は、アレイ状に接続されるプロセッシングエレメントＰＥ０１〜ＰＥ０４の外部に設けられてトーラス状に接続されているため、各プロセッシングエレメントＰＥ０１〜ＰＥ０４の内部に積極的にメモリ部を設ける必要がない。このため、プロセッシングエレメントＰＥ０１〜ＰＥ０４の機能を従来と同様に演算機能と演算結果の転送機能とに集約することができ、各プロセシングエレメントの大型化を抑制することができると共に、処理の効率化を実現することが可能となる。
【０１１６】
さらに、本実施の形態に係るアレイプロセッサ１には、プロセッシングエレメントＰＥ０１〜ＰＥ０４により演算された演算結果を外部に出力したり、ＦＩＦＯメモリＭ０１〜Ｍ０３に記録されるデータやプロセッシングエレメントＰＥ０１〜ＰＥ０４に入力されるデータなどの初期設定をしたりすることが可能なクロスバススイッチＳ０１，Ｓ０２が設けられているため、演算結果を確実にアレイプロセッサ１の外部に退避させることができ、また、必要に応じてプロセッシングエレメントＰＥ０１〜ＰＥ０４の各レジスタ６，７，８，９の値やＦＩＦＯメモリＭ０１〜Ｍ０３の初期化処理を容易に行うことが可能となる。
【０１１７】
以上、本発明に係るアレイプロセッサについて、図面を用いて詳細に説明を行ったが、本発明に係るアレイプロセッサは、上述した実施の形態に限定されるものではない。当業者であれば、特許請求の範囲に記載された範疇内において、各種の変更例または修正例に想到し得ることは明らかであり、それらについても当然に本発明の技術的範囲に属するものと了解される。
【０１１８】
例えば、本実施の形態に係るアレイプロセッサ１では、プロセッシングエレメントＰＥ０１〜ＰＥ０４を前後左右に２個ずつ二次元的に配置した構成について説明を行ったが、プロセッシングエレメントＰＥ０１〜ＰＥ０４の配置数は、実施の形態に示したように４個の場合に限定されるものではなく、それよりも少ない数量であっても、またより多い数量であってもよい。
【０１１９】
また、上述した本実施の形態に係るアレイプロセッサ１の構成、具体的には、４つのプロセッシングエレメントＰＥ０１〜ＰＥ０４と、３つのＦＩＦＯメモリＭ０１〜Ｍ０３とがトーラス状に接続されたアレイプロセッサの構造を１つの構成単位として、複数の構成単位を前後左右に二次元的に配置し、各構成単位におけるプロセッシングエレメントＰＥ０１〜ＰＥ０４の外部出力端子ＯＵＴ０１，ＯＵＴ０２，ＯＵＴ０３とＦＩＦＯメモリＭ０１〜Ｍ０３の入力側との接続を解除して、一の構成単位におけるプロセッシングエレメントＰＥ０１〜ＰＥ０４の外部出力端子ＯＵＴ０１，ＯＵＴ０２，ＯＵＴ０３と他の構成単位におけるＦＩＦＯメモリＭ０１〜Ｍ０３の入力側とを接続することによって、よりたくさんのプロセッシングエレメントによりアレイプロセッサを構成する構造とすることも可能である。
【０１２０】
図２１は、本実施の形態に係るアレイプロセッサを４個用いて２行２列に並べた状態を示している。各アレイプロセッサ２０，２１，２２，２３は、ＦＩＦＯメモリＭ０１〜Ｍ０３の入力側とプロセッシングエレメントＰＥ０１〜ＰＥ０４の外部出力端子ＯＵＴ０１〜ＯＵＴ０３との接続を解除し、隣接するアレイプロセッサ２０，２１，２２，２３のＦＩＦＯメモリＭ０１〜Ｍ０３の入力側と、隣接するアレイプロセッサ２０，２１，２２，２３の外部出力端子ＯＵＴ０１〜ＯＵＴ０３とを接続している。さらに、左端側に設けられるアレイプロセッサ２０，２２の外部出力端子ＯＵＴ０１を右端側に配置されるアレイプロセッサ２１，２３のＦＩＦＯメモリＭ０１の入力側に接続してトーラス構造を形成し、また、前端側に設けられるアレイプロセッサ２０，２１の外部出力端子ＯＵＴ０２，ＯＵＴ０３を後端側に配置されるアレイプロセッサ２２，２３のＦＩＦＯメモリＭ０２，Ｍ０３の入力側に接続してトーラス構造を形成している。
【０１２１】
このように前後方向、左右方向ともに２つのプロセッシングエレメント毎にＦＩＦＯメモリが挿入された形を構成する４行４列のアレイプロセッサを構築することができる。このようにして本実施の形態に示したアレイプロセッサ１を拡張させることにより、アレイプロセッサの大型化を容易に実現することができる。このため、より高度な演算処理を必要とする場合には、このようにアレイプロセッサを拡張させて適切な処理能力を備えたアレイプロセッサを提供することが可能となる。また、アレイプロセッサの拡張が容易であるため、処理内容に応じて容易かつ適切にアレイプロセッサを構築することができる。
【０１２２】
また、図２１に示したアレイプロセッサでは、２つのプロセッシングエレメント毎にＦＩＦＯメモリが挿入されているため、ＦＩＦＯメモリＭ０１〜Ｍ０３をプロセッシングエレメント間の速度調整用のバッファとして利用することも可能となる。アレイプロセッサが大きく拡張される場合には、全てのプロセッシングエレメントにおいて処理の同期を確保することが容易ではない傾向がある。このため、ＦＩＦＯメモリＭ０１〜Ｍ０３を、プロセッシングエレメント間の速度調整用のバッファとして利用することにより、アレイプロセッサが大型化された場合であっても、各プロセッシングエレメントの同期調整を容易に行うことが可能となる。
【０１２３】
さらに、本実施の形態に係るアレイプロセッサ１では、行列の演算処理を行う場合について説明を行ったが、本発明に係るアレイプロセッサは、演算処理として行列演算を行う場合のみに限定されるのではなく、他の演算処理を行うことも可能である。例えば、ａレジスタ６に記録されるデータａと、ｂレジスタ７に記録されるデータｂと、ｃ０レジスタ８またはｃ１レジスタ９に記録されるデータｃとを用いて、３入力演算器５において最大値比較処理（例えば、ｍａｘ（（ａ＋ｂ），ｃ）や。ｍａｘ（ｍｉｎ（ａ，ｂ），ｃ）等）や、最小値比較処理（例えば、ｍｉｎ（（ａ＋ｂ），ｃ）や、ｍｉｎ（ｍｉｎ（ａ，ｂ），ｃ）等）の演算処理を行うことも可能である。
【図面の簡単な説明】
【０１２４】
【図１】実施の形態に係るアレイプロセッサの基本構成を示した概略図である。
【図２】実施の形態に係るプロセッシングエレメントの内部構造を示した概略図である。
【図３】（ａ）は、第１ＦＩＦＯメモリ部が１つのメモリ部により構成される場合を示した図であり、（ｂ）は、第１ＦＩＦＯメモリ部が並列に設けられた２つのメモリ部により構成される場合を示した図である。
【図４】（ａ）および（ｂ）は、並列に設けられた２つのメモリ部を用いて、プロセッシングエレメントに重複した入力データを入力させる処理過程を示した第１の図である。
【図５】（ａ）および（ｂ）は、並列に設けられた２つのメモリ部を用いて、プロセッシングエレメントに重複した入力データを入力させる処理過程を示した第２の図である。
【図６】（ａ）は、図１に示すｘ点に設けられるクロスバススイッチを示した図であり、（ｂ）は図１に示すｙ点に設けられるクロスバススイッチを示した図である。
【図７】クロスバススイッチにおける出力端子ｏ１および出力端子ｏ２の出力信号の組合せを示した表である。
【図８】実施の形態に係るアレイプロセッサにおいて演算処理を行う行列式を示した図である。
【図９】実施の形態に係るアレイプロセッサを用いて演算処理を行う場合に、アレイプロセッサのプロセッシングエレメントに対して入力させる入力データを、行列を示して模式的に示した図である。
【図１０】実施の形態に係るアレイプロセッサを用いて演算処理を行う場合に、アレイプロセッサのプロセッシングエレメントに対して入力させる入力データを、行列の各要素を示して具体的に示した図である。
【図１１】実施の形態に係るプロセッシングエレメントが入力データａ，ｂに基づいて行う演算処理と、入力データｃをプロセッシングエレメントのレジスタに記録させる処理と、演算結果を隣接するプロセッシングエレメントに対して出力する処理との関係を示したタイミングチャートである。
【図１２】図１１に示すα１のタイミングにおいて、プロセッシングエレメントのａレジスタ，ｂレジスタ，ｃ０レジスタおよびｃ１レジスタに記録されるデータを示した図である。
【図１３】図１１に示すα２のタイミングにおいて、プロセッシングエレメントのａレジスタ，ｂレジスタ，ｃ０レジスタおよびｃ１レジスタに記録されるデータを示した図である。
【図１４】図１１に示すα３のタイミングにおいて、プロセッシングエレメントのａレジスタ，ｂレジスタ，ｃ０レジスタおよびｃ１レジスタに記録されるデータを示した図である。
【図１５】図１１に示すα４のタイミングにおいて、プロセッシングエレメントのａレジスタ，ｂレジスタ，ｃ０レジスタおよびｃ１レジスタに記録されるデータを示した図である。
【図１６】図１１に示すα５のタイミングにおいて、プロセッシングエレメントのａレジスタ，ｂレジスタ，ｃ０レジスタおよびｃ１レジスタに記録されるデータを示した図である。
【図１７】図１１に示すα６のタイミングにおいて、プロセッシングエレメントのａレジスタ，ｂレジスタ，ｃ０レジスタおよびｃ１レジスタに記録されるデータを示した図である。
【図１８】図１１に示すα７のタイミングにおいて、プロセッシングエレメントのａレジスタ，ｂレジスタ，ｃ０レジスタおよびｃ１レジスタに記録されるデータを示した図である。
【図１９】図１１に示すα８のタイミングにおいて、プロセッシングエレメントのａレジスタ，ｂレジスタ，ｃ０レジスタおよびｃ１レジスタに記録されるデータを示した図である。
【図２０】図１１に示すα９のタイミングにおいて、プロセッシングエレメントのａレジスタ，ｂレジスタ，ｃ０レジスタおよびｃ１レジスタに記録されるデータを示した図である。
【図２１】実施の形態に係るアレイプロセッサを４個用いて２行２列に並べることによって拡張されたアレイプロセッサを示した図である。
【符号の説明】
【０１２５】
１，２０，２１，２２，２３     …アレイプロセッサ
５     …３入力演算器
６     …ａレジスタ
７     …ｂレジスタ
８     …ｃ０レジスタ（内部記録手段）
９     …ｃ１レジスタ（内部記録手段）
１０   …出力切替器
１２   …Ａ１メモリ部（ＦＩＦＯメモリ部）
１３   …Ａ２メモリ部（ＦＩＦＯメモリ部）
１４   …マルチプレクサ（出力側選択手段）
１５   …マルチプレクサ（入力側選択手段）
１６   …メモリ部
ＩＮ０１，ＩＮ０２，ＩＮ０３  …外部入力端子
Ｍ０１  …第１ＦＩＦＯメモリ（ＦＩＦＯ記録手段）
Ｍ０１＿Ａ，Ｍ０１＿Ｂ   …第１ＦＩＦＯメモリ部
Ｍ０２  …第２ＦＩＦＯメモリ（ＦＩＦＯ記録手段）
Ｍ０２＿Ａ，Ｍ０２＿Ｂ   …第２ＦＩＦＯメモリ部
Ｍ０３  …第３ＦＩＦＯメモリ（ＦＩＦＯ記録手段）
Ｍ０３＿Ａ，Ｍ０３＿Ｂ   …第３ＦＩＦＯメモリ部
ＯＵＴ０１，ＯＵＴ０２，ＯＵＴ０３  …外部出力端子
ＰＥ０１，ＰＥ０２，ＰＥ０３，ＰＥ０４  …プロセッシングエレメント
Ｓ０１，Ｓ０２  …クロスバススイッチ
【図１】
2009163491.tif 000012
【図２】
2009163491.tif 000013
【図３】
2009163491.tif 000014
【図４】
2009163491.tif 000015
【図５】
2009163491.tif 000016
【図６】
2009163491.tif 000017
【図７】
2009163491.tif 000018
【図８】
2009163491.tif 000019
【図９】
2009163491.tif 000020
【図１０】
2009163491.tif 000021
【図１１】
2009163491.tif 000022
【図１２】
2009163491.tif 000023
【図１３】
2009163491.tif 000024
【図１４】
2009163491.tif 000025
【図１５】
2009163491.tif 000026
【図１６】
2009163491.tif 000027
【図１７】
2009163491.tif 000028
【図１８】
2009163491.tif 000029
【図１９】
2009163491.tif 000030
【図２０】
2009163491.tif 000031
【図２１】
2009163491.tif 000032