JP2021096659A - 情報処理システム、プラットフォーム、およびプログラム - Google Patents

情報処理システム、プラットフォーム、およびプログラム Download PDF

Info

Publication number
JP2021096659A
JP2021096659A JP2019227674A JP2019227674A JP2021096659A JP 2021096659 A JP2021096659 A JP 2021096659A JP 2019227674 A JP2019227674 A JP 2019227674A JP 2019227674 A JP2019227674 A JP 2019227674A JP 2021096659 A JP2021096659 A JP 2021096659A
Authority
JP
Japan
Prior art keywords
data
platform
transmission buffer
transmission
bridge driver
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.)
Granted
Application number
JP2019227674A
Other languages
English (en)
Other versions
JP6836087B1 (ja
Inventor
勇気 河間
Yuki Kawama
勇気 河間
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 Client Computing Ltd
Original Assignee
Fujitsu Client Computing 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 Client Computing Ltd filed Critical Fujitsu Client Computing Ltd
Priority to JP2019227674A priority Critical patent/JP6836087B1/ja
Priority to GBGB2014862.3A priority patent/GB202014862D0/en
Application granted granted Critical
Publication of JP6836087B1 publication Critical patent/JP6836087B1/ja
Publication of JP2021096659A publication Critical patent/JP2021096659A/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Multi Processors (AREA)
  • Information Transfer Systems (AREA)

Abstract

【課題】送信用バッファの解放に起因する通信速度の低下を抑制する。【解決手段】本開示の第1態様にかかる情報処理システムは、複数のプラットフォームと、中継装置と、を備える。第1プラットフォームは、第1ブリッジドライバを備える。第1ブリッジドライバは、第2プラットフォームへのデータの送信要求に応じて、第1プラットフォームの送信用バッファにデータを書き込むとともに中継装置に第2プラットフォームへのデータの転送を実行させ、第2プラットフォームに対してデータの受信要求を送信する。第1ブリッジドライバは、送信用バッファにデータを書き込むごとに、送信用バッファのうちのデータが書き込まれた領域を上書き不可能なロック領域に設定し、書き込まれたデータの送受信が完了しており、かつ第2ブリッジドライバからの受信完了通知が複数回受信された場合に、ロック領域を上書き可能なアンロック領域に設定する。【選択図】図6

Description

本開示は、情報処理システム、プラットフォーム、およびプログラムに関する。
複数のプロセッサ(プラットフォーム)と、当該複数のプロセッサを通信可能に接続するバスを有する中継装置と、を備えた情報処理システムが知られている。このような情報処理システムでは、プロセッサ間におけるデータの送受信が、いずれかの装置の送信用バッファを介して行われることが一般的である。
特開2008−041027号公報
ところで、上記のような送信用バッファを介したプロセッサ(プラットフォーム)間でのデータの送受信においては、送受信が完了するまで、送信用バッファのうちのデータが書き込まれた領域を上書き不可能なロック領域に設定することが一般的である。この場合、書き込まれたデータの送受信が完了された時点で、ロック領域が上書き可能なアンロック領域に変更される、すなわち送信用バッファが解放されることが一般的である。
しかしながら、プロセッサ(プラットフォーム)間での通信が頻繁に発生する場合、データの送受信が1回完了するごとに、書き込まれたデータの送受信が完了した送信用バッファの解放を実行すると、通信の方に割かれるリソースが低減するので、通信速度の低下につながりやすい。
本開示の第1態様にかかる情報処理システムは、複数のプラットフォームと、中継装置と、を備える。中継装置は、拡張バスを介して複数のプラットフォームを通信可能に接続する。複数のプラットフォームのうちの第1プラットフォームは、第1ブリッジドライバを備える。第1ブリッジドライバは、複数のプラットフォームのうちの第1プラットフォームとは異なる第2プラットフォームへのデータの送信要求に応じて、第1プラットフォームの送信用バッファにデータを書き込むとともに中継装置に第2プラットフォームへのデータの転送を実行させ、第2プラットフォームに対してデータの受信要求を送信する。第2プラットフォームは、第2ブリッジドライバを備える。第2ブリッジドライバは、第1ブリッジドライバにより送信された受信要求に応じて、送信用バッファからデータを取得し、データを取得したバッファ領域に送受信完了のフラグを立て、第1プラットフォームに対してデータの受信完了通知を送信する。第1ブリッジドライバは、送信用バッファにデータを書き込むごとに、送信用バッファのうちのデータが書き込まれた領域を上書き不可能なロック領域に設定し、書き込まれたデータの送受信が完了しており、かつ第2ブリッジドライバからの受信完了通知が複数回受信された場合に、ロック領域を上書き可能なアンロック領域に設定する。
本開示の第2態様にかかるプラットフォームは、中継装置により拡張バスを介して通信可能に接続された複数のプラットフォームに含まれる。プラットフォームは、ブリッジドライバを備える。ブリッジドライバは、複数のプラットフォームに含まれる他のプラットフォームへのデータの送信要求に応じて、送信側プラットフォームの送信用バッファにデータを書き込むとともに中継装置に他のプラットフォームへのデータの転送を実行させ、他のプラットフォームに対してデータの受信要求を送信する。ブリッジドライバは、送信用バッファにデータを書き込むごとに、送信用バッファのうちのデータが書き込まれた領域を上書き不可能なロック領域に設定し、書き込まれたデータの送受信が完了しており、かつ受信要求の送信に応じて他のプラットフォームから送信される受信完了通知が複数回受信された場合に、ロック領域を上書き可能なアンロック領域に設定する。
本開示の第3態様にかかるプログラムは、中継装置により拡張バスを介して通信可能に接続された複数のプラットフォームに含まれるプラットフォームとしてのコンピュータに、複数のプラットフォームに含まれる他のプラットフォームへのデータの送信要求に応じて、送信側プラットフォームの送信用バッファにデータを書き込むとともに中継装置に他のプラットフォームへのデータの転送を実行させ、他のプラットフォームに対してデータの受信要求を送信することと、送信用バッファにデータを書き込むごとに、送信用バッファのうちのデータが書き込まれた領域を上書き不可能なロック領域に設定し、書き込まれたデータの送受信が完了しており、かつ受信要求の送信に応じて他のプラットフォームから送信される受信完了通知が複数回受信された場合に、ロック領域を上書き可能なアンロック領域に設定することと、を実行させるためのプログラムである。
本開示の情報処理システム、プラットフォーム、およびプログラムによれば、送信用バッファの解放に起因する通信速度の低下を抑制することができる。
図1は、実施形態にかかる情報処理システムの全体構成を示した例示的かつ模式的なブロック図である。 図2は、実施形態にかかる情報処理システムのプラットフォームおよび中継装置にハードウェア構成を例示的かつ模式的なブロック図である。 図3は、実施形態にかかるプラットフォームのソフトウェア構成を示した例示的かつ模式的なブロック図である。 図4は、実施形態にかかる情報処理システムが実行する通信処理を説明するための例示的かつ模式的な図である。 図5は、実施形態にかかる送信用バッファを介したデータの送受信を説明するための例示的かつ模式的な図である。 図6は、実施形態にかかるプラットフォーム間でのデータの送受信時に実行される処理の流れを示した例示的かつ模式的なシーケンス図である。
以下、本開示の実施形態および変形例を図面に基づいて説明する。以下に記載する実施形態および変形例の構成、ならびに当該構成によってもたらされる作用および効果は、あくまで一例であって、以下の記載内容に限られるものではない。
<実施形態>
図1は、実施形態にかかる情報処理システム1の全体構成を示した例示的かつ模式的なブロック図である。
図1に示されるように、実施形態にかかる情報処理システム1は、複数のプラットフォーム10−1〜10−8、および中継装置30を備えている。プラットフォーム10−1〜10−8は、たとえば中継装置30が設けられたボード上の複数のスロットに挿入されている。これにより、プラットフォーム10−1〜10−8は、中継装置30を介して互いに通信可能に接続されている。
なお、以下では、互いに区別する必要が無い場合、複数のプラットフォーム10−1〜10−8のうちの任意のプラットフォームを、単にプラットフォーム10と記載することがある。また、図1には、情報処理システム1が8個のプラットフォーム10を備える構成が例示されているが、実施形態において、プラットフォーム10の個数は、複数であれば、8個以外であってもよい。
また、以下では、プラットフォーム10と中継装置30との間の通信がPCIe(Peripheral Component Interconnect-Express)(登録商標)に基づく通信規格に従って実行される場合について説明するが、実施形態では、PCIe(登録商標)以外の通信規格に従った通信が実行されてもよい。
プラットフォーム10−1〜2−8は、情報処理システム1の制御部およびGUI(Graphical User Interface)として機能するホスト装置と、AI(Artificial Intelligence)推論処理および画像処理などを実行する演算装置と、を含んでいる。以下では、一例として、プラットフォーム10−1がホスト装置として機能し、プラットフォーム10−2〜10−8が演算装置として機能するものとする。なお、演算装置としてのプラットフォーム10−2〜10−8は、それぞれが異なる機能を有していてもよいし、少なくとも一部が共通する機能を有していてもよい。
プラットフォーム10−1〜2−8は、それぞれ、ルートコンプレックス11−1〜11−8を備えており、中継装置30は、ルートコンプレックス11−1〜11−8にそれぞれ対応したエンドポイント31−1〜31−8を備えている。以下では、互いに区別する必要が無い場合、ルートコンプレックス11−1〜11−8のうちの任意のルートコンプレックスを単にルートコンプレックス11と記載し、エンドポイント31−1〜31−8のうちの任意のエンドポイントを単にエンドポイント31と記載することがある。
なお、図1には、プラットフォーム10とルートコンプレックス11とが1対1で対応している構成が例示されているが、実施形態では、プラットフォーム10とルートコンプレックス11とが必ずしも1対1で対応している必要はない。たとえば、実施形態では、1つのプラットフォーム10が2個以上のルートコンプレックス11を備えていてもよい。
上述したプラットフォーム10および中継装置30は、次の図2に示されるようなハードウェア構成を有している。
図2は、実施形態にかかる情報処理システム1のプラットフォーム10および中継装置30のハードウェア構成を示した例示的かつ模式的なブロック図である。
まず、プラットフォーム10のハードウェア構成について説明する。
図2に示されるように、プラットフォーム10−1は、ルートコンプレックス11−1と、プロセッサ12−1と、メモリ13−1と、記憶部14−1と、を備えている。これらのハードウェア(回路:circuitry)は、バス(不図示)を介して通信可能に接続されている。
また、他のプラットフォーム10−2〜10−8も、プラットフォーム10−1と同様のハードウェア構成を備えている。すなわち、プラットフォーム10−2〜10−8は、それぞれ、ルートコンプレックス11−2〜11−8と、プロセッサ12−2〜12−8と、メモリ13−2〜13−8と、記憶部14−2〜14−8と、を備えている。
以下では、互いに区別する必要が無い場合、プロセッサ12−1〜12−8のうちの任意のプロセッサを単にプロセッサ12と記載し、メモリ13−1〜13−8のうちの任意のメモリを単にメモリ13と記載し、記憶部14−1〜14−8のうちの任意の記憶部を単に記憶部14と記載することがある。
ルートコンプレックス11は、対応するエンドポイント31との通信を実行する。実施形態において、ルートコンプレックス11とエンドポイント31とは、たとえば通信規格の一つとしてのPCIe(Peripheral Component Interconnect Express)(登録商標)に従って通信を実行する。ただし、プラットフォーム10と中継装置30とは、PCIe(登録商標)以外の他の通信規格に従って通信を実行してもよい。
プロセッサ12は、プラットフォーム10の各部の制御を司る。プロセッサ12は、たとえばCPU(Central Processing Unit)、MPU(Micro Processing Unit)、DSP(Digital Signal Processor)、ASIC(Application Specific Integrated Circuit)、PLD(Programmable Logic Device)、またはFPGA(Field Programmable Gate Array)などにより構成される。プロセッサ12は、マルチコアプロセッサとして構成されていてもよいし、2以上のプロセッサの組合せとして構成されていてもよい。
メモリ13は、プロセッサ12による制御に必要なデータおよびプロセッサ12による制御の結果として生成されるデータなどを記憶する。メモリ13は、たとえばROM(Read Only Memory)およびRAM(Random Access Memory)などにより構成される。ROMは、たとえばプロセッサ12が実行する各種のソフトウェア(コンピュータプログラム)や当該ソフトウェア用のデータを記憶し、RAMは、ROMに記憶されるソフトウェアを実行するための作業領域をプロセッサ12に提供する。
記憶部14は、たとえばプロセッサ12が実行する各種のソフトウェア(コンピュータプログラム)および他のプラットフォーム10との間で送受信するデータなどを含む各種のデータを(不揮発的に)記憶する。記憶部14は、たとえばHDD(Hard Disk Drive)、SSD(Solid State Drive)、およびSCM(Storage Class Memory)などにより構成される。
プラットフォーム10は、メモリ13または記憶部14に格納されたコンピュータプログラムをプロセッサ12により実行することで、AI推論処理または画像処理を実行するための各種の機能を実現する。
なお、上記のコンピュータプログラムは、必ずしもメモリ13または記憶部14に記憶されている必要はない。たとえば、上記のコンピュータプログラムは、フレキシブルディスク(FD)のような各種の磁気ディスク、またはDVD(Digital Versatile Disk)のような各種の光ディスクなどといった、コンピュータで読み取り可能な記録媒体にインストール可能な形式または実行可能な形式で記録されたコンピュータプログラムプロダクトとして提供されてもよい。
また、上記のコンピュータプログラムは、インターネットなどのネットワーク経由で提供または配布されてもよい。すなわち、上記のコンピュータプログラムは、は、インターネットなどのネットワークに接続されたコンピュータ上に格納された状態で、当該コンピュータからネットワーク経由でダウンロードする、といった形で提供されてもよい。
次に、プラットフォーム10間の通信を中継する中継装置30のハードウェア構成について説明する。
図2に示されるように、中継装置30は、エンドポイント31と、プロセッサ32と、メモリ33と、記憶部34と、内部バス35と、拡張バス36と、を備えている。
エンドポイント31は、プラットフォーム10に対応するように設けられる。エンドポイント31は、拡張バス36を介して、プラットフォーム10のうちの第1プラットフォームから当該第1プラットフォームとは異なる第2プラットフォームへのデータの送信(転送)を実行する。
たとえば、ルートコンプレックス11−5がDMA(Direct Memory Access)転送によりプラットフォーム10−1にデータを送信すると、中継装置30は、ルートコンプレックス11−5に対応したエンドポイント31−1から拡張バス36を介してデータを受信し、受信したデータをプラットフォーム10−1に転送する。
プロセッサ32は、中継装置30の各部を制御する。プロセッサ32は、プロセッサ12は、たとえばCPU、MPU、DSP、ASIC、PLD、またはFPGAなどにより構成される。プロセッサ12は、マルチコアプロセッサとして構成されていてもよいし、2以上のプロセッサの組合せとして構成されていてもよい。
メモリ33は、プロセッサ32による制御に必要なデータおよびプロセッサ32による制御の結果として生成されるデータなどを記憶する。メモリ33は、たとえばROMおよびRAMなどにより構成される。
記憶部34は、各種のデータを(不揮発的に)記憶する。記憶部34は、たとえばHDD、SSD、およびSCMなどにより構成される。
中継装置30は、メモリ33または記憶部34に格納されたコンピュータプログラムをプロセッサ32により実行することで、プラットフォーム10間の通信を中継するための各種の機能を実現する。
内部バス35は、プロセッサ32、メモリ33、記憶部34、および拡張バス36を通信可能に接続する。
拡張バス36は、複数のエンドポイント31、および内部バス35を通信可能に接続する。これにより、拡張バス36は、複数のエンドポイント31間でのデータの転送、すなわちプラットフォーム10間でのデータの転送が可能になる。なお、拡張バス36は、例えばPCIe(登録商標)に準拠したバスである。
以上のようなハードウェア構成に基づき、実施形態にかかるプラットフォーム10は、次の図3に示されるようなソフトウェア構成を実現する。
図3は、実施形態にかかるプラットフォーム10のソフトウェア構成を示した例示的かつ模式的な図である。
図2に示されるように、ホスト装置としてのプラットフォーム10−1は、BIOS(Basic Input Output System)202と、OS(Operating System)203と、ドライバ204と、サービス205と、仮想LAN(Local Area Network)ドライバ206と、分散制御部207と、共通ソフトウェア208と、を実現する。これらのソフトウェア構成に基づき、プラットフォーム10−1は、アプリケーション209を実行し、プラットフォーム10−1に備えられたハードウェア資源としてのPC(Personal Computer)プラットフォーム1001を制御する。
BIOS202は、プラットフォーム10−1の起動時におけるOS203の読み込み、およびプラットフォーム10−1に対する基本的な入出力制御などを実行する。OS203は、たとえばWindows(登録商標)であるが、他のOSであってもよい。
OS203は、上記の拡張バスを制御するためのブリッジドライバ204Aを含む各種のドライバ204を読み込むことで、プラットフォーム10−1のルートコンプレックス11−1にアクセスし、他のプラットフォーム10との間で通信を実行する。また、OS203は、様々な制御を行うためのサービス205を読み込むことで、様々な処理を実行する。
仮想LANドライバ206および分散制御部207は、ドライバ204およびサービス205の上層に実現されている。そして、共通ソフトウェア208は、仮想LANドライバ206および分散制御部207の上層でかつアプリケーション209の下層に実現されている。これにより、アプリケーション209は、共通ソフトウェア208を介して仮想LANドライバ206にアクセスすることで、他のプラットフォーム10が仮想的なLAN上に存在するものとみなして、他のプラットフォーム10との間で通信を実行する。
一方、演算装置としてのプラットフォーム10−2および10−3は、Bootloader212と、OS213と、ドライバ214と、仮想LANドライバ215と、分散制御部216と、共通ソフトウェア217と、を実現する。これらのソフトウェア構成に基づき、プラットフォーム10−2および10−3は、それぞれ、分散処理Aおよび分散処理Bを実行し、プラットフォーム10−2および10−3に備えられたハードウェア資源としてのハードウェアプラットフォーム1011を制御する。
なお、図3では、簡単化のため、プラットフォーム10−2および10−3のソフトウェア構成についてのみ図示されているが、実施形態では、演算装置としての他のプラットフォーム10−4〜10−8も、プラットフォーム10−2および10−3と同様のソフトウェア構成を実現しうる。
Bootloader212は、対応するプラットフォーム10の電源投入時に起動し、OS213を起動させる。OS203は、たとえばLinux(登録商標)であるが、他のOSであってもよい。
OS213は、上記の拡張バスを制御するためのブリッジドライバ214Aを含む各種のドライバ214を読み込むことで、対応するルートコンプレックス11にアクセスし、他のプラットフォーム10との間との間で通信を実行する。
仮想LANドライバ215および分散制御部216は、ドライバ214の上層に実現されている。そして、共通ソフトウェア217は、仮想LANドライバ215および分散制御部216の上層でかつ対応する分散処理の下層に実現されている。これにより、分散処理A、分散処理Bは、共通ソフトウェア217を介して仮想LANドライバ215にアクセスすることで、他のプラットフォーム10が仮想的なLAN上に存在するものとみなして、他のプラットフォーム10との間で通信を実行する。
以上のソフトウェア構成に基づき、実施形態にかかる情報処理システム1は、プラットフォーム10間での通信の際に、次の図4に示されるような通信処理を実行する。図4には、ホスト装置としてのプラットフォーム10−1と演算装置としてのプラットフォーム10−5との間の通信処理が例示されているが、他のプラットフォーム10間の通信処理も同様に実行されうる。
図4は、実施形態にかかる情報処理システム1が実行する通信処理を説明するための例示的かつ模式的な図である。
図4に示されるように、情報処理システム1は、所定の複数の層を含むレイヤー構造を有している。情報処理システム1は、複数の層を介して、プラットフォーム10間での通信を実行する。
たとえば、ホスト装置としてのプラットフォーム10−1のソフトウェアが演算装置としてのプラットフォーム10−5へとデータを送信(転送)する場合について説明する。この場合、プラットフォーム10−1のソフトウェアは、プラットフォーム10−1のトランザクション層、データリンク層、および物理層(PHY)を介して、中継装置30の物理層、より具体的にはプラットフォーム10−1が接続されたエンドポイント31−1に対応した物理層にデータを転送する。
エンドポイント31−1に対応した物理層にデータが転送された場合、中継装置30は、当該データを、データリンク層を介してトランザクション層に受け渡す。そして、中継装置30は、トランザクション層において、プラットフォーム10−5が接続されたエンドポイント31−5にトンネリングによりデータを転送する。そして、中継装置300は、トンネリングにより転送されたデータを、データリンク層およびエンドポイント31−5に対応した物理層を介して、プラットフォーム10−5の物理層に転送する。
なお、プラットフォーム10−5は、中継装置30から転送されたデータを、物理層、データリンク層、およびトランザクション層を介して、ソフトウェアに受け渡す。
このように、実施形態では、中継装置30のトランザクション層におけるデータのトンネリングにより、プラットフォーム10−1からプラットフォーム10−5へのデータの転送が実現される。また、プラットフォーム10−5からプラットフォーム10−1へのデータの転送は、上記とは逆の順序でデータが各層を移動することで実現される。
なお、実施形態では、特定のプラットフォーム10に対して他のプラットフォーム10からのデータの転送が集中しない場合、異なる任意の複数組のプラットフォーム10間において並行してデータの転送を実行することも可能である。
すなわち、特定のプラットフォーム10に対して他のプラットフォーム10からの複数の通信が集中する場合、中継装置30は、当該他のプラットフォーム10からの複数の通信をシリアルに処理する。しかしながら、異なるプラットフォーム10同士が通信し、特定のプラットフォーム10に通信が集中しない場合には、中継装置30は、プラットフォーム10間の複数の通信を並行して処理することが可能である。
ここで、実施形態において、プラットフォーム10間でのデータの送受信は、次の図5に示されるような形で、各プラットフォーム10に設けられる送信用バッファ502を介して実行される。なお、図5では、中継装置30の図示が省略されているが、図4を参照して既に説明した通り、プラットフォーム10間におけるDMA(Direct Memory Access)によるデータの送受信は、中継装置30により中継される。
図5は、実施形態にかかる送信用バッファ502を介したデータの送受信を説明するための例示的かつ模式的な図である。
図5に示されるように、各プラットフォーム10は、各プラットフォーム10に送信するデータを書き込む記憶領域としての送信用バッファ502を有している。ここでは、プラットフォーム10−1〜10−8がそれぞれ有する送信用バッファ502−1〜502−8を総称して送信用バッファ502と記載している(ただし、図5に図示されているのは送信用バッファ502−1および502−5のみである)。送信用バッファ502は、たとえばメモリ13上に実現される。
なお、図5に示される例は、上述した図4に示される例と同様、プラットフォーム10−5からプラットフォーム10−1へとデータが送信される場合を想定している。したがって、以下では、プラットフォーム10−5の送信用バッファ502−5を介したデータの送受信について主に説明する。
図5に示される例では、まず、ステップS501において、プラットフォーム10−5のたとえば仮想LANドライバ206は、プラットフォーム10−1へのデータの送信要求を、プラットフォーム10−5の送信用バッファ502−5のうちSlot#0で示される領域に対して発行する。
ここで、Slot#0で示される領域とは、プラットフォーム10−1へのデータの送信用の領域である。送信用バッファ502−5は、Slot#0で示されるアドレスレンジの他にも、他のプラットフォーム10へのデータの送信用の複数の領域を有している。
そして、ステップS502において、プラットフォーム10−5のブリッジドライバ214Aは、上記の送信要求に応じて、Slоt#0で示される領域に、プラットフォーム10−1に送信すべきデータを書き込む。
そして、ステップS503において、中継装置30(図5には不図示)は、たとえばEPtoEP(Endpoint to Endpoint)などの処理により、プラットフォーム10−5に対応したエンドポイント31−5とプラットフォーム10−1に対応したエンドポイント31−1とを接続し、プラットフォーム10−5からプラットフォーム10−1へとデータを転送する。
ところで、プラットフォーム10−5のブリッジドライバ214Aは、上記のステップS502におけるデータの書き込みが終了すると、プラットフォーム10−1に対して中継装置30を介したデータの受信要求を行う。
そして、ステップS504において、プラットフォーム10−1のブリッジドライバ204Aは、プラットフォーム10−5からの受信要求に応じて、中継装置30を介してプラットフォーム10−5から転送されたデータを取得し、取得したデータを、メモリ13−1に設けられるバッファを介して記憶部1401に格納する。
このようにして、中継装置30を介したプラットフォーム10−5からプラットフォーム10−1へのデータの送信が実行される。
なお、図5に示されるように、プラットフォーム10−1も、プラットフォーム10−5の送信用バッファ502−5と同様の送信用バッファ502−1が設けられている。プラットフォーム10−1は、送信用バッファ502−1を利用して、他のプラットフォーム10へのデータの送信を実行することが可能である。さらに、図5では図示が省略されているが、他のプラットフォーム10も、同様の送信用バッファ502を有している。したがって、実施形態では、任意のプラットフォーム10間におけるデータの送受信を上記と同様の処理により実現することが可能である。
ところで、上記のような送信用バッファ502を介したデータの送受信においては、送受信が完了するまで、送信用バッファ502のうちのデータが書き込まれた領域を、上書き不可能なロック領域に設定することが一般的である。この場合、書き込まれたデータの送受信が完了された段階で、ロック領域が上書き可能なアンロック領域に変更される、すなわち送信用バッファ502が解放されることが一般的である。
しかしながら、実施形態にかかる情報処理システム1のような、複数のプラットフォーム10が設けられた構成では、プラットフォーム10間での通信が頻繁に発生する場合もありうる。この場合、データの送受信が1回完了するごとに、書き込まれたデータの送受信が完了した送信用バッファ502の解放を実行すると、通信の方に割かれるリソースが低減するので、通信速度の低下が発生しやすい。
そこで、実施形態は、送信用バッファ502の解放を、データの送受信が1回完了するごとではなく、データの送受信が複数回完了することに応じて、書き込まれたデータの送受信が完了した箇所について実行するように構成されている。このような構成によれば、送信用バッファ502の解放の頻度が少なくなるので、通信の方により多くのリソースを割くことができる。したがって、送信用バッファ502の解放に起因する通信速度の低下を抑制することができる。
さらに、実施形態は、次の図6に示されるように、送信用バッファ502の空き、すなわち送信用バッファ502においてデータの送信のために書き込み可能なアンロック領域の大きさに関する空き情報に応じて、送信用バッファ502の解放の頻度を動的に変更することが可能なように構成されている。
図6は、実施形態にかかるプラットフォーム10間でのデータの送受信時に実行される処理の流れを示した例示的かつ模式的なシーケンス図である。
ここでは、一例として、プラットフォーム10−5からプラットフォーム10−1へのデータの送信(転送)について説明する。図6に示される例では、プラットフォーム10−5の仮想LANドライバ215およびブリッジドライバ214Aがそれぞれ「送信側仮想LANドライバ」および「送信側ブリッジドライバ」として図示され、プラットフォーム10−1のブリッジドライバ204Aが「受信側ブリッジドライバ」として図示されている。
図6に示されるように、実施形態では、まず、ステップS610において、送信側仮想LANドライバとしての仮想LANドライバ215は、送信側ブリッジドライバとしてのブリッジドライバ214Aに対して、プラットフォーム10−1へのデータの送信要求を実行する。
そして、ステップS620において、ブリッジドライバ214Aは、仮想LANドライバ215からの送信要求に応じて、プラットフォーム10−5の送信用バッファ502−5のうちプラットフォーム10−1へのデータの送信用の領域に、送信するデータを書き込み、中継装置30にプラットフォーム10−1へのデータの転送を実行させる。そして、ブリッジドライバ214Aは、送信用バッファ502−5の空きに関する空き情報を更新する。空き情報は、たとえば、送信用バッファ502−5の各領域がロック領域およびアンロック領域のいずれに設定されているかを示すフラグなどを管理するためのテーブルとして実現されうる。
そして、ステップS630において、ブリッジドライバ214Aは、受信側ブリッジドライバとしてのブリッジドライバ204Aに、中継装置30を介してデータの受信要求を行う。
そして、ステップS640において、ブリッジドライバ204Aは、ブリッジドライバ214Aからの受信要求に応じて、送信用バッファ502−5から中継装置30により転送されたデータを取得する。このとき、送信用バッファ502−5におけるデータの取得が完了した箇所(領域)には、送受信完了のフラグが設定される。
そして、ステップS650において、ブリッジドライバ204Aは、データの取得の完了に応じて、ブリッジドライバ214Aに、中継装置30を介して受信完了通知を送信する。
そして、ステップS660において、ブリッジドライバ214Aは、ブリッジドライバ204Aからの受信完了通知に応じて、プラットフォーム10−5の送信用バッファ502の空き情報を確認する。そして、ブリッジドライバ214Aは、空き情報に応じて、以下に説明するような処理を実行する。
たとえば、空き情報が、送信用バッファ502−5の空き、すなわち送信用バッファ502−5においてデータの送信のために書き込み可能なアンロック領域がゼロであることを示す場合、ステップS671の処理が実行される。この場合、送信用バッファ502−5の解放の頻度が低いために送信用バッファ502−5の空きの不足が発生していると考えることができる。
したがって、この場合、ステップS671において、ブリッジドライバ214Aは、送信用バッファ502の解放の頻度を上げる。たとえば、直近の設定が、受信完了通知がm回受信された場合に送信用バッファ502−5のうち書き込まれたデータの送受信が完了した箇所の解放を実行するという設定になっている場合、ブリッジドライバ214Aは、受信完了通知がm−1回受信された場合に送信用バッファ502−5のうち書き込まれたデータの送受信が完了した箇所の解放を実行するように、送信用バッファ502−5の解放を実行するか否かの基準となる受信完了通知の受信回数を減らす。なお、データの送受信が完了しているか否かは、上述した送受信完了のフラグなどに基づいて判定される。
一方、空き情報が、送信用バッファ502−5の空きが閾値以上であることを示す場合、ステップS672の処理が実行される。閾値は、送信するデータの量を示す値よりも十分に大きい値として設定される。この場合、送信用バッファ502−5の解放の頻度を下げたとしても、送信用バッファ502−5の空きの不足が発生しにくいと考えることができる。
したがって、この場合、ステップS672において、ブリッジドライバ214Aは、送信用バッファ502−5の解放の頻度を下げる。たとえば、直近の設定が、受信完了通知がm回受信された場合に送信用バッファ502−5のうち書き込まれたデータの送受信が完了した箇所の解放を実行するという設定になっている場合、ブリッジドライバ214Aは、受信完了通知がm+1回受信された場合に送信用バッファ502−5のうち書き込まれたデータの送受信が完了した箇所の解放を実行するように、送信用バッファ502−5の解放を実行するか否かの基準となる受信完了通知の受信回数を増やす。
なお、空き情報が、送信用バッファ502−5の空きがゼロより大きく閾値より小さいことを示す場合、ステップS671およびS672のいずれの処理も実行されない。すなわち、この場合、ブリッジドライバ214Aは、送信用バッファ502−5の解放の頻度、すなわち送信用バッファ502−5の解放を実行するか否かの基準となる受信完了通知の受信回数を現状のまま維持する。
そして、ブリッジドライバ214Aは、上記のような頻度の調整(または維持)を経た頻度で、送信用バッファ502−5を解放する。
たとえば、現在の設定が、受信完了通知がn回受信された場合に送信用バッファ502−5の解放を実行するという設定になっている場合、換言すれば送信用バッファ502−5の解放の現在の頻度が1/nに設定されている場合を考える。この場合において、ブリッジドライバ214Aは、直近n−1回の受信完了通知では送信用バッファ502−5の解放を行っていない場合にのみ、ステップS680において、送信用バッファ502−5のうち書き込まれたデータの送受信が完了した箇所を解放する。ただし、直近n−1回の受信完了通知のうちいずれかの受信完了通知に応じて送信用バッファ502−5が解放されている場合、ブリッジドライバ214Aは、送信用バッファ502−5の解放を実行しない。
このようにして、実施形態では、送信用バッファ502−5の解放の頻度が動的に調整される。調整を経た頻度は、最適な頻度に収束していくものだと考えられる。
なお、図6に示される例は、あくまで一例である。実施形態では、プラットフォーム10−5以外の他のプラットフォーム10のブリッジドライバ204Aまたは214Aが送信側ブリッジドライバになり、プラットフォーム10−1以外の他のプラットフォーム10のブリッジドライバ214Aが受信側ブリッジドライバになる場合も考えられる。
以上説明したように、実施形態にかかる送信側ブリッジドライバは、送信用バッファ502にデータを書き込むごとに、送信用バッファ502のうちのデータが書き込まれた領域を上書き不可能なロック領域に設定し、書き込まれたデータの送受信が完了しており、かつ受信側ブリッジドライバからの受信完了通知が複数回受信された場合に、ロック領域を上書き可能なアンロック領域に設定する。このような構成によれば、たとえばデータの送受信が1回完了するごとに必ず送信用バッファ502の解放を実行する場合に比べて、送信用バッファ502の解放の頻度が少なくなるので、通信の方により多くのリソースを割くことができる。したがって、送信用バッファ502の解放に起因する通信速度の低下を抑制することができる。
より具体的に、実施形態にかかる送信側ブリッジドライバは、送信用バッファ502の空きに関する空き情報に基づいて、ロック領域をアンロック領域に設定するか否かの基準となる受信完了通知の受信回数を動的に変更する。このような構成によれば、送信用バッファ502の解放の頻度を空き情報に基づいて適切に調整することができる。
たとえば、実施形態にかかる送信側ブリッジドライバは、上記の空き情報が、送信用バッファ502の空きが所定以上であることを示す場合、ロック領域をアンロック領域に設定する頻度が下がるように、受信回数を変更する。このような構成によれば、空きに余裕がある場合にも送信用バッファ502の解放が実行されることに起因して通信の方に割かれるリソースが低減するのを抑制することができる。
<変形例>
なお、上述した実施形態では、送信用バッファ502の解放の頻度が動的に調整される構成が例示されている。しかしながら、変形例として、送信用バッファ502の解放を実行するか否かの基準となる受信完了通知の受信回数を2以上の値として固定的に設定する構成も考えられる。このような構成によっても、たとえばデータの送受信が1回完了するごとに必ず送信用バッファ502のうち書き込まれたデータの送受信が完了した箇所の解放を実行する場合に比べて、送信用バッファ502の解放の頻度が少なくなるので、通信速度の低下を抑制することができる。
また、上述した実施形態では、一例として、送信用バッファ502の解放を実行するか否かの基準となる受信完了通知の受信回数を1つずつ増減させる構成が例示されている。しかしながら、変形例として、送信用バッファ502の解放を実行するか否かの基準となる受信完了通知の受信回数を2以上増減させる構成も考えられる。この場合、増減させる数が空き情報に応じて決定されてもよい。
また、上述した実施形態では、各部のI/OインターフェースとしてPCIe(登録商標)が例示されているが、I/OインターフェースはPCIe(登録商標)に限定されない。たとえば、各部のI/Oインターフェースは、データ転送バスによって、デバイス(周辺制御コントローラ)とプロセッサとの間でデータ転送を行える技術であればよい。データ転送バスは、1個の筐体等に設けられたローカルな環境(たとえば、1つのシステムまたは1つの装置)で高速にデータを転送できる汎用のバスであってよい。I/Oインターフェースは、パラレルインターフェース及びシリアルインターフェースのいずれであってもよい。
I/Oインターフェースは、ポイント・ツー・ポイント接続ができ、データをパケットベースでシリアル転送可能な構成でよい。なお、I/Oインターフェースは、シリアル転送の場合、複数のレーンを有してよい。I/Oインターフェースのレイヤー構造は、パケットの生成及び復号を行うトランザクション層と、エラー検出等を行うデータリンク層と、シリアルとパラレルとを変換する物理層と、を有してよい。また、I/Oインターフェースは、階層の最上位であり1または複数のポートを有するルートコンプレックス、I/Oデバイスであるエンドポイント、ポートを増やすためのスイッチ、および、プロトコルを変換するブリッジなどを含んでよい。I/Oインターフェースは、送信するデータとクロック信号とをマルチプレクサによって多重化して送信してもよい。この場合、受信側は、デマルチプレクサでデータとクロック信号とを分離してよい。
1 情報処理システム
10、10−1〜10−8 プラットフォーム(第1プラットフォーム、第2プラットフォーム)
30 中継装置
36 拡張バス
204A、214A ブリッジドライバ(第1ブリッジドライバ、第2ブリッジドライバ)
502 送信用バッファ
本開示の第1態様にかかる情報処理システムは、複数のプラットフォームと、中継装置と、を備える。中継装置は、拡張バスを介して複数のプラットフォームを通信可能に接続する。複数のプラットフォームのうちの第1プラットフォームは、第1ブリッジドライバを備える。第1ブリッジドライバは、複数のプラットフォームのうちの第1プラットフォームとは異なる第2プラットフォームへのデータの送信要求に応じて、第1プラットフォームの送信用バッファにデータを書き込、第2プラットフォームに対してデータの受信要求を送信する。第2プラットフォームは、第2ブリッジドライバを備える。第2ブリッジドライバは、第1ブリッジドライバにより送信された受信要求に応じて、中継装置を介して送信用バッファから第2プラットフォームの所定の記憶領域に転送されたデータを取得し、第1プラットフォームに対してデータの受信完了通知を送信する。第1ブリッジドライバは、送信用バッファにデータを書き込むごとに、送信用バッファのうちのデータが書き込まれた領域を上書き不可能なロック領域に設定し、書き込まれたデータの送受信が完了しており、かつ第2ブリッジドライバからの受信完了通知が2以上の所定の回数受信された場合に、当該所定の回数の受信完了通知に対応するロック領域を上書き可能なアンロック領域に設定する。
本開示の第2態様にかかるプラットフォームは、中継装置により拡張バスを介して通信可能に接続された複数のプラットフォームに含まれる。プラットフォームは、ブリッジドライバを備える。ブリッジドライバは、複数のプラットフォームのうちのプラットフォームとは異なる他のプラットフォームへのデータの送信要求に応じて、プラットフォームの送信用バッファにデータを書き込、他のプラットフォームに対してデータの受信要求を送信する。ブリッジドライバは、送信用バッファにデータを書き込むごとに、送信用バッファのうちのデータが書き込まれた領域を上書き不可能なロック領域に設定し、書き込まれたデータの送受信が完了しており、かつ受信要求に応じて中継装置を介して送信用バッファからプラットフォームの所定の記憶領域に転送されたデータを他のプラットフォームが取得することにより他のプラットフォームからプラットフォームに送信される受信完了通知が2以上の所定の回数受信された場合に、当該所定の回数の受信完了通知に対応するロック領域を上書き可能なアンロック領域に設定する。
本開示の第3態様にかかるプログラムは、中継装置により拡張バスを介して通信可能に接続された複数のプラットフォームに含まれるプラットフォームとしてのコンピュータに、複数のプラットフォームのうちのプラットフォームとは異なる他のプラットフォームへのデータの送信要求に応じて、プラットフォームの送信用バッファにデータを書き込、他のプラットフォームに対してデータの受信要求を送信することと、送信用バッファにデータを書き込むごとに、送信用バッファのうちのデータが書き込まれた領域を上書き不可能なロック領域に設定し、書き込まれたデータの送受信が完了しており、かつ受信要求に応じて中継装置を介して送信用バッファから他のプラットフォームの所定の記憶領域に転送されたデータを他のプラットフォームが取得することにより他のプラットフォームからプラットフォームに送信される受信完了通知が2以上の所定の回数受信された場合に、当該所定の回数の受信完了通知に対応するロック領域を上書き可能なアンロック領域に設定することと、を実行させるためのプログラムである。

Claims (5)

  1. 複数のプラットフォームと、
    拡張バスを介して前記複数のプラットフォームを通信可能に接続する中継装置と、
    を備え、
    前記複数のプラットフォームのうちの第1プラットフォームは、
    前記複数のプラットフォームのうちの前記第1プラットフォームとは異なる第2プラットフォームへのデータの送信要求に応じて、前記第1プラットフォームの送信用バッファに前記データを書き込むとともに前記中継装置に前記第2プラットフォームへの前記データの転送を実行させ、前記第2プラットフォームに対して前記データの受信要求を送信する第1ブリッジドライバを備え、
    前記第2プラットフォームは、
    前記第1ブリッジドライバにより送信された前記受信要求に応じて、前記送信用バッファから前記データを取得し、前記第1プラットフォームに対して前記データの受信完了通知を送信する第2ブリッジドライバを備え、
    前記第1ブリッジドライバは、前記送信用バッファに前記データを書き込むごとに、前記送信用バッファのうちの前記データが書き込まれた領域を上書き不可能なロック領域に設定し、書き込まれたデータの送受信が完了しており、かつ前記第2ブリッジドライバからの前記受信完了通知が複数回受信された場合に、前記ロック領域を上書き可能なアンロック領域に設定する、
    情報処理システム。
  2. 前記第1ブリッジドライバは、前記送信用バッファの空きに関する空き情報に基づいて、前記ロック領域を前記アンロック領域に設定するか否かの基準となる前記受信完了通知の受信回数を動的に変更する、
    請求項1に記載の情報処理システム。
  3. 前記第1ブリッジドライバは、前記空き情報が、前記送信用バッファの空きが所定以上であることを示す場合、前記ロック領域を前記アンロック領域に設定する頻度が下がるように、前記受信回数を変更する、
    請求項2に記載の情報処理システム。
  4. 中継装置により拡張バスを介して通信可能に接続された複数のプラットフォームに含まれるプラットフォームであって、
    前記複数のプラットフォームに含まれる他のプラットフォームへのデータの送信要求に応じて、送信用バッファに前記データを書き込むとともに前記中継装置に前記他のプラットフォームへの前記データの転送を実行させ、前記他のプラットフォームに対して前記データの受信要求を送信するブリッジドライバを備え、
    前記ブリッジドライバは、前記送信用バッファに前記データを書き込むごとに、前記送信用バッファのうちの前記データが書き込まれた領域を上書き不可能なロック領域に設定し、書き込まれたデータの送受信が完了しており、かつ前記受信要求の送信に応じて前記他のプラットフォームから送信される受信完了通知が複数回受信された場合に、前記ロック領域を上書き可能なアンロック領域に設定する、
    プラットフォーム。
  5. 中継装置により拡張バスを介して通信可能に接続された複数のプラットフォームに含まれるプラットフォームとしてのコンピュータに、
    前記複数のプラットフォームに含まれる他のプラットフォームへのデータの送信要求に応じて、送信用バッファに前記データを書き込むとともに前記中継装置に前記他のプラットフォームへの前記データの転送を実行させ、前記他のプラットフォームに対して前記データの受信要求を送信することと、
    前記送信用バッファに前記データを書き込むごとに、前記送信用バッファのうちの前記データが書き込まれた領域を上書き不可能なロック領域に設定し、書き込まれたデータの送受信が完了しており、かつ前記受信要求の送信に応じて前記他のプラットフォームから送信される受信完了通知が複数回受信された場合に、前記ロック領域を上書き可能なアンロック領域に設定することと、
    を実行させるための、プログラム。
JP2019227674A 2019-12-17 2019-12-17 情報処理システム、プラットフォーム、およびプログラム Active JP6836087B1 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2019227674A JP6836087B1 (ja) 2019-12-17 2019-12-17 情報処理システム、プラットフォーム、およびプログラム
GBGB2014862.3A GB202014862D0 (en) 2019-12-17 2020-09-21 Information processing system, platform, and computer-readable program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2019227674A JP6836087B1 (ja) 2019-12-17 2019-12-17 情報処理システム、プラットフォーム、およびプログラム

Publications (2)

Publication Number Publication Date
JP6836087B1 JP6836087B1 (ja) 2021-02-24
JP2021096659A true JP2021096659A (ja) 2021-06-24

Family

ID=73040137

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019227674A Active JP6836087B1 (ja) 2019-12-17 2019-12-17 情報処理システム、プラットフォーム、およびプログラム

Country Status (2)

Country Link
JP (1) JP6836087B1 (ja)
GB (1) GB202014862D0 (ja)

Also Published As

Publication number Publication date
GB202014862D0 (en) 2020-11-04
JP6836087B1 (ja) 2021-02-24

Similar Documents

Publication Publication Date Title
US8463934B2 (en) Unified system area network and switch
US8346997B2 (en) Use of peripheral component interconnect input/output virtualization devices to create redundant configurations
US7698477B2 (en) Method and apparatus for managing flow control in PCI express transaction layer
US8225005B2 (en) Use of peripheral component interconnect input/output virtualization devices to create high-speed, low-latency interconnect
JP5310175B2 (ja) スイッチシステム、及びスイッチシステムの制御方法
US20060114918A1 (en) Data transfer system, data transfer method, and image apparatus system
JP2021530813A (ja) 専用低レイテンシリンクを使用した複数のハードウェアアクセラレータのための統合されたアドレス空間
EP1591908A1 (en) Separating transactions into different virtual channels
US20050120173A1 (en) Device and method for performing information processing using plurality of processors
US6327637B1 (en) Interface tap for 1394-enabled serial bus device
EP2515241B1 (en) Unified system area network and switch
US20200358637A1 (en) Information processing system, and platform
JP6836087B1 (ja) 情報処理システム、プラットフォーム、およびプログラム
JP2996179B2 (ja) Pciバス・システム
KR102519480B1 (ko) PCIe 장치 및 이를 포함하는 컴퓨팅 시스템
JP4104939B2 (ja) マルチプロセッサシステム
JP6836088B1 (ja) 情報処理システム、プラットフォーム、およびプログラム
JP6928280B2 (ja) 情報処理システム
WO2019203331A1 (ja) 中継装置および情報処理システム
JP6826300B1 (ja) 情報処理システム
US6112259A (en) Integrated circuit for direct memory access
US20200364153A1 (en) Relay device, computer program product, and information processing system
US20230318606A1 (en) Interface device and method of operating the same
WO2010110183A1 (ja) 分散処理システム、インタフェース、記憶装置、分散処理方法、分散処理プログラム
CN116955250A (zh) 快速外围组件互连设备及其操作方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200115

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20200303

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20200316

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20200714

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20200910

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20201005

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20210105

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20210118

R150 Certificate of patent or registration of utility model

Ref document number: 6836087

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250