(57)【要約】【課題】複数のプロセッサ間における高速通信を実現する。【解決手段】複数のプロセッサ２１のうちルートコンプレックスとして動作する第１のプロセッサ２１から、複数のエンドポイントのうち第１のエンドポイントを介して受信したデータを、複数のエンドポイントＥＰのうち第２のエンドポイントを介して、複数のプロセッサ２１のうちルートコンプレックスとして動作する第２のプロセッサ２１に送信する。【選択図】図４
2020053089.tif 000002
【特許請求の範囲】
【請求項１】
複数のプロセッサのそれぞれと通信可能に接続され、PCIe（Peripheral  Component  Interconnect  Express）バスを用いて、前記複数のプロセッサ間の通信を中継する中継装置であって、
中継装置側に複数のエンドポイントを備え、
前記複数のプロセッサのうちルートコンプレックスとして動作する第１のプロセッサから、前記複数のエンドポイントのうち第１のエンドポイントを介して受信したデータを、前記複数のエンドポイントのうち第２のエンドポイントを介して、前記複数のプロセッサのうちルートコンプレックスとして動作する第２のプロセッサに送信する
ことを特徴とする、中継装置。
【請求項２】
前記複数のエンドポイントのそれぞれに対応する複数の中継記憶装置を備え、
送信元である前記第１のエンドポイントに対応して備えられた前記中継記憶装置において、前記複数のエンドポイント毎に形成された記憶領域のうち、送信先である第２のエンドポイントに対して設けられた第１の記憶領域にデータが格納されると、当該データを、送信先である前記第２のエンドポイントに対応して備えられた前記中継記憶装置の送信先である第２のエンドポイントに対して設けられた第１の記憶領域にデータを格納することで、複数のエンドポイント間のデータ転送を行なう
ことを特徴とする、請求項１記載の中継装置。
【請求項３】
複数のプロセッサと、
前記複数のプロセッサのそれぞれと通信可能に接続され、PCIe（Peripheral  Component  Interconnect  Express）バスを用いて、前記複数のプロセッサ間の通信を中継する中継装置とを備え、
前記中継装置が、
複数のエンドポイントを備え、
前記複数のプロセッサのうちルートコンプレックスとして動作する第１のプロセッサから、前記複数のエンドポイントのうち第１のエンドポイントを介して受信したデータを、前記複数のエンドポイントのうち第２のエンドポイントを介して、前記複数のプロセッサのうちルートコンプレックスとして動作する第２のプロセッサに送信する
ことを特徴とする、情報処理システム。
【請求項４】
複数のプラットフォームのそれぞれと通信可能に接続され、拡張バスを用いて、前記複数のプラットフォーム間の通信を中継する中継装置であって、
中継装置側に複数のエンドポイントを備え、
前記複数のプラットフォームのうちルートコンプレックスとして動作する第１のプラットフォームから、前記複数のエンドポイントのうち第１のエンドポイントを介して受信したデータを、前記複数のエンドポイントのうち第２のエンドポイントを介して、前記複数のプラットフォームのうちルートコンプレックスとして動作する第２のプラットフォームに送信する
ことを特徴とする、中継装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、中継装置および情報処理システムに関する。
【背景技術】
【０００２】
複数の計算機（演算装置）を用いて並列計算を行なう手法が知られており、例えば、イーサネット（登録商標）回線を用いて計算機間でデータのやりとりをすることが行なわれている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００８−４１０２７号公報
【特許文献２】特表２０１２−５０４８３５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、イーサネット回線を用いた通信においては、その通信速度がボトルネックとなる場合がある。
【０００５】
１つの側面では、本発明は、複数のプロセッサ間における高速通信を実現することを目的とする。
【課題を解決するための手段】
【０００６】
このため、この中継装置は、複数のプロセッサのそれぞれと通信可能に接続され、PCIe（Peripheral  Component  Interconnect  Express；登録商標）バスを用いて、前記複数のプロセッサ間の通信を中継する中継装置であって、複数のエンドポイントを備え、前記複数のプロセッサのうちルートコンプレックスとして動作する第１のプロセッサから、前記複数のエンドポイントのうち第１のエンドポイントを介して受信したデータを、前記複数のエンドポイントのうち第２のエンドポイントを介して、前記複数のプロセッサのうちルートコンプレックスとして動作する第２のプロセッサに送信する。
【発明の効果】
【０００７】
一実施形態によれば、複数のプロセッサ間における高速通信を実現することができる。
【図面の簡単な説明】
【０００８】
【図１】各種プラットフォームにおけるPCIeバスを用いた接続構成を例示する図である。
【図２】各種プラットフォームにおけるPCIeバスを用いた接続構成を例示する図である。
【図３】各種プラットフォームにおけるPCIeバスを用いた接続構成を例示する図である。
【図４】実施形態の一例としての情報処理システムにおける複数のプラットフォームの接続構成を模式的に示す図である。
【図５】実施形態の一例としての情報処理システムにおけるプラットフォームのソフトウェア構成を例示する図である。
【図６】実施形態の一例としての情報処理システムにおけるPCIeブリッジコントローラのハードウェア構成を模式的に示す図である。
【図７】実施形態の一例としてのPCIeのレイヤ構成を示す図である。
【図８】実施形態の一例としての情報処理システムにおける一のプロセッサからの他のプロセッサの見え方を例示する図である。
【図９】実施形態の一例としての情報処理システムにおける一のプロセッサからの他のプロセッサの見え方を例示する図である。
【図１０】実施形態の一例としての情報処理システムにおけるPCIeブリッジコントローラを介したプロセッサ間のデータ転送方法を説明するための図である。
【図１１】実施形態の一例としての情報処理システムにおけるPCIeブリッジコントローラを介したプロセッサ間のデータ転送方法を説明するための図である。
【発明を実施するための形態】
【０００９】
以下、図面を参照して本中継装置および情報処理システムに係る実施の形態を説明する。ただし、以下に示す実施形態はあくまでも例示に過ぎず、実施形態で明示しない種々の変形例や技術の適用を排除する意図はない。すなわち、本実施形態を、その趣旨を逸脱しない範囲で種々変形して実施することができる。また、各図は、図中に示す構成要素のみを備えるという趣旨ではなく、他の機能等を含むことができる。
【００１０】
（Ａ）PCIeバスを用いた通信について
例えば、ＰＣをベースにしたＡＩ推論処理・画像処理などの負荷が高い演算を実行するために、ＰＣのデバイスとして利用可能なＧＰＵやＦＰＧＡといったプロセッサ（演算プロセッサ）を用いることが考えられる。なお、ＰＣはPersonal  Computerの略称であり、ＡＩはArtificial  Intelligenceの略称である。ＧＰＵはGraphics  Processing  Unitの略称であり、ＦＰＧＡはField  Programmable  Gate  Arrayの略称である。
【００１１】
また、上述のプロセッサをＰＣのデバイスとして動作させるためには、ＯＳ（Operating  System）上に特定のハードウェアを動作させるデバイスドライバを組み込む必要がある。ＯＳには、Windows（登録商標）やLinux（登録商標）等があり、それぞれのＯＳの要件に合わせてデバイスドライバを作り込む等の作業が必要である。特にWindowsの場合、ＯＳのバージョンによってドライバ要件等が異なっており、デバイスドライバの開発ノウハウが必要とされていた。そのため、どれだけ性能が高いプロセッサであってもWindows向けデバイスドライバの開発ノウハウを持ち合わせていない場合、ＰＣのデバイスとして利用できないという制限が生じる。
【００１２】
ＰＣにおいてデバイスを接続するためのインタフェースとして、大容量のデータを高速に転送可能なPCIeインタフェースが知られている。PCIeにおいては、インテルプロセッサ等のプロセッサがホスト側として動作可能なＲＣ（Root  Complex）となり、デバイスがＥＰ（End  Point）となり、ホストとデバイスとの間でのデータ転送が行なわれる。
【００１３】
図１〜図３はそれぞれ各種プラットフォームにおけるPCIeバスを用いた接続構成を例示する図である。
【００１４】
例えば、ＰＣプラットフォームにはインテル社製x86互換プロセッサが搭載されており、WindowsやLinux等の汎用ＯＳが動作する。
【００１５】
図１においては、PCIe搭載のＰＣプラットフォームにおいてＲＣとＥＰとが１対１接続する構成を例示する。この図１に例示する手法においては、ＰＣプラットフォーム側がＲＣとなり、各デバイスをＥＰとして接続する。この図１中において、各デバイスに用いられるコントローラはそれぞれ別のメーカ（Ａ社〜Ｈ社）により提供される。
【００１６】
各デバイスはＰＣプラットフォーム上のＯＳに各デバイス用のデバイスドライバを組み込むことで利用可能となるため、各デバイスを独立して動作させることはできない。また、ＰＣプラットフォームに動作不良が生じると全デバイスが動作停止する。
【００１７】
デバイスドライバは各ハードウェアおよびＯＳに合わせた開発が必要となるため、ＯＳを変更する場合は適宜ドライバ開発を行なわなければならない。
【００１８】
図２においては、PCIeスイッチコントローラを介して、１つのＲＣに対して複数のＥＰを接続する構成を例示する。この図２に例示する手法においても、ＰＣプラットフォーム側がＲＣとなり、各デバイスをＥＰとして接続する。
【００１９】
この図２に例示するようなPCIeスイッチコントローラは、１つのＲＣに対して複数のＥＰを接続するに際して、接続するデバイスの数に対してＲＣが不足している場合に用いられる。この方法を採ると１つのＲＣの帯域を、４つのＥＰで共用するため性能が低下する。
【００２０】
しかしながら、デバイスを駆動する手法は上述のＲＣとＥＰとを１対１で接続する場合と同様となるため、デバイス単独で動作させることはできない。Intel  x86プラットフォーム上のＯＳに各デバイス用のデバイスドライバを組み込むことで利用可能となる。
【００２１】
図３においては、２つのＰＣプラットフォーム（Unit  A，Unit  B）をインターコネクトを介して相互接続する構成を例示している。
【００２２】
この図３に例示する手法においても、ＰＣプラットフォーム側がＲＣとなり、各デバイスをＥＰとして接続する。
【００２３】
各デバイスはＰＣプラットフォーム上のＯＳに各デバイス用のデバイスドライバを組み込むことで利用可能となる。
【００２４】
この図３に例示するように、ＯＳが動作するプラットフォーム（プロセッサ）をインターコネクトやイーサネット等で接続することで、複数のプロセッサを同期駆動することができる。
【００２５】
ただし、接続する各プラットフォームは同一ＯＳが動作している必要があったり、同一の接続手法をサポートしている必要があるため、この図３に例示する構成は、異なる任意のプラットフォームの接続には適さない。
【００２６】
例えば、図３中のUnit  AがUnit  Bに接続されたＥ社デバイスに処理を行なわせる場合、Unit  Aのプロセッサからインターコネクト経由でUnit  Bのプロセッサに処理を渡し、Unit  BのプロセッサがＥ社デバイスに処理を行なわせることになる。
【００２７】
インターコネクトで接続されたプラットフォーム間では、各プロセッサが他のユニットに接続されたデバイスに対して処理を発行することが可能である。しかしながら、必ずデバイスが接続されたプロセッサを介して処理が行なわれることになり、受側のプロセッサの負荷も高くなる。
【００２８】
以上、図１〜図３を用いて示したように、複数のプロセッサ間の通信に、従来手法のPCIe通信をそのまま適用するだけでは、ＯＳに各デバイス用のデバイスドライバが不可欠であり、その開発コストおよび維持コストが生じることとなる。
【００２９】
本情報処理システムにおいては、複数のプロセッサをPCIeバスを介して相互に接続してプロセッサ間通信を実現するとともに、各プロセッサに他のプロセッサのＲＣとなるためのドライバを不要とする構成を提供する。
【００３０】
（Ｂ）構成
図４は実施形態の一例としての情報処理システム１における複数のプラットフォームの接続構成を模式的に示す図である。
【００３１】
図４に例示する情報処理システム１においては、PCIeブリッジコントローラ３および複数（図４に示す例では８つ）のプラットフォーム２−１〜２−８を備える。各プラットフォーム２−１〜２−８は、それぞれPCIeブリッジコントローラ３に接続されている。
【００３２】
なお、以下、プラットフォームを示す符号としては、複数のプラットフォームのうち１つを特定する必要があるときには符号２−１〜２−８を用いるが、任意のプラットフォームを指すときには符号２を用いる。プラットフォーム２はＰＣプラットフォーム２といってもよい。
【００３３】
［プラットフォーム］
プラットフォーム２−１はプロセッサ２１−１を備える。同様に、プラットフォーム２−２〜２−８はプロセッサ２１−２〜２１−８をそれぞれ備える。
【００３４】
プロセッサ２１−１〜２１−８はそれぞれ違うメーカ（ベンダ）から提供されてもよい。例えば、プロセッサ２１−１，２１−２，２１−３，２１−４，２１−５，２１−６，２１−７，２１−８は、それぞれ、Ａ社，Ｂ社，Ｃ社，Ｄ社，Ｅ社，Ｆ社，Ｇ社，Ｈ社が提供するものであるとする。
【００３５】
また、以下、プロセッサ２１−１，２１−２，２１−３，２１−４，２１−５，２１−６，２１−７，２１−８を、それぞれプロセッサＡ，Ｂ，Ｃ，Ｄ，Ｅ，Ｆ，Ｇ，Ｈという場合がある。また、PCIeブリッジコントローラ３に搭載されているＥＰに対して、それぞれ異なるプラットフォームを接続しても良い。さらに、２つ以上の複数のＥＰを１つのプラットフォームに接続し、プラットフォーム側が複数のＲＣを用いてPCIeブリッジコントローラ３と通信しても良い。
【００３６】
なお、以下、プロセッサを示す符号としては、複数のプロセッサのうち１つを特定する必要があるときには符号２１−１〜２１−８もしくは符号Ａ〜Ｈ等を用いるが、任意のプロセッサを指すときには符号２１を用いる。
【００３７】
プラットフォーム２−１〜２−８は、ＡＩ推論処理や画像処理等の演算処理を行なうコンピュータ環境であり、プロセッサ２１や図１０に示すストレージ２３およびメモリ（物理メモリ）２２を備える。
【００３８】
プラットフォーム２においては、プロセッサ２１がメモリ２２やストレージ２３に格納されたプログラムを実行することで各種機能を実現する。
【００３９】
ストレージ２３は、ハードディスクドライブ（Hard  Disk  Drive：ＨＤＤ）、ＳＳＤ（Solid  State  Drive）、ストレージクラスメモリ（Storage  Class  Memory：ＳＣＭ）等の記憶装置であって、種々のデータを格納するものである。
【００４０】
メモリ２２はＲＯＭ（Read  Only  Memory）およびＲＡＭ（Random  Access  Memory）を含む記憶メモリである。メモリ２２のＲＯＭには、各種ソフトウェアプログラムやこのプログラム用のデータ類が書き込まれている。メモリ２２上のソフトウェアプログラムは、プロセッサ２１に適宜読み込まれて実行される。また、メモリ２２のＲＡＭは、一次記憶メモリあるいはワーキングメモリとして利用される。
【００４１】
プロセッサ２１は、プラットフォーム２全体を制御する。プロセッサ２１は、マルチプロセッサであってもよい。プロセッサ２１は、例えばＣＰＵ（Central  Processing  Unit），ＭＰＵ（Micro  Processing  Unit），ＤＳＰ（Digital  Signal  Processor），ＡＳＩＣ（Application  Specific  Integrated  Circuit），ＰＬＤ（Programmable  Logic  Device），ＦＰＧＡ（Field  Programmable  Gate  Array）のいずれか一つであってもよい。また、プロセッサ２１は、ＣＰＵ，ＭＰＵ，ＤＳＰ，ＡＳＩＣ，ＰＬＤ，ＦＰＧＡのうちの２種類以上の要素の組み合わせであってもよい。
【００４２】
図５は実施形態の一例としての情報処理システム１におけるプラットフォーム２のソフトウェア構成を例示する図である。
【００４３】
なお、図５中においては、便宜上、プラットフォーム２−１〜２−３のソフトウェア構成のみを図示する。
【００４４】
この図５に例示する情報処理システム１において、プラットフォーム２−１はWindowsをＯＳとし、このＯＳ上において店舗管理プログラムが実行される。プラットフォーム２−２，２−３はそれぞれLinuxをＯＳとし、このＯＳ上において分散処理プログラム（分散処理Ａ，Ｂ）が実行される。
【００４５】
各プラットフォーム２には、ブリッジドライバ２０が備えられており、プラットフォーム２は、このブリッジドライバ２０を介してPCIeブリッジコントローラ３および他のプラットフォーム２との間で通信を行なう。なお、ブリッジドライバ２０による通信方法については後述する。
【００４６】
各プラットフォーム２においては、プロセッサ２１およびメモリ（物理メモリ）２２を備え、プロセッサ２１がメモリ２２に格納されたＯＳや各種プログラム，ドライバ等を実行することでそれぞれの機能を実現する。
【００４７】
各プラットフォーム２に備えられるプロセッサ２１は、互いに違うベンダによって提供されるものであってもよい。図４に示す例においては、少なくとも一部のプラットフォーム２（例えば、プラットフォーム２−７）に複数のＲＣを有するプラットフォーム（例えば、Intel社のx86プロセッサ）が用いられてもよい。
【００４８】
また、各プラットフォーム２は、それぞれ他のドライバ構成に影響を与えないように独立動作可能に構成されている。
【００４９】
プラットフォーム２において、メモリ２２の記憶領域の一部は、図１０を用いて後述する如く、プラットフォーム２間（プロセッサ２１間）において転送されるデータが一時的に格納される通信バッファ２２１として用いられる。
【００５０】
PCIeブリッジコントローラ３は、複数のプラットフォーム２−１〜２−７間におけるデータ等の通信を実現する。
【００５１】
図６は実施形態の一例としての情報処理システム１におけるPCIeブリッジコントローラ３のハードウェア構成を模式的に示す図である。
【００５２】
PCIeブリッジコントローラ３は、例えば、８チャネルのＥＰを１チップ内に有する中継装置である。このPCIeブリッジコントローラ３は、図６に示すように、ＣＰＵ３１，メモリ３２，インターコネクト３３および複数（図６に示す例では８つ）のスロット３４−１〜３４８を備える。
【００５３】
スロット３４−１〜３４−８にはそれぞれPCIeの規格を満たすよう構成されたデバイスが接続される。特に、本情報処理システム１においては、スロット３４−１〜３４−８のそれぞれにプラットフォーム２が接続される。
【００５４】
なお、以下、スロットを示す符号としては、複数のスロットのうち１つを特定する必要があるときには符号３４−１〜３４−８を用いるが、任意のスロットを指すときには符号３４を用いる。
【００５５】
なお、図４中のプラットフォーム２−１〜２−６のように、一つのスロット３４に対して一つのプロセッサ２１が接続されてもよく、図４中のプラットフォーム２−７のように、複数（図４の例では２つ）のスロット３４に対して一つのプラットフォーム２が接続されてもよく、種々変形して実施することができる。
【００５６】
図４中のプラットフォーム２−７のように、一つのプラットフォーム２に対して複数のスロット３４をアサインすることで、このプラットフォーム２−７に広い通信帯域を用いた通信を行なわせることができる。
【００５７】
各スロット３４は内部バス（Internal  Bus）を介してインターコネクト３３にそれぞれ接続されている。また、インターコネクト３３にはＣＰＵ３１およびメモリ３２が接続されている。これにより、各スロット３４とＣＰＵ３１およびメモリ３２はインターコネクト３３を介して相互に通信可能に接続されている。
【００５８】
メモリ３２は、例えば、ＲＯＭおよびＲＡＭを含む記憶メモリ（物理メモリ）である。メモリ３２のＲＯＭには、データ通信制御に係るソフトウェアプログラムやこのプログラム用のデータ類が書き込まれている。メモリ３２上のソフトウェアプログラムは、ＣＰＵ３１に適宜読み込まれて実行される。また、メモリ３２のＲＡＭは、一次記憶メモリあるいはワーキングメモリとして利用される。
【００５９】
さらに、PCIeブリッジコントローラ３においては、各スロットに対応させてレジスタ３５（図１０参照）が備えられ、このレジスタ３５のＢＡＲ（Base  Address  Register）空間には、スロット毎に記憶領域が備えられる。すなわち、レジスタ３５のＢＡＲ空間にはスロット＃０〜＃７のそれぞれに対応する記憶領域が設けられている。
【００６０】
PCIeブリッジコントローラ３においては、後述の如く、ＢＡＲ空間のスロット毎の記憶領域を用いてプラットフォーム２間のデータ転送を行なう。
【００６１】
ＣＰＵ３１は、PCIeブリッジコントローラ３全体を制御する。ＣＰＵ３１は、マルチプロセッサであってもよい。なお、ＣＰＵ３１に代えてＭＰＵ，ＤＳＰ，ＡＳＩＣ，ＰＬＤ，ＦＰＧＡのいずれか一つが用いられてもよい。また、ＣＰＵ３１は、ＣＰＵ，ＭＰＵ，ＤＳＰ，ＡＳＩＣ，ＰＬＤ，ＦＰＧＡのうちの２種類以上の要素の組み合わせであってもよい。
【００６２】
そして、ＣＰＵ３１がメモリ３２に格納されたソフトウェアプログラムを実行することで、PCIeブリッジコントローラ３におけるプラットフォーム２間（プロセッサ２１間）のデータ転送を実現する。
【００６３】
PCIeブリッジコントローラ３は、プラットフォーム２間のデータ転送を高速化するためにPCIeを用い、図４に示すように、各プラットフォーム２に備えられるプロセッサをそれぞれＲＣとして動作させ、デバイスとして動作するＥＰ間でデータ転送を実現する。
【００６４】
具体的には、本情報処理システム１においては、各プラットフォーム２のプロセッサを、データ転送インタフェースとしてPCIeのＲＣとして動作させる。また、各プラットフォーム２（プロセッサ２１）に対して、PCIeブリッジコントローラ３を、すなわち、各プラットフォーム２が接続されているスロット３４をＥＰとして動作させる。
【００６５】
PCIeブリッジコントローラ３をプロセッサ２１に対してＥＰとして接続する手法としては、既知の種々の手法を用いて実現することができる。
【００６６】
例えば、PCIeブリッジコントローラ３は、プラットフォーム２との接続時に、ＥＰとして機能することを示す信号を当該プロセッサ２１に通知することで、ＥＰとしてプロセッサ２１と接続する。
【００６７】
PCIeブリッジコントローラ３においては  ＥＰｔｏＥＰ（End  Point  to  End  Point）でデータをトンネリングさせて、複数のＲＣにデータを転送する。プロセッサ間の通信は、PCIeのトランザクションが発生したときに論理的に接続され、１つのプロセッサにデータ転送が集中しないときは、それぞれのプロセッサ間で並行してデータ転送できる。
【００６８】
図７は実施形態の一例としてのPCIeのレイヤ構成を示す図である。
【００６９】
この図７においては、プラットフォーム２−１のプロセッサＡとプラットフォーム２−２のプロセッサＢとの間で通信を行なう例を示す。
【００７０】
送信元のプラットフォーム２−１においては、ＲＣであるプロセッサＡにおいて生成されたデータが、ソフトウェア，トランザクション層，データリンク層および物理層（ＰＨＹ）を、順次、転送され、物理層においてPCIeブリッジコントローラ３の物理層に転送される。
【００７１】
PCIeブリッジコントローラ３においては、物理層，データリンク層，トランザクション層およびソフトウェアを順次、転送され、送信先のプラットフォーム２のＲＣに対応するＥＰにトンネリングによりデータが転送される。
【００７２】
すなわち、PCIeブリッジコントローラ３においては、ＥＰ間でデータをトンネリングさせることで、一のＲＣ（プロセッサ２１）から他のＲＣ（プロセッサ２１）にデータが転送される。
【００７３】
送信先のプラットフォーム２−２においては、PCIeブリッジコントローラ３から転送されたデータが、物理層（ＰＨＹ），データリンク層，トランザクション層およびソフトウェアを、順次、転送され、送信先のプラットフォーム２−２のプロセッサＢに転送される。
【００７４】
本情報処理システム１において、プロセッサ２１間（プラットフォーム２間）の通信は、PCIeのトランザクションが発生したときに論理的に接続される。
【００７５】
PCIeブリッジコントローラ３が有する８スロットのうちの一つに接続された特定のプロセッサ２１に対して複数の他のプロセッサ２１からのデータ転送が集中しないときは、異なる任意の複数組のそれぞれのプロセッサ２１間で並行してデータ転送してもよい。
【００７６】
例えば、プラットフォーム２−１のプロセッサＡに対して、プラットフォーム２−２のプロセッサＢおよびプラットフォーム２−３のプロセッサＣのそれぞれが通信しようとする場合には、PCIeブリッジコントローラ３は、プロセッサＢ，Ｃの通信をシリアルに処理する。
【００７７】
ただし、プロセッサＡ−プロセッサＢ，プロセッサＣ−プロセッサＤ，プロセッサＥ−プロセッサＦのように、それぞれが異なるプロセッサ同士で通信し、特定のプロセッサに通信が集中しない場合には、PCIeブリッジコントローラ３は、各プロセッサ２１間通信を並行して処理する。
【００７８】
図８は実施形態の一例としての情報処理システム１におけるプロセッサ２１−８（プロセッサＨ）からの他のプロセッサ２１の見え方を例示する図であり、図９はプロセッサ２１−５（プロセッサＥ）からの他のプロセッサ２１の見え方を例示する図である。
【００７９】
各プロセッサ２１間で通信が行なわれている状態においても、各プロセッサ２１上のＯＳ（例えばWindowsのデバイスマネージャ）からは、PCIeブリッジコントローラ３しか見えず、接続先の他のプロセッサ２１を直接管理する必要がない。すなわち、PCIeブリッジコントローラ３のデバイスドライバでPCIeブリッジコントローラ３の先に接続されたプロセッサ２１を管理すれば良い。
【００８０】
そのため、送信元、受信先それぞれのプロセッサ２１を動作させるためのデバイスドライバを準備する必要がなく、PCIeブリッジコントローラ３のドライバでPCIeブリッジコントローラ３に対して通信処理を行なうだけでプロセッサ２１間の通信を行なうことができる。
【００８１】
（Ｃ）動作
上述の如く構成された実施形態の一例としての情報処理システム１におけるPCIeブリッジコントローラ３を介したプロセッサ２１間のデータ転送方法を、図１０を用いて説明する。
【００８２】
この図１０に示す例においては、スロット＃０に接続されたプラットフォーム２−１からスロット＃４に接続されたプラットフォーム２−５にデータを転送する場合について説明する。
【００８３】
データ送信元のプラットフォーム２−１において、ソフトウェア等によって送信されるデータ（以下、送信データという場合がある）が、プラットフォーム２−１に備えられるストレージ２３から通信バッファ２２１にロードされる（符号Ｐ１参照）。
【００８４】
ソフトウェアから、通信バッファ２２１における送信データが格納された領域の位置情報（例えば、Offset/Length）と、送信先の情報（例えば、Slot/Offset）が指定され、ブリッジドライバ２０に受け渡される（符号Ｐ２参照）。
【００８５】
送信元ＥＰにおいて、ブリッジドライバ２０は、ＢＡＲ空間のスロット＃４のアドレスに転送データを渡す（符号Ｐ３）。これにより、PCIeブリッジコントローラ３において、ＥＰｔｏＥＰにより送信元ポートから送信先のプラットフォーム２に対応するスロット（送信先スロット）に転送データが送信される（符号Ｐ４参照）。送信先スロットにおいては、レジスタ３５のＢＡＲ空間のスロット＃４に対応する記憶領域に転送データが格納される。
【００８６】
送信先スロットにおいて、例えばブリッジドライバ２０が、レジスタ３５のＢＡＲ空間のスロット＃４に対応する記憶領域から転送データを通信バッファ２２１に転送し、転送データは、この通信バッファ２２１においてoffsetによって特定される所定の領域に格納される（符号Ｐ５参照）。
【００８７】
送信先プラットフォーム２において、例えば、プログラムが、通信バッファ２２１に格納された転送データを読み出して、メモリ（ローカルメモリ）２２やストレージ２３に移動させる（符号Ｐ６，Ｐ７参照）。
【００８８】
以上のようにして、転送元のプラットフォーム２−１から転送先のプラットフォーム２−５にデータ（転送データ）が転送される。
【００８９】
次に、図１１を用いて、情報処理システム１におけるPCIeブリッジコントローラ３を介したプラットフォーム２間のデータ転送方法を説明する。図１１は、本実施形態にかかる情報処理システム１におけるPCIeブリッジコントローラ３を介したプロセッサ間のデータ転送方法の一例を説明するための図である。
【００９０】
この図１１に示す例においては、スロット＃０に接続されたプラットフォーム２−１からスロット＃４に接続されたプラットフォーム２−５にデータを転送する場合について説明する。
【００９１】
送信元のプラットフォーム２−１は、ソフトウェア等によって送信されるデータ（以下、送信データという）を、プラットフォーム２−１に備えられるストレージ２３等からプラットフォーム２−１のメモリ領域３６に格納する（ステップＳ７０１）。メモリ領域３６は、転送されるデータが一時的に格納される通信バッファの一部であっても良い。メモリ領域３６は、プラットフォーム２のそれぞれに、メモリ２２等と同じ大きさで設けられた領域である。メモリ領域３６は、スロット３０５の数に応じて分割されている。メモリ領域３６の分割された記憶領域は、いずれかのスロット３０５に対応付けられている。例えば、メモリ領域３６内のＳｌｏｔ♯０で示す記憶領域は、Ｓｌｏｔ♯０に接続されたプラットフォーム２−１に対応付けられ、メモリ領域３６内にＳｌｏｔ♯４で示す記憶領域は、Ｓｌｏｔ♯４に接続されたプラットフォーム２−５に対応付けられている。プラットフォーム２−１は、メモリ領域３６のうち、送信先のスロット３０５に割り当てられた領域（ここでは、Ｓｌｏｔ♯４）に送信データを格納する。
【００９２】
ルートコンプレックスとしての機能を有する送信元のプラットフォーム２−１は、プラットフォーム２のメモリ領域３６の記憶領域に基づいて、送信先のスロット３０５を示すスロット情報と、送信先のメモリ領域３６における分割領域内におけるアドレスを示すアドレス情報とを取得または生成する（ステップＳ７０２）。
【００９３】
送信元のプラットフォーム２−１は、スロット情報と、アドレス情報と、送信データとを含む転送データを複数のエンドポイントの機能を有するPCIeブリッジコントローラ３に渡す（ステップＳ７０３）。これにより、PCIeブリッジコントローラ３は、スロット情報に基づいてＥＰｔｏＥＰにより送信元のスロット３０５と送信先のスロット３０５とを接続することにより、転送データを送信先のプラットフォーム２−４に転送する（ステップＳ７０４）。送信先のプラットフォーム２は、スロット情報およびアドレス情報に基づいて、送信先のプラットフォーム２のメモリ領域３６のＳｌｏｔ♯４に対応する記憶領域内のアドレス情報が示す領域に送信データ（または転送データ）を格納する（ステップＳ７０５）。
【００９４】
送信先のプラットフォーム２−５において、プログラムが、メモリ領域３６に格納された送信データを読み出して、メモリ（ローカルメモリ）２２の他の領域やストレージ２３に移動させる（ステップＳ７０６、ステップＳ７０７）。
【００９５】
以上のようにして、送信元のプラットフォーム２−１から送信先のプラットフォーム２−５にデータ（転送データ）が転送される。
【００９６】
（Ｄ）効果
このように、実施形態の一例としての情報処理システム１においては、PCIeブリッジコントローラ３において、当該PCIeブリッジコントローラ３内のＥＰ間でデータ転送を媒介する。これにより、PCIeブリッジコントローラ３に接続された複数のＲＣ（プロセッサ２１）間でのデータ転送を実現することができる。
【００９７】
すなわち、各プロセッサ２１をPCIeのＲＣとして独立動作させ、PCIeブリッジコントローラ３において、それぞれのプロセッサ２１に接続するデバイスをＥＰとして接続し、Ｅ間でデータ転送を行なう。これにより、デバイスドライバに起因する問題を回避し、高速データ転送を１つのシステムとして動作させることができる。
【００９８】
また、PCIeの規格に適合したデータ通信機能を有してさえいれば異なるプロセッサ２１間でのデータ転送が可能となるため、デバイスドライバの有無や、サポートＯＳ等を気にすることなく使用するプロセッサ２１の選択肢を広げることが可能となる。
【００９９】
各プロセッサ２１はＥＰとなるPCIeブリッジコントローラ３を介して接続されるため、ＥＰの先のＲＣのデバイスドライバを追加する必要がない。従って、デバイスドライバの開発が不要であるとともに、デバイスドライバを追加することに起因する不具合が発生することもない。
【０１００】
図１に示した如く、インテル等のプロセッサを使った従来のPCIe接続構成システムでは、PCIeにデバイスを追加するような状態では、ＲＣに対してＥＰを接続する形態となる。この場合、それぞれのＥＰに対応したデバイスドライバを組み込む必要があり、適用したデバイスドライバが要因となり装置全体の動作が不安定になる場合がある。また、そもそもデバイスドライバが用意されておらず、デバイスを利用できないことや、演算プロセッサを制御するためにＣＰＵ負荷率が上がり処理が遅延するという問題もある。
【０１０１】
これは、図２に示すように、PCIeのスイッチコントローラを用いてＥＰの数を増やしても同様である。
【０１０２】
また、図３に示すように、ＣＰＵ負荷を分散しPCIeのデバイスを制御する方法として、ＣＰＵ同士を直接接続インターコネクトを用いることも考えられる。しかしながら、この図３に例示する接続形態で使用するためには、各ＣＰＵが同一のインターコネクトに対応している必要がある。従って、接続するＣＰＵの種類が限定されることになり汎用性が低く、プロセッサの選択肢が狭くなる。
【０１０３】
一方、本情報処理システム１においては、ＡＲＭプロセッサやＦＰＧＡ等の一般的なプロセッサはＲＣとして動作することが求められるため、本情報処理システム１のプロセッサ２１として容易に追加することができる。
【０１０４】
PCIeブリッジコントローラ３においては、PCIeでの接続（通信）がされるので、イーサネットでは実現できない高速転送を実現することができる。また、4K，8K等の高精細映像のプロセッサ間送受信、大規模なビッグデータの並列計算等も行なうことができる。
【０１０５】
また、画像処理やデータ検索等の各機能に特化した専用プロセッサを接続することもできるので、安価に機能追加、性能向上を行なうことができる。
【０１０６】
さらに、本情報処理システム１においては、システムの仮想化等を行なう必要もなく、システムの仮想化を行なうことで生じるシステム性能の低下が生じることもない。従って、本情報処理システム１を、ＡＩ推論や画像処理といった高負荷な演算を用途とするシステムに適用することもできる。
【０１０７】
（Ｅ）その他
そして、開示の技術は上述した実施形態に限定されるものではなく、本実施形態の趣旨を逸脱しない範囲で種々変形して実施することができる。本実施形態の各構成および各処理は、必要に応じて取捨選択することができ、あるいは適宜組み合わせてもよい。
【０１０８】
例えば、図６に示す構成においては、PCIeブリッジコントローラ３は８つのスロット３４−１〜３４−８を有しているが、これに限定されるものではなく種々変形して実施することができる。すなわち、PCIeブリッジコントローラ３は７つ以下もしくは９つ以上のスロット３４をそなえてもよい。
【０１０９】
また、上述した実施形態においては、PCIeを用いた通信システムについて示したが、これに限定されるものではなく、PCIe以外の通信規格での通信に適用してもよい。
【０１１０】
上述の実施形態では、各部のＩ／ＯのインタフェースとしてPCIeを例に挙げて説明したが、インタフェースはPCIeに限定されない。例えば、各部のインタフェースは、データ転送バスによって、デバイス（周辺制御コントローラ）とプロセッサとの間でデータ転送を行える技術であればよい。データ転送バスは、１個の筐体等に設けられたローカルな環境（例えば、１つのシステムまたは１つの装置）で高速にデータを転送できる汎用のバスであってよい。インタフェースは、パラレルインターフェース及びシリアルインターフェースのいずれであってもよい。
【０１１１】
Ｉ／Ｏインタフェースは、シリアル転送の場合、ポイント・ツー・ポイント接続ができ、データをパケットベースで転送可能な構成でよい。尚、Ｉ／Ｏインタフェースは、シリアル転送の場合、複数のレーンを有してよい。Ｉ／Ｏインタフェースのレイヤ構造は、パケットの生成及び復号を行うトランザクション層と、エラー検出等を行うデータリンク層と、シリアルとパラレルとを変換する物理層とを有してよい。また、Ｉ／Ｏインタフェースは、階層の最上位であり１または複数のポートを有するルートコンプレックス、Ｉ／Ｏデバイスであるエンドポイント、ポートを増やすためのスイッチ、及び、プロトコルを変換するブリッジ等を含んでよい。インタフェースは、送信するデータとクロック信号とをマルチプレクサによって多重化して送信してもよい。この場合、受信側は、デマルチプレクサでデータとクロック信号を分離してよい。
【０１１２】
また、上述した開示により本実施形態を当業者によって実施・製造することが可能である。
【０１１３】
（Ｆ）付記
以上の実施形態に関し、さらに以下の付記を開示する。
【０１１４】
（付記１）
複数のプロセッサのそれぞれと通信可能に接続され、PCIe（Peripheral  Component  Interconnect  Express）バスを用いて、前記複数のプロセッサ間の通信を中継する中継装置であって、
複数のエンドポイントを備え、
前記複数のプロセッサのうちルートコンプレックスとして動作する第１のプロセッサから、前記複数のエンドポイントのうち第１のエンドポイントを介して受信したデータを、前記複数のエンドポイントのうち第２のエンドポイントを介して、前記複数のプロセッサのうちルートコンプレックスとして動作する第２のプロセッサに送信する
ことを特徴とする、中継装置。
【０１１５】
（付記２）
前記複数のエンドポイントのそれぞれに対応する複数の中継記憶装置を備え、
送信元である前記第１のエンドポイントに対応して備えられた前記中継記憶装置において、前記複数のエンドポイント毎に形成された記憶領域のうち、送信先である第２のエンドポイントに対して設けられた第１の記憶領域にデータが格納されると、当該データを、送信先である前記第２のエンドポイントに対応して備えられた前記中継記憶装置の送信先である第２のエンドポイントに対して設けられた第１の記憶領域にデータを格納することで、複数のエンドポイント間のデータ転送を行なう
ことを特徴とする、付記１記載の中継装置。
【０１１６】
（付記３）
複数のプロセッサと、
前記複数のプロセッサのそれぞれと通信可能に接続され、PCIe（Peripheral  Component  Interconnect  Express）バスを用いて、前記複数のプロセッサ間の通信を中継する中継装置とを備え、
前記中継装置が、
複数のエンドポイントを備え、
前記複数のプロセッサのうちルートコンプレックスとして動作する第１のプロセッサから、前記複数のエンドポイントのうち第１のエンドポイントを介して受信したデータを、前記複数のエンドポイントのうち第２のエンドポイントを介して、前記複数のプロセッサのうちルートコンプレックスとして動作する第２のプロセッサに送信する
ことを特徴とする、情報処理システム。
【０１１７】
（付記４）
前記中継装置が、
前記複数のエンドポイントのそれぞれに対応する複数の中継記憶装置を備え、
送信元である前記第１のエンドポイントに対応して備えられた前記中継記憶装置において、前記複数のエンドポイント毎に形成された記憶領域のうち、送信先である第２のエンドポイントに対して設けられた第１の記憶領域にデータが格納されると、当該データを、送信先である前記第２のエンドポイントに対応して備えられた前記中継記憶装置の送信先である第２のエンドポイントに対して設けられた第１の記憶領域にデータを格納することで、複数のエンドポイント間のデータ転送を行なう
ことを特徴とする、付記３記載の情報処理システム。
【符号の説明】
【０１１８】
１    情報処理システム
２−１〜２−８，２    プラットフォーム
３    PCIeブリッジコントローラ
２１−１〜２１−８，２１    プロセッサ
２２    メモリ
２２１    通信バッファ
２３    ストレージ
３１    ＣＰＵ
３２    メモリ
３３    インターコネクト
３４−１〜３４−８，３４    スロット
３５    レジスタ    
【図１】
2020053089.tif 000003
【図２】
2020053089.tif 000004
【図３】
2020053089.tif 000005
【図４】
2020053089.tif 000006
【図５】
2020053089.tif 000007
【図６】
2020053089.tif 000008
【図７】
2020053089.tif 000009
【図８】
2020053089.tif 000010
【図９】
2020053089.tif 000011
【図１０】
2020053089.tif 000012
【図１１】
2020053089.tif 000013