(57)【要約】【課題】ＢＩＯＳとＢＭＣとの通信パスにおいて、ＯＳの動作に影響を与えずに通信要求を処理する。【解決手段】ＢＩＯＳ（Basic Input/Output System）とＢＭＣ（Baseboard Management Controller）との間の通信制御方法において、前記ＢＩＯＳ又はＯＳからの前記ＢＭＣに対する通信要求が発生した場合に、当該通信要求に伴う処理を、前記通信要求の内容を記憶すると共に前記通信要求に応じたＢＩＯＳとＢＭＣとの間の通信を行うことなくＯＳ（Operating System）に処理を再開させる第１の処理と、前記記憶した通信要求に応じたＢＩＯＳとＢＭＣとの間の通信を実際に行う第２の処理とに分割して実施する。【選択図】図１
2011164971.tif 000002
【特許請求の範囲】
【請求項１】
ＢＩＯＳ（Basic Input/Output System）とＢＭＣ（Baseboard Management Controller）との間の通信制御方法において、
前記ＢＩＯＳ又はＯＳからの前記ＢＭＣに対する通信要求が発生した場合に、当該通信要求に伴う処理を、前記通信要求の内容を記憶すると共に前記通信要求に応じたＢＩＯＳとＢＭＣとの間の通信を行うことなくＯＳ（Operating System）に処理を再開させる第１の処理と、前記記憶した通信要求に応じたＢＩＯＳとＢＭＣとの間の通信を実際に行う第２の処理とに分割して実施することを特徴とする通信制御方法。
【請求項２】
請求項１に記載の通信制御方法において、
前記ＢＭＣに対する前記通信要求の内容を特定するための情報である通信エントリを格納するための通信キューを用意するステップと、
前記通信要求が発生した場合に、一時的に前記ＯＳの処理を中断させると共に当該通信要求に応じた前記通信エントリを前記通信キューに格納し、当該格納した通信エントリの処理のために前記ＢＩＯＳへの定期的な割り込みの予約を行い、その後前記ＯＳに処理を再開させる通信要求格納ステップと、
を備えることを特徴とする通信制御方法。
【請求項３】
請求項２に記載の通信制御方法において、
前記予約に応じた周期で前記ＢＩＯＳへの割り込みを発生させると共に一時的に前記ＯＳの処理を中断させる定期割り込みステップと、
前記割り込みが発生すると前記通信キューを確認し、前記通信キューに前記通信エントリが格納されており且つ前記ＢＭＣとの通信が可能な場合は、前記通信要求に応じた通信を前記ＢＭＣとの間で開始すると共に前記ＯＳに処理を再開させる通信処理ステップと、
を更に備えることを特徴とする通信制御方法。
【請求項４】
請求項３に記載の通信制御方法において、
前記通信処理ステップにおいて前記通信を前記ＢＭＣとの間で開始した後に、再度前記割り込みが発生すると再度前記通信キューを確認し、当該確認の結果前記通信が既に完了している通信エントリが存在する場合は、当該通信エントリを削除することを特徴とする通信制御方法。
【請求項５】
請求項１乃至４の何れか１項に記載の通信制御方法において、
前記通信要求が、ＡＣＰＩツリーからの通信要求であって前記ＢＭＣとの通信が終了するまでは処理完了できない内容のものである場合に、当該ＡＣＰＩツリーが前記第１の処理と前記第２の処理の間Ｓｌｅｅｐメソッドを呼びながらポーリングで待つことを特徴とする通信制御方法。
【請求項６】
ＢＩＯＳ（Basic Input/Output System）とＢＭＣ（Baseboard Management Controller）との間の通信制御装置において、
前記ＢＩＯＳ又はＯＳからの前記ＢＭＣに対する通信要求が発生した場合に、当該通信要求に伴う処理を、前記通信要求の内容を記憶すると共に前記通信要求に応じたＢＩＯＳとＢＭＣとの間の通信を行うことなくＯＳ（Operating System）に処理を再開させる第１の処理と、前記記憶した通信要求に応じたＢＩＯＳとＢＭＣとの間の通信を実際に行う第２の処理とに分割して実施することを特徴とする通信制御装置。
【請求項７】
請求項６に記載の通信制御装置において、
前記ＢＭＣに対する前記通信要求の内容を特定するための情報である通信エントリを格納するための通信キューを用意する手段と、
前記通信要求が発生した場合に、一時的に前記ＯＳの処理を中断させると共に当該通信要求に応じた前記通信エントリを前記通信キューに格納し、当該格納した通信エントリの処理のために前記ＢＩＯＳへの定期的な割り込みの予約を行い、その後前記ＯＳに処理を再開させる通信要求格納手段と、
を備えることを特徴とする通信制御装置。
【請求項８】
請求項７に記載の通信制御装置において、
前記予約に応じた周期で前記ＢＩＯＳへの割り込みを発生させると共に一時的に前記ＯＳの処理を中断させる定期割り込み手段と、
前記割り込みが発生すると前記通信キューを確認し、前記通信キューに前記通信エントリが格納されており且つ前記ＢＭＣとの通信が可能な場合は、前記通信要求に応じた通信を前記ＢＭＣとの間で開始すると共に前記ＯＳに処理を再開させる通信処理手段と、
を更に備えることを特徴とする通信制御装置。
【請求項９】
請求項８に記載の通信制御装置において、
前記通信処理手段において前記通信を前記ＢＭＣとの間で開始した後に、再度前記割り込みが発生すると再度前記通信キューを確認し、当該確認の結果前記通信が既に完了している通信エントリが存在する場合は、当該通信エントリを削除することを特徴とする通信制御装置。
【請求項１０】
ＢＩＯＳ（Basic Input/Output System）とＢＭＣ（Baseboard Management Controller）との間の通信制御プログラムにおいて、
前記ＢＩＯＳ又はＯＳからの前記ＢＭＣに対する通信要求が発生した場合に、当該通信要求に伴う処理を、前記通信要求の内容を記憶すると共に前記通信要求に応じたＢＩＯＳとＢＭＣとの間の通信を行うことなくＯＳ（Operating System）に処理を再開させる第１の処理と、前記記憶した通信要求に応じたＢＩＯＳとＢＭＣとの間の通信を実際に行う第２の処理とに分割して実施する通信制御装置としてコンピュータを機能させることを特徴とする通信制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はＢＩＯＳ（Basic Input/Output System）とＢＭＣ（Baseboard Management Controller）との通信パスにおける通信要求の処理に関する。
【背景技術】
【０００２】
ハイエンドサーバにおいて、ＯＳ（Operating System）からの指示、又は、ＢＩＯＳ自身の判断によって、ＢＩＯＳはＢＭＣと通信を行う。そしてこの通信によって、電源制御、動的構成制御、障害処理といった様々なプラットフォームマネジメント制御を行う。このようなプラットフォームマネジメント制御に関連する技術の一例が、特許文献１に記載されている。特許文献１に記載の技術では回復可能なエラーが発生した場合にエラーのソース及びソースの場所を示す情報をログするといったことが可能となる（例えば特許文献１の明細書段落番号［００１０］乃至［００１３］参照）。
【０００３】
また、ＯＳやＢＩＯＳとＢＭＣとの通信については業界標準の規格が策定されており、この規格が非特許文献１に記載されている。この非特許文献１では、ＯＳやＢＩＯＳがＢＭＣと通信を行う際のいくつかの方法が記載されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００７−１０９２３８号公報
【非特許文献】
【０００５】
【非特許文献１】「Intelligent Platform Management  Interface Specification  Second Generation v2.0」［online］平成２２年２月１０日検索インターネット〈http://www.intel.com/design/servers/ipmi/spec.htm〉
【発明の概要】
【発明が解決しようとする課題】
【０００６】
上述した非特許文献１に記載の規格に準拠した場合、ＯＳ運用中にＢＩＯＳがＢＭＣと通信する契機は、主に３つある。
【０００７】
第一が、ＢＩＯＳがＯＳに提供しているインタフェースのうち、ＢＭＣとの連携が必要なものをＯＳが呼び出した場合である。また、第二が、ＯＳがＡＣＰＩ（Advanced Configuration and Power Interface）ツリーのメソッドを実行し、その処理の中でＢＭＣとの連携が必要になった場合である。更に、第三が、障害が発生しＢＩＯＳがその障害処理のなかでＢＭＣとの連携を必要とする場合である。
【０００８】
これら複数の契機はそれぞれ独立しているため、ＢＩＯＳのＢＭＣとの通信要求はいつでも複数発生しうる。しかし、ＢＩＯＳとＢＭＣとの通信パスの数はハードウェア制約上限られているため全ての通信要求を処理しきれない状況が発生する。このような場合には、一般的にＢＩＯＳは、ＢＩＯＳとＢＭＣとの通信パスをセマフォによって排他制御し、セマフォがロックできるまで通信を起動するのをＢＩＯＳ内部で待つ処理を行っていた。
【０００９】
ここで、ＢＩＯＳの処理を行っている間、そのプロセッサはＯＳのタスクを実行することができない。そのため、一般的な方式では、ＢＭＣの性能低下などで通信に時間が掛かった場合、ＯＳの行うべき処理が実施されず、ＯＳが異常を検出し、最悪の場合、システムがシャットダウンする可能性があった。
【００１０】
つまり、ＢＩＯＳで複数の通信要求が同時に発生した場合や、性能低下などで通信を受け取るＢＭＣの通信処理に時間が掛かった場合に、それらのＢＩＯＳからの通信をＯＳの動作に影響を与えず行うための技術が必要であるといえる。
【００１１】
そこで、本発明はＢＩＯＳとＢＭＣとの通信パスにおいて、ＯＳの動作に影響を与えずに通信要求を処理することが可能な、ＢＩＯＳとＢＭＣとの間の通信パス強化方法、その装置及びそのプログラムを提供することを目的とする。
【課題を解決するための手段】
【００１２】
本発明の第１の観点によれば、ＢＩＯＳ（Basic Input/Output System）とＢＭＣ（Baseboard Management Controller）との間の通信制御方法において、前記ＢＩＯＳ又はＯＳからの前記ＢＭＣに対する通信要求が発生した場合に、当該通信要求に伴う処理を、前記通信要求の内容を記憶すると共に前記通信要求に応じたＢＩＯＳとＢＭＣとの間の通信を行うことなくＯＳ（Operating System）に処理を再開させる第１の処理と、前記記憶した通信要求に応じたＢＩＯＳとＢＭＣとの間の通信を実際に行う第２の処理とに分割して実施することを特徴とする通信制御方法が提供される。
【００１３】
本発明の第２の観点によれば、ＢＩＯＳ（Basic Input/Output System）とＢＭＣ（Baseboard Management Controller）との間の通信制御装置において、前記ＢＩＯＳ又はＯＳからの前記ＢＭＣに対する通信要求が発生した場合に、当該通信要求に伴う処理を、前記通信要求の内容を記憶すると共に前記通信要求に応じたＢＩＯＳとＢＭＣとの間の通信を行うことなくＯＳ（Operating System）に処理を再開させる第１の処理と、前記記憶した通信要求に応じたＢＩＯＳとＢＭＣとの間の通信を実際に行う第２の処理とに分割して実施することを特徴とする通信制御装置が提供される。
【００１４】
本発明の第３の観点によれば、ＢＩＯＳ（Basic Input/Output System）とＢＭＣ（Baseboard Management Controller）との間の通信制御プログラムにおいて、前記ＢＩＯＳ又はＯＳからの前記ＢＭＣに対する通信要求が発生した場合に、当該通信要求に伴う処理を、前記通信要求の内容を記憶すると共に前記通信要求に応じたＢＩＯＳとＢＭＣとの間の通信を行うことなくＯＳ（Operating System）に処理を再開させる第１の処理と、前記記憶した通信要求に応じたＢＩＯＳとＢＭＣとの間の通信を実際に行う第２の処理とに分割して実施する通信制御装置としてコンピュータを機能させることを特徴とする通信制御プログラムが提供される。
【発明の効果】
【００１５】
本発明によれば、通信キューと定期的なＢＩＯＳへの割り込みを用いることにより、ＢＭＣとの通信のＢＩＯＳによる制御を分割して行うことから、ＯＳの処理に影響を与えることのないＢＩＯＳのＢＭＣとの通信処理が可能となる。
【図面の簡単な説明】
【００１６】
【図１】本発明の実施形態の基本的構成を表す図である。
【図２】本発明の実施形態における通信キュー及び通信エントリの基本的構成を表す図である。
【図３−１】本発明の実施形態の基本的動作を表す図（１／５）である。
【図３−２】本発明の実施形態の基本的動作を表す図（２／５）である。
【図３−３】本発明の実施形態の基本的動作を表す図（３／５）である。
【図３−４】本発明の実施形態の基本的動作を表す図（４／５）である。
【図３−５】本発明の実施形態の基本的動作を表す図（５／５）である。
【図４】本発明の実施形態の変形例の基本的構成を表す図である。
【発明を実施するための形態】
【００１７】
まず、本発明の実施形態の概略を説明する。本発明の実施形態はＢＩＯＳにＢＭＣとの通信要求を蓄えるキューを設け、さらにＢＩＯＳに対して定期的に割り込みを上げる部を設ける。これらを利用しＢＩＯＳとＢＭＣの間の通信のＢＩＯＳによる制御を分割して行う。この分割を行うことにより、ＢＩＯＳがプロセッサを連続して占有する時間を短縮し、ＯＳの動作に影響を与えないようにＯＳのタスクを実行しながら、複数のＢＩＯＳのＢＭＣへの通信要求を処理することができるようになる。以上が本願発明の実施形態の概略である。
【００１８】
次に、本発明の実施形態の構成について図面を参照して詳細に説明する。
【００１９】
図１を参照すると本発明の実施形態は、ＯＳ１００とＢＩＯＳ２００とプロセッサ３００とＢＭＣ４００を有している。
【００２０】
ＯＳ１００とＢＩＯＳ２００は、プロセッサ３００にて実行される。通常プロセッサ３００は、ＯＳ１００の処理を実施している。そして、プロセッサ３００は、ＢＩＯＳ２００の処理を行っている間、ＯＳ１００の処理を行うことができない。
【００２１】
ＢＭＣ４００は、プロセッサ３００とは別のプロセッサを有している（当該別のプロセッサの図示は省略する）。
【００２２】
ＢＩＯＳ２００はＯＳ１００に対して、ＯＳ向けインタフェース１１０とＡＣＰＩツリー１２０を提供している。ＯＳ１００はこれらＯＳ向けインタフェース１１０及びＡＣＰＩツリー１２０を通じてＢＩＯＳ２００が提供する機能を利用する。
【００２３】
ここで、ＯＳ向けインタフェース１１０の具体例としてはハイエンドサーバで標準的に利用されているＥＦＩ（Extensible Firmware Interface）サービスなどがある。また、ＯＳ向けインタフェース１１０によってＢＩＯＳ２００がＯＳ１００に提供する機能としては、システムのシャットダウン機能などがある。一方、ＡＣＰＩツリー１２０にはいくつかのメソッド（関数）が定義されている。そして、ＯＳ１００はＡＣＰＩツリー１２０内のメソッドを呼び出すことにより、システムの構成要素を動的に変更させるなどＢＩＯＳ２００が提供する機能を利用する。
【００２４】
なお、図１に例示しているＳｌｅｅｐメソッド１２１は、ＡＣＰＩツリー１２０内に存在するＡＣＰＩの標準規格で規定されているメソッドである。Ｓｌｅｅｐメソッド１２１を呼び出した場合、そのプロセッサの制御は、Ｓｌｅｅｐメソッド１２１に指定した時間が経過した後で、呼び出し側に戻る。Ｓｌｅｅｐメソッド１２１を呼び出してから呼び出し元に戻るまでの待ち時間の間、Ｓｌｅｅｐメソッド１２１を呼び出したプロセッサはＯＳのタスクスケジューリングの対象となる。この挙動は、Ｓｌｅｅｐメソッドの標準仕様である。
【００２５】
障害割り込み部３１０及び定期割り込み部３２０は、通常はＯＳ１００の処理を行っているプロセッサ３００の制御をＢＩＯＳ２００に割り込ませるための部である。
【００２６】
障害割り込み部３１０は、障害が発生した場合に、プロセッサ３００の制御をＢＩＯＳ２００に割り込ませる。
【００２７】
一方、定期割り込み部３２０は、ＢＩＯＳ２００の通信要求格納部２２０が指示した時間ごとに、プロセッサ３００の制御をＢＩＯＳ２００に割り込ませる。
【００２８】
ＢＩＯＳ２００は、ＯＳ向け処理実行部２１０と通信要求格納部２２０と障害処理部２３０と通信処理部２４０と通信キュー５００を有している。
【００２９】
ＯＳ向け処理実行部２１０は、ＯＳ向けインタフェース１１０及びＡＣＰＩツリー１２０を通じて呼び出され、ＯＳ１００から指示された処理を行う。
【００３０】
通信要求格納部２２０は、ＯＳ向け処理実行部２１０と障害処理実行部２３０から呼び出され、ＢＭＣ４００に対する通信要求を通信キュー５００に格納する。
【００３１】
通信キュー５００はＢＩＯＳ２００が管理するメモリ上に構築される。通信キュー５００はＢＭＣ４００に対する通信要求を保持する。
【００３２】
障害処理部２３０は、障害割り込み部３１０から呼び出され、障害ログの採取などの障害処理を行う。
【００３３】
通信処理部２４０は、定期割り込み部３２０から呼び出され、通信キュー５００に格納されたＢＭＣ４００との通信要求を処理する。
【００３４】
次に図１及び図２と、図３−１乃至図３−５のフローチャートを参照して本実施形態の動作について詳細に説明する。以下では、４つの場合の動作について説明する。
【００３５】
まず、図３−１のフローチャートを参照してＯＳ１００がＯＳ向けインタフェース１１０を通じてＢＩＯＳ１００の機能を実行しようとした場合の動作について説明する。
【００３６】
まず、ＯＳ１００がＯＳ向けインタフェース１１０を通じてＢＩＯＳ１００の機能を実行しようとする（ステップＳ１１）。
【００３７】
この場合、プロセッサ３００はＯＳ１００の処理をやめ、ＯＳ向け処理実行部２１０の処理を開始する（ステップＳ１１）。
【００３８】
ここでＯＳ向け処理実行部２１０の処理がＢＭＣ４００との通信を必要とする場合（ステップＳ１２においてＹｅｓ）、ＯＳ向け処理実行部２１０は、通信要求格納部２２０を呼び出し、通信要求格納部２２０に対して処理の実行を指示する（ステップＳ１３）。
【００３９】
ステップＳ２００における指示を受けた通信要求格納部２２０は通信キュー５００に通信エントリ６００を格納する（ステップＳ１４）。
【００４０】
ここで、通信エントリ６００について図２を参照して説明する。通信エントリ６００は、通信種別６１０と完了通知メモリアドレス６２０と通信内容６３０と通信要求発生時刻６４０とを有している。
【００４１】
通信種別６１０には、この通信要求がＯＳインタフェース１１０を契機に発生したものであることを示す値を格納する。完了通知メモリアドレス６２０の値はこの場合、特に規定しない。通信内容６３０には、ＢＭＣ４００に送信する内容を格納する。通信要求発生時刻６４０には現在の時刻を示す値を格納する。
【００４２】
その後、通信要求格納部２２０は、定期割り込み部３２０にＢＩＯＳ２００への割り込みを予約する（ステップＳ１５）。この通信要求格納部２２０処理は、ごく短時間で完了する。その理由は、この処理がメモリ上のデータを書き換えるだけで完了するためである。
【００４３】
通信要求格納部２２０の実行完了後、ＯＳ向け処理実行部２１０の実行も完了し、プロセッサ３００は通常通りＯＳ１００の処理を行うようになる（ステップＳ１６）。
【００４４】
上述したように、プロセッサ３００が再びＯＳ１００の処理を実行するまでの間のＢＩＯＳ２００の処理中に含まれるＢＭＣ４００と通信するための処理は、ごく短時間で完了する。そのため、ＢＭＣ４００との通信のためのＢＩＯＳ２００処理によってＯＳ１００の動作に悪影響を与えることはない。
【００４５】
次に、図３−２のフローチャートを参照して何らかの障害が発生した場合にプロセッサ３００の処理が障害割り込み部３１０によってＢＩＯＳ２００に割り込んだ場合の動作を説明する。
【００４６】
まず、障害割り込み部３１０によってＢＩＯＳ２００に割り込みが入る（ステップＳ２０）。
【００４７】
割り込みが発生するとプロセッサ３００はＯＳ１００の処理をやめ、ＢＩＯＳ２００の障害処理部２３０の実行を開始する（ステップＳ２１）。
【００４８】
障害処理部２３０の処理がＢＭＣ４００との通信を必要とする場合（ステップＳ２２においてＹｅｓ）、障害処理部２３０は通信要求格納部２２０を呼び出し、通信要求格納部２２０に対して処理の実行を指示する（ステップＳ２３）。
【００４９】
障害処理部２３０から呼び出された通信要求格納部２２０の処理は、ＯＳ向け処理実行部２１０から呼び出されたときの処理と比べ、通信種別６１０に格納する値が、この通信が障害発生を契機に発生したものであることを示す値に代わるだけで同等であり、ごく短時間で完了する（ステップＳ２４、ステップＳ２５）。
【００５０】
通信要求格納部２２０終了後、障害処理部２３０は速やかに割り込みから復帰する（ステップＳ２６）。これによりプロセッサ３００は再びＯＳ１００の処理を行うようになる。割り込み復帰までにＢＩＯＳ２００が行うＢＭＣ４００との通信のための処理はごく短時間で終わるため、ＢＩＯＳ２００の通信のための処理がＯＳ１００の動作に悪影響を与えることはない。
【００５１】
次に、図３−３のフローチャートを参照してＯＳ１００がＡＣＰＩツリー１２０を通じてＢＩＯＳ２００の機能を実行しようとした場合の動作を説明する。
【００５２】
ＯＳ向けインタフェース１１０経由でＢＩＯＳ２００の機能を実行したときと同様に、プロセッサ３００はＯＳ１００の処理をやめ、ＯＳ向け処理実行部２１０を実行する。そして、ＢＭＣ４００との通信を必要とする場合（ステップＳ３２においてＹｅｓ）、通信要求格納部２２０を実行する（ステップＳ３０〜ステップＳ３３）。
【００５３】
通信要求格納部２２０の処理は、ＯＳ向けインタフェース１１０を通じてＢＩＯＳ２００の処理が呼び出されたときに比べ、以下の２点において異なるだけで同等であり、ごく短時間で終了する。ここで、第１の異なる点は、通信種別６１０にこの通信がＡＣＰＩツリー１２０契機で発生したことを示す値が格納されることである。また第２の異なる点は、完了通知メモリアドレス６２０にＢＩＯＳ２００とＡＣＰＩツリー１２０からアクセス可能なメモリ領域のあるアドレスを格納することである（ステップＳ３４、ステップＳ３５）。
【００５４】
通信要求格納部２２０の処理が完了した後、ＯＳ向け処理実行部２１０の処理も完了し、プロセッサ３００はＡＣＰＩツリー１２０の処理を実行するようになる（ステップＳ３６においてＮｏ、ステップＳ３８）。
【００５５】
ここでＡＣＰＩツリー１２０の処理の中には、通信キュー５００に格納した通信エントリ６００の通信が完了するまで処理を完了できないものが存在する。そのような処理の場合（ステップＳ３６においてＹｅｓ）、ＡＣＰＩツリー１２０は完了通知メモリアドレス６２０に格納したアドレスが指し示す領域の値が所定の値になるまで、Ｓｌｅｅｐメソッド１２１を呼びながらポーリングで待つ（ステップＳ３７）。この待ち処理は、ＯＳ１００の動作に悪影響を与えない。その理由は、Ｓｌｅｅｐメソッド１２１を呼び出したプロセッサ３００はＯＳ１００のタスクスケジューリングの対象となり、ＯＳ１００の処理を実行できるからである。
【００５６】
次に、図３−４及び図３−５のフローチャートを参照して通信キュー５００に蓄えられた通信エントリ６００に対する処理について説明する。
【００５７】
まず、通信要求格納部２２０によって定期割り込み部３２０に予約されたＢＩＯＳ２００への割り込みが発生する（ステップＳ４０）。
【００５８】
次に、プロセッサ３００は通信処理部２４０を実行する（ステップＳ４１）。
【００５９】
通信処理部２４０は、まず通信キュー５００の内容を確認し、通信エントリ６００が蓄えられているか確認する（ステップＳ４２）。
【００６０】
通信エントリ６００がない場合（ステップＳ４２においてＮｏ）、通信処理部２４０は速やかに割り込みから復帰する。一方、通信エントリ６００が有る場合（ステップＳ４２においてＹｅｓ）、通信処理部２４０はＢＭＣ４００との通信パスを参照し、通信が可能な状態であるかを確認する（ステップＳ４３）。
【００６１】
通信が不可な状態であれば（ステップＳ４３においてＮｏ）、通信処理部２４０は速やかに割り込みから復帰する。一方、通信が可能な状態であれば（ステップＳ４３においてＹｅｓ）、通信処理部２４０は通信エントリ６００の通信内容６３０の内容に従って、ＢＭＣ４００との通信を起動する（ステップＳ４４）。
【００６２】
但しステップＳ４４において、例えば、通信内容６３０の内容がＢＭＣ４００に現在のＯＳ１００の時刻を送信するようなものであった場合、通信内容６３０に含まれている時刻の情報は、通信要求が発生した時点での値になっている。これをそのままＢＭＣ４００に送信すると、通信要求が発生した時から実際にＢＭＣ４００との通信が行われるまでの時間差が存在するため、ＢＭＣ４００には現在のＯＳ１００の時刻が正しく送られないことになる。そこで、通信処理部２４０は、このような時刻情報を含む通信については、通信要求発生時刻６４０の内容によって、ＢＭＣ４００との通信内容を適宜補正する。通信を起動した通信処理部２４０は速やかに割り込みから復帰する。
【００６３】
通信処理部２４０の割り込み処理から復帰したプロセッサ３００は、ＯＳ１００の処理を実行する（ステップＳ４５）。
【００６４】
そして一定時間後、定期割り込み部３２０によって再びＢＩＯＳ２００への割り込みが発生し、通信部２４０を実行する（ステップＳ４６）。
【００６５】
ここで、前回の通信部２４０の実行で、ＢＭＣ４００との通信を開始していた場合、通信部２４０はＢＭＣ４００との通信パスを参照し、通信が完了しているかを確認する（ステップＳ４７）。
【００６６】
通信が完了していない場合（ステップＳ４７においてＮｏ）、通信処理部２４０は速やかに割り込みから復帰する。
【００６７】
一方、通信が完了している場合（ステップＳ４７においてＹＥＳ）、通信部２４０はその通信に対応する通信エントリ６００を通信キュー５００から取り除く（ステップＳ４８）。その際、通信種別６１０がこの通信がＡＣＰＩツリー１２０契機で発生したことを示す値であった場合（ステップＳ４９においてＹＥＳ）、通信部２４０は完了通知メモリアドレス６２０に格納されたアドレスが指し示す領域に特定の値を書き込む（ステップＳ５０）。その後、通信処理部２４０は速やかに割り込みから復帰する。ステップＳ５０における書き込みによって、ＡＣＰＩツリー１２０でＳｌｅｅｐメソッド１２１を呼び出しながら通信の完了を待っている処理が完了する。
【００６８】
一方、通信種別６１０がこの通信がＡＣＰＩツリー１２０契機で発生したことを示す値でなかった場合（ステップＳ４９においてＮＯ）、通信エントリ６００を通信キュー５００を取り除いた通信処理部２４０は、速やかに割り込みから復帰する。
【００６９】
以上、何れの場合においても通信処理部２４０の実行はＯＳ１００の動作に影響を与えない。その理由は、通信処理部２４０の処理の中には待ち処理などが含まれず、プロセッサ３００が通信処理部２４０を実行している時間はごく短時間であるためである。
【００７０】
次に、上述した実施形態の変形例について図４を参照して説明する。
【００７１】
図４を参照すると、本実施形態は図１に示した実施形態と比較した場合、相違点は３つある。１つめは定期割り込み部３２０がないことである。２つめはＯＳ割り込み部３３０があることである。３つめはＯＳ１００がＢＩＯＳ呼び出し部１３０を有することである。
【００７２】
なお、図４において図１とは異なる接続を明確にするために、図１とは異なる接続を示す矢印線は太く表記されている。
【００７３】
ＯＳ割り込み部３３０は、定期的にプロセッサ３００にＢＩＯＳ呼び出し部１３０を実行させる。ＢＩＯＳ呼び出し部１３０は、ＯＳ向けインタフェース１１０を介してＢＩＯＳ２００の通信処理部２４０を呼び出す。
【００７４】
呼び出された通信処理部２４０の処理は、先の実施形態と同じである。また、通信キュー５００に通信エントリ６００を格納する処理も、先の実施形態と同じである。よってこれらの処理については再度の説明を省略する。
【００７５】
以上説明した本発明の実施形態は、以下に示すような効果を奏する。
【００７６】
第一の効果は、ＯＳの処理に影響を与えることなく、ＢＩＯＳのＢＭＣとの通信処理が可能になることである。
【００７７】
その理由は、通信キューと定期的なＢＩＯＳへの割り込みを用いることにより、ＢＭＣとの通信のＢＩＯＳによる制御を分割して行うことから、ＢＩＯＳがプロセッサを連続して占有する時間を短縮することができるためである。
【００７８】
第二の効果は、ＢＭＣへの複数の通信要求が発生したとしても、ＢＩＯＳがそれら通信要求を漏れなく処理することができることである。
【００７９】
その理由は、通信要求発生時の通信処理を、ごく短時間で完了する通信キューへの通信要求の格納だけにし、実際のＢＭＣへの通信はその後に行うようにすることで、通信要求発生時の処理時間をごく短時間で終わらせているためである。
【００８０】
なお、本発明の実施形態であるＢＩＯＳとＢＭＣとの間の通信パス強化装置は、ハードウェアにより実現することもできるが、コンピュータをそのＢＩＯＳとＢＭＣとの間の通信パス強化装置として機能させるためのプログラムをコンピュータがコンピュータ読み取り可能な記録媒体から読み込んで実行することによっても実現することができる。
【００８１】
また、本発明の実施形態によるＢＩＯＳとＢＭＣとの間の通信パス強化方法は、ハードウェアにより実現することもできるが、コンピュータにその方法を実行させるためのプログラムをコンピュータがコンピュータ読み取り可能な記録媒体から読み込んで実行することによっても実現することができる。
【００８２】
また、上述した実施形態は、本発明の好適な実施形態ではあるが、上記実施形態のみに本発明の範囲を限定するものではなく、本発明の要旨を逸脱しない範囲において種々の変更を施した形態での実施が可能である。
【００８３】
上記の実施形態の一部又は全部は、以下の付記のようにも記載されうるが、以下には限られない。
【００８４】
（付記１）  ＢＩＯＳ（Basic Input/Output System）とＢＭＣ（Baseboard Management Controller）との間の通信制御装置において、
前記ＢＩＯＳ又はＯＳからの前記ＢＭＣに対する通信要求が発生した場合に、当該通信要求に伴う処理を、前記通信要求の内容を記憶すると共に前記通信要求に応じたＢＩＯＳとＢＭＣとの間の通信を行うことなくＯＳ（Operating System）に処理を再開させる第１の処理と、前記記憶した通信要求に応じたＢＩＯＳとＢＭＣとの間の通信を実際に行う第２の処理とに分割して実施することを特徴とする通信制御装置。
【００８５】
（付記２）  付記１に記載の通信制御装置において、
前記ＢＭＣに対する前記通信要求の内容を特定するための情報である通信エントリを格納するための通信キューを用意する手段と、
前記通信要求が発生した場合に、一時的に前記ＯＳの処理を中断させると共に当該通信要求に応じた前記通信エントリを前記通信キューに格納し、当該格納した通信エントリの処理のために前記ＢＩＯＳへの定期的な割り込みの予約を行い、その後前記ＯＳに処理を再開させる通信要求格納手段と、
を備えることを特徴とする通信制御装置。
【００８６】
（付記３）  付記２に記載の通信制御装置において、
前記予約に応じた周期で前記ＢＩＯＳへの割り込みを発生させると共に一時的に前記ＯＳの処理を中断させる定期割り込み手段と、
前記割り込みが発生すると前記通信キューを確認し、前記通信キューに前記通信エントリが格納されており且つ前記ＢＭＣとの通信が可能な場合は、前記通信要求に応じた通信を前記ＢＭＣとの間で開始すると共に前記ＯＳに処理を再開させる通信処理手段と、
を更に備えることを特徴とする通信制御装置。
【００８７】
（付記４）  付記３に記載の通信制御装置において、
前記通信処理手段において前記通信を前記ＢＭＣとの間で開始した後に、再度前記割り込みが発生すると再度前記通信キューを確認し、当該確認の結果前記通信が既に完了している通信エントリが存在する場合は、当該通信エントリを削除することを特徴とする通信制御装置。
【００８８】
（付記５）  付記１乃至４の何れかに記載の通信制御装置において、
前記通信要求が、ＡＣＰＩツリーからの通信要求であって前記ＢＭＣとの通信が終了するまでは処理完了できない内容のものである場合に、当該ＡＣＰＩツリーが前記第１の処理と前記第２の処理の間Ｓｌｅｅｐメソッドを呼びながらポーリングで待つことを特徴とする通信制御装置。
【００８９】
（付記６）  ＢＩＯＳ（Basic Input/Output System）とＢＭＣ（Baseboard Management Controller）との間の通信制御プログラムにおいて、
前記ＢＩＯＳ又はＯＳからの前記ＢＭＣに対する通信要求が発生した場合に、当該通信要求に伴う処理を、前記通信要求の内容を記憶すると共に前記通信要求に応じたＢＩＯＳとＢＭＣとの間の通信を行うことなくＯＳ（Operating System）に処理を再開させる第１の処理と、前記記憶した通信要求に応じたＢＩＯＳとＢＭＣとの間の通信を実際に行う第２の処理とに分割して実施する通信制御装置としてコンピュータを機能させることを特徴とする通信制御プログラム。
【００９０】
（付記７）  付記６に記載の通信制御プログラムにおいて、
前記コンピュータが、
前記ＢＭＣに対する前記通信要求の内容を特定するための情報である通信エントリを格納するための通信キューを用意する手段と、
前記通信要求が発生した場合に、一時的に前記ＯＳの処理を中断させると共に当該通信要求に応じた前記通信エントリを前記通信キューに格納し、当該格納した通信エントリの処理のために前記ＢＩＯＳへの定期的な割り込みの予約を行い、その後前記ＯＳに処理を再開させる通信要求格納手段と、
を備えることを特徴とする通信制御プログラム。
【００９１】
（付記８）  付記７に記載の通信制御プログラムにおいて、
前記予約に応じた周期で前記ＢＩＯＳへの割り込みを発生させると共に一時的に前記ＯＳの処理を中断させる定期割り込み手段と、
前記割り込みが発生すると前記通信キューを確認し、前記通信キューに前記通信エントリが格納されており且つ前記ＢＭＣとの通信が可能な場合は、前記通信要求に応じた通信を前記ＢＭＣとの間で開始すると共に前記ＯＳに処理を再開させる通信処理手段と、
を備えることを特徴とする通信制御プログラム。
【００９２】
（付記９）  付記８に記載の通信制御プログラムにおいて、
前記通信処理手段において前記通信を前記ＢＭＣとの間で開始した後に、再度前記割り込みが発生すると再度前記通信キューを確認し、当該確認の結果前記通信が既に完了している通信エントリが存在する場合は、当該通信エントリを削除することを特徴とする通信制御プログラム。
【００９３】
（付記１０）  付記６乃至９の何れかに記載の通信制御プログラムにおいて、
前記通信要求が、ＡＣＰＩツリーからの通信要求であって前記ＢＭＣとの通信が終了するまでは処理完了できない内容のものである場合に、当該ＡＣＰＩツリーが前記第１の処理と前記第２の処理の間Ｓｌｅｅｐメソッドを呼びながらポーリングで待つことを特徴とする通信制御プログラム。
【産業上の利用可能性】
【００９４】
本発明によれば、ＢＩＯＳがその外部と行う通信をＯＳに影響を与えずに行えるようになる。そのため、ＯＳとＢＩＯＳの外部に、ＢＩＯＳとの通信を行う何かしらの要素が存在する計算機一般に本発明は適用可能である。
【符号の説明】
【００９５】
１００  ＯＳ
１１０  ＯＳ向けインタフェース
１２０  ＡＣＰＩツリー
１２１  Ｓｌｅｅｐメソッド
１３０  ＢＩＯＳ呼び出し部
２００  ＢＩＯＳ
２１０  ＯＳ向け処理実行部
２２０  通信要求格納部
２３０  障害処理部
２４０  通信処理部
３００  プロセッサ
３１０  障害割り込み部
３２０  定期割り込み部
３３０  ＯＳ割り込み部
４００  ＢＭＣ
５００  通信キュー
６００  通信エントリ
６１０  通信種別
６２０  完了通知メモリアドレス
６３０  通信内容
６４０  通信要求発生時刻
【図１】
2011164971.tif 000003
【図２】
2011164971.tif 000004
【図３−１】
2011164971.tif 000005
【図３−２】
2011164971.tif 000006
【図３−３】
2011164971.tif 000007
【図３−４】
2011164971.tif 000008
【図３−５】
2011164971.tif 000009
【図４】
2011164971.tif 000010