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