(57)【特許請求の範囲】
【請求項１】
コンピュータ用拡張バスアーキテクチャであるＰＣＩ（Peripheral Component Interconnect）機能を代理するＰＣＩプロシキ（Proxy）機能部と、複数のエンドポイントとを備え、ＰＣＩｅ（PCI Express）パケットを送信する統合エンドポイントと、
前記統合エンドポイントが送信したＰＣＩｅパケットを処理する拡張サーバを決定する拡張サーバ決定手段と、決定した前記拡張サーバのサーバ名を前記ＰＣＩｅパケットに挿入する拡張サーバ名挿入手段と、前記ＰＣＩｅパケットを送信する主サーバ側送信手段とを備える主サーバと、
前記主サーバが送信したＰＣＩｅパケットを受信して１次共有メモリに書き込む１次共有メモリ書込手段と、前記ＰＣＩｅパケットを、前記ＰＣＩｅパケットに挿入されたサーバ名に対応する２次共有メモリに転送する２次共有メモリ転送手段とを備える記憶装置
とを具備することを特徴とするエンドポイント共有システム。
【請求項２】
コンピュータ用拡張バスアーキテクチャとしてのＰＣＩ（Peripheral Component Interconnect）機能を代理する機能部としてのＰＣＩプロシキ（Proxy）機能部と、複数のエンドポイントとから構成された統合エンドポイントにおける特定のエンドポイントに対して任意の主サーバおよび拡張サーバがデータの送信を行うときそのＰＣＩｅパケットに前記特定のエンドポイントを表わす識別情報を挿入する拡張サーバ側挿入手段と、
この拡張サーバ側挿入手段で前記識別情報を挿入したＰＣＩｅパケットを、それぞれの主サーバおよび拡張サーバに個別に対応して設けられこれらのサーバとの間のデータの個別転送に使用する複数の２次共有メモリのうちの送信元の前記任意の主サーバおよび拡張サーバに対応する２次共有メモリに格納する２次共有メモリ格納手段と、
この２次共有メモリ格納手段が前記２次共有メモリのいずれかにＰＣＩｅパケットを格納したとき前記識別情報を読み出してこの識別情報から判別されるエンドポイント宛にＰＣＩｅパケットを送信するＰＣＩｅパケット送信手段
とを具備することを特徴とするエンドポイント共有システム。
【請求項３】
前記主サーバおよび拡張サーバは１組あるいは複数組存在することを特徴とする請求項１または請求項２記載のエンドポイント共有システム。
【請求項４】
前記統合エンドポイントは１組あるいは複数組存在することを特徴とする請求項１または請求項２記載のエンドポイント共有システム。
【請求項５】
前記拡張サーバ決定手段は、各サーバの負荷状況の軽い拡張サーバを決定することを特徴とする請求項１記載のエンドポイント共有システム。
【請求項６】
前記記憶装置は半導体メモリによって構成されることを特徴とする請求項１記載のエンドポイント共有システム。
【請求項７】
前記２次共有メモリは半導体メモリによって構成されることを特徴とする請求項２記載のエンドポイント共有システム。
【請求項８】
コンピュータ用拡張バスアーキテクチャであるＰＣＩ（Peripheral Component Interconnect）機能を代理するＰＣＩプロシキ（Proxy）機能部と、複数のエンドポイントとを備える統合エンドポイントにおいて、ＰＣＩｅ（PCI Express）パケットを送信するステップと、
主サーバにおいて、前記統合エンドポイントが送信したＰＣＩｅパケットを処理する拡張サーバを決定し、前記決定した前記拡張サーバのサーバ名を前記ＰＣＩｅパケットに挿入し、前記ＰＣＩｅパケットを送信するステップと、
記憶装置において、前記主サーバが送信したＰＣＩｅパケットを受信して１次共有メモリに書き込み、前記ＰＣＩｅパケットを、前記ＰＣＩｅパケットに挿入されたサーバ名に対応する２次共有メモリに転送するステップ
とを具備することを特徴とするデータ転送方法。
【請求項９】
コンピュータ用拡張バスアーキテクチャとしてのＰＣＩ（Peripheral Component Interconnect）機能を代理する機能部としてのＰＣＩプロシキ（Proxy）機能部と、複数のエンドポイントとから構成された統合エンドポイントにおける特定のエンドポイントに対してデータの送信を行う任意の主サーバおよび拡張サーバがＰＣＩｅパケットに前記特定のエンドポイントを表わす識別情報を挿入する拡張サーバ側挿入ステップと、
この拡張サーバ側挿入ステップで前記識別情報を挿入したＰＣＩｅパケットを、それぞれの主サーバおよび拡張サーバに個別に対応して設けられこれらのサーバとの間のデータの個別転送に使用する複数の２次共有メモリのうちの自サーバに対応する２次共有メモリに格納する２次共有メモリ格納ステップと、
この２次共有メモリ格納ステップで前記２次共有メモリのいずれかにＰＣＩｅパケットが格納されたとき前記識別情報を読み出してこの識別情報から判別されるエンドポイント宛にＰＣＩｅパケットを送信するＰＣＩｅパケット送信ステップ
とを具備することを特徴とするデータ転送方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のＣＰＵ（Central Processing Unit）あるいはサーバが入出力装置としてのエンドポイント（End Point）を共有するためのデータ転送を行うエンドポイント共有システムおよびデータ転送方法に関する。本発明は特に拡張バスの一種であるピーシーアイエクスプレス（PCI Express）を使用してエンドポイントを共有するのに好適なエンドポイント共有システムおよびデータ転送方法に関する。
【背景技術】
【０００２】
ピーシーアイエクスプレスとは、ＰＣＩ（Peripheral Component Interconnect）バスに代わって策定されたシリアル転送インタフェイスである。「ＰＣＩ  Ｅｘｐｒｅｓｓ」は、「ＰＣＩｅ」と略して表記される。ピーシーアイエクスプレスでは、ポイント・ツー・ポイントのシリアル伝送を採用している。
【０００３】
ピーシーアイエクスプレスを用いた通信システムは、サーバ側のＣＰＵと複数のエンドポイントとで構成される。エンドポイントとは、ＬＡＮ（Local Area Network）コントローラやストレージデバイス等のデータの入出力装置の総称である。
【０００４】
ところで、ピーシーアイエクスプレスを用いた通信システムでは、従来からエンドポイントに接続できるＣＰＵが１個に制限されている。したがって、信頼性が要求されるシステムを構築するためにＣＰＵを二重化あるいは多重化する場合には、それぞれのＣＰＵがエンドポイントを共有するための何らかの工夫が必要とされる。
【０００５】
そこで、複数のＣＰＵ（プロセッサ）がエンドポイントを共有するために、他のエンドポイントを介して目的のエンドポイントにアクセスする技術が本発明の第１の関連技術として提案されている（たとえば特許文献１参照）。
【０００６】
図２０は、この第１の関連技術におけるエンドポイント共有システムの構成の概要を表わしたものである。このエンドポイント共有システム１０００では、第１のプロセッサユニット１００１が第１のホストブリッジ１００２および第１の外部バス１００３を経由して第１のエンドポイント１００４に接続されている。同様に、第２のプロセッサユニット１０１１は第２のホストブリッジ１０１２および第２の外部バス１０１３を経由して第２のエンドポイント１０１４に接続されている。
【０００７】
第１のエンドポイント１００４と第２のエンドポイント１０１４は互いに異なる外部バス１００３、１０１３に接続されている。このため、たとえば第１のプロセッサユニット１００１がそのまま第２のエンドポイント１０１４を使用することができない。そこで、エンドポイント共有システム１０００では、第１のエンドポイント１００４と第２のエンドポイント１０１４の間に、これらの間を伝達される信号の変換を行う変換部１０２１と、変換部１０２１で変換に使用するデータを記憶するメモリ１０２２とを配置している。
【０００８】
たとえば第１のプロセッサユニット１００１から第２のプロセッサユニット１０１１の第２のエンドポイント１０１４へパケットを送信するものとする。この場合、そのパケットは、まず第１のエンドポイント１００４に送信される。第１のエンドポイント１００４に到達したパケットには、要求元のバス番号およびデバイス番号からなる要求元ＩＤ（identifier）が含まれる。第１のホストブリッジ１００２のバス番号およびデバイス番号が要求元ＩＤとなる。この要求元ＩＤを変換部１０２１において変換し、第２のエンドポイント１０１４のバス番号およびデバイス番号とする。これにより、第２のプロセッサユニット１０１１配下のデバイスツリー内で有効なパケットが生成され、パケットを同ツリー内の所望のユニットあるいはデバイスへ到達させることができる。第２のプロセッサユニット１０１１のデバイスツリーから第１のプロセッサユニット１００１のデバイスツリーに向けたパケット送信も同様である。
【０００９】
メモリ１０２２には、第１および第２のホストブリッジ１００２、１０１２のバス番号およびデバイス番号を、パケットに与えられたタグと対応づけて要求元ＩＤテーブルとして格納している。タグはあるアクセス確立のための要求および応答に対して一意に定められる識別番号である。
【００１０】
第１の関連技術によるエンドポイント共有システム１０００では、第１プロセッサユニット１００１が第２プロセッサユニット１０１１のエンドポイント１０１４を共有するために、変換部１０２１およびメモリ１０２２を接続した他のエンドポイント１００４を介する必要がある。このためには、共有する１つのエンドポイントのために、第１プロセッサユニット１００１と第２プロセッサユニット１０１１がそれぞれ１つずつのエンドポイント１００４、１０１４を用意する必要がある。また、変換部１０２１とこの変換部１０２１の変換に必要な要求元ＩＤテーブルを格納したメモリ１０２２を必要とし、システムの管理や運用が煩雑となる。
【００１１】
そこで、本発明者は、他のエンドポイントの介在を必要とすることなく、１つのエンドポイントを複数のサーバが共有することのできる第２の関連技術を提案した。
【００１２】
図２１は、この第２の関連技術におけるエンドポイント共有システムの構成を表わしたものである。第２の関連技術のエンドポイント共有システム１１００は、第０および第１のサーバ１１１０、１１１１を、統合エンドポイント（ＥＰ:End Point）１１１２に接続した構成となっている。ここで、第０および第１のサーバ１１１０、１１１１ならびに統合エンドポイント１１１２は、互いに物理的に分離した存在となっている。
【００１３】
統合エンドポイント１１１２は、ＰＣＩプロシキ（Proxy）機能部１１２１と、第０〜第Ｎのエンドポイント（ＥＰ）１１２２0〜１１２２N（ただし、Ｎは正の整数）から構成されている。ここで、ＰＣＩプロシキ機能部１１２１は、コンピュータ用拡張バスアーキテクチャとしてのＰＣＩ（Peripheral Component Interconnect）機能を代理する機能部である。ＰＣＩプロシキ機能部１１２１は、図示しないがＣＰＵと、このＣＰＵが実行する制御プログラムを格納したＲＯＭ（Read Only Memory）等の記録媒体を有しており、次の各部を備えている。
【００１４】
（ａ）第０のポート１１３１0
第０のサーバ１１１０とＰＣＩｅ（ＰＣＩＥｘｐｒｅｓｓ）ケーブル１１３２0を介して接続される。
（ｂ）第１のポート１１３１1
第１のサーバ１１１１とＰＣＩｅケーブル１１３２1を介して接続される。
（ｃ）ＡＣＴ(active）・ＳＢＹ(standby）選択機能部１１３３
第０および第１のサーバ１１１０、１１１１の一方をＡＣＴ（現用）系に、他方をＳＢＹ（待機系）系に選択する。
（ｄ）第０の仮想ＰＣＩｅコンフィグ（Configuration）レジスタ１１３４0
各エンドポイント１１２２のＰＣＩｅコンフィグレジスタ情報を格納する。
（ｅ）第１の仮想ＰＣＩｅコンフィグ（Configuration）レジスタ１１３４1
各エンドポイント１１２２のＰＣＩｅコンフィグレジスタ情報を格納する。
（ｆ）コンフィグ（Configuration）制御部１１３５
第０の仮想ＰＣＩｅコンフィグレジスタ１１３４0および第１の仮想ＰＣＩｅコンフィグレジスタ１１３４1を管理する。
（ｇ）アドレス変換テーブル１１３６
第０のサーバ１１１０と第１のサーバ１１１１のメモリ空間の差分情報としてのアドレス空間差分情報を保持する。
（ｈ）アドレス変換部１１３７
第０のサーバ１１１０と第１のサーバ１１１１のメモリ空間へのアクセスが同一のアドレスになるように、アドレスを変換する。
（ｉ）アドレス変換・振り分け機能部１１３８
第０および第１のサーバ１１１０、１１１１のうちのＡＣＴ系のサーバと接続されたポートとの間でＰＣＩｅパケットを振り分ける。
（ｊ）第０〜第ＮのＰＣＩｅポート（Ｐｏｒｔ）１１３９0〜１１３９N
第０〜第Ｎのエンドポイント（ＥＰ）１１２２0〜１１２２Nをそれぞれ対応して接続する。
【００１５】
第２の関連技術のエンドポイント共有システム１１００では、第０〜第Ｎのエンドポイント１１２２0〜１１２２Nを、汎用サーバとしての第０および第１のサーバ１１１０、１１１１から共通に利用できるようになっている。ここで、第０〜第Ｎのエンドポイント１１２２0〜１１２２Nは、前記したようにデータの入出力装置の総称である。第０および第１のサーバ１１１０、１１１１は、それぞれ図示しないがＣＰＵ（Central Processing Unit）を実装している。
【００１６】
通常のＰＣＩｅ（PCI Express）システムでは、データの入出力装置としてのエンドポイントは、通常、サーバ内に実装される。第２の関連技術のエンドポイント共有システム１１００では、第０〜第Ｎのエンドポイント１１２２0〜１１２２Nが第０および第１のサーバ１１１０、１１１１と物理的に独立した構成となっている。したがって、第０のサーバ１１１０と第０〜第Ｎのエンドポイント１１２２0〜１１２２Nの間、あるいは第１のサーバ１１１１と同じく第０〜第Ｎのエンドポイント１１２２0〜１１２２Nの間は、ＰＣＩｅ専用のケーブルで接続されている。ここで、汎用サーバと各エンドポイントをＰＣＩｅ専用のケーブルで接続する手法は、すでに技術的に確立したものとなっている。
【００１７】
この第２の関連技術では、第０および第１のサーバ１１１０、１１１１の一方をＡＣＴ(active）系、すなわち現用系として初期的に設定しており、このＡＣＴ系のみが第０〜第Ｎのエンドポイント１１２２0〜１１２２Nにアクセス可能となっている。そして、ＳＢＹ(standby）系を用意しておくことで、サーバに搭載されたＣＰＵを二重化している。
【００１８】
また、第２の関連技術では、コンフィグレーションを電源投入時に実行するようにしており、サーバのＡＣＴ系とＳＢＹ系の切り替え時にコンフィグレーションを不要としている。これにより、ＡＣＴ系とＳＢＹ系それぞれのサーバに搭載したＣＰＵの一方に障害が発生した場合のようにＣＰＵの切り替えが必要な際に、エンドポイントを一旦停止することなく、ＣＰＵの系の切り替えを高速に実現可能である。
【００１９】
第２の関連技術の第０および第１のサーバ１１１０、１１１１は、それぞれ１個ずつＰＣＩｅ拡張スロット１１４１、１１４２を有している。第０のサーバ１１１０は、ＰＣＩｅケーブル１１３２0を接続するためのＰＣＩｅ  ＮＩＣ（Network Interface Card）１１４３を、ＰＣＩｅ拡張スロット１１４１に実装（装着）している。同様に、第１のサーバ１１１１は、ＰＣＩｅケーブル１１３２1を接続するためのＰＣＩｅ  ＮＩＣ１１４４をＰＣＩｅ拡張スロット１１４２に実装している。
【００２０】
第０〜第Ｎのエンドポイント１１２２0〜１１２２NとＰＣＩプロシキ機能部１１２１における第０〜第ＮのＰＣＩｅポート１１３９0〜１１３９Nの間には、それぞれＰＣＩｅバス１１５１0〜１１５１Nが接続されている。
【００２１】
ＰＣＩプロキシ機能部１１２１は、第０のサーバ１１１０と接続するための第０のポート１１３１0と、第１のサーバ１１１１と接続するための第１のポート１１３１1を有する。また、ＰＣＩプロキシ機能部１１２１は、第０および第１の仮想ＰＣＩｅコンフィグレジスタ１１３４0、１１３４1をそれぞれ管理するためのコンフィグ（Configuration）制御部１１３５を有する。コンフィグ制御部１１３５は、ＰＣＩプロキシ機能部１１２１に接続された第０〜第Ｎのエンドポイント１１２２0〜１１２２Nが保持する、図示しないＰＣＩｅコンフィグレーションレジスタを制御する機能を有する。また、コンフィグ制御部１１３５は、第０および第１の仮想ＰＣＩｅコンフィグレジスタ１１３４0、１１３４1に対して、各エンドポイント１１２２のＰＣＩｅコンフィグレジスタ情報の内容を反映させる機能も有する。
【００２２】
第０のサーバ１１１０は、第０の仮想ＰＣＩｅコンフィグ（Configuration）レジスタ１１３４0に対して、ＰＣＩｅコンフィグレーション情報のリード・ライト（Read/Write）を行う。第１のサーバ１１１１も、第１の仮想ＰＣＩｅコンフィグレジスタ１１３４1に対して、ＰＣＩｅコンフィグレーション情報のリード・ライトを行う。このため、第０〜第Ｎのエンドポイント１１２２0〜１１２２Nの前記したＰＣＩｅコンフィグレーションレジスタは、これらのサーバ１１１０、１１１１から直接制御されることはない。これらのＰＣＩｅコンフィグレーションレジスタは、コンフィグ制御部１１３５を経由してアクセスされることになる。
【００２３】
第０のポート１１３１0と第１のポート１１３１1は、ＰＣＩｅパケットで転送されるＡＣＴ制御信号を識別する。そして、ＡＣＴ切替指示が第０のサーバ１１１０もしくは第１のサーバ１１１１から送付された場合には、ＡＣＴ・ＳＢＹ選択機能部１１３３に対してＡＣＴ・ＳＢＹ切替指示を出すようになっている。ＡＣＴ・ＳＢＹ選択機能部１１３３では、アドレス変換・振り分け機能部１１３８に対して、現用系としてのＡＣＴ系サーバが第０および第１のサーバ１１１０、１１１１のどちらであるかを示す信号を送出する。アドレス変換・振り分け機能部１１３８は、この信号を受信すると、第０のポート１１３１0と第１のポート１１３１1のうちのＡＣＴ系のサーバと接続されたポートとの接続を維持する。アドレス変換・振り分け機能部１１３８は、第０のポート１１３１0と第１のポート１１３１1のうちのＳＢＹ系のポートとのデータのやり取りは行わない。
【００２４】
コンフィグ制御部１１３５は、第０および第１の仮想ＰＣＩｅコンフィグレジスタ１１３４0、１１３４1に設定されたＰＣＩｅコンフィグレーションレジスタ情報から第０および第１のサーバ１１１０、１１１１が保持するＰＣＩｅメモリ空間マップ情報を取得する。そして、各サーバ１１１０、１１１１でメモリ空間上に各エンドポイント１１２２をどのように配置したかを認識する。このとき、各サーバ１１１０、１１１１の設定値に差分がある場合には、第０のサーバ１１１０のメモリ空間に対して、第１のサーバ１１１１のメモリ空間の差分を計算し、差分情報をアドレス変換テーブル１１３６に転送する。
【００２５】
アドレス変換部１１３７は、アドレス変換テーブル１１３６から送信された第０および第１のサーバ１１１０、１１１１のアドレス空間差分情報を取得する。そして、第１のサーバ１１１１のメモリ空間へのアクセスを第０のサーバ１１１０のメモリ空間へのアクセスと同一のアドレスになるように、アドレス変換処理を実施する。その後、第１のサーバ１１１１と第０〜第Ｎのエンドポイント１１２２0〜１１２２Nの間でアクセスが行われる際にＰＣＩｅパケットのやり取りを実施する。
【００２６】
アドレス変換・振り分け機能部１１３８は、第０〜第Ｎのエンドポイント１１２２0〜１１２２Nに対するＰＣＩｅパケットの振分けを、ＰＣＩｅパケットヘッダ内に格納されたアドレス情報を基にして実施する。
【００２７】
なお、第０〜第Ｎのエンドポイント１１２２0〜１１２２Nから第０あるいは第１のサーバ１１１０、１１１１の方向に流れるパケットについては、ＡＣＴ・ＳＢＹ選択機能部１１３３から送信されたＡＣＴ情報を基にして、ＡＣＴ系サーバと接続されたポート方向のみにパケットを送信する。
【００２８】
このエンドポイント共有システム１１００にも見られるように、ネットワーク機器では、ＣＰＵをＡＣＴ系とＳＢＹ系の双方に配置して、これらの２つの系で同期をとる一方、片方の系のＣＰＵが配下のエンドポイントにアクセスしてデータの運用を行うことが望ましい。このため、ＡＣＴ系とＳＢＹ系の合計２個のＣＰＵとエンドポイントで構成するネットワーク機器の場合には、エンドポイントに対してＡＣＴ系のＣＰＵのみアクセス可能であればよい。しかしながら、障害が発生した時には、ＣＰＵの系切り替えを実施した後に、新しいＡＣＴ系のＣＰＵが、速やかにエンドポイントにアクセスできるための仕組みが必要となる。
【００２９】
既存のピーシーアイ（ＰＣＩ）の仕組みを用いる場合には、ＡＣＴ系のＣＰＵがエンドポイントを管理している状態から、障害発生により、ＳＢＹ系のＣＰＵに切り替えたとき、エンドポイントがマッピングされるＣＰＵメモリ空間が同一ではない。そこで、一般には、エンドポイントの物理的なリセットや設定データの再設定が必要となり、迅速な系の切り替えを実施することが困難になる。また、リセットや再設定処理の間、エンドポイントはデータ通信を行うことができない。この結果、ネットワーク機器の信頼性が低くなる。このため、信頼性が要求される通信機器では、エンドポイントに対するリセットやコンフィグレーション処理を実施することなく、ＣＰＵの切替処理が実現できることが望まれる。
【００３０】
以上説明した第２の関連技術では、汎用サーバ上に搭載されたＣＰＵを系の切り替えに使用している。サーバ上のＣＰＵは、通常、電源が投入された直後に、バイオス（ＢＩＯＳ：Basic Input/Output System）の指示に従ってＰＣＩｅ配下のエンドポイントを検索して、自動的にメモリ空間上にエンドポイントのマッピング処理を実施する。このため、ユーザがどのアドレス空間にエンドポイントを配置するかという制御は、たとえばバイオスの変更を行わない限りは不可能である。このため、物理的に異なるサーバ上に搭載された２個のＣＰＵが、同一のエンドポイントを同一のメモリ空間上にマッピングさせることは、困難となる。
【００３１】
ＰＣＩｅ（PCI Express）では、エンドポイントをＣＰＵのメモリ空間上にマッピングする場合に、ベースアドレス（Base Address）をエンドポイント１１２２のＰＣＩｅコンフィグレーションレジスタに対して設定し、メモリ空間における位置を確定させる。エンドポイントは設定されたベースアドレス情報に基づいたアドレス値が設定されたＰＣＩｅパケットのみを、自分が処理するＰＣＩｅパケットであると認識する。このため、２個のＣＰＵ間とのやり取りの際のエンドポイント１１２２のアドレス値は、ＰＣＩｅコンフィグレーションレジスタに設定されている値である必要がある。この結果、エンドポイント１１２２のＰＣＩｅコンフィグレーション情報を再設定しないで、ＣＰＵの切り替えを実施する場合は、エンドポイント１１２２へアクセスするアドレスをエンドポイント１１２２の前段階で同一空間上になるように、変換する機能が必要となる。
【００３２】
そこで、第２の関連技術では、電源投入直後のＡＣＴ系サーバとしての第０のサーバ１１１０のメモリ空間にエンドポイント１１２２をマッピングするようにしている。そして、第０のサーバ１１１０から各エンドポイント１１２２へのアクセスについては、アドレス情報をそのまま使用する。障害発生によりＡＣＴ系とＳＢＹ系の切り替えが発生したら、その後の電源投入直後のＳＢＹ系サーバとしての第１のサーバ１１１１から各エンドポイント１１２２のアクセスについては、アドレス変換を実施する。これにより、同一のエンドポイントに対して、２つのＣＰＵがアクセスする機能を実現する。
【先行技術文献】
【特許文献】
【００３３】
【特許文献１】特開２００７−１８８４４６号公報（第００１８段落〜第００２４段落、図２）
【発明の概要】
【発明が解決しようとする課題】
【００３４】
このような第２の関連技術を使用すると、エンドポイント１１２２を複数のサーバ１１１０、１１１１で共有する仕組みを実現可能となる。また、エンドポイント１１２２側の処理が増加した場合には、エンドポイント１１２２を増設することで、拡張性のあるシステム構成を実現することができる。
【００３５】
しかしながら、サーバ１１１０、１１１１側の負荷が増えた際、第２の関連技術を使用した場合には、サーバ１１１０、１１１１の数をこれに応じて増設する手法を採用することができない。サーバ１１１０、１１１１の数を増設する手法を採用すると、ＡＣＴ系のサーバ１１１０が増えてしまうことになるが、この場合、複数のＡＣＴ系サーバがエンドポイント１１２２にアクセスすることは不可能だからである。そこで、第２の関連技術を使用する手法では、サーバ１１１０、１１１１側の負荷が増加した際にこれらサーバの数を増やさず、サーバ自体の能力を向上させる対処方法を採用することになる。しかしながら、サーバ１１１０、１１１１自体の能力を向上させるには、自ずと限界がある。
【００３６】
また、この第２の関連技術では、ＦＣ（Fibre Channel）を使用する記憶装置を用いることで、複数のサーバがメモリを共有可能なシステムを構築することも提案した。これにより、ＰＣＩｅを用いて、複数のエンドポイントと複数のサーバを１つのシステムとして構成することが可能になる。
【００３７】
ところが、ＦＣを使用する記憶装置およびネットワーク機器は高価であり、かつスループットの向上が、イーサネット（登録商標）、インフィニバンド（infiniband）等の他のインタフェイス仕様よりも劣ることが欠点となる。また、ＰＣＩｅデータパケットを、ＦＣプロトコルでカプセル化し、サーバと記憶装置間で転送するため、プロトコル処理部にオーバヘッドが生じ、ＣＰＵ側の負荷が高くなり高速データ転送に影響が出ることが欠点と考えられる。
【００３８】
また、ＦＣを用いたシステムでは、一般的には記憶媒体としてハードディスク（ＨＤ）が用いられる。ハードディスクはデータの蓄積に対して機械的な構造が必要不可欠であり、電気信号のみでデータの蓄積が可能である一般的なメモリと比較して、リードおよびライト（Read/Wirte）ともにスピードが遅いことが欠点となる。このため、ハードディスクを用いた場合にはリードおよびライトの高速化のためには、複数のディスクをパラレルに動作させることが一般的となる。これによりデータの読み書きの高速化を実現可能であるものの、多数のハードディスクが必要となるため、ディスク容量を必要としないシステムでは、コスト的に不利となる。
【００３９】
そこで本発明の目的は、サーバと記憶装置をＰＣＩｅで接続し、複数のサーバの中の特定のサーバと統合エンドポイントの間のデータ転送の高速化を図ったエンドポイント共有システムおよびデータ転送方法を提供することにある。
【課題を解決するための手段】
【００４０】
本発明では、（イ）コンピュータ用拡張バスアーキテクチャとしてのＰＣＩ（Peripheral Component Interconnect）機能を代理する機能部としてのＰＣＩプロシキ（Proxy）機能部と、複数のエンドポイントとから構成された統合エンドポイントにおける所定のエンドポイントから現用系のサーバとしての主サーバにＰＣＩｅパケットを送信する統合エンドポイント側送信手段と、（ロ）この統合エンドポイント側送信手段の送信したＰＣＩｅパケットに格納されたデータを処理する拡張サーバを決定する拡張サーバ決定手段と、（ハ）この拡張サーバ決定手段で決定した拡張サーバのサーバ名を前記したＰＣＩｅパケットに挿入する拡張サーバ名挿入手段と、（ニ）この拡張サーバ名挿入手段でサーバ名を挿入したＰＣＩｅパケットを前記した主サーバから所定の記憶装置に送信する主サーバ側送信手段と、（ホ）この主サーバ側送信手段で送信したＰＣＩｅパケットを受信して前記した記憶装置内の１次共有メモリに書き込む１次共有メモリ書込手段と、（へ）この１次共有メモリ書込手段で前記した１次共有メモリに書き込んだＰＣＩｅパケットを、アクティブ系およびスタンバイ系の各サーバのそれぞれに個別に対応して設けられこれらのサーバとの間のデータの個別転送に使用する２次共有メモリのうちの前記した拡張サーバ決定手段で決定した２次共有メモリに転送する２次共有メモリ転送手段とをエンドポイント共有システムが具備する。
【００４１】
また、本発明では、（イ）コンピュータ用拡張バスアーキテクチャとしてのＰＣＩ（Peripheral Component Interconnect）機能を代理する機能部としてのＰＣＩプロシキ（Proxy）機能部と、複数のエンドポイントとから構成された統合エンドポイントにおける特定のエンドポイントに対して任意の主サーバおよび拡張サーバがデータの送信を行うときそのＰＣＩｅパケットに前記した特定のエンドポイントを表わす識別情報を挿入する拡張サーバ側挿入手段と、（ロ）この拡張サーバ側挿入手段で前記した識別情報を挿入したＰＣＩｅパケットを、それぞれの主サーバおよび拡張サーバに個別に対応して設けられこれらのサーバとの間のデータの個別転送に使用する複数の２次共有メモリのうちの送信元の前記した任意の主サーバおよび拡張サーバに対応する２次共有メモリに格納する２次共有メモリ格納手段と、（ハ）この２次共有メモリ格納手段が前記した２次共有メモリのいずれかにＰＣＩｅパケットを格納したとき前記した識別情報を読み出してこの識別情報から判別されるエンドポイント宛にＰＣＩｅパケットを送信するＰＣＩｅパケット送信手段とをエンドポイント共有システムが具備する。
【００４２】
更に本発明では、（イ）コンピュータ用拡張バスアーキテクチャとしてのＰＣＩ（Peripheral Component Interconnect）機能を代理する機能部としてのＰＣＩプロシキ（Proxy）機能部と、複数のエンドポイントとから構成された統合エンドポイントにおける所定のエンドポイントから現用系のサーバとしての主サーバにＰＣＩｅパケットを送信する統合エンドポイント側送信ステップと、（ロ）この統合エンドポイント側送信ステップで送信したＰＣＩｅパケットを受信した主サーバがこのＰＣＩｅパケットに格納されたデータを処理する拡張サーバを決定する拡張サーバ決定ステップと、（ハ）この拡張サーバ決定ステップで決定した拡張サーバのサーバ名を前記したＰＣＩｅパケットに挿入する拡張サーバ名挿入ステップと、（ニ）この拡張サーバ名挿入ステップでサーバ名を挿入したＰＣＩｅパケットを前記した主サーバから所定の記憶装置に送信する主サーバ側送信ステップと、（ホ）この主サーバ側送信ステップで送信したＰＣＩｅパケットを受信して前記した記憶装置内の１次共有メモリに書き込む１次共有メモリ書込ステップと、（へ）この１次共有メモリ書込ステップで前記した１次共有メモリに書き込んだＰＣＩｅパケットを、アクティブ系およびスタンバイ系の各サーバのそれぞれに個別に対応して設けられこれらのサーバとの間のデータの個別転送に使用する２次共有メモリのうちの前記した拡張サーバ決定ステップで決定した２次共有メモリに転送する２次共有メモリ転送ステップとをデータ転送方法が具備する。
【００４３】
更にまた本発明では、（イ）コンピュータ用拡張バスアーキテクチャとしてのＰＣＩ（Peripheral Component Interconnect）機能を代理する機能部としてのＰＣＩプロシキ（Proxy）機能部と、複数のエンドポイントとから構成された統合エンドポイントにおける特定のエンドポイントに対してデータの送信を行う任意の主サーバおよび拡張サーバがＰＣＩｅパケットに前記した特定のエンドポイントを表わす識別情報を挿入する拡張サーバ側挿入ステップと、（ロ）この拡張サーバ側挿入ステップで前記した識別情報を挿入したＰＣＩｅパケットを、それぞれの主サーバおよび拡張サーバに個別に対応して設けられこれらのサーバとの間のデータの個別転送に使用する複数の２次共有メモリのうちの自サーバに対応する２次共有メモリに格納する２次共有メモリ格納ステップと、（ハ）この２次共有メモリ格納ステップで前記した２次共有メモリのいずれかにＰＣＩｅパケットが格納されたとき前記した識別情報を読み出してこの識別情報から判別されるエンドポイント宛にＰＣＩｅパケットを送信するＰＣＩｅパケット送信ステップとをデータ転送方法が具備する。
【発明の効果】
【００４４】
以上説明したように本発明によれば、統合エンドポイント側から送出するＰＣＩｅパケットを記憶装置に送り、ここで主サーバ側からの転送先のサーバの選択結果の組み込み処理および転送先のサーバにデータを渡すための２次共有メモリへのデータの格納処理を行うことにした。これにより、主サーバに搭載されているＣＰＵの負荷を軽減することができる。
【００４５】
また、本発明によればサーバからエンドポイント側にデータを転送する場合、ＰＣＩｅパケットに転送先のエンドポイントの識別情報を組み込んで複数の２次共有メモリのうちの送信元のサーバに対応する２次共有メモリに格納することにした。これにより、サーバに搭載されているＣＰＵの負荷を軽減して宛先のエンドポイントにＰＣＩｅパケットを転送することができる。
【図面の簡単な説明】
【００４６】
【図１】本発明のエンドポイント共有システムのクレーム対応図である。
【図２】本発明の他のエンドポイント共有システムのクレーム対応図である。
【図３】本発明のデータ転送方法のクレーム対応図である。
【図４】本発明の他のデータ転送方法のクレーム対応図である。
【図５】本発明の実施の形態によるエンドポイント共有システムを表わしたシステム構成図である。
【図６】本実施の形態におけるサーバの電源投入後のアドレス変換テーブル作成までのコンフィグレーション処理の様子を示した説明図である。
【図７】本実施の形態におけるベースアドレスの概念を示した説明図である。
【図８】本実施の形態におけるＡＣＴ系サーバ群と、ＳＢＹ系サーバ群のメモリ空間を対比して示した説明図である。
【図９】本実施の形態におけるＡＣＴ系サーバ群を構成する第０−０のサーバによるデータのリードおよびライトの処理を表わした説明図である。
【図１０】本実施の形態におけるＳＢＹ系サーバ群を構成する第１−０のサーバによるデータのリードおよびライトの処理を表わした説明図である。
【図１１】本実施の形態におけるＡＣＴ系とＳＢＹ系の切替動作を示した説明図である。
【図１２】本実施の形態におけるサーバ側のソフトウェア処理の様子を表わした説明図である。
【図１３】本実施の形態における記憶装置を介して、サーバがエンドポイントに対してアクセスを行う様子を表わした説明図である。
【図１４】本実施の形態における第１の統合エンドポイントからサーバへのデータ取り込みの様子を示した説明図である。
【図１５】本実施の形態のエンドポイント共有システムの構成を記憶装置を中心に具体化して示したシステム構成図である。
【図１６】本実施の形態における各サーバと記憶装置の接続の状態を一般化して表わしたシステム構成図である。
【図１７】本実施の形態のエンドポイント共有システムにおけるデータの転送処理の様子を表わした説明図である。
【図１８】本発明の第１の変形例におけるエンドポイント共有システムの構成を表わしたシステム構成図である。
【図１９】本発明の第２の変形例として統合エンドポイントと各系の拡張サーバが共にＮ台となったエンドポイント共有システムを表わしたシステム構成図である。
【図２０】第１の関連技術におけるエンドポイント共有システムの構成の概要を表わしたシステム構成図である。
【図２１】第２の関連技術におけるエンドポイント共有システムの構成の概要を示したシステム構成図である。
【発明を実施するための形態】
【００４７】
図１は、本発明のエンドポイント共有システムのクレーム対応図を示したものである。本発明のエンドポイント共有システム１０は、統合エンドポイント側送信手段１１と、拡張サーバ決定手段１２と、拡張サーバ名挿入手段１３と、主サーバ側送信手段１４と、１次共有メモリ書込手段１５と、２次共有メモリ転送手段１６を備えている。ここで、統合エンドポイント側送信手段１１は、統合エンドポイントにおける所定のエンドポイントから現用系のサーバとしての主サーバにＰＣＩｅパケットを送信する。統合エンドポイントは、コンピュータ用拡張バスアーキテクチャとしてのＰＣＩ（Peripheral Component Interconnect）機能を代理する機能部としてのＰＣＩプロシキ（Proxy）機能部と、複数のエンドポイントとから構成されている。拡張サーバ決定手段１２は、統合エンドポイント側送信手段１１の送信したＰＣＩｅパケットに格納されたデータを処理する拡張サーバを決定する。拡張サーバ名挿入手段１３は、拡張サーバ決定手段１２で決定した拡張サーバのサーバ名を前記したＰＣＩｅパケットに挿入する。主サーバ側送信手段１４は、拡張サーバ名挿入手段１３でサーバ名を挿入したＰＣＩｅパケットを前記した主サーバから所定の記憶装置に送信する。１次共有メモリ書込手段１５は、主サーバ側送信手段１４で送信したＰＣＩｅパケットを受信して前記した記憶装置内の１次共有メモリに書き込む。２次共有メモリ転送手段１６は、ＰＣＩｅパケットを、アクティブ系およびスタンバイ系の各サーバのそれぞれに個別に対応して設けられこれらのサーバとの間のデータの個別転送に使用する２次共有メモリのうちの前記した拡張サーバ決定手段１２で決定した２次共有メモリに転送する。このＰＣＩｅパケットは、１次共有メモリ書込手段１５で前記した１次共有メモリに書き込んだパケットである。
【００４８】
図２は、本発明の他のエンドポイント共有システムのクレーム対応図を示したものである。本発明の他のエンドポイント共有システム２０は、拡張サーバ側挿入手段２１と、２次共有メモリ格納手段２２と、ＰＣＩｅパケット送信手段２３を備えている。ここで、拡張サーバ側挿入手段２１は、統合エンドポイントにおける特定のエンドポイントに対して任意の主サーバおよび拡張サーバがデータの送信を行うときそのＰＣＩｅパケットに前記した特定のエンドポイントを表わす識別情報を挿入する。統合エンドポイントは、コンピュータ用拡張バスアーキテクチャとしてのＰＣＩ（Peripheral Component Interconnect）機能を代理する機能部としてのＰＣＩプロシキ（Proxy）機能部と、複数のエンドポイントとから構成されている。２次共有メモリ格納手段２２は、ＰＣＩｅパケットを、それぞれの主サーバおよび拡張サーバに個別に対応して設けられこれらのサーバとの間のデータの個別転送に使用する複数の２次共有メモリのうちの送信元の前記した任意の主サーバおよび拡張サーバに対応する２次共有メモリに格納する。このＰＣＩｅパケットは、拡張サーバ側挿入手段２１で前記した識別情報を挿入したパケットである。ＰＣＩｅパケット送信手段２３は、２次共有メモリ格納手段２２が前記した２次共有メモリのいずれかにＰＣＩｅパケットを格納したとき前記した識別情報を読み出してこの識別情報から判別されるエンドポイント宛にＰＣＩｅパケットを送信する。
【００４９】
図３は、本発明のデータ転送方法のクレーム対応図を示したものである。本発明のデータ転送方法３０は、統合エンドポイント側送信ステップ３１と、拡張サーバ決定ステップ３２と、拡張サーバ名挿入ステップ３３と、主サーバ側送信ステップ３４と、１次共有メモリ書込ステップ３５と、２次共有メモリ転送ステップ３６を備えている。ここで、統合エンドポイント側送信ステップ３１では、統合エンドポイントにおける所定のエンドポイントから現用系のサーバとしての主サーバにＰＣＩｅパケットを送信する。統合エンドポイントは、コンピュータ用拡張バスアーキテクチャとしてのＰＣＩ（Peripheral Component Interconnect）機能を代理する機能部としてのＰＣＩプロシキ（Proxy）機能部と、複数のエンドポイントとから構成されている。拡張サーバ決定ステップ３２では、統合エンドポイント側送信ステップ３１で送信したＰＣＩｅパケットを受信した主サーバがこのＰＣＩｅパケットに格納されたデータを処理する拡張サーバを決定する。拡張サーバ名挿入ステップ３３では、拡張サーバ決定ステップ３２で決定した拡張サーバのサーバ名を前記したＰＣＩｅパケットに挿入する。主サーバ側送信ステップ３４では、拡張サーバ名挿入ステップ３３でサーバ名を挿入したＰＣＩｅパケットを前記した主サーバから所定の記憶装置に送信する。１次共有メモリ書込ステップ３５では、主サーバ側送信ステップ３４で送信したＰＣＩｅパケットを受信して前記した記憶装置内の１次共有メモリに書き込む。２次共有メモリ転送ステップ３６では、ＰＣＩｅパケットを、アクティブ系およびスタンバイ系の各サーバのそれぞれに個別に対応して設けられこれらのサーバとの間のデータの個別転送に使用する２次共有メモリのうちの前記した拡張サーバ決定ステップ３２で決定した２次共有メモリに転送する。このＰＣＩｅパケットは、１次共有メモリ書込ステップ３５で前記した１次共有メモリに書き込んだものである。
【００５０】
図４は、本発明のデータ転送方法のクレーム対応図を示したものである。本発明のデータ転送方法４０は、拡張サーバ側挿入ステップ４１と、２次共有メモリ格納ステップ４２と、ＰＣＩｅパケット送信ステップ４３とを備えている。ここで、拡張サーバ側挿入ステップ４１では、統合エンドポイントにおける特定のエンドポイントに対してデータの送信を行う任意の主サーバおよび拡張サーバがＰＣＩｅパケットに前記した特定のエンドポイントを表わす識別情報を挿入する。統合エンドポイントは、コンピュータ用拡張バスアーキテクチャとしてのＰＣＩ（Peripheral Component Interconnect）機能を代理する機能部としてのＰＣＩプロシキ（Proxy）機能部と、複数のエンドポイントとから構成されている。２次共有メモリ格納ステップ４２では、拡張サーバ側挿入ステップ４１で前記した識別情報を挿入したＰＣＩｅパケットを、それぞれの主サーバおよび拡張サーバに個別に対応して設けられこれらのサーバとの間のデータの個別転送に使用する複数の２次共有メモリのうちの自サーバに対応する２次共有メモリに格納する。ＰＣＩｅパケット送信ステップ４３では、２次共有メモリ格納ステップ４２で前記した２次共有メモリのいずれかにＰＣＩｅパケットが格納されたとき前記した識別情報を読み出してこの識別情報から判別されるエンドポイント宛にＰＣＩｅパケットを送信する。
【００５１】
＜発明の実施の形態＞
【００５２】
次に本発明の実施の形態を説明する。
【００５３】
図５は、本発明の実施の形態によるエンドポイント共有システムを表わしたものである。このエンドポイント共有システム１００は、第１および第２の統合エンドポイント１０１1、１０１2を備えている。また、エンドポイント共有システム１００はＡＣＴ（active）系サーバ群として第０−０のサーバ（Ｓｅｒｖｅｒ＃０−０）１０３と、第０−１のサーバ（Ｓｅｒｖｅｒ＃０−１）１０４1、およびＳＢＹ（standby）系サーバ群としての第１−０のサーバ（Ｓｅｒｖｅｒ＃１−０）１０５と、第１−１のサーバ（Ｓｅｒｖｅｒ＃１−１）１０６1を備えている。更にエンドポイント共有システム１００は、記憶装置１０７を備えている。記憶装置１０７と、第０−０、第０−１、第１−０および第１−１の各サーバ１０３〜１０６1は、直接接続される他、ＬＡＮ（Local Area Network）１０８を介して接続されている。第１の統合エンドポイント１０１1と、第０−０のサーバ１０３および第１−０のサーバ１０５は直接接続されている。第２の統合エンドポイント１０１2と、第０−０のサーバ１０３および第１−０のサーバ１０５も同様に直接接続されている。
【００５４】
第０−０のサーバ１０３および第１−０のサーバ１０５は、本明細書で主サーバと定義するもので、第１の統合エンドポイント１０１1における第０〜第Ｎのエンドポイント（ＥＰ＃０〜ＥＰ＃Ｎ）１１１0〜１１１Nへのアクセス機能を持っている。これに対して第０−１のサーバ１０４1および第１−１のサーバ１０６1は、本明細書で拡張サーバと定義するもので、第０〜第Ｎのエンドポイント（ＥＰ＃０〜ＥＰ＃Ｎ）１１１0〜１１１Nへのアクセス機能を持っていない。
【００５５】
本実施の形態ではＡＣＴ系サーバ群の中に拡張サーバとして１台の第０−１のサーバ１０４1が配置され、ＳＢＹ系サーバ群の中に拡張サーバとして１台の第１−１のサーバ１０６1が配置されている。ＡＣＴ系サーバ群あるいはＳＢＹ系サーバ群に複数台ずつの拡張サーバが配置されるようになっていてもよい。
【００５６】
第０−０、第０−１、第１−０および第１−１の各サーバ１０３〜１０６1と第１および第２の統合エンドポイント１０１1、１０１2は、それぞれ物理的に分離されている。主サーバとしての第０−０のサーバ１０３と第１および第２の統合エンドポイント１０１1、１０１2の間、および同じく主サーバとしての第１−０のサーバ１０５と第１および第２の統合エンドポイント１０１1、１０１2の間は、ＰＣＩｅケーブルを用いて接続されている。ここで「ＰＣＩｅ」は、「ＰＣＩ（Peripheral Component Interconnect）Ｅｘｐｒｅｓｓ」を略して表記したものである。
【００５７】
主サーバとしての第０−０のサーバ１０３は、第１の統合エンドポイント１０１1とＰＣＩｅケーブルを用いて接続するためのＰＣＩｅ  ＮＩＣカード（Network Interface Card）（ＰＣＩｅ  ＮＩＣ＃００１）１２１を実装している。また、第０−０のサーバ１０３は、第２の統合エンドポイント１０１2とＰＣＩｅケーブルを用いて接続するためのＰＣＩｅ  ＮＩＣカード（ＰＣＩｅ  ＮＩＣ＃００２）１２２を実装している。更に第０−０のサーバ１０３は、第１および第２の統合エンドポイント１０１1、１０１2とのデータのやり取りを行うインタフェイスとしてＰＣＩｅ  ＮＩＣカード（ＰＣＩｅ  ＮＩＣ＃００Ｅ）１２３と、拡張サーバ間とのデータのやり取りに用いるＰＣＩｅ  ＮＩＣカード（ＰＣＩｅ  ＮＩＣ＃００Ｓ）１２４を有する。
【００５８】
同様に、主サーバとしての第１−０のサーバ１０５は、第１の統合エンドポイント１０１1とＰＣＩｅケーブルを用いて接続するためのＰＣＩｅ  ＮＩＣカード（ＰＣＩｅ  ＮＩＣ＃１０１）１２５を実装している。また、第１−０のサーバ１０５は、第２の統合エンドポイント１０１2とＰＣＩｅケーブルを用いて接続するためのＰＣＩｅ  ＮＩＣカード（ＰＣＩｅ  ＮＩＣ＃１０２）１２６を実装している。更に第１−０のサーバ１０５は、第１および第２の統合エンドポイント１０１1、１０１2とのデータのやり取りを行うインタフェイスとしてＰＣＩｅ  ＮＩＣカード（ＰＣＩｅ  ＮＩＣ＃１０Ｅ）１２７と、拡張サーバ間とのデータのやり取りに用いるＰＣＩｅ  ＮＩＣカード（ＰＣＩｅ  ＮＩＣ＃１０Ｓ）１２８を有する。
【００５９】
一方、拡張サーバとしての第０−１および第１−１のサーバ１０４1、１０６1は記憶装置１０７と接続するために、１系統のＰＣＩｅ  ＮＩＣカードを有する。すなわち第０−１のサーバ１０４1は、サーバ間のデータのやり取りに用いるＰＣＩｅ  ＮＩＣカード（ＰＣＩｅ  ＮＩＣ＃０１Ｓ）１３１を有する。第１−１のサーバ１０６1は、サーバ間のデータのやり取りに用いるＰＣＩｅ  ＮＩＣカード（ＰＣＩｅ  ＮＩＣ＃１１Ｓ）１３２を有する。
【００６０】
次に第１および第２の統合エンドポイント１０１1、１０１2について説明する。ただし第２の統合エンドポイント１０１2は第１の統合エンドポイント１０１1と同一の構成となっているので、その具体的な構成の図示および説明は省略する。
【００６１】
第１の統合エンドポイント１０１1は、前記した第０〜第Ｎのエンドポイント（ＥＰ＃０〜ＥＰ＃Ｎ）１１１0〜１１１NとＰＣＩプロシキ（Proxy）機能部１４１によって構成されている。ＰＣＩプロシキ機能部１４１と第０〜第Ｎのエンドポイント１１１0〜１１１Nの間は、それぞれＰＣＩｅバスを用いて接続されている。
【００６２】
ＰＣＩプロシキ機能部１４１は、コンピュータ用拡張バスアーキテクチャとしてのＰＣＩ（Peripheral Component Interconnect）機能を代理する機能部である。ＰＣＩプロシキ機能部１４１は、図示しないがＣＰＵと、このＣＰＵが実行する制御プログラムを格納した同じく図示しないＲＯＭ（Read Only Memory）等の記録媒体を有しており、次の各部を備えている。
【００６３】
（ａ）第０のポート１５１0
第０−０のサーバ１０３とピーシーアイエクスプレスケーブル１６１を介して接続される。
（ｂ）第１のポート１５１1
第１−０のサーバ１０５とピーシーアイエクスプレスケーブル１６２を介して接続される。
（ｃ）ＡＣＴ(active）・ＳＢＹ(standby）選択機能部１５２
第０−０のサーバ１０３および第０−１のサーバ１０４1からなるＡＣＴ系サーバ群と、第１−０のサーバ１０５と、第１−１のサーバ１０６1からなるＳＢＹ系サーバ群の一方をＡＣＴ（現用）系に、他方をＳＢＹ（待機）系に選択する。
（ｄ）第０の仮想ＰＣＩｅコンフィグ（Configuration）レジスタ１５４0
各エンドポイント１１１のピーシーアイエクスプレスコンフィグレジスタ情報を格納する。
（ｅ）第１の仮想ＰＣＩｅコンフィグ（Configuration）レジスタ１５４1
各エンドポイント１１１のピーシーアイエクスプレスコンフィグレジスタ情報を格納する。
（ｆ）コンフィグ（Configuration）制御部１５５
第０の仮想ＰＣＩｅコンフィグレジスタ１５４0および第１の仮想ＰＣＩｅコンフィグレジスタ１５４1を管理する。
（ｇ）アドレス変換テーブル１５６
ＡＣＴ系サーバ群とＳＢＹ系サーバ群のメモリ空間の差分情報としてのアドレス空間差分情報を保持する。
（ｈ）アドレス変換部１５７
ＡＣＴ系サーバ群とＳＢＹ系サーバ群のメモリ空間へのアクセスが同一のアドレスになるように、アドレスを変換する。
（ｉ）アドレス変換・振り分け機能部１５８
ＡＣＴ系サーバ群とＳＢＹ系サーバ群のうちのＡＣＴ系のサーバと接続されたポートとの間でピーシーアイエクスプレスパケットを振り分ける。
（ｊ）第０〜第ＮのＰＣＩｅポート（Port）１５９0〜１５９N
第０〜第Ｎのエンドポイント１１１0〜１１１Nをそれぞれ対応して接続する。
【００６４】
ＰＣＩプロシキ機能部１４１を更に具体的に説明する。第０のポート１５１0および第１のポート１５１1は、ピーシーアイエクスプレスパケットで転送されるＡＣＴ制御信号を識別する。そして、ＡＣＴ切替指示がＡＣＴ系サーバ群もしくはＳＢＹ系サーバ群から送付された場合には、ＡＣＴ・ＳＢＹ選択機能部１５２に対してＡＣＴ・ＳＢＹ切替指示を出す。ＡＣＴ・ＳＢＹ選択機能部１５２は、アドレス変換・振り分け機能部１５８に対して、ＡＣＴ系のサーバがＡＣＴ系サーバ群もしくはＳＢＹ系サーバ群を示す信号を送出する。アドレス変換・振り分け機能部１５８は、ＡＣＴ系のサーバと接続されたポートとの接続を維持し、ＳＢＹ系のポートとのデータを交換しない。
【００６５】
コンフィグ制御部１５５は、第０〜第Ｎのエンドポイント１１１0〜１１１Nが保持する、ピーシーアイエクスプレスコンフィグレーションレジスタ（図示せず）を制御する機能を有する。また、第０の仮想ＰＣＩｅコンフィグ（Configuration）レジスタ１５４0および第１の仮想ＰＣＩｅコンフィグ（Configuration）レジスタ１５４1に対して、各エンドポイント１１１のピーシーアイエクスプレスコンフィグレジスタ情報の内容を反映させる機能を有する。ＡＣＴ系サーバ群とＳＢＹ系サーバ群は、第０の仮想ＰＣＩｅコンフィグレジスタ１５４0および第１の仮想ＰＣＩｅコンフィグレジスタ１５４1に対して、ピーシーアイエクスプレスコンフィグレーション情報のリード（Read）およびライト（Write）を行う。このため、第０−０のサーバ１０３、第０−１のサーバ１０４1、第１−０のサーバ１０５および第１−１のサーバ１０６1から各エンドポイント１１１のピーシーアイエクスプレスコンフィグレジスタレジスタが直接制御されることはない。各エンドポイント１１１のピーシーアイエクスプレスコンフィグレジスタレジスタは、コンフィグ制御部１５５を経由してアクセスする。
【００６６】
また、コンフィグ制御部１５５は、第０の仮想ＰＣＩｅコンフィグレジスタ１５４0および第１の仮想ＰＣＩｅコンフィグレジスタ１５４1に設定されたピーシーアイエクスプレスコンフィグレーションレジスタ情報から、ＡＣＴ系サーバ群とＳＢＹ系サーバ群が保持しているピーシーアイエクスプレスメモリ空間マップ情報を取得する。そして、第０−０のサーバ１０３、第０−１のサーバ１０４1、第１−０のサーバ１０５および第１−１のサーバ１０６1がメモリ空間上に各エンドポイント１１１をどのように配置したかを認識する。差分がある場合には、ＡＣＴ系サーバ群のメモリ空間に対して、ＳＢＹ系サーバ群のメモリ空間の差分を計算し、得られた差分情報をアドレス変換テーブル１５６に転送する。
【００６７】
アドレス変換部１５７は、アドレス変換テーブル１５６から送信されるＡＣＴ系サーバ群とＳＢＹ系サーバ群についてのアドレス空間差分情報を取得する。そして、ＳＢＹ系サーバ群のメモリ空間へのアクセスをＡＣＴ系サーバ群のメモリ空間へのアクセスと同一のアドレスになるように、アドレス変換処理を実施する。また、ＳＢＹ系サーバ群と各エンドポイント１１１の間でのアクセスの際に、ピーシーアイエクスプレスパケットを交換する。
【００６８】
アドレス変換・振り分け機能部１５８は、各エンドポイント１１１に対するピーシーアイエクスプレスパケットの振り分けを、ピーシーアイエクスプレスパケットヘッダ内に格納されたアドレス情報を基にして実施する。各エンドポイント１１１からサーバ方向に流れるパケットは、ＡＣＴ・ＳＢＹ選択機能部１５２から送信されるＡＣＴ情報を基にして、ＡＣＴ系サーバ群と接続されたポート方向にのみにパケットを送信する。
【００６９】
次に、記憶装置１０７について説明する。記憶装置１０７は、ＬＡＮ１０８を介して第０−０のサーバ１０３、第０−１のサーバ１０４1、第１−０のサーバ１０５および第１−１のサーバ１０６1と接続されている。これにより、記憶装置１０７に格納されたデータを、第０−０のサーバ１０３、第０−１のサーバ１０４1、第１−０のサーバ１０５および第１−１のサーバ１０６1が共有可能となる。
【００７０】
本実施の形態の記憶装置１０７は、ＤＲＡＭ（Dynamic Random Access Memory）、ＦＲＡＭ（FeRAM）等の汎用の半導体メモリを用いる。また、第０−０のサーバ１０３、第０−１のサーバ１０４1、第１−０のサーバ１０５および第１−１のサーバ１０６1と記憶装置１０７の間のデータ転送にはＰＣＩｅを用いる。これらの部品、データ転送規格は、汎用品および標準化された規格であり、安価に市場に出回っているものを使用可能である。
【００７１】
第０〜第Ｎのエンドポイント１１１0〜１１１Nにアクセス可能なサーバは、第０−０のサーバ１０３および第１−０のサーバ１０５のみである。第０−１のサーバ１０４1および第１−１のサーバ１０６1がエンドポイント１１１にアクセスする場合には、対象となるデータを記憶装置１０７に一旦転送する。そして、第０−０のサーバ１０３あるいは第１−０のサーバ１０５のうちの該当するものを経由してエンドポイント１１１にアクセスを実施する。
【００７２】
＜動作説明＞
次に、以上のような構成のエンドポイント共有システム１００の動作を説明する。
【００７３】
第０−０のサーバ１０３、第０−１のサーバ１０４1、第１−０のサーバ１０５および第１−１のサーバ１０６1は、図示しないがＣＰＵを搭載している。これらのサーバに搭載されたＣＰＵから第０〜第Ｎのエンドポイント１１１0〜１１１Nに対するピーシーアイエクスプレスアクセスは、大別すると、ピーシーアイエクスプレスコンフィグレーションレジスタ（コンフィグレジスタ）へのアクセスと、実データのアクセスの２種類が存在する。本実施の形態のエンドポイント共有システム１００では、ピーシーアイエクスプレスコンフィグレーションレジスタへのアクセスはコンフィグ制御部１５５が中心となって処理を実行する。また、実データのアクセスは、アドレス変換部１５７と、アドレス変換・振り分け機能部１５８が中心となって、これらの処理を実行する。エンドポイント共有システム１００では、ピーシーアイエクスプレスコンフィグレーションレジスタへのアクセスを、電源投入時に実行する。ピーシーアイエクスプレスコンフィグレーションレジスタが一旦設定された後は、第０−０のサーバ１０３、第０−１のサーバ１０４1、第１−０のサーバ１０５および第１−１のサーバ１０６1に切り替えが発生しても設定変更が行われない。
【００７４】
＜コンフィグレーション処理＞
【００７５】
図６は、サーバの電源投入後のアドレス変換テーブル作成までのコンフィグレーション処理の様子を示したものである。図５と共に説明する。
【００７６】
エンドポイント１１１へのコンフィグレーションを行うのは、第０−０のサーバ１０３と第１−０のサーバ１０５である。汎用サーバでは、その電源投入直後に、ピーシーアイエクスプレスバス配下のエンドポイントを検索し、ＰＣＩメモリ空間上にエンドポイントのマッピングを行う。本実施の形態のエンドポイント共有システム１００では、第１の統合エンドポイント１０１1が第０−０のサーバ１０３（「Ｓｅｒｖｅｒ＃０−０）と第１−０のサーバ１０５（Ｓｅｒｖｅｒ＃１−０）からのピーシーアイエクスプレスコンフィグレジスタへのアクセスに対して、代理で応答する機能を有する。これにより、第０−０のサーバ１０３あるいは第１−０のサーバ１０５が第０〜第Ｎのエンドポイント１１１0〜１１１Nをメモリ空間上にマッピングすることを可能にする。
【００７７】
これを具体的に説明する。図６に示すように第０−０のサーバ１０３と第１−０のサーバ１０５の電源がある時刻ｔ1にオン（On）になったとする。コンフィグ制御部１５５は、第１の統合エンドポイント１０１1に接続された第０〜第Ｎのエンドポイント１１１0〜１１１Nのピーシーアイエクスプレスコンフィグレーション空間を、第０−０のサーバ１０３あるいは第１−０のサーバ１０５に代わってリード（Read）する（ステップＳ２０１）。図６では、第Ｘのエンドポイント１１１Xを「ＥＰ＃Ｘ」（ただし、Ｘは０〜Ｎの間の任意の整数。）と簡略化して表記している。以下の図でも同様である。
【００７８】
図６に示した例では、まず時刻ｔ2に第０のエンドポイント１１１0（「ＥＰ＃０」）がリードされ、続いて第１のエンドポイント１１１1（「ＥＰ＃１」）がリードされる。以下同様にして、第Ｎのエンドポイント１１１N（「ＥＰ＃Ｎ」）までリードが実行される。
【００７９】
コンフィグ制御部１５５は、このステップＳ２０１によるリードした結果を、第０および第１の仮想ＰＣＩｅコンフィグレジスタ１５４0、１５４1に反映させる。これにより、第０−０のサーバ１０３と第１−０のサーバ１０５が、第０〜第Ｎのエンドポイント１１１0〜１１１Nのピーシーアイエクスプレスコンフィグレーションレジスタの内容を、コンフィグ制御部１５５経由でリードすることが可能になる。
【００８０】
ところで、時刻ｔ1の電源投入時にＡＣＴ（active）系サーバ群が現用系に設定されているとする。また、これを基にして第Ｎのエンドポイント１１１N（「ＥＰ＃Ｎ」）までのリードが終了した後の時刻ｔ3に第０のポート１５１0がＡＣＴの状態で、第１のポート１５１1がＳＢＹの状態であるとする。時刻ｔ3以後における第０−０のサーバ１０３と第１の統合エンドポイント１０１1の間でのコンフィグレーションデータの処理の様子を、図６ではステップＳ２０２として一括して示している。また、図６では、この場合における第１−０のサーバ１０５と第１の統合エンドポイント１０１1の間でのコンフィグレーションデータの処理の様子を、ステップＳ２０３として一括して示している。
【００８１】
最初に、ＡＣＴ系の第０−０のサーバ１０３と第１の統合エンドポイント１０１1の間で行われるステップＳ２０２の処理について説明する。第０−０のサーバ１０３は、まず第０の仮想ＰＣＩｅコンフィグレジスタ１５４0に格納された第０のエンドポイント１１１0（「ＥＰ＃０」）の内容をリードし、第０のエンドポイント１１１0に書き込むコンフィグレーションデータを第０の仮想ＰＣＩｅコンフィグレジスタ１５４0にライトする。コンフィグ制御部１５５は、第０−０のサーバ１０３から第０の仮想ＰＣＩｅコンフィグレジスタ１５４0にデータがライトされると、このコンフィグレーションデータを第０のＰＣＩｅポート１５９0を経由して、第０のエンドポイント１１１0に対してライトを実施する。この第０のエンドポイント１１１0のピーシーアイエクスプレスコンフィグレーションレジスタへのライトは、図６で時刻ｔ4に行われている。
【００８２】
同様に、第０−０のサーバ１０３は、第０の仮想ＰＣＩｅコンフィグレジスタ１５４0に格納された第１のエンドポイント１１１1（「ＥＰ＃１」）の内容をリードし、第１のエンドポイント１１１1に書き込むコンフィグレーションデータを第０の仮想ＰＣＩｅコンフィグレジスタ１５４0にライトする。コンフィグ制御部１５５は、第０−０のサーバ１０３から第０の仮想ＰＣＩｅコンフィグレジスタ１５４0にデータがライトされると、このコンフィグレーションデータを第１のＰＣＩｅポート１５９1を経由して、第１のエンドポイント１１１1に対してライトを実施する。
【００８３】
以下同様にして、第０−０のサーバ１０３は、第０の仮想ＰＣＩｅコンフィグレジスタ１５４0に格納された第２のエンドポイント１１１2（「ＥＰ＃２」（図示せず））以降の処理を順に行う。そして、第０の仮想ＰＣＩｅコンフィグレジスタ１５４0に格納された第Ｎのエンドポイント１１１N（「ＥＰ＃Ｎ」）の内容をリードすると、第Ｎのエンドポイントに書き込むコンフィグレーションデータを第０の仮想ＰＣＩｅコンフィグレジスタ１５４0にライトする。コンフィグ制御部１５５は、第０−０のサーバ１０３から第０の仮想ＰＣＩｅコンフィグレジスタ１５４0にデータがライトされると、このコンフィグレーションデータを第ＮのＰＣＩｅポート１５９Nを経由して、第Ｎのエンドポイント１１１Nに対してライトを実施する。
【００８４】
次に、ＳＢＹ系の第１−０のサーバ１０５と第１の統合エンドポイント１０１1の間で行われるステップＳ２０３の処理について説明する。第１−０のサーバ１０５は、まず第１の仮想ＰＣＩｅコンフィグレジスタ１５４1に格納された第０のエンドポイント１１１0（「ＥＰ＃０」）の内容をリードし、第０のエンドポイントに書き込むコンフィグレーションデータを第１の仮想ＰＣＩｅコンフィグレジスタ１５４1にライトする。しかしながら、この場合、コンフィグ制御部１５５は、代理で第０のエンドポイント１１１0に対してライトを実施することはない。
【００８５】
以下同様にして、第１−０のサーバ１０５は、第１の仮想ＰＣＩｅコンフィグレジスタ１５４0に格納された第１のエンドポイント１１１1（「ＥＰ＃１」）以降の処理を順に行う。そして、第１の仮想ＰＣＩｅコンフィグレジスタ１５４1に格納された第Ｎのエンドポイント１１１N（「ＥＰ＃Ｎ」）の内容をリードすると、第Ｎのエンドポイントに書き込むコンフィグレーションデータを第１の仮想ＰＣＩｅコンフィグレジスタ１５４1にライトする。しかしながら、この場合も、コンフィグ制御部１５５は、代理で第Ｎのエンドポイント１１１Nに対してライトを実施することはない。
【００８６】
以上説明したように、電源投入後は、第０−０のサーバ１０３が現用系サーバとして固定されている。この状態で、第１の統合エンドポイント１０１1は、第０−０のサーバ１０３からのピーシーアイエクスプレスコンフィグレーションに対するリードおよびライト処理のみ、第０〜第Ｎのエンドポイント１１１0〜１１１Nに反映させる（ステップＳ２０２）。待機系サーバである第１−０のサーバ１０５からのアクセスについては、第１の統合エンドポイント１０１1内部でデータを保持し、第０〜第Ｎのエンドポイント１１１0〜１１１Nへの反映は実施しない（ステップＳ２０３）。
【００８７】
ところで、第１−０のサーバ１０５によるピーシーアイエクスプレスコンフィグレーションレジスタの設定内容は、第０−０のサーバ１０３によるコンフィグレーションレジスタの設定内容と異なる値に設定される場合がある。このため、コンフィグ制御部１５５では、第０−０のサーバ１０３と第１−０のサーバ１０５の双方のピーシーアイエクスプレスコンフィグレーションレジスタの設定値を保持するようになっている。
【００８８】
一方、コンフィグ制御部１５５では、電源投入後に得られた各サーバのピーシーアイエクスプレスコンフィグレーションレジスタ情報に含まれるベースアドレス（Base Address）の値を基にして、アドレス変換テーブル１５６の作成を実施する（ステップＳ２０４）。これは、第０〜第Ｎのエンドポイント１１１0〜１１１Nに第０−０のサーバ１０３あるいは第１−０のサーバ１０５がアクセスする際に、ベースアドレスが異ならないようにするためである。
【００８９】
図７はベースアドレスの概念を説明するためのものである。第０−０のサーバ１０３および第１−０のサーバ１０５は、すでに説明したようにこれらの電源の投入によって第０〜第Ｎのエンドポイント１１１0〜１１１Nを認識する。そして、これら第０〜第Ｎのエンドポイント１１１0〜１１１Nに対してピーシーアイエクスプレスコンフィグレーションレジスタの設定を実施する。コンフィグレーション処理が終了したら、第０−０のサーバ１０３および第１−０のサーバ１０５は独立してＰＣＩｅメモリ空間１７０、１７１を作成する（ステップＳ２２１、ステップＳ２２２）。
【００９０】
第０−０のサーバ１０３および第１−０のサーバ１０５は、すでに説明したように第０〜第Ｎのエンドポイント１１１0〜１１１Nに対して直接アクセスすることができない。そこで、第１の統合エンドポイント１０１1内の第０および第１の仮想ＰＣＩｅコンフィグレジスタ１５４0、１５４1を用いてコンフィグ制御部１５５を介することで、第０〜第Ｎのエンドポイント１１１0〜１１１Nへのアクセスを実施する。このため、仮想ＰＣＩｅコンフィグレジスタ１５４0、１５４1の内部には、各エンドポイント１１１のコンフィグレーションレジスタと同一の構成のレジスタ（「ＥＰ＃０＿ｃｏｎｆｉｇ」、「ＥＰ＃１＿ｃｏｎｆｉｇ」、……、「ＥＰ＃Ｎ＿ｃｏｎｆｉｇ」）１８０、１８１が存在する。第０−０のサーバ１０３および第１−０のサーバ１０５は、仮想ＰＣＩｅコンフィグレジスタ１５４0、１５４1にアクセスを実施する。
【００９１】
コンフィグ制御部１５５は、第０−０のサーバ１０３および第１−０のサーバ１０５のピーシーアイエクスプレスコンフィグレーション空間の情報を取得した後、各エンドポイント１１１1〜１１１Nのマッピング情報について、第０−０のサーバ１０３と第１−０のサーバ１０５の設定値の差分を算出する。これについては、次の図８のステップＳ２２３として説明する。
【００９２】
図８は、ＡＣＴ系サーバ群と、ＳＢＹ系サーバ群のメモリ空間を対比したものである。図５および図７と共に説明する。
【００９３】
ＡＣＴ系サーバ群のＰＣＩｅメモリ空間１７０とＳＢＹ系サーバ群のＰＣＩｅメモリ空間１７１を比較する。すると、前記したＡＣＴ系サーバ群とＳＢＹ系サーバ群の設定値の差分の算出結果より、ＳＢＹ系サーバ群のＰＣＩｅメモリ空間１７１の方が各エンドポイント１１１のベースアドレスに関して「０ｘ０００１_００００」ずつプラスされた値となっていることが分かる。したがって、コンフィグ制御部１５５は、第１−０のサーバ１０５が各エンドポイント１１１をアクセスする状態になったとき、アドレス変換テーブル１５６で、各エンドポイント１１１について、ベースアドレスを「０ｘ０００１_００００」だけ引いた値を設定すればよい。
【００９４】
図７に再び戻って説明を続ける。アドレス変換部１５７では、第１−０のサーバ１０５と第０〜第Ｎのエンドポイント１１１0〜１１１Nの間で通信が行われる際に、ピーシーアイエクスプレスパケットのヘッダ部分に格納されたアドレス情報から、「０ｘ０００１_００００」を引いた値に変更する。この変更後のアドレス情報でアクセスすることで、第０〜第Ｎのエンドポイント１１１0〜１１１Nに設定された、ベースアドレスを基にしたアドレス空間と矛盾が生じないアクセスを、第１−０のサーバ１０５に提供することが可能になる。
【００９５】
なお、図７に示したＰＣＩｅコンフィグレーションレジスタ１６３1〜１６３N（「ＥＰ＃０＿ｃｏｎｆｉｇ」〜「ＥＰ＃Ｎ＿ｃｏｎｆｉｇ」）は、本来、第０〜第Ｎのエンドポイント１１１0〜１１１Nごとに実装されるレジスタである。したがって、これらのＰＣＩｅコンフィグレーションレジスタ１６３1〜１６３Nは、本来、ＡＣＴ系サーバ群とＳＢＹ系サーバ群にそれぞれ実装されたＣＰＵから直接制御されるべきである。しかしながら、第１の統合エンドポイント１０１1を用いた本実施の形態のエンドポイント共有システム１００では、コンフィグ制御部１５５が代理で制御を行う機能を持っている。そこで、ＡＣＴ系サーバ群とＳＢＹ系サーバ群の持つピーシーアイエクスプレスメモリ空間の差分をエンドポイント１１１に対して隠蔽することで、第０−０のサーバ１０３と第１−０のサーバ１０５の双方からアクセスが可能になるようにしている。
【００９６】
＜データ転送処理＞
【００９７】
ＡＣＴ系サーバ群と第０〜第Ｎのエンドポイント１１１0〜１１１Nの間のデータ転送のためのアクセス時には、ＰＣＩプロシキ機能部１４１でのアドレス変換処理が発生しない。この場合のデータのリードおよびライトの処理を次に説明する。
【００９８】
図９は、ＡＣＴ系サーバ群を構成する第０−０のサーバによるデータのリードおよびライトの処理を表わしたものである。図５と共に説明する。
【００９９】
ＡＣＴ系サーバ群から第０〜第Ｎのエンドポイント１１１0〜１１１Nへのアクセスについては、第０の仮想ＰＣＩｅコンフィグレジスタ１５４0に設定されたベースアドレス情報を基にして、該当するエンドポイントが接続されたポートに振り分ける。具体的には、ピーシーアイエクスプレスパケットのヘッダ情報に含まれるアドレス情報を基にして、アドレス変換・振り分け機能部１５８がアクセス先のエンドポイント１１１を判断する。そして、該当するエンドポイント１１１が接続されたポート（第０〜第ＮのＰＣＩｅポート１５９0〜１５９N）に対して振分けを実施する。
【０１００】
また、第０〜第Ｎのエンドポイント１１１0〜１１１NからＡＣＴ系サーバ群あるいはＳＢＹ系サーバ群へのデータ転送についても、アドレス変換・振り分け機能部１５８はこのうちの現用系のサーバに対してデータ転送を実施する。ＳＢＹ系サーバ群が現用系の場合は、ピーシーアイエクスプレスパケットヘッダ内部のアドレス情報の変更を行わず、ＳＢＹ系サーバ群へのデータを転送する。
【０１０１】
具体例を挙げる。まず、第０−０のサーバ１０３から第０のポート（「Ｐｏｒｔ＃０」）１５１0を使用して、第１の統合エンドポイント１０１1のＰＣＩプロシキ機能部（「ＰＣＩＰｒｏｘｙ」）１４１に対して、ベースアドレス情報を基にして、第０のエンドポイント（「ＥＰ＃０」）１１１0に対するデータをライトする（ステップＳ２４１）。ＰＣＩプロシキ機能部１４１は、このデータを第０のエンドポイント１１１0にライトする（ステップＳ２４２）。この後、第０のエンドポイント１１１0からＰＣＩプロシキ機能部１４１へデータをリードする（ステップＳ２４３）。次にＰＣＩプロシキ機能部１４１からこのリードしたデータが第０−０のサーバ１０３へ送られる（リードする）（ステップＳ２４４）。
【０１０２】
この後、第０−０のサーバ１０３から第０のポート１５１0を使用して、第１の統合エンドポイント１０１1のＰＣＩプロシキ機能部１４１に対して、ベースアドレス情報を基にして、第１のエンドポイント（「ＥＰ＃１」）１１１1に対するデータをライトする（ステップＳ２４５）。ＰＣＩプロシキ機能部１４１は、このデータを第１のエンドポイント１１１1にライトする（ステップＳ２４６）。この後、第１のエンドポイント１１１1からＰＣＩプロシキ機能部１４１へデータをリードする（ステップＳ２４７）。次にＰＣＩプロシキ機能部１４１からこのデータは第０−０のサーバ１０３へリードする（ステップＳ２４８）。以下同様にして第０−０のサーバ１０３によるデータのリードおよびライトの処理が続行する。
【０１０３】
第１−０のサーバ１０５と第０〜第Ｎのエンドポイント１１１0〜１１１Nの間のデータ転送のためのアクセス時には、ＰＣＩプロシキ機能部１４１でのアドレス変換処理が発生する。この場合のデータのリードおよびライトの処理を次に説明する。
【０１０４】
図１０は、ＳＢＹ系サーバ群を構成する第１−０のサーバによるデータのリードおよびライトの処理を表わしたものである。図５と共に説明する。
【０１０５】
第１−０のサーバ１０５から第０〜第Ｎのエンドポイント１１１0〜１１１Nへのアクセスについて、まず第１−０のサーバ１０５からのデータのライトについて説明する。データのライトに関しては、アドレス変換部１５７においてピーシーアイエクスプレスパケットヘッダ内部のアドレス情報の変更を行って、アドレス変換・振り分け機能部１５８へデータを転送する。アドレス変換・振り分け機能部１５８では、コンフィグ制御部１５５で管理された情報を基に、第０〜第Ｎのエンドポイント１１１0〜１１１Nのいずれに振り分けを行うかを決定して、データの転送を実施する。
【０１０６】
また、第０〜第Ｎのエンドポイント１１１0〜１１１Nから第０−０のサーバ１０３あるいは第１−０のサーバ１０５へのデータ転送についても、アドレス変換・振り分け機能部１５８は現用系サーバに対してのみデータの転送を実施する。第１−０のサーバ１０５が現用系の場合には、ピーシーアイエクスプレスパケットヘッダ内部のアドレス情報の変更を行って、第１−０のサーバ１０５へデータを転送する。
【０１０７】
具体例を挙げる。まず、第１−０のサーバ１０５からＡＣＴの状態となっている第１のポート（「Ｐｏｒｔ＃１」）１５１1を介して送られたピーシーアイエクスプレスパケット（ステップＳ２６１）は、アドレス変換部１５７でピーシーアイエクスプレスパケットヘッダ内部のアドレス情報の変更を行う（ステップＳ２６２）。アドレス変換・振り分け機能部１５８は、このデータの転送を受け、コンフィグ制御部１５５で管理された情報を基に、第０のエンドポイント（「ＥＰ＃０」）１１１0にこれを転送する（ステップＳ２６３）。
【０１０８】
第０のエンドポイント１１１0から送られてくるデータは、アドレス変換・振り分け機能部１５８によって現用系サーバとしての第１−０のサーバ１０５に送出するように振り分けられて、アドレス変換部１５７に転送される（ステップＳ２６４）。そして、ピーシーアイエクスプレスパケットヘッダ内部のアドレス情報の変更を行って（ステップＳ２６５）、第１−０のサーバ１０５へ転送される（ステップＳ２６６）。第１−０のサーバ１０５から第１〜第Ｎのエンドポイント（「ＥＰ＃１」〜「ＥＰ＃Ｎ」）１１１1〜１１１Nに転送されるデータおよび第１〜第Ｎのエンドポイント１１１1〜１１１Nから第１−０のサーバ１０５に転送されるデータについても、同様である。そこで、ステップＳ２６７〜ステップＳ２７８の処理についての説明は省略する。
【０１０９】
＜ＡＣＴ切替動作＞
【０１１０】
図１１は、ＡＣＴ系とＳＢＹ系の切替動作を示したものである。ここでは、第０−０のサーバ１０３が現用系で、第１−０のサーバ１０５が待機系の場合を例として示す。第０−０のサーバ１０３が待機系で、第１−０のサーバ１０５が現用系の場合も、動作は同様である。図５と共に説明する。
【０１１１】
第０−０のサーバ１０３と第１−０のサーバ１０５は、ＬＡＮ（Local Area Network）１０８等の何らかの信号伝達手段を用いて、周期的に互いの状態を監視する機能を有する。このような機能は、たとえば第０−０のサーバ１０３と第１−０のサーバ１０５にそれぞれ搭載されたＣＰＵが第０−０のサーバ１０３と第１−０のサーバ１０５内の記録媒体（図示せず）に格納された制御プログラムを実行することによって実現する。
【０１１２】
待機系の第１−０のサーバ１０５からの応答要求に対して、現用系の第０−０のサーバ１０３が応答を返さない場合があったとする。この場合、第１−０のサーバ１０５は第０−０のサーバ１０３に何らかの異常が発生したことを検出する（ステップＳ２９１）。そして、これを基にして系切替動作を開始する（ステップＳ２９２）。
【０１１３】
この系切替動作で、第１−０のサーバ１０５は、自身が直接接続している第１の統合エンドポイント１０１1の待機系となっている第１のポート（「Ｐｏｒｔ＃１」）１５１1に対して、系切替要求をピーシーアイエクスプレスパケットとして送出する（ステップＳ２９３）。第１のポート１５１1では、この系切替要求を受信すると、ＡＣＴ・ＳＢＹ選択機能部１５２に対してＡＣＴ・ＳＢＹ切替要求信号を送信する。ＡＣＴ・ＳＢＹ選択機能部１５２は系切替要求を受信すると（ステップＳ２９４）、第０のポート（「Ｐｏｒｔ＃０」）１３１0に対してＡＣＴ・ＳＢＹ切替要求信号を送信する。
【０１１４】
現用系となっている第０のポート１５１0はＡＣＴ・ＳＢＹ切替信号を受信すると（ステップＳ２９５）、系切替要求をピーシーアイエクスプレスパケットとして第０−０のサーバ１０３に送出する（ステップＳ２９６）。これにより、第０−０のサーバ１０３は系の切り替えを認識する（ステップＳ２９７）。第０−０のサーバ１０３は、これに基づき現用系と待機系の切り替えを実施し（ステップＳ２９８）、この後、系切替を実施したことをピーシーアイエクスプレスパケットを用いて第０のポート１５１0に対して通知する（ステップＳ２９９）。
【０１１５】
この系切替完了通知は、ＡＣＴ・ＳＢＹ選択機能部１５２で受信され、確認される（ステップＳ３００）。ＡＣＴ・ＳＢＹ選択機能部１５２は、これを基に、第１の統合エンドポイント１０１1の第０のポート１５１0を待機系に設定し（ステップＳ３０１）、第１のポート１５１1を現用系に設定する（ステップＳ３０２）。その後、系の切り替えを実施したことを示す信号は、第１のポート１５１1から第１−０のサーバ１０５へピーシーアイエクスプレスパケットを用いて通知される（ステップＳ３０３）。第１−０のサーバ１０５は、この通知を受けると、第１−０のサーバ１０５が待機系から現用系に切り替わったことを確定させる（ステップＳ３０４）。
【０１１６】
次に、現用系になっている第０−０のサーバ１０３に異常が発生して、第１−０のサーバ１０５からの系切替要求の送出（ステップＳ２９３）に対する応答がない場合について説明する。この場合には、第１の統合エンドポイント１０１1の内部におけるＡＣＴ・ＳＢＹ選択機能部１５２が図示しないタイマを起動させる。そして、第０−０のサーバ１０３が正常であれば十分応答する規定時間内に、第０−０のサーバ１０３から応答があるかを判別する。この規定時間内に第０−０のサーバ１０３からの応答があれば、すでに説明した処理と同一の処理を行えばよい。
【０１１７】
これに対して、規定時間内に第０−０のサーバ１０３からの応答がなかったとする。この場合には、第０−０のサーバ１０３からの応答をそれ以上待機せずに第１−０のサーバ１０５は系切替完了通知を実施する。そして、今までＳＢＹ系であった第１のポート１５１1をＡＣＴ系に切り替えることになる。
【０１１８】
本実施の形態のエンドポイント共有システム１００では、以上とは別に、定期的な系の切り替えや保守作業を目的として、系の切り替えを開始することも可能である。待機系から現用系に切り替わった第１−０のサーバ１０５の第１のポート１５１1は、第０〜第Ｎのエンドポイント１１１0〜１１１Nに対する、実データの通信が可能になる。
【０１１９】
なお、第１−０のサーバ１０５側のピーシーアイエクスプレスコンフィグレーションレジスタは、第１−０のサーバ１０５の電源投入後に設定済みである。このため、第０〜第Ｎのエンドポイント１１１0〜１１１Nに対する、第１−０のサーバ１０５のメモリ空間に対応させるための、ピーシーアイエクスプレスコンフィグレーション動作は不要である。したがって、コンフィグレーションレジスタの設定変更前の第０〜第Ｎのエンドポイント１１１0〜１１１Nのリセットや、各ピーシーアイエクスプレスコンフィグレーションレジスタの再設定処理等の処理は不要になる。
【０１２０】
このため、系の切替途中では、第０〜第Ｎのエンドポイント１１１0〜１１１Nと第０−０のサーバ１０３および第１−０のサーバ１０５の間の通信は実行できない。しかしながら、第１の統合エンドポイント１０１1内の各エンドポイント１１１間通信処理（たとえば、第０のエンドポイント１１１0からＰＣＩプロシキ機能部１４１を経て第１のエンドポイント１１１1への通信）では、系切替動作時に通信処理を継続することが可能になる。
【０１２１】
＜サーバ間データ転送＞
【０１２２】
図１２は、サーバ側のソフトウェア処理の様子を表わしたものである。本実施の形態のエンドポイント共有システム１００では、図５でも説明したように、ＡＣＴ系サーバ群とＳＢＹ系サーバ群の２種類のサーバが使用されている。ＡＣＴ系サーバ群とＳＢＹ系サーバ群は、同一の構成となっている。そこで、ＡＣＴ系サーバ群を中心に、これらのサーバ群で動作するアプリケーションソフトウェアについて説明を行う。
【０１２３】
次の表１は、本実施の形態によるＡＣＴ系サーバ群とＳＢＹ系サーバ群で動作するアプリケーションソフトウェアを示したものである。この表１に記載された各アプリケーションソフトウェア同士は、イベントの相互通知が可能なインタフェイスを有しており、イベント発生の検出を行うようになっている。
【０１２４】
【表１】
0005482263.tif 000002
【０１２５】
図１２では、ＡＣＴ系サーバ群とＳＢＹ系サーバ群がそれぞれ１つの記憶装置１０７を分割して使用する形で接続している様子を示している。ここでは、便宜的に、ＡＣＴ系サーバ群が接続する記憶装置部分を記憶装置１０７0として表わし、ＳＢＹ系サーバ群が接続する記憶装置部分を記憶装置１０７1として表わしている。
【０１２６】
それぞれの記憶装置１０７0、記憶装置１０７1は、アプリケーションソフトウェアがアクセス可能な領域としてのサーバ・テンポラリ領域と、第１の統合エンドポイント１０１1とのデータのやり取りに用いる領域としてのエンドポイント通信用領域に分割されている。ここで、記憶装置１０７は、図５でも説明したように、各サーバ１０３、１０５とＬＡＮ１０８を介して接続されている。
【０１２７】
記憶装置１０７0および記憶装置１０７1の内部には、１次共有メモリ１９１0、１９１1の領域と、２次共有メモリ１９２0、１９２1の領域が存在している。１次共有メモリ１９１0、１９１1の領域には、送信の際にアクセスする出力メモリ（ＯｕｔｐｕｔＭｅｍ）領域１９３0、１９３1のうちの対応するものと、受信の際にアクセスする入力メモリ（ＩｎｐｕｔＭｅｍ）領域１９４0、１９４1のうちの対応するものが存在している。
【０１２８】
２次共有メモリ１９２0、１９２1は、送信側領域と受信側領域に分割され、次のように構成される。まず、送信側領域は、第０−０のサーバ１０３（主サーバ）上で動作するアプリケーションソフト（ＡＰＬ）（ＰＳ＃０−５）が、第１の統合エンドポイント１０１1に対してデータの送信を行う場合にアクセスを行う、出力メモリサーバ（ＯｕｔｐｕｔＭｅｍＳｅｒｖｅｒ＃０−０）領域１９５0-0と、第０−１のサーバ１０４1（拡張サーバ）上で動作するアプリケーションソフト（ＰＳ＃１−５）が、第１の統合エンドポイント１０１1に対してデータの送信する際にアクセスを行う、出力メモリサーバ（ＯｕｔｐｕｔＭｅｍＳｅｒｖｅｒ＃０−１）領域１９５0-1から構成される。
【０１２９】
受信側領域は、第０−０のサーバ１０３（主サーバ）上で動作するアプリケーションソフト（ＰＳ＃０−５）が、第１の統合エンドポイント１０１1からデータの受信を行う場合にアクセスを行う、入力メモリサーバ（ＩｎｐｕｔＭｅｍＳｅｒｖｅｒ＃０−０）領域１９６0-0と、第０−１のサーバ１０４1（拡張サーバ）上で動作するアプリケーションソフト（ＰＳ＃１−５）が、第１の統合エンドポイント１０１1からデータを受信する際にアクセスを行う、入力メモリサーバ（ＩｎｐｕｔＭｅｍＳｅｒｖｅｒ＃０−１）領域１９６0-1から構成される。
【０１３０】
ＳＢＹ系サーバ群を構成する第１−０のサーバ１０５（主サーバ）と第１−１のサーバ１０６1（拡張サーバ）がアクセスを行う記憶装置１０７1の構成は、第０−０のサーバ１０３と第０−１のサーバ１０４1がアクセスを行う記憶装置１０７0の構成と同一である。
【０１３１】
ところで、本実施の形態のエンドポイント共有システム１００で第１の統合エンドポイント１０１1あるいは第２の統合エンドポイント１０１2に物理的に接続されているのは主サーバである第０−０のサーバ１０３および第１−０のサーバ１０５である。このため、拡張サーバである第０−１のサーバ１０４1および第１−１のサーバ１０６1が第１の統合エンドポイント１０１1あるいは第２の統合エンドポイント１０１2にアクセスする場合には、主サーバを介してデータの受け渡しを行う必要がある。
【０１３２】
主サーバとのデータ受け渡しに際しては、ＩＰ（Internet Protocol）等のプロトコルを用いることが可能である。しかしながらその場合には、拡張サーバおよび主サーバに対してデータの送受信のためのプロトコルの定義が必要とされ、オーバヘッドが大きくなり、高速な送受信の妨げとなるという問題がある。本実施の形態では、記憶装置１０７をデータ受け渡しのバッファとして用いることで、高速なデータの受け渡しを実現する。これにより、統合エンドポイント１０１1、１０１2が接続されていない拡張サーバであっても、高速に主サーバを介してこれら統合エンドポイント１０１1、１０１2への高速アクセスを実現している。
【０１３３】
サーバ群と第１の統合エンドポイント１０１1の間でやりとりされるデータは、記憶装置１０７内部の１次共有メモリ１９１と、２次共有メモリ１９２を、以下の関係をもって転送される。
【０１３４】
＜ＡＣＴ系サーバ群＞
出力メモリサーバ（ＯｕｔｐｕｔＭｅｍＳｅｒｖｅｒ＃０−０）領域１９５0-0から出力メモリ（ＯｕｔｐｕｔＭｅｍ＃０）領域１９３0の方向への転送
出力メモリサーバ（ＯｕｔｐｕｔＭｅｍＳｅｒｖｅｒ＃０−１）領域１９５0-1から出力メモリ（ＯｕｔｐｕｔＭｅｍ＃０）領域１９３0の方向への転送
入力メモリ（ＩｎｐｕｔＭｅｍ＃０）領域１９４0から入力メモリサーバ（ＩｎｐｕｔＭｅｍＳｅｒｖｅｒ＃０−０）領域１９６0-0の方向への転送
入力メモリ（ＩｎｐｕｔＭｅｍ＃０）領域１９４0から入力メモリサーバ（ＩｎｐｕｔＭｅｍＳｅｒｖｅｒ＃０−１）領域１９６0-1の方向への転送
【０１３５】
＜ＳＢＹ系サーバ群＞
出力メモリサーバ（ＯｕｔｐｕｔＭｅｍＳｅｒｖｅｒ＃１−０）領域１９５1-0から出力メモリ（ＯｕｔｐｕｔＭｅｍ＃１）領域１９３1の方向への転送
出力メモリサーバ（ＯｕｔｐｕｔＭｅｍＳｅｒｖｅｒ＃１−１）領域１９５1-1から出力メモリ（ＯｕｔｐｕｔＭｅｍ＃１）領域１９３1の方向への転送
入力メモリ（ＩｎｐｕｔＭｅｍ＃１）領域１９４1から入力メモリサーバ（ＩｎｐｕｔＭｅｍＳｅｒｖｅｒ＃１−０）領域１９６1-0の方向への転送
入力メモリ（ＩｎｐｕｔＭｅｍ＃１）領域１９４1から入力メモリサーバ（ＩｎｐｕｔＭｅｍＳｅｒｖｅｒ＃１−１）領域１９６1-1の方向への転送
【０１３６】
なお、図１２には、第０−０のサーバ１０３に搭載されたＣＰＵとしてのＣＰＵ＃０−０が各アプリケーションソフトウェアＰＳ＃０−０、ＰＳ＃０−１、ＰＳ＃０−３、ＰＳ＃０−４、ＰＳ＃０−５を実行することが示されている。また、同様に第０−１のサーバ１０４1に搭載されたＣＰＵとしてのＣＰＵ＃０−１が各アプリケーションソフトウェアＰＳ＃１−３、ＰＳ＃１−４、ＰＳ＃１−５を実行することが示されている。
【０１３７】
図１３は、記憶装置を介して、サーバがエンドポイントに対してアクセスを行う様子を表わしたものである。図５および図１２と共に説明する。
【０１３８】
＜サーバからのデータの送出＞
【０１３９】
第０−０のサーバ１０３上で動作するアプリケーションソフトウェアＰＳ＃０−５，ＰＳ＃１−５から第１の統合エンドポイント１０１1へのデータの取り込みについて説明する。
【０１４０】
（ａ）まず、第０−０のサーバ１０３（主サーバ）から第１の統合エンドポイント１０１1へのアクセスについて説明する。
【０１４１】
第０−０のサーバ１０３上で動作するアプリケーションソフトウェアＰＳ＃０−５がエンドポイント１１１に対してデータを送信する場合、アプリケーションソフトウェアＰＳ＃０−５は記憶装置１０７上に確保されている出力メモリサーバ領域１９５0-0にデータを書き込む（ステップＳ４０１）。記憶装置１０７は、出力メモリサーバ領域１９５0-0にデータが書き込まれたことを検出すると、出力メモリ領域１９３0にデータをコピーする。
【０１４２】
アプリケーションソフトウェアＰＳ＃０−５は出力メモリサーバ領域１９５0-0にデータを書き込んだことを、アプリケーションソフトウェアＰＳ＃０−１に対して通知を行う（ステップＳ４０２）。アプリケーションソフトウェアＰＳ＃０−１は、他のサーバからエンドポイント１１１へのデータ送信要求が無いかを確認後、アプリケーションソフトウェアＰＳ＃０−２に対して、第０−０のサーバ１０３からエンドポイント１１１に対してデータを送信するように、指示を発行する（ステップＳ４０３）。
【０１４３】
アプリケーションソフトウェアＰＳ＃０−２は、エンドポイント１１１に対するデータ送信の指示を受信すると、このエンドポイント１１１に対して出力メモリ領域１９３0からデータの送信を実施する（ステップＳ４０４）。このようにして、第０−０のサーバ１０３から記憶装置１０７を介して第１の統合エンドポイント１０１1へデータが送信される。
【０１４４】
（ｂ）次に、第０−１のサーバ１０４1（拡張サーバ）から第１の統合エンドポイント１０１1へのアクセスについて説明する。
【０１４５】
第０−１のサーバ１０４1上で動作するアプリケーションソフトウェアＰＳ＃１−５が第１の統合エンドポイント１０１1に対してデータを送信する場合、アプリケーションソフトウェアＰＳ＃１−５は記憶装置１０７上に確保されている出力メモリサーバ領域１９５0-1にデータを書き込む（ステップＳ４１０）。記憶装置１０７は、出力メモリサーバ領域１９５0-1にデータが書き込まれたことを検出すると、出力メモリ領域１９３0にデータをコピーする。
【０１４６】
アプリケーションソフトウェアＰＳ＃１−５は出力メモリサーバ領域１９５0-1にデータを書き込んだことを、アプリケーションソフトウェアＰＳ＃０−１に対して通知を行う必要がある。このため、アプリケーションソフトウェアＰＳ＃１−４に対してデータ送信要求指示を発行する（ステップＳ４１１）。
【０１４７】
アプリケーションソフトウェアＰＳ＃１−４はアプリケーションソフトウェアＰＳ＃０−４に対して、拡張サーバとしての第０−１のサーバ１０４1がエンドポイント１１１に対してデータ転送を要求していることを通知する（ステップＳ４１２）。これに基づき、アプリケーションソフトウェアＰＳ＃０−４は、第０−１のサーバ１０４1がエンドポイント１１１へのデータ転送要求を行っていることを、アプリケーションソフトウェアＰＳ＃０−１に対して通知する（ステップＳ４１３）。
【０１４８】
アプリケーションソフトウェアＰＳ＃０−１は、他のサーバからエンドポイント１１１へのデータ送信の要求が無いかを確認する。そして、アプリケーションソフトウェアＰＳ＃０−２に対して、アプリケーションソフトウェアＰＳ＃０−１から第１の統合エンドポイント１０１1に対してデータを送信するように、指示を発行する（ステップＳ４１４）。
【０１４９】
アプリケーションソフトウェアＰＳ＃０−２は第１の統合エンドポイント１０１1に対してデータ送信の指示を受信すると、エンドポイント１１１に対して出力メモリ領域１９３0からデータの送信を実施する（ステップＳ４１５）。このようにして第０−１のサーバ１０４1から記憶装置１０７を介して第１の統合エンドポイント１０１1へデータが送信される。
【０１５０】
＜サーバへのデータの取り込み＞
【０１５１】
次に第１の統合エンドポイント１０１1からサーバへのデータ取り込みについて説明する。
【０１５２】
図１４は、第１の統合エンドポイントからサーバへのデータ取り込みの様子を示したものである。図５および図１２と共に説明する。
【０１５３】
（ａ）まず、第１の統合エンドポイント１０１1から主サーバとしての第０−０のサーバ１０３へのデータの取り込みについて説明する。
【０１５４】
第１の統合エンドポイント１０１1から第０−０のサーバ１０３に対して転送するデータが発生したとする。この場合、ＤＭＡ（Direct Memory Access ）により、ＣＰＵを介さずに第１の統合エンドポイント１０１1から、そのデータが主サーバとしての第０−０のサーバ１０３を経由して入力メモリ（ＩｎｐｕｔＭｅｍ＃０）領域１９４0に対して転送される（ステップＳ４３１）。第１の統合エンドポイント１０１1から記憶装置１０７へのデータ転送はアプリケーションソフトウェアＰＳ＃０−２が実行する。
【０１５５】
アプリケーションソフトウェアＰＳ＃０−２は、記憶装置１０７に対してデータを転送後、アプリケーションソフトウェアＰＳ＃０−１に対して、第１の統合エンドポイント１０１1から記憶装置１０７に対してデータの転送が発生したことを通知する（ステップＳ４３２）。
【０１５６】
アプリケーションソフトウェアＰＳ＃０−１は、サーバ群を構成するサーバのうちの負荷が軽いサーバで処理を実行するために、各サーバの負荷状況を調査する。負荷状況の調査はアプリケーションソフトウェアＰＳ＃０−３で実行する。このため、アプリケーションソフトウェアＰＳ＃０−１はアプリケーションソフトウェアＰＳ＃０−３に対して負荷調査を指示する（ステップＳ４３３）。アプリケーションソフトウェアＰＳ＃０−３はサーバ群を構成する第０−１のサーバ１０４1（拡張サーバ）上で動作するアプリケーションソフトウェアＰＳ＃１−３に対して、ＣＰＵ負荷、メモリ使用量等の負荷状況の報告指示を出す（ステップＳ４３４）。第０−１のサーバ１０４1では、負荷状況調査指示をアプリケーションソフトウェアＰＳ＃１−３で受信後、負荷状況をアプリケーションソフトウェアＰＳ＃１−３からアプリケーションソフトウェアＰＳ＃０−３に報告する（ステップＳ４３５）。このとき、アプリケーションソフトウェアＰＳ＃０−３とアプリケーションソフトウェアＰＳ＃１−３の間の通信はＬＡＮ１１５を用いて行う。
【０１５７】
アプリケーションソフトウェアＰＳ＃０−３は、アプリケーションソフトウェアＰＳ＃１−３の報告結果と第０−０のサーバ１０３の負荷状況をアプリケーションソフトウェアＰＳ＃０−１に通知する（ステップＳ４３６）。アプリケーションソフトウェアＰＳ＃１−３は第０−０のサーバ１０３（主サーバ）と第０−１のサーバ１０４1（拡張サーバ）の負荷状況から、負荷の少ないサーバの方を処理を行うサーバとして決定する。
【０１５８】
第０−０のサーバ１０３が負荷が少ないと判断された場合、処理を実行するアプリケーションソフトとしてのアプリケーションソフトウェアＰＳ＃０−５に対して、アプリケーションソフトウェアＰＳ＃０−１から処理指示が発行される（ステップＳ３４７）。第０−０のサーバ１０３の負荷が少ないと判断された場合は、ステップＳ３４７の処理指示の発行と同時に、アプリケーションソフトウェアＰＳ＃０−１から記憶装置１０７に対して、入力メモリ領域１９４0に記録されたデータを、入力メモリサーバ領域１９６0-0に転送する指示を発行する（ステップＳ４３８）。このとき、記憶装置１０７からの指示はＬＡＮ１１５を経由して発行される。
【０１５９】
アプリケーションソフトウェアＰＳ＃０−５は、入力メモリサーバ領域１９６0-0からデータを読み出す（ステップＳ４３９）。これにより、サーバ上のアプリケーションは処理に必要なデータを第１の統合エンドポイント１０１1から得ることが可能となる。
【０１６０】
（ｂ）次に、第１の統合エンドポイント１０１1から第０−１のサーバ１０４1（拡張サーバ）へのデータの取り込みについて説明する。
【０１６１】
第１の統合エンドポイント１０１1からサーバ対して転送されるデータが発生したとする。この場合、ＤＭＡにより、ＣＰＵを介さずに第１の統合エンドポイント１０１1から、そのデータが主サーバとしての第０−０のサーバ１０３を経由して入力メモリ（ＩｎｐｕｔＭｅｍ＃０）領域１９４0に対して転送される（ステップＳ４４１）。第１の統合エンドポイント１０１1から記憶装置１０７へのデータ転送はアプリケーションソフトウェアＰＳ＃０−２が実行する。
【０１６２】
アプリケーションソフトウェアＰＳ＃０−２は、記憶装置１０７に対してデータを転送後、アプリケーションソフトウェアＰＳ＃０−１に対して、第１の統合エンドポイント１０１1から記憶装置１０７に対してデータの転送が発生したことを通知する（ステップＳ４４２）。
【０１６３】
アプリケーションソフトウェアＰＳ＃０−１は、サーバ群を構成するサーバのうちの負荷が軽いサーバで処理を実行するために、各サーバの負荷状況を調査する。負荷状況の調査はＰＳ＃０−３で実行する。このため、アプリケーションソフトウェアＰＳ＃０−１はアプリケーションソフトウェアＰＳ＃０−３に対して負荷調査を指示する（ステップＳ４４３）。アプリケーションソフトウェアＰＳ＃０−３はサーバ群を構成する第０−１のサーバ１０４1（拡張サーバ）上で動作するアプリケーションソフトウェアＰＳ＃１−３に対して、ＣＰＵ負荷、メモリ使用量等の負荷状況の報告指示を出す（ステップＳ４４４）。第０−１のサーバ１０４1では、負荷状況調査指示をアプリケーションソフトウェアＰＳ＃１−３で受信後、負荷状況をアプリケーションソフトウェアＰＳ＃１−３からアプリケーションソフトウェアＰＳ＃０−３に報告する（ステップＳ４４５）。このとき、アプリケーションソフトウェアＰＳ＃０−３とアプリケーションソフトウェアＰＳ＃１−３の間の通信はＬＡＮ１１５を用いて行う。
【０１６４】
アプリケーションソフトウェアＰＳ＃０−３は、アプリケーションソフトウェアＰＳ＃１−３の報告結果と第０−０のサーバ１０３の負荷状況をアプリケーションソフトウェアＰＳ＃０−１に通知する（ステップＳ４４６）。アプリケーションソフトウェアＰＳ＃１−３は第０−０のサーバ１０３（主サーバ）と第０−１のサーバ１０４1（拡張サーバ）の負荷状況から、負荷の少ないサーバの方を処理を行うサーバとして決定する。
【０１６５】
ここまでのシーケンスは、第１の統合エンドポイント１０１1から主サーバである第０−０のサーバ１０３に対するデータ転送と、同一のシーケンスである。
【０１６６】
第０−１のサーバ１０４1（拡張サーバ）の負荷が少ないと判断されたとする。この場合、アプリケーションソフトウェアＰＳ＃０−１からアプリケーションソフトウェアＰＳ＃０−４に対して、第０−１のサーバ１０４1に対する記憶装置１０７(Ｓ＃０−１＿ＲＥＣ＿ｔｅｍｐ（図示せず））からのデータ読み出し指示が発行される（ステップＳ４４７）。このとき記憶装置１０７から読み出されるデータは、図示しないアプリケーションソフトウェアＳ＃０−１についての一次領域（ＲＥＣ＿ｔｅｍｐ）に格納されている。ステップＳ４４７のデータ読み出し指示の発行と同時に、アプリケーションソフトウェアＰＳ＃０−１は、記憶装置１０７に対して、入力メモリ領域１９４0に記録されたデータを、入力メモリサーバ領域１９６0-1に転送する指示を発行する（ステップＳ４４８）。
【０１６７】
アプリケーションソフトウェアＰＳ＃０−４では、第０−１のサーバ１０４1での入力メモリサーバ領域１９６0-1からのデータ読み出し指示の発行を受けて、アプリケーションソフトウェアＰＳ＃１−４に対して、記憶装置１０７からのデータ読み出し指示を発行する（ステップＳ４４９）。アプリケーションソフトウェアＰＳ＃１−４は、第０−０のサーバ１０３からのデータ読み出し指示を受け、アプリケーションソフトウェアＰＳ＃１−５に対して、入力メモリサーバ領域１９６0-1からデータを読み出し指示を発行する（ステップＳ４５０）。そして、アプリケーションソフトウェアＰＳ＃１−５は入力メモリサーバ領域１９６0-1から処理に必要なデータを読み出す（ステップＳ４５１）。
【０１６８】
＜記憶装置の構成＞
図１５は、本実施の形態のエンドポイント共有システムの構成を記憶装置を中心に具体化したものである。記憶装置１０７は、次の各部から構成されている。
【０１６９】
（１）１次共有メモリ１９１および２次共有メモリ１９２
１次共有メモリ１９１および２次共有メモリ１９２は、図１２で説明した。１次共有メモリ１９１は、主サーバからのデータおよび主サーバへ転送するデータを一時的に蓄えるためのメモリである。２次共有メモリ１９２は、記憶装置１０７と各サーバ１０３、１０４1、１０５、１０６1間のデータ転送のためのメモリ領域である。
【０１７０】
（２）第０および第１のエンドポイント間ＣＴＬ（ＥＰ間ＣＴＬ）部５０１、５０２
第０のエンドポイント間ＣＴＬ部５０１は、主サーバとしての第０−０のサーバ（Ｓｅｒｖｅｒ＃０−０）１０３を経由して第０〜第Ｎのエンドポイント（ＥＰ＃０〜ＥＰ＃Ｎ）１１１0〜１１１N（図５参照）からのデータをやりとりする。第１のエンドポイント間ＣＴＬ部５０２は、主サーバとしての第１−０のサーバ（Ｓｅｒｖｅｒ＃１−０）１０５を経由して第０〜第Ｎのエンドポイント（ＥＰ＃０〜ＥＰ＃Ｎ）１１１0〜１１１Nからのデータをやりとりする。
【０１７１】
（３）第０および第１のメモリ間ＣＴＬ（ＭＥＭ間ＣＴＬ）部５０３、５０４
１次共有メモリ１９１と２次共有メモリ１９２間の制御を行う。
【０１７２】
（４）第０−０、第０−１、第１−０、第１−１のサーバ間ＣＴＬ部５０５〜５０８
主サーバあるいは拡張サーバと記憶装置１０７の間のデータ転送を実施する。
【０１７３】
（５）記憶装置ＣＴＬ部５０９
記憶装置１０７の制御を実施する。
【０１７４】
このような構成の記憶装置１０７における第０および第１のエンドポイント間ＣＴＬ部５０１、５０２およびサーバは、ＰＣＩｅのエンドポイントとして動作し、ＰＣＩｅケーブルで接続される。ＰＣＩｅとし動作するためのコンフィグレーション処理は、サーバ側から実行される。ＰＣＩｅのコンフィグレーション処理は、通常の処理と同等である。
【０１７５】
このため、主サーバのＣＰＵからみると、第１の統合エンドポイント１０１1と記憶装置１０７がエンドポイントとして接続されているように見える。また、拡張サーバのＣＰＵからは記憶装置１０７がエンドポイントとして接続されているように見える。
【０１７６】
第０のエンドポイント間ＣＴＬ部５０１は、主サーバとしての第０−０のサーバ１０３と接続し、第１のエンドポイント間ＣＴＬ部５０２は、同じく主サーバとしての第１−０のサーバ１０５と接続する。ここで第０−０のサーバ１０３は、ＡＣＴ（active）系サーバ群を構成し、第１−０のサーバ１０５はＳＢＹ（standby）系サーバ群を構成している。このうちの現用系となるサーバがデータの送受信の対象となるので、どちらの系が現用系であるかのＡＣＴ（active）・ＳＢＹ（standby）系情報の取得が必要となる。
【０１７７】
記憶装置ＣＴＬ部５０９は、ＬＡＮ１０８（図５参照）を介して第０−０、第０−１、第１−０および第１−１の各サーバ１０３、１０４1、１０５、１０６1と接続するためのＬＡＮインタフェイスを有している。このため、記憶装置ＣＴＬ部５０９は、ＬＡＮ１０８を経由して、サーバ群を構成する各サーバ１０３〜１０６1との間で、ＡＣＴ・ＳＢＹ系情報を収集する。これにより、記憶装置ＣＴＬ部５０９は、現用系となるサーバ群を認識し、待機系となるサーバ群からの記憶装置１０７へのアクセスを禁止する通知を第０および第１のエンドポイント間ＣＴＬ部５０１、５０２に送出する。
【０１７８】
主サーバと記憶装置１０７の間でデータが転送される場合、第０あるいは第１のエンドポイント間ＣＴＬ部５０１、５０２と１次共有メモリ１９１の間でデータ転送が発生する。１次共有メモリ１９１は、送信用としての出力メモリ（ＯｕｔｐｕｔＭｅｍ）領域１９３0（ＯｕｔｐｕｔＭｅｍ＃０）、１９３1（ＯｕｔｐｕｔＭｅｍ＃１）と、受信用としての入力メモリ（ＩｎｐｕｔＭｅｍ）領域１９４0（ＩｎｐｕｔＭｅｍ＃０）、１９４1（ＩｎｐｕｔＭｅｍ＃１）に分割されている。１次共有メモリ１９１は、記憶装置ＣＴＬ部５０９からのＡＣＴ・ＳＢＹ系情報を基にして現用系のデータ転送のみ実施する。
【０１７９】
第１の統合エンドポイント１０１1からサーバへデータの転送を実施するものとする。この場合、１次共有メモリ１９１に格納したＰＣＩｅパケットを、第０−０、第０−１、第１−０および第１−１のサーバ１０３、１０４1、１０５、１０６1のいずれに転送するかを決定する必要がある。転送先のサーバを決定するために主サーバは、各サーバの負荷状況（ＣＰＵ使用率、メモリ使用量等）を基に判定を行う。判定結果は、ＬＡＮ１０８（図５参照）を経由して記憶装置ＣＴＬ部５０９に通知される。記憶装置ＣＴＬ部５０９は、第０あるいは第１のメモリ間ＣＴＬ部５０３、５０４に対してパケットの転送先の通知を行う。
【０１８０】
第０あるいは第１のメモリ間ＣＴＬ部５０３、５０４では、１次共有メモリ１９１へのデータの書き込みが完了したこと、および記憶装置ＣＴＬ部５０９から通知されるパケットの転送先の通知情報を基にして、パケットのヘッダ情報の書き換えを行う。そして、この書き換えたヘッダ情報を基にして、転送先のサーバに対応した２次共有メモリ１９２に対して、データの転送を実施する。
【０１８１】
ＰＣＩｅパケットに付与されるヘッダ情報については、後に説明を行う。図１５に示す例では、転送先が主サーバとしての第０−０のサーバ１０３あるいは第１−０のサーバ１０５の場合、入力メモリサーバ（ＩｎｐｕｔＭｅｍＳｅｒｖｅｒ＃０−０）領域１９６0-0（または入力メモリサーバ（ＩｎｐｕｔＭｅｍＳｅｒｖｅｒ＃１−０）領域１９６1-0）にデータを書き込む。また、転送先が拡張サーバとしての第０−１のサーバ１０３あるいは第１−１のサーバ１０５の場合、入力メモリサーバ（ＩｎｐｕｔＭｅｍＳｅｒｖｅｒ＃０−１）領域１９６0-1（または入力メモリサーバ（ＩｎｐｕｔＭｅｍＳｅｒｖｅｒ＃１−１）領域１９６1-1）にデータを書き込む。
【０１８２】
主サーバあるいは拡張サーバは、第０−０、第０−１、第１−０および第１−１の各サーバに対応した第０−０、第０−１、第１−０、第１−１のサーバ間ＣＴＬ部５０５〜５０８を監視する。そして、データが書き込まれたことを確認した後に、２次共有メモリ１９２からデータの読み出しを行う。
【０１８３】
第０−０、第０−１、第１−０および第１−１の各サーバから第１の統合エンドポイント１０１1にデータを転送する場合を次に説明する。この場合には、サーバごとに用意されている第０−０、第０−１、第１−０、第１−１のサーバ間ＣＴＬ部５０５〜５０８を介して２次共有メモリ１９２に対するデータの転送を実施する。第０あるいは第１のメモリ間ＣＴＬ部５０３、５０４は、第１の統合エンドポイント１０１1へ転送するデータが２次共有メモリ１９２に書き込まれたかを監視する。
【０１８４】
転送するデータが２次共有メモリ１９２に書き込まれたことが検出されたら、２次共有メモリ１９２からデータが読み出される。そして、１次共有メモリ１９１に対するデータの転送が実施される。主サーバは、第０あるいは第１のエンドポイント間ＣＴＬ部５０１、５０２を介して１次共有メモリ１９１に対するデータが書き込まれたことを認識すると、１次共有メモリ１９１からデータを読み出して、第１の統合エンドポイント１０１1へのデータ転送を実施する。
【０１８５】
＜記憶装置とサーバ間の接続＞
【０１８６】
図１６は、各サーバと記憶装置の接続の状態を一般化して表わしたものである。図５ではＡＣＴ系サーバ群として第０−０のサーバ（Ｓｅｒｖｅｒ＃０−０）１０３に対して拡張サーバとしての１台の第０−１のサーバ（Ｓｅｒｖｅｒ＃０−１）１０４1が存在する場合を示した。図１６ではＡＣＴ系サーバ群の拡張サーバとして第０−１のサーバ（Ｓｅｒｖｅｒ＃０−１）１０４1〜第０−Ｎのサーバ（Ｓｅｒｖｅｒ＃０−Ｎ）１０４Nが存在している。同様に、図５ではＳＢＹ系サーバ群として第１−０のサーバ（Ｓｅｒｖｅｒ＃１−０）１０５に対して拡張サーバとしての１台の第１−１のサーバ（Ｓｅｒｖｅｒ＃１−１）１０６1が存在する場合を示した。図１６ではＳＢＹ系サーバ群の拡張サーバとして第１−１のサーバ（Ｓｅｒｖｅｒ＃１−１）１０６1〜第１−Ｎのサーバ（Ｓｅｒｖｅｒ＃１−Ｎ）１０６Nが存在している。数値Ｎは任意の正の整数である。
【０１８７】
このエンドポイント共有システム１００Ａでは、記憶装置１０７Ａに第０−０、第０−１〜第０−Ｎ、第１−０、第１−１〜第１−Ｎのサーバ間ＣＴＬ部５０５、５０６1〜５０６N、５０７、５０８1〜５０８Nと、第０および第１のエンドポイント間ＣＴＬ部５０１、５０２が配置されている。ここで、第０−０のサーバ間ＣＴＬ部５０５は、主サーバとしての第０−０のサーバ１０３とＰＣＩｅケーブルを用いて１対１で接続されている。同様に第０−１〜第０−Ｎのサーバ間ＣＴＬ部５０６1〜５０６Nは、拡張サーバとしての第０−１〜第０−Ｎのサーバ１０４1〜１０４Nと、それぞれＰＣＩｅケーブルを用いて１対１で接続されている。また、第１−０のサーバ間ＣＴＬ部５０７は、主サーバとしての第１−０のサーバ１０５とＰＣＩｅケーブルを用いて１対１で接続されている。同様に第１−１〜第１−Ｎのサーバ間ＣＴＬ部５０８1〜５０８Nは、拡張サーバとしての第１−１〜第１−Ｎのサーバ１０６1〜１０６Nと、それぞれＰＣＩｅケーブルを用いて１対１で接続されている。更に、第０および第１のエンドポイント間ＣＴＬ部５０１、５０２は、主サーバとしての第０−０のサーバ１０３および第１−０のサーバ１０５と、それぞれＰＣＩｅケーブルを用いて１対１で接続されている。
【０１８８】
このため、各サーバ間ＣＴＬ部５０５、５０６1〜５０６N、５０７、５０８1〜５０８Nと各エンドポイント間ＣＴＬ部５０１、５０２は、ＰＣＩｅのエンドポイントとして各サーバ１０３、１０４1〜１０４N、１０５、１０６1〜１０６Nから認識される。このため、各サーバ１０３、１０４1〜１０４N、１０５、１０６1〜１０６Nはデータの送受信についてドライバソフトを必要とするが、そのインストールが完了すれば、他のサーバの影響を考慮することなく、記憶装置１０７Ａの制御を行うことが可能になる。各サーバ１０３、１０４1〜１０４N、１０５、１０６1〜１０６Nによる記憶装置１０７Ａの制御は、通常のＰＣＩｅエンドポイントの制御と同じである。
【０１８９】
更に、各サーバ１０３、１０４1〜１０４N、１０５、１０６1〜１０６Nと記憶装置１０７Ａは、前記した１対１で接続されるための、相互に独立したＰＣＩｅメモリ空間に記憶装置をマッピングすることが可能となる。したがって、他のサーバのメモリ空間を考慮する必要がなくなる。
【０１９０】
主サーバとしての第０−０のサーバ１０３と第１−０のサーバ１０５は、１次共有メモリ１９１および２次共有メモリ１９２（図１５参照）へのアクセスのために記憶装置１０７Ａに対してＰＣＩｅインタフェイスを２系統備える。拡張サーバ１０４1〜１０４N、１０６1〜１０６Nについては２次共有メモリ１９２へのアクセスのみが許可される。このため、拡張サーバ１０４1〜１０４N、１０６1〜１０６Nは記憶装置１０７Ａに対してＰＣＩｅインタフェイスを１系統のみ備える。
【０１９１】
主サーバとしての第０−０のサーバ１０３と第１−０のサーバ１０５は、メモリ空間上に統合エンドポイント１０１1と記憶装置１０７Ａの２つをエンドポイントとしてマッピングを行う。ただし、第０−０のサーバ１０３と第１−０のサーバ１０５のマッピングについての作業は、通常の動作と同一である。
【０１９２】
＜動作の説明＞
【０１９３】
図１７は、本実施の形態のエンドポイント共有システムにおけるデータの転送処理の様子を表わしたものである。図１７では、第１の統合エンドポイント１０１1、主サーバとしての第０−０のサーバ１０３、記憶装置１０７および拡張サーバとしての第０−１のサーバ１０４1を例にしてデータの転送処理を説明する。既に説明したように第１の統合エンドポイント１０１1と直接アクセスすることができるのは、この図１７に示した中では第０−０のサーバ１０３のみである。統合エンドポイント１０１1と第０−１のサーバ１０４1の間のデータのやり取りは、記憶装置１０７を介してのデータ転送という形となる。
【０１９４】
＜統合エンドポイントから主サーバおよび拡張サーバへのデータ転送＞
【０１９５】
第１の統合エンドポイント１０１1は、転送データとしてＰＣＩｅパケット６０１を送信する（ステップＳ７０１）。ＰＣＩｅパケット６０１は、ＰＣＩｅヘッダとデータ本体としてのＰＣＩｅデータから構成されている。主サーバとしての第０−０のサーバ１０３がこのＰＣＩｅパケットを受信する。
【０１９６】
第０−０のサーバ１０３は、第１の統合エンドポイント１０１1からＰＣＩｅパケットを受信すると、ディスクリプタ（descriptor）とデータ領域の間に、サーバ（Server）名、統合エンドポイント（ＥＰ）番号およびエンドポイント（ＥＰ）番号から構成されるヘッダフィールド６０２を挿入する。そして、このＰＣＩｅパケット６０１を記憶装置１０７に転送する（ステップＳ７０２）。ここで、「サーバ名」にはこのＰＣＩｅパケットをどのサーバ上のアプリケーションで実行するかを示すサーバ名を挿入する。
【０１９７】
ＰＣＩｅパケットを処理するサーバの決定は、主サーバとしての第０−０のサーバ１０３上で操作するソフトウェアであるＰＳ＃０−４とＰＳ＃１−４（図１０参照）が連携して実行する。ここでソフトウェアＰＳ＃０−４は、各サーバの負荷状況（ＣＰＵ使用率、メモリ使用率等）を基にして、アプリケーションを実行するサーバをたとえば負荷の軽いものに決定する。第０−０のサーバ１０３は、転送先のサーバ名を決定すると、記憶装置ＣＴＬ部５０９(図１５)に対して転送先サーバ名を通知する。記憶装置ＣＴＬ部５０９では、転送を受けたＰＣＩｅパケット６０１のサーバ名フィールドに、ソフトウェアＰＳ＃０−４が決定した情報を基にしてサーバ名を挿入する。
【０１９８】
記憶装置１０７では、転送を受けたＰＣＩｅパケット６０１の統合ＥＰ番号およびＥＰ番号フィールドに、このＰＣＩｅパケット６０１の送信元の統合エンドポイント番号と、エンドポイントの番号を挿入する。これにより、拡張サーバとしての第０−１のサーバ１０４1では、ヘッダフィールド６０２の統合ＥＰ番号およびＥＰ番号フィールドに記載された番号を基にして受信したパケットが、どのような機能を持つエンドポイント１１１（図５）から送信されてきたパケットであるかを判定することが可能になる。また、所定のデバイスドライバに渡すことで、アプリケーションに対してパケットを渡すことが可能となる。
【０１９９】
記憶装置１０７では、主サーバとしての第０−０のサーバ１０３から転送されてきたデータが１次共有メモリ１９１に書き込まれたことを検出する（ステップＳ７０３）。そして、ＰＣＩｅパケット６０１の転送先が記憶装置ＣＴＬ部５０９(図１５)から通知されると（ステップＳ７０４）、第０のメモリ間ＣＴＬ部５０３で転送先サーバ名を記載する。その後、サーバ（Server）名フィールドに記載されたサーバに対応した２次共有メモリ１９２にＰＣＩｅパケット６０１を転送する（ステップＳ７０５）。
【０２００】
拡張サーバとしての第０−１のサーバ１０４1は、各サーバごとに２次共有メモリ１９２に自サーバ宛のデータが書き込まれていないか周期的に監視を行う。第０−１のサーバ１０４1は、データが書き込まれたことを確認すると、２次共有メモリ１９２からデータの読み出しを実行する（ステップＳ７０６）。
【０２０１】
＜主サーバおよび拡張サーバからエンドポイントへのデータの転送＞
【０２０２】
拡張サーバとしての第０−１のサーバ１０４1上のアプリケーションがエンドポイントに対してデータの送信を行うものとする。この場合、エンドポイント送信用のＰＣＩｅパケット６１１が第０−１のサーバ１０４1上のアプリケーションで作成される。このＰＣＩｅパケット６１１にサーバ名、統合エンドポイント番号およびエンドポイント番号から構成されるヘッダフィールド６１２を挿入し、２次共有メモリ１９２に対してデータの書き込みを実行する（ステップＳ７１１）。
【０２０３】
ここで、ヘッダフィールド６１２におけるサーバ名には、処理を実行したサーバ名を挿入する。また拡張エンドポイント番号とエンドポイント番号に対しては、データの送信処理が、エンドポイントから受信したデータに対するレスポンスである場合は、受信時と同じ番号を記載する。これにより、最終的にエンドポイントにデータを送信する主サーバとしての第０−０のサーバ１０３が、どの統合エンドポイントあるいはエンドポイントに対してデータを送信するかの判定が可能になる。
【０２０４】
なお、この例ではＰＣＩｅパケット６１１の送出先は第１の統合エンドポイント１０１1のみである。したがって拡張サーバとしての第０−１のサーバ１０４1が宛先を判断できないという事態は発生しない。図５に示した第１および第２の統合エンドポイント１０１1、１０１2のように複数の統合エンドポイントが存在する場合がある。このような場合には、第０−１のサーバ１０４1がこれらのいずれを宛先にするかを判断できない場合が想定される。この場合、第０−１のサーバ１０４1は統合エンドポイント番号に対して「ドントケア（Don't Care）」を付与する。
【０２０５】
記憶装置１０７は、拡張サーバとしての第０−１のサーバ１０４1あるいは主サーバとしての第０−０のサーバ１０３から２次共有メモリ１９２に書き込みが行われたことを検出すると、このデータを１次共有メモリ１９１に転送する（ステップＳ７１２）。
【０２０６】
主サーバとしての第０−０のサーバ１０３は、記憶装置１０７の１次共有メモリ１９１にエンドポイントへの送信データが書き込まれていないか周期的に監視を行う。第０−０のサーバ１０３は、１次共有メモリ１９１にこの送信データが書き込まれたことを確認すると、この送信データの読み出しを実行する（ステップＳ７１３）。
【０２０７】
第０−０のサーバ１０３は、読み込んだＰＣＩｅパケット６１１に挿入されたヘッダフィールド（拡張ヘッダ）６１２を削除する。そして削除したヘッダフィールド６１２におけるエンドポイント番号に記載された番号を用いて、どのエンドポイントに対してＰＣＩｅパケット６１１を送信するかを決定する。第０−０のサーバ１０３は、次に該当するエンドポイントに対応するデバイスドライバを用いて、そのエンドポイント（この場合には第１統合エンドポイント１０１1）に対してＰＣＩｅパケット６１１の送信を実施する（ステップＳ７１４）。
【０２０８】
先に説明したようにヘッダフィールド６１２の統合エンドポイント番号に「ドントケア（Don't Care）」が付与されている場合がある。この場合には主サーバとしての第０−０のサーバ１０３が送信先の統合エンドポイントを決定する。そして、この決定した統合エンドポイントに対してＰＣＩｅパケット６１１を送信することになる。
【０２０９】
以上説明したように本実施の形態のエンドポイント共有システム１００によれば、次のような効果がある。
【０２１０】
第１の効果として、本実施の形態では複数のＣＰＵが同一のエンドポイントにアクセスできる。エンドポイントについては、ＰＣＩｅに準拠したデバイスを、そのまま用いることが可能である。
【０２１１】
第２の効果として、本実施の形態では、ＣＰＵの切り替えを高速に実現することが可能になる。これは、エンドポイントにアクセスできるＣＰＵを切り替える際に、エンドポイントに対するリセットや再設定処理が不要なためである。
【０２１２】
第３の効果として、本実施の形態では、ＣＰＵ側の負荷に応じてサーバを増減設可能な、スケーラビリティの高いシステムを構築することが可能となる。これは、ＡＣＴ系ＣＰＵとＳＢＹ系ＣＰＵを物理的に分離された複数のＣＰＵで構成可能なためである。
【０２１３】
第４の効果として、本実施の形態では、エンドポイント側の負荷に応じて統合エンドポイントを増減設可能な、スケーラビリティの高いシステムを構築することが可能である。これは、物理的に分離された複数のＥＰをシステムに組み込むためである。
【０２１４】
第５の効果として、本実施の形態では、ＣＰＵ側の負荷（ソフトウェア処理）と、エンドポイント側の負荷（ハードウェア処理）に応じて、負荷の状況に対応した個別に増減設可能なスケーラビリティの高いシステムを構築することが可能である。
【０２１５】
第６の効果として、本実施の形態では、メモリを利用したサーバ間データ送受信方法を実現することで、エンドポイントを接続していないサーバから、エンドポイントに対してデータの入出力を可能とするシステムを構築することが可能である。
【０２１６】
第７の効果として、本実施の形態では記憶装置に汎用品および標準化された規格の半導体メモリを使用した。これにより、記憶装置およびこれを使用したエンドポイント共有システム１００を安価に構成することができる。また、本実施の形態では各サーバと記憶装置１０７の間をＰＣＩｅで接続する。サーバから直接、ＰＣＩｅのパケットを記憶装置に対して転送することで、ハードディスクへのデータのやり取りの際に発生するＳＡＳ（Serial Attached SCSI）、ＳＡＴＡ（SerialATA）等のプロトコルを省力することが可能になる。これにより、プロトコルのオーバヘッドを削減し、サーバに搭載されているＣＰＵの処理の負荷を低減することが可能となる。
【０２１７】
第８の効果として、本実施の形態では記憶装置をサーバ間のデータの受け渡しに主として使用している。このような用途ではデータ転送の高速化が必要であるが、大容量化は必ずしも必要とされない。このような場合に半導体メモリを使用してハードディスクの使用を避けると、システムの信頼性を向上させることができる。ハードディスクは機械的に駆動する部品が含まれるため、故障が発生する可能性が高く、信頼性の点でネックとなるからである。
【０２１８】
第９の効果として、本実施の形態ではＰＣＩｅのパケットに統合エンドポイントの番号を組み込むことで、複数の統合エンドポイントに対応して宛先のエンドポイントにデータを転送することが可能になる。また、データの転送の宛先等の情報を記した拡張ヘッダの付与により、エンドポイントに接続されていない拡張サーバがどのような種類のエンドポイントからのデータを受信したかを容易に判別し、所定のアプリケーションに対してデータを渡すことが可能になる。また、送信の際には、どのエンドポイントに対してデータを渡すべきかをエンドポイントに接続するサーバに通知することで、正しくデータを宛先のエンドポイントに送信することが可能になる。
【０２１９】
＜発明の変形可能性＞
【０２２０】
先の実施の形態で示したように複数の統合エンドポイントを実装することで、必要とされる処理能力に応じた統合エンドポイントの増減設が可能となり、汎用性の高いシステムを構築することが可能になる。しかしながら、統合エンドポイントを増設するためには、既に説明したように主サーバに対して統合エンドポイントとの接続用のＰＣＩｅ  ＮＩＣカードを増設する必要がある。しかし、サーバの増設スロット数には制限があるため、システムとして必要とされる統合エンドポイントを増設できない可能性がある。
【０２２１】
ＰＣＩｅでは、データがＰＣＩｅパケットとして転送される。このため、他のプロトコルでＰＣＩｅパケットをカプセル化することが可能である。
【０２２２】
図１８は、本発明の第１の変形例におけるエンドポイント共有システムの構成を表わしたものである。この変形例のエンドポイント共有システム１００Ｂで図５と同一部分には同一の符号を付しており、これらの説明を適宜省略する。
【０２２３】
この第１の変形例のエンドポイント共有システム１００Ｂでは、第０−０のサーバ１０３ＢのＰＣＩｅ  ＮＩＣカード（ＰＣＩｅ  ＮＩＣ＃００１）１２１Ｂが第１のイーサネット（登録商標）スイッチ８０１の一端に接続されている。この第１のイーサネット（登録商標）スイッチ８０１の他端には、第１の統合エンドポイント１０１1の第０のポート１５１0Ｂと第２の統合エンドポイント１０１2の第０のポート（図示せず）が接続されている。同様に、第１−０のサーバ１０５ＢのＰＣＩｅ  ＮＩＣカード（ＰＣＩｅ  ＮＩＣ＃１０１）１２５Ｂが第２のイーサネット（登録商標）スイッチ８０２の一端に接続されている。この第２のイーサネット（登録商標）スイッチ８０２の他端には、第１の統合エンドポイント１０１1の第１のポート１５１1Ｂと第２の統合エンドポイント１０１2の第０のポート（図示せず）が接続されている。
【０２２４】
すなわち、第１の変形例のエンドポイント共有システム１００Ｂでは、イーサネット（登録商標）フレームでカプセル化を行う。これにより、イーサネット（登録商標）のＭＡＣアドレス（Media Access Control address）をベースにしてサーバ、および複数のエンドポイントの識別を行い、宛先を指定することが可能になる。このためには、主サーバとしての第０−０のサーバ１０３Ｂと第１−０のサーバ１０５Ｂの双方に、ＰＣＩｅパケットをイーサネット（登録商標）フレームにカプセル化するためのＰＣＩｅ  ＮＩＣカード１２１Ｂ、１２５Ｂを実装している。また、第１および第２の統合エンドポイント１０１1、１０１2側にも、第０のポート１５１0Ｂと第１のポート１５１1ＢのようにＰＣＩｅパケットのイーサネット（登録商標）カプセル化機能を追加している。
【０２２５】
各サーバ１０３Ｂ、１０４1、１０５Ｂ、１０６1と第１および第２の統合エンドポイント１０１1、１０１2の間はイーサネット（登録商標）で接続される。したがって、第０−０および第０−１のサーバ１０３Ｂ、１０５Ｂと第１および第２の統合エンドポイント１０１1、１０１2の間に第１および第２のイーサネット（登録商標）スイッチ８０１、８０２を介在させることで、パケットの宛先を制御することが可能になる。この結果として、第０−０および第０−１のサーバ１０３Ｂ、１０５Ｂに実装されているＰＣＩｅスロット数に依存することなく、第１および第２の統合エンドポイント１０１1、１０１2等の統合エンドポイントの数を増減させることができる。たとえば第０−０のサーバ１０３Ｂは１枚のＰＣＩｅ  ＮＩＣカード（ＰＣＩｅ  ＮＩＣ＃００１）１２１Ｂが第１のイーサネット（登録商標）スイッチ８０１を介することで、任意の数の統合エンドポイントの第０のポート１５１0Ｂと接続可能である。
【０２２６】
このように第１の変形例によれば、サーバ群を構成する１台の第０−０のサーバ１０３Ｂ等の主サーバに対して、サーバ１０４1等の拡張サーバを複数台増設することができる。
【０２２７】
図１９は、本発明の第２の変形例として、統合エンドポイントと各系の拡張サーバが共にＮ台となったエンドポイント共有システムを表わしたものである。ここで数値Ｎは２以上の整数である。図１９に示した第２の変形例のエンドポイント共有システム１００Ｃで、図５と同一部分には同一の符号を付しており、これらの説明を適宜省略する。
【０２２８】
第２の変形例のエンドポイント共有システム１００Ｃでは、記憶装置１０７ＣがＬＡＮ１１５に接続すると共に、ＡＣＴ系サーバ群９０１とＳＢＹ系サーバ群９０２と接続している。ここでＡＣＴ系サーバ群９０１は１台の主サーバとしての第１の主サーバ９１１と、第０−１〜第０−Ｎの拡張サーバ９１２1〜９１２Nから構成されている。ＳＢＹ系サーバ群９０２は同じく１台の主サーバとしての第２の主サーバ９２１と、第０−１〜第０−Ｎの拡張サーバ９２２1〜９２２Nから構成されている。
【０２２９】
第１の主サーバ９１１は記憶装置１０７Ｃと、エンドポイント（ＥＰ）通信用ＰＣＩｅケーブル９３１で接続される。また、第１の主サーバ９１１と第０−１〜第０−Ｎの拡張サーバ９１２1〜９１２Nは、それぞれ個別のサーバ間通信用ＰＣＩｅケーブル９３２0〜９３２Nで記憶装置１０７Ｃと接続される。同様に、第２の主サーバ９２１は記憶装置１０７Ｃと、エンドポイント（ＥＰ）通信用ＰＣＩｅケーブル９４１で接続される。また、第２の主サーバ９２１と第０−１〜第０−Ｎの拡張サーバ９２２1〜９２２Nは、それぞれ個別のサーバ間通信用ＰＣＩｅケーブル９４２0〜９４２Nで記憶装置１０７Ｃと接続される。更に第１の主サーバ９１１と第２の主サーバ９２１は、それぞれイーサネット（登録商標）スイッチ８０１Ｃを介して第１〜第Ｎの統合エンドポイント（ＥＰ）１０１1〜１０１Nと接続されている。
【０２３０】
第２の変形例のエンドポイント共有システム１００Ｃは、Ｎ台の統合エンドポイント（ＥＰ）１０１1〜１０１Nと、Ｎ台ずつの第０−１〜第０−Ｎの拡張サーバ９１２1〜９１２Nおよび第０−１〜第０−Ｎの拡張サーバ９２２1〜９２２Nから成る。このようにエンドポイント共有システム１００Ｃでは、サーバ群を構成する１台の主サーバ９１１（主サーバ９２１）に対して拡張サーバを複数台増設することが可能になっている。しかも、これらＡＣＴ系サーバ群９０１とＳＢＹ系サーバ群９０２についてのソフトウェア処理と、第１〜第Ｎの統合エンドポイント（ＥＰ）１０１1〜１０１Nについてのハードウェア処理を分離して、個別に必要な数の増減設が可能である。
【０２３１】
しかも、第２の変形例ではソフトウェア処理による各サーバ９１１、９１２、９２１、９２２と、ハードウェア処理による統合エンドポイント１０１をカプセル化したイーサネット（登録商標）経由で接続している。これにより、イーサネット（登録商標）で接続した各サーバ９１１、９１２、９２１、９２２と統合ＥＰ１０１を、仮想的に１つのシステムとして構成することが可能になる。また、記憶装置１０７Ｃは、主サーバ９１１、９２１の間を２系統のＰＣＩｅケーブルで接続し、拡張サーバ９１２、９２２の間を１系統のＰＣＩｅケーブルで接続している。これにより、統合エンドポイント１０１と各サーバ（主サーバ９１１、９２１および拡張サーバ９１２、９２２）間のデータ転送を実現することが可能になる。この結果、物理的に分離された、サーバ群９０１、９０２、統合エンドポイント群１０１1〜１０１Nおよび記憶装置１０７Ｃを、仮想的に１つのシステムとして制御することが可能となる。
【０２３２】
以上説明した実施の形態の一部または全部は、以下の付記のようにも記載されるが、以下の記載に限定されるものではない。
【０２３３】
（付記１）
コンピュータ用拡張バスアーキテクチャとしてのＰＣＩ（Peripheral Component Interconnect）機能を代理する機能部としてのＰＣＩプロシキ（Proxy）機能部と、複数のエンドポイントとから構成された統合エンドポイントにおける所定のエンドポイントから現用系のサーバとしての主サーバにＰＣＩｅパケットを送信する統合エンドポイント側送信手段と、
この統合エンドポイント側送信手段の送信したＰＣＩｅパケットに格納されたデータを処理する拡張サーバを決定する拡張サーバ決定手段と、
この拡張サーバ決定手段で決定した拡張サーバのサーバ名を前記ＰＣＩｅパケットに挿入する拡張サーバ名挿入手段と、
この拡張サーバ名挿入手段でサーバ名を挿入したＰＣＩｅパケットを前記主サーバから所定の記憶装置に送信する主サーバ側送信手段と、
この主サーバ側送信手段で送信したＰＣＩｅパケットを受信して前記記憶装置内の１次共有メモリに書き込む１次共有メモリ書込手段と、
この１次共有メモリ書込手段で前記１次共有メモリに書き込んだＰＣＩｅパケットを、アクティブ系およびスタンバイ系の各サーバのそれぞれに個別に対応して設けられこれらのサーバとの間のデータの個別転送に使用する２次共有メモリのうちの前記拡張サーバ決定手段で決定した２次共有メモリに転送する２次共有メモリ転送手段
とを具備することを特徴とするエンドポイント共有システム。
【０２３４】
（付記２）
コンピュータ用拡張バスアーキテクチャとしてのＰＣＩ（Peripheral Component Interconnect）機能を代理する機能部としてのＰＣＩプロシキ（Proxy）機能部と、複数のエンドポイントとから構成された統合エンドポイントにおける特定のエンドポイントに対して任意の主サーバおよび拡張サーバがデータの送信を行うときそのＰＣＩｅパケットに前記特定のエンドポイントを表わす識別情報を挿入する拡張サーバ側挿入手段と、
この拡張サーバ側挿入手段で前記識別情報を挿入したＰＣＩｅパケットを、それぞれの主サーバおよび拡張サーバに個別に対応して設けられこれらのサーバとの間のデータの個別転送に使用する複数の２次共有メモリのうちの送信元の前記任意の主サーバおよび拡張サーバに対応する２次共有メモリに格納する２次共有メモリ格納手段と、
この２次共有メモリ格納手段が前記２次共有メモリのいずれかにＰＣＩｅパケットを格納したとき前記識別情報を読み出してこの識別情報から判別されるエンドポイント宛にＰＣＩｅパケットを送信するＰＣＩｅパケット送信手段
とを具備することを特徴とするエンドポイント共有システム。
【０２３５】
（付記３）
前記主サーバおよび拡張サーバは１組あるいは複数組存在することを特徴とする請求項１または請求項２記載のエンドポイント共有システム。
【０２３６】
（付記４）
前記統合エンドポイントは１組あるいは複数組存在することを特徴とする請求項１または請求項２記載のエンドポイント共有システム。
【０２３７】
（付記５）
前記拡張サーバ決定手段は、各サーバの負荷状況の軽い拡張サーバを決定することを特徴とする請求項１記載のエンドポイント共有システム。
【０２３８】
（付記６）
前記記憶装置は半導体メモリによって構成されることを特徴とする請求項１記載のエンドポイント共有システム。
【０２３９】
（付記７）
前記２次共有メモリは半導体メモリによって構成されることを特徴とする請求項２記載のエンドポイント共有システム。
【０２４０】
（付記８）
コンピュータ用拡張バスアーキテクチャとしてのＰＣＩ（Peripheral Component Interconnect）機能を代理する機能部としてのＰＣＩプロシキ（Proxy）機能部と、複数のエンドポイントとから構成された統合エンドポイントにおける所定のエンドポイントから現用系のサーバとしての主サーバにＰＣＩｅパケットを送信する統合エンドポイント側送信ステップと、
この統合エンドポイント側送信ステップで送信したＰＣＩｅパケットを受信した主サーバがこのＰＣＩｅパケットに格納されたデータを処理する拡張サーバを決定する拡張サーバ決定ステップと、
この拡張サーバ決定ステップで決定した拡張サーバのサーバ名を前記ＰＣＩｅパケットに挿入する拡張サーバ名挿入ステップと、
この拡張サーバ名挿入ステップでサーバ名を挿入したＰＣＩｅパケットを前記主サーバから所定の記憶装置に送信する主サーバ側送信ステップと、
この主サーバ側送信ステップで送信したＰＣＩｅパケットを受信して前記記憶装置内の１次共有メモリに書き込む１次共有メモリ書込ステップと、
この１次共有メモリ書込ステップで前記１次共有メモリに書き込んだＰＣＩｅパケットを、アクティブ系およびスタンバイ系の各サーバのそれぞれに個別に対応して設けられこれらのサーバとの間のデータの個別転送に使用する２次共有メモリのうちの前記拡張サーバ決定ステップで決定した２次共有メモリに転送する２次共有メモリ転送ステップ
とを具備することを特徴とするデータ転送方法。
【０２４１】
（付記９）
コンピュータ用拡張バスアーキテクチャとしてのＰＣＩ（Peripheral Component Interconnect）機能を代理する機能部としてのＰＣＩプロシキ（Proxy）機能部と、複数のエンドポイントとから構成された統合エンドポイントにおける特定のエンドポイントに対してデータの送信を行う任意の主サーバおよび拡張サーバがＰＣＩｅパケットに前記特定のエンドポイントを表わす識別情報を挿入する拡張サーバ側挿入ステップと、
この拡張サーバ側挿入ステップで前記識別情報を挿入したＰＣＩｅパケットを、それぞれの主サーバおよび拡張サーバに個別に対応して設けられこれらのサーバとの間のデータの個別転送に使用する複数の２次共有メモリのうちの自サーバに対応する２次共有メモリに格納する２次共有メモリ格納ステップと、
この２次共有メモリ格納ステップで前記２次共有メモリのいずれかにＰＣＩｅパケットが格納されたとき前記識別情報を読み出してこの識別情報から判別されるエンドポイント宛にＰＣＩｅパケットを送信するＰＣＩｅパケット送信ステップ
とを具備することを特徴とするデータ転送方法。
【符号の説明】
【０２４２】
１０、２０、１００、１００Ａ、１００Ｂ、１００Ｃ  エンドポイント共有システム
１１  統合エンドポイント側送信手段
１２  拡張サーバ決定手段
１３  拡張サーバ名挿入手段
１４  主サーバ側送信手段
１５  １次共有メモリ書込手段
１６  ２次共有メモリ転送手段
２１  拡張サーバ側挿入手段
２２  ２次共有メモリ格納手段
２３  ＰＣＩｅパケット送信手段
３０、４０  データ転送方法
３１  統合エンドポイント側送信ステップ
３２  拡張サーバ決定ステップ
３３  拡張サーバ名挿入ステップ
３４  主サーバ側送信ステップ
３５  １次共有メモリ書込ステップ
３６  ２次共有メモリ転送ステップ
４１  拡張サーバ側挿入ステップ
４２  ２次共有メモリ格納ステップ
４３  ＰＣＩｅパケット送信ステップ
１０１1  第１の統合エンドポイント
１０１2  第２の統合エンドポイント
１０３  第０−０のサーバ（Ｓｅｒｖｅｒ＃０−０）
１０４1  第０−１のサーバ（Ｓｅｒｖｅｒ＃０−１）
１０５  第１−０のサーバ（Ｓｅｒｖｅｒ＃１−０）
１０６1  第１−１のサーバ（Ｓｅｒｖｅｒ＃１−１）
１０７  記憶装置
１１１  エンドポイント
１２１〜１２８、１３１、１３２  ＰＣＩｅ  ＮＩＣカード
１４１  ＰＣＩプロシキ機能部
１５１0  第０のポート
１５１1  第１のポート
１５２  ＡＣＴ・ＳＢＹ選択機能部
１５４0  第０の仮想ＰＣＩｅコンフィグ（Configuration）レジスタ
１５４1  第１の仮想ＰＣＩｅコンフィグ（Configuration）レジスタ
１５５  コンフィグ制御部
１５８  アドレス変換・振り分け機能部
１６１、１６２  ピーシーアイエクスプレスケーブル
１９１  １次共有メモリ
１９２  ２次共有メモリ
５０１  第０のエンドポイント間ＣＴＬ（ＥＰ間ＣＴＬ）部
５０２  第１のエンドポイント間ＣＴＬ（ＥＰ間ＣＴＬ）部
５０３  第０のメモリ間ＣＴＬ（ＭＥＭ間ＣＴＬ）部
５０４  第１のメモリ間ＣＴＬ（ＭＥＭ間ＣＴＬ）部
５０５  第０−０のサーバ間ＣＴＬ部
５０６  第０−１のサーバ間ＣＴＬ部
５０７  第１−０のサーバ間ＣＴＬ部
５０８  第１−１のサーバ間ＣＴＬ部
５０９  記憶装置ＣＴＬ部
６０１、６１１  ＰＣＩｅパケット
６０２、６１２  ヘッダフィールド
１９３  出力メモリ（ＯｕｔｐｕｔＭｅｍ）領域
１９４  入力メモリ（ＩｎｐｕｔＭｅｍ）領域
１９５  出力メモリサーバ領域
１９６  入力メモリサーバ領域
【図１】
0005482263.tif 000003
【図２】
0005482263.tif 000004
【図３】
0005482263.tif 000005
【図４】
0005482263.tif 000006
【図５】
0005482263.tif 000007
【図６】
0005482263.tif 000008
【図７】
0005482263.tif 000009
【図８】
0005482263.tif 000010
【図９】
0005482263.tif 000011
【図１０】
0005482263.tif 000012
【図１１】
0005482263.tif 000013
【図１２】
0005482263.tif 000014
【図１３】
0005482263.tif 000015
【図１４】
0005482263.tif 000016
【図１５】
0005482263.tif 000017
【図１６】
0005482263.tif 000018
【図１７】
0005482263.tif 000019
【図１８】
0005482263.tif 000020
【図１９】
0005482263.tif 000021
【図２０】
0005482263.tif 000022
【図２１】
0005482263.tif 000023