IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 日本電気株式会社の特許一覧

<>
  • 特開-I/O拡張装置及びシステム 図1
  • 特開-I/O拡張装置及びシステム 図2
  • 特開-I/O拡張装置及びシステム 図3
  • 特開-I/O拡張装置及びシステム 図4
  • 特開-I/O拡張装置及びシステム 図5
  • 特開-I/O拡張装置及びシステム 図6
  • 特開-I/O拡張装置及びシステム 図7
  • 特開-I/O拡張装置及びシステム 図8
  • 特開-I/O拡張装置及びシステム 図9
  • 特開-I/O拡張装置及びシステム 図10
  • 特開-I/O拡張装置及びシステム 図11
  • 特開-I/O拡張装置及びシステム 図12
  • 特開-I/O拡張装置及びシステム 図13
  • 特開-I/O拡張装置及びシステム 図14
  • 特開-I/O拡張装置及びシステム 図15
  • 特開-I/O拡張装置及びシステム 図16
  • 特開-I/O拡張装置及びシステム 図17
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024130656
(43)【公開日】2024-09-30
(54)【発明の名称】I/O拡張装置及びシステム
(51)【国際特許分類】
   G06F 13/10 20060101AFI20240920BHJP
   G06F 13/14 20060101ALI20240920BHJP
   G06F 13/36 20060101ALI20240920BHJP
   G06F 13/38 20060101ALI20240920BHJP
   G06F 13/42 20060101ALI20240920BHJP
   H04L 41/0806 20220101ALI20240920BHJP
【FI】
G06F13/10 330C
G06F13/14 330A
G06F13/36 310E
G06F13/38 320A
G06F13/42 310
G06F13/10 310E
H04L41/0806
【審査請求】未請求
【請求項の数】6
【出願形態】OL
(21)【出願番号】P 2023040506
(22)【出願日】2023-03-15
(71)【出願人】
【識別番号】000004237
【氏名又は名称】日本電気株式会社
(74)【代理人】
【識別番号】100103894
【弁理士】
【氏名又は名称】家入 健
(72)【発明者】
【氏名】清水 義雄
(57)【要約】
【課題】I/O拡張筐体内に搭載された複数のPCIeデバイスを、構成の変更が容易な状態で、複数のホストで個別に占有して使用する。
【解決手段】複数のデバイス141~144と、汎用ネットワークを介して接続される、ホスト102、103(図2参照)と、デバイス141~144と、のそれぞれにGroup IDを設定する設定部104aと、デバイス141~144と、いずれか2つ以上のホスト102、103と、をGroup IDに基づいて接続する接続部104bと、を備え、接続部104bは、ホスト102、103とデバイス141~144の組み合わせを変更する際に、変更をホットプラグで行う。
【選択図】図1
【特許請求の範囲】
【請求項1】
複数のデバイスと、
汎用ネットワークを介して接続される、ホストと、前記デバイスと、のそれぞれにGroup IDを設定する設定部と、
前記デバイスと、いずれか2つ以上の前記ホストと、を前記Group IDに基づいて接続する接続部と、を備え、
前記接続部は、前記ホストと前記デバイスの組み合わせを変更する際に、前記変更をホットプラグで行う、
I/O拡張装置。
【請求項2】
複数の前記デバイスにそれぞれ接続されるポートと、
前記ポートに割り当てられる前記Group IDを記録するメモリと、を備え、
前記Group IDが割り当てられていない前記ポートをDisableとして設定するとともに、Disableとして設定されたポートに接続される前記デバイスのスロットの電源をoffにする、
請求項1に記載のI/O拡張装置。
【請求項3】
前記接続部は、
第1のホストへの接続状態から第2のホストへの接続状態に変更するホットプラグでの変更を行う際に、前記デバイスが接続されたポートの電源をOffにする制御を行い、
その後、前記第1のホストへの仮想デバイスの追加と、前記第2のホストへの仮想デバイスの削除を行い、
その後、前記デバイスが接続されたポートの電源をONにする制御を行い、
前記第2のホストからの制御に応じて前記デバイスの初期設定を行う、
請求項2に記載のI/O拡張装置。
【請求項4】
前記設定部は、
接続対象のホストと異なるGroup IDが割り当てられた前記ポートには、接続対象のホストのGroup IDにおいて、仮想デバイスが接続されたように構成して、デバイスが割り当てられる際のリソースを確保する、
請求項2又は請求項3に記載のI/O拡張装置。
【請求項5】
前記接続部は、
Group IDに基づく接続をVLANの通信で行う際に、PortVLAN、もしくは、TaggedVLANの設定を用いる、
請求項1に記載のI/O拡張装置。
【請求項6】
ホストと、
複数のデバイスが設けられたI/O拡張装置と、
前記ホストと、前記I/O拡張装置を接続する汎用ネットワークと、を備え、
前記I/O拡張装置は、
前記ホストと、前記デバイスと、のそれぞれにGroup IDを設定する設定部と、
前記デバイスと、いずれか2つ以上の前記ホストと、を前記Group IDに基づいて接続する接続部と、を備え、
前記接続部は、前記ホストと前記デバイスの組み合わせを変更する際に、前記変更をホットプラグで行う、
システム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、I/O拡張装置及びシステムに関する。
【背景技術】
【0002】
近年、データセンターなどにある多数のサーバや、GPU(Graphics Processing Unit)などのPCI Express(以下、PCIe)デバイスのリソースを自由に組み合わせて、必要な時に必要なリソースでシステムを構成し運用して、効率的な使用や省電力をはかることができるディスアグリゲーテッドコンピューティングが志向されている。
【0003】
ここで、ディスアグリゲーテッドコンピューティングの手法の一つとして、PCIeインターコネクトの延長技術がある。
【0004】
一般に、PCIeは、ネットワークインタフェースカードやUSBコントローラなど、コンピュータ内部の様々なPCIeデバイスの接続に用いられている。また、PCIeインターコネクトを筐体外に接続する技術としてExpEther技術があり、図16は関連するシステムの物理構成例を示している。
【0005】
具体的には、図16では、汎用ネットワーク1に、ホスト2とI/O拡張筐体4、5が接続されている。また、ホスト2とI/O拡張筐体4,5には、それぞれにPCIe Expander Engineを搭載している。ホスト2にはマスタ機能を持つPCIe Expander Engine(Master)13、I/O拡張筐体にはそれぞれスレーブ機能を持つPCIe Expander Engine(Slave)21を搭載している。
【0006】
PCIe Expander Engineは、マスタ/スレーブとも、MAC/PHY経由で、Ethernetのような汎用ネットワークを介してお互いに通信を行う。この構成例では、PCIe Expander Engineは、通信の冗長構成として、MAC/PHYで2系統を有している。EthernetでPCIeのパケットを転送する場合、PCIeのパケットを、Ethernet通信で使用されるEthernetフレームにカプセル化して転送を行う。
【0007】
また、このPCIe Expander Engine間の通信は、汎用ネットワークの部分がPCIe Switchの内部バスのような動作を行う。これにより、ホストのPCIe Root Complex(PCIeデバイスを接続するツリーの、rootになるデバイス)から見ると、PCIe Expander Engine(Master/Slave)で論理的に構成されるPCIe Switch配下に、I/O拡張筐体内のPCIeデバイスが接続されており、それらのPCIeデバイスを認識/使用することが可能になる。
【0008】
なお、I/O拡張筐体のPCIe Expander Engine(Slave)配下に複数のPCIe deviceを接続するために、PCIe Switch(以下、PEX)31を搭載することもできる。
【0009】
さらに、図17は、図16に示した構成における論理構成の一例である。PCIe Expander Engine(Master/Slave)で、Scalable PCIe Switch51を構成し、そのDownstream port配下に、I/O拡張筐体4,5のそれぞれのPEX31が接続される。
【0010】
なお、PCIe Expander EngineのMasterは、PCIe SwitchのUpstream port側の機能を有する。これは、PCIeデバイスを接続するツリーで、Root Complex側に向かうポートである。また、PCIe Expander EngineのSlaveは、PCIe SwitchのDownstream port側の機能を有している。これは、(PCIeデバイスを接続するツリーでPCIeのEndpoint側に向かうポートである。
【先行技術文献】
【特許文献】
【0011】
【特許文献1】特開2018-113075号公報
【発明の概要】
【発明が解決しようとする課題】
【0012】
しかしながら、図16及び図17に示した構成では、1台のホストに対し、複数のI/O拡張筐体を接続することは可能だが、I/O拡張筐体に対し、複数のホストを接続して構成することができない。そのため、I/O拡張筐体内の複数のPCIeデバイスを、ホスト1台のみで占有し使用することになる。
【0013】
なお、1台のI/O拡張筐体に複数のホストを接続し、PCIeデバイスのSR-IOVの機能を使い、PCIeデバイス内の複数の仮想ファンクションを各ホストに割り当てて、PCIeデバイスを共用で使用することは可能だが、I/O拡張筐体内の複数あるPCIeデバイスを別々のホストに割り当て、占有して使用することができないという問題がある。
【0014】
また、PEXでパーティション機能を有しているデバイスもあるが、物理的な配線は固定であることから、ホスト自体を切り替えることができない。
【0015】
また、ホストに接続されたPCIeデバイスのリソースを切り替えるため、稼働中にPCIeデバイスを個別に挿抜を可能とするホットプラグ機能が必要になる。しかしながら、図16に示した構成のように、PEX配下にPCIeデバイスを接続した構成の場合、PEXはホットプラグに対応していないため、PEX配下のPCIeデバイスを個別にホットプラグすることができない。そのため、PEX配下のリソースを切り替える場合、PEXを接続したホストで再起動が必要になるという問題もある。
本開示の目的は、上述した課題を鑑み、I/O拡張筐体内に搭載された複数のPCIeデバイスを、構成の変更が容易な状態で、複数のホストで個別に占有して使用することが可能となるI/O拡張装置及びシステムを提供することにある。
【課題を解決するための手段】
【0016】
本開示にかかるI/O拡張装置は、複数のデバイスと、汎用ネットワークを介して接続される、ホストと、前記デバイスと、のそれぞれにGroup IDを設定する設定部と、 前記デバイスと、いずれか2つ以上の前記ホストと、を前記Group IDに基づいて接続する接続部と、を備え、前記接続部は、前記ホストと前記デバイスの組み合わせを変更する際に、前記変更をホットプラグで行う。
【0017】
また、本開示にかかるシステムは、ホストと、複数のデバイスが設けられたI/O拡張装置と、前記ホストと、前記I/O拡張装置を接続する汎用ネットワークと、を備え、前記I/O拡張装置は、前記ホストと、前記デバイスと、のそれぞれにGroup IDを設定する設定部と、前記デバイスと、いずれか2つ以上の前記ホストと、を前記Group IDに基づいて接続する接続部と、を備え、前記接続部は、前記ホストと前記デバイスの組み合わせを変更する際に、前記変更をホットプラグで行う。
【発明の効果】
【0018】
これにより、I/O拡張筐体内に搭載された複数のPCIeデバイスを、構成の変更が容易な状態で、複数のホストで個別に占有して使用することが可能となる。
【図面の簡単な説明】
【0019】
図1】I/O拡張装置の構成の一例を示したブロック図である。
図2】I/O拡張装置を含むシステムの物理構成の一例を示したブロック図である。
図3】ホスト102から見た論理構成の一例を示したブロック図である。
図4】ホスト103に2つのデバイスを接続した場合のホスト103から見た論理構成の一例を示したブロック図である。
図5】EE(Slave)121内部の構成を示すブロック図である。
図6】I/O拡張装置を含むシステムの物理構成においてGroup IDを設定した状態を示すブロック図である。
図7】I/O拡張筐体に電源が投入され起動する際の処理手順の例を示すフロー図である。
図8】Group ID 10にかかるホスト102を含めたシステムを構成した際の物理構成例を示すブロック図である。
図9】Group ID 10にかかるホスト102を含めたシステムを構成した際の論理構成例を示すブロック図である。
図10】Group ID 20にかかるホスト103を含めたシステムを構成した際の物理構成例を示すブロック図である。
図11】Group ID 20にかかるホスト103を含めたシステムを構成した際論理構成例を示すブロック図である。
図12】デバイスの接続先の変更を行う際の処理手順の例を示すフロー図である。
図13】PCIe device143の接続先を、ホスト103からホスト102に変更した状態を示す図である。
図14】PCIe device143の接続先を、ホスト103からホスト102に変更した状態を、ホスト102から見た際の論理構成例を示すブロック図である。
図15】PCIe device143の接続先を、ホスト103からホスト102に変更した状態を、ホスト103から見た際の論理構成例を示すブロック図である。
図16】関連するシステムの物理構成例を示したブロック図である。
図17】関連するシステムの論理構成例を示したブロック図である。
【発明を実施するための形態】
【0020】
実施の形態1
以下、図面を参照して本実施の形態について説明する。図1は、本実施の形態にかかるI/O拡張装置の構成の一例を示したブロック図である。I/O装置104は、設定部104aと、接続部104bと、複数のデバイス141~144と、を備える。以下では、I/O拡張装置は、I/O拡張筐体であるものとして説明する。なお、図1ではデバイスは4つであるものとして記載したが、デバイスの個数はこれに限られない。
【0021】
より具体的には、図2に示すように、汎用ネットワーク101を介して接続されるホスト102、103と、I/O拡張筐体104によりシステムが構成される。
【0022】
設定部104aでは、ホスト102、103や、デバイスのそれぞれにグループIDを設定する。接続部104b、デバイス141~144と、ホスト102、103と、をグループIDに基づいて接続する。なお、デバイス141~144は、以下ではPCIeインタフェースで接続されるデバイスであり、PCIe device141~144であるものとして説明する。
【0023】
I/O拡張筐体104では、ホスト102、103と、デバイス141~144の組み合わせを変更する際に、ホットプラグで行う。
【0024】
図2は、汎用ネットワーク101を介して接続される、ホスト102、103と、I/O拡張筐体104の構成例を示した図である。
【0025】
ホスト102は、CPU111と、PCIe Expander Engine(以下、EE)(Master)113と、物理層のデバイスであるPHY117、118を有している。PCIe Expander Engineは、汎用ネットワークに接続され、別のPCIe Expander Engineとの間で、汎用ネットワークを介した通信を行うことができる。
【0026】
CPU111は、PCIeデバイスを接続するための、PCIe Root Complex(以下、RC)112を有している。また、EE(Master)113は、Upstream port114と、ネットワークのMAC層のデバイスであるMAC115、116を有しているものとする。
【0027】
CPU111のRC112には、EE(Master)113のUpstream port114が接続されている。また、EE(Master)113のMAC115にはPHY117が接続され、MAC116にはPHY118が接続されている。PHY117及びPHY118は、それぞれ汎用ネットワーク101に接続されている。
【0028】
なお、ホスト103は、ホスト102と同様の構成を有しているものとして、説明を省略する。
【0029】
I/O拡張筐体104は、EE(Slave)121と、PCIe Switch(PEX)131と、PHY122、123と、PCIe device141~144と、を有している。なお典型的には、PEX131は、CPUと、PCIeのデバイスの間に位置し、コネクションとデータの管理を行う。
【0030】
EE(Slave)121は、ネットワークのMAC層のデバイスであるMAC124、125と、Downstream port126、127を有している。PEX131は、Upstream port132、133と、Downstream port134~137を有している。
【0031】
EE(Slave)121のMAC124、125は、PHY122、123を介して、汎用ネットワーク101に接続されている。また、EE(Slave)121のDownstream port126とPEX131のUpstream port132が接続されており、EE(Slave)121のDownstream port127とPEX131のUpstream port133が接続されている。
【0032】
さらに、PEX131のDownstream port134とPCIe device141、PEX131のDownstream port135とPCIe device142、PEX131のDownstream port136とPCIe device143、PEX131のDownstream port137とPCIe device144が、それぞれ接続されている。
【0033】
図3は、図2において、ホスト102に、拡張筐体104のPCIe device141、142を接続した場合の論理構成例を示すブロック図である。
【0034】
この場合、ホスト102のEE(Master)113と、EE(Slave)121と、PEX131により、Scalable PCIe Switch152を構成している。
【0035】
ここで、Scalable PCIe Switch152は、CPU111のRC112に接続されたUpstream port114より、仮想PCI-PCI Bridge161が接続され、その先に、それぞれ仮想PCI-PCI Bridge171~174、Downstream port181~184が接続され、その配下にPCIe device141、142、仮想PCIe device193、194がそれぞれ接続された状態となる。
【0036】
同様に、図4は、図2において、ホスト103に拡張筐体104のPCIe device143、144を接続した場合の論理構成例である。
【0037】
この場合、ホスト103のEE(Master)113と、EE(Slave)121と、PEX131により、Scalable PCIe Switch153を構成している。
【0038】
ここで、Scalable PCIe Switch153は、CPU111のRC112に接続されたUpstream port114より、仮想PCI-PCI Bridge162が接続され、その先に、それぞれ仮想PCI-PCI Bridge175~178、Downstream port185~188が接続され、その配下に仮想PCIe device195、196、PCIe device143、144がそれぞれ接続される。
【0039】
次に、図5は、EE(Slave)121内部のブロック図である。EE(Slave)121は、MAC124、125と、管理制御部201と、不揮発性メモリ(NVM)202と、管理Interface203と、Network制御部204と、Network-PCI制御部205と、PCIe Switch変換制御部206と、PCIe制御部207と、PCIe Switch/Slot制御部208と、Misc I/O209と、Downstream Port126、127と、を備える。
【0040】
Network制御部204は、EE(Master)と通信を行うための、通信フレームの順序、再送制御などを行う。Network制御部204は、MAC124、125と、管理制御部201と、Network-PCI制御部205に接続されている。
【0041】
Network-PCI制御部205は、NetworkとPCIの変換制御を行う。Network-PCI制御部205は、管理制御部201と、Network制御部204と、PCIe Switch変換制御部206に接続されている。
【0042】
例えば、Network-PCI制御部205は、下位のPCIe deviceから送信されるPCIeパケット(PCIe Transaction Layer Packet、以下、PCIe TLP)を通信フレームにカプセル化して、Network制御部204に渡し、上位のEE(Master)113に送信、もしくは、EE(Master)113よりNetwork制御部204を介して受信した通信フレームからPCIe TLPを取り出し、下位に渡す。
【0043】
PCIe Switch変換制御部206は、PEX131の構成とTLPの種類に応じて、PCIe TLPの送信先の変換を行う。PCIe Switch変換制御部206は、管理制御部201と、Network-PCI制御部205と、PCIe制御部207と、PCIe Switch/Slot制御部208と、に接続されている。
【0044】
ここで、PCIe deviceの通信には、物理的にはPEXが存在するため、PEXを介した通信を行う必要がある。そのため、PCIe Switch変換制御部206は、実際の物理的な構成に合わせてPCIe TLPのヘッダ部分の変換を行う。TLPの通信には、メモリベースとIDベースのルーティングがあるが、IDベースのルーティングのTLP(PCIe bus/device/function numberを指定して送信するTLP)に対し、ヘッダの変換を行う。
【0045】
また、PCIe Switch変換制御部206には、PCIe Switch/Slot制御部208が接続されており、Misc I/O209を介して、PEX、PCIe deviceが実装されるPCIe slotの制御を行う。
【0046】
ここで、Misc I/O209は、種々の入出力を行う箇所であり、PEXの設定、各PCIeスロットのリセット、電源制御を行うことができる。
【0047】
PCIe制御部207は、管理制御部201と、PCIe Switch変換制御部206と、Downstream port126、127が接続されている。PCIe制御部207は、Downstream port126、127を介して、PEX、PCIe deviceと接続されており、PCIe TLPの送受信を行う。
【0048】
管理制御部201は、Network制御部204、Network-PCI制御部205、PCIe Switch変換制御部206、PCIe制御部207にそれぞれ接続されており、これらの設定、監視を行うことができる。なお、管理制御部201には、NVM202が接続されており、設定情報を格納することができる。さらに、管理制御部201には、管理Interface203が接続されており、このインタフェースを介して、外部よりEE(Slave)121の制御、設定変更を行うことが可能である。
【0049】
次に、I/O拡張筐体104を利用した動作の一例について説明する。
【0050】
図6は、図2と同様に、2台のホスト102、103と、1台のI/O拡張筐体104を接続した構成例である。
【0051】
ここで、汎用ネットワークに多数のホスト、多数のI/O拡張筐体を接続し、それらを組み合わせてシステムを構成するため、EE(Master)とEE(Slave)はそれぞれGroup IDを保持し、同じGroup IDのEE(Master)とEE(Slave)間で接続を行う。
【0052】
ここで、ホストのEE(Master)は1つのGroup IDを保持するが、I/O拡張筐体にある、EE(Slave)は複数のホストと接続するため、複数のGroup IDを保持する。汎用ネットワーク101としてEthernetを使用する場合、Group IDを、VLANの設定を使用して設定ことができる。
【0053】
具体的には、図6は、Group ID 10とGroup ID 20を設定して、ホスト102,103と、I/O拡張筐体104を接続した構成例である。すなわち、ホスト102のEE(Master)113はGroup ID 10を保持しており、ホスト103のEE(Master)113はGroup ID 20を保持している状態である。
【0054】
さらに、I/O拡張筐体104のEE(Slave)121はGroup ID 10、20を保持しており、ホスト102、103のEE(Master)113とそれぞれ接続している。これらのホスト102、103及びI/O拡張筐体104は、ネットワーク上において、Group ID 10、20として、それぞれVLAN10、20を使用して通信を行う。
【0055】
このとき、EE(Slave)121では、複数のVLANの通信を処理するため、PortVLAN、もしくは、TaggedVLANを使用可能である。
【0056】
すなわち、PortVLANを使用する場合には、EE(Slave)121のPHY122、123に接続するネットワーク(Ethernetスイッチ)上で、VLAN10、20の設定を行い、EE(Slave)121では、MAC124、125経由で送受信するEthernetフレームは異なるVLANの通信として処理を行う。
【0057】
一方で、TaggedVLANを使用する場合には、MAC124、125ともVLAN10、20のTaggedVLANのEthernetフレームの送受信を行い、EE(Slave)121内で異なるVLANの通信として処理を行う。以下では、TaggedVLANでの通信を使用する構成として説明する。
【0058】
なお図6に示すように、EE(Slave)121のDownstream port126、PEX131のUpstream port132、Downstream port134、135がGroup ID 10に所属しており、PCIe device141、142はホスト102に接続されている構成として説明する。また同様に、EE(Slave)121のDownstream port127、PEX131のUpstream port133、Downstream port136、137がGroup ID 20に所属しており、PCIe device143、144はホスト103に接続されている構成として説明する。
【0059】
ここで図7は、I/O拡張筐体4に電源が投入され、起動する際の処理手順の一例である。
【0060】
I/O拡張筐体4に電源が投入される(ステップS301)と、EE(Slave)121が起動する(ステップS302)。
【0061】
EE(Slave)121は、起動後、NVM202に格納されている設定情報のReadを行う(ステップS303)。
【0062】
ここで、NVM202には、使用するVLANの種類(PortVLAN、もしくは、TaggedVLAN)や、EE(Slave)121のDownstream port126、127、PEX131のUpstream port132、133、Downstream port134~137の各portに対してアサインされているGroup IDの情報が格納されている。
【0063】
EE(Slave)121では、Readしたこれらの設定情報に基づいて、EE(Slave)121の設定を行う(ステップS304)。
【0064】
具体的には、図6の構成例では、EE(Slave)121のMAC124、125のPortに対し、VLAN10、20のTaggedVLANの設定を行い、Downstream port126はGroup ID 10を、Downstream port127はGroup ID 20に所属する設定を行う。
【0065】
次に、EE(Slave)121は、Downstream port126配下に接続されている、PCIe deviceのScanを行う(ステップS305)。この時点では、PEX131はデフォルトの状態で起動しており、全Downstream portに接続されているPCIe deviceのScanを行うことが可能である。
【0066】
ここで、EE(Slave)121では、接続されている全PCIe deviceを認識後、PCIe device一覧情報を保持する(ステップS306)。なお、この一覧情報は、管理Interface203経由で、外部より確認することが可能である。
【0067】
次に、I/O拡張筐体4では、NVM202からReadした設定情報に基づいて、EE(Slave)121により、PEX131の設定を行う(ステップS307)。なお、I/O拡張筐体4は、Misc I/O209を介して、PEX131の設定を行うことができる。
【0068】
ここでは、EE(Slave)121は、PEX131のUpstream port132、Downstream port134、135をGroup ID 10に設定し、Upstream port133、Downstream port136をGroup ID 20に設定することとする。
【0069】
このとき、Downstream port137にGroup IDがアサインされていない場合、Group ID Noneとして、Downstream port137自体のPortのDisableと、PCIe device144のスロットの電源のoffを行う(ステップS308)。これにより、Group IDに所属していないPCIe deviceを待機状態にする。
【0070】
EE(Slave)121は、Downstream port126、127より、それぞれGroup ID10、20で接続されているPCIe deviceのScanを行い、その情報を保持する(ステップS309)。
【0071】
次に、EE(Slave)121は、汎用ネットワーク101を介して通信を開始し、Group ID10、20を持つ、ホスト102とホスト103のそれぞれのEE(Master)113と相互認証を行う(ステップS310)。
【0072】
I/O拡張装置104は、Group IDごとにホストとの相互認証完了後に、システムとして稼働を行う(ステップS311)。すなわち図6では、ホスト102のEE(Master)113とEE(Slave)121でGroup ID 10の相互認証完了後、ホスト102のシステムとしての稼働を行う。同様に、ホスト103も、Group ID 20の相互認証完了後、システムとしての稼働を行う。
【0073】
ここで図8は、ホスト102を含めたシステムを構成した際の物理構成例である。PCIe Switch151は、EE(Master)113とEE(Slave)121により構成されている。
【0074】
PCIe Switch151内部では、Upstream port114とDownstream port126は、仮想PCI―PCI Bridge211、212を介して接続される。さらに、PCIe Switch151内部に設けられたDownstream port126は、PEX131のUpstream port132に接続される。
【0075】
PEX131の内部では、Upstream port132は、仮想PCI-PCI Bridge213を介して、仮想PCI-PCI Bridge214~217が接続されている。さらに仮想PCI-PCI Bridge214~217は、それぞれDownstream port134~137が接続されている。また、Downstream port134、135には、それぞれPCIe device141、142が接続されている。
【0076】
ここで、RC112からPCIe deviceにIDベースルーティングでアクセスする場合を考えると、RC112は、PCIe bus/device/function numberを指定してアクセスを行う。
【0077】
ここで、ホスト102のRC112とUpstream port114間のPCIe bus numberが5の場合、Scalable PCIe Switch151の内部のBus numberが6、PEX131内部のBus numberが8、Downstream port134、135配下のBus numberはそれぞれ9、10となり、PCIe device141をアクセスする場合のPCIe bus/device/function numberは、9/0/0となる。なおここでは、PCIe deviceのfunctionが1つだけであるとする。同様に、PCIe device142は、10/0/0となる。
【0078】
この物理構成から、EE(Master)113とEE(Slave)121で、Scalable PCIe Switch151と、PEX131を一つのScalable PCIe Switchとして見ることができる。
【0079】
図9は、図8に示した物理構成例について、ホスト102から見た論理構成例である。図9では、図8に示したScalable Switch151とPEX131で、論理的なScalable Switch152を構成している。
【0080】
Scalable Switch152では、Upstream port114は、仮想PCI-PCI Bridge161を介して、仮想PCI-PCI Bridge171~174に接続されている。仮想PCI-PCI Bridge171~174には、それぞれDownstream181~184が接続されている。また、Downstream181、182の配下には、それぞれPCIe device141、142が接続されている。
【0081】
一方で、Group ID 10では接続されていないDownstream port183、184には、EE(Slave)121にて、それぞれ仮想PCIe device193、194が接続されたように構成される。この仮想PCIe deviceは、構成変更でPCIe deviceを別のホストに切り替え時にPCIe deviceとして必要となるリソースを確保するために、仮想的に見せたdeviceである。
【0082】
したがって、例えば図6に示したDownstream port136、PCIe device143をGroup ID 10に変更した場合には、図9のDownstream port183には、仮想PCIe device193に代えて、PCIe device143を接続された状態として、動作を行うことができる。
【0083】
言い換えると、設定部104aは、接続対象のホストと異なるGroup IDが割り当てられたポートには、接続対象のホストのGroup IDにおいて、仮想デバイスが接続されたように構成しておくことことができる。これにより、後にそのポートにデバイスが割り当てられる際のリソースを確保することができる。
【0084】
なお、図7のステップS311でシステムを構成して稼働した後、ホスト102はPCIe deviceのEnumerationを実行し、接続されているPCIe deviceのPCIe bus/device/function numberの識別を行う。
【0085】
図9のように、RC112配下のPCIe bus numberが5の場合、Scalable PCIe Switch152内部のBus numberが6、Downstream port181~184配下のBus numberがそれぞれ7~10となる。
【0086】
すなわち、PCIe device141のbus/device/function numberは、7/0/0と認識される。また、PCIe device142のbus/device/function numberは、8/0/0と認識される。仮想PCIe device193のbus/device/function numberは、9/0/0と認識される。仮想PCIe device194のbus/device/function numberは、10/0/0と認識される。
【0087】
ホスト102では、PCIe deviceをIDベースルーティングでアクセスする場合、上記の論理構成でのPCIe bus/device/function numberを使用してPCIe TLPを送信して通信を行う。
【0088】
すなわち、EE(Slave)121は、ホスト102から、このPCIe TLPを受信すると、物理構成でのPCIe bus/device/function numberに変換して通信を行う。
【0089】
なお、PCIeでの通信には、IDベース以外にメモリベースルーティングがあるが、こちらはEE(Slave)121で変換せずにそのまま転送を行う。
【0090】
このように実装することで、ホスト102から見た場合、1つのPEXを介してPCIe deviceが接続されているように構成される。
【0091】
同様に、図10は、ホスト103の物理構成例であり、図11は論理構成例である。
【0092】
この場合、PCIe device143、144は、物理構成上、RC112配下のBus numberが5の場合、PCIe bus/device/function numberは、それぞれ11/0/0、12/0/0だが、論理的には、9/0/0、10/0/0と認識してアクセスを行う。
【0093】
次に、図12を参照して、PCIe deviceを別のホストに接続変更する際の処理手順例を示す。
【0094】
EE(Slave)121の管理制御部201は、構成変更指示を受信する(ステップS321)。典型的には、管理制御部201は、構成変更指示を、外部ネットワークに接続された管理端末から、管理Interface203経由で受信する。
【0095】
EE(Slave)121は、構成変更を行うPCIe deviceが接続されているホストに対し、ボードが抜けたことを示す、PCIe Hot remove eventの通知を行う(ステップS322)。
【0096】
PCIe Switch/Slot制御部208は、Misc I/O209を介して、該当のPCIe deviceのslotに供給している電源をoffにする制御を行う(ステップS323)。
【0097】
なお、この処理は、図1に示した接続部104bにおいて、Group IDを変更する対象であるPCIe deviceのslotに供給している電源をoffにする制御であると言うことができる。
【0098】
次に、ホスト及びI/O拡張装置では、構成変更指示に従い、PEX131のDownstream portのGroup IDの設定変更を行う。すなわち、EE(Master)とEE(Slave)で構成されるScalable PCIe Switchは、Group IDの変更に伴い、Scalable PCIe Switchの構成の変更を行う。
【0099】
このとき、接続移動元のホストでは、PCIe deviceを削除するDownstream portに、仮想PCIe deviceを接続する。一方、接続移動先のホストでは、該当のDownstream portに接続されている仮想PCIe deviceの削除を行う。
【0100】
構成変更後、EE(Slave)は、接続移動元のホストに対し、仮想PCIe deviceが追加されたことを示す、PCIe Hot add event通知を行う(ステップS326)。
【0101】
なお、この処理は、図1に示した接続部104bが、デバイスの接続移動元のホスト(第1のホスト)に対し、仮想デバイスが追加されたことを示す、PCIe Hot add event通知を行う処理と言うことができる。
【0102】
一方、EE(Slave)は、接続移動先のホストに、仮想PCIe deviceが抜けたことを示す、PCIe Hot remove event通知を行う(ステップS327)。
【0103】
なお、この処理は、図1に示した接続部104bが、デバイスの接続移動先のホスト(第2のホスト)に対し、仮想デバイスが削除されたことを示すPCIe Hot add event通知を行う処理と言うことができる。
【0104】
次に、PCIe Switch/Slot制御部208は、Misc I/O209を介して、接続変更を行うPCIe deviceのslotの電源をONにする(ステップS328)。
【0105】
なお、この処理は、図1に示した接続部104bにおいて、Group IDを変更する対象であるデバイスのslotに供給している電源をONにする制御であると言うことができる。
【0106】
ここで、接続先変更を行うPCIe deviceにおいて、resetが行われる場合には、そのreset解除後に、EE(Slave)は、接続移動先のホストに対し、PCIe deviceが追加されたことを示す、PCIe Hot add event通知を行う(ステップS329)。
【0107】
なお、この処理は、図1に示した接続部104bが、デバイスの接続移動先のホストに対し、デバイスが追加されたことを示すPCIe Hot add event通知を行う処理と言うことができる。
【0108】
接続移動先のホストは、PCIe deviceの初期設定を行い、使用を開始する。その後、変更したPEXの設定情報をNVM202に保存する(ステップS330)。
【0109】
ここで図13は、図6の構成から、PCIe device143の接続先を、ホスト103からホスト102に変更した状態である。また図14は、図13に示した状態におけるホスト102から見た論理構成を示した図であり、図15は、図13に示した状態におけるホスト103から見た論理構成を示した図である。
【0110】
このように、PEX配下に接続されているPCIe deviceを、論理的には、ホストから、Scalable PCIe Switch直下においてPCIe deviceが接続される状態にすることができる。
【0111】
これにより、PEX配下のPCIe deviceを個別にホットプラグを可能とし、再起動せずにリソースの変更を行うことが可能である。
【0112】
以上のことから、本開示にかかるシステムでは、I/O拡張筐体ごと、もしくは、I/O拡張筐体内のPCIe deviceについて、別々のホストへの割り当てや、待機状態への変更を行うことができる。すなわち、ホストとI/O拡張筐体、あるいはホストとI/O拡張筐体内のデバイスの組み合わせにより構成されるシステムについて、自由に構成の変更や切り替えが可能となる。
【0113】
そのため、I/O拡張筐体内に搭載された複数のPCIeデバイスを、構成の変更が容易な状態で、複数のホストで個別に占有して使用することが可能となる。
【0114】
なお、このシステムでは、個別の機器やシステム全体の再起動を行うことなく、ホストに接続させるPCIe deviceの追加や削除を行うことが可能である。言い換えると、本開示によるI/O拡張筐体では、PCIe Expander Engineに、PCIe Switch変換制御、PCIe Switch/Slot制御部を実装するとともに、PCIe Switchを含めて、論理的にScalable PCIe Switchを構成することにより、ホットプラグで、複数のホストに対するリソースの割り当てやリソースの変更が可能となる。
【0115】
なお、本発明は上記実施の形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更することが可能である。例えば、各図ではI/O拡張筐体104に設けられたデバイスの数が4つであって、デバイスに接続されるポートも4つであるものとして記載しているが、これらの数に限定されるものではない。
【符号の説明】
【0116】
101 汎用ネットワーク
102 ホスト
103 ホスト
104 拡張筐体
104a 設定部
104b 接続部
111 CPU
112 PCIe Root Complex(RC)
113 PCIe Expander Engine(Master)
114 Upstream Port
115 MAC
116 MAC
117 PHY
118 PHY
121 PCIe Expander Engine(Slave)
122 PHY
123 PHY
124 MAC
125 MAC
126 Downstream Port
127 Downstream Port
131 PCIe Switch(PEX)
132 Upstream Port
133 Upstream Port
134 Downstream Port
135 Downstream Port
136 Downstream Port
137 Downstream Port
141 PCIe device
142 PCIe device
143 PCIe device
144 PCIe device
201 管理制御部
202 NVM
203 管理Interface
204 Network制御部
205 Network-PCI制御部
206 Switch変換制御部
207 PCIe制御部
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17