(57)【特許請求の範囲】
【請求項１】
複数のプラットフォームと、
拡張バスを介して前記複数のプラットフォームを通信可能に接続する中継装置と、
を備え、
前記複数のプラットフォームのうちの第１プラットフォームは、
前記複数のプラットフォームのうちの前記第１プラットフォームとは異なる第２プラットフォームへのデータの送信要求に応じて、前記第１プラットフォームの送信用バッファに前記データを書き込み、前記第２プラットフォームに対して前記データの受信要求を送信する第１ブリッジドライバを備え、
前記第２プラットフォームは、
前記第１ブリッジドライバにより送信された前記受信要求に応じて、前記中継装置を介して前記送信用バッファから前記第２プラットフォームの所定の記憶領域に転送された前記データを取得し、前記第１プラットフォームに対して前記データの受信完了通知を送信する第２ブリッジドライバを備え、
前記第１ブリッジドライバは、前記送信用バッファに前記データを書き込むごとに、前記送信用バッファのうちの前記データが書き込まれた領域を上書き不可能なロック領域に設定し、書き込まれたデータの送受信が完了しており、かつ前記第２ブリッジドライバからの前記受信完了通知が２以上の所定の回数受信された場合に、当該所定の回数の受信完了通知に対応する前記ロック領域を上書き可能なアンロック領域に設定する、
情報処理システム。
【請求項２】
前記第１ブリッジドライバは、前記送信用バッファの空きに関する空き情報に基づいて、前記ロック領域を前記アンロック領域に設定するか否かの基準となる前記受信完了通知の受信回数を動的に変更する、
請求項１に記載の情報処理システム。
【請求項３】
前記第１ブリッジドライバは、前記空き情報が、前記送信用バッファの空きが所定以上であることを示す場合、前記ロック領域を前記アンロック領域に設定する頻度が下がるように、前記受信回数を変更する、
請求項２に記載の情報処理システム。
【請求項４】
中継装置により拡張バスを介して通信可能に接続された複数のプラットフォームに含まれるプラットフォームであって、
前記複数のプラットフォームのうちの前記プラットフォームとは異なる他のプラットフォームへのデータの送信要求に応じて、前記プラットフォームの送信用バッファに前記データを書き込み、前記他のプラットフォームに対して前記データの受信要求を送信するブリッジドライバを備え、
前記ブリッジドライバは、前記送信用バッファに前記データを書き込むごとに、前記送信用バッファのうちの前記データが書き込まれた領域を上書き不可能なロック領域に設定し、書き込まれたデータの送受信が完了しており、かつ、前記受信要求に応じて前記中継装置を介して前記送信用バッファから前記他のプラットフォームの所定の記憶領域に転送された前記データを前記他のプラットフォームが取得することにより前記他のプラットフォームから前記プラットフォームに送信される受信完了通知が２以上の所定の回数受信された場合に、当該所定の回数の受信完了通知に対応する前記ロック領域を上書き可能なアンロック領域に設定する、
プラットフォーム。
【請求項５】
中継装置により拡張バスを介して通信可能に接続された複数のプラットフォームに含まれるプラットフォームとしてのコンピュータに、
前記複数のプラットフォームのうちの前記プラットフォームとは異なる他のプラットフォームへのデータの送信要求に応じて、前記プラットフォームの送信用バッファに前記データを書き込み、前記他のプラットフォームに対して前記データの受信要求を送信することと、
前記送信用バッファに前記データを書き込むごとに、前記送信用バッファのうちの前記データが書き込まれた領域を上書き不可能なロック領域に設定し、書き込まれたデータの送受信が完了しており、かつ、前記受信要求に応じて前記中継装置を介して前記送信用バッファから前記他のプラットフォームの所定の記憶領域に転送された前記データを前記他のプラットフォームが取得することにより前記他のプラットフォームから前記プラットフォームに送信される受信完了通知が２以上の所定の回数受信された場合に、当該所定の回数の受信完了通知に対応する前記ロック領域を上書き可能なアンロック領域に設定することと、
を実行させるための、プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、情報処理システム、プラットフォーム、およびプログラムに関する。
【背景技術】
【０００２】
複数のプロセッサ（プラットフォーム）と、当該複数のプロセッサを通信可能に接続するバスを有する中継装置と、を備えた情報処理システムが知られている。このような情報処理システムでは、プロセッサ間におけるデータの送受信が、いずれかの装置の送信用バッファを介して行われることが一般的である。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００８−０４１０２７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ところで、上記のような送信用バッファを介したプロセッサ（プラットフォーム）間でのデータの送受信においては、送受信が完了するまで、送信用バッファのうちのデータが書き込まれた領域を上書き不可能なロック領域に設定することが一般的である。この場合、書き込まれたデータの送受信が完了された時点で、ロック領域が上書き可能なアンロック領域に変更される、すなわち送信用バッファが解放されることが一般的である。
【０００５】
しかしながら、プロセッサ（プラットフォーム）間での通信が頻繁に発生する場合、データの送受信が１回完了するごとに、書き込まれたデータの送受信が完了した送信用バッファの解放を実行すると、通信の方に割かれるリソースが低減するので、通信速度の低下につながりやすい。
【課題を解決するための手段】
【０００６】
本開示の第１態様にかかる情報処理システムは、複数のプラットフォームと、中継装置と、を備える。中継装置は、拡張バスを介して複数のプラットフォームを通信可能に接続する。複数のプラットフォームのうちの第１プラットフォームは、第１ブリッジドライバを備える。第１ブリッジドライバは、複数のプラットフォームのうちの第１プラットフォームとは異なる第２プラットフォームへのデータの送信要求に応じて、第１プラットフォームの送信用バッファにデータを書き込み、第２プラットフォームに対してデータの受信要求を送信する。第２プラットフォームは、第２ブリッジドライバを備える。第２ブリッジドライバは、第１ブリッジドライバにより送信された受信要求に応じて、中継装置を介して送信用バッファから第２プラットフォームの所定の記憶領域に転送されたデータを取得し、第１プラットフォームに対してデータの受信完了通知を送信する。第１ブリッジドライバは、送信用バッファにデータを書き込むごとに、送信用バッファのうちのデータが書き込まれた領域を上書き不可能なロック領域に設定し、書き込まれたデータの送受信が完了しており、かつ第２ブリッジドライバからの受信完了通知が２以上の所定の回数受信された場合に、当該所定の回数の受信完了通知に対応するロック領域を上書き可能なアンロック領域に設定する。
【０００７】
本開示の第２態様にかかるプラットフォームは、中継装置により拡張バスを介して通信可能に接続された複数のプラットフォームに含まれる。プラットフォームは、ブリッジドライバを備える。ブリッジドライバは、複数のプラットフォームのうちのプラットフォームとは異なる他のプラットフォームへのデータの送信要求に応じて、プラットフォームの送信用バッファにデータを書き込み、他のプラットフォームに対してデータの受信要求を送信する。ブリッジドライバは、送信用バッファにデータを書き込むごとに、送信用バッファのうちのデータが書き込まれた領域を上書き不可能なロック領域に設定し、書き込まれたデータの送受信が完了しており、かつ、受信要求に応じて中継装置を介して送信用バッファからプラットフォームの所定の記憶領域に転送されたデータを他のプラットフォームが取得することにより他のプラットフォームからプラットフォームに送信される受信完了通知が２以上の所定の回数受信された場合に、当該所定の回数の受信完了通知に対応するロック領域を上書き可能なアンロック領域に設定する。
【０００８】
本開示の第３態様にかかるプログラムは、中継装置により拡張バスを介して通信可能に接続された複数のプラットフォームに含まれるプラットフォームとしてのコンピュータに、複数のプラットフォームのうちのプラットフォームとは異なる他のプラットフォームへのデータの送信要求に応じて、プラットフォームの送信用バッファにデータを書き込み、他のプラットフォームに対してデータの受信要求を送信することと、送信用バッファにデータを書き込むごとに、送信用バッファのうちのデータが書き込まれた領域を上書き不可能なロック領域に設定し、書き込まれたデータの送受信が完了しており、かつ、受信要求に応じて中継装置を介して送信用バッファから他のプラットフォームの所定の記憶領域に転送されたデータを他のプラットフォームが取得することにより他のプラットフォームからプラットフォームに送信される受信完了通知が２以上の所定の回数受信された場合に、当該所定の回数の受信完了通知に対応するロック領域を上書き可能なアンロック領域に設定することと、を実行させるためのプログラムである。
【発明の効果】
【０００９】
本開示の情報処理システム、プラットフォーム、およびプログラムによれば、送信用バッファの解放に起因する通信速度の低下を抑制することができる。
【図面の簡単な説明】
【００１０】
【図１】図１は、実施形態にかかる情報処理システムの全体構成を示した例示的かつ模式的なブロック図である。
【図２】図２は、実施形態にかかる情報処理システムのプラットフォームおよび中継装置にハードウェア構成を例示的かつ模式的なブロック図である。
【図３】図３は、実施形態にかかるプラットフォームのソフトウェア構成を示した例示的かつ模式的なブロック図である。
【図４】図４は、実施形態にかかる情報処理システムが実行する通信処理を説明するための例示的かつ模式的な図である。
【図５】図５は、実施形態にかかる送信用バッファを介したデータの送受信を説明するための例示的かつ模式的な図である。
【図６】図６は、実施形態にかかるプラットフォーム間でのデータの送受信時に実行される処理の流れを示した例示的かつ模式的なシーケンス図である。
【発明を実施するための形態】
【００１１】
以下、本開示の実施形態および変形例を図面に基づいて説明する。以下に記載する実施形態および変形例の構成、ならびに当該構成によってもたらされる作用および効果は、あくまで一例であって、以下の記載内容に限られるものではない。
【００１２】
＜実施形態＞
図１は、実施形態にかかる情報処理システム１の全体構成を示した例示的かつ模式的なブロック図である。
【００１３】
図１に示されるように、実施形態にかかる情報処理システム１は、複数のプラットフォーム１０−１〜１０−８、および中継装置３０を備えている。プラットフォーム１０−１〜１０−８は、たとえば中継装置３０が設けられたボード上の複数のスロットに挿入されている。これにより、プラットフォーム１０−１〜１０−８は、中継装置３０を介して互いに通信可能に接続されている。
【００１４】
なお、以下では、互いに区別する必要が無い場合、複数のプラットフォーム１０−１〜１０−８のうちの任意のプラットフォームを、単にプラットフォーム１０と記載することがある。また、図１には、情報処理システム１が８個のプラットフォーム１０を備える構成が例示されているが、実施形態において、プラットフォーム１０の個数は、複数であれば、８個以外であってもよい。
【００１５】
また、以下では、プラットフォーム１０と中継装置３０との間の通信がＰＣＩｅ（Peripheral  Component  Interconnect-Express）（登録商標）に基づく通信規格に従って実行される場合について説明するが、実施形態では、ＰＣＩｅ（登録商標）以外の通信規格に従った通信が実行されてもよい。
【００１６】
プラットフォーム１０−１〜２−８は、情報処理システム１の制御部およびＧＵＩ（Graphical  User  Interface）として機能するホスト装置と、ＡＩ（Artificial  Intelligence）推論処理および画像処理などを実行する演算装置と、を含んでいる。以下では、一例として、プラットフォーム１０−１がホスト装置として機能し、プラットフォーム１０−２〜１０−８が演算装置として機能するものとする。なお、演算装置としてのプラットフォーム１０−２〜１０−８は、それぞれが異なる機能を有していてもよいし、少なくとも一部が共通する機能を有していてもよい。
【００１７】
プラットフォーム１０−１〜２−８は、それぞれ、ルートコンプレックス１１−１〜１１−８を備えており、中継装置３０は、ルートコンプレックス１１−１〜１１−８にそれぞれ対応したエンドポイント３１−１〜３１−８を備えている。以下では、互いに区別する必要が無い場合、ルートコンプレックス１１−１〜１１−８のうちの任意のルートコンプレックスを単にルートコンプレックス１１と記載し、エンドポイント３１−１〜３１−８のうちの任意のエンドポイントを単にエンドポイント３１と記載することがある。
【００１８】
なお、図１には、プラットフォーム１０とルートコンプレックス１１とが１対１で対応している構成が例示されているが、実施形態では、プラットフォーム１０とルートコンプレックス１１とが必ずしも１対１で対応している必要はない。たとえば、実施形態では、１つのプラットフォーム１０が２個以上のルートコンプレックス１１を備えていてもよい。
【００１９】
上述したプラットフォーム１０および中継装置３０は、次の図２に示されるようなハードウェア構成を有している。
【００２０】
図２は、実施形態にかかる情報処理システム１のプラットフォーム１０および中継装置３０のハードウェア構成を示した例示的かつ模式的なブロック図である。
【００２１】
まず、プラットフォーム１０のハードウェア構成について説明する。
【００２２】
図２に示されるように、プラットフォーム１０−１は、ルートコンプレックス１１−１と、プロセッサ１２−１と、メモリ１３−１と、記憶部１４−１と、を備えている。これらのハードウェア（回路：circuitry）は、バス（不図示）を介して通信可能に接続されている。
【００２３】
また、他のプラットフォーム１０−２〜１０−８も、プラットフォーム１０−１と同様のハードウェア構成を備えている。すなわち、プラットフォーム１０−２〜１０−８は、それぞれ、ルートコンプレックス１１−２〜１１−８と、プロセッサ１２−２〜１２−８と、メモリ１３−２〜１３−８と、記憶部１４−２〜１４−８と、を備えている。
【００２４】
以下では、互いに区別する必要が無い場合、プロセッサ１２−１〜１２−８のうちの任意のプロセッサを単にプロセッサ１２と記載し、メモリ１３−１〜１３−８のうちの任意のメモリを単にメモリ１３と記載し、記憶部１４−１〜１４−８のうちの任意の記憶部を単に記憶部１４と記載することがある。
【００２５】
ルートコンプレックス１１は、対応するエンドポイント３１との通信を実行する。実施形態において、ルートコンプレックス１１とエンドポイント３１とは、たとえば通信規格の一つとしてのＰＣＩｅ（Peripheral  Component  Interconnect  Express）（登録商標）に従って通信を実行する。ただし、プラットフォーム１０と中継装置３０とは、ＰＣＩｅ（登録商標）以外の他の通信規格に従って通信を実行してもよい。
【００２６】
プロセッサ１２は、プラットフォーム１０の各部の制御を司る。プロセッサ１２は、たとえばＣＰＵ（Central  Processing  Unit）、ＭＰＵ（Micro  Processing  Unit）、ＤＳＰ（Digital  Signal  Processor）、ＡＳＩＣ（Application  Specific  Integrated  Circuit）、ＰＬＤ（Programmable  Logic  Device）、またはＦＰＧＡ（Field  Programmable  Gate  Array）などにより構成される。プロセッサ１２は、マルチコアプロセッサとして構成されていてもよいし、２以上のプロセッサの組合せとして構成されていてもよい。
【００２７】
メモリ１３は、プロセッサ１２による制御に必要なデータおよびプロセッサ１２による制御の結果として生成されるデータなどを記憶する。メモリ１３は、たとえばＲＯＭ（Read  Only  Memory）およびＲＡＭ（Random  Access  Memory）などにより構成される。ＲＯＭは、たとえばプロセッサ１２が実行する各種のソフトウェア（コンピュータプログラム）や当該ソフトウェア用のデータを記憶し、ＲＡＭは、ＲＯＭに記憶されるソフトウェアを実行するための作業領域をプロセッサ１２に提供する。
【００２８】
記憶部１４は、たとえばプロセッサ１２が実行する各種のソフトウェア（コンピュータプログラム）および他のプラットフォーム１０との間で送受信するデータなどを含む各種のデータを（不揮発的に）記憶する。記憶部１４は、たとえばＨＤＤ（Hard  Disk  Drive）、ＳＳＤ（Solid  State  Drive）、およびＳＣＭ（Storage  Class  Memory）などにより構成される。
【００２９】
プラットフォーム１０は、メモリ１３または記憶部１４に格納されたコンピュータプログラムをプロセッサ１２により実行することで、ＡＩ推論処理または画像処理を実行するための各種の機能を実現する。
【００３０】
なお、上記のコンピュータプログラムは、必ずしもメモリ１３または記憶部１４に記憶されている必要はない。たとえば、上記のコンピュータプログラムは、フレキシブルディスク（ＦＤ）のような各種の磁気ディスク、またはＤＶＤ（Digital  Versatile  Disk）のような各種の光ディスクなどといった、コンピュータで読み取り可能な記録媒体にインストール可能な形式または実行可能な形式で記録されたコンピュータプログラムプロダクトとして提供されてもよい。
【００３１】
また、上記のコンピュータプログラムは、インターネットなどのネットワーク経由で提供または配布されてもよい。すなわち、上記のコンピュータプログラムは、は、インターネットなどのネットワークに接続されたコンピュータ上に格納された状態で、当該コンピュータからネットワーク経由でダウンロードする、といった形で提供されてもよい。
【００３２】
次に、プラットフォーム１０間の通信を中継する中継装置３０のハードウェア構成について説明する。
【００３３】
図２に示されるように、中継装置３０は、エンドポイント３１と、プロセッサ３２と、メモリ３３と、記憶部３４と、内部バス３５と、拡張バス３６と、を備えている。
【００３４】
エンドポイント３１は、プラットフォーム１０に対応するように設けられる。エンドポイント３１は、拡張バス３６を介して、プラットフォーム１０のうちの第１プラットフォームから当該第１プラットフォームとは異なる第２プラットフォームへのデータの送信（転送）を実行する。
【００３５】
たとえば、ルートコンプレックス１１−５がＤＭＡ（Direct  Memory  Access）転送によりプラットフォーム１０−１にデータを送信すると、中継装置３０は、ルートコンプレックス１１−５に対応したエンドポイント３１−１から拡張バス３６を介してデータを受信し、受信したデータをプラットフォーム１０−１に転送する。
【００３６】
プロセッサ３２は、中継装置３０の各部を制御する。プロセッサ３２は、プロセッサ１２は、たとえばＣＰＵ、ＭＰＵ、ＤＳＰ、ＡＳＩＣ、ＰＬＤ、またはＦＰＧＡなどにより構成される。プロセッサ１２は、マルチコアプロセッサとして構成されていてもよいし、２以上のプロセッサの組合せとして構成されていてもよい。
【００３７】
メモリ３３は、プロセッサ３２による制御に必要なデータおよびプロセッサ３２による制御の結果として生成されるデータなどを記憶する。メモリ３３は、たとえばＲＯＭおよびＲＡＭなどにより構成される。
【００３８】
記憶部３４は、各種のデータを（不揮発的に）記憶する。記憶部３４は、たとえばＨＤＤ、ＳＳＤ、およびＳＣＭなどにより構成される。
【００３９】
中継装置３０は、メモリ３３または記憶部３４に格納されたコンピュータプログラムをプロセッサ３２により実行することで、プラットフォーム１０間の通信を中継するための各種の機能を実現する。
【００４０】
内部バス３５は、プロセッサ３２、メモリ３３、記憶部３４、および拡張バス３６を通信可能に接続する。
【００４１】
拡張バス３６は、複数のエンドポイント３１、および内部バス３５を通信可能に接続する。これにより、拡張バス３６は、複数のエンドポイント３１間でのデータの転送、すなわちプラットフォーム１０間でのデータの転送が可能になる。なお、拡張バス３６は、例えばＰＣＩｅ（登録商標）に準拠したバスである。
【００４２】
以上のようなハードウェア構成に基づき、実施形態にかかるプラットフォーム１０は、次の図３に示されるようなソフトウェア構成を実現する。
【００４３】
図３は、実施形態にかかるプラットフォーム１０のソフトウェア構成を示した例示的かつ模式的な図である。
【００４４】
図２に示されるように、ホスト装置としてのプラットフォーム１０−１は、ＢＩＯＳ(Basic  Input  Output  System)２０２と、ＯＳ(Operating  System)２０３と、ドライバ２０４と、サービス２０５と、仮想ＬＡＮ（Local  Area  Network）ドライバ２０６と、分散制御部２０７と、共通ソフトウェア２０８と、を実現する。これらのソフトウェア構成に基づき、プラットフォーム１０−１は、アプリケーション２０９を実行し、プラットフォーム１０−１に備えられたハードウェア資源としてのＰＣ（Personal  Computer）プラットフォーム１００１を制御する。
【００４５】
ＢＩＯＳ２０２は、プラットフォーム１０−１の起動時におけるＯＳ２０３の読み込み、およびプラットフォーム１０−１に対する基本的な入出力制御などを実行する。ＯＳ２０３は、たとえばＷｉｎｄｏｗｓ（登録商標）であるが、他のＯＳであってもよい。
【００４６】
ＯＳ２０３は、上記の拡張バスを制御するためのブリッジドライバ２０４Ａを含む各種のドライバ２０４を読み込むことで、プラットフォーム１０−１のルートコンプレックス１１−１にアクセスし、他のプラットフォーム１０との間で通信を実行する。また、ＯＳ２０３は、様々な制御を行うためのサービス２０５を読み込むことで、様々な処理を実行する。
【００４７】
仮想ＬＡＮドライバ２０６および分散制御部２０７は、ドライバ２０４およびサービス２０５の上層に実現されている。そして、共通ソフトウェア２０８は、仮想ＬＡＮドライバ２０６および分散制御部２０７の上層でかつアプリケーション２０９の下層に実現されている。これにより、アプリケーション２０９は、共通ソフトウェア２０８を介して仮想ＬＡＮドライバ２０６にアクセスすることで、他のプラットフォーム１０が仮想的なＬＡＮ上に存在するものとみなして、他のプラットフォーム１０との間で通信を実行する。
【００４８】
一方、演算装置としてのプラットフォーム１０−２および１０−３は、Ｂｏｏｔｌｏａｄｅｒ２１２と、ＯＳ２１３と、ドライバ２１４と、仮想ＬＡＮドライバ２１５と、分散制御部２１６と、共通ソフトウェア２１７と、を実現する。これらのソフトウェア構成に基づき、プラットフォーム１０−２および１０−３は、それぞれ、分散処理Ａおよび分散処理Ｂを実行し、プラットフォーム１０−２および１０−３に備えられたハードウェア資源としてのハードウェアプラットフォーム１０１１を制御する。
【００４９】
なお、図３では、簡単化のため、プラットフォーム１０−２および１０−３のソフトウェア構成についてのみ図示されているが、実施形態では、演算装置としての他のプラットフォーム１０−４〜１０−８も、プラットフォーム１０−２および１０−３と同様のソフトウェア構成を実現しうる。
【００５０】
Ｂｏｏｔｌｏａｄｅｒ２１２は、対応するプラットフォーム１０の電源投入時に起動し、ＯＳ２１３を起動させる。ＯＳ２０３は、たとえばＬｉｎｕｘ（登録商標）であるが、他のＯＳであってもよい。
【００５１】
ＯＳ２１３は、上記の拡張バスを制御するためのブリッジドライバ２１４Ａを含む各種のドライバ２１４を読み込むことで、対応するルートコンプレックス１１にアクセスし、他のプラットフォーム１０との間との間で通信を実行する。
【００５２】
仮想ＬＡＮドライバ２１５および分散制御部２１６は、ドライバ２１４の上層に実現されている。そして、共通ソフトウェア２１７は、仮想ＬＡＮドライバ２１５および分散制御部２１６の上層でかつ対応する分散処理の下層に実現されている。これにより、分散処理Ａ、分散処理Ｂは、共通ソフトウェア２１７を介して仮想ＬＡＮドライバ２１５にアクセスすることで、他のプラットフォーム１０が仮想的なＬＡＮ上に存在するものとみなして、他のプラットフォーム１０との間で通信を実行する。
【００５３】
以上のソフトウェア構成に基づき、実施形態にかかる情報処理システム１は、プラットフォーム１０間での通信の際に、次の図４に示されるような通信処理を実行する。図４には、ホスト装置としてのプラットフォーム１０−１と演算装置としてのプラットフォーム１０−５との間の通信処理が例示されているが、他のプラットフォーム１０間の通信処理も同様に実行されうる。
【００５４】
図４は、実施形態にかかる情報処理システム１が実行する通信処理を説明するための例示的かつ模式的な図である。
【００５５】
図４に示されるように、情報処理システム１は、所定の複数の層を含むレイヤー構造を有している。情報処理システム１は、複数の層を介して、プラットフォーム１０間での通信を実行する。
【００５６】
たとえば、ホスト装置としてのプラットフォーム１０−１のソフトウェアが演算装置としてのプラットフォーム１０−５へとデータを送信（転送）する場合について説明する。この場合、プラットフォーム１０−１のソフトウェアは、プラットフォーム１０−１のトランザクション層、データリンク層、および物理層（ＰＨＹ）を介して、中継装置３０の物理層、より具体的にはプラットフォーム１０−１が接続されたエンドポイント３１−１に対応した物理層にデータを転送する。
【００５７】
エンドポイント３１−１に対応した物理層にデータが転送された場合、中継装置３０は、当該データを、データリンク層を介してトランザクション層に受け渡す。そして、中継装置３０は、トランザクション層において、プラットフォーム１０−５が接続されたエンドポイント３１−５にトンネリングによりデータを転送する。そして、中継装置３００は、トンネリングにより転送されたデータを、データリンク層およびエンドポイント３１−５に対応した物理層を介して、プラットフォーム１０−５の物理層に転送する。
【００５８】
なお、プラットフォーム１０−５は、中継装置３０から転送されたデータを、物理層、データリンク層、およびトランザクション層を介して、ソフトウェアに受け渡す。
【００５９】
このように、実施形態では、中継装置３０のトランザクション層におけるデータのトンネリングにより、プラットフォーム１０−１からプラットフォーム１０−５へのデータの転送が実現される。また、プラットフォーム１０−５からプラットフォーム１０−１へのデータの転送は、上記とは逆の順序でデータが各層を移動することで実現される。
【００６０】
なお、実施形態では、特定のプラットフォーム１０に対して他のプラットフォーム１０からのデータの転送が集中しない場合、異なる任意の複数組のプラットフォーム１０間において並行してデータの転送を実行することも可能である。
【００６１】
すなわち、特定のプラットフォーム１０に対して他のプラットフォーム１０からの複数の通信が集中する場合、中継装置３０は、当該他のプラットフォーム１０からの複数の通信をシリアルに処理する。しかしながら、異なるプラットフォーム１０同士が通信し、特定のプラットフォーム１０に通信が集中しない場合には、中継装置３０は、プラットフォーム１０間の複数の通信を並行して処理することが可能である。
【００６２】
ここで、実施形態において、プラットフォーム１０間でのデータの送受信は、次の図５に示されるような形で、各プラットフォーム１０に設けられる送信用バッファ５０２を介して実行される。なお、図５では、中継装置３０の図示が省略されているが、図４を参照して既に説明した通り、プラットフォーム１０間におけるＤＭＡ（Direct  Memory  Access）によるデータの送受信は、中継装置３０により中継される。
【００６３】
図５は、実施形態にかかる送信用バッファ５０２を介したデータの送受信を説明するための例示的かつ模式的な図である。
【００６４】
図５に示されるように、各プラットフォーム１０は、各プラットフォーム１０に送信するデータを書き込む記憶領域としての送信用バッファ５０２を有している。ここでは、プラットフォーム１０−１〜１０−８がそれぞれ有する送信用バッファ５０２−１〜５０２−８を総称して送信用バッファ５０２と記載している（ただし、図５に図示されているのは送信用バッファ５０２−１および５０２−５のみである）。送信用バッファ５０２は、たとえばメモリ１３上に実現される。
【００６５】
なお、図５に示される例は、上述した図４に示される例と同様、プラットフォーム１０−５からプラットフォーム１０−１へとデータが送信される場合を想定している。したがって、以下では、プラットフォーム１０−５の送信用バッファ５０２−５を介したデータの送受信について主に説明する。
【００６６】
図５に示される例では、まず、ステップＳ５０１において、プラットフォーム１０−５のたとえば仮想ＬＡＮドライバ２０６は、プラットフォーム１０−１へのデータの送信要求を、プラットフォーム１０−５の送信用バッファ５０２−５のうちＳｌｏｔ＃０で示される領域に対して発行する。
【００６７】
ここで、Ｓｌｏｔ＃０で示される領域とは、プラットフォーム１０−１へのデータの送信用の領域である。送信用バッファ５０２−５は、Ｓｌｏｔ＃０で示されるアドレスレンジの他にも、他のプラットフォーム１０へのデータの送信用の複数の領域を有している。
【００６８】
そして、ステップＳ５０２において、プラットフォーム１０−５のブリッジドライバ２１４Ａは、上記の送信要求に応じて、Ｓｌоｔ＃０で示される領域に、プラットフォーム１０−１に送信すべきデータを書き込む。
【００６９】
そして、ステップＳ５０３において、中継装置３０（図５には不図示）は、たとえばＥＰｔｏＥＰ（Endpoint  to  Endpoint）などの処理により、プラットフォーム１０−５に対応したエンドポイント３１−５とプラットフォーム１０−１に対応したエンドポイント３１−１とを接続し、プラットフォーム１０−５からプラットフォーム１０−１へとデータを転送する。
【００７０】
ところで、プラットフォーム１０−５のブリッジドライバ２１４Ａは、上記のステップＳ５０２におけるデータの書き込みが終了すると、プラットフォーム１０−１に対して中継装置３０を介したデータの受信要求を行う。
【００７１】
そして、ステップＳ５０４において、プラットフォーム１０−１のブリッジドライバ２０４Ａは、プラットフォーム１０−５からの受信要求に応じて、中継装置３０を介してプラットフォーム１０−５から転送されたデータを取得し、取得したデータを、メモリ１３−１に設けられるバッファを介して記憶部１４０１に格納する。
【００７２】
このようにして、中継装置３０を介したプラットフォーム１０−５からプラットフォーム１０−１へのデータの送信が実行される。
【００７３】
なお、図５に示されるように、プラットフォーム１０−１も、プラットフォーム１０−５の送信用バッファ５０２−５と同様の送信用バッファ５０２−１が設けられている。プラットフォーム１０−１は、送信用バッファ５０２−１を利用して、他のプラットフォーム１０へのデータの送信を実行することが可能である。さらに、図５では図示が省略されているが、他のプラットフォーム１０も、同様の送信用バッファ５０２を有している。したがって、実施形態では、任意のプラットフォーム１０間におけるデータの送受信を上記と同様の処理により実現することが可能である。
【００７４】
ところで、上記のような送信用バッファ５０２を介したデータの送受信においては、送受信が完了するまで、送信用バッファ５０２のうちのデータが書き込まれた領域を、上書き不可能なロック領域に設定することが一般的である。この場合、書き込まれたデータの送受信が完了された段階で、ロック領域が上書き可能なアンロック領域に変更される、すなわち送信用バッファ５０２が解放されることが一般的である。
【００７５】
しかしながら、実施形態にかかる情報処理システム１のような、複数のプラットフォーム１０が設けられた構成では、プラットフォーム１０間での通信が頻繁に発生する場合もありうる。この場合、データの送受信が１回完了するごとに、書き込まれたデータの送受信が完了した送信用バッファ５０２の解放を実行すると、通信の方に割かれるリソースが低減するので、通信速度の低下が発生しやすい。
【００７６】
そこで、実施形態は、送信用バッファ５０２の解放を、データの送受信が１回完了するごとではなく、データの送受信が複数回完了することに応じて、書き込まれたデータの送受信が完了した箇所について実行するように構成されている。このような構成によれば、送信用バッファ５０２の解放の頻度が少なくなるので、通信の方により多くのリソースを割くことができる。したがって、送信用バッファ５０２の解放に起因する通信速度の低下を抑制することができる。
【００７７】
さらに、実施形態は、次の図６に示されるように、送信用バッファ５０２の空き、すなわち送信用バッファ５０２においてデータの送信のために書き込み可能なアンロック領域の大きさに関する空き情報に応じて、送信用バッファ５０２の解放の頻度を動的に変更することが可能なように構成されている。
【００７８】
図６は、実施形態にかかるプラットフォーム１０間でのデータの送受信時に実行される処理の流れを示した例示的かつ模式的なシーケンス図である。
【００７９】
ここでは、一例として、プラットフォーム１０−５からプラットフォーム１０−１へのデータの送信（転送）について説明する。図６に示される例では、プラットフォーム１０−５の仮想ＬＡＮドライバ２１５およびブリッジドライバ２１４Ａがそれぞれ「送信側仮想ＬＡＮドライバ」および「送信側ブリッジドライバ」として図示され、プラットフォーム１０−１のブリッジドライバ２０４Ａが「受信側ブリッジドライバ」として図示されている。
【００８０】
図６に示されるように、実施形態では、まず、ステップＳ６１０において、送信側仮想ＬＡＮドライバとしての仮想ＬＡＮドライバ２１５は、送信側ブリッジドライバとしてのブリッジドライバ２１４Ａに対して、プラットフォーム１０−１へのデータの送信要求を実行する。
【００８１】
そして、ステップＳ６２０において、ブリッジドライバ２１４Ａは、仮想ＬＡＮドライバ２１５からの送信要求に応じて、プラットフォーム１０−５の送信用バッファ５０２−５のうちプラットフォーム１０−１へのデータの送信用の領域に、送信するデータを書き込み、中継装置３０にプラットフォーム１０−１へのデータの転送を実行させる。そして、ブリッジドライバ２１４Ａは、送信用バッファ５０２−５の空きに関する空き情報を更新する。空き情報は、たとえば、送信用バッファ５０２−５の各領域がロック領域およびアンロック領域のいずれに設定されているかを示すフラグなどを管理するためのテーブルとして実現されうる。
【００８２】
そして、ステップＳ６３０において、ブリッジドライバ２１４Ａは、受信側ブリッジドライバとしてのブリッジドライバ２０４Ａに、中継装置３０を介してデータの受信要求を行う。
【００８３】
そして、ステップＳ６４０において、ブリッジドライバ２０４Ａは、ブリッジドライバ２１４Ａからの受信要求に応じて、送信用バッファ５０２−５から中継装置３０により転送されたデータを取得する。このとき、送信用バッファ５０２−５におけるデータの取得が完了した箇所（領域）には、送受信完了のフラグが設定される。
【００８４】
そして、ステップＳ６５０において、ブリッジドライバ２０４Ａは、データの取得の完了に応じて、ブリッジドライバ２１４Ａに、中継装置３０を介して受信完了通知を送信する。
【００８５】
そして、ステップＳ６６０において、ブリッジドライバ２１４Ａは、ブリッジドライバ２０４Ａからの受信完了通知に応じて、プラットフォーム１０−５の送信用バッファ５０２の空き情報を確認する。そして、ブリッジドライバ２１４Ａは、空き情報に応じて、以下に説明するような処理を実行する。
【００８６】
たとえば、空き情報が、送信用バッファ５０２−５の空き、すなわち送信用バッファ５０２−５においてデータの送信のために書き込み可能なアンロック領域がゼロであることを示す場合、ステップＳ６７１の処理が実行される。この場合、送信用バッファ５０２−５の解放の頻度が低いために送信用バッファ５０２−５の空きの不足が発生していると考えることができる。
【００８７】
したがって、この場合、ステップＳ６７１において、ブリッジドライバ２１４Ａは、送信用バッファ５０２の解放の頻度を上げる。たとえば、直近の設定が、受信完了通知がｍ回受信された場合に送信用バッファ５０２−５のうち書き込まれたデータの送受信が完了した箇所の解放を実行するという設定になっている場合、ブリッジドライバ２１４Ａは、受信完了通知がｍ−１回受信された場合に送信用バッファ５０２−５のうち書き込まれたデータの送受信が完了した箇所の解放を実行するように、送信用バッファ５０２−５の解放を実行するか否かの基準となる受信完了通知の受信回数を減らす。なお、データの送受信が完了しているか否かは、上述した送受信完了のフラグなどに基づいて判定される。
【００８８】
一方、空き情報が、送信用バッファ５０２−５の空きが閾値以上であることを示す場合、ステップＳ６７２の処理が実行される。閾値は、送信するデータの量を示す値よりも十分に大きい値として設定される。この場合、送信用バッファ５０２−５の解放の頻度を下げたとしても、送信用バッファ５０２−５の空きの不足が発生しにくいと考えることができる。
【００８９】
したがって、この場合、ステップＳ６７２において、ブリッジドライバ２１４Ａは、送信用バッファ５０２−５の解放の頻度を下げる。たとえば、直近の設定が、受信完了通知がｍ回受信された場合に送信用バッファ５０２−５のうち書き込まれたデータの送受信が完了した箇所の解放を実行するという設定になっている場合、ブリッジドライバ２１４Ａは、受信完了通知がｍ＋１回受信された場合に送信用バッファ５０２−５のうち書き込まれたデータの送受信が完了した箇所の解放を実行するように、送信用バッファ５０２−５の解放を実行するか否かの基準となる受信完了通知の受信回数を増やす。
【００９０】
なお、空き情報が、送信用バッファ５０２−５の空きがゼロより大きく閾値より小さいことを示す場合、ステップＳ６７１およびＳ６７２のいずれの処理も実行されない。すなわち、この場合、ブリッジドライバ２１４Ａは、送信用バッファ５０２−５の解放の頻度、すなわち送信用バッファ５０２−５の解放を実行するか否かの基準となる受信完了通知の受信回数を現状のまま維持する。
【００９１】
そして、ブリッジドライバ２１４Ａは、上記のような頻度の調整（または維持）を経た頻度で、送信用バッファ５０２−５を解放する。
【００９２】
たとえば、現在の設定が、受信完了通知がｎ回受信された場合に送信用バッファ５０２−５の解放を実行するという設定になっている場合、換言すれば送信用バッファ５０２−５の解放の現在の頻度が１／ｎに設定されている場合を考える。この場合において、ブリッジドライバ２１４Ａは、直近ｎ−１回の受信完了通知では送信用バッファ５０２−５の解放を行っていない場合にのみ、ステップＳ６８０において、送信用バッファ５０２−５のうち書き込まれたデータの送受信が完了した箇所を解放する。ただし、直近ｎ−１回の受信完了通知のうちいずれかの受信完了通知に応じて送信用バッファ５０２−５が解放されている場合、ブリッジドライバ２１４Ａは、送信用バッファ５０２−５の解放を実行しない。
【００９３】
このようにして、実施形態では、送信用バッファ５０２−５の解放の頻度が動的に調整される。調整を経た頻度は、最適な頻度に収束していくものだと考えられる。
【００９４】
なお、図６に示される例は、あくまで一例である。実施形態では、プラットフォーム１０−５以外の他のプラットフォーム１０のブリッジドライバ２０４Ａまたは２１４Ａが送信側ブリッジドライバになり、プラットフォーム１０−１以外の他のプラットフォーム１０のブリッジドライバ２１４Ａが受信側ブリッジドライバになる場合も考えられる。
【００９５】
以上説明したように、実施形態にかかる送信側ブリッジドライバは、送信用バッファ５０２にデータを書き込むごとに、送信用バッファ５０２のうちのデータが書き込まれた領域を上書き不可能なロック領域に設定し、書き込まれたデータの送受信が完了しており、かつ受信側ブリッジドライバからの受信完了通知が複数回受信された場合に、ロック領域を上書き可能なアンロック領域に設定する。このような構成によれば、たとえばデータの送受信が１回完了するごとに必ず送信用バッファ５０２の解放を実行する場合に比べて、送信用バッファ５０２の解放の頻度が少なくなるので、通信の方により多くのリソースを割くことができる。したがって、送信用バッファ５０２の解放に起因する通信速度の低下を抑制することができる。
【００９６】
より具体的に、実施形態にかかる送信側ブリッジドライバは、送信用バッファ５０２の空きに関する空き情報に基づいて、ロック領域をアンロック領域に設定するか否かの基準となる受信完了通知の受信回数を動的に変更する。このような構成によれば、送信用バッファ５０２の解放の頻度を空き情報に基づいて適切に調整することができる。
【００９７】
たとえば、実施形態にかかる送信側ブリッジドライバは、上記の空き情報が、送信用バッファ５０２の空きが所定以上であることを示す場合、ロック領域をアンロック領域に設定する頻度が下がるように、受信回数を変更する。このような構成によれば、空きに余裕がある場合にも送信用バッファ５０２の解放が実行されることに起因して通信の方に割かれるリソースが低減するのを抑制することができる。
【００９８】
＜変形例＞
なお、上述した実施形態では、送信用バッファ５０２の解放の頻度が動的に調整される構成が例示されている。しかしながら、変形例として、送信用バッファ５０２の解放を実行するか否かの基準となる受信完了通知の受信回数を２以上の値として固定的に設定する構成も考えられる。このような構成によっても、たとえばデータの送受信が１回完了するごとに必ず送信用バッファ５０２のうち書き込まれたデータの送受信が完了した箇所の解放を実行する場合に比べて、送信用バッファ５０２の解放の頻度が少なくなるので、通信速度の低下を抑制することができる。
【００９９】
また、上述した実施形態では、一例として、送信用バッファ５０２の解放を実行するか否かの基準となる受信完了通知の受信回数を１つずつ増減させる構成が例示されている。しかしながら、変形例として、送信用バッファ５０２の解放を実行するか否かの基準となる受信完了通知の受信回数を２以上増減させる構成も考えられる。この場合、増減させる数が空き情報に応じて決定されてもよい。
【０１００】
また、上述した実施形態では、各部のＩ／ＯインターフェースとしてＰＣＩｅ（登録商標）が例示されているが、Ｉ／ＯインターフェースはＰＣＩｅ（登録商標）に限定されない。たとえば、各部のＩ／Ｏインターフェースは、データ転送バスによって、デバイス（周辺制御コントローラ）とプロセッサとの間でデータ転送を行える技術であればよい。データ転送バスは、１個の筐体等に設けられたローカルな環境（たとえば、１つのシステムまたは１つの装置）で高速にデータを転送できる汎用のバスであってよい。Ｉ／Ｏインターフェースは、パラレルインターフェース及びシリアルインターフェースのいずれであってもよい。
【０１０１】
Ｉ／Ｏインターフェースは、ポイント・ツー・ポイント接続ができ、データをパケットベースでシリアル転送可能な構成でよい。なお、Ｉ／Ｏインターフェースは、シリアル転送の場合、複数のレーンを有してよい。Ｉ／Ｏインターフェースのレイヤー構造は、パケットの生成及び復号を行うトランザクション層と、エラー検出等を行うデータリンク層と、シリアルとパラレルとを変換する物理層と、を有してよい。また、Ｉ／Ｏインターフェースは、階層の最上位であり１または複数のポートを有するルートコンプレックス、Ｉ／Ｏデバイスであるエンドポイント、ポートを増やすためのスイッチ、および、プロトコルを変換するブリッジなどを含んでよい。Ｉ／Ｏインターフェースは、送信するデータとクロック信号とをマルチプレクサによって多重化して送信してもよい。この場合、受信側は、デマルチプレクサでデータとクロック信号とを分離してよい。
【符号の説明】
【０１０２】
１  情報処理システム
１０、１０−１〜１０−８  プラットフォーム（第１プラットフォーム、第２プラットフォーム）
３０  中継装置
３６  拡張バス
２０４Ａ、２１４Ａ  ブリッジドライバ（第１ブリッジドライバ、第２ブリッジドライバ）
５０２  送信用バッファ
【要約】
【課題】送信用バッファの解放に起因する通信速度の低下を抑制する。
【解決手段】本開示の第１態様にかかる情報処理システムは、複数のプラットフォームと、中継装置と、を備える。第１プラットフォームは、第１ブリッジドライバを備える。第１ブリッジドライバは、第２プラットフォームへのデータの送信要求に応じて、第１プラットフォームの送信用バッファにデータを書き込むとともに中継装置に第２プラットフォームへのデータの転送を実行させ、第２プラットフォームに対してデータの受信要求を送信する。第１ブリッジドライバは、送信用バッファにデータを書き込むごとに、送信用バッファのうちのデータが書き込まれた領域を上書き不可能なロック領域に設定し、書き込まれたデータの送受信が完了しており、かつ第２ブリッジドライバからの受信完了通知が複数回受信された場合に、ロック領域を上書き可能なアンロック領域に設定する。
【選択図】図６【図１】
0006836087.tif 000002
【図２】
0006836087.tif 000003
【図３】
0006836087.tif 000004
【図４】
0006836087.tif 000005
【図５】
0006836087.tif 000006
【図６】
0006836087.tif 000007