JP2023143302A - 中継装置および中継方法 - Google Patents

中継装置および中継方法 Download PDF

Info

Publication number
JP2023143302A
JP2023143302A JP2022050606A JP2022050606A JP2023143302A JP 2023143302 A JP2023143302 A JP 2023143302A JP 2022050606 A JP2022050606 A JP 2022050606A JP 2022050606 A JP2022050606 A JP 2022050606A JP 2023143302 A JP2023143302 A JP 2023143302A
Authority
JP
Japan
Prior art keywords
packet
busn
field
devn
devices
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2022050606A
Other languages
English (en)
Inventor
祐人 猪飼
Sukehito Igai
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2022050606A priority Critical patent/JP2023143302A/ja
Publication of JP2023143302A publication Critical patent/JP2023143302A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Bus Control (AREA)

Abstract

【課題】PCIeバスシステムにおいて、255個を超えるデバイスへのアクセスを低レイテンシで実現できる。【解決手段】第1のデバイスから2つ以上の第2のデバイスのうちのアクセス対象デバイスへの第1アクセスパケットに対して、第1アクセスパケットに含まれるルーティング情報を、前記2つ以上の第2のデバイスに対して予め設定した限定ルーティング情報に変換することで第2アクセスパケットに変換するパケット変換部30a,30bと、生成した第2アクセスパケットをPCIeバスツリーにおける下流にフォワードする出力部31とを備える。【選択図】図2

Description

本発明は、中継装置および中継方法に関する。
PCIe(Peripheral Component Interconnect Express:登録商標)の規格に従ったシステムでは、ひとつのデバイスツリーに搭載可能なデバイス数が最大で255個に制限されている。これは、個別のデバイスの各ポートに対してデバイスツリー内でユニークなBUSN(バスナンバー)を割り当てる仕様になっているためである。
特開2016-139256号公報 国際公開第2014/020716号
近年、通信の高速・大容量化やクラウドコンピューティングの普及によりストレージシステムなどではより多くのデバイスの搭載が求められるようになっている。さらに、将来的にはPCIe規格で規定される最大数より多くのデバイスの搭載が要求されるものと推測される。
そこで、PCIe Gen4以降の規格では、FPB(Flattening Portal Bridge)が規定され、BUSN(バスナンバー),DEVN(デバイスナンバー)およびFNCN(ファンクションナンバー)の16bitを使ってデバイスをフラットに割り当てるオプショナル機能が規定されている。しかしながら、現時点において、このFPBの機能をサポートするPCIe スイッチは製品化されておらず、また、次世代Gen5のスイッチでもFPBのサポートを明言するベンダーはない。
なお、特定のアドレス範囲にあるデバイスへのリクエストがあった場合に、その都度、ソフトウェア(ドライバ)が介在してデバイスツリー内のスイッチなどに保持されているルーティング情報を書き換える従来手法が知られている。当該手法においては、デバイスツリー内のスイッチなどに保持されているルーティング情報を書き換えることにより、全体で255個を超えるデバイスへのアクセスを可能とする。
また、PCIe規格のTLP(Transaction Layer Packet)に拡張ルーティング情報を記載したヘッダ部を付加した独自のパケットを使ってルーティングを行なうことで255個を超えるデバイスへのアクセスを可能とする従来手法も知られている。
しかしながら、これらの従来手法においては、スループットが小さくなりレイテンシも大きくなる。
1つの側面では、本発明は、PCIeバスシステムにおいて、255個を超えるデバイスへのアクセスを低レイテンシで実現できるようにすることを目的とする。
このため、この中継装置は、複数のデバイスを接続するPCIe(Peripheral Component Interconnect Express)バスツリーにおいて、前記複数のデバイスのうちの第1のデバイスの下流であり、且つ前記複数のデバイスのうちの2つ以上の第2のデバイスよりも上流の位置に配置される中継装置であって、前記第1のデバイスから前記2つ以上の第2のデバイスのうちのアクセス対象デバイスへの第1アクセスパケットに対して、当該第1アクセスパケットに含まれるルーティング情報を、前記2つ以上の第2のデバイスに対して予め設定した限定ルーティング情報に変換することで第2アクセスパケットに変換するパケット変換部と、生成した前記第2アクセスパケットを前記PCIeバスツリーにおける下流にフォワードする出力部とを備える。
一実施形態によれば、PCIeバスシステムにおいて、255個を超えるデバイスへのアクセスを低レイテンシで実現できる。
第1実施形態の一例としてのバスシステムの構成を例示する図である。 第1実施形態の一例としてのバスシステムのエクストラブリッジの構成を例示する図である。 PCIe規格で定義されているCfgWr/RdパケットHeader部のbit mapを示す図である。 第1実施形態の一例としてのバスシステムにおける、PCIeデバイスツリーにおけるメモリ空間の割り当て例を示す図である。 PCIe規格で定義されている32bit addressing modeのMemWr/RdパケットHeader部のbit mapを示す図である。 PCIe規格で定義されているCpl/CplDパケットHeader部のbit mapを示す図である。 第1実施形態の一例としてのバスシステムにおける変換情報を例示する図である。 第1実施形態の一例としてのバスシステムにおけるエクストラブリッジのパケット変換部の処理を説明するためのフローチャートである。 第2実施形態の一例としてのバスシステムのエクストラブリッジの構成を例示する図である。 第2実施形態の一例としてのバスシステムにおける変換情報を例示する図である。 第2実施形態の一例としてのバスシステムにおけるエクストラブリッジのパケット変換部の処理を示すフローチャートである。
以下、図面を参照して本中継装置および中継方法にかかる実施の形態を説明する。ただし、以下に示す実施形態はあくまでも例示に過ぎず、実施形態で明示しない種々の変形例や技術の適用を排除する意図はない。すなわち、本実施形態を、その趣旨を逸脱しない範囲で種々変形(実施形態および各変形例を組み合わせる等)して実施することができる。また、各図は、図中に示す構成要素のみを備えるという趣旨ではなく、他の機能等を含むことができる。
(I)第1実施形態の説明
(A)構成
図1は第1実施形態の一例としてのバスシステム1の構成を例示する図、図2はそのエクストラブリッジ20aの構成を例示する図である。
図1に例示するバスシステム1は、PCIeの規格に従った通信を行なうものであり、2つのスイッチ10-1,10-2とエクストラブリッジ20aとを含むPCIeバスツリーを構成している。
スイッチ10-1をSW#0と表す場合がある。また、スイッチ10-2をSW#1と表す場合がある。以下、スイッチ10-1,10-2を特に区別しない場合には、スイッチ10と表記する。
スイッチ10-1は複数のデバイスのうちの第1のデバイスに相当する。また、スイッチ10-2やエンドポイントデバイス30-3,30-4はそれぞれ複数のデバイスのうちの第2のデバイスに相当する。
各スイッチ10は、それぞれアップストリームポート101とダウンストリームポート102-1~102-3とを備える。アップストリームポート101をup#0と表す場合がある。
以下、ダウンストリームポート102-1~102-3を特に区別しない場合には、ダウンストリームポート102と表記する。また、ダウンストリームポート102-1,102-2,102-3をdn#0,dn#1,dn#2と表す場合がある。
また、エクストラブリッジ20aは、アップストリームポート201およびダウンストリームポート202を備える。アップストリームポート201をupと表す場合があり、ダウンストリームポート202をdnと表す場合がある。また、エクストラブリッジ20aをextra.BRGと表す場合がある。
エクストラブリッジ20aは、PCIeバスツリーにおいて、スイッチ10-1(第1のデバイス)の下流であり、且つ、スイッチ10-2やエンドポイントデバイス(第2のデバイス)よりも上流の位置に配置される中継装置に相当する。
図1に示す例において、スイッチ10-1のダウンストリームポート102-3は、エクストラブリッジ20aのアップストリームポート201と接続されている。エクストラブリッジ20aのダウンストリームポート202は、スイッチ10-2のアップストリームポート101に接続されている。これにより、スイッチ10-1,エクストラブリッジ20aおよびスイッチ10-2は、カスケード接続されている。
スイッチ10-1のアップストリームポート101(up#0)には、図示しないプロセッサが、直接もしくは間接で接続される。当該プロセッサは、PCIeデバイスドライバを実行することで、PCIe規格に基づく各種機能を実現する。PCIeデバイスドライバを単にソフトウェアといってもよい。
スイッチ10-1のダウンストリームポート102-1には、エンドポイントデバイス30-1が接続されている。また、スイッチ10-1のダウンストリームポート102-2には、エンドポイントデバイス30-2が接続されている。
スイッチ10-2のダウンストリームポート102-1には、エンドポイントデバイス30-3が接続されている。また、スイッチ10-2のダウンストリームポート102-2には、エンドポイントデバイス30-4が接続されている。
エンドポイントデバイス30-1をep#0と表す場合がある。また、エンドポイントデバイス30-2をep#1と表す場合がある。エンドポイントデバイス30-3をep#2と表す場合がある。また、エンドポイントデバイス30-4をep#3と表す場合がある。以下、エンドポイントデバイス30-1~30-4を特に区別しない場合には、エンドポイントデバイス30と表記する。
スイッチ10-2のダウンストリームポート102-3には、他のスイッチ10やエンドポイントデバイス30が接続されてよい。
また、スイッチ10-1,10-2およびエクストラブリッジ20aをデバイスといってもよい。
本バスシステム1においては、PCIe規格に従ったパケットの送受信機能が実現される。
本バスシステム1においては、PCIe 規格におけるConfig Write パケット(CfgWrパケット)もしくはConfig Readパケット(CfgRdパケット)のルーティングが行なわれる。CfgWrパケットもしくはCfgRdパケットをCfgWr/Rd パケットと表してもよい。
PCIe規格においては、複数のデバイスを接続することでPCIeデバイスツリーが構成される。複数のデバイスには、スイッチ10,エンドポイントデバイス30,エクストラブリッジ20aが含まれる。また、デバイスには、PCIeの規格で通信を行なう他の装置を含んでもよく、例えば、図示しないブリッジを含んでもよい。
以下、デバイスのうち、スイッチやブリッジ等の中継機能を備えるデバイスを、スイッチ等という場合がある。
PCIe規格では、ひとつのPCIeデバイスツリー内に複数のデバイスを搭載する場合には、スイッチ10を多段に組み合わせて、そのダウンストリームポート102毎に1つのデバイスを搭載する。
各デバイスは、アップストリームポートとダウンストリームポートとを備える。図1に示す例においては、各スイッチ10はアップストリームポート101およびダウンストリームポート102-1~102-3を備える。また、エクストラブリッジ20aは、アップストリームポート201およびダウンストリームポート202を備える。
PCIe規格においては、接続されたデバイスツリー内のすべてのデバイスのポートに、デバイスツリー内でユニークなBUSN が割り当てられる。これによって、BUSNをもとにハードウェアがCfgWr/Rd パケットをルーティングすることが可能となり、任意のデバイスのConfig空間へアクセスすることができる。
各デバイスのアップストリームポートのBUSNは、PCIe規格に従って、既知の手法により設定される。すなわち、各デバイスのアップストリームポートのBUSNは、最初に受信したCfgWrパケット内のBUSNフィールド(BUSN field)の値を取り込むことで自動的に割り当てられる。
各デバイスの各ダウンストリームポートのBUSNは、PCIeデバイスドライバによってアップストリームポートの2ndBUS (2ndaryBusNumber)レジスタを使って設定される。2ndBUSレジスタは、PCIe Typ1 Configレジスタである。
デバイスのダウンストリームポートにさらにデバイスが接続される場合には、当該ダウンストリームポートの2ndBUS レジスタに、直下のデバイスのアップストリームポートのBUSNが設定される。また、SubOrd (SubordinaryBusNumber)レジスタには、その下流に実装される全てのデバイスのBUSNの範囲が設定される。SubOrdレジスタは、PCIe Typ1 Configレジスタである。
各デバイスのアップストリームポートに、デバイスツリー内で有効なデバイスの全ポートのBUSNが正しく(重複や欠落なく)割り当てられた後は、BUSNおよびDEVNを指定したCfgWr/Rdパケットを使うことで、PCIeデバイスドライバから任意のデバイスのConfig空間へアクセスすることが可能となる。
図3はPCIe規格で定義されているCfgWr/RdパケットHeader部のbit mapを示す図である。
PCIe規格においては、CfgWr/RdパケットHeader部のByte 8およびByte 9にDestination Deviceを指定するためのBUSN fieldおよびDEVN fieldが定義されている。BUSN fieldもしくはDEVN fieldをBUSN/DEVN field と表してもよい。
CfgWr/Rdパケットを受信したデバイスにおいては、アップストリームポートに備えられたTLP(Transaction Layer Packet)制御部が、このBUSN field の値が自ポートのBUSNと一致した場合に、自分自身を該パケットの宛先(Destination)と判断して必要な処理を行なう。
また、デバイスにおいては、BUSN field の値が2ndBUSレジスタおよびSubOrdレジスタで定義されたBUSNの範囲外であった場合は、TLP制御部は、当該パケットをダウンストリームポートへフォワードし、それ以外の場合は当該パケットを破棄する。
また、本バスシステム1においては、PCIe 規格におけるMemory Writeパケット(MemWrパケット)またはMemory Read(MemRdパケット)のルーティングが行なわれる。MemWrパケットまたはMemRdパケットをMemWr/Rdと表してもよい。
PCIe規格においては、ひとつのPCIeデバイスツリーに搭載される各デバイス個別のメモリ空間を、各デバイスに実装されるレジスタを使って排他的に割り当てる。これにより、ハードウェアがAddress fieldの値だけでMemWr/Rdパケットをルーティングすることが可能となり、任意のデバイスのメモリ空間へアクセスすることができる。
図4は第1実施形態の一例としてのバスシステム1における、PCIeデバイスツリーにおけるメモリ空間の割り当て例を示す図である。
PCIe規格では、デバイスツリー内の有効なすべてのデバイスに実装されるBAR(Base Address Register)と、全てのスイッチ10や図示しないブリッジに実装されるMBase (MemoryBase)レジスタ, MLimit(MemoryLimit)レジスタ,pfMBase (PrefetchableMemoryBase)レジスタおよびpfMLimit(PrefetchableMemoryLimit )レジスタとを使ってメモリ空間のマッピングを行なう。
図4に示す例において、system Memory mapはデバイスツリー全体のメモリ空間を示している。また、Memory map at SW#0 up#0はSW#0のup#0が認識しているメモリ空間を示しており、Memory map at SW#0 dn#0,#1,#2はSW#0のdn#0,#1,#2が認識しているメモリ空間を示している。さらに、Memory map at SW#1 up#0はSW#1のup#0が認識しているメモリ空間を示しており、Memory map at SW#1 dn#0,#1,#2はSW#1のdn#0,#1,#2が認識しているメモリ空間を示している。
各レジスタに正しい(重複や欠落のない)値を設定した後は、適切なアドレスを指定したMemWr/Rd パケットを使うことでPCIeデバイスドライバからデバイスツリー内の任意のデバイスのメモリ空間へPIO(Programmed Input/Output)アクセスすることが可能となる。
同様に、任意のデバイスから主記憶(図示省略)あるいは別のデバイスとの間で適切なアドレスを指定したMemWr/Rd パケットを使ってDMA(Direct Memory Access)転送することも可能となる。
図5はPCIe規格で定義されている32bit addressing modeのMemWr/RdパケットHeader部のbit mapを示す図である。
この図5に示す32bit addressing modeのMemWr/Rdパケットでは、Byte 8,Byte 9,Byte 10およびByte 11に、ターゲットとなるAddress fieldが定義されている。なお、64bit addressing modeのMemWr/Rdパケットでは、Byte 8, Byte 9, Byte 10, Byte 11, Byte 12, Byte 13, Byte 14, Byte 15にターゲットとなるAddress fieldが定義される(図省略)。
まず、PCIeデバイスドライバ(ソフトウェア)からデバイスへのPIOアクセスにおけるルーティングを説明する。
MemWr/Rd パケットを受信したデバイスのアップストリームポートでは、TLP制御部が、そのAddress field の値が自ポートのBARで定義されたアドレス範囲に含まれる場合は、自分自身を該パケットのDestinationと判断して必要な処理を行なう。TLP制御部は、MBaseレジスタとMLimitで定義されたアドレス範囲もしくはpfMBaseとpfMLimitで定義されたアドレス範囲に該当する場合は当該パケットをダウンストリームポートへフォワードし、それ以外の場合は該パケットを破棄する。
次に、エンドポイントデバイスから主記憶(図示省略)あるいは他デバイスのメモリ空間へのDMAにおけるルーティングを説明する。
エンドポイントからのMemWr/Rd パケットを受信したスイッチ等のダウンストリームポートでは、そのAddress field の値が自ポートのMBaseレジスタとMLimitレジスタ とで定義されたアドレス範囲、もしくはpfMBaseレジスタとpfMLimitレジスタとで定義されたアドレス範囲に該当する場合は、当該パケットを破棄する。また、それ以外の場合には、アップストリームポートへフォワードする。
アップストリームポートでは、そのAddress field の値が自デバイス内のいずれかのダウンストリームポートのMemBaseレジスタとMemLimitレジスタと、もしくはpfMBaseレジスタとpfMLimitレジスタとで定義されたアドレス範囲に該当する場合は、当該パケットを該当するダウンストリームポートへフォワードする。また、それ以外の場合はアップストリームリンク(Upstream link)へ送信する。
また、本バスシステム1においては、PCIe 規格におけるCplパケットおよびCplDパケットのルーティングも行なわれる。CplパケットもしくはCplDパケットを、Cpl/CplDパケットと表してもよい。
図6はPCIe規格で定義されているCpl/CplDパケット(Completionパケット or Completion with Dataパケット)Header部のbit mapを示す図である。
この図6に示すCpl/CplDパケットでは、Byte 4, Byte 5にCompleter ID fieldが、Byte 8, Byte 9にRequester ID fieldが、各々定義されている。
NonPosted requestであるCfgWr/RdパケットあるいはMemRdパケットのDestinationとなったデバイスは、CplもしくはCplDパケットでRequesterにreplyする必要がある。また、その際に、Cpl/CplDパケットのCompleter ID fieldに自デバイスのBUSN/DEVNを格納し、Requester ID fieldには対応するCfgWr/RdもしくはMemRdパケットに記載されていたRequester IDの値を格納する必要がある。
このRequester ID fieldの値によってハードウェアがCpl/CplDパケットを正しいDestination(Requester)へルーティングする仕組みはCfgWr/Rdパケットの場合と同様である。なお、Posted requestであるMemWrパケットはCpl/CplDでReplyすることは許されていない。
エクストラブリッジ20aは、カスケード接続されたスイッチ10-1とスイッチ10-2との間において、CfgWr/Rdパケット内BUSN/DEVN fieldを任意の値に書き換える仕組みを有する。
エクストラブリッジ20aは、図2に示すように、アップストリームポート201およびダウンストリームポート202を備える。
エクストラブリッジ20aには、上位デバイス(PCIeデバイスドライバ)から、アクセス対象デバイスへのCfgWr/Rdパケット(第1アクセスパケット)が入力される。このCfgWr/RdパケットのBUSN fieldおよびDEVN fieldには、ルーティング情報であるBUSNおよびDEVNが格納されている。
アップストリームポート201は、図2に示すように、TLP制御部21,BAR22,MBaseレジスタ24, MLimitレジスタ25,2ndBUSレジスタ26,subOrdレジスタ27,パケット(pkt)変換部30aおよび変換情報(Convinfo)28aを備える。
TLP制御部21は、BAR22,MBaseレジスタ24, MLimitレジスタ25,2ndBUSレジスタ26およびsubOrdレジスタ27を用いて、上述したPCIeにおけるTLPの処理を行なう。かかるTLP制御部21の機能は既知であり、その説明は省略する。
図1に示す例において、エクストラブリッジ20aのアップストリームポート201のBUSNが仮に0x6であった場合、2ndBUSレジスタ26およびsubOrdレジスタ27におけるダウンストリームポート202の有効な設定値は、PCIe規格上0x7-0xffである。
これに対して、本バスシステム1においては、エクストラブリッジ20aではデバイスに任意の値を設定できる。
図7は第1実施形態の一例としてのバスシステム1における変換情報28aを例示する図である。
変換情報28aは、エクストラブリッジ20aのBAR空間(BARで設定されるデバイス固有のメモリ空間)に実装されてよい。また、変換情報28aは、User Specific レジスタに格納されてよい。
エクストラブリッジ20aのBARやUser Specific レジスタが、第1アクセスパケット(CfgWr/Rdパケット,MemWr/Rdパケット)に含まれるルーティング情報(BUSN/DEVN,Address)を、スイッチ10-2,エンドポイントデバイス等の第2のデバイスに対して予め設定した限定ルーティング情報(BUSN/DEVN)とを対応付けた変換情報28aを記憶する記憶部として機能する。
この図7に例示する変換情報28aは、変換前のCfgWr/Rdパケット内のBUSN/DEVN fieldと変換後のCfgWr/Rdパケット内BUSN/DEVN fieldとを対応付けるものであり、変換テーブルとして表されている。
この図7に例示する変換情報28aは、ext.BRG upstream port受信packet情報,ext.BRG 内制御レジスタおよびext.BRG downstream port送信packet情報を構成情報として備える。ext.BRG upstream port受信packet情報は変換前のCfgWr/Rdパケット内のBUSN/DEVN fieldに相当し、ext.BRG downstream port送信packet情報は変換後のCfgWr/Rdパケット内BUSN/DEVN fieldに相当する。
ext.BRG upstream port受信packet情報は、CfgWr/Rd packet内BUSN field,DEVN fieldおよび(target)を含む。
ext.BRG upstream port受信packet情報のCfgWr/Rd packet内BUSN fieldは、受信したCfgWr/RdパケットのBUSN fieldであり、DEVN fieldは、受信したCfgWr/RdパケットのDEVN fieldである。 (target)はパケットの送信先を示す。
また、ext.BRG downstream port送信packet情報は、CfgWr/Rd packet内BUSN fieldおよびDEVN fieldを含む。
ext.BRG downstream port送信packet情報のCfgWr/Rd packet内BUSN fieldは、エクストラブリッジ20aのダウンストリームポート202から出力(送信)するCfgWr/RdパケットのBUSN fieldに設定される値である。また、ext.BRG downstream port送信packet情報のDEVN fieldは、エクストラブリッジ20aのダウンストリームポート202から出力(送信)するCfgWr/RdパケットのDEVN fieldに設定される値である。
ext.BRG downstream port送信packet情報のCfgWr/Rd packet内BUSN fieldおよびDEVN fieldの各値は、スイッチ10-2やエンドポイントデバイス30-3,30-4等の第2のデバイスに対して予め設定した限定ルーティング情報に相当する。
パケット変換部30aは、デバイスツリーにおける自身が搭載されたエクストラブリッジ20a(自エクストラブリッジ20a)の下流に搭載される各デバイスのBUSNの割り当てを変換(疑似的に読み替える)することで、255個以上のデバイスとのパケットの送受信を可能とする。
変換情報28aにおいては、デバイスツリーにおける自エクストラブリッジ20aよりも下流の管理対象の各デバイスに対して、ユニークなBUSNとDEVNとの組み合わせが割り当てられている(ext.BRG downstream port送信packet情報のCfgWr/Rd packet内BUSN field,DEVN field)。自エクストラブリッジ20aよりも下流の管理対象の各デバイスを配下デバイスといってもよい。
これらのBUSNとDEVNとの組み合わせは、自エクストラブリッジ20aが管理する複数の配下デバイスに設定された宛先情報であり、自エクストラブリッジ20aにおいてのみ有効な限定的な(ローカルな)宛先情報である。このような、変換情報28aにおいて、自エクストラブリッジ20aにおいて各配下デバイスに対して割り当てられている限定的なBUSNとDEVNとの組み合わせを、限定ルーティング情報といってもよい。
変換情報28aにおいては、これらの限定ルーティング情報が設定された各配下デバイスに対して、バスツリーにおける自エクストラブリッジ20aよりも上位のデバイス(上位デバイス)から配下デバイスにアクセスするために用いられるBUSNとDEVNとの組み合わせが対応付けられている。
このような、上位デバイスから配下デバイスにアクセスするために用いられるBUSNとDEVNとの組み合わせは、BUSNをDEVNで拡張したルーティング情報であるといえる。上位デバイスから配下デバイスにアクセスするために用いられるBUSNとDEVNとの組み合わせを拡張ルーティング情報といってもよい。
変換情報28aは、拡張ルーティング情報と限定ルーティング情報とを対応付けた情報である。図7に例示した変換情報28aにおいて、ext.BRG upstream port受信packet情報のCfgWr/Rd packet内BUSN fieldの値とDEVN fieldの値との組み合わせが拡張ルーティング情報に相当する。また、ext.BRG downstream port送信packet情報のCfgWr/Rd packet内BUSN fieldの値が限定ルーティング情報に相当する。
エクストラブリッジ20aにおいて、パケット変換部30aは、BAR空間において、CfgWr/Rdパケットに設定された特定のBUSNとDEVNとの組み合わせを、別のBUSNとDEVNとの組み合わせに変換したうえで、ダウンストリームポート202へフォワードする。
パケット変換部30aは、アップストリームポート201のTLP制御部21で受信したCfgWr/Rd パケット内のBUSN fieldが2ndBUSレジスタ26およびSubOrdレジスタ27で設定されているBUSNの範囲にあるかを確認する。
受信したCfgWr/Rd パケット内のBUSN fieldの値が、2ndBUSレジスタ26およびSubOrdレジスタ27で設定されているBUSNの範囲にある場合に、パケット変換部30aは、当該パケットをパケット変換部30aにフォワードする。
ここで、パケット変換部30aは、変換情報28aの設定値に従ってCfgWr/Rd パケット内のBUSN/DEVN fieldの値を書き換える。
パケット変換部30aは、受信したCfgWr/Rdパケット内のBUSN/DEVN field の値に基づいて変換情報28aを参照し、受信パケットのBUSN fieldの値とDEVN fieldの値との組み合わせに対応する、ext.BRG downstream port送信packet情報(変換後のBUSN fieldの値およびDEVN fieldの値)を取得する。
パケット変換部30aは、アップストリームポート201からフォワードされたCfgWr/Rdパケット内のBUSN fieldおよびDEVN fieldの各値を、変換情報28aから取得した変換後のBUSN fieldの値およびDEVN fieldの値に置換する。
パケット変換部30aは、BUSN/DEVN fieldの値を書き換えたCfgWr/Rd パケットを、ダウンストリームポート202のTLP制御部31へフォワードする。その後、当該CfgWr/Rd パケットは、ダウンストリームポート202から、デバイスツリーにおける下流側(Downstream Link)へ送信される。デバイスツリーにおける下流側に配置されるデバイスをダウンストリームデバイス(Downstream Device)といってもよい。
図1に例示したバスシステム1においては、各デバイスやバスのBUSNを符号“B=”を付して示している。
例えば、エクストラブリッジ20aのアップストリームポート201のBUSNが仮に0x6である場合、PCIe規格上においては、ダウンストリームポート202の2ndBUSレジスタ26およびsubOrdレジスタ27における有効な設定値は0x7-0xffである。
これに対して、図7に例示した変換情報28aにおいては、エクストラブリッジ20aの配下デバイスであるスイッチ10-2やエンドポイントデバイス30-3,30-4等のBUSNおよびDEVNに任意の値を設定することで、BUSNを拡張している。
例えば、スイッチ10-2(SW#1)のダウンストリームポート102-1(dn#0)に対して、ext.BRG downstream port送信packet情報のBUSNおよびDEVNとして0x2および0x0が設定されている。
パケット変換部30aは、PCIeデバイスドライバからBUSN fieldの値が0x8、DEVN fieldの値が0x10のCfgWr/Rdパケットを受信すると、変換情報28aを参照して、このCfgWr/RdパケットのBUSN fieldの値を0x2に、DEVN fieldの値を0x0に変換する。
エクストラブリッジ20aにおいては、ダウンストリームデバイスへ送信したCfgWr/Rdパケットに対応するCpl/CplD パケットを受信した場合に、当該Cpl/CplD パケットは、ダウンストリームポート202のTLP制御部31からパケット変換部30aへフォワードされる。パケット変換部30aは、変換情報28aの設定値に基づいて、Cpl/CplD パケットのCompleter ID fieldの値をオリジナルのBUSN/DEVNに書き換える。
パケット変換部30aは、Cpl/CplD パケット内のCompleter ID fieldの値に基づいて変換情報28aを参照し、BUSNとDEVNとの組み合わせに対応する、ext.BRG upstream port受信packet情報(変換前のBUSN fieldの値およびDEVN fieldの値)を取得する。
パケット変換部30aは、Cpl/CplD パケット内のCompleter ID fieldの値を、変換情報28aから取得した変換前のBUSN fieldの値およびDEVN fieldの値を用いて置換することで、Cpl/CplD パケットを更新する。
パケット変換部30aは、更新したCpl/CplD パケットをアップストリームポート201のTLP制御部21へフォワードする。
ダウンストリームポート202からフォワードされたパケットがCpl/CplD パケットではなくMemWrパケットである場合には、パケット変換部30aは、当該パケットをディスカードする。
なお、Cpl/CplD パケットを規定時間以内に受信できない場合には、例えば、TLP制御部31が、タイムアウト処理を行なったうえでCTO(Completion Timeout)のフラグを付加したCplパケットを生成する。TLP制御部31は、生成したCplパケットをアップストリームポート201のTLP制御部21へフォワードする。
パケット変換部30aは、受信したCfgWr/Rd パケットのBUSN fieldおよびDEVN fieldの各値に基づいて、変換情報28aを参照して、対応する(変換後の)ext.BRG downstream port送信packet情報のCfgWr/Rd packet内BUSN fieldおよびDEVN fieldを取得する。
そして、パケット変換部30aは、受信したCfgWr/Rd パケットのBUSN fieldおよびDEVN fieldの各値を、変換情報28aから取得したext.BRG downstream port送信packet情報のCfgWr/Rd packet内BUSN fieldおよびDEVN fieldを用いて置換(変換)する。
パケット変換部30aは、変換後のCfgWr/Rd パケットをダウンストリームポート202にフォワードする。
例えば、アップストリームポート201(upstream port)で受信したCfgWr/RdパケットのBUSN/DEVN=8/0が、ダウンストリームポート202(downstream port)から送信されるCfgWr/RdパケットのBUSN/DEVN=1/0に変換されてSW#1のup#0がターゲットとなる。
また、アップストリームポート201で受信したCfgWr/RdパケットのBUSN/DEVN=8/10~8/12が、BUSN/DEVN=2/0~2/2に変換されてSW#1のdn#0,#1,#2がターゲットとなり、BUSN/DEVN=8/1e~8/1fが、BUSN/DEVN=3/0~4/0に変換されてSW#1のdn#0,#1に接続されるEndpoint Deviceがターゲットとなる。
なお、図7に示す例においては、アップストリームポート201で受信したCfgWr/RdパケットのBUSN/DEVN=9/xx~ff/xx(xx:0~0x3f)は、変換されずBUSN/DEVN=9/xx~ff/xx のままでSW#1のdn#2に接続されるデバイス群をターゲットとすることを表している。
変換情報28aの値は、例えば、ハードウェア、ソフトウェアもしくはファームウェアによって設定されてもよい。また、変換情報28aのすべての設定情報を同時にパケット変換部30aにみせて、パケット変換部30aで適切なBUSN/DEVNを選択してもよい。また、パケット受信の都度、パケット変換部30aから通知されたBUSN/DEVNをもとに変換情報28aから送信用BUSN/DEVNをパケット変換部30aへ応答してもよく、適宜変更して実施することができる。
また、パケット変換部30aは、ダウンストリームポート202へCfgWr/Rdパケットをフォワードした後に、ダウンストリームポート202から応答されるCpl/CplD パケットを受信するまで待機する。
Cpl/CplD パケットを受信すると、パケット変換部30aは、ダウンストリームポート202から受信したCpl/CplD パケットのCompleterlD fieldに格納されているBUSN/DEVNの値に基づき、変換情報28aを参照する。
パケット変換部30aは、変換情報28aにおけるext.BRG downstream port送信packet情報のCfgWr/Rd packet内BUSN fieldおよびDEVN fieldに対応する、ext.BRG downstream port受信packet情報のCfgWr/Rd packet内BUSN fieldおよびDEVN fieldの値を取得する。
そして、パケット変換部30aは、ダウンストリームポート202から受信したCpl/CplD パケットのCompleterlD fieldの値を変換情報28aから取得したext.BRG upstream port受信packet情報のCfgWr/Rd packet内BUSN fieldおよびDEVN fieldを用いて置換(変換)する。
パケット変換部30aは、変換後のCpl/CplD パケットをアップストリームポート201のTLP制御部21にフォワードする。これにより、アップストリームポート201からパケットが送信される。
ダウンストリームポート202は、図2に示すように、TLP制御部31を備える。TLP制御部31は、上述したPCIeにおけるTLPの処理を行なう。このようなダウンストリームポート202におけるTLP制御部31としての機能は既知であり、その説明は省略する。
(B)動作
上述の如く構成された第1実施形態の一例としてのバスシステム1におけるエクストラブリッジ20aのパケット変換部30aの処理を、図8に示すフローチャート(ステップA1~A9)に従って説明する。
本処理は、パケット変換部30aがアップストリームポート201からパケットを受信することで開始される。
ステップA1において、アップストリームポート201のTLP制御部21から、パケット変換部30aにCfgWrパケットまたはCfgRdパケットがフォワードされる。
パケット変換部30aは、バスシステム1における自身が搭載されたエクストラブリッジ20a(自エクストラブリッジ20a)よりも下流のデバイスについてのBUSNの情報を、2ndBUSレジスタ26およびsubOrdレジスタ27から取得する。
ステップA2において、パケット変換部30aは、受信したCfgWr/Rd パケットのBUSN fieldの値を、2ndBUSレジスタ26およびsubOrdレジスタ27から取得した情報と比較して、ダウンストリームポート202へフォワードすべきBUSNであるかを確認する。
確認の結果、受信したパケットのBUSNがダウンストリームポート202へフォワードすべきBUSNでない場合には(ステップA2の“others”ルート参照)、ステップA3に移行し、当該パケットに対する通常の処理が行なわれる。当該通常の処理には、例えば、エクストラブリッジ20a内に登録されている各レジスタの処理や、ディスカード,アンサポーテッドリクエストの応答,エラー処理等が含まれてもよい。
受信したパケットのBUSNがダウンストリームポート202へフォワードすべきBUSNである場合には(ステップA2の“downstream portへforwardすべきBUSNの場合”ルート参照)、ステップA4に移行する。
ステップA4において、パケット変換部30aは、受信したCfgWr/Rdパケット内のBUSN/DEVN field の値に基づいて変換情報28aを参照する。パケット変換部30aは、受信パケットのBUSN fieldの値とDEVN fieldの値との組み合わせに対応する、ext.BRG downstream port送信packet情報(変換後のBUSN fieldの値およびDEVN fieldの値)を、変換情報28aから取得する。
パケット変換部30aは、アップストリームポート201からフォワードされたCfgWr/Rdパケット内のBUSN fieldおよびDEVN fieldの各値を、変換情報28aから取得した変換後のBUSN fieldの値およびDEVN fieldの値に置換する。
ステップA5において、パケット変換部30aは、変換したCfgWr/Rdパケットをダウンストリームポート202のTLP制御部31へフォワードする。CfgWr/Rdパケットは、ダウンストリームポート202から下流側に送信される。
ステップA6において、例えば、TLP制御部31は、CfgWr/Rdパケットに対応するCpl/CplD パケットの受信を待つ。
PCIeはSplit Transactionであり、non Posted requestであるCfgWrパケットまたはCfgRdパケットの発行後のCplパケットまたはCplDパケットの受信は非同期となる。
TLP制御部31は、ダウンストリームデバイスからCfgWr/Rdパケットに対応するCpl/CplD パケットが応答されるまで待機する(ステップA6の“Waiting for packet”ルート参照)。
所定時間待機してもCpl/CplD パケットが応答されない場合には(ステップA6の“Timeout or Error”ルート参照)、ステップA7において、TLP制御部31は、タイムアウト(Timeout)処理もしくはエラー(Error)処理を行なう。例えば、TLP制御部31は、CTOのフラグを付加したCplパケットを生成し、この生成したCplパケットをアップストリームポート201のTLP制御部21へフォワードする。
一方、CfgWr/Rdパケットに対応するCpl/CplD パケットを受信した場合には(ステップA6の“original Cpl/CplD received”ルート参照)、ステップA8に移行する。
ステップA8において、TLP制御部31は、受信したCpl/CplD パケットをパケット変換部30aへフォワードする。
パケット変換部30aは、Cpl/CplD パケット内のCompleter ID fieldの値に基づいて変換情報28aを参照し、BUSNとDEVNとの組み合わせに対応する、ext.BRG upstream port受信packet情報(変換前のBUSN fieldの値およびDEVN fieldの値)を取得する。
パケット変換部30aは、Cpl/CplD パケット内のCompleter ID fieldの値を、変換情報28aから取得した変換前のBUSN fieldの値およびDEVN fieldの値を用いて置換することで、Cpl/CplD パケットを更新する。
すなわち、パケット変換部30aは、変換情報28aの設定値に基づいて、Cpl/CplD パケットのCompleter ID fieldの値をオリジナルのBUSN/DEVNに書き換える。
ステップA9において、パケット変換部30aは、更新したCpl/CplD パケットをアップストリームポート201のTLP制御部21へフォワードする。
その後、アップストリームポート201から上位デバイスに対して、更新したCpl/CplD パケットが送信される。その後、処理を終了する。
(C)効果
このように、第1実施形態の一例としてのバスシステム1によれば、エクストラブリッジ20aを、複数のスイッチ10を多段にカスケード接続して構成するデバイスツリーの任意の位置に配置する。
エクストラブリッジ20aにおいて、パケット変換部30aが、受信したCfgWr/Rdパケット内のBUSN/DEVN field の値に基づいて変換情報28aを参照し、受信パケットのBUSN fieldの値とDEVN fieldの値との組み合わせに対応する、ext.BRG downstream port送信packet情報(変換後のBUSN fieldの値およびDEVN fieldの値)を取得する。
パケット変換部30aは、アップストリームポート201からフォワードされたCfgWr/Rdパケット内のBUSN fieldおよびDEVN fieldの各値を、変換情報28aから取得した変換後のBUSN fieldの値およびDEVN fieldの値に置換する。
変換情報28aにおいては、デバイスツリーにおける配下デバイスに対して、ユニークなBUSNとDEVNとの組み合わせが割り当てられている。
すなわち、パケット変換部30aにおいて、デバイスツリーにおける配下の各デバイスのBUSNの割り当てを、BUSNとDEVNとの組み合わせを用いて変換(疑似的に読み替える,リマッピング)することで、255個以上のデバイスとのパケットの送受信を可能とする。
また、パケット変換部30aが変換したCfgWr/RdパケットをTLP制御部31だけでルーティングするので、スループットが低下することがなく、レイテンシを小さくすることができる。
これにより、FPB未サポートの現行モデルのPCIeスイッチ、すなわち、既存のTyp1Config:MemBase/Limitを用いても 255以上のデバイスを搭載したデバイスツリーを構成することができる。また、このように構成したデバイスツリーにおいて、デバイスへのアクセスを高スループット、且つ、低レイテンシで実現することができる。
(II)第2実施形態の説明
上述した第1実施形態のバスシステム1においては、エクストラブリッジ20aにおいて、パケット変換部30aが、BAR空間において、特定のBUSNとDEVNとの組み合わせのcfgWr/Rdパケットを、別のBUSNとDEVNとの組み合わせに変換したうえで、ダウンストリームポート202へフォワードしているが、これに限定されるものではない。
本第2実施形態のバスシステム1においては、BAR空間にマッピングされたVendor Specific addressへのMemWr/Rdパケットを2ndaryBusへのCfgWr/Rdパケットに変換する。
本第2実施形態のバスシステム1においては、第1実施形態のエクストラブリッジ20aに代えてエクストラブリッジ20bを備える。
エクストラブリッジ20bは、PCIeバスツリーにおいて、スイッチ10-1(第1のデバイス)の下流であり、且つスイッチ10-2やエンドポイントデバイス(第2のデバイス)よりも上流の位置に配置される中継装置に相当する。
エクストラブリッジ20bには、上位デバイス(PCIeデバイスドライバ)から、アクセス対象デバイスへのMemWr/Rdパケット(第1アクセスパケット)が入力される。このMemWr/RdパケットのAddress fieldには、ルーティング情報であるAddressが格納されている。
図9は第2実施形態の一例としてのバスシステム1のエクストラブリッジ20bの構成を例示する図である。
この図9に示すように、第2実施形態のエクストラブリッジ(ext.BRG)20bは、第1実施形態のパケット変換部30aおよび変換情報28aに代えてパケット変換部30bおよび変換情報28bをそなえるとともに、リクエストキュー(ReqQue)29を備えるものであり、その他の部分は第1実施形態のエクストラブリッジ20aと同様に構成されている。
なお、図中、既述の符号と同一の符号は同様の部分を示しているので、その説明は省略する。
本第2実施形態の一例としてのバスシステム1においては、エクストラブリッジ20bは、カスケード接続されたスイッチ10-1とスイッチ10-2との間において、MemWr/RdパケットをCfgWr/Rdパケットに変換する仕組みを有する。
リクエストキュー29にはMemWr/Rdパケット内のTAG fieldなどパケットを識別できる情報が格納される。なおパケット変換とTAGフィールドの格納処理は順番が入れ替わってもよい。リクエストキュー29はBAR空間に実装されてもよい。
図10は第2実施形態の一例としてのバスシステム1における変換情報28bを例示する図である。
変換情報28bは、エクストラブリッジ20bのBAR空間に実装されてよい。また、変換情報28bは、User Specific レジスタに格納されてよい。
エクストラブリッジ20bのBARやUser Specific レジスタが、第1アクセスパケット(CfgWr/Rdパケット,MemWr/Rdパケット)に含まれるルーティング情報(BUSN/DEVN,Address)を、スイッチ10-2,エンドポイントデバイス等の第2のデバイスに対して予め設定した限定ルーティング情報(BUSN/DEVN)とを対応付けた変換情報28bを記憶する記憶部として機能する。
この図10に例示する変換情報28bは、上位デバイスから受信したMemWr/Rdパケット内のAddress fieldと、配下デバイスに送信するCfgWr/Rdパケット内BUSN/DEVN fieldとを対応付けるものであり、変換テーブルとして表されている。
この図10に例示する変換情報28bは、ext.BRG upstream port受信packet情報,ext.BRG 内制御レジスタおよびext.BRG downstream port送信packet情報を構成情報として備える。ext.BRG upstream port受信packet情報は上位デバイスから受信したMemWr/Rdパケット内のAddress fieldに相当し、ext.BRG downstream port送信packet情報は配下デバイスに送信するCfgWr/Rdパケット内BUSN/DEVN fieldに相当する。
ext.BRG upstream port受信packet情報は、MemWr/Rd packet内Address fieldおよび(target)を含む。
ext.BRG upstream port受信packet情報のMemWr/Rd packet内Address fieldは、受信したMemWr/RdパケットのAddress fieldである。 (target)はパケットの送信先を示す。
また、ext.BRG downstream port送信packet情報は、CfgWr/Rd packet内BUSN fieldおよびDEVN fieldを含む。
ext.BRG downstream port送信packet情報のCfgWr/Rd packet内BUSN fieldは、エクストラブリッジ20bのダウンストリームポート202から出力(送信)するCfgWr/RdパケットのBUSN fieldに設定される値である。また、ext.BRG downstream port送信packet情報のDEVN fieldは、エクストラブリッジ20bのダウンストリームポート202から出力(送信)するCfgWr/RdパケットのDEVN fieldに設定される値である。
変換情報28bの値は、例えば、ハードウェア、ソフトウェアもしくはファームウェアによって設定されてもよい。
図10に例示した変換情報28bにおいては、エクストラブリッジ20bに設定されたBARの値が0xf8.0000でかつoffset 0xa000~0xa4fcの空間が変換対象アドレスとして割り当てられている。
例えば、アップストリームポート201で受信したMemWr/RdパケットのAddress=0xf8.a008がダウンストリームポート202から送信するパケット(Downstream送信パケット)のBUSN/DEVN=1/0に変換されてSW#1のup#0がターゲットとなる。
同様に、Address=0xf8.a080~0xf8.a088がBUSN/DEVN=2/0~2/2に変換されてSW#1のdn#0, #1, #2がターゲットとなる。また、Address=0xf8.a090~0xf8.a094がBUSN/DEVN=3/0~4/0に変換されてSW#1のdn#0, #1に接続されるエンドポイントデバイスがターゲットとなる。
さらに、Address=0xf8.a100~0xf8.a4fcがBUSN/DEVN=9/xx~ff/xxに変換されてSW#1のdn#2に接続されるデバイス群をターゲットとなる。
パケット変換部30bは、デバイスツリーにおける自身が搭載されたエクストラブリッジ20b(自エクストラブリッジ20b)の下流に搭載される各デバイスのBUSNの割り当てを変換(疑似的に読み替える)することで、255個以上のデバイスとのパケットの送受信を可能とする。
変換情報28bにおいては、各配下デバイスに対して、ユニークなBUSNとDEVNとの組み合わせが割り当てられている(ext.BRG downstream port送信packet情報のCfgWr/Rd packet内BUSN field)。
これらのBUSNとDEVNとの組み合わせは、自エクストラブリッジ20bが管理する複数の配下デバイスに設定された宛先情報であり、自エクストラブリッジ20bにおいてのみ有効な限定的な(ローカルな)宛先情報(限定ルーティング情報)である。
変換情報28bにおいては、これらの限定ルーティング情報が設定された各配下デバイスに対して、上位デバイスから配下デバイスにアクセスするために用いられるMemWr/RdパケットのAddress fieldの値が対応付けられている。
このような、上位デバイスから配下デバイスにアクセスするために用いられるAddress fieldの値は、BUSNに代えて用いられるルーティング情報であり、拡張ルーティング情報といってもよい。
変換情報28bは、拡張ルーティング情報と限定ルーティング情報とを対応付けた情報である。図10に例示した変換情報28bにおいて、ext.BRG upstream port受信packet情報のMemWr/Rd packet内Address fieldの値が拡張ルーティング情報に相当する。また、ext.BRG downstream port送信packet情報のCfgWr/Rd packet内BUSN fieldの値が限定ルーティング情報に相当する。
また、変換情報28bは、各デバイスのオリジナルのBUSNおよびDEVNも登録される(図示省略)。
エクストラブリッジ20bにおいて、パケット変換部30bは、BAR空間において、BAR空間にマッピングされたVendorSpecific addressへのMemWr/Rdパケットを、2ndaryBusへのCfgWr/Rdパケットに変換したうえで、ダウンストリームポート202へフォワードする。
エクストラブリッジ20bにおいて、アップストリームポート201のTLP制御部21は、受信したMemWr/Rdパケット内のAddress fieldの値が変換情報28bに設定されているMemory Addressのいずれかに一致するかを確認する。
確認の結果、受信したMemWr/Rdパケット内のAddress fieldの値が変換情報28bに設定されているMemory Addressのいずれかに一致した場合に、TLP制御部21は、当該パケットをパケット変換部30bへフォワードする。
パケット変換部30bは、変換情報28bを参照して、受信したMemWr/RdパケットのAddress fieldの値に対応するBUSNとDEVNとの組み合わせを取得する。そして、パケット変換部30bは、受信したMemWr/Rdパケットを、変換情報28bから取得したBUSNをBUSN fieldに、また、取得したDEVNをDEVN fieldに、それぞれ設定したCfgWr/Rdパケットに変換(生成)する。
その後、パケット変換部30bは、変化後のCfgWr/Rdパケットをダウンストリームポート202のTLP制御部31へフォワードする。その後、当該CfgWr/Rd パケットは、ダウンストリームポート202から、ダウンストリームデバイスへ送信される。
上述した確認の結果、受信したMemWr/Rdパケット内のAddress fieldの値が変換情報28bのいずれの設定値とも一致しない場合には、自エクストラブリッジ20b内部のMemory Mapped registerをターゲットとした処理が行なわれる。例えば、MBaseレジスタ24,MLimitレジスタ25あるいは、図示しないpfMBaseレジスタやpfMLimitレジスタで設定された空間であれば、オリジナルのMemWr/Rdパケットのままダウンストリームポート202のTLP制御部31へForwardされる。また、それ以外の空間であればSilently Discardedされる。
エクストラブリッジ20bにおいては、ダウンストリームデバイスへ送信したCfgWr/Rdパケットに対応するCpl/CplD パケットを受信した場合に、当該Cpl/CplD パケットは、ダウンストリームポート202のTLP制御部31からパケット変換部30bへフォワードされる。
パケット変換部30bは、ダウンストリームポート202のTLP制御部31から送られてきたCpl/CplDパケットに対応するリクエスト(Request)パケットをリクエストキュー29を参照して特定する。
TLP制御部31から送られてきたCpl/CplDパケットがMemWrに対するものであればここで破棄する。
一方、TLP制御部31から送られてきたCpl/CplDパケットがMemRdに対するものであれば、パケット変換部30bは、Cpl/CplDパケットのCompleter ID fieldをエクストラブリッジ20b自身のBUSNおよびDEVNの値に書き換える。パケット変換部30bは、生成したCpl/CplDパケットをアップストリームポート201のTLP制御部21へフォワードする。
また、Cpl/CplD パケットを規定時間以内に受信できない場合は、例えば、TLP制御部31がタイムアウト処理を行なったうえでCTOのフラグを付加したCplパケットを生成する。TLP制御部31は、生成したCplパケットをアップストリームポート201のTLP制御部21へフォワードする。
(B)動作
上述の如く構成された第2実施形態の一例としてのバスシステム1におけるエクストラブリッジ20bのパケット変換部30bの処理を、図11に示すフローチャート(ステップB1~B12)に従って説明する。
本処理は、パケット変換部30bがアップストリームポート201からパケットを受信することで開始される。
ステップB1において、アップストリームポート201のTLP制御部21から、パケット変換部30bにMemWrパケットまたはMemRdパケットがフォワードされる。
パケット変換部30bは、変換情報28bから変換対象のメモリ空間のアドレス情報を取得する。
ステップB2において、パケット変換部30bは、受信したMemWr/Rd パケットのAddress fieldの値を、変換情報28bから取得した情報と比較して、Address fieldの値が変換情報28bに設定された領域内であるかを確認する。
確認の結果、受信したパケットのAddress fieldの値が変換情報28bに設定された領域内でない場合には(ステップB2の“others”ルート参照)、ステップB3に移行し、当該パケットに対する通常の処理が行なわれる。当該通常の処理には、例えば、エクストラブリッジ20b内に登録されている各レジスタの処理や、ディスカード,アンサポーテッドリクエストの応答,エラー処理等が含まれてもよい。
受信したパケットのAddress fieldの値が変換情報28bに設定された領域内である場合には(ステップB2の“Address fieldが変換情報で設定された領域の場合”ルート参照)、ステップB4に移行する。
ステップB4において、パケット変換部30bは、受信したMemWr/Rdパケット内のAddress field の値に基づいて変換情報28bを参照する。パケット変換部30bは、受信パケットのAddress fieldに対応する、ext.BRG downstream port送信packet情報(変換後のBUSN fieldの値およびDEVN fieldの値)を、変換情報28bから取得する。
パケット変換部30bは、アップストリームポート201からフォワードされたMemWr/Rdパケットに対して、変換情報28bから取得した変換後のBUSN fieldの値およびDEVN fieldの値を付加してCfgWr/Rdパケットに置換(変換)する。
ステップB5において、オリジナルパケット(MemWr/Rdパケット)内のTAG情報をリクエストキュー29に登録する。
なお、ステップB4とステップB5との処理順序は、これに限定されるものではなく、ステップB5の処理を行なった後にステップB4の処理を行なってもよい。
ステップB6において、パケット変換部30bは、変換したCfgWr/Rdパケットをダウンストリームポート202のTLP制御部31へフォワードする。CfgWr/Rdパケットは、ダウンストリームポート202から下流側に送信される。
ステップB7において、例えば、TLP制御部31は、CfgWr/Rdパケットに対応するCpl/CplD パケットの受信を待つ。
PCIeはSplit Transactionであり、non Posted requestであるCfgWrパケットまたはCfgRdパケットの発行後のCplパケットまたはCplDパケットの受信は非同期となる。
TLP制御部31は、ダウンストリームデバイスからCfgWr/Rdパケットに対応するCpl/CplD パケットが応答されるまで待機する(ステップB7の“Waiting for packet”ルート参照)。
所定時間待機してもCpl/CplD パケットが応答されない場合には(ステップB7の“Timeout or Error”ルート参照)、ステップB8において、TLP制御部31は、タイムアウト(Timeout)処理もしくはエラー(Error)処理を行なう。例えば、TLP制御部31は、CTOのフラグを付加したCplパケットを生成し、この生成したCplパケットをアップストリームポート201のTLP制御部21へフォワードする。
一方、CfgWr/Rdパケットに対応するCpl/CplD パケットを受信した場合には(ステップA6の“original Cpl/CplD received”ルート参照)、ステップB9に移行する。
ステップB9において、TLP制御部31は、受信したCpl/CplD パケットのTag fieldの値を確認する。
オリジナルパケットがPosted requestであるMemWrパケットの場合に、ダウンストリームポート202で受信したCplパケットは、エクストラブリッジ20b内でディスカードしなければならない。
Tag fieldの値の確認の結果、オリジナルパケットがMemWrパケットである場合には(ステップB9の“original packet == MemWr”ルート参照)、ステップB10において、TLP制御部31は、Cplパケットのディスカード処理を行なう。
Tag fieldの値の確認の結果、オリジナルパケットがMemWrパケットでない場合には(ステップB9の“others”ルート参照)、ステップB11に移行する。TLP制御部31は、Cpl/CplD パケットをパケット変換部30bへフォワードする。
ステップB11において、パケット変換部30bは、Cpl/CplD パケット内のCompleter ID fieldの値に基づいて変換情報28bを参照し、オリジナルのBUSNおよびDEVNを取得する。
パケット変換部30bは、受信したCpl/CplD packetのCompleterlD fieldの値を、変換情報28bに設定されているオリジナルのBUSN/DEVNの値に置換することで、Cpl/CplD パケットを更新する。
ステップB12において、パケット変換部30bは、更新したCpl/CplD パケットをアップストリームポート201のTLP制御部21へフォワードする。
その後、アップストリームポート201から上位デバイスに対して、更新したCpl/CplD パケットが送信される。その後、処理を終了する。
(C)効果
このように、第2実施形態の一例としてのバスシステム1によれば、エクストラブリッジ20bを、複数のスイッチ10を多段にカスケード接続して構成するデバイスツリーの任意の位置に配置する。
エクストラブリッジ20bにおいて、パケット変換部30bが、受信したMemWr/Rdパケット内のAddress field の値に基づいて変換情報28bを参照し、受信パケットのAddress fieldの値に対応する、ext.BRG downstream port送信packet情報(変換後のBUSN fieldの値およびDEVN fieldの値)を取得する。
パケット変換部30bは、アップストリームポート201からフォワードされたMemWr/Rdパケット内のAddress fieldの値を、変換情報28bから取得した変換後のBUSN fieldの値およびDEVN fieldの値に置換する。
変換情報28bにおいては、デバイスツリーにおける配下デバイスに対して、ユニークなBUSNとDEVNとの組み合わせが割り当てられている。
すなわち、パケット変換部30bにおいて、デバイスツリーにおける配下の各デバイスのBUSNの割り当てを、BUSNとDEVNとの組み合わせを用いて変換(疑似的に読み替える,リマッピング)することで、255個以上のデバイスとのパケットの送受信を可能とする。
これにより、FPB未サポートの現行モデルのPCIeスイッチ、すなわち、既存のTyp1Config:MemBase/Limitを用いても 255以上のデバイスを搭載したデバイスツリーを構成することができる。また、このように構成したデバイスツリーにおいて、デバイスへのアクセスを高スループット、且つ、低レイテンシで実現することができる。
(III)その他
開示の技術は上述した実施形態に限定されるものではなく、本実施形態の趣旨を逸脱しない範囲で種々変形して実施することができる。本実施形態の各構成および各処理は、必要に応じて取捨選択することができ、あるいは適宜組み合わせてもよい。
例えば、上述した各実施形態において、通信プロトコルとしてNVMe(Non-Volatile Memory Express)を適用してもよく、適宜変更して実施することができる。
また、上述した各実施形態においては、バスツリーに1つのエクストラブリッジ20aもしくはエクストラブリッジ20bを備える例を示しているが、これに限定されるものではない。エクストラブリッジ20aもしくはエクストラブリッジ20bを、複数のスイッチ10を多段にカスケード接続して構成するデバイスツリーの任意の複数の位置に配置してもよい。また、バスツリーにおいて、第1実施形態のエクストラブリッジ20aと第2実施形態のエクストラブリッジ20bとを備えてもよく、適宜変更して実施することができる。
上述した実施形態においては、各スイッチ10は、それぞれダウンストリームポート102-1~102-3を備える例を示しているが、これに限定されるものではない。各スイッチ10は、それぞれ任意の数のダウンストリームポートを備えてよい。
また、上述した開示により本実施形態を当業者によって実施・製造することが可能である。
(IV)付記
以上の実施形態に関し、さらに以下の付記を開示する。
(付記1)
複数のデバイスを接続するPCIe(Peripheral Component Interconnect Express)バスツリーにおいて、前記複数のデバイスのうちの第1のデバイスの下流であり、且つ前記複数のデバイスのうちの2つ以上の第2のデバイスよりも上流の位置に配置される中継装置であって、
前記第1のデバイスから前記2つ以上の第2のデバイスのうちのアクセス対象デバイスへの第1アクセスパケットに対して、当該第1アクセスパケットに含まれるルーティング情報を、前記2つ以上の第2のデバイスに対して予め設定した限定ルーティング情報とデバイス番号に変換することで第2アクセスパケットに変換するパケット変換部と、
生成した前記第2アクセスパケットを前記PCIeバスツリーにおける下流にフォワードする出力部と
を備えることを特徴とする中継装置。
(付記2)
前記限定ルーティング情報がバス番号とデバイス番号とを含む
ことを特徴とする、付記1に記載の中継装置。
(付記3)
前記第1アクセスパケットがCfgWrパケットもしくはCfgRdパケットを含み、前記ルーティング情報がバス番号とデバイス番号とを含む
ことを特徴とする、付記1または2に記載の中継装置。
(付記4)
前記第1アクセスパケットがMemWrパケットもしくはMemRdパケットを含み、前記ルーティング情報がアドレス情報を含む
ことを特徴とする、付記1または2に記載の中継装置。
(付記5)
複数のデバイスを接続するPCIe(Peripheral Component Interconnect Express)バスツリーにおいて、前記複数のデバイスのうちの第1のデバイスの下流であり、且つ前記複数のデバイスのうちの2つ以上の第2のデバイスよりも上流の位置に配置される中継装置において、
前記第1のデバイスから前記2つ以上の第2のデバイスのうちのアクセス対象デバイスへの第1アクセスパケットに対して、当該第1アクセスパケットに含まれるルーティング情報を、前記2つ以上の第2のデバイスに対して予め設定した限定ルーティング情報とデバイス番号に変換することで第2アクセスパケットに変換する処理と、
生成した前記第2アクセスパケットを前記PCIeバスツリーにおける下流にフォワードする処理と
を備えることを特徴とする中継方法。
(付記6)
前記限定ルーティング情報がバス番号とデバイス番号とを含む
ことを特徴とする、付記5に記載の中継方法。
(付記7)
前記第1アクセスパケットがCfgWrパケットもしくはCfgRdパケットを含み、前記ルーティング情報がバス番号とデバイス番号とを含む
ことを特徴とする、付記5または6に記載の中継方法。
(付記8)
前記第1アクセスパケットがMemWrパケットもしくはMemRdパケットを含み、前記ルーティング情報がアドレス情報を含む
ことを特徴とする、付記5または6に記載の中継方法。
1 バスシステム
10-1,10-2,10 スイッチ
20a,20b エクストラブリッジ
30ー1~30ー4,30 エンドポイントデバイス
101,201 アップストリームポート
102ー1~102ー3,202 ダウンストリームポート
21,31 TLP制御部
22 BAR
24 MBaseレジスタ
25 MLimitレジスタ
26 2ndBUSレジスタ
27 subOrdレジスタ
28a,28b 変換情報
29 リクエストキュー
30a,30b パケット変換部

Claims (5)

  1. 複数のデバイスを接続するPCIe(Peripheral Component Interconnect Express)バスツリーにおいて、前記複数のデバイスのうちの第1のデバイスの下流であり、且つ前記複数のデバイスのうちの2つ以上の第2のデバイスよりも上流の位置に配置される中継装置であって、
    前記第1のデバイスから前記2つ以上の第2のデバイスのうちのアクセス対象デバイスへの第1アクセスパケットに対して、当該第1アクセスパケットに含まれるルーティング情報を、前記2つ以上の第2のデバイスに対して予め設定した限定ルーティング情報に変換することで第2アクセスパケットに変換するパケット変換部と、
    生成した前記第2アクセスパケットを前記PCIeバスツリーにおける下流にフォワードする出力部と
    を備えることを特徴とする中継装置。
  2. 前記限定ルーティング情報がバス番号とデバイス番号とを含む
    ことを特徴とする、請求項1に記載の中継装置。
  3. 前記第1アクセスパケットがCfgWrパケットもしくはCfgRdパケットを含み、前記ルーティング情報がバス番号とデバイス番号とを含む
    ことを特徴とする、請求項1または2に記載の中継装置。
  4. 前記第1アクセスパケットがMemWrパケットもしくはMemRdパケットを含み、前記ルーティング情報がアドレス情報を含む
    ことを特徴とする、請求項1または2に記載の中継装置。
  5. 複数のデバイスを接続するPCIe(Peripheral Component Interconnect Express)バスツリーにおいて、前記複数のデバイスのうちの第1のデバイスの下流であり、且つ前記複数のデバイスのうちの2つ以上の第2のデバイスよりも上流の位置に配置される中継装置において、
    前記第1のデバイスから前記2つ以上の第2のデバイスのうちのアクセス対象デバイスへの第1アクセスパケットに対して、当該第1アクセスパケットに含まれるルーティング情報を、前記2つ以上の第2のデバイスに対して予め設定した限定ルーティング情報に変換することで第2アクセスパケットに変換する処理と、
    生成した前記第2アクセスパケットを前記PCIeバスツリーにおける下流にフォワードする処理と
    を備えることを特徴とする中継方法。
JP2022050606A 2022-03-25 2022-03-25 中継装置および中継方法 Pending JP2023143302A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2022050606A JP2023143302A (ja) 2022-03-25 2022-03-25 中継装置および中継方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2022050606A JP2023143302A (ja) 2022-03-25 2022-03-25 中継装置および中継方法

Publications (1)

Publication Number Publication Date
JP2023143302A true JP2023143302A (ja) 2023-10-06

Family

ID=88220115

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2022050606A Pending JP2023143302A (ja) 2022-03-25 2022-03-25 中継装置および中継方法

Country Status (1)

Country Link
JP (1) JP2023143302A (ja)

Similar Documents

Publication Publication Date Title
JP4998469B2 (ja) インターコネクション用スイッチおよびシステム
US9025495B1 (en) Flexible routing engine for a PCI express switch and method of use
US9742671B2 (en) Switching method
ES2779551T3 (es) Sistema de procesamiento de datos y método de procesamiento de datos
US9146890B1 (en) Method and apparatus for mapped I/O routing in an interconnect switch
US8401000B2 (en) Method of processing data packets
WO2009139489A1 (ja) Pciエクスプレススイッチ、pciエクスプレスシステム、及びネットワーク制御方法
JP5310175B2 (ja) スイッチシステム、及びスイッチシステムの制御方法
US20160267035A1 (en) Methods and apparatus for augmented bus numbering
US20170139849A1 (en) Driverless storage device using serially-attached non-volatile memory
US20210349843A1 (en) System component and use of a system component
JP2020113137A (ja) ストレージ装置
JP5564948B2 (ja) I/o接続システムおよびi/o接続方法
WO2022012309A1 (zh) 扩展PCIe系统的方法、PCIe交换设备及PCIe系统
JP6579140B2 (ja) 変換装置、ホスト装置、入出力スイッチシステム、情報処理システム、方法およびプログラム
US20030217177A1 (en) Smart routing between peers in a point-to-point link based system
US10169279B2 (en) Input/output control device, input/output control system, and input/output control method for conversion of logical address of instruction into local address of device specified in instruction
US20120324078A1 (en) Apparatus and method for sharing i/o device
US9116836B2 (en) Tunneling transaction packets
TWI791134B (zh) 通信裝置、資訊處理系統及通信方法
JP2023143302A (ja) 中継装置および中継方法
US20050041658A1 (en) Configuration access mechanism for packet switching architecture
US20220405229A1 (en) Pcie-based communications method and apparatus
JP2011014023A (ja) 中継手段、中継システム、中継方法およびプログラム
EP1596307B1 (en) I/O configuration messaging within a link-based computing system