(57)【要約】【課題】複数の情報処理装置がメモリ空間を共有することを可能とする通信装置を提供する。【解決手段】ファブリックに接続された複数の情報処理装置のそれぞれに実装される通信装置であって、ＰＣＩｅ（Peripheral Component Interconnect Express）規格の第１パケットを送受信するシリアルインタフェースと、シリアルインタフェースから第１パケットを取得し、取得した第１パケットを、情報処理装置に固有の装置識別子を用いて仮想的に拡張されたメモリ空間を共有する複数の情報処理装置の間でファブリックを介して送受信される第２パケットに変換するリクエスタ部と、ファブリックを介して第２パケットを送受信するファブリック通信部と、ファブリック通信部から第２パケットを取得し、取得した第２パケットに含まれるリクエストに対する応答パケットを生成するコンプリータ部とを備える通信装置とする。【選択図】      図１
2020087238.tif 000002
【特許請求の範囲】
【請求項１】
ファブリックに接続された複数の情報処理装置のそれぞれに実装される通信装置であって、
ＰＣＩｅ（Peripheral Component Interconnect Express）規格の第１パケットを送受信するシリアルインタフェースと、
前記シリアルインタフェースから前記第１パケットを取得し、取得した前記第１パケットを、前記情報処理装置に固有の装置識別子を用いて仮想的に拡張されたメモリ空間を共有する複数の前記情報処理装置の間で前記ファブリックを介して送受信される第２パケットに変換するリクエスタ部と、
前記ファブリックを介して前記第２パケットを送受信するファブリック通信部と、
前記ファブリック通信部から前記第２パケットを取得し、取得した前記第２パケットに含まれるリクエストに対する応答パケットを生成するコンプリータ部とを備える通信装置。
【請求項２】
前記リクエスタ部は、
前記シリアルインタフェースから前記第１パケットを取得し、取得した前記第１パケットに基づいて他の前記情報処理装置に対するアクセスの有無を判定するアドレス判定回路と、
前記メモリ空間を共有する複数の前記情報処理装置のそれぞれにメモリアドレスに含まれるビットを対応付ける宛先管理テーブルと、
前記アドレス判定回路から前記第１パケットを取得し、前記宛先管理テーブルを参照して前記第１パケットの送信先を判定し、前記第１パケットの送信先の前記情報処理装置の前記装置識別子と前記第１パケットとを出力する宛先判定回路と、
前記第１パケットの送信先の前記装置識別子と、前記第１パケットに対する前記応答パケットをコンプリーションするのに用いられるコンプリーション情報と、送信先の前記装置識別子と前記コンプリーション情報との組合せに付与されるタグの値とをセットにした第１変換情報が登録される第１パケット管理テーブルと、
前記第１パケットの送信先の前記装置識別子と前記第１パケットとを前記宛先判定回路から取得し、前記メモリ空間を共有する前記情報処理装置に送信する前記第１パケットを、前記ファブリックを介して送受信される前記第２パケットに変換する要求パケット送信回路と、
前記ファブリック通信部から前記第２パケットを取得し、前記第１パケット管理テーブルを参照して前記第２パケットを前記第１パケットに変換し、前記第１パケット管理テーブルの前記第１変換情報を更新する応答パケット受信回路とを有し、
前記要求パケット送信回路は、
前記第１パケットに含まれるリクエストがメモリリードであった場合、前記第２パケットのタグの値を変換し、前記タグの値が変換された前記第２パケットを前記ファブリック通信部に送信するとともに、前記第１パケット管理テーブルに前記第１変換情報を登録する請求項１に記載の通信装置。
【請求項３】
前記宛先管理テーブルには、
前記メモリ空間を共有する複数の前記情報処理装置のそれぞれに対応付けられたメモリアドレスの上位ビットと前記情報処理装置とを対応付けるレコードが格納される請求項２に記載の通信装置。
【請求項４】
前記宛先管理テーブルには、
前記メモリ空間を共有する複数の前記情報処理装置のそれぞれに対応付けられたメモリアドレスの上位ビットと前記情報処理装置とを対応付けるレコードが複数の時刻に対応付けられて格納される請求項２に記載の通信装置。
【請求項５】
前記コンプリータ部は、
前記第２パケットの前記タグの値と、送信元の前記情報処理装置に固有の前記装置識別子とをセットにした第２変換情報が登録される第２パケット管理テーブルと、
前記ファブリック通信部から前記第２パケットを取得し、取得した前記第２パケットの前記装置識別子の値を自装置の前記装置識別子に差し替えるとともに前記タグの値を変換して前記第１パケットを生成し、前記第２パケット管理テーブルに前記第２変換情報を登録する要求パケット受信回路と、
前記第１パケットに含まれる前記リクエストがメモリリードであった場合、前記第１パケットに含まれる前記リクエストに対する前記応答パケットを前記シリアルインタフェースから取得し、前記第２パケット管理テーブルに登録された前記第２変換情報に基づいて、取得した前記応答パケットに含まれる前記装置識別子と前記タグの値とを変換して前記第２パケットを生成し、生成した前記第２パケットを前記ファブリック通信部に送信し、前記第２パケット管理テーブルに登録された前記第２変換情報を更新する応答パケット送信回路とを有する請求項２乃至４のいずれか一項に記載の通信装置。
【請求項６】
前記第１パケット管理テーブルには、
前記第１パケットの送信先の前記情報処理装置に固有の前記装置識別子と、前記第１パケットを前記第２パケットに変換するのに用いられた前記コンプリーション情報と、前記装置識別子と前記コンプリーション情報とを対応付ける前記タグの値とをセットにした前記第１変換情報が登録され、
前記第２パケット管理テーブルには、
前記第２パケットの送信元の前記情報処理装置に固有の前記装置識別子と、前記装置識別子に対応づけられた前記タグの値とをセットにした前記第２変換情報が登録される請求項５に記載の通信装置。
【請求項７】
前記第１パケット管理テーブルおよび前記第２パケット管理テーブルには、前記タグの値の使用状況を示すフラグが設定され、
前記リクエスタ部および前記コンプリータ部は、
前記第２パケット管理テーブルの前記フラグに基づいて未使用の前記タグの値を用いる請求項６に記載の通信装置。
【請求項８】
請求項１乃至７のいずれか一項に記載の通信装置が実装される情報処理装置。
【請求項９】
複数の情報処理装置と、
複数の前記情報処理装置を接続するファブリックと、
複数の前記情報処理装置のそれぞれに実装され、ＰＣＩｅ（Peripheral Component Interconnect Express）規格の第１パケットを送受信するシリアルインタフェースと、前記シリアルインタフェースから前記第１パケットを取得し、取得した前記第１パケットを、前記情報処理装置に固有の装置識別子を用いて仮想的に拡張されたメモリ空間を共有する複数の前記情報処理装置の間で前記ファブリックを介して送受信される第２パケットに変換するリクエスタ部と、前記ファブリックを介して前記第２パケットを送受信するファブリック通信部と、前記ファブリック通信部から前記第２パケットを取得し、取得した前記第２パケットに含まれるリクエストに対する応答パケットを生成するコンプリータ部とを有する通信装置とを備える情報処理システム。
【請求項１０】
ファブリックに接続された複数の情報処理装置によって構成される情報処理システムにおける通信方法であって、
ＰＣＩｅ（Peripheral Component Interconnect Express）規格の第１パケットを受信し、
受信した前記第１パケットを、前記情報処理装置に固有の装置識別子を用いて仮想的に拡張されたメモリ空間を共有する複数の前記情報処理装置の間で前記ファブリックを介して送受信される第２パケットに変換し、
前記ファブリックを介して前記第２パケットを送受信し、
受信した前記第２パケットに含まれるリクエストに対する応答パケットを生成する通信方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信装置、情報処理システム、および通信方法に関する。
【背景技術】
【０００２】
複数の情報処理装置間でメモリ空間を共有する場合、ＲＤＭＡ（Remote Direct Memory Access）やＮＴＢ（Non Transparent Bridge）などが用いられる。ＲＤＭＡを用いれば、それぞれの情報処理装置が別々にメモリ空間を管理するため、処理のオーバヘッドが存在する。ＮＴＢを用いれば、他の情報処理装置のメモリ空間に直接アクセスできるが、ＰＣＩｅ Ｅｘｐｒｅｓｓ（登録商標）がベースとなっているために６４ｂｉｔに制限される（ＰＣＩ：Peripheral Component Interconnect）。
【０００３】
特許文献１には、あるクラスタのプロセスの仮想空間から他クラスタのプロセスの仮想空間へのデータ転送を、オペレーティングシステム内部に設けたバッファへのコピーをすることなく実行するプロセッサ間通信方法について開示されている。特許文献１の方法では、ユーザプロセス内の仮想の通信領域の先頭アドレスを全クラスタにおいて同一にセットし、メモリ上の連続領域にある実の通信領域に領域の先頭から順番に仮想の通信領域を割り当てる。
【０００４】
特許文献２には、共用アドレス可能メモリ空間を有するコンピュータシステムについて開示されている。特許文献２のシステムは、持続性メモリ装置と、複数のコンピュータとを含む。持続性メモリ装置は、コンピュータ可読情報を表すデータ信号を伝送するデータネットワークに接続され、データ信号のための持続性記憶域を有する。各コンピュータは、データネットワークにアクセスしてデータ信号を交換するインタフェースと、アドレス可能メモリ空間の一部を持続性記憶域の一部にマッピングしてデータ信号にアドレス可能持続性記憶域を設ける共用メモリ・サブシステムとを含む。
【０００５】
特許文献３には、マルチプロセッサバスに複数のプロセッサが接続されたマルチプロセッサシステムのメモリアクセス方式について開示されている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開平０６−０１９８５６号公報
【特許文献２】特開平１０−２５４７６１号公報
【特許文献３】特開昭６３−１１１５６３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
特許文献１の方法によれば、送信先のアドレスを事前に計算することによってメモリ共有が可能になる。しかしながら、特許文献１の方法では、クラスタ構成ではない全く異なる情報処理装置を接続してメモリ共有することができないという問題点があった。
【０００８】
特許文献２のシステムによれば、ネットワーク上に仮想共用メモリを設けることによってメモリ共有が可能になる。しかしながら、特許文献２のシステムでは、共用メモリをページで分割し、それぞれのページについて任意の１台の装置がアクセスできるとなっているため、複数の装置が同一ページを参照することができないという問題点があった。
【０００９】
特許文献３の方式では、メモリアドレスによってアクセス先を判定するため、構成が同一かつ固定的である必要があり、任意の装置に対してアクセスすることができないという問題点があった。
【００１０】
本発明の目的は、上述した課題を解決するために、複数の情報処理装置がメモリ空間を共有することを可能とする通信装置を提供することにある。
【課題を解決するための手段】
【００１１】
本発明の一態様の通信装置は、ファブリックに接続された複数の情報処理装置のそれぞれに実装される通信装置であって、ＰＣＩｅ（Peripheral Component Interconnect Express）規格の第１パケットを送受信するシリアルインタフェースと、シリアルインタフェースから第１パケットを取得し、取得した第１パケットを、情報処理装置に固有の装置識別子を用いて仮想的に拡張されたメモリ空間を共有する複数の情報処理装置の間でファブリックを介して送受信される第２パケットに変換するリクエスタ部と、ファブリックを介して第２パケットを送受信するファブリック通信部と、ファブリック通信部から第２パケットを取得し、取得した第２パケットに含まれるリクエストに対する応答パケットを生成するコンプリータ部とを備える。
【００１２】
本発明の一態様の情報処理システムは、複数の情報処理装置と、複数の情報処理装置を接続するファブリックと、複数の情報処理装置のそれぞれに実装され、ＰＣＩｅ（Peripheral Component Interconnect Express）規格の第１パケットを送受信するシリアルインタフェースと、シリアルインタフェースから第１パケットを取得し、取得した第１パケットを、情報処理装置に固有の装置識別子を用いて仮想的に拡張されたメモリ空間を共有する複数の情報処理装置の間でファブリックを介して送受信される第２パケットに変換するリクエスタ部と、ファブリックを介して第２パケットを送受信するファブリック通信部と、ファブリック通信部から第２パケットを取得し、取得した第２パケットに含まれるリクエストに対する応答パケットを生成するコンプリータ部とを有する通信装置とを備える。
【００１３】
本発明の一態様の通信方法は、ファブリックに接続された複数の情報処理装置によって構成される情報処理システムにおける通信方法であって、ＰＣＩｅ（Peripheral Component Interconnect Express）規格の第１パケットを受信し、受信した第１パケットを、情報処理装置に固有の装置識別子を用いて仮想的に拡張されたメモリ空間を共有する複数の情報処理装置の間でファブリックを介して送受信される第２パケットに変換し、ファブリックを介して第２パケットを送受信し、受信した第２パケットに含まれるリクエストに対する応答パケットを生成する。
【発明の効果】
【００１４】
本発明によれば、複数の情報処理装置がメモリ空間を共有することを可能とする通信装置を提供することが可能になる。
【図面の簡単な説明】
【００１５】
【図１】本発明の実施形態に係る通信装置の構成の概要の一例を示すブロック図である。
【図２】本発明の実施形態に係る通信装置を備える情報処理システムの構成の一例を示すブロック図である
【図３】本発明の実施形態に係る通信装置が実装される情報処理装置の構成の一例を示すブロック図である。
【図４】本発明の実施形態に係る通信装置が備えるリクエスタ部の構成の一例を示すブロック図である。
【図５】本発明の実施形態に係る通信装置が用いる宛先管理テーブルの一例である。
【図６】本発明の実施形態に係る通信装置が用いる第１パケット管理テーブルの一例である。
【図７】本発明の実施形態に係る通信装置が備えるコンプリータ部の構成の一例を示すブロック図である。
【図８】本発明の実施形態に係る通信装置が用いる第２パケット管理テーブルの一例である。
【図９】本発明の実施形態に係る通信装置の動作について説明するための概念図である。
【図１０】本発明の実施形態に係る通信装置によるリクエスト処理の一例について説明するためのフローチャートである。
【図１１】本発明の実施形態に係る通信装置によるパケット変換処理の一例について説明するためのフローチャートである。
【図１２】本発明の実施形態に係る通信装置によるコンプリーション処理の一例について説明するためのフローチャートである。
【図１３】本発明の実施形態に係る通信装置による応答受信処理の一例について説明するためのフローチャートである。
【発明を実施するための形態】
【００１６】
以下に、本発明を実施するための形態について図面を用いて説明する。ただし、以下に述べる実施形態には、本発明を実施するために技術的に好ましい限定がされているが、発明の範囲を以下に限定するものではない。なお、以下の実施形態の説明に用いる全図においては、特に理由がない限り、同様箇所には同一符号を付す。また、以下の実施形態において、同様の構成・動作に関しては繰り返しの説明を省略する場合がある。また、図面中の矢印の向きは、一例を示すものであり、ブロック間の信号の向きを限定するものではない。
【００１７】
（実施形態）
まず、本発明の実施形態に係る通信装置について図面を参照しながら説明する。本実施形態の通信装置は、ＰＣＩ Ｅｘｐｒｅｓｓ（登録商標、以下、ＰＣＩｅとも呼ぶ）をファブリックに拡張できる技術をベースとした情報処理装置に実装される（ＰＣＩ：Peripheral Component Interconnect）。本実施形態においては、ＭＡＣ（Media Access Control）アドレスなどのように装置ごとに一意に割り当てられる識別子をメモリ空間の上位ｂｉｔとして、仮想的にメモリ空間を拡張する。そして、本実施形態においては、仮想的なアドレスに基づいてＮＴＢ（Non-transparent bridging）を行う。
【００１８】
（構成）
図１は、本実施形態の通信装置１００の構成の概要の一例を示すブロック図である。図１のように、通信装置１００は、ＰＣＩｅデバイス１１０、リクエスタ部１２０、コンプリータ部１４０、およびファブリック通信部１５０を備える。ファブリック通信部１５０は、ファブリック１６０に接続される。
【００１９】
例えば、ファブリック１６０は、イーサネット（登録商標）などのローカルネットワークによって実現される。通信装置１００に含まれる構成要素間は、送受信の差動ペアを単位とするレーンを介して互いに接続される。レーンを構成する送信線および受信線は、少なくとも一本の導線で構成される。通信装置１００は、少なくとも一つのＣＰＵ（Central Processing Unit）やメモリを含むコンピュータやサーバなどの情報処理装置に実装される。
【００２０】
図２は、通信装置１００が実装された複数の情報処理装置１０−１〜ｎによって構成される情報処理システム１である（ｎは自然数）。以下において、複数の情報処理装置１０−１〜ｎのそれぞれを区別しないときは、単に情報処理装置１０と記載する。また、以下において、情報処理装置１０自体を自装置、自装置にとって他の情報処理装置１０を他装置と記載することがある。図２の情報処理システム１を構成するそれぞれの情報処理装置１０（自装置）は、ファブリック１６０を介して他装置に接続され、他装置との間でメモリ空間を共有し合う。
【００２１】
図３は、情報処理装置１０を実現するハードウェア構成の一例を示すブロック図である。図３のように、通信装置１００は、ルートポート１１、ＣＰＵ１２、メモリ１３、ＰＣＩｅスイッチ１４、通信用デバイス１５、エンドポイント１６、およびエンドポイント１７を備える。通信装置１００は、通信用デバイス１５の内部に実装される。
【００２２】
ルートポート１１は、少なくとも一つのＰＣＩｅポートを有する。ルートポート１１は、ＰＣＩｅポートを介して、少なくとも一つのＰＣＩｅスイッチ１４や、図示しないＰＣＩｅ装置に接続される。例えば、ルートポート１１は、ＰＣＩｅポートを介してＰＣＩｅグラフィックスなどのＰＣＩｅ装置に接続される。また、ルートポート１１は、ホストブリッジを内蔵し、ＣＰＵ１２とメモリ１３に接続される。例えば、ルートポート１１は、システムバスを介してＣＰＵ１２に接続され、メモリバスを介してメモリ１３に接続される。
【００２３】
ＣＰＵ１２は、ルートポート１１に接続される。例えば、ＣＰＵ１２は、システムバスを介してルートポート１１に接続される。ＣＰＵ１２は、一般的な中央演算装置によって実現される。
【００２４】
メモリ１３は、ルートポート１１に接続される。例えば、メモリ１３は、メモリバスを介してルートポート１１に接続される。メモリ１３は、一般的な主記憶装置によって実現される。
【００２５】
ＰＣＩｅスイッチ１４は、複数のＰＣＩｅポートを有する。ＰＣＩｅスイッチ１４は、ＰＣＩｅポートを介して、ルートポート１１、通信用デバイス１５、エンドポイント１０４、エンドポイント１０５に接続される。ＰＣＩｅスイッチ１４は、各ポート間でパケットのルーティングを行う。図３には、ＰＣＩｅスイッチ１４を一つしか図示していないが、ＰＣＩｅスイッチ１４の数は一つに限定されず、複数あってもよい。
【００２６】
通信用デバイス１５は、複数のＰＣＩｅポートを有する。通信用デバイス１５は、ＰＣＩｅポートを介して、ＰＣＩｅスイッチ１４とファブリック１６０に接続される。通信用デバイス１５は、ＰＣＩｅの規格に沿ったデバイスであり、コンフィグレーションレジスタ等の標準的な機能が実装されている。通信用デバイス１５には、通信装置１００が実装される。
【００２７】
複数の情報処理装置１０の間でメモリ１３を共有する際には、以下の二つの設定が通信用デバイス１５に事前に行われる。
【００２８】
（１）通常のＩ／Ｏデバイスと同様に、ＰＣＩエニュメレーションソフトウェアによって、ＰＣＩバス番号、ＢＡＲ空間が割り当てられる。
【００２９】
（２）ＯＳが起動する際、通信用デバイス１５のデバイスドライバがロードされ、動作に必要な初期設定が行われる。
【００３０】
エンドポイント１６およびエンドポイント１７は、少なくとも一つのＰＣＩｅポートを有する。例えば、エンドポイント１６およびエンドポイント１７は、レガシ・エンドポイント、ＰＣＩｅエンドポイント、ルート・コンプレックス・エンドポイントなどである。図３には、エンドポイント１６およびエンドポイント１７を一つずつ図示しているが、エンドポイント１６およびエンドポイント１７の数は限定されない。
【００３１】
以上が、情報処理装置１０を実現するハードウェア構成の一例についての説明である。なお、図３のハードウェア構成は一例であって、情報処理装置１０を実現するハードウェア構成をそのままの形態に限定するものではない。
【００３２】
〔通信装置〕
ここで、図１に戻って、通信装置１００の構成要素について図面を参照しながら説明する。情報処理装置１０は、他装置にアクセスする際、自装置内の通信用デバイス１５に確保されたＢＡＲ空間に対してアクセスを行う。情報処理装置１０は、自装置内のＢＡＲ空間にアクセスすると、リクエスタ部１２０に要求パケットを送信する。このとき、ＢＡＲ空間をどのように割り当てるかは任意である。例えば、ＢＡＲ０／１に内部制御機能を割り当て、ＢＡＲ２／３に通信機能を割り当てることができる。
【００３３】
図１のように、ＰＣＩｅデバイス１１０（シリアルインタフェースとも呼ぶ）は、リクエスタ部１２０およびコンプリータ部１４０に接続される。また、ＰＣＩｅデバイス１１０は、ＰＣＩｅスイッチ１４に接続される。
【００３４】
ＰＣＩｅデバイス１１０は、ＰＣＩｅスイッチ１４を介して、ルートポート１１からパケット（第１パケットとも呼ぶ）を受信する。ＰＣＩｅデバイス１１０は、受信したパケットをリクエスタ部１２０およびコンプリータ部１４０のいずれかに出力する。例えば、ＰＣＩｅデバイス１１０は、ルートポート１１から要求パケット（リクエストパケットとも呼ぶ）を受信すると、受信した要求パケットをリクエスタ部１２０に出力する。また、ＰＣＩｅデバイス１１０は、ルートポート１１から応答パケット（コンプリーションパケットとも呼ぶ）を受信すると、受信した要求パケットをリクエスタ部１２０に出力する。
【００３５】
また、ＰＣＩｅデバイス１１０は、リクエスタ部１２０およびコンプリータ部１４０のいずれかからパケットを受信する。ＰＣＩｅデバイス１１０は、ＰＣＩｅスイッチ１４を介して、受信したパケットをルートポート１１に送信する。例えば、ＰＣＩｅデバイス１１０は、リクエスタ部１２０から応答パケットを受信すると、受信した応答パケットをルートポート１１に送信する。一方、ＰＣＩｅデバイス１１０は、コンプリータ部１４０から要求パケットを受信すると、受信した要求パケットをルートポート１１に送信する。
【００３６】
リクエスタ部１２０は、ＰＣＩｅデバイス１１０およびファブリック通信部１５０のそれぞれに接続される。リクエスタ部１２０は、通信装置１００がリクエスタとして機能する際に動作する。
【００３７】
リクエスタ部１２０は、ＰＣＩｅデバイス１１０から要求パケットを取得する。リクエスタ部１２０は、取得した要求パケットのアドレスに基づいて、他装置への通信を行うためのＢＡＲ（Base Address Register）空間に対するアクセスか否かの判定を行う。リクエスタ部１２０は、自装置に記憶された宛先管理テーブルを参照し、取得した要求パケットの送信先を判定する。宛先管理テーブルは、どの通信装置１００に要求パケットを転送するのかを判定するためのテーブルである。
【００３８】
リクエスタ部１２０は、他装置への通信を行うためのＢＡＲ空間に対するアクセスがあった場合、宛先管理テーブルを参照し、要求パケットのアドレスに基づいてその要求パケットをどの情報処理装置１０に転送するのかを判定する。このとき、リクエスタ部１２０は、要求パケットのタグフィールドを変換することによってパケットを生成する。リクエスタ部１２０は、生成したパケットをファブリック通信部１５０に出力する。一方、リクエスタ部１２０は、他装置への通信を行うためのＢＡＲ空間に対するアクセスがなかった場合、取得した要求パケットを通常のＰＣＩｅパケットとして処理を行う。
【００３９】
要求パケットに含まれるリクエストがメモリリードであった場合、リクエスタ部１２０は、第１パケット管理テーブルに情報を格納する。第１パケット管理テーブルは、変換したタグ情報、そのタグ情報の使用フラグ、宛先情報（送信先識別子）、コンプリーション生成に必要な情報（コンプリーション生成情報）といった情報（変換情報とも呼ぶ）をセットにして記録するためのテーブルである。リクエスタ部１２０は、変換するタグフィールドには、第１パケット管理テーブルで未使用のタグ情報を付与する。なお、コンプリーション生成情報には、元のタグ情報、リクエスタＩＤ、バイトカウントなどが含まれる。一方、要求パケットに含まれるリクエストがメモリライトの場合、コンプリーションが返ってこないため、リクエスタ部１２０は、第１パケット管理テーブルに情報を登録しない。
【００４０】
コンプリータ部１４０は、ＰＣＩｅデバイス１１０およびファブリック通信部１５０のそれぞれに接続される。コンプリータ部１４０は、通信装置１００がコンプリータとして機能する際に動作する。
【００４１】
コンプリータ部１４０は、ファブリック通信部１５０を介して、他の情報処理装置１０からの要求パケットを受信する。コンプリータ部１４０は、受信した要求パケットからＰＣＩｅパケットを抽出し、パケットを変換する。具体的には、コンプリータ部１４０は、パケットの送信元識別子フィールドを自装置の送信元識別子に差し替え、タグフィールドを変換する。
【００４２】
コンプリータ部１４０は、変換した情報を第２パケット管理テーブルに格納する。第２パケット管理テーブルは、変換したタグ情報、そのタグ情報の使用フラグ、リクエスト元の宛先情報（送信元識別子とも呼ぶ）をセットにした変換情報を記録するためのテーブルである。コンプリータ部１４０は、変換するタグフィールドには、第２パケット管理テーブルで未使用のタグ情報を付与する。変換パケットは、あたかも自装置の通信用デバイス１５によって発行されたかのように自装置のルートポート１１に送信される。要求パケットに含まれるリクエストがメモリライトであった場合、これで処理は完了する。
【００４３】
一方、要求パケットに含まれるリクエストがメモリリードであった場合、他の情報処理装置１０（他装置）のルートポート１１から応答パケット（コンプリーションパケットとも呼ぶ）が返送されてくる。コンプリータ部１４０は、第２パケット管理テーブルを参照し、受信した応答パケットがどのリクエストに対する応答なのかを判定する。ヒットするリクエストがある場合、コンプリータ部１４０は、第２管理テーブルに格納された情報から送信元識別子を取得し、タグフィールドを元に戻してからファブリック１６０に対して応答パケットを送信する。ファブリック１６０に送信された応答パケットは、設定された宛先の他装置に到達する。
【００４４】
ファブリック通信部１５０は、リクエスタ部１２０およびコンプリータ部１４０のそれぞれに接続される。また、ファブリック通信部１５０は、ファブリック１６０に接続される。ファブリック通信部１５０は、ファブリック１６０を介して、他の情報処理装置１０（他装置とも呼ぶ）のファブリック通信部１５０に接続される。ファブリック通信部１５０は、ファブリック１６０との間でパケット（第２パケットとも呼ぶ）を送受信する。
【００４５】
以上が、通信装置１００の構成の概要の一例についての説明である。なお、図１の通信装置１００の構成は一例であって、本実施形態の通信装置１００の構成をそのままの形態に限定するものではない。
【００４６】
〔リクエスタ部〕
次に、通信装置１００が備えるリクエスタ部１２０について図面を参照しながら説明する。図４は、リクエスタ部１２０の構成の一例を示すブロック図である。図４のように、リクエスタ部１２０は、アドレス判定回路１２１、宛先判定回路１２２、要求パケット送信回路１２３、および応答パケット受信回路１２５を有する。また、リクエスタ部１２０は、宛先管理テーブル１３１および第１パケット管理テーブル１３２を含む。宛先管理テーブル１３１および第１パケット管理テーブル１３２は、図示しない記憶回路に記憶される。宛先管理テーブル１３１および第１パケット管理テーブル１３２は、異なる記憶回路に格納されていてもよいし、同じ記憶回路の異なる記憶領域に格納されてもよい。
【００４７】
アドレス判定回路１２１は、ＰＣＩｅデバイス１１０と宛先判定回路１２２とに接続される。アドレス判定回路１２１は、ＰＣＩｅデバイス１１０から要求パケットを取得する。アドレス判定回路１２１は、取得した要求パケットのアドレスに基づいて、他装置への通信を行うためのＢＡＲ空間に対してアクセスがあったかどうかの判定を行う。他装置への通信を行うためのＢＡＲ空間に対するアクセスがあった場合、アドレス判定回路１２１は、取得した要求パケットを宛先判定回路１２２に出力する。他装置への通信を行うためのＢＡＲ空間に対するアクセスがなかった場合、取得した要求パケットは通常のＰＣＩｅのパケットとして処理される。
【００４８】
宛先判定回路１２２は、アドレス判定回路１２１および要求パケット送信回路１２３に接続される。また、宛先判定回路１２２は、宛先管理テーブル１３１を参照する。宛先判定回路１２２は、アドレス判定回路１２１から要求パケットを取得する。宛先判定回路１２２は、宛先管理テーブル１３１を参照し、要求パケットを送信先の情報処理装置１０を判定する。宛先判定回路１２２は、要求パケットの送信先の宛先を決定すると、その要求パケットと宛先を要求パケット送信回路１２３に出力する。
【００４９】
要求パケット送信回路１２３は、宛先判定回路１２２およびファブリック通信部１５０に接続される。また、要求パケット送信回路１２３は、第１パケット管理テーブル１３２を参照する。要求パケット送信回路１２３は、要求パケットの変換を行うことによってパケットを生成する。要求パケット送信回路１２３は、生成したパケットをファブリック通信部１５０に送信する。ファブリック通信部１５０に送信されたパケットは、設定された宛先の通信装置１００に送信される。
【００５０】
具体的には、要求パケット送信回路１２３は、要求パケットを受信すると、ファブリック１６０に対してパケットを送信した際に適切にルーティングされるように、ファブリック１６０に送信するパケットを生成する。例えば、要求パケット送信回路１２３は、ファブリック１６０がイーサネットであった場合、宛先のＭＡＣアドレスを正しく設定する。
【００５１】
要求パケット送信回路１２３は、要求パケットに含まれるリクエストがメモリリードであった場合、パケットのタグフィールドを変換する。要求パケット送信回路１２３は、パケットのタグフィールドを変換すると、変換したタグ情報、宛先情報、コンプリーション時に用いられる情報（コンプリーション情報）をセットにした変換情報を第１パケット管理テーブルに登録する。第１パケット管理テーブルは、付け替えるタグの値、使用フラグ、送信先識別子、およびコンプリーション生成情報を記録するためのテーブルである。このとき、要求パケット送信回路１２３は、変換するタグフィールドには、第１パケット管理テーブルで未使用の値を用いる。なお、コンプリーション生成情報は、元のタグ情報、リクエスタＩＤ、バイトカウントなどである。
【００５２】
また、要求パケットに含まれるリクエストがメモリライトの場合、コンプリーションが返ってこないため、要求パケット送信回路１２３は、第１パケット管理テーブル１３２に情報を登録しない。
【００５３】
応答パケット受信回路１２５は、ＰＣＩｅデバイス１１０とファブリック通信部１５０とに接続される。
【００５４】
応答パケット受信回路１２５は、ファブリック通信部１５０から応答パケットを受信する。応答パケット受信回路１２５は、応答パケットを受信すると、その応答パケットからＰＣＩｅパケットを抽出する。応答パケット受信回路１２５は、第１パケット管理テーブルを参照し、どのリクエストに対する応答かを判定する。応答パケット受信回路１２５は、ヒットするリクエストが存在する場合、第１パケット管理テーブルに格納された情報に含まれるタグフィールドとリクエスタＩＤを元に戻し、送信先識別子フィールドを自身のＩＤに差し替える。すなわち、応答パケット受信回路１２５は、コンプリーションを受け取った場合、第１パケット管理テーブル１３２のコンプリーション情報を更新する。応答パケット受信回路１２５は、該当メモリリードに対するコンプリーションを全て受信した際に、該当するタグの使用中フラグを削除する。その結果、情報処理装置１０において、変換されたパケットは、あたかも自装置の通信用デバイス１５が応答したかのように自装置のルートポート１１に対して送信される。
【００５５】
宛先管理テーブル１３１は、宛先判定回路１２２がパケットを受信した際に用いられる。宛先管理テーブル１３１には、要求パケットをどの装置に転送するかを判定するための転送情報が格納される。例えば、宛先管理テーブル１３１には、メモリアドレスの上位ビットに対応付けて、要求パケットの送信先の情報処理装置１０が格納される。
【００５６】
図５は、宛先管理テーブル１３１の一例である。図５の宛先管理テーブル１３１は、アドレスの先頭２ビットに複数の情報処理装置１０のいずれかが対応付けられる例である。図５の宛先管理テーブル１３１は、ファブリック通信部１５０が確保したメモリ空間を用いて、別の４台の情報処理装置１０にアクセスする例である。図５の宛先管理テーブル１３１を用いる場合、メモリアドレスの上位２ｂｉｔ（００、０１、１０、１１）を用いて４台の情報処理装置１０を識別することが可能である。
【００５７】
また、宛先管理テーブル１３１は、動的に変更可能である。すなわち、宛先管理テーブル１３１は、それぞれのアドレスに割り当てる通信装置１００を時間に応じて変更できる。図５の宛先管理テーブル１３１では、時刻Ｔ１においては、それぞれのアドレスに対して、装置Ａ〜Ｄが割り当てられている。このとき、装置Ａ〜Ｄの割り当て方法は、レジスタ等による設定や、通信装置が通信することによって決定する方法などが考えられる。時刻Ｔ２においては、アドレスの上位２ｂｉｔが００の場合、装置Ａから装置Ｅに割り当てを変更している。また、時刻Ｔ３においては、時刻Ｔ１においてアドレスの上位２ｂｉｔが００に割り当てられていた装置Ａを、アドレスの上位２ｂｉｔが１０に割り当て直している。このように、宛先管理テーブル１３１を用いれば、任意の時刻に任意の装置を登録することによって、ファブリックに接続された全ての装置にアクセスすることが可能となる。
【００５８】
第１パケット管理テーブル１３２（ＰＣＩｅパケット管理テーブルとも呼ぶ）は、要求パケット送信回路１２３がメモリリードを受信した際に用いられる。第１パケット管理テーブル１３２には、要求パケット送信回路１２３によって付け替えられるタグ情報をベースにして、パケットの宛先情報（送信先識別子）とコンプリーション時に必要な情報（コンプリーション情報）が登録される。また、第１パケット管理テーブルには、付け替えるタグが使用中であるか否かを示すフラグ（使用フラグとも呼ぶ）が格納される。要求パケット送信回路１２３がタグを付け替えたパケットをファブリック１６０に送信する際には、使用中フラグが設定される。
【００５９】
図６は、第１パケット管理テーブル１３２（ＰＣＩｅパケット管理テーブルとも呼ぶ）の一例である。第１パケット管理テーブル１３２には、付け替えるタグ情報をベースにして、パケットの宛先情報（送信先識別子）と、コンプリーション時に必要な情報（コンプリーション生成情報とも呼ぶ）とが登録される。
【００６０】
また、第１パケット管理テーブル１３２には、付け替えるタグが使用中であるか否かを示すフラグ（使用フラグとも呼ぶ）が格納される。第１パケット管理テーブル１３２の使用フラグは、使用中ではないときは０に設定される。一方、第１パケット管理テーブル１３２の使用フラグは、要求パケット送信回路１２３がタグを付け替えてファブリックに送信する際に、使用中であることを示すために１に設定される。また、全てのフラグが使用中になった場合、要求パケット送信回路１２３がタグの付け替えをできなくなる。そのため、全てのフラグが使用中（１）になった場合、ＰＣＩｅデバイス１１０によるパケットの受信を停止させる。
【００６１】
第１パケット管理テーブル１３２に使用中フラグが設定されているときに該当宛先との通信が途絶えた場合、リクエスト発行元の情報処理装置１０は、コンプリーションタイムアウトを検出する。情報処理装置１０は、通信が途絶えたことを検出すると、応答パケット受信回路１２５に対して自律的にコンプリーションを返送するように通知する。このとき、情報処理装置１０は、自律的にコンプリーションを作成するために、第１パケット管理テーブル１３２のコンプリーション生成情報を利用する。また、情報処理装置１０は、該当するリクエストの使用中フラグを削除する。
【００６２】
以上が、リクエスタ部１２０の構成の一例についての説明である。なお、図４に示すリクエスタ部１２０の構成は一例であって、本実施形態のリクエスタ部１２０の構成をそのままの形態に限定するものではない。
【００６３】
〔コンプリータ部〕
次に、通信装置１００が備えるコンプリータ部１４０について図面を参照しながら説明する。図７は、コンプリータ部１４０の構成の一例を示すブロック図である。図７のように、コンプリータ部１４０は、要求パケット受信回路１４３および応答パケット送信回路１４５を有する。また、コンプリータ部１４０は、第２パケット管理テーブル１３３を含む。第２パケット管理テーブル１３３は、図示しない記憶回路に記憶される。第２パケット管理テーブル１３３は、宛先管理テーブル１３１および第１パケット管理テーブル１３２と同じ記憶回路の異なる記憶領域に格納されてもよい。
【００６４】
要求パケット受信回路１４３は、ＰＣＩｅデバイス１１０とファブリック通信部１５０に接続される。また、要求パケット受信回路１４３は、第２パケット管理テーブル１３３を参照する。要求パケット受信回路１４３は、ファブリック１６０を介して、ファブリック通信部１５０から要求パケットを受信する。要求パケット受信回路１４３は、受信した要求パケットからＰＣＩｅパケットを抽出し、パケットを変換する。具体的には、要求パケット受信回路１４３は、パケットの送信元識別子フィールドを自装置の送信元識別子に差し替え、タグフィールドを変換する。
【００６５】
要求パケット受信回路１４３は、第２パケット管理テーブル１３３に変換情報を格納する。第２パケット管理テーブル１３３は、変換したタグ情報、そのタグ情報の使用フラグ、リクエスト元の宛先情報（送信元識別子とも呼ぶ）をセットにした変換情報を記録するためのテーブルである。要求パケット受信回路１４３は、変換するタグフィールドには、第２パケット管理テーブルで未使用のタグ情報を付与する。変換後のパケットは、あたかも自装置の通信用デバイス１５によって発行されたかのようにルートポート１１に対して送信される。
【００６６】
要求パケットに含まれるリクエストがメモリライトであった場合、パケットが送信された時点で処理は完了する。一方、要求パケットに含まれるリクエストがメモリリードであった場合、自装置のルートポート１１から応答パケット（コンプリーションパケットとも呼ぶ）が返送され、自装置の応答パケット送信回路１４５に渡される。
【００６７】
応答パケット送信回路１４５は、第２パケット管理テーブル１３３を参照し、受信した応答パケットがどのリクエストに対する応答かを判定する。ヒットするリクエストが存在する場合、応答パケット送信回路１４５は、第２パケット管理テーブル１３３に格納された情報から送信元識別子を取得し、タグフィールドを元に戻してからファブリック１６０に対して応答パケットを送信する。応答パケット送信回路１４５から送信された応答パケットは、設定された宛先の情報処理装置１０が備える通信装置１００の応答パケット受信回路１２５に到達する。
【００６８】
第２パケット管理テーブル１３３は、要求パケット受信回路１４３がメモリリードを受信した際に用いられる。図８は、第２パケット管理テーブル１３３（ファブリックパケット管理テーブルとも呼ぶ）の一例である。第２パケット管理テーブル１３３には、付け替えるタグ情報をベースにして、送信元の宛先情報（送信元識別子とも呼ぶ）と、元のタグ情報が格納される。
【００６９】
また、第２パケット管理テーブル１３３には、付け替えるタグが使用中であるか否かを示すフラグ（使用フラグとも呼ぶ）が格納される。使用中フラグは、要求パケット受信回路１４３がタグを付け替えたパケットをＰＣＩｅデバイス１１０に送信する際に設定される。一方、使用中フラグは、該当メモリリードに対するコンプリーションを全て受信した際に削除される。全てのフラグが使用中になった場合、要求パケット受信回路１４３は、タグの付け替えができないため、ファブリック通信部１５００に対してパケットの受信を停止させる。
【００７０】
以上が、コンプリータ部１４０の構成の一例についての説明である。なお、図７に示すコンプリータ部１４０の構成は一例であって、本実施形態のコンプリータ部１４０の構成をそのままの形態に限定するものではない。
【００７１】
（動作）
次に、通信装置１００の動作について図面を参照しながら説明する。ここでは、情報処理装置１０−１から情報処理装置１０−２のメモリ１３にアクセスする際の動作について説明する。なお、以下においては、２台の情報処理装置１０をファブリック１６０に接続する例を挙げて説明するが、接続する装置の数には特に限定を加えない。例えば、ファブリック１６０がイーサネットである場合、ＭＡＣアドレスがユニークであれば、無制限に接続することが可能であり、任意の装置のメモリ１３にアクセスすることができる。
【００７２】
図９は、通信装置１００の動作について説明するための概念図である。図９の例では、通信装置１００−１が実装された情報処理装置１０−１がリクエスタ側、通信装置１００−２が実装された情報処理装置１０−２がコンプリータ側に設定される。図９においては、リクエスタ側の通信装置１００−１のコンプリータ部１４０、コンプリータ側の通信装置１００−２のリクエスタ部１２０は省略している。
【００７３】
他の情報処理装置１０（以下、他装置と呼ぶ）のメモリ空間にアクセスする前に、それぞれの情報処理装置１０の通信用デバイス１５には、以下の二つの設定が行われているものとする。
【００７４】
（１）通常のＩ／Ｏデバイスと同様に、ＰＣＩエニュメレーションソフトウェアによって、通信用デバイス１５にＰＣＩバス番号とＢＡＲ空間が割り当てられている。
【００７５】
（２）ＯＳ（Operating System）が起動する際、通信用デバイス１５のデバイスドライバがロードされ、動作に必要な初期設定が行われている。
【００７６】
以下においては、図３および図９を参照しながら、図１０〜図１３のフローチャートに沿って、リクエスタ側の情報処理装置１０−１の通信装置１００−１から、コンプリータ側の情報処理装置１０−２の通信装置１００−２にアクセスする動作について説明する。
【００７７】
〔リクエスト処理〕
まず、図１０のフローチャートに沿って、リクエスタ側の通信装置１００−１から、コンプリータ側の通信装置１００−２にアクセスする際のリクエスト処理について説明する。リクエスト処理は、リクエスタ側の通信装置１００−１が受信した要求パケットを、ファブリック１６０を介してコンプリータ側の通信装置１００−２に送信する処理である。以下の図１０のフローチャートに沿った説明においては、通信装置１００−１を動作の主体として説明する。
【００７８】
図１０において、まず、通信装置１００−１は、ＰＣＩｅスイッチ１４を介して、ルートポート１１からの要求パケットを受信する（ステップＳ１１１）。
【００７９】
次に、通信装置１００−１は、他装置への通信を行うためのＢＡＲ空間に対してアクセスであるか否かを判定する（ステップＳ１１２）。
【００８０】
他装置への通信を行うためのＢＡＲ空間に対するアクセスであった場合（ステップＳ１１２でＹｅｓ）、通信装置１００−１は、宛先管理テーブル１３１を参照し、取得した要求パケットの転送先の情報処理装置１０を判定する（ステップＳ１１３）。
【００８１】
他装置への通信を行うためのＢＡＲ空間に対するアクセスではなかった場合（ステップＳ１１２でＮｏ）、通信装置１００−１は、取得したパケットを通常のＰＣＩｅのパケットとして処理する（ステップＳ１１４）。
【００８２】
ステップＳ１１３の次に、通信装置１００−１は、取得した要求パケットを、ファブリック１６０に送信するためのパケットに変換する（ステップＳ１１５）。
【００８３】
次に、通信装置１００−１は、ファブリック通信部１５０を介して、ファブリック１６０に変換後のパケットを送信する（ステップＳ１１６）。ファブリック１６０に送信されたパケットは、ファブリック１６０を介して、情報処理装置１０−２の通信装置１００−２に送信される。
【００８４】
以上が、リクエスタ側の通信装置１００−１から、コンプリータ側の通信装置１００−２にアクセスする際のリクエスト処理についての説明である。なお、図１０のフローチャートに沿ったリクエスト処理は一例であって、本実施形態の情報処理装置１０によるリクエスト処理をそのままの手順に限定するものではない。
【００８５】
〔パケット変換処理〕
次に、図１１のフローチャートに沿って、リクエスタ側の通信装置１００の要求パケット送信回路１２３によるパケット変換処理について説明する。パケット変換処理は、図１０のフローチャートのステップＳ１１５の処理である。図１１のフローチャートに沿った以下の説明においては、要求パケット送信回路１２３を動作の主体として説明する。
【００８６】
図１１において、まず、要求パケット送信回路１２３は、宛先判定回路１２２からパケットを受信する（ステップＳ１２１）。
【００８７】
次に、要求パケット送信回路１２３は、ファブリック１６０に対してパケットを送信した際にそのパケットが適切にルーティングされるように、ファブリック１６０に送信するパケットを生成する（ステップＳ１２２）。例えば、ファブリック１６０がイーサネット（登録商標）の場合、要求パケット送信回路１２３は、パケットに含まれる宛先のＭＡＣアドレスを正しく設定する。
【００８８】
次に、要求パケット送信回路１２３は、リクエストがメモリリードであった場合（ステップＳ１２３でＹｅｓ）、パケットのタグフィールドを変換する（ステップＳ１２４）。このとき、要求パケット送信回路１２３は、パケットのタグフィールドを、第１パケット管理テーブル１３２で未使用のタグに変換する。一方、要求パケット送信回路１２３は、リクエストがメモリライトの場合（ステップＳ１２３でＮｏ）、コンプリーションが返ってこないため、第１パケット管理テーブル１３２に情報を登録しない（ステップＳ１２６に進む）。
【００８９】
次に、要求パケット送信回路１２３は、変換したタグ情報、宛先情報、コンプリーション生成情報をセットにした変換情報を第１パケット管理テーブル１３２に格納する（ステップＳ１２５）。
【００９０】
そして、要求パケット送信回路１２３は、ファブリック通信部１５００に変換後のパケットを送信する（ステップＳ１２６）。
【００９１】
以上が、要求パケット送信回路１２３によるパケット変換処理についての説明である。なお、図１１のフローチャートに沿ったパケット変換処理は一例であって、本実施形態の要求パケット送信回路１２３によるパケット変換処理をそのままの手順に限定するものではない。
【００９２】
〔コンプリーション処理〕
次に、図１２のフローチャートに沿って、コンプリータ側の通信装置１００−２が、リクエスタ側の通信装置１００−１からアクセスされる際のコンプリーション処理について説明する。コンプリーション処理は、コンプリータ側の通信装置１００−２が、リクエスタ側の通信装置１００−１からファブリック１６０を介して送信されてきたパケットを受信し、パケットに含まれるリクエストに応答する処理である。図１２のフローチャートに沿った以下の説明においては、通信装置１００−２を動作の主体とする。
【００９３】
図１２において、まず、通信装置１００−２は、ファブリック１６０を介して、通信装置１００−１からパケットを受信する（ステップＳ１３１）。
【００９４】
次に、通信装置１００−２は、受信したパケットからＰＣＩｅパケットを抽出し、要求パケットを変換する（ステップＳ１３２）。具体的には、要求パケット受信回路１４３は、パケットのリクエスタＩＤフィールドを自身のリクエスタＩＤに差し替え、タグフィールドを変換する。このとき、要求パケット受信回路１４３は、第２管理テーブルで未使用のタグフィールドに変換する。
【００９５】
次に、通信装置１００−２は、変換したタグ情報と、リクエスト元の宛先情報とをセットにした変換情報を第２パケット管理テーブル１３３に格納する（ステップＳ１３３）。変換後のパケットは、あたかも通信装置１００−２の通信用デバイス１５によって発行されたかのように、通信装置１００−２のルートポート１１に送信される。
【００９６】
ここで、要求パケットがメモリライトであった場合（ステップＳ１３４でＹｅｓ）、図１３のフローチャートに沿った処理は終了である。
【００９７】
一方、要求パケットがメモリリードであった場合（ステップＳ１３４でＮｏ）、通信装置１００−２のルートポート１１から応答パケットが返送され、応答パケット送信回路１４５に渡される（ステップＳ１３５）。
【００９８】
次に、通信装置１００−２は、第２パケット管理テーブル１３３を参照し、ヒットするリクエストが応答パケットに含まれるか否かを判定する（ステップＳ１３６）。
【００９９】
ここで、ヒットするリクエストがある場合（ステップＳ１３６でＹｅｓ）、通信装置１００−２は、第２パケット管理テーブル１３３に格納された情報から返送先の宛先を取得する（ステップＳ１３７）。ヒットするリクエストがない場合（ステップＳ１３６でＮｏ）、図１３のフローチャートに沿った処理は終了とする。
【０１００】
ステップＳ１４７の次に、通信装置１００−２は、タグフィールドを元に戻してからファブリック１６０に対して応答パケットを送信する（ステップＳ１３８）。ファブリック１６０に送信された応答パケットは、通信装置１００−１のファブリック通信部１５０に受信される。
【０１０１】
以上が、コンプリータ側の通信装置１００−２がリクエスタ側の通信装置１００−１からアクセスされる際のコンプリーション処理についての説明である。なお、図１２のフローチャートに沿ったコンプリーション処理は一例であって、本実施形態の情報処理装置１０によるコンプリーション処理をそのままの手順に限定するものではない。
【０１０２】
〔応答受信処理〕
続いて、図１３のフローチャートに沿って、リクエスタ側の通信装置１００−１が、コンプリータ側の通信装置１００−２から応答パケットを受信する応答受信処理について説明する。以下の図１２のフローチャートに沿った説明においては、通信装置１００−１を動作の主体として説明する。
【０１０３】
図１２において、まず、通信装置１００−１は、通信装置１００−２から応答パケットを受信する（ステップＳ１４１）。
【０１０４】
通信装置１００−１は、受信したパケットからＰＣＩｅパケットを抽出する（ステップＳ１４２）。
【０１０５】
通信装置１００−１は、第１パケット管理テーブル１３２を参照し、ヒットするリクエストが応答パケットに含まれるか否かを判定する（ステップＳ１４３）。
【０１０６】
ヒットするリクエストがある場合（ステップＳ１４３でＹｅｓ）、通信装置１００−１は、取得した応答パケットをルートポート１１に送信するためのパケットに変換する（ステップＳ１４４）。具体的には、通信装置１００−１は、第１パケット管理テーブル１３２に格納してあった情報から、タグフィールドとリクエスタＩＤを元に戻し、送信先識別子フィールドを自身の識別子に差し替える。ヒットするリクエストがない場合（ステップＳ１４３でＮｏ）、図１３のフローチャートに沿った処理は終了とする。
【０１０７】
そして、通信装置１００−１は、変換したパケットをルートポート１１に送信する（ステップＳ１４５）。通信装置１００−１によって変換されたパケットは、あたかも通信装置１００−１の通信用デバイス１５が応答したかのように通信装置１００−１のルートポート１１に対して送信される。
【０１０８】
以上が、リクエスタ側の通信装置１００−１がコンプリータ側の通信装置１００−２からの応答パケットを受信する応答受信処理についての説明である。なお、図１３のフローチャートに沿った応答受信処理は一例であって、本実施形態の通信装置１００による応答受信処理をそのままの手順に限定するものではない。
【０１０９】
以上の図１０〜図１３の手順によって、通信装置１００−１は、ファブリック１６０を介して通信装置１００−２のメモリ１３にアクセスすることができる。同様に、情報処理システム１を構成する情報処理装置１０は、ファブリック１６０を介して、情報処理システム１を構成する任意の情報処理装置１０のメモリ１３にアクセスできる。
【０１１０】
以上のように、本実施形態の通信装置は、ファブリックに接続された複数の情報処理装置のそれぞれに実装される。本実施形態の通信装置は、シリアルインタフェース、リクエスタ部、ファブリック通信部、コンプリータ部を備える。シリアルインタフェースは、ＰＣＩｅ（Peripheral Component Interconnect Express）規格の第１パケットを送受信する。リクエスタ部は、シリアルインタフェースから第１パケットを取得する。リクエスタ部は、取得した第１パケットを、情報処理装置に固有の装置識別子を用いて仮想的に拡張されたメモリ空間を共有する複数の情報処理装置の間でファブリックを介して送受信される第２パケットに変換する。ファブリック通信部は、ファブリックを介して第２パケットを送受信する。コンプリータ部は、ファブリック通信部から第２パケットを取得し、取得した第２パケットに含まれるリクエストに対する応答パケットを生成する。
【０１１１】
例えば、リクエスタ部は、アドレス判定回路、宛先管理テーブル、宛先判定回路、第１パケット管理テーブル、要求パケット送信回路、応答パケット受信回路を有する。アドレス判定回路は、シリアルインタフェースから第１パケットを取得し、取得した第１パケットに基づいて他の情報処理装置に対するアクセスの有無を判定する。宛先管理テーブルは、メモリ空間を共有する複数の情報処理装置のそれぞれにメモリアドレスに含まれるビットを対応付ける。宛先判定回路は、アドレス判定回路から第１パケットを取得し、宛先管理テーブルを参照して第１パケットの送信先を判定し、第１パケットの送信先の情報処理装置の装置識別子と第１パケットとを出力する。第１パケット管理テーブルには、第１パケットの送信先の装置識別子と、コンプリーション情報と、送信先の装置識別子とコンプリーション情報との組合せに付与されるタグの値とをセットにした第１変換情報が登録される。コンプリーション情報は、第１パケットに対する応答パケットをコンプリーションするのに用いられる。要求パケット送信回路は、第１パケットの送信先の装置識別子と第１パケットとを宛先判定回路から取得し、メモリ空間を共有する情報処理装置に送信する第１パケットを、ファブリックを介して送信する第２パケットに変換する。また、要求パケット送信回路は、第１パケットに含まれるリクエストがメモリリードであった場合、第２パケットのタグの値を変換し、タグの値が変換された第２パケットをファブリック通信部に送信する。そして、要求パケット送信回路は、第１パケット管理テーブルに第１変換情報を登録する。応答パケット受信回路は、ファブリック通信部から第２パケットを取得し、第１パケット管理テーブルを参照して第２パケットを第１パケットに変換し、第１パケット管理テーブルの第１変換情報を更新する。
【０１１２】
例えば、宛先管理テーブルには、メモリ空間を共有する複数の情報処理装置のそれぞれに対応付けられたメモリアドレスの上位ビットと情報処理装置とを対応付けるレコードが格納される。また、例えば、宛先管理テーブルには、メモリ空間を共有する複数の情報処理装置のそれぞれに対応付けられたメモリアドレスの上位ビットと情報処理装置とを対応付けるレコードが複数の時刻に対応付けられて格納される。
【０１１３】
例えば、コンプリータ部は、第２パケット管理テ−ブル、要求パケット受信回路、応答パケット送信回路を有する。第２パケット管理テ−ブルには、第２パケットのタグの値と、送信元の情報処理装置に固有の装置識別子とをセットにした第２変換情報が登録される。要求パケット受信回路は、ファブリック通信部から第２パケットを取得し、取得した第２パケットの装置識別子の値を自装置の装置識別子に差し替えるとともにタグの値を変換して第１パケットを生成する。要求パケット受信回路は、第２パケット管理テ−ブルに第２変換情報を登録する。応答パケット送信回路は、第１パケットに含まれるリクエストがメモリリードであった場合、第１パケットに含まれるリクエストに対する応答パケットをシリアルインタフェースから取得する。応答パケット送信回路は、第２パケット管理テーブルに登録された第２変換情報に基づいて、取得した応答パケットの装置識別子とタグの値とを変換して第２パケットを生成する。応答パケット送信回路は、生成した第２パケットをファブリック通信部に送信し、第２パケット管理テ−ブルに登録された第２変換情報を更新する。
【０１１４】
例えば、第１パケット管理テーブルには、第１パケットの送信先の情報処理装置に固有の装置識別子と、コンプリーション情報と、装置識別子とコンプリーション情報とを対応付けるタグの値とをセットにした第１変換情報が登録される。コンプリーション情報は、第１パケットを第２パケットに変換するのに用いられたものである。第２パケット管理テーブルには、第２パケットの送信元の情報処理装置に固有の装置識別子と、装置識別子に対応づけられたタグの値とをセットにした第２変換情報が登録される。
【０１１５】
また、例えば、第１パケット管理テーブルおよび第２パケット管理テーブルには、タグの値の使用状況を示すフラグが設定される。リクエスタ部およびコンプリータ部は、第２パケット管理テーブルのフラグに基づいて未使用のタグの値を用いる。
【０１１６】
以上のように、本実施形態の情報処理装置は、ＰＣＩｅをファブリックに拡張できる技術をベースとした情報処理システムを構成する。本実施形態においては、装置ごとに一意に割り当てられる識別子をメモリ空間の上位ｂｉｔとして、仮想的にメモリ空間を拡張する。そして、本実施形態においては、仮想的に拡張されたメモリ空間のアドレスに基づいてＮＴＢ（Non-transparent bridging）を行う。その結果、本実施形態によれば、ファブリックに接続された装置同士が、任意の情報処理装置の任意のメモリ空間にアクセス可能となり、複数のコンピュータ間でメモリ空間の共有が可能となる。
【０１１７】
一般に、複数のコンピュータ間でメモリ空間を共有する場合、ＲＤＭＡ（Remote Direct Memory Access）やＮＴＢ（Non Transparent Bridge）などが用いられる。ＲＤＭＡの場合、それぞれのコンピュータが別々にメモリ空間を管理するため、処理のオーバヘッドが存在する。ＮＴＢの場合、他のコンピュータのメモリ空間に直接アクセスできるが、ＰＣＩｅがベースとなっているため、６４ｂｉｔアドレスの制限がある。
【０１１８】
一方、本実施形態で用いるファブリック接続は、必要なときだけダイナミックに接続し、不要なときは外すことができる。また、ファブリック接続を用いれば、複数のサーバとストレージとの間のデータ転送を同時に独立して行なうことができる。
【０１１９】
また、ＮＴＢでは、ブリッジを介して２台の情報処理装置をＰＣＩｅで接続することで、メモリを共有することができる。しかしながら、ＮＴＢでは、ピアトゥーピアが必須のＰＣＩｅベースであるため、基本的には２台の装置間でしかメモリを共有できない。ＮＴＢによって複数の装置でメモリを共有する場合、ＮＴＢ空間を複数組み合わせることで通信を行う必要があり、オーバヘッドが存在する。
【０１２０】
本実施形態では、ピアトゥーピアがベースであるＰＣＩｅに対し、管理テーブルを用いて同時に複数の接続を可能とすることで、複数の装置によるＮＴＢが可能となり、ファブリックに接続された複数の情報処理装置の間でメモリ空間の共有が可能になる。
【０１２１】
以上、実施形態を参照して本発明を説明してきたが、本発明は上記実施形態に限定されるものではない。本発明の構成や詳細には、本発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
【符号の説明】
【０１２２】
１    情報処理システム
１０    情報処理装置
１１    ルートポート
１２    ＣＰＵ
１３    メモリ
１４    ＰＣＩｅスイッチ
１５    通信用デバイス
１６、１７    エンドポイント
１００    通信装置
１１０    ＰＣＩｅデバイス
１２０    リクエスタ部
１２１    アドレス判定回路
１２２    宛先判定回路
１２３    要求パケット送信回路
１２５    応答パケット受信回路
１３１    宛先管理テーブル
１３２    第１パケット管理テーブル
１３３    第２パケット管理テーブル
１４０    コンプリータ部
１４３    要求パケット受信回路
１４５    応答パケット送信回路
１５０    ファブリック通信部
１６０    ファブリック
【図１】
2020087238.tif 000003
【図２】
2020087238.tif 000004
【図３】
2020087238.tif 000005
【図４】
2020087238.tif 000006
【図５】
2020087238.tif 000007
【図６】
2020087238.tif 000008
【図７】
2020087238.tif 000009
【図８】
2020087238.tif 000010
【図９】
2020087238.tif 000011
【図１０】
2020087238.tif 000012
【図１１】
2020087238.tif 000013
【図１２】
2020087238.tif 000014
【図１３】
2020087238.tif 000015