(57)【要約】      （修正有）【課題】PCIバスに代表される汎用のIOバスを有するサーバにおいて、IOデバイス発のトランザクションによる他のLPARの資源へのアクセスを防止し、信頼性の高いLPAR環境を提供する。【解決手段】(1)IOデバイスからのトランザクションのアクセス対象が、該トランザクションを発生したデバイスが属するLPARに割り付けられた資源以外の場合には、CPUにエラーとして報告すると共にIOバス上で、該トランザクションをIOバス上で完了させる。(2)IOデバイス間のトランザクションによる他LPAR資源へのアクセスを防止するために、全IOデバイスの組み合わせ毎に1ビットのアクセス許可ビットを設け、該ビットが所定の値のときのみアクセスを許可する。(3)IOスロット単位でリセット信号を設けることで、他のLPARに影響を与えず、特定のLPARに割り付けられたIOスロットのみをリセットすることを可能にする。【選択図】図１
2011008793.tif 000002
【特許請求の範囲】
【請求項１】
複数のCPUと、メモリと、前記複数のCPUを接続することができるCPUバスと、メモリを接続するためのメモリインタフェースと、IOデバイスをそれぞれ接続するための複数のIOスロットを備えたIOインタフェースとを備え、複数の論理区画を設定可能な情報処理装置において、
各々の論理区画に前記CPU及び前記メモリの少なくとも一部を割り付け、前記IOスロットに接続されたIOデバイスのそれぞれを前記論理区画の一つに割り付け、前記論理区画上で個別にOSを稼動させるハイパバイザを有し、
前記IOインタフェースを経由して入力するIOデバイスからのメモリアクセストランザクションの宛先アドレスに対して該IOデバイスの属する論理区画に応じたアドレス変換を行い、アドレス変換の結果が示す宛先アドレスが該IOデバイスの属する論理区画に割り付けられたメモリに一致するか否かを判定し、判定結果が否ならば、前記ハイパバイザにエラー報告をするIO制御手段を備え、
前記ハイパバイザは前記エラー報告を受けた場合に対応する論理区画のOSを停止することを特徴とする情報処理装置。
【請求項２】
前記IO制御手段は、判定結果が否である場合に前記メモリアクセストランザクションの宛先アドレスをいずれの論理区画にも割り付けられていない特定のメモリ領域のアドレスに置き換えるアドレス置換手段をさらに有することを特徴とする請求項１記載の情報処理装置。
【請求項３】
前記IO制御手段は、前記複数IOスロットに接続されたIOデバイスのそれぞれを個別にリセットするリセット手段を有し、前記ハイパバイザは前記エラー報告を受けた場合に対応する論理区画に割り付けられたIOスロットに接続されたIOデバイスをリセットすることを特徴とする請求項１記載の情報処理装置。
【請求項４】
複数のCPUと、メモリと、前記複数のCPUを接続することができるCPUバスと、メモリを接続するためのメモリインタフェースと、IOデバイスをそれぞれ接続するための複数のIOスロットを備えたIOインタフェースとを備え、複数の論理区画を設定可能な情報処理装置において、
各々の論理区画に前記CPU及び前記メモリの少なくとも一部を割り付け、前記IOスロットに接続されたIOデバイスのそれぞれを前記論理区画の一つに割り付け、前記論理区画上で個別にOSを稼動させるハイパバイザを有し、
前記IOインタフェースを経由して入力するIOデバイスからのメモリアクセストランザクションのアクセス対象が属する論理区画を特定し、特定したアクセス対象が該IOデバイスの属する論理区画に割り付けられたメモリに一致するか否かを判定し、判定結果が否ならば、前記ハイパバイザにエラー報告をするIO制御手段を備え、
前記ハイパバイザは前記エラー報告を受けた場合に対応する論理区画のOSを停止することを特徴とする情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、単一の計算機で複数のOSを稼動させる仮想計算機システムに関し、OS間での不正アクセスによる誤動作の防止・エラー発生時の処理方法ならびに、それらを用いた計算機システムに関係する。
【背景技術】
【０００２】
米国特許公開公報US2002/0010811A1
論理分割(Logical Partitioning)は、単一のサーバ上で複数のオペレーティングシステム(Operating System、以下OS)を同時に動作させる技術である。論理分割では、ハイパバイザと呼ばれる管理プログラムがサーバ管理者からの指示に従って、サーバの計算機資源(メモリ領域、及びIOデバイスなどを含む)を複数の論理区画(LPAR)に分割して、各LPAR上で1つずつのOSを動作させる。
【０００３】
論理分割では、あるOSの動作によって他のLPAR上のOSが停止、もしくは誤動作してはならない。そのためには、あるOSが他のLPARの資源へアクセスできないこと(以下、アイソレーション)を保証する必要がある。
【０００４】
ところで、Intel社のIA-32、およびIA-64TM アーキテクチャに代表されるPCサーバでは、IOバスとしてPCIバスが広く用いられている。PCIバスは論理分割を意識した設計を為されていないため、IOデバイス発のアクセスによってアイソレーションが保たれない(以下、アイソレーション障害)恐れがある。具体的にはOSに不良がある場合や、IOカードの故障時でハードウェアによってエラーを検出できなかった場合に、アイソレーションが保証できない。そのため、PCサーバで論理分割を実現するためには、IOデバイス発のアクセスに対してアイソレーションを保証することが従来から課題となっていた。
上記の課題に対して、従来では公知例US2002/0010811A1(以下、公知例1)が提案されている。公知例1では、Terminal Bridgeと呼ばれるPCI to PCIブリッジが、IOデバイス発のトランザクションでアクセス可能なアドレス範囲を記憶している。公知例1はトランザクションの宛先アドレスがアクセス可能な領域外である場合、受信したトランザクションを中止(Abort)することで、Isolationを実現するとしている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】米国特許公開公報US2002/0010811A1
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかし、公知例１では以下に示すような課題が解決されていない。
【０００７】
第1の課題は、受信したIOデバイス発のトランザクションをIOバス上で正常に終了させ、かつハイパバイザへの通知の実現である。トランザクションの受信を単に中止するのみでは、発行元IOデバイスがタイムアウトしたり、他のIOデバイスのデータ転送が正しく出来なくなる。また、ハイパバイザに通知しないと、該当するOSをリブートするなどの適切なエラー処理が実現できない。
【０００８】
第2の課題は、公知例1がIOデバイス間の転送を考慮していないことである。一般的にサーバは多数のIOスロットを保持しているため、アドレス範囲でアクセス可否を記憶する方式ではIOスロットの組み合わせが多く、大量の記憶領域を必要としてしまう。
【０００９】
第3の課題は、公知例1がIOデバイスをスロット単位で各LPARに割り付けたり、初期化することを考慮していないことである。そのため、あるIOスロットをリセットする際に、他のLPARに割り付けられたIOカードもリセットしてしまう問題がある。
【００１０】
本発明は、上記の課題を解決することを目的とする。
【課題を解決するための手段】
【００１１】
本発明の代表的構成は、各LPAR上で個別にOSを稼動させるハイパバイザを有し、またIOデバイスからのメモリアクセストランザクションの宛先アドレスに対して該IOデバイスの属する論理区画（LPAR）に応じたアドレス変換を行い、アドレス変換の結果が示す宛先アドレスが該IOデバイスの属する論理区画に割り付けられたメモリに一致するか否かを判定し、判定結果が否ならば、ハイパバイザにエラー報告をするようにしたものである。
【発明の効果】
【００１２】
PCIバスに代表される汎用のIOバスを用いるサーバにおいて、チップセットの一部に本発明を適用することによって、下記の利点が得られる。論理分割運用時にIOデバイスからのアクセスによるアイソレーション障害を防止しつつ、アイソレーション障害が発生した場合に、他のLPARに属するIOデバイスの動作の継続を実現しつつ、障害を生じたLPARに対する適切なエラー処理を実現する。論理分割運用時に、IOデバイス間のアクセスに対して効率的なアイソレーション障害の検出手段を提供する。アイソレーション障害発生時に、スロット単位で障害LPARに属するIOデバイスのみをリセットする手段を提供し、該IOデバイスを再度他のLPARに割り付けることを可能にする。
【図面の簡単な説明】
【００１３】
【図１】本発明が想定するサーバの構成例のブロック図。
【図２】本発明が想定するアドレスマップ図。
【図３】本発明におけるI/O Ctrl Unitの構成例1のブロック図。
【図４】本発明におけるAdr修飾部の構成ブロック図。
【図５】本発明におけるAdr Dec構成ブロック図。
【図６】本発明におけるADR変換情報のフォーマット図。
【図７】本発明におけるI/O Ctrl Unitの構成例2のブロック図。
【図８】本発明におけるI/O Ctrl Unitの構成例3のブロック図。
【図９】本発明におけるAdr Dec構成例2のブロック図。
【図１０】本発明における応答発行の構成例のブロック図。
【図１１】本発明におけるブート時の処理フローチャート。
【図１２】本発明におけるエラー発生時の処理フローチャート。
【図１３】本発明におけるAdr修飾部の構成例2のブロック図。
【発明を実施するための形態】
【００１４】
以下に図面を用いて、本発明の実施の形態例を示す。
【実施例１】
【００１５】
図1に本発明が想定するサーバの概略を示す。本実施例では、複数のCPUを接続可能な110 CPUバスに、4つのCPU(100〜103)が接続されている例を示す。本実施例ではCPU数を4としているが、4以外でも構わない。
【００１６】
このCPUバスを制御する120 チップセットがあり、チップセットはCPUバスのほかに、130 IOバス#0及び131 IOバス#1、160 メモリインタフェース、140 クロスバインタフェースの制御を行っている。このIOバスは現在一般に使われているPCIバスなどを想定している。
【００１７】
なお本実施例ではIOバスを130及び131のように2バス接続する構成例を示しているが、2本以外の構成でも構わない。
【００１８】
120チップセットは、CPUバスを制御する 121 CPU Bus Ctrl Unitと、メモリインタフェースを制御する122 Memory Ctrl Unitと、IOバスを制御する123 IO Ctrl Unit、およびクロスバインタフェースの制御を行う124 CrossBar Ctrl Unitから成る。
【００１９】
本発明では、このCPUとチップセット、150メモリと、IOバスに接続されるIO機器(図面では示していない)をまとめてノードとして扱い、複数のノードを180クロスバを用いて接続可能なサーバを想定している。なお、図1では190ノード#0と191ノード#1の2ノード構成の例を示しているが、2ノードでなくても良い。
【００２０】
このサーバで提供される仮想計算機システムは、ハイパバイザと呼ばれるソフトウェアによって実現される。図2に仮想計算機システムで使用されるアドレスマップの相関図を示す。図1のサーバにより提供されるアドレスマップを絶対アドレス空間と呼ぶ。図2の実アドレス空間はOSが使用するアドレスを示し、図2の仮想アドレス空間とはアプリケーションプログラムが使用するアドレスを示している。図2は2つのOSが各LPAR上で動作している例を示しており、それぞれOS  A、およびOS  Bであるものとしている。OS  A及び OS  Bの上で動作する異なるアプリケーションプログラムが使用する仮想アドレスVAとVBが、それぞれ非論理分割運用時にはRAとRBで示されるアドレスに変換されるものとする。論理分割運用時でハイパバイザによるアドレス変換が無い場合、RAとRBが同じ値であると、同じ絶対アドレスをOS AとOS Bがそれぞれアクセスするため、正常に動作できない。ハイパバイザはこれを防ぐために、RA及びRBに対応する、PA及びPB(≠PA)に対するアクセスを行わせている。
【００２１】
仮想計算機システムにおける、CPU及びIOデバイスからのアクセスを以下に説明する。
【００２２】
CPUからのアクセスの場合、OS  AがVAをRAに変換するTLBエントリをCPUに登録しようとするのをハイパバイザが検知し、ハイパバイザが OSに代わってVAをPAに変換するTLBエントリの登録を行う。ハイパバイザは、各LPARへのメモリの割り付け状況と RAから、PAを算出可能である。実際にアプリケーションプログラムがVAにアクセスする際には、VAをPAに変換するTLBエントリがハイパバイザによって登録されているため、該アクセスはRAでなくPAをアクセスすることになり、図2で示すLPARごとのアドレス変換が実現されている。
【００２３】
一方、IOデバイスからのアクセスの場合、CPUからのアクセスと異なりTLBに相当するアドレス変換機能がないため、ハイパバイザによるアドレス変換はできない。そこで本発明では、図1における123 I/O Ctrl Unitを図3のように構成することによって、IOからのアクセスに応じて該アクセスを発生させたLPARを識別して、LPAR毎に異なるアドレスにアクセスするようにアドレス変換を行う。以下このアドレス変換の仕組みを、図を用いて説明する。
【００２４】
図3は 123 I/O Ctrl Unitの構成例を示す。123 I/O Ctrl Unitは 130および131 IOバスの制御を行っている。本実施例では個々のIOバスにはそれぞれSlot#0からSlot#3がある構成を示している。IOバスには、これらのスロット上のIOデバイスからのアクセス要求を調停する信号線206aおよび206bを備えており、206a、206bによるアクセス要求は204a、204bのBus Arb(バス調停回路)が調停し、アクセス要求を発行可能なスロットに対してAck応答を行う。
【００２５】
また、通常のIOバスではバス上のIOデバイスを初期化するためのリセット信号を1本のみ持っており、全てのスロットで共通に用いられている。しかし本発明では、205a、205bリセット信号線を個々のスロット毎に独立に用意すると共に、リセット信号のアサート・ディアサートは204a, 204b Bus Arbによって制御される。これにより、スロット単位での初期化が可能となり、各LPARごとのリブート、および再初期化が可能となる。205a, 206aリセット信号を用いたIOスロットの再初期化の手順については、図12を用いて後述する。
【００２６】
130及び131 IOバスの何れかのスロットから、上記のバス調停回路により調停された結果、他のIOバスまたはCPU、メモリに対するアクセスが発行された場合、IOバスを介して該アクセス要求が123 I/O Ctrl Unitに伝達される。I/O Ctrl Unitでは、該アクセス要求の宛先アドレスを203a, または203bのアドレス修飾部で、そのアドレスの値に基づいて修飾する。この修飾の内容は前述の各LPARごとに異なるアドレスにアクセスするよう、アドレス変換することを指している。図4にこのアドレス修飾部203aの構成例を示す。なお、203bについても全く同じ回路を使用するため、本実施例では203aのみの説明を行う。図4に示す回路例では、201a ADR変換情報に格納されたアドレス変換に関する情報を使用する。この情報には次のものが含まれる。(1)インタリーブおよびアドレス領域情報、(2)スロット単位での所属LPAR情報、(3)実アドレス範囲に応じたLPARごとのアドレス加算値。図6にこれらの情報を格納するレジスタのフォーマットを示す。
(1)インターリーブおよびアドレス領域情報については、図2で説明したアドレスマップのうちの絶対アドレスで指定された範囲に対して、アドレス種別、インタリーブ有無・範囲指定、宛先バス・スロット番号の各情報が含まれる。アドレス種別は該アドレス範囲がメモリデバイス、もしくはMemory Mapped IO(以下MMIO)によってIOデバイスに割り付けられているかの区別が格納されている。該アドレス範囲がメモリデバイスに割り付けられている場合、特定のノードのメモリデバイスに割り付けられているか、もしくは複数のノードのメモリデバイス間でインタリーブされているかの情報が、インタリーブ有無・範囲指定のフィールドに格納される。該アドレス範囲がIOデバイスに割り付けられている(以下、MMIO領域)場合、アクセス対象となるIOデバイスのバス番号、およびスロット番号が、宛先バス・スロット番号のフィールドに格納される。(1)インタリーブおよびアドレス領域情報はサーバの初期化シーケンス中にBIOS (Basic IO System)、もしくはファームウェアによって設定され、特に論理分割をサポートしないサーバにおいても、これに類する情報を所持している。
(2)スロット単位での所属LPAR情報は、発行元PCIスロットごとにアクセス可能な(= 同一のLPARに属している) PCIスロットを識別するための情報である。本情報中の許可ビットが1にセットされているスロットに対してのみアクセスが許可される。本情報は各LPARの生成時にハイパバイザによって設定される。また本レジスタフォーマットのバリエーションとして、許可ビットが0になっているスロットに対してのみアクセスを許可するとしても構わない。本情報は、発行元IOスロットと発行先IOスロットの組み合わせ1つに対して1ビットの記憶容量ですむため、各組み合わせに対してアドレス範囲を記憶する必要がある公知例1の方式に対し、格段に少ない記憶容量で同等の効果を達成でき、先に挙げた第2の課題を解決する。
(3)実アドレス範囲に応じたLPARごとのアドレス加算値は、LPARごとに固有の、実アドレスから絶対アドレスへのアドレス変換を行うための情報である。本情報は各LPARの生成時にハイパバイザによって設定される。図6の各情報の設定手順を、図11を用いて説明する。601 電源が投入されると、ハードウェアに故障がないかチェックする目的でPOST(Power On Self Test)が実施される。602 次に BIOS、およびFirmwareの初期化コードが実行される。ここでメモリの搭載状況、及びIOデバイスの接続状況の調査が行われ、図6中の (1)インタリーブおよびアドレス領域情報の設定が行われる。603 次にハイパバイザのロードが行われる。ブートデバイスとしては他のOSと同様、フレキシブルディスクやハードディスクが一般的であるが、他のものでも構わない。その後、ハイパバイザはハイパバイザ自身の初期化を行う。604 ハイパバイザは、サーバ管理者からの新規LPAR作成要求を待つ。サーバ管理者から指示を受けるためのインタフェースとしては、CRTもしくはシリアル回線を通してのコンソール画面や、液晶(LCD)パネル、電子メールなどが考えられるが、特にこれらでなくとも構わない。サーバ管理者は上述のハイパバイザのインタフェースを通じて、新規に立ち上げるLPARに割り付ける絶対メモリアドレス範囲、およびIOデバイス(もしくはスロット)番号、OSのブートデバイスを指定するが、オプションとしてそれ以外の情報を与えても構わない。オプションとしては、各LPARに対するCPUの割り当て方法やCPU時間の割合の指定などが考えられる。605 ハイパバイザはサーバ管理者から指定されたメモリ領域を、新規に作成するLPARに割り付ける。606 次にハイパバイザはサーバ管理者から指定されたIOデバイスを、新規に作成するLPARに割り付ける。607 ハイパバイザはサーバ管理者から指定されたメモリ領域、およびIOデバイスの割り付け状況に基づき、図6中の (2)SLOT単位での所属LPAR情報、および(3)実アドレス範囲に応じたLPARごとのアドレス加算値の設定を行う。これらのレジスタの設定を行うことで、後述する 202a, 202b Adr Dec, 及び203a, 203b Adr修飾部の機能が有効になる。608 ハイパバイザは、サーバ管理者から指定されたブートデバイスに格納されたOSのブートローダを呼び出し、新規LPAR上でOSの動作を開始させる。
【００２７】
図4に示す203a Adr修飾部は、(3) 304a, 304b アドレス加算値と、(1)アドレス領域情報、204a Bus Arbから入力される210a 発行元スロット番号、及びIOバストランザクションを入力として受信する。本実施例では、アドレス加算値が 210a 発行元スロット番号ごとに2つある例を示しているが、2つ以外でも構わない。IOバストランザクションは、301 Tx復号回路により、リード・ライトなどのトランザクションの種別を示すTx情報、およびアクセス先を示す307 実アドレスに分離される。Tx情報については何も操作せずに、そのまま出力される。304a, 304bアドレス加算値は、210a発行元スロット番号によって選択された後、305a BASE及びSIZE部と、306a, 306b OFFSET部に分離される。307実アドレスは、303a, 303b 加算器に入力され、306a, 306b OFFSETと加算される。302 ADR変換判定回路は、309a, 309b加算結果と、307実アドレスのうちの1つを選択し、312絶対アドレスとして出力する。本回路での判定手順は下記の通りである。307実アドレスと、アドレス領域情報の絶対アドレス範囲を比較し、307実アドレスがMMIO領域であるか判定する。本実施例では、MMIO領域はアドレス変換を行わないことを前提としている。MMIO領域である場合、307実アドレスを312 絶対アドレスに出力する。同時に311アドレス変換有無の信号をディアサートし、アドレス変換を実施しなかったことを通知する。307実アドレスがMMIO領域でない場合、307実アドレスが、305a, 305b BASE, SIZEで指定される実アドレス範囲に合致するか判定する。合致する場合、対応する309a, もしくは 309b加算結果を選択し、312絶対アドレスとして出力する。同時に311アドレス変換有無の信号をアサートし、アドレス変換を実施したことを通知する。307実アドレスが、305a, 305b BASE, SIZEで指定される実アドレス範囲に合致しなかった場合、307実アドレスを312絶対アドレスとして出力する。同時に311アドレス変換有無の信号をディアサートし、アドレス変換を実施しなかったことを通知する。
【００２８】
図5は 202a Adr Decの構成例を示す。本実施例では202a, 及び202bでは全く同じ回路を使用するため、202aのみ図示している。202a Adr Decは、図4の203a Adr修飾部から出力される308 Tx情報、および312絶対アドレス、311アドレス変換有無を受信し、さらに201a ADR変換情報からインタリーブおよびアドレス領域情報、SLOT単位での所属LPAR情報を、204a Bus Arbからは210a 発行元スロット番号を受信して、図2の200 他Ctrl Unit IF制御部に対し、チップセット内トランザクション(以下 Inbound Tx)を発行する。401アクセス先判定回路は、312絶対アドレス、308Tx情報、インタリーブおよびアドレス領域情報を受信し、該トランザクションのアクセス先の判定を行い、413 Inbound Txを出力する。同時に411 アドレス種別でアクセス先の種別(メモリ、もしくはIOデバイス、CPUなど)を、412宛先スロット番号で宛先のIOバス番号、およびIOスロット番号を402アクセス可否判定に通知する。402アクセス可否判定は311アドレス変換有無、411アドレス種別、412宛先スロット番号、および210発行元スロット番号で選択されたSLOT単位での所属LPAR情報を受信して、Inbound Tx IFに発行するTxを選択する。本回路での発行可否決定手順は下記の通りである。411アドレス種別がIOデバイス(MMIO)である場合、SLOT単位での所属LPAR情報のビットマップのうち、412宛先スロット番号で示されるアクセス可否ビットが1(もしくは0)である場合、アクセスを許可する。411アドレス種別がCPU(IOデバイスからの割り込みトランザクション)である場合、アクセスを許可する。本実施例では、CPUは全LPARで時分割で共有されることを前提としており、各LPARの割り込みベクタはハイパバイザによって管理されるため、他のOSの動作に支障をきたすことはない。411アドレス種別がメモリであり、かつ311アドレス変換有無がアサートされている場合、アクセスを許可する。
上記(1)〜(3)によってアクセスが許可された場合、413 Inbound Txを Inbound Tx IFに出力する。
上記(1)〜(3)に当てはまらなかった場合、402アクセス可否判定はアクセスを拒否し、413 Inbound Tx IFのアクセス対象アドレスを、403宛先Regに登録されているアドレスと交換し、Inbound Tx IFに発行すると共に、404INT 生成に CPUに対する割り込みトランザクションを生成させ、Inbound Txとして発行させる。同時に、405アイソレーション障害レジスタに、発行元スロット番号、および312絶対アドレスを格納する。405アイソレーション障害レジスタは、CPUから読み出し可能であるものとする。
【００２９】
該割り込みトランザクションを受けたCPUは、エラー処理を実施する。その手順を図12を用いて説明する。
【００３０】
701において、該割り込みトランザクションを受信したCPUは、割り込みベクタに登録されたハイパバイザのエラー処理ルーチンを起動する。
【００３１】
702において、ハイパバイザはチップセット内のエラーレジスタの値や、ファームウェアから報告されるエラーレコードの情報から、発生したエラーがLPAR間のアイソレーション障害であることを特定する。
【００３２】
703において、ハイパバイザは該アイソレーション障害によって影響を受けた範囲を特定する。図3の構成例では、発行元のIOスロットが属するLPAR以外には影響が及ぼされないことが、構成上保証されている。そのため、405アイソレーション障害レジスタに記録された発行元スロット番号から、アイソレーション障害を引き起こしたIOスロット番号を取得し、そのIOスロットが所属するLPARを特定する。本特許では、各IOスロットはLPARの生成時に占有的に割り付けられ 他のLPARとは共用しないため、IOスロット番号から所属するLPARを一意に特定可能である。
【００３３】
704において、ハイパバイザは該LPARで動作しているOS(以下、ゲストOS)の停止を指示する。ハイパバイザからゲストOSを停止させる方法としては (1)ゲストOSに対して、アドレスパリティエラーなどの致命的なエラーが発生したと通知することで、ゲストOSにリブート処理を行わせる方法や、(2)ハイパバイザ内のCPU割り当てキューから該当LPARを取り除く方法などが考えられる。また、OSのデバッグなどの必要に応じて、ゲストOSのメモリイメージなど障害ログ情報をハイパバイザ、もしくは該ゲストOSが取得する。
【００３４】
705において、ハイパバイザは該当するLPARに属する全てのIOスロットを、スロット単位に設けられた 205a RST#信号を用いてリセットしたうえで、該IOスロットがどのLPARにも属していない状態に開放する。本処理により、該IOスロットを他のLPARに再度割り付けることが可能になり、先に挙げた第3の課題を解決する。
【００３５】
706において、ハイパバイザは該当するLPARに割り付けられていたメモリ領域を、どのLPARにも属していない状態に開放する。本処理により、該メモリ領域を他のLPARに再度割り付けることが可能になる。
【００３６】
707において、ハイパバイザは該当するLPARがアイソレーション障害を発生させたことを、サーバ管理者に通知する。障害通知手段としては、サーバの状態表示用のLCDパネルやブザー、管理用コンソール画面、電子メールなどが挙げられる。該障害通知手段は、アイソレーション障害の通知のために専用に用意しても良いし、他の障害発生時の通知手段と兼用しても構わない。図5中403宛先Regにはハイパバイザのみが使用し、各LPARには割り付けられていないメモリアドレスを、図6の603ハイパバイザロード中の ハイパバイザ自身の初期化において設定しておく。これにより、アイソレーション障害発生時に他のLPARのデータが破壊されることを防ぐとともに、通常のIOデバイス発アクセスの処理と同一の経路で該IOバストランザクションに対する完了をIOバスに対して行うことを可能にし、IOデバイスのタイムアウトによるシステム停止を防止する。上述の処理を終えたトランザクションは図2中 220他Ctrl Unit IF制御部に入力され、Tx情報、および絶対アドレスに基づいて121 CPU Ctrl Unit、または124 CossBar Ctrl Unit、または122 Memory Ctrl Unit、または他IOバスに対し、信号線132または133を介して、Inbound Txを発行し、宛先の各Unitからの応答を待って、該アクセス要求を行ったIOバス上のIOデバイスに応答トランザクションをIOバスに発行し、該アクセス要求をIOバス上で完了させる。これによってIOデバイスからのアクセスでアイソレーション障害が生じた場合に、他のLPARに属するIOデバイスの動作を継続しつつ、アイソレーション障害の発生を報告、およびエラー処理を実施することが可能になり、先に挙げた第1の課題を解決する。
【実施例２】
【００３７】
本実施例は実施例1の変形であり、図1における 123 I/O Ctrl Unitに、137 I/O to I/O Bridgeを付加した例を示している。
【００３８】
実施例2では、紙面の都合で 123 I/O Ctrl Unitに接続されるIOバスは、134 IOバスを1本とした構成例である。137 I/O to I/O Bridgeは 1つのIOバスを複数のIOバスに振り分ける機能を有するLSIである。なお本実施例では134、135、136は単にIOバスと記しているが、それぞれ異なる種類のIOバスであっても、同じ種類のIOバスであっても構わない。
【００３９】
実施例2は実施例1における 201a, 201b ADR変換情報と、202a, 202b Adr Dec、203a, 203dAdr修飾部を、図7のように138アクセス監視カード#0, 及び 139 アクセス監視カード#1上に、201c, 201d ADR変換情報(2)、および 202c, 202d Adr Dec(2)、203c, 203d Adr修飾部(2)として搭載した例である。138, 139は全く同じ回路を使用するため、138 アクセス監視カード#0のみについて説明する。実施例2では実施例1と異なり、IOデバイスをIOスロット単位ではなく、IOバス単位で各LPARに割り付ける。そのため、201c ADR変換情報(2)は、201aの一部の情報のみを保持する。具体的には図6中の(1)インタリーブ情報およびアドレス領域情報のうち宛先スロット番号以外の情報を、(2)所属LPAR情報の許可ビットがバス一本につき1ビットのみを保持し、(3)実アドレス範囲に応じたLPARごとのアドレス加算値はIOスロット単位でなく、IOバス単位の情報として保持する。203c Adr修飾部(2)は、同一バス上の他のIOスロットから発行されるIOバストランザクションを監視し、該IOバストランザクションを入力として前述のアドレス修飾を実施する。前述の通り実施例2ではIOデバイスの割り付け単位が IOバス単位であるため、実施例1の203a Adr修飾部とは異なり、304a, 304b アドレス加算値は 1つずつの情報のみを受信し、210a 発行元スロット番号は受信しない。202c Adr Dec(2)は、受信したIOバストランザクションの宛先アドレスをチェックする。実施例1の202a Adr Decと異なり、202c Adr Dec(2)は210a発行元スロット番号、及び 413 Inbound TxをInbound Tx IFに発行する経路、403宛先Regを具備しない。402アクセス可否判定においてアクセス可能である場合、Inbound Tx IF(この場合IOバス)に対して何のトランザクションを発行しない。アクセス不可である場合、CPUに対して割り込みトランザクションを作成しアイソレーション障害が起こったことを報告する。これによって、135 IOバスと136 IOバスが異なるLPARに属していた場合に、135 IOバスのIOデバイスから発行されたトランザクションが、137 I/O to I/O Bridgeを介して 136 IOバス上のIOデバイスに対してアクセスすることを、アイソレーション障害として検出することが可能になる。また、逆に136 IOバスから 135 IOバスへアクセスする場合も同様に検出できる。これによってアイソレーション障害の発生を完全には防げないものの、アイソレーション障害が発生したことを通知できるため、図12に示すエラー発生時の処理を実施することが可能になる。その際 703 影響範囲の特定について、原因となったトランザクションの発行元LPARに加え宛先LPARを特定し、該当するゲストOSをリブートさせる。宛先LPARは、405アイソレーション障害レジスタに格納された 312絶対アドレスから特定可能である。
【実施例３】
【００４０】
本実施例は実施例1の変形であり、図3の 123 I/O Ctrl Unitを 図8の 126 I/O Ctrl Unitのように構成する。
【００４１】
実施例1の 202a Adr Decを変更し、図9に示す 202e Adr Dec(3)のように構成する。202f Adr Dec(3)も全く同じ回路を有するため、以下 202e Adr Dec(3)のみを説明する。421アクセス判定可否(2)は、実施例1の402アクセス判定可否と同様のトランザクション発行可否判定、および割り込みトランザクションの発行を実施するが、アクセス不可と判定したときに該Inbound TxをInbound Tx IFに発行せず、209a 応答発行要求を用いて、207aに該Inbound Txに対する応答トランザクションの発行を要求する。また420アクセス先判定回路(2)は、211a Tx応答情報を用いて該トランザクションの種別など応答トランザクションの発行に必要な情報を伝達する。207a 応答発行は、126 I/O Ctrl Unitから 130 IOバス#0に対して発行するIOバストランザクションを制御する。207b 応答発行も207a と全く同じ回路を有するため、以下 図10を用いて、207a のみを説明する。502応答選択部は208a Bus権要求・許可の信号を用いて 204a Bus Arbにバス権の要求を行い、Bus権が獲得できたときのみ 130 IOバス#0に対して IOバストランザクションを発行する。502応答選択部は、209a信号により応答発行要求が行われていない場合、200 他Ctrl Unit I/F制御部から入力されるトランザクションを130 IOバス#0に出力する。209a信号により応答発行要求が行われた場合、211a Tx応答情報より受信したトランザクションの情報と、501応答データ生成部のデータを用いて、IOバスに対して肯定的な応答トランザクションを送信する。具体的には該トランザクションがメモリリードなど応答データを必要とする場合、501応答データ生成部で生成されるデータを応答データとして送信し、メモリライトなど応答データを必要としない場合は、Ack応答のみを送信する。これによってアイソレーション障害を引き起こしたIOバストランザクションに対する完了をIOバスに対して行うことを可能にし、IOデバイスのタイムアウトによるシステム停止を防止する。さらに実施例3のバリエーションとして、アイソレーション障害を引き起こしたIOバストランザクションに対し、常にリトライなど否定的な応答トランザクションを送信する構成が考えられる。本構成は、リトライが長く続いてしまいシステムが停止することを避ける目的で、IOデバイスが独自にタイムアウト検出を行っている場合には用いることが出来ないが、一般的に否定的な応答トランザクションは応答データを必要としないので、501応答データ生成部を省略できるメリットがある。
【実施例４】
【００４２】
本実施例は実施例1の変形であり、図4の 203a Adr修飾部を図13の203g Adr修飾部のように構成する。実施例4における 203g Adr修飾部は実施例1の203a Adr修飾部と異なり、304a アドレス加算値を受信せず、代わりに 323a〜323d インデックステーブルを保持する。307実アドレスは、321インデックスビットと、322オフセットビットに分離される。図13では、上位3ビットを321インデックスビットとして取り出し、その値は ”010”であるとしている一例を示しているが、インデックスビットの長さ、および どのビットを321インデックスビットとして用いるかは、これ以外でも構わない。203g Adr修飾部は、323a〜323dのインデックステーブル中の、321インデックスビットの値が指し示すエントリの値を読み出し、210a 発行元スロット番号でセレクトして324置換後インデックスビットを得る。前述の302アドレス変換判定回路で、アドレス変換の必要がある場合は324置換後インデックスビットを選択し、変換不用の場合は321インデックスビットを選択したのち、322オフセットビットと結合させて、312絶対アドレスとして出力する。実施例4の場合、図6の(3)実アドレス範囲に応じたLPARごとの加算値を記録する必要がない代わりに、323a〜323dのインデックステーブルを記録するための記憶容量が必要である。実施例1に比べ、LPARの生成・消滅を繰り返しメモリの断片化(フラグメンテーション)が著しい場合には、アドレス変換に必要な情報を削減できる。323a〜323dのインデックステーブルの情報は、図11中の607レジスタ更新において設定する必要があり、この情報を設定することで 203g Adr修飾部が動作するようになる。
【符号の説明】
【００４３】
100、…、103   CPU#0、…、CPU#3
CPUバス
チップセット
CPU Bus Ctrl Unit
Memory Ctrl Unit
I/O Ctrl Unit
CrossBar Ctrl Unit
130、131        IOバス#0、IOバス#1
クロスバインタフェース
メモリ
メモリインタフェース
クロスバ
190, 191        ノード#0, ノード#1
他Ctrl Unit I/F 制御部
201a、201b      ADR変換情報
202a、202b      Adr Dec
203a、203b      Adr修飾部
204a, 204b      Bus Arb
205a, 205b      RST#
206a, 206b      req#, ack#
210a, 210b      発行元スロット番号
Tx復号回路
ADR変換判定回路
303a, 303b      加算器
304a, 304b      アドレス加算値
305a, 305b      BASE、SIZE
306a, 306b      OFFSET
実アドレス
Tx情報
309a, 309b      加算結果
アドレス変換有無
絶対アドレス
アクセス先判定回路
アクセス可否判定
宛先Reg
INT生成
アイソレーション障害レジスタ
アドレス種別
宛先スロット番号
Inbound Tx
I/O to I/O Bridge
138, 139        アクセス監視カード#0, アクセス監視カード#1
201c, 201d      ADR変換情報(2)
202c, 202d      Adr Dec (2)
203c, 203d      Adr修飾部(2)
207a, 207b      応答発行
208a, 208b      Bus権要求・許可
202e, 202f      Adr Dec(3)
209a, 209b      応答発行要求
211a, 211b      Tx応答情報
アクセス先判定回路(2)
アクセス可否判定(2)
応答データ生成部
応答選択部
POST実行
BIOS/Firmware実行
ハイパバイザをロード
新規LPARの生成要求受付
メモリ領域確保
I/Oデバイス確保
レジスタ更新
OSブートローダ呼び出し
割り込みトランザクションによるエラー通知
割り込み要因特定
影響範囲特定
該当ゲストOSの停止指示
該当LPARに属するI/Oスロットのリセット・開放
該当LPARに属するメモリ領域を開放
管理者への障害発生・要因通知
インデックスビット
オフセットビット
323a、…、323d  インデックステーブル#1、…、インデックステーブル#4
324             置換後インデックスビット。
【図１】
2011008793.tif 000003
【図２】
2011008793.tif 000004
【図３】
2011008793.tif 000005
【図４】
2011008793.tif 000006
【図５】
2011008793.tif 000007
【図６】
2011008793.tif 000008
【図７】
2011008793.tif 000009
【図８】
2011008793.tif 000010
【図９】
2011008793.tif 000011
【図１０】
2011008793.tif 000012
【図１１】
2011008793.tif 000013
【図１２】
2011008793.tif 000014
【図１３】
2011008793.tif 000015