(57)【要約】【課題】論理分割機構によりプロセッサバス等の共通資源を論理分割して使用している場合、トランザクションや障害の影響範囲が論理区画よりも広範囲に及ぶことを抑える。【解決手段】ノードコントローラ２００は、プロセッサ１００の論理区画識別レジスタ１２０の値に従い論理区画管理テーブル３００を参照し、同一論理区画に属するプロセッサとノードを限定する。【選択図】  図１
2005122229.tif 000002
【特許請求の範囲】
【請求項１】
少なくとも１つ以上の論理区画に分割され、第１のバスを介して相互に接続する複数のプロセッサを有する計算機システムにおいて、
前記複数のプロセッサのそれぞれが第２のバスを介して接続するノードコントローラを備え、
前記ノードコントローラは、前記複数のプロセッサのうち、少なくとも１つのプロセッサが発行した信号を前記第２のバスを介して受信し、当該プロセッサと同一の論理区画に属する他のプロセッサに送信することを特徴とするシステム計算機。
【請求項２】
複数のプロセッサと接続し、前記複数のプロセッサのうち、少なくとも１つのプロセッサが発行する信号を他のすべてのプロセッサに伝送する第１のバスと、
前記プロセッサが発行する信号を当該プロセッサと同一の論理区画に属する少なくとも１つの他のプロセッサに伝送する第２のバスと、
前記プロセッサが発行する信号を伝送する前記第１のバスまたは前記第２のバスを選択する信号セレクタと、
前記第２のバスと接続し、前記信号セレクタを制御するノードコントローラを備えることを特徴とする計算機システム。
【請求項３】
プロセッサバスを介して相互に接続する複数のプロセッサを有する計算機システムであって、相互結合網を介して少なくとも１つのプロセッサを有する少なくとも１つの他の計算機システムに接続する計算機システムにおいて、
前記プロセッサバスおよび前記相互結合網に接続するノードコントローラを備え、
前記ノードコントローラは、前記複数のプロセッサのうち、少なくとも１つのプロセッサが発行した信号を、前記プロセッサバスを介して受信し、前記プロセッサと同一の論理区画に属する他のプロセッサまたは前記他の計算機システムに、前記信号を前記プロセッサバスまたは前記総合結合網を介して送信することを特徴とする計算機システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、論理分割された計算機システムに関する。
【背景技術】
【０００２】
プロセッサやメモリなどの物理的資源を仮想化し、計算機システムに任意の数の論理的な区画を生成する論理分割という技術がある。論理分割は、ハイパバイザと呼ばれるファームウェア（以下、ハイパバイザという）によって実現される。論理分割では、複数のオペレーティングシステム（以下、ＯＳという）は、ハイパバイザが提供する論理プロセッサ上で実行される。ハイパバイザにより複数の論理プロセッサが物理プロセッサへマッピングされ、時分割で切り替えながら実行される。したがって、物理プロセッサの数よりも多くの論理区画を生成し同時に実行することが可能になる。
【０００３】
【特許文献１】特開２００２−２２９８１１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
論理分割された計算機システム（以下、ノードをいう）では、プロセッサバスのように複数のプロセッサで共有される資源が存在する。通常、ノード内のあるプロセッサに障害などが発生した場合、障害などが発生したプロセッサがプロセッサバス上に初期化信号をアサートする。ノード内においてプロセッサバスに接続されたすべての他のプロセッサに初期化信号が伝送され、ノード全体の初期化が実行される。
【０００５】
一方、ノードが論理分割されている場合、ある論理区画で実行されているプロセッサで障害などを検出して初期化信号をプロセッサバス上にアサートすると、前述のようにプロセッサバス上の他の論理区画に割り当てられたノード内の他のプロセッサも初期化信号を受信することになり、ある論理区画に属するプロセッサに発生する障害などの影響が他の論理区画にも及んでしまうという問題がある。
【０００６】
また、論理区画は、ハイパバイザによって時分割で切り替えられるため、ノードコントローラは現在プロセッサで実行されている論理区画がどの論理区画に属するものかはトランザクションから知ることができない。したがって、プロセッサから発行されたトランザクションが回復不能な障害を起こした場合、可能性のあるすべてのプロセッサ（プロセッサバス上のすべてのプロセッサ）に対して障害を通知し、計算機を初期化する必要がある。この場合も、ある論理区画で起こった障害が他の論理区画にまで及んでしまう問題となる。
【０００７】
さらに、プロセッサが発行するトランザクションの中には共有資源（プロセッサバス等）の排他アクセス権を要求するトランザクションも存在する。ある論理区画に属するプロセッサが排他アクセス権を要求するトランザクションを発行した場合、プロセッサバスに接続された他の論理区画に属するプロセッサもトランザクションを発行できなくなる。この場合、ある論理区画の動作が、他の論理区画の実行効率に影響を与えることになる。
【０００８】
本発明は、上述の問題を考慮し、論理区画の独立性を高め、実行効率と可用性を向上させることを目的とする。
【課題を解決するための手段】
【０００９】
論理分割された計算機システム内のプロセッサが属する論理区画に対応する計算機システム内のプロセッサを管理する論理区画管理テーブルをノードコントローラ内に設け、任意のプロセッサによって発行された信号をそのプロセッサの属する論理区画内の自計算機内のプロセッサに限定して転送する。
【発明の効果】
【００１０】
ある論理区画に属するプロセッサが発行する信号による他の論理区画に対する影響を抑えることができる。
【発明を実施するための最良の形態】
【００１１】
図１は、論理分割された計算機システムの一構成例を示す。
【００１２】
図１の計算機システム（以下、ノードという）は、プロセッサ１００ａ〜１００ｄ（以下、プロセッサ１００という）、ノードコントローラ２００ａ、図示されていないＩ／Ｏコントローラと主記憶をハードウェアとして有している。ノードコントローラ２００ａとプロセッサ１００は、プロセッサバス１１０を介して接続している。また、ノードコントローラ２００ａは、相互結合網６００を介して他の計算機システム（以下、他ノードという）が有するノードコントローラ２００ｂと接続している。
主記憶とＩ／Ｏコントローラは、ノードコントローラ２００ａの外にあってもよく、中に含まれてもよい。以下の説明ではどちらの構成でも差異を生じない。なお、相互結合網６００は、クロスバーやバススイッチなどを用いることができる。
【００１３】
ハイパバイザ８００は、プロセッサ１００を論理分割し、論理区画１３０ａ〜１３０ｃ（以下、論理区画１３０という）を生成する。ハイパバイザ８００は、プロセッサ１００上で実行されるソフトウェアの一種であり、プロセッサ１００やノードコントローラ２００ａの操作権限を有する。
【００１４】
論理区画１３０ａは、プロセッサ１００ａと１００ｂを有する。論理区画１３０ｂは、プロセッサ１００ｂと１００ｃを有する。論理区画１３０ｃは、プロセッサ１００ｄを有する。プロセッサ１００は、各論理区画に属するオペレーティングシステム（以下、ＯＳという）を実行する。
【００１５】
プロセッサ１００は、信号線１４０ａ〜１４０ｄ（以下、信号線１４０という）を介して初期化信号を発行し、また受信することができる。
【００１６】
信号線１４０は、後述の条件で信号セレクタ１８０における選択によってプロセッサバス１１０に接続する信号線１５０ａ〜１５０ｄ（以下、信号線１５０という）と接続し、またはノードコントローラ２００ａに接続する信号線１６０ａ〜１６０ｄ（以下、信号線１６０という）と接続する。
【００１７】
ノードコントローラ２００ａは、論理分割モードレジスタ２５０と論理区画管理テーブル３００を有する。
【００１８】
論理分割モードレジスタ２５０は、ノードの全体が論理分割モードで動作しているか否かを示すフラグを記憶する。ハイパバイザ８００が論理分割モードレジスタを管理する。例えば、ノード全体が論理分割モードで動作している場合、論理分割モードレジスタのビット値が「１」とされる。物理分割モードで動作していない場合、ビット値が「０」とされる。
【００１９】
信号セレクタ１８０は、ノードコントローラ２００ａによって制御される。ノードが論理分割モードでないの場合、論理分割レジスタ２５０の値がハイパバイザ８００によって「０」と設定さる。したがって、ノードコントローラ２００ａは、信号セレクタにおいて信号線１４０と信号線１５０が選択されるよう制御する。信号線１４０とプロセッサバス１１０が信号線１５０を経由して接続する。この場合は、プロセッサバス１１０上に発行された信号は、プロセッサバス１１０に接続されるすべてのプロセッサ１００が受信する。
【００２０】
ノードが論理分割モードの場合、ハイパバイザ８００によって論理分割モードレジスタ２５０の値が「１」と設定される。信号セレクタにおいては信号線１６０が選択される。信号線１４０は、信号線１６０を経由してノードコントローラ２００ａと接続する。プロセッサ１００が発行する信号は、ノードコントローラ２００が受信するため、プロセッサバス１１０には発行されない。
【００２１】
論理区画管理テーブル３００は、各論理区画１３０がどのプロセッサを有するかを管理する手段の一例である。ハイパバイザ８００によって論理区画１３０の構成が変更されると、論理区画管理テーブル３００の内容が変更される。
【００２２】
論理区画管理テーブル３００のエントリは、各論理区画に対応する自ノード内のすべてのプロセッサ又は他ノードを示すビットを記憶する。例えば、プロセッサ１００ａと１００ｂは共に論理区画１３０ａに属することから、プロセッサ１００ａと１００ｂに対応するビット値が「１」となっている。また、論理区画１３０ａに属する他ノードが存在しないことから、他ノードを示すビット値が「０」となっている。
【００２３】
図２は、初期化信号を発行する処理を示す。
【００２４】
ステップ２０１では、プロセッサ１００ａが初期化信号を発行する。発行された初期化信号は、信号線１４０ａを介して伝送される。
【００２５】
ステップ２０２では、ノードコントローラ２００ａは、論理分割モードレジスタの値を参照し、ノードが論理分割モードであるか否かを判別する。論理分割モードの場合、ステップ２０３に処理が移される。論理分割モードではない場合、ステップ２０７に処理が移される。
【００２６】
ステップ２０７では、ノードコントローラ２００ａの制御によって信号セレクタ１８０において信号線１５０ａが選択される。プロセッサ１００ａが発行した初期化信号は信号線１５０ａを経由してプロセッサバス１１０上に伝送される。プロセッサバスに接続されるプロセッサ１００のすべてが初期化信号を受信する。
【００２７】
ステップ２０３では、ノードコントローラの制御によって信号セレクタ１８０において信号線１６０ａが選択される。プロセッサ１００ａが発行した初期化信号は信号線１６０ａを経由してノードコントローラ２００ａに伝送される。ノードコントローラ２００ａは、信号線１６０ａから伝送された初期化信号を受信し、プロセッサ１００ａが初期化信号を発行したことを知ることができる。
【００２８】
なお、プロセッサ１００ａが発行した初期化信号にはプロセッサ１００ａを識別するＩＤは含まれていないが、ノードコントローラ２００ａとプロセッサ１００がプロセッサ１００ごとに専用の信号線１６０で接続されているため、ノードコントローラはどの信号線がアサートされたかを知ることによりどのプロセッサが信号を発信したかを知ることができる。
【００２９】
ステップ２０４では、ノードコントローラ２００ａは、論理区画管理テーブル３００から初期化信号を発行したプロセッサ１００ａが属する論理区画を検索する。
【００３０】
例えば、論理区画管理テーブル３００において、プロセッサ１００ａのエントリのビット値が「１」に対応する列には論理区画１３０ａである。よって、ノードコントローラ２００ａは、初期化信号を発行したプロセッサ１００ａが属する論理区画は、論理区画１３０ａであることが分かる。
【００３１】
また、ノードコントローラ２００ａは、論理区画管理テーブル３００において、初期化信号を発行したプロセッサ１００ａと同一の論理区画１３０ａに属する他のプロセッサが自ノード内にあるか否かを検索する。
【００３２】
例えば、論理区画管理テーブル３００において、論理区画１３０ａに対応する行には、プロセッサ１００ｂのエントリのビット値が「１」となっている。よって、ノードコントローラ２００ａは、プロセッサ１００ｂが論理区画１３０ａに属することが分かる。
【００３３】
ステップ２０５では、ノードコントローラ２００ａが１００ｂに対して信号線１６０ａ、１４０ａを経由して初期化信号を送信する。
【００３４】
ステップ２０６では、ノードコントローラ２００ａは、論理区画１３０ａに属するすべてのプロセッサに対して初期化信号を送信したか否かを判別する。初期化信号の送信を完了していない場合、ステップ２０５に戻る。初期化信号の送信を完了した場合、初期化完了を示すステップ２０８に処理が移される。
【００３５】
なお、初期化信号の発行に限らずエラー信号やリセット信号などの発行についても対応することができる。
【００３６】
なお、他ノードに存在するプロセッサが論理区画１３０ａに属する場合、他ノードにも初期化信号を伝達必要がある。例えば、論理区画１３０ａはプロセッサ１００ａとノードコントローラ２００ａ、プロセッサ１００ｆとノードコントローラ２００ｂを有する場合において、プロセッサ１００ａが初期化信号を発信する。前述のどうように、ノードコントローラ２００ａは論理区画テーブル３００を参照し、初期化信号を発信したプロセッサ１００ａは論理区画１３０ａに属し、
論理区画１３０ａには他のノードのノードコントローラ２００ｂが含まれることが分かる。ノードコントローラ２００ａは、後述の図５に示す論理区画識別子４６０（論理区画１３０ａを示す）、トランザクション本体を初期化要求の持つシステムトランザクションを生成し、ノードコントローラ２００ｂへ送信する。システムトランザクションを受信したノードコントローラ２００ｂは、自分が持つ論理区画テーブル３００ｂを参照し、論理区画１３０ａに属するプロセッサ１００ｆがあることが分かる。ノードコントローラ２００ｂは、プロセッサ100ｆに接続された信号線をアサートし、信号をプロセッサ１００ｆに伝送する。
【００３７】
このように、プロセッサとノードコントローラを接続する信号線を設けることによって、ある論理区画に属するプロセッサが発行した信号をプロセッサバスに伝送されずに、上述の専用の信号線（信号線１６０ａ）を介してノードコントローラに伝送される。ノードコントローラは、信号を発行したプロセッサがどの論理区画に属するかを判別して、信号を発行したプロセッサと同一の論理区画に属するプロセッサに対して個別に信号を送信することができ、信号を発行したプロセッサと異なる論理区画に属するプロセッサに対して信号を送信することを避けることができる。よって、ある論理区画に属するプロセッサが発行した信号の他の論理区画に対する影響を抑えることができる。
【００３８】
また、信号を発行したプロセッサが属する論理区画にどの他のプロセッサが属するか否かの判別は、プロセッサ内に判別させるための機構を設ける必要はなく、ノードコントローラが判別を行うことによってプロセッサ自らが判別するによる処理の負荷の増大を低減することができる。
【００３９】
図３は、論理分割された計算機システムの他の構成例を示す。
【００４０】
以下、既述の構成と同等のものは、同じ符号を用いるものとする。また、図1に示す構成と異なる点を中心に説明する。
【００４１】
図３の計算機システム（以下、ノードという）では、１つ以上のプロセッサ１００がプロセッサバス１１０を介してノードコントローラ２００ａ'に接続されている。ノードコントローラ２００ａ'は、相互結合網６００に接続されている。ノードコントローラ２００ａ'を有するノードとノードコントローラ２００ｂを有するノードが相互結合網を介して接続されている。
【００４２】
ノードコントローラ２００ａ'は、バストランザクション受信ユニット２１０、バストランザクション発行ユニット２２０、システムトランザクション受信ユニット２３０、システムトランザクション発行ユニット２４０、トランザクション完了待ちキュー３５０、論理区画アドレスマップ３１０及び論理区画管理テーブル３００ａを有する。
【００４３】
バストランザクション受信ユニット２１０は、自ノード内のプロセッサ１００がプロセッサバス１１０上に発行するバストランザクションを受信する。
【００４４】
バストランザクション発行ユニット２２０は、プロセッサバス１１０上にトランザクションを送信する。
【００４５】
システムトランザクション受信ユニット２３０は、他ノードのプロセッサ１００に発行され、相互結合網６００を介して転送されたシステムトランザクションを受信する。
【００４６】
システムトランザクション発行ユニット２４０は、相互結合網６００を介して他ノードに転送されるシステムトランザクションを送信する。
【００４７】
論理区画テーブル３００ａは、図１の論理区画テーブルと同様の構成を有する。例えば、行が論理区画に相当し、左のビットから順に当該ノード内のプロセッサに対応する。したがって、論理区画管理テーブル３００ａにおいては、論理区画１３０ａに属するプロセッサは、１００ａと１００ｂであることが分かる。また、論理区画１３０ａに対応する最右端のビットの値が「１」であることから、論理区画１３０ａに属するプロセッサが他ノードにも存在することを示している。
【００４８】
プロセッサ１００は、論理区画識別レジスタ１２０、割り込みコントローラ７００を有する。
【００４９】
論理区画識別レジスタ１２０は、ハイパバイザ８００が実行中の論理区画１３０にしたがって論理区画識別レジスタ１２０の値を管理する。プロセッサ１００は、発行するトランザクションに論理区画レジスタ１２０の値を後述の論理区画識別子として付加する。
【００５０】
割り込みコントローラ７００は、割り込みを引き起こすトランザクションを受信しときにハイパバイザ８００に実行を移す。使い方については、後述する。
【００５１】
なお、ノードコントローラ２００ａ'とノードコントローラ２００ｂを示しているが、より多くのノードコントローラを介してより多くのノードを接続することも可能である。
【００５２】
図４は、図３の計算機における論理区画の一例を示す。
【００５３】
図４では、１３０ａ〜１３０ｄの４つ論理区画が存在する。論理区画１３０ａは、プロセッサ１００ａ、１００ｂ、１００e、１００ｆを有する。論理区画１３０ｂは、プロセッサ１００ｂ、１００ｃを属する。論理区画１３０ｃは、プロセッサ１００ｄ、１００ｈを有する。論理区画１３０ｄは、プロセッサ１００ｇ、１００ｈを有する。また、ノードコントローラ２００ａ'とノードコントローラ２００ｂのそれぞれが論理区画管理テーブル３００ａと３００ｂを有する。
【００５４】
図５は、トランザクション４５０の構成を示す。
【００５５】
トランザクション４５０は、トランザクション本体４８０、論理区画識別子４６０、トランザクション識別子４９０、発行元識別子５００、及び宛先識別子５１０を有する。
【００５６】
論理区画識別子４６０は、前述のようにプロセッサ１００がトランザクション４５０を発行する際に、プロセッサ１００がトランザクション４５０に論理区画識別レジスタ１２０の値と同一の値を付加したものである。
【００５７】
トランザクション本体４８０は、トランザクション種別や対象アドレス、読み書きするデータなどを含む。
【００５８】
トランザクション識別子４９０は、トランザクション４５０を識別するための識別子である。
【００５９】
発行元識別子５００と宛先識別子５１０は、それぞれトランザクションの発行元と宛先を示す識別子である。
【００６０】
図６は、発行元識別子と宛先識別子の構成例を示す。
【００６１】
図５の発行元識別子５００と宛先識別子５１０は、ノード識別子フィールド５２０、ユニット識別子フィールド５３０、及びプロセッサ識別子フィールド５４０を有することが可能である。
【００６２】
図７は、トランザクション完了待ちキューの構成の一例を示す。
【００６３】
トランザクション完了待ちキューの各エントリは、トランザクション４５０を格納する部分と完了待ちベクタ３９０を有する。
【００６４】
図８は、完了待ちベクタの構成を示す。
【００６５】
完了待ちベクタ３９０は、論理区画管理テーブル３００ａに対応するエントリからなり、それぞれ自ノードのプロセッサと他ノードのノードコントローラに対応している。
【００６６】
図９は、論理区画アドレスマップ３１０の構成の一例を示す。
【００６７】
論理区画アドレスマップ３１０は、論理区画識別子に対応して、開始物理アドレスと終了物理アドレスが書き込まれたテーブルの一例である。一つ以上の論理区画識別子に対応して二つ以上のアドレス範囲が存在してもよい。論理アドレスマップ３１０の使い方は後述する。
【００６８】
図１０は、トランザクションの発行を示す
以下、論理区画１３０ａに属するプロセッサ１００ａがプロセッサバス１１０上にトランザクション４５０を発行する処理として説明する。
【００６９】
ステップ１００１では、プロセッサ１００ａがバストランザクションを発行する際にプロセッサ１００ａ内の論理区画識別レジスタ１２０の値を論理区画識別子４６０としてトランザクション４５０に付加する。プロセッサ１００ａが発行したトランザクション４５０は、バストランザクション受信ユニット２１０が受信する。
【００７０】
ステップ１００２では、バストランザクション受信ユニット２１０は、トランザクション本体４６０のトランザクションの種別に基づいて論理区画内の同期処理が必要なトランザクションであるか否かを判別する。論理区画内の同期処理が必要であると判断した場合、ステップ１００４に処理が移される。論理区画内の同期処理が必要でない場合、ステップ１００３に処理が移される。
【００７１】
ステップ１００３では、バストランザクション発行ユニット２２０は、バストランザクション受信ユニットから転送されたトランザクションをトランザクション発行の対象に向けて送信する。
【００７２】
ステップ１００４では、トランザクション発行ルーチンが開始される。トランザクション発行ルーチンは、図１１を用いて後述する。
【００７３】
なお、論理区画内の同期処理が必要なトランザクションとは、キャッシュ一貫性制御を伴うトランザクション、資源の排他制御を行うトランザクション、アドレス変換バッファ（ＴＬＢ）のパージを行うトランザクションなどをいう。
【００７４】
図１１は、トランザクションの発行ルーチンの処理を示す。
【００７５】
ステップ１１０１では、バストランザクション受信ユニット２１０がトランザクション４５０をトランザクション完了待ちキュー３５０に転送する。
【００７６】
ステップ１１０２では、ノードコントローラ２００ａ'は、論理区画管理テーブル３００ａを参照し、トランザクション４５０に付加された論理識別子４６０と同じ論理区画に属する自ノード内の他のプロセッサと他ノードを選択し、完了待ちベクタ３９０を設定する。
【００７７】
例えば、論理区画１３０ａを識別する論理区画識別子４６０がトランザクション４５０を発行したプロセッサ１００ａによって付加された場合、ノードコントローラ２００ａは、図３の論理区画管理テーブル３００ａを参照する。ノードコントローラ２００ａは、プロセッサ１００ａ（トランザクション発行元）、プロセッサ１００ｂ（自ノードの他のプロセッサ）、およびノードコントローラ２００ｂ（他ノード）が論理区画１３０ａに属することが分かる。ノードコントローラ２００ａ'は、論理区画１３０ａに属する発行元のプロセッサ（プロセッサ１００ａ）以外に対してトランザクション処理を行うため、プロセッサ１００ｂおよびノードコントローラ２００ｂに対応する完了待ちベクタのビット値に「１」を設定し、それ以外のビット値に「０」を設定する。
【００７８】
ステップ１１０３では、ノードコントローラ２００ａ'は、自ノード内のトランザクション未発行の対象プロセッサがあるか否かを判別する。自ノード内のトランザクション未発行の対象プロセッサがある場合、ステップ１１０４（図１２に示すバストランザクション発行ルーチン）に処理が移される。自ノード内のトランザクション未発行の対象プロセッサがない場合、ステップ１１０５処理が移される。
【００７９】
ステップ１１０５では、ノードコントローラ２００ａ'は、トランザクション未発行の対象ノードがあるか否かを判別する。トランザクション未発行の対象ノードがある場合、ステップ１１０６（図１３に示すシステムトランザクション発行ルーチン）に処理が移される。トランザクション未発行の対象ノードがない場合、ステップ１１０７に処理が移される。
【００８０】
ステップ１１０７では、ノードコントローラ２００ａ'は、完了待ちベクタ３９０のすべてのビット値が「０」になったか否かを判別する。完了待ちベクタ３９０のすべてのビット値が「０」になった場合、ステップ１１０８に処理が移される。トランザクションの発行対象であるプロセッサや他ノードに対してはトランザクションが発行済みとなる。
【００８１】
ステップ１１０８では、ノードコントローラ２００ａ'は、発行済みとなったトランザクションをトランザクション完了待ちキュー３５０から除く処理を行う。
【００８２】
ステップ１１０９では、発行元のバストランザクションに対応する応答バストランザクションが対象プロセッサによって生成され、バストランザクション発行ユニット２２０へ転送される。
【００８３】
ステップ１１１０では、バストランザクション発行ユニット２２０へ転送された応答バストランザクションがプロセッサバス１１０へ発行される。
【００８４】
例えば、発行元のプロセッサ１００ａに発行されたトランザクションの処理が完了した場合、プロセッサ１００ｂは完了を示す応答トランザクション４５０を発行し、または完了を示す信号を発行する。これによって、バストランザクション受信ユニット２１０は、トランザクション完了待ちキュー３５０の対応するトランザクションのプロセッサ１００ｂに対応する完了待ちビット値を「１」から「０」へと更新される。
【００８５】
このように、発行元プロセッサ以外の自ノードのプロセッサに「１」と書かれたエントリがある場合、対応するプロセッサを対象にしたトランザクション４５０が生成され、バストランザクション発行ユニット２２０へと転送される。他ノードのノード番号に「1」と書かれたエントリがある場合、対応するノードを対象にしたトランザクション４５０を生成し、システムトランザクション発行ユニット２４０へと転送される。バストランザクション発行ユニット２２０は、トランザクション４５０に指定された宛先識別子５１０で示されるプロセッサ１００を対象にバストランザクションを発行する。
【００８６】
図１２は、バストランザクション発行ルーチンの処理を示す。
【００８７】
ステップ１２０１では、バストランザクションの発行ルーチンが開始される。
【００８８】
ステップ１２０２では、プロセッサ１００ａが発行したバストランザクションがバストランザクション発行ユニットに転送される。
【００８９】
ステップ１２０３では、ノードコントローラ２００ａ'は、割り込みが必要なトランザクションであるか否かを判別する。割り込み処理が必要でない場合、ステップ１２０４に処理が移される。割り込みが必要な場合、ステップ１２０５に処理が移される。
【００９０】
ステップ１２０４では、バストランザクション２２０によって対象プロセッサ１００ｂに対してバストランザクションが発行され、ステップ１２０７に処理が移される。
【００９１】
ステップ１２０５では、バストランザクション発行ユニット２２０は、割り込みを引き起こすトランザクションをプロセッサ１００ｂに対して発行する。
【００９２】
ステップ１２０６では、対象プロセッサ１００ｂの割り込みコントローラ７００は、この割り込みを受けてハイパバイザ８００に制御を移し、ハイパバイザ８００によってトランザクション処理が実行される。
【００９３】
ステップ１２０７〜１２０９では、割り込み処理が完了し、バストランザクションの処理が完了したことが確認された後、ノードコントローラ２００ａ'は完了待ちベクタ３９０のプロセッサ１００ｂに対応するビット値が「０」に戻される。
【００９４】
図１３は、システムトランザクション発行ルーチンの処理を示す。
【００９５】
ステップ１３０１では、システムトランザクション発行ルーチンが開始される。
【００９６】
ステップ１３０２では、ノードコントローラ２００ａ'において、システムトランザクション発行ユニット２４０が対象ノードのトランザクションを送信する。
【００９７】
具体的は、システムトランザクション発行ユニット２４０は、ノードコントローラ２００ｂ宛のトランザクション４５０を相互結合網６００に向けて介して送信する。相互結合網６００は、トランザクション４５０の宛先識別子５１０が示すノードに対してトランザクションを転送する。
【００９８】
ステップ１３０３では、対象ノードのノードコントローラ２００ｂのシステムトランザクション受信ユニット２３０が相互結合網６００から転送されたトランザクション４５０を受信する。システムトランザクション受信ユニット２３０は、受信したトランザクションをトランザクション完了待ちキュー３５０に入れ、論理区画管理テーブル３００ｂの論理区画識別子１３０ａに対応するエントリを参照する。
【００９９】
ステップ１３０４では、ノードコントローラ２００ｂシステムトランザクション受信ユニット２３０は、自ノードのプロセッサに対応するビットの値に「１」があることから、トランザクション完了待ちキュー３５０の完了待ちベクタ３９０のプロセッサ番号（プロセッサ１００ｅ、１００ｆ）に対応するビット値を「１」にする。システムトランザクション受信ユニット２３０は、対応するプロセッサ（１００ｅ、１００ｆ）を対象としたトランザクションを生成し、バストランザクション発行ユニット２２０へ転送する。
【０１００】
ステップ１３０５〜１３０６では、ノードコントローラ２００ｂは、図１１の自ノード内のバストランザクション発行ルーチンと同様に、トランザクション処理を実行し、完了待ちベクタの全てのビット値が「０」になった場合、当該トランザクションをトランザクション完了待ちキュー３５０から除く処理を行う。
【０１０１】
ステップ１３０７では、ノードコントローラ２００ｂは、元のトランザクションの発行元識別子５００を宛先識別子５１０へと付け替えた応答トランザクション４５０を生成し、システムトランザクション発行ユニット２４０へ転送する。システムトランザクション発行ユニット２４０は、応答トランザクションを相互結合網６００へ転送する。
【０１０２】
ステップ１３０８では、発行元のノードコントローラ２００ａのシステムトランザクション受信ユニット２３０が相互結合網を介して転送された応答トランザクションを受信する。システムトランザクション受信ユニット２３０は、トランザクション完了待ちキュー３５０の対応するエントリの完了待ちベクタ３９０の応答元ノード番号に対応するビット値を「０」に設定する。完了待ちベクタのすべてのビット値が「０」になった場合、トランザクション完了待ちキュー３５０から当該トランザクションを外し、対応する発行元のバストランザクションに対応する応答トランザクションを生成し、バストランザクション発行ユニット２２０へ転送する。バストランザクション発行ユニット２２０は、発行元のプロセッサ１００ａを対象に応答トランザクションをプロセッサバス１１０に発行し、一連のトランザクション処理を完了する。
【０１０３】
なお、トランザクション発行の処理対象は、プロセッサとしたが、Ｉ／Ｏコントローラに接続されたＩ／Ｏデバイスを対象とした場合にも同様の手順でトランザクション処理を実行することが可能である。
【０１０４】
このように、ノードコントローラは、信号を発行したプロセッサがどの論理区画に属するかを判別して、信号を発行したプロセッサと同一の論理区画に属するプロセッサに対して個別に信号を送信することができ、信号を発行したプロセッサと異なる論理区画に属するプロセッサに対して信号を送信することを避けることができる。よって、ある論理区画に属するプロセッサが発行した信号の他の論理区画に対する影響を抑えることができる。
【０１０５】
また、ノードコントローラが信号を発行したプロセッサと同一の論理区画に属するプロセッサとの間の信号の送信と受信を制御することによって、同一の論理区画内における信号、特にＴＬＢ制御やキャッシュ一貫性制御などの処理における信号のやり取りの時間を短縮、すなわちトランザクション処理の高速化を図ることができる。
【０１０６】
図１４は、障害を検知した場合の処理を示す。
【０１０７】
ステップ１４０１では、プロセッサ１００ａがトランザクション４５０をプロセッサバス１１０上に発行する。バストランザクション受信ユニット２１０は、発行されたトランザクション４５０を受信する。
【０１０８】
ステップ１４０２では、ノードコントローラ２００ａ'は、トランザクション４５０に含まれるパリティビットやＥＣＣ等によって障害を検知する。障害を検知できなかった場合、ステップ１４０３に処理が移される。障害を検知した場合、ステップ１４０６に処理が移される。
【０１０９】
ステップ１４０３では、ノードコントローラ２００ａ'は、トランザクションの論理区画識別子４６０に従って、論理区画アドレスマップ３１０を参照する。
【０１１０】
ステップ１４０４では、ノードコントローラ２００ａ'は、トランザクション本体４８０に含まれる対象アドレスがトランザクションの示す論理区画識別子４６０に割り当てられた範囲内にあるか否かを判別する。対象アドレスが論理区画識別子４６０に割り当てられた範囲外である場合、障害を検知し、ステップ１４０６の処理に移される。対象アドレスが範囲内である場合、ステップ１４０５に処理（図１０に示す処理）が移される。
【０１１１】
ステップ１４０６〜１４０７では、障害処理トランザクションを生成し、図１１に示す処理に移される。
【０１１２】
具体的は、ノードコントローラ２００ａ'が障害を検知した場合、論理区画管理テーブル３００ａを参照し、プロセッサ１００ａと同一の論理区画に属するプロセッサ１００ｂおよびノードコントローラ２００ｂを対象に、障害処理を実行するトランザクションを生成し、転送する。バストランザクション発行ユニット２２０は、プロセッサ１００ｂを対象として障害処理を実行するトランザクションを生成し、発行する。障害処理を実行するトランザクションは、プロセッサ１００ｂに対して割り込みを引き起こし、割り込みコントローラ７００によって制御がハイパバイザ８００に移行する。ハイパバイザ８００は、受け取った割り込みトランザクションに含まれる論理区画識別子によって、論理区画１３０ａに対する障害が起こったことを検知し、プロセッサ１００ｂで実行されている論理区画のうち論理区画１３０ａに対する障害処理を行う。プロセッサ１００ｂでは、論理区画１３０ｂも時分割で実行されているが、論理区画１３０ｂはこの障害処理の影響を受けない。障害処理が完了するとハイパバイザ８００からプロセッサ１００ｂへ制御が移行し、割り込み完了の応答トランザクションが発行される。バストランザクション受信ユニット２１０は、プロセッサ１００ｂ上の障害処理が完了したことを検知し、完了待ちキュー３５０の完了待ちベクタ３９０の対応するビット値を「１」から「０」に変更する。ノードコントローラ２００ｂも同様の処理を行い、論理区画１３０ａに対する障害処理を完了する。
【０１１３】
このように、ノードコントローラが発見した障害の伝達範囲を論理区画内に限定することができる。また、ノードコントローラは、論理区画上で動作するＯＳによるアクセス範囲違反を検出し、当該論理区画内に限定して伝達することが可能である。
【図面の簡単な説明】
【０１１４】
【図１】論理分割された計算機システムの一構成例。
【図２】図１の計算機システムの初期化信号を発行する処理。
【図３】論理分割された計算機システムの他の構成例。
【図４】図３の計算機における論理区画の構成の一例。
【図５】トランザクション４５０の構成例。
【図６】発行元識別子と宛先識別子の構成例。
【図７】トランザクション完了待ちキューの構成例。
【図８】完了待ちベクタの構成例。
【図９】論理区画アドレスマップ３１０の構成例。
【図１０】トランザクションの発行。
【図１１】トランザクションの発行ルーチンの処理。
【図１２】バストランザクション発行ルーチンの処理。
【図１３】システムトランザクション発行ルーチンの処理。
【図１４】障害を検知した場合の処理。
【符号の説明】
【０１１５】
１００  プロセッサ
１１０  プロセッサバス
１２０  論理区画識別レジスタ
１３０  論理区画
１４０  信号線（プロセッサ１００−信号セレクタ１８０間）
１５０  信号線（信号セレクタ１８０−プロセッサバス１１０間）
１６０  信号線（信号セレクタ１８０−ノードコントローラ２００間）
１７０  信号線（プロセッサバス１１０−ノードコントローラ２００間）
１８０  信号セレクタ
２００  ノードコントローラ
２１０  バストランザクション受信ユニット
２２０  バストランザクション発行ユニット
２３０  システムトランザクション受信ユニット
２４０  システムトランザクション発行ユニット
２５０  論理分割モードレジスタ
３００  論理区画管理テーブル
３１０  論理区画アドレスマップ
３５０  トランザクション完了待ちキュー
３９０  完了待ちベクタ
４５０  トランザクション
４６０  論理区画識別子
４８０  トランザクション本体
４９０  トランザクション識別子
５００  発行元識別子
５１０  宛先識別子
５２０  ノード識別子フィールド
５３０  ユニット識別子フィールド
５４０  プロセッサ識別子フィールド
６００  相互結合網
７００  割り込みコントローラ
８００  ハイパバイザ
【図１】
2005122229.tif 000003
【図２】
2005122229.tif 000004
【図３】
2005122229.tif 000005
【図４】
2005122229.tif 000006
【図５】
2005122229.tif 000007
【図６】
2005122229.tif 000008
【図７】
2005122229.tif 000009
【図８】
2005122229.tif 000010
【図９】
2005122229.tif 000011
【図１０】
2005122229.tif 000012
【図１１】
2005122229.tif 000013
【図１２】
2005122229.tif 000014
【図１３】
2005122229.tif 000015
【図１４】
2005122229.tif 000016