【実施例1】
【0013】
図1は、実施例1にかかる分散型コンピュータ1の全体構成の一例を示す図である。分散型コンピュータ1は、複数のプラットフォームA10−1〜プラットフォームH10−8と、複数のエンドポイントを有し、エンドポイントに接続されたルートコンプレックスを有する複数のプラットフォームA10−1〜プラットフォームH10−8間でのバスを介した通信を中継するPCIeブリッジコントローラ30とを備える情報処理システムである。
図1に示すように、実施例にかかる分散型コンピュータ1は、プラットフォームA10−1〜プラットフォームH10−8と、PCIeブリッジコントローラ30とを備えている。
【0014】
プラットフォームA10−1〜プラットフォームH10−8は、PCIeブリッジコントローラ30を介して、通信可能に接続されている。プラットフォームA10−1〜プラットフォームH10−8は、例えば、PCIeブリッジコントローラ30が設けられたボード上のスロットに挿入されていてよい。尚、複数のスロットのうち、いずれかのスロットは、ノードが挿入されていない空き状態であってもよい。以下の説明では、各プラットフォームA10−1〜プラットフォームH10−8を区別する必要がなく、任意のノードを示す場合には、プラットフォーム10と記載する。
【0015】
プラットフォームA10−1は、プラットフォームB10−2〜プラットフォームH10−8を管理して、プラットフォームB10−2〜プラットフォームH10−8に各種処理を実行させるメインの情報処理装置である。
【0016】
プラットフォームB10−2〜プラットフォームH10−8は、プラットフォームA10−1の要求に基づいて、例えばAI(Artificial Intelligence)推論処理や画像処理等を実行するサブの情報処理装置である。
【0017】
また、プラットフォームA10−1〜プラットフォームH10−8は、プロセッサ11−1〜11−8を備える。また、各プロセッサ11−1〜11−8は、それぞれアーキテクチャが異なっていてもよい。また、各プロセッサ11−1〜11−8は、それぞれ異なるメーカから提供されていてもよいし、同一のメーカから提供されていてもよい。以下の説明では、プロセッサ11−1〜11−8を区別する必要がなく、任意のプロセッサを示す場合には、プロセッサ11と記載する。
【0018】
プロセッサ11は、プラットフォーム10全体を制御する。プロセッサ11は、マルチプロセッサであってもよい。また、プロセッサ11は、例えばCPU(Central Processing Unit),MPU(Micro Processing Unit),GPU(Graphics Processing Unit),DSP(Digital Signal Processor),ASIC(Application Specific Integrated Circuit),PLD(Programmable Logic Device),FPGA(Field Programmable Gate Array)のいずれか一つであってもよい。また、プロセッサ11は、CPU,MPU,GPU,DSP,ASIC,PLD,FPGAのうちの2種類以上の要素の組み合わせであってもよい。
【0019】
プラットフォーム10は、ホスト側として動作可能なルートコンプレックス(RC:Root Complex)としての機能を有する。PCIeブリッジコントローラ30は、中継装置の一例である。PCIeブリッジコントローラ30は、複数のエンドポイント(EP:End Point)を有し、エンドポイントに接続されたルートコンプレックスを有する複数のプラットフォーム10間でのバスを介した通信を中継する。また、PCIeブリッジコントローラ30は、プラットフォーム10と接続されるATU(Address Translation Unit)及びスロット等を含む複数のエンドポイントとしての機能を有する。ルートコンプレックス及びエンドポイントは、例えばPCIeのルートコンプレックス及びエンドポイントであってよい。これにより、データ転送がプラットフォーム10とPCIeブリッジコントローラ30との間で行なわれる。
【0020】
さらに詳しくは、PCIeブリッジコントローラ30は、複数のエンドポイントを有している。また、プラットフォーム10は、PCIeブリッジコントローラ30のエンドポイントに接続されるルートコンプレックスを有している。すなわち、PCIeブリッジコントローラ30が有する複数のエンドポイントのそれぞれには、各プラットフォーム10が有するルートコンプレックスが接続される。そして、PCIeブリッジコントローラ30は、内部に設けられたバスを制御して、エンドポイント間のデータ転送を実行する。このようにして、PCIeブリッジコントローラ30は、プラットフォームA10−1〜プラットフォームH10−8の間での通信を中継してデータ転送を実現する。
【0021】
次に、PCIeブリッジコントローラ30を介した通信におけるアドレス変換について説明する。
図2は、実施例1にかかる分散型コンピュータ1のハードウェア構成を説明する図である。
【0022】
PCIeブリッジコントローラ30は、プロセッサ31と、メモリ32と、各プラットフォーム10が接続するスロットごとのATU33−1〜33−8とを備える。
【0023】
プロセッサ31は、PCIeブリッジコントローラ30全体を制御する。プロセッサ11は、マルチプロセッサであってもよい。また、プロセッサ11は、例えばCPU,MPU,GPU,DSP,ASIC,PLD,FPGAのいずれか一つであってもよい。また、プロセッサ11は、CPU,MPU,GPU,DSP,ASIC,PLD,FPGAのうちの2種類以上の要素の組み合わせであってもよい。
【0024】
メモリ32は、ROM(Read Only Memory)、及びRAM(Random Access Memory)を含む記憶装置である。ROMには、各種ソフトウェアプログラムやこのプログラム用のデータ類が書き込まれている。メモリ32に記憶されたプログラム321は、プロセッサ31に読み込まれて実行される。また、RAMは、ワーキングメモリとして利用される。
【0025】
また、プロセッサ31は、メモリ32に記憶されるプログラム321を実行することによって、
図2に示す機能を実現する。具体的には、プロセッサ31は、機能として、アドレス空間要求部311、及びアドレス変換設定部312を備える。
【0026】
アドレス空間要求部311は、要求部の一例である。アドレス空間要求部311は、プラットフォーム10ごとに設けられた、プラットフォーム10が公開するメモリ空間上の公開領域にアクセスさせるためのアクセス情報を含む情報が設定されるDBI(Data Bus Interface)37−1〜37−8に、アクセスするためのアドレス空間のうち、1のプラットフォーム10のDBI37−1〜37−8にアクセスするためのアドレス空間以下のアドレス空間を要求する。すなわち、アドレス空間要求部311は、各プラットフォーム10が自装置の設定を有するDBI37−1〜37−8にアクセスするためのアドレス空間以下のアドレス空間をBAR(Base Address Register)2として要求する。
【0027】
ここで、公開領域とは、各プラットフォーム10が公開する領域であって、他のプラットフォーム10が書き込みや読み出しを実行可能な領域である。例えば、バッファエリア等のメモリが公開領域に指定される。そして、公開領域は、プラットフォーム10自身によって指定される。アクセス情報とは、プラットフォーム10が指定した公開領域にアクセスさせるための情報である。例えば、アクセス情報とは、公開領域のアドレスであってもよいし、入力されたアドレスを公開領域のアドレスに変換する変換規則であってもよいし、これら以外の情報であってもよい。DBI37−1〜37−8は、各プラットフォーム10の設定が記憶される領域である。以下の説明では、DBI37−1〜37−8を区別する必要がなく、任意のDBIを示す場合には、DBI37と記載する。
【0028】
更に詳しくは、アドレス空間要求部311は、BAR2よりDBI37にアクセスするためのアドレス空間として、プラットフォーム10ごとに設けられたDBI37のうち、1のプラットフォーム10のDBI37にアクセスするためのアドレス空間を要求する。BAR2は、DBI37にアクセスするためのベースアドレスが設定されたレジスタである。すなわち、アドレス空間要求部311は、アドレス空間を制限することで、他のDBI37を指定不可にする。
【0029】
アドレス変換設定部312は、変換規則設定部の一例である。アドレス変換設定部312は、アドレス変換の変換規則をアドレス変換情報36−1〜36−8に設定する。例えば、アドレス変換設定部312は、アドレス空間要求部311が要求したアドレス空間のアドレスと、DBI37のアドレスとが対応付けられた変換規則をアドレス変換情報36−1〜36−8に設定する。
【0030】
ATU33−1〜33−8は、各プラットフォーム10が接続されたスロットごとに設けられている。ATU33−1〜33−8は、各プラットフォーム10から入力されたアドレス、又はプラットフォーム10に出力されたアドレスを変換する。以下の説明では、各ATU33−1〜33−8を区別する必要がなく、任意のATU33−1〜33−8を示す場合には、ATU33と記載する。
【0031】
ATU33は、例えばアドレス変換情報36−1〜36−8等のアドレスの変換規則に基づいてアドレスを変換するレジスタ回路である。また、ATU33は、ASIC,PLD,FPGAのいずれか一つであってもよい。また、ATU33は、ASIC,PLD,FPGAのうちの2種類以上の要素の組み合わせであってもよい。さらに、ATU33は、プロセッサ31がメモリ32に記憶されるプログラム321を実行することによって実現される機能部であってもよい。
【0032】
ここで、各プラットフォーム10は、プラットフォーム10間で異なるメモリアドレス空間にアクセスする場合、ベースアドレスが設定されているBAR0を経由してアクセスする。しかしながら、BAR0のアドレス空間の上位bitはスロット番号に割り当てられているため、データの読み書きに使うアドレスは制限されてしまう。そのため、アドレスのbit数制限により上位空間へアクセスできない問題が生じてしまう。そこで、ATU33は、この制限を回避するためにアドレス変換を実行し、各プラットフォーム10の任意のメモリアドレスにアクセスできるようにする。同様に、ATU33は、PCIeブリッジコントローラ30の任意のアドレスにアクセスできるようにする。
【0033】
また、ATU33−1〜ATU33−8は、略同一の構成であるため、ATU33−1を例に説明する。但し、アドレス変換情報36−1〜36−8には、プラットフォームA10−1〜プラットフォームH10−8のそれぞれに応じたアドレス変換規則が設定されている。また、DBI37−1〜DBI37−1には、プラットフォームA10−1〜プラットフォームH10−8のそれぞれに応じた公開領域にアクセスさせるためのアクセス情報が設定されている。
【0034】
ATU33−1は、入力アドレス変換部34−1、出力アドレス変換部35−1、アドレス変換情報36−1、及びDBI37−1を備える。入力アドレス変換部34−1及び出力アドレス変換部35−1は、CPU,MPU,GPU,DSP,ASIC,PLD,FPGA等によって実現されてよい。
【0035】
アドレス変換情報36−1は、プラットフォームA10−1から出力されたアドレスを、PCIeブリッジコントローラ30のアドレス空間におけるアドレスに変換する変換規則が設定されている。さらに、アドレス変換情報36−1は、プラットフォーム10がアクセスすることができない領域としてDBI37−1以外の領域に設けられている変換規則の例とする。すなわち、アドレス変換情報36−1は、プラットフォーム10が書き換えることができない領域に設けられている。
【0036】
DBI37−1は、プラットフォームA10−1〜プラットフォームH10−8のそれぞれに応じた公開領域にアクセスさせるためのアクセス情報を含む情報が設定される設定領域である。
【0037】
入力アドレス変換部34−1は、変換部の一例である。入力アドレス変換部34−1は、アドレス空間要求部311が要求したアドレス空間のアドレスと、DBI37−1のアドレスとが対応付けられたアドレス変換情報36−1であって、プラットフォーム10が書き換えることができない領域に設けられたアドレス変換情報36−1に基づいて、プラットフォームA10−1から入力されたアドレスを変換する。
【0038】
さらに詳しくは、アドレス空間要求部311は、DBI37−1にアクセスするアドレスのアドレス空間をプラットフォームA10−1に要求する。これにより、プラットフォームA10−1は、BAR2において、要求されたアドレス空間のアドレスを、DBI37−1にアクセスするためのアドレスと定義する。但し、プラットフォームA10−1が定義したアドレスは、プラットフォームA10−1のアドレス空間のアドレスである。そこで、入力アドレス変換部34−1は、プラットフォームA10−1のアドレス空間におけるDBI37−1のアドレスが入力された場合に、PCIeブリッジコントローラ30のアドレス空間のDBI37−1のアドレスに変換する。この時、入力アドレス変換部34−1は、アドレスの変換規則が規定されたアドレス変換情報36−1に基づいて、プラットフォームA10−1から入力されたアドレスを変換する。
【0039】
出力アドレス変換部35−1は、DBI37−1に基づいて、PCIeブリッジコントローラ30から出力されるアドレスを、プラットフォーム10のアドレス空間に対応したアドレスに変換する。
【0040】
次に、プラットフォーム10について説明する。また、プラットフォームA10−1〜プラットフォームH10−8は、略同一の構成であるため、プラットフォームA10−1を例に説明する。
【0041】
プラットフォームA10−1は、プロセッサ11−1と、メモリ12−1と、Tx13−1と、Rx14−1とを備える。
【0042】
メモリ12−1は、ROM、及びRAMを含む記憶メモリである。ROMには、各種ソフトウェアプログラムやこのプログラム用のデータ類が書き込まれている。メモリ12−1に記憶されたプログラム121−1は、プロセッサ11−1に読み込まれて実行される。また、RAMは、ワーキングメモリとして利用される。
【0043】
Tx13−1は、アドレスやデータを送信する回路である。Rx13−1は、アドレスやデータを受信する回路である。
【0044】
また、プロセッサ11−1は、メモリ12−1に記憶されるプログラム121−1を実行することによって、
図2に示す機能を実現する。具体的には、機能部として、アドレス空間設定部111−1、及び公開領域設定部112−1を備える。
【0045】
アドレス空間設定部111−1は、BAR2のアドレス空間を設定する。更に詳しくは、アドレス空間設定部111−1は、PCIeブリッジコントローラ30の接続を検出した場合に、BAR2として設定可能な最大アドレス空間を示す情報をPCIeブリッジコントローラ30に送信する。PCIeブリッジコントローラ30は、応答として、1のDBI37−1にアクセス可能なアドレス空間以下のアドレス空間を指定する。そこで、アドレス空間設定部111−1は、指定されたアドレス空間をBAR2のアドレス空間として設定する。
【0046】
公開領域設定部112−1は、設定部の一例である。公開領域設定部112−1は、自装置であるプラットフォームA10−1が公開する公開領域にアクセスさせるためのアクセス情報をDBI37−1に設定する。更に詳しくは、公開領域設定部112−1は、公開領域にアクセスさせるためのアクセス情報の設定要求をPCIeブリッジコントローラ30に送信する。PCIeブリッジコントローラ30は、要求されたアクセス情報をDBI37−1に設定する。これにより、公開領域設定部112−1は、公開領域にアクセスさせるためのアクセス情報をDBI37−1に設定する。
【0047】
次に、PCIeブリッジコントローラ30を介した通信におけるアドレス変換について説明する。
図3は、プラットフォームA10−1からプラットフォームC10−3への通信に伴うアドレス変換の一例を説明する図である。
【0048】
まず、
図3を用いて、DBI37−1に対する書き込みについて説明する。
【0049】
プラットフォームA10−1は、DBI37−1に対して書き込みを実行する場合、BAR2のアドレス空間を指定する。ここで、プラットフォームA10−1のBAR2のアドレス空間は、1のDBI37−1を指定可能なアドレス空間以下になっている。そのため、プラットフォームA10−1は、自装置以外のDBI37−1を指定することができないようになっている。
【0050】
プラットフォームA10−1は、BAR2を指定することで自装置のDBI37−1のアドレスを指定したライト要求をTx13−1から送信する。
【0051】
入力アドレス変換部34−1は、ライト要求を受信した場合に、アドレス変換情報36−1に基づいて、ライト要求のアドレスをPCIeブリッジコントローラ30のアドレス空間のアドレスに変換する。例えば、入力アドレス変換部34−1は、DBI37−1のアドレスに変換する。すなわち、
図3の矢印が示すように、入力アドレス変換部34−1は、プラットフォームA10−1のアドレス空間のアドレスを、PCIeブリッジコントローラ30のアドレス空間のアドレスに変換する。
【0052】
アドレス空間要求部311は、入力アドレス変換部34−1が変換後のアドレスに基づいて、ライト要求により要求されたライトデータをDBI37−1に書き込む。
【0053】
次に、
図3を用いて、プラットフォーム10のバッファエリア等のメモリ空間上の公開領域に対する書き込みについて説明する。
【0054】
プラットフォームA10−1は、他のプラットフォームB10−2〜プラットフォームH10−8の何れかのバッファエリア等のメモリ空間上の公開領域に書き込みを実行する場合、BAR0における対象のプラットフォーム10のアドレスを指定してライト要求をTx13−1から送信する。
【0055】
入力アドレス変換部34−1は、ライト要求を受信した場合に、アドレス変換情報36−1に基づいて、PCIeブリッジコントローラ30のアドレス空間にライト要求のアドレスを変換する。
【0056】
PCIeブリッジコントローラ30のプロセッサ31は、入力アドレス変換部34−1が変換後のアドレスに基づいて、ライト要求を誘導する。例えば、プロセッサ31は、プラットフォームC10−3に対するライト要求の場合、プラットフォームC10−3に対応したATU33−3にライト要求を誘導する。
【0057】
ATU33−3の出力アドレス変換部35−3は、ライト要求を受信した場合に、DBI37−3に基づいて、プラットフォームC10−3のバッファエリア等のメモリ空間上の公開領域に対応したアドレスにライト要求のアドレスを変換する。すなわち、
図3の矢印が示すように、出力アドレス変換部35−3は、PCIeブリッジコントローラ30のアドレス空間のアドレスを、プラットフォームC10−3のアドレス空間のアドレスに変換する。このようにして、分散型コンピュータ1は、プラットフォーム10間での書き込みを実行する。
【0058】
次に、分散型コンピュータ1による設定処理について説明する。
図4は、実施例1にかかる設定処理の一例を示すシーケンス図である。なお、
図4では、プラットフォームA10−1の場合を例に説明するが、プラットフォームB10−2〜プラットフォームH10−8でも同様の処理を実行する。
【0059】
プラットフォーム10のアドレス空間設定部111−1は、PCIeブリッジコントローラ30が接続されたことを検出する(ステップS1)。
【0060】
アドレス空間設定部111−1は、BAR2として受入可能な最大アドレス空間を示す情報をPCIeブリッジコントローラ30に送信する(ステップS2)。
【0061】
アドレス空間要求部311は、1のDBI37−1を指定可能なアドレス空間をBAR2として設定するように要求する(ステップS3)。
【0062】
アドレス空間設定部111−1は、指定されたアドレス空間をBAR2として設定する(ステップS4)。
【0063】
アドレス変換設定部312は、プラットフォーム10に応じたアドレス変換の変換規則をアドレス変換情報36−1に設定する(ステップS5)。
【0064】
公開領域設定部112−1は、バッファエリア等のメモリ空間上の公開領域にアクセスさせるためのアクセス情報をDBI37−1に設定するように要求する(ステップS6)。
【0065】
アドレス変換設定部312は、指定されたアクセス情報をDBI37−1に設定する(ステップS7)。これにより、出力アドレス変換部35−1は、DBI37−1に基づいてアドレスを変換することで、バッファエリア等の公開領域のアドレスをプラットフォーム10に送信することができる。
【0066】
以上のように、実施例1にかかる分散型コンピュータ1によれば、PCIeブリッジコントローラ30のアドレス空間要求部311は、BAR2のアドレス空間として、1のプラットフォーム10のDBI37−1〜37−8にアクセスするためのアドレス空間以下のアドレス空間を要求する。すなわち、アドレス空間要求部311は、プラットフォーム10が自装置のDBI37−1〜37−8にアクセスすることができるだけのアドレス空間を要求する。ここで、入力アドレス変換部34−1〜34−8は、アドレス変換情報36−1〜36−8に基づいて、アドレスを変換している。そのため、プラットフォーム10は、BAR2のアドレス空間が制限されても、アドレス変換情報36−1〜36−8を書き換えることで、BAR2のアドレス空間のアドレスと、他のプラットフォーム10のDBI37−1〜37−8のアドレスとが対応付けることができてしまう。そこで、アドレス変換情報36−1〜36−8は、プラットフォーム10がアクセスすることができない領域に記憶される。このようにして、PCIeブリッジコントローラ30は、プラットフォーム10が他のプラットフォーム10のDBI37−1〜37−8にアクセスすることが出来なくなるようにしている。よって、PCIeブリッジコントローラ30は、非公開の領域が公開されてしまうことを防止することができる。