(57)【特許請求の範囲】
【請求項１】
多数個のプロセッサがバスを介して接続されたマルチプロセッサシステムであって、
前記多数個のプロセッサは、相互に近接した位置に配置される複数個のプロセッサから成るクラスタを単位としてグループ分けされており、
各プロセッサ毎に各々設けられ、対応するプロセッサの状態を表す状態情報を出力するか、或いは、入力された状態情報に対応するプロセッサの状態を反映させた状態情報を生成して出力する第１出力手段と、
クラスタ、又は、複数のクラスタから成り相互に近接した位置に配置されるプロセッサによって構成されるクラスタ群毎に少なくとも１つ設けられ、対応するクラスタ内の全てのプロセッサ、又は対応するクラスタ群内の全てのクラスタから状態情報が各々入力され、入力された各状態情報が表すプロセッサの状態を各々反映させた単一の状態情報を生成して出力する第２出力手段と、
前記第２出力手段から出力された状態情報を、予め定められた各クラスタ又は各クラスタ群に状態情報を伝播させる順序における次クラスタ又は次クラスタ群の第１出力手段又は第２出力手段に入力させる信号線と、
を備え、
前記第２出力手段に入力される状態情報の数が、単一のクラスタ又はクラスタ群に入力される状態情報の数よりも多いことを特徴とするマルチプロセッサシステム。
【請求項２】
前記第１出力手段及び前記第２出力手段は、前記状態情報を生成するための演算として複数種の演算を選択的に行う機能を備えており、外部からの指示に応じて複数種の演算を選択的に行って状態情報を生成することを特徴とする請求項１記載のマルチプロセッサシステム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明はマルチプロセッサシステムに係り、特に、多数個のプロセッサがバスを介して接続されたマルチプロセッサシステムに関する。
【０００２】
【従来の技術】
従来より、複数のプロセッサがリングバス形式の通信ネットワークによって各々に接続され、膨大なデータ処理を各プロセッサに分散させ、プロセッサ間のデータ通信を適宜行いながらデータ処理を進めるマルチプロセッサシステムが知られている。この種のマルチプロセッサシステムでは、各プロセッサにおけるデータ処理の同期をとるために、各プロセッサが出力する状態データを順次に論理的に集計し、各種の状態情報を得る状態検査を行う必要がある。
【０００３】
マルチプロセッサシステムにおける状態検査方式の一例として、特開平４-２７８６６０号公報には、データ通信用のリングバスと別に、各プロセッサとワイヤードアンド接続された状態検査を行うための多ビット幅の専用のバス（同期制御バス）を設け、この同期制御バスを用いて状態検査を行うマルチプロセッサの同期検出システムが開示されている。
【０００４】
また、状態検査方式の他の例として、特開平９-４４４５７号公報に記載のマルチプロセッサシステムでは、状態検査のためのパケットをデータ通信用のリングバスに送出し、各プロセッサが受信した状態検査パケットに自プロセッサの状態を反映させる論理演算を行って送信することで状態検査を行っている。
【０００５】
【発明が解決しようとする課題】
しかしながら、同期制御バスを用いて状態検査を行う態様では、全てのプロセッサに対しデータ通信用のリングバスに加えて多ビット幅の同期制御バスも各々接続する必要があるので、配線数及び端子数が増大して電気配線が非常に複雑になり、装置の大型化や製造コストの増大を招くという問題がある。また、プロセッサ数が増えるに従って同期制御用バスの配線容量や配線抵抗（電気的負荷）が増大し、消費電力等の電気的特性が著しく悪化するという欠点もある。
【０００６】
一方、リングバスを用いて状態検査パケットにより状態検査を行う態様では、プロセッサ数が増えても電気配線が非常に複雑になったり電気的特性が著しく悪化することはないが、状態検査時に、全てのプロセッサで処理が終了する迄状態検査パケットがデータ通信用のリングバスに繰り返し送出されることでリングバスが占有されてしまうため、状態検査を行っている間は全てのプロセッサが一切のデータ通信を行うことができないという問題がある。
【０００７】
また、状態検査パケットが全てのプロセッサを通過してリングバスを１周することで、初めて各プロセッサの状態が明らかになるので、プロセッサ数が増えるに従って状態検査に要する時間が増大する（プロセッサ数がＮのとき少なくともＮサイクル必要となる）。
【０００８】
本発明は上記事実を考慮して成されたもので、各プロセッサの状態検査を、非常に複雑な電気配線を必要としたり、プロセッサ間のデータ通信を遮ることなく短時間で行うことができるマルチプロセッサシステムを得ることが目的である。
【０００９】
【課題を解決するための手段】
上記目的を達成するために請求項１記載の発明に係るマルチプロセッサシステムは、多数個のプロセッサがバスを介して接続されたマルチプロセッサシステムであって、前記多数個のプロセッサは、相互に近接した位置に配置される複数個のプロセッサから成るクラスタを単位としてグループ分けされており、各プロセッサ毎に各々設けられ、対応するプロセッサの状態を表す状態情報を出力するか、或いは、入力された状態情報に対応するプロセッサの状態を反映させた状態情報を生成して出力する第１出力手段と、クラスタ、又は、複数のクラスタから成り相互に近接した位置に配置されるプロセッサによって構成されるクラスタ群毎に少なくとも１つ設けられ、対応するクラスタ内の全てのプロセッサ、又は対応するクラスタ群内の全てのクラスタから状態情報が各々入力され、入力された各状態情報が表すプロセッサの状態を各々反映させた単一の状態情報を生成して出力する第２出力手段と、前記第２出力手段から出力された状態情報を、予め定められた各クラスタ又は各クラスタ群に状態情報を伝播させる順序における次クラスタ又は次クラスタ群の第１出力手段又は第２出力手段に入力させる信号線と、を備え、前記第２出力手段に入力される状態情報の数が、単一のクラスタ又はクラスタ群に入力される状態情報の数よりも多いことを特徴としている。
【００１０】
本発明に係るマルチプロセッサシステムは、多数個のプロセッサがバスを介して接続されて構成されている。多数個のプロセッサを接続するバスとしては、例えばリングバス形式のバスを採用することができ、前記バスを介してプロセッサ間でデータ通信を行いながらデータ処理を進めることができる。
【００１１】
請求項１記載の発明では、上記構成のマルチプロセッサシステムにおいて、多数個のプロセッサは、相互に近接した位置に配置される複数個のプロセッサから成るクラスタにグループ分けされており、各プロセッサには、対応するプロセッサの状態を表す状態情報を出力するか、或いは、入力された状態情報に対応するプロセッサの状態を反映させた状態情報を生成して出力する第１出力手段が設けられている。
【００１２】
なお、状態情報としては、例えばプロセッサが所定の条件を満たしたか否か（例えば所定の処理を終了したか否か）を表す１ビットの情報等を用いることができる。この場合、１本の電気配線によって状態情報を伝達できるので、状態情報を伝達するために多ビット幅のバス等を新たに設ける必要がなくなり、電気配線を簡単にできるので好ましい。
【００１３】
また、各クラスタ、又は、複数のクラスタから成り相互に近接した位置に配置されるプロセッサによって構成される各クラスタ群には、対応するクラスタ内の全てのプロセッサ、又は対応するクラスタ群内の全てのクラスタから各々入力された各状態情報が表すプロセッサの状態を各々反映させた単一の状態情報を生成して出力する第２出力手段が少なくとも１つ設けられている。
【００１４】
これにより、各クラスタ内又は各クラスタ群内において、複数の第１出力手段から各々出力された複数の状態情報は、第２出力手段により単一の状態情報（単一のクラスタ内の全てのプロセッサの状態、又は単一のクラスタ群内の全てのプロセッサの状態が反映された状態情報）に統合されるので、複数の第１出力手段は略同一のタイミングで状態情報を出力することができ、単一のクラスタ内又は単一のクラスタ群内の全てのプロセッサの状態を表す状態情報を短時間で得ることができる。
【００１５】
例として図１（Ａ）には、プロセッサｎ〜ｎ＋３の４個のプロセッサから成る単一のクラスタに本発明を適用した構成の一例を示す。図１（Ａ）の例では、対応するプロセッサの状態を表す状態情報を出力する第１出力手段１０が各プロセッサに設けられており、各プロセッサの第１出力手段１０から出力された状態情報が、プロセッサｎ＋３に設けられた第２出力手段１２に各々入力され、第２出力手段１２から単一の状態情報が出力される。ここで、各プロセッサの第１出力手段１０及び第２出力手段１２からの状態情報の出力に各々１サイクルかかるものとした場合、図１（Ａ）の構成では、単一のクラスタ内の各プロセッサの状態が反映された状態情報が第２出力手段１２から２サイクルで出力されるので、状態情報を短時間で出力することができる。
【００１６】
また、例として図１（Ｂ）には、各々２個のプロセッサを備えた４個のクラスタＡ〜Ｄから成るクラスタ群に本発明を適用した構成の一例を示す。図１（Ｂ）の例では、プロセッサｎ，ｎ＋２，ｎ＋４，ｎ＋６には対応するプロセッサの状態を表す状態情報を出力する第１出力手段２０が、プロセッサｎ＋１，ｎ＋３，ｎ＋５，ｎ＋７には入力された単一の状態情報に対応するプロセッサの状態を反映させた状態情報を生成して出力する第１出力手段２２が各々設けられており、プロセッサｎ＋１，ｎ＋３，ｎ＋５，ｎ＋７の第１出力手段２２から出力された各クラスタの状態情報が、プロセッサｎ＋７に設けられた第２出力手段２４に各々入力され、第２出力手段２４から単一の状態情報が出力される。この構成では、単一のクラスタ群内の各プロセッサの状態が反映された状態情報が第２出力手段２４から３サイクルで出力されるので、状態情報を短時間で出力することができる。
【００１７】
そして請求項１記載の発明では、第２出力手段から出力された状態情報を、予め定められた各クラスタ又は各クラスタ群に状態情報を伝播させる順序における次クラスタ又は次クラスタ群の第１出力手段又は第２出力手段に入力させる信号線が設けられており、単一のクラスタ又はクラスタ群内の各プロセッサの状態が反映された状態情報は、次クラスタ又は次クラスタ群へ入力され、次クラスタ又は次クラスタ群内の各プロセッサの状態も順次反映される。従って、クラスタ又はクラスタ群の間を信号線を介して状態情報が順に伝達されることで、マルチプロセッサシステムの全てのプロセッサの状態検査、すなわち全てのプロセッサの状態が反映された状態情報の取得を行うことができる。
【００１８】
請求項１記載の発明では、バスと別に設けられた信号線によって状態情報の伝達を行うので、プロセッサ間のデータ通信を遮ることなく状態情報を伝達することができる。また、請求項１記載の発明では、同一クラスタ内又は同一クラスタ群内の各プロセッサを接続すると共に、信号線を介してクラスタ間又はクラスタ群間を接続する、という簡易な配線によって実現することができ、状態検査用のバスを設けて全てのプロセッサとワイヤードアンド接続する等のように、非常に複雑かつ配線容量や配線抵抗（電気的負荷）の大きな電気配線を設ける必要もない。
【００１９】
従って、請求項１記載の発明によれば、各プロセッサの状態検査を、非常に複雑な電気配線を必要としたり、プロセッサ間のデータ通信を遮ることなく短時間で行うことができる。なお本発明において、各プロセッサの状態検査は、例えば各プロセッサで並行して処理を実行させた際に、各プロセッサにおける処理が終了したか否かを検査し、各プロセッサにおける処理の同期をとる（所謂同期検出）場合に用いることができる。
【００２０】
また、請求項１記載の発明では、クラスタ又はクラスタ群を、相互に近接した位置に配置されるプロセッサ（例えば同一のチップ内に配置されるプロセッサ等）によって構成しているので、クラスタ内又はクラスタ群内を接続する接続線の長さを短くすることができ、前記接続線の配線容量や配線抵抗（電気的負荷）を小さくすることができる。
【００２１】
また、単一のクラスタを構成するプロセッサの数や、単一のクラスタ群を構成するクラスタの数は、配線の難易度に応じて決定することができる。例えば、単一のチップ内はプリント基板上と比較して複雑な配線も比較的容易であり、同一のチップ内に配置されるプロセッサによってクラスタ又はクラスタ群を構成すれば、前記接続線の配線が容易になるという効果が得られる。
【００２２】
また、請求項１記載の発明では、第２出力手段に入力される状態情報の数を単一のクラスタ又はクラスタ群に入力される状態情報の数よりも多くしているので、クラスタ内又はクラスタ群内を接続する接続線の数に比較して、クラスタ間又はクラスタ群間を接続する信号線の数、すなわち長さが比較的長くなる配線の数を少なくすることができ、本発明に係るマルチプロセッサシステムの製造が容易になると共に、信号線及び接続線を含む電気配線全体の電気的負荷を小さくすることができる。
【００２３】
ところで、本発明において、複数のプロセッサの状態を反映させた状態情報としては種々の情報が考えられる。例えば複数のプロセッサが各々処理を行う態様においては、例えば複数のプロセッサの中に所定の条件を満足したプロセッサが存在しているか否か（条件の部分一致）を表す情報や、複数のプロセッサの全てが所定の条件を満足したか否か（条件の全体一致）を表す情報を用いることができる。これらの状態情報は、入力された状態情報に対して異なる演算（例えば入力された状態情報を集計する論理演算）を行うことで各々生成可能である。
【００２４】
複数のプロセッサの状態を反映させた状態情報として、各種の状態情報のうち１種類の状態情報のみ必要な場合には、第２出力手段（及び、入力された状態情報に対応するプロセッサの状態を反映させた状態情報を生成して出力する機能を備えた第１出力手段）は、前記１種類の状態情報を生成するための演算を行う機能を備えていればよい。
【００２５】
一方、複数のプロセッサの状態を反映させた状態情報として複数種の状態情報が必要な場合には、請求項２に記載したように、第１出力手段（詳しくは、入力された状態情報に対応するプロセッサの状態を反映させた状態情報を生成して出力する機能を備えた第１出力手段）及び第２出力手段は、状態情報を生成するための演算として複数種の演算を選択的に行う機能を備え、外部からの指示に応じて複数種の演算を選択的に行って状態情報を生成することが好ましい。これにより、第１出力手段及び第２出力手段によって行われる演算を切り替えることで、複数のプロセッサの状態を反映させた状態情報として、複数種の状態情報を各々取得することができる。
【００２６】
【発明の実施の形態】
以下、図面を参照して本発明の実施形態の一例を詳細に説明する。図２には、本発明の一実施形態であるマルチプロセッサシステム１００が示されている。マルチプロセッサシステム１００は、Ｐ０〜Ｐ１５の合計１６個のプロセッサを備えており、これらのプロセッサは、プロセッサ間のデータ通信等に用いられる多ビット幅のリングデータバス１０２を介して環状に接続されている。図２に矢印で示されているように、プロセッサ間のデータ通信は、リングデータバス１０２上を一定の方向（図２における時計回り）にデータが伝送されることによって成される。
【００２７】
プロセッサＰ０〜Ｐ１５は、各々４個のプロセッサから成るクラスタを単位としてグループ分けされている。従って、マルチプロセッサシステム１００には４個のクラスタ０〜３が形成されており、各クラスタｉ（但し、ｉ＝０〜３）は各々プロセッサＰ(４ｉ)〜Ｐ(４ｉ＋３)から構成されている。なお、プロセッサＰ０はマルチプロセッサシステム１００全体を制御するマスタープロセッサであり、プロセッサＰ１〜Ｐ１５はマスタープロセッサＰ０の指示の下で、様々な処理を行うスレーブプロセッサである。
【００２８】
プロセッサＰ０〜Ｐ１５は、図３に示す状態検査制御回路３００を各々備えている。状態検査制御回路３００は、状態レジスタ３０１、演算ロジック３０２、状態検査結果格納レジスタ３０３、状態情報出力セレクタ３０４、ＤＦＦ（Ｄ−フリップフロップ）３０５を含んで構成されている。状態レジスタ３０１には、自プロセッサにより、自プロセッサの状態を表す（自プロセッサが所定の状態条件（例えば処理を終了したか否か）を満足したかどうかを表す）１ビットの情報（例えば状態条件を満足＝１、状態条件を満たしていない＝０）が格納される。
【００２９】
演算ロジック３０２は、４個の入力端子を備えたＡＮＤゲート３０６で構成されており、状態レジスタ３０１は接続線３０７-０を介して演算ロジック３０２の４個の入力端子のうちの１つに接続されている。各プロセッサは、各々３個の状態情報入力端子を備えており、演算ロジック３０２の４個の入力端子のうち状態レジスタ３０１に接続されていない３個の入力端子は、接続線３０７-１〜３０７-３を介して３個の状態情報入力端子と接続されている。演算ロジック３０２は、４個の入力端子を介して各々入力された４個の論理値の論理積を演算し、演算結果を出力端子を介して出力する。
【００３０】
演算ロジック３０２の出力端子は、接続線３０９を介し、状態検査結果格納レジスタ３０３に接続されていると共に、状態情報出力セレクタ３０４の２個の入力端子の一方に接続されており、状態検査結果格納レジスタ３０３には演算ロジック３０２から出力された論理値が格納され、状態情報出力セレクタ３０４には前記論理値が入力される。
【００３１】
なお、マルチプロセッサシステム１００における状態検査は、後述するように、マスタープロセッサＰ０から状態情報（初期論理値）が出力され、該状態情報がクラスタ０〜３を順次伝播してマスタープロセッサＰ０に戻ってくることによって成される。このとき、マスタープロセッサＰ０のレジスタ３０３に格納される論理値は、マルチプロセッサシステム１００の全てのプロセッサの状態検査を行った結果に相当する。レジスタ３０３は状態検査結果を格納するためのものであるので、マスタープロセッサＰ０以外のプロセッサＰ１〜Ｐ１５についてはレジスタ３０３を省略してもよい。
【００３２】
各プロセッサは各々１個の状態情報出力端子を備えており、状態情報出力セレクタ３０４の出力端子はＤＦＦ（Ｄ−フリップフロップ）３０５を介して前記状態情報出力端子に接続されている。また、状態情報出力セレクタ３０４の２個の入力端子の他方には、例えば接続線３０８を介してＶＤＤ（定電圧電源）に接続される等により、初期論理値"１"が固定的に入力される。マスタープロセッサＰ０の状態情報出力セレクタ３０４は、入力された初期論理値"１"を状態情報出力端子へ出力するように設定されており、スレーブプロセッサＰ１〜Ｐ１５の状態情報出力セレクタ３０４は、接続線３０９を介して演算ロジック３０２から入力された論理値を状態情報出力端子へ出力するように設定されている。
【００３３】
個々のクラスタを構成する４個のプロセッサは、１チップのＣＭＯＳ ＬＳＩ（以下、クラスタチップ４００という）として集積化されている。図４に示すように、個々のプロセッサには単一のリングバス入力端子及び単一のリングバス出力端子が設けられており、リングデータバス１０２が順に接続されている。また、単一のクラスタチップ４００には、単一の状態情報入力端子４０５と単一の状態情報出力端子４０６が設けられている。
【００３４】
クラスタチップ４００内の第１番目のプロセッサ４０１（すなわち、クラスタｉのプロセッサＰ(４ｉ))については、３個の状態情報入力端子４０１-１〜３のうちの２個（入力端子４０１-２、４０１-３）には、例えば接続線を介してＶＤＤに接続される等により論理値"１"が固定的に入力され、残り１個の状態情報入力端子（入力端子４０１-１）には、クラスタチップ４００の状態情報入力端子４０５（すなわち、前クラスタ（クラスタｉ−１）の第４番目のプロセッサ４０４の状態情報出力端子４０４-４）に接続されている。
【００３５】
また、クラスタチップ４００内の第２番目のプロセッサ４０２（すなわちクラスタｉのプロセッサＰ(４ｉ＋１))、第３番目のプロセッサ４０３（すなわちクラスタｉのプロセッサＰ(４ｉ＋２))については、各々３個の状態情報入力端子４０２-１〜３、４０３-１〜３が、例えば接続線を介してＶＤＤに接続される等により論理値"１"が固定的に入力される。そしてクラスタチップ４００内の第１番目〜第３番目のプロセッサ４０１〜４０３の状態情報出力端子４０１-４、４０２-４、４０３-４は、第４番目のプロセッサ４０４（すなわちクラスタｉのプロセッサＰ(４ｉ＋３))の状態情報入力端子４０４-１〜４０４-３に接続されている。
【００３６】
単一のクラスタチップ４００内の各プロセッサ４０１〜４０４を上記のように接続することで、状態検査制御回路３００を含む第１〜４番目のプロセッサ４０１〜４０４の構成を同一とすることができ、マルチプロセッサシステム１００の開発効率が向上すると共に、マルチプロセッサシステム１００の製造コストを低く抑えることができる。
【００３７】
図５に示すように、本実施形態に係るマルチプロセッサシステム１００は、一枚のプリント基板（ＰＣＢ）に４個のクラスタチップ４００-１〜４が実装され、隣接するクラスタチップの間がリングデータバスを介して接続されていると共に、状態情報入力端子・出力端子が信号線４０２-１〜４（請求項１に記載の信号線に相当）を介して相互接続されて構成されている。
【００３８】
図示は省略するが、クラスタチップ４００-１〜４にはマスタープロセッサ選択端子が各々設けられており、各クラスタチップ４００-１〜４は、マスタープロセッサＰ０を含むクラスタチップ４００-１のマスタープロセッサ選択端子のみアクティブとなり、その他のクラスタチップ４００-２〜４の同端子はインアクティブとなるようにプリント基板上で接続されている。これにより、クラスタチップ４００-１の第１番目のプロセッサＰ０のみがマスタープロセッサとして機能する。
【００３９】
次に本実施形態の作用として、マルチプロセッサシステム１００において、スレーブプロセッサＰ１〜Ｐ１５で並列に処理を実行させた際に、各スレーブプロセッサにおける処理が終了したかを検知する等の目的で行われる状態検査について説明する。なお、図示は省略するが、全てのプロセッサはクロック信号線に接続されており、各プロセッサに共通の同期クロック信号が各プロセッサに各々入力される。状態情報の送受信は、すべてこの同期クロック信号に同期して行われる。
【００４０】
マスタープロセッサＰ０において各スレーブプロセッサＰ１〜Ｐ１５の状態検査の必要が生じると、マスタープロセッサＰ０内の状態検査制御回路３００は、スレーブプロセッサへ出力すべき状態情報として、セレクタ３０４により初期論理値"１"を選択し、クロック信号線を介して入力される同期クロック信号の毎サイクルに、状態情報出力端子４０１-４を介してスレーブプロセッサＰ３へ初期論理値"１"の状態情報を繰り返し出力する。
【００４１】
また、マスタープロセッサＰ０と同一のクラスタに属するスレーブプロセッサＰ１、Ｐ２内の状態検査制御回路３００は、自プロセッサの状態情報入力端子４０２-１〜３又は４０３-１〜３から接続線３０７-１〜３を介して固定的に入力される論理値"１"と、自プロセッサの状態レジスタ３０１から接続線３０７-０を介して入力された自プロセッサの状態を表す状態情報と、の論理積演算を演算ロジック３０２で行い、演算ロジック３０２における論理積演算の結果（すなわち自プロセッサの状態を表す状態情報）を、同期クロック信号の毎サイクルに、状態情報出力端子４０２-４又は４０３-４を介してスレーブプロセッサＰ３へ繰り返し出力する。
【００４２】
このように、スレーブプロセッサＰ１、Ｐ２（すなわち各クラスタｉのプロセッサＰ(４ｉ＋１)、Ｐ(４ｉ＋２))内の状態検査制御回路３００の状態レジスタ３０１や演算ロジック３０２は、請求項１に記載の「対応するプロセッサの状態を表す状態情報を出力する第１出力手段」に対応している。
【００４３】
スレーブプロセッサＰ３の状態検査制御回路３００の演算ロジック３０２は、マスタープロセッサＰ０から状態情報入力端子４０４-３を介してスレーブプロセッサＰ３に入力された初期論理値"１"の状態情報と、状態情報入力端子４０４-２、４０４-１を介してスレーブプロセッサＰ１、Ｐ２から入力された状態情報と、自プロセッサの状態レジスタ３０１から接続線３０７-０を介して入力された自プロセッサの状態を表す状態情報と、の論理積を演算し、演算結果（すなわちクラスタチップ４００-１内の全てのスレーブプロセッサＰ１〜Ｐ３の状態が反映された状態情報）を、同期クロック信号の毎サイクルに、状態情報出力端子４０４-４、すなわちプロセッサＰ０〜Ｐ３を含むクラスタチップ４００-１の状態情報出力端子４０６を介して繰り返し出力する。
【００４４】
このように、スレーブプロセッサＰ３（すなわち各クラスタｉのプロセッサＰ(４ｉ＋３))内の状態検査制御回路３００のうち、状態レジスタ３０１は請求項１に記載の「対応するプロセッサの状態を表す状態情報を出力する第１出力手段」に対応しており、演算ロジック３０２は請求項１に記載の「クラスタ毎に少なくとも１つ設けられ、対応するクラスタ内の全てのプロセッサから状態情報が各々入力され、入力された各状態情報が表すプロセッサの状態を各々反映させた単一の状態情報を生成して出力する第２出力手段」に対応している。
【００４５】
マスタープロセッサＰ０を含むクラスタチップ４００-１から出力された状態情報は、次段のクラスタチップ４００-２の状態情報入力端子に入力される。スレーブプロセッサＰ４では、自プロセッサの状態情報入力端子４０１-２、４０１-３から接続線３０７-２、３０７-３を介して固定的に入力される論理値"１"と、自プロセッサの状態レジスタ３０１から接続線３０７-０を介して入力された自プロセッサの状態を表す状態情報と、前段のクラスタチップ４００-１からクラスタチップ４００-２の状態情報入力端子・自プロセッサの状態情報入力端子４０１-１・接続線３０７-１を介して入力される状態情報と、の論理積演算を演算ロジック３０２で行い、演算ロジック３０２における論理積演算の結果（すなわち前段のクラスタチップ４００-１内の全てのスレーブプロセッサ及び自プロセッサの状態が反映された状態情報）を、同期クロック信号の毎サイクルに、状態情報出力端子４０１-４を介してスレーブプロセッサＰ７へ出力する。
【００４６】
このように、スレーブプロセッサＰ４（すなわち各クラスタｉのプロセッサＰ(４ｉ))内の状態検査制御回路３００の状態レジスタ３０１及び演算ロジック３０２は、請求項１に記載の「入力された状態情報に対応するプロセッサの状態を反映させた状態情報を生成して出力する第１出力手段」に対応している。
【００４７】
なお、クラスタチップ４００-２の他のプロセッサＰ５〜Ｐ７の動作は、クラスタチップ４００-１のプロセッサＰ１〜Ｐ３の動作と同様であり、クラスタチップ４００-２からは、クラスタチップ４００-１及び４００-２内の全てのスレーブプロセッサの状態が反映された状態情報が出力される。
【００４８】
上記のように、状態情報が各クラスタチップ４００-１〜４を順次伝搬することで、最後にはマスタープロセッサＰ０の状態情報入力端子４０１-１に最終結果（マルチプロセッサシステムの全てのスレーブプロセッサＰ１〜Ｐ１５の状態が反映された状態情報：全てのプロセッサが状態条件を満足していれば論理値"１"、状態条件の満足していないプロセッサがあれば論理値"０"になる）が同期クロック信号の毎サイクルに繰り返し入力されることになる。マスタープロセッサＰ０の状態レジスタ３０１には論理値"１"が固定的に格納されており、演算ロジック３０２からは状態情報入力端子４０１-１を介して入力された状態情報の論理値がそのまま出力され、演算ロジック３０２から出力された論理値は状態検査結果格納レジスタ３０３に同期クロック信号の毎サイクルに格納される。
【００４９】
従って、マスタープロセッサＰ０上で実行されるソフトウェア等により、状態検査結果格納レジスタ３０３に格納されている論理値を監視することで、マルチプロセッサシステム１００の全てのスレーブプロセッサＰ１〜Ｐ１５の状態を検査することができる。
【００５０】
図６には、本実施形態に係るマルチプロセッサシステム１００における状態検査のタイミングチャートを示す。図６では同期クロック信号の各サイクルにマスタープロセッサＰ０から各々出力される状態情報に「a,b,c,…」の符号を付して区別している。
【００５１】
このタイミングチャートにおいて、或るサイクルでマスタープロセッサＰ０から出力された状態情報（例えば符号ａが付された状態情報）の伝播を追跡しても明らかなように、マスタープロセッサＰ０からスレーブプロセッサＰ３へ状態情報ａが出力されるサイクルと同一のサイクルに、マスタープロセッサＰ０と同一のクラスタ０のスレーブプロセッサＰ１、Ｐ２からスレーブプロセッサＰ３へも状態情報ａが出力され、次のサイクルではスレーブプロセッサＰ３から次段のクラスタ１のスレーブプロセッサＰ４へ状態情報ａが出力される。従って、４個のプロセッサから成る単一のクラスタ当り２サイクルで状態情報が伝播することになり、クラスタ数（＝４）×２＝８サイクルで、全てのスレーブプロセッサの状態が反映された状態情報がマスタープロセッサＰ０に入力されることになる。
【００５２】
図６のタイミングチャートでは、スレーブプロセッサＰ１〜Ｐ１５において、状態条件が成立し状態レジスタ３０１に格納されている値が書き換わったタイミングを、細線の矢印と太線の矢印の境界として各々示している。図６の例では、スレーブプロセッサＰ１、Ｐ８が最も遅いタイミングで状態条件が成立しているが、このタイミングから７サイクル後には、全てのスレーブプロセッサで状態条件が成立した（同期成立）ことを表す状態情報（論理値"１"）がマスタープロセッサＰ０に入力され、マスタープロセッサＰ０が同期成立を検知することができる。
【００５３】
図７には比較例として、リングデータバス１０２を介して状態検査パケットを伝播させて状態検査を行う従来方式のタイミングチャートを示す。この従来方式では、状態検査パケットが全てのプロセッサの間を順に伝播していくため、個々のスレーブプロセッサの状態検査パケット受信及び送信が１サイクルで完了するとしても（図７はこの場合を示す）、マスタープロセッサＰ０から状態検査パケットが送信されてから、全てのスレーブプロセッサの状態が反映された状態情報パケットがマスタープロセッサＰ０で受信される迄にプロセッサの個数分のサイクル（図７の例では１６サイクル）を要する。
【００５４】
このため、全てのプロセッサで状態条件が成立してから状態情報パケットによって通知される状態情報が論理値"１"に変化する迄にも、最後に状態条件が成立したスレーブプロセッサから見て、マスタープロセッサに到達する迄の経路上に存在するプロセッサの個数分のサイクル（図７の例では１５サイクル）を要することになる。
【００５５】
従って、図６のタイミングチャートを図７のタイミングチャートと比較しても明らかなように、本実施形態に係るマルチプロセッサシステム１００によれば、全てのスレーブプロセッサで状態条件が成立してからマスタープロセッサＰ０がこれを同期成立として検知する迄の時間が、従来方式と比較して明らかに短縮されていることが理解できる。また、状態検査によってリングデータバス１０２が占有されることもなく、プロセッサ間のデータ通信を、リングデータバス１０２を介し状態検査と並行して行うことができる。
【００５６】
マルチプロセッサシステム１００では、クラスタｉ内の最終段のプロセッサＰ(４ｉ＋３)に入力される状態情報の数が、単一のクラスタに入力される状態情報の数よりも多いので、比較的配線が困難で配線の長さも長くなるクラスタチップ間の配線の数に比して、比較的配線が容易で配線の長さも短いクラスタチップ内の配線の数が多くなっている。これにより、マルチプロセッサシステム１００の製造が容易になると共に電気配線全体の電気的負荷も小さくなる。
【００５７】
次に本発明の他の実施形態について説明する。図８には、各プロセッサに設けられる状態検査制御回路の他の例が示されている。図８に示す状態検査制御回路５００は、図３に示す状態検査制御回路３００と同様に、状態レジスタ５０１、演算ロジック５０２、状態検査結果格納レジスタ５０３、状態情報出力セレクタ５０４、ＤＦＦ（Ｄ−フリップフロップ）５０５を含んで構成されている。状態検査制御回路５００の演算ロジック５０２は、４個の入力端子を備えたＡＮＤゲート５０６と４個の入力端子を備えたＯＲゲート５０７を備えており、状態レジスタ５０１はＡＮＤゲート５０６及びＯＲゲート５０７の４個の入力端子のうちの１つに各々接続されている。
【００５８】
また、状態検査制御回路５００はセレクタ５０８、５０９、５１０、５１１を備えている。セレクタ５０８の２個の入力端子のうちの一方は、例えば接続線を介してＶＤＤ（定電圧電源）に接続される等により論理値"１"が固定的に入力され、前記２個の入力端子のうちの他方は、例えば接続線を介してグランドに接続される等により論理値"０"が固定的に入力される。セレクタ５０８の出力端はセレクタ５０９、５１０、５１１の２個の入力端子の一方に各々接続されており、更に状態情報出力セレクタ５０４の２個の入力端子の一方にも接続されている。
【００５９】
セレクタ５０９、５１０、５１１の２個の入力端子の他方は、プロセッサに設けられている３個の状態情報入力端子の何れかに各々接続されており、セレクタ５０９、５１０、５１１の出力端子は、ＡＮＤゲート５０６及びＯＲゲート５０７の４個の入力端子のうち状態レジスタ３０１に接続されていない３個の入力端子の何れかに各々接続されている。
【００６０】
セレクタ５０９、５１０、５１１の選択信号入力端子は、プロセッサに設けられた３個の状態情報入力選択端子の何れかに各々接続されている。プリント基板上にプロセッサ（クラスタチップ）が実装されることにより、セレクタ５０９、５１０、５１１には３個の状態情報入力選択端子を介して論理値"０"又は"１"の状態情報入力選択信号が各々固定的に入力され、セレクタ５０９、５１０、５１１は固定的に入力される状態情報入力選択信号に従って、一方の入力端子を介して入力される情報（論理値）を固定的にＡＮＤゲート５０６及びＯＲゲート５０７へ出力する。
【００６１】
すなわち、他のプロセッサ又はクラスタから状態情報が入力されないプロセッサ（例えば図２のマルチプロセッサシステム１００において、クラスタｉのプロセッサＰ(４ｉ＋１)、Ｐ(４ｉ＋２))については、セレクタ５０９、５１０、５１１の各々において、セレクタ５０８から入力された論理値がＡＮＤゲート５０６及びＯＲゲート５０７へ固定的に出力されるように、各セレクタに状態情報入力選択信号が入力される。
【００６２】
また、同一のクラスタの他の全てのプロセッサから（全ての状態情報入力端子を介して）状態情報が入力されるプロセッサ（例えば図２のマルチプロセッサシステム１００において、クラスタｉのプロセッサＰ(４ｉ＋３))については、セレクタ５０９、５１０、５１１の各々において、状態情報入力端子を介して入力された状態情報がＡＮＤゲート５０６及びＯＲゲート５０７へ固定的に出力されるように、各セレクタに状態情報入力選択信号が入力される。
【００６３】
更に、３個の状態情報入力端子のうちの一部の端子から状態情報が入力されるプロセッサ（例えば図２のマルチプロセッサシステム１００において、クラスタｉのプロセッサＰ(４ｉ))については、セレクタ５０９、５１０、５１１のうち状態情報入力端子を介して状態情報が入力されるセレクタからは、状態情報入力端子を介して入力された状態情報がＡＮＤゲート５０６及びＯＲゲート５０７へ固定的に出力され、状態情報が入力されないセレクタからは、セレクタ５０８から入力された論理値がＡＮＤゲート５０６及びＯＲゲート５０７へ固定的に出力されるように、各セレクタに状態情報入力選択信号が入力される。
【００６４】
また、ＡＮＤゲート５０６の出力端子はセレクタ５１２の２個の入力端子の一方に、ＯＲゲート５０７の出力端子はセレクタ５１２の２個の入力端子の他方に各々接続されており、セレクタ５１２の出力端子は状態検査結果格納レジスタ５０３に接続されていると共に、状態情報出力セレクタ５０４の２個の入力端子の一方に接続されている。
【００６５】
セレクタ５１２の選択信号入力端子及び前述したセレクタ５０８の選択信号入力端子は自プロセッサに接続されており、自プロセッサから演算選択信号が入力される。この演算選択信号により、ＡＮＤゲート５０６の論理演算の結果がセレクタ５１２から出力される場合にはセレクタ５０８から論理値"１"が出力され、ＯＲゲート５０７の論理演算の結果がセレクタ５１２から出力される場合にはセレクタ５０８から論理値"０"が出力される。
【００６６】
これにより、全てのプロセッサの状態検査制御回路５００を、演算選択信号によりセレクタ５１２からＡＮＤゲート５０６の論理演算の結果が出力される状態にしておき、マスタープロセッサＰ０からスレーブプロセッサＰ４へ初期論理値"１"の状態情報を出力すれば、状態検査制御回路３００と同様に、８サイクル後には全てのプロセッサが状態条件を満足したか否かを表す状態情報が得られると共に、全てのプロセッサの状態検査制御回路５００を、演算選択信号によりセレクタ５１２からＯＲゲート５０７の論理演算の結果が出力される状態にしておき、マスタープロセッサＰ０からスレーブプロセッサＰ４へ初期論理値"０"の状態情報を出力すれば、８サイクル後には状態条件を満足したプロセッサが存在しているか否かを表す状態情報が得られる。
【００６７】
このように、状態検査制御回路を上記の構成にすることにより、プロセッサ間やクラスタ間の電気配線数の増大を招くことなく、２種類の状態情報を各々取得することができる。なお、演算選択信号により全てのプロセッサの状態検査制御回路５００の状態を切り替えることは、リングデータバス１０２を介し、マスタープロセッサＰ０から全てのプロセッサに対して状態検査制御回路５００の状態の切り替えを指示するパケットを送信することで行うことができる。上述した状態検査制御回路５００は請求項２に記載の第１出力手段及び第２出力手段に対応している。
【００６８】
また、図９及び図１０には、本発明の他の実施形態に係るマルチプロセッサシステム６００が示されている。マルチプロセッサシステム６００は、マルチプロセッサシステム１００に対してトポロジーを変更し、ＣＭＯＳ ＬＳＩチップ（クラスタチップ）、複数のクラスタチップを備えたマルチチップモジュール（ＭＣＭ：クラスタ群）、複数のマルチチップモジュールが実装されたＰＣＢ（プリント基板）の各段階において、状態情報を伝達するための電気配線の密度を変化させたものである。なお、全ての図示は省略するが、マルチプロセッサシステム６００は１２８個のプロセッサを備えている。
【００６９】
図９に示すように、単一のクラスタチップ内には８個のプロセッサが設けられており、図示は省略するが、各プロセッサには、７個の状態情報入力端子と１個の状態情報出力端子が各々設けられている。単一のクラスタチップ内の第１番目〜第７番目のプロセッサＰ０〜Ｐ６の状態情報出力端子は、同一クラスタチップ内の第８番目のプロセッサＰ７の７個の状態情報入力端子の何れかに各々接続されており、プロセッサＰ０〜Ｐ６から出力された状態情報はプロセッサＰ７に各々入力される。これにより、Ｐ７からは同一クラスタチップ内の全てのプロセッサの状態が反映された状態情報が出力される。
【００７０】
また図１０に示すように、単一のマルチチップモジュール（クラスタ群）には４個のクラスタチップが設けられている。個々のクラスタチップには３個の状態情報入力端子と、自クラスタチップ内のプロセッサＰ７の状態情報出力端子に接続される１個の状態情報出力端子が各々設けられている（図９参照）。単一のモジュール内の第１番目〜第３番目のクラスタチップの状態情報出力端子は、同一モジュール内の第４番目のクラスタチップの３個の状態情報入力端子に接続されており、該クラスタチップのプロセッサＰ１には、第１番目〜第３番目のクラスタチップから出力された状態情報が各々入力される。
【００７１】
これにより、第４番目のクラスタチップのプロセッサＰ０からは、他のクラスタチップの全てのプロセッサの状態及び自プロセッサの状態が反映された状態情報が出力され、第４番目のクラスタチップ（のプロセッサＰ７）からは、同一モジュール内の全てのプロセッサの状態が反映された状態情報が出力される。上記より明らかなように、マルチプロセッサシステム６００において、第４番目のクラスタチップのプロセッサＰ０の状態検査制御回路は、第４番目のクラスタチップのプロセッサＰ７の状態検査制御回路と共に、本発明の第２出力手段としての機能を備えている。
【００７２】
また、単一のプリント基板上には４個のモジュールが設けられており、個々のモジュールには状態情報入力端子及び状態情報出力端子が各々１個ずつ設けられている。各モジュールの状態情報出力端子は後段のモジュールの状態情報入力端子に接続されている。なお、各プロセッサ及び各クラスタチップの状態情報入力端子のうち、状態情報が入力されない入力端子については、各プロセッサが内蔵している状態検査制御回路の演算ロジックに応じてプルダウン（論理値"０"が入力）またはプルアップ（論理値"１"が入力）される。
【００７３】
上述した構成のマルチプロセッサシステム６００では、８個のプロセッサから成る単一のクラスタチップ当り２サイクルで状態情報が伝播し、４個のクラスタチップから成る単一のモジュール当り４サイクルで状態情報が伝播することになり、モジュール数（＝４）×４＝１６サイクルで、全てのスレーブプロセッサの状態が反映された状態情報がマスタープロセッサＰに入力されることになる。
【００７４】
マルチプロセッサシステム６００では、単一のクラスタチップ内のプロセッサ数（＝８）を、単一のモジュール内のクラスタチップ数及びプリント基板内のモジュール数（＝４）よりも多くしており、単一のクラスタチップ内の最終段のプロセッサＰ７に入力される状態情報の数が、単一のクラスタチップや単一のモジュール（クラスタ群）に入力される状態情報の数よりも多いので、比較的配線が困難で配線の長さも長くなるクラスタチップ間やモジュール間の配線の数に比して、比較的配線が容易で配線の長さも短いクラスタチップ内の配線の数が多くなっている。これにより、マルチプロセッサシステム１００の製造が容易になると共に電気配線全体の電気的負荷も小さくなる。
【００７５】
なお、上記のマルチプロセッサシステム６００では、クラスタチップ内・マルチチップモジュール内・プリント基板内の３段階における電気配線の密度を変化させていたが、複数枚のプリント基板から成る大規模なマルチプロセッサシステムを構築する等の場合に、プリント基板間を含む４段階における電気配線の密度を、プリント基板間の電気配線の密度が最小となるように変化させてもよい。
【００７６】
また、上記では１ビットの状態情報を伝播させるようにしていたが、本発明はこれに限定されるものではなく、状態情報を複数ビットで構成し、この状態情報を例えばシリアルに伝播させるようにしてもよい。
【００７７】
また、図２に示したマルチプロセッサシステム１００では、或るクラスタから出力された状態情報が次段のクラスタの第１番目のプロセッサに入力される構成を採用していたが、これに限定されるものではなく、第１番目以外の他のプロセッサに状態情報が入力されるようにしてもよい。特に最終プロセッサ（単一のクラスタがＮ個のプロセッサから構成されている場合の第Ｎ番目のプロセッサ）に入力されるようにすれば、状態情報の伝播速度を更に高速化することができる。
【００７８】
更に、図１０に示したマルチプロセッサシステム６００においても、上記と同様に、或るクラスタ群（モジュール）から出力された状態情報が次段のクラスタ群の第１番目のクラスタに入力される構成を採用していたが、これに限定されるものではなく、第１番目以外の他のクラスタに状態情報が入力されるようにしてもよい。
【００７９】
【発明の効果】
以上説明したように請求項１記載の発明は、バスを介して接続されたマルチプロセッサシステムの多数個のプロセッサを、相互に近接した位置に配置される複数個のプロセッサから成るクラスタを単位としてグループ分けし、対応するプロセッサの状態を表す状態情報を出力するか、或いは、入力された状態情報に対応するプロセッサの状態を反映させた状態情報を生成して出力する第１出力手段を各プロセッサ毎に各々設け、対応するクラスタ内の全てのプロセッサ、又は対応するクラスタ群内の全てのクラスタから各々入力された各状態情報が表すプロセッサの状態を各々反映させた単一の状態情報を生成して出力する第２出力手段を、クラスタ又は複数のクラスタから成るクラスタ群毎に少なくとも１つ設け、第２出力手段から出力された状態情報を信号線によって、予め定められた各クラスタ又は各クラスタ群に状態情報を伝播させる順序における次クラスタ又は次クラスタ群の第１出力手段又は第２出力手段に入力させ、第２出力手段に入力される状態情報の数を、単一のクラスタ又はクラスタ群に入力される状態情報の数よりも多くしているので、各プロセッサの状態検査を、非常に複雑な電気配線を必要としたり、プロセッサ間のデータ通信を遮ることなく短時間で行うことができると共に、マルチプロセッサシステムの製造が容易になり、信号線及び接続線を含む電気配線全体の電気的負荷を小さくすることができる、という優れた効果を有する。
【００８２】
請求項２記載の発明は、請求項１の発明において、第１出力手段及び第２出力手段は、状態情報を生成するための演算として複数種の演算を選択的に行う機能を備え、外部からの指示に応じて複数種の演算を選択的に行って状態情報を生成するので、上記効果に加え、複数のプロセッサの状態を反映させた状態情報として、複数種の状態情報を各々取得することができる、という効果を有する。
【図面の簡単な説明】
【図１】  （Ａ）及び（Ｂ）は本発明を説明するための単一のクラスタ又は単一のクラスタ群内の構成の一例を示す概略ブロック図である。
【図２】  本実施形態に係るマルチプロセッサシステムの一例を示す概念図である。
【図３】  図２のマルチプロセッサシステムにおいて、各プロセッサに設けられている状態検査制御回路の構成を示す概略ブロック図である。
【図４】  単一のクラスタチップ内の接続関係を示す概略図である。
【図５】  プリント基板上における各クラスタチップの配置及び接続関係を示す概略図である。
【図６】  図２のマルチプロセッサシステムにおける状態検査のタイミングチャートである。
【図７】  図６の比較例として、従来方式を採用した場合の状態検査のタイミングチャートである。
【図８】  状態検査制御回路の他の構成を示す概略ブロック図である。
【図９】  マルチプロセッサシステムの他の例における単一のクラスタチップ内の接続関係を示す概略図である。
【図１０】  マルチプロセッサシステムの他の例における各クラスタ群内の接続関係を示す概略図である。
【符号の説明】
１００  マルチプロセッサシステム
３００  状態検査制御回路
３０２  演算ロジック
５００  状態検査制御回路
５０２  演算ロジック
６００  マルチプロセッサシステム
【図１】
0004049957.tif 000002
【図２】
0004049957.tif 000003
【図３】
0004049957.tif 000004
【図４】
0004049957.tif 000005
【図５】
0004049957.tif 000006
【図６】
0004049957.tif 000007
【図７】
0004049957.tif 000008
【図８】
0004049957.tif 000009
【図９】
0004049957.tif 000010
【図１０】
0004049957.tif 000011