(57)【特許請求の範囲】
【請求項１】
それぞれｎ１台のプロセッサが接続されており、前記ｎ１台のプロセッサとの入出力データ転送路を有する、ｎ２台の第１のクロスバスイッチ（ｎ１、ｎ２はそれぞれ正の整数）と、
それぞれ前記ｎ２台の第１のクロスバスイッチが接続されており、前記ｎ２台の第１のクロスバスイッチ間におけるデータ転送路を有する、ｎ１台の第２のクロスバスイッチとを有し、
自プロセッサが、自プロセッサが接続された第１のクロスバスイッチに接続された他プロセッサに入出力データ転送を行う場合は、当該第１のクロスバスイッチの入出力データ転送路を経由することにより入出力データ転送を行い、
自プロセッサが、自プロセッサが接続されている当該第１のクロスバスイッチに接続された他プロセッサ以外の他プロセッサに入出力データ転送を行うときは、前記自プロセッサが接続されている当該第１のクロスバスイッチ、前記自プロセッサが接続されている当該第１のクロスバスイッチ及び前記他プロセッサが接続されている第１のクロスバスイッチが接続されている第２のクロスバスイッチ、前記他プロセッサが接続されている第１のクロスバスイッチそれぞれの入出力データ転送路を経由して入出力データ転送を行い、
前記第１のクロスバスイッチはそれぞれ、前記ｎ１台のプロセッサの出力ポート及び前記ｎ１台の第２のクロスバスイッチの出力ポートに接続される２×ｎ１の入力ポートと、 前記ｎ１台の第２のクロスバスイッチの入力ポートに接続されるｎ１の出力ポートとを有することを特徴とする計算機接続装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は大規模並列計算機接続装置に係り、特に送信先アドレスが異なる場合における競合状態が発生しないネットワークを小さい物量で構成した計算機接続装置に関するものである。
【０００２】
【従来の技術】
図８（Ａ）に示す如く、多数のプロセッサＰＥ０〜ＰＥＮ−１を一次元クロスバネットワークＸＢで接続して、宛先の異なる通信を競合しないように構成する場合、このクロスバネットワークＸＢを、図８（Ｂ）に示す如く、入力側ラインがＮ本、出力側のラインがＮ本であり、各入力側ラインと出力側ラインの交点にスイッチング素子（図示省略）が設けられたネットワークで構成することが必要である。
【０００３】
このためプロセッサの数の２乗に比例するネットワーク物量でこのクロスバネットワークを構成することが必要となり、プロセッサの数が増えればその２乗に応じた大容量のネットワークが必要となる。そのため接続できるプロセッサ数に制限があり、大規模並列計算機用のスイッチングネットワークとしては問題があった。
【０００４】
これを改善するため、図９に示す如く、２次元クロスバネットワークが構成されている。これは、例えば２５６個のプロセッサ間でネットワークを構成するとき、これを例えば１グループあたり６４個のプロセッサで構成するＰＥ０００〜ＰＥ０６３、ＰＥ１００〜ＰＥ１６３、ＰＥ２００〜ＰＥ２６３、ＰＥ３００〜ＰＥ３６３の４つのグループで区分けし、各プロセッサに３ヶの入出力端子を有するスイッチＳＷにより、プロセッサＰＥ０００〜ＰＥ０６３をクロスバスイッチＸＸＢ０に接続し、プロセッサＰＥ１００〜ＰＥ１６３をクロスバスイッチＸＸＢ１に接続し、プロセッサＰＥ２００〜ＰＥ２６３をクロスバスイッチＸＸＢ２に接続し、プロセッサＰＥ３００〜ＰＥ３６３をクロスバスイッチＸＸＢ３に接続する。
【０００５】
そしてプロセッサＰＥ０００、ＰＥ１００、ＰＥ２００、ＰＥ３００をクロスバスイッチＹＸＢ０に接続し、プロセッサＰＥ００１、ＰＥ１０１、ＰＥ２０１、ＰＥ３０１をクロスバスイッチＹＸＢ１に接続し、同様にプロセッサＰＥ０６３、ＰＥ１６３、ＰＥ２６３、ＰＥ３６３をクロスバスイッチＸＢ６３に接続する。
【０００６】
このようにして６４個の入出力ポートを持つ４個のクロスバスイッチＸＸＢ０、ＸＸＢ１、ＸＸＢ２、ＸＸＢ３と４個の入出力ポートを持つ６４個のクロスバスイッチＹＸＢ０、ＹＸＢ１・・・ＹＸＢ６３により、２５６個のプロセッサを並列接続するネットワークを構成することができる。
【０００７】
【発明が解決しようとする課題】
図９に示す２次元のクロスバネットワークは、図８に示す１次元のクロスバネットワークに比較すれば、ネットワークのハード量を大幅に節約することができるが、各プロセッサのデータ転送宛先の組み合わせにより通信待ちが発生し易い。
【０００８】
図９において、Ｙ方向からデータ転送するアルゴリズムで動作させるとき、プロセッサＰＥ０００→ＰＥ２０１の通信と、プロセッサＰＥ２００→ＰＥ２６３の通信は競合する。即ち、プロセッサＰＥ０００→ＰＥ２０１の通信の場合、次のルートで通信が行われる。
【０００９】
ＰＥ０００（ＳＷ）→ＹＸＢ０→ＰＥ２００（ＳＷ）→ＸＸＢ２→ＰＥ２０１（ＳＷ）
またプロセッサＰＥ２００→ＰＥ２６３の通信の場合、次のルートで通信が行われる。
【００１０】
ＰＥ２００（ＳＷ）→ＸＸＢ２→ＰＥ２６３（ＳＷ）
従って、これらの場合、クロスバスイッチＸＸＢ２上において競合することになる。
【００１１】
もし競合しないようにするためには、Ｘ方向、Ｙ方向のいずれの方向を先に転送すべきか動的に選択する手法もあるが、複数の並列プログラムが同時にシステム内で走行するような場合には、デッドロック回避などの困難な問題がある。従って一般的には転送する方向の順序は固定であり、前記の如く競合が発生する。
【００１２】
いまプロセッサのアドレスをＸ、Ｙの２次元の座標で表現したとき、以下のプロセッサＰＥ０とＰＥ１との間の通信及びプロセッサＰＥ２とＰＥ３との間の通信は、
ＰＥ０（Ｘ０、Ｙ０）→ＰＥ１（Ｘ１、Ｙ１）
ＰＥ２（Ｘ２、Ｙ２）→ＰＥ３（Ｘ３、Ｙ３）
（発信元）            （送信先）
Ｙ０  ＝Ｙ２  、  Ｘ０  ≠Ｘ２  ＝Ｘ１  ＝Ｘ３  であればＸ１  ≠Ｘ３  でも競合する。
【００１３】
従って、本発明の目的は、ハード量の少ないネットワークにより、しかも競合の少ないプロセッサ間の通信を可能としたプロセッサ間の接続装置を提供するものである。
【００１４】
【課題を解決するための手段】
前記目的を達成するために、本発明では、図１に示す如く、行クロスバＸＸＢ０、ＸＸＢ１、ＸＸＢ２、ＸＸＢ３と、列クロスバＹＸＢ０、ＹＸＢ１・・・ＹＸＢ６３を設ける。行クロスバＸＸＢ０には１２８入力、６４出力のクロスバスイッチＸ０が設けられ、クロスバスイッチＸ０の１２８入力端子のうち６４端子はこのクロスバスイッチＸ０に接続されているプロセッサＰＥ００〜ＰＥ６３からの出力がその宛先に応じて入力バッファ回路Ｉ０〜Ｉ６３を介して入力され、他の６４端子は列クロスバＹＸＢ０、ＹＸＢ１・・・ＹＸＢ６３からの出力が入力される。
【００１５】
そしてクロスバスイッチＸ０の出力はプロセッサＰＥ００〜ＰＥ６３に入力される。行クロスバＸＸＢ０の出力は、プロセッサＰＥ００〜ＰＥ６３に入力される。またプロセッサＰＥ００〜ＰＥ６３からの出力は、その宛先に応じて入力バッファ回路Ｉ０〜Ｉ６３を介して列クロスバＹＸＢ０〜ＹＸＢ６３に入力される。
【００１６】
行クロスバＸＸＢ１にも、クロスバスイッチＸ０と同様に構成されたクロスバスイッチＸ１が設けられ、クロスバスイッチＸ１の６４個の入力端子にはプロセッサＰＥ１００〜ＰＥ１６３からの出力がその宛先に応じて入力バッファ回路Ｉ１００〜Ｉ１６３を介して入力され、他の６４個の入力端子には列クロスバＹＸＢ０、ＹＸＢ１・・・ＹＸＢ６３からの出力が入力される。そしてクロスバスイッチＸ１の出力はプロセッサＰＥ１００〜ＰＥ１６３に入力される。
【００１７】
行クロスバＸＸＢ１の出力は、プロセッサＰＥ１００〜ＰＥ１６３に入力される。またプロセッサＰＥ１００〜ＰＥ１６３からの出力は、その宛先に応じて入力バッファ回路Ｉ１００〜Ｉ１６３を介してクロスバＹＸＢ０〜ＹＸＢ６３に入力される。
【００１８】
行クロスバＸＸＢ２、行クロスバＸＸＢ３もそれぞれ行クロスバＸＸＢ０と同様に構成され、それぞれプロセッサＰＥ２００〜ＰＥ２６３、ＰＥ３００〜ＰＥ３６３が接続されている。
【００１９】
また列クロスバＹＸＢ００は４入力４出力のクロスバスイッチで構成され、行クロスバＸＸＢ０〜ＸＸＢ３から出力されたデータをその宛先に応じて行クロスバＸＸＢ０〜ＸＸＢ３に送出するものである。列クロスバＹＸＢ１〜ＹＸＢ６３は、列クロスバＹＸＢ００と同様に４入力４出力のクロスバスイッチで構成され、行クロスバＸＸＢ０〜ＸＸＢ３から出力されたデータをその宛先に応じて行クロスバＸＸＢ０〜ＸＸＢ３に送出するものである。
【００２０】
いま、前記図９と同様にプロセッサＰＥ００からプロセッサＰＥ２０１にデータ転送し、プロセッサＰＥ２００からプロセッサＰＥ２６３にデータ転送する場合について説明する。
【００２１】
プロセッサＰＥ００からプロセッサＰＥ２０１宛に送出されたデータは行クロスバＸＸＢ０における入力バッファ回路Ｉ０でその宛先が判断されて列クロスバＹＸＢ０に送出される。そして列クロスバＹＸＢ０で、その宛先が判断されて行クロスバＸＸＢ２に送出される。行クロスバＸＸＢ２ではクロスバＸ２によりこれをプロセッサＰＥ２０１に出力する。
【００２２】
また、プロセッサＰＥ２００からプロセッサＰＥ２６３宛に送出されたデータは、入力バッファ回路Ｉ２００でその宛先が判断されてクロスバＸ２に送出され、クロスバＸ２によりプロセッサＰＥ２６３に送出される。
【００２３】
このようにして、図９においては競合してデータ転送が遅れる場合でもこの発明では競合しないように構成できるので、データ転送をすみやかに行うことができる。
【００２４】
【発明の実施の形態】
本発明の第１の実施の形態を図２〜図６に基づき、図１を参照して説明する。図２はプロセッサの構成、プロセッサを構成するデータ転送処理部の説明、プロセッサネットワーク間のインターフェース例を示し、図３は行クロスバの構成図を示し、図４は行クロスバの入力バッファ回路の構成図を示し、図５は行クロスバのスイッチ回路の構成図を示し、図６は列クロスバの構成図を示す。
【００２５】
図中１は命令処理部、２は転送処理部、３は主記憶装置、４−０、４−１は送信バッファ、５−０、５−１は受信バッファ、６は送信制御部、７は受信制御部、８は主記憶アクセス制御部、１０−０〜１０−６３及び１１−０〜１１−６３は入力バッファ回路、２０−０〜２０−２５５は３２入力１出力のスイッチ回路、２１−０〜２１−６３は４入力１出力のスイッチ回路、２２−０〜２２−６３は出力バッファ、４０は入力レジスタ、４１は転送用バッファ、４２はバッファ読み出しレジスタ、４３は制御回路、４４は宛先選択回路、４５−１〜４５−６４は出力レジスタ、５０はセレクタ、５１は優先制御回路、５２−１〜５２−３２は入力要求フラグ保持部、５３は選択制御回路、５４−１〜５４−３２は入力転送フラグ保持部である。
【００２６】
図２（Ａ）に示す如く、プロセッサＰＥは、命令処理部１、転送処理部２、主記憶装置３を具備する。
命令処理部１は、主記憶装置３に格納されている命令語（プログラム）を読み出して、その指令に従って処理を行う。そして転送処理部２に対してプログラムの指令によりデータ転送の指示を行う。この指示には、宛先プロセッサ番号、転送データの転送元主記憶アドレス、データ長、宛先プロセッサ上の転送先主記憶アドレス等が含まれる。
【００２７】
転送処理部２はネットワークへデータを送信する送信部とネットワークからデータを受信する受信部を有する。送信部は命令処理部１の指示に従ってネットワークへデータを送信するものであり、ネットワーク等へ送出するデータは、宛先プロセッサ番号、宛先プロセッサ内でデータを格納すべきアドレス、データ長などを含む制御情報であるヘッダ部と、主記憶装置３から読み出したデータ本体であるボディ部からなるパケットである。また受信部はネットワークから受信したパケットを、パケットのヘッダ部に指定された主記憶内アドレスに格納する。
【００２８】
主記憶装置３は、プロセッサＰＥ内の命令処理部１が実行すべきプログラムや演算処理に使用するデータなどを格納するものである。
前記転送処理部２は、図２（Ｂ）に示す如き、ブロック構成を有する。すなわち１対の送信バッファ４−０、４−１と、１対の受信バッファ５−０、５−１と、送信制御部６と受信制御部７と、主記憶アクセス制御部８等を具備する。
【００２９】
送信バッファ４−０、４−１は送信すべきパケットのデータを交互に格納する。送信バッファ４−０に格納されたデータを送信している間に送信バッファ４−１には送信すべきデータが格納され、送信バッファ４−１に格納されたデータを送信している間に送信バッファ４−０には送信すべきデータが格納される。ネットワークへ送出されるデータにはヘッダ部として制御情報が作成されて送出される。このあと命令処理部１の指示に従って主記憶装置３からとり出したデータをネットワークに送出するまでこの送信バッファ４−０、４−１に交互に一時保持する。
【００３０】
受信バッファ５−０、５−１はネットワークから受信したデータを交互に格納する。受信バッファ５−０に格納されたデータが主記憶装置３に送出されているとき受信バッファ５−１に受信データが格納され、受信バッファ５−１に格納されたデータが主記憶装置３に送出されているとき受信バッファ５−０に受信データが格納される。ネットワークから受信したヘッダ部から、データ本体（ボディ部）を格納すべきアドレス情報を取り出す。そしてこれに基づき、ネットワークから受信したボディデータを一時受信バッファに格納したあと主記憶装置の所定のアドレスに格納してゆく。
【００３１】
送信制御部６はネットワークへのデータ送出を制御するものであって、ネットワークから送られてくるネットワーク装置側の受信バッファの状態を示す信号（バッファフル信号）や、主記憶アクセス制御部８より送られてくるバッファにデータが格納されたことを示す信号により、現在バッファ中に未送出データが何個あるかを管理し、これらをネットワークに送出可能であればバッファ部に送出の指示を行う。
【００３２】
受信制御部７はネットワークからのデータ受信を制御するものであって、受信バッファが一杯になったら、ネットワークにバッファ状態を示す信号を送出する。また現在バッファ中に未送出データが何個あるかを管理し、これらを順次主記憶装置に送出するように処理する。
【００３３】
主記憶アクセス制御部８は、ネットワークへ送出するデータの主記憶装置からの読み出しの制御及びネットワークから受信したデータの主記憶への書き込みの制御を行うものである。命令処理部１からの送信の指示またはネットワークから受信したパケット内のヘッダ部に指示されたデータ本体（ボディ部）の先頭アドレス及びデータ長から、アクセスすべき主記憶アドレスを順次発生し、主記憶アクセス制御部８にアクセスリクエストを発行するものである。この主記憶アクセス制御部８のアドレス等のメモリ制御信号に基づき送信バッファ４−０、４−１にデータを送出したり、受信バッファ５−０、５−１からデータを格納するものである。
【００３４】
図２（Ｃ）によりプロセッサとネットワーク間のインターフェースについて説明する。図２（Ｃ）において、Ｄａｔａは送信するデータ本体であり、複数ビットの信号線群からなる。データエラーチェックのためのパリティビットを含むこともある。Ｄａｔａ−Ｖａｌｉｄは、この信号がオンのとき、送信データが有効であることを示すものである。Ｄａｔａ−Ｅｎｄは、パケットの最終データの送信時にオンとなるものである。Ｂｕｆｆｅｒ−Ｆｕｌｌは受信バッファが一杯となったためにデータの送信停止を要求する信号である。この信号の代わりにＤａｔａ−Ｒｅｑ信号を使用することも可能である。
【００３５】
次に図１に示す行クロスバＸＸＢについて、図３により説明する。行クロスバＸＸＢは図３（Ａ）に行クロスバＸＸＢ０について代表的に示す如く、１２８入力６４出力のクロスバスイッチＸ０と入力バッファ回路１０−０〜１０−６３及び入力バッファ回路１１−０〜１１−６３を有する。
【００３６】
入力バッファ回路１０−０〜１０−６３は１入力６５出力であり、入力バッファ回路１１−０〜１１−６３は１入力６４出力である。この入力バッファ回路については図４に基づき後述する。
【００３７】
クロスバスイッチＸ０は、図３（Ｂ）に示す３２入力１出力の第１のスイッチ回路２０−０〜２０−２５５と、４入力１出力の第２のスイッチ回路２１−０〜２１−６３と、出力バッファ２２−０〜２２−６３を有する。
【００３８】
入力バッファ回路１０−０は、プロセッサＰＥ００から伝達されたデータがこのクロスバスイッチＸ０に接続されたプロセッサのどれかに送出されるものかそれとも列クロスバＹＸＢ０に送出されるものか判断されてそれに応じて出力されるので６５本の出力を有する。
【００３９】
第１のスイッチ回路２０−０の出力はプロセッサＰＥ０への出力を送出する第２のスイッチ回路２１−０に入力される。この第１のスイッチ回路２０−０には入力バッファ回路１０−０〜１０−３１からのプロセッサＰＥ０あてのデータが入力される。
【００４０】
第１のスイッチ回路２０−１の出力はプロセッサＰＥ１への出力を送出する第２のスイッチ回路２１−１に入力される。この第１のスイッチ回路２０−１には入力バッファ回路１０−０〜１０−３１からのプロセッサＰＥ１あてのデータが入力される。
【００４１】
第１のスイッチ回路２０−２（図示省略）の出力はプロセッサＰＥ２への出力を送出する第２のスイッチ回路２１−２に入力される。この第１のスイッチ回路２０−２には入力バッファ回路１０−０〜１０−３１からのプロセッサＰＥ２あてのデータが入力される。
【００４２】
第１のスイッチ回路２０−３〜第１のスイッチ回路２０−６３も、同様に構成され、それぞれの出力は、プロセッサＰＥ３〜ＰＥ６３あての出力を送出する第２のスイッチ回路２１−３〜２１−６３にそれぞれ入力される。そしてこの第１のスイッチ回路２０−３〜２０−６３には入力バッファ回路１０−０〜１０−３１からのプロセッサＰＥ３〜ＰＥ６３あてのデータが送出される。
【００４３】
このように第１のスイッチ回路２０−０〜２０−６３には、入力バッファ回路１０−０〜１０−３１からのそれぞれプロセッサＰＥ０〜ＰＥ６３あての３２の入力が印加されるように構成され、それぞれ第２のスイッチ回路２１−０〜２１−６３に出力される。
【００４４】
また第１のスイッチ回路２０−６４の出力はプロセッサＰＥ０への出力を送出する第２のスイッチ回路２１−０に入力される。この第１のスイッチ回路２０−６４には入力バッファ回路１０−３２（図示省略）〜１０−６３からのプロセッサＰＥ０あてのデータが入力される。
【００４５】
第１のスイッチ回路２０−６５の出力はプロセッサＰＥ１への出力を送出する第２のスイッチ回路２１−１に入力される。この第１のスイッチ回路２０−６５には入力バッファ回路１０−３２〜１０−６３からのプロセッサＰＥ１あてのデータが入力される。
【００４６】
第１のスイッチ回路２０−６６の出力はプロセッサＰＥ２への出力を送出する第２のスイッチ回路２１−２に入力される。この第１のスイッチ回路２０−６６には入力バッファ１０−３２〜１０−６３からのプロセッサＰＥ２あてのデータが入力される。
【００４７】
また第１のスイッチ回路２０−１２７の出力はプロセッサＰＥ６３への出力を送出する第２のスイッチ回路２１−６３に入力される。この第１のスイッチ回路２０−１２７には入力バッファ１０−３２〜１０−６３からのプロセッサＰＥ６３あてのデータが入力される。
【００４８】
このように、第１のスイッチ回路２０−６４〜２０−１２７には、入力バッファ回路１０−３２（図示省略）〜１０−６３からのそれぞれプロセッサＰＥ０〜ＰＥ６３あての３２の入力が印加されるように構成され、それぞれ第２のスイッチ回路２１−０〜２１−６３に出力される。
【００４９】
第１のスイッチ回路２０−１２８の出力はプロセッサＰＥ０への出力を送出する第２のスイッチ回路２１−０に入力される。この第１のスイッチ回路２０−１２８には、入力バッファ回路１１−０〜１１−３１（図示省略）からのプロセッサＰＥ０あてのデータが入力される。
【００５０】
第１のスイッチ回路２０−１２９（図示省略）の出力はプロセッサＰＥ１への出力を送出する第２のスイッチ回路２１−１に入力される。この第１のスイッチ回路２０−１２９には、入力バッファ回路１１−０〜１１−３１からのプロセッサＰＥ１あてのデータが入力される。
【００５１】
このように、第１のスイッチ回路２０−１２８〜２０−１９１（図示省略）には、入力バッファ回路１１−０〜１１−３１からのそれぞれプロセッサＰＥ０〜ＰＥ６３あての３２の入力が印加されるように構成され、それぞれ第２のスイッチ回路２１−０〜２１−６３に出力される。
【００５２】
第１のスイッチ回路２０−１９２の出力はプロセッサＰＥ０への出力を送出する第２のスイッチ回路２１−０に入力される。この第１のスイッチ回路２０−１９２には、入力バッファ回路１１−３２（図示省略）〜１１−６３からのプロセッサＰＥ０あてのデータが入力される。
【００５３】
第１のスイッチ回路２０−１９３（図示省略）の出力はプロセッサＰＥ１への出力を送出する第２のスイッチ回路２１−１に入力される。この第１のスイッチ回路１９３には、入力バッファ回路１１−３２〜１１−６３からのプロセッサＰＥ１あての信号が入力される。
【００５４】
このように、第１のスイッチ回路２０−１９２〜２０−２５５には、入力バッファ回路１１−３２〜１１−６３からのそれぞれプロセッサＰＥ０〜ＰＥ６３あての３２の入力が印加されるように構成され、それぞれ第２のスイッチ回路２１−０〜２１−６３に出力される。
【００５５】
第２のスイッチ回路２１−０には第１のスイッチ回路２０−０、２０−６４、２０−１２８、２０−１９２からの４つのデータが入力される。また第２のスイッチ回路２１−１には第１のスイッチ回路２０−１、２０−６５、２０−１２９（図示省略）、２０−１９３（図示省略）からの４つのデータが入力される。第２のスイッチ回路２１−２〜２１−６３も、同様に４つのデータが入力される。
【００５６】
そして第２のスイッチ回路２１−０の出力は、出力バッファ２２−０を経由してプロセッサＰＥ０に送出され、第２のスイッチ回路２１−１の出力は、出力バッファ２２−１を経由してプロセッサＰＥ１に送出される。第２のスイッチ２１−２〜２１−６３の出力も、同様に出力バッファ２２−２〜２２−６３を経由してプロセッサＰＥ２〜ＰＥ６３に送出される。
【００５７】
なお入力バッファ回路１０−０には、その入力データの宛先が行クロスバＸＸＢ０に接続されたプロセッサＰＥ０〜ＰＥ６３以外のデータを列クロスバＹＸＢ００に送出するための出力端子が設けられる。同様に入力バッファ回路１０−１〜１０−６３にも、その入力データの宛先が行クロスバＸＸＢ０に接続されたプロセッサＰＥ０〜ＰＥ６３以外のデータを列クロスバＹＸＢ１〜ＹＸＢ６３に送出するための出力端子が設けられる。
【００５８】
次に図４により入力バッファ回路の構成を説明する。各入力バッファ回路はほぼ同一構成であるので、入力バッファ回路１０−０について代表的に説明する。図４（Ａ）は入力バッファ回路１０−０の構成図であり、同（Ｂ）はその制御回路の構成図である。
【００５９】
入力バッファ回路１０−０は、図４（Ａ）に示す如く、入力レジスタ４０、転送用バッファ４１、バッファ読み出しレジスタ４２、制御回路４３、宛先選択回路４４、出力レジスタ４５−１、４５−２、４５−３、４５−４・・・４５−６４を具備している。
【００６０】
入力レジスタ４０はプロセッサの転送処理部２からの転送データを受信するものである。転送用バッファ４１は入力レジスタ４０が受信したこのプロセッサからの転送データが格納されるものである。
【００６１】
バッファ読み出しレジスタ４２は、転送用バッファ４１からデータを読み出すものであり、制御回路４３及び宛先選択回路４４に送るものである。
制御回路４３は、転送するパケットの先頭に含まれている宛先情報を読み取り、この宛先情報に応じて宛先選択回路４４を制御するものであり、宛先デコーダ４３−０と宛先レジスタ４３−１を備えている。宛先デコーダ４３−０では、転送するパケットの先頭に含まれている宛先情報を読み、宛先レジスタ４３−１に保持する。そしてその宛先に応じた出力レジスタ４５に転送パケットを送出するように宛先選択回路４４を制御する。即ちバッファ読み出しレジスタ４２から出力レジスタ４５に対する宛先選択回路４４内の経路、即ちバッファ読み出しレジスタ４２からどのスイッチＳＷ（図３）を開くかの選択を行ってその選択された経路を有効とし、その転送要求信号（ＳＷへのデータ転送信号線に含まれる）を有効にする。スイッチＳＷから送出許可信号（ＳＷへのデータ転送信号線に含まれる）を受信すると、転送バッファから順次データを読み出して、バッファ読み出しレジスタ４２、宛先選択回路４４を経由して、そのスイッチＳＷに送るように制御し、そのスイッチに接続される出力レジスタ４５に選択的にデータ転送を行う。
【００６２】
例えば前記宛先情報によりプロセッサＰＥ０に送出すべきものと判断されたときは宛先選択回路４４から出力レジスタ４５−０に送出し、プロセッサＰＥ１に送出すべきものと判断されたときは出力レジスタ４５−１に送出される。そして列クロスバＹＸＢに送出すべきものと判断されたときは出力レジスタ４５−６４に送出される。
【００６３】
ところで図３（Ｂ）に示す入力バッファ回路１１−０〜１１−６３も、図４に示す入力バッファ回路とほぼ同様に構成されるが、宛先選択回路４４の出力が列スクロバＹＸＢに対する出力がない。即ち宛先選択回路４４の出力は、プロセッサＰＥ０〜ＰＥ６３あてのデータがそれぞれ入力される出力レジスタ４５−０〜４５−６３に送出され、列クロスバＹＸＢには出力されない。
【００６４】
次に図５により行クロスバのスイッチ回路について説明する。
このスイッチ回路は３２入力１出力のスイッチ回路であり、いずれも同一構成であるので、スイッチ回路２０−０により代表的に説明する。図５（Ａ）に示す如く、スイッチ回路２０−０はセレクタ５０と優先制御回路５１を有するものである。セレクタ５０は、入力バッファ回路１０−０、１０−１・・・１０−３１（図示省略）から送出されたデータが入力され、優先制御回路５１から伝達される経路選択信号にもとづき、どれか１つの入力と出力との間のパスを有効にし、これによりその１つが選択されて後段のスイッチ回路２１−０に送出する。
【００６５】
優先制御回路５１は、図５（Ｂ）に示す如く、データの入力に応じてセットされる入力要求フラグ５２−１、５２−２・・・５２−３２と、セレクタ５０に入力された複数のデータを、例えばラウンドロビンの論理に従って選択出力制御する選択制御回路５３と、その選択結果によりセットされる転送フラグ５４−１、５４−２・・・５４−３２を具備している。
【００６６】
従って、セレクタ５０に複数の入力が伝達されると、それに応じて入力要求フラグ５２−１〜５２−３２の１部が選択的にオンになるので、選択制御回路５３は、例えばラウンドロビン方式に基づきその１つを選択してこれに応じ転送フラグ５４−１〜５４−３２の１つをオンにして、これによりセレクタ選択信号つまり経路選択信号を作成してセレクタ５０に出力する。セレクタ５０はこれに応じて選択された入力データを後段のスイッチ回路２１に送出する。
【００６７】
スイッチ回路２１は、図５に示すスイッチ回路２０と同様に構成されるが、４入力１出力で構成されることで相違しているのみであり、詳細な説明は省略する。なおセレクタは前段スイッチ回路からのデータが入力され、出力バッファ回路に出力する。スイッチ回路２１において要求フラグは前段のスイッチ回路からの転送要求によりセットされる。
【００６８】
図６により列クロスバのスイッチ回路について説明する。列クロスバのスイッチ回路は、入力バッファ回路６０−０〜６０−３、スイッチ回路６１−０〜６１−３、出力バッファ６２−０〜６２−３を具備している。
【００６９】
入力バッファ回路６０−０は、入力バッファ回路１０と同様に構成されるが出力が４回路であることで相違する。入力バッファ回路６０−０は行クロスバＸＸＢ０から送出されたデータが入力され、そのデータの宛先に応じてスイッチ回路６１−０〜６１−３に選択出力される。入力バッファ回路６０−１は行クロスバＸＸＢ１から送出されたデータが入力され、そのデータの宛先に応じてスイッチ回路６１−０〜６１−３に選択出力される。入力バッファ回路６０−２、６０−３も、同様に構成され、行クロスバＸＸＢ２、ＸＸＢ３から送出されたデータが入力されそのデータの宛先に応じてスイッチ回路６１−０〜６１−３に選択出力される。
【００７０】
スイッチ回路６１−０は、スイッチ回路２１−０と同様に４入力１出力スイッチ回路に構成されるものであって、入力バッファ回路６０−０〜６０−３から伝達されたデータをその宛先に応じて例えばラウンドロビン方式で出力バッファ６２−０に出力し、行クロスバＸＸＢ０あてに送出するものである。
【００７１】
スイッチ回路６１−１〜６１−３も、同様に４入力１出力スイッチ回路で構成されるものであって、入力バッファ回路６０−０〜６０−３から伝達されたデータを、その宛先に応じて例えばラウンドロビン方式で出力バッファ６２−１〜６２−３に出力し、行クロスバＸＸＢ１〜ＸＸＢ３に送出するものである。
【００７２】
本発明の動作を図１における▲１▼プロセッサＰＰ００→ＰＥ２０１にデータを送出する、▲２▼プロセッサＰＥ２００→ＰＥ２６３にデータを送出するケースが同時に行われる場合について説明する。
【００７３】
▲１▼プロセッサＰＥ００→ＰＥ２０１にデータを送出する場合は、まずプロセッサＰＥ００から行クロスバＸＸＢ０に対してＰＥ２０１宛のデータを出力する。このプロセッサＰＥ００からのデータは、図３（Ｂ）に示す入力バッファ回路１０−０に入力され、図４（Ａ）に示す制御回路４３においてその宛先が解読されて宛先選択回路４４から出力レジスタ４５−６４に送出され、列クロスバＹＸＢ０に送出される。列クロスバＹＸＢ０では、入力バッファ回路６０−０がこれを受けてその宛先からこれを行クロスバＸＸＢ２に送出すべきものと判別しスイッチ回路６１−２にこの受信したデータを送出する。スイッチ回路６１−２ではこれを出力バッファ６２−２を経由して行クロスバＸＸＢ２に送出する。
【００７４】
行クロスバＸＸＢ２では、列クロスバＹＸＢ０よりこのデータを受けたとき、入力バッファ回路（図３の１１−０に対応）がこれを受信して、その宛先を解読してプロセッサＰＥ２０１に送出すべきものであることを判別し、このプロセッサＰＥ２０１へのデータを送出するスイッチ回路２０−１２９（図示省略）に送出する。スイッチ回路２０−１２９ではこれをプロセッサＰＥ２０１へのデータを送出する出力バッファ（図３の２２−１に対応）に接続されたスイッチ回路（２１−１に対応）に送出し、プロセッサＰＥ２０１にデータが送出される。このようにしてプロセッサＰＥ００よりプロセッサＰＥ２０１へのデータ送出が行われる。
【００７５】
▲２▼プロセッサＰＥ２００→ＰＥ２６３にデータを送出する場合は、まずプロセッサＰＥ２００から行クロスバＸＸＢ２にＰＥ２６３宛のデータを出力する。このプロセッサＰＥ２６３宛のデータは図３（Ｂ）に示すバッファ回路（１０−０に対応）に入力されたその宛先が解読され、プロセッサＰＥ２６３に送出すべきものと判断され、このプロセッサＰＥ２６３にデータを送出すべきスイッチ回路（図示省略した２０−６３に対応）に送出される。そしてこのスイッチ回路からスイッチ回路（２１−６３に対応）にデータが送出され、出力バッファ（２２−６３に対応）を経由してプロセッサＰＥ２６３にデータが送出される。このようにしてプロセッサＰＥ２００からＰＥ２６３にデータを送出する場合は、プロセッサＰＥ２００が接続される行クロスバＸＸＢ２のみでデータ送出される。
【００７６】
従ってこれら▲１▼、▲２▼の場合は、競合が生じないので、前記図９の場合の如き待ち状態にはならない。
次に図７に基づき、多数のプロセッサを３次元構成のクロスバにより接続配置した例に基づき説明する。図７の場合は、１グループ２５６個のプロセッサを４グループで１０２４個接続した場合を示す。
【００７７】
第１グループ１００は、プロセッサＰＥ０−６３が接続される第１クロスバＸＸＢ０と、プロセッサＰＥ６４〜１２７が接続される第１クロスバＸＸＢ１と、プロセッサＰＥ１２８〜１９１が接続される第１クロスバＸＸＢ２と、プロセッサＰＥ１９２〜２５５が接続される第１クロスバＸＸＢ３と、第２クロスバ２００〜２６３を具備する。
【００７８】
第１クロスバＸＸＢ０は、前記図１に示すクロスバＸＸＢ０と同様に構成され、１２８入力６４出力のクロスバスイッチと、入力バッファ回路等を有する。第１クロスバＸＸＢ１〜ＸＸＢ３も同様に構成されている。
【００７９】
第２クロスバ２００は、第１クロスバＸＸＢ０からの入力を８入力４出力のクロスバスイッチ３００−０に送出するのか後述する第３クロスバ４００を構成するクロスバＺＸＢ０に送出するのかを選択する宛先制御機能を有する入力バッファ回路２００−０と、第１クロスバＸＸＢ１からの入力を８入力４出力のクロスバスイッチ３００−０に送出するのか第３クロスバ４００を構成するクロスバＺＸＢ１に送出するのかを選択する入力バッファ回路２００−１と、第１クロスバＸＸＢ２からの入力を８入力４出力のクロスバスイッチ３００−０に送出するのか第３クロスバ４００を構成するクロスバＺＸＢ２（図示省略）に送出するのかを選択する入力バッファ回路２００−２と、第１クロスバＸＸＢ３からの入力を８入力４出力のクロスバスイッチ３００−０に送出するのか第３クロスバ４００を構成するクロスバＺＸＢ３（図示省略）に送出するのかを選択する入力バッファ回路２００−３と、８入力４出力のクロスバスイッチ３００−０を有するものである。
【００８０】
なお８入力４出力クロスバスイッチ３００−０は、前記第１クロスバＸＸＢ０、ＸＸＢ１、ＸＸＢ２、ＸＸＢ３から入力されるデータの外に、クロスバＺＸＢ０、ＺＸＢ１、ＺＸＢ２（図示省略）、ＺＸＢ３（図示省略）から入力されるデータがそれぞれ入力され、第１クロスバＸＸＢ０〜ＸＸＢ３に選択出力される。第２クロスバ２００−１〜２００−６３も前記第２クロスバ２００−０と同様に構成されている。
【００８１】
第２グループ１０１は、第１グループ１００と同様に構成されるものであって、プロセッサＰＥ２５６〜５１１がそれぞれ６４個ずつ接続された１２８入力６４出力の４個の第１クロスバと、８入力４出力のクロスバスイッチと入力バッファ回路を有する６４個の第２クロスバを有する。
【００８２】
第３グループ１０２は、同様に第１グループ１００と同様に構成されるものであって、プロセッサＰＥ５１２〜７６７がそれぞれ６４個ずつ接続された１２８入力６４出力の４個の第１クロスバと、８入力４出力のクロスバスイッチと入力バッファ回路を有する６４個の第２クロスバを有する。
【００８３】
そして第４グループ１０３も、第１グループ１００と同様に構成されるものであって、プロセッサＰＥ７６８〜１０２３がそれぞれ６４個ずつ接続された１２８入力６４出力の４個の第１クロスバと、８入力４出力のクロスバスイッチと入力バッファ回路を有する６４個の第２クロスバを有する。
【００８４】
第３クロスバ４００は、それぞれ４入力４出力のクロスバスイッチを有する２５６個のクロスバＺＸＢ０〜ＺＸＢ２５５により構成される。そしてこれらクロスバＺＸＢ０〜ＺＸＢ２５５は、下記の如く、第２クロスバと接続される。
【００８５】
即ち、第２クロスバ２００から出力される４本の出力線は、それぞれクロスバＺＸＢ０（図７の出力線の表示ではＺＸを省略してＢ０と表示している）、ＺＸＢ１、ＺＸＢ２、ＺＸＢ３に出力される。また第２クロスバ２０１から出力される４本の出力線はそれぞれクロスバＢ４、Ｂ５、Ｂ６、Ｂ７に出力される。そして第２クロスバ２０１から出力される４本の出力線はそれぞれクロスバＺＸＢ４（図７の出力線の表示ではＺＸは省略してＢ４と表示している）、ＺＸＢ５、ＺＸＢ６、ＺＸＢ７に出力される。他の第２クロスバ２０２〜２６２（図示省略）も同様である。そして第２クロスバ２６３から出力される４本の出力線はそれぞれクロスバＺＸＢ２５２〜２５５にそれぞれ出力される。
【００８６】
また第２クロスバ２００に対してデータを入力する入力線は、クロスバＺＸＢ０（図７では、同様にＢ０と表示）、ＺＸＢ１、ＺＸＢ２、ＺＸＢ３から入力される。そして第２クロスバ２０１に対してデータを入力する入力線はクロスバＺＸＢ４〜７から入力される。そして第２クロスバ２６３に対してデータを入力する入力線はクロスバＺＸＢ２５２〜２５５から入力される。
【００８７】
第２グループ１０１、１０２、１０３も前記第２グループ１００と同様にクロスバＺＸＢ０、ＺＸＢ１〜ＺＸＢ２５５とそれぞれ接続される。
図７において、例えばプロセッサＰＥ０からプロセッサＰＥ１０２３にデータを送信するとき、プロセッサＰＥ０から出力されたデータは第１クロスバＸＸＢ０に入力され、そこで宛先判断されて第２クロスバ２００に送出する。
【００８８】
第２クロスバ２００では入力バッファ回路２００−０がこれを受けてその宛先より第３クロスバ４００を構成するクロスバＺＸＢ０にこれを送出する。クロスバＺＸＢ０ではその宛先より第２グループ１０３に送出すべきものと判断してこれを第２グループ１０３のクロスバＺＸＢ０と接続されている第２クロスバ（図７の２００に相当するもの）に送る。これにより第２グループ１０３の第２クロスバに存在する８入力４出力クロスバスイッチがその宛先を判断してプロセッサ１０２３が接続されているクロスバ（図７のＸＸＢ３に相当するもの）に送り、これによりプロセッサＰＥ１０２３にプロセッサＰＥ０からのデータが受信される。
【００８９】
なお、図１では２次元のクロスバネットワークについて説明し、図７では３次元のクロスバネットワークについて説明したが本発明は勿論これらに限定されるものではなく、更に多次元のものを構成することができる。
【００９０】
また本発明は２次元のクロスバネットワークにおいて、行クロスバに接続されるプロセッサの数や、行クロスバを構成するクロスバスイッチの容量はこれらの実施例に限定されるものではない。勿論列クロスバを構成するクロスバスイッチの容量もこれに限定されるものではない。
【００９１】
更に本発明は３次元のクロスバネットワークにおいても、同様にこの実施例に限定されるものではない。
前記説明より明らかな如く、本発明ではクロスバを階層構造にすることにより宛先の異なるプロセッサにデータを送信する場合、通信待ちの発生を非常に小さくすることができる。
本発明では、ｎをクロスバに接続される下位クロスバ又はプロセッサの数としたとき、最上位階層を除くクロスバの構成を２×ｎ入力ｎ出力とする。これによりプロセッサのアドレスを座標で表現した場合に、２通信
ＰＥ（Ｘ０、Ｙ０、Ｚ０、Ｗ０・・・）→ＰＥ（Ｘ１、Ｙ１、Ｚ１、Ｗ１・・・）
ＰＥ（Ｘ２、Ｙ２、Ｚ２、Ｗ２・・・）→ＰＥ（Ｘ３、Ｙ３、Ｚ３、Ｗ３・・・）
が、Ｚ１＝Ｚ３、Ｚ１≠Ｚ３、Ｚ１≠Ｚ３であっても、Ｙ１≠Ｙ３ならば競合することはない。
【００９２】
本発明の実施例によれば、多数のプロセッサを２次元構成のクロスバネットワークで接続したので、従来では通信待ちが発生していた転送宛先の組み合せでもその発生を大きく解消することができる。
【００９３】
本発明の実施例によれば、多数のプロセッサを３次元構成のクロスバネットワークで接続したので、図１に示す場合よりも非常に多数のプロセッサが接続されたネットワークにおいても通信待ちの発生を大きく改善することができる。
【００９４】
本発明の実施例によれば、このスイッチ手段を設けることにより３次元以上の構成のクロスバネットワークを構成することができるので、非常に多数のプロセッサが接続されたネットワークでも通信待ちの発生を大きく改善することができる。
【００９５】
【発明の効果】
請求項１に記載された本発明によれば、各次元のクロスバネットワークの入力ごとに他次元へ迂回するポートおよび他次元から迂回してきたものの入力ポートを設けたので、小さい物量のクロスバネットワークにより競合の発生を削減することができる。
【図面の簡単な説明】
【図１】本発明の実施の形態図である。
【図２】プロセッサ、データ転送処理部の構成及びプロセッサネットワーク間のインタフェース例である。
【図３】行クロスバＸＸＢの構成図である。
【図４】行クロスバの入力バッファ回路の構成図である。
【図５】行クロスバのスイッチ回路の構成図である。
【図６】列クロスバＹＸＢの構成図である。
【図７】本発明の第２の実施の形態図である。
【図８】従来例説明図（その１）である。
【図９】従来例説明図（その２）である。
【符号の説明】
１  命令処理部
２  転送処理部
３  主記憶装置
４−０、４−１  送信バッファ
５−０、５−１  受信バッファ
６  送信制御部
７  受信制御部
８  主記憶アクセス制御部
ＰＥ  プロセッサ
ＸＸＢ  行クロスバ
ＹＸＢ  列クロスバ
【図１】
0003609908.tif 000002
【図２】
0003609908.tif 000003
【図３】
0003609908.tif 000004
【図４】
0003609908.tif 000005
【図５】
0003609908.tif 000006
【図６】
0003609908.tif 000007
【図７】
0003609908.tif 000008
【図８】
0003609908.tif 000009
【図９】
0003609908.tif 000010