(57)【要約】【課題】ＰＣＩバスに代表される汎用のＩＯバスを有するサーバにおいて、ＩＯデバイス発のトランザクションによる他のＬＰＡＲの資源へのアクセスを防止し、信頼性の高いＬＰＡＲ環境を提供する。【解決手段】（１）  ＩＯデバイスからのトランザクションのアクセス対象が、該トランザクションを発生したデバイスが属するＬＰＡＲに割り付けられた資源以外の場合には、ＣＰＵにエラーとして報告すると共にＩＯバス上で、該トランザクションをＩＯバス上で完了させる。（２）  ＩＯデバイス間のトランザクションによる他ＬＰＡＲ資源へのアクセスを防止するために、全ＩＯデバイスの組み合わせ毎に１ビットのアクセス許可ビットを設け、該ビットが所定の値のときのみアクセスを許可する。（３）  ＩＯスロット単位でリセット信号を設けることで、他のＬＰＡＲに影響を与えず、特定のＬＰＡＲに割り付けられたＩＯスロットのみをリセットすることを可能にする。【効果】ＩＯデバイス発のトランザクションによる他のＬＰＡＲ資源へのアクセスを防止すると共に、適切なエラー処理を行うことを可能とし、信頼性を向上させている。【特許請求の範囲】
【請求項１】
複数のＣＰＵを接続することができるＣＰＵバスと、ＩＯバスおよび、メモリインタフェース、クロスバインタフェースを備える情報処理装置において、
複数の論理区画（ＬＰＡＲ）を設定可能であり、各ＬＰＡＲにはサーバの資源（ＣＰＵ・メモリ・ＩＯ）の一部または全部を割り付けることで個別にＯＳが稼動するシステムであって、このＬＰＡＲの制御を行うハイパバイザを有しており、
前記ＩＯバスからのアクセス対象が、該アクセスが発生したデバイスが属するＬＰＡＲに割り付けられた資源以外の場合には、エラーとして報告すると共に、該アクセスに関してＩＯバス上で完了させる手段と、
前記ＩＯバスからのアクセスの対象が、メモリの場合、該アクセスを発生したデバイスが属するＬＰＡＲで確保しているアドレス領域にアドレスを変換する手段を有することを特徴とする情報処理装置。
【請求項２】
異ＬＰＡＲの資源に対するアクセスが発生した場合のエラー報告手段として割り込みトランザクションを生成し、該アクセス要求の発行元スロットが属するＬＰＡＲに発行する手段を有することを特徴とする請求項１記載の情報処理装置。
【請求項３】
異ＬＰＡＲの資源に対するアクセスが発生した場合のアクセス要求の完了手段としてアクセス先をハイパバイザが管理する領域に変更することによってアクセス要求を正常終了させることを特徴とする請求項１記載の情報処理装置。
【請求項４】
ＩＯバス上の複数のスロット毎に独立したリセット信号を有することを特徴とする請求項１記載の情報処理装置。
【請求項５】
アドレス変換手段として、ＩＯバスからのトランザクションを受けると、該トランザクションのアクセス先がメモリである場合、該トランザクションの発行元スロットが属するＬＰＡＲとアドレスに応じた値の加算を行うことを特徴とする請求項１記載の情報処理装置。
【請求項６】
アドレスに応じて加算される値の記録方法として、ＬＰＡＲごとにアドレス空間を複数の領域に分割し、各領域に対応してベースアドレス、領域サイズ、加算する値（オフセット）を記録するレジスタを有することを特徴とする請求項５記載の情報処理装置。
【請求項７】
ＬＰＡＲに割り付けられた資源以外へのアクセスか否かを判定する手段として、全てのＩＯバス上の全スロットに対応するレジスタを有し、
ＩＯバスからのアクセスの対象が自または他ＩＯバスの場合、発行元スロットに対応する前記レジスタの宛先スロット番号に対応するビットを参照し、該ビットが所定の値（１または０）の場合、発行元スロットと同一のＬＰＡＲに属すると判定することを特徴とする請求項１記載の情報処理装置。
【請求項８】
複数のＣＰＵを接続することができるＣＰＵバスと、ＩＯバスおよび、メモリインタフェース、クロスバインタフェースを備える計算機において、
複数の論理区画（ＬＰＡＲ）を設定可能であり、各ＬＰＡＲにはサーバの資源（ＣＰＵ・メモリ・ＩＯ）の一部または全部を割り付けることで個別にＯＳが稼動するシステムであって、このＬＰＡＲの制御を行うハイパバイザを有しており、
前記ＩＯバスからのアクセス対象が、該アクセスが発生したデバイスが属するＬＰＡＲに割り付けられた資源以外の場合には、エラーとして報告する手段と、
前記ＩＯバスからのアクセスの対象が、メモリの場合、該アクセスを発生したデバイスが属するＬＰＡＲで確保しているアドレス領域にアドレスを変換する手段を有することを特徴とする情報処理装置。
【請求項９】
異ＬＰＡＲの資源に対するアクセスが発生した場合のアクセス要求の完了手段として、該チップセット内で生成した固定あるいは任意のデータを用いて肯定的終了応答を行い、正常終了させることを特徴とする請求項８記載の情報処理装置。
【請求項１０】
異ＬＰＡＲの資源に対するアクセスが発生した場合のアクセス要求の完了手段として、リトライ、中断、中止などの否定的終了応答を行うことを特徴とする請求項８記載の情報処理装置。
【請求項１１】
アドレス変換手段として、ＩＯバスからのトランザクションを受けると、該トランザクションのアクセス先がメモリである場合、アクセス先アドレスのうち一部、もしくは全てのビットを、該トランザクションの発行元スロットが属するＬＰＡＲとアドレスに応じた値に置き換えることを特徴とする請求項８記載の情報処理装置。
【請求項１２】
置き換えるアドレス値の記録方法として、メモリアドレス空間を複数の固定長領域に分割し、各領域に対応して置き換える値を記録するレジスタを有することを特徴とする請求項１１記載の情報処理装置。
【請求項１３】
上記計算機は、チップセットもしくは当該チップセットを搭載したサーバである請求項８記載の情報処理装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、単一の計算機で複数のＯＳを稼動させる仮想計算機システムに関し、ＯＳ間での不正アクセスによる誤動作の防止・エラー発生時の処理方法ならびに、それらを用いた計算機システムに関係する。
【０００２】
【従来の技術】
【非特許文献１】
米国特許公開公報ＵＳ２００２／００１０８１１Ａ１
論理分割（Ｌｏｇｉｃａｌ  Ｐａｒｔｉｔｉｏｎｉｎｇ）は、単一のサーバ上で複数のオペレーティングシステム（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ、以下ＯＳ）を同時に動作させる技術である。論理分割では、ハイパバイザと呼ばれる管理プログラムがサーバ管理者からの指示に従って、サーバの計算機資源（メモリ領域、及びＩＯデバイスなどを含む）を複数の論理区画（ＬＰＡＲ）に分割して、各ＬＰＡＲ上で１つずつのＯＳを動作させる。
【０００３】
論理分割では、あるＯＳの動作によって他のＬＰＡＲ上のＯＳが停止、もしくは誤動作してはならない。そのためには、あるＯＳが他のＬＰＡＲの資源へアクセスできないこと（以下、アイソレーション）を保証する必要がある。
【０００４】
ところで、Ｉｎｔｅｌ社のＩＡ−３２、およびＩＡ−６４ＴＭ  アーキテクチャに代表されるＰＣサーバでは、ＩＯバスとしてＰＣＩバスが広く用いられている。ＰＣＩバスは論理分割を意識した設計を為されていないため、ＩＯデバイス発のアクセスによってアイソレーションが保たれない（以下、アイソレーション障害）恐れがある。具体的にはＯＳに不良がある場合や、ＩＯカードの故障時でハードウェアによってエラーを検出できなかった場合に、アイソレーションが保証できない。そのため、ＰＣサーバで論理分割を実現するためには、ＩＯデバイス発のアクセスに対してアイソレーションを保証することが従来から課題となっていた。
上記の課題に対して、従来では公知例ＵＳ２００２／００１０８１１Ａ１（以下、公知例１）が提案されている。公知例１では、Ｔｅｒｍｉｎａｌ  Ｂｒｉｄｇｅと呼ばれるＰＣＩ  ｔｏ  ＰＣＩブリッジが、ＩＯデバイス発のトランザクションでアクセス可能なアドレス範囲を記憶している。公知例１はトランザクションの宛先アドレスがアクセス可能な領域外である場合、受信したトランザクションを中止（Ａｂｏｒｔ）することで、Ｉｓｏｌａｔｉｏｎを実現するとしている。
【０００５】
【発明が解決しようとする課題】
しかし、公知例１では以下に示すような課題が解決されていない。
【０００６】
第１の課題は、受信したＩＯデバイス発のトランザクションをＩＯバス上で正常に終了させ、かつハイパバイザへの通知の実現である。トランザクションの受信を単に中止するのみでは、発行元ＩＯデバイスがタイムアウトしたり、他のＩＯデバイスのデータ転送が正しく出来なくなる。また、ハイパバイザに通知しないと、該当するＯＳをリブートするなどの適切なエラー処理が実現できない。
【０００７】
第２の課題は、公知例１がＩＯデバイス間の転送を考慮していないことである。一般的にサーバは多数のＩＯスロットを保持しているため、アドレス範囲でアクセス可否を記憶する方式ではＩＯスロットの組み合わせが多く、大量の記憶領域を必要としてしまう。
【０００８】
第３の課題は、公知例１がＩＯデバイスをスロット単位で各ＬＰＡＲに割り付けたり、初期化することを考慮していないことである。そのため、あるＩＯスロットをリセットする際に、他のＬＰＡＲに割り付けられたＩＯカードもリセットしてしまう問題がある。
【０００９】
本発明は、上記の課題を解決することを目的とする。
【００１０】
【発明の実施の形態】
以下に図面を用いて、本発明の実施の形態例を示す。
【００１１】
【実施例１】
図１に本発明が想定するサーバの概略を示す。本実施例では、複数のＣＰＵを接続可能な１１０  ＣＰＵバスに、４つのＣＰＵ（１００〜１０３）が接続されている例を示す。本実施例ではＣＰＵ数を４としているが、４以外でも構わない。
【００１２】
このＣＰＵバスを制御する１２０  チップセットがあり、チップセットはＣＰＵバスのほかに、１３０  ＩＯバス＃０及び１３１  ＩＯバス＃１、１６０  メモリインタフェース、１４０  クロスバインタフェースの制御を行っている。このＩＯバスは現在一般に使われているＰＣＩバスなどを想定している。
【００１３】
なお本実施例ではＩＯバスを１３０及び１３１のように２バス接続する構成例を示しているが、２本以外の構成でも構わない。
【００１４】
１２０チップセットは、ＣＰＵバスを制御する  １２１  ＣＰＵ  Ｂｕｓ  Ｃｔｒｌ  Ｕｎｉｔと、メモリインタフェースを制御する１２２  Ｍｅｍｏｒｙ  Ｃｔｒｌ  Ｕｎｉｔと、ＩＯバスを制御する１２３  ＩＯ  Ｃｔｒｌ  Ｕｎｉｔ、およびクロスバインタフェースの制御を行う１２４  ＣｒｏｓｓＢａｒ  Ｃｔｒｌ  Ｕｎｉｔから成る。
【００１５】
本発明では、このＣＰＵとチップセット、１５０メモリと、ＩＯバスに接続されるＩＯ機器（図面では示していない）をまとめてノードとして扱い、複数のノードを１８０クロスバを用いて接続可能なサーバを想定している。なお、図１では１９０ノード＃０と１９１ノード＃１の２ノード構成の例を示しているが、２ノードでなくても良い。
【００１６】
このサーバで提供される仮想計算機システムは、ハイパバイザと呼ばれるソフトウェアによって実現される。
図２に仮想計算機システムで使用されるアドレスマップの相関図を示す。
図１のサーバにより提供されるアドレスマップを絶対アドレス空間と呼ぶ。図２の実アドレス空間はＯＳが使用するアドレスを示し、図２の仮想アドレス空間とはアプリケーションプログラムが使用するアドレスを示している。
図２は２つのＯＳが各ＬＰＡＲ上で動作している例を示しており、それぞれＯＳ    Ａ、およびＯＳ    Ｂであるものとしている。ＯＳ    Ａ及び  ＯＳ    Ｂの上で動作する異なるアプリケーションプログラムが使用する仮想アドレスＶＡとＶＢが、それぞれ非論理分割運用時にはＲＡとＲＢで示されるアドレスに変換されるものとする。論理分割運用時でハイパバイザによるアドレス変換が無い場合、ＲＡとＲＢが同じ値であると、同じ絶対アドレスをＯＳ  ＡとＯＳ  Ｂがそれぞれアクセスするため、正常に動作できない。ハイパバイザはこれを防ぐために、ＲＡ及びＲＢに対応する、ＰＡ及びＰＢ（≠ＰＡ）に対するアクセスを行わせている。
【００１７】
仮想計算機システムにおける、ＣＰＵ及びＩＯデバイスからのアクセスを以下に説明する。
【００１８】
ＣＰＵからのアクセスの場合、ＯＳ    ＡがＶＡをＲＡに変換するＴＬＢエントリをＣＰＵに登録しようとするのをハイパバイザが検知し、ハイパバイザが  ＯＳに代わってＶＡをＰＡに変換するＴＬＢエントリの登録を行う。ハイパバイザは、各ＬＰＡＲへのメモリの割り付け状況と  ＲＡから、ＰＡを算出可能である。実際にアプリケーションプログラムがＶＡにアクセスする際には、ＶＡをＰＡに変換するＴＬＢエントリがハイパバイザによって登録されているため、該アクセスはＲＡでなくＰＡをアクセスすることになり、図２で示すＬＰＡＲごとのアドレス変換が実現されている。
【００１９】
一方、ＩＯデバイスからのアクセスの場合、ＣＰＵからのアクセスと異なりＴＬＢに相当するアドレス変換機能がないため、ハイパバイザによるアドレス変換はできない。そこで本発明では、図１における１２３  Ｉ／Ｏ  Ｃｔｒｌ  Ｕｎｉｔを図３のように構成することによって、ＩＯからのアクセスに応じて該アクセスを発生させたＬＰＡＲを識別して、ＬＰＡＲ毎に異なるアドレスにアクセスするようにアドレス変換を行う。以下このアドレス変換の仕組みを、図を用いて説明する。
【００２０】
図３は  １２３  Ｉ／Ｏ  Ｃｔｒｌ  Ｕｎｉｔの構成例を示す。１２３  Ｉ／Ｏ  Ｃｔｒｌ  Ｕｎｉｔは  １３０および１３１  ＩＯバスの制御を行っている。本実施例では個々のＩＯバスにはそれぞれＳｌｏｔ＃０からＳｌｏｔ＃３がある構成を示している。ＩＯバスには、これらのスロット上のＩＯデバイスからのアクセス要求を調停する信号線２０６ａおよび２０６ｂを備えており、２０６ａ、２０６ｂによるアクセス要求は２０４ａ、２０４ｂのＢｕｓ  Ａｒｂ（バス調停回路）が調停し、アクセス要求を発行可能なスロットに対してＡｃｋ応答を行う。
【００２１】
また、通常のＩＯバスではバス上のＩＯデバイスを初期化するためのリセット信号を１本のみ持っており、全てのスロットで共通に用いられている。しかし本発明では、２０５ａ、２０５ｂリセット信号線を個々のスロット毎に独立に用意すると共に、リセット信号のアサート・ディアサートは２０４ａ，  ２０４ｂ  Ｂｕｓ  Ａｒｂによって制御される。これにより、スロット単位での初期化が可能となり、各ＬＰＡＲごとのリブート、および再初期化が可能となる。２０５ａ，  ２０６ａリセット信号を用いたＩＯスロットの再初期化の手順については、図１２を用いて後述する。
【００２２】
１３０及び１３１  ＩＯバスの何れかのスロットから、上記のバス調停回路により調停された結果、他のＩＯバスまたはＣＰＵ、メモリに対するアクセスが発行された場合、ＩＯバスを介して該アクセス要求が１２３  Ｉ／Ｏ  Ｃｔｒｌ  Ｕｎｉｔに伝達される。Ｉ／Ｏ  Ｃｔｒｌ  Ｕｎｉｔでは、該アクセス要求の宛先アドレスを２０３ａ，  または２０３ｂのアドレス修飾部で、そのアドレスの値に基づいて修飾する。この修飾の内容は前述の各ＬＰＡＲごとに異なるアドレスにアクセスするよう、アドレス変換することを指している。
図４にこのアドレス修飾部２０３ａの構成例を示す。なお、２０３ｂについても全く同じ回路を使用するため、本実施例では２０３ａのみの説明を行う。図４に示す回路例では、２０１ａ  ＡＤＲ変換情報に格納されたアドレス変換に関する情報を使用する。この情報には次のものが含まれる。（１）インタリーブおよびアドレス領域情報、（２）スロット単位での所属ＬＰＡＲ情報、（３）実アドレス範囲に応じたＬＰＡＲごとのアドレス加算値。図６にこれらの情報を格納するレジスタのフォーマットを示す。
（１）インターリーブおよびアドレス領域情報については、図２で説明したアドレスマップのうちの絶対アドレスで指定された範囲に対して、アドレス種別、インタリーブ有無・範囲指定、宛先バス・スロット番号の各情報が含まれる。アドレス種別は該アドレス範囲がメモリデバイス、もしくはＭｅｍｏｒｙ  Ｍａｐｐｅｄ  ＩＯ（以下ＭＭＩＯ）によってＩＯデバイスに割り付けられているかの区別が格納されている。該アドレス範囲がメモリデバイスに割り付けられている場合、特定のノードのメモリデバイスに割り付けられているか、もしくは複数のノードのメモリデバイス間でインタリーブされているかの情報が、インタリーブ有無・範囲指定のフィールドに格納される。該アドレス範囲がＩＯデバイスに割り付けられている（以下、ＭＭＩＯ領域）場合、アクセス対象となるＩＯデバイスのバス番号、およびスロット番号が、宛先バス・スロット番号のフィールドに格納される。（１）インタリーブおよびアドレス領域情報はサーバの初期化シーケンス中にＢＩＯＳ  （Ｂａｓｉｃ  ＩＯ  Ｓｙｓｔｅｍ）、もしくはファームウェアによって設定され、特に論理分割をサポートしないサーバにおいても、これに類する情報を所持している。
（２）スロット単位での所属ＬＰＡＲ情報は、発行元ＰＣＩスロットごとにアクセス可能な（＝  同一のＬＰＡＲに属している）  ＰＣＩスロットを識別するための情報である。本情報中の許可ビットが１にセットされているスロットに対してのみアクセスが許可される。本情報は各ＬＰＡＲの生成時にハイパバイザによって設定される。また本レジスタフォーマットのバリエーションとして、許可ビットが０になっているスロットに対してのみアクセスを許可するとしても構わない。
本情報は、発行元ＩＯスロットと発行先ＩＯスロットの組み合わせ１つに対して１ビットの記憶容量ですむため、各組み合わせに対してアドレス範囲を記憶する必要がある公知例１の方式に対し、格段に少ない記憶容量で同等の効果を達成でき、先に挙げた第２の課題を解決する。
（３）実アドレス範囲に応じたＬＰＡＲごとのアドレス加算値は、ＬＰＡＲごとに固有の、実アドレスから絶対アドレスへのアドレス変換を行うための情報である。本情報は各ＬＰＡＲの生成時にハイパバイザによって設定される。
図６の各情報の設定手順を、図１１を用いて説明する。
６０１  電源が投入されると、ハードウェアに故障がないかチェックする目的でＰＯＳＴ（Ｐｏｗｅｒ  Ｏｎ  Ｓｅｌｆ  Ｔｅｓｔ）が実施される。
６０２  次に  ＢＩＯＳ、およびＦｉｒｍｗａｒｅの初期化コードが実行される。ここでメモリの搭載状況、及びＩＯデバイスの接続状況の調査が行われ、図６中の  （１）インタリーブおよびアドレス領域情報の設定が行われる。
６０３  次にハイパバイザのロードが行われる。ブートデバイスとしては他のＯＳと同様、フレキシブルディスクやハードディスクが一般的であるが、他のものでも構わない。その後、ハイパバイザはハイパバイザ自身の初期化を行う。
６０４  ハイパバイザは、サーバ管理者からの新規ＬＰＡＲ作成要求を待つ。サーバ管理者から指示を受けるためのインタフェースとしては、ＣＲＴもしくはシリアル回線を通してのコンソール画面や、液晶（ＬＣＤ）パネル、電子メールなどが考えられるが、特にこれらでなくとも構わない。サーバ管理者は上述のハイパバイザのインタフェースを通じて、新規に立ち上げるＬＰＡＲに割り付ける絶対メモリアドレス範囲、およびＩＯデバイス（もしくはスロット）番号、ＯＳのブートデバイスを指定するが、オプションとしてそれ以外の情報を与えても構わない。オプションとしては、各ＬＰＡＲに対するＣＰＵの割り当て方法やＣＰＵ時間の割合の指定などが考えられる。
６０５  ハイパバイザはサーバ管理者から指定されたメモリ領域を、新規に作成するＬＰＡＲに割り付ける。
６０６  次にハイパバイザはサーバ管理者から指定されたＩＯデバイスを、新規に作成するＬＰＡＲに割り付ける。
６０７  ハイパバイザはサーバ管理者から指定されたメモリ領域、およびＩＯデバイスの割り付け状況に基づき、図６中の  （２）ＳＬＯＴ単位での所属ＬＰＡＲ情報、および（３）実アドレス範囲に応じたＬＰＡＲごとのアドレス加算値の設定を行う。これらのレジスタの設定を行うことで、後述する  ２０２ａ，  ２０２ｂ  Ａｄｒ  Ｄｅｃ，  及び２０３ａ，  ２０３ｂ  Ａｄｒ修飾部の機能が有効になる。
６０８  ハイパバイザは、サーバ管理者から指定されたブートデバイスに格納されたＯＳのブートローダを呼び出し、新規ＬＰＡＲ上でＯＳの動作を開始させる。
【００２３】
図４に示す２０３ａ  Ａｄｒ修飾部は、（３）  ３０４ａ，  ３０４ｂ  アドレス加算値と、（１）アドレス領域情報、２０４ａ  Ｂｕｓ  Ａｒｂから入力される２１０ａ  発行元スロット番号、及びＩＯバストランザクションを入力として受信する。本実施例では、アドレス加算値が  ２１０ａ  発行元スロット番号ごとに２つある例を示しているが、２つ以外でも構わない。
ＩＯバストランザクションは、３０１  Ｔｘ復号回路により、リード・ライトなどのトランザクションの種別を示すＴｘ情報、およびアクセス先を示す３０７  実アドレスに分離される。Ｔｘ情報については何も操作せずに、そのまま出力される。
３０４ａ，  ３０４ｂアドレス加算値は、２１０ａ発行元スロット番号によって選択された後、３０５ａ  ＢＡＳＥ及びＳＩＺＥ部と、３０６ａ，  ３０６ｂ  ＯＦＦＳＥＴ部に分離される。
３０７実アドレスは、３０３ａ，  ３０３ｂ  加算器に入力され、３０６ａ，  ３０６ｂ  ＯＦＦＳＥＴと加算される。
３０２  ＡＤＲ変換判定回路は、３０９ａ，  ３０９ｂ加算結果と、３０７実アドレスのうちの１つを選択し、３１２絶対アドレスとして出力する。本回路での判定手順は下記の通りである。
３０７実アドレスと、アドレス領域情報の絶対アドレス範囲を比較し、３０７実アドレスがＭＭＩＯ領域であるか判定する。本実施例では、ＭＭＩＯ領域はアドレス変換を行わないことを前提としている。ＭＭＩＯ領域である場合、３０７実アドレスを３１２  絶対アドレスに出力する。同時に３１１アドレス変換有無の信号をディアサートし、アドレス変換を実施しなかったことを通知する。
３０７実アドレスがＭＭＩＯ領域でない場合、３０７実アドレスが、３０５ａ，  ３０５ｂ  ＢＡＳＥ，  ＳＩＺＥで指定される実アドレス範囲に合致するか判定する。合致する場合、対応する３０９ａ，  もしくは  ３０９ｂ加算結果を選択し、３１２絶対アドレスとして出力する。同時に３１１アドレス変換有無の信号をアサートし、アドレス変換を実施したことを通知する。
３０７実アドレスが、３０５ａ，  ３０５ｂ  ＢＡＳＥ，  ＳＩＺＥで指定される実アドレス範囲に合致しなかった場合、３０７実アドレスを３１２絶対アドレスとして出力する。同時に３１１アドレス変換有無の信号をディアサートし、アドレス変換を実施しなかったことを通知する。
【００２４】
図５は  ２０２ａ  Ａｄｒ  Ｄｅｃの構成例を示す。本実施例では２０２ａ，  及び２０２ｂでは全く同じ回路を使用するため、２０２ａのみ図示している。２０２ａ  Ａｄｒ  Ｄｅｃは、図４の２０３ａ  Ａｄｒ修飾部から出力される３０８  Ｔｘ情報、および３１２絶対アドレス、３１１アドレス変換有無を受信し、さらに２０１ａ  ＡＤＲ変換情報からインタリーブおよびアドレス領域情報、ＳＬＯＴ単位での所属ＬＰＡＲ情報を、２０４ａ  Ｂｕｓ  Ａｒｂからは２１０ａ  発行元スロット番号を受信して、図２の２００  他Ｃｔｒｌ  Ｕｎｉｔ  ＩＦ制御部に対し、チップセット内トランザクション（以下  Ｉｎｂｏｕｎｄ  Ｔｘ）を発行する。
４０１アクセス先判定回路は、３１２絶対アドレス、３０８Ｔｘ情報、インタリーブおよびアドレス領域情報を受信し、該トランザクションのアクセス先の判定を行い、４１３  Ｉｎｂｏｕｎｄ  Ｔｘを出力する。同時に４１１  アドレス種別でアクセス先の種別（メモリ、もしくはＩＯデバイス、ＣＰＵなど）を、４１２宛先スロット番号で宛先のＩＯバス番号、およびＩＯスロット番号を４０２アクセス可否判定に通知する。
４０２アクセス可否判定は３１１アドレス変換有無、４１１アドレス種別、４１２宛先スロット番号、および２１０発行元スロット番号で選択されたＳＬＯＴ単位での所属ＬＰＡＲ情報を受信して、Ｉｎｂｏｕｎｄ  Ｔｘ  ＩＦに発行するＴｘを選択する。本回路での発行可否決定手順は下記の通りである。
４１１アドレス種別がＩＯデバイス（ＭＭＩＯ）である場合、ＳＬＯＴ単位での所属ＬＰＡＲ情報のビットマップのうち、４１２宛先スロット番号で示されるアクセス可否ビットが１（もしくは０）である場合、アクセスを許可する。
４１１アドレス種別がＣＰＵ（ＩＯデバイスからの割り込みトランザクション）である場合、アクセスを許可する。本実施例では、ＣＰＵは全ＬＰＡＲで時分割で共有されることを前提としており、各ＬＰＡＲの割り込みベクタはハイパバイザによって管理されるため、他のＯＳの動作に支障をきたすことはない。
４１１アドレス種別がメモリであり、かつ３１１アドレス変換有無がアサートされている場合、アクセスを許可する。
上記（１）〜（３）によってアクセスが許可された場合、４１３  Ｉｎｂｏｕｎｄ  Ｔｘを  Ｉｎｂｏｕｎｄ  Ｔｘ  ＩＦに出力する。
上記（１）〜（３）に当てはまらなかった場合、４０２アクセス可否判定はアクセスを拒否し、４１３  Ｉｎｂｏｕｎｄ  Ｔｘ  ＩＦのアクセス対象アドレスを、４０３宛先Ｒｅｇに登録されているアドレスと交換し、Ｉｎｂｏｕｎｄ  Ｔｘ  ＩＦに発行すると共に、４０４ＩＮＴ  生成に  ＣＰＵに対する割り込みトランザクションを生成させ、Ｉｎｂｏｕｎｄ  Ｔｘとして発行させる。同時に、４０５アイソレーション障害レジスタに、発行元スロット番号、および３１２絶対アドレスを格納する。４０５アイソレーション障害レジスタは、ＣＰＵから読み出し可能であるものとする。
【００２５】
該割り込みトランザクションを受けたＣＰＵは、エラー処理を実施する。その手順を図１２を用いて説明する。
【００２６】
７０１において、該割り込みトランザクションを受信したＣＰＵは、割り込みベクタに登録されたハイパバイザのエラー処理ルーチンを起動する。
【００２７】
７０２において、ハイパバイザはチップセット内のエラーレジスタの値や、ファームウェアから報告されるエラーレコードの情報から、発生したエラーがＬＰＡＲ間のアイソレーション障害であることを特定する。
【００２８】
７０３において、ハイパバイザは該アイソレーション障害によって影響を受けた範囲を特定する。図３の構成例では、発行元のＩＯスロットが属するＬＰＡＲ以外には影響が及ぼされないことが、構成上保証されている。そのため、４０５アイソレーション障害レジスタに記録された発行元スロット番号から、アイソレーション障害を引き起こしたＩＯスロット番号を取得し、そのＩＯスロットが所属するＬＰＡＲを特定する。本特許では、各ＩＯスロットはＬＰＡＲの生成時に占有的に割り付けられ  他のＬＰＡＲとは共用しないため、ＩＯスロット番号から所属するＬＰＡＲを一意に特定可能である。
【００２９】
７０４において、ハイパバイザは該ＬＰＡＲで動作しているＯＳ（以下、ゲストＯＳ）の停止を指示する。ハイパバイザからゲストＯＳを停止させる方法としては  （１）ゲストＯＳに対して、アドレスパリティエラーなどの致命的なエラーが発生したと通知することで、ゲストＯＳにリブート処理を行わせる方法や、（２）ハイパバイザ内のＣＰＵ割り当てキューから該当ＬＰＡＲを取り除く方法などが考えられる。また、ＯＳのデバッグなどの必要に応じて、ゲストＯＳのメモリイメージなど障害ログ情報をハイパバイザ、もしくは該ゲストＯＳが取得する。
【００３０】
７０５において、ハイパバイザは該当するＬＰＡＲに属する全てのＩＯスロットを、スロット単位に設けられた  ２０５ａ  ＲＳＴ＃信号を用いてリセットしたうえで、該ＩＯスロットがどのＬＰＡＲにも属していない状態に開放する。本処理により、該ＩＯスロットを他のＬＰＡＲに再度割り付けることが可能になり、先に挙げた第３の課題を解決する。
【００３１】
７０６において、ハイパバイザは該当するＬＰＡＲに割り付けられていたメモリ領域を、どのＬＰＡＲにも属していない状態に開放する。本処理により、該メモリ領域を他のＬＰＡＲに再度割り付けることが可能になる。
【００３２】
７０７において、ハイパバイザは該当するＬＰＡＲがアイソレーション障害を発生させたことを、サーバ管理者に通知する。障害通知手段としては、サーバの状態表示用のＬＣＤパネルやブザー、管理用コンソール画面、電子メールなどが挙げられる。該障害通知手段は、アイソレーション障害の通知のために専用に用意しても良いし、他の障害発生時の通知手段と兼用しても構わない。
図５中４０３宛先Ｒｅｇにはハイパバイザのみが使用し、各ＬＰＡＲには割り付けられていないメモリアドレスを、図６の６０３ハイパバイザロード中の  ハイパバイザ自身の初期化において設定しておく。これにより、アイソレーション障害発生時に他のＬＰＡＲのデータが破壊されることを防ぐとともに、通常のＩＯデバイス発アクセスの処理と同一の経路で該ＩＯバストランザクションに対する完了をＩＯバスに対して行うことを可能にし、ＩＯデバイスのタイムアウトによるシステム停止を防止する。
上述の処理を終えたトランザクションは図２中  ２２０他Ｃｔｒｌ  Ｕｎｉｔ  ＩＦ制御部に入力され、Ｔｘ情報、および絶対アドレスに基づいて１２１  ＣＰＵ  Ｃｔｒｌ  Ｕｎｉｔ、または１２４  ＣｒｏｓｓＢａｒ  Ｃｔｒｌ  Ｕｎｉｔ、または１２２  Ｍｅｍｏｒｙ  Ｃｔｒｌ  Ｕｎｉｔ、または他ＩＯバスに対し、信号線１３２または１３３を介して、Ｉｎｂｏｕｎｄ  Ｔｘを発行し、宛先の各Ｕｎｉｔからの応答を待って、該アクセス要求を行ったＩＯバス上のＩＯデバイスに応答トランザクションをＩＯバスに発行し、該アクセス要求をＩＯバス上で完了させる。
これによってＩＯデバイスからのアクセスでアイソレーション障害が生じた場合に、他のＬＰＡＲに属するＩＯデバイスの動作を継続しつつ、アイソレーション障害の発生を報告、およびエラー処理を実施することが可能になり、先に挙げた第１の課題を解決する。
【００３３】
【実施例２】
本実施例は実施例１の変形であり、図１における  １２３  Ｉ／Ｏ  Ｃｔｒｌ  Ｕｎｉｔに、１３７  Ｉ／Ｏ  ｔｏ  Ｉ／Ｏ  Ｂｒｉｄｇｅを付加した例を示している。
【００３４】
実施例２では、紙面の都合で  １２３  Ｉ／Ｏ  Ｃｔｒｌ  Ｕｎｉｔに接続されるＩＯバスは、１３４  ＩＯバスを１本とした構成例である。１３７  Ｉ／Ｏ  ｔｏ  Ｉ／Ｏ  Ｂｒｉｄｇｅは  １つのＩＯバスを複数のＩＯバスに振り分ける機能を有するＬＳＩである。なお本実施例では１３４、１３５、１３６は単にＩＯバスと記しているが、それぞれ異なる種類のＩＯバスであっても、同じ種類のＩＯバスであっても構わない。
【００３５】
実施例２は実施例１における  ２０１ａ，  ２０１ｂ  ＡＤＲ変換情報と、２０２ａ，  ２０２ｂ  Ａｄｒ  Ｄｅｃ、２０３ａ，  ２０３ｄＡｄｒ修飾部を、図７のように１３８アクセス監視カード＃０，  及び  １３９  アクセス監視カード＃１上に、２０１ｃ，  ２０１ｄ  ＡＤＲ変換情報（２）、および  ２０２ｃ，  ２０２ｄ  ＡｄｒＤｅｃ（２）、２０３ｃ，  ２０３ｄ  Ａｄｒ修飾部（２）として搭載した例である。１３８，  １３９は全く同じ回路を使用するため、１３８  アクセス監視カード＃０のみについて説明する。
実施例２では実施例１と異なり、ＩＯデバイスをＩＯスロット単位ではなく、ＩＯバス単位で各ＬＰＡＲに割り付ける。そのため、２０１ｃ  ＡＤＲ変換情報（２）は、２０１ａの一部の情報のみを保持する。具体的には図６中の（１）インタリーブ情報およびアドレス領域情報のうち宛先スロット番号以外の情報を、（２）所属ＬＰＡＲ情報の許可ビットがバス一本につき１ビットのみを保持し、（３）実アドレス範囲に応じたＬＰＡＲごとのアドレス加算値はＩＯスロット単位でなく、ＩＯバス単位の情報として保持する。
２０３ｃ  Ａｄｒ修飾部（２）は、同一バス上の他のＩＯスロットから発行されるＩＯバストランザクションを監視し、該ＩＯバストランザクションを入力として前述のアドレス修飾を実施する。前述の通り実施例２ではＩＯデバイスの割り付け単位が  ＩＯバス単位であるため、実施例１の２０３ａ  Ａｄｒ修飾部とは異なり、３０４ａ，  ３０４ｂ  アドレス加算値は  １つずつの情報のみを受信し、２１０ａ  発行元スロット番号は受信しない。
２０２ｃ  Ａｄｒ  Ｄｅｃ（２）は、受信したＩＯバストランザクションの宛先アドレスをチェックする。実施例１の２０２ａ  Ａｄｒ  Ｄｅｃと異なり、２０２ｃ  Ａｄｒ  Ｄｅｃ（２）は２１０ａ発行元スロット番号、及び  ４１３  Ｉｎｂｏｕｎｄ  ＴｘをＩｎｂｏｕｎｄ  Ｔｘ  ＩＦに発行する経路、４０３宛先Ｒｅｇを具備しない。４０２アクセス可否判定においてアクセス可能である場合、Ｉｎｂｏｕｎｄ  Ｔｘ  ＩＦ（この場合ＩＯバス）に対して何のトランザクションを発行しない。アクセス不可である場合、ＣＰＵに対して割り込みトランザクションを作成しアイソレーション障害が起こったことを報告する。
これによって、１３５  ＩＯバスと１３６  ＩＯバスが異なるＬＰＡＲに属していた場合に、１３５  ＩＯバスのＩＯデバイスから発行されたトランザクションが、１３７  Ｉ／Ｏ  ｔｏ  Ｉ／Ｏ  Ｂｒｉｄｇｅを介して  １３６  ＩＯバス上のＩＯデバイスに対してアクセスすることを、アイソレーション障害として検出することが可能になる。また、逆に１３６  ＩＯバスから  １３５  ＩＯバスへアクセスする場合も同様に検出できる。
これによってアイソレーション障害の発生を完全には防げないものの、アイソレーション障害が発生したことを通知できるため、図１２に示すエラー発生時の処理を実施することが可能になる。その際  ７０３  影響範囲の特定について、原因となったトランザクションの発行元ＬＰＡＲに加え宛先ＬＰＡＲを特定し、該当するゲストＯＳをリブートさせる。宛先ＬＰＡＲは、４０５アイソレーション障害レジスタに格納された  ３１２絶対アドレスから特定可能である。
【００３６】
【実施例３】
本実施例は実施例１の変形であり、図３の  １２３  Ｉ／Ｏ  Ｃｔｒｌ  Ｕｎｉｔを  図８の  １２６  Ｉ／Ｏ
Ｃｔｒｌ  Ｕｎｉｔのように構成する。
【００３７】
実施例１の  ２０２ａ  Ａｄｒ  Ｄｅｃを変更し、図９に示す  ２０２ｅ  Ａｄｒ  Ｄｅｃ（３）のように構成する。２０２ｆ  Ａｄｒ  Ｄｅｃ（３）も全く同じ回路を有するため、以下  ２０２ｅ  Ａｄｒ  Ｄｅｃ（３）のみを説明する。４２１アクセス判定可否（２）は、実施例１の４０２アクセス判定可否と同様のトランザクション発行可否判定、および割り込みトランザクションの発行を実施するが、アクセス不可と判定したときに該Ｉｎｂｏｕｎｄ  ＴｘをＩｎｂｏｕｎｄ  Ｔｘ  ＩＦに発行せず、２０９ａ  応答発行要求を用いて、２０７ａに該Ｉｎｂｏｕｎｄ  Ｔｘに対する応答トランザクションの発行を要求する。また４２０アクセス先判定回路（２）は、２１１ａ  Ｔｘ応答情報を用いて該トランザクションの種別など応答トランザクションの発行に必要な情報を伝達する。
２０７ａ  応答発行は、１２６  Ｉ／Ｏ  Ｃｔｒｌ  Ｕｎｉｔから  １３０  ＩＯバス＃０に対して発行するＩＯバストランザクションを制御する。２０７ｂ  応答発行も２０７ａ  と全く同じ回路を有するため、以下  図１０を用いて、２０７ａ  のみを説明する。
５０２応答選択部は２０８ａ  Ｂｕｓ権要求・許可の信号を用いて  ２０４ａ  Ｂｕｓ  Ａｒｂにバス権の要求を行い、Ｂｕｓ権が獲得できたときのみ  １３０  ＩＯバス＃０に対して  ＩＯバストランザクションを発行する。５０２応答選択部は、２０９ａ信号により応答発行要求が行われていない場合、２００  他Ｃｔｒｌ  Ｕｎｉｔ  Ｉ／Ｆ制御部から入力されるトランザクションを１３０  ＩＯバス＃０に出力する。２０９ａ信号により応答発行要求が行われた場合、２１１ａＴｘ応答情報より受信したトランザクションの情報と、５０１応答データ生成部のデータを用いて、ＩＯバスに対して肯定的な応答トランザクションを送信する。具体的には該トランザクションがメモリリードなど応答データを必要とする場合、５０１応答データ生成部で生成されるデータを応答データとして送信し、メモリライトなど応答データを必要としない場合は、Ａｃｋ応答のみを送信する。これによってアイソレーション障害を引き起こしたＩＯバストランザクションに対する完了をＩＯバスに対して行うことを可能にし、ＩＯデバイスのタイムアウトによるシステム停止を防止する。
さらに実施例３のバリエーションとして、アイソレーション障害を引き起こしたＩＯバストランザクションに対し、常にリトライなど否定的な応答トランザクションを送信する構成が考えられる。本構成は、リトライが長く続いてしまいシステムが停止することを避ける目的で、ＩＯデバイスが独自にタイムアウト検出を行っている場合には用いることが出来ないが、一般的に否定的な応答トランザクションは応答データを必要としないので、５０１応答データ生成部を省略できるメリットがある。
【００３８】
【実施例４】
本実施例は実施例１の変形であり、図４の  ２０３ａ  Ａｄｒ修飾部を図１３の２０３ｇ  Ａｄｒ修飾部のように構成する。実施例４における  ２０３ｇ  Ａｄｒ修飾部は実施例１の２０３ａ  Ａｄｒ修飾部と異なり、３０４ａ  アドレス加算値を受信せず、代わりに  ３２３ａ〜３２３ｄ  インデックステーブルを保持する。３０７実アドレスは、３２１インデックスビットと、３２２オフセットビットに分離される。図１３では、上位３ビットを３２１インデックスビットとして取り出し、その値は  ”０１０”であるとしている一例を示しているが、インデックスビットの長さ、および  どのビットを３２１インデックスビットとして用いるかは、これ以外でも構わない。２０３ｇ  Ａｄｒ修飾部は、３２３ａ〜３２３ｄのインデックステーブル中の、３２１インデックスビットの値が指し示すエントリの値を読み出し、２１０ａ  発行元スロット番号でセレクトして３２４置換後インデックスビットを得る。前述の３０２アドレス変換判定回路で、アドレス変換の必要がある場合は３２４置換後インデックスビットを選択し、変換不用の場合は３２１インデックスビットを選択したのち、３２２オフセットビットと結合させて、３１２絶対アドレスとして出力する。
実施例４の場合、図６の（３）実アドレス範囲に応じたＬＰＡＲごとの加算値を記録する必要がない代わりに、３２３ａ〜３２３ｄのインデックステーブルを記録するための記憶容量が必要である。実施例１に比べ、ＬＰＡＲの生成・消滅を繰り返しメモリの断片化（フラグメンテーション）が著しい場合には、アドレス変換に必要な情報を削減できる。３２３ａ〜３２３ｄのインデックステーブルの情報は、図１１中の６０７レジスタ更新において設定する必要があり、この情報を設定することで  ２０３ｇ  Ａｄｒ修飾部が動作するようになる。
【００３９】
【発明の効果】
ＰＣＩバスに代表される汎用のＩＯバスを用いるサーバにおいて、チップセットの一部に本発明を適用することによって、下記の利点が得られる。
論理分割運用時にＩＯデバイスからのアクセスによるアイソレーション障害を防止しつつ、アイソレーション障害が発生した場合に、他のＬＰＡＲに属するＩＯデバイスの動作の継続を実現しつつ、障害を生じたＬＰＡＲに対する適切なエラー処理を実現する。
論理分割運用時に、ＩＯデバイス間のアクセスに対して効率的なアイソレーション障害の検出手段を提供する。
アイソレーション障害発生時に、スロット単位で障害ＬＰＡＲに属するＩＯデバイスのみをリセットする手段を提供し、該ＩＯデバイスを再度他のＬＰＡＲに割り付けることを可能にする。
【図面の簡単な説明】
【図１】本発明が想定するサーバの構成例のブロック図。
【図２】本発明が想定するアドレスマップ図。
【図３】本発明におけるＩ／Ｏ  Ｃｔｒｌ  Ｕｎｉｔの構成例１のブロック図。
【図４】本発明におけるＡｄｒ修飾部の構成ブロック図。
【図５】本発明におけるＡｄｒ  Ｄｅｃ構成ブロック図。
【図６】本発明におけるＡＤＲ変換情報のフォーマット図。
【図７】本発明におけるＩ／Ｏ  Ｃｔｒｌ  Ｕｎｉｔの構成例２のブロック図。
【図８】本発明におけるＩ／Ｏ  Ｃｔｒｌ  Ｕｎｉｔの構成例３のブロック図。
【図９】本発明におけるＡｄｒ  Ｄｅｃ構成例２のブロック図。
【図１０】本発明における応答発行の構成例のブロック図。
【図１１】本発明におけるブート時の処理フローチャート。
【図１２】本発明におけるエラー発生時の処理フローチャート。
【図１３】本発明におけるＡｄｒ修飾部の構成例２のブロック図。
【符号の説明】
１００、…、１０３    ＣＰＵ＃０、…、ＣＰＵ＃３
１１０              ＣＰＵバス
１２０              チップセット
１２１              ＣＰＵ  Ｂｕｓ  Ｃｔｒｌ  Ｕｎｉｔ
１２２              Ｍｅｍｏｒｙ  Ｃｔｒｌ  Ｕｎｉｔ
１２３              Ｉ／Ｏ  Ｃｔｒｌ  Ｕｎｉｔ
１２４              ＣｒｏｓｓＢａｒ  Ｃｔｒｌ  Ｕｎｉｔ
１３０、１３１          ＩＯバス＃０、ＩＯバス＃１
１４０              クロスバインタフェース
１５０              メモリ
１６０              メモリインタフェース
１８０              クロスバ
１９０，  １９１          ノード＃０，  ノード＃１
２００              他Ｃｔｒｌ  Ｕｎｉｔ  Ｉ／Ｆ  制御部
２０１ａ、２０１ｂ        ＡＤＲ変換情報
２０２ａ、２０２ｂ        Ａｄｒ  Ｄｅｃ
２０３ａ、２０３ｂ        Ａｄｒ修飾部
２０４ａ，  ２０４ｂ        Ｂｕｓ  Ａｒｂ
２０５ａ，  ２０５ｂ        ＲＳＴ＃
２０６ａ，  ２０６ｂ        ｒｅｑ＃，  ａｃｋ＃
２１０ａ，  ２１０ｂ        発行元スロット番号
３０１              Ｔｘ復号回路
３０２              ＡＤＲ変換判定回路
３０３ａ，  ３０３ｂ        加算器
３０４ａ，  ３０４ｂ        アドレス加算値
３０５ａ，  ３０５ｂ        ＢＡＳＥ、ＳＩＺＥ
３０６ａ，  ３０６ｂ        ＯＦＦＳＥＴ
３０７              実アドレス
３０８              Ｔｘ情報
３０９ａ，  ３０９ｂ        加算結果
３１１              アドレス変換有無
３１２              絶対アドレス
４０１              アクセス先判定回路
４０２              アクセス可否判定
４０３              宛先Ｒｅｇ
４０４              ＩＮＴ生成
４０５              アイソレーション障害レジスタ
４１１              アドレス種別
４１２              宛先スロット番号
４１３              Ｉｎｂｏｕｎｄ  Ｔｘ
１３７              Ｉ／Ｏ  ｔｏ  Ｉ／Ｏ  Ｂｒｉｄｇｅ
１３８，  １３９          アクセス監視カード＃０，  アクセス監視カード＃１
２０１ｃ，  ２０１ｄ        ＡＤＲ変換情報（２）
２０２ｃ，  ２０２ｄ        Ａｄｒ  Ｄｅｃ  （２）
２０３ｃ，  ２０３ｄ        Ａｄｒ修飾部（２）
２０７ａ，  ２０７ｂ        応答発行
２０８ａ，  ２０８ｂ        Ｂｕｓ権要求・許可
２０２ｅ，  ２０２ｆ        Ａｄｒ  Ｄｅｃ（３）
２０９ａ，  ２０９ｂ        応答発行要求
２１１ａ，  ２１１ｂ        Ｔｘ応答情報
４２０              アクセス先判定回路（２）
４２１              アクセス可否判定（２）
５０１              応答データ生成部
５０２              応答選択部
６０１              ＰＯＳＴ実行
６０２              ＢＩＯＳ／Ｆｉｒｍｗａｒｅ実行
６０３              ハイパバイザをロード
６０４              新規ＬＰＡＲの生成要求受付
６０５              メモリ領域確保
６０６              Ｉ／Ｏデバイス確保
６０７              レジスタ更新
６０８              ＯＳブートローダ呼び出し
７０１              割り込みトランザクションによるエラー通知
７０２              割り込み要因特定
７０３              影響範囲特定
７０４              該当ゲストＯＳの停止指示
７０５              該当ＬＰＡＲに属するＩ／Ｏスロットのリセット・開放
７０６              該当ＬＰＡＲに属するメモリ領域を開放
７０７              管理者への障害発生・要因通知
３２１              インデックスビット
３２２              オフセットビット
３２３ａ、…、３２３ｄ  インデックステーブル＃１、…、インデックステーブル＃４
３２４              置換後インデックスビット。
【図１】
2004220218.tif 000002
【図２】
2004220218.tif 000003
【図３】
2004220218.tif 000004
【図４】
2004220218.tif 000005
【図５】
2004220218.tif 000006
【図６】
2004220218.tif 000007
【図７】
2004220218.tif 000008
【図８】
2004220218.tif 000009
【図９】
2004220218.tif 000010
【図１０】
2004220218.tif 000011
【図１１】
2004220218.tif 000012
【図１２】
2004220218.tif 000013
【図１３】
2004220218.tif 000014