(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0013】
以下、本実施の形態について図面を参照して説明する。
[第1の実施形態]
図1は、第1の実施形態の情報処理装置の一例を説明するための図である。
図1に示す情報処理装置1は、第1通信部2aと、第2通信部2bと、記憶部3と、処理部4と、を備える。
【0014】
第1通信部2aと第2通信部2bは、例えば、拡張バスと接続するためのPCIeインタフェース等の情報処理装置1が備える接続インタフェース(通信インタフェース,バスインタフェースともいう)として実現される。記憶部3は、例えば、RAM(Random Access Memory)等の情報処理装置1が備える記憶装置として実現される。なお、記憶部3は、RAM等の揮発性記憶装置でもよいし、HDD(Hard Disk Drive)やフラッシュメモリ等の不揮発性記憶装置でもよい。処理部4は、例えば、情報処理装置1が備えるCPU(Central Processing Unit)等のプロセッサとして実現される。なお、処理部4は、DSP(Digital Signal Processor)、ASIC(Application Specific Integrated Circuit)、FPGA(Field Programmable Gate Array)等を含み得る。処理部4は、RAM等のメモリ(例えば、記憶部3)に記憶されたプログラムを実行する。ここでいう「プロセッサ」には、複数のプロセッサの集合(マルチプロセッサ)も含まれ得る。
【0015】
第1通信部2aと第2通信部2bは、拡張バスを介して他装置5と通信可能に接続する。情報処理装置1と他装置5との間でのデータを送受信するための通信は、第1通信部2aまたは第2通信部2bのいずれかを介して行われる。
【0016】
記憶部3は、第1通信プログラム3aと、第2通信プログラム3bと、第1処理プログラム3cと、第2処理プログラム3dと、対応関係情報3eとを記憶する。第1通信プログラム3aは、第1通信部2aにおける拡張バスを介した他装置5との通信を制御する。第1通信プログラム3aは、具体的には、所定の通信プロトコル(例えば、PCIe)に従ってデータを他装置5との間で送受信する。第2通信プログラム3bは、第2通信部2bにおける拡張バスを介した他装置5との通信を制御する。第2通信プログラム3bは、具体的には、所定の通信プロトコルに従ってデータを他装置5との間で送受信する。
【0017】
第1処理プログラム3cおよび第2処理プログラム3dは、データに所定処理を実行し、第1通信プログラム3aまたは第2通信プログラム3bのうちの対応付けられたいずれかの通信プログラムに、所定処理を実行したデータを他装置5に送信させる。所定処理は、例えば、データをカプセル化(例えば、暗号化)して、他装置5との間でトンネリング(例えば、仮想的な直接(LAN)回線を確立)した通信を行うための処理である。
【0018】
即ち、情報処理装置1は、仮想的な直接回線を確立しない場合には、各通信プログラム(例えば、第1通信プログラム3a,第2通信プログラム3b)だけを用いて他装置5との通信を行うこととなる。また、情報処理装置1は、仮想的な直接回線を確立する場合には、各処理プログラム(例えば、第1処理プログラム3c,第2処理プログラム3d)と、各処理プログラムが対応付けられた各通信プログラムとを用いて他装置5との通信を行うこととなる。
【0019】
対応関係情報3eは、第1識別子と、第2識別子とを含む。第1識別子は、第1通信プログラム3aと第2通信プログラム3bのうちの第1処理プログラム3cが対応付けられる第1対応通信プログラムを示す識別子である。第2識別子は、第1通信プログラム3aと第2通信プログラム3bのうちの第2処理プログラム3dが対応付けられる第2対応通信プログラムを示す識別子である。
【0020】
図1の例では、第1識別子として第1通信プログラム3aを示す識別子が設定されており、対応関係情報3eは、第1処理プログラム3cが第1通信プログラム3aと対応付けられる(即ち、組み合わせられている)ことを示す。また、第2識別子として第2通信プログラム3bを示す識別子が設定されており、対応関係情報3eは、第2処理プログラム3dが第2通信プログラム3bと対応付けられることを示す。
【0021】
即ち、
図1に示す情報処理装置1は、第1処理プログラム3cが所定処理を実行したデータを、第1通信プログラム3aが他装置5に送信するように構成されている。また、
図1に示す情報処理装置1は、第2処理プログラム3dが所定処理を実行したデータを、第2通信プログラム3bが他装置5に送信するように構成されている。
【0022】
処理部4は、第1通信プログラム3aと第2通信プログラム3bのうちから第1処理プログラム3cと対応付ける第1対応通信プログラムを決定する。処理部4は、決定した第1対応通信プログラムを示す識別子を第1識別子として対応関係情報3eに設定する。
【0023】
処理部4は、第1通信プログラム3aと第2通信プログラム3bのうちから第2処理プログラム3dと対応付ける第2対応通信プログラムを決定する。処理部4は、決定した第2対応通信プログラムを示す識別子を第2識別子として対応関係情報3eに設定する。
【0024】
このように対応関係情報3eを設定することで、情報処理装置1は、各処理プログラム(例えば、第1処理プログラム3c,第2処理プログラム3d)が対応付けられる各通信プログラム(例えば、第1通信プログラム3aと第2通信プログラム3b)を固定化できる。これにより、情報処理装置1は、各処理プログラムが対応付けられる各通信プログラムが再起動等により予期せず変化することを防止できる。
【0025】
例えば、
図1に示すように、所定処理済みのデータの第1通信部2aからの出力を、アプリケーションが、第1処理プログラム3cに指示を行うことで実現していることがある(P1)。このような場合において再起動等により対応付けが予期せず変化した場合(P2)、アプリケーションが再起動前と同様の指示を行うと、処理済みのデータは、想定とは異なる通信部(ここでは第2通信部2b)から出力されることとなる(P3)。
【0026】
このようにアプリケーションの想定通りの通信部から所定処理済みのデータを出力できなくなると、情報処理装置1は、リソース管理(例えば、各通信部を介した通信の負荷分散)を適切にできなくなる。例えば、情報処理装置1は、再起動後の状態において第2通信部2bに負荷が偏っているとき、負荷を分散させる目的で処理済みのデータの送受信を第1通信部2aで行うべく第1処理プログラム3cに指示を行ってしまい、さらなる負荷の偏りを招く虞がある。その結果、通信パフォーマンスの低下を招き、通信の不具合が発生し得る。
【0027】
この点、情報処理装置1は、対応関係情報3eを記憶しておくことで、各処理プログラムが対応付けられる各通信プログラムを固定化しているため、再起動等により対応付けが変化する虞がない。これにより、情報処理装置1は、通信パフォーマンスの低下を抑止でき、通信の不具合の発生を防止できる。
【0028】
[第2の実施形態]
次により具体的な実施形態としてエッジコンピューティングシステムについて説明する。
図2は、第2の実施形態のエッジコンピューティングシステムの全体概要例を示す図である。
【0029】
エッジコンピューティングシステム10は、データを収集するエッジ(またはフロント)に近いエリアでデータの処理を行うことで、通信遅延等を抑止してリアルタイム性を確保した処理を実現するシステムである。エッジコンピューティングシステム10としては、例えば、小売店等におけるAI(Artificial Intelligence)推論を用いた人物推定を行うシステム等がある。
【0030】
エッジコンピューティングシステム10は、通信可能に接続するクラウドサーバ100と、情報処理システム(例えば、エッジコンピュータ)200と、エッジデバイス300−1〜300−nとを備える。なお、以下では、エッジデバイス300−1〜300−nのうちの任意のエッジデバイスを指すときはエッジデバイス300を用いることとする。
【0031】
エッジデバイス300は、データの収集・出力を行うデバイスであり、エッジ(即ち、ユーザに近い位置)に配置される。エッジデバイス300としては、例えば、カメラ、マイク、スピーカ等がある。
【0032】
情報処理システム200は、エッジデバイス300が収集したデータを集約し、集約したデータを処理するシステムである。情報処理システム200は、エッジ(即ち、エッジデバイス300)に近いエリアに設けられる。
【0033】
クラウドサーバ100は、情報処理システム200がデータの処理に用いる学習データの作成、提供等を行う装置である。クラウドサーバ100は、例えば、データセンタ等に設けられる。
【0034】
次に情報処理システム200のハードウェア構成について説明する。
図3は、第2の実施形態の情報処理システムのハードウェア構成の一例を示す図である。
【0035】
図3に示す情報処理システム200は、PCIeブリッジコントローラ(中継装置ともいう)230と、プラットフォーム210,220−1〜220−6とを備える。プラットフォーム210は、第1の実施形態の情報処理装置1の一実施態様である。プラットフォーム210は、情報処理システム200の制御部およびGUI(Graphical User Interface)として機能するホストPCであり、プラットフォーム220−1〜220−6は、AI推論処理や画像処理等を実行する演算部である。なお、プラットフォーム210,220−1〜220−6は、それぞれが異なるプラットフォームであってもよい。なお、以下では、プラットフォーム210,220−1〜220−6のうち任意のプラットフォームを指すときには符号を付さないで用いることとする。
【0036】
プラットフォームは、PCIeブリッジコントローラ230に通信可能に接続されている。具体的には、プラットフォーム210は、2つのRC(Root Complex)を用いて(例えば、2つのPCIeインタフェース(接続部ともいう)をRCとして機能させて)PCIeブリッジコントローラ230に搭載されている2つのEP(End Point)と接続されている。EPは、拡張バスの末端機器として認識されるスレイブ側の接続部であり、RCは、EP側を末端機器として認識して拡張バスを介した通信を制御するマスター側の接続部である。
【0037】
プラットフォーム210は、ホストPCとして機能するプラットフォームであるため、データの送受信量が大きくなることが想定されることから2つのRCを用いてPCIeブリッジコントローラ230と接続されている。このように2つのRCと2つのEPとが接続されているため、プラットフォーム210は、データの通信経路(即ち、いずれのRC−EP間で通信するか決定することで)を適切に振り分けることで広い通信帯域の通信を行うことができる。
【0038】
プラットフォーム220−1〜220−6は、1つのRCを用いてPCIeブリッジコントローラ230に搭載されている1つのEPと接続されている。
【0039】
このように情報処理システム200においては、プロットフォームがホスト側として動作可能なRCとなり、PCIeブリッジコントローラ230がEPとなり、データ転送が行われる。
【0040】
プラットフォーム210は、プロセッサ211を備える。プラットフォーム220−1〜220−6は、プロセッサ221−1〜221−6をそれぞれ備える。なお、以下では、プロセッサ211,221−1〜221−6のうち任意のプロセッサを指すときには符号を付さないで用いることとする。
【0041】
プロセッサは、それぞれ違うメーカ(またはベンダ)から提供されてもよい。例えば、プロセッサ221は、A社が提供するものであり、プロセッサ221−1は、B社が提供するものであり、プロセッサ221−2は、C社が提供するものであり、プロセッサ221−3は、D社が提供するものであるものとすることができる。また、プロセッサ221−4は、E社が提供するものであり、プロセッサ221−5は、F社が提供するものであり、プロセッサ221−6は、G社が提供するものであるものとすることができる。
【0042】
プロセッサは、搭載されたプラットフォームを統括的に制御する。プロセッサは、マルチプロセッサであってもよい。プロセッサは、例えば、CPU、MPU(Micro Processing Unit)、DSP、ASIC、またはPLD(Programmable Logic Device)である。また、プロセッサは、CPU、GPU(Graphics Processing Unit)、MPU、DSP、ASIC、PLDのうちの2以上の要素の組み合わせであってもよい。
【0043】
PCIeブリッジコントローラ230は、拡張バス(例えば、各プラットフォームの拡張バスとして機能するバス)を有し、拡張バスを介した通信を中継する。
【0044】
次に、プラットフォームのハードウェア構成について説明する。
図4は、第2の実施形態のプラットフォームのハードウェア構成の一例を示す図である。
【0045】
プラットフォーム210は、プロセッサ211と、ディスプレイ212と、USB(Universal Serial Bus)インタフェース213と、イーサネット(Ethernet:登録商標)インタフェース214と、DIMM(Dual Inline Memory Module)215と、を備える。また、プラットフォーム210は、SSD(Solid State Drive)216と、HDD217と、TPM(Trusted Platform Module)218と、PCIeインタフェース219a,219bと、を備える。プラットフォーム210が有する各構成要素は、バスを介して接続している。
【0046】
プロセッサ211は、プラットフォーム210全体を統括的に制御する。ディスプレイ212は、各種の情報を表示する表示部として機能する。USBインタフェース213は、USBデバイスが接続可能であり、USBデバイスとプロセッサ211との通信を媒介可能である。イーサネットインタフェース214は、イーサネットケーブルが接続可能であり、イーサネットケーブルを介した外部機器とプロセッサ211との通信を媒介可能である。
【0047】
DIMM215は、各種の情報を一時記憶可能なRAM等の揮発性の記憶媒体である。SSD216およびHDD217は、各種の情報を電源断後も記憶可能な不揮発性の記憶媒体である。SSD216およびHDD217は、プロセッサ211が実行する各種のプログラム等の各種の情報を記憶する。TPM218は、システムのセキュリティ機能を実現するモジュールである。PCIeインタフェース219a,219bは、拡張バスと接続するための通信インタフェース(即ち、接続インタフェース)である。情報処理システム200においては、PCIeインタフェース219a,219bは、PCIeブリッジコントローラ230と接続され、PCIeブリッジコントローラ230を介したプラットフォーム220−1〜220−6との通信を媒介する。なお、以下では、PCIeインタフェース219a,219bのうち任意のPCIeインタフェースを指すときにはPCIeインタフェース219を用いることとする。
【0048】
以上のハードウェア構成によってプラットフォーム210の処理機能が実現される。なお、プラットフォーム220−1〜220−6についても同様の構成により各プラットフォームで実行される処理機能を実現することができる。なお、以下では、プラットフォーム220−1〜220−6についても同様の構成を備えていることとし、プラットフォーム220−1〜220−6のプロセッサ以外の上記構成要素については上記と同様の符号を用いることとする。
【0049】
次にPCIeブリッジコントローラ230のハードウェア構成について説明する。
図5は、第2の実施形態のPCIeブリッジコントローラのハードウェア構成の一例を示す図である。
【0050】
PCIeブリッジコントローラ230は、8チャネルのEPとして機能する接続インタフェースを1チップ内に有する中継装置である。PCIeブリッジコントローラ230は、CPU231と、メモリ232と、インターコネクト233および複数のスロット(即ち、接続インタフェース)234−1〜234−8を備える。なお、以下では、スロット234−1〜234−8のうち任意のスロットを指すときにスロット234を用いることとする。
【0051】
スロット234−1〜234−8にはそれぞれPCIeの規格を満たすよう構成されたデバイスが接続される。情報処理システム200においては、スロット234−1,234−2にプラットフォーム210が接続され、スロット234−3〜234−8のそれぞれにプラットフォーム220−1〜220−6が接続される。このように、プラットフォーム210に対して2つのスロット234をアサインすることで、プラットフォーム210に広い通信帯域を用いた通信を行わせることを可能としている。
【0052】
なお、以下では、Slot#0にプラットフォーム210のPCIeインタフェース219aが接続され、Slot#1にプラットフォーム210のPCIeインタフェース219bが接続されているものとする。また、Slot#2にプラットフォーム220−1が接続され、Slot#3にプラットフォーム220−2が接続され、Slot#4にプラットフォーム220−3が接続されているものとする。また、Slot#5にプラットフォーム220−4が接続され、Slot#6にプラットフォーム220−5が接続され、Slot#7にプラットフォーム220−6が接続されていることとする。
【0053】
各スロット234は、内部バス(Internal Busともいう)を介してインターコネクト233にそれぞれ接続されている。また、インターコネクト233にはCPU231およびメモリ232が接続されている。これにより、各スロット234とCPU231およびメモリ232はインターコネクト233を介して相互に通信可能に接続されている。
【0054】
メモリ232は、例えば、ROM(Read Only Memory)およびRAMを含む記憶メモリ(物理メモリ)である。メモリ232のROMには、データ通信制御に係るソフトウェアプログラムやこのプログラム用のデータ類が書き込まれている。メモリ232上のソフトウェアプログラムは、CPU231に適宜読み込まれて実行される。また、メモリ232のRAMは、一次記憶メモリあるいはワーキングメモリとして利用される。
【0055】
CPU231は、PCIeブリッジコントローラ230全体を制御する。CPU231は、マルチプロセッサであってもよい。なお、CPU231に代えてMPU,DSP,ASIC,PLD,FPGAのいずれか一つが用いられてもよい。また、CPU231は、CPU,MPU,DSP,ASIC,PLD,FPGAのうちの2種類以上の要素の組み合わせであってもよい。
【0056】
そして、CPU231がメモリ232に格納されたソフトウェアプログラムを実行することで、PCIeブリッジコントローラ230におけるプラットフォーム間(またはプロセッサ間)のデータ転送(即ち、データの送受信)を実現する。
【0057】
PCIeブリッジコントローラ230は、プラットフォーム間のデータ転送を高速化するためにPCIeを用い、各プラットフォームに備えられるプロセッサをそれぞれRCとして動作させ、デバイスとして動作するEP間でデータ転送を実現している。
【0058】
具体的には、情報処理システム200においては、各プラットフォームのプロセッサを、データ転送インタフェースとしてPCIeのRCとして動作させている。また、各プラットフォーム(またはプロセッサ)に対して、PCIeブリッジコントローラ230(例えば、各プラットフォームが接続されているスロット234)をEPとして動作させている。
【0059】
なお、PCIeブリッジコントローラ230をプロセッサに対してEPとして接続する手法としては、既知の種々の手法を用いて実現することができる。例えば、PCIeブリッジコントローラ230は、プラットフォームとの接続時に、EPとして機能することを示す信号を当該プロセッサに通知することで、EPとしてプロセッサと接続することができる。
【0060】
PCIeブリッジコントローラ230においてはEPtoEP(End Point to End Point)でデータをトンネリングさせて、複数のRCにデータを転送する。プロセッサ間の通信は、PCIeのトランザクションが発生したときに論理的に接続され、1つのプロセッサにデータ転送が集中しないときは、それぞれのプロセッサ間で並行してデータ転送できる。
【0061】
次に、情報処理システム200のソフトウェア構成について
図6を用いて説明する。
図6は、第2の実施形態の情報処理システムにおける各プラットフォームのソフトウェア構成の一例を示す図である。なお、
図6中においては、便宜上、プラットフォーム210,220−1,220−2のソフトウェア構成のみを図示する。なお、プラットフォーム220−1〜220−6は、同様の構成である。
【0062】
まずプラットフォーム210について説明する。プラットフォーム210は、アプリケーション210aと、ドライバ210bと、OS(Operating System)210eと、BIOS(Basic Input Output System)210fと、を有する。
【0063】
アプリケーション210aは、プラットフォーム210で行うOS210eが提供する機能を利用して各種処理を実行する応用ソフトウェアまたは応用プログラムである。アプリケーション210aは、OS210e上で動作する。プラットフォーム210は、アプリケーション210aの制御下で各種処理を行う。
【0064】
ドライバ210bは、プラットフォーム210に搭載されているハードウェア等をOS210eによって制御可能にするために用意されたソフトウェアである。
【0065】
プラットフォーム210が有するドライバ210bとしては、ブリッジドライバ210c1,210c2と、仮想LANドライバ210d1,210d2等がある。ブリッジドライバ210c1,210c2は、第1の実施形態の第1通信プログラム3a,第2通信プログラム3bの一実施態様である。仮想LANドライバ210d1,210d2は、第1の実施形態の第1処理プログラム3c,第2処理プログラム3dの一実施態様である。なお、以下では、ブリッジドライバ210c1,210c2のうち任意のブリッジドライバを指すときにブリッジドライバ210cを用いることとする。また、以下では、仮想LANドライバ210d1,210d2のうち任意の仮想LANドライバを指すときに仮想LANドライバ210dを用いることとする。
【0066】
ブリッジドライバ210cは、PCIeブリッジコントローラ230を制御するためのドライバ(言い換えればPCIeブリッジコントローラ230に電気的にアクセスして他のプラットフォームと通信を行うためのドライバ)である。
【0067】
プラットフォーム210は、2つのRCを用いてPCIeブリッジコントローラ230に搭載されている2つのEPと接続しているため、それぞれの接続として機能するRCに対応する2つのブリッジドライバ210cを有している。
【0068】
なお、以下では、ブリッジドライバ210c1がPCIeインタフェース219aに対応するドライバであり、ブリッジドライバ210c2がPCIeインタフェース219bに対応するドライバであることとする。
【0069】
仮想LANドライバ210dは、ブリッジドライバ210cと組み合わせることで他のプラットフォームとの間でトンネリングさせた仮想的なLAN回線を確立した通信を行うためのドライバである。
【0070】
プラットフォーム210は、2つのRCを用いてPCIeブリッジコントローラ230に搭載されている2つのEPと接続するため、それぞれの接続として機能するRCを用いた通信を仮想的なLAN通信とするために2つの仮想LANドライバ210dを有している。
【0071】
例えば、プラットフォーム210は、セキュリティを強化する場合には仮想LANドライバ210dおよびブリッジドライバ210cを用いて他のプラットフォームとの間で仮想的なLAN通信を行う。プラットフォーム210は、セキュリティを強化する必要がない場合にはブリッジドライバ210cだけを用いて他のプラットフォームとの間で通信を行う。
【0072】
OS210eは、プラットフォーム210を動かすための基本ソフトウェアまたは基本プログラムである。BIOS210fは、プラットフォーム210におけるOS210eの起動を制御するソフトウェアである。プラットフォーム210では、例えば、BIOS210fによってBootloaderが起動(または呼び出)され、BIOS210fによって起動されたBootloaderによりOS210eを検出し、OS210eが起動する。
【0073】
次にプラットフォーム220−1〜220−6について説明する。プラットフォーム220−1〜220−6は、同様の構成であるので、プラットフォーム220−1を例として用いて説明する。プラットフォーム220−1は、アプリケーション220−1aと、ドライバ220−1bと、OS220−1eと、Bootloader220−1fと、を有する。
【0074】
アプリケーション220−1aは、プラットフォーム220−1で行うOS220−1eが提供する機能を利用して各種処理を実行する応用ソフトウェアまたは応用プログラムである。アプリケーション220−1aは、OS220−1e上で動作する。プラットフォーム220−1は、アプリケーション220−1aの制御下で各種処理を行う。
【0075】
ドライバ220−1bは、プラットフォーム220−1に搭載されているハードウェア等をOS220−1eによって制御可能にするために用意されたソフトウェアである。
【0076】
プラットフォーム220−1が有するドライバ220−1bとしては、ブリッジドライバ220−1cと、仮想LANドライバ220−1d等がある。
【0077】
ブリッジドライバ220−1cは、PCIeブリッジコントローラ230を制御するためのドライバである。プラットフォーム220−1は、1つのRCを用いてPCIeブリッジコントローラ230に搭載されている1つのEPと接続するため、1つのブリッジドライバ220−1cを有している。
【0078】
仮想LANドライバ220−1dは、ブリッジドライバ220−1cと組み合わせることで他のプラットフォームとの間で仮想的なLAN回線を確立した通信を行うためのドライバである。
【0079】
プラットフォーム220−1は、1つのRCを用いてPCIeブリッジコントローラ230に搭載されている1つのEPと接続するため、1つの仮想LANドライバ220−1dを有している。
【0080】
例えば、プラットフォーム220−1は、セキュリティを強化する場合には仮想LANドライバ220−1dおよびブリッジドライバ220−1cを用いて他のプラットフォームとの間で仮想的なLAN通信を行う。プラットフォーム220−1は、セキュリティを強化する必要がない場合にはブリッジドライバ220−1cだけを用いて他のプラットフォームとの間で通信を行う。
【0081】
OS220−1eは、プラットフォーム220−1を動かすための基本ソフトウェアまたは基本プログラムである。Bootloader220−1fは、プラットフォーム220−1の起動時に呼び出され、OS220−1eを起動するソフトウェアである。プラットフォーム210では、例えば、Bootloader220−1fによりOS210eを検出し、OS210eが起動する。
【0082】
次にPCIeブリッジコントローラ230に接続されるプラットフォーム間における通信処理の一例について説明する。
図7は、第2の実施形態の情報処理システムにおけるプラットフォーム間における通信処理の一例を説明するための図である。
【0083】
ここではプラットフォーム210のプロセッサ211と、プラットフォーム220−1のプロセッサ221−1との間で通信を行う例を用いて説明する。
【0084】
送信元のプラットフォーム210は、RCであるプロセッサ211において生成したデータを、ソフトウェア,トランザクション層,データリンク層および物理層(PHY)に順次転送し、物理層においてPCIeブリッジコントローラ230の物理層に転送する。
【0085】
PCIeブリッジコントローラ230は、プラットフォーム210から転送されたデータを、物理層,データリンク層,トランザクション層およびソフトウェアに順次転送し、プラットフォーム220−1のRCに対応するEPにトンネリングにより転送する。即ち、PCIeブリッジコントローラ230においては、EP間でデータをトンネリングさせることで、1つのRC(またはプロセッサ)から他のRC(またはプロセッサ)にデータが転送される。
【0086】
送信先のプラットフォーム220−1は、PCIeブリッジコントローラ230から転送されたデータを、物理層,データリンク層,トランザクション層およびソフトウェアに順次転送し、送信先のプラットフォーム220−1のプロセッサ221−1に転送する。
【0087】
情報処理システム200では、プラットフォーム間の通信はPCIeのトランザクションが発生したときに論理的に接続される。
【0088】
PCIeブリッジコントローラ230が有する8スロットのうちの一つに接続された特定のプロセッサに対して複数の他のプロセッサからのデータ転送が集中しないときは、異なる任意の複数組のそれぞれのプロセッサ間で並行してデータ転送してもよい。例えば、プロセッサ221−1に対して、プロセッサ221−2およびプロセッサ221−3が通信する場合には、PCIeブリッジコントローラ230は、プロセッサ221−2およびプロセッサ221−3による通信をシリアルに処理する。
【0089】
一方、異なるプラットフォームのプロセッサ同士が通信し、特定のプラットフォームのプロセッサに通信が集中しない場合には、PCIeブリッジコントローラ230は、プラットフォーム間の通信を並行して処理することも可能である。
【0090】
次に、
図8を用いて、情報処理システム200におけるPCIeブリッジコントローラ230を介したプラットフォーム間のデータ転送方法を説明する。
図8は、第2の実施形態の情報処理システムにおけるPCIeブリッジコントローラを介したプロセッサ間のデータ転送方法の一例を説明するための図である。
【0091】
ここではSlot#0,Slot#1に接続されたプラットフォーム210のSlot#0からSlot#3に接続されたプラットフォーム220−2にデータを転送する場合を例に用いて説明する。
【0092】
送信元のプラットフォーム210は、ソフトウェア等によって送信されるデータ(以下、送信データという)を、プラットフォーム210に備えられるHDD217等の記憶装置(即ち、ストレージ)からプラットフォーム210のDIMM215等(即ち、物理メモリ)のメモリ領域215aに格納する(P10)。メモリ領域215aは、転送されるデータが一時的に格納される通信バッファの一部であってもよい。
【0093】
メモリ領域215aは、プラットフォームそれぞれのDIMM215等に、同じ大きさで設けられた領域である。メモリ領域215aは、スロット234の数に応じて分割されている。メモリ領域215aの分割された記憶領域は、いずれかのスロット234に対応付けられている。即ち、各プラットフォームのメモリ領域215aには、Slot#0〜#7のそれぞれに対応する記憶領域が設けられている。
【0094】
例えば、メモリ領域215a内のSlot#0で示す記憶領域は、Slot#0に接続されたプラットフォーム210に対応付けられ、Slot#3で示す記憶領域は、Slot#3に接続されたプラットフォーム220−2に対応付けられている。プラットフォーム210は、メモリ領域215aのうち、送信先のスロット234に割り当てられた領域(ここでは、Slot#3)に送信データを格納する。
【0095】
ブリッジドライバ210c1は、プラットフォームのメモリ領域215aの記憶領域に基づいて、送信先のスロット234を示すスロット情報と、送信先のメモリ領域215aにおける分割領域内におけるアドレスを示すアドレス情報とを取得または生成する(P11)。
【0096】
送信元EPにおいて、ブリッジドライバ210c1は、スロット情報と、アドレス情報と、送信データとを含む転送データをPCIeブリッジコントローラ230に渡す(P12)。これにより、PCIeブリッジコントローラ230は、スロット情報に基づいてEPtoEPにより送信元のスロット234と送信先のスロット234とを接続することにより、転送データを送信先のプラットフォーム220−2に転送する(P13)。送信先のプラットフォーム220−2は、スロット情報およびアドレス情報に基づいて、送信先のプラットフォーム220−2のメモリ領域215aのSlot#3に対応する記憶領域内のアドレス情報が示す領域に送信データ(または転送データ)を格納する(P14)。
【0097】
送信先のプラットフォーム220−2において、例えば、プログラムが、メモリ領域215aに格納された送信データを読み出して、DIMM215やHDD217に移動させる(P15、P16)。
【0098】
以上のようにして、送信元のプラットフォーム210から送信先のプラットフォーム220−2にデータが転送される。なお、仮想LAN通信は、例えば、P10において格納する送信データを、仮想LANドライバが元のデータにヘッダ等を付与してカプセル化したデータとし、送信先の仮想LANドライバが非カプセル化して元のデータを取り出すことで実現できる。
【0099】
このように情報処理システム200においては、PCIeブリッジコントローラ230において、当該PCIeブリッジコントローラ230内のEP間でデータ転送を媒介する。これにより、PCIeブリッジコントローラ230に接続された複数のRC間でのデータ転送を実現することができる。
【0100】
即ち、各プロセッサをPCIeのRCとして独立動作させ、PCIeブリッジコントローラ230において、それぞれのプロセッサに接続するデバイスをEPとして接続し、EP間でデータ転送を行う。これにより、デバイスドライバに起因する問題を回避し、高速データ転送を1つのシステムとして動作させることができる。
【0101】
また、PCIeの規格に適合したデータ通信機能を有してさえいれば異なるプロセッサ間でのデータ転送が可能となるため、デバイスドライバの有無や、サポートOS等を気にすることなく使用するプロセッサの選択肢を広げることが可能となる。
【0102】
各プロセッサはEPとなるPCIeブリッジコントローラ230を介して接続されるため、EPの先のRCのデバイスドライバを追加する必要がない。従って、デバイスドライバの開発が不要であるとともに、デバイスドライバを追加することに起因する不具合が発生することもない。
【0103】
情報処理システム200においては、ARMプロセッサやFPGA等の一般的なプロセッサはRCとして動作することが求められるため、情報処理システム200のプロセッサとして容易に追加することができる。
【0104】
PCIeブリッジコントローラ230においては、PCIeでの接続および通信がされるので、イーサネットでは実現できない高速転送を実現することができる。また、4K,8K等の高精細映像のプロセッサ間送受信、大規模なビッグデータの並列計算等も行うことができる。
【0105】
また、画像処理やデータ検索等の各機能に特化した専用プロセッサを接続することもできるので、安価に機能追加、性能向上を行うことができる。
【0106】
さらに、情報処理システム200においては、システムの仮想化等を行う必要もなく、システムの仮想化を行うことで生じるシステム性能の低下が生じることもない。従って、情報処理システム200を、AI推論や画像処理といった高負荷な演算を用途とするシステムに適用することもできる。
【0107】
次にプラットフォーム210が備える機能について説明する。
図9は、第2の実施形態のプラットフォームの機能構成の一例を示す図である。
【0108】
プラットフォーム210は、処理部240と、記憶部250とを有する。処理部240は、記憶部250が記憶する各種プログラムを実行し、各種プログラム内で行われる各種処理を行う。処理部240は、プロセッサ211によって実現される。処理部240は、第1の実施形態の処理部4の一実施態様である。
【0109】
例えば、処理部240は、仮想LANドライバ210dと、ブリッジドライバ210cとの対応関係を示すパラメータ情報255の設定や、設定した対応関係(例えば、パラメータ情報255)に基づいた仮想LANドライバ210dとブリッジドライバ210cとの対応付けを行う。
【0110】
記憶部250は、プラットフォーム210が有する各種ソフトウェアまたはプログラムや各種ソフトウェアの動作に用いる各種情報を記憶する。記憶部250は、SSD216やHDD217等によって実現される。記憶部250は、第1の実施形態の記憶部3の一実施態様である。
【0111】
記憶部250は、ブリッジドライバ210c1,210c2および仮想LANドライバ210d1,210d2の動作に用いる情報であるMAC(Media Access Control)アドレス251,252と仮想IP(Internet Protocol)アドレス253,254とパラメータ情報255とを記憶する。パラメータ情報255は、第1の実施形態の対応関係情報3eの一実施態様である。
【0112】
パラメータ情報255は、各仮想LANドライバ210dが対応付けられるブリッジドライバ210c(即ち、各仮想LANドライバ210dと組み合わせるブリッジドライバ210c)を示す情報である。パラメータ情報255は、レジストリに格納(記憶ともいう)された情報である。パラメータ情報255は、インストールされている仮想LANドライバ210dの数に関わらず1つだけレジストリに生成される。
【0113】
パラメータ情報255は、各仮想LANドライバ210dの識別子と、各仮想LANドライバ210dが対応付けられるブリッジドライバ210cの識別子とを対応付けた情報である。
【0114】
ブリッジドライバ210cの識別子は、ブリッジドライバ210cに対し一意に設定された各ブリッジドライバ210cを識別可能な識別情報である。パラメータ情報255に設定されるブリッジドライバ210cの識別子は、再起動等によって変更されない静的な情報(即ち、固定された情報)であり、例えば、インストール時に割り当てられ、レジストリに格納される固有の識別子である。
【0115】
仮想LANドライバ210dの識別子は、仮想LANドライバ210dに対し一意に設定された各仮想LANドライバ210dを識別可能な識別情報である。パラメータ情報255に設定される仮想LANドライバ210dの識別子は、再起動等によって変更されない静的な情報(即ち、固定の情報)であり、例えば、インストール時に割り当てられ、レジストリに格納される固有の識別子である。
【0116】
例えば、
図9の例では、#1の識別子を有する仮想LANドライバ210dが#1の識別子を有するブリッジドライバ210cに対応付けられていることを示す。また、#2の識別子を有する仮想LANドライバ210dが#2の識別子を有するブリッジドライバ210cに対応付けられていることを示す。なお、以下では、仮想LANドライバ210d1に#1の識別子が設定され、仮想LANドライバ210d2に#2の識別子が設定されていることとする。また、ブリッジドライバ210c1に#1の識別子が設定され、ブリッジドライバ210c2に#2の識別子が設定されていることとする。即ち、プラットフォーム210では、仮想LANドライバ210d1がブリッジドライバ210c1と対応付けられており、仮想LANドライバ210d2がブリッジドライバ210c2と対応付けられていることとする。
【0117】
MACアドレス251,252は、PCIeインタフェース219に設定された物理アドレス(例えば、ノードID)である、MACアドレス251,252は、PCIeインタフェース219がPCIeブリッジコントローラ230のどのスロット234に接続しているかの識別に用いられる。MACアドレス251,252は、ブリッジドライバ210cによるプラットフォーム間でのデータの転送、および仮想LANドライバ210dによるプラットフォーム間での仮想的なLAN回線の確立にそれぞれ用いられる。
【0118】
情報処理システム200では、MACアドレス251,252は、PCIeインタフェース219が接続するスロット234に応じてブリッジドライバ210cによって生成される。即ち、MACアドレス251,252は、接続構成の変化によって変更され得る動的な情報(即ち、非固定の情報)である。
【0119】
MACアドレス251は、PCIeインタフェース219aに設定された物理アドレス(ここではSlot#0に応じた物理アドレス)であり、PCIeインタフェース219aの制御に用いられるブリッジドライバ210c1によって生成される。MACアドレス251は、ブリッジドライバ210c1と対応付けて記憶される(例えば、ブリッジドライバ210c1の設定情報に記憶される)。
【0120】
MACアドレス252は、PCIeインタフェース219bに設定された物理アドレス(ここではSlot#1に応じた物理アドレス)であり、PCIeインタフェース219bの制御に用いられるブリッジドライバ210c2によって生成される。MACアドレス252は、ブリッジドライバ210c2と対応付けて記憶される。
【0121】
仮想IPアドレス253,254は、仮想LANドライバ210dによるプラットフォーム間での仮想的なLAN回線の確立に用いられるIPアドレスである。
【0122】
情報処理システム200では仮想IPアドレス253,254は、例えば、ユーザによって任意に割り当てられる。即ち、仮想IPアドレス253,254は、ユーザの設定変更によって変更され得る動的な情報(即ち、非固定の情報)である。
【0123】
仮想IPアドレス253は、仮想LANドライバ210d1が仮想的なLAN回線の確立に用いるIPアドレスであり、仮想LANドライバ210d1に対応付けられて記憶されている。
【0124】
仮想IPアドレス254は、仮想LANドライバ210d2が仮想的なLAN回線の確立に用いるIPアドレスであり、仮想LANドライバ210d2に対応付けられて記憶されている。
【0125】
このようにプラットフォーム210は、対応関係を示すパラメータ情報255を有し、当該パラメータ情報255に基づいて仮想LANドライバ210dとブリッジドライバ210cとの対応付けを行うため、再起動の影響を受けずに組み合わせを固定化できる。
【0126】
特に、プラットフォーム210は、パラメータ情報255において仮想LANドライバ210dを識別可能な静的な情報と、ブリッジドライバ210cを識別可能な静的な情報とを対応付けて対応関係を示しているため、設定変更等の影響を受ける恐れもない。これにより、プラットフォーム210は、構成の変化によってMACアドレス251,252が変化したり、ユーザの設定変更によって仮想IPアドレス253,254が変化したりした場合であっても、対応関係に影響を受けないようにでき再設定を不要にできる。
【0127】
次に対応関係(即ち、組み合わせ)が変化した場合に起こり得る問題について
図10を用いて説明する。
図10は、第2の実施形態の組み合わせが変化した場合の問題点を説明するための図である。
【0128】
図10のP20は、アプリケーション210aが認識している仮想LANドライバ210dとブリッジドライバ210cとの組み合わせを示す。換言すれば、
図10のP20に示す仮想LANドライバ210dとブリッジドライバ210cとの組み合わせは、適切な組み合わせである。
【0129】
P20では、仮想LANドライバ210d1がブリッジドライバ210c1と対応付けられ、仮想LANドライバ210d2がブリッジドライバ210c2と対応付けられている。即ち、アプリケーション210aは、仮想LANドライバ210d1に仮想的なLAN通信によるデータの転送を指示した場合、ブリッジドライバ210c1がSlot#0からデータを出力すると認識している。また、アプリケーション210aは、仮想LANドライバ210d2に仮想的なLAN通信によるデータの転送を指示した場合、ブリッジドライバ210c2がSlot#1からデータを出力すると認識している。
【0130】
このような仮想LANドライバ210dとブリッジドライバ210cとの組み合わせをアプリケーション210aが認識している際に対応関係を固定化していない状態で再起動をした場合、対応付けが予期せず変化すること(P21,P22)がある。
【0131】
図10のP23は、アプリケーション210aが認識している仮想LANドライバ210dとブリッジドライバ210cとの組み合わせ(P21)から予期せず変化した場合の組み合わせの一例を示す。P23では、仮想LANドライバ210d1がブリッジドライバ210c2と対応付けられ、仮想LANドライバ210d2がブリッジドライバ210c1と対応付けられている。したがって、アプリケーション210aが仮想的なLAN通信によりSlot#0からデータを出力すべく認識している組み合わせに基づいて指示を行うと、データは、想定とは異なるSlot#1から出力されることとなる。
【0132】
図10のP24は、アプリケーション210aが認識している仮想LANドライバ210dとブリッジドライバ210cとの組み合わせ(P22)から予期せず変化した場合の組み合わせの一例を示す。P24では、仮想LANドライバ210d1がブリッジドライバ210c2と対応付けられ、仮想LANドライバ210d2がブリッジドライバ210c2と対応付けられている。したがって、仮想的なLAN通信によりデータを出力すべく認識している組み合わせに基づいて指示を行っても、データは、必ずSlot#1から出力されることとなり、想定とは異なる出力挙動をすることとなる。
【0133】
P23,P24のように組み合わせが変化してアプリケーション210aの想定通りのスロット234からデータを出力できなくなると、プラットフォーム210は、リソース管理を適切にできなくなる。
【0134】
例えば、プラットフォーム210は、低負荷のスロット234で仮想的なLAN通信によりデータ転送を行うべく仮想LANドライバ210dに指示を行った場合、想定と異なるスロット234からデータが出力され、さらなる負荷の偏りを招く虞がある。その結果、プラットフォーム210は、通信パフォーマンスの低下を招き、通信の不具合が発生し得る。
【0135】
この点、プラットフォーム210は、パラメータ情報255を記憶しておくことで、各仮想LANドライバ210dが対応付けられるブリッジドライバ210cを固定化しているため、再起動により対応付けが変化する虞がない。これにより、プラットフォーム210は、通信パフォーマンスの低下を抑止し、通信の不具合の発生を防止可能にしている。
【0136】
次にパラメータ情報255の設定タイミングについて
図11,12を用いて説明する。まず、
図11を用いてインストール時にパラメータ情報255を設定する場合について説明する。
図11は、第2の実施形態のパラメータ情報をインストール時に設定する場合における処理の一例を示す図である。
【0137】
なお、カーネル210e1は、OS210eの中核となるプログラムである。なお、
図11で説明する各種プログラム(具体的には、カーネル210e1、仮想LANドライバ210d、ブリッジドライバ210c)が行う処理は、処理部240によって行われる。
【0138】
ユーザによるブリッジドライバ210cのインストール指示により、各ブリッジドライバ210cのインストールが仮想LANドライバ210dのインストールよりも先だって行われる(S1)。ブリッジドライバ210cのインストールが終了した後、ユーザによる仮想LANドライバ210dのインストール指示により、仮想LANドライバ210dのインストールが開始される(S2)。
【0139】
仮想LANドライバ210dは、カーネル210e1に対してレジストリに格納されたパラメータ情報255を要求し(S3)、パラメータ情報255(ここではレジストリに格納されたパラメータ情報255の複製)を取得する(S4)。
【0140】
仮想LANドライバ210dは、パラメータ情報255に他の仮想LANドライバ210dとブリッジドライバ210cとの組み合わせが既に設定されているか否かを判定する。仮想LANドライバ210dは、1つ目にインストールする仮想LANドライバ210dである場合に、パラメータ情報255に他の仮想LANドライバ210dとブリッジドライバ210cとの組み合わせが設定されていないと判定する。仮想LANドライバ210dは、2つ目以降にインストールする仮想LANドライバ210dである場合に、パラメータ情報255に他の仮想LANドライバ210dとブリッジドライバ210cとの組み合わせが設定されていると判定する。
【0141】
仮想LANドライバ210dは、他の仮想LANドライバ210dとブリッジドライバ210cとの組み合わせが設定されていると判定した場合には、他の仮想LANドライバ210dと未だ組み合わせられていないブリッジドライバ210cを特定する。仮想LANドライバ210dは、特定した他の仮想LANドライバ210dと未だ組み合わせられていないブリッジドライバ210cのいずれかに対して、リンク要求(即ち、対応付けの要求)を行う(S5)。
【0142】
仮想LANドライバ210dは、リンクの許可を受け付ける(S6)。仮想LANドライバ210dは、カーネル210e1にレジストリに格納されたパラメータ情報255へと、自身の識別子と、対応付けの許可を受けたブリッジドライバ210cの識別子とを対応付けて設定するように要求する(S7)。仮想LANドライバ210dは、レジストリに格納されたパラメータ情報255への設定完了の応答を受け付け(S8)た後、仮想LANドライバ210dのインストール時における以降の処理を行う(例えば、別の仮想LANドライバ210dのインストール等)。
【0143】
一方で、仮想LANドライバ210dは、他の仮想LANドライバ210dとブリッジドライバ210cとの組み合わせが設定されていないと判定した場合には、任意のブリッジドライバ210cに対して、リンク要求を行う(S9)。
【0144】
仮想LANドライバ210dは、リンクの許可を受け付ける(S10)。仮想LANドライバ210dは、カーネル210e1にレジストリに格納されたパラメータ情報255へと、自身の識別子と、対応付けの許可を受けたブリッジドライバ210cの識別子とを対応付けて設定するように要求する(S11)。仮想LANドライバ210dは、レジストリに格納されたパラメータ情報255への設定完了の応答を受け付け(S12)た後、仮想LANドライバ210dのインストール時における以降の処理を行う。
【0145】
これによれば、各種プログラムで行われる処理を実行する処理部240は、インストール中の仮想LANドライバ210dを、未だ組み合わせられていないブリッジドライバ210cと対応付け、パラメータ情報255に設定することができる。
【0146】
これにより、処理部240は、1つのブリッジドライバ210cに複数の仮想LANドライバ210dが対応付けられることを防止できる。
【0147】
次に、
図12を用いて起動時にパラメータ情報255を設定する場合について説明する。
図12は、第2の実施形態のパラメータ情報を起動時に設定する場合における処理の一例を示す図である。
【0148】
なお、
図12で説明する各種プログラム(具体的には、カーネル210e1、仮想LANドライバ210d、ブリッジドライバ210c)が行う処理は、処理部240によって行われる。
【0149】
カーネル210e1は、ユーザによるブリッジドライバ210cの仮想LANドライバ210dの起動指示を受け付けると(S21)、仮想LANドライバ210dの起動に先立って、各ブリッジドライバ210cの起動を行う(S22)。ブリッジドライバ210cの起動が終了した後、カーネル210e1は、仮想LANドライバ210dに起動を開始させる(S23)。
【0150】
仮想LANドライバ210dは、カーネル210e1に対してレジストリに格納されたパラメータ情報255を要求し(S24)、パラメータ情報255を取得する(S25)。
【0151】
仮想LANドライバ210dは、パラメータ情報255に自身とブリッジドライバ210cとの組み合わせが有るか否かを判定する。組み合わせはインストール時にパラメータ情報255に設定されるが、インストール時にリンク可能なブリッジドライバ210cが存在しなかった場合等に、自身のブリッジドライバ210cの組み合わせが無い場合が存在する。
【0152】
仮想LANドライバ210dは、自身とブリッジドライバ210cとの組み合わせが有ると判定した場合には、対応付けられているブリッジドライバ210cに対して、リンク要求を行う(S26)。仮想LANドライバ210dは、リンクの許可を受け付け(S27)た後、仮想LANドライバ210dの起動時における以降の処理を行う(例えば、別の仮想LANドライバ210dの起動等)。
【0153】
一方で、仮想LANドライバ210dは、自身とブリッジドライバ210cとの組み合わせが無いと判定した場合には、パラメータ情報255に他の仮想LANドライバ210dとブリッジドライバ210cとの組み合わせが既に設定されているか否かを判定する。
【0154】
仮想LANドライバ210dは、他の仮想LANドライバ210dとブリッジドライバ210cとの組み合わせが設定されていると判定した場合には、他の仮想LANドライバ210dと未だ組み合わせられていないブリッジドライバ210cを特定する。仮想LANドライバ210dは、特定した他の仮想LANドライバ210dと未だ組み合わせられていないブリッジドライバ210cのいずれかに対して、リンク要求を行う(S28)。
【0155】
仮想LANドライバ210dは、リンクの許可を受け付ける(S29)。仮想LANドライバ210dは、カーネル210e1にレジストリに格納されたパラメータ情報255へと、自身の識別子と、対応付けの許可を受けたブリッジドライバ210cの識別子とを対応付けて設定するように要求する(S30)。仮想LANドライバ210dは、レジストリに格納されたパラメータ情報255への設定完了の応答を受け付け(S31)た後、仮想LANドライバ210dの起動時における以降の処理を行う。
【0156】
仮想LANドライバ210dは、他の仮想LANドライバ210dとブリッジドライバ210cとの組み合わせが設定されていないと判定した場合には、任意のブリッジドライバ210cに対して、リンク要求を行う(S32)。
【0157】
仮想LANドライバ210dは、リンクの許可を受け付ける(S33)。仮想LANドライバ210dは、カーネル210e1にレジストリに格納されたパラメータ情報255へと、仮想LANドライバ210d自身の識別子と、対応付けの許可を受けたブリッジドライバ210cの識別子とを対応付けて設定するように要求する(S34)。仮想LANドライバ210dは、レジストリに格納されたパラメータ情報255への設定完了の応答を受け付け(S35)た後、仮想LANドライバ210dの起動時における以降の処理を行う。
【0158】
これによれば、各種プログラムで行われる処理を実行する処理部240は、初回起動時に仮想LANドライバ210dを、未だ組み合わせられていないブリッジドライバ210cと対応付け、パラメータ情報255に設定することができる。
【0159】
これにより、処理部240は、1つのブリッジドライバ210cに複数の仮想LANドライバ210dが対応付けられることを防止できる。
【0160】
なお、
図11,12においてカーネル210e1、仮想LANドライバ210d、ブリッジドライバ210cが行うとした処理内容は一例であってこれに限らない。各種プログラム(例えば、仮想LANドライバ210d、ブリッジドライバ210c)を実行する処理部240によって、実行されればよく、例えば、各種プログラムが担当していた処理の一部または全部を他のプログラムで実行してもよい。例えば、インストール時に仮想LANドライバ210dが行うとした処理を処理部240によって実行されるインストーラープログラムが行うとしてもよい。例えば、インストーラープログラムによって実現する場合、最初の仮想LANドライバ210dで実行する処理内容(S9〜S12)と、2つ目以降の仮想LANドライバ210dで実行する処理内容(S5〜S8)とを独立して記述したプログラムとすることができる。
【0161】
また、ユーザがブリッジドライバ210cのインストール指示やユーザによる仮想LANドライバ210dのインストール指示を行うことに替えてインストーラープログラムが行うようにすることもできる。
【0162】
また、
図11のインストール時において各ブリッジドライバ210cを先にインストールするとして説明したがこれに限らない。例えば、ブリッジドライバ210cと、仮想LANドライバ210dとを交互にインストールしてもよい。
【0163】
なお、開示の技術は上述した実施形態に限定されるものではなく、本実施形態の趣旨を逸脱しない範囲で種々変形して実施することができる。本実施形態の各構成および各処理は、必要に応じて取捨選択することができ、あるいは適宜組み合わせてもよい。
【0164】
例えば、上記実施形態では、プラットフォーム210の2つのRCを用いてPCIeブリッジコントローラ230と接続する例を説明したが、プラットフォーム210の3つ以上のRCを用いてPCIeブリッジコントローラ230と接続することもできる。また、例えば、
図5に示す構成においては、PCIeブリッジコントローラ230は8つのスロット234−1〜234−8を有しているが、これに限定されるものではなく種々変形して実施することができる。即ち、PCIeブリッジコントローラ230は7つ以下もしくは9つ以上のスロット234を備えてもよい。また、例えば、
図3に示す構成においては、複数のプラットフォーム(例えば、演算部として機能するプラットフォーム)が2つ以上のRCを用いてPCIeブリッジコントローラ230のEPと接続するようにすることもできる。
【0165】
また、上述した実施形態においては、PCIeを用いた通信システムについて示したが、これに限定されるものではなく、PCIe以外の通信規格での通信に適用してもよい。
【0166】
上述の実施形態では、各部のI/O(Input/Output)のインタフェースとしてPCIeを例に挙げて説明したが、インタフェースはPCIeに限定されない。例えば、各部のインタフェースは、データ転送バスによって、デバイス(例えば、周辺制御コントローラ)とプロセッサとの間でデータ転送を行える技術であればよい。データ転送バスは、1個の筐体等に設けられたローカルな環境(例えば、1つのシステムまたは1つの装置)で高速にデータを転送できる汎用のバスであってよい。インタフェースは、パラレルインターフェースおよびシリアルインターフェースのいずれであってもよい。
【0167】
I/Oインタフェースは、シリアル転送の場合、ポイント・ツー・ポイント接続ができ、データをパケットベースで転送可能な構成でよい。尚、I/Oインタフェースは、シリアル転送の場合、複数のレーンを有してよい。I/Oインタフェースのレイヤ構造は、パケットの生成および復号を行うトランザクション層と、エラー検出等を行うデータリンク層と、シリアルとパラレルとを変換する物理層とを有してよい。また、I/Oインタフェースは、階層の最上位であり1または複数のポートを有するルートコンプレックス、I/Oデバイスであるエンドポイント、ポートを増やすためのスイッチ、および、プロトコルを変換するブリッジ等を含んでよい。インタフェースは、送信するデータとクロック信号とをマルチプレクサによって多重化して送信してもよい。この場合、受信側は、デマルチプレクサでデータとクロック信号を分離してよい。
【解決手段】記憶部3は、第1通信部2aの通信を制御する第1通信プログラム3aと、第2通信部2bの通信を制御する第2通信プログラム3bと、対応付けられた通信プログラムに所定処理を実行したデータを送信させる第1処理プログラム3cおよび第2処理プログラム3dと、第1処理プログラム3cと対応付けられる第1対応通信プログラムを示す第1識別子と第2処理プログラム3dと対応付けられる第2対応通信プログラムを示す第2識別子とを含む対応関係情報3eと、を記憶する。処理部4は、第1対応通信プログラムを決定し、決定した第1対応通信プログラムを示す識別子を第1識別子として対応関係情報3eに設定し、第2対応通信プログラムを決定し、決定した第2対応通信プログラムを示す識別子を第2識別子として対応関係情報3eに設定する。