(57)【要約】【課題】情報処理装置の処理性能を向上させる情報処理装置、情報処理方法及び情報処理プログラムを提供する。【解決手段】予測ＭＣＴＰデバイスリスト生成部１５１は、１つ又は複数のＰＣＩｅデバイス１４０の情報をＢＩＯＳ１１０から取得し、ＰＣＩｅデバイス１４０の中から所定の通信機能を有する１つ又は複数のデバイスを特定する。ノードマネージャ１２０は、特定された各デバイスに対する通信情報の割り当てを順次実行する。ＭＣＴＰデバイスリスト生成部１５４は、予測ＭＣＴＰデバイスリスト生成部１５１により特定されたデバイスの全てについて割り当てられた通信情報を取得するまでノードマネージャ１２０から通信情報の取得を繰り返す。【選択図】図１
2020030706.tif 000002
【特許請求の範囲】
【請求項１】
１つ又は複数の搭載デバイスの情報をＢＩＯＳ（Basic  Input  Output  System）から取得し、前記搭載デバイスの中から所定の通信機能を有する１つ又は複数のデバイスを特定する特定部と、
前記特定部により特定された各前記デバイスに対する通信情報の割り当てを順次実行する割当部と、
前記特定部により特定された前記デバイスの全てについて割り当てられた前記通信情報を取得するまで前記割当部から前記通信情報の取得を繰り返す取得部と
を備えたことを特徴とする情報処理装置。
【請求項２】
前記特定部により特定された前記デバイスの全てに対する前記割当部による前記通信情報の割り当てが終了するまでにかかる割当時間を算出する算出部と、
前記算出部により算出された前記割当時間が経過したか否かを判定する判定部とをさらに備え、
前記取得部は、前記判定部により前記割当時間が経過したと判定された場合に、前記割当部からの前記通信情報の取得を開始する
ことを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記特定部は、起動時及び前記搭載デバイスの追加時に前記搭載デバイスの情報をＯＳ（Operating  System）から取得することを特徴とする請求項１又は２に記載の情報処理装置。
【請求項４】
前記取得部により取得された前記通信情報を用いて前記特定部により特定された前記デバイスを制御する制御部をさらに備えたことを特徴とする請求項１〜３のいずれか一つに記載の情報処理装置。
【請求項５】
前記所定の通信機能はＭＣＴＰを用いた通信機能であり、前記通信情報は前記通信機能による通信に用いる通信識別情報であることを特徴とする請求項１〜４のいずれか一つに記載の情報処理装置。
【請求項６】
管理装置に、１つ又は複数の搭載デバイスの情報をＢＩＯＳから取得させ、前記搭載デバイスの中から所定の通信機能を有する１つ又は複数のデバイスを特定させ、
通信情報管理装置に、特定された各前記デバイスに対する通信情報の割り当てを順次実行させ、
前記管理装置に、特定された前記デバイスの全てについて割り当てられた前記通信情報を取得するまで前記通信情報管理装置から前記通信情報の取得を繰り返させる
ことを特徴とする情報処理方法。
【請求項７】
管理プロセスに、１つ又は複数の搭載デバイスの情報をＢＩＯＳから取得させ、前記搭載デバイスの中から所定の通信機能を有する１つ又は複数のデバイスを特定させ、
通信情報管理プロセスに、特定された各前記デバイスに対する通信情報の割り当てを順次実行させ、
前記管理プロセスに、特定された前記デバイスの全てについて割り当てられた前記通信情報を取得するまで前記通信情報管理プロセスから前記通信情報の取得を繰り返させる
処理をコンピュータに実行させることを特徴とする情報処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、情報処理方法及び情報処理プログラムに関する。
【背景技術】
【０００２】
情報処理装置に搭載されたデバイス同士がＰＣＩｅ（Peripheral  Component  Interconnect  express）バスを介して直接通信する技術として、ＭＣＴＰ（Management  Component  Transport  Protocol）  ｏｖｅｒ  ＰＣＩｅという技術がある。ＭＣＴＰ  ｏｖｅｒ  ＰＣＩｅでは、ＰＣＨ（Platform  Controller  Hub）上で動作するノードマネージャがバスオーナとなり、ＭＣＴＰに対応したデバイスに対して通信用の識別子であるＭＣＴＰ  Ｅｎｄｐｏｉｎｔ  ＩＤ（Identifier）を割り振る処理を行う。以下では、ＭＣＴＰに対応したデバイスをＭＣＴＰデバイスと言う。ＭＣＴＰ  Ｅｎｄｐｏｉｎｔ  ＩＤを割り振る処理はＭＣＴＰ  Ｄｉｓｃｏｖｅｒｙ処理と呼ばれ、以下ではディスカバリ処理と表す。このディスカバリ処理により割り振られたＭＣＴＰ  Ｅｎｄｐｏｉｎｔ  ＩＤを使用することで、各ＭＣＴＰデバイス同士の通信が可能となる。
【０００３】
また近年、情報処理装置には、システムボード上にＣＰＵ（Central  Processing  Unit）とは独立して電源投入やエラー監視と言ったサーバの管理や制御を行うＢＭＣ（Baseboard  Management  Controller）が搭載されたものがある。ＢＭＣは、例えば、ＩＰＭＩ（Intelligent  Platform  Management  Interface）の規格に準拠したインタフェースを用いてハードウェアの監視を行う。ＢＭＣは、自己が管理するＭＣＴＰデバイスリストに登録されたＭＣＴＰデバイスを監視する。ＢＭＣが管理するＭＣＴＰデバイスリストは、ＢＭＣ内部のＭＣＴＰエージェントが、定期的にＭＣＴＰデバイス情報一覧をバスオーナであるノードマネージャから取得して作成する。具体的には、ＢＭＣは、バスオーナであるノードマネージャからＢＭＣを含むＭＣＴＰデバイスの一覧をＧｅｔ  Ｒｏｕｔｉｎｇ  Ｔａｌｂｅ  Ｅｎｔｒｉｅｓコマンドを使用して取得して、ＭＣＴＰデバイスリストを作成する。ＢＭＣから装置のデバイスを取得する外部の管理サーバなどは、ＢＭＣに対して有効なＭＣＴＰデバイスについて問い合わせを行い、ＢＭＣから通知された有効なＭＣＴＰデバイスに対して情報の採取を行う。
【０００４】
ＢＭＣは、目的のＭＣＴＰデバイスとＭＣＴＰ通信を行う場合、ＰＣＩｅデバイスとしてのＰＣＩｅアドレス情報を基にＭＶＴＰデバイスリストからＭＣＴＰ  Ｅｎｄｏｉｎｔ  ＩＤを取得する。そして、ＢＭＣは、取得したＭＣＴＰ  Ｅｎｄｏｉｎｔ  ＩＤを用いて目的のＭＣＴＰデバイスと通信を行う。
【０００５】
ここで、ディスカバリ処理について説明する。バスオーナであるノードマネージャは、ＰＣＩｅバスの初期化時に初期化開始指示を情報処理装置に搭載された全てのデバイスに発行する。その後、ノードマネージャは、以下の処理を定期的に繰り返す。ノードマネージャは、情報処理装置にＰＣＩｅデバイスが搭載されているか否かを判定する。ＰＣＩｅデバイスが存在する場合、ノードマネージャは、そのＰＣＩｅデバイスに対してＥｎｄｐｏｉｎｔ  Ｄｉｓｃｏｖｅｒｙコマンドを発行する。ＰＣＩｅデバイスがＥｎｄｐｏｉｎｔ  Ｄｉｓｃｏｖｅｒｙコマンドに応答を返してきた場合、ノードマネージャは、そのＰＣＩｅデバイスにＭＣＴＰ  Ｅｎｄｐｏｉｎｔ  ＩＤを割り振る。既に検出されてＭＣＴＰ  Ｅｎｄｐｏｉｎｔ  ＩＤを割り当て済みのＰＣＩｅデバイスは、Ｅｎｄｐｏｉｎｔ  Ｄｉｓｃｏｖｅｒｙコマンドに対する応答を行わない。
【０００６】
ＢＭＣは、自己のＭＣＴＰデバイスリストをノードマネージャが有する最新のＭＣＴＰデバイスの一覧と一致させるため、定期的にノードマネージャに対してポーリングを行い最新のＭＣＴＰデバイスの一覧を取得する。ＢＭＣは、自己に対するディスカバリ処理により自己のＭＣＴＰ  Ｅｎｄｐｏｉｎｔ  ＩＤが確定した時点からこのポーリング処理を開始する。
【０００７】
なお、ＰＣＩｅデバイス間の通信技術として、予め保持する構成パラメータに基づいてデバイス情報を構成し、構成したデバイス情報を用いてパケットによる通信を行う従来技術がある。また、作業の終了時刻を判定する技術として、作業の開始及び終了のイベントを検出して作業に費やした時間を算出し、算出した時間と予定時間を用いて遅延率を求め、求めた遅延率を用いて作業の終了時刻を推定する技術がある。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特表２０１７−５０３２３８号公報
【特許文献２】特開２０１１−２１５９７７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
しかしながら、ポーリングを行って最新のＭＣＴＰデバイスの一覧を入手する方法では、ＢＭＣは、バスオーナであるノードマネージャと自己以外のＭＣＴＰデバイスとの間で行われているディスカバリ処理の進行状況を把握しない。そのため、ＢＭＣは、自己に対するディスカバリ処理完了後、どの時点でノードマネージャによる全てのＰＣＩｅデバイスに対するディスカバリ処理が完了したかを把握することが難しい。すなわち、ＢＭＣは、ＭＣＴＰデバイスリストの完成を判定することが困難である。そこで、ＢＭＣは、定期的にノードマネージャに対してＭＣＴＰデバイスの一覧を要求し続けることになり、ＰＣＩｅバスに定期的にＢＭＣからノードマネージャに対して通信が発生する。ノードマネージャは、ＣＰＵと密接にかかわるＰＣＨ上で動作するため、定期的な通信が発生すると、情報処理装置の処理性能を低下させるおそれがある。
【００１０】
また、構成パラメータに基づいて構成したデバイス情報を用いてパケット通信を行う従来技術では、ディスカバリ処理について考慮されておらず、この従来技術を用いても情報処理装置の処理性能を向上させることは困難である。さらに、作業の開始及び終了のイベントから遅延率を求めて終了時間を予測する従来技術を用いてもディスカバリ処理の完了時間を把握することは難しいため、情報処理装置の処理性能を向上させることは困難である。
【００１１】
開示の技術は、上記に鑑みてなされたものであって、情報処理装置の処理性能を向上させる情報処理装置、情報処理方法及び情報処理プログラムを提供することを目的とする。
【課題を解決するための手段】
【００１２】
本願の開示する情報処理装置、情報処理方法及び情報処理プログラムの一つの態様において、特定部は、１つ又は複数の搭載デバイスの情報をＢＩＯＳから取得し、前記搭載デバイスの中から所定の通信機能を有する１つ又は複数のデバイスを特定する。割当部は、前記特定部により特定された各前記デバイスに対する通信情報の割り当てを順次実行する。取得部は、前記特定部により特定された前記デバイスの全てについて割り当てられた前記通信情報を取得するまで前記割当部から前記通信情報の取得を繰り返す。
【発明の効果】
【００１３】
１つの側面では、本発明は、情報処理装置の処理性能を向上させることができる。
【図面の簡単な説明】
【００１４】
【図１】図１は、情報処理装置のブロック図である。
【図２】図２は、ＰＣＩｅデバイス情報の一例の図である。
【図３】図３は、ＭＣＴＰ対応状況データベースの一例を示す図である。
【図４】図４は、予測ＭＣＴＰデバイスリストの一例を示す図である。
【図５】図５は、実施例１に係るＭＣＴＰデバイス一覧の取得処理を表すシーケンス図である。
【図６】図６は、完了予測時間中にディスカバリ処理が完了しなかった場合のＭＣＴＰデバイス一覧の取得処理を表すシーケンス図である。
【図７】図７は、実施例１に係るＭＣＴＰデバイスリストの取得処理のフローチャートである。
【図８】図８は、実施例２に係るＭＣＴＰデバイス一覧の取得処理を表すシーケンス図である。
【図９】図９は、実施例２に係るＭＣＴＰデバイスリストの取得処理のフローチャートである。
【図１０】図１０は、情報処理装置のハードウェア構成図である。
【発明を実施するための形態】
【００１５】
以下に、本願の開示する情報処理装置、情報処理方法及び情報処理プログラムの実施例を図面に基づいて詳細に説明する。なお、以下の実施例により本願の開示する情報処理装置、情報処理方法及び情報処理プログラムが限定されるものではない。
【実施例１】
【００１６】
図１は、情報処理装置のブロック図である。情報処理装置１は、ＣＰＵ１１、ＰＣＨ１２、ＰＣＩｅスロット１４、ＰＣＩｅデバイス１４０及びＢＭＣ１５を有する。
【００１７】
ＰＣＩｅデバイス１４０は、ＰＣＩｅの規格に準拠したＩＯ（Input  Output）デバイスであり、ＰＣＩｅスロット１４に装着される。ＰＣＩｅデバイス１４０には、ＭＣＴＰ対応のデバイスと、ＭＣＴＰ非対応のデバイスが存在する。各ＰＣＩｅスロット１４に接続されるＰＣＩｅデバイス１４０は、全てがＭＣＴＰ対応でもよいし、全てがＭＣＴＰ非対応でもよいし、ＭＣＴＰ対応とＭＣＴＰ非対応とが混在してもよい。以下では、ＰＣＩｅスロット１４に接続するデータバスをＰＣＩｅバスという。また、ＭＣＴＰに対応したＰＣＩｅデバイス１４０を、ＭＣＴＰデバイスという場合がある。このＰＣＩｅデバイス１４０が、「搭載デバイス」の一例にあたる。そして、ＭＣＴＰ通信を行う機能が、「所定の通信機能」の一例にあたる。また、ＭＣＴＰデバイスが、「特定されたデバイス」の一例にあたる。
【００１８】
ＣＰＵ１１は、情報処理装置１の起動時にＢＩＯＳ（Basic  Input  Output  System）１１０を実行して動作させる。ＢＩＯＳ１１０は、ＰＣＩｅスロット１４に接続されたＰＣＩｅデバイス１４０を含む周辺機器の設定及び管理を行う。
【００１９】
また、ＢＩＯＳ１１０は、情報処理装置１の起動時に、各ＰＣＩｅスロット１４に接続されたＰＣＩｅデバイス１４０を含む周辺機器の認識を行う。そして、ＢＩＯＳ１１０は、認識したＰＣＩｅデバイス１４０の各種情報を含むＰＣＩｅデバイス情報をＢＭＣ１５へ送信する。例えば、ＢＩＯＳ１１０は、ＩＰＭＩコマンドであるＳｅｔ  ＰＣＩ  Ｄｅｖｉｃｅ  Ｉｎｆｏを用いてＰＣＩｅデバイス情報をＢＭＣ１５へ送信する。
【００２０】
また、ＣＰＵ１１は、ＯＳ（Operating  System）を動作させる。ＯＳ上では、エージェントが動作する。ＯＳ上で動作するＰＣＩｅスロット１４を管理するエージェントは、ホットプラグ対応のＰＣＩｅデバイス１４０がＰＣＩｅスロット１４に接続された場合、ＰＣＩｅデバイス情報をＢＭＣ１５へ送信する。
【００２１】
ＰＣＩｅデバイス情報は、例えば、図２に示すフォーマット２０１で示す情報を含む。図２は、ＰＣＩｅデバイス情報の一例の図である。図２に向かって左側の数字は、各情報のサイズをバイト単位で表した値である。本実施例においてＢＩＯＳ１１０が送信するＰＣＩｅデバイス情報は、図２のフォーマット２０１に示すように、ベンダＩＤであるＰＣＩ  Ｖｅｎｄｅｒ  ＩＤ及びデバイスＩＤであるＰＣＩ  Ｄｅｖｉｃｅ  ＩＤを含む。さらに、ＰＣＩｅデバイス情報は、図２のフォーマット２０１に示すように、ＰＣＩｅアドレスであるＰＣＩ物理アドレス、ＰＣＩｅデバイス１４０のファームウェアバージョン及びファームウェアバージョン長を含む。例えば、ＰＣＩｅデバイス１４０としては、ネットワークアダプタカードなどが存在する。
【００２２】
ＰＣＨ１２は、ＰＣＩｅスロット１４に接続するＰＣＩｅバスを含む各種データバスの管理を行う。ＰＣＨ１２は、ノードマネージャ１２０を動作させる。ＰＣＨ１２は、データバスの管理に関してＣＰＵ１１と通信を行う。このＰＣＨ１２が、「通信情報管理装置」の一例にあたる。
【００２３】
ノードマネージャ１２０は、例えば、ＰＣＩｅバスの管理を行う。ノードマネージャ１２０は、ＰＣＩｅバスに接続されるＰＣＩｅスロット１４に接続されたＰＣＩｅデバイス１４０のうちＭＣＴＰに準拠したＰＣＩｅデバイス１４０を検出する。ノードマネージャ１２０は、検出したＭＣＴＰデバイスが接続されたＰＣＩｅスロット１４のＰＣＩｅアドレスを表すデバイスアドレスを取得する。そして、ノードマネージャ１２０は、検出したＭＣＴＰデバイスにＭＣＴＰデバイス間の直接通信に用いる通信用識別子を割り振るディスカバリ処理を行う。通信用識別子は、例えば、Ｅｎｄｐｏｉｎｔ  ＩＤである。そして、ノードマネージャ１２０は、各デバイスアドレスとそのデバイスアドレスを有するＭＣＴＰデバイスに割り振った通信識別子とを対応付けて記憶する。この、通信識別子が、「通信情報」の一例にあたる。
【００２４】
さらに、ノードマネージャ１２０は、ＭＣＴＰデバイス一覧の取得要求をＭＣＴＰデバイスリスト生成部１５４から受信する。そして、ノードマネージャ１２０は、保持する各デバイスアドレスとそのデバイスアドレスを有するＭＣＴＰデバイスに割り振った通信識別子との対応情報をＭＣＴＰデバイス一覧としてＭＣＴＰデバイスリスト生成部１５４へ送信する。ここで、ノードマネージャ１２０は、ＭＣＴＰデバイス一覧の取得要求の受信時に保持する対応情報を送信するので、ディスカバリ処理を行っていないＭＣＴＰデバイスが残っている場合、そのＭＣＴＰデバイスに関する情報はＭＣＴＰデバイス一覧には含まれない。このノードマネージャ１２０が、「割当部」及び「通信情報管理プロセス」の一例にあたる。
【００２５】
ＢＭＣ１５は、ＣＰＵ１１から独立して電源管理や状態監視といった情報処理装置１の基本的な操作を行う。例えば、ＢＭＣ１５は、ＭＣＴＰデバイスであるＰＣＩｅデバイス１４０とＭＣＴＰ通信を行い、そのＰＣＩｅデバイス１４０のデータを採取する。本実施例に係るＢＭＣ１５は、予測ＭＣＴＰデバイスリスト生成部１５１、完了時間算出部１５２、ＭＣＴＰ対応状況データベース１５３、ＭＣＴＰデバイスリスト生成部１５４、処理完了判定部１５５、デバイス管理部１５６及び遅延タイマ１５７を有する。このＢＭＣ１５が、「管理装置」の一例にあたる。また、ＢＭＣ１５が実行する各種処理が、「管理プロセス」の一例にあたる。
【００２６】
ＭＣＴＰ対応状況データベース１５３は、ＭＣＴＰデバイスを特定するための情報が格納される。ＭＣＴＰ対応状況データベース１５３は、例えば、図３に示す特定情報２０２を含む。図３は、ＭＣＴＰ対応状況データベースの一例を示す図である。ＭＣＴＰ対応状況データベース１５３は、特定情報２０２に含まれるＭＣＴＰデバイスの製造元を表すベンダＩＤ、ＭＣＴＰデバイスの識別情報であるＰＣＩデバイスＩＤ、及び、ＭＣＴＰに対応したファームウェアバージョンの情報を有する。あるＰＣＩｅデバイス１４０のベンダＩＤ、ＰＣＩデバイスＩＤ及びファームウェアバージョンがＭＣＴＰ対応状況データベース１５３に登録されている場合、そのＰＣＩｅデバイス１４０はＭＣＴＰデバイスである。また、ファームウェアバージョンが「ｎｕｌｌ」の場合、ファームウェアバージョンの情報が存在しないことを表し、そのＰＣＩｅデバイス１４０がファームウェアバージョンに依らずＭＣＴＰに対応することを表す。
【００２７】
予測ＭＣＴＰデバイスリスト生成部１５１は、情報処理装置１の起動後に、各ＰＣＩｅスロット１４に接続されたＰＣＩｅデバイス１４０のそれぞれのＰＣＩｅデバイス情報の入力をＢＩＯＳ１１０から受ける。具体的には、予測ＭＣＴＰデバイスリスト生成部１５１は、各ＰＣＩｅデバイス１４０について図２で示したフォーマット２０１で示される各情報の入力を受ける。
【００２８】
次に、予測ＭＣＴＰデバイスリスト生成部１５１は、取得したＰＣＩｅデバイス情報に含まれるＰＣＩ物理アドレスの情報から、それぞれのＰＣＩｅデバイス１４０が接続されたＰＣＩｅスロット１４を判別する。さらに、予測ＭＣＴＰデバイスリスト生成部１５１は、各ＰＣＩｅデバイス１４０のベンダＩＤ、デバイスＩＤ及びファームウェアバージョンをＰＣＩｅデバイス情報から取得する。
【００２９】
次に、予測ＭＣＴＰデバイスリスト生成部１５１は、ＭＣＴＰ対応状況データベース１５３を参照し、各ＰＣＩｅデバイス１４０がＭＣＴＰに対応しているかを確認し、ＭＣＴＰに対応したＰＣＩｅデバイス１４０であるＭＣＴＰデバイスを特定する。そして、予測ＭＣＴＰデバイスリスト生成部１５１は、通信用識別子及び物理アドレスの対応を表す情報を生成する。
【００３０】
本実施例では、予測ＭＣＴＰデバイスリスト生成部１５１は、例えば、図４に示すような予測ＭＣＴＰデバイスリスト２０３を生成する。図４は、予測ＭＣＴＰデバイスリストの一例を示す図である。図４の予測ＭＣＴＰデバイスリスト２０３におけるＭＣＴＰ  Ｅｎｄｐｏｉｎｔ  ＩＤは、通信用識別子にあたる。また、予測ＭＣＴＰデバイスリスト２０３におけるデバイスアドレスは、各ＭＣＴＰデバイスの物理アドレスにあたる。ここで、本実施例では、予測ＭＣＴＰデバイスリスト２０３における１番の登録欄には、ノードマネージャ１２０が動作するＰＣＨ１２の情報が登録される。ＰＣＨ１２のＭＣＴＰ  Ｅｎｄｏｐｏｉｎｔ  ＩＤは、固定であるので予測ＭＣＴＰデバイスリスト２０３の初期状態で既に登録済みである。また、本実施例では、予測ＭＣＴＰデバイスリスト２０３における２番の登録欄に、ＢＭＣ１５自身の情報が登録される。予測ＭＣＴＰデバイスリスト２０３を生成した段階では、ＢＭＣ１５に対するディスカバリ処理が完了していないので、ＢＭＣ１５のＭＣＴＰ  Ｅｎｄｐｏｉｎｔ  ＩＤは未登録である。
【００３１】
具体的な予測ＭＣＴＰデバイスリスト２０３の作成処理の流れについて説明する。予測ＭＣＴＰデバイスリスト生成部１５１は、情報処理装置１の起動時に予測ＭＣＴＰデバイスリスト２０３を初期化する。初期化時に、予測ＭＣＴＰデバイスリスト生成部１５１は、ＰＣＨ１２に関する情報を残しておいてもよい。その後、予測ＭＣＴＰデバイスリスト生成部１５１は、ＢＩＯＳ１１０から取得した各ＭＣＴＰデバイスのデバイスアドレスを予測ＭＣＴＰデバイスリスト２０３へ順次登録していくことで予測ＭＣＴＰデバイスリスト２０３を完成させる。
【００３２】
そして、予測ＭＣＴＰデバイスリスト生成部１５１は、生成した予測ＭＣＴＰデバイスリスト２０３をＭＣＴＰデバイスリスト生成部１５４及び完了時間算出部１５２へ出力する。ここで、予測ＭＣＴＰデバイスリスト生成部１５１は、完了時間算出部１５２へは、予測ＭＣＴＰデバイスリスト２０３を送信せずに、予測ＭＣＴＰデバイスリスト２０３に登録したＭＣＴＰデバイスの数を通知してもよい。この予測ＭＣＴＰデバイスリストが、「特定部」の一例にあたる。
【００３３】
完了時間算出部１５２は、予測ＭＣＴＰデバイスリスト２０３の入力を予測ＭＣＴＰデバイスリスト生成部１５１から受ける。完了時間算出部１５２は、取得した予測ＭＣＴＰデバイスリスト２０３から情報処理装置１に搭載されたＭＣＴＰデバイスのうちＰＣＨ１２を除いたデバイス数を取得する。ここで、完了時間算出部１５２は、１デバイスのディスカバリ処理にかかると予測される予測処理時間を予め有する。そこで、完了時間算出部１５２は、予測処理時間にデバイス数を乗算して、ＢＭＣ１５のディスカバリ処理が完了してから残りの全てのＭＣＴＰデバイスのディスカバリ処理が完了するまでの完了予測時間を求める。その後、完了時間算出部１５２は、算出した完了予測時間を処理完了判定部１５５へ出力する。この完了時間算出部１５２が、「算出部」の一例にあたる。そして、予測完了時間が、「割当時間」の一例にあたる。
【００３４】
処理完了判定部１５５は、情報処理装置１の起動時に遅延タイマ１５７を起動させる。遅延タイマ１５７は、自己の起動時からの経過時間を計測するタイマである。その後、処理完了判定部１５５は、完了予測時間の入力を完了時間算出部１５２から受ける。そして、処理完了判定部１５５は、遅延タイマ１５７から経過時間を随時取得し、経過時間が完了予測時間に達すると、完了予測時間の経過をＭＣＴＰデバイスリスト生成部１５４へ通知する。この処理完了判定部１５５が、「判定部」の一例にあたる。
【００３５】
ＭＣＴＰデバイスリスト生成部１５４は、予測ＭＣＴＰデバイスリスト２０３の入力を予測ＭＣＴＰデバイスリスト生成部１５１から受ける。そして、ＭＣＴＰデバイスリスト生成部１５４は、完了予測時間経過の通知をＭＣＴＰデバイスリスト生成部１５４から受けるまで待機する。
【００３６】
その後、完了予測時間経過の通知を受けると、ＭＣＴＰデバイスリスト生成部１５４は、ＭＣＴＰデバイス一覧の取得要求をノードマネージャ１２０へ送信する。その後、ＭＣＴＰデバイスリスト生成部１５４は、ＭＣＴＰデバイス一覧をノードマネージャ１２０から受信する。
【００３７】
次に、ＭＣＴＰデバイスリスト生成部１５４は、受信したＭＣＴＰデバイス一覧に含まれるデバイスアドレスに対応する通信識別情報を、予測ＭＣＴＰデバイスリスト２０３における同じデバイスアドレスの欄に登録する。そして、ＭＣＴＰデバイスリスト生成部１５４は、予測ＭＣＴＰデバイスリスト２０３に登録されたＭＣＴＰデバイスが全てＭＣＴＰデバイス一覧に存在するか否かを判定する。予測ＭＣＴＰデバイスリスト２０３に登録されたＭＣＴＰデバイスが全てＭＣＴＰデバイス一覧に存在する場合、ＭＣＴＰデバイスリスト生成部１５４は、登録が完了した予測ＭＣＴＰデバイスリスト２０３をＭＣＴＰデバイスリストとして取得する。ＭＣＴＰデバイスリストの生成が完了すると、ＭＣＴＰデバイスリスト生成部１５４は、取得したＭＣＴＰデバイスリストをデバイス管理部１５６へ出力する。
【００３８】
これに対して、予測ＭＣＴＰデバイスリスト２０３に登録されたＭＣＴＰデバイスのうちＭＣＴＰデバイス一覧に存在しないものが存在する場合、ＭＣＴＰデバイスリスト生成部１５４は、ＭＣＴＰデバイス一覧の取得要求をノードマネージャ１２０へ再度送信する。ＭＣＴＰデバイスリスト生成部１５４は、予測ＭＣＴＰデバイスリスト２０３に登録されたＭＣＴＰデバイスが全て存在するＭＣＴＰデバイス一覧を取得するまで、ＭＣＴＰデバイスリストの生成処理を繰り返す。
【００３９】
ＭＣＴＰデバイスリストの生成処理を繰り返す場合、ＭＣＴＰデバイスリスト生成部１５４は、リトライ回数を取得する。また、ＭＣＴＰデバイスリスト生成部１５４は、自己が有する時計を用いて、最初のＭＣＴＰデバイス一覧の取得からの経過時間を取得する。ここで、ＭＣＴＰデバイスリスト生成部１５４は、エラー発生の判定の基準となるリトライ閾値及びリカバリ可能時間を予め有する。
【００４０】
ＭＣＴＰデバイスリスト生成部１５４は、リトライ回数がリトライ閾値を超過したかを判定する。また、ＭＣＴＰデバイスリスト生成部１５４は、最初のＭＣＴＰデバイス一覧の取得からの経過時間がリカバリ可能時間を超過したかを判定する。リトライ回数がリトライ閾値を超過しておらず、且つ、経過時間がリカバリ可能時間を超過していない場合、ＭＣＴＰデバイスリスト生成部１５４は、ＭＣＴＰデバイスリストの生成処理を繰り返す。
【００４１】
一方、リトライ回数がリトライ閾値を超過した又は経過時間がリカバリ可能時間を超過した場合、ＭＣＴＰデバイスリスト生成部１５４は、ＭＣＴＰデバイスリストの取得に失敗したと判定して、ＭＣＴＰデバイスリストの取得処理を終了する。
【００４２】
デバイス管理部１５６は、ＭＣＴＰデバイスリストの入力をＭＣＴＰデバイスリスト生成部１５４から受ける。その後、デバイス管理部１５６は、ＭＣＴＰ通信が有効なＰＣＩｅデバイス１４０に関する問合せを外部の管理サーバ２から受ける。そして、デバイス管理部１５６は、ＭＣＴＰデバイスリストに登録されたＭＣＴＰデバイスとの間でＭＣＴＰデバイスリストに登録された通信識別情報を用いて通信を行い、各ＭＣＴＰデバイスの情報を採取する。その後、デバイス管理部１５６は、採取した各ＭＣＴＰデバイスの情報を管理サーバ２へ送信する。このデバイス管理部１５６が、「制御部」の一例にあたる。
【００４３】
次に、図５を参照して、ＢＭＣによるＭＣＴＰデバイス一覧の取得処理のタイミングについて説明する。図５は、実施例１に係るＭＣＴＰデバイス一覧の取得処理を表すシーケンス図である。ここでは、ＭＣＴＰデバイスとして、ＭＣＴＰデバイス＃１〜＃３が存在する場合で説明する。
【００４４】
ＢＭＣ１５は、情報処理装置１の起動後にノードマネージャ１２０によるディスカバリ処理を受ける（ステップＳ１０１）。これにより、ＢＭＣ１５は、通信識別情報が割り振られる。
【００４５】
また、ＢＭＣ１５は、ＰＣＩｅデバイス情報をＢＩＯＳ１１０から受信する（ステップＳ１０２）。
【００４６】
その後、ＢＭＣ１５は、完了予測時間を算出し、算出した完了予測時間まで待機してディスカバリ処理の完了を待ち合わせる（ステップＳ１０３）。
【００４７】
ＢＭＣ１５が待機している間に、ノードマネージャ１２０は、ＭＣＴＰデバイス＃１に対するディスカバリ処理を行い、ＭＣＴＰデバイス＃１に通信識別子を割り振り記憶する（ステップＳ１０４）。また、ノードマネージャ１２０は、ＭＣＴＰデバイス＃２に対するディスカバリ処理を行い、ＭＣＴＰデバイス＃２に通信識別子を割り振り記憶する（ステップＳ１０５）。さらに、ノードマネージャ１２０は、ＭＣＴＰデバイス＃３に対するディスカバリ処理を行い、ＭＣＴＰデバイス＃３に通信識別子を割り振り記憶する（ステップＳ１０６）。
【００４８】
その後、ＢＭＣ１５は、ＭＣＴＰデバイス一覧の取得要求をノードマネージャ１２０へ送信する（ステップＳ１０７）。
【００４９】
ノードマネージャ１２０は、ＭＣＴＰデバイス一覧の取得要求を受信して、記憶するＭＣＴＰデバイス＃１〜＃３のデバイスアドレスと通信識別子との対応関係を含むＭＣＴＰデバイス一覧をＢＭＣ１５へ送信する（ステップＳ１０８）。ＢＭＣ１５は、情報処理装置１に搭載されたＭＣＴＰデバイス＃１〜＃３の情報が全ての登録されたＭＣＴＰデバイス一覧をノードマネージャ１２０から受信する。この後、ＭＣＴＰデバイスリスト生成部１５４は、ノードマネージャ１２０に対するＭＣＴＰデバイス一覧の取得要求を停止する。
【００５０】
これに対して、ＢＭＣ１５が取得したＭＣＴＰデバイス一覧に登録されていないＭＣＴＰデバイスが存在する場合がある。そこで、次に、図６を参照して、完了予測中にディスカバリ処理が完了しなかった場合のＭＣＴＰデバイス一覧の取得処理について説明する。図６は、完了予測時間中にディスカバリ処理が完了しなかった場合のＭＣＴＰデバイス一覧の取得処理を表すフローチャートである。ここでも、ＭＣＴＰデバイスとして、ＭＣＴＰデバイス＃１〜＃３が存在する場合で説明する。
【００５１】
ＢＭＣ１５は、情報処理装置１の起動後にノードマネージャ１２０によるディスカバリ処理を受ける（ステップＳ１１１）。
【００５２】
また、ＢＭＣ１５は、ＰＣＩｅデバイス情報をＢＩＯＳ１１０から受信する（ステップＳ１１２）。
【００５３】
その後、ＢＭＣ１５は、完了予測時間を算出し、算出した完了予測時間まで待機してディスカバリ処理の完了を待ち合わせる（ステップＳ１１３）。
【００５４】
ＢＭＣ１５が待機している間に、ノードマネージャ１２０は、ＭＣＴＰデバイス＃１に対するディスカバリ処理を行い、ＭＣＴＰデバイス＃１に通信識別子を割り振り記憶する（ステップＳ１１４）。また、ノードマネージャ１２０は、ＭＣＴＰデバイス＃２に対するディスカバリ処理を行い、ＭＣＴＰデバイス＃２に通信識別子を割り振り記憶する（ステップＳ１１５）。さらに、ノードマネージャ１２０は、ＭＣＴＰデバイス＃３に対するディスカバリ処理を行う。ただし、この場合、エラーが発生して、ＭＣＴＰデバイス＃３に対するディスカバリ処理が完了しない（ステップＳ１１６）。
【００５５】
その後、ＢＭＣ１５は、ＭＣＴＰデバイス一覧の取得要求をノードマネージャ１２０へ送信する（ステップＳ１１７）。
【００５６】
ノードマネージャ１２０は、ＭＣＴＰデバイス一覧の取得要求を受信して、記憶するＭＣＴＰデバイス＃１及び＃２のデバイスアドレスと通信識別子との対応関係を含むＭＣＴＰデバイス一覧をＢＭＣ１５へ送信する（ステップＳ１１８）。ＢＭＣ１５は、情報処理装置１に搭載されたＭＣＴＰデバイス＃１及び＃２の情報が登録されたＭＣＴＰデバイス一覧をノードマネージャ１２０から受信する。
【００５７】
しかし、この段階では、ＭＣＴＰデバイス＃３に関する情報がＭＣＴＰデバイス一覧に登録されていない。そのため、ＢＭＣ１５は、予測ＭＣＴＰデバイスリスト２０３に登録されたＭＣＴＰデバイス＃３が、ＭＣＴＰデバイス一覧に存在しないことを検出する。そこで、ＢＭＣ１５は、ＭＣＴＰデバイス一覧の取得要求をノードマネージャ１２０へ再度送信する（ステップＳ１１９）。
【００５８】
ノードマネージャ１２０は、ＭＣＴＰデバイス一覧の取得要求を受信する。このタイミングでも、ノードマネージャ１２０は、ＭＣＴＰデバイス＃３のディスカバリ処理を完了していない。そこで、ノードマネージャ１２０は、記憶するＭＣＴＰデバイス＃１及び＃２のデバイスアドレスと通信識別子との対応関係を含むＭＣＴＰデバイス一覧をＢＭＣ１５へ送信する（ステップＳ１２０）。ＢＭＣ１５は、情報処理装置１に搭載されたＭＣＴＰデバイス＃１及び＃２の情報が登録されたＭＣＴＰデバイス一覧をノードマネージャ１２０から受信する。
【００５９】
その後、ノードマネージャ１２０は、ＭＣＴＰデバイス＃３に対するディスカバリ処理を行い、ＭＣＴＰデバイス＃３に通信識別子を割り振り記憶して、ＭＣＴＰデバイス＃３に対するディスカバリ処理を完了する（ステップＳ１２１）。
【００６０】
ＢＭＣ１５は、予測ＭＣＴＰデバイスリスト２０３に登録されたＭＣＴＰデバイス＃３が、受信したＭＣＴＰデバイス一覧に存在しないことを再度検出する。そこで、ＢＭＣ１５は、ＭＣＴＰデバイス一覧の取得要求をノードマネージャ１２０へ再度送信する（ステップＳ１２２）。
【００６１】
ノードマネージャ１２０は、ＭＣＴＰデバイス一覧の取得要求を受信して、記憶するＭＣＴＰデバイス＃１〜＃３のデバイスアドレスと通信識別子との対応関係を含むＭＣＴＰデバイス一覧をＢＭＣ１５へ送信する（ステップＳ１２３）。ＢＭＣ１５は、情報処理装置１に搭載されたＭＣＴＰデバイス＃１〜＃３の情報が全ての登録されたＭＣＴＰデバイス一覧をノードマネージャ１２０から受信する。この後、ＭＣＴＰデバイスリスト生成部１５４は、ノードマネージャ１２０に対するＭＣＴＰデバイス一覧の取得要求を停止する。
【００６２】
次に、図７を参照して、実施例１に係るＭＣＴＰデバイスリストの取得処理の流れについて説明する。図７は、実施例１に係るＭＣＴＰデバイスリストの取得処理のフローチャートである。
【００６３】
情報処理装置１が起動すると、処理完了判定部１５５は、遅延タイマ１５７を起動する（ステップＳ２０１）。
【００６４】
次に、予測ＭＣＴＰデバイスリスト生成部１５１は、予測ＭＣＴＰデバイスリスト２０３を初期化する（ステップＳ２０２）。
【００６５】
次に、予測ＭＣＴＰデバイスリスト生成部１５１は、全てのＰＣＩｅデバイス１４０に関するＰＣＩｅデバイス情報を取得したか否かを判定する（ステップＳ２０３）。全てのＰＣＩｅデバイス１４０に関するＰＣＩｅデバイス情報を所得していない場合（ステップＳ２０３：否定）、予測ＭＣＴＰデバイスリスト生成部１５１は、全てのＰＣＩｅデバイス１４０に関するＰＣＩｅデバイス情報を取得するまでＰＣＩｅデバイス情報の取得を繰り返す。
【００６６】
これに対して、全てのＰＣＩｅデバイス１４０に関するＰＣＩｅデバイス情報を所得した場合（ステップＳ２０３：肯定）、予測ＭＣＴＰデバイスリスト生成部１５１は、ＰＣＩｅデバイス１４０の中から未選択の物を１つ選択する（ステップＳ２０４）。
【００６７】
次に、予測ＭＣＴＰデバイスリスト生成部１５１は、ＭＣＴＰ対応状況データベース１５３に選択したＰＣＩｅデバイス１４０の情報が存在するか否かを判定する（ステップＳ２０５）。選択したＰＣＩｅデバイス１４０の情報が存在しない場合（ステップＳ２０５：否定）、予測ＭＣＴＰデバイスリスト生成部１５１は、選択したＰＣＩｅデバイス１４０がＭＣＴＰに非対応であると判定して、ステップＳ２０９へ進む。
【００６８】
一方、選択したＰＣＩｅデバイス１４０の情報が存在する場合（ステップＳ２０５：肯定）、予測ＭＣＴＰデバイスリスト生成部１５１は、ファームウェアバージョンの情報が予測ＭＣＴＰデバイスリスト２０３に存在するか否かを判定する（ステップＳ２０６）。
【００６９】
ファームウェアバージョンの情報が予測ＭＣＴＰデバイスリスト２０３に存在しない場合（ステップＳ２０６：否定）、予測ＭＣＴＰデバイスリスト生成部１５１は、選択したＰＣＩｅデバイス１４０がＭＣＴＰに対応すると判定する。そして、予測ＭＣＴＰデバイスリスト生成部１５１は、選択したＰＣＩｅデバイス１４０の情報を予測ＭＣＴＰデバイスリスト２０３に追加する（ステップＳ２０８）。
【００７０】
これに対して、ファームウェアバージョンの情報が予測ＭＣＴＰデバイスリスト２０３に存在する場合（ステップＳ２０６：肯定）、予測ＭＣＴＰデバイスリスト生成部１５１は、そのファームウェアバージョンを対応バージョンとする。そして、予測ＭＣＴＰデバイスリスト生成部１５１は、選択したＰＣＩｅデバイス１４０のファームウェアバージョンが対応バージョンより新しいか否かを判定する（ステップＳ２０７）。
【００７１】
選択したＰＣＩｅデバイス１４０のファームウェアバージョンが対応バージョンより古い場合（ステップＳ２０７：否定）、予測ＭＣＴＰデバイスリスト生成部１５１は、選択したＰＣＩｅデバイス１４０がＭＣＴＰに非対応であると判定して、ステップＳ２０９へ進む。
【００７２】
これに対して、選択したＰＣＩｅデバイス１４０のファームウェアバージョンが対応バージョンより新しい場合（ステップＳ２０７：肯定）、予測ＭＣＴＰデバイスリスト生成部１５１は、選択したＰＣＩｅデバイス１４０がＭＣＴＰに対応していると判定する。そして、予測ＭＣＴＰデバイスリスト生成部１５１は、選択したＰＣＩｅデバイス１４０の情報を予測ＭＣＴＰデバイスリスト２０３に追加する（ステップＳ２０８）。
【００７３】
その後、予測ＭＣＴＰデバイスリスト生成部１５１は、情報処理装置１に搭載された全てのＰＣＩｅデバイス１０４についてＭＣＴＰの対応状況の判定が完了したか否かを判定する（ステップＳ２０９）。未判定のＰＣＩｅデバイス１４０が存在する場合（ステップＳ２０９：否定）、予測ＭＣＴＰデバイスリスト生成部１５１は、ステップＳ２０４へ処理を戻す。
【００７４】
これに対して、全てのＰＣＩｅデバイス１４０の判定が完了した場合（ステップＳ２０９：肯定）、予測ＭＣＴＰデバイスリスト生成部１５１は、予測ＭＣＴＰデバイスリスト２０３をＭＣＴＰデバイスリスト生成部１５４及び完了時間算出部１５２へ出力する。完了時間算出部１５２は、予測ＭＣＴＰデバイスリスト２０３を用いて全てのＭＣＴＰデバイスに対するディスカバリ処理の完了予測時間を算出する（ステップＳ２１０）。その後、完了時間算出部１５２は、完了予測時間を処理完了判定部１５５へ出力する。
【００７５】
処理完了判定部１５５は、完了予測時間の入力を完了時間算出部１５２から受ける。そして、処理完了判定部１５５は、遅延タイマ１５７が完了予測時間を超過したか否かを判定する（ステップＳ２１１）、完了予測時間を超過していない場合（ステップＳ２１１：否定）、完了時間算出部１５２は、遅延タイマ１５７が完了予測時間を超過するまで待機する。また、ＭＣＴＰデバイスリスト生成部１５４は、予測ＭＣＴＰデバイスリスト２０３の入力を予測ＭＣＴＰデバイスリスト生成部１５１から受ける。その後、ＭＣＴＰデバイスリスト生成部１５４は、完了予測時間の経過の通知を受けるまで待機する。
【００７６】
完了予測時間を超過した場合（ステップＳ２１１：肯定）、完了時間算出部１５２は、完了予測時間の経過をＭＣＴＰデバイスリスト生成部１５４へ通知する。完了予測時間の通知を処理完了判定部１５５から受けると、ＭＣＴＰデバイスリスト生成部１５４は、ＭＣＴＰデバイス一覧をノードマネージャ１２０に要求する（ステップＳ２１２）。
【００７７】
ノードマネージャ１２０は、ＭＣＴＰデバイス一覧の取得要求を受けて、その時点で保持するＭＣＴＰデバイスのデバイスアドレス及び通信識別情報を含むＭＣＴＰデバイス一覧をＭＣＴＰデバイスリスト生成部１５４へ送信する。ＭＣＴＰデバイスリスト生成部１５４は、予測ＭＣＴＰデバイスリスト２０３の中のＭＣＴＰデバイスが全て予測ＭＣＴＰデバイスリスト２０３に存在するか否を判定する（ステップＳ２１３）。予測ＭＣＴＰデバイスリスト２０３の中のＭＣＴＰデバイスが全て予測ＭＣＴＰデバイスリスト２０３に存在する場合（ステップＳ２１３：肯定）、ＭＣＴＰデバイスリスト生成部１５４は、ディスカバリ処理が完了したと判定する。そして、ＭＣＴＰデバイスリスト生成部１５４は、予測ＭＣＴＰデバイスリスト２０３に通信識別情報を登録してＭＣＴＰデバイスリストを生成して取得する。この後、ＭＣＴＰデバイスリスト生成部１５４は、ノードマネージャ１２０に対するＭＣＴＰデバイス一覧の取得要求を停止する。
【００７８】
これに対して、予測ＭＣＴＰデバイスリスト２０３に存在しないＭＣＴＰデバイスがある場合（ステップＳ２１３：否定）、ＭＣＴＰデバイスリスト生成部１５４は、リトライ回数及び最初のＭＣＴＰデバイス一覧の取得からの経過時間を取得する。そして、ＭＣＴＰデバイスリスト生成部１５４は、リトライ回数がリトライ閾値を超過したか、又は、経過時間がリカバリ可能時間を超過したかを判定する（ステップＳ２１５）。リトライ回数がリトライ閾値を超過しておらず、且つ、経過時間がリカバリ可能時間を超過していない場合（ステップＳ２１５：否定）、ＭＣＴＰデバイスリスト生成部１５４は、処理をステップＳ２１２へ戻す。
【００７９】
これに対して、リトライ回数がリトライ閾値を超過しした、又は、経過時間がリカバリ可能時間を超過した場合（ステップＳ２１５：肯定）、ＭＣＴＰデバイスリスト生成部１５４は、ＭＣＴＰデバイスリストの取得エラーと判定する（ステップＳ２１６）。そして、ＭＣＴＰデバイスリスト生成部１５４は、ＭＣＴＰデバイスリストの取得処理を終了する。
【００８０】
以上に説明したように、本実施例に係る情報処理装置のＢＭＣは、起動時にＢＩＯＳから情報処理装置に搭載されたＭＣＴＰデバイスの情報を取得する。そして、ＢＭＣは、取得したＭＣＴＰデバイスの情報を用いてノードマネージャがディスカバリ処理を行うＭＣＴＰデバイスを予測する。その後、ＢＭＣは、ノードマネージャから通知されたディスカバリ処理が完了したＭＣＴＰデバイスの中に、予測したＭＣＴＰデバイスが全て含まれるか否かにより全てのディスカバリ処理が完了したか否かを判定する。ディスカバリ処理が完了している場合、ＢＭＣは、ノードマネージャからＭＣＴＰデバイスに関する情報をそれ以上取得しなくても良いのでＭＣＴＰデバイスの情報の取得要求によるポーリングを停止することができる。したがって、ＰＣＩｅバスにおける通信を低減させることができ、情報処理装置の処理性能を向上させることができる。
【実施例２】
【００８１】
次に実施例２について説明する。本実施例に係る情報処理装置は、起動後にＰＣＩｅデバイスがホットプラグ対応のＰＣＩｅスロットに追加された場合にも、ＭＣＴＰデバイスリストの取得処理を実行する。本実施例に係る情報処理装置も図１で表される。以下の説明では、実施例１と同様の各部の動作については説明を省略する。以下では、起動状態でＰＣＩｅデバイス１４０が新たに追加された場合について説明する。情報処理装置１のＰＣＩｅスロット１４は、ホットプラグに対応する。
【００８２】
動作中の情報処理装置１のホットプラグ対応のＰＣＩｅスロット１４に新たなＰＣＩｅデバイス１４０が接続されると、ＣＰＵ１１により実行されるＯＳ上で動作するＰＣＩｅスロット１４を管理するエージェントが、ＰＣＩｅデバイス情報をＢＭＣ１５へ送信する。
【００８３】
予測ＭＣＴＰデバイスリスト生成部１５１は、ホットプラグ対応のＰＣＩｅスロット１４に新たにＰＣＩｅデバイス１０４が接続されると、各ＰＣＩｅスロット１４に接続されたＰＣＩｅデバイス１４０のそれぞれのＰＣＩｅデバイス情報の入力をＯＳ上で動作するエージェントから受ける。
【００８４】
次に、予測ＭＣＴＰデバイスリスト生成部１５１は、取得したＰＣＩｅデバイス情報に含まれるＰＣＩ物理アドレスの情報から、それぞれのＰＣＩｅデバイス１４０がいずれのＰＣＩｅスロット１４に接続されたかを判定する。さらに、予測ＭＣＴＰデバイスリスト生成部１５１は、各ＰＣＩｅデバイス１４０のベンダＩＤ、デバイスＩＤ及びファームウェアバージョンを取得したＰＣＩｅデバイス情報から取得する。
【００８５】
次に、予測ＭＣＴＰデバイスリスト生成部１５１は、ＭＣＴＰデバイスリストを複製して予測ＭＣＴＰデバイスリスト２０３を作成する。次に、予測ＭＣＴＰデバイスリスト生成部１５１は、ＭＣＴＰ対応状況データベース１５３を参照し、各ＰＣＩｅデバイス１４０がＭＣＴＰに対応しているかを確認し、ＭＣＴＰデバイスを特定する。そして、予測ＭＣＴＰデバイスリスト生成部１５１は、予測ＭＣＴＰデバイスリスト２０３を参照してＭＣＴＰデバイスが新たに追加されたか否かを判定する。新たに追加されたＭＣＴＰデバイスが無い場合、予測ＭＣＴＰデバイスリスト生成部１５１は、予測ＭＣＴＰデバイスリスト２０３の生成を終了する。ＢＭＣ１５は、ＭＣＴＰデバイスリストの取得処理を終了する。
【００８６】
これに対して、新たに追加されたＭＣＴＰデバイスがある場合、予測ＭＣＴＰデバイスリスト生成部１５１は、新たに追加されたＭＣＴＰデバイスの通信用識別子及び物理アドレスの対応情報を予測ＭＣＴＰデバイスリスト２０３に登録する。そして、予測ＭＣＴＰデバイスリスト生成部１５１は、更新した予測ＭＣＴＰデバイスリスト２０３をＭＣＴＰデバイスリスト生成部１５４及び完了時間算出部１５２へ出力する。
【００８７】
完了時間算出部１５２は、情報処理装置１の起動後で且つ今回のＭＣＴＰデバイスの追加以前に最も新しく取得された予測ＭＣＴＰデバイスリスト２０３を保持する。また、完了時間算出部１５２は、今回のＭＣＴＰデバイスの追加により更新された予測ＭＣＴＰデバイスリスト２０３の入力を予測ＭＣＴＰデバイスリスト生成部１５１から受ける。次に、完了時間算出部１５２は、新たに追加されたＭＣＴＰデバイスの数を特定する。そして、完了時間算出部１５２は、新たに追加されたＭＣＴＰデバイスの数に予測処理時間を乗算して新たに追加された全てのＭＣＴＰデバイスのディスカバリ処理が完了する完了予測時間を算出する。その後、完了時間算出部１５２は、算出した完了予測時間を処理完了判定部１５５へ出力する。
【００８８】
処理完了判定部１５５は、ホットプラグ対応のＰＣＩｅスロット１４にＰＣＩｅデバイス１４０が新たに接続されると、遅延タイマ１５７を起動する。その後、処理完了判定部１５５は、完了予測時間の入力を完了時間算出部１５２から受ける。そして、処理完了判定部１５５は、遅延タイマ１５７の計測時間が完了予測時間に達すると、完了予測時間の経過をＭＣＴＰデバイスリスト生成部１５４に通知する。
【００８９】
ＭＣＴＰデバイスリスト生成部１５４は、新たなＭＣＴＰデバイスの追加により更新された予測ＭＣＴＰデバイスリスト２０３の入力を予測ＭＣＴＰデバイスリスト生成部１５１から受ける。その後、予測ＭＣＴＰデバイスリスト２０３は、完了予測時間の経過の通知を処理完了判定部１５５から受けるまで待機する。
【００９０】
完了予測時間の経過の通知を処理完了判定部１５５から受けると、ＭＣＴＰデバイスリスト生成部１５４は、ＭＣＴＰデバイス一覧の取得要求をノードマネージャ１２０に送信する。その後、ＭＣＴＰデバイスリスト生成部１５４は、ＭＣＴＰデバイス一覧をノードマネージャ１２０から受信する。次に、ＭＣＴＰデバイスリスト生成部１５４は、取得したＭＣＴＰデバイス一覧と予測ＭＣＴＰデバイスリスト２０３とを比較する。そして、ＭＣＴＰデバイスリスト生成部１５４は、新たに追加された全てのＭＣＴＰデバイスの情報がＭＣＴＰデバイス一覧に存在するか否かを判定する。
【００９１】
新たに追加されたＭＣＴＰデバイスの全ての情報がＭＣＴＰデバイス一覧に存在する場合、ＭＣＴＰデバイスリスト生成部１５４は、新たに追加されたＭＣＴＰデバイスの通信識別子を予測ＭＣＴＰデバイスリスト２０３に登録する。そして、ＭＣＴＰデバイスリスト生成部１５４は、登録が完了した予測ＭＣＴＰデバイスリスト２０３をＭＣＴＰデバイスリストとして取得する。その後、ＭＣＴＰデバイスリスト生成部１５４は、ＭＣＴＰデバイスリストをデバイス管理部１５６へ出力する。
【００９２】
一方、新たに追加されたＭＣＴＰデバイスのうちＭＣＴＰデバイス一覧に存在しないものがある場合、ＭＣＴＰデバイスリスト生成部１５４は、ＭＣＴＰデバイス一覧の取得要求をノードマネージャ１２０に送信し、ＭＣＴＰデバイスリストの取得処理を繰り返す。このとき、リトライ回数がリトライ閾値を超えた、又は、経過時間がリカバリ可能時間を超えた場合、ＭＣＴＰデバイスリスト生成部１５４は、ＭＣＴＰデバイスリストの取得処理にエラーが発生したと判定して処理を終了する。
【００９３】
次に、図８を参照して、実施例２に係るＢＭＣ１５によるＭＣＴＰデバイス一覧の取得処理について説明する。図８は、実施例２に係るＭＣＴＰデバイス一覧の取得処理を表すシーケンス図である。ここでは、ＭＣＴＰデバイスとして、ＭＣＴＰデバイス＃１〜＃３が情報処理装置１の起動時から存在し、起動後にＭＣＴＰデバイス＃４が追加される場合で説明する。
【００９４】
ＢＩＯＳ１１０、ＢＭＣ１５、ノードマネージャ１２０及びＭＣＴＰデバイス＃１〜＃３は、起動時にＢＭＣ１５によるＭＣＴＰデバイス一覧の取得処理に関する各種処理を実行する（ステップＳ３０１）。
【００９５】
次に、ＭＣＴＰデバイス＃４がホットプラグ対応のＰＣＩｅスロット１４に新たに接続されると、ＯＳ上で動作するエージェントは、ＰＣＩｅデバイス情報をＢＭＣ１５へ出力する（ステップＳ３０２）。
【００９６】
その後、ＢＭＣ１５は、完了予測時間を算出し、算出した完了予測時間まで待機してディスカバリ処理の完了を待ち合わせる（ステップＳ３０３）。
【００９７】
ＢＭＣ１５が待機している間に、ノードマネージャ１２０は、ＭＣＴＰデバイス＃４に対するディスカバリ処理を行い、ＭＣＴＰデバイス＃４に通信識別子を割り振り記憶する（ステップＳ３０４）。
【００９８】
その後、ＢＭＣ１５は、ＭＣＴＰデバイス一覧の取得要求をノードマネージャ１２０へ送信する（ステップＳ３０５）。
【００９９】
ノードマネージャ１２０は、ＭＣＴＰデバイス一覧の取得要求を受信して、記憶するＭＣＴＰデバイス＃１〜＃４のデバイスアドレスと通信識別子との対応関係を含むＭＣＴＰデバイス一覧をＢＭＣ１５へ送信する（ステップＳ３０６）。ＢＭＣ１５は、情報処理装置１に搭載されたＭＣＴＰデバイス＃１〜＃４の情報が全ての登録されたＭＣＴＰデバイス一覧をノードマネージャ１２０から受信する。この後、ＭＣＴＰデバイスリスト生成部１５４は、ノードマネージャ１２０に対するＭＣＴＰデバイス一覧の取得要求を停止する。
【０１００】
次に、図９を参照して、実施例２に係るＭＣＴＰデバイスリストの取得処理の流れについて説明する。図９は、実施例２に係るＭＣＴＰデバイスリストの取得処理のフローチャートである。
【０１０１】
ホットプラグ対応のＰＣＩｅスロット１４に新たにＰＣＩｅデバイス１４０が接続されると、予測ＭＣＴＰデバイスリスト生成部１５１は、追加されたＰＣＩｅデバイスのＰＣＩｅデバイス情報をＢＩＯＳ１１０から取得する（ステップＳ４０１）。
【０１０２】
また、ホットプラグ対応のＰＣＩｅスロット１４に新たにＰＣＩｅデバイス１４０が接続されると、処理完了判定部１５５は、遅延タイマ１５７を起動する（ステップＳ４０２）。
【０１０３】
次に、予測ＭＣＴＰデバイスリスト生成部１５１は、ＭＣＴＰデバイスリストをコピーして予測ＭＣＴＰデバイスリスト２０３を作成する（ステップＳ４０３）。
【０１０４】
次に、予測ＭＣＴＰデバイスリスト生成部１５１は、追加されたＰＣＩｅデバイス１４０の中から未選択の物を１つ選択する（ステップＳ４０４）。
【０１０５】
次に、予測ＭＣＴＰデバイスリスト生成部１５１は、ＭＣＴＰ対応状況データベース１５３に選択したＰＣＩｅデバイス１４０の情報が存在するか否かを判定する（ステップＳ４０５）。選択したＰＣＩｅデバイス１４０の情報が存在しない場合（ステップＳ４０５：否定）、予測ＭＣＴＰデバイスリスト生成部１５１は、選択したＰＣＩｅデバイス１４０がＭＣＴＰに非対応であると判定して、ステップＳ４０９へ進む。
【０１０６】
一方、選択したＰＣＩｅデバイス１４０の情報が存在する場合（ステップＳ４０５：肯定）、予測ＭＣＴＰデバイスリスト生成部１５１は、ファームウェアバージョンの情報が予測ＭＣＴＰデバイスリスト２０３に存在するか否かを判定する（ステップＳ４０６）。
【０１０７】
ファームウェアバージョンの情報が予測ＭＣＴＰデバイスリスト２０３に存在しない場合（ステップＳ４０６：否定）、予測ＭＣＴＰデバイスリスト生成部１５１は、選択したＰＣＩｅデバイス１４０がＭＣＴＰに対応すると判定する。そして、予測ＭＣＴＰデバイスリスト生成部１５１は、選択したＰＣＩｅデバイス１４０の情報を予測ＭＣＴＰデバイスリスト２０３に追加する（ステップＳ４０８）。
【０１０８】
これに対して、ファームウェアバージョンの情報が予測ＭＣＴＰデバイスリスト２０３に存在する場合（ステップＳ４０６：肯定）、予測ＭＣＴＰデバイスリスト生成部１５１は、そのファームウェアバージョンを対応バージョンとする。そして、予測ＭＣＴＰデバイスリスト生成部１５１は、選択したＰＣＩｅデバイス１４０のファームウェアバージョンが対応バージョンより新しいか否かを判定する（ステップＳ４０７）。
【０１０９】
選択したＰＣＩｅデバイス１４０のファームウェアバージョンが対応バージョンより古い場合（ステップＳ４０７：否定）、予測ＭＣＴＰデバイスリスト生成部１５１は、選択したＰＣＩｅデバイス１４０がＭＣＴＰに非対応であると判定して、ステップＳ４０９へ進む。
【０１１０】
これに対して、選択したＰＣｅＩデバイス１４０のファームウェアバージョンが対応バージョンより新しい場合（ステップＳ４０７：肯定）、予測ＭＣＴＰデバイスリスト生成部１５１は、選択したＰＣＩｅデバイス１４０がＭＣＴＰに対応していると判定する。そして、予測ＭＣＴＰデバイスリスト生成部１５１は、選択したＰＣＩｅデバイス１４０の情報を予測ＭＣＴＰデバイスリスト２０３に追加する（ステップＳ４０８）。
【０１１１】
その後、予測ＭＣＴＰデバイスリスト生成部１５１は、情報処理装置１に搭載された全てのＰＣＩｅデバイス１４０についてＭＣＴＰの対応状況の判定が完了したか否かを判定する（ステップＳ４０９）。未判定の追加したＰＣＩｅデバイス１４０が存在する場合（ステップＳ４０９：否定）、予測ＭＣＴＰデバイスリスト生成部１５１は、ステップＳ４０４へ処理を戻す。
【０１１２】
これに対して、追加したＰＣＩｅデバイス１４０の全ての判定が完了した場合（ステップＳ４０９：肯定）、予測ＭＣＴＰデバイスリスト生成部１５１は、新たにＭＣＴＰデバイスが追加されて予測ＭＣＴＰデバイスリスト２０３が更新されたか否かを判定する（ステップ４１０）。予測ＭＣＴＰデバイスリスト２０３が更新されていない場合（ステップＳ４１０：否定）、ＢＭＣ１５は、ＭＣＴＰデバイスリストの取得処理を終了する。
【０１１３】
これに対して、予測ＭＣＴＰデバイスリスト２０３が更新された場合（ステップＳ４１０：肯定）、予測ＭＣＴＰデバイスリスト生成部１５１は、予測ＭＣＴＰデバイスリスト２０３をＭＣＴＰデバイスリスト生成部１５４及び完了時間算出部１５２へ出力する。完了時間算出部１５２は、保持する予測ＭＣＴＰデバイスリスト２０３と更新された予測ＭＣＴＰデバイスリスト２０３を比較して追加されたＭＣＴＰデバイスの数を求める。そして、完了時間算出部１５２は、追加されたＭＣＴＰデバイスの数を用いて追加されたＭＣＴＰデバイスに対するディスカバリ処理の完了予測時間を算出する（ステップＳ４１１）。その後、完了時間算出部１５２は、完了予測時間を処理完了判定部１５５へ出力する。
【０１１４】
処理完了判定部１５５は、完了予測時間の入力を完了時間算出部１５２から受ける。そして、処理完了判定部１５５は、遅延タイマ１５７が完了予測時間を超過したか否かを判定する（ステップＳ４１２）。完了予測時間を超過していない場合（ステップＳ４１２：否定）、完了時間算出部１５２は、遅延タイマ１５７が完了予測時間を超過するまで待機する。また、ＭＣＴＰデバイスリスト生成部１５４は、予測ＭＣＴＰデバイスリスト２０３の入力を予測ＭＣＴＰデバイスリスト生成部１５１から受ける。その後、ＭＣＴＰデバイスリスト生成部１５４は、完了予測時間の経過の通知を受けるまで待機する。
【０１１５】
完了予測時間を超過した場合（ステップＳ４１２：肯定）、完了時間算出部１５２は、完了予測時間の経過をＭＣＴＰデバイスリスト生成部１５４へ通知する。完了予測時間の通知を処理完了判定部１５５から受けると、ＭＣＴＰデバイスリスト生成部１５４は、ＭＣＴＰデバイス一覧をノードマネージャ１２０に要求する（ステップＳ４１３）。
【０１１６】
ノードマネージャ１２０は、ＭＣＴＰデバイス一覧の取得要求を受けて、その時点で保持するＭＣＴＰデバイスのデバイスアドレス及び通信識別情報を含むＭＣＴＰデバイス一覧をＭＣＴＰデバイスリスト生成部１５４へ送信する。ＭＣＴＰデバイスリスト生成部１５４は、予測ＭＣＴＰデバイスリスト２０３における追加されたＭＣＴＰデバイスが全て予測ＭＣＴＰデバイスリスト２０３に存在するか否を判定する（ステップＳ４１４）。
【０１１７】
追加されたＭＣＴＰデバイスが全て予測ＭＣＴＰデバイスリスト２０３に存在する場合（ステップＳ４１４：肯定）、ＭＣＴＰデバイスリスト生成部１５４は、ディスカバリ処理が完了したと判定する。そして、ＭＣＴＰデバイスリスト生成部１５４は、予測ＭＣＴＰデバイスリスト２０３に追加されたＭＣＴＰデバイスの通信識別情報を登録してＭＣＴＰデバイスリストを生成する（ステップＳ４１５）。この後、ＭＣＴＰデバイスリスト生成部１５４は、ノードマネージャ１２０に対するＭＣＴＰデバイス一覧の取得要求を停止する。
【０１１８】
これに対して、予測ＭＣＴＰデバイスリスト２０３に存在しない追加されたＭＣＴＰデバイスがある場合（ステップＳ４１４：否定）、ＭＣＴＰデバイスリスト生成部１５４は、リトライ回数及び最初のＭＣＴＰデバイス一覧の取得からの経過時間を取得する。そして、ＭＣＴＰデバイスリスト生成部１５４は、リトライ回数がリトライ閾値を超過したか、又は、経過時間がリカバリ可能時間を超過したかを判定する（ステップＳ４１６）。リトライ回数がリトライ閾値を超過しておらず、且つ、経過時間がリカバリ可能時間を超過していない場合（ステップＳ４１６：否定）、ＭＣＴＰデバイスリスト生成部１５４は、処理をステップＳ４１３へ戻す。
【０１１９】
これに対して、リトライ回数がリトライ閾値を超過しした、又は、経過時間がリカバリ可能時間を超過した場合（ステップＳ４１６：肯定）、ＭＣＴＰデバイスリスト生成部１５４は、ＭＣＴＰデバイスリストの取得エラーと判定する（ステップＳ４１７）。そして、ＭＣＴＰデバイスリスト生成部１５４は、ＭＣＴＰデバイスリストの取得処理を終了する。
【０１２０】
ここで、本実施例では、ホットプラグ対応のＰＣＩｅスロット４を有する情報処理装置１について説明したが、ホットプラグ対応のＰＣＩｅスロット４を有さない情報処理装置１の場合、ＰＣＩｅデバイス１４０の構成は基本的に変化しない。そのため、ホットプラグ対応のＰＣＩｅスロット４を有さない情報処理装置１の場合、ＢＭＣ１５は、起動時にＭＣＴＰデバイスリストを取得が完了していれば、その後ＭＣＴＰデバイスリストを更新しなくてよい。
【０１２１】
以上に説明したように、本実施例に係る情報処理装置のＢＭＣは、ホットプラグ対応のＰＣＩｅスロットに新たにＰＣＩｅデバイスが追加された場合に、ＯＳ上で動作するエージェントからＰＣＩｅデバイス情報を取得する。そして、ＢＭＣは、取得したＰＣＩｅデバイス情報を基に、ノードマネージャから通信識別情報が通知されるＭＣＴＰデバイスを予測し、新たに追加された全てのＭＣＴＰデバイスに対するディスカバリ処理が完了したか否かを判定する。ディスカバリ処理の完了を確認した場合、ＢＭＣは、ノードマネージャからＭＣＴＰデバイスに関する情報をそれ以上取得しなくても良いのでＭＣＴＰデバイスの情報の取得要求によるポーリングを停止することができる。したがって、ホットプラグに新たにＭＣＴＰデバイスを加えたＭＣＴＰデバイスリストの更新処理においても、ＰＣＩｅバスにおける通信を低減させることで、情報処理装置の処理性能を向上させることができる。
【０１２２】
（ハードウェア構成）
次に、図１０を参照して、各実施例に係る情報処理装置１のハードウェア構成について説明する。図１０は、情報処理装置のハードウェア構成図である。
【０１２３】
情報処理装置１は、図１０に示すように、ＣＰＵ１１，ＰＣＨ１２、ＢＭＣ１５、メモリ１６、ＮＩＣ（Network  Interface  Card）１６１及びＳＳＤ（Solid  State  Drive）１６２を有する。ＣＰＵ１１とメモリ１６とは、チャネル２２で接続される。また、ＣＰＵ１１は、ＰＣＩｅバス２１を介してＰＣＨ１２、ＢＭＣ１５、ＮＩＣ１６１及びＳＳＤ１６２と接続される。
【０１２４】
ＮＩＣ１６１は、管理サーバ２などの外部の装置と通信を行うためのインタフェースである。ＳＳＤ１６２は、補助記憶装置である。ＮＩＣ１６１及びＳＳＤ１６２は、実際には、図１に示してＰＣＩｅスロット１４に接続されることで、ＰＣＩｅバス２１に接続する。また、ＳＳＤ１６２には、ＢＩＯＳ１１０やＯＳ（Operating  System）などの機能を実現する各種プログラムが格納される。
【０１２５】
ＣＰＵ１１は、ＳＳＤ１６２に格納された各種プログラムをメモリ１６に展開して実行することで、ＢＩＯＳ１１０やＯＳの機能を実現する。
【０１２６】
ＰＣＨ１２は、内部にプロセッサ及びメモリを有する。そして、ＰＣＨ１２の内部のメモリにはノードマネージャ１２０を動作させるプログラムが格納される。ＰＣＨ１２の内部のプロセッサは、内部のメモリに格納されたノードマネージャ１２０を動作させるプログラムを実行することで、ノードマネージャ１２０の機能を実現する。
【０１２７】
ＢＭＣ１５は、内部にプロセッサ及びメモリを有する。そして、ＢＭＣ１５の内部のメモリには、図１に例示した予測ＭＣＴＰデバイスリスト生成部１５１、完了時間算出部１５２、ＭＣＴＰデバイスリスト生成部１５４、処理完了判定部１５５、デバイス管理部１５６の機能を実現するプログラムを含む各種プログラムが格納される。また、ＢＭＣ１５の内部メモリは、図１に例示したＭＣＴＰ対応状況データベース１５３の機能を実現する。ＢＭＣ１５の内部のプロセッサは、内部のメモリに格納された各種プログラムを実行して、予測ＭＣＴＰデバイスリスト生成部１５１、完了時間算出部１５２、ＭＣＴＰデバイスリスト生成部１５４、処理完了判定部１５５、デバイス管理部１５６の機能を実現する。このように、予測ＭＣＴＰデバイスリスト生成部１５１、完了時間算出部１５２、ＭＣＴＰデバイスリスト生成部１５４、処理完了判定部１５５、デバイス管理部１５６の機能を実現するプログラムは、記憶媒体に格納され実行されることで、その機能が実現される。より詳しくは、予測デバイスリスト生成部１５１によるＢＩＯＳ１１０からデバイス情報を受け取るプロセスは、ＢＭＣ１５が実行するＩＰＭＩ管理プロセスである。また、予測ＭＣＴＰデバイスリスト生成部１５１、完了時間算出部１５２、ＭＣＴＰデバイスリスト生成部１５４及び処理完了判定部１５５が行うＭＣＴＰの管理のプロセスは、ＭＣＴＰエージェントプロセスである。
【符号の説明】
【０１２８】
１  情報処理装置
２  管理サーバ
１１  ＣＰＵ
１２  ＰＣＨ
１４  ＰＣＩｅスロット
１５  ＢＭＣ
１４０  ＰＣＩｅデバイス
１５１  予測ＭＣＴＰデバイスリスト生成部
１５２  完了時間算出部
１５３  ＭＣＴＰ対応状況データベース
１５４  ＭＣＴＰデバイスリスト生成部
１５５  処理完了判定部
１５６  デバイス管理部
１５７  遅延タイマ
２０３  予測ＭＣＴＰデバイスリスト
【図１】
2020030706.tif 000003
【図２】
2020030706.tif 000004
【図３】
2020030706.tif 000005
【図４】
2020030706.tif 000006
【図５】
2020030706.tif 000007
【図６】
2020030706.tif 000008
【図７】
2020030706.tif 000009
【図８】
2020030706.tif 000010
【図９】
2020030706.tif 000011
【図１０】
2020030706.tif 000012