(57)【要約】【課題】故障したコンポーネントにアドレス指定されたトランザクションを、代替のコンポーネントが要求できるようにする。【解決手段】入力を多重化して、処理ユニット関連トランザクションに関連するアドレス１７３を生成するマルチプレクサ１７２と、前記アドレスを受信し、該アドレスに関連するトランザクションを受信するモジュールの宛先アドレス１７５を提供するレンジレジスタデコーダ１７４と、前記宛先アドレスを受信するリルートモジュールＩＤブロック１７６とを備えるアドレスデコードブロックと、前記コンピュータシステム中の１以上のオリジナルモジュールのアドレスを提供するオリジナルモジュールＩＤ１８２と、前記コンピュータシステム中の代替モジュールの論理的な宛先モジュールＩＤを提供するリマッピングモジュールＩＤ１８３とを備えるリルートモジュールＩＤブロックとを含む、仮想入出力の相互接続メカニズムを提供する。【選択図】　　　　図４
2004030578.tif 000002
【特許請求の範囲】
【請求項１】
１以上のブリッジユニットによって連結された複数の入出力装置および複数の処理ユニットを備えるコンピュータシステムに使用するための仮想入出力の相互接続メカニズムであって、該相互接続メカニズムはアドレスデコードブロックとリルートモジュールＩＤブロックとを含んでおり、
該デコードブロックが、
入力を多重化して、処理ユニット関連トランザクションに関連するアドレスを生成するマルチプレクサと、
前記アドレスを受信し、該アドレスに関連するトランザクションを受信するモジュールの宛先アドレスを提供するレンジレジスタデコーダと、
前記宛先アドレスを受信するリルートモジュールＩＤブロックと
を含み、
前記リルートモジュールＩＤブロックが、
前記コンピュータシステム中の１以上のオリジナルモジュールのアドレスを提供するオリジナルモジュールＩＤと、
前記コンピュータシステム中の代替モジュールの論理的な宛先モジュールＩＤを提供するリマッピングモジュールＩＤと
を含んでおり、該代替モジュールが前記コンピュータシステム中のオリジナルモジュールの機能を代替するものである相互接続メカニズム。
【請求項２】
前記リルートモジュールＩＤブロックは、有効ビット指示をさらに含み、該有効ビット指示が、前記オリジナルモジュールから前記代替モジュールへのトランザクションが有効な場合を示すものである請求項１に記載のメカニズム。
【請求項３】
前記マルチプレクサが受信する前記入力は、前記複数の入出力装置からの入力である請求項１に記載のメカニズム。
【請求項４】
前記アドレスが、入出力装置アドレスである請求項１に記載のメカニズム。
【請求項５】
前記代替モジュールが、前記オリジナルモジュールにアドレス指定されたトランザクションを要求するプログラムを含むものである請求項１に記載のメカニズム。
【請求項６】
前記オリジナルモジュールの状態が、前記代替モジュールにコピーされるものである請求項１記載のメカニズム。
【請求項７】
前記代替モジュールが、前記コンピュータシステムの非アクティブコンポーネントである請求項１に記載のメカニズム。
【請求項８】
前記代替モジュールが、前記コンピュータシステムのアクティブコンポーネントである請求項１に記載のメカニズム。
【請求項９】
コンピュータシステム中の故障したオリジナルモジュールから前記コンピュータシステム中の代替モジュールに仮想パスに沿ってトランザクションをリルーティングする方法であって、前記トランザクションが前記故障したオリジナルモジュールに対して開始されるものであり、
前記代替モジュールを前記故障したオリジナルモジュールの代替として識別するリマッピングモジュールＩＤを格納するステップと、
前記故障したオリジナルモジュールのトランザクションを受信するステップであって、前記トランザクションが前記故障したオリジナルモジュールのアドレスを含むものであるステップと、
前記アドレスを抽出するステップと、
該アドレスをデコードして、前記トランザクションを受信する前記故障したオリジナルモジュールのＩＤを提供するステップと、
該故障したオリジナルモジュールのＩＤを前記リマッピングモジュールＩＤと比較するステップと、
該リマッピングモジュールＩＤに基づいて前記トランザクションを前記代替モジュールにリルーティングするステップと
を含むものである方法。
【請求項１０】
前記故障したオリジナルモジュールの状態を前記代替モジュールにコピーするステップと、前記故障したオリジナルモジュールにアドレス指定されたトランザクションを要求するように前記代替モジュールを再プログラムするステップとをさらに含む請求項９に記載の方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、冗長サブシステムおよびコンポーネントを含むコンピュータシステムの技術分野に関する。
【０００２】
【従来の技術】
現在のマルチプロセッサコンピュータシステムには、通常、主装置が故障した場合に使用することのできる１以上の冗長あるいは予備の装置が備えられている。たとえば、コンピュータシステムに２枚のイーサネットカードを装備し、第１のイーサネットカードが故障すると、ゼロもしくは最小のコンピュータダウンタイムで第２の（または予備の）カードを使用することができる。適切な冗長性を提供するために、現在のコンピュータシステムは、コンピュータシステムが分割される複数のパーティションについて予備装置を備えることができる。したがって、３つのパーティションを有するコンピュータシステムは、３つのパーティションそれぞれに１つの主装置と１つの予備装置とを含みうる。主装置および予備装置というこのコンフィギュレーションは、コンピュータシステムのコストを上げるとともに、コンピュータシステムレイアウトに対してさらなるスペースの制約を課す。
【０００３】
【発明が解決しようとする課題】
【０００４】
本発明の課題は、仮想ハードウェアパスを生成して、故障したコンピュータシステムコンポーネントにアドレス指定されたトランザクションを、代替コンピュータシステムコンポーネントが要求できるようにすることが可能な方法およびメカニズムを提供することである。
【課題を解決するための手段】
一実施形態では、コンポーネントは、イーサネットカードや他の入出力装置等の入出力装置（以下、「Ｉ／Ｏ」とよぶ）である。しかし、本方法および本メカニズムは、Ｉ／Ｏ装置以外のコンピュータコンポーネントによる使用にも適合することができる。
【０００５】
オリジナルコンポーネント（または元のコンポーネント）と代替コンポーネントとは、同じタイプであることが好ましい。代替コンポーネントは、他のコンピュータシステム機能に現在使用されていてもよい（つまり、代替コンポーネントは、コンピュータシステムにおいてアクティブである）。あるいは、代替コンポーネントは、たとえば、インストールされた予備のように非アクティブであってもよい。
【０００６】
一実施形態において、ハードウェアを使用して、故障中のまたは故障したコンポーネントの間のパスを代替コンポーネント間のパスと同一に見えるようにする。故障したコンポーネント間の同じ物理パスは維持されるが、仮想パスが代替コンポーネントに対して確立される。そして、ソフトウェアを使用して、故障したコンポーネント間のアクティビティを保留し、故障したコンポーネントの状態を代替コンポーネントに再構築し、代替コンポーネントにおいて動作を再開する。そして、故障したコンポーネントに関するすべてのトランザクションまたはアクティビティが代替コンポーネントに行くことになる。この転送を確実にするために、レンジレジスタセットを使用してアドレス変換マッピングが呼び出される。プロセッサが、あるコンポーネントに行くアドレスを生成すると、そのアドレスをレンジレジスタと照らし合わせてチェックし、トランザクションをどのコンポーネントにルーティングすべきかを決定する。コンポーネントの故障によりトランザクションをリルーティングする必要がある場合には、レンジレジスタによって指定すべきリルートＩＤアドレス（ｒｅｒｏｕｔｅ　ＩＤ　ａｄｄｒｅｓｓ）がマップテーブルに示される。
【０００７】
特に、（故障した）オリジナルコンポーネントおよび代替コンポーネントの識別情報は、リルートモジュールＩＤブロック内に格納することができ、識別情報は、オリジナルコンポーネントが故障した場合には、適切な代替コンポーネントがリルートモジュールＩＤブロックを参照することによって識別することができるように、たとえばマップテーブルの使用などによって関連付けることができる。代替コンポーネントは、故障したコンポーネントにアドレス指定されたトランザクションを要求するとともに、故障したコンポーネントの状態を代替コンポーネントにコピーするために使用されるプログラムを含む。
【０００８】
一実施形態では、１以上のブリッジユニットによって連結された複数のＩ／Ｏ装置および複数の処理ユニットを備えるコンピュータシステムで使用するための仮想入出力（Ｉ／Ｏ）相互接続メカニズムであって、アドレスデコードブロックを備え、アドレスデコードブロックは、入力を多重化して、プロセッサユニット関連トランザクションに関連するアドレスを生成するマルチプレクサと、アドレスを受信し、アドレスに関連するトランザクションを受信するモジュールの宛先アドレスを提供するレンジレジスタデコーダと、宛先アドレスを受信するリルートモジュールＩＤブロックとを備えるメカニズムが提供される。リルートモジュールＩＤブロックは、コンピュータシステム中の１以上のオリジナルモジュールのアドレスを提供するオリジナルモジュールＩＤと、コンピュータシステム中の代替モジュールの論理的な宛先モジュールＩＤを提供するリマッピングモジュールＩＤ（ｒｅｍａｐｐｉｎｇ　ｍｏｄｕｌｅ　ＩＤ）とを含み、代替モジュールはコンピュータシステム中のオリジナルモジュール（または元のモジュール）の機能を代替する。
【０００９】
一実施形態では、コンピュータシステム中の故障したコンポーネントを動作コンポーネントに代替させる方法は、故障したコンポーネントを検出するステップと、故障したコンポーネントと同じタイプのコンポーネントが存在するかどうかを判定するステップとを含む。代替コンポーネントが存在する場合には、本方法は、故障したコンポーネントの間の（ｇｏｉｎｇ　ｔｏ　ｏｒ　ｃｏｍｉｎｇ　ｆｒｏｍ）直接メモリアクセス等のすべてのアクティビティを保留するステップと、故障したコンポーネントの状態を代替コンポーネントにコピーするステップと、故障したコンポーネントをコンフィギュレーションを解除するステップと、故障したコンポーネントのハードウェアパスを代替コンポーネントにリマッピングするようにリルートモジュールＩＤを更新するステップと、代替コンポーネントのコンフィギュレーションレジスタを更新するステップと、故障したコンポーネントへの直接メモリアクセス等のアクティビティを再開するステップとを含む。代替コンポーネントが存在しない場合には、本方法はエラーハンドラを呼び出す。
【００１０】
詳細な説明では、同じ符号が同じ要素を指す添付図面を参照する。
【００１１】
【発明の実施の形態】
最近のコンピュータシステムは、互いに代替としての役割を果たすことができるいくつかの同様のコンポーネントを含みうる。たとえば、コンピュータシステムは、タイプＡのコンポーネント４つと、タイプＢのコンポーネント４つとを含みうる。４つのタイプＡコンポーネントはすべて、ルーチンコンピュータシステム動作中に使用されることができる。すなわち、タイプＡコンポーネントに“予備（ｓｐａｒｅ）”はない。タイプＢコンポーネントの場合には、ルーチンコンピュータ動作中に３つが使用されることができ、４番目のタイプＢコンポーネントはインストールされた予備でありうる。４つのタイプＡコンポーネントの１つが故障した場合には、残りのタイプＡコンポーネントのうちの１つ以上を、故障したタイプＡコンポーネントの代替として利用することができる。タイプＢコンポーネントの１つが故障した場合には、インストールした予備のタイプＢコンポーネントを代替として利用することができる。
【００１２】
図１は、４つのタイプＡコンポーネントおよび４つのタイプＢコンポーネントを備えるコンピュータシステム１０を示す。タイプＡおよびタイプＢの各コンポーネントは、インタフェース接続２０によってコンピュータシステム１０の他のコンポーネント（図示せず）に連結される。４つのタイプＡコンポーネントおよびコンポーネント１８以外のすべてのタイプＢコンポーネントは、コンピュータシステム１０の通常動作中に使用される。たとえば、コンポーネント１１が故障した場合には、コンポーネント１３（または、コンポーネント１５あるいはコンポーネント１７）をコンポーネント１１の代替とすることができる。コンポーネント１２が故障した場合には、コンポーネント１８をコンポーネント１２の代替とすることができる。代替としてまたは加えて、コンポーネント１４またはコンポーネント１６を故障したコンポーネント１２の代替とすることもできる。
【００１３】
あるコンポーネントを別のコンポーネントで代替するには、故障したコンポーネントからのハードウェアパスを定義し、代替コンポーネントに対するハードウェアパスを、故障したコンポーネントのハードウェアパスと同一に見えるようにすることができる。そして、故障したコンポーネントを対象とした任意のトランザクションは、代替コンポーネントに向けられることになる。したがって、コンポーネント１１が故障し、コンポーネント１３が代替として指定される場合には、コンポーネント１３へのパス２３、２０は、コンポーネント１１へのパス２１、２０と同一に見えるようにされる。以下、この概念を仮想化と呼ぶことにする。
【００１４】
タイプＡまたはＢコンポーネントのうちの１つの故障は、たとえば、失敗した直接メモリアクセス（ｄｉｒｅｃｔ　ｍｅｍｏｒｙ　ａｃｃｅｓｓ：以下、「ＤＭＡ」とよぶ）試行中に検出することができる。コンピュータシステム１０のハードウェア故障検出システム（図示せず）は、ＤＭＡの失敗を検出し、あるコンポーネントの別のコンポーネントでの代替化を完了するアルゴリズムを呼び出すことができる。故障したコンポーネントを代替する他に、コンポーネントの代替および仮想化は、あるタイプのコンポーネントをすべて取り外して、検査し、必要であれば修復し、交換するか、または、そのタイプの新しいコンポーネントと単に交換する定期的な予防のためのメンテナンス等の他の理由によっても行うことができる。
【００１５】
図２は、仮想化が用いられるコンピュータシステムのより詳細な例である。コンピュータシステム１００は、８つの中央演算処理装置（ＣＰＵ）１０１〜１０８を含む。各ＣＰＵ１０１〜１０８は、図示のようにノースブリッジ１２１または１２２に連結される。ノースブリッジ１２１および１２２は、スケーラブルインタフェース１２０によって接続される。ノースブリッジ１２１および１２２には、メモリ１２４およびメモリ１２５にも連結される。最後に、ノースブリッジ１２１にはサウスブリッジ１３０〜１３７が連結され、ノースブリッジ１２２にはサウスブリッジ１４０〜１４７が連結される。サウスブリッジ１４０、１４４、１３０、１３２、および１３６には、イーサネットカード１５４、１５５、１５１、１５２、および１５３がそれぞれ連結される。
【００１６】
図２に示す各種ハードウェアコンポーネントを、いくつかの方式の１つに従ってパーティション化する（ｐａｒｔｉｔｉｏｎｅｄ）ことができる。コンピュータシステム中のハードウェアコンポーネントのパーティション化は、コンピュータシステムパフォーマンスの最適化するための既知の技法である。例として、図３は１つの可能なパーティション方式を示す。パーティション０（１６０）は、ＣＰＵ１０１、１０３、１０５と、いくつかのメモリ１２４と、イーサネットカード１５１と、他の入出力（Ｉ／Ｏ）カードおよび他のコンポーネント等の他のハードウェアコンポーネント（図示せず）とを含む。パーティション１（１６１）は、ＣＰＵ１０２、１０６と、いくつかのメモリ１２４と、イーサネットカード１５２、１５４と、他のＩ／Ｏカードを含む他のハードウェアコンポーネント（図示せず）とを含む。パーティション２（１６２）は、ＣＰＵ１０４、１０７、１０８と、いくつかのメモリ１２４と、イーサネットカード１５３と、他のＩ／Ｏカードを含む他のハードウェアコンポーネント（図示せず）とを含む。イーサネットカード１５５は、特定のパーティションいずれにも割り当てられない。
【００１７】
次に図２および図３の双方を参照して、仮想化の実施（方法および装置）について詳細に述べる。具体的には、Ｉ／Ｏカードの仮想化（より具体的にはイーサネットカードの仮想化）を参照して説明する。しかし、コンピュータシステム１００の他のハードウェアコンポーネントを、仮想化を用いてあるコンポーネントを同様の別のコンポーネントに代替することもできる。特定の例では、イーサネットカード１５２が故障する。故障したイーサネットカード１５２の機能を代替するため、イーサネットカード１５４からのハードウェアパスを故障したイーサネットカード１５２に対するハードウェアパスと同一に見えるようにすることによって、イーサネットカード１５４で代替することができる。すなわち、イーサネットカード１５４が、コンピュータシステム１００の他のコンポーネントからはノースブリッジ１２１およびサウスブリッジ１３３に連結しているように見えるように、“仮想化”される。これは、イーサネットカード１５２に行くあらゆるトランザクションがイーサネットカード１５４にルーティングされることを意味する。加えて、イーサネットカード１５２に割り当てられたアドレス範囲は、イーサネットカード１５４によって要求されることになる。したがって、ＣＰＵがイーサネットカード１５２へのアドレスを生成する場合には、ノースブリッジ１２１および１２２はイーサネットカード１５４を、イーサネットカード１５２ではなく宛先として代替する。ピアツーピアトランザクション（ｐｅｅｒ−ｔｏ−ｐｅｅｒ　ｔｒａｎｓａｃｔｉｏｎ）をイーサネットカード１５２にルーティングする必要がある場合には、ノースブリッジ１２１および１２２はピアツーピア転送（ｐｅｅｒ−ｔｏ−ｐｅｅｒ　ｔｒａｎｓｆｅｒ）をイーサネットカード１５４にルーティングする。加えて、イーサネットカード１５４は、以前はイーサネットカード１５２に割り当てられていたアドレス範囲を要求するようにプログラムされる。最後に、後述するように、イーサネットカード１５２の状態がイーサネットカード１５４にコピーされる。
【００１８】
図４は、ＣＰＵがＩ／Ｏアクセスおよびイーサネットカード１５１〜１５５へのハードウェアパスの仮想化を行うことができるように、ノースブリッジ１２１および１２２に組み込むことのできるアドレスデコードブロック１７０を示す。１７１において、ＣＰＵ１０１〜１０４がノースブリッジ１２１への入力を提供し、この入力がマルチプレクサ１７２において多重化されてアドレス１７３を提供する。そして、アドレス１７３がレンジレジスタデコーダ１７４に提供される。デコーダ１７４の出力は、（たとえば、ノースブリッジやサウスブリッジの）宛先１７５を含む。宛先１７５はリルートモジュールＩＤブロック１７６に提供され、リルートモジュールＩＤブロック１７６は論理宛先ＩＤ１７７を提供する。
【００１９】
図５は、リルートモジュールＩＤブロック１７６を詳細に示す。ブロック１７６は、有効ビット列１８１と、オリジナルモジュールＩＤセクション１８２と、リマッピングモジュールＩＤセクション１８３とを含む。また、制御ブロック１８４も図示されている。オリジナルモジュールＩＤセクション１８２は、イーサネットカード１５１〜１５５のうちの１以上のものについての識別情報を含む。この情報は、元々機能しているイーサネットカードを識別する。リマッピングモジュールＩＤセクション１８３は、元々機能しているイーサネットカードが故障した場合（または、代替が必要な他のアクションの場合）の代替イーサネットカードを識別する情報を含む。（たとえば、ビットが１に設定されている場合には）有効ビット列１８１は、オリジナルの故障したイーサネットカードから代替イーサネットカードへの変換（ｔｒａｎｓｌａｔｉｏｎ）が有効な場合を示す。
【００２０】
リルートモジュールＩＤブロック１７６は、いくつかのエントリを含みうる。エントリの数は、いくつの相互接続が代替を同時に受信することができるかに影響する（ｄｉｃｔａｔｅ）。たとえば、リルートモジュールＩＤブロック１７６が８個のエントリを含む場合には、最高で８個の代替または再配向を同時に行うことができる。各エントリは、エントリ（または、変換）が有効なことを示す有効ビットと、オリジナルモジュールＩＤと、代替モジュールＩＤとを含む。
【００２１】
図６は、Ｉ／Ｏ仮想化プロセス２００を示すフローチャートである。図６において、プロセス２００は、図２に示すイーサネットカードの仮想化、特にイーサネットカード１５４で代替可能なイーサネットカード１５２の故障に関連する。プロセス２００はブロック２０５において開始される。ブロック２１０において、管理ソフトウェアが、イーサネットカード１５２と同じタイプの予備イーサネットカードが存在し、利用可能であるかどうかを判定する。予備イーサネットカードが利用可能ではない場合には、プロセス２００はブロック２１５に移り、エラーハンドラが呼び出される。ブロック２１０において、予備イーサネットカードが利用可能な場合には、イーサネットカード１５２が故障した状態であり、プロセス２００はブロック２２０に移る。図示の例では、イーサネットカード１５４が存在し、故障したイーサネットカード１５２の代替として利用可能である。ブロック２２０において、管理ソフトウェアはＤＭＡを中断する。次に、ブロック２２５において、イーサネットカード１５２の状態がイーサネットカード１５４にコピーされる。そして、ブロック２３０において、管理ソフトウェアはイーサネットカード１５２のコンフィギュレーションを解除する（ｄｅｃｏｎｆｉｇｕｒｅ）。ブロック２３５において、管理ソフトウェアは、イーサネットカード１５２へのトランザクションを生成可能なコンピュータシステム１００全体を通じてリルートモジュールＩＤブロックを更新する。更新は、有効ビット１８１を０から１に設定することと、イーサネットカード１５２のオリジナルモジュールＩＤをイーサネットカード１５２のサウスブリッジ側に設定することと、イーサネットカード１５２のリマッピングモジュールＩＤをイーサネットカード１５４のサウスブリッジ側に設定することとを含む。
【００２２】
ブロック２４０において、ノースブリッジ１２２およびサウスブリッジ１４４におけるコンフィギュレーションレジスタは、イーサネットカード１５４が元々イーサネットカード１５２に割り当てられていたアドレス範囲を要求するように更新される。ブロック２４５において、管理ソフトウェアは、イーサネットカード１５２へのＤＭＡを再開する。ブロック２５０において、プロセス２００が終了する。
【００２３】
故障したイーサネットカード１５２を修復し、コンピュータシステム１００に復帰させることができる。この場合には、復帰したイーサネットカード１５２は、故障したイーサネットの代替となりうる予備のイーサネットカードとしての役割を果たすことができる。
【００２４】
上述した例示的な実施形態は、カード（または、モジュール）レベルでの代替またはパスの仮想化に言及している。しかし、この代替は、コンピュータシステムにおいてカードレベルよりも低いレベルまたは高いレベルで行うことができる。
【図面の簡単な説明】
【図１】冗長コンポーネントを採用するコンピュータシステムを示す概略図である。
【図２】Ｉ／Ｏカードが故障した場合に、Ｉ／Ｏ相互接続の仮想化を使用して冗長性を提供するマルチプロセッサコンピュータシステムを示す概略図である。
【図３】図２のシステムと併せて使用することが可能なパーティション方式を示す概略図である。
【図４】図２のシステムと併せて使用するアドレスデコードブロックを示す概略図である。
【図５】図２のシステムと併せて使用するリルートモジュールブロックを示す概略図である。
【図６】ハードウェアパス仮想化方法を示すフローチャートである。
【図１】
2004030578.tif 000003
【図２】
2004030578.tif 000004
【図３】
2004030578.tif 000005
【図４】
2004030578.tif 000006
【図５】
2004030578.tif 000007
【図６】
2004030578.tif 000008