(57)【要約】  本発明は、少なくとも1つの拡張バス(160)を有するシステムコンポーネント(110)と、少なくとも1つの拡張バス(160)に結合され、少なくとも1つのオペレーティングシステム(122)のプログラムコードを実行するように意図される少なくとも1つのプロセッサ(130)とを有するコンピュータシステム(100)に関連する。コンピュータシステム(100)は、システムコンポーネント(110)上に配置されるシステム管理モジュール(180)と、少なくとも1つのメモリ(140，182)とを有する。この場合において、システム管理モジュール(180)は少なくとも1つの拡張バス(160)に結合され、及び、少なくとも1つの拡張バス(160)は少なくとも1つのメモリ(140，182)に対する直接的なアクセスを許容する。システム管理モジュール(180)は、双方向トランスポートレイヤを有するプロトコルスタック(300，400)を実現するインターフェース(320)を有し、双方向トランスポートレイヤは、オペレーティングシステム(122)とデータをやり取りするために、少なくとも1つのメモリ(140，182)のうちの所定の共有メモリ領域(240)を提供するために使用される。  本発明は、コンピュータシステム(100)を監視するシステム管理モジュール(180)の利用、及び、オペレーティングシステム(122)とコンピュータシステム(100)のシステム管理モジュール(180)との間で双方向にデータをやり取りする方法にも関連する。【選択図】図3
2016536697.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータシステムであって：
少なくとも１つの拡張バスを有するシステムコンポーネント；
前記少なくとも１つの拡張バスに結合され、少なくとも１つのオペレーティングシステムのプログラムコードを実行するように意図される少なくとも１つのプロセッサ；
前記システムコンポーネント上に配置されるシステム管理モジュール；及び
少なくとも１つのメモリ；
を有し、前記システム管理モジュールは前記少なくとも１つの拡張バスに結合され、及び、前記少なくとも１つの拡張バスは前記少なくとも１つのメモリに対する直接的なアクセスを許容し；及び
前記システム管理モジュールは、双方向トランスポートレイヤを有するプロトコルスタックを実現するインターフェースを有し、双方向トランスポートレイヤは、前記オペレーティングシステムとデータをやり取りするために、前記少なくとも１つのメモリのうちの所定の共有メモリ領域を提供するために使用される、コンピュータシステム。
【請求項２】
前記プロトコルスタックは論理レイヤを追加的に有し、前記双方向トランスポートレイヤは前記共有メモリ領域にアクセスするように設定され、前記オペレーティングシステムにより実行されるアプリケーションは、前記論理レイヤにより実現されるプロトコルを利用して前記のトランスポートレイヤにアクセスするように設定される、請求項１に記載のコンピュータシステム。
【請求項３】
前記プロトコルスタックは、前記オペレーティングシステムのアプリケーションのためのアドレス空間から前記所定の共有メモリ領域に直接的にアクセスする少なくとも１つのアダプタモジュールを含む、請求項１又は２に記載のコンピュータシステム。
【請求項４】
前記プロトコルスタックは少なくとも１つのアダプタモジュールとカーネルドライバとを有し、前記アダプタモジュールは、前記オペレーティングシステムのアプリケーションのためのアドレス空間で実行され、所定のファンクションを利用して前記カーネルドライバにアクセスし、前記カーネルドライバは、前記オペレーティングシステムの保護されたアドレス空間で実行され、前記所定の共有メモリ領域にアクセスするように設定される、請求項１又は２に記載のコンピュータシステム。
【請求項５】
前記プロトコルスタックは、前記オペレーティングシステムのアプリケーションのための前記アドレス空間で実行されかつＩＰＭＩ規格に従うインターフェースを提供するように意図されるハンドラモジュールを含み、前記ハンドラモジュールは、前記アダプタモジュールにより提供されかつ前記システム管理モジュールとデータをやり取りするように意図されるプログラミングインターフェースにアクセスする、請求項３又は４に記載のコンピュータシステム。
【請求項６】
前記オペレーティングシステムにより実行され、前記システム管理モジュールと通信するアプリケーション固有のインターフェースを提供するように意図されるデーモンプロセスを含む、請求項１ないし５のうち何れか１項に記載のコンピュータシステム。
【請求項７】
前記少なくとも１つの拡張バスは、少なくとも１つの双方向の１対１接続、特に少なくとも１つのＰＣＩｅ接続を、前記システムコンポーネントのチップセットと前記システム管理モジュールとの間に有する、請求項１ないし６のうち何れか１項に記載のコンピュータシステム。
【請求項８】
前記所定の共有メモリ領域は、前記システム管理モジュールの組み込まれたメモリの一部である、請求項１ないし７のうち何れか１項に記載のコンピュータシステム。
【請求項９】
前記所定の共有メモリ領域は、前記コンピュータシステムのメインメモリの一部である、請求項１ないし７のうち何れか１項に記載のコンピュータシステム。
【請求項１０】
前記所定の共有メモリ領域は、前記オペレーティングシステムから前記システム管理モジュールへデータを送信するためのバッファメモリを提供する第１サブ領域と、前記システム管理モジュールから前記オペレーティングシステムへデータを送信するためのバッファメモリを提供する第２サブ領域とを有する、請求項１ないし９のうち何れか１項に記載のコンピュータシステム。
【請求項１１】
前記オペレーティングシステムから前記システム管理モジュールへデータを送信するための少なくとも１つの第１キューを実現する少なくとも１つの通信レジスタと、前記システム管理モジュールから前記オペレーティングシステムへデータを送信するための少なくとも１つの第２キューのための第２通信レジスタとを有する、請求項１ないし１０のうち何れか１項に記載のコンピュータシステム。
【請求項１２】
少なくとも１つの割り込み要求をトリガすることにより、待機中のデータ送信が合図される、請求項１ないし１１のうち何れか１項に記載のコンピュータシステム。
【請求項１３】
オペレーティングシステムを実行する少なくとも１つのプロセッサを有するコンピュータシステムを監視するためのシステム管理モジュールの利用であって、前記システム管理モジュールは、前記コンピュータシステムの動作状態に関連する広範囲なデータ、特に前記コンピュータシステムのメインメモリの少なくとも一部のメモリダンプを、前記コンピュータシステムの動作中に取得し、所定の共有メモリ領域からのデータは、前記システム管理モジュールのインターフェース及び前記プロセッサに結合される少なくとも１つの拡張バスを介して前記プロセッサと、前記システム管理モジュールとに利用可能にされる、利用。
【請求項１４】
コンピュータシステムのオペレーティングシステムとシステム管理モジュールとの間でデータを双方向にやり取りするための方法であって：
前記オペレーティングシステムのソフトウェアコンポーネント又は前記システム管理モジュールにより、所定の共有メモリ領域でやり取りされるデータを提供するステップであって、前記所定の共有メモリ領域は、前記システム管理モジュールのインターフェース及び前記コンピュータシステムの拡張バスによりアドレスされることが可能である、ステップ；
データは前記共有メモリ領域で取り出すのに利用可能であることをシグナリングするステップ；及び
前記システム管理モジュール又は前記オペレーティングシステムの前記ソフトウェアコンポーネントにより、前記共有メモリ領域を読み込むステップ；
を有する方法。
【請求項１５】
広範囲なデータ、特に前記コンピュータシステムのメインメモリの少なくとも一部のメモリダンプを、内部メモリにおいて、前記システム管理モジュールを用いて取得し、前記共有メモリ領域で前記データを少なくとも部分的に提供し、前記ソフトウェアコンポーネントにより提供されるデータを読み込むステップであって、前記拡張バスを介して、前記オペレーティングシステムの制御の下で前記少なくとも１つのプロセッサにおいて実行される、ステップを有する請求項１４に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、システムコンポーネントを有するコンピュータシステムに関連し、システムコンポーネントは、そこに配置される少なくとも1つのプロセッサと、そこに配置されるシステム管理モジュールと、少なくとも1つのメモリとを有する。本発明は、少なくとも1つのプロセッサを有するコンピュータシステムを監視するシステム管理モジュールの利用、及び、オペレーティングシステムとコンピュータシステムのシステム管理モジュールとの間で双方向にデータをやり取りする方法にも関連する。
【背景技術】
【０００２】
上記のタイプのコンピュータシステムは従来から良く知られている。特に、しばしば介入無しに及びユーザの直接的な監視によらずに動作する所謂サーバーシステムは、コンピュータシステムの動作を監視するために、いわゆるシステム管理モジュール(「ベースボードマネジメントコントローラ(Baseboard  Management  Controller：BMC)とも言及される)をしばしば備えている。実際の監視に加えて、システム管理モジュールは、管理タスクが実行されることを許容し、例えば、ソフトウェアコンポーネントや設定パフォーマンスの更新を許容する。システム管理モジュールは、一般に、ネットワークインターフェースを介してリモートシステム管理サーバーに接続され、コンピュータシステムの動作状態に関連するデータを送受信し、コンピュータシステムのオペレーティングシステムから独立して監視されるコンピュータシステムのシステム管理モジュールに管理者がログオンすることを許容する。
【０００３】
上記のリモートアクセスに加えて、システム管理モジュールは、コンピュータシステムのローカルなオペレーティングシステムの制御の下で場合によっては動作しているエージェントアプリケーションにデータを提供する。例えば、エージェントは、例えば動作温度及びその他の動作データのような現在監視中のパラメータを、システム管理モジュールから取り出してもよい。
【０００４】
コンピュータシステムのローカルプロセッサ上で動作するオペレーティングシステムとシステム管理モジュールとの間でデータをやり取りするために一般に、「インテリジェントプラットフォーム管理インターフェース(Intelligent  Platform  Management  Interface：IPMI)」規格による所謂「キーボードコントローラスタイル(Keyboard  Controller  Style：KCS)」プロトコル(バージョン2.0、インテル、ヒューレットパッカード、NEC及びDellによる02.12.2004の改訂版1.0)が、利用される。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
上記のアプローチに伴う問題は、KCSプロトコルの利用が、比較的狭い帯域幅しか許容しないことである。特に、新規の特に高性能のシステム管理モジュールで生じるような比較的大量のデータをやり取りする動作では、比較的長期のデータ伝送時間を必要とする。
【０００６】
本願の課題の1つは、オペレーティングシステムとコンピュータシステムのローカルシステム管理モジュールとの間のデータ送受信を高速化する装置及び方法を開示することである。この場合において、システム管理モジュールを利用してコンピュータシステムを監視する新たな可能性も好ましく示されるように意図されている。
【課題を解決するための手段】
【０００７】
本発明の第1側面は、その問題を解決するコンピュータシステムに関する。コンピュータシステムは、少なくとも1つの拡張バスを有するシステムコンポーネントと、少なくとも1つの拡張バスに結合され、少なくとも1つのオペレーティングシステムのプログラムコードを実行するように意図される少なくとも1つのプロセッサとを有する。コンピュータシステムは、システムコンポーネント上に配置されるシステム管理モジュールと、少なくとも1つのメモリとを有する。この場合において、システム管理モジュールは、少なくとも1つの拡張バスに結合され、少なくとも1つの拡張バスは少なくとも1つのメモリに対する直接的なアクセスを許容する。この場合において、システム管理モジュールは、双方向トランスポートレイヤを有するプロトコルスタックを実現するインターフェースを有し、双方向トランスポートレイヤは、オペレーティングシステムとデータをやり取りするために、少なくとも1つのメモリのうちの所定の共有メモリ領域を提供するために使用される。
【０００８】
第1側面によるコンピュータシステムでは、コンピュータシステムの拡張バスは、オペレーティングシステムとシステム管理モジュールとの間でデータを送受信するために使用され、拡張バスは少なくとも1つのメモリに対する直接的なアクセスを許容する。拡張バスを利用することは、システム管理モジュール及びプロセッサの双方が(それらの上でオペレーティングシステムが実行されている)、所定の共有メモリ領域により、広い帯域幅で多くのデータをやり取りすることを可能にする。この目的のため、システム管理モジュールは双方向インターフェースを提供し、その双方向インターフェースを介して、プロトコルスタックを実現するオペレーティングシステムのソフトウェアコンポーネントは、共有メモリ領域にアクセスすることができる。
【０００９】
説明されるアーキテクチャの利点の1つは、特に、ほとんどの既存のオペレーティングシステムが、拡張バスに接続されるデバイスにより、共有メモリ領域にアクセスするための仕組みを提供できることである。これは、オペレーティングシステムの下で実行されるアプリケーションのアドレス空間から直接的にそのようなメモリ領域へ広く(一般的に)アクセスできるようにする。オペレーティングシステムのそのような基本的なドライバに基づいて、更なるプロトコルレベルがアプリケーションレイヤに追加され、アプリケーション固有のマルチプロトコルスタックを作成することができる。これは、オペレーティングシステムの下で実行される様々なアプリケーションとシステム管理モジュールとの間に、特に柔軟性のあるインターフェース(フレキシブルインターフェース)を提供することを可能にする。
【００１０】
拡張バスを介してデータを双方向にやり取りする可能性は、新たなアプリケーション状況の多様性を可能にする。特に、システム管理モジュールのマイクロコントローラ上で動作する制御ソフトウェアは、オペレーティングシステムにより管理されるデータへのアクセスを能動的に開始することができ、或いは、オペレーティングシステムの下で動作しているアプリケーションにメッセージを送信することができる。言い換えれば、同等な権限を有するアクセスが、システム管理モジュール又はオペレーティングシステムの何れかにより行われる。技術的には、これは、システム管理モジュール及びオペレーティングシステムの制御ソフトウェアの真の同時実行性(true  concurrency)をもたらす。従って、多くのアプリケーションに関し、オペレーティングシステムの下で動作し及びシステム管理モジュールの比較的リソースを消費する能動的な問い合わせ(comparatively  resource-intensive  active  query)(「ポーリング」とも言及される)を引き起こすエージェントを、もはや用意する必要はない。
【００１１】
ローカルな拡張バスを利用することは、同時に、例えばローカル通信にネットワークインターフェースを利用する場合に生じることが予想される問題を回避する。特に、管理ネットワーク及び別の企業ネットワーク間で予想される橋渡しのリスク、及び、関連するセキュリティのリスクが、回避されることが可能である。
【００１２】
好ましい改善例によれば、少なくとも1つの拡張バスは、少なくとも1つの双方向1対1接続、特に、少なくとも1つのPCIエクスプレス(PCI  Express：PCIe)接続を、システムコンポーネントのチップセットとシステム管理モジュールとの間に有する。PCIe接続を確立するハードウェアコンポーネントは、一般に、システムコンポーネントのチップセット内に既に組み込まれている。この場合において、関連するPCIeプロトコルは、共有メモリ領域が、異なるデバイスに提供されることを許容する。従って、システム管理モジュールをPCIe接続に直接的につなぐことは、プロセッサ及びシステム管理モジュールにより共有されるメモリ領域を介してデータをやり取りできるようにする。
【００１３】
別の改善例によれば、所定の共有メモリ領域は、システム管理モジュールの内の統合されたメモリの一部分である。代替的に、所定の共有メモリ領域は、コンピュータシステムのメインメモリの一部分である。システム管理モジュールの統合されたメモリの一部分が共有メモリ領域として使用される場合、システム管理モジュールにより取得されるデータをコピーすることを大幅に免除することが可能である。これに対して、コンピュータシステムのメインメモリの一部分が使用される場合、比較的多くの連続的なメモリ領域が、共同使用(joint  use)のために利用可能である。
【００１４】
本発明の第2側面は、オペレーティングシステムを実行する少なくとも1つのプロセッサを有するコンピュータシステムを監視するためのシステム管理モジュールの「利用(use)」に関連し、システム管理モジュールは、コンピュータシステムの動作状態に関連する広範囲なデータ(comprehensive  data)を、コンピュータシステムの動作中に取得する。例えば、システム管理モジュールは、コンピュータシステムのメインメモリの少なくとも一部のメモリダンプ又は広範囲に及ぶ診断レポートをまとめるために設定される。この場合において、所定の共有メモリ領域からのデータは、システム管理モジュールのインターフェース及びプロセッサに結合される少なくとも１つの拡張バスを介してプロセッサと、システム管理モジュールとに利用可能にされる。そして、データは、オペレーティングシステムのソフトウェアコンポーエント、又は、コンピュータシステムの他のシステムコンポーネントにより処理されることが可能である。
【００１５】
そのような「利用」は、特に、エージェントによらず、オペレーティングシステムに概ね独立して、特に定常的に能動的なモニタリングソフトウェアを利用することなく、システム管理モジュールを使用してコンピュータシステムが監視されることを許容する。この場合において、コンピュータシステムのソフトウェアモジュールにより取得されたデータの更なる処理は、システム管理モジュールにより開始されることが可能であり、その結果、エージェントによらずにコンピュータシステムを監視することが可能になる。
【００１６】
本発明の第3側面は、コンピュータシステムのシステム管理モジュールとオペレーティングシステムとの間でデータを双方向にやり取りするための方法に関連する。本方法は：
-  オペレーティングシステムのソフトウェアコンポーネント又はシステム管理モジュールにより、所定の共有メモリ領域でやり取りされるデータを提供するステップであって、所定の共有メモリ領域は、システム管理モジュールのインターフェース及び前記コンピュータシステムの拡張バスによりアドレス(指定)されることが可能である、ステップ；
-  データは共有メモリ領域で取り出すのに利用可能であることをシグナリングするステップ；及び
-  システム管理モジュール又はオペレーティングシステムのソフトウェアコンポーネントにより、共有メモリ領域を読み込むステップ；を有する。
【００１７】
上記の方法ステップは、広い送信帯域幅でシステム管理モジュールを有するコンピュータシステムにおいてデータを双方向にやり取りすることを可能にする。そのような方法は、特に、エージェントを有しない監視システムを実現することに適している。
【００１８】
本発明の更なる有利な改善は、従属請求項及び実施例についての以下の詳細な説明において開示される。以下、本発明は、添付図面に関連する様々な実施例を用いて詳細に説明される。様々図面において、同一の又は類似するコンポーネントには、しばしば同じ参照記号が与えられる。
【図面の簡単な説明】
【００１９】
【図１】図1は本発明の一実施形態によるコンピュータシステムを示す。
【図２】図2は共有メモリ領域にアクセスする様子を概略的に示す。
【図３】図3は本発明の第1実施形態によるプロトコルスタックを示す。
【図４】図4は本発明の第2実施形態によるプロトコルスタックを示す。
【発明を実施するための形態】
【００２０】
図1はコンピュータシステム100の構造を概略的に示す。コンピュータシステム100は、システムボードの形式によるシステムコンポーネント110と、ハードディスクドライブの形式による不揮発性大容量メモリ120とを有する。言うまでもなく、コンピュータシステム100は、簡明化のため図1では図示されていない別のコンポーネントを含んでもよい。
【００２１】
例示の形態において、プロセッサ130、メインメモリ140及びチップセット150はシステムコンポーネント110上に配置される。プロセッサ130、メインメモリ140及びチップセット150は、1つ以上のバスシステムを介して互いに接続される。例えば、プロセッサ130、メインメモリ140及びチップセット150は、いわゆるクイックパス相互接続(Quick  Path  Interconnect：QPI)バスを介して互いに接続される。
【００２２】
拡張バス160を介してチップセット150に接続される拡張コンポーネントも、システムコンポーネント110上に配置される。説明される例示的な形態において、拡張バス160は、特に、互いに大部分独立している複数のシリアルポイントトゥポイント接続を有する所謂PCIエクスプレス(PCIe)バスシステムである。図1に示される例示的な形態では、グラフィックスコンポーネント170、システム管理モジュール180及び大容量メモリコントローラ190は、拡張バス160を介してチップセット150に接続される。
【００２３】
説明される例示的な形態では、システム管理モジュール180は、システム管理モジュール180により取得されるデータを保存する内部メモリ182を有する。システム管理モジュール180は、特に、マイクロコントローラ、別のグラフィックスコンポーネント及び/又はネットワークインターエース(これらは、簡明化のため図1には示されていない)のような別のコンポーネントを含むことも可能である。
【００２４】
例示的な形態では、プロセッサ130による実行のための様々なソフトウェアコンポーネントが、大容量メモリ130に保存されている。特に、オペレーティングシステム122、ソフトウェアドライバ124及びアプリケーションソフトウェア126は、大容量メモリ120に保存される。プロセッサ130による実行の最中に、大容量メモリ120に保存されているソフトウェアコンポーネントは、特に、後述の図面を用いて詳細に説明されるように、システム管理モジュール180との双方向通信を設定するために使用される。
【００２５】
図2は、コンピュータシステム100のコンポーネントを概略的に示し、コンピュータシステムは、プロセッサ130で実行されるソフトウェアコンポーネント210とシステム管理モジュール180との間のデータのやり取りに係わる。
【００２６】
プロセッサ130で動作するホストシステムのソフトウェアコンポーネント210は、例えば、オペレーティングシステム122、ソフトウェアドライバ124、アプリケーションソフトウェア126、又は、拡張バス160にアクセスするために場合によっては提供されるコンピュータシステムのファームウェアのBIOSルーチンの一部分であり、ソフトウェアコンポーネント210は、拡張バス160を介してシステム管理モジュール180のインターフェースコントローラ220にアクセスする。例示の形態では、インターフェースコントローラ220は、現在のPCIエクスプレス規格に従うPCIeインターフェースによる手段である。
【００２７】
様々なファンクション(機能部)230、232及び234は、PCIe規格に従ってインターフェースコントローラを介して提供される。例示の形態において、ファンクション230及び232は、詳細には説明されない標準的な機能部である。例えば、ファンクション230は、システム管理モジュール180に存在する別のグラフィックスコンポーネントにアクセスする機能部である。ファンクション232は、例えば、システム管理モジュール180のネットワークコントローラにアクセスする機能部である。
【００２８】
説明される例示の形態では、ソフトウェアコンポーネント210とシステム管理モジュール180との間の双方向通信を行うために、第3ファンクション234が使用される。例示の形態では、そのファンクションは、PCIeインターフェースにアクセスするシステム管理モジュール180の修正されたベーシックドライバに基づく。共有メモリ領域240並びに全部で4つのキュー250、252、254及び256は、ドライバにより実現される。例示の形態では、共有メモリ領域240は、内部メモリ182の一部分である。
【００２９】
共有メモリ領域240は、第1レジスタセット(第1レジスタ群)260を用いてアドレス(指定)されることが可能である。第1レジスタセット260は、特に、共有メモリ領域240内に保存されるデータの開始アドレスを、システム管理モジュール180とソフトウェアコンポーネント210との間でやり取りするために使用されることが可能である。キュー250、252、254及び256は、第2レジスタセット(第2レジスタ群)270を用いてアドレス(指定)されることが可能である。説明される例示の形態では、キュー250及び252はソフトウェアコンポーネント210からシステム管理モジュール180へメッセージを送信するために使用される。逆に、キュー254及び256はシステム管理モジュール180からソフトウェアコンポーネント210へメッセージを交換するために使用される。例えば、キュー250、254及びメモリ領域240における各自の関連するリングバッファは、オペレーティングシステム122とシステム管理モジュール180との間の双方向通信のためにそれぞれの方向で使用されてよい。これに対して、他のキュー252、256及びそれに応じた関連するリングバッファは、いわゆるシステム管理インターフェース(System  Management  Interface：SMI)ハンドラとシステム管理モジュール180との間の通信に使用されることが可能である。一般に、存在する並列的なデータ送信インターフェース及び方向と同程度に多いリングバッファ及びキューが提供されるべきである。2つの可能な通信方向に異なるキューを提供することは、オペレーティングシステム122及びシステム管理モジュール180の双方が、互いに独立に(従って同等な権限で)通信を開始することを可能にする。
【００３０】
説明される例示の形態において、キュー250、252、254及び256は、特に、命令をやり取りするために使用される。やり取りされるデータ及び命令の厳密なタイプはアプリケーションに特有である。様々なアプリケーションを実現する際に最大限可能な柔軟性を持たせるため、説明される例示の形態ではマルチレイヤプロトコルスタックが使用され、プロトコルスタックは、個々のアプリケーションとシステム管理モジュール180との間でデータをやり取りすることを可能にする。
【００３１】
図3は第1実施形態によるプロトコルスタック300を示す。
【００３２】
図3は、上から下まで、互いに区別される3つのアドレス空間302、304及び306を示す。第1アドレス空間302は、システム管理モジュール180に関連する。第2アドレス空間304は、オペレーティングシステム122のコアからしか見えず、特に、いわゆるカーネルモードドライバを実行するために使用される。第3アドレス空間306は、オペレーティングシステム122の下で動作するアプリケーションにとってビジブル(見えるもの)である。
【００３３】
よりいっそう適切に本発明を理解するために、それ自体は既知であるIPMI  KCS規格による実装が図3を用いて始めに説明され、その実装は図3では破線を用いて示されている。説明される改善では、後方互換性の理由から、そのような実装は、以下に説明されるように提供される。
【００３４】
IPMI  KCS規格を実装するため、システム管理モジュール180はKCSインターフェース310を有する。KCSインターフェース310は、例えば、システム管理モジュール180の特殊なハードウェアレジスタを用いてアドレス(指定)される。これは、一般にカーネルモードからのみ可能である。従って、システム管理モジュール180のKCSインターフェース310の規格に適合するIPMI  KCSカーネルドライバ312が、第2アドレス空間304内で動作する。第3アドレス空間306で動作する第1アプリケーション350は、IPMI  KCSアダプタ314を利用して、IPMI  KCSカーネルドライバ312により提供されるファンクションにアクセスすることが可能であり、従って、データ及び命令をシステム管理モジュール180へ間接的に送信することが可能である、或いは、後者からデータを取り出すことが可能である。
【００３５】
IPMI  KCSアダプタ314を利用することは、第1アプリケーション350が、インストールされたIPMI  KCSカーネルドライバ312及び使用されるオペレーティングシステム122と概ね独立してシステム管理モジュール180のファンクションにアクセスすることを可能にする。しかしながら、記述されるアプローチは一方向だけであり、使用されるKCSプロトコルに起因する帯域幅の観点から制限される。
【００３６】
従って、アクセス能力を改善するため、システム管理モジュール180の内部メモリ180の共有メモリ領域240が、図3に関する改善において、オペレーティングシステム122の第3アドレス空間306に直接的にマッピングされる。この目的のため、システム管理モジュール180はインターフェース320を提供し、インターフェース320は、PCIe規格に従って、システム管理モジュール180の内部メモリ182のうちの選択された領域を、共有メモリ240にマッピングする。マッピングされるメモリ領域を選択し、命令及びメタデータを送信するために、インターフェース320は、様々な標準的なファンクションを提供する機能部322、324及び326を有する。例示の形態では、第1機能部322はIPMI機能を提供するために使用され、第2機能部324は一般的なファイル機能(general  file  functions)を提供するために使用され、第3機能部326は、例えば、システム管理モジュール180を構成すること等のような製造者固有の機能を提供するために使用される。
【００３７】
共有メモリ領域240は、オペレーティングシステムのコア又は標準的なドライバ(スタンダードドライバ)330の標準的なファンクションを利用することにより、第3アドレス空間306にマッピングされることが可能である。この目的に関し、第2アドレス空間304における追加的又はハードウェア固有のカーネルドライバを実行することは必須でない。むしろ、リナックス(Linux（登録商標）)オペレーティングシステムにおけるアプリケーションは、パス/dev/mem/又はカーネルファンクションmmap()を利用して標準として、そのようなメモリ領域240にアクセスすることが可能である。ウィンドウズ（登録商標）オペレーティングシステムでは、標準的なドライバ330が、PCIe拡張コンポーネントの共有メモリ領域240をアドレス(指定)するために使用される。
【００３８】
第3アドレス空間306に実装されるアダプタモジュール340は、従って、広い帯域幅でシステム管理モジュール180のデータに直接的にアクセスすることが可能である。この目的のために特殊なカーネルドライバをインストールすることは必須でない。更に、例えば双方向で10MB/s以上のデータ伝送レートが、説明されるアプローチでは可能である。例示の形態では、データは、3つのアプリケーションプログラマブルインターフェース(API)342、344及び346を介して提供され、これらのAPIはインターフェース320のそれぞれ対応する機能部322、324及び326をアドレス(指定)するために使用される。インターフェース320及びアダプタモジュール340は、プロトコルスタック300の共有メモリ240に基づいて双方向トランスポートレイヤを共に提供する。特にプログラミングインターフェース342、344及び346のような様々なプロトコルを提供する論理レイヤは、そのトランスポートレイヤ上に存在する。2つのレイヤに分割することは、対応する機能部とともに論理レイヤを補完することにより、及び/又は、トランスポートレイヤ自体を変更する必要無しにインターフェースをプログラミングすることにより、更なるプロトコルを実装することを可能にする。
【００３９】
例示の形態では、上位のプロトコルレイヤを実現する第1アプリケーション350はアダプタモジュール340上に存在する。第1アプリケーション350は、例えば、サーバー管理の様々な基本サービスを提供する所謂デーモンプロセス352を実現する。この目的のため、第1アプリケーション350は、特に、規格によるアダプタモジュール340のアプリケーションプログラミングインターフェース342のファンクションにアクセスする所謂IPMIハンドラモジュール354を有する。従って、既存のアプリケーション350が変更なく使用されることが可能である。
【００４０】
例示の形態では、第1アプリケーション350は追加的に第1転送モジュール356を有し、第1転送モジュール356は、特に、広い帯域幅でシステム管理モジュール180にファイルを送信することを可能にする。これを実行するために、アプリケーションプログラミングインターフェース344は、特に、open()，write()，read()又はappend()のようなファンクションを提供し、これらは通常の大容量メモリのファイルにアクセスする際のカーネルのファンクションに対応する。追加的に、他の機能を提供する更に別のソフトウェアモジュール358(ここでは詳細には説明されない)が、アプリケーション350に含まれてもよい。
【００４１】
システム管理モジュール180の一部においてインターフェース320が利用可能でない場合、或いは、適切なアダプタモジュール340がない場合、或いは、オペレーティングシステム122の一部において標準のドライバ330が利用可能でない場合、IPMIハンドラモジュール354は、従来のIPMI  KCSアダプタ314を介してKCSインターフェース310にアクセスする。この点に関し、IPMIハンドラモジュール354は、例えば、互換性のないシステム管理モジュール180を使用していること等のような不具合の発生を検出し、後方互換性を有するが能力は十分でないKCSインターフェース310により、デーモンプロセス352からの対応するリクエストを迂回させる。
【００４２】
個々のサービスを提供するソフトウェアモジュールは、デーモンプロセス352上で動作する。例示の形態では、「共通情報モデル(Common  Information  Model)」規格に従うデータを提供する所謂CIMプロバイダ360と、シンプルネットワーク管理プロトコル(Simple  Network  Management  Protocol：SNMP)に従うエージェント362と、詳細には説明されない別の管理ツール364とが存在する。プロトコルスタック300を利用することにより、デーモンプロセス352及びソフトウェアモジュール360、362、364は、IPMIハンドラモジュール354を利用して、それ自体は既知である方法による変更されていない仕方で、システム管理モジュール180の情報にアクセスすることが可能である。従って、説明されるインターフェースを拡張バスにより実現するために、オペレーティングシステム122は、アダプタモジュール340を提供することしか必要としない。システム管理モジュール180は、インターフェース320を実現することしか必要としない。それらの間のドライバ330は、PCIエクスプレスに従って共有メモリ240にアクセスすることのみを保証し、従って、これは、上述したように、既に通常のオペレーティングシステムの一部である。
【００４３】
第1アプリケーション350に加えて、アダプタモジュール340のアプリケーションプログラミングインターフェース342、344又は346のうちの1つ以上に同様にアクセスする第2アプリケーション370が、第3アドレス空間で動作している。この場合、アダプタモジュール340は、システム管理モジュール180に対する並列的なアクセスを制御するために使用され、その結果、アプリケーション350及び370に何らの相互干渉も存在しない。例示の形態では、その目的のために、IPMIハンドラモジュール374及びファイル転送モジュール376を介してアプリケーションプログラミングインターフェース342及び344にアクセスするのは、ファームウェア更新コンポーネント372である。ファームウェア更新コンポーネント372は、例えば、システム管理モジュール180のファームウェアコンポーネント、又は、コンピュータシステムのBIOSコンポーネントを格納してセットアップ(設定)するために使用される。そのようなアプリケーションは、新たなインターフェース320及び関連するアダプタモジュール340の拡張された伝送帯域幅により、特に恩恵を受ける。
【００４４】
図4は更なる形態による別のプロトコルスタック400を示す。プロトコルスタック400は、図3によるプロトコルスタック300と実質的に同じコンポーネントを有する。それとの相違に関し、共用メモリ領域240が、第3アドレス空間に直接的にはマッピングされていない。概して、これは、例えば完全に仮想化されたハードウェアシステムに関して問題を生じること無く実現することは不可能である。
【００４５】
にもかかわらず、物理的なハードウェアプラットフォームのシステム管理モジュール180とオペレーティングシステム122との間で高速データレートで通信を可能にするために、図4の形態では、特殊なカーネルドライバモジュール430が提供されており、このモジュールは、例えばESXiのようなオペレーティングシステム122のアドレス空間の中で直接的に動作し、共有メモリ領域240へのアクセス権を有する。
【００４６】
データをカーネルドライバ430へ送信することが可能な又は特殊なファンクション呼び出しを利用してそこからデータを取り出すことが可能なアダプタモジュール440は、第3アドレス空間306の内部で動作する。従って、アダプタモジュール440にとって共有メモリ領域240に直接的に書き込みを行う必要はなく、その結果、説明されるプロトコルスタック400は、アプリケーションのためのアドレス空間306から共用メモリ240への直接的なアクセスが許容されない又は希望されないようなオペレーティングシステムに相応しい。
【００４７】
オペレーティングシステム122のソフトウェアコンポーネントとシステム管理モジュール180との間のデータ伝送レートを増やすことに加えて、新たなインターフェース320及びアダプタモジュール340、440は、いわゆるエージェント不要の監視システム(agent-less  monitoring  system)を実現することを可能にする。この目的のため、システム管理モジュール180内で動作するモニタリングプロセスは、広範囲に及ぶデータを自動的にコンパイルし(まとめ上げ)、共用メモリ領域240を介して、オペレーティングシステム122及びその他のシステムコンポーネントにとってそれを利用可能にすることが可能である。そして、オペレーティングシステム122の第3アドレス空間306内で動作するアプリケーション350又は370は、双方向インターフェース320を介して、システム管理モジュール180が対応するデータをコンパイルしたことのアドバイスを受けることが可能になる。この目的には、例えば、システム管理モジュール180によりインタラプトリクエスト(割り込み要求)をトリガすることが適切である。この場合、いわゆるエージェントによる実際の監視を免除する(無しで済ませる)ことが可能である。
【００４８】
以上、本発明は、システム管理モジュール180とオペレーティングシステム122のソフトウェアコンポーネント210との間の双方向通信を用いて説明されたが、インターフェース320は、コンピュータシステム100の他のコンポーネントとの通信にも相応しい。特に、いわゆるシステム管理モード(System  Management  Mode：SMM)で特殊なプログラムコードを実行する所謂システム管理インターフェース(System  Management  Interface：SMI)ハンドラが、インターフェース320に直接的にアクセスすることが可能である。BIOSソフトウェアとシステム管理モジュール180との間の通信も同様に可能であり、その結果、例えば、システム管理モジュール180が広い帯域幅でBIOSファームウェアをアップデートすることが可能になる。
【符号の説明】
【００４９】
100  コンピュータシステム
110  システムコンポーネント
120  大容量メモリ
122  オペレーティングシステム
124  ソフトウェアドライバ
126  アプリケーションソフトウェア
130  プロセッサ
140  メインメモリ
150  チップセット
160  拡張バス
170  グラフィックスコンポーネント
180  システム管理モジュール
182  内部メモリ
190  大容量メモリコントローラ
210  ソフトウェアコンポーネント
220  インターフェースコントローラ
230，232，234  ファンクション(機能部)
240  共有メモリ領域
250，252，256  キュー
260  第1レジスタセット
270  第2レジスタセット
300  プロトコルスタック
302  第1アドレス空間
304  第2アドレス空間
306  第3アドレス空間
310  KCSインターフェース
312  IPMI  KCSカーネルドライバ
314  IPMI  KCSアダプタ
320  インターフェース
322  第1機能部
324  第2機能部
326  第3機能部
330  スタンダードドライバ
340  アダプタモジュール
350  第1アプリケーション
352  デーモンプロセス
354  IPMIハンドラモジュール
356  ファイル転送モジュール
358  ソフトウェアモジュール
360  CIMプロバイダ
362  SNMPエージェント
364  管理ツール
370  第2アプリケーション
372  ファームウェア更新コンポーネント
374  IPMIハンドラモジュール
376  ファイル転送モジュール
400  プロトコルスタック
430  カーネルドライバ
440  アダプタモジュール
【図１】
2016536697.tif 000003
【図２】
2016536697.tif 000004
【図３】
2016536697.tif 000005
【図４】
2016536697.tif 000006
【手続補正書】
【提出日】平成28年2月23日(2016.2.23)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
コンピュータシステムであって：
少なくとも１つの拡張バスを有するシステムコンポーネント；
前記少なくとも１つの拡張バスに結合され、少なくとも１つのオペレーティングシステムのプログラムコードを実行するように意図される少なくとも１つのプロセッサ；
前記システムコンポーネント上に配置されるシステム管理モジュール；及び
少なくとも１つのメモリ；
を有し、前記システム管理モジュールは前記少なくとも１つの拡張バスに結合され、及び、前記少なくとも１つの拡張バスは前記少なくとも１つのメモリに対する直接的なアクセスを許容し；及び
前記システム管理モジュールは、双方向トランスポートレイヤを有するプロトコルスタックを実現するインターフェースを有し、双方向トランスポートレイヤは、前記オペレーティングシステムとデータをやり取りするために、前記少なくとも１つのメモリのうちの所定の共有メモリ領域を提供するために使用される、コンピュータシステム。
【請求項２】
前記プロトコルスタックは論理レイヤを追加的に有し、前記双方向トランスポートレイヤは前記共有メモリ領域にアクセスするように設定され、前記オペレーティングシステムにより実行されるアプリケーションは、前記論理レイヤにより実現されるプロトコルを利用して前記のトランスポートレイヤにアクセスするように設定される、請求項１に記載のコンピュータシステム。
【請求項３】
前記プロトコルスタックは、前記オペレーティングシステムのアプリケーションのためのアドレス空間から前記所定の共有メモリ領域に直接的にアクセスする少なくとも１つのアダプタモジュールを含む、請求項１に記載のコンピュータシステム。
【請求項４】
前記プロトコルスタックは少なくとも１つのアダプタモジュールとカーネルドライバとを有し、前記アダプタモジュールは、前記オペレーティングシステムのアプリケーションのためのアドレス空間で実行され、所定のファンクションを利用して前記カーネルドライバにアクセスし、前記カーネルドライバは、前記オペレーティングシステムの保護されたアドレス空間で実行され、前記所定の共有メモリ領域にアクセスするように設定される、請求項１に記載のコンピュータシステム。
【請求項５】
前記プロトコルスタックは、前記オペレーティングシステムのアプリケーションのための前記アドレス空間で実行されかつＩＰＭＩ規格に従うインターフェースを提供するように意図されるハンドラモジュールを含み、前記ハンドラモジュールは、前記アダプタモジュールにより提供されかつ前記システム管理モジュールとデータをやり取りするように意図されるプログラミングインターフェースにアクセスする、請求項３又は４に記載のコンピュータシステム。
【請求項６】
前記オペレーティングシステムにより実行され、前記システム管理モジュールと通信するアプリケーション固有のインターフェースを提供するように意図されるデーモンプロセスを含む、請求項１に記載のコンピュータシステム。
【請求項７】
前記少なくとも１つの拡張バスは、少なくとも１つの双方向の１対１接続、特に少なくとも１つのＰＣＩｅ接続を、前記システムコンポーネントのチップセットと前記システム管理モジュールとの間に有する、請求項１に記載のコンピュータシステム。
【請求項８】
前記所定の共有メモリ領域は、前記システム管理モジュールの組み込まれたメモリの一部である、請求項１に記載のコンピュータシステム。
【請求項９】
前記所定の共有メモリ領域は、前記コンピュータシステムのメインメモリの一部である、請求項１に記載のコンピュータシステム。
【請求項１０】
前記所定の共有メモリ領域は、前記オペレーティングシステムから前記システム管理モジュールへデータを送信するためのバッファメモリを提供する第１サブ領域と、前記システム管理モジュールから前記オペレーティングシステムへデータを送信するためのバッファメモリを提供する第２サブ領域とを有し、
前記コンピュータシステムは、前記オペレーティングシステムから前記システム管理モジュールへデータを送信するための少なくとも１つの第１キューを実現する少なくとも１つの通信レジスタと、前記システム管理モジュールから前記オペレーティングシステムへデータを送信するための少なくとも１つの第２キューのための第２通信レジスタとを有する、請求項１に記載のコンピュータシステム。
【請求項１１】
少なくとも１つの割り込み要求をトリガすることにより、待機中のデータ送信が合図される、請求項１ないし１０のうち何れか１項に記載のコンピュータシステム。
【請求項１２】
コンピュータシステムのオペレーティングシステムとシステム管理モジュールとの間でデータを双方向にやり取りするための方法であって：
前記オペレーティングシステムのソフトウェアコンポーネント又は前記システム管理モジュールにより、所定の共有メモリ領域でやり取りされるデータを提供するステップであって、前記所定の共有メモリ領域は、前記システム管理モジュールのインターフェース及び前記コンピュータシステムの拡張バスによりアドレスされることが可能である、ステップ；
データは前記共有メモリ領域で取り出すのに利用可能であることをシグナリングするステップ；及び
前記システム管理モジュール又は前記オペレーティングシステムの前記ソフトウェアコンポーネントにより、前記共有メモリ領域を読み込むステップ；
を有する方法。
【国際調査報告】
2016536697.tif 000007
2016536697.tif 000008
2016536697.tif 000009
2016536697.tif 000010
2016536697.tif 000011
2016536697.tif 000012