(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6245370
(24)【登録日】2017年11月24日
(45)【発行日】2017年12月13日
(54)【発明の名称】コンピュータシステム及びデータを双方向に送受信する方法
(51)【国際特許分類】
G06F 13/36 20060101AFI20171204BHJP
G06F 13/28 20060101ALI20171204BHJP
【FI】
G06F13/36 510
G06F13/28 310A
【請求項の数】10
【全頁数】14
(21)【出願番号】特願2016-535388(P2016-535388)
(86)(22)【出願日】2014年7月28日
(65)【公表番号】特表2016-536697(P2016-536697A)
(43)【公表日】2016年11月24日
(86)【国際出願番号】EP2014066161
(87)【国際公開番号】WO2015028224
(87)【国際公開日】20150305
【審査請求日】2016年2月23日
(31)【優先権主張番号】102013109465.1
(32)【優先日】2013年8月30日
(33)【優先権主張国】DE
(31)【優先権主張番号】102013109990.4
(32)【優先日】2013年9月11日
(33)【優先権主張国】DE
(73)【特許権者】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】100107766
【弁理士】
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【弁理士】
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100192636
【弁理士】
【氏名又は名称】加藤 隆夫
(72)【発明者】
【氏名】クレーメンス,マルティン
(72)【発明者】
【氏名】シュロッサー,フランツ
(72)【発明者】
【氏名】ルッテゲナオ, カール−ヨーゼフ
【審査官】
田名網 忠雄
(56)【参考文献】
【文献】
米国特許出願公開第2007/0005828(US,A1)
【文献】
米国特許出願公開第2012/0042307(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 3/00
G06F 13/10−13/14
G06F 13/20−13/378
(57)【特許請求の範囲】
【請求項1】
コンピュータシステムであって:
少なくとも1つの拡張バスを有するシステムコンポーネント;
前記少なくとも1つの拡張バスに結合され、少なくとも1つのオペレーティングシステムのプログラムコードを実行する少なくとも1つのプロセッサ;
前記システムコンポーネント上に配置されるシステム管理モジュール;及び
前記システム管理モジュールに組み込まれる少なくとも1つのメモリ;
を有し、前記システム管理モジュールは前記少なくとも1つの拡張バスに結合され、及び、前記少なくとも1つの拡張バスは前記少なくとも1つのメモリに対する直接的なアクセスを許容し;及び
前記システム管理モジュールは、双方向トランスポートレイヤと1つ以上のAPIを提供する論理レイヤとを有するマルチレイヤプロトコルスタックを実現する双方向インターフェースを有し、
前記システム管理モジュールの前記メモリに設定される所定の共有メモリ領域が、前記オペレーティングシステムのアドレス空間にマッピングされ;
前記双方向トランスポートレイヤに配置される前記オペレーティングシステムのアダプタモジュールは、前記システム管理モジュールの双方向インターフェースとデータをやり取りするために前記所定の共有メモリ領域にアクセスするように設定され;及び
前記双方向インターフェースは、前記論理レイヤに配置される前記APIとは別個に提供される、コンピュータシステム。
【請求項2】
前記オペレーティングシステムにより実行されるアプリケーションは、前記論理レイヤにより実現される前記APIを利用して前記双方向トランスポートレイヤにアクセスするように設定される、請求項1に記載のコンピュータシステム。
【請求項3】
前記アダプタモジュールは、前記オペレーティングシステムのアプリケーションのためのアドレス空間から前記所定の共有メモリ領域に直接的にアクセスするように構成される、請求項1に記載のコンピュータシステム。
【請求項4】
前記プロトコルスタックはカーネルドライバを有し、前記アダプタモジュールは、前記オペレーティングシステムのアプリケーションのためのアドレス空間で実行され、所定のファンクションを利用して前記カーネルドライバにアクセスし、前記カーネルドライバは、前記オペレーティングシステムの前記アドレス空間で実行され、前記所定の共有メモリ領域にアクセスするように設定される、請求項1に記載のコンピュータシステム。
【請求項5】
前記プロトコルスタックは、前記オペレーティングシステムのアプリケーションのための前記アドレス空間で実行されかつIPMI規格に従うインターフェースを提供するハンドラモジュールを含み、前記ハンドラモジュールは、前記アダプタモジュールにより提供されかつ前記システム管理モジュールとデータをやり取りするプログラミングインターフェースにアクセスする、請求項3又は4に記載のコンピュータシステム。
【請求項6】
前記オペレーティングシステムにより実行され、前記システム管理モジュールと通信するアプリケーション固有のインターフェースを提供するデーモンプロセスを含む、請求項1に記載のコンピュータシステム。
【請求項7】
前記少なくとも1つの拡張バスは、少なくとも1つの双方向の1対1接続を、前記システムコンポーネントのチップセットと前記システム管理モジュールとの間に有する、請求項1に記載のコンピュータシステム。
【請求項8】
前記所定の共有メモリ領域は、前記オペレーティングシステムから前記システム管理モジュールへデータを送信するためのバッファメモリを提供する第1サブ領域と、前記システム管理モジュールから前記オペレーティングシステムへデータを送信するためのバッファメモリを提供する第2サブ領域とを有し、
前記コンピュータシステムは、前記オペレーティングシステムから前記システム管理モジュールへデータを送信するための少なくとも1つの第1キューを実現する少なくとも1つの通信レジスタと、前記システム管理モジュールから前記オペレーティングシステムへデータを送信するための少なくとも1つの第2キューのための第2通信レジスタとを有する、請求項1に記載のコンピュータシステム。
【請求項9】
少なくとも1つの割り込み要求をトリガすることにより、待機中のデータ送信が前記オペレーティングシステムに合図される、請求項1ないし8のうち何れか1項に記載のコンピュータシステム。
【請求項10】
コンピュータシステムのオペレーティングシステムとシステム管理モジュールとの間でデータを双方向にやり取りするための方法であって:
マルチレイヤプロトコルスタックのトランスポートレイヤで提供される前記オペレーティングシステムのアダプタモジュールと、所定の共有メモリ領域における前記システム管理モジュールの双方向インターフェースとの間でやり取りされるデータを提供するステップであって、前記所定の共有メモリ領域は、前記システム管理モジュールの内部メモリに設定され且つ前記オペレーティングシステムのアドレス空間にマッピングされ、前記所定の共有メモリ領域は、前記システム管理モジュールの前記双方向インターフェース及び前記コンピュータシステムの拡張バスによりアドレスされることが可能である、ステップ;
データは前記共有メモリ領域で取り出すのに利用可能であることをシグナリングするステップ;及び
前記システム管理モジュールの前記双方向インターフェース又は前記オペレーティングシステムのアダプタモジュールにより、前記共有メモリ領域のデータを読み込むステップ;
を有し、前記双方向インターフェースは、前記マルチレイヤプロトコルスタックの論理レイヤで提供される1つ以上のAPIとは別個に提供される、方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、システムコンポーネントを有するコンピュータシステムに関連し、システムコンポーネントは、そこに配置される少なくとも1つのプロセッサと、そこに配置されるシステム管理モジュールと、少なくとも1つのメモリとを有する。本発明は、少なくとも1つのプロセッサを有するコンピュータシステムを監視するシステム管理モジュールの利用、及び、オペレーティングシステムとコンピュータシステムのシステム管理モジュールとの間で双方向にデータをやり取りする方法にも関連する。
【背景技術】
【0002】
上記のタイプのコンピュータシステムは従来から良く知られている。特に、しばしば介入無しに及びユーザの直接的な監視によらずに動作する所謂サーバーシステムは、コンピュータシステムの動作を監視するために、いわゆるシステム管理モジュール(「ベースボードマネジメントコントローラ(Baseboard Management Controller:BMC)とも言及される)をしばしば備えている。実際の監視に加えて、システム管理モジュールは、管理タスクが実行されることを許容し、例えば、ソフトウェアコンポーネントや設定パフォーマンスの更新を許容する。システム管理モジュールは、一般に、ネットワークインターフェースを介してリモートシステム管理サーバーに接続され、コンピュータシステムの動作状態に関連するデータを送受信し、コンピュータシステムのオペレーティングシステムから独立して監視されるコンピュータシステムのシステム管理モジュールに管理者がログオンすることを許容する。
【0003】
上記のリモートアクセスに加えて、システム管理モジュールは、コンピュータシステムのローカルなオペレーティングシステムの制御の下で場合によっては動作しているエージェントアプリケーションにデータを提供する。例えば、エージェントは、例えば動作温度及びその他の動作データのような現在監視中のパラメータを、システム管理モジュールから取り出してもよい。
【0004】
コンピュータシステムのローカルプロセッサ上で動作するオペレーティングシステムとシステム管理モジュールとの間でデータをやり取りするために一般に、「インテリジェントプラットフォーム管理インターフェース(Intelligent Platform Management Interface:IPMI)」規格による所謂「キーボードコントローラスタイル(Keyboard Controller Style:KCS)」プロトコル(バージョン2.0、インテル、ヒューレットパッカード、NEC及びDellによる02.12.2004の改訂版1.0)が、利用される。
【発明の概要】
【発明が解決しようとする課題】
【0005】
上記のアプローチに伴う問題は、KCSプロトコルの利用が、比較的狭い帯域幅しか許容しないことである。特に、新規の特に高性能のシステム管理モジュールで生じるような比較的大量のデータをやり取りする動作では、比較的長期のデータ伝送時間を必要とする。
【0006】
本願の課題の1つは、オペレーティングシステムとコンピュータシステムのローカルシステム管理モジュールとの間のデータ送受信を高速化する装置及び方法を開示することである。この場合において、システム管理モジュールを利用してコンピュータシステムを監視する新たな可能性も好ましく示されるように意図されている。
【課題を解決するための手段】
【0007】
本発明の第1側面は、その問題を解決するコンピュータシステムに関する。コンピュータシステムは、少なくとも1つの拡張バスを有するシステムコンポーネントと、少なくとも1つの拡張バスに結合され、少なくとも1つのオペレーティングシステムのプログラムコードを実行するように意図される少なくとも1つのプロセッサとを有する。コンピュータシステムは、システムコンポーネント上に配置されるシステム管理モジュールと、少なくとも1つのメモリとを有する。この場合において、システム管理モジュールは、少なくとも1つの拡張バスに結合され、少なくとも1つの拡張バスは少なくとも1つのメモリに対する直接的なアクセスを許容する。この場合において、システム管理モジュールは、双方向トランスポートレイヤを有するプロトコルスタックを実現するインターフェースを有し、双方向トランスポートレイヤは、オペレーティングシステムとデータをやり取りするために、少なくとも1つのメモリのうちの所定の共有メモリ領域を提供するために使用される。
【0008】
第1側面によるコンピュータシステムでは、コンピュータシステムの拡張バスは、オペレーティングシステムとシステム管理モジュールとの間でデータを送受信するために使用され、拡張バスは少なくとも1つのメモリに対する直接的なアクセスを許容する。拡張バスを利用することは、システム管理モジュール及びプロセッサの双方が(それらの上でオペレーティングシステムが実行されている)、所定の共有メモリ領域により、広い帯域幅で多くのデータをやり取りすることを可能にする。この目的のため、システム管理モジュールは双方向インターフェースを提供し、その双方向インターフェースを介して、プロトコルスタックを実現するオペレーティングシステムのソフトウェアコンポーネントは、共有メモリ領域にアクセスすることができる。
【0009】
説明されるアーキテクチャの利点の1つは、特に、ほとんどの既存のオペレーティングシステムが、拡張バスに接続されるデバイスにより、共有メモリ領域にアクセスするための仕組みを提供できることである。これは、オペレーティングシステムの下で実行されるアプリケーションのアドレス空間から直接的にそのようなメモリ領域へ広く(一般的に)アクセスできるようにする。オペレーティングシステムのそのような基本的なドライバに基づいて、更なるプロトコルレベルがアプリケーションレイヤに追加され、アプリケーション固有のマルチプロトコルスタックを作成することができる。これは、オペレーティングシステムの下で実行される様々なアプリケーションとシステム管理モジュールとの間に、特に柔軟性のあるインターフェース(フレキシブルインターフェース)を提供することを可能にする。
【0010】
拡張バスを介してデータを双方向にやり取りする可能性は、新たなアプリケーション状況の多様性を可能にする。特に、システム管理モジュールのマイクロコントローラ上で動作する制御ソフトウェアは、オペレーティングシステムにより管理されるデータへのアクセスを能動的に開始することができ、或いは、オペレーティングシステムの下で動作しているアプリケーションにメッセージを送信することができる。言い換えれば、同等な権限を有するアクセスが、システム管理モジュール又はオペレーティングシステムの何れかにより行われる。技術的には、これは、システム管理モジュール及びオペレーティングシステムの制御ソフトウェアの真の同時実行性(true concurrency)をもたらす。従って、多くのアプリケーションに関し、オペレーティングシステムの下で動作し及びシステム管理モジュールの比較的リソースを消費する能動的な問い合わせ(comparatively resource-intensive active query)(「ポーリング」とも言及される)を引き起こすエージェントを、もはや用意する必要はない。
【0011】
ローカルな拡張バスを利用することは、同時に、例えばローカル通信にネットワークインターフェースを利用する場合に生じることが予想される問題を回避する。特に、管理ネットワーク及び別の企業ネットワーク間で予想される橋渡しのリスク、及び、関連するセキュリティのリスクが、回避されることが可能である。
【0012】
好ましい改善例によれば、少なくとも1つの拡張バスは、少なくとも1つの双方向1対1接続、特に、少なくとも1つのPCIエクスプレス(PCI Express:PCIe)接続を、システムコンポーネントのチップセットとシステム管理モジュールとの間に有する。PCIe接続を確立するハードウェアコンポーネントは、一般に、システムコンポーネントのチップセット内に既に組み込まれている。この場合において、関連するPCIeプロトコルは、共有メモリ領域が、異なるデバイスに提供されることを許容する。従って、システム管理モジュールをPCIe接続に直接的につなぐことは、プロセッサ及びシステム管理モジュールにより共有されるメモリ領域を介してデータをやり取りできるようにする。
【0013】
別の改善例によれば、所定の共有メモリ領域は、システム管理モジュールの内の統合されたメモリの一部分である。代替的に、所定の共有メモリ領域は、コンピュータシステムのメインメモリの一部分である。システム管理モジュールの統合されたメモリの一部分が共有メモリ領域として使用される場合、システム管理モジュールにより取得されるデータをコピーすることを大幅に免除することが可能である。これに対して、コンピュータシステムのメインメモリの一部分が使用される場合、比較的多くの連続的なメモリ領域が、共同使用(joint use)のために利用可能である。
【0014】
本発明の第2側面は、オペレーティングシステムを実行する少なくとも1つのプロセッサを有するコンピュータシステムを監視するためのシステム管理モジュールの「利用(use)」に関連し、システム管理モジュールは、コンピュータシステムの動作状態に関連する広範囲なデータ(comprehensive data)を、コンピュータシステムの動作中に取得する。例えば、システム管理モジュールは、コンピュータシステムのメインメモリの少なくとも一部のメモリダンプ又は広範囲に及ぶ診断レポートをまとめるために設定される。この場合において、所定の共有メモリ領域からのデータは、システム管理モジュールのインターフェース及びプロセッサに結合される少なくとも1つの拡張バスを介してプロセッサと、システム管理モジュールとに利用可能にされる。そして、データは、オペレーティングシステムのソフトウェアコンポーエント、又は、コンピュータシステムの他のシステムコンポーネントにより処理されることが可能である。
【0015】
そのような「利用」は、特に、エージェントによらず、オペレーティングシステムに概ね独立して、特に定常的に能動的なモニタリングソフトウェアを利用することなく、システム管理モジュールを使用してコンピュータシステムが監視されることを許容する。この場合において、コンピュータシステムのソフトウェアモジュールにより取得されたデータの更なる処理は、システム管理モジュールにより開始されることが可能であり、その結果、エージェントによらずにコンピュータシステムを監視することが可能になる。
【0016】
本発明の第3側面は、コンピュータシステムのシステム管理モジュールとオペレーティングシステムとの間でデータを双方向にやり取りするための方法に関連する。本方法は:
- オペレーティングシステムのソフトウェアコンポーネント又はシステム管理モジュールにより、所定の共有メモリ領域でやり取りされるデータを提供するステップであって、所定の共有メモリ領域は、システム管理モジュールのインターフェース及び前記コンピュータシステムの拡張バスによりアドレス(指定)されることが可能である、ステップ;
- データは共有メモリ領域で取り出すのに利用可能であることをシグナリングするステップ;及び
- システム管理モジュール又はオペレーティングシステムのソフトウェアコンポーネントにより、共有メモリ領域を読み込むステップ;を有する。
【0017】
上記の方法ステップは、広い送信帯域幅でシステム管理モジュールを有するコンピュータシステムにおいてデータを双方向にやり取りすることを可能にする。そのような方法は、特に、エージェントを有しない監視システムを実現することに適している。
【0018】
本発明の更なる有利な改善は、従属請求項及び実施例についての以下の詳細な説明において開示される。以下、本発明は、添付図面に関連する様々な実施例を用いて詳細に説明される。様々図面において、同一の又は類似するコンポーネントには、しばしば同じ参照記号が与えられる。
【図面の簡単な説明】
【0019】
【
図1】
図1は本発明の一実施形態によるコンピュータシステムを示す。
【
図2】
図2は共有メモリ領域にアクセスする様子を概略的に示す。
【
図3】
図3は本発明の第1実施形態によるプロトコルスタックを示す。
【
図4】
図4は本発明の第2実施形態によるプロトコルスタックを示す。
【発明を実施するための形態】
【0020】
図1はコンピュータシステム100の構造を概略的に示す。コンピュータシステム100は、システムボードの形式によるシステムコンポーネント110と、ハードディスクドライブの形式による不揮発性大容量メモリ120とを有する。言うまでもなく、コンピュータシステム100は、簡明化のため
図1では図示されていない別のコンポーネントを含んでもよい。
【0021】
例示の形態において、プロセッサ130、メインメモリ140及びチップセット150はシステムコンポーネント110上に配置される。プロセッサ130、メインメモリ140及びチップセット150は、1つ以上のバスシステムを介して互いに接続される。例えば、プロセッサ130、メインメモリ140及びチップセット150は、いわゆるクイックパス相互接続(Quick Path Interconnect:QPI)バスを介して互いに接続される。
【0022】
拡張バス160を介してチップセット150に接続される拡張コンポーネントも、システムコンポーネント110上に配置される。説明される例示的な形態において、拡張バス160は、特に、互いに大部分独立している複数のシリアルポイントトゥポイント接続を有する所謂PCIエクスプレス(PCIe)バスシステムである。
図1に示される例示的な形態では、グラフィックスコンポーネント170、システム管理モジュール180及び大容量メモリコントローラ190は、拡張バス160を介してチップセット150に接続される。
【0023】
説明される例示的な形態では、システム管理モジュール180は、システム管理モジュール180により取得されるデータを保存する内部メモリ182を有する。システム管理モジュール180は、特に、マイクロコントローラ、別のグラフィックスコンポーネント及び/又はネットワークインターエース(これらは、簡明化のため
図1には示されていない)のような別のコンポーネントを含むことも可能である。
【0024】
例示的な形態では、プロセッサ130による実行のための様々なソフトウェアコンポーネントが、大容量メモリ130に保存されている。特に、オペレーティングシステム122、ソフトウェアドライバ124及びアプリケーションソフトウェア126は、大容量メモリ120に保存される。プロセッサ130による実行の最中に、大容量メモリ120に保存されているソフトウェアコンポーネントは、特に、後述の図面を用いて詳細に説明されるように、システム管理モジュール180との双方向通信を設定するために使用される。
【0025】
図2は、コンピュータシステム100のコンポーネントを概略的に示し、コンピュータシステムは、プロセッサ130で実行されるソフトウェアコンポーネント210とシステム管理モジュール180との間のデータのやり取りに係わる。
【0026】
プロセッサ130で動作するホストシステムのソフトウェアコンポーネント210は、例えば、オペレーティングシステム122、ソフトウェアドライバ124、アプリケーションソフトウェア126、又は、拡張バス160にアクセスするために場合によっては提供されるコンピュータシステムのファームウェアのBIOSルーチンの一部分であり、ソフトウェアコンポーネント210は、拡張バス160を介してシステム管理モジュール180のインターフェースコントローラ220にアクセスする。例示の形態では、インターフェースコントローラ220は、現在のPCIエクスプレス規格に従うPCIeインターフェースによる手段である。
【0027】
様々なファンクション(機能部)230、232及び234は、PCIe規格に従ってインターフェースコントローラを介して提供される。例示の形態において、ファンクション230及び232は、詳細には説明されない標準的な機能部である。例えば、ファンクション230は、システム管理モジュール180に存在する別のグラフィックスコンポーネントにアクセスする機能部である。ファンクション232は、例えば、システム管理モジュール180のネットワークコントローラにアクセスする機能部である。
【0028】
説明される例示の形態では、ソフトウェアコンポーネント210とシステム管理モジュール180との間の双方向通信を行うために、第3ファンクション234が使用される。例示の形態では、そのファンクションは、PCIeインターフェースにアクセスするシステム管理モジュール180の修正されたベーシックドライバに基づく。共有メモリ領域240並びに全部で4つのキュー250、252、254及び256は、ドライバにより実現される。例示の形態では、共有メモリ領域240は、内部メモリ182の一部分である。
【0029】
共有メモリ領域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の双方が、互いに独立に(従って同等な権限で)通信を開始することを可能にする。
【0030】
説明される例示の形態において、キュー250、252、254及び256は、特に、命令をやり取りするために使用される。やり取りされるデータ及び命令の厳密なタイプはアプリケーションに特有である。様々なアプリケーションを実現する際に最大限可能な柔軟性を持たせるため、説明される例示の形態ではマルチレイヤプロトコルスタックが使用され、プロトコルスタックは、個々のアプリケーションとシステム管理モジュール180との間でデータをやり取りすることを可能にする。
【0031】
図3は第1実施形態によるプロトコルスタック300を示す。
【0032】
図3は、上から下まで、互いに区別される3つのアドレス空間302、304及び306を示す。第1アドレス空間302は、システム管理モジュール180に関連する。第2アドレス空間304は、オペレーティングシステム122のコアからしか見えず、特に、いわゆるカーネルモードドライバを実行するために使用される。第3アドレス空間306は、オペレーティングシステム122の下で動作するアプリケーションにとってビジブル(見えるもの)である。
【0033】
よりいっそう適切に本発明を理解するために、それ自体は既知であるIPMI KCS規格による実装が
図3を用いて始めに説明され、その実装は
図3では破線を用いて示されている。説明される改善では、後方互換性の理由から、そのような実装は、以下に説明されるように提供される。
【0034】
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へ間接的に送信することが可能である、或いは、後者からデータを取り出すことが可能である。
【0035】
IPMI KCSアダプタ314を利用することは、第1アプリケーション350が、インストールされたIPMI KCSカーネルドライバ312及び使用されるオペレーティングシステム122と概ね独立してシステム管理モジュール180のファンクションにアクセスすることを可能にする。しかしながら、記述されるアプローチは一方向だけであり、使用されるKCSプロトコルに起因する帯域幅の観点から制限される。
【0036】
従って、アクセス能力を改善するため、システム管理モジュール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を構成すること等のような製造者固有の機能を提供するために使用される。
【0037】
共有メモリ領域240は、オペレーティングシステムのコア又は標準的なドライバ(スタンダードドライバ)330の標準的なファンクションを利用することにより、第3アドレス空間306にマッピングされることが可能である。この目的に関し、第2アドレス空間304における追加的又はハードウェア固有のカーネルドライバを実行することは必須でない。むしろ、リナックス(Linux(登録商標))オペレーティングシステムにおけるアプリケーションは、パス/dev/mem/又はカーネルファンクションmmap()を利用して標準として、そのようなメモリ領域240にアクセスすることが可能である。ウィンドウズ(登録商標)オペレーティングシステムでは、標準的なドライバ330が、PCIe拡張コンポーネントの共有メモリ領域240をアドレス(指定)するために使用される。
【0038】
第3アドレス空間306に実装されるアダプタモジュール340は、従って、広い帯域幅でシステム管理モジュール180のデータに直接的にアクセスすることが可能である。この目的のために特殊なカーネルドライバをインストールすることは必須でない。更に、例えば双方向で10MB/s以上のデータ伝送レートが、説明されるアプローチでは可能である。例示の形態では、データは、3つのアプリケーションプログラマブルインターフェース(API)342、344及び346を介して提供され、これらのAPIはインターフェース320のそれぞれ対応する機能部322、324及び326をアドレス(指定)するために使用される。インターフェース320及びアダプタモジュール340は、プロトコルスタック300の共有メモリ240に基づいて双方向トランスポートレイヤを共に提供する。特にプログラミングインターフェース342、344及び346のような様々なプロトコルを提供する論理レイヤは、そのトランスポートレイヤ上に存在する。2つのレイヤに分割することは、対応する機能部とともに論理レイヤを補完することにより、及び/又は、トランスポートレイヤ自体を変更する必要無しにインターフェースをプログラミングすることにより、更なるプロトコルを実装することを可能にする。
【0039】
例示の形態では、上位のプロトコルレイヤを実現する第1アプリケーション350はアダプタモジュール340上に存在する。第1アプリケーション350は、例えば、サーバー管理の様々な基本サービスを提供する所謂デーモンプロセス352を実現する。この目的のため、第1アプリケーション350は、特に、規格によるアダプタモジュール340のアプリケーションプログラミングインターフェース342のファンクションにアクセスする所謂IPMIハンドラモジュール354を有する。従って、既存のアプリケーション350が変更なく使用されることが可能である。
【0040】
例示の形態では、第1アプリケーション350は追加的に第1転送モジュール356を有し、第1転送モジュール356は、特に、広い帯域幅でシステム管理モジュール180にファイルを送信することを可能にする。これを実行するために、アプリケーションプログラミングインターフェース344は、特に、open(),write(),read()又はappend()のようなファンクションを提供し、これらは通常の大容量メモリのファイルにアクセスする際のカーネルのファンクションに対応する。追加的に、他の機能を提供する更に別のソフトウェアモジュール358(ここでは詳細には説明されない)が、アプリケーション350に含まれてもよい。
【0041】
システム管理モジュール180の一部においてインターフェース320が利用可能でない場合、或いは、適切なアダプタモジュール340がない場合、或いは、オペレーティングシステム122の一部において標準のドライバ330が利用可能でない場合、IPMIハンドラモジュール354は、従来のIPMI KCSアダプタ314を介してKCSインターフェース310にアクセスする。この点に関し、IPMIハンドラモジュール354は、例えば、互換性のないシステム管理モジュール180を使用していること等のような不具合の発生を検出し、後方互換性を有するが能力は十分でないKCSインターフェース310により、デーモンプロセス352からの対応するリクエストを迂回させる。
【0042】
個々のサービスを提供するソフトウェアモジュールは、デーモンプロセス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にアクセスすることのみを保証し、従って、これは、上述したように、既に通常のオペレーティングシステムの一部である。
【0043】
第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の拡張された伝送帯域幅により、特に恩恵を受ける。
【0044】
図4は更なる形態による別のプロトコルスタック400を示す。プロトコルスタック400は、
図3によるプロトコルスタック300と実質的に同じコンポーネントを有する。それとの相違に関し、共用メモリ領域240が、第3アドレス空間に直接的にはマッピングされていない。概して、これは、例えば完全に仮想化されたハードウェアシステムに関して問題を生じること無く実現することは不可能である。
【0045】
にもかかわらず、物理的なハードウェアプラットフォームのシステム管理モジュール180とオペレーティングシステム122との間で高速データレートで通信を可能にするために、
図4の形態では、特殊なカーネルドライバモジュール430が提供されており、このモジュールは、例えばESXiのようなオペレーティングシステム122のアドレス空間の中で直接的に動作し、共有メモリ領域240へのアクセス権を有する。
【0046】
データをカーネルドライバ430へ送信することが可能な又は特殊なファンクション呼び出しを利用してそこからデータを取り出すことが可能なアダプタモジュール440は、第3アドレス空間306の内部で動作する。従って、アダプタモジュール440にとって共有メモリ領域240に直接的に書き込みを行う必要はなく、その結果、説明されるプロトコルスタック400は、アプリケーションのためのアドレス空間306から共用メモリ240への直接的なアクセスが許容されない又は希望されないようなオペレーティングシステムに相応しい。
【0047】
オペレーティングシステム122のソフトウェアコンポーネントとシステム管理モジュール180との間のデータ伝送レートを増やすことに加えて、新たなインターフェース320及びアダプタモジュール340、440は、いわゆるエージェント不要の監視システム(agent-less monitoring system)を実現することを可能にする。この目的のため、システム管理モジュール180内で動作するモニタリングプロセスは、広範囲に及ぶデータを自動的にコンパイルし(まとめ上げ)、共用メモリ領域240を介して、オペレーティングシステム122及びその他のシステムコンポーネントにとってそれを利用可能にすることが可能である。そして、オペレーティングシステム122の第3アドレス空間306内で動作するアプリケーション350又は370は、双方向インターフェース320を介して、システム管理モジュール180が対応するデータをコンパイルしたことのアドバイスを受けることが可能になる。この目的には、例えば、システム管理モジュール180によりインタラプトリクエスト(割り込み要求)をトリガすることが適切である。この場合、いわゆるエージェントによる実際の監視を免除する(無しで済ませる)ことが可能である。
【0048】
以上、本発明は、システム管理モジュール180とオペレーティングシステム122のソフトウェアコンポーネント210との間の双方向通信を用いて説明されたが、インターフェース320は、コンピュータシステム100の他のコンポーネントとの通信にも相応しい。特に、いわゆるシステム管理モード(System Management Mode:SMM)で特殊なプログラムコードを実行する所謂システム管理インターフェース(System Management Interface:SMI)ハンドラが、インターフェース320に直接的にアクセスすることが可能である。BIOSソフトウェアとシステム管理モジュール180との間の通信も同様に可能であり、その結果、例えば、システム管理モジュール180が広い帯域幅でBIOSファームウェアをアップデートすることが可能になる。
【符号の説明】
【0049】
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 アダプタモジュール