(57)【特許請求の範囲】
【請求項１】
複数の情報処理装置と、複数の情報処理装置を通信可能に接続する中継装置とを備える情報処理システムであって、
前記情報処理装置は、
初期化したことを示すリセット信号の送信と、データの送受信とを実行する第１通信部を備え、
前記中継装置は、
前記情報処理装置毎に設けられ、前記リセット信号の受信と、前記データの送受信とを実行する複数の第２通信部と、
前記複数の第２通信部間で前記データを転送可能に接続する接続部と、
前記情報処理装置のそれぞれから、前記第２通信部を介さずに、前記リセット信号の入力を受け付ける入力部と、
前記入力部が前記リセット信号を受け付けた場合に、前記リセット信号を送信した前記情報処理装置が前記接続部を介して前記データを受信していたことを条件に、当該データの送信元の前記情報処理装置に対応する前記第２通信部を初期化する初期化処理を実行する制御部と、
を備える情報処理システム。
【請求項２】
前記制御部は、送信元の前記情報処理装置による前記データの送信を停止する処理を含む初期化処理を実行する、
請求項１に記載の情報処理システム。
【請求項３】
前記制御部は、前記入力部が前記リセット信号を受け付けた場合に、外部割込みを抑止する、
請求項１又は２に記載の情報処理システム。
【請求項４】
複数の情報処理装置を通信可能に接続する中継装置であって、
前記情報処理装置毎に設けられ、前記情報処理装置が初期化したことを示すリセット信号の受信と、データの送受信とを実行する複数の第２通信部と、
前記複数の第２通信部間で前記データを転送可能に接続する接続部と、
前記情報処理装置のそれぞれから、前記第２通信部を介さずに、前記リセット信号の入力を受け付ける入力部と、
前記入力部が前記リセット信号を受け付けた場合に、前記リセット信号を送信した前記情報処理装置が前記接続部を介して前記データを受信していたことを条件に、当該データの送信元の前記情報処理装置に対応する前記第２通信部を初期化する初期化処理を実行する制御部と、
を備える中継装置。
【請求項５】
複数の情報処理装置毎に設けられ、前記情報処理装置が初期化したことを示すリセット信号の受信と、データの送受信とを実行する複数の第２通信部と、
前記複数の第２通信部間で前記データを転送可能に接続する接続部と、
前記情報処理装置のそれぞれから、前記第２通信部を介さずに、前記リセット信号の入力を受け付ける入力部とを備える中継装置を、
前記入力部が前記リセット信号を受け付けた場合に、前記リセット信号を送信した前記情報処理装置が前記接続部を介して前記データを受信していたことを条件に、当該データの送信元の前記情報処理装置に対応する前記第２通信部を初期化する初期化処理を実行する制御部と、
して機能させるプログラム。 
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理システム、中継装置、及びプログラムに関する。
【背景技術】
【０００２】
従来、複数の情報処理装置を用いて並列計算を行なう手法が知られている。例えば、イーサネット（登録商標）回線等を用いた中継装置により情報処理装置間でデータ通信を行う情報処理システムが提案されている。
【０００３】
このような情報処理システムにおいて、情報処理装置間での通信中に、何かしらの理由により送信先の情報処理装置が再起動されることがある。送信先の情報処理装置が再起動されると、送信元の情報処理装置は、送信先が無くなるためデッドロックを起こしてしまう場合がある。
【０００４】
情報処理システムは、定期的にレジスタをポーリングして、情報処理装置の再起動に伴い初期化されたことを検出した場合に、再起動することでデッドロックから復旧させていた。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００５−２７５８１８号公報
【特許文献２】特開２０１５−２１５７２２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、デッドロックしているかを確認するために定期的にレジスタをポーリングすると、情報処理システムに負荷がかかってしまう。そもそもデッドロックは発生しないことが好ましい。
【０００７】
本発明は、上記に鑑みてなされたものであって、再起動に伴うデッドロックを防止することを目的とする。
【課題を解決するための手段】
【０００８】
本発明の第１態様に係る情報処理システムは、複数の情報処理装置と、複数の情報処理装置を通信可能に接続する中継装置とを備える。前記情報処理装置は、初期化したことを示すリセット信号の送信と、データの送受信とを実行する第１通信部を備える。前記中継装置は、複数の第２通信部と、接続部と、入力部と、制御部とを備える。前記第２通信部は、前記情報処理装置毎に設けられ、前記リセット信号の受信と、前記データの送受信とを実行する。前記接続部は、前記複数の第２通信部間で前記データを転送可能に接続する。前記入力部は、前記情報処理装置のそれぞれから、前記第２通信部を介さずに、前記リセット信号の入力を受け付ける。前記制御部は、前記入力部が前記リセット信号を受け付けた場合に、前記リセット信号を送信した前記情報処理装置が前記接続部を介して前記データを受信していたことを条件に、当該データの送信元の前記情報処理装置に対応する前記第２通信部を初期化する初期化処理を実行する。
【０００９】
本発明の第２態様に係る中継装置は、複数の情報処理装置を通信可能に接続する中継装置であって、複数の第２通信部と、接続部と、入力部と、制御部と、を備える。前記第２通信部は、前記情報処理装置毎に設けられ、前記リセット信号の受信と、前記データの送受信とを実行する。前記接続部は、前記複数の第２通信部間で前記データを転送可能に接続する。前記入力部は、前記情報処理装置のそれぞれから、前記第２通信部を介さずに、前記リセット信号の入力を受け付ける。前記制御部は、前記入力部が前記リセット信号を受け付けた場合に、前記リセット信号を送信した前記情報処理装置が前記接続部を介して前記データを受信していたことを条件に、当該データの送信元の前記情報処理装置に対応する前記第２通信部を初期化する初期化処理を実行する。
【００１０】
本発明の第３態様に係るプログラムは、複数の第２通信部と、接続部と、入力部と、を備える中継装置を、制御部と、して機能させる。前記第２通信部は、前記情報処理装置毎に設けられ、前記リセット信号の受信と、前記データの送受信とを実行する。前記接続部は、前記複数の第２通信部間で前記データを転送可能に接続する。前記入力部は、前記情報処理装置のそれぞれから、前記第２通信部を介さずに、前記リセット信号の入力を受け付ける。前記制御部は、前記入力部が前記リセット信号を受け付けた場合に、前記リセット信号を送信した前記情報処理装置が前記接続部を介して前記データを受信していたことを条件に、当該データの送信元の前記情報処理装置に対応する前記第２通信部を初期化する初期化処理を実行する。
【発明の効果】
【００１１】
本発明に係る情報処理システム、中継装置、及びプログラムは、再起動に伴うデッドロックを防止することができる。
【図面の簡単な説明】
【００１２】
【図１】図１は、本実施例に係る分散型コンピュータの全体構成の一例を示す図である。
【図２】図２は、本実施例に係る分散型コンピュータにおけるプラットフォーム間における通信処理の一例を説明するための図である。
【図３】図３は、本実施例に係る分散型コンピュータのハードウェア構成を説明する図である。
【図４】図４は、本実施例に係る復旧処理の一例を示すシーケンス図である。
【発明を実施するための形態】
【００１３】
以下に、本発明に係る情報処理システム、中継装置、及びプログラムの実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。
【実施例１】
【００１４】
図１は、本実施例に係る分散型コンピュータ１の全体構成の一例を示す図である。分散型コンピュータ１は、複数のプラットフォームＡ１０−１〜プラットフォームＨ１０−８と、複数のプラットフォームＡ１０−１〜プラットフォームＨ１０−８を通信可能に接続する中継装置３０とを備える情報処理システムである。図１に示すように、実施例に係る分散型コンピュータ１は、プラットフォームＡ１０−１〜プラットフォームＨ１０−８と、中継装置３０とを備えている。
【００１５】
プラットフォームＡ１０−１〜プラットフォームＨ１０−８は、中継装置３０を介して、通信可能に接続されている。プラットフォームＡ１０−１〜プラットフォームＨ１０−８は、例えば、中継装置３０が設けられたボード上のスロットに挿入される。また、複数のスロットのうち、何れかのスロットは、プラットフォーム１０が挿入されていない空き状態であってもよい。以下の説明では、各プラットフォームＡ１０−１〜プラットフォームＨ１０−８を区別する必要がなく、任意のプラットフォームＡ１０−１〜プラットフォームＨ１０−８を示す場合には、プラットフォーム１０と記載する。
【００１６】
プラットフォームＡ１０−１は、プラットフォームＢ１０−２〜プラットフォームＨ１０−８を管理して、プラットフォームＢ１０−２〜プラットフォームＨ１０−８に各種処理を実行させるメインの情報処理装置である。
【００１７】
プラットフォームＢ１０−２〜プラットフォームＨ１０−８は、プラットフォームＡ１０−１の要求に基づいて、例えばＡＩ（Artificial  Intelligence）推論処理や画像処理等を実行するサブの情報処理装置である。
【００１８】
また、プラットフォームＡ１０−１〜プラットフォームＨ１０−８は、プロセッサ１１−１〜１１−８を備える。また、各プロセッサ１１−１〜１１−８は、それぞれアーキテクチャが異なっていてもよい。また、各プロセッサ１１−１〜１１−８は、それぞれ異なるメーカから提供されていてもよいし、同一のメーカから提供されていてもよい。以下の説明では、プロセッサ１１−１〜１１−８を区別する必要がなく、任意のプロセッサ１１−１〜１１−８を示す場合には、プロセッサ１１と記載する。
【００１９】
プロセッサ１１は、プラットフォーム１０全体を制御する。プロセッサ１１は、マルチプロセッサであってもよい。また、プロセッサ１１は、例えばＣＰＵ（Central  Processing  Unit），ＭＰＵ（Micro  Processing  Unit），ＧＰＵ（Graphics  Processing  Unit），ＤＳＰ（Digital  Signal  Processor），ＡＳＩＣ（Application  Specific  Integrated  Circuit），ＰＬＤ（Programmable  Logic  Device），ＦＰＧＡ（Field  Programmable  Gate  Array）のいずれか一つであってもよい。また、プロセッサ１１は、ＣＰＵ，ＭＰＵ，ＧＰＵ，ＤＳＰ，ＡＳＩＣ，ＰＬＤ，ＦＰＧＡのうちの２種類以上の要素の組み合わせであってもよい。
【００２０】
プラットフォーム１０は、ホスト側として動作可能なルートコンプレックス（ＲＣ：Root  Complex）としての機能を有する。
【００２１】
中継装置３０は、複数のエンドポイント（ＥＰ：End  Point）を有する。また、中継装置３０は、エンドポイントに接続されたルートコンプレックスを有する複数のプラットフォーム１０間でのバスを介した通信を中継する。また、中継装置３０は、プラットフォーム１０と接続されるＡＴＵ（Address  Translation  Unit）及びスロット等を含む複数のエンドポイントとしての機能を有する。ルートコンプレックス及びエンドポイントは、例えばＰＣＩｅ（Peripheral  Component  Interconnect  Express）のルートコンプレックス及びエンドポイントであってよい。これにより、データ転送がプラットフォーム１０と中継装置３０との間で行なわれる。
【００２２】
次に、中継装置３０に接続されるプラットフォームＡ１０−１とプラットフォームＢ１０−２との間における通信処理の一例について説明する。図２は、本実施例に係る分散型コンピュータ１におけるプラットフォーム１０間における通信処理の一例を説明するための図である。ここでは、プラットフォームＡ１０−１と、プラットフォームＢ１０−２との間での通信処理の一例について説明するが、他のプラットフォーム１０間も同様に通信を行う。
【００２３】
図２に示すように、分散型コンピュータ１は、例えば、ＰＣＩｅの規格で規定されたレイヤー構造を有している。そして、分散型コンピュータ１は、各階層を介して、プラットフォーム１０間の通信を実行する。
【００２４】
送信元のプラットフォームＡ１０−１は、ソフトウェアが指定したデータを、トランザクション層、データリンク層、及び物理層（ＰＨＹ）を介して、中継装置３０の物理層（ＰＨＹ）に転送する。
【００２５】
中継装置３０は、送信元のプラットフォームＡ１０−１から転送されてきたデータを、物理層（ＰＨＹ）、及びデータリンク層を介して、トランザクション層に受け渡す。中継装置３０は、トランザクション層において、送信先のプラットフォームＢ１０−２に対応するエンドポイントにトンネリングによりデータを転送する。中継装置３０は、トランザクション層、データリンク層、及び物理層（ＰＨＹ）を介して、送信先のプラットフォームＢ１０−２の物理層（ＰＨＹ）に転送する。このように、中継装置３０は、エンドポイント間でデータをトンネリングさせることで、送信元のプラットフォームＡ１０−１からから送信先のプラットフォームＢ１０−２にデータを転送する。
【００２６】
送信先のプラットフォームＢ１０−２では、物理層（ＰＨＹ）、データリンク層、及びトランザクション層を介して、データがソフトウェアに受け渡される。
【００２７】
また、中継装置３０に接続された複数のプラットフォーム１０のうち、一のプラットフォーム１０にデータの転送が集中しない場合、異なる任意の組み合わせのプラットフォーム１０間で並行してデータを転送することができる。
【００２８】
例えば、プラットフォームＡ１０−１に対して、プラットフォームＢ１０−２、及びプラットフォームＣ１０−３が通信する場合には、中継装置３０は、プラットフォームＢ１０−２、及びプラットフォームＣ１０−３との通信をシリアル処理により実行する。一方、異なるプラットフォーム１０同士が通信し、特定のプラットフォーム１０に通信が集中しない場合には、中継装置３０は、プラットフォーム１０間の通信を並列処理により実行する。
【００２９】
次に、分散型コンピュータ１の構成について説明する。図３は、本実施例に係る分散型コンピュータ１のハードウェア構成を説明する図である。
【００３０】
まず、プラットフォーム１０について説明する。ここでは、プラットフォームＡ１０−１を例に説明する。プラットフォームＢ１０−２〜プラットフォームＨ１０−８もプラットフォームＡ１０−１と同様のハードウェアや情報を有している。
【００３１】
プラットフォームＡ１０−１は、プロセッサ１１−１と、メモリ１２−１と、ルートコンプレックス１３−１とを備える。以下の説明では、各メモリ１２−１〜メモリ１２−８を区別する必要がなく、任意のメモリ１２−１〜メモリ１２−８を示す場合には、メモリ１２と記載する。また、各ルートコンプレックス１３−１〜ルートコンプレックス１３−８を区別する必要がなく、任意のルートコンプレックス１３−１〜ルートコンプレックス１３−８を示す場合には、ルートコンプレックス１３と記載する。
【００３２】
メモリ１２は、ＲＯＭ（Read  Only  Memory）、及びＲＡＭ（Random  Access  Memory）を含む記憶メモリである。ＲＯＭには、各種ソフトウェアプログラムやこのプログラム用のデータ類が書き込まれている。メモリ１２−１に記憶されたプログラム１２１−１は、プロセッサ１１−１に読み込まれて実行される。また、ＲＡＭは、ワーキングメモリとして利用される。以下の説明では、各プログラム１２１−１〜プログラム１２１−８を区別する必要がなく、任意のプログラム１２１−１〜プログラム１２１−８を示す場合には、プログラム１２１と記載する。
【００３３】
また、プロセッサ１１−１は、メモリ１２−１に記憶されるプログラム１２１−１を実行することによって、図３に示す機能を実現する。具体的には、機能部として、初期化制御部１１１−１を備える。以下の説明では、各初期化制御部１１１−１〜初期化制御部１１１−８を区別する必要がなく、任意の初期化制御部１１１−１〜初期化制御部１１１−８を示す場合には、初期化制御部１１１と記載する。
【００３４】
初期化制御部１１１は、プラットフォーム１０の初期化を制御する。例えば、初期化制御部１１１は、プラットフォーム１０の再起動に伴いプラットフォーム１０を初期化する。
【００３５】
ルートコンプレックス１３は、第１通信部の一例である。ルートコンプレックス１３は、プラットフォーム１０の通信を制御する。例えば、ルートコンプレックス１３は、初期化したことを示すＰＣＩｅリセット信号の送信と、データの送受信とを実行する。更に詳しくは、ルートコンプレックス１３は、プロセッサ１１にデータの送信を指示された場合に、指定されたデータを中継装置３０に送信する。これにより、プラットフォーム１０は、自装置とは異なるプラットフォーム１０にデータを送信する。また、ルートコンプレックス１３は、中継装置３０からデータを受信した場合に、受信したデータをプロセッサ１１に通知する。これにより、プラットフォーム１０は、自装置とは異なるプラットフォーム１０からデータを受信する。
【００３６】
また、ルートコンプレックス１３は、初期化制御部１１１がプラットフォーム１０を初期化した場合に、プラットフォーム１０がハードウェアレベルの初期化を示すＰＣＩｅリセット信号を中継装置３０に送信する。
【００３７】
次に、中継装置３０について説明する。中継装置３０は、プロセッサ３１と、メモリ３２と、内部バス３３と、ＰＣＩｅバス３４と、プラットフォーム１０毎に設けられたエンドポイント３５−１〜エンドポイント３５−８と、ＧＰＩＯ（General  Purpose  Input  Output）３６とを備える。以下の説明では、各エンドポイント３５−１〜エンドポイント３５−８を区別する必要がなく、任意のエンドポイント３５−１〜エンドポイント３５−８を示す場合には、エンドポイント３５と記載する。
【００３８】
プロセッサ３１は、中継装置３０全体を制御する。プロセッサ３１は、マルチプロセッサであってもよい。また、プロセッサ３１は、例えばＣＰＵ，ＭＰＵ，ＧＰＵ，ＤＳＰ，ＡＳＩＣ，ＰＬＤ，ＦＰＧＡのいずれか一つであってもよい。また、プロセッサ３１は、ＣＰＵ，ＭＰＵ，ＧＰＵ，ＤＳＰ，ＡＳＩＣ，ＰＬＤ，ＦＰＧＡのうちの２種類以上の要素の組み合わせであってもよい。
【００３９】
メモリ３２は、ＲＯＭ、及びＲＡＭを含む記憶装置である。ＲＯＭには、各種ソフトウェアプログラムやこのプログラム用のデータ類が書き込まれている。メモリ３２に記憶されたプログラム３２１は、プロセッサ３１に読み込まれて実行される。また、ＲＡＭは、ワーキングメモリとして利用される。
【００４０】
内部バス３３は、プロセッサ３１、メモリ３２、及びＰＣＩｅバス３４を通信可能に接続する。
【００４１】
ＰＣＩｅバス３４は、接続部の一例である。ＰＣＩｅバス３４は、複数のエンドポイント３５、及び内部バス３３を通信可能に接続する。すなわち、ＰＣＩｅバス３４は、複数のエンドポイント３５間でデータを転送可能に接続する。また、ＰＣＩｅバス３４は、例えばＰＣＩｅ規格に準拠したバスである。
【００４２】
エンドポイント３５は、第２通信部の一例である。エンドポイント３５は、プラットフォーム１０毎に設けられ、ＰＣＩｅリセット信号の受信と、データの送受信とを実行する。例えば、エンドポイント３５は、接続されたプラットフォーム１０からデータを受信した場合に、ＰＣＩｅバス３４を介して、送信先のプラットフォーム１０に接続されたエンドポイント３５に受信したデータを送信する。例えば、中継装置３０は、ＤＭＡ（Direct  Memory  Access）転送により他のプラットフォーム１０にデータを送信する。また、エンドポイント３５は、データの送信元のプラットフォーム１０に接続されたエンドポイント３５から、ＰＣＩｅバス３４を介してデータを受信した場合に、接続されたプラットフォーム１０に受信したデータを送信する。
【００４３】
また、エンドポイント３５−１は、送信元情報３５１−１を記憶する。また、各送信元情報３５１−１〜送信元情報３５１−８を区別する必要がなく、任意の送信元情報３５１−１〜送信元情報３５１−８を示す場合には、送信元情報３５１と記載する。更に詳しくは、エンドポイント３５は、エンドポイント３５間のＤＭＡ転送におけるＤＭＡレジスタにデータの送信元を示す送信元情報３５１を記憶する。
【００４４】
また、エンドポイント３５−１は、接続されたプラットフォーム１０−１からＰＣＩｅリセット信号を受信する。ここで、エンドポイント３５−１は、設定フラグ３５２−１と、リセットフラグ３５３−１とを有している。以下の説明では、各設定フラグ３５２−１〜設定フラグ３５２−８を区別する必要がなく、任意の設定フラグ３５２−１〜設定フラグ３５２−８を示す場合には、設定フラグ３５２と記載する。また、各リセットフラグ３５３−１〜リセットフラグ３５３−８を区別する必要がなく、任意のリセットフラグ３５３−１〜リセットフラグ３５３−８を示す場合には、リセットフラグ３５３と記載する。
【００４５】
設定フラグ３５２は、ＰＣＩｅリセット信号を受信した場合に、リセットフラグ３５３を有効にするか否かを設定するフラグである。設定フラグ３５２は、本実施例においてはリセットフラグ３５３を有効にする設定に固定されている。
【００４６】
リセットフラグ３５３は、ＰＣＩｅリセット信号を受信した場合に、設定フラグ３５２に基づいて、有効になるフラグである。本実施例においては、設定フラグ３５２は、ＰＣＩｅリセット信号を受信した場合に有効にする設定に固定されている。よって、エンドポイント３５は、ＰＣＩｅリセット信号を受信した場合に、リセットフラグ３５３を有効する。
【００４７】
ＧＰＩＯ３６は、入力部の一例である。ＧＰＩＯ３６は、プラットフォーム１０のそれぞれから、エンドポイント３５を介さずに、ＰＣＩｅリセット信号の入力を受け付ける。そして、ＧＰＩＯ３６は、プラットフォーム１０が初期化されたことをプロセッサ３１に通知する。更に詳しく、ＧＰＩＯ３６は、ＰＣＩｅリセット信号を受け付けた場合に、外部割込み信号をプロセッサ３１に出力する。また、ＧＰＩＯ３６は、外部割込み信号を出力した後に、ＰＣＩｅ割込み信号を出力する。このように、プロセッサ３１は、ＧＰＩＯ３６を介してプラットフォーム１０の初期化を検出することができる。よって、プロセッサ３１は、内部バス３３及びＰＣＩｅバス３４を介したポーリングにより、プラットフォーム１０が初期化されたか否かを監視する必要がない。
【００４８】
また、プロセッサ３１は、メモリ３２に記憶されるプログラム３２１を実行することによって、図３に示す機能を実現する。具体的には、プロセッサ３１は、機能部として、外部割込み制御部３１１、ＰＣＩｅ割込み制御部３１２、及びＰＣＩｅ状態制御部３１３を備える。プロセッサ３１は、制御部の一例である。
【００４９】
外部割込み制御部３１１は、外部割込み信号の入力に伴い外部割込み処理を実行する。更に詳しくは、外部割込み制御部３１１は、ＧＰＩＯ３６がＰＣＩｅリセット信号を受け付けた場合に、外部割込み処理を抑止する。ここで、ＰＣＩｅリセット信号は不安定であるため必要以上に外部割込み処理を発生させてしまう可能性がある。そこで、外部割込み制御部３１１は、外部割込み処理を抑制する。また、外部割込み制御部３１１は、外部割込みを抑制してから所定期間が経過後、外部割込み処理をクリアする。
【００５０】
ＰＣＩｅ割込み制御部３１２は、ＰＣＩｅ割込み信号の発生に伴い処理を実行する。更に詳しくは、ＰＣＩｅ割込み制御部３１２は、再開信号を発行する。すなわち、ＰＣＩｅ割込み制御部３１２は、初期化されたプラットフォーム１０に接続されたエンドポイント３５の物理層（ＰＨＹ）の再初期化を要求する。ここで、ＰＣＩｅ割込み信号は、外部割込み制御部３１１が外部割込みを抑制した後に、ＰＣＩｅ割込み信号が発生する。また、ＰＣＩｅ割込み信号は、外部割込み制御部３１１が外部割込みを抑制した後であれば、外部割込み制御部３１１が外部割込み信号をクリアした後であってもよいし、外部割込み制御部３１１が外部割込みをクリアする前であってもよい。
【００５１】
また、初期化されたプラットフォーム１０に接続されたエンドポイント３５の物理層（ＰＨＹ）の再初期化において、ＰＣＩｅ割込み制御部３１２は、例えばＰＣＩｅ割込み信号に含まれている識別情報に基づいて、初期化されたプラットフォーム１０を特定する。なお、ＰＣＩｅ割込み制御部３１２は、初期化されたプラットフォーム１０の特定するための識別情報を、ＰＣＩｅ割込み信号の入力を受け付けた場合に、ＧＰＩＯ３６から取得してもよいし、エンドポイント３５から取得してもよいし、プラットフォーム１０から取得してもよいし、他のブロックから取得してもよい。
【００５２】
また、ＰＣＩｅ割込み制御部３１２は、エンドポイント３５から送信元情報３５１を取得する。更に詳しくは、ＰＣＩｅ割込み制御部３１２は、ＰＣＩｅリセット信号に伴いＰＣＩｅ割込み信号が発生した場合に、各エンドポイント３５から送信元情報３５１を取得する。そして、ＰＣＩｅ割込み制御部３１２は、各エンドポイント３５から取得した送信元情報３５１に基づいて、初期化されたプラットフォーム１０にＤＭＡ転送によりデータを送信していたエンドポイント３５を特定する。なお、初期化されたプラットフォーム１０に接続されたエンドポイント３５が自身に対してデータを転送していた送信元を示す送信元情報３５１を記憶している場合には、ＰＣＩｅ割込み制御部３１２は、初期化されたプラットフォーム１０に接続されたエンドポイント３５から送信元情報３５１を取得してもよい。
【００５３】
ＰＣＩｅ状態制御部３１３は、各エンドポイント３５を監視及び管理している。ＰＣＩｅ状態制御部３１３は、ＧＰＩＯ３６がＰＣＩｅリセット信号を受け付けた場合に、ＰＣＩｅリセット信号を送信したプラットフォーム１０がＰＣＩｅバス３４を介してデータを受信していたことを条件に、データの送信元のプラットフォーム１０に対応するエンドポイント３５を初期化する初期化処理を実行する。
【００５４】
更に詳しくは、初期化処理において、ＰＣＩｅ状態制御部３１３は、プラットフォーム１０とエンドポイント３５とのスレッド状態がｃｏｎｎｅｃｔｅｄ状態、つまり接続状態で、ＧＰＩＯ３６からＰＣＩｅ割込み信号を受け付けた場合に、送信先のプラットフォーム１０にデータを送信中であるか否かを判定する。ＰＣＩｅ状態制御部３１３は、データ送信中の場合に、データの送信元のプラットフォーム１０に対応するエンドポイント３５の再度の初期化を実行する。
【００５５】
また、ＰＣＩｅ状態制御部３１３は、送信元のプラットフォーム１０によるデータの送信を停止する処理を含む初期化処理を実行する。すなわち、ＰＣＩｅ状態制御部３１３は、送信元のプラットフォーム１０と、送信元のプラットフォーム１０に接続されたエンドポイント３５との間の通信を停止する。例えば、ＰＣＩｅ状態制御部３１３は、送信元のプラットフォーム１０と、送信元のプラットフォーム１０に接続されたエンドポイント３５との間のＤＭＡ転送を停止する。このように、ＰＣＩｅ状態制御部３１３は、送信元のプラットフォーム１０がデッドロックしてしまう前に、通信を停止することで送信元のプラットフォーム１０がデッドロックしてしまうことを防止する。さらに、エンドポイント３５が意図せずデータを受信し、エンドポイント３５が意図しない状態になってしまうことを防止する。
【００５６】
また、ＰＣＩｅ状態制御部３１３は、プラットフォーム１０とエンドポイント３５とのスレッド状態をｎｏｔ  ｃｏｎｎｅｃｔｅｄ状態、つまり非接続状態にする。なお、エンドポイント３５の初期化と、データ転送の停止とは、順番が逆であってもよい。そして、エンドポイント３５は、ｎｏｔ  ｃｏｎｎｅｃｔｅｄ状態になった後、通常のフローによりｃｏｎｎｅｃｔｅｄ状態に戻る。
【００５７】
次に、分散型コンピュータ１による復旧処理について説明する。図４は、本実施例に係る復旧処理の一例を示すシーケンス図である。復旧処理は、プラットフォーム１０間のデータ通信において、データの送信先のプラットフォーム１０が再起動に伴い初期化された場合に、データの送信元のプラットフォーム１０でデッドロックを発生させることなく再度データ通信可能な状態に復旧させる処理である。
【００５８】
ＰＣＩｅ割込み制御部３１２は、エンドポイント３５のスレッド状態をｃｏｎｎｅｃｔｅｄ状態、つまり接続中にする（ステップＳ１）。
【００５９】
ＧＰＩＯ３６は、プラットフォーム１０から出力されたＰＣＩｅリセット信号を受け付ける（ステップＳ２）。
【００６０】
ＧＰＩＯ３６は、外部割込み信号を外部割込み制御部３１１に出力する（ステップＳ３）。
【００６１】
外部割込み制御部３１１は、外部割込み処理を抑制する（ステップＳ４）。
【００６２】
外部割込み制御部３１１は、外部割込み処理をクリアする（ステップＳ５）。
【００６３】
ＧＰＩＯ３６は、ＰＣＩｅ割込み信号をＰＣＩｅ割込み制御部３１２に出力する（ステップＳ６）。なお、ＰＣＩｅ割込み信号は、ステップＳ３に示す外部割込み信号の抑制以降に出力されればよい。すなわち、ＰＣＩｅ割込み信号は、外部割込みのクリア前に出力されてもよい。また、外部割込み制御部３１１がＰＣＩｅ割込み信号を出力してもよい。
【００６４】
ＰＣＩｅ割込み制御部３１２は、再開信号を発行する（ステップＳ７）。更に詳しくは、ＰＣＩｅ割込み制御部３１２は、初期化されたプラットフォーム１０に接続されたエンドポイント３５を再初期化する。また、ＰＣＩｅ割込み制御部３１２は、各エンドポイント３５から送信元情報３５１を取得する。ＰＣＩｅ割込み制御部３１２は、送信元のプラットフォーム１０が示された送信元情報３５１を特定する。
【００６５】
ＰＣＩｅ割込み制御部３１２は、初期化されたプラットフォーム１０に対してデータを送信していた送信元のプラットフォーム１０を示す送信元情報３５１をＰＣＩｅ状態制御部３１３に出力する（ステップＳ８）。
【００６６】
ＰＣＩｅ状態制御部３１３は、送信元情報３５１により特定されるプラットフォーム１０に接続されたエンドポイント３５が、データ通信中であったか否かを判定する（ステップＳ９）。ここで、本シーケンス図においては、データ通信中であった場合を想定している。
【００６７】
ＰＣＩｅ状態制御部３１３は、送信元情報３５１により特定されるプラットフォーム１０に対応するエンドポイント３５を再初期化する（ステップＳ１０）。
【００６８】
ＰＣＩｅ状態制御部３１３は、送信元情報３５１により特定されるプラットフォーム１０からのデータ転送を停止する（ステップＳ１１）。すなわち、ＰＣＩｅ状態制御部３１３は、送信元のプラットフォーム１０がデッドロックが発生する前に、プラットフォーム１０からのＤＭＡ転送を停止する。
【００６９】
ＰＣＩｅ状態制御部３１３は、エンドポイント３５のスレッド状態をｎｏｔ  ｃｏｎｎｅｃｔｅｄ状態、つまり非接続にする（ステップＳ１２）。その後、エンドポイント３５のスレッド状態は、通常の処理により、ｃｏｎｎｅｃｔｅｄ状態、つまり接続中に移行する。
【００７０】
以上により分散型コンピュータ１は、初期化処理を終了する。
【００７１】
以上のように、本実施例に係る分散型コンピュータ１は、複数のプラットフォーム１０と、複数のプラットフォーム１０を通信可能に接続する中継装置３０とを備えている。中継装置３０は、エンドポイント３５と、内部バス３３及びＰＣＩｅバス３４を介してエンドポイント３５と接続するプロセッサ３１と、プラットフォーム１０がハードウェアレベルの初期化を示すＰＣＩｅリセット信号を受け付けるＧＰＩＯ３６とを備えている。このような構成において、プロセッサ３１は、複数のプラットフォーム１０間での通信中に、送信先のプラットフォーム１０が初期化された場合に、ＧＰＩＯ３６を介して、ＰＣＩｅリセット信号を受け付ける。そして、プロセッサ３１は、初期化されたプラットフォーム１０に対してデータを送信していた送信元のプラットフォーム１０に接続されたエンドポイント３５を初期化する。この時、プロセッサ３１は、プラットフォーム１０においてデッドロックが起きる前に、送信元のエンドポイント３５を初期化し、ＤＭＡ転送を停止する。従って、分散型コンピュータ１は、再起動に伴う送信元のプラットフォーム１０のデッドロックを防止することができる。
【００７２】
上述の実施形態では、各部のバス（例えば、拡張バス）又はＩ／ＯインタフェースとしてＰＣＩｅを例に挙げて説明したが、バスまたはＩ／ＯインタフェースはＰＣＩｅに限定されない。例えば、各部のバスまたはＩ／Ｏインタフェースは、データ転送バスによって、デバイス（周辺制御コントローラ）とプロセッサとの間でデータ転送を行える技術であればよい。データ転送バスは、１個の筐体等に設けられたローカルな環境（例えば、１つのシステム又は１つの装置）で高速にデータを転送できる汎用のバスであってもよい。Ｉ／Ｏインタフェースは、パラレルインタフェース及びシリアルインタフェースの何れであってもよい。
【００７３】
Ｉ／Ｏインタフェースは、シリアル転送の場合、ポイント・ツー・ポイント接続ができ、データをパケットベースで転送可能な構成でよい。なお、Ｉ／Ｏインタフェースは、シリアル転送の場合、複数のレーンを有してよい。Ｉ／Ｏインタフェースのレイヤー構造は、パケットの生成及び復号を行うトランザクション層と、エラー検出等を行うデータリンク層と、シリアルとパラレルとを変換する物理層とを有してよい。また、Ｉ／Ｏインタフェースは、階層の最上位であり１又は複数のポートを有するルートコンプレックス、Ｉ／Ｏデバイスであるエンドポイント、ポートを増やすためのスイッチ、及び、プロトコルを変換するブリッジ等を含んでよい。Ｉ／Ｏインタフェースは、送信するデータとクロック信号とをマルチプレクサによって多重化して送信してもよい。この場合、受信側は、デマルチプレクサでデータとクロック信号を分離してよい。
【符号の説明】
【００７４】
１      分散型コンピュータ
１０    プラットフォーム
１１    プロセッサ
１１１  初期化制御部
１３    ルートコンプレックス
３５１  送信元情報
３０    中継装置
３１    プロセッサ
３１１  外部割込み制御部
３１２  ＰＣＩｅ割込み制御部
３１３  ＰＣＩｅ状態制御部
３３    内部バス
３４    ＰＣＩｅバス
３５    エンドポイント
３６    ＧＰＩＯ 
【要約】
【課題】再起動に伴うデッドロックを防止する。
【解決手段】情報処理システムは、複数の情報処理装置と、複数の情報処理装置を通信可能に接続する中継装置とを備える。情報処理装置は、初期化したことを示すリセット信号の送信と、データの送受信とを実行する第１通信部を備える。中継装置は、複数の第２通信部と、接続部と、入力部と、制御部とを備える。第２通信部は、情報処理装置毎に設けられ、リセット信号の受信と、データの送受信とを実行する。接続部は、複数の第２通信部間でデータを転送可能に接続する。入力部は、情報処理装置のそれぞれから、第２通信部を介さずに、リセット信号の入力を受け付ける。制御部は、入力部がリセット信号を受け付けた場合に、リセット信号を送信した情報処理装置が接続部を介してデータを受信していたことを条件に、当該データの送信元の情報処理装置に対応する第２通信部を初期化する初期化処理を実行する。
【選択図】図３【図１】
0006659989.tif 000002
【図２】
0006659989.tif 000003
【図３】
0006659989.tif 000004
【図４】
0006659989.tif 000005