本発明の実施形態は、比較的高い安定性および信頼性を実現するために、スイッチングデバイス、PCIeシステムおよびPCIeシステムを初期化する方法を提供する。
第1の態様によれば、スイッチングデバイスが提供され、このスイッチングデバイスは、少なくとも1つのホストに接続するように構成されている複数のPCIeアップストリームポートと、少なくとも1つのI/Oデバイスに接続するように構成されている少なくとも1つのPCIeダウンストリームポートと、スイッチングデバイスの内部接続ラインを用いることにより、少なくとも1つのPCIeダウンストリームポートに接続された内部処理装置と、を含み、内部処理装置は、
内部接続ラインを用いることにより、コンフィギュレーションリード/ライトパケットを少なくとも1つのPCIeダウンストリームポートに送信し、
内部接続ラインを用いることにより少なくとも1つのPCIeダウンストリームポートによって送信されたコンフィギュレーションリード/ライト応答パケットであって、コンプリータ識別子を保持している、コンフィギュレーションリード/ライト応答パケット、を受信し、かつ、
コンフィギュレーションリード/ライト応答パケット内に保持されたコンプリータ識別子に従って、スイッチングデバイスがコンプリータ識別子を識別子として有するI/Oデバイスに接続されていると判定するように構成されている。
内部処理装置は、スイッチングデバイスに接続された物理デバイス(すなわち、実デバイス)を列挙するように構成されていてもよい。任意選択的に、内部処理装置は、複数のコンフィギュレーションリード/ライトパケットを少なくとも1つのPCIeダウンストリームポートに送信してもよく、その場合、複数のコンフィギュレーションリード/ライトパケットは、異なるコンプリータ識別子を保持する。少なくとも1つのPCIeダウンストリームポートは、複数のコンフィギュレーションリード/ライトパケットを、少なくとも1つのPCIeダウンストリームポートに接続された物理デバイスに転送するように構成され、かつ、接続された物理デバイスによって送信された少なくとも1つのコンフィギュレーションリード/ライト応答パケットを受信すると、少なくとも1つのコンフィギュレーションリード/ライト応答パケットを内部処理装置に転送するように構成されており、少なくとも1つのコンフィギュレーションリード/ライト応答パケットは、複数のコンフィギュレーションリード/ライトパケットの少なくとも1つと一対一の対応関係で対応しており、各コンフィギュレーションリード/ライト応答パケットは、コンフィギュレーションリード/ライト応答パケットに対応するコンフィギュレーションリード/ライトパケット内のコンプリータ識別子を保持する。内部処理装置は、少なくとも1つのPCIeダウンストリームポートによって転送された少なくとも1つのコンフィギュレーションリード/ライト応答パケットを受信して、少なくとも1つのコンフィギュレーションリード/ライト応答パケットの各々に保持されたコンプリータ識別子に従って、少なくとも1つのPCIeダウンストリームポート(またはスイッチングデバイス)に接続された物理デバイスを判定してもよい。物理デバイスは、I/Oデバイスを含んでもよく、または、さらに、PCIeスイッチおよび/または別の装置を含んでもよい。
したがって、本発明のこの実施形態に係るスイッチングデバイスは、少なくとも1つのホストに接続するように構成された複数のPCIeアップストリームポートと、少なくとも1つのI/Oデバイスに接続するように構成された少なくとも1つのPCIeダウンストリームポートと、内部処理装置とを含んでいる。処理装置は内部バスを用いることにより少なくとも1つのPCIeダウンストリームポートに接続され、また、内部接続ラインを用いることによりコンフィギュレーションリード/ライトパケットを少なくとも1つのPCIeダウンストリームポートに送信し、内部接続ラインを用いることにより少なくとも1つのPCIeダウンストリームポートによって送信されたコンフィギュレーションリード/ライト応答パケットを受信して、コンフィギュレーションリード/ライト応答パケットにおいて保持されるコンプリータ識別子に従って、スイッチングデバイスがコンプリータ識別子を識別子(例えば、BDF)として有するI/Oデバイスに接続されていると判定するように構成されている。このように、スイッチングデバイスが故障すると、スイッチングデバイスに接続された少なくとも1つのホストおよび少なくとも1つのI/Oデバイスのみが影響を受け、システム内の別のスイッチングデバイスならびに別のスイッチングデバイスに接続されたホストおよびI/Oデバイスは影響を受けない。したがって、従来技術における外部管理CPUと比較すると、システムの安定性および信頼性が改善されることができる。
第1の態様の第1の可能な実装形態においては、少なくとも1つのPCIeダウンストリームポートが単機能I/Oデバイスに接続されている場合、スイッチングデバイスは、単機能I/Oデバイスと単機能I/Oデバイスに対応するホストとの間で情報を透過的に送信するように特に構成されている。
この場合、単機能I/Oデバイスの機能は、少なくとも1つのホストのうちの1つのみによって用いられることができる、すなわち、単機能I/Oデバイスは、単機能I/Oデバイスの機能を用いるホストに対応する。
前述の可能な実装形態に関して、第1の態様の第2の可能な実装形態においては、スイッチングデバイスは、さらに、少なくとも1つのPCIeダウンストリームポートに接続されていて、少なくとも1つのPCIeダウンストリームポートに接続された少なくとも1つのI/OデバイスのPCIeコンフィギュレーションの内容を格納するように構成された、少なくとも1つのミラーリングエンドポイントデバイスモジュールと、少なくとも1つのホストに対応するPCIeドメインと少なくとも1つのI/Oデバイスに対応するPCIeドメインとの間のマッピングを実装するように構成されたマッピングモジュールと、少なくとも1つのPCIeダウンストリームポートに接続された少なくとも1つのI/Oデバイスの機能が少なくとも1つのホストによって用いられるように、機能を仮想化するように構成された、少なくとも1つの仮想エンドポイントデバイスモジュールと、を含んでいる。
任意選択的に、少なくとも1つのミラーリングエンドポイントデバイスモジュールの一端が少なくとも1つのダウンストリームポートに接続され、少なくとも1つの仮想エンドポイントデバイスモジュールの一端が複数のPCIeアップストリームポートに接続され、かつ、マッピングモジュールは、少なくとも1つのミラーリングエンドポイントデバイスモジュールの他端と少なくとも1つの仮想エンドポイントデバイスモジュールの他端とに別個に接続されている。
任意選択的に、マッピングモジュールは、少なくとも1つのミラーリングエンドポイントデバイスモジュールと少なくとも1つの仮想エンドポイントデバイスモジュールとの間の、例えば、識別子および/またはアドレスのマッピングを実装するように特に構成されていてもよい。
前述の可能な実装形態に関して、第1の態様の第3の可能な実装形態においては、少なくとも1つのPCIeダウンストリームポートのうち第1のPCIeダウンストリームポートがPCIeコンフィギュレーション空間を有しておらず、かつ、複数のPCIeアップストリームポートの各々がPCIeコンフィギュレーション空間を有する。
前述の可能な実装形態に関して、第1の態様の第4の可能な実装形態においては、スイッチングデバイスは、さらに、少なくとも1つのPCIeダウンストリームポートの各々に対応する少なくとも1つのPCIeコンフィギュレーション空間を備え、少なくとも1つの仮想エンドポイントデバイスモジュールは、少なくとも1つのPCIeダウンストリームポートに対応する少なくとも1つのPCIeコンフィギュレーション空間を用いて複数のPCIeアップストリームポートに特に接続されている。
前述の可能な実装形態に関して、第1の態様の第5の可能な実装形態においては、マッピングモジュールは、少なくとも1つのホストに対応するPCIeドメインにおける識別子から少なくとも1つのI/Oデバイスに対応するPCIeドメインにおける識別子へのマッピング関係を格納するために用いられる第1のマッピングテーブルと、少なくとも1つのI/Oデバイスに対応するPCIeドメインにおける識別子から少なくとも1つのホストに対応するPCIeドメインにおける識別子へのマッピング関係を格納するために用いられる第2のマッピングテーブルと、を格納している。
任意選択的に、第1のマッピングテーブルは、少なくとも1つの仮想エンドポイントデバイスモジュールの識別子から少なくとも1つのミラーリングエンドポイントデバイスモジュールの識別子へのマッピング関係を格納するために用いられる。第2のマッピングテーブルは、特に、少なくとも1つのミラーリングエンドポイントデバイスモジュールの識別子から少なくとも1つの仮想エンドポイントデバイスモジュールの識別子へのマッピング関係を格納するために用いられる。
任意選択的に、マッピングモジュールは、少なくとも1つの仮想エンドポイントデバイスモジュールの識別子と少なくとも1つのミラーリングエンドポイントデバイスモジュールの識別子との間のマッピングを、第1のマッピングテーブルおよび第2のマッピングテーブルに従って実装するように特に構成されている。
前述の可能な実装形態に関して、第1の態様の第6の可能な実装形態においては、少なくとも1つのミラーリングエンドポイントデバイスモジュールのうち第1のミラーリングエンドポイントデバイスモジュールは、特に第3のマッピングテーブルであり、第3のマッピングテーブルは、少なくとも1つのI/Oデバイスのうち第1のI/Oデバイスの仮想機能のベースアドレスレジスタBARアドレスおよびBARサイズを格納するために用いられ、かつ、第1のミラーリングエンドポイントデバイスモジュールは、第1のI/OデバイスのPCIeコンフィギュレーションの内容を格納するように構成されている。
任意選択的に、マッピングモジュールは、少なくとも1つの仮想エンドポイントデバイスモジュールのアドレスから少なくとも1つのミラーリングエンドポイントデバイスモジュールのアドレスへのマッピングを、第3のマッピングテーブルおよび第1のマッピングテーブルに従って実装するように特に構成されている。
前述の可能な実装形態に関して、第1の態様の第7の可能な実装形態においては、少なくとも1つの仮想エンドポイントデバイスモジュールのうち第1の仮想エンドポイントデバイスモジュールは、少なくとも1つのI/Oデバイスのうち第2のI/Oデバイスの物理機能が少なくとも1つのホストのうち第1のホストによって用いられるように、物理機能を仮想化するように特に構成され、かつ、第2のI/Oデバイスの物理機能ドライブは、第1のホストのプロセッサによってロードされる。
前述の可能な実装形態に関して、第1の態様の第8の可能な実装形態においては、少なくとも1つの仮想エンドポイントデバイスモジュールのうち第2の仮想エンドポイントデバイスモジュールは、少なくとも1つのI/Oデバイスのうち第3のI/Oデバイスの仮想機能が少なくとも1つのホストのうち第2のホストによって用いられるように、仮想機能を仮想化するように特に構成され、かつ、第3のI/Oデバイスの物理機能ドライブは、少なくとも1つのホスト内の管理BMCによってロードされる。
前述の可能な実装形態に関して、第1の態様の第9の可能な実装形態においては、少なくとも1つの仮想エンドポイントデバイスモジュールのうち第3の仮想エンドポイントデバイスモジュールは、少なくとも1つのI/Oデバイスのうち第4のI/Oデバイスの物理機能および仮想機能が少なくとも1つのホストのうち第3のホストによって用いられるように、物理機能と仮想機能とを仮想化するように特に構成され、第4のI/Oデバイスの物理機能ドライブは、少なくとも1つのホスト内の管理BMCによってロードされ、かつ、第3の仮想エンドポイントデバイスモジュールの物理機能ドライブは、第3のホストのプロセッサによってロードされる。
前述の可能な実装形態に関して、第1の態様の第10の可能な実装形態においては、スイッチングデバイスは、特にホストスイッチングデバイスおよびI/Oスイッチングデバイスであり、ホストスイッチングデバイスとI/Oスイッチングデバイスとは、イーサネットインタフェースを用いることにより接続され、ホストスイッチングデバイスは、複数のPCIeアップストリームポートを備え、かつ、I/Oスイッチングデバイスは、内部処理装置と、少なくとも1つの仮想エンドポイントデバイスモジュールと、マッピングモジュールと、少なくとも1つのミラーリングエンドポイントデバイスモジュールと、少なくとも1つのPCIeダウンストリームポートとを含んでいる。
前述の可能な実装形態に関して、第1の態様の第11の可能な実装形態においては、内部処理装置は、少なくとも1つのホスト内の管理BMCによって送信された初期化命令を受信し、および初期化命令に従って、コンフィギュレーションリード/ライトパケットを、内部接続ラインを用いることにより少なくとも1つのPCIeダウンストリームポートに送信するように構成され、また、内部処理装置は、さらに、スイッチングデバイスに接続されたI/Oデバイスが判定された後で、スイッチングデバイスに接続されたI/Oデバイスに関する情報を管理BMCに対して報告するように構成され、かつ、情報は識別情報を含む。
任意選択的に、内部処理装置は、内部接続ラインを用いることにより、複数のPCIeアップストリームポートに接続されていてもよく、また、内部処理装置は、特に、複数のPCIeアップストリームポートを使用して、管理BMCによって送信される初期化命令を受信してもよい。内部処理装置は、初期化命令に従って、コンフィギュレーションリード/ライトパケットを少なくとも1つのPCIeダウンストリームポートに送信し、受信されたコンフィギュレーションリード/ライト応答パケットに従って、スイッチングデバイスに接続されたI/Oデバイスに関する情報を判定して、複数のPCIeアップストリームポートを使用して、スイッチングデバイスに接続されたI/Oデバイスに関する情報を管理BMCに報告してもよく、情報は、識別情報(例えば、BDF)を含んでもよく、または、さらにトポロジ構造(例えば、PCIe構造ツリー)等を含んでもよい。
前述の可能な実装形態に関して、第1の態様の第12の可能な実装形態においては、内部処理装置は、さらに、少なくとも1つのホスト内の管理BMCによって送信されるコンフィギュレーション管理情報を受信し、および複数のPCIeアップストリームポートおよび少なくとも1つのPCIeダウンストリームポートをコンフィギュレーション管理情報に従って構成するように構成されている。
前述の可能な実装形態に関して、第1の態様の第13の可能な実装形態においては、内部処理装置は、さらに、異常イベントおよびホットスワップイベントを処理するように構成されている。
第2の態様によれば、PCIeシステムが提供され、このPCIeシステムは、少なくとも1つのホストと、第1の態様または第1の態様の可能な実装形態に係るスイッチングデバイスと、少なくとも1つのI/Oデバイスと、を含んで含んでおり、少なくとも1つのホストは、コンフィギュレーション管理機能を有する管理ベースボード管理コントローラBMCを含む。
任意選択的に、管理BMCは、スイッチングデバイスの構成を管理および制御するように構成されていてもよい。例えば、管理BMCは、以下のコンフィギュレーション、すなわち、少なくとも1つのI/Oデバイスの物理機能に対応する仮想機能、スイッチングデバイス内の少なくとも1つのPCIeダウンストリームポートに対応するPCIeコンフィギュレーション空間、少なくとも1つのPCIeダウンストリームポートに対応するPCIeコンフィギュレーション空間とPCIeアップストリームポートとの間の接続関係、少なくとも1つの仮想エンドポイントデバイスモジュールの仮想機能、少なくとも1つのホストによって用いられることができる機能等、の少なくとも1つを判定するように構成されていてもよい。
第2の態様の第1の可能な実装形態においては、少なくとも1つのI/Oデバイスのうち第2のI/Oデバイスは、複数の物理機能を有し、複数の物理機能は、いずれも、対応する仮想機能を有しておらず、少なくとも1つの仮想エンドポイントデバイスモジュールのうち第1の仮想エンドポイントデバイスモジュールは、第2のI/Oデバイスの複数の物理機能が少なくとも1つのホストのうち第1のホストによって用いられるように、物理機能を仮想化するように特に構成され、かつ、第1のホストのプロセッサは、第2のI/Oデバイスの物理機能ドライブをロードするように構成されている。
前述の可能な実装形態に関して、第2の態様の第2の可能な実装形態においては、少なくとも1つの仮想エンドポイントデバイスモジュールのうち第2の仮想エンドポイントデバイスモジュールは、少なくとも1つのI/Oデバイスのうち第3のI/Oデバイスの仮想機能が少なくとも1つのホストのうち第2のホストによって用いられるように、仮想機能を仮想化するように特に構成され、かつ、管理BMCは、さらに、第3のI/Oデバイスの物理機能ドライブをロードするように構成されている。
前述の可能な実装形態に関して、第2の態様の第3の可能な実装形態においては、少なくとも1つの仮想エンドポイントデバイスモジュールのうち第3の仮想エンドポイントデバイスモジュールは、少なくとも1つのI/Oデバイスのうち第4のI/Oデバイスの物理機能および仮想機能が少なくとも1つのホストのうち第3のホストによって用いられるように、物理機能と仮想機能とを仮想化するように特に構成され、第3のホストのプロセッサは、第3の仮想エンドポイントデバイスモジュールの物理機能ドライブをロードするように構成され、かつ、管理BMCは、さらに、第4のI/Oデバイスの物理機能ドライブをロードするように構成されている。
前述の可能な実装形態に関して、第2の態様の第4の可能な実装形態においては、システムは、PCIeスイッチをさらに備え、かつ、少なくとも1つのPCIeダウンストリームポートは、PCIeスイッチを用いることにより、少なくとも1つのI/Oデバイスに接続するように特に構成されている。
前述の可能な実装形態に関して、第2の態様の第5の可能な実装形態においては、システムは、SMMをさらに備え、かつ、管理BMCは、さらに、少なくとも1つのホスト、スイッチングデバイスおよび少なくとも1つのI/Oデバイスのネットワーク構成情報をSMMに送信するように構成されている。
任意選択的に、ネットワーク構成情報は、コンフィギュレーション管理情報を含んでもよく、または、さらに、他の情報を含んでもよい。
第3の態様によれば、別のスイッチングデバイスが提供される。スイッチングデバイスは、少なくとも1つのホストに接続するように構成された少なくとも1つのPCIeアップストリームポートと、少なくとも1つのI/Oデバイスに接続するように構成された少なくとも1つのPCIeダウンストリームポートと、少なくとも1つのPCIeダウンストリームポートに接続されていて、少なくとも1つのPCIeダウンストリームポートに接続された少なくとも1つのI/OデバイスのPCIeコンフィギュレーションの内容を格納するように構成された、少なくとも1つのミラーリングエンドポイントデバイスモジュールと、少なくとも1つのPCIeダウンストリームポートに接続されていて、少なくとも1つのPCIeダウンストリームポートに接続された少なくとも1つのI/Oデバイスの機能が少なくとも1つのホストによって用いられるように、機能を仮想化するように構成された、少なくとも1つの仮想エンドポイントデバイスモジュールと、少なくとも1つの仮想エンドポイントデバイスモジュールおよび少なくとも1つのミラーリングエンドポイントデバイスモジュールに別個に接続されていて、少なくとも1つのホストに対応するPCIeドメインと少なくとも1つのI/Oデバイスに対応するPCIeドメインとの間のマッピングを実装するように構成された、マッピングモジュールと、を備え、少なくとも1つのPCIeダウンストリームポートのうち第1のPCIeダウンストリームポート、および、第1のPCIeダウンストリームポートに対応するPCIeコンフィギュレーション空間は、スイッチングデバイス内に別個に配置されている。
このように、ホストに対して提供される利用可能なポートの数の増加を容易にするために、PCIeダウンストリームポートおよび、PCIeダウンストリームポートに対応するPCIeコンフィギュレーション空間は、別個に配置されており、これによりリソースの利用が改善される。
第3の態様の第1の可能な実装形態においては、少なくとも1つの仮想エンドポイントデバイスモジュールは、特に、第1のPCIeダウンストリームポートの少なくとも1つのPCIeコンフィギュレーション空間を用いることにより、少なくとも1つのPCIeアップストリームポートに接続されている。
スイッチングデバイスは、第1のPCIeダウンストリームポートの1つまたは複数のPCIeコンフィギュレーション空間を含んで含んでもよく、少なくとも1つの仮想エンドポイントデバイスモジュールの全部または一部は、第1のPCIeダウンストリームポートの少なくとも1つのPCIeコンフィギュレーション空間を用いることにより、少なくとも1つのPCIeアップストリームポートの全部または一部に接続されている。
このように、各ホストに接続された仮想エンドポイントデバイスモジュールの数の増加を容易にし、これによりシステムパフォーマンスを改善するために、少なくとも1つの仮想エンドポイントデバイスモジュールは、第1のPCIeダウンストリームポートに対応する少なくとも1つのPCIeコンフィギュレーション空間を用いることにより、複数のPCIeアップストリームポートに接続されている。
第4の態様によれば、別のスイッチングデバイスが提供される。スイッチングデバイスは、少なくとも1つのホストに接続するように構成された少なくとも1つのPCIeアップストリームポートと、少なくとも1つのI/Oデバイスに接続された少なくとも1つのPCIeダウンストリームポートと、少なくとも1つのPCIeダウンストリームポートに接続されていて、少なくとも1つのPCIeダウンストリームポートに接続された少なくとも1つのI/OデバイスのPCIeコンフィギュレーションの内容を格納するように構成された少なくとも1つのミラーリングエンドポイントデバイスモジュールと、少なくとも1つのPCIeダウンストリームポートに接続されていて、少なくとも1つのPCIeダウンストリームポートに接続された少なくとも1つのI/Oデバイスの機能が少なくとも1つのホストによって用いられるように機能を仮想化するように構成された、少なくとも1つの仮想エンドポイントデバイスモジュールと、少なくとも1つの仮想エンドポイントデバイスモジュールおよび少なくとも1つのミラーリングエンドポイントデバイスモジュールに別個に接続されていて、少なくとも1つのホストに対応するPCIeドメインと少なくとも1つのI/Oデバイスに対応するPCIeドメインとの間のマッピングを実装するように構成されたマッピングモジュールと、を備え、
マッピングモジュールは、少なくとも1つのホストに対応するPCIeドメイン内の識別子から少なくとも1つのI/Oデバイスに対応するPCIeドメイン内の識別子へのマッピング関係を格納するために用いられる第1のマッピングテーブルと、少なくとも1つのI/Oデバイスに対応するPCIeドメイン内の識別子から少なくとも1つのホストに対応するPCIeドメイン内の識別子へのマッピング関係を格納するために用いられる第2のマッピングテーブルと、を格納する。
このように、ホストに対応するPCIeドメイン内の識別子とI/Oデバイスに対応するPCIeドメイン内の識別子との間のマッピング関係は、マッピングテーブル状に格納される。従来技術と比較すると、この解決策は、マッピングモジュールによって占有されるストレージスペースと複雑性とを低減し、およびシステムのストレージリソースを節約することができる。
第5の態様によれば、別のスイッチングデバイスが提供される。スイッチングデバイスは、少なくとも1つのホストに接続するように構成された少なくとも1つのPCIeアップストリームポートと、少なくとも1つのI/Oデバイスに接続された少なくとも1つのPCIeダウンストリームポートと、少なくとも1つのPCIeダウンストリームポートに接続されていて、少なくとも1つのPCIeダウンストリームポートに接続された少なくとも1つのI/OデバイスのPCIeコンフィギュレーションの内容を格納するように構成された少なくとも1つのミラーリングエンドポイントデバイスモジュールと、少なくとも1つのPCIeダウンストリームポートに接続されていて、少なくとも1つのPCIeダウンストリームポートに接続された少なくとも1つのI/Oデバイスの機能が少なくとも1つのホストによって用いられるように機能を仮想化するように構成された少なくとも1つの仮想エンドポイントデバイスモジュールと、少なくとも1つの仮想エンドポイントデバイスモジュールおよび少なくとも1つのミラーリングエンドポイントデバイスモジュールに別個に接続されていて、少なくとも1つのホストに対応するPCIeドメインと少なくとも1つのI/Oデバイスに対応するPCIeドメインとの間のマッピングを実装するように構成されたマッピングモジュールと、を備え、
少なくとも1つのミラーリングエンドポイントデバイスモジュールのうち第1のミラーリングエンドポイントデバイスモジュールは、特に第3のマッピングテーブルであり、第3のマッピングテーブルが少なくとも1つのI/Oデバイスのうち第1のI/Oデバイスの仮想機能のベースアドレスレジスタBARアドレスおよびBARサイズを格納するために用いられ、第1のミラーリングエンドポイントデバイスモジュールは、第1のI/OデバイスのPCIeコンフィギュレーションの内容を格納するように構成されている。
このように、I/Oデバイスの仮想機能のアドレス情報はマッピングテーブル状に格納される。従来技術と比較すると、この解決策は、mEPおよびスイッチングデバイスによって占有されるストレージスペースを低減することができ、システムのストレージリソースを節約することができる。
第6の態様によれば、PCIeシステムを初期化する方法が提供され、この方法は、第2の態様および第2の態様の可能な実装形態のいずれかにおけるPCIeシステムに適用される。この方法は、管理BMCによって、初期化命令をスイッチングデバイス内の内部処理装置に送信することと、初期化命令に従って内部処理装置によって、スイッチングデバイスに接続されたI/Oデバイスを判定して、スイッチングデバイスに接続されたI/Oデバイスに関する情報を管理BMCに報告することと、少なくとも1つのホストによって、少なくとも1つのホストに接続されたデバイスに関する情報を取得することと、少なくとも1つのホストに接続されたデバイスに関する情報に従って少なくとも1つのホストによって、少なくとも1つのI/Oデバイスの仮想機能ドライブおよび物理機能ドライブをロードすることと、を含む。
第6の態様の第1の可能な実装形態においては、少なくとも1つのホストに接続されたデバイスに関する情報に従って少なくとも1つのホストによってとは、少なくとも1つのホストのうち第1のホストであって、スイッチングデバイスの複数のPCIeアップストリームポートのうち第1のPCIeアップストリームポートに接続された第1のホストによって、コンフィギュレーションリードパケットを送信することと、スイッチングデバイスの少なくとも1つの対象仮想エンドポイントデバイスモジュールであって、少なくとも1つの仮想エンドポイントデバイスモジュールに含まれかつ各々が第1のPCIeアップストリームポートに接続された少なくとも1つの対象仮想エンドポイントデバイスモジュール、によって、第1のPCIeアップストリームポートを使用して、第1のホストにより送信されたコンフィギュレーションリードパケットを受信し、かつコンフィギュレーションリードパケットに従って、コンフィギュレーションリード応答パケットを第1のホストに送信することと、第1のホストによって、受信されたコンフィギュレーションリード応答パケットに従ってコンフィギュレーションライトパケットを送信することと、少なくとも1つのI/Oデバイスに含まれる少なくとも1つの対象I/Oデバイスの機能を仮想化するように構成された少なくとも1つの対象仮想エンドポイントデバイスモジュールによって、第1のPCIeアップストリームポートを使用して、第1のホストによって送信されたコンフィギュレーションライトパケットを受信し、および少なくとも1つのPCIeダウンストリームポートのうち少なくとも1つの第1のPCIeダウンストリームポートを使用して、コンフィギュレーションライトパケットを、少なくとも1つの対象I/Oデバイスに転送することと、少なくとも1つの第1のPCIeダウンストリームポートを使用して少なくとも1つの対象I/Oデバイスによって、少なくとも1つの対象仮想エンドポイントデバイスモジュールによって転送されたコンフィギュレーションライトパケットを受信し、かつ受信されたコンフィギュレーションライトパケットに従ってコンフィギュレーションライト応答パケットをスイッチングデバイスに送信することと、スイッチングデバイスによって、少なくとも1つの対象I/Oデバイスによって送信されたコンフィギュレーションライト応答パケットを受信し、かつ第1のPCIeアップストリームポートを使用して、コンフィギュレーションライト応答パケットを第1のホストに転送することと、第1のホストによって、第1のホストに接続された少なくとも1つの対象仮想エンドポイントデバイスモジュールに関する情報を、受信されたコンフィギュレーションライト応答パケットから取得することと、を含む。
第6の態様の第1の可能な実装形態においては、方法は、スイッチングデバイスの内部処理装置によって、少なくとも1つの対象仮想エンドポイントデバイスモジュールに関する情報をコンフィギュレーションライトパケットから取得し、かつ少なくとも1つの対象仮想エンドポイントデバイスモジュールに関する取得された情報に従って、スイッチングデバイスのマッピングモジュールを構成することをさらに含む。
前述の可能な実装形態に関して、第6の態様の第2の可能な実装形態においては、少なくとも1つのホストに接続されたデバイスに関する情報に従って少なくとも1つのホストによって、少なくとも1つのI/Oデバイスの仮想機能ドライブおよび物理機能ドライブをロードすることは、少なくとも1つの仮想エンドポイントデバイスモジュールのうち第1の仮想エンドポイントデバイスモジュールが少なくとも1つのI/Oデバイスのうち第2のI/Oデバイスの仮想機能を仮想化するように構成されている場合、少なくとも1つのホスト内の管理BMCによって、第2のI/Oデバイスの物理機能ドライブをロードすること、を含む。
前述の可能な実装形態に関して、第6の態様の第3の可能な実装形態においては、少なくとも1つのホストに接続されたデバイスに関する情報に従って少なくとも1つのホストによって、少なくとも1つのI/Oデバイスの仮想機能ドライブおよび物理機能ドライブをロードすることは、少なくとも1つの仮想エンドポイントデバイスモジュールのうち第2の仮想エンドポイントデバイスモジュールが少なくとも1つのI/Oデバイスのうち第3のI/Oデバイスの物理機能を仮想化するように構成されている場合、少なくとも1つのホストのうち第2のホストのプロセッサによって、第3のI/Oデバイスの物理機能ドライブをロードすることを含み、第2の仮想エンドポイントデバイスモジュールは、複数のPCIeアップストリームポートを使用して第2のホストに接続されている。
以下、本発明の実施形態における技術的解決策について、本発明の実施形態における添付図面を参照して説明する。
図2は、本発明の一実施形態に係るPCIeシステム200の概略的アーキテクチャ図である。PCIeシステム200は、1つのホスト内の複数のプロセスによるI/Oデバイスの共有を実装するように、または、複数のホストによるI/Oデバイスの共有を実装するように構成されていてもよい。
図2に示すように、PCIeシステム200は、N1個のホスト210と、スイッチングデバイス220と、M1個のI/Oデバイス230とを含んでいる(ただしN1≧1かつM1≧1)。I/Oデバイスはまた、エンドポイント(Endpoint,EP)デバイスと呼ばれることもある。
図2は、一例を用いつつ、PCIeシステム200がスイッチングデバイスを1つのみ備え、かつ、スイッチングデバイスが少なくとも1つのホストと少なくとも1つのI/Oデバイスとに接続されていることを示す。しかしながら、代替的には、PCIeシステム200が複数のスイッチングデバイスを備え、かつ、各スイッチングデバイスが少なくとも1つのホストと少なくとも1つのI/Oデバイスとに接続されていてもよいことが理解されるべきである。各スイッチングデバイスならびにスイッチングデバイスに接続された少なくとも1つのホストおよび少なくとも1つのI/Oデバイスは、ネットワークユニットと見なすことができる。これに対応して、PCIeシステム200は、1つまたは複数のネットワークユニットを含んでもよい。しかしながら、本発明のこの実施形態はこれに限定されるものではない。
任意選択的に、本発明のこの実施形態においては、ホストは、特にサーバやパーソナルコンピュータなどの装置であってもよい。代替的には、ホストは仮想マシンであってもよい。本発明のこの実施形態はこれに限定されるものではない。任意選択的に、N1個のホストの一部または全部が、ベースボード管理コントローラ(Baseboard Management Controller,BMC)を含んでもよい。すなわち、N1個のホストが1つまたは複数のBMCを含んでもよい。1つまたは複数のBMCのうちの少なくとも1つは、コンフィギュレーション管理機能を有していてもよく、少なくとも1つのホストと、スイッチングデバイスと、少なくとも1つのI/Oデバイスとを含むネットワークユニットを管理および制御するように特に構成されている。説明の便宜上、以下の説明では、コンフィギュレーション管理機能を有するBMCを管理BMCとよぶ。任意選択的に、管理BMCは、従来技術における管理CPUによって所有されるコンフィギュレーション管理機能を実装するように構成されていてもよい。しかしながら、従来の管理CPUとは異なり、管理BMCは、スイッチングデバイスと、管理BMCが属するネットワークユニット内のスイッチングデバイスに接続された少なくとも1つのホストおよび少なくとも1つのI/Oデバイスと、のコンフィギュレーション管理のみについて役割を担う一方、ネットワークに存在する可能性のある他のネットワークユニットのホスト、I/Oデバイスおよびスイッチングデバイスのコンフィギュレーション管理のついては役割を担わなくてもよい。本発明のこの実施形態はこれに限定されるものではない。
任意選択的に、I/Oデバイスは、特に、ホストバスアダプタ(Host Bus Adapter,HBA)またはソリッドステートディスク(Solid State Disk,SSD)などのデバイスであってもよい。これは本発明のこの実施形態に限定されるものではない。
本発明のこの実施形態においては、スイッチングデバイス220は、N2個のPCIeアップストリームポート221と、M2個のPCIeダウンストリームポート222と、内部処理装置223とを含んでもよい(ただしN2>1かつM2≧1)。N2個のPCIeアップストリームポート221は、N1個のホスト210に接続するように構成されている。M2個のPCIeダウンストリームポート222は、M1個のI/Oデバイス230に接続するように構成されている。内部処理装置223は、スイッチングデバイスの内部接続ラインを用いることによりM2個のPCIeダウンストリームポート222に接続されていてもよく、また、スイッチングデバイスの内部接続ラインを用いることによりN2個のPCIeアップストリームポート221に接続されていてもよい。
具体的には、スイッチングデバイス220は、N2個のPCIeアップストリームポート221を使用してN1個のホスト210に接続されてもよい。N2=N1の場合、すなわち、スイッチングデバイスのPCIeアップストリームポートの数がスイッチングデバイスに接続されたホストの数と等しい場合、N2個のPCIeアップストリームポートは、N1個のホストに一対一の対応関係で接続されていてもよい。N2>N1の場合、すなわち、スイッチングデバイスのPCIeアップストリームポートの数がスイッチングデバイスに接続されたホストの数より多い場合、N2個のPCIeアップストリームポートのうちN1個は、N1個のホストに一対一の対応関係で接続されていてもよく、かつ、残りの(N2−N1)個のPCIeアップストリームポートはアイドル状態であるか、またはPCIeダウンストリームポートとして設定されてもよい。しかしながら、これは本発明のこの実施形態に限定されるものではない。
同様に、スイッチングデバイス220は、M2個のPCIeダウンストリームポート222を使用してM1個のI/Oデバイス230に接続されてもよい。M2=M1の場合、すなわち、スイッチングデバイスのPCIeダウンストリームポートの数がスイッチングデバイスに接続されたI/Oデバイスの数に等しい場合、M2個のPCIeダウンストリームポートは、M1個のI/Oデバイスに1対1の対応関係で接続されていてもよい。M2>M1の場合、すなわち、スイッチングデバイスのPCIeダウンストリームポートの数がスイッチングデバイスに接続されたI/Oデバイスの数より多い場合、M2個のPCIeダウンストリームポートのうちM1個はN1個のI/Oデバイスに1対1の対応関係で接続されてもよく、かつ、残りの(M2−M1)個のPCIeダウンストリームポートはアイドル状態であるか、またはPCIeアップストリームポートとして設定されてもよい。M2<M1の場合、すなわちスイッチングデバイスのPCIeダウンストリームポートの数が、スイッチングデバイスに接続されたI/Oデバイスの数より小さい場合、PCIeシステム200は、1つまたは複数のPCIeスイッチをさらに含んでもよく、M2個のPCIeダウンストリームポートの一部または全部が、PCIeスイッチを用いることによりM1個のI/Oデバイスに接続されてもよい。このように、スイッチングデバイスに接続されたI/Oデバイスの数が増えてもよく、しかもスイッチング性能は低下しない。しかしながら、これは本発明のこの実施形態に限定されるものではない。
任意選択的に、PCIeシステム200は、PCIeスイッチをさらに含んでおり、M2個のPCIeダウンストリームポートは、PCIeスイッチを用いることによって、M1個のI/Oデバイスに接続されてもよい。
加えて、スイッチングデバイス220は、内部処理装置223をさらに含んでいる。内部処理装置223は、特に、例えばプロセッサまたは/またはハードウェア処理回路等の処理モジュールであってもよい。任意選択的に、内部処理装置は、プロセッサおよびハードウェア回路によって実装されてもよい。代替的には、内部処理装置はハードウェア回路のみによって実装されてもよい。これは本発明のこの実施形態に限定されるものではない。
本発明のこの実施形態においては、内部処理装置は、スイッチングデバイス配下の物理デバイス(すなわち、機能モジュールを含まない実デバイス)を列挙するように構成されてもよく、例えば、M2個のPCIeダウンストリームポート222を使用して、スイッチングデバイスに接続された物理デバイスを判定してもよく、またはスイッチングデバイスに接続された複数の物理デバイスの情報、例えば識別子(BDF)またはトポロジ構造といった情報をさらに取得してもよく、さらに、複数の物理デバイスに関する情報に従ってPCIeドメイン構造ツリーを構築してもよい。物理デバイスは、I/Oデバイスおよび/またはPCIeスイッチを含んでもよい。この場合、内部処理装置は、仮想ルートポート(Root Port,RP)またはルートコンプレックス(Root Complex,RC)とみなしてもよい。しかしながら、これは本発明のこの実施形態に限定されるものではない。
任意選択的に、内部処理装置223は、デバイスの列挙を能動的に行ってもよく、例えば、システム初期化段階でデバイスの列挙を行ってもよい。代替的には、内部処理装置223は、別のデバイスからの指示を受けたときに、その指示に従ってデバイスの列挙を行ってもよい。例えば、内部処理装置223は、管理BMCから送信される初期化命令または列挙命令を受信し、初期化命令または列挙命令に従ってデバイスの列挙を行ってもよい。しかしながら、これは本発明のこの実施形態に限定されるものではない。
具体的には、デバイス列挙を行う場合、内部処理装置223は、複数のコンフィギュレーションリード/ライトパケットを少なくとも1つのPCIeダウンストリームポート222に送信してもよい。コンフィギュレーションリード/ライトパケットは、リクエスト識別子(Request Identification,RID)およびコンプリータ識別子(Completer Identification,CID)を保持するもので、RIDの値は内部処理装置223のBDFに設定されてもよく、かつ、CIDの値は、順次、初期値から始まる番号を与えられてもよい。内部処理装置223は、複数のコンフィギュレーションリード/ライトパケットの少なくとも1つに対応するコンフィギュレーションリード/ライト応答パケットを受信してもよい。コンフィギュレーションリード/ライト応答パケットは、対応するコンフィギュレーションリード/ライトパケット内のRIDおよびCIDを保持する。このようにして、内部処理装置223は、コンフィギュレーションリード/ライト応答パケットを認識(例えばコンフィギュレーションリード/ライト応答パケット内のCIDを認識)することにより、スイッチングデバイス220が、コンフィギュレーションリード/ライト応答パケット内のCIDをBDF番号として有する物理デバイスに接続されているか否かを判定する。しかしながら、これは本発明のこの実施形態に限定されるものではない。
任意的実施形態においては、内部処理装置223がプロセッサとハードウェア回路とで実装されている(ここではプロセッサとハードウェア回路とは内部バスを用いることにより接続されている)場合、プロセッサは、初期化命令(または列挙命令)を管理BMCから受信し、初期化命令に従って、列挙パケットに関する情報であってタイプ0(Type0)およびタイプ1(Type1)のコンフィギュレーションリード/ライトパケットによって必要とされる情報を含む情報を生成し、生成した情報を内部バスに出力するように構成されていてもよい。ハードウェア回路は、内部バスを用いることにより、プロセッサによって生成された情報を受信し、その情報をトランザクション層パケット(Transaction Layer Packet,TLP)としてカプセル化し、内部処理装置223に接続された次レベルのモジュールまたは回路を用いることにより、TLPを少なくとも1つのPCIeダウンストリームポート222に送信してもよい。加えて、ハードウェア回路は、さらに、少なくとも1つのPCIeダウンストリームポート222によって送信されたコンフィギュレーションリード/ライト応答パケットを受信すると、コンフィギュレーションリード/ライト応答パケットを認識するように構成されていてもよい。例えば、ハードウェア回路は、少なくとも1つのPCIeダウンストリームポート222によって送信されたコンプリーション(Completion,CPL)/(Completion Data,CPLD)パケットを受信し、受信したCPL/CPLDパケット内のIDを認識してもよい。CPL/CPLDパケットは、ハードウェア回路の割り込みトリガにより、内部バスを用いることにより内部処理装置223のプロセッサに送信されてもよい。具体的には、ハードウェア回路は、CPL/CPLDパケットを内部バスのタイムシーケンスに従ったデータフォーマットに分解し、CPL/CPLDパケットを内部バスに送信してもよい。内部処理装置223のプロセッサは、さらに、受信したパケット情報を解析し、パケット情報を格納して、パケット情報に従ってPCIeドメインの構造ツリーを生成するように構成されていてもよい。デバイスの列挙が完了した後、プロセッサは、さらに、複数のPCIeアップストリームポート221を使用して、生成されたPCIe構造ツリーに関する情報を管理BMCに送信してもよい。しかしながら、これは本発明のこの実施形態に限定されるものではない。
したがって、本発明のこの実施形態によって提供されるPCIeシステムは、少なくとも1つのホストと、スイッチングデバイスと、少なくとも1つのI/Oデバイスとを含んでいる。スイッチングデバイスは、少なくとも1つのホストに接続するように構成された複数のPCIeアップストリームポートと、少なくとも1つのI/Oデバイスに接続するように構成された少なくとも1つのPCIeダウンストリームポートと、内部処理装置とを含んでいる。処理装置は、内部バスを用いることにより少なくとも1つのPCIeダウンストリームポートに接続されており、内部接続ラインを用いることによりコンフィギュレーションリード/ライトパケットを少なくとも1つのPCIeダウンストリームポートに送信し、内部接続ラインを用いることにより少なくとも1つのPCIeダウンストリームポートによって送信されたコンフィギュレーションリード/ライト応答パケットを受信し、コンフィギュレーションリード/ライト応答パケットに保持されたコンプリータ識別子に従って、スイッチングデバイスが、コンプリータ識別子を識別子として有するI/Oデバイスに接続されていると判定するように構成されている。
このように、PCIeシステム内のスイッチングデバイスが故障している場合、スイッチングデバイスに接続されている少なくとも1つのホストおよび少なくとも1つのI/Oデバイスのみが影響を受けることがあり、他のスイッチングデバイス、ならびに、PCIeシステム内の別のスイッチングデバイスに接続されたホストおよびI/Oデバイスは影響を受けることがない。したがって、従来の外付けされた管理CPUと比較して、PCIeシステムの安定性および信頼性を向上することができる。
任意選択的に、内部処理装置223は、以下の機能の少なくとも1つ、すなわち、ホットスワップイベント処理、異常イベント処理およびコンポーネント構成(例えばレジスタ構成)の少なくとも1つの機能をさらに有していてもよい。
内部処理装置223は、ホットスワップイベントを処理するように構成されていてもよい。具体的には、内部処理装置223は、管理BMCおよび/またはハードウェアによってトリガされるホットスワップイベントを検出して、対応するホットスワップ処理手順を行ってもよい。内部処理装置223は、さらに、異常イベントを処理するように構成されていてもよい。具体的には、内部処理装置223は、ハードウェア異常を処理し、異常イベントログを記録して、異常イベントログを報告してもよい。加えて、内部処理装置223は、さらに、コンポーネントを構成するように構成されていてもよい。具体的には、内部処理装置223は、初期化段階でレジスタを構成し、または、レジスタの構成を変更してもよい。内部処理装置223は、デバイスの列挙のプロセスにおいてコンポーネントのコンフィギュレーションに必要な情報を取得し、または、管理BMCによって送信されたコンフィギュレーション管理情報を受信して、コンフィギュレーション管理情報等に従ってコンポーネントを構成してもよい。これは本発明のこの実施形態に限定されるものではない。
任意的実施形態においては、内部処理装置223がプロセッサとハードウェア回路とによって実装されている場合、異常イベント処理の機能を実装するにあたり、内部処理装置223内のハードウェア回路はI/Oデバイスの物理機能に関する異常情報を獲得して、内部処理装置223内のプロセッサによって構成された異常情報を用いることによりプロセッサをトリガしてもよい。内部処理装置223のプロセッサは異常種別を認識してもよい。異常種別が具体的に修正可能または修正不能な非致命的エラーである場合、プロセッサは、自己処理を行い、報告することなく警告のみを出力してもよい。異常種別が具体的に修正不能な致命的エラーである場合、プロセッサは、I/O装置のリンクを破棄し、破棄されたI/O装置のリンクを管理BMCに報告してもよい。リンクが破棄されたI/O装置を学習した後で、管理BMCはI/Oデバイスに対応するドライブをアンインストールしてもよい。加えて、任意選択的に、管理BMCは、シェルフ管理モジュール(Shelf Management Module,SMM)に対して、ネットワーク情報の更新を通知してもよい。SMMは、異常を有するI/Oデバイスに対応するホストを管理および制御し、例えば、ドライブのアンインストールを行いまたは初期化処理をリセットする。これは本発明のこの実施形態に限定されるものではない。
本発明のこの実施形態においては、内部処理装置223は、M1個のI/Oデバイス230から送信されるデータパケットを、M2個のPCIeダウンストリームポート222を使用して受信し、受信されたデータパケットを処理し、例えば、タイムシーケンスを変換して、処理されたデータパケットを、内部接続ラインを利用してN2個のPCIeアップストリームポート221に送信してもよい。加えて、内部処理装置223は、さらに、N1個のホスト210によって送信されたデータパケットを、N2個のPCIeアップストリームポート221を使用して受信し、受信されたデータパケットを処理し、例えば、タイムシーケンスを変換して、処理されたデータパケットを、内部接続ラインを用いることによりM2個のPCIeダウンストリームポート222に送信するように構成されていてもよい。
任意的実施形態においては、内部処理装置223がプロセッサとハードウェア回路とにより実装されている場合、ホストにより送信されるデータを受信する際、内部処理装置内のプロセッサは、管理BMCのインタフェースのバスのタイムシーケンスを解析して、内部バスのタイムシーケンスにおけるデータを出力してもよい。次レベルのモジュールまたは回路によって転送されたデータを受信する際、プロセッサは、内部バスのタイムシーケンスを解析して、管理BMCのインタフェースのバスのタイムシーケンスにデータを出力してもよい。しかしながら、これは本発明のこの実施形態に限定されるものではない。
任意選択的に、本発明のこの実施形態においては、管理BMCはネットワークポートを用いることによりネットワーク情報(またはネットワーク構成情報)をSMMに報告してもよい。SMMは、ネットワーク全体を管理する役割を担うように構成されていてもよい。ユーザは、要求仕様に応じて、SMMのヒューマン‐コンピュータ・インタラクション・インタフェースを利用して、ホストとI/Oデバイスとの間のマッピング接続を設定してもよい。この場合、任意選択的に、管理BMCは、さらに、SMMによって送信される構成要求仕様情報を受信して、構成要求仕様情報に従ってコンフィギュレーション管理情報を決定するように構成されていてもよい。しかしながら、これは本発明のこの実施形態に限定されるものではない。
任意選択的に、本発明のこの実施形態においては、N2個のPCIeアップストリームポート221お各々が、PCIeコンフィギュレーション空間を有し、かつ、M2個のPCIeダウンストリームポート222はいずれもPCIeコンフィギュレーション空間を有しない。
本発明のこの実施形態においては、スイッチングデバイス220におけるPCIeアップストリームポート221はPCIeコンフィギュレーション空間を有し、標準PCIeポート(すなわち、標準P2Pアップストリームブリッジ)である。スイッチングデバイス220におけるPCIeダウンストリームポート222は、PCIeコンフィギュレーション空間を有しておらず、標準PCIeポートではない(すなわち、標準P2Pダウンストリームブリッジではない)。任意選択的に、スイッチングデバイス220は、M2個のPCIeダウンストリームポート222のPCIeコンフィギュレーション空間を追加的に格納しなくてもよい、すなわち、スイッチングデバイス220におけるPCIeダウンストリームポート222にはPCIeコンフィギュレーション空間が存在しない。代替的には、スイッチングデバイス220は、M2個のPCIeダウンストリームポート222の各々のPCIeコンフィギュレーション空間を追加的に格納してもよい、すなわち、PCIeダウンストリームポート222のPCIeコンフィギュレーション空間は、スイッチングデバイス220におけるPCIeダウンストリームポート222から分離されている。代替的には、スイッチングデバイス220は、M2個のPCIeダウンストリームポート222のうち一部のPCIeコンフィギュレーション空間を追加的に格納しつつ、それ以外のPCIeダウンストリームポート222のPCIeコンフィギュレーション空間を追加的に格納しなくてもよい。これは本発明のこの実施形態に限定されるものではない。
任意選択的に、本発明のこの実施形態においては、PCIeダウンストリームポート222は、少なくとも1つのPCIeコンフィギュレーション空間に対応していてもよく、この少なくとも1つのPCIeコンフィギュレーション空間はPCIeダウンストリームポート222に対応し、PCIeダウンストリームポート222はスイッチングデバイス220内に別個に配置されてもよい、すなわち、PCIeダウンストリームポート222は、PCIeダウンストリームポート222に対応する少なくとも1つのePCIeコンフィギュレーション空間から分離されていてもよい。加えて、任意選択的に、PCIeダウンストリームポート222に対応する少なくとも1つのPCIeコンフィギュレーション空間は、N1個のホスト210に対応するPCIeドメインに属してもよい。このように、スイッチングデバイス220がPCIeダウンストリームポート222に対応する複数のPCIeコンフィギュレーション空間を格納すると、PCIeダウンストリームポート222は、システムのリソース利用を改善するために、ホスト210によって使用される複数のポートとして用いられてもよい。
N2個のスイッチングデバイス220におけるPCIeアップストリームポート221がすべてPCIeコンフィギュレーション空間を有し、かつ、M2個のPCIeダウンストリームポート222がいずれもPCIeコンフィギュレーション空間を有しない例は、前述した実施形態の説明のために用いられていることが理解されるべきである。任意選択的に、M2個のPCIeダウンストリームポート222の一部がPCIeコンフィギュレーション空間を有していてもよく、また、PCIeダウンストリームポート222の他の一部がPCIeコンフィギュレーション空間を有しなくてもよい。代替的には、M2個のPCIeダウンストリームポート222のすべてがPCIeコンフィギュレーション空間を有する。別の任意的実施形態においては、N2個のPCIeアップストリームポート221の一部または全部がPCIeコンフィギュレーション空間を有しなくてもよい。これは本発明のこの実施形態に限定されるものではない。
任意選択的に、図3に示すように、スイッチングデバイス220は、N3個の仮想エンドポイントデバイスモジュール(vEPと略す)224と、マッピングモジュール(MAP)225と、M3個のミラーリングエンドポイントデバイスモジュール(mEPと略す)226とをさらに含んでいる。
N3個のvEP224は、N2個のPCIeアップストリームポート221に接続されていてもよく、M2個のPCIeダウンストリームポート222に接続されたM1個のI/Oデバイス230の機能がN2個のPCIeアップストリームポート221に接続されたN1個のホスト210(ただしN3≧1)によって用いられるようにM1個のI/Oデバイス230の機能を仮想化するように構成されている。
M3個のmEP226は、M2個のPCIeダウンストリームポート222に接続されていてもよく、M2個のPCIeダウンストリームポート222に接続されたM1個のI/Oデバイス230(ただしM3≧1)のPCIeコンフィギュレーションの内容を格納するように構成されている。
マッピングモジュール225は、N3個のvEP224とM3個のmEP226とに別個に接続されていてもよく、N1個のホスト210に対応するPCIeドメインとM1個のI/Oデバイス230に対応するPCIeドメインとの間のマッピングを実装するように構成されている。
本発明のこの実施形態においては、任意選択的に、スイッチングデバイス220は、1つまたは複数のmEP226と、マッピングモジュール225と、1つまたは複数のvEP224とをさらに含んでもよい。N3の値は、N1個のホスト210によって用いられる必要があるまたは用いられることができる機能の数によって決定されてもよく、N3は、M3と等しくてもよく、等しくなくてもよい。例えば、N3およびM3は双方ともM1個のI/Oデバイス230が所有する機能の総数(例えば、VFの総数)に等しくてもよい。これは本発明のこの実施形態に限定されるものではない。
具体的には、mEP226は、実在するEPのミラーリングであってもよく、I/Oデバイス(すなわち、エンドポイントデバイス)230のPCIeコンフィギュレーションの内容を格納するように構成されている。vEP224は、エンドポイントデバイス230の物理機能および/または仮想機能を仮想化するように構成されていてもよく、そして、具体的には、エンドポイントデバイス230の物理機能または仮想機能に対応するPCIeコンフィギュレーション空間であってもよい。マッピングモジュール225は、受信された情報および/またはデータが送信された送信先のモジュール(またはコンポーネント)を判定するために、N1個のホスト210に対応するPCIeドメインと、少なくとも1つのI/Oデバイス230に対応するPCIeドメインと、に対応する識別子および/またはアドレスの間のマッピングを実装するように構成されていてもよい。任意的な例においては、vEP224は、ホスト210に対応するPCIeドメインに属していてもよく、mEP226は、I/Oデバイス230に対応するPCIeドメインに属していてもよい。これに対応して、マッピングモジュール225は、N1個のホスト210とM1個のI/Oデバイス230との間で送信されるデータパケットに対する天象処理を行うために、M3個のmEP226の識別子および/またはアドレスと、N3個のvEP224の識別子および/またはアドレスとの間のマッピングを実装する(すなわち、vEPからmEPへのマッピングを行う、または、mEPからvEPへのマッピングを行う)ように特に構成されていてもよい。しかしながら、これは本発明のこの実施形態に限定されるものではない。
任意選択的に、N2個のPCIeアップストリームポート221、N3個のvEP224、マッピングモジュール225、M3個のmEP226およびM2個のPCIeダウンストリームポート222は、順次接続されていてもよい。具体的には、vEP224の一端がPCIeアップストリームポート221に接続されていてもよく、その他端がマッピングモジュール225に接続されていてもよい。N3個のvEP224はN2個のPCIeアップストリームポート221の一部または全部に直接的または間接的に接続されていてもよい。mEP226の一端がPCIeダウンストリームポート222に接続されていてもよく、その他端がマッピングモジュール225に接続されていてもよい。M3個のmEP226は、M2個のPCIeダウンストリームポート222の一部または全部に直接的または間接的に接続されていてもよい。しかしながら、これは本発明のこの実施形態に限定されるものではない。
M2個のPCIeダウンストリームポート222のPCIeコンフィギュレーション空間がスイッチングデバイス220に追加的に設定されていない場合、N3個のvEP224は、N2個のPCIeアップストリームポート221の一部または全部に直接的に接続されていてもよい。任意選択的に、スイッチングデバイス220がさらに、1つまたは複数のPCIeダウンストリームポート222に対応するPCIeコンフィギュレーション空間を追加的に格納する場合、例えば、図3に示すように、スイッチングデバイス220は、N4個のPCIeダウンストリームポートコンフィギュレーション空間(DP_CFGと略す)227を格納してもよく、各PCIeダウンストリームポート222は、0個、1個または複数個のDP_CFG227に対応していてもよい。この場合、N3個のvEP224は、N4個のDP_CFG227を用いることによりN2個のPCIeアップストリームポート221に接続されていてもよい。このように、PCIeアップストリームポート221は、各ホストによって用いられることができるvEPの数を増加させてシステムパフォーマンスを増大させるために、PCIeダウンストリームポート222に対応するPCIeコンフィギュレーション空間を用いることにより、vEP224に接続されている。
加えて、本発明のこの実施形態においては、仮想機能をホストにおいて用いるためにPCIeシステムがWindowsのあらゆるバージョンをサポートするように、仮想機能がホストに対して提示される。
任意的実施形態においては、マッピングモジュール225は、
N1個のホスト210に対応するPCIeドメイン内の識別子からM1個のI/Oデバイス230に対応するPCIeドメイン内の識別子へのマッピング関係を格納するために用いられる第1のマッピングテーブルと、
M1個のI/Oデバイス230に対応するPCIeドメイン内の識別子からN1個のホスト210に対応するPCIeドメイン内の識別子へのマッピング関係を格納するために用いられる第2のマッピングテーブルと、
を格納している。
任意選択的に、第1のマッピングテーブルは、具体的に、N3個のvEP224の識別子からM3個のmEP226の識別子へのマッピング関係、例えば、少なくとも1つのvEP224のBDF番号から少なくとも1つのmEP226のBDF番号へのマッピング関係、を格納するために用いられてもよい。第2のマッピングテーブルは、具体的に、M3個のmEP226の識別子からN3個のvEP224の識別子へのマッピング関係を格納するために用いられてもよい。しかしながら、これは本発明のこの実施形態に限定されるものではない。
任意選択的に、本発明のこの実施形態においては、マッピングモジュール225は、レジスタとハードウェア処理回路とによって実装されてもよい。この場合、第1のマッピングテーブルおよび第2のマッピングテーブルは、レジスタによって別個に格納されてもよい。加えて、任意選択的に、第1のマッピングテーブルおよび第2のマッピングテーブル内の識別子は、BDFによって表されてもよい。代替的には、各機能のインデックスを取得するために、I/Oデバイス230の機能またはvEP224の機能は、番号を再度与えられてもよく、例えば、1から開始する連番で番号を付与されてもよく、インデックスは、ストレージスペースを節約するために、ファンクションインデックス形式にてマッピングテーブルに格納される。
表1および表2は、それぞれ、第1のマッピングテーブルおよび第2のマッピングテーブルの可能な実装形態を示す。表1に示すように、第1のマッピングテーブルは、4つの列を含んでもよい。「ファンクションインデックス」列内の値は、I/Oデバイス230に対応するPCIeドメイン内の機能のインデックスを示す。インデックスは、全機能のBDFに番号を付することによって取得されてもよく、1ないし数ビットを占めてもよい。「イネーブル表示」列内の値は、ファンクションインデックスに対応する機能が存在するか否かを示す。「mEPバス番号」および「mEPファンクション番号」は、それぞれ、「ファンクションインデックス」に対応するmEP226のバス番号およびデバイスファンクション番号を示してもよい。mEPバス番号およびmEPファンクション番号は、組み合わせられてmEP226のBDFとなる。mEP226のBDF番号は、mEP226に対応するI/Oデバイス230のBDF番号と関連付けられてもよい。第1のマッピングテーブルに含まれる行の数は本発明のこの実施形態においては限定されない。例えば、第1のマッピングテーブルは、1024個のエントリを含んでもよい。しかしながら、これは本発明のこの実施形態に限定されるものではない。
表2に示すように、第2のマッピングテーブルは、5つの列を含んでもよい。「ファンクションインデックス」列内の値は、ホスト210に対応するPCIeドメイン内の機能(ホスト210によって列挙により発見される仮想機能モジュールおよび/または物理デバイスであってもよい)のインデックス(例えば、vEP224のファンクションインデックス)を示す。インデックスは、全機能のBDFに番号を付することによって取得されてもよく、1ないし数ビットを占めてもよい。「利用可否表示」列内の値は、ファンクションインデックスに対応する機能が存在するか否かを示す。eVFバス番号およびeVFデバイスファンクション番号は、それぞれ、ファンクションインデックスに対応するeVF224のバス番号およびデバイスファンクション番号を示す。eVFバス番号およびeVFデバイスファンクション番号は、組み合わせられてeVF224のBDFとなる。「PF表示」列内の値は、ファンクションインデックスに対応する機能がvFおよびPFのいずれであるかを示すために用いられる。第2のマッピングテーブルに含まれる行の数は本発明のこの実施形態においては限定されない。例えば、第2のマッピングテーブルは、1024個のエントリを含んでもよい。しかしながら、これは本発明のこの実施形態に限定されるものではない。
このように、ホスト210に対応するPCIeドメイン内の識別子とI/Oデバイス230に対応するPCIeドメイン内の識別子との間のマッピング関係は、マッピングテーブル状に格納される。従来技術と比較すると、この解決策は、マッピングモジュール225によって占有されるストレージスペースおよび複雑さを低減させることができ、システムのストレージリソースを節約することができる。加えて、全機能のBDFに番号が与えられ、これらの番号がマッピングテーブルに格納される。16ビットのBDFを格納するのと比較すると、マッピングモジュール225によって占有されるストレージスペースはさらに低減されることができる。
任意選択的に、本発明のこの実施形態においては、mEP226に格納された、エンドポイントデバイス230のPCIeコンフィギュレーションの内容は、特に、エンドポイントデバイス230のPCIeコンフィギュレーション空間であってもよく、または、エンドポイントデバイス230のPCIeコンフィギュレーション空間における部分コンフィギュレーションの内容であってもよい。例えば、M3個のmEP226のすべてが特にマッピングテーブルであってもよい。代替的には、M3個のmEP226の一部が特にマッピングテーブルであってもよい。これは本発明のこの実施形態に限定されるものではない。
任意的実施形態においては、M3個のmEP226のうち第1番目のmEPは、特に第3のマッピングテーブルである。第3のマッピングテーブルは、M1個のI/Oデバイスのうち第1のI/Oデバイスの仮想機能のベースアドレスレジスタ(Base Address Register,BAR)アドレスとBARサイズとを格納するために用いられる。第1のmEPは、第1のI/Oデバイスのコンフィギュレーションの内容を格納するように構成されている。
表3は、第3のマッピングテーブルの実装例を示す。第3のマッピングテーブルは、mEPインデックスと、mEPインデックスに対応するBARアドレスおよびBARサイズとを含む。任意選択的に、各mEPは、6つのBARアドレスを含んでもよい。しかしながら、これは本発明のこの実施形態に限定されるものではない。
この場合、マッピングモジュール225は、第3のマッピングテーブルおよび第1のマッピングテーブルを参照して、ホスト210のPCIeドメイン内のアドレスからI/Oデバイス230のPCIeドメイン内のアドレスへのマッピングを実装してもよい。しかしながら、これは本発明のこの実施形態に限定されるものではない。
このように、I/Oデバイスの仮想機能のアドレス情報は、マッピングテーブル状に格納される。従来技術と比較すると、この解決策は、mEPによって占有されるストレージスペースを低減させることができ、システムのストレージリソースを節約することができる。
表1ないし表3の例は当業者が本発明のこの実施形態をより一層理解が容易となることを意図したものであって本発明のこの実施形態の範囲を限定する趣旨ではないことが理解されるべきである。明らかなように、当業者は、提供された表1ないし表3の例に従って様々な等価的な修正または変更を行ってもよい。修正または変更されたものもまた、本発明のこの実施形態の範囲に属する。
任意選択的に、本発明のこの実施形態においては、第1のマッピングテーブル、第2のマッピングテーブルまたは第3のマッピングテーブルは、スイッチングデバイス220内の内部処理装置223とホスト210とによって共同的に構成されていてもよい。例えば、内部処理装置223は、デバイス列挙または別の仕方により、スイッチングデバイス220に接続された物理デバイスに関する情報を、M1個のPCIeダウンストリームポート222を使用して取得し、かつ取得された情報に従って、マッピングテーブルを構成してもよく、例えば、物理デバイスに関する情報をマッピングテーブルに格納してもよい。ホスト210は、デバイス列挙(すなわち、ホスト210配下の物理デバイスおよび/または機能モジュールを発見する)プロセスにおいてまたは別の仕方により取得された、ホスト210に対応するPCIeドメインに関する構成情報を、マッピングテーブル内に格納してもよい。しかしながら、これは本発明のこの実施形態に限定されるものではない。
加えて、N3個のvEP224、マッピングモジュール225およびM3個のmEP226は、レジスタにより、またはレジスタとハードウェア回路とにより実装されてもよく、ソフトウェアコードを用いることによりPCIe構造ツリーを実装することがなく、利用が簡単である。加えて、ソフトウェア実装プロセスにおける格納および転送プロセスは、仮想デバイスおよび実デバイスのコンフィギュレーションライトのデュアルオペレーションを用いることにより回避される。
本発明のこの実施形態においては、PCIeシステム200は、複数の動作モードをサポートしていてもよい。複数の動作モードは、以下のモード、すなわち、VFダイレクトモード、VFシェアドモード、PFシェアドモードおよびEP透過的送信モードのうち少なくとも1つのモードを含んでもよい。VFダイレクトモードおよびVFシェアドモードは、SRIOVをサポートするI/Oデバイスに適用されてもよい。PFシェアドモードは、複数の機能をサポートするI/Oデバイスに適用されてもよい。EP透過的送信モードは、単機能I/Oデバイスに適用されてもよい。
具体的には、VFダイレクトモードでは、N3個のvEP224は、M1個のI/Oデバイス230の仮想機能を仮想化するように構成されている。例えば、図4に示すように、PCIeシステムは、2つのホストすなわちホスト0およびホスト1と、PCIeスイッチと、2つのエンドポイントデバイスすなわちEP0およびEP1と、スイッチングデバイスとを含んでもよい。スイッチングデバイスは、ホスト0およびホスト1にそれぞれ接続された2つのPCIeアップストリームポートと、PCIeスイッチを用いることによりEP0およびEP1にそれぞれ接続された2つのPCIeダウンストリームポートと、2つのPCIeダウンストリームポートにそれぞれ対応するPCIeコンフィギュレーション空間DP_CFG0およびDP_CFG1と、内部処理装置と、マッピングモジュールと、vEP0と、vEP1とを含んでいる。vEP0は、DP_CFG0を用いて一方のPCIeアップストリームポートに接続され、かつ、vEP1はDP_CFG1を用いて他方のPCIeアップストリームポートに接続されている。EP0およびEP1の各々は、PFとしてPF0を、および、VFとしてPF0に対応するVF0を有する。この場合、vEP0は、EP0のVF0がホスト0によって用いられるように、VF0を仮想化するように構成されていてもよい。具体的には、vEP0は、EP0のPF0およびVF0のPCIeとのコンフィギュレーション空間の組み合わせであってもよい。vEP1は、EP0のVF0がホスト1によって用いられるように、VF0を仮想化するように構成されていてもよい。具体的には、vEP1は、EP1のPF0およびVF0のPCIeコンフィギュレーション空間の組み合わせであってもよい。しかしながら、これは本発明のこの実施形態に限定されるものではない。
任意選択的に、VFダイレクトモードでは、M1個のI/Oデバイス230のPFドライブは、管理BMCによってロードされてもよく、M1個のI/Oデバイス230のVFドライブは、N1個のホスト210のプロセッサによってロードされてもよい。具体的には、各ホストは、ホストによって列挙されたvEPによって仮想化された、I/OデバイスのVFドライブをロードしてもよい。しかしながら、これは本発明のこの実施形態に限定されるものではない。
VFシェアドモードでは、N3個のvEP224は、M1個のI/Oデバイス230の物理機能および仮想機能を仮想化するように構成されている。この場合、vEP224によって仮想化された機能のうち、VFのみがホスト210によって使用されるサービスポートとして用いられてもよく、PFは、ホスト210によって使用されるサービスポートとして使用されることができない。任意選択的に、vEP224は、特に、仮想化されたPFのPCIeコンフィギュレーション空間であってもよい。PCIeコンフィギュレーション空間は、SRIOVケイパビリティスペースを含んでもよい。しかしながら、これは本発明のこの実施形態に限定されるものではない。例えば、図5に示すように、PCIeシステムは、2つのホストすなわちホスト0およびホスト1と、PCIeスイッチと、エンドポイントデバイスとしてEP0と、スイッチングデバイスとを含んでもよい。スイッチングデバイスは、ホスト0およびホスト1にそれぞれ接続された2つのPCIeアップストリームポートと、PCIeスイッチを用いることによりEP0に接続されたPCIeダウンストリームポートと、PCIeダウンストリームポートに対応する2つのPCIeコンフィギュレーション空間DP_CFG0およびDP_CFG1と、内部処理装置と、マッピングモジュールと、vEP0と、vEP1とを含んでいる。EP0は、物理機能(Physical Function,PF)としてPF0を有し、PF0に対応する2つの仮想機能(Virtual Function,VF)としてVF0およびVF1をもつ。この場合、vEP0およびvEP1は、具体的に、それぞれVF0およびVF1を仮想化するために、SRIOVケイパビリティスペースを保持する、PF0のPCIeコンフィギュレーション空間であってもよい。任意選択的に、VFシェアドモードでは、M1個のI/Oデバイス230のPFドライブは、管理BMCによってロードされてもよい。VFダイレクトモードとは異なり、N1個のホスト210のプロセッサは、さらに、N3個のvEP224によって仮想化されたVFを有効にするために、N3個のvEP224に対応するPFドライブをロードする必要があるため、N1個のホスト210はVFを正常に利用することができる。
PFシェアドモードでは、N3個のvEP224は、M1個のI/Oデバイス230の物理機能を仮想化するように構成されていてもよい。この場合、任意選択的に、M1個のI/Oデバイス230は、PFのみを有しVFを有しなくてもよい、すなわち、M1個のI/Oデバイス内のPFは、PFに対応するVFを有しない。任意選択的に、vEP224は、特に、vEP224によって仮想化されたPFのPCIeコンフィギュレーション空間であってもよく、PCIeコンフィギュレーション空間は、SRIOVケイパビリティスペースを含まなくてもよい。例えば、図6に示すように、PCIeシステムは、2つのホストすなわちホスト0およびホスト1と、PCIeスイッチと、エンドポイントデバイスとしてEP0と、スイッチングデバイスとを含んでもよい。スイッチングデバイスは、ホスト0およびホスト1にそれぞれ接続された2つのPCIeアップストリームポートと、PCIeスイッチを用いることによりEP0に接続されたPCIeダウンストリームポートと、PCIeダウンストリームポートに対応する2つのPCIeコンフィギュレーション空間DP_CFG0およびDP_CFG1と、マッピングモジュールと、vEP0と、vEP1とを含んでいる。EP0は2つのPFsすなわちPF0およびPF1を有し、VFを有しない。この場合、vEP0は、PF0がホスト1によって用いられるようにPF0を仮想化するように構成されていてもよい。vEP1は、PF1がホスト2によって用いられるように、PF1を仮想化するように構成されていてもよい。しかしながら、これは本発明のこの実施形態に限定されるものではない。任意選択的に、PFシェアドモードでは、M1個のI/Oデバイス230のPFドライブは、N1個のホスト210のプロセッサによってロードされてもよい。具体的には、各ホスト210のプロセッサは、プロセッサによって列挙されたvEPによって仮想化されたPFのドライブをロードしてもよい。
EP透過的送信モードでは、スイッチングデバイス220は、スイッチングデバイス220に接続されたM1個のI/Oデバイス230とN1個のホスト210との間で送信された情報を透過的に送信してもよい。この場合、M1個のI/Oデバイス230は、単機能デバイスであってもよい、すなわち、PFのみを有し、VFを有しなくてもよい。例えば、図7に示すように、PCIeシステムは、2つのホストすなわちホスト0およびホスト1と、PCIeスイッチと、3つのエンドポイントデバイスすなわちEP0、EP1およびEP2と、スイッチングデバイスとを含んでもよい。スイッチングデバイスは、ホスト0およびホスト1にそれぞれ接続された2つのPCIeアップストリームポートと、EP0およびEP1にPCIeスイッチを用いることにより接続されたPCIeダウンストリームポートと、EP2に直接的に接続されたPCIeダウンストリームポートと、を含んでいる。EP0、EP1およびEP2の各々は、1つのPFすなわちPF0のみを有する。スイッチングデバイスは、いずれのPCIeダウンストリームポートのPCIeコンフィギュレーション空間も格納しなくてもよい。この場合、ホスト0は、EP0およびEP1のPFを用いてもよい。ホスト1は、EP2のPFを用いてもよい。スイッチングデバイス内のすべてのモジュールは、透過的な送信を行い、複数のホストによって同一のEPを共用する機能を実装することができない。任意選択的に、EP透過的送信モードでは、VFドライブおよびPFドライブはロードされる必要はない。
任意選択的に、PCIeシステム200は、前述した複数の動作モードの特定のモードで常時動作してもよく、または、前述した複数の動作モード間で切り替えられてもよい。任意選択的に、PCIeシステム200は、さらに、別の動作モードをサポートしてもよい。これは本発明のこの実施形態に限定されるものではない。
図4ないし図7の例は当業者が本発明のこの実施形態をより一層理解が容易となることを意図したものであって本発明のこの実施形態の範囲を限定する趣旨ではないことがさらに理解されるべきである。明らかなように、当業者は、提供された図4ないし図7の例に従って様々な等価的な修正または変更を行ってもよい。修正または変更されたものもまた、本発明のこの実施形態の範囲に属する。
前述した例はすべて、PCIeシステムが1つのスイッチングデバイスを含んでいる例を用いることにより説明されていることがさらに理解されるべきである。任意選択的に、PCIeシステムは、複数のスイッチングデバイスを含んでもよい。図8に示すように、PCIeシステム200は、2つのスイッチングデバイスとしてスイッチングデバイス1およびスイッチングデバイス2を含んでいる。各スイッチングデバイスは、2つのホストと2つのI/Oデバイスに接続されていてもよい。具体的には、スイッチングデバイス1は、ホスト0、ホスト1、IO0およびIO1に別個に接続されていてもよい。スイッチングデバイス2は、ホスト2、ホスト3、IO2およびIO3に別個に接続されている。このように、スイッチングデバイスが異常を有する場合、例えば、IO0およびIO1に接続されたスイッチングデバイス1が異常を有する場合、異常対応処理、例えば、リセット動作または関連するサービスの中断、が実際の状況に応じて行われてもよい。IO2およびIO3に接続されたスイッチングデバイス2が正常に動作している場合、ホスト2およびホスト3は、依然として正常に動作することができ、これによりシステムの信頼性および安定性を高めることができる。
前述した実施形態はすべて、スイッチングデバイス220が具体的に1つの物理デバイスである例を用いることにより説明されていることがさらに理解されるべきである。任意選択的に、スイッチングデバイス220は、具体的に複数の物理デバイスであってもよい。例えば、図8および図9に示すように、スイッチングデバイス220はABチップ形式であってもよい、すなわち、スイッチングデバイス220は、特にホストスイッチングデバイス220aおよびI/Oスイッチングデバイス220bであってもよい。ホストスイッチングデバイス220aおよびI/Oスイッチングデバイス220bは、イーサネットインタフェースまたは別のタイプのスイッチドインタフェースを用いることにより接続されていてもよい。任意的実施形態においては、ホストスイッチングデバイス220aは、N2個のPCIeアップストリームポート221と、I/Oスイッチングデバイス220bに接続するように構成された少なくとも1つの第1のスイッチドインタフェースとを含んでもよい。I/Oスイッチングデバイス220bは、ホストスイッチングデバイス220aに接続するように構成された少なくとも1つの第2のスイッチドインタフェースと、内部処理装置223と、M2個のPCIeダウンストリームポート222とを含んでもよい。任意選択的に、図8に示すように、少なくとも1つの第1のスイッチドインタフェースおよび少なくとも1つの第2のスイッチドインタフェースは、直接的に接続されていてもよい。代替的には、図9に示すように、少なくとも1つの第1のスイッチドインタフェースおよび少なくとも1つの第2のスイッチドインタフェースは、イーサネットスイッチまたは別のタイプの内部スイッチングデバイスを用いることにより接続されていてもよい。内部スイッチングデバイスは、ホストスイッチングデバイスとI/Oスイッチングデバイスとに接続されるように構成された複数のスイッチドインタフェースを提供してもよい。この場合、少なくとも1つの第1のスイッチドインタフェースは、内部スイッチングデバイスに接続するように構成されていてもよく、少なくとも1つの第2のスイッチドインタフェースは、内部スイッチングデバイスに接続するように構成されていてもよい。これは本発明のこの実施形態に限定されるものではない。
別の任意的実施形態においては、内部処理装置223は、ホストスイッチングデバイス220a内に配置された処理装置(すなわち、第1の処理装置)と、I/Oスイッチングデバイス220b内に配置された処理装置(すなわち、第2の処理装置)を含んでもよい。この場合、第1の内部処理装置は、複数のPCIeアップストリームポートと少なくとも1つの第1のスイッチドインタフェースとに、ホストスイッチングデバイスの内部接続ラインを用いることにより、別個に接続されていてもよい。第2の内部処理装置は、I/Oスイッチングデバイスの内部接続ラインを用いることにより、少なくとも1つのPCIeダウンストリームポートと少なくとも1つの第2のスイッチドインタフェースとに別個に接続されていてもよい。しかしながら、これは本発明のこの実施形態に限定されるものではない。
この場合、任意選択的に、第1の内部処理装置は、複数のPCIeアップストリームポートを使用して、第1のデータパケットを、少なくとも1つのホストから受信し、第1のデータパケットを処理して第1の処理を行う対象である第1のデータパケットを取得し、かつ内部スイッチングデバイスに対して、少なくとも1つの第1のスイッチドインタフェースを用いることにより、第1の処理を行う対象である第1のデータパケットを送信するように構成されていてもよい。
第2の内部処理装置は、内部スイッチングデバイスによって送信される、第1の処理を行う対象である第1のデータパケットを、少なくとも1つの第2のスイッチドインタフェースを用いることにより受信し、第1の処理を行う対象である第1のデータパケットを処理して第2の処理を行う対象である第1のデータパケットを取得し、かつ少なくとも1つのI/Oデバイスに対して、少なくとも1つのPCIeダウンストリームポートを使用して、第2の処理を行う対象である第1のデータパケットを送信するように構成されている。
任意選択的に、第2の内部処理装置は、さらに、少なくとも1つのPCIeダウンストリームポートを使用して、第2のデータパケットを少なくとも1つのI/Oデバイスから受信し、第2のデータパケットを処理して第1の処理を行う対象である第2のデータパケットを取得し、かつ内部スイッチングデバイスに対して、少なくとも1つの第2のスイッチドインタフェースを用いることにより、第1の処理を行う対象である第2のデータパケットを送信するように構成されている。
第1の内部処理装置は、さらに、内部スイッチングデバイスによって送信される、第1の処理を行う対象である第2のデータパケットを、少なくとも1つの第1のスイッチドインタフェースを用いることにより受信し、第1の処理を行う対象である第2のデータパケットを処理して第2の処理を行う対象である第2のデータパケットを取得し、かつ少なくとも1つのホストに対して、複数のPCIeアップストリームポートを用いることにより、第2の処理を行う対象である第2のデータパケットを送信するように構成されている。
任意選択的に、I/Oスイッチングデバイス220bは、N3個のvEP224と、マッピングモジュール225と、M3個のmEP226とをさらに含んでもよい。ホストスイッチングデバイス220aは、N4個のDP_CFG227およびN3個のvEP224をさらに含んでもよい。
図8に示すように、スイッチングデバイス1は、ホストスイッチングデバイス1とI/Oスイッチングデバイス1とを含んでもよく、かつ、スイッチングデバイス2は、ホストスイッチングデバイス2とI/Oスイッチングデバイス2とを含んでもよい。ホストスイッチングデバイスとI/Oスイッチングデバイスとは、イーサネットインタフェース(例えば、メディアアクセス制御(Media Access Control,MAC)インタフェース)を用いることにより接続されている。この場合、ホストスイッチングデバイス1がホスト0に接続されていてホスト1が異常を有する場合、ホストスイッチングデバイス1は、実際の状況に応じて代替されてもよいが、ホスト2およびホスト3は、依然として、I/Oデバイスへのアクセスを継続することができ、サービスは運用され続けることができる。I/Oスイッチングデバイス1がIO0に接続されていてIO1が異常を有する場合、I/Oスイッチングデバイス2がIO2に接続されており、かつ、IO3が正常なのであるから、ホスト2およびホスト3が、ホストスイッチングデバイス2と、イーサネットスイッチと、I/Oスイッチングデバイス2とを用いて、IO2およびIO3を使用することができるだけでなく、ホスト0およびホスト1がホストスイッチングデバイス1と、イーサネットスイッチと、I/Oスイッチングデバイス2とを用いてIO2およびIO3を使用することができるので、4つのホストがすべてサービスを運用し続けることができ、これにより、システムの信頼性と安定性とをより一層高めることができる。
具体的には、本発明のこの実施形態においては、ホストスイッチングデバイスは、少なくとも1つのホストに接続するように構成された複数のPCIeアップストリームポートを含んでもよい。I/Oスイッチングデバイスは、内部処理装置と、少なくとも1つのI/Oデバイスに接続するように構成された少なくとも1つのPCIeダウンストリームポートとを含んでもよい。
別の任意的実施形態においては、スイッチングデバイスが、少なくとも1つのmEPと、マッピングモジュールと、少なくとも1つのvEPとを含んでいる場合、少なくとも1つのmEPと、マッピングモジュールと、少なくとも1つのvEPとは、専らI/Oスイッチングデバイス内に配置されてもよい。代替的には、図9に示すように、ホストスイッチングデバイスは、少なくとも1つのvEPを含んでもよく、ホストスイッチングデバイス内の少なくとも1つのvEPは、I/Oスイッチングデバイス内の少なくとも1つのvEPと、一対一の対応関係で同一である。しかしながら、これは本発明のこの実施形態に限定されるものではない。
「ホストスイッチングデバイス」および「I/Oスイッチングデバイス」は異なるスイッチングデバイスを区別するための単なる呼称にすぎないことが理解されるべきである。代替的には、「ホストスイッチングデバイス」は、第1のスイッチングデバイスと呼ばれることもあり、「I/Oスイッチングデバイス」は第2のスイッチングデバイスと呼ばれることもある。呼称は本発明の実施形態の保護範囲に対するいかなる限定にもなるべきではない。
したがって、本発明のこの実施形態において提供されるPCIeシステムは、少なくとも1つのホストと、スイッチングデバイスと、少なくとも1つのI/Oデバイスとを含んでいる。スイッチングデバイスは、少なくとも1つのホストに接続するように構成された複数のPCIeアップストリームポートと、少なくとも1つのI/Oデバイスに接続するように構成された少なくとも1つのPCIeダウンストリームポートと、内部処理装置とを含んでいる。処理装置は、内部接続ラインを用いることにより少なくとも1つのPCIeダウンストリームポートに接続されていて、コンフィギュレーションリード/ライトパケットを、少なくとも1つのPCIeダウンストリームポートに、内部接続ラインを用いることにより送信し、少なくとも1つのPCIeダウンストリームポートによって内部接続ラインを用いることにより送信されたコンフィギュレーションリード/ライト応答パケットを受信して、コンフィギュレーションリード/ライト応答パケットにおいて保持されるコンプリータ識別子に従って、スイッチングデバイスがコンプリータ識別子を識別子として有するI/Oデバイスに接続されていると判定するように構成されている。このように、PCIeシステム内のスイッチングデバイスが故障している場合、スイッチングデバイスに接続された少なくとも1つのホストおよび少なくとも1つのI/Oデバイスだけが影響を受け、システム内の別のスイッチングデバイスならびに別のスイッチングデバイスに接続されたホストおよびI/Oデバイスは影響を受けない。したがって、従来技術における外部管理CPUと比較すると、システムの安定性および信頼性が改善されることができる。
加えて、従来技術における従来のPCIe技術は、主として、ボードに適用されるものであり、例えばホストのPCIeポート数に対する制限、限られたスペースおよび拡張性の低さといった比較的多くの制約条件を有するものである。スイッチングデバイスは2つの物理デバイスとして配設され、PCIeドメインは送信用にイーサネット上に設けられている。このようにスペースおよび距離に係る制約条件が打破されることができ、PCIeトポロジが柔軟に設定されることができ、I/Oデバイスが柔軟に配置されることができ、そして、PCIeドメインが遠隔的に配置されることができないという従来技術における課題が解決される。
本発明の実施形態は、さらに、スイッチングデバイスを提供する。スイッチングデバイスは、前述したシステムに係る実施形態におけるとおりのものであってもよい。簡潔さのために、詳細はここでは再度説明しない。
本発明の実施形態において提供されるPCIeシステムおよびスイッチングデバイスについては、図2ないし図9を参照して上述のとおり説明したところである。PCIeシステムの操作手順について以下詳述する。
図10は、本発明の実施形態に係るPCIeシステムを初期化する方法300を示す。初期化方法300は、前述した実施形態におけるPCIeシステムに適用されてもよい。
S310:管理BMCがスイッチングデバイス内の内部処理装置に初期化命令を送信する。
電源投入後、管理BMCは、初期化命令を処理装置に送信してもよい。初期化命令は、処理装置に対して処理を行うために、例えば、デバイス列挙を行い、および/または、システム初期化に関連してスイッチングデバイス内のモジュール(またはコンポーネント)に対して初期化構成を行うように指示するために用いられてもよい。
S320:初期化命令を受信した後、スイッチングデバイスの処理装置は、初期化命令に従って、スイッチングデバイスの少なくとも1つのPCIeダウンストリームポートを使用してスイッチングデバイスに接続された物理デバイスを列挙する。なお、物理デバイスは、少なくとも1つのI/Oデバイスを含む。
本発明のこの実施形態においては、管理BMCは、識別子を割り当ててもよく、例えば、デバイス識別子をスイッチングデバイス内の内部処理装置に割り当ててもよい。デバイス識別子は3つのフィールド、すなわち、バス番号、デバイス番号およびファンクション番号を含んでもよい。バス番号フィールドの欄はデバイスが配置されているバスの数を表し、デバイス番号のフィールドはデバイスの番号を表し、ファンクション番号のフィールドはデバイスによって所有される機能の番号を表す。通常は、デバイス識別子はまた、バス・デバイス・ファンクション(Bus Device Function,BDF)番号と呼ばれることもある。任意選択的に、管理BMCによって処理装置に割り当てられたデバイス識別子はシステム内で一意とされていてもよい。例えば、X86システムでは、管理BMCは、処理装置のデバイス識別子として「0.0.7」を割り当ててもよい。しかしながら、これは本発明のこの実施形態に限定されるものではない。
デバイス列挙を行う際、処理装置は、特に、少なくとも1つのPCIeダウンストリームポートを利用してスイッチングデバイスに接続された実デバイスを検出してもよい。具体的には、内部処理装置は、内部接続バスを用いることにより複数のTLPを少なくとも1つのPCIeダウンストリームポートに送信してもよい。TLPは、特に、コンフィギュレーションリード/ライト要求であってもよく、TLPが有するRIDの値は、処理装置のBDFに設定されてもよく、また、CIDは連番で付番されてもよい。コンフィギュレーションリード/ライトパケットを受信すると、PCIeダウンストリームポートは、受信されたコンフィギュレーションリード/ライト要求を、PCIeダウンストリームポートに接続された物理デバイスに転送してもよい。物理デバイスは、受信されたコンフィギュレーションリード/ライト要求に従って、コンフィギュレーションリード/ライト応答パケット、例えば、CPLパケットまたはCPLDパケットを、物理デバイスに接続されたPCIeダウンストリームポートに送信してもよい。コンフィギュレーションリード/ライト応答パケットは、受信されたコンフィギュレーションリード/ライトパケット内に存在するRIDおよびCIDを保持してもよい。このように、コンフィギュレーションリード/ライト応答パケットをPCIeダウンストリームポートを使用して受信すると、処理装置は、スイッチングデバイスが、コンフィギュレーションリード/ライト応答パケット内のCIDをBDF番号として有する物理デバイスに接続されていると判定してもよく、また、さらに、物理デバイスに関する情報であってコンフィギュレーションリード/ライト応答パケットにより保持される情報を取得してもよい。しかしながら、これは本発明のこの実施形態に限定されるものではない。
S330:スイッチングデバイスが内部処理装置のデバイス列挙結果を管理BMCに送信する。
具体的には、内部処理装置は、デバイス列挙結果を複数のPCIeアップストリームポートを使用して管理BMCに対して報告してもよい。列挙結果は、少なくとも1つのPCIeダウンストリームポートを使用してスイッチングデバイスに接続された物理デバイスと、物理デバイスのトポロジ構造とを含んでもよく、または、PCIe構造ツリーを含んでもよい。これは本発明のこの実施形態に限定されるものではない。
S340:少なくとも1つのホストの各々が、各ホストに接続されたデバイスを列挙する。
少なくとも1つのホストの各々のプロセッサは、プロセッサに接続されたデバイスを列挙してもよい。デバイスは、仮想デバイス(すなわち、機能モジュール)および/または物理デバイス、例えば、スイッチングデバイスのPCIeアップストリームポートであってホストに接続されたスイッチングデバイス、および、少なくとも1つのvEPを含んでもよい。列挙はvEPをもって終了してもよい。しかしながら、これは本発明のこの実施形態に限定されるものではない。
具体的には、ホストのプロセッサは、コンフィギュレーションリードパケットを送信してもよく、その場合、コンフィギュレーションリードパケットはスイッチングデバイスのvEPをもって終了する。コンフィギュレーションリードパケットを受信した後、スイッチングデバイスは、PCIeアップストリームポートを使用してコンフィギュレーションリード応答パケットをホストに返してもよい。コンフィギュレーションリード応答パケットを受信した後、ホストのプロセッサはコンフィギュレーションライトパケットをvEPに送信してもよい。具体的には、コンフィギュレーションライトパケットは、vEPのレジスタにアクセスするために用いられてもよい。任意選択的に、各コンフィギュレーションライトパケットは、各回ごとにレジスタの4KB空間にアクセスしてもよい。なお、コンフィギュレーションライトパケットは依然としてスイッチングデバイスのvEPにて終了する。コンフィギュレーションライトパケットを受信した後、スイッチングデバイスのvEPは、PCIeダウンストリームポートを使用して、コンフィギュレーションライトパケットをvEPに接続されたI/Oデバイスに転送してもよい(すなわち、vEPは、I/Oデバイスの機能を仮想化するように構成されている)。コンフィギュレーションライトパケットを受信後、vEPに対応するI/Oデバイスは、PCIeダウンストリームポートを使用して、コンフィギュレーションライト応答パケットをスイッチングデバイスに返してもよく、その場合、コンフィギュレーションライト応答パケットはI/OデバイスのBDF番号を保持してもよい。任意選択的に、コンフィギュレーションライト応答パケットを受信した後、スイッチングデバイスのマッピングモジュールは、コンフィギュレーションライト応答パケットが保持するCIDに従って、第2のマッピングテーブルに対して検索を行い、コンフィギュレーションライト応答パケットに対応するvEPのBDF番号を取得してもよく、また、コンフィギュレーションライト応答パケット内のCIDを、CIDに対応するvEPのBDF番号で置き換えてもよい。そして、スイッチングデバイスのマッピングモジュールは、コンフィギュレーションライト応答パケットが有するRIDに従って、コンフィギュレーションライト応答パケットをスイッチングデバイスのPCIeアップストリームポートに送信し、PCIeアップストリームポートを使用してコンフィギュレーションライト応答パケットをホストに返すことを決定してもよい。
任意選択的に、少なくとも1つのホストおよび/またはスイッチングデバイスは、自動学習を利用して、前述した列挙を行うプロセスにおいて取得された情報(例えば、BDF番号)をvEPおよび/またはmEPに書き込んでもよい。これは本発明のこの実施形態に限定されるものではない。
S350:少なくとも1つのホストが、少なくとも1つのI/OデバイスのVFドライブおよびPFドライブをロードする。
具体的には、VFドライブは、ホストのプロセッサによってロードされてもよく、また、PFドライブは、異なる動作モードに応じてホストのプロセッサまたは管理BMCによってロードされてもよい。
具体的には、VFダイレクトモードおよびVFシェアドモードでは、I/OデバイスのPFドライブは管理BMCによってロードされてもよい。加えて、VFシェアドモードでは、ホストのプロセッサはさらに、vEPのPFドライブをロードしてもよい、すなわち、各ホストのプロセッサは、ホストのプロセッサによって列挙されたvEPのPFドライブをロードしてもよい。PFシェアドモードでは、I/OデバイスのPFドライブは、ホストのプロセッサによってロードされてもよい、すなわち、各ホストのプロセッサは、ホストのプロセッサによって列挙されたvEPに対応するI/OデバイスのPFドライブ(vEPによって仮想化されたPFのPFドライブ)をロードしてもよい。しかしながら、これは本発明のこの実施形態に限定されるものではない。
別の任意的実施形態においては、S330の後、方法300はさらに以下のステップを含む。
スイッチングデバイス内の内部処理装置は、スイッチングデバイス内で機能モジュールを構成する。具体的には、機能モジュールは、少なくとも1つのvEPと、マッピングモジュールと、少なくとも1つのmEPとを含んでいる。この場合、処理装置は、少なくとも1つのmEPと少なくとも1つのvEPとの間のマッピング関係を確立してもよい、すなわち、少なくとも1つのI/Oデバイスの機能と、vEPによって仮想化された機能であって少なくとも1つのホストによって用いられることができる機能との間のマッピング関係を確立してもよい。処理装置は、特に、スイッチングデバイス配下の物理デバイスに関する情報をスイッチングデバイスの機能モジュールに格納してもよい。例えば、処理装置は、前述した実施形態における第1のマッピングテーブルと、第2のマッピングテーブルと、第3のマッピングテーブルとを、取得されたデバイス情報に従って構成してもよい。物理デバイスに関する情報は、処理装置によるデバイス列挙のプロセスにおいて取得されてもよい。例えば、各デバイスに関する情報、例えば、BDF番号は、コンフィギュレーションリード/ライト応答パケットから取得される。代替的には、物理デバイスに関する情報は、管理BMCによって配信されてもよい。これに対応して、任意選択的に、方法300は、さらに、処理装置がスイッチングデバイス内に機能モジュールを構成するのに先立って、管理BMCがコンフィギュレーション管理情報を処理装置に送信することを含んでもよい。コンフィギュレーション管理情報は、スイッチングデバイスの機能モジュールを構成するのに必要な、PCIeダウンストリームポートおよびPCIeアップストリームポートの情報、例えば、現在使用中の動作モード(例えば、前述した動作モードのいずれか)、コンフィギュレーション情報(例えば、PCIeダウンストリームポートに対応するPCIeコンフィギュレーション空間の数、各PCIeコンフィギュレーション空間配下のvEPの数、PCIeダウンストリームポートとI/Oデバイスとの間の接続関係、または各PCIeポートのMACアドレス)、または、I/OデバイスのPCIeコンフィギュレーション空間に関する情報、を含んでもよい。しかしながら、これは本発明のこの実施形態に限定されるものではない。
初期化手順を行った後、システムはサービスを運用してもよい。この場合、ホストによって送信されたコンフィギュレーションパケット内のコンフィギュレーションライトパケットについては、スイッチングデバイス(例えば、スイッチングデバイスのマッピングモジュール)は、コンフィギュレーションライトパケット内のCIDを変更する必要がある。ホストによって配信されるMemリード/ライトパケットについては、Memリード/ライトパケットのアドレスは変更される必要がある(例えば、異なるドメインに対応するアドレスに対してベースアドレスの置換が行われ、オフセットは変化しない)。ホストによって送信されるコンプリーションパケットCPLD/CPLについては、CIDのみが変更される必要がある。I/Oデバイスによって送信されるMemリード/ライトパケットについては、Memリード/ライトパケットのRIDが変更されてもよいが、アドレスは変更される必要はない。I/Oデバイスによって送信されるコンプリーションパケットCPLD/CPLについては、コンプリーションパケットCPLD/CPLのCIDのみが変更される必要がある。しかしながら、これは本発明のこの実施形態に限定されるものではない。
初期化方法については、前述したシステムの実施形態の具体的記載が参照されてもよいことが理解されるべきである。簡潔さのために、詳細はここでは再度説明しない。加えて、本出願の各実施形態の記載は、一実施形態と別の実施形態との間の相違点を強調しており、一実施形態と別の実施形態との間の類似点は相互参照のために利用されてもよい。
前述した各プロセスのシーケンス番号は行う順序を意味するものではないことが理解されるべきである。行う順序は各プロセスの機能および内部ロジックに従って決定されるべきであり、本発明のこの実施形態の実装プロセスに対するいかなる限定も構成すべきではない。
加えて、本発明の実施形態は、さらに、スイッチングシステムを提供する。このスイッチングシステムは、第1のスイッチングデバイスと第2のスイッチングデバイスとを含んでいる。第1のスイッチングデバイスおよび第2のスイッチングデバイスは、ネットワークを用いることにより接続されている。
第1のスイッチングデバイスは、少なくとも1つのホストに接続するように構成された複数のPCIeアップストリームポートを含んでもよい。
第2のスイッチングデバイスは、少なくとも1つのデバイスに接続するように構成された少なくとも1つのPCIeダウンストリームポートを含んでもよい。
任意選択的に、スイッチングシステムは、さらに、ネットワーク内に配置されたネットワークスイッチングデバイスを含んでもよい。ネットワークスイッチングデバイスは、第1のスイッチングデバイスおよび第2のスイッチングデバイスに接続するように構成された複数のスイッチドインタフェースを有していてもよい。
この場合、任意選択的に、第1のスイッチングデバイスは、さらに、ネットワークスイッチングデバイスに接続するように構成された少なくとも1つの第1のスイッチドインタフェースを含んでいる。第2のスイッチングデバイスは、さらに、ネットワークスイッチングデバイスに接続するように構成された少なくとも1つの第2のスイッチドインタフェースを含んでいる。
任意選択的に、ネットワークスイッチングデバイスは、特に図8に示すイーサネットスイッチであってもよい。しかしながら、これは本発明のこの実施形態に限定されるものではない。
任意選択的に、第1のスイッチングデバイスは、特にホストスイッチングデバイスであってもよく、かつ、第2のスイッチングデバイスは特にI/Oスイッチングデバイスであってもよい。図8および図9に示すように、ホストスイッチングデバイス220aおよびI/Oスイッチングデバイス220bは、イーサネットインタフェースまたは別のタイプのスイッチドインタフェースを用いることにより接続されていてもよい。任意的実施形態においては、ホストスイッチングデバイス220aは、N2個のPCIeアップストリームポート221と、I/Oスイッチングデバイス220bに接続するように構成された少なくとも1つの第1のスイッチドインタフェースとを含んで含んでもよい。I/Oスイッチングデバイス220bは、ホストスイッチングデバイス220aに接続するように構成された少なくとも1つの第2のスイッチドインタフェースと、内部処理装置223と、M2個のPCIeダウンストリームポート222とを含んでもよい。
任意選択的に、図9に示すように、少なくとも1つの第1のスイッチドインタフェースと少なくとも1つの第2のスイッチドインタフェースとは、直接的に接続されている。代替的には、図8に示すように、少なくとも1つの第1のスイッチドインタフェースおよび少なくとも1つの第2のスイッチドインタフェースは、任意のタイプのイーサネットスイッチまたはネットワークスイッチングデバイスを用いることにより接続されていてもよい。ネットワークスイッチングデバイスは、ホストスイッチングデバイスおよびI/Oスイッチングデバイスに接続するように構成された複数のスイッチドインタフェースを提供してもよい。この場合、少なくとも1つの第1のスイッチドインタフェースは、ネットワークスイッチングデバイスに接続するように構成されていてもよく、少なくとも1つの第2のスイッチドインタフェースは、ネットワークスイッチングデバイスに接続するように構成されていてもよい。これは本発明のこの実施形態に限定されるものではない。
任意的実施形態においては、第2のスイッチングデバイスは、第1のスイッチングデバイスによってネットワークを用いることにより送信された第1のデータパケットを受信し、第1のデータパケットを処理してPCIeプロトコルに準拠した第2のデータパケットを取得し、かつ第2のデータパケットを第2のデータパケット対象I/Oデバイスに送信するように構成されていてもよい。
任意選択的に、第2のスイッチングデバイスは、第1のデータパケットをPCIeプロトコルに準拠した第2のデータパケットに変換するように構成されていてもよい。任意選択的に、この変換は、解析処理、パケットフォーマット変換処理、タイムシーケンス変換処理等を含んでもよい。しかしながら、これは本発明のこの実施形態に限定されるものではない。
任意選択的に、第1のデータは、特に、ネットワークのネットワークプロトコルに準拠したデータパケットであってもよい。任意的実施形態においては、図8に示すように、ネットワークはイーサネットであってもよい。この場合、第2のスイッチングデバイスは、特に、イーサネットプロトコルに準拠した第1のデータパケットを、PCIeプロトコルに準拠した第2のデータパケットに変換するように構成されていてもよい。しかしながら、これは本発明のこの実施形態に限定されるものではない。
任意選択的に、第2のスイッチングデバイスは、さらに、受信されたデータパケットにおいて保持された情報にしたがって、または、データパケットを受信するように構成されたポートに従って、データパケットの対象デバイスを判定して、データパケットの対象デバイスに応じてデータパケットを送信するように構成されていてもよい。例えば、第2のスイッチングデバイスは、さらに、第1のデータパケットにおいて保持された情報に従って、第1のデータパケットの対象I/Oデバイスを判定して、第1のデータパケットの対象I/Oデバイスに、第1のデータパケットを処理することにより取得された第2のデータパケットを送信してもよい。しかしながら、これは本発明のこの実施形態に限定されるものではない。
任意選択的に、第1のスイッチングデバイスは、少なくとも1つの第1のスイッチドインタフェースを用いることにより、ネットワークスイッチングデバイスによって送信されるアップリンクデータパケットを受信してもよく、また、少なくとも1つの第1のスイッチドインタフェースを用いることにより、ダウンリンクデータパケットをネットワークスイッチングデバイスに送信してもよい。例えば、第1のスイッチングデバイスは、少なくとも1つのスイッチドインタフェースを用いることにより第1のデータパケットを第2のスイッチングデバイスに送信してもよい。しかしながら、これは本発明のこの実施形態に限定されるものではない。
任意選択的に、第2のスイッチングデバイスは、少なくとも1つの第2のスイッチドインタフェースを用いることにより、ネットワークスイッチングデバイスによって送信されるダウンリンクデータパケットを受信してもよく、また、少なくとも1つの第2のスイッチドインタフェースを用いることにより、アップリンクデータパケットをネットワークスイッチングデバイスに送信してもよい。例えば、第2のスイッチングデバイスは、少なくとも2つのスイッチドインタフェースを用いることにより、第1のスイッチングデバイスによって送信される第1のデータパケットを受信してもよい。しかしながら、これは本発明のこの実施形態に限定されるものではない。
任意選択的に、第2のスイッチングデバイスは、さらに、第2のスイッチングデバイスの内部接続ラインを用いることにより少なくとも1つのPCIeダウンストリームポートに接続された第1の内部処理装置を含んでいる。
任意選択的に、第2のスイッチングデバイスが第1のデータパケットを処理してPCIeプロトコルに準拠した第2のデータパケットを取得するように構成されていることは、第1の内部処理装置が、第1のデータパケットを処理して、PCIeプロトコルに準拠した第2のデータパケットを取得するように構成されていることを含む。
任意選択的に、第2のスイッチングデバイスは、さらに、アップリンクデータパケットを処理するように構成されていてもよい。
任意選択的に、第2のスイッチングデバイス内の第1の処理装置は、少なくとも1つのI/Oデバイスから第3のデータパケットを受信し、第3のデータパケットを処理してネットワークのネットワークプロトコルに準拠した第4のデータパケットを取得し、かつネットワークを用いることにより第4のデータパケットを第1のスイッチングデバイスに送信するように構成されている。
任意選択的に、第1の処理装置は、PCIeプロトコルに準拠した第3のデータパケットに対して変換処理を行って、ネットワークのネットワークプロトコルに準拠した第4のデータパケットを取得してもよい。
任意選択的に、第1のスイッチングデバイスは、受信されたアップリンクデータパケットおよび/またはダウンリンクデータパケットを処理してもよい。
別の任意的実施形態においては、内部処理装置223は、ホストスイッチングデバイス220a内に配置された処理装置(すなわち、第1の処理装置)と、I/Oスイッチングデバイス220b内に配置された処理装置(すなわち、第2の処理装置)とを含んでもよい。この場合、第1の内部処理装置は、ホストスイッチングデバイスの内部接続ラインを用いることにより、複数のPCIeアップストリームポートおよび少なくとも1つの第1のスイッチドインタフェースに別個に接続されていてもよい。第2の内部処理装置は、少なくとも1つのPCIeダウンストリームポートおよび少なくとも1つの第2のスイッチドインタフェースに、I/Oスイッチングデバイスの内部接続ラインを用いることにより別個に接続されていてもよい。しかしながら、これは本発明のこの実施形態に限定されるものではない。
任意選択的に、第1のスイッチングデバイスはさらに、第1のスイッチングデバイスの内部接続ラインを用いることにより複数のPCIeアップストリームポートに接続された第2の内部処理装置を含んでいる。
任意選択的に、第2の内部処理装置は、受信されたアップリンク/ダウンリンクデータパケットを処理するように構成されていてもよい。
任意的実施形態においては、第2の内部処理装置は、少なくとも1つのホストから第5のデータパケットを受信し、第5のデータパケットを処理してネットワークのネットワークプロトコルに準拠した第1のデータパケットを取得し、かつネットワークを用いることにより第1のデータパケットを第2のスイッチングデバイスに送信するように構成されている。
任意選択的に、第5のデータパケットは、PCIeプロトコルに準拠したものであってもよい。第2の処理装置は、特に、第5のデータパケットを第1のデータパケットに変換するように構成されていてもよい。なお、第1のデータパケットは、ネットワークのネットワークプロトコルに準拠している。
任意選択的に、第2の処理装置は、さらに、第5のデータパケットにおいて保持された情報および/または第5のデータパケットを受信するPCIeアップストリームポートに従って、第5のデータパケットに対応する第1のスイッチドインタフェースを判定し、対応する第1のスイッチドインタフェースを用いることにより第1のデータパケットを第2のスイッチングデバイスに送信してもよい。しかしながら、これは本発明のこの実施形態に限定されるものではない。
別の任意的実施形態においては、第2の内部処理装置は、ネットワークを用いることにより、第1のスイッチングデバイスによって送信される第4のデータパケットを受信し、第4のデータパケットを処理してPCIeプロトコルに準拠した第6のデータパケットを取得し、かつ第6のデータパケットを第6のデータパケットの対象ホストに送信するように構成されている。
任意選択的に、第2の処理装置は、ネットワークを用いることにより、第2のスイッチングデバイスによって送信される第4のデータパケットを受信してもよく、その場合、第4のデータパケットは、ネットワークのネットワークプロトコルに準拠したデータパケットであってもよい。第2の処理装置は、第4のデータパケットに対して変換処理を行ってPCIeプロトコルに準拠した第6のデータパケットを取得してもよい。
任意選択的に、第2の処理装置は、受信されたデータパケットにおいて保持された情報に従って、または、データパケットを受信するように構成されたポートに従って、データパケットの対象デバイスを判定して、データパケットの対象デバイスに応じてデータパケットを送信するように構成されていてもよい。例えば、第2の処理装置は、第4のデータパケットにおいて保持された情報に従って、第4のデータパケットの対象ホストを判定して、第4のデータパケットを処理することにより取得された第6のデータパケットを第4のデータパケットの対象ホストに送信してもよい。しかしながら、これは本発明のこの実施形態に限定されるものではない。
任意選択的に、第1のスイッチングデバイスは、複数のPCIeアップストリームポートに接続されていて、少なくとも1つのI/Oデバイスの機能が少なくとも1つのホストによって用いられるように機能を仮想化するように構成された、少なくとも1つの仮想エンドポイントデバイスモジュールをさらに含んでいる。
第2のスイッチングデバイスは、
少なくとも1つのPCIeダウンストリームポートに接続されていて、少なくとも1つのI/OデバイスのPCIeコンフィギュレーションの内容を格納するように構成された、少なくとも1つのミラーリングエンドポイントデバイスモジュール、および、
少なくとも1つのホストに対応するPCIeドメインと少なくとも1つのI/Oデバイスに対応するPCIeドメインとの間のマッピングを実装するように構成されたマッピングモジュールと、
をさらに含んでいる。
任意選択的に、少なくとも1つのPCIeダウンストリームポートのいずれもPCIeコンフィギュレーション空間を有しておらず、かつ、複数のPCIeアップストリームポートの各々がPCIeコンフィギュレーション空間を有する。
任意選択的に、第1のスイッチングデバイスは、少なくとも1つのPCIeダウンストリームポートに対応する少なくとも1つのPCIeコンフィギュレーション空間をさらに含んでいる。少なくとも1つの仮想エンドポイントデバイスモジュールは、特に、少なくとも1つのPCIeダウンストリームポートに対応する少なくとも1つのPCIeコンフィギュレーション空間を用いることにより複数のPCIeアップストリームポートに接続されている。
任意選択的に、少なくとも1つのPCIeダウンストリームポートに対応する少なくとも1つのPCIeコンフィギュレーション空間は、特に、N4個のDP_CFG227であってもよい。しかしながら、これは本発明のこの実施形態に限定されるものではない。任意選択的に、少なくとも1つのPCIeダウンストリームポートの各々は、0個、1個または複数個のPCIeコンフィギュレーション空間に対応していてもよい。これは本発明のこの実施形態に限定されるものではない。
任意選択的に、マッピングモジュールは、
少なくとも1つのホストに対応するPCIeドメイン内の識別子から少なくとも1つのI/Oデバイスに対応するPCIeドメイン内の識別子へのマッピング関係を格納するために用いられる第1のマッピングテーブル、および、
少なくとも1つのI/Oデバイスに対応するPCIeドメイン内の識別子から少なくとも1つのホストに対応するPCIeドメイン内の識別子へのマッピング関係を格納するために用いられる第2のマッピングテーブル、
を格納する。
任意選択的に、少なくとも1つのミラーリングエンドポイントデバイスモジュールのうち第1のミラーリングエンドポイントデバイスモジュールは、特に、第3のマッピングテーブルであり、第3のマッピングテーブルは、少なくとも1つのI/Oデバイスのうち第1のI/Oデバイスの仮想機能のベースアドレスレジスタ(BAR)アドレスおよびBARサイズを格納するために用いられ、第1のミラーリングエンドポイントデバイスモジュールは、第1のI/OデバイスのPCIeコンフィギュレーションの内容を格納するように構成されている。
任意選択的に、少なくとも1つの仮想エンドポイントデバイスモジュールのうち第1の仮想エンドポイントデバイスモジュールは、特に、少なくとも1つのI/Oデバイスのうち第2のI/Oデバイスの物理機能が少なくとも1つのホストのうち第1のホストによって用いられるように物理機能を仮想化するように構成されており、第2のI/Oデバイスの物理機能ドライブは、第1のホストのプロセッサによってロードされる。
任意選択的に、少なくとも1つの仮想エンドポイントデバイスモジュールのうち第2の仮想エンドポイントデバイスモジュールは、特に、少なくとも1つのI/Oデバイスのうち第3のI/Oデバイスの仮想機能が少なくとも1つのホストのうち第2のホストによって用いられるように、仮想機能を仮想化するように構成されており、第3のI/Oデバイスの物理機能ドライブは、少なくとも1つのホスト内のベースボード管理コントローラBMCによってロードされる。
任意選択的に、少なくとも1つの仮想エンドポイントデバイスモジュールのうち第3の仮想エンドポイントデバイスモジュールは、特に、少なくとも1つのI/Oデバイスのうち第4のI/Oデバイスの物理機能および仮想機能が少なくとも1つのホストのうち第3のホストによって用いられるように物理機能および仮想機能を仮想化するように構成されており、第4のI/Oデバイスの物理機能ドライブは、少なくとも1つのホスト内の管理BMCによってロードされ、第3の仮想エンドポイントデバイスモジュールの物理機能ドライブは、第3のホストのプロセッサによってロードされる。
少なくとも1つの仮想エンドポイントデバイスモジュールは、特にN3個のvEP224であってもよく、少なくとも1つのミラーリングエンドポイントデバイスモジュールは、特にM3個のmEP226であってもよく、かつ、マッピングモジュールは、特にマッピングモジュール225であってもよいことが理解されるべきである。したがって、少なくとも1つの仮想エンドポイントデバイスモジュール、少なくとも1つのミラーリングエンドポイントデバイスモジュール、および、マッピングモジュールの具体的実装については、前述した記載を参照されたい。簡潔さのために、詳細はここでは再度説明しない。
任意選択的に、第1のスイッチングデバイスは、特に、ホストスイッチングデバイスであってもよく、第2のスイッチングデバイスは、特に、I/Oスイッチングデバイスであってもよい。第1のスイッチングデバイスおよび第2のスイッチングデバイスの具体的実装については、前述した記載を参照されたい。簡潔さのために、詳細はここでは再度説明しない。ここにおける「ホストスイッチングデバイス」、「I/Oスイッチングデバイス」、「第1のスイッチングデバイス」、および、「第2のスイッチングデバイス」は、異なるスイッチングデバイスを区別するための単なる呼称にすぎないことが理解されるべきである。呼称は、本発明の実施形態の保護範囲に対するいかなる限定をも構成すべきでない。
本発明の実施形態は、さらにPCIeシステムを提供し、PCIeシステムは、少なくとも1つのホストと、前述した実施形態におけるスイッチングシステムと、少なくとも1つのI/Oデバイスとを含んでいる。
本発明の実施形態においては、用語「複数の」は少なくとも2つまたは3つを示すことがあり、用語「および/または」は関連するオブジェクトを記述するための関連関係のみを記述し、3つの関係が存在することを表すことが理解されるべきである。例えば、Aおよび/またはBは、以下の3つの場合、すなわち、Aのみが存在する場合、AおよびBの両方が存在する場合、およびBのみが存在する場合の3つの場合を表すことがある。加えて、本明細書中の文字「/」は、一般に、関連するオブジェクト間の「または」関係を示す。
当業者は、本明細書に開示された実施形態において記載された例と組み合わせて、方法のステップおよびユニットが電子ハードウェア、コンピュータソフトウェア、またはこれらの組み合わせによって実装されることができることを認識することがある。ハードウェアとソフトウェアとの間の互換性を明確に説明するために、前述の説明は、機能に従って各実施形態のステップおよび構成部分を一般的に説明した。機能がハードウェアによって行われるかソフトウェアによって行われるかは、技術的解決策の特定の用途および設計制約条件に依存する。当業者は、各特定の用途のための記載された機能を実装するために異なる方法を使用することがあるが、実装が本出願の範囲を超えていると考えるべきではない。
好適かつ簡単な説明を目的として、前述のシステム、装置、およびユニットの詳細な動作プロセスについては、前述の方法の実施形態における対応するプロセスが参照されてもよいことが当業者によって明確に理解されることがあるので、詳細はここでは説明しない。
本出願で提供されるいくつかの実施形態においては、開示されたシステム、装置、および方法は、他の方法で実施され得ることが理解されるべきである。例えば、記載された装置係る実施形態は単なる一例にすぎない。例えば、ユニットの区分は単なる論理的な機能の区分であって、実際の実装では他の区分であってもよい。例えば、複数のユニットまたはコンポーネントが組み合わせられてもよく、または別のシステムに統合されてもよく、またはいくつかの機能が無視されてもよくもしくは行われなくてもよい。加えて、表示または議論された相互的結合または直接的結合または通信接続は、いくつかのインターフェース、装置間またはユニット間の間接的結合もしくは通信接続、または、電気的接続、機械的接続もしくは他の形態の接続によって実装することができる。
別個のパーツとして記載されているユニットは、物理的に別個のものであってもなくてもよく、ユニットとして表示されるパーツは、物理ユニットであってもなくてもよく、1つの位置に配置されていてもよく、複数のネットワークユニット上に分散されていてもよい。本発明の実施形態における解決策の目的を達成するために、ユニットの一部または全部は、実際のニーズに応じて選択されてもよい。
加えて、本出願の実施形態における機能ユニットは、1つの処理ユニットに統合されてもよいし、ユニットの各々が物理的に単独で存在してもよいし、2つまたは複数のユニットが1つのユニットに統合されてもよい。統合ユニットは、ハードウェアの形態で実装されてもよく、ソフトウェア機能ユニットの形態で実装されてもよい。
統合ユニットがソフトウェア機能ユニットの形態で実装され、独立した製品として販売または使用される場合、統合ユニットはコンピュータ読み取り可能記憶媒体に格納されてもよい。かかる理解に基づいて、本願の技術的解決策は本質的に、または、先行技術に寄与する部分または技術的解決策の全部もしくは一部は、ソフトウェア製品の形態で実装されてもよい。コンピュータソフトウェア製品は、記憶媒体に格納された、コンピュータ装置(パーソナルコンピュータ、サーバ、ネットワーク装置などであってもよい)に対して本出願の実施形態に記載された方法のステップの全部または一部を行うよう指示するためのいくつかの命令を含む。前述した記憶媒体には、USBフラッシュドライブ、リムーバブルハードディスク、読み取り専用メモリ(Read−Only Memory,ROM)、ランダムアクセスメモリ(Random Access Memory,RAM)、磁気ディスク、光ディスクなどのプログラムコードを格納可能な任意の媒体が含まれる。
前述の説明は、本出願の特定の実装形態にすぎないが、本出願の保護範囲を限定するものではない。本出願に開示された技術的範囲内で当業者によって容易に理解されるいかなる修正または置換もまた、本出願の保護範囲内に入るものとする。したがって、本願の保護範囲は、請求項の保護範囲に従うべきものである。