(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6868087
(24)【登録日】2021年4月13日
(45)【発行日】2021年5月12日
(54)【発明の名称】管理コントローラへの通信チャネルの方法及びシステム
(51)【国際特許分類】
G06F 9/4401 20180101AFI20210426BHJP
G06F 13/14 20060101ALI20210426BHJP
G06F 13/38 20060101ALI20210426BHJP
【FI】
G06F9/4401
G06F13/14 310H
G06F13/38 340Z
【請求項の数】10
【全頁数】18
(21)【出願番号】特願2019-231161(P2019-231161)
(22)【出願日】2019年12月23日
(65)【公開番号】特開2020-187725(P2020-187725A)
(43)【公開日】2020年11月19日
【審査請求日】2019年12月23日
(31)【優先権主張番号】16/411,994
(32)【優先日】2019年5月14日
(33)【優先権主張国】US
(73)【特許権者】
【識別番号】508018934
【氏名又は名称】廣達電腦股▲ふん▼有限公司
【氏名又は名称原語表記】Quanta Computer Inc.
(74)【代理人】
【識別番号】100108833
【弁理士】
【氏名又は名称】早川 裕司
(74)【代理人】
【識別番号】100162156
【弁理士】
【氏名又は名称】村雨 圭介
(72)【発明者】
【氏名】李 愛琴
(72)【発明者】
【氏名】潘 青穗
(72)【発明者】
【氏名】周 新偉
(72)【発明者】
【氏名】杜 偉聰
【審査官】
杉浦 孝光
(56)【参考文献】
【文献】
米国特許出願公開第2014/0215489(US,A1)
【文献】
特開2003−076649(JP,A)
【文献】
米国特許出願公開第2018/0300202(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 9/44−9/445
G06F 13/10−13/14
G06F 13/38−13/42
(57)【特許請求の範囲】
【請求項1】
基本入出力システムのパワーオンルーチン中にセルフテストデータを提供するシステムであって、
独立した電源を有するコントローラであって、システムデータにアクセスするように動作可能なコントローラと、
パワーオンセルフテストルーチンを実行するように動作可能な基本入出力システムと、
前記基本入出力システムと前記コントローラとの間の複数のインタフェースと、を備え、
前記基本入出力システムは、パワーオンセルフテストルーチン中に前記システムデータを前記コントローラから前記基本入出力システムに通信するために、前記複数のインタフェースのうち利用可能な最速のインタフェースを決定するように動作可能であることを特徴とするシステム。
【請求項2】
前記コントローラは、前記基本入出力システムに利用可能なシステムデータが、前記コントローラによってアクセスされるシステムデータと同じであるか否かを判別し、システムデータが同じである場合に、前記基本入出力システムへの前記セルフテストデータの通信を終了するように動作可能であり、
前記基本入出力システムによってアクセス可能なバックアップストレージをさらに備え、前記基本入出力システムによってアクセス可能なシステムデータは、前記バックアップストレージに記憶されていることを特徴とする請求項1に記載のシステム。
【請求項3】
前記複数のインタフェースで利用可能な通信がない場合に、前記基本入出力システムは、前記コントローラへのハードウェアリセット信号をアクティブにするように動作可能であることを特徴とする請求項1に記載のシステム。
【請求項4】
前記最速のインタフェースが利用可能でない場合に、前記基本入出力システムは、前記複数のインタフェースのうち2番目に最速のインタフェース上で前記システムデータを通信するように動作可能であることを特徴とする請求項1に記載のシステム。
【請求項5】
前記コントローラは、ベースボード管理コントローラであり、
前記複数のインタフェースは、インテリジェントプラットフォーム管理インタフェース(IPMI)基準に準拠しており、キーボードコントローラスタイル(KCS)、SMBusシステムインタフェース(SIFF)又はブロック転送のうち少なくとも1つを含み、
前記セルフテストデータは、フィールド交換ユニットデータ、システムインベントリデータ又はシステムイベントログデータのうち少なくとも1つを含むことを特徴とする請求項1に記載のシステム。
【請求項6】
基本入出力システムのパワーオンルーチン中にシステムデータを提供する方法であって、
独立した電源を有するコントローラによって、システムデータを収集する工程と、
基本入出力システムによって、パワーオンセルフテストルーチンを実行する工程と、
前記基本入出力システムと前記コントローラとの間の複数のインタフェースのうち利用可能な最速のインタフェースを決定する工程と、
前記複数のインタフェースのうち1つを選択する工程と、
パワーオンセルフテストルーチン中に、選択されたインタフェースを介して、前記システムデータを前記コントローラから前記基本入出力システムに送信する工程と、
を含むことを特徴とする方法。
【請求項7】
前記基本入出力システムに利用可能なシステムデータが、前記コントローラによってアクセス可能なシステムデータと同じであるか否かを判別する工程であって、前記基本入出力システムによってアクセス可能なシステムデータは、バックアップストレージに記憶されている工程と、
システムデータが同じである場合に、前記基本入出力システムへのシステムデータの送信を終了する工程と、を含むことを特徴とする請求項6に記載の方法。
【請求項8】
前記最速のインタフェースが利用可能でない場合に、前記複数のインタフェースのうち2番目に最速のインタフェース上で前記システムデータを送信する工程と、
前記複数のインタフェースで利用可能な通信がない場合に、前記コントローラへのハードウェアリセット信号をアクティブにする工程と、
を含むことを特徴とする請求項6に記載の方法。
【請求項9】
前記コントローラは、ベースボード管理コントローラであり、
前記複数のインタフェースは、インテリジェントプラットフォーム管理インタフェース(IPMI)基準に準拠しており、キーボードコントローラスタイル(KCS)、SMBusシステムインタフェース(SIFF)又はブロック転送のうち少なくとも1つを含み、
前記システムデータは、フィールド交換ユニットデータ、システムインベントリデータ又はシステムイベントログデータのうち少なくとも1つを含むことを特徴とする請求項6に記載の方法。
【請求項10】
サーバであって、
電力が供給されたときにパワーオンセルフテストルーチンを実行するように動作可能な基本入出力システムと、
独立した電源を有するベースボード管理コントローラであって、システムデータにアクセスするベースボード管理コントローラと、
前記基本入出力システムを前記ベースボード管理コントローラに接続する、独立した管理プロトコルインタフェースバスと、
前記ベースボード管理コントローラと前記基本入出力システムとの間で前記システムデータを通信する複数のインタフェースプロトコルと、を備え、
前記基本入出力システムは、前記システムデータを前記基本入出力システムに通信するために、前記ベースボード管理コントローラ用の複数のインタフェースのうち1つのインタフェースを選択するように動作可能であることを特徴とするサーバ。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、概して、コンピューティングデバイスのパワーアップルーチンに関し、特に、パワーアップルーチン中にBIOSへのシステムデータの可用性を保証する方法に関する。
【背景技術】
【0002】
コンピュータシステム(例えば、サーバのプロセッサコア等)のパワーオンセルフテスト(POST)ルーチン中に、基本入出力システム(BIOS)は、外部コントローラ(例えば、ベースボード管理コントローラ(BMC))から関連するシステムデータの取得を試みる。サーバは、需要の高いアプリケーション(high demand application)(例えば、ネットワークベースのシステムやデータセンタ等)に多く使用されている。コンピューティングアプリケーション用のクラウドの出現により、データセンタの需要が増加している。データセンタは、データを記憶し、リモート接続されるコンピュータデバイスのユーザによってアクセスされるアプリケーションを実行する複数のサーバを有する。典型的なデータセンタは、付随する電源と通信接続とを備えた物理的なシャーシ構造を有する。各ラックは、複数のコンピューティングサーバと、ストレージサーバと、を収容することができる。動作を開始するには、POSTルーチンを使用して各サーバの電源をオンにする必要がある。サーバの電源投入を遅らせると、タスク(例えば、データ処理やアプリケーション実行等)が完了するまでユーザが待つ時間が長くなるので、望ましくない。このような遅延がデータセンタ内の多数のサーバに拡大すると、データセンタの全体的な運用が妨げられる可能性がある。
【0003】
従来のシステムでは、POST期間の間、BIOSは、ベースボード管理コントローラ(BMC)と通信し、システム管理に必要なシステムデータの設定及び取得を試みる。このようなシステムデータは、例えば、フィールド交換ユニット(FRU)情報、イベントログ、又は、システムインベントリを含むことができる。現在のシステムでは、このようなデータは、インテリジェントプラットフォーム管理インタフェース(IPMI)通信プロトコルに従って動作するインタフェースを介して、BMCから取得される。IPMIプロトコル及びBMCは、BIOSが起動しているかどうかにかかわらず、一般的なハードウェア管理及びインベントリ機能を提供する。BMCは、POSTルーチン中に非常にビジーである可能性があるので、BIOSとBMCとの間のインタフェースを正常に初期化できないことがよくある。このような場合、BIOSは、BMCが機能していないと判断するため、POSTルーチン中に、必要なシステムデータを取得することができない。必要なシステムデータが不足していると、システムの動作が妨げられる可能性がある。
【0004】
また、現在のシステムでは、BIOSは、1つのインタフェースプロトコル(例えば、キーボードコントローラスタイル(KCS))のみを選択して、BMCと通信する。BMCとの単一のKCSインタフェースプロトコルは、他のインタフェースプロトコルと比較して、KCSの下ではデータがバイト毎に転送されるので、必要なBIOSデータを取得するために比較的長い時間を必要とする。このようなBIOSデータは、FRUデータ、イベントログデータ、及び、システムインベントリデータを含むことができる。POSTルーチン中のこの遅延は、システムがフリーズしているとユーザが信じ、POSTルーチンの完了を待つことなくユーザがシステムを再起動させる原因となる可能性がある。これにより、システムの動作がさらに遅れることになる。
【0005】
図1は、BIOSが単一のインタフェースを介してBMCからデータを取得する従来のプロセスの一例を示す図である。
図1は、工程10において、システムの電源が投入される(パワーオンされる)と、BIOSが、電源初期化スタートアップ(power initialization start up)ルーチンを開始することを示している。このルーチンは、EFI(Extensible Firmware Interface)前初期化(PEI)、ドライバ実行環境(driver execution environment、DXE)、及び、システム管理モード(SMM)サービスの実行を含む。工程12において、BIOSは、UEFI(Universal Extensible Firmware Interface)ベースのファームウェアでのPEI/DXE/SMMプロセス中に、トークンを用いて、BMC上で何れのインタフェースをチェックするかを決定する。その後、工程14において、BIOSは、BMCが、通信プロトコルインタフェースをサポートしているか否かを判別するまで待機する。BMCがインタフェースプロトコルをサポートしていない場合、工程16において、BIOSは、BMCと通信するインタフェースプロトコルをインストールしない。BMCがインタフェースプロトコルをサポートしている場合、工程18において、BIOSは、インタフェースプロトコルをインストールして、BMCと通信する。現在のシステムでは、BIOSは、1つのインタフェースプロトコル(例えば、キーボードコントローラスタイル(KCS))のみを用いて、BMCと通信することができる。
図1に示すように、インタフェースプロトコルのインストールが失敗すると、BIOSに必要なシステムデータが失われる。
【0006】
また、現在のシステムでは、BIOSは、最初の命令がBMCとの通信に失敗すると、IPMIコマンドを再試行してデータを取得することを試みる。
図2は、BIOSがIPMIコマンドを用いてBMCからフィールド交換ユニット(FRU)情報を取得する現在のBIOSルーチンでのかかるシナリオを示している。この例示的なプロセスでは、工程30において、BMCがオンになる。工程32において、システムの電源がオンになる。工程34において、BIOSは、FRUデータを要求するコマンドをBMCに送信する。工程36において、BIOSは、BMCが当該要求に正常に応答するかどうかを決定するまで待機する。応答がない場合、工程38において、BIOSは、再試行カウンタを設定し、再試行が最大再試行回数(例えば、3回)を超えたかどうかを判別する。再試行カウンタが最大回数より小さい場合、工程34において、BIOSは、FRUデータを要求する他のコマンドをBMCに送信する動作にサイクルバック(cycles back)する。再試行カウンタが最大回数を超えた場合、工程40において、BIOSは、再試行カウンタをクリアして、ルーチンを終了する。この場合、BIOSは、システムデータを取得することができず、システム管理BIOS(SMBIOS)の対応するテーブルは、誤ったデフォルト(incorrect default)になる。工程36において応答がある場合、工程42において、BIOSは、システムデータを正常に取得してSMBIOSテーブルを充填するとともに、再試行カウンタをクリアして、ルーチンを終了させる。再試行可能な回数の関係によって、再試行プロセスは多くの時間を必要とする。
【0007】
よって、従来のシステムは、BIOS POST時間が長すぎるという問題を有している。また、BIOSに転送しなければならないデータ量によってPOSTルーチン中にシステムが停止する。或いは、BMCがビジー状態で即時に応答できないために、BIOSが極めて重要なデータ(例えば、FRUデータ等)をBMCから正常に取得することができない場合には、システム管理BIOS(SMBIOS)データが空(empty)になるか、既に記憶されたデフォルトデータになる。よって、システムは正確な管理データを得ることができず、運用に支障をきたす可能性がある。
【0008】
よって、起動中にBMCからBIOSにデータを通信するための複数のインタフェースオプションを提供するシステムが必要とされている。さらに、データをBMCからBIOSに送信するための高速チャネルを設けたシステムが必要とされている。また、データが既にBIOSで利用可能な場合に、BMCからのデータの取得をバイパスするシステムが必要とされている。
【発明の概要】
【発明が解決しようとする課題】
【0009】
本発明は、基本入出力システムのパワーオンルーチン中にシステムデータを提供するシステムを提供する。
【課題を解決するための手段】
【0010】
開示される一例は、基本入出力システムのパワーオンルーチン中にシステムデータを提供するシステムである。システムは、独立した電源を有するコントローラを含む。コントローラは、システムデータにアクセスするように動作可能である。基本入出力システムは、パワーオンセルフテストルーチンを実行するように動作可能である。システムは、基本入出力システムとコントローラとの間の複数のインタフェースを含む。基本入出力システムは、パワーオンセルフテストルーチン中にシステムデータをコントローラから基本入出力システムに通信するために、複数のインタフェースのうち利用可能な最速のインタフェースを決定するように動作可能である。
【0011】
開示される他の例は、基本入出力システムのパワーオンセルフテストルーチン中にシステムデータを提供する方法である。独立した電源から電力が供給されるコントローラは、システムデータにアクセスするように動作可能である。パワーオンセルフテストルーチンは、基本入出力システムを介して実行される。基本入出力システムとコントローラとの間の複数のインタフェースのうち最速で利用可能なインタフェースが決定される。複数のインタフェースのうち1つが選択される。システムデータは、パワーオンセルフテストルーチン中に、選択されたインタフェースを介して、コントローラから基本入出力システムに送られる。
【0012】
開示される他の例は、電力が供給されたときにパワーオンセルフテストルーチンを実行するように動作可能な基本入出力システムを含むサーバである。サーバは、独立した電源を有するベースボード管理コントローラを含む。ベースボード管理コントローラは、システムデータにアクセスするように動作可能である。独立した管理プロトコルインタフェースバスは、基本入出力システムをベースボード管理コントローラに接続する。システムは、ベースボード管理コントローラと基本入出力システムとの間でシステムデータを通信するための複数のインタフェースプロトコルを含む。基本入出力システムは、システムデータを基本入出力システムに通信するために、ベースボード管理コントローラ用の複数のインタフェースのうち1つのインタフェースを選択するように動作可能である。
【0013】
上記の概要は、本発明のあらゆる実施形態又はあらゆる態様を表すことを意図していない。むしろ、上記の概要は、本明細書に記載されたいくつかの新規な態様及び特徴の例を単に提供するに過ぎない。上記の特徴及び利点と他の特徴及び利点とは、添付の図面及び特許請求の範囲と併せて、本発明を実施するための代表的な実施形態及びモードの以下の詳細な説明から容易に明らかになるであろう。
【発明の効果】
【0014】
本発明のコンピューティングデバイスのパワーオンルーチンによれば、パワーオンルーチン中にBIOSへのシステムデータの可用性を保証することができる。
【0015】
本開示は、添付の図面を参照して、例示的な実施形態の以下の説明からより良く理解されるであろう。
【図面の簡単な説明】
【0016】
【
図1】単一のインタフェースを介してBMCからデータを取得するBIOSの従来のプロセスを示す図である。
【
図2】BMCからのFRUデータの要求が失敗した場合に生じる一連の再試行の従来のフローチャートである。
【
図3A】BIOSとBMCとの間の複数のインタフェースを可能にするIPMIサブシステムのブロック図である。
【
図3B】BIOSとBMCとの間の複数のインタフェースを可能にするIPMIサブシステムのブロック図である。
【
図3C】
図3A〜3BのBIOSを有するIPMIサブシステムに接続されたプロセッサマザーボードのブロック図である。
【
図4】
図3A〜3Bに示す例示的なシステムにおいて、複数のインタフェースを介してBIOSとBMCとの間の通信を可能にするルーチンのフローチャートである。
【
図5】BIOSが、BMCとの通信をバイパスして必要なシステムデータを取得するのを可能にする起動ルーチンのフローチャートである。
【
図6】本発明の様々な実施形態による例示的なコンピュータシステムを示す図である。
【
図7】本発明の様々な実施形態による例示的なコンピュータシステムを示す図である。
【発明を実施するための形態】
【0017】
本発明は、様々な変更及び代替形態を受け入れることができる。いくつかの代表的な実施形態は、例として図面に示されており、本明細書で詳細に説明される。しかし、本発明は、開示された特定の形態に限定されることを意図していないことを理解されたい。むしろ、本発明は、添付の特許請求の範囲によって定義される本発明の趣旨及び範囲に含まれる全ての変更、均等物及び代替物を包含する。
【0018】
本発明は、多くの異なる形態で具体化することができる。代表的な実施形態を図面に示し、本明細書で詳細に説明する。本開示は、本発明の原理の一例又は例示であり、本発明の広い態様を、図示した実施形態に限定することを意図していない。その範囲において、例えば、要約、概要及び詳細な説明に開示されているが、特許請求の範囲に明示的に記載されていない要素及び限定は、単独で又は集合的に、黙示、推論又は他の方法によって特許請求の範囲に組み込まれてはならない。本発明を詳細に説明する目的のために、特に否定しない限り、単数形は複数形を含み、その逆もまた同様である。「含む」という用語は、「制限なしに含む」ことを意味している。さらに、例えば、「約」、「殆ど」、「実質的に」、「およそ」等の近似語は、本明細書では、例えば、「〜に」、「〜に近い」、「大体」、「〜の3〜5%の範囲内」、「許容される製造公差内」、又は、これらの任意の論理的組み合わせを意味するものとして用いることができる。
【0019】
本発明は、POST時間を加速させて、BIOSとBMCとの間の通信の失敗を回避するためのメカニズムを提供する。これにより、このメカニズムは、POSTルーチン中に発生するBMCハングアップ(hang-up)による遅延を回避する。開示されるシステムは、BIOSとBMCとの間のインテリジェントプラットフォーム管理インタフェース(IPMI)システムの利用可能な全てのインタフェースから最速のインタフェースを選択する。また、システムは、必要なシステムデータが既に記憶されているかどうかをBISに判別させることができる。よって、BMCがシステムデータをチェックし、システムデータが変更されていない場合、BIOSは、BMCとそれ以上通信することなく、バックアップストレージからシステムデータを直接取得することができる。このプロセスによって、POST時間が大幅に減少する。また、BMCに障害が発生した場合、BIOSは、ハードウェアピンを介してBMCリセットをトリガすることができる。
【0020】
図3A〜
図3Bは、BIOSとBMCとの間の複数の通信インタフェースプロトコルのうち1つを選択して、POSTルーチンを実行するためにシステムデータを効率的に通信することを可能にするIPMIシステム100のブロック図である。この例では、IPMIシステム100は、コントローラ(例えば、ベースボード管理コントローラ)によって管理される複数のプロセッサ及びコンポーネントを含むサーバの一部である。システムデータは、FRU(field replacement unit)データと、イベントログ(event log)データと、システムインベントリ(system inventory)データと、を含むことができる。IPMIシステム100は、マザーボード110と、メモリボード112と、プロセッサボード114と、冗長電源ボード116と、シャーシボード118と、を含む。IPMIシステム100は、プラットフォームコントローラハブ(PCH)チップに記憶され得るBIOS120を含むプロセッサマザーボード300上のプロセッサシステム等の他のコンポーネントをサポートするシステムの管理を可能にする。マザーボード110は、ベースボード管理コントローラ(BMC)130と、フィールド交換ユニット(FRU)メモリユニット140と、を含む。FRUメモリユニット140は、システム100用のFRUデータを記憶するメモリボード112及びプロセッサボード114上のスタティックメモリから構成されている。BMC130は、メインコントローラとして機能し、異なるモジュール上に分布する他のサテライト管理コントローラと通信することができる。例えば、システム100は、シャーシ管理コントローラ132と、ネットワークコントローラ134と、シリアルコントローラ136と、を含み、これらの各々は、BMC130と通信する。
【0021】
FRUメモリユニット140は、メモリボード112上のEEPROM142と、プロセッサボード114上のEEPROM144と、を含む。FRUメモリユニット140は、システム100内の交換可能な全てのコンポーネントのFRUデータを含む。FRUデータは、各ボード112,114上のEEPROM142,144に記憶されている。BIOS120は、システムイベントログ及びBMC130に渡されるシステムインベントリに関するデータを収集する。
【0022】
また、BMC130は、IPMIシステムインタフェース150と、一連のセンサ及び制御回路152と、不揮発性ストレージ154と、に接続されている。センサ及び制御回路152は、電圧センサ、温度センサ、ファン制御及び電力調整制御を介して、システム機能の監視及び調整を可能にする。不揮発性ストレージ154は、例えば、システムイベントログの結果、センサデータレコード、及び、BMC130によって使用される他のデータ等の特定のシステムデータを記憶する。BMC130は、システムデータを管理する。よって、他のプロセッサ(例えば、BIOSに関連するプロセッサ等)が故障しても、このシステムデータにアクセスすることができる。
【0023】
システムバス160は、BIOS120を、BMC130、ネットワークコントローラ134及びシリアルコントローラ136に接続する。PCI管理バス162は、BMC130をPCIデバイスに接続する。インテリジェントプラットフォーム管理インタフェースバス(IPMB)164は、BMC130をシャーシ管理コントローラ132及び冗長電源ボード116に接続する。プライベート管理バス166は、BMC130をFRUメモリユニット140に接続する。
【0024】
図3Cは、プロセッサ302,304を含むプロセッサマザーボード300を示す図である。プラットフォーム制御ハブ(PCH)310は、データを、プロセッサマザーボード300のコンポーネントにルーティングすることを可能にする。この例において、BIOS120は、PCH310の一部である。
図3AのBMC130は、この例では、DRAM及びフラッシュメモリの両方を含む元のストレージデバイス320にアクセスする。この例において、BIOS120は、DRAM及びフラッシュメモリの両方を含むバックアップストレージデバイス322へのアクセスを有する。
【0025】
例示的なシステム100では、BMC130は、元のストレージデバイス320内のデータ(例えば、FRUデータ等)、又は、他のシステムデータ(例えば、生成されたシステムイベントログ及びシステムインベントリ等)を、バックアップストレージ322内のシステムデータと照合する。バックアップストレージ322内のシステムデータが、BMC130によって管理されているシステムデータと同じである場合、BMC130は、バックアップストレージ322に記憶されたデータが不可欠であり、BIOS120によって使用され得ることをBIOS120に通信する。この場合、BIOS120は、バックアップストレージ322からのデータに直接アクセスすることができ、BMC130に対してデータを要求するコマンドを送信する必要がない。
【0026】
元のストレージ320の不揮発性メモリ内のデータが、バックアップストレージ322に記憶されたデータと異なる場合、BIOS120は、BMC130からのデータを要求する必要がある。この場合、システムは、システムデータをBIOS120に送信するために、複数のインタフェースプロトコルのうち一つを選択する。BMC130に障害が発生した場合、BIOS120は、プロセッサチップセットに接続されたBMC130のハードウェアピンを介して信号を送信することによって、BMCリセットをトリガすることができる。リセット信号が依然としてBMC130をウェイク(wake)できない場合でも、BIOS120は、依然としてシステムデータをバックアップストレージ322のフラッシュメモリから取得することができ、BMC130に依存する必要がない。或いは、BIOS120は、POSTルーチン中にシステムデータが利用できないことを示すメッセージを表示することができる。
【0027】
システム100は、BMC130とBIOS120との間の通信で協働するいくつかの異なるインタフェースのうち1つを選択することを可能にする。この例において、インタフェースは、キーボードコントローラスタイル(KCS)インタフェースと、SMBusシステムインタフェース(SSIF)と、ブロック転送インタフェースと、を含むことができる。この例において、SSIFインタフェースは、大きなデータ(例えば、システムイベントログデータやシステムインベントリデータ等)を処理するので、最速のインタフェースである。この例において、KCSインタフェースは、データカウントの少ないデータ(例えば、セルフテスト結果や他の単純なコマンド等)の転送に使用される可能性があるので、SSIFインタフェースよりも遅い。電源がオンになると、BIOS120は、何れのインタフェースがBIOS120とBMC130との間にインストールされるかをチェックする。次に、BIOS120は、インストールされたインタフェースから最速のインタフェースを選択して、BMC130と通信する。数回の再試行の後に、インタフェースがビジーであり、BMC130からの応答を得ることができない場合、BIOS120は、BMC130と通信するために2番目に早いインタフェースに切り換え、BMC130と通信するために、利用可能な異なるインタフェースの各々の再試行を継続する。
【0028】
図4は、
図3A〜
図3CのBIOS120からBMC130にデータをロードするプロセスのフローチャートである。工程400において、BMC130に電源が投入される。工程402において、BMC130は、アクセス可能なシステムデータをシステム内の任意のストレージ(例えば、ストレージ320,322等)にコピーする。次に、工程404において、
図3AのBIOS120に電源が投入され、パワーオンセルフテストルーチンを開始する。工程406において、BIOS120は、最速のインタフェース(例えば、SSIFインタフェース)をチェックする。最速のインタフェースが利用可能である場合、工程408において、BIOS120は、最初にBMC130からのデータを通信するために、最高速度のインタフェース(例えば、SSIFインタフェースプロトコル)をインストールする。
【0029】
次に、工程410において、BIOS120は、2番目に高速なインタフェース(この例では、KCSインタフェース)をチェックする。2番目のインタフェースが利用可能である場合、工程412において、BIOS120は、2番目に高速なインタフェースを、BMC130との2番目の通信インタフェースとしてインストールする。
【0030】
次いで、工程414において、BIOS120は、3番目に高速なインタフェース(この例では、ブロック転送(BT)インタフェース)をチェックする。インタフェースが利用可能である場合、工程416において、BIOS120は、3番目に高速なインタフェースを、BMC130との3番目の通信インタフェースとしてインストールする。
【0031】
次に、工程418において、BIOS120は、次に最速のインタフェースをチェックする。インタフェースが利用可能である場合、工程420において、BIOS120は、次に最速のインタフェースを、BMC130との次の通信インタフェースとしてインストールする。
【0032】
その後、プロセスはこの工程を繰り返して、他の利用可能な通信インタフェースを決定し、これにより、BIOS120とBMC130との間で利用可能な最速の通信インタフェースを使用する。
【0033】
よって、利用可能な最速のインタフェースがSSIFインタフェースである場合、BMC130は、データ(例えば、FRUデータ等)を、SSIFインタフェースを介してBIOS120に通信する。SSIFインタフェースが利用できない場合、BMC130は、次に速い通信インタフェースを介して、データをBIOS120に通信する。この例において、KCSは、次に速い通信インタフェースである。
【0034】
図5は、
図3A〜
図3BのBMC130からセルフテストデータをインストールする必要をバイパスして、BMC障害からのリセットが必要かどうかを判別するルーチンのフローチャートである。工程500において、
図3A〜
図3CのBIOS120は、先ず、
図4のプロセスに基づいて、インタフェースプロトコルがBMC130によって正常にインストールされたか否かを判別する。インタフェースプロトコルが正常にインストールされると、POSTルーチン中に、BIOS120は、BMC130へのコマンドを介してチェック結果を要求する。工程502において、BMC130は、BIOS120によってアクセスされるバックアップストレージ322内のシステムデータが、BMC130によってアクセスされるシステムデータと同じであるか否かを判別する。データが同じである場合、工程504において、BIOS120は、バックアップストレージ322からシステムデータを直接取得する。データが同じでない場合、工程506において、BIOS120は、
図4のルーチンで決定されるように、利用可能な最速のインタフェースを介してBMC130からデータを取得する。
【0035】
工程500において、インタフェースプロトコルが正常にインストールされない場合、工程508において、BIOS120は、BMC130が恐らく失敗したと判別する。次に、工程510において、BIOS120は、BMC130のハードウェアピン上でリセット信号をトリガする。BMC130がリセット信号に応答する場合、工程500において、BIOS120は、ループバック(loop back)して、プロトコルが現在正常にインストールされているかどうかを判別する。BMC130がリセット信号に応答しない場合、工程512において、BIOS120は、バックアップストレージ322から必要なデータを直接取得する。この場合、バックアップストレージ322には、BMC130からの現在のシステムデータが存在しないので、システムデータが古くなっている可能性がある。
【0036】
図4及び
図5のフローチャートは、BIOS POSTルーチンに必要なデータの通信をストリーミングするプロセスに用いられる例示的な機械可読命令を示している。この例では、機械可読命令は、(a)プロセッサ、(b)コントローラ、及び/又は、(c)1つ以上の他の適切な処理デバイスによって実行されるアルゴリズムを含む。アルゴリズムは、有形媒体(例えば、フラッシュメモリ、CD−ROM、フロッピー(登録商標)ディスク、ハードドライブ、デジタルビデオ(汎用)ディスク(DVD)又は他のメモリデバイス等)に記憶されたソフトウェアで具現化することができる。しかし、当業者であれば理解できるように、アルゴリズム全体及び/又はその一部は、代替的に、プロセッサ以外のデバイスによって実行され、及び/又は、周知の方法でファームウェア又は専用のハードウェアで実施することができる(例えば、特定用途向け集積回路(ASIC)、プログラマブルロジックデバイス(PLD)、フィールドプログラマブルロジックデバイス(FPLD)、フィールドプログラマブルゲートアレイ(FPGA)、ディスクリートロジック等によって実行され得る)。例えば、インタフェースの何れか又は全てのコンポーネントは、ソフトウェア、ハードウェア、及び/又は、ファームウェアによって実装することができる。また、フローチャートによって表される機械可読命令の一部又は全ては、手動で実施されてもよい。さらに、例示的なアルゴリズムは、
図4〜
図5に示すフローチャートを参照して説明されているが、当業者であれば理解できるように、例示的な機械可読命令を実行する他の多くの方法が代替的に用いられてもよい。例えば、ブロックの実行順序は変更されてもよいし、及び/又は、説明したブロックのいくつかは変更、削除又は組み合わされてもよい。
【0037】
図6は、例示的なコンピューティングシステム600を示す図であり、コンピューティングシステムのコンポーネントは、バス602を用いて互いに電気通信する。システム600は、処理ユニット(CPU又はプロセッサ)630と、システムバス602と、を有する。システムバス602は、システムメモリ604(例えば、リードオンリメモリ(ROM)606及びランダムアクセスメモリ(RAM)608)を含む各種システムコンポーネントをプロセッサ630に接続する。システム600は、高速メモリのキャッシュを有し、キャッシュは、プロセッサ630に直接接続され、プロセッサ630に隣接して接続され、又は、プロセッサ630の一部として統合されてもよい。システム600は、プロセッサ630による高速アクセスのために、メモリ604及び/又はストレージデバイス612からキャッシュ628にデータをコピーしてもよい。この方法において、キャッシュは、プロセッサ630がデータを待つ間に遅延が生じるのを防止するパフォーマンス向上を提供する。これらのモジュール及び他のモジュールは、様々な動作を制御するためにプロセッサ630を制御するように構成されている。別のシステムメモリ604も使用可能である。メモリ604は、異なるパフォーマンス特性を有する複数の異なるタイプのメモリを含むことができる。プロセッサ630は、任意の汎用プロセッサ、及び、例えば、ストレージデバイス612に記憶された第1モジュール614、第2モジュール616及び第3モジュール618等のハードウェアモジュール又はソフトウェアモジュールを含むことができる。ハードウェアモジュール及びソフトウェアモジュールは、プロセッサ630、及び、ソフトウェア命令が実際のプロセッサ設計に組み込まれる専用プロセッサを制御するように構成されている。プロセッサ630は、実質的に、複数のコア又はプロセッサ、バス、メモリコントローラ、キャッシュ等を含む完全に独立したコンピューティングシステムであってもよい。マルチコアプロセッサは、対称又は非対称であってもよい。
【0038】
ユーザがコンピューティングシステム600と対話するのを可能にするために、入力デバイス620が入力メカニズムとして提供される。入力デバイス620は、例えば、スピーチ用のマイク、ジェスチャー又はグラフィック入力用のタッチセンシティブスクリーン、キーボード、マウス、モーション入力等を含むことができる。出力デバイス622は、従来技術で知られる1つ以上の出力メカニズムである。場合によっては、マルチモーダルシステムは、ユーザがシステム600と通信するために、複数のタイプの入力を提供し得る。通信インタフェース624は、ユーザ入力及びシステム出力を支配(govern)及び管理することができる。
【0039】
ストレージデバイス612は、コンピュータによってアクセス可能なデータを記憶するための不揮発性メモリとすることができる。ストレージデバイス612は、磁気カセット、フラッシュメモリカード、ソリッドステートメモリデバイス、デジタル多用途ディスク(DVD)、カートリッジ、ランダムアクセスメモリ(RAM)608、リードオンリメモリ(ROM)606及びこれらの組み合わせであってもよい。
【0040】
コントローラ610は、例えばベースボード管理コントローラ(BMC)等のように、システム600上の専用のマイクロコントローラ又はプロセッサであってもよい。場合によっては、コントローラ610は、インテリジェントプラットフォーム管理インタフェース(IPMI)の一部であってもよい。さらに、場合によっては、コントローラ610は、システム600のマザーボード又はメイン回路基板に組み込まれてもよい。コントローラ610は、システム管理ソフトウェアとプラットフォームハードウェアとの間のインタフェースを管理することができる。コントローラ610は、以下に説明するように、例えばコントローラ又は周辺コンポーネント等の各種システムデバイスやコンポーネント(内部、及び/又は、外部)と通信することもできる。
【0041】
コントローラ610は、通知、警告及び/又はイベントに対する特定の応答を生成し、リモートデバイス又はコンポーネント(例えば、電子メールメッセージ、ネットワークメッセージ等)と通信し、自動ハードウェア回復プロセス用等の命令又はコマンド等を生成することができる。管理者は、以下に説明するように、コントローラ610と遠隔通信して、特定のハードウェア回復プロセス又は動作を開始又は実行することもできる。
【0042】
コントローラ610は、コントローラ610が受信したイベント、警告及び通知を管理して維持するシステムイベントログコントローラ及び/又はストレージを含むこともできる。例えば、コントローラ610又はシステムイベントログコントローラは、1つ以上のデバイス及びコンポーネントから警告又は通知を受信し、当該警告又は通知をシステムイベントログストレージコンポーネントに保持することができる。
【0043】
フラッシュメモリ632は、ストレージ及び/又はデータ転送のためにシステム600に使用され得る電子不揮発性コンピュータストレージ媒体又はチップであってもよい。フラッシュメモリ632は、電気的に消去及び/又は再プログラムすることができる。フラッシュメモリ632は、例えば、消去可能なプログラマブルROM(EPROM)、電気的に消去可能なプログラマブルROM(EEPROM)、ROM、NVRAM、又は、相補型MOS(complementary metal−oxide semiconductor:CMOS)を含むことができる。フラッシュメモリ632は、システム300が起動する場合に、システム600で実行されるファームウェア634を、ファームウェア634に指定された構成のセットと共に記憶することができる。フラッシュメモリ632は、ファームウェア634によって用いられる構成を記憶することもできる。
【0044】
ファームウェア634は、基本入出力システム(BIOS)又は等価物(例えば、エクステンシブルファームウェアインタフェース(EFI)又はユニファイドエクステンシブルファームウェアインタフェース(UEFI))を含むことができる。ファームウェア634は、システム600が起動される毎にシーケンスプログラムとしてロードされ実行され得る。ファームウェア634は、構成のセットに基づいて、システム600に存在するハードウェアを識別、初期化及びテストすることができる。ファームウェア634は、システム600上でセルフテスト(例えば、パワーオンセルフテスト(POST))を実行することができる。このセルフテストは、各種ハードウェアコンポーネント(例えば、ハードディスクドライブ、光学読み取りデバイス、冷却デバイス、メモリモジュール、拡張カード等)の機能をテストすることができる。ファームウェア634は、オペレーティングシステム(OS)を記憶するために、メモリ604、ROM606、RAM608及び/又はストレージデバイス612内の領域をアドレス指定して割り当てることができる。ファームウェア634は、ブートローダ及び/又はOSをロードし、システム600の制御をOSに渡すことができる。
【0045】
システム600のファームウェア634は、ファームウェア634がシステム600内の各種ハードウェアコンポーネントをどのように制御するかを定義するファームウェア構成を含むことができる。ファームウェア構成は、システム内の各種ハードウェアコンポーネントが起動される順序を決定することができる。ファームウェア634は、UEFI等のインタフェースを提供することができ、ファームウェアのデフォルト構成におけるパラメータとは異なる様々な異なるパラメータを設定することができる。例えば、ユーザ(例えば、管理者)は、ファームウェア634を用いて、クロック及びバス速度を指定し、どの周辺機器がシステム600に接続されているかを定義し、動作パラメータ(例えば、ファン速度及びCPUの温度限界)の閾値を設定し、システム600の全体的なパフォーマンス及び電力使用量に影響を及ぼす様々な他のパラメータを提供することができる。ファームウェア634は、フラッシュメモリ632に記憶されているように示されているが、当業者であれば、ファームウェア634が、例えばメモリ604又はROM606等の他のメモリコンポーネントに記憶され得ることを容易に認識するであろう。
【0046】
システム600は1つ以上のセンサ626を含むことができる。1つ以上のセンサ626は、例えば、1つ以上の温度センサ、熱(thermal)センサ、酸素センサ、化学センサ、ノイズセンサ、熱(heat)センサ、電流センサ、電圧検出器、気流センサ、流量センサ、赤外線温度計、熱流量センサ、温度計、高温計等を含むことができる。1つ以上のセンサ626は、例えば、バス602を介して、プロセッサ、キャッシュ628、フラッシュメモリ632、通信インタフェース624、メモリ604、ROM606、RAM608、コントローラ610及びストレージデバイス612と通信することができる。1つ以上のセンサ626は、1つ以上の異なる手段(例えば、I
2C、汎用出力(general purpose output:GPO)等)を介して、システム内の他のコンポーネントと通信することもできる。システム600上の異なるタイプのセンサ(例えば、センサ626)は、パラメータ(例えば、冷却ファン速度、電源状態、オペレーティングシステム(OS)状態、ハードウェア状態等)をコントローラ610に報告してもよい。システム600は、ディスプレイ636を用いて、コントローラ610によって実行されるアプリケーションに関連するグラフィックスを提供することができる。
【0047】
図7は、説明した方法又は動作を実行し、並びに、グラフィカルユーザインタフェース(GUI)の生成及び表示に使用され得るチップセット構成を有する例示的なコンピュータシステム700を示す図である。コンピュータシステム700は、本発明の技術を実施するのに使用可能なコンピュータハードウェア、ソフトウェア及びファームウェアを含むことができる。システム700は、識別された計算を実行するように構成されたソフトウェア、ファームウェア及びハードウェアを実行することができる物理的及び/又は論理的に異なる様々なリソースを表すプロセッサ710を含むことができる。プロセッサ710は、プロセッサ710との入出力を制御することができるチップセット702と通信することができる。この例では、チップセット702は、情報を出力デバイス714(例えば、ディスプレイ)に出力し、ストレージデバイス716(例えば、磁気媒体、固体媒体を含む)と情報を読み書きすることができる。チップセット702は、RAM718からデータを読み取り、RAM718にデータを書き込むこともできる。様々なユーザインタフェースコンポーネント706とインタフェースするためのブリッジ704を、チップセット702とインタフェースするために設けることができる。ユーザインタフェースコンポーネント706は、キーボード、マイク、タッチ検出及び処理回路、並びに、ポインティングデバイス(マウス等)を含むことができる。一般に、システム700への入力は、機械生成及び/又は人間生成の様々なソースの何れかからのものとすることができる。
【0048】
チップセット702は、異なる物理インタフェースを有する1つ以上の通信インタフェース708とインタフェースすることもできる。かかる通信インタフェースは、有線及び無線のローカルエリアネットワーク、ブロードバンドワイヤレスネットワーク、並びに、パーソナルエリアネットワークのためのインタフェースを含むことができる。さらに、機械は、ユーザインタフェースコンポーネント706を介してユーザからの入力を受信し、プロセッサ710を用いてこれらの入力を解釈することによって、例えばブラウジング機能等の適切な機能を実行することができる。
【0049】
また、チップセット702は、電源が投入された(パワーオンされた)ときに、コンピュータシステム700によって実行され得るファームウェア712と通信することができる。ファームウェア712は、ファームウェア構成のセットに基づいて、コンピュータシステム700に存在するハードウェアを識別、初期化及びテストすることができる。ファームウェア712は、システム700上でセルフテスト(例えば、POST)を実行することができる。セルフテストは、各種ハードウェアコンポーネント702〜710の機能をテストすることができる。ファームウェア712は、OSを記憶するために、メモリ718内の領域をアドレス指定し、割り当てることができる。ファームウェア712は、ブートローダ及び/又はOSをロードし、システム700の制御をOSに渡すことができる。場合によっては、ファームウェア712は、ハードウェアコンポーネント702〜710,714〜718と通信することができる。ここで、ファームウェア712は、チップセット702を介して、及び/又は、1つ以上の他のコンポーネントを介して、ハードウェアコンポーネント702〜710,714〜718と通信することができる。場合によっては、ファームウェア712は、ハードウェアコンポーネント702〜710,714〜718と直接通信することができる。
【0050】
例示的なシステム600(
図6),700は、より高い処理能力を提供するために、2つ以上のプロセッサ(例えば、630,710)を有することができ、又は、ネットワーク接続されたコンピューティングデバイスのグループ若しくはクラスタの一部であってもよいことが理解されるであろう。
【0051】
本願で使用される「コンポーネント」、「モジュール」、「システム」等の用語は、一般に、コンピュータ関連エンティティ、即ちハードウェア(例えば、回路)、ハードウェアとソフトウェアとの組み合わせ、ソフトウェア、又は、1つ以上の特定の機能を有する操作可能な機器に関連するエンティティの何れかを指す。例えば、コンポーネントは、プロセッサ(例えば、デジタル信号プロセッサ等)で実行されるプロセス、プロセッサ、オブジェクト、実行可能ファイル、実行スレッド、プログラム、及び/又は、コンピュータとすることができるが、これらに限定されない。例として、コントローラで実行されるアプリケーション及びコントローラの両方がコンポーネントとなることができる。1つ以上のコンポーネントがプロセス及び/又は実行スレッドに存在してもよく、コンポーネントが1つのコンピュータ上に位置してもよく、及び/又は、2つ以上のコンピュータ間に分布してもよい。さらに、「デバイス」は、特別に設計されたハードウェア、ハードウェアが特定の機能を実行するのを可能にするソフトウェアの実行によって特殊化された汎用ハードウェア、コンピュータ可読媒体に記憶されたソフトウェア、又は、これらの組み合わせの形態をとることができる。
【0052】
本明細書で用いられる用語は、特定の実施形態を説明することを目的としており、本発明を限定することを意図していない。本明細書で使用されているように、「一」、「1つの」、「この」という単数形は、文脈が他のことを明確に示さない限り、複数形も含むことが意図されている。さらに、「含む」、「有する」やこれらの変化形が、詳細な説明及び/又は特許請求の範囲に用いられており、このような用語の意味は、「備える」という用語と同様に包括的であることを意図している。
【0053】
特に定義されない限り、本明細書で使用される用語(技術用語及び科学用語を含む)は、当業者によって一般に理解されるのと同じ意味を有する。さらに、一般的に使用される辞書において定義されるような用語は、関連技術の文脈におけるこれらの意味と一致する意味を有するものとして解釈されるべきであり、本明細書において明示的に定義されない限り、理想化された意味又は過度に形式的な意味で解釈されない。
【0054】
本発明の様々な実施形態が説明されているが、これらは、単なる例示であって、これらに限定されないことを理解されたい。本発明の実施形態に基づく様々な変更は、本発明の趣旨及び範囲を逸脱しない状況下で行うことができる。よって、本発明の広さや範囲は、上述した任意の実施形態によって限定されるべきではない。むしろ、本発明の範囲は、以下の特許請求の範囲及びこれらの均等物に従って定義されるべきである。
【符号の説明】
【0055】
10〜18,30〜42,400〜420,500〜512…工程
100…IPMIシステム
110…マザーボード
112…メモリボード
114,300…プロセッサボード
116…冗長電源ボード
118…シャーシボード
120…BIOS
130…ベースボード管理コントローラ
132…シャーシ管理コントローラ
134…ネットワークコントローラ
136…シリアルコントローラ
140…フィールド交換ユニットメモリユニット
142〜144…EEPROM
150…IPMIシステムインタフェース
152…制御回路
154…不揮発性ストレージ
160…システムバス
162…PCI管理バス
164…インテリジェントプラットフォーム管理インタフェースバス
166…プライベート管理バス
302〜304,630,710…プロセッサ
310…プラットフォーム制御ハブ
320…元のストレージデバイス
322…バックアップストレージデバイス
600…コンピューティングシステム
602…バス
604…メモリ
606…リードオンリメモリ
608…ランダムアクセスメモリ
610…コントローラ
612…ストレージデバイス
614…第1モジュール
616…第2モジュール
618…第3モジュール
620…入力デバイス
622,714…出力デバイス
624…通信インタフェース
626…センサ
628…キャッシュ
632…フラッシュメモリ
634…ファームウェア
636…ディスプレイ
700…コンピュータシステム
702…チップセット
704…ブリッジ
706…ユーザインタフェースコンポーネント
708…通信インタフェース
712…ファームウェア
716…ストレージデバイス
718…RAM