(57)【要約】【課題】  ＰＣＩ−Ｅｘｐｒｅｓｓバスのようなシリアルバスにより複数のＣＰＵノードを相互接続したコンピュータシステムにおいて、ＣＰＵノードの増減等の要因により構成が変化した場合でも、システム動作を可能にする。【解決手段】  スイッチユニット２０２のコントローラ２２２は、スイッチ２２１の各ポートのリンクが確立する前にＣＰＵユニット２０１−０〜２０１−３が実装されているか否かを確認し、実装されているＣＰＵユニットの１つが接続されているポートをアップストリーム・ポートに設定し、他のポートをダウンストリーム・ポートに設定する制御を行う。【選択図】図２
2006209456.tif 000002
【特許請求の範囲】
【請求項１】
複数の処理ノードをシリアルバスにより相互接続する相互接続装置であって、
前記複数の処理ノードに接続される複数のポートを有し、該複数のポートのうちの１つをアップストリーム・ポートに設定し、他のポートをダウンストリーム・ポートに設定して、ポート間でデータ転送経路の切り替えを行うスイッチ手段と、
前記スイッチ手段の各ポートのリンクが確立する前に前記複数の処理ノードの各々が実装されているか否かを確認し、前記スイッチ手段の複数のポートのうち、実装されている処理ノードの１つが接続されているポートを前記アップストリーム・ポートに設定し、他のポートを前記ダウンストリーム・ポートに設定するように、該スイッチ手段を制御する制御手段と
を備えることを特徴とする相互接続装置。
【請求項２】
前記制御手段は、前記スイッチ手段のアップストリーム・ポートおよびダウンストリーム・ポートが設定された後、実装されている処理ノードが接続されている各ポートのリンクが確立したか否かを監視し、リンクが確立しなければ該スイッチ手段をリセットして、別のポートをアップストリーム・ポートに設定するように該スイッチ手段を制御することを特徴とする請求項１記載の相互接続装置。
【請求項３】
前記スイッチ手段の各ポートは、データ転送先アドレスのアドレスマップを格納するレジスタ手段を含み、前記制御手段は、アップストリーム・ポートに設定すべきポートの該レジスタ手段にアップストリーム・ポート用のアドレスマップの情報を書き込み、ダウンストリーム・ポートに設定すべきポートの該レジスタ手段にダウンストリーム・ポート用のアドレスマップの情報を書き込むことを特徴とする請求項１または２記載の相互接続装置。
【請求項４】
前記スイッチ手段の複数のポートのそれぞれをアップストリーム・ポートに設定した場合のそれぞれ異なる複数のアドレスマップの情報を格納するメモリ手段をさらに備え、前記スイッチ手段の各ポートは、データ転送先アドレスのアドレスマップを格納するレジスタ手段を含み、前記制御手段は、いずれのポートをアップストリーム・ポートに設定するかに応じて該メモリ手段内の対応するアドレスマップの情報が各ポートのレジスタ手段に設定されるように、該メモリ手段を制御することを特徴とする請求項１または２記載の相互接続装置。
【請求項５】
処理ユニットをそれぞれ有する複数の処理ノードと、
前記複数の処理ノードをシリアルバスにより相互接続するための複数のポートを有し、該複数のポートのうちの１つをアップストリーム・ポートに設定し、他のポートをダウンストリーム・ポートに設定して、ポート間でデータ転送経路の切り替えを行うスイッチ手段と、
前記スイッチ手段の各ポートのリンクが確立する前に前記複数の処理ノードの各々が実装されているか否かを確認し、前記スイッチ手段の複数のポートのうち、実装されている処理ノードの１つが接続されているポートを前記アップストリーム・ポートに設定し、他のポートを前記ダウンストリーム・ポートに設定するように、該スイッチ手段を制御する制御手段と
を備えることを特徴とするコンピュータシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のＣＰＵ（中央処理装置）ノードから構成されるコンピュータシステムのノード間をシリアルバスにより相互接続する装置および方法に関する。より具体的には、高速シリアルバスであるＰＣＩ−Ｅｘｐｒｅｓｓバスにより複数のＣＰＵノードが相互接続される構成のコンピュータシステムにおいて、相互接続に用いられるＰＣＩ−Ｅｘｐｒｅｓｓスイッチとその制御装置に関する。
【背景技術】
【０００２】
近年、データの電子化の進展に伴い、コンピュータシステムが処理しなければならないデータの量が急激に増大し続けている。この要求に対応するために、コンピュータシステム内部を接続する相互接続技術も、高速かつ大容量のデータ転送を可能にすべく、進歩を続けている。
【０００３】
従来は、ＰＣＩ（Peripheral Component Interconnect ）バスがコンピュータシステム内部の相互接続機能として広く利用されてきたが、高速かつ大容量でありながら実装コストの低いシリアルタイプの相互接続機能が、近い将来、主流になると考えられている。特に、ＰＣＩバスの後継としてＰＣＩ−ＳＩＧ（Special Interest Group）により策定されたシリアルタイプの相互接続機能であるＰＣＩ−Ｅｘｐｒｅｓｓバスは、デスクトップＰＣ（Personal Computer ）から大規模サーバやストレージ装置まで、様々なタイプのコンピュータシステムで広く利用されることが期待されている。
【０００４】
図１８は、従来のＰＣＩバスを用いたコンピュータシステムを示している。図１８のコンピュータシステムは、ＣＰＵ１１、メモリコントローラ（ＭＣＨ）１２、複数のメモリ１３−１〜１３−４、およびＩ／Ｏコントローラ（ＩＣＨ）１４より構成される。Ｉ／Ｏコントローラ１４は、複数のＰＣＩバスを有し、ＰＣＩスロット１５−１〜１５−４にはＰＣＩデバイスが搭載されたカードを実装することができる。ＰＣＩバスの動作周波数は３３〜１３３ＭＨｚであり、バス幅は３２ビットと６４ビットの２種類がある。スロット当たりのバスのバンド幅は最大で両方向の合計が１ＧＢ／ｓとなる。
【０００５】
図１９は、図１８のＰＣＩバスがＰＣＩ−Ｅｘｐｒｅｓｓバスで置き換えられた例を示している。図１９のコンピュータシステムは、ＣＰＵ１１、メモリコントローラ１２、およびメモリ１３−１〜１３−４より構成される。メモリコントローラ１２は、複数のＰＣＩ−Ｅｘｐｒｅｓｓバスを有し、ＰＣＩ−Ｅｘｐｒｅｓｓスロット１６−１〜１６−４にはＰＣＩ−Ｅｘｐｒｅｓｓデバイスが搭載されたカードを実装することができる。スロット当たりのバンド幅は片方向当たり１ＧＢ／ｓとなる。
【０００６】
シリアルバスであるＰＣＩ−Ｅｘｐｒｅｓｓバスは、パラレルバスであるＰＣＩバスに比べて信号数が少ないため、ハードウェアのコストを削減する効果がある。例えば、チップセットを削減でき、ボード上のワイヤを削減でき、コネクタを小さくすることができる。また、同時にＰＣＩバスの２倍以上のバンド幅を提供することができるため、高速かつ高性能化の要求を満たすことができる。
【０００７】
また、複数のコンピュータと複数の周辺デバイスからなるシステムにおいて、各コンピュータが使用する周辺デバイスを任意に選択するハブボックスも知られている（例えば、特許文献１参照）。
【特許文献１】特開２００１−２２９１１９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
上述したように、ＰＣＩ−Ｅｘｐｒｅｓｓバスは高性能かつ低コストの相互接続機能として広い分野での適用が期待されているが、ＰＣＩ−Ｅｘｐｒｅｓｓバスは論理的にはＰＣＩバスのアーキテクチャを踏襲しているため、複数のＣＰＵノードを接続する目的で使用する場合に次のような問題が生じる。
【０００９】
図２０は、図１９のような構成を有するＣＰＵノード２１−１〜２１−８を、複数のポートを有するＰＣＩ−Ｅｘｐｒｅｓｓスイッチ２２で接続した、仮想的なコンピュータシステムを示している。ＰＣＩ−Ｅｘｐｒｅｓｓバスの規格では、スイッチ２２の１つのポートはアップストリーム・ポートと呼ばれ、システム全体の初期化を行う等の特別な役割を果たす。したがって、スイッチ２２のアップストリーム・ポートに接続された特定のＣＰＵノードが特権的な地位を占め、このＣＰＵノードがなければスイッチ２２は動作することができない。
【００１０】
一方、複数のＣＰＵノードより構成されるようなサーバやストレージ装置では、製品の柔軟性を高めるため、各ＣＰＵノードは製品構成により増減可能なユニットとして扱われることがある。この場合、特定のＣＰＵノードがなければＰＣＩ−Ｅｘｐｒｅｓｓスイッチが動作できず、結果としてシステムが動作できなくなる事態は避ける必要がある。
【００１１】
本発明の課題は、ＰＣＩ−Ｅｘｐｒｅｓｓバスのようなシリアルバスにより複数のＣＰＵノードを相互接続したコンピュータシステムにおいて、ＣＰＵノードの増減等の要因により構成が変化した場合でも、システム動作を可能にすることである。
【課題を解決するための手段】
【００１２】
図１は、本発明の相互接続装置の原理図である。図１の相互接続装置は、スイッチ手段１０１および制御手段１０２を備え、複数の処理ノード１０３−０〜１０３−ｎをシリアルバスにより相互接続する。
【００１３】
スイッチ手段１０１は、処理ノード１０３−０〜１０３−ｎに接続される複数のポート１０４−０〜１０４−ｎを有し、それらのポートのうちの１つをアップストリーム・ポートに設定し、他のポートをダウンストリーム・ポートに設定して、ポート間でデータ転送経路の切り替えを行う。
【００１４】
制御手段１０２は、スイッチ手段１０１の各ポートのリンクが確立する前に処理ノード１０３−０〜１０３−ｎの各々が実装されているか否かを確認し、スイッチ手段１０１のポート１０４−０〜１０４−ｎのうち、実装されている処理ノードの１つが接続されているポートをアップストリーム・ポートに設定し、他のポートをダウンストリーム・ポートに設定するように、スイッチ手段１０１を制御する。
【００１５】
制御手段１０２は、スイッチ手段１０１のリンクが確立して切り替え動作が可能になる前に、処理ノード１０３−０〜１０３−ｎが実装されているか否か、すなわち、システム内に存在するか否かを確認する。そして、処理ノードの存在が確認できたポートの中からアップストリーム・ポートに設定すべきポートを選択し、そのポートがアップストリーム・ポートとして動作し、残りのポートがダウンストリーム・ポートとして動作するように、スイッチ手段１０１を制御する。
【００１６】
相互接続装置は、例えば、後述する図２のスイッチユニット２０２−０または２０２−１に対応し、処理ノード１０３−０〜１０３−ｎは、例えば、図２のＣＰＵユニット２０１−０〜２０１−３に対応する。また、スイッチ手段１０１は、例えば、図２のＰＣＩ−Ｅｘｐｒｅｓｓスイッチ２２１−０または２２１−１に対応し、制御手段１０２は、例えば、図２のＢＭＣ２２２−０または２２２−１に対応する。
【発明の効果】
【００１７】
本発明によれば、ＰＣＩ−Ｅｘｐｒｅｓｓスイッチを使って複数のＣＰＵノードを相互接続したコンピュータシステムにおいて、ＣＰＵノードの増減の要因等によりシステム構成が変化した場合でも、アップストリーム・ポートのＣＰＵノードを割り当ててシステムを動作させることができる。これにより、ＰＣＩ−Ｅｘｐｒｅｓｓ規格特有のアップストリーム・ポートの特殊性が隠蔽される。
【発明を実施するための最良の形態】
【００１８】
以下、図面を参照しながら、本発明を実施するための最良の形態を詳細に説明する。
本実施形態では、複数のＣＰＵノードがＰＣＩ−Ｅｘｐｒｅｓｓスイッチで接続されるシステムを想定する。そして、各ＣＰＵノードのプリント基板ユニット（ＣＰＵユニット）およびＰＣＩ−Ｅｘｐｒｅｓｓスイッチのプリント基板ユニット（スイッチユニット）に基板管理コントローラ（Board Management Controller ，ＢＭＣ）を搭載する。
【００１９】
ＢＭＣは、プロセッサとＢＭＣ間通信機能を有する自律的に動作可能なモジュールであり、各プリント基板ユニットのリセットや各種の監視制御を行う。スイッチユニットに搭載されるＢＭＣは、ＰＣＩ−Ｅｘｐｒｅｓｓスイッチのアップストリーム・ポートを切り替え、コンフィギュレーションを行う機能と、どのＣＰＵユニットが実装されているかを確認する機能と、ＰＣＩ−Ｅｘｐｒｅｓｓスイッチの各ポートのリンクが確立したかどうかを確認する機能とを有する。
【００２０】
ＣＰＵユニット上には、ＰＣＩ−Ｅｘｐｒｅｓｓスイッチとの接続部にアドレス変換モジュールが搭載される。
ＣＰＵユニットとスイッチユニット上の各ＢＭＣは相互に通信を行い、電源投入後に動作可能なＣＰＵユニットをアップストリーム・ポートのデバイスとして選択するように、スイッチのアップストリーム・ポートの切り替えとコンフィギュレーションを行い、ＣＰＵユニットのアドレス変換モジュールの設定を行う。これにより、システムを構成するＣＰＵユニットの数が変化した場合でも、必ずアップストリーム・ポートのＣＰＵユニットが割り当てられるので、システムが動作可能となる。
【００２１】
図２は、実施形態のコンピュータシステムの構成図である。ここでは、一例としてディスクアレイ装置が示されているが、本発明の適用分野はこれに限定されるわけではない。図２のディスクアレイ装置は、４つのＣＰＵユニット２０１−０〜２０１−３、２つのスイッチユニット２０２−０、２０２−１、および４つのディスクアレイ２０３−０〜２０３−３から構成され、ＣＰＵユニット２０１−０〜２０１−３とスイッチユニット２０２−０および２０２−１の間は、ＰＣＩ−Ｅｘｐｒｅｓｓバスで接続されている。各ディスクアレイは、複数のディスク装置から構成される。
【００２２】
ＣＰＵユニット２０１−ｉ（ｉ＝０，１，２，３）は、直接メモリアクセス（Direct Memory Access，ＤＭＡ）コントローラ２１１−ｉ、ＣＰＵ２１２−ｉ、メモリコントローラ２１３−ｉ、メモリ２１４−ｉ、ホストインタフェース（ＨＩ）２１５−ｉ、ディスクインタフェース（ＤＩ）２１６−ｉ、およびＢＭＣ２１７−ｉを備える。
【００２３】
メモリコントローラ２１３−ｉは、ＣＰＵ２１２−ｉの制御に従って、ＤＭＡコントローラ２１１−ｉとメモリ２１４−ｉの間のデータ転送、および、メモリ２１４−ｉとホストインタフェース２１５−ｉまたはディスクインタフェース２１６−ｉの間のデータ転送を行う。
【００２４】
ホストインタフェース２１５−ｉおよびディスクインタフェース２１６−ｉは、それぞれ複数のポートを有する。ホストインタフェース２１５−ｉは、外部のホストコンピュータ２０４−ｉと通信し、ディスクインタフェース２１６−ｉは、ディスクアレイ２０３−０〜２０３−３へのリード／ライトアクセスを実行する。
【００２５】
ホストインタフェース２１５−ｉでは、接続されるホストコンピュータ２０４−ｉの種類とデータ転送用途に応じて、ファイバチャネル、ｉＳＣＳＩ（Internet Small Computer Systems Interface ）、ＥＳＣＯＮ（Enterprise System Connection）等の様々なプロトコルが使用される。ディスクインタフェース２１６−ｉでは、ディスクアレイとして利用されるディスク装置の種類に応じて、ファイバチャネルやシリアルＡＴＡ（AT Attachment ）等のプロトコルが使用される。
【００２６】
スイッチユニット２０２−ｊ（ｊ＝０，１）は、ＰＣＩ−Ｅｘｐｒｅｓｓスイッチ２２１−ｊおよびＢＭＣ２２２−ｊを備える。スイッチ２２１−ｊは、ＤＭＡコントローラ２１１−０〜２１１−３とＰＣＩ−Ｅｘｐｒｅｓｓバスで接続されており、ポートを切り替えることで任意のＣＰＵユニット間でのデータ転送を実現する。
【００２７】
ＢＭＣ２１７−０〜２１７−３、２２２−０、および２２２−１は、互いに独自の通信チャネルにより接続されている。この例では、１００Ｂａｓｅ−ＴＸのＥｔｈｅｒｎｅｔ（登録商標）によりＢＭＣ間が接続され、通信が行われる。
【００２８】
なお、図２の構成では、４つのＣＰＵユニットを設けているが、ＣＰＵユニットの数が増減しても同様の動作が可能である。また、システムの冗長化および高性能化のために２つのスイッチユニットを設けているが、１つのスイッチユニットのみでも任意のＣＰＵユニット間でデータ転送を行うことが可能である。以下の説明では、主としてスイッチユニット２０２−０の動作について述べるが、スイッチユニット２０２−１の動作もこれと同様である。
【００２９】
各ＣＰＵユニット２０１−ｉは、ホストコンピュータ２０４−ｉから受け取ったライト要求に従ってユーザデータをディスクアレイ２０３−０〜２０３−３へ書き込んだり、ホストコンピュータ２０４−ｉから受け取ったリード要求に従ってユーザデータをディスクアレイ２０３−０〜２０３−３から読み出したりする。
【００３０】
その際、ＣＰＵユニット２０１−ｉはホストコンピュータ２０４−ｉに対して、ディスクキャッシュとしての役割を果たす。つまり、ホストコンピュータ２０４−ｉから受け取ったユーザデータをすぐにはディスク装置へ書き込まずにメモリ２１４−ｉに格納しておき、リード要求を受け取るとディスク装置からデータを読み出さずにメモリ２１４−ｉからデータを読み出して応答することで、ホストコンピュータ２０４−ｉから見た応答速度を高速化している。
【００３１】
このように、ディスク装置に保存すべきデータをメモリ２１４−ｉ上にキャッシュしておくことで応答速度を高速化できるが、メモリ２１４−ｉはディスク装置に比べると信頼性の面ではるかに劣る記憶装置である。また、メモリ２１４−ｉの揮発性のために、電源故障等の際にはデータが失われてしまう危険性がある。
【００３２】
このリスクを回避するために、ディスクアレイ装置内ではキャッシュデータのミラーリングが行われる。１つのＣＰＵユニット２０１−ｍ（マスタと呼ぶ）が受け取ったユーザデータはそのＣＰＵユニット２０１−ｍ内のメモリ２１４−ｍに格納するだけではなく、別のＣＰＵユニット２０１−ｎ（スレーブと呼ぶ）のメモリ２１４−ｎにもコピーして格納しておくことで、マスタのメモリ２１４−ｍ内のデータが消失した場合にもスレーブのメモリ２１４−ｎ内のデータを使ってホストコンピュータ２０４−ｍからの要求に答えられるようになっている。
【００３３】
ＣＰＵユニット２０１−ｍは、他のＣＰＵユニット２０１−ｎのメモリ２１４−ｎに対してデータをコピーする際に、ＤＭＡコントローラ２１１−ｍを使用してパケット化したデータをスイッチユニット２０２−０経由で転送する。ＤＭＡコントローラ２１１−ｍは、データを転送する際にデータとアドレスを１つのパケットとして送出するが、このアドレスには相手側のＣＰＵユニット２０１−ｎ内のメモリアドレスとスイッチユニット２０２−０内でのルーティングアドレスが含まれている。
【００３４】
ここで、ＣＰＵユニット２０１−１がＣＰＵユニット２０１−３のメモリ２１４−３にデータを書き込む場合を例にとり、図３を参照しながら、ＤＭＡコントローラ２１１−１が扱う２つのアドレスについて説明する。
【００３５】
各ＣＰＵユニット内のメモリアドレスは、例えば、４０ビットで指定される。４０ビットで指定可能なアドレスは１ＴＢであり、近い将来にこれ以上の容量のメモリがサポートされることはないと考えられる。
【００３６】
スイッチ２２１−０は、６４ビットのアドレスを扱うことができ、その上位２ビットに相当するアドレス［６３：６２］で、受信パケットの転送先アドレスを決定するようにコンフィギュレーションされている。アドレス［６３：６２］が‘００’であればパケットはＣＰＵユニット２０１−０へ、‘０１’であればＣＰＵユニット２０１−１へ、‘１０’であればＣＰＵユニット２０１−２へ、‘１１’であればＣＰＵユニット２０１−３へ転送される。
【００３７】
ＣＰＵユニット２０１−１のＤＭＡコントローラ２１１−１は、ＣＰＵユニット２０１−３のメモリ２１４−３のアドレス‘０ｘ１２＿３４５６＿７８００’へデータを書き込む場合、パケットに付加するアドレスとして‘０ｘＣ０００＿００１２＿３４５６＿７８００’を指定する。スイッチ２２１−０は、このパケットアドレスの上位２ビットをルーティング情報として使用し、ＣＰＵユニット２０１−３にパケットを転送する。
【００３８】
ＣＰＵユニット２０１−３のＤＭＡコントローラ２１１−３は、パケットを受け取ると、アドレスの下位４０ビットに相当する‘０ｘ１２＿３４５６＿７８００’だけを切り出してメモリコントローラ２１３−３へ転送する。
【００３９】
図４は、各ＣＰＵユニットのＤＭＡコントローラから見たアドレスマップを示している。上位２ビットがルーティングアドレスとして使用されるために、以下のようなアドレス範囲と転送先ＣＰＵユニットの組み合わせがＤＭＡコントローラ内に設定される。
０ｘ００００＿００００＿００００＿００００
〜０ｘ３ＦＦＦ＿ＦＦＦＦ＿ＦＦＦＦ＿ＦＦＦＦ：  ＣＰＵユニット２０１−０
０ｘ４０００＿００００＿００００＿００００
〜０ｘ７ＦＦＦ＿ＦＦＦＦ＿ＦＦＦＦ＿ＦＦＦＦ：  ＣＰＵユニット２０１−１
０ｘ８０００＿００００＿００００＿００００
〜０ｘＢＦＦＦ＿ＦＦＦＦ＿ＦＦＦＦ＿ＦＦＦＦ：  ＣＰＵユニット２０１−２
０ｘＣ０００＿００００＿００００＿００００
〜０ｘＦＦＦＦ＿ＦＦＦＦ＿ＦＦＦＦ＿ＦＦＦＦ：  ＣＰＵユニット２０１−３
システムに電源が投入されると各ユニットのＢＭＣが動作を開始し、互いに同期をとってユニットのリセットを解除する。このとき、スイッチユニット２０２−０のＢＭＣ２２２−０はスイッチ２２１−０のアップストリーム・ポートを選択してからスイッチ２２１−０のリセット解除を行う。初期状態では、例えば、ＣＰＵユニット２０１−０に接続されるポートがアップストリーム・ポートとして選択される。
【００４０】
ＣＰＵユニット２０１−０が正常に動作すれば、スイッチ２２１−０とＣＰＵユニット２０１−０の間のＰＣＩ−Ｅｘｐｒｅｓｓリンクに対して自動的に初期化シーケンスが行われ、リンクが確立されて動作可能な状態になる。続いて、スイッチ２２１−０のアップストリーム以外のポートに対しても初期化シーケンスが行われてリンクが確立され、システム全体として動作可能な状態になる。
【００４１】
もし、ＣＰＵユニット２０１−０が存在しないか、正常に動作しなかった場合は、スイッチ２２１−０とＣＰＵユニット２０１−０の間のＰＣＩ−Ｅｘｐｒｅｓｓリンクは確立せず、スイッチ２２１−０の残りのポートも初期化シーケンスを始めることができず、システム全体が動作できなくなってしまう。
【００４２】
そこで、スイッチユニット２０２−０のＢＭＣ２２２−０は、ＣＰＵユニット２０１−０〜２０１−３の実装状況を確認し、実装されているＣＰＵユニットのうちの１つをアップストリーム・ポートとして選択する。
【００４３】
また、リセットを解除した後、スイッチ２２１−０のリンクが確立したかどうかを監視し、一定時間を経過してもリンクが確立されない場合は、別のポートをアップストリーム・ポートとして選択してスイッチ２２１−０をリセットする。新たにアップストリーム・デバイスとして選択されたＣＰＵユニットが正常に動作しなければ、さらに次のポートを選択し、次々にアップストリーム・ポートを変更して、動作可能なＣＰＵユニットが見つかるまで同じ手順を繰り返す。
【００４４】
しかし、このような手順でアップストリーム・ポートを変更すると、ＰＣＩ−Ｅｘｐｒｅｓｓスイッチの規格に従う限り、必然的にスイッチ２２１−０のアドレスマップが変化してしまう。この理由を図５を参照しながら説明する。
【００４５】
ＰＣＩ−Ｅｘｐｒｅｓｓスイッチの規格では、コンフィギュレーション・レジスタとして“Prefetchable memory base address register ”（以下では、ベースアドレスレジスタと記す）と“Prefetchable memory limit address register”（以下では、リミットアドレスレジスタと記す）という２つのレジスタがあり、これらによって各ポートのアドレス範囲を指定することができる。ところが、アップストリーム・ポートとそれ以外のポート（ダウンストリーム・ポート）では、これらのレジスタが保持するアドレスの意味合いが異なる。
【００４６】
ダウンストリーム・ポートでは、リミットアドレスレジスタ５０３とベースアドレスレジスタ５０４の２つの値に挟まれた範囲のアドレスを持つパケットは、そのポートに対してルーティングされる。これに対して、アップストリーム・ポートでは、リミットアドレスレジスタ５０１とベースアドレスレジスタ５０２の２つの値に挟まれた範囲のアドレスを持つパケットは、そのポートに対してルーティングされず、それ以外のアドレスを持ったパケットがそのポートに対してルーティングされる。
【００４７】
このため、アップストリーム・ポートにルーティングされるアドレス範囲として指定できるのは、アドレスマップ全体の一番上または一番下のアドレスを含む範囲だけであって、中間の範囲のみを指定することはできないことが分かる。例えば、図４のアドレスマップでは、「ＣＰＵユニット２０１−１にルーティングされる範囲」をアップストリーム・ポートに対して設定することができない。
【００４８】
したがって、スイッチ２２１−０のアドレスマップを図５に示したように常に固定しておくことはできないので、図６に示すように、選択されたアップストリーム・ポートに応じて４種類のアドレスマップを使い分ける必要がある。図６の例では、アドレスマップの一番下の‘０ｘ００００＿００００＿００００＿００００’〜‘０ｘ３ＦＦＦ＿ＦＦＦＦ＿ＦＦＦＦ＿ＦＦＦＦ’の範囲がアップストリーム・ポートに割り当てられている。
【００４９】
この使い分けは、各ＣＰＵユニット２０１−ｉのＤＭＡコントローラ２１１−ｉがパケットを作成する際に指定するアドレスの設定を変更することにより行われる。ＤＭＡコントローラ２１１−ｉに対するアドレス設定変更の指示は、ＣＰＵユニット２０１−ｉのＢＭＣ２１７−ｉが行う。
【００５０】
図７は、ＣＰＵユニット２０１−０〜２０１−３とスイッチユニット２０２−０および２０２−１を接続するバックパネルを示している。スイッチユニット２０２−ｊのＢＭＣ２２２−ｊには、各ＣＰＵユニット２０１−ｉが存在するか否かを検出するための信号線７０２−ｉがバックパネル７０１を介して接続されている。この信号線７０２−ｉは、スイッチユニット２０２−ｊ内では抵抗７０３−ｊを介して一定電圧ＶＤＤにプルアップされており、一方、ＣＰＵユニット２０１−ｉ内ではグランドレベルに接続されている。
【００５１】
したがって、ＢＭＣ２２２−ｊは、信号線７０２−ｉ上の信号が“Ｌ”レベルか“Ｈ”レベルかをチェックすることで、対応するＣＰＵユニット２０１−ｉが実装されているか否かを確認することができる。図７の例では、ＣＰＵユニット２０１−０〜２０１−２は実装されているので信号線７０２−０〜７０２−２の信号は“Ｌ”になり、ＣＰＵユニット２０１−３は実装されていないので信号線７０２−３の信号は“Ｈ”になる。
【００５２】
図８は、各ＣＰＵユニット２０１−ｉとスイッチユニット２０２−０の電源投入時におけるＢＭＣ２１７−ｉおよび２２２−０の動作シーケンスを示している。この場合、ＢＭＣ２１７−ｉおよび２２２−０は以下の手順で動作する。
１．システムに電源が投入され、ＣＰＵ２１２−ｉおよびスイッチ２２１−０がリセットされる。
２．各ユニットのＢＭＣ２１７−ｉおよび２２２−０が起動する。ＢＭＣ２２２−０は、ＣＰＵユニット２０１−０〜２０１−３が実装されていることを確認する。
３．ＢＭＣ２２２−０がＣＰＵユニット２０１−０をスイッチ２２１−０のアップストリーム・ポートに設定する。
４．ＢＭＣ２１７−ｉとＢＭＣ２２２−０の間で同期をとり、ＣＰＵ２１２−ｉおよびスイッチ２２１−０のリセットを解除する。
５．ＢＭＣ２２２−０がスイッチ２２１−０のリンクの状態を監視し、リンクが確立すると、ＣＰＵユニット２０１−０がアップストリーム・ポートに設定されたことをＢＭＣ２１７−ｉに対して通知する。
６．ＢＭＣ２１７−ｉは、ＢＭＣ２２２−０からの通知を受け取ると、ＣＰＵユニット２０１−０をアップストリーム・ポートとしてＤＭＡコントローラ２１１−ｉの設定を行う。
７．ＢＭＣ２１７−ｉがＣＰＵ２１２−ｉを起動し、これによりＣＰＵユニット２０１−ｉが起動する。
【００５３】
上記５において、リンクが確立せずにタイムアウトを検出した場合、ＢＭＣ２２２−０はスイッチ２２１−０をリセットし、アップストリーム・ポートをＣＰＵユニット２０１−１に設定してリセットを解除する。その後、ＣＰＵユニット２０１−０をＣＰＵユニット２０１−１に置き換えて、上記５以降の動作が行われる。さらにタイムアウトが検出された場合は、ＢＭＣ２２２−０がアップストリーム・ポートをＣＰＵユニット２０１−２、２０１−３に順次変更して、同様の動作を行う。
【００５４】
また、上記２においていずれかのＣＰＵユニットが実装されていない場合は、上記３以降においてはその次のＣＰＵユニットが選択される。
図９は、各ＣＰＵユニット２０１−ｉのＢＭＣ２１７−ｉの動作を示すフローチャートである。システムに電源が投入されるとＣＰＵ２１２−ｉがリセットされ（ステップ８０１）、ＢＭＣ２１７−ｉは、ブート動作によりプログラムのロード等を行う（ステップ８０２）。そして、ブート動作が終了すると、スイッチ２２１−０のＢＭＣ２２２−０へ一定間隔でブート終了通知を送信し（ステップ８０３）、ＢＭＣ２２２−０からブート終了通知を受信したか否かをチェックする（ステップ８０４）。
【００５５】
ＢＭＣ２１７−ｉは、ブート終了通知を受信していなければステップ８０４の動作を繰り返し、ブート終了通知を受信すると、すれ違いを防ぐためにもう一度ブート終了通知を送信する（ステップ８０５）。次に、ＣＰＵ２１２−ｉのリセットを解除して（ステップ８０６）、ＢＭＣ２２２−０からリンクアップ完了通知を受信したか否かをチェックする（ステップ８０７）。
【００５６】
リンクアップ完了通知を受信していなければステップ８０７の動作を繰り返し、リンクアップ完了通知を受信すると、その通知に含まれるアップストリーム・ポートの設定情報に従って、いずれかのＣＰＵユニットをアップストリーム・ポートとしてＤＭＡコントローラ２１１−ｉのアドレスマップを設定し、ＣＰＵ２１２−ｉを起動する（ステップ８０８）。
【００５７】
図１０および１１は、スイッチユニット２０２−０のＢＭＣ２２２−０の動作を示すフローチャートである。システムに電源が投入されるとスイッチ２２１−０がリセットされ（図１０のステップ９０１）、ＢＭＣ２２２−０は、ブート動作を行う（ステップ９０２）。そして、ブート動作が終了すると、図７に示した方法によりＣＰＵユニット２０１−０〜２０１−３のどれが実装されているかを確認する（ステップ９０３）。
【００５８】
次に、実装されている各ＣＰＵユニット２０１−ｉのＢＭＣ２１７−ｉへ一定間隔でブート終了通知を送信し（ステップ９０４）、ＢＭＣ２１７−ｉからブート終了通知を受信したか否かをチェックする（ステップ９０５）。
【００５９】
ＢＭＣ２２２−０は、実装されているいずれかのＣＰＵユニットからブート終了通知を受信していなければステップ９０５の動作を繰り返し、すべてのＣＰＵユニットからブート終了通知を受信すると、すれ違いを防ぐために各ＣＰＵユニットへもう一度ブート終了通知を送信する（ステップ９０６）。
【００６０】
次に、ＣＰＵユニット２０１−０が実装されているか否かをチェックし（ステップ９０７）、それが実装されていれば、ＣＰＵユニット２０１−０をスイッチ２２１−０のアップストリーム・ポートに設定する（ステップ９０８）。具体的には、図６の左端のアドレスマップが実現されるように、スイッチ２２１−０の各ポートのリミットアドレスレジスタおよびベースアドレスレジスタに、以下のようなアドレスが設定される。
（１）ＣＰＵユニット２０１−０に接続されたポート
・リミットアドレスレジスタ：０ｘＦＦＦＦ＿ＦＦＦＦ＿ＦＦＦＦ＿ＦＦＦＦ
・ベースアドレスレジスタ  ：０ｘ４０００＿００００＿００００＿００００
（２）ＣＰＵユニット２０１−１に接続されたポート
・リミットアドレスレジスタ：０ｘ７ＦＦＦ＿ＦＦＦＦ＿ＦＦＦＦ＿ＦＦＦＦ
・ベースアドレスレジスタ  ：０ｘ４０００＿００００＿００００＿００００
（３）ＣＰＵユニット２０１−２に接続されたポート
・リミットアドレスレジスタ：０ｘＢＦＦＦ＿ＦＦＦＦ＿ＦＦＦＦ＿ＦＦＦＦ
・ベースアドレスレジスタ  ：０ｘ８０００＿００００＿００００＿００００
（４）ＣＰＵユニット２０１−３に接続されたポート
・リミットアドレスレジスタ：０ｘＦＦＦＦ＿ＦＦＦＦ＿ＦＦＦＦ＿ＦＦＦＦ
・ベースアドレスレジスタ  ：０ｘＣ０００＿００００＿００００＿００００
ステップ９０７においてＣＰＵユニット２０１−０が実装されていなければ、別のＣＰＵユニットをアップストリーム・ポートに設定するために、ステップ９１２以降の動作を行う。
【００６１】
次に、ＢＭＣ２２２−０は、スイッチ２２１−０のリセットを解除して（ステップ９０９）、スイッチ２２１−０のリンクアップを検出したか否かをチェックする（ステップ９１０）。
【００６２】
リンクアップが検出されなければ、次に、タイムアウトを検出したか否かをチェックする（ステップ９１１）。リンクアップが検出されず、タイムアウトも検出されなければ、ステップ９１０以降の動作を繰り返し、リンクアップが検出されれば、リンクアップ完了通知を各ＣＰＵユニット２０１−ｉのＢＭＣ２１７−ｉに送信する（図１１のステップ９３１）。このリンクアップ完了通知には、アップストリーム・ポートに設定されたＣＰＵユニットを示す情報が含まれる。
【００６３】
一方、リンクアップが検出されずにタイムアウトが検出された場合は、ＣＰＵユニット２０１−１が実装されているか否かをチェックする（ステップ９１２）。それが実装されていれば、スイッチ２２１−０をリセットして（ステップ９１３）、ＣＰＵユニット２０１−１をスイッチ２２１−０のアップストリーム・ポートに設定する（ステップ９１４）。具体的には、図６の左から２番目のアドレスマップが実現されるように、スイッチ２２１−０の各ポートのリミットアドレスレジスタおよびベースアドレスレジスタに、以下のようなアドレスが設定される。
（１）ＣＰＵユニット２０１−０に接続されたポート
・リミットアドレスレジスタ：０ｘＦＦＦＦ＿ＦＦＦＦ＿ＦＦＦＦ＿ＦＦＦＦ
・ベースアドレスレジスタ  ：０ｘＣ０００＿００００＿００００＿００００
（２）ＣＰＵユニット２０１−１に接続されたポート
・リミットアドレスレジスタ：０ｘＦＦＦＦ＿ＦＦＦＦ＿ＦＦＦＦ＿ＦＦＦＦ
・ベースアドレスレジスタ  ：０ｘ４０００＿００００＿００００＿００００
（３）ＣＰＵユニット２０１−２に接続されたポート
・リミットアドレスレジスタ：０ｘ７ＦＦＦ＿ＦＦＦＦ＿ＦＦＦＦ＿ＦＦＦＦ
・ベースアドレスレジスタ  ：０ｘ４０００＿００００＿００００＿００００
（４）ＣＰＵユニット２０１−３に接続されたポート
・リミットアドレスレジスタ：０ｘＢＦＦＦ＿ＦＦＦＦ＿ＦＦＦＦ＿ＦＦＦＦ
・ベースアドレスレジスタ  ：０ｘ８０００＿００００＿００００＿００００
ステップ９１２においてＣＰＵユニット２０１−１が実装されていなければ、別のＣＰＵユニットをアップストリーム・ポートに設定するために、図１１のステップ９１８以降の動作を行う。
【００６４】
次に、ＢＭＣ２２２−０は、ステップ９０９〜９１１と同様の動作を行う（ステップ９１５〜９１７）。
そして、ステップ９１７においてタイムアウトが検出されれば、ＣＰＵユニット２０１−２が実装されているか否かをチェックする（図１１のステップ９１８）。それが実装されていれば、スイッチ２２１−０をリセットして（ステップ９１９）、ＣＰＵユニット２０１−２をスイッチ２２１−０のアップストリーム・ポートに設定する（ステップ９２０）。具体的には、図６の右から２番目のアドレスマップが実現されるように、スイッチ２２１−０の各ポートのリミットアドレスレジスタおよびベースアドレスレジスタに、以下のようなアドレスが設定される。
（１）ＣＰＵユニット２０１−０に接続されたポート
・リミットアドレスレジスタ：０ｘＢＦＦＦ＿ＦＦＦＦ＿ＦＦＦＦ＿ＦＦＦＦ
・ベースアドレスレジスタ  ：０ｘ８０００＿００００＿００００＿００００
（２）ＣＰＵユニット２０１−１に接続されたポート
・リミットアドレスレジスタ：０ｘＦＦＦＦ＿ＦＦＦＦ＿ＦＦＦＦ＿ＦＦＦＦ
・ベースアドレスレジスタ  ：０ｘＣ０００＿００００＿００００＿００００
（３）ＣＰＵユニット２０１−２に接続されたポート
・リミットアドレスレジスタ：０ｘＦＦＦＦ＿ＦＦＦＦ＿ＦＦＦＦ＿ＦＦＦＦ
・ベースアドレスレジスタ  ：０ｘ４０００＿００００＿００００＿００００
（４）ＣＰＵユニット２０１−３に接続されたポート
・リミットアドレスレジスタ：０ｘ７ＦＦＦ＿ＦＦＦＦ＿ＦＦＦＦ＿ＦＦＦＦ
・ベースアドレスレジスタ  ：０ｘ４０００＿００００＿００００＿００００
ステップ９１８においてＣＰＵユニット２０１−２が実装されていなければ、別のＣＰＵユニットをアップストリーム・ポートに設定するために、ステップ９２４以降の動作を行う。
【００６５】
次に、ＢＭＣ２２２−０は、ステップ９０９〜９１１と同様の動作を行う（ステップ９２１〜９２３）。
そして、ステップ９２３においてタイムアウトが検出されれば、ＣＰＵユニット２０１−３が実装されているか否かをチェックする（ステップ９２４）。それが実装されていれば、スイッチ２２１−０をリセットして（ステップ９２５）、ＣＰＵユニット２０１−３をスイッチ２２１−０のアップストリーム・ポートに設定する（ステップ９２６）。具体的には、図６の右端のアドレスマップが実現されるように、スイッチ２２１−０の各ポートのリミットアドレスレジスタおよびベースアドレスレジスタに、以下のようなアドレスが設定される。
（１）ＣＰＵユニット２０１−０に接続されたポート
・リミットアドレスレジスタ：０ｘ７ＦＦＦ＿ＦＦＦＦ＿ＦＦＦＦ＿ＦＦＦＦ
・ベースアドレスレジスタ  ：０ｘ４０００＿００００＿００００＿００００
（２）ＣＰＵユニット２０１−１に接続されたポート
・リミットアドレスレジスタ：０ｘＢＦＦＦ＿ＦＦＦＦ＿ＦＦＦＦ＿ＦＦＦＦ
・ベースアドレスレジスタ  ：０ｘ８０００＿００００＿００００＿００００
（３）ＣＰＵユニット２０１−２に接続されたポート
・リミットアドレスレジスタ：０ｘＦＦＦＦ＿ＦＦＦＦ＿ＦＦＦＦ＿ＦＦＦＦ
・ベースアドレスレジスタ  ：０ｘＣ０００＿００００＿００００＿００００
（４）ＣＰＵユニット２０１−３に接続されたポート
・リミットアドレスレジスタ：０ｘＦＦＦＦ＿ＦＦＦＦ＿ＦＦＦＦ＿ＦＦＦＦ
・ベースアドレスレジスタ  ：０ｘ４０００＿００００＿００００＿００００
次に、ＢＭＣ２２２−０は、ステップ９０９〜９１１と同様の動作を行う（ステップ９２７〜９２９）。
【００６６】
ステップ９２９においてタイムアウトが検出された場合、および、ステップ９２４においてＣＰＵユニット２０１−３が実装されていない場合は、システムが動作不可能であることをユーザに通知する（ステップ９３０）。
【００６７】
上述したように、本発明を実現するためにはＰＣＩ−Ｅｘｐｒｅｓｓスイッチのアップストリーム・ポートが自由に選択できる必要があるが、これはＰＣＩ−Ｅｘｐｒｅｓｓスイッチの規格自体で定義された機能ではなく、選択方法もスイッチＩＣ（Integrated Circuit）の実装によって異なる。
【００６８】
図１２は、スイッチユニットの１つの構成例を示している。図１２のＰＣＩ−Ｅｘｐｒｅｓｓスイッチ１１０１は、外部のストラップピン（ストラップポート）ＵＰＳＴＲＥＡＭ＿ＳＥＬ＿０およびＵＰＳＴＲＥＡＭ＿ＳＥＬ＿１によりアップストリーム・ポートの選択が可能であり、Ｉ２Ｃバスによって内部のレジスタを設定することができる。そこで、ＢＭＣ１１０２のＧＰＩＯ（General Purpose I/O ）によりアップストリーム・ポートを選択した後、リセットを解除し、Ｉ２Ｃバスからスイッチ１１０１のアドレスマップを設定するために適当なレジスタの設定を行う。
【００６９】
図１３は、図１２のＰＣＩ−Ｅｘｐｒｅｓｓスイッチ１１０１の構成図である。スイッチ１１０１のＩＣは、クロスバスイッチ１２０１、Ｉ２Ｃ制御部１２０２、および外部に対する４つのＰＣＩ−Ｅｘｐｒｅｓｓポート＃０〜＃３を備える。
【００７０】
各ポート＃ｉ（ｉ＝０，１，２，３）は、ＳＥＲＤＥＳ部（Serializer/De-serializer）１２０３−ｉ、ＰＣＩ−Ｅｘｐｒｅｓｓプロトコル制御部１２０４−ｉ、選択回路１２０５−ｉ、およびＰＣＩ−Ｅｘｐｒｅｓｓスイッチの規格に定められたコンフィギュレーション・レジスタセットからなる。
【００７１】
ＳＥＲＤＥＳ部１２０３−ｉは、ＩＣ外部に接続されるシリアルの高速信号とＩＣ内部を接続するパラレルバスの信号の間の変換を行い、プロトコル制御部１２０４−ｉは、コンフィギュレーション・レジスタセットを参照しながら、ＰＣＩ−Ｅｘｐｒｅｓｓスイッチの規格に定められたプロトコル処理を行う。クロスバスイッチ１２０１は、これらの４つのポート間でデータ転送経路を切り替える。
【００７２】
コンフィギュレーション・レジスタは、アップストリーム・ポートとダウンストリーム・ポートとで構成が異なるため、アップストリーム・ポート用レジスタセット１２０６−ｉとダウンストリーム・ポート用レジスタセット１２０７−ｉの両方のレジスタセットが設けられる。レジスタセット１２０６−ｉおよび１２０７−ｉはともに、リミットアドレスレジスタおよびベースアドレスレジスタを含んでおり、選択回路１２０５−ｉは、これらの２種類のレジスタセットを排他的に選択する。
【００７３】
実際には、４つのポートのうちの１つだけがアップストリーム・ポートになるように、そのポートの選択回路はアップストリーム・ポート用レジスタセット１２０６−ｉを選択し、他のポートの選択回路はダウンストリーム・ポート用レジスタセット１２０７−ｉを選択する。
【００７４】
また、コンフィギュレーション・レジスタは、通常、アップストリームのＰＣＩ−Ｅｘｐｒｅｓｓポートから設定されるが、本実施形態では、Ｉ２Ｃ等のインタフェースによりＢＭＣ１１０２から設定できるようになっていることが望ましい。この場合、Ｉ２Ｃ制御部１２０２は、外部のＩ２ＣマスタであるＢＭＣ１１０２からのアクセス要求を受信し、その要求に従ってコンフィギュレーション・レジスタの設定を行う。
【００７５】
このとき、ＢＭＣ１１０２は、アップストリーム・ポートに設定されるポートのアップストリーム・ポート用レジスタセット１２０６−ｉとダウンストリーム・ポートに設定されるポートのダウンストリーム・ポート用レジスタセット１２０７−ｉのそれぞれに、上述したようなリミットアドレスレジスタおよびベースアドレスレジスタの値を書き込む。
【００７６】
ＢＭＣ１１０２は、さらに選択回路１２０５−０〜１２０５−３を制御してレジスタセット１２０６−ｉまたは１２０７−ｉを選択させるために、２本のストラップピンＵＰＳＴＲＥＡＭ＿ＳＥＬ＿０およびＵＰＳＴＲＥＡＭ＿ＳＥＬ＿１から２値（ＨまたはＬ）の制御信号を入力する。この制御信号は、例えば、以下のように定義される。
“ＬＬ”：ポート＃０をアップストリーム・ポートに指定し、それ以外のポートはダウンストリーム・ポートに指定する。
“ＬＨ”：ポート＃１をアップストリーム・ポートに指定し、それ以外のポートはダウンストリーム・ポートに指定する。
“ＨＬ”：ポート＃２をアップストリーム・ポートに指定し、それ以外のポートはダウンストリーム・ポートに指定する。
“ＨＨ”：ポート＃３をアップストリーム・ポートに指定し、それ以外のポートはダウンストリーム・ポートに指定する。
【００７７】
アップストリーム・ポートの選択回路１２０５−ｉは、アップストリーム・ポート用レジスタセット１２０６−ｉを選択し、ダウンストリーム・ポートの選択回路１２０５−ｉは、ダウンストリーム・ポート用レジスタセット１２０７−ｉを選択する。これにより、スイッチ１１０１内におけるアップストリーム・ポートおよびダウンストリーム・ポートの設定が完了する。
【００７８】
また、ＢＭＣ１１０２は、リセットポートを介してクロスバスイッチ１２０１、Ｉ２Ｃ制御部１２０２、ＳＥＲＤＥＳ部１２０３−ｉ、ＰＣＩ−Ｅｘｐｒｅｓｓプロトコル制御部１２０４−ｉ、およびレジスタセット１２０６−ｉ、１２０７−ｉに制御信号を入力し、これらの要素のリセット／リセット解除を行う。
【００７９】
図１４は、ＢＭＣ１１０２の構成図である。ＢＭＣ１１０２は、ＭＰＵ（Micro Processing Unit ）１３０１、Ｅｔｈｅｒ−ＰＨＹ（物理層）回路１３０２−０、１３０２−１、温度・電圧監視素子１３０３、ＳＤＲＡＭ（Synchronous Dynamic Random Access Memory）１３０４、フラッシュメモリ１３０５、およびＰＬＤ（Programmable Logic Device ）１３０６を備える。
【００８０】
ＭＰＵ１３０１は、組み込み用に開発されたプロセッサであり、複数のＥｔｈｅｒｎｅｔ（登録商標）ポート、ＲＳ２３２Ｃポート、Ｉ２Ｃポート、ＣＰＵバス１３０７を持つ。１つのＥｔｈｅｒｎｅｔ（登録商標）ポートは、Ｅｔｈｅｒ−ＰＨＹ回路１３０２−１を介して他のＢＭＣに接続される。もう一方のＥｔｈｅｒｎｅｔ（登録商標）ポートは、Ｅｔｈｅｒ−ＰＨＹ回路１３０２−０を介してパーソナルコンピュータ等に接続され、デバッグ用のインタフェースとして用いられる。また、ＲＳ２３２Ｃポートも同様にパーソナルコンピュータ等に接続され、デバッグ用に用いられる。
【００８１】
Ｉ２Ｃポートは温度・電圧監視素子１３０３に接続され、ユニット内の温度と電源電圧が正常か否かを監視する。また、Ｉ２Ｃポートはスイッチ１１０１にも接続されて、スイッチ１１０１内部のレジスタ設定に用いられる。
【００８２】
ＣＰＵバス１３０７には、ＳＤＲＡＭ１３０４、フラッシュメモリ１３０５、およびＰＬＤ１３０６が接続される。ＳＤＲＡＭ１３０４はＢＭＣ１１０２のメインメモリであり、ここにＢＭＣプログラムがロードされる。フラッシュメモリ１３０５は、プログラムを格納するための不揮発性のメモリである。ＭＰＵ１３０１は、ＳＤＲＡＭ１３０４にロードされたプログラムを実行することにより、必要な処理を行う。
【００８３】
ＰＬＤ１３０６は、レジスタセット１３０８を備える。ＭＰＵ１３０１からレジスタセット１３０８の内容が設定されると、ＰＬＤ１３０６はＧＰＩＯポートやリセットポートを制御することができる。ＰＬＤ１３０６は、リセットポートを介してスイッチ１１０１のリセット／リセット解除を行い、ＧＰＩＯポートを介してスイッチ１１０１のアップストリーム・ポートを設定する。さらに、ＧＰＩＯポートには図７に示した信号線７０２−０〜７０２−３が接続されており、ＰＬＤ１３０６は、どのＣＰＵユニットが実装されているかを検出してＭＰＵ１３０１に通知する。
【００８４】
ＧＰＩＯポートの２本のピンＧＰＩＯ＿０およびＧＰＩＯ＿１は、図１３のストラップピンＵＰＳＴＲＥＡＭ＿ＳＥＬ＿０およびＵＰＳＴＲＥＡＭ＿ＳＥＬ＿１に接続される。ＭＰＵ１３０１が上述した４通りの制御信号のうちのいずれかをレジスタセット１３０８に書き込むと、ＰＬＤ１３０６は、書き込まれた制御信号をＧＰＩＯピンを介してスイッチ１１０１に転送する。これにより、制御信号で指定されたポートがアップストリーム・ポートとして選択される。
【００８５】
ＣＰＵユニット２０１−ｉのＢＭＣ２１７−ｉも、図１４のＢＭＣ１１０２と同様の構成を有する。
ところで、ＰＣＩ−Ｅｘｐｒｅｓｓスイッチのコンフィギュレーション・レジスタセットを選択する方法として、スイッチがＥＥＰＲＯＭ（Electronically Erasable and Programmable Read Only Memory ）制御部を持つことも考えられる。
【００８６】
図１５は、このようなスイッチを用いたスイッチユニットの構成例を示している。図１５のスイッチユニット上には、４つのＥＥＰＲＯＭ１４０３−０〜１４０３−３が搭載される。これらのＥＥＰＲＯＭには、例えば、図６に示したようなそれぞれ異なるアドレスマップのデータが格納される。ＰＣＩ−Ｅｘｐｒｅｓｓスイッチ１４０１は、リセットが解除されると自動的にＥＥＰＲＯＭ１４０３−０〜１４０３−３のいずれかからデータを読み込み、そのデータに応じて対応するポートをアップストリーム・ポートに設定する。
【００８７】
ＢＭＣ１１０２は、４本のピンＧＰＩＯ＿０〜ＧＰＩＯ＿３を用いてＯＲ回路１４０２−０〜１４０２−３を制御し、所望のＥＥＰＲＯＭを選択することができる。これにより、スイッチ１４０１のどのポートでもアップストリーム・ポートとして設定できるようになる。
【００８８】
図１６は、図１５のＰＣＩ−Ｅｘｐｒｅｓｓスイッチ１４０１の構成図である。図１６のスイッチ１４０１は、図１３のスイッチ１１０１からＩ２Ｃ制御部１２０２を削除し、ＥＥＰＲＯＭ制御部１５０１を追加した構成を有する。
【００８９】
ＥＥＰＲＯＭ制御部１５０１および各ＥＥＰＲＯＭは、ＳＰＩ（Serial Peripheral Interface ）バスをインタフェースとして持っている。このＳＰＩバスは、ＥＥＰＲＯＭ＿ＳＫ、ＥＥＰＲＯＭ＿ＤＯ、ＥＥＰＲＯＭ＿ＤＩ、およびＥＥＰＲＯＭ＿ＣＳ＃（＃は負論理を示す）の４本の信号線からなる。
【００９０】
ＥＥＰＲＯＭ＿ＣＳ＃は、ＥＥＰＲＯＭへのチップセレクト信号であり、論理‘０’のときにそのＥＥＰＲＯＭが選択され、データがスイッチ１４０１にロードされることを示す。スイッチ１４０１のＥＥＰＲＯＭ制御部１５０１はこの信号線を１本しか持たない。しかし、ＢＭＣ１１０２がＧＰＩＯ＿０〜ＧＰＩＯ＿３のいずれか１本を論理‘０’に設定し、残りの３本を論理‘１’に設定することで、ＯＲ回路１４０２−０〜１４０２−３のいずれか１つだけが‘０’を出力し、それに対応する１つのＥＥＰＲＯＭに対してのみＥＥＰＲＯＭ＿ＣＳ＃が‘０’となる。
【００９１】
ＥＥＰＲＯＭ＿ＳＫは、ＥＥＰＲＯＭへのクロック信号であり、このクロック信号に従ってＥＥＰＲＯＭ制御回路１５０１がアドレス信号を送出し、ＥＥＰＲＯＭがリードデータを送出する。
【００９２】
このとき、ＥＥＰＲＯＭ制御部１５０１は、アドレス信号をＥＥＰＲＯＭ＿ＳＫに同期したシリアルデータとして、ＥＥＰＲＯＭ＿ＤＯを介してＥＥＰＲＯＭに送出する。ＥＥＰＲＯＭ＿ＣＳ＃によって選択されたＥＥＰＲＯＭは、アドレス信号を受け取ると、リードデータをＥＥＰＲＯＭ＿ＳＫに同期したシリアルデータとして、ＥＥＰＲＯＭ＿ＤＩを介して送出する。一方、ＥＥＰＲＯＭ＿ＣＳ＃によって選択されていないＥＥＰＲＯＭは、ＥＥＰＲＯＭ＿ＤＩの信号線をハイインピーダンス状態に保つ。
【００９３】
スイッチ１４０１は、ＥＥＰＲＯＭから送出されたデータに応じて各ポートのレジスタセット１２０６−ｉまたは１２０７−ｉにアドレスマップを設定し、選択回路１２０５−ｉを切り替える。これにより、スイッチ１４０１内におけるアップストリーム・ポートおよびダウンストリーム・ポートの設定が完了する。
【００９４】
図１７は、図２のディスクアレイ装置のＢＭＣ２１７−ｉおよび２２２−ｊが処理に用いるプログラムおよびデータの提供方法を示している。情報処理装置等の外部装置１６０１や可搬記録媒体１６０３に格納されたプログラムおよびデータは、ディスクアレイ装置１６０２のメモリにロードされる。
【００９５】
外部装置１６０１は、そのプログラムおよびデータを搬送する搬送信号を生成し、通信ネットワーク上の任意の伝送媒体を介してディスクアレイ装置１６０２に送信する。可搬記録媒体１６０３は、メモリカード、フレキシブルディスク、光ディスク、光磁気ディスク等の任意のコンピュータ読み取り可能な記録媒体である。ＢＭＣ２１７−ｉおよび２２２−ｊは、そのデータを用いてそのプログラムを実行し、必要な処理を行う。
【００９６】
（付記１）  複数の処理ノードをシリアルバスにより相互接続する相互接続装置であって、
前記複数の処理ノードに接続される複数のポートを有し、該複数のポートのうちの１つをアップストリーム・ポートに設定し、他のポートをダウンストリーム・ポートに設定して、ポート間でデータ転送経路の切り替えを行うスイッチ手段と、
前記スイッチ手段の各ポートのリンクが確立する前に前記複数の処理ノードの各々が実装されているか否かを確認し、前記スイッチ手段の複数のポートのうち、実装されている処理ノードの１つが接続されているポートを前記アップストリーム・ポートに設定し、他のポートを前記ダウンストリーム・ポートに設定するように、該スイッチ手段を制御する制御手段と
を備えることを特徴とする相互接続装置。
【００９７】
（付記２）  前記制御手段は、前記スイッチ手段のアップストリーム・ポートおよびダウンストリーム・ポートが設定された後、実装されている処理ノードが接続されている各ポートのリンクが確立したか否かを監視し、リンクが確立しなければ該スイッチ手段をリセットして、別のポートをアップストリーム・ポートに設定するように該スイッチ手段を制御することを特徴とする付記１記載の相互接続装置。
【００９８】
（付記３）  前記複数の処理ノードはそれぞれ直接メモリアクセス制御手段を含み、前記制御手段は、設定されたアップストリーム・ポートの情報を実装されている処理ノードに通知し、通知された処理ノードは、該アップストリーム・ポートの情報に従って該直接メモリアクセス制御手段のアドレスマップを設定することを特徴とする付記１または２記載の相互接続装置。
【００９９】
（付記４）  前記スイッチ手段の各ポートは、アップストリーム・ポートにルーティングされないデータの転送先アドレスの範囲を指定する第１のレジスタ手段と、ダウンストリーム・ポートにルーティングされるデータの転送先アドレスの範囲を指定する第２のレジスタ手段とを含み、前記アップストリーム・ポートに設定されたポートは該第１のレジスタ手段を参照しながら動作し、前記ダウンストリーム・ポートに設定されたポートは該第２のレジスタ手段を参照しながら動作することを特徴とする付記１または２記載の相互接続装置。
【０１００】
（付記５）  前記スイッチ手段の各ポートは、データ転送先アドレスのアドレスマップを格納するレジスタ手段を含み、前記制御手段は、アップストリーム・ポートに設定すべきポートの該レジスタ手段にアップストリーム・ポート用のアドレスマップの情報を書き込み、ダウンストリーム・ポートに設定すべきポートの該レジスタ手段にダウンストリーム・ポート用のアドレスマップの情報を書き込むことを特徴とする付記１または２記載の相互接続装置。
【０１０１】
（付記６）  前記スイッチ手段の複数のポートのそれぞれをアップストリーム・ポートに設定した場合のそれぞれ異なる複数のアドレスマップの情報を格納するメモリ手段をさらに備え、前記スイッチ手段の各ポートは、データ転送先アドレスのアドレスマップを格納するレジスタ手段を含み、前記制御手段は、いずれのポートをアップストリーム・ポートに設定するかに応じて該メモリ手段内の対応するアドレスマップの情報が各ポートのレジスタ手段に設定されるように、該メモリ手段を制御することを特徴とする付記１または２記載の相互接続装置。
【０１０２】
（付記７）  処理ユニットをそれぞれ有する複数の処理ノードと、
前記複数の処理ノードをシリアルバスにより相互接続するための複数のポートを有し、該複数のポートのうちの１つをアップストリーム・ポートに設定し、他のポートをダウンストリーム・ポートに設定して、ポート間でデータ転送経路の切り替えを行うスイッチ手段と、
前記スイッチ手段の各ポートのリンクが確立する前に前記複数の処理ノードの各々が実装されているか否かを確認し、前記スイッチ手段の複数のポートのうち、実装されている処理ノードの１つが接続されているポートを前記アップストリーム・ポートに設定し、他のポートを前記ダウンストリーム・ポートに設定するように、該スイッチ手段を制御する制御手段と
を備えることを特徴とするコンピュータシステム。
【０１０３】
（付記８）  複数の処理ノードをシリアルバスにより相互接続するための複数のポートを有し、該複数のポートのうちの１つをアップストリーム・ポートに設定し、他のポートをダウンストリーム・ポートに設定して、ポート間でデータ転送経路の切り替えを行うスイッチを制御するプロセッサのためのプログラムであって、
前記スイッチの各ポートのリンクが確立する前に前記複数の処理ノードの各々が実装されているか否かを確認し、
前記スイッチの複数のポートのうち、実装されている処理ノードの１つが接続されているポートを前記アップストリーム・ポートに設定し、他のポートを前記ダウンストリーム・ポートに設定するように、該スイッチを制御する
処理を前記プロセッサに実行させることを特徴とするプログラム。
【０１０４】
（付記９）  複数の処理ノードをシリアルバスにより相互接続するための複数のポートを有し、該複数のポートのうちの１つをアップストリーム・ポートに設定し、他のポートをダウンストリーム・ポートに設定して、ポート間でデータ転送経路の切り替えを行うスイッチを制御する制御方法であって、
前記スイッチの各ポートのリンクが確立する前に前記複数の処理ノードの各々が実装されているか否かを確認し、
前記スイッチの複数のポートのうち、実装されている処理ノードの１つが接続されているポートを前記アップストリーム・ポートに設定し、他のポートを前記ダウンストリーム・ポートに設定するように、該スイッチを制御する
ことを特徴とする制御方法。
【図面の簡単な説明】
【０１０５】
【図１】本発明の相互接続装置の原理図である。
【図２】ディスクアレイ装置の構成図である。
【図３】データのコピーを示す図である。
【図４】アドレスマップを示す図である。
【図５】アドレス範囲を指示するレジスタを示す図である。
【図６】４種類のアドレスマップを示す図である。
【図７】バックパネルを示す図である。
【図８】ＢＭＣの動作シーケンスを示す図である。
【図９】ＣＰＵユニットのＢＭＣの動作のフローチャートである。
【図１０】スイッチユニットのＢＭＣの動作のフローチャート（その１）である。
【図１１】スイッチユニットのＢＭＣの動作のフローチャート（その２）である。
【図１２】第１のスイッチユニットの構成図である。
【図１３】第１のＰＣＩ−Ｅｘｐｒｅｓｓスイッチの構成図である。
【図１４】ＢＭＣの構成図である。
【図１５】第２のスイッチユニットの構成図である。
【図１６】第２のＰＣＩ−Ｅｘｐｒｅｓｓスイッチの構成図である。
【図１７】プログラムおよびデータの提供方法を示す図である。
【図１８】ＰＣＩバスを用いたコンピュータシステムを示す図である。
【図１９】ＰＣＩ−Ｅｘｐｒｅｓｓバスを用いたコンピュータシステムを示す図である。
【図２０】複数のＣＰＵノードからなるコンピュータシステムを示す図である。
【符号の説明】
【０１０６】
１１、２１２−０、２１２−１、２１２−２、２１２−３  ＣＰＵ
１２、２１３−０、２１３−１、２１３−２、２１３−３  メモリコントローラ
１３−１、１３−２、１３−３、１３−４、２１４−０、２１４−１、２１４−２、２１４−３  メモリ
１４  Ｉ／Ｏコントローラ
１５−１、１５−２、１５−３、１５−４、１６−１、１６−２、１６−３、１６−４  スロット
２１−１、２１−２、２１−３、２１−４、２１−５、２１−６、２１−７、２１−８  ＣＰＵノード
２２、２２１−０、２２１−１、１１０１、１４０１  スイッチ
１０１  スイッチ手段
１０２  制御手段
１０３−０〜１０３−ｎ  処理ノード
１０４−０〜１０４−ｎ  ポート
２０１−０、２０１−１、２０１−２、２０１−３  ＣＰＵユニット
２０２−０、２０２−１  スイッチユニット
２０３−０、２０３−１、２０３−２、２０３−３  ディスクアレイ
２０４−０、２０４−１、２０４−２、２０４−３  ホストコンピュータ
２１１−０、２１１−１、２１１−２、２１１−３  ＤＭＡコントローラ
２１５−０、２１５−１、２１５−２、２１５−３  ホストインタフェース
２１６−０、２１６−１、２１６−２、２１６−３  ディスクインタフェース
２１７−０、２１７−１、２１７−２、２１７−３、２２２−０、２２２−１、１１０２  ＢＭＣ
５０１、５０３  リミットアドレスレジスタ
５０２、５０４  ベースアドレスレジスタ
７０１  バックパネル
７０２−０、７０２−１、７０２−２、７０２−３  信号線
７０３−０、７０３−１  抵抗
１２０１  クロスバスイッチ
１２０２  Ｉ２Ｃ制御部
１２０３−０、１２０３−１、１２０３−２、１２０３−３  ＳＥＲＤＥＳ部
１２０４−０、１２０４−１、１２０４−２、１２０４−３  ＰＣＩ−Ｅｘｐｒｅｓｓプロトコル制御部
１２０５−０、１２０５−１、１２０５−２、１２０５−３  選択回路
１２０６−０、１２０６−１、１２０６−２、１２０６−３  アップストリーム・ポート用レジスタセット
１２０７−０、１２０７−１、１２０７−２、１２０７−３  ダウンストリーム・ポート用レジスタセット
１３０１  ＭＰＵ
１３０２−０、１３０２−１  Ｅｔｈｅｒ−ＰＨＹ回路
１３０３  温度・電圧監視素子
１３０４  ＳＤＲＡＭ
１３０５  フラッシュメモリ
１３０６  ＰＬＤ
１３０７  ＣＰＵバス
１３０８  レジスタセット
１４０２−０、１４０２−１、１４０２−２、１４０２−３  ＯＲ回路
１４０３−０、１４０３−１、１４０３−２、１４０３−３  ＥＥＰＲＯＭ
１５０１  ＥＥＰＲＯＭ制御部
１６０１  外部装置
１６０２  ディスクアレイ装置
１６０３  可搬記録媒体
【図１】
2006209456.tif 000003
【図２】
2006209456.tif 000004
【図３】
2006209456.tif 000005
【図４】
2006209456.tif 000006
【図５】
2006209456.tif 000007
【図６】
2006209456.tif 000008
【図８】
2006209456.tif 000009
【図９】
2006209456.tif 000010
【図１０】
2006209456.tif 000011
【図１１】
2006209456.tif 000012
【図１２】
2006209456.tif 000013
【図１３】
2006209456.tif 000014
【図１４】
2006209456.tif 000015
【図１５】
2006209456.tif 000016
【図１６】
2006209456.tif 000017
【図１７】
2006209456.tif 000018
【図１８】
2006209456.tif 000019
【図１９】
2006209456.tif 000020
【図２０】
2006209456.tif 000021
【図７】
2006209456.tif 000022