(57)【要約】【課題】エンドポイント側で自律的に他のエンドポイントに対してIOアクセスすることができる通信制御装置および方法を提供する。【解決手段】ＰＣＩｅシステムにおけるエンドポイント（ＥＰ）の通信制御を行う装置であって、下位のＥＰと通信するためのポート（１０２）と、上位の通信機器と通信するためのＰＣＩｅポート（１０１）と、ＣＰＵとの間でIOアクセスの対象となるＥＰを相互に対応付ける制御情報の同期処理を行う制御部（１０５）と、制御情報を参照してポート（１０２）から受信したデータに対して転送先ＥＰへ転送するための処理を実行してＰＣＩｅポート（１０１）を通して送出するＲＴＩ機能部（１０３）と、制御情報を参照してＰＣＩｅポート（１０１）から受信したデータに対して転送先ＥＰへ転送するための処理を実行してポート（１０２）を通して送出するＲＴＯ機能部（１０４）と、を有する。【選択図】図１
2011113163.tif 000002
【特許請求の範囲】
【請求項１】
高速シリアルインタフェースを用いた通信システムにおけるエンドポイントの通信制御を行う装置であって、
下位のエンドポイントと通信するための第１ポートと、
上位の通信機器と通信するための第２ポートと、
前記通信システムの汎用制御部との間で、少なくともIOアクセスの対象となるエンドポイントを相互に対応付ける制御情報の同期処理を行う制御手段と、
前記制御情報を参照して、前記第１ポートから受信したデータに対して転送先のエンドポイントへ転送するための処理を実行して前記第２ポートを通して送出する第１転送手段と、
前記制御情報を参照して、前記第２ポートから受信したデータに対して転送先のエンドポイントへ転送するための処理を実行して前記第１ポートを通して送出する第２転送手段と、
を有することを特徴とするエンドポイント間通信制御装置。
【請求項２】
前記第１転送手段は、
少なくともIOアクセスの対象となるエンドポイントのアドレスマッピング情報およびBDF(Bus Device Function) 番号を含む前記制御情報を格納する第１テーブルと、
前記第１ポートからデータを受信する第１受信手段と、
前記第１テーブルを参照して、前記受信したデータに対して転送先のエンドポイントへ転送するための処理を実行し前記第２ポートを通して送出する第１送信手段と、
を有することを特徴とする請求項１に記載のエンドポイント間通信制御装置。
【請求項３】
前記制御情報はIOアクセスの対象となるエンドポイントが利用するデバイスドライバ情報を更に含み、前記第１送信手段は前記転送先のエンドポイントに対応するデバイスドライバを選択してデータ転送処理を行うことを特徴とする請求項２に記載のエンドポイント間通信制御装置。
【請求項４】
前記第２転送手段は、
少なくともIOアクセスの対象となるエンドポイントのアドレスマッピング情報およびBDF(Bus Device Function) 番号を含む前記制御情報を格納する第２テーブルと、
前記第２ポートからデータを受信する第２受信手段と、
前記第２テーブルを参照して、前記受信したデータに対して転送先のエンドポイントへ転送するための処理を実行し前記第１ポートを通して送出する第２送信手段と、
を有することを特徴とする請求項１−３のいずれか１項に記載のエンドポイント間通信制御装置。
【請求項５】
前記制御情報は、前記IOアクセスの対象となるエンドポイントに設定されたバーチャルファンクション（ＶＦ）に関する情報を更に含むことを特徴とする請求項１−４のいずれか１項に記載のエンドポイント間通信制御装置。
【請求項６】
請求項１−５のいずれか１項に記載のエンドポイント間通信制御装置の前記第１ポートに下位のエンドポイントが接続され、前記第２ポートに前記通信システムのスイッチが接続され、前記スイッチに前記汎用制御部がルートコンプレックスを介して接続していることを特徴とする通信システム。
【請求項７】
請求項１−５のいずれか１項に記載のエンドポイント間通信制御装置と、前記第１ポートに下位のエンドポイントとして接続されたIOデバイスとが一体構成され、前記第２ポートが拡張PCI Expressスロットに接続可能であることを特徴とするPCI Expressボード。
【請求項８】
汎用制御部から複数のエンドポイントまで複数の通信機器が階層的に接続された高速シリアルインタフェースを用いた通信システムにおけるエンドポイント間の通信制御方法であって、
制御手段が前記汎用制御部との間で少なくともIOアクセスの対象となるエンドポイントを相互に対応付ける制御情報の同期処理を実行し、
前記汎用制御部から転送開始要求を送信元として受信すると、第１転送手段が前記制御情報を参照して下位のエンドポイントから受信したデータに対して転送先のエンドポイントへ転送するための処理を実行して上位の通信機器へ送信し、
前記汎用制御部から転送開始要求を転送先として受信すると、第２転送手段が前記上位の通信機器から受信したデータに対して転送先のエンドポイントへ転送するための処理を実行して当該転送先のエンドポイントへ送信する、
を有することを特徴とするエンドポイント間通信制御方法。
【請求項９】
前記第１転送手段は、
少なくともIOアクセスの対象となるエンドポイントのアドレスマッピング情報およびBDF(Bus Device Function) 番号を含む前記制御情報を第１テーブルに格納し、
下位のエンドポイントからデータを受信し、
前記第１テーブルを参照して、前記受信したデータに対して転送先のエンドポイントへ転送するための処理を実行して上位の通信機器へ送信する、
ことを特徴とする請求項８に記載のエンドポイント間通信制御方法。
【請求項１０】
前記制御情報はIOアクセスの対象となるエンドポイントが利用するデバイスドライバ情報を更に含み、前記第１転送手段が前記転送先のエンドポイントに対応するデバイスドライバを選択してデータ転送処理を行うことを特徴とする請求項９に記載のエンドポイント間通信制御方法。
【請求項１１】
前記第２転送手段は、
少なくともIOアクセスの対象となるエンドポイントのアドレスマッピング情報およびBDF(Bus Device Function) 番号を含む前記制御情報を第２テーブルに格納し、
前記上位の通信機器からデータを受信し、
前記第２テーブルを参照して、前記受信したデータに対して転送先のエンドポイントへ転送するための処理を実行して前記転送先のエンドポイントへ送信する、
ことを特徴とする請求項８−１０のいずれか１項に記載のエンドポイント間通信制御方法。
【請求項１２】
前記制御情報は、前記IOアクセスの対象となるエンドポイントに設定されたバーチャルファンクション（ＶＦ）に関する情報を更に含むことを特徴とする請求項８−１１のいずれか１項に記載のエンドポイント間通信制御方法。
【請求項１３】
前記制御手段は前記転送開始要求を受信すると前記制御情報の同期処理を実行し、当該同期処理終了をトリガとして前記第１転送手段あるいは前記第２転送手段が転送処理を開始することを特徴とする請求項８−１２のいずれか１項に記載のエンドポイント間通信制御方法。
【請求項１４】
前記制御手段による前記制御情報の同期処理終了後に、前記汎用制御部からの転送開始要求をトリガとして前記第１転送手段あるいは前記第２転送手段が転送処理を開始することを特徴とする請求項８−１２のいずれか１項に記載のエンドポイント間通信制御方法。
【請求項１５】
汎用制御部から複数のエンドポイントまで複数の通信機器が階層的に接続された高速シリアルインタフェースを用いた通信システムにおけるエンドポイント間の通信制御装置としてプログラム制御プロセッサを機能させるためのプログラムであって、
前記汎用制御部との間で少なくともIOアクセスの対象となるエンドポイントを相互に対応付ける制御情報の同期処理を実行し、
前記汎用制御部から転送開始要求を送信元として受信すると、第１転送手段が前記制御情報を参照して下位のエンドポイントから受信したデータに対して転送先のエンドポイントへ転送するための処理を実行して上位の通信機器へ送信し、
前記汎用制御部から転送開始要求を転送先として受信すると、第２転送手段が前記上位の通信機器から受信したデータに対して転送先のエンドポイントへ転送するための処理を実行して当該転送先のエンドポイントへ送信する、
ように前記プログラム制御プロセッサを機能させることを特徴とするプログラム。
【請求項１６】
前記第１転送手段が、
少なくともIOアクセスの対象となるエンドポイントのアドレスマッピング情報およびBDF(Bus Device Function) 番号を含む前記制御情報を第１テーブルに格納し、
下位のエンドポイントからデータを受信し、
前記第１テーブルを参照して、前記受信したデータに対して転送先のエンドポイントへ転送するための処理を実行して上位の通信機器へ送信する、
ように前記プログラム制御プロセッサを機能させることを特徴とする請求項１５に記載のプログラム。
【請求項１７】
前記制御情報はIOアクセスの対象となるエンドポイントが利用するデバイスドライバ情報を更に含み、前記第１転送手段が前記転送先のエンドポイントに対応するデバイスドライバを選択してデータ転送処理を行うことを特徴とする請求項１６に記載のプログラム。
【請求項１８】
前記第２転送手段が、
少なくともIOアクセスの対象となるエンドポイントのアドレスマッピング情報およびBDF(Bus Device Function) 番号を含む前記制御情報を第２テーブルに格納し、
前記上位の通信機器からデータを受信し、
前記第２テーブルを参照して、前記受信したデータに対して転送先のエンドポイントへ転送するための処理を実行して前記転送先のエンドポイントへ送信する、
ように前記プログラム制御プロセッサを機能させることを特徴とする請求項１５−１７のいずれか１項に記載のプログラム。
【請求項１９】
前記制御情報は、前記IOアクセスの対象となるエンドポイントに設定されたバーチャルファンクション（ＶＦ）に関する情報を更に含むことを特徴とする請求項１５−１８のいずれか１項に記載のプログラム。
【請求項２０】
前記転送開始要求を受信すると前記制御情報の同期処理を実行し、当該同期処理終了をトリガとして前記第１転送手段あるいは前記第２転送手段が転送処理を開始するように前記プログラム制御プロセッサを機能させることを特徴とする請求項１５−１９のいずれか１項に記載のプログラム。
【請求項２１】
前記制御情報の同期処理終了後に、前記汎用制御部からの転送開始要求をトリガとして前記第１転送手段あるいは前記第２転送手段が転送処理を開始することを特徴とする請求項１５−１９のいずれか１項に記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はPCIエクスプレス（PCI Express）という高速シリアルインタフェースを採用した通信システムに係り、特にＩＯアクセス通信制御を行う装置および方法に関する。
【背景技術】
【０００２】
近年、PCI Express（以下、適宜「PCIe」と記す。）が普及し、PCIeスロットを搭載したパーソナルコンピュータも市販されている。このようなPCIeシステムの一般的な構成を図９に示す（たとえば特許文献１を参照）。PCIeシステムの構成要素は、周知のように、ルートコンプレックス、PCIeスイッチ、PCIeブリッジ、ＩＯデバイスであるエンドポイント（EP：End Point）などである。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００７−９５０２５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
上述した既存のPCIeシステムにおいて、各デバイス（EP）に対するIOアクセスはＣＰＵが各EPのデバイスドライバを起動してアクセスすることが必要である。PCI Expressでは、PCIeリンク上でエラー情報をやり取りする規定が定まっているだけであるために、PCIeスイッチやPCIeブリッジの先に接続される各デバイス(EP)は、PCIeリンク上にどのようなデバイス(EP)がつながっているかを直接知ることができない。このためにIOアクセスをデバイス同士がやり取りするためには、CPU上のOS(Operating System)が各デバイスに通信先の宛先を教えるプロセスが必要となる。
【０００５】
このように、既存のPCIeシステムでは、各EP側で宛先EPのアドレス情報等を知り得る手段がないためにEP側で自律的に他のEPに対してIOアクセスすることができない。このためにEP間のIOアクセス通信では常にCPUが介在することとなりCPUの負荷が大きくなる。
【０００６】
そこで、本発明の目的は、エンドポイント側で自律的に他のエンドポイントに対してIOアクセスすることができる通信システム、エンドポイント間通信制御装置および方法を提供することにある。
【課題を解決するための手段】
【０００７】
本発明によるエンドポイント間通信制御装置は、高速シリアルインタフェースを用いた通信システムにおけるエンドポイントの通信制御を行う装置であって、下位のエンドポイントと通信するための第１ポートと、上位の通信機器と通信するための第２ポートと、前記通信システムの汎用制御部との間で、少なくともIOアクセスの対象となるエンドポイントを相互に対応付ける制御情報の同期処理を行う制御手段と、前記制御情報を参照して、前記第１ポートから受信したデータに対して転送先のエンドポイントへ転送するための処理を実行して前記第２ポートを通して送出する第１転送手段と、前記制御情報を参照して、前記第２ポートから受信したデータに対して転送先のエンドポイントへ転送するための処理を実行して前記第１ポートを通して送出する第２転送手段と、を有することを特徴とする。
【０００８】
本発明による通信システムは、上述したエンドポイント間通信制御装置の第１ポートに下位のエンドポイントが接続され、第２ポートに通信システムのスイッチが接続され、当該スイッチに汎用制御部がルートコンプレックスを介して接続されていることを特徴とする。
【０００９】
本発明によるエンドポイント間通信制御方法は、汎用制御部から複数のエンドポイントまで複数の通信機器が階層的に接続された高速シリアルインタフェースを用いた通信システムにおけるエンドポイント間の通信制御方法であって、制御手段が前記汎用制御部との間で少なくともIOアクセスの対象となるエンドポイントを相互に対応付ける制御情報の同期処理を実行し、前記汎用制御部から転送開始要求を送信元として受信すると、第１転送手段が前記制御情報を参照して下位のエンドポイントから受信したデータに対して転送先のエンドポイントへ転送するための処理を実行して上位の通信機器へ送信し、前記汎用制御部から転送開始要求を転送先として受信すると、第２転送手段が前記上位の通信機器から受信したデータに対して転送先のエンドポイントへ転送するための処理を実行して当該転送先のエンドポイントへ送信する、を有することを特徴とする。
【００１０】
本発明によるプログラムは、汎用制御部から複数のエンドポイントまで複数の通信機器が階層的に接続された高速シリアルインタフェースを用いた通信システムにおけるエンドポイント間の通信制御装置としてプログラム制御プロセッサを機能させるためのプログラムであって、前記汎用制御部との間で少なくともIOアクセスの対象となるエンドポイントを相互に対応付ける制御情報の同期処理を実行し、前記汎用制御部から転送開始要求を送信元として受信すると、第１転送手段が前記制御情報を参照して下位のエンドポイントから受信したデータに対して転送先のエンドポイントへ転送するための処理を実行して上位の通信機器へ送信し、前記汎用制御部から転送開始要求を転送先として受信すると、第２転送手段が前記上位の通信機器から受信したデータに対して転送先のエンドポイントへ転送するための処理を実行して当該転送先のエンドポイントへ送信する、ように前記プログラム制御プロセッサを機能させることを特徴とする。
【発明の効果】
【００１１】
本発明によれば、エンドポイント側で自律的に他のエンドポイントに対するIOアクセスが可能となる。
【図面の簡単な説明】
【００１２】
【図１】本発明の第１実施形態によるＥＰ間通信制御装置の機能的構成を示すブロック図である。
【図２】本発明の第１実施形態によるＥＰ間通信制御装置を採用したPCIe通信システムの一例を示すシステム構成図である。
【図３】図２に示すPCIe通信システムにおけるコンフィグレーション処理の一例を示すシーケンス図である。
【図４】図２に示すPCIe通信システムにおけるVF(Virtual Function)を有効にするための処理の一例を示すシーケンス図である。
【図５】図２に示すPCIe通信システムにおけるEP間のIOアクセス通信の一例を示すシーケンス図である。
【図６】図１に示すＥＰ間通信制御装置にて参照されるテーブル内容の一例を示す模式図である。
【図７】図２に示すPCIe通信システムにおけるEP間でのVFの対応付けを示す模式図である。
【図８】本発明の第２実施形態によるEP間IOアクセス通信システムの一例を示すシステム構成図である。
【図９】一般的なPCIeシステムの一例を示すシステム構成図である。
【発明を実施するための形態】
【００１３】
以下、本発明を実施するための形態について図面を参照して詳細に説明する。なお、本発明は、以下に述べる実施形態により限定されるものではない。
【００１４】
１．ＥＰ間通信制御装置
本発明の第１実施形態によるＥＰ間通信制御装置は、PCIeスイッチ等の上位機器とエンドポイントEPとの間に接続され、各EPに対応するデバイスドライバが装備されているものとする。また、本実施形態におけるエンドポイントEPにはPCI-SIG策定のSR-IOV(Single Root I/O Virtualization)機能が設けられているものとする。なお、後述するように、ＥＰ間通信制御装置は、システム全体を制御するCPUとEPとの間またはEP-EP間のデータスイッチング動作を行うので、図面ではe2eSW(end point to end point switch)と表示される。
【００１５】
図１において、ＥＰ間通信制御装置（e2eSW）１００は、CPU側の上位機器に接続するためのPCIeポート１０１とエンドポイントEP に接続するためのポート１０２とを有し、さらにRTI（Routing to Inside）機能部１０３とRTO（Routing to Outside）機能部１０４と、装置１００の動作制御を行う制御部１０５とを有する。
【００１６】
RTI機能部１０３は、ポート１０２からPCIeポート１０１へのアップストリーム方向のデータ転送機能部であり、受信部１１０、メモリ１１１、送信部１１２およびテーブル１１３を含む。受信部１１０はポート１０２を通してEPからデータを受信し、受信データをバッファ機能を有するメモリ１１１に退避させる。送信部１１２は、テーブル１１３を参照してメモリ１１１に格納されたデータのあて先EPのデバイスドライバを選択し、宛先EPへデータ転送を行う。後述するように、テーブル１１３のテーブル情報はCPUと同期処理が行われる。
【００１７】
RTO機能部１０４はPCIeポート１０１からポート１０２へのダウンストリーム方向のデータ転送機能部であり、受信部１２０、メモリ１２１、送信部１２２およびテーブル１２３を含む。受信部１２０はPCIeポート１０１を通して上位デバイスからデータを受信し、受信データをバッファ機能を有するメモリ１２１に退避させる。送信部１２２は、テーブル１２３を参照してメモリ１２１に格納されたデータをポート１０２に接続されているEPへ転送する。後述するように、テーブル１２３のテーブル情報は、RTI機能部１０３のテーブル１１３と共通であり、CPUと同期処理が行われる。
【００１８】
制御部１０５はCPUとの制御情報の同期を管理し、後述するように、RTI機能部１０３およびRTO機能部１０４のデータ転送管理を行うことで汎用的な要求を処理する。制御部１０５は仮想的なコンフィグレーションType1レジスタを有し、後述するコンフィグレーション処理においてPCIeポート#1を通してCPUによってWrite設定され、それに対する応答を返すことで、CPUからは既存のPCIeスイッチとして認識される。
【００１９】
たとえば、電源投入時にCPUから発せられるコンフィグレーションサイクルにより、各EPにおいて設定されているコンフィグレーション情報（VF BAR、First VF Offset、VF Stride等）を基にVF(Virtual Function)が生成され、BDF（Bus/Device/Function）番号の設定が行われる。CPUが装置１００の制御部１０５との間でマッピングテーブル情報の同期を取ることで、ＥＰ間通信制御装置１００は各EPに存在するVFのアドレス、BDFを知ることが可能となる。これにより、本実施形態によるEP間ＥＰ間通信制御装置１００は、一般的なPCIeシステムにおいてCPU側で行っているIOアクセスの命令を代行することができる。すなわち、ＥＰ間通信制御装置１００はEPからのデータの宛先情報によって転送先を振り分けることができ、IOアクセスにおいてもEP間で直接通信することが可能となる。
【００２０】
なお、制御部１０５はプログラム制御プロセッサ上で図示しない記憶装置に格納されたプログラムを実行することにより上述した同等の機能を実現することも可能である。
【００２１】
２．IOアクセス通信システム
IOアクセス通信システムにおいて、図１に示すＥＰ間通信制御装置１００は各EPとその上位のPCIeデバイスとの間に接続される。ここで、EPはPCI-SIG策定のSR-IOV機能を有するSR-IOV対応EPであるものとする。
【００２２】
図２に示すように、本実施形態によるIOアクセス通信システムは、既存のIOアクセス通信システムと同様にCPU２０１、ルートコンプレックス２０２、メインメモリ２０３、PCIeスイッチ２０４、および、SR-IOV対応EP２０６−１〜２０６−ｎを有するが、さらに、PCIeスイッチ２０４のｎ個のPCIeポートとそれらにそれぞれ対応するSR-IOV対応EP２０６−１〜２０６−ｎ（Device#1〜Device#n）との間に、ｎ個のＥＰ間通信制御装置２０５−１〜２０５−ｎ（e2eSW#1〜e2eSW#n）がそれぞれ接続されている。すなわち、CPU２０１、ルートコンプレックス２０２、メインメモリ２０３、PCIeスイッチ２０４などは汎用のものを利用するが、ＥＰ間通信制御装置e2eSW#ｉをEP２０６−ｉの前段に配置することによってEP間での直接IOアクセス（CPUを介在しないIOアクセス）が可能となる（ここで、ｉ＝１，２，・・・ｎ）。
【００２３】
具体的には、電源投入後にCPUによってコンフィグレーションアクセスが実施されることによって、各ＥＰ間通信制御装置e2eSW#ｉにおいてSR-IOVコンフィグレーション空間に設定されている情報に基づいてｍ個のバーチャルファンクションVFi1〜VFimが生成され、生成されたVFを考慮したEPのアドレスマッピング情報を対応するＥＰ間通信制御装置e2eSW#ｉとの間で同期を取ることでEP間の直接IOアクセスを可能にする。
【００２４】
図２において、一例として、EP２０６−ｐ（Device#p）のバーチャルファンクションVFp1とEP２０６−ｑ（Device#q）のバーチャルファンクションVFq1との間で直接転送されるデータの流れを破線の矢印で示す。EP２０６−ｐ（Device#p）のバーチャルファンクションVFp1からEP２０６−ｑ（Device#q）のバーチャルファンクションVFq1宛のデータは、ＥＰ間通信制御装置e2eSW#pのRTI機能部、PCIeスイッチ２０４およびＥＰ間通信制御装置e2eSW#qのRTO機能部を通して、EP間ＥＰ間通信制御装置２０５−ｑへ転送される。このように、初期設定を除いて、ＥＰ間でＣＰＵを介在させることなくデータ転送が実行される。
【００２５】
３．EP間IOアクセス通信
本発明では、電源投入時から、IOアクセス通信システムが構築されるまでのシーケンスは既存のものと同一であることを想定している。EP間におけるIOアクセス通信処理要求が発生したとき、CPUと各EPとの間で、制御情報の同期シーケンスが作動し、それがトリガとなってEP間のIOアクセス通信が実現する。既存のIOアクセス通信システムでは、データを一つ転送するのにもCPUが間に介在しなければならないが、その処理を省略することが可能となる。
【００２６】
３．１）コンフィグレーション処理
図３において、CPU２０１は、電源投入直後に、PCIeバス配下のEPを検索するバスサイクルを発生させる（実際はルートコンプレックス（RC）２０２が発生させる）。バスサイクルを受取ったＥＰ間通信制御装置e2eSW#iがそれに対して応答することでコンフィグレーションアクセスが完了する（ステップ３０１）。これにより、ＥＰ間通信制御装置e2eSW#iのアドレスおよびBDF番号が決定される。
【００２７】
すべてのＥＰ間通信制御装置e2eSW（ここではe2eSW#pおよびe2eSW#q）に対してコンフィグレーションアクセスが完了すると、CPU２０１はさらに先のデバイスに対してコンフィグレーションバスサイクルを発生させ、バスサイクルを受取ったＥＰがそれに対して応答することでＥＰに対するコンフィグレーションアクセスが完了する（ステップ３０２）。このコンフィグレーションアクセスに対しては、ＥＰ間通信制御装置e2eSW#iは既存のPCIブリッジと同様にほぼスルー転送を行う。これによりCPU２０１がEPをメモリ空間上にマッピングする事を可能にする。
【００２８】
汎用PCIeスイッチは論理的には複数のPCI-PCIブリッジで構成されていると考えることができるので、CPUによるコンフィグレーションサイクルの結果、汎用のPCIeスイッチは自らの配下にどれだけEPが存在し、アドレスはどの範囲内にいるかを判断することができる。したがって、PCIブリッジ動作と同様に、外部より入ってきたデータの宛先アドレスを確認することによるスイッチ動作が可能となる。
【００２９】
また、本システムではEPがSR-IOV機能に対応していることを想定しているため、VFを有効にするために、図４に示すシーケンスが実行される。ただし、CPU２０１によるSR-IOV対応EPのコンフィグレーションアクセスの結果もたらされるアドレスマッピング等において、ＥＰ間通信制御装置e2eSW#iは影響を与えないので、簡単に説明する。
【００３０】
図４において、ＣＰＵ２０１から各ＥＰに対してコンフィグレーションType0レジスタをリードし、SR-IOV Capabilityを発見した場合には、そのファンクションをフィジカルファンクション（PF：Physical function）と判定する（ステップ３０３）。続いて、SR-IOV Capabilityから有効ＶＦ数を検索し、検索できたＶＦ数内でＶＦを有効化する（ステップ３０４）。そして、VF Stride, First VF Offset等のRID(Requester ID)情報を整理し、VF BAR, System Page Size等を用いてメモリマップを整理する（ステップ３０５）。
【００３１】
３．２）テーブル情報
上述したようにコンフィグレーションアクセスにより生成されたアドレスマッピング情報やBDF番号等の制御情報はＥＰ間通信制御装置e2eSW#iのテーブル情報として汎用CPU２０１との間で同期が取られる。またＥＰ間通信制御装置e2eSW#iは、対応するデバイスドライバをインストールして送信部１１２、１２２の送信動作を可能にする。
【００３２】
図５は、図１におけるテーブル１１３および１２３のテーブル情報の一例を示す。テーブル情報では、IOアクセスの送信元を示す送信元アドレス、送信元ＢＤＦおよび送信元ＶＦの情報と、転送先を示す転送先アドレス、転送先ＢＤＦおよび転送先ＶＦの情報と、利用するデバイスドライバと、の対応が示されている。各EPでのVFのアドレスとBDF等は一意に決定され、それぞれのVFは他のEPのVFと1対多で対応付けられる。ＥＰ間通信制御装置e2eSW#iは、このようなテーブル情報を利用することでRTI機能部１０３およびRTO機能部１０４にてEP間IOアクセス通信を実現する。なお、テーブル情報は、RTI機能部内テーブル１１３、RTO機能部内テーブル１２３ともに共通であり、それぞれの参照先を区別することで転送を実現することができる。
【００３３】
３．３）データ転送処理
次に、EP間のIOアクセス通信について図６および図７を参照しながら説明する。本システムにおいて、EP間のデータ転送を行うトリガとして制御情報の同期を行う。
【００３４】
図６において、まず、CPU２０１は、ＥＰ（Device#p）とEP（Device#q）との間でIOアクセス通信要求が発生した場合、送信元および転送先ＥＰにそれぞれ対応するＥＰ間通信制御装置e2eSW#pおよびＥＰ間通信制御装置e2eSW#qに対して、それぞれ特殊なメッセージ・リクエストを送信して転送開始要求を行う（ステップ４０１）。
【００３５】
この転送開始要求を受信すると、各ＥＰ間通信制御装置e2eSWの制御部１０５はCPU２０１との間でテーブル情報の同期を行う（ステップ４０２）。すなわち、制御部１０５は、CPU２０１から制御情報を受信してRTI機能部１０３のテーブル１１３およびRTO機能部１０４のテーブル１２３に格納すると、その応答を返すことで同期完了を通知する。現在のPCI-SIG規定ではトランザクションとしてEP間で直接命令するものは規定されていないため、本システムではメッセージ・リクエストを本システム固有のパケットとして送出するものとする。
【００３６】
テーブル同期がCPUと各e2eSWの間において行われることによって、図７に示すような各EPにおけるVFを対応付けるメッシュ構造が構築される。すなわち、図５における送信元アドレスおよび送信元ＶＦと転送先アドレスおよび転送先ＶＦとによる対応関係が構築される。
【００３７】
こうしてテーブル同期が完了すると、送信元となるＥＰ間通信制御装置e2eSW#pの制御部１０５は送信部１２２を制御してＥＰ（Device#p）の該当VFに対して転送リクエストを送信する（ステップ４０３）。ＥＰ（Device#p）は、対象VFに対する転送リクエストを受信すると、ＥＰ間通信制御装置e2eSW#pに対して当該データのバースト転送を実行する（ステップ４０４）。
【００３８】
ＥＰ（Device#p）からポート１０２を通してデータを受信すると、ＥＰ間通信制御装置e2eSW#pの受信部１１０は受信データをメモリ１１１に退避させる。続いて送信部１１２は、テーブル１１３のテーブル情報を参照して、転送先のEP（Device#q）で利用されるデバイスドライバを動作させ、転送先アドレス、転送先VFのBDFなどを確認してデータパケットのヘッダ部をＥＰ間通信制御装置e2eSW#qの転送先アドレスに書き換え、PCIeポート１０１からPCIeスイッチ２０４へ送出する（ステップ４０５）。
【００３９】
PCIeスイッチ２０４からパケットを受信したＥＰ間通信制御装置e2eSW#qの受信部１２０は受信データをメモリ１２１に退避させる。続いて送信部１２２は、テーブル１２３を参照して、受信データの宛先アドレスとテーブル１２３の転送先アドレスが、自己の配下に存在するVFと一致していることを確認すると、当該データをEP（Device#q）へ転送するステップ４０６）。こうして天童が完了すると、ＥＰ間通信制御装置e2eSW#pはCPU２０１に対して転送完了通知を送出する（ステップ４０７）。
【００４０】
４．効果
以上説明したように、本実施形態によれば、CPU２０１がＥＰ間転送開始要求（メッセージ・リクエスト）を対応するＥＰ間通信制御装置へ送出し、それによりＣＰＵ２０１とＥＰ間通信制御装置との間でテーブル情報の同期がとれれば、当該EP間で直接IOアクセスが可能となり、ＣＰＵを介在させることなくデータ転送を行うことができる。これにより、CPUへの負荷を軽減することができる。
【００４１】
また、SR-IOV対応のEPを利用することで、複数のEPから一つのEPに対して直接IOアクセスが可能となりEPでの処理速度の向上が期待できる。
【００４２】
５．他の実施形態
図８に示すように、本発明の他の実施形態によるIOアクセス通信システムでは、基本的構成は図２に示す実施形態と同じであるが、ＥＰ間通信制御装置e2eSWを備えたPCIeボード５０１としてEP(Device)を設計することもできる。この場合、既存のサーバに設置されている拡張PCIeスロット５０２の数だけIO間通信を実現することが可能になる。
【００４３】
また、図６に示す実施形態では、CPUからのメッセージ・リクエストにトリガとする制御情報の同期の完了がEP間のIOアクセスを起こすトリガであったが、CPUと制御テーブルの同期を行った後にCPUからのメッセージ・リクエストをEP間のIOアクセスを起こすトリガとすることもできる。
【００４４】
また、図５に示すようにEP間IOアクセス通信の対象となる情報のみをテーブルとして保持していたが、IOアクセスを行う対象だけではなく、IOアクセス通信システムに存在する全てのEPとその中のVFの全ての情報を同期し、トリガとしてCPUからデータ転送命令があった場合のみ、該当するＥＰ間通信制御装置の間でデータ転送を実施することもできる。
【産業上の利用可能性】
【００４５】
本発明はPCI Expressを用いた通信システムに適用可能である。
【符号の説明】
【００４６】
１００  ＥＰ間通信制御装置(e2eSW)
１０１  PCIeポート
１０２  EPに接続するポート
１０３  RTI（Routing to Inside）機能部
１０４  RTO（Routing to Outside）機能部
１０５  制御部
１１０  受信部
１１１  メモリ
１１２  送信部
１１３  テーブル
１２０  受信部
１２１  メモリ
１２２  送信部
１２３  テーブル
２０１  ＣＰＵ
２０２  ルートコンプレックス（ＲＣ）
２０３  メモリ
２０４  PCIeスイッチ
２０５−ｐ  ＥＰ間通信制御装置(e2eSW#p)
２０５−ｑ  ＥＰ間通信制御装置(e2eSW#q)
２０６−ｐ  ＥＰ (Device#p)
２０６−ｑ  ＥＰ (Device#q)
【図１】
2011113163.tif 000003
【図２】
2011113163.tif 000004
【図３】
2011113163.tif 000005
【図４】
2011113163.tif 000006
【図５】
2011113163.tif 000007
【図６】
2011113163.tif 000008
【図７】
2011113163.tif 000009
【図８】
2011113163.tif 000010
【図９】
2011113163.tif 000011