(57)【特許請求の範囲】
【請求項１】
電子コンポーネントと、
ベースボード管理コントローラ（ＢＭＣ）と、
前記電子コンポーネントに接続された第１のインターフェースおよび前記ＢＭＣに接続された第２のインターフェースを含み、前記電子コンポーネントごとに設計されたデバイス特定ファームウェアと、前記電子コンポ―ネントの動作を監視し、前記電子コンポーネントに更新を提供するプロセッサコアおよびメモリを含むデバイスハードウェアエージェント
を含むサーバ。
【請求項２】
前記電子コンポーネントはネットワークインターフェースカード（ＮＩＣ）、ホストバスアダプタ（ＨＢＡ）、コントローラおよび中央演算ユニット（ＣＰＵ）の内の１つである
請求項１に記載のサーバ。
【請求項３】
前記デバイスハードウェアエージェントは、前記電子コンポーネントのインベントリ、へルスステータスおよび統計に関する情報を集め、前記情報をＢＭＣに提供する
請求項１に記載のサーバ。
【請求項４】
前記第２のインターフェースは、前記ＢＭＣと前記デバイスハードウェアエージェントとの間の帯域外通信路を提供する
請求項１〜３のいずれかに記載のサーバ。
【請求項５】
前記第１のインターフェースは、ジョイントテストアクショングループ（ＪＴＡＧ）インターフェースである
請求項１〜４のいずれかに記載のサーバ。
【請求項６】
第１の電子コンポーネントおよび第２の電子コンポーネントと、
前記第１の電子コンポーネントおよび前記第２のコンポーネントと通信するベースボード管理コントローラ（ＢＭＣ）と、
前記第１の電子コンポーネントの動作についての情報を集め、この情報を前記ＢＭＣに送信するために前記ＢＭＣおよび前記第１の電子コンポーネントに接続され、前記第１の電子コンポーネントに合わせて設計されたデバイス特定ファームウェアを有する第１のデバイスハードウェアエージェントと、
前記第２の電子コンポーネントの動作についての情報を集め、この情報を前記ＢＭＣに送信するために前記ＢＭＣおよび前記第２の電子コンポーネントに接続され、前記第２の電子コンポーネントに合わせて設計されたデバイス特定ファームウェアを有する第２のデバイスハードウェアエージェントと
を備えたコンピュータ。
【請求項７】
前記第１の電子コンポーネントと前記第２の電子コンポーネントとは異なり、ネットワークインターフェースカード（ＮＩＣ）、ホストバスアダプタ（ＨＢＡ）、コントローラおよび中央演算ユニット（ＣＰＵ）の内の１つを含む
請求項６に記載のコンピュータ。
【請求項８】
前記第１のデバイスハードウェアエージェントおよび前記第２のデバイスハードウェアエージェントは、マイクロコントローラであり、ソフトウェアエージェントを用いずに前記情報を集める
請求項６または７に記載のコンピュータ。
【請求項９】
前記第１のデバイスハードウェアエージェントおよび前記第２のデバイスハードウェアエージェントの両方は、規格化されたアプリケーションプログラムインターフェース（ＡＰＩ）を用いてＬＯＭマネージャと通信する
請求項６に記載のコンピュータ。
【請求項１０】
前記第１のデバイスハードウェアエージェントはプログラムでカスタマイズされ、前記第１の電子コンポーネントの動作についての情報を集めるために前記第１の電子コンポーネントのデバイスに特定の情報にアクセスし、
前記第２のデバイスハードウェアエージェントはプログラムでカスタマイズされ、前記第２の電子コンポーネントの動作についての情報を集めるために前記第２の電子コンポーネントのデバイスに特定の情報にアクセスする
請求項６に記載のコンピュータ。
【請求項１１】
デバイスハードウェアエージェントにより、サーバ内の電子コンポーネントの動作についての情報を集めることと、
前記デバイスハードウェアエージェント内の前記電子コンポーネントごとに設計されたデバイス特定ファームウェアにより、サーバ内に位置するインテグレーテットライツ−アウト(iLO)マネージャへ前記情報を送信することと、
マイクロコントローラである前記デバイスハードウェアエージェントにより、前記電子コンポーネントにファームウェアの更新を提供することと
を備えるサーバに位置するハードウェアエージェントによって実行される方法。
【請求項１２】
前記デバイスハードウェアエージェントは、製造中に前記電子コンポーネントと通信するようにプログラムされる
請求項１１に記載の方法。
【請求項１３】
前記デバイスハードウェアエージェントは、前記サーバにおいて動作する前記電子コンポーネントについての情報を、ソフトウェアエージェントへの依存なしに集める
請求項１１または１２に記載の方法。
【請求項１４】
前記デバイスハードウェアエージェントにより、サーバ内で動作する複数の異なる電子コンポーネントの情報を集めること
をさらに備え、
前記複数の異なる電子コンポーネントは、ネットワークインターフェースカード（ＮＩＣ）およびホストバスアダプタ（ＨＢＡ）を含む
請求項１１に記載の方法。
【請求項１５】
前記電子コンポーネントに前記ファームウェアをサーバのリブートなしに活性化させること
をさらに備える請求項１１に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
提示の発明は、１つ以上の電子コンポーネント(electronic components)をネットワークされたコンピュータに接続するデバイスハードウェアエージェント(device hardware agent)に関する。
【背景技術】
【０００２】
ソフトウェアエージェントはしばしばサーバにロードされてサーバ内で動作する電子コンポーネントの情報を集める。
この情報は外部管理サーバといった他の電子デバイスに送信され、それでユーザはサーバを管理し、診断することができる。
管理されるサーバ個性部分それぞれのために個別のソフトウェアエージェントがしばしば必要とされる。
【０００３】
ソフトウェアエージェントは、情報といくらかのデバイス動作への制御を提供することができるが、この情報を外部管理サーバへ通信するために専用とされるネットワークインターフェースカード(Network Interface Card; NIC)をしばしば必要とする。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
外部管理サーバと通信するためには、ソフトウェアエージェントは管理されるサーバのメモリおよび処理資源を費やし、オペレーティングシステム（ＯＳ）とのソフトウェアの課題を発し得る。
【課題を解決するための手段】
【０００５】
上記目的を達成するために、本願にかかるサーバは、電子コンポーネントと、ベースボード管理コントローラ（ＢＭＣ）と、前記電子コンポーネントに接続された第１のインターフェースおよび前記ＢＭＣに接続された第２のインターフェースを含み、前記電子コンポーネントごとに設計されたデバイス特定ファームウェアと、前記電子コンポ―ネントの動作を監視し、前記電子コンポーネントに更新を提供するプロセッサコアおよびメモリを含むデバイスハードウェアエージェントを含む。
【０００６】
また、本願にかかるコンピュータは、第１の電子コンポーネントおよび第２の電子コンポーネントと、前記第１の電子コンポーネントおよび前記第２のコンポーネントと通信するベースボード管理コントローラ（ＢＭＣ）と、前記第１の電子コンポーネントの動作についての情報を集め、この情報を前記ＢＭＣに送信するために前記ＢＭＣおよび前記第１の電子コンポーネントに接続され、前記第１の電子コンポーネントごとに設計されたデバイス特定ファームウェアを有する第１のデバイスハードウェアエージェントと、前記第２の電子コンポーネントの動作についての情報を集め、この情報を前記ＢＭＣに送信するために前記ＢＭＣおよび前記第２の電子コンポーネントに接続され、前記第２の電子コンポーネントごとに設計されたデバイス特定ファームウェアを有する第２のデバイスハードウェアエージェントとを備える。
【０００７】
また、本願にかかる方法は、サーバに位置するハードウェアエージェントによって実行され、デバイスハードウェアエージェントにより、サーバ内の電子コンポーネントの動作についての情報を集めることと、前記デバイスハードウェアエージェント内の前記電子コンポーネントごとに設計されたデバイス特定ファームウェアにより、サーバ内に位置するインテグレーテットライツ−アウト(iLO)マネージャへ前記情報を送信することと、マイクロコントローラである前記デバイスハードウェアエージェントにより、前記電子コンポーネントにファームウェアの更新を提供することとを備える。
【図面の簡単な説明】
【０００８】
【図１】図１は、一実施例に従ってデバイスハードウェアエージェントを備えた複数の被管理サーバ(managed servers)とリモート管理コンソールとを含むネットワークコンピュータシステムを示す。
【図２】図２は、一実施例に従った複数のハードウェアエージェントを備えた管理されるサーバのブロック図を示す。
【図３】図３は、一実施例に従った１つ以上のハードウェアエージェントを備えた管理サーバ(managing servers)のフロー図である。
【図４】図４は、一実施例に従ったデバイスハードウェアエージェントを介してサーバ内の電子コンポーネントへのファームウェア更新の提供のフロー図である。
【図５】図５は、一実施例に従ったデバイスハードウェアエージェントである。
【発明を実施するための形態】
【０００９】
実施例は、１つ以上のハードウェアエージェントを利用してコンピュータまたはサーバにおいてコンポーネントを管理し、制御する装置および方法に関する。
【００１０】
１つの実施例において、デバイスハードウェアエージェントは、電子コンポーネントに接続し、インベントリ(inventory)、ヘルスステータスおよび統計の監視といった様々な機能を実行するマイクロコントローラである。
１つ以上のマイクロコントローラは、電子デバイスの１つ以上のコンポーネントを監視する。
例を目的として、このようなコンポーネントは、ネットワークインターフェースカード（NICs）、ホストバスアダプタ（HBAs）および中央処理ユニット（CPUs）を含むが、これに限定されない。
デバイスハードウェアエージェントは情報を集め、ユーザに集められた情報を検討するためのインターフェースを提供するベースボード管理コントローラに送信する。
例えば、情報は、グラフィカルユーザインターフェース（ＧＵＩ）、コマンドラインインターフェース（ＣＬＩ）あるいはアプリケーションプログラムインターフェース（ＡＰＩ）上で提供される。
【００１１】
ハードウェアエージェントそれぞれは２つのインターフェースを有する。
１つのインターフェースは、ベースバンド管理コントローラ(Baseboard Management Controller; BMC)といったアウトオブバンド(out-of-band; OOB)マネージメントプロセッサと情報を通信する。
他の１つのインターフェースは、監視および／または制御される（例えば、ＮＩＣ，ＨＢＡ，ＣＰＵなどと情報を通信する）デバイスと情報を通信する（つまり送信し、受信する）。
【００１２】
通信は、シリアル、集積回路間(Inter-Integrated Circuit ;i2C)およびイーサネット(登録商標)といった様々なタイプの通信路とともに起こりうる。
さらに、通信される情報は、管理されるデバイスには依存しない規格化されたＡＰＩにおいてアクセス可能である。
マイクロコントローラと監視される電子デバイスとの間の接続は、ジョイントテストアクショングループデバイス(Joint Test Action Group ;JTAG)といったデバイス自体に基づく。
【００１３】
デバイス管理インターフェースは、ＯＳインターフェースへ影響を与えることなくデバイスの管理および制御を可能とする。
あるインターフェースは、ＮＩＣｓおよびＰＡＩＤインターフェースのように、それが既にデバイス内に組み込まれている故に使われることができる。
例示のインターフェースは、ＪＴＡＧインターフェース、ｉ２Ｃ、シリアル、イーサネット、ＧＰＩＯおよびＳＰＩを含むが、これに限定されない。
また、コンポーネントは１つ以上のこれらの例示のインターフェースを使うことができる。
【００１４】
デバイスにとって、いかにアクセスハードウェアエージェントが特定の情報にするかを理解するようにカスタマイズされるために、デバイスに特定のパラメータは、デバイスに特定のアクセス（ＪＴＡＧモード、アクセスレジスタ、データのフォーマット、情報のユーザに可視な名前、読み出しまたは読み出し／書き込み能力など）の詳細とともにデバイスに特定のファームウェア(device specific firmware)内のデバイスハードウェアエージェントにプログラムされる。
さらに、デバイスハードウェアエージェントは、複数のＮＩＣｓといった複数の同じデバイスを管理することを１つのデバイスエージェントに可能とするデバイス管理インターフェースの１つ以上のタイプそれぞれを含むことができる。
【００１５】
デバイスハードウェアエージェントファームウェアは２つの部分に分けられ、１つの部分は共通のＡＰＩファームウェアのためであり、他の１つの部分はデバイス特定ファームウェアのためである。
この区分けは、コンピュータ製造者が共通のＡＰＩファームウェアをそれらのベースボード管理コントローラ（ＢＭＣ）に合わせて設計できるようにし、デバイスの製造者が、デバイス特定ファームウェアをファームウェアデバイス管理インターフェースを用いてインターフェースし、コンピュータ製造者により提供された共通のＡＰＩファームウェアと通信するように設計することを可能とする。
あるデバイスハードウェアエージェントのデバッグ(debug)インターフェースは、ハードウェアエージェントファームウェア開発の間に使われることができるが、このデバッグインターフェースは生産中に接続されていないかもしれない。
共通のＡＰＩファームウェアとデバイスに特定のファームウェアとの間の通信は、デバイスハードウェアエージェントのメモリを使って達成されることができるが、共通のＡＰＩインターフェースもまた用いることがありうる。
【００１６】
デバイスハードウェアエージェントは、ＢＭＣインターフェース上の共通のＡＰＩを提供し、それでＢＭＣはデバイスに特定のデータを符号化してはならないが、共通のＡＰＩにおいて指示されたら情報およびデバイスの制御を提供する。
【００１７】
デバイスハードウェアエージェントは情報（例えば、インベントリ、ヘルスステータスおよび統計）をベースボード管理コントローラに通信し、また、デバイスハードウェアエージェントが接続される電子デバイスを制御および／または管理する命令を受信する。
例えば、ＮＩＣ上のポートのメディアアクセスコントロール(Media Access Control; MAC)アドレスを受信するといったように、ハードウェアエージェントは電子デバイスの振る舞いを変更する命令を受信する。
デバイスハードウェアエージェントへの他の命令は、電子デバイス上のファームウェアが更新されること、あるいは、ディスエーブル(disable)されたポートをイネーブル(enable)することを可能とする。
【００１８】
製造の間、デバイスハードウェアエージェントは電子デバイスの中の特定の電子コンポーネントと接続し、通信するようにプログラムされる（例えば、ＨＢＡ，ＮＩＣ，ＣＰＵなどと通信するようにプログラムされる）。
このように、同様あるいは同じハードウェアコンポーネントを備える２つのデバイスハードウェアエージェントは異なる電子コンポーネントを制御するために使われることができる。
例えば、１つのデバイスハードウェアエージェントはサーバの中の記憶コントローラとインターフェースするようにプログラムされ、他の１つのデバイスハードウェアエージェントはサーバの中のＮＩＣとインターフェースするようにプログラムされる。
両方のインターフェース上でデータ駆動されるデバイスハードウェアエージェントを有することは、デバイスハードウェアエージェントの中のファームウェアが、異なるデバイスをデバイスそれぞれのためにカスタマイズされたファームウェアイメージでサポートすることを可能とする。
【００１９】
一実施例においては、１つのデバイスハードウェアエージェントが１つの電子コンポーネントを管理する。
他の一実施例においては、１つのデバイスハードウェアエージェントが複数の同じ電子コンポーネントを管理する。
【００２０】
他の一実施例においては、ベースボード管理コントローラといった１つのデバイス複数のデバイスハードウェアエージェントが、複数の異なる電子コンポーネントを管理するように組み込まれることができる。
【００２１】
他の一実施例においては、デバイスハードウェアエージェントは、個別のデバイスハードウェアエージェントＡＳＩＣの必要なしにＢＭＣへの直接接続のためのＢＭＣインターフェースを提供するコンポーネントデバイスに組み込まれることができる。
【００２２】
デバイスハードウェアエージェントは、ＯＳエージェントへの従属なしにデバイスのための情報および制御を提供する。
デバイス制御は共通のＡＰＩを通して達成されるので、ＢＭＣおよび外部管理サーバの両方は、特定の管理コードの書き込みおよび実行の必要なしのデバイス管理に共通の管理コードをデバイスに提供することができる。
【００２３】
実施例に従ったハードウェアエージェントは、そしてＯＳエージェント機能（つまり、デバイスの監視、デバイスの制御およびデバイスの動作の統計）を、ＣＰＵまたはＰＣｌｅバスのいかなる利用もなしに置き換える。
これは、全てのサポートされるＯＳにわたるエージェントコードの開発および維持の必要をなくし、様々なオペレーティングシステムにわたってサーバにおける異なるデバイスの監視を管理することができるようにする。
例えば、ＣＰＵのためのデバイスハードウェアエージェントは、基本入力／出力システム(Basic Input/Output System; BIOS)システム管理インターフェース(SMI)コードを置き換えることができ、電力制御、メモリエラー監視およびその他のＳＭＩ機能を実行し、ＣＰＵ監視および制御のためのいかなるサーバ性能への影響も除去する。
【００２４】
しかも、デバイスの管理は、帯域外(out-of-band)通信を使ってＢＭＣを通して達成されることができ、コンピュータＯＳからの管理通信を完全に分離する。
【００２５】
図１は、ネットワークされ、（コンピュータＡ〜コンピュータＮとして示される）複数の被制御コンピュータ１２０を含み、１つ以上の遠隔管理デバイスまたはコンソール１４０と通信するコンピュータシステム１００である。
被制御コンピュータ１２０は、オペレーティングシステム（ＯＳ）と独立に情報を取得し、解析し、圧縮して遠隔管理デバイス１４０に送信する特別な回路とソフトウェアを含む。
この回路とソフトウェアとは被管理サーバ上にあるＯＳの存在あるいはタイプに関わらず動作する。
従って、遠隔管理デバイス１４０は、被制御コンピュータ１２０に遠隔コンソールからアクセスし、相互に作用(interact)し、監視することができる。
【００２６】
一実施形態は、ｉＬＯ(Integrated Lights-Out)といった組み込みサーバ制御技術を用いる。
遠隔サーバ管理デバイスは、サーバコンピュータシステムの遠隔アクセスおよび運営を容易にする。
遠隔コンソール機能は、管理コンソールあるいは遠隔管理デバイス（ＲＭＤ）として知られる他のコンピュータからサーバへのアクセスをユーザに可能とする。
管理コンソールは、ユーザがあたかも物理的にサーバの近くにいてサーバと例えばサーバに付随されたサーバのディスプレイを用いて相互に作用しているかのように、ユーザにサーバと相互に作用することを可能とする。
【００２７】
ネットワーク（複数可）１３０は、２つのデバイスの間でデータを伝送することができるいかなる種類のネットワークであってもよい。
限定なしに、ネットワークのいくつかの例は、ローカルエリアネットワーク（ＬＡＮ）、広域ネットワーク（ＷＡＮ）、ハードワイヤによるポイントツーポイント(point-to-point)接続、電話回線を介したポイントツーポイント接続、無線接続およびインターネット接続を含む。
【００２８】
被制御コンピュータ１２０は、いかなる特定のタイプのサーバにも限定されず、アプリケーションサーバ、ウェブサーバ、データベースサーバなどを含むが、これらに限定されない。
一実施例においては、管理サーバは、ラック、筐体あるいはデータセンターで動作するブレードサーバといったブレードコンピュータである。
提示の発明に従った実施例は、ネットワークされたコンピュータシステムのいかなる特定のタイプにも限定されない。
【００２９】
被管理サーバおよび／または遠隔管理デバイスは、移動可能なあるいは移動不可能なコンピュータおよび／または（携帯可能および携帯不可能な）電子デバイスを含み、これらはコンピュータ、分散コンピュータデバイス、ラップトップコンピュータおよびその他の移動可能であるか移動不可能あるかにかかわらない電子デバイスおよびシステムを含むが、これらに限定されない。
【００３０】
図２は、複数のデバイスハードウェアエージェント２１０Ａ，２１０Ｂ，２１０Ｃおよび２１０Ｄに接続された（ｉＬＯマネージャといった）ベースボード管理コントローラ２０５を含む被管理サーバ２００のブロック図を示す。
ハードウェアエージェントそれぞれは、共通のＡＰＩを含み、サーバの中の異なる電子コンポーネントに接続する。
実施例は、ｉＬＯマネージャとデバイスハードウェアエージェントとの間のインターフェースを基準となる電気的およびＡＰＩの両方の定義で標準化する。
ＡＰＩおよび電気的インターフェースを標準化することは、サーバをサポートするために用いられるハードウェアおよびｉＬＯファームウェアの設計の両方を削減する。
【００３１】
デバイスハードウェアエージェント２１０ＡはＣＰＵインターフェース２２２を介してＣＰＵ２２０に接続する。
ＣＰＵ２２０は、メモリインターフェース２２４およびペリフェラルコンポーネントインターコネクトエクスプレス(Peripheral Component Interconnect Express ;PCI-E or PCIe)接続２２６を含む。
デバイスマネージャインターフェース２２８は、ベースボード管理コントローラまたはサーバｉＬＯマネージャ２０５をデバイスハードウェアエージェント２１０Ａに接続する。
【００３２】
デバイスハードウェアエージェント２１０Ｂは、ＲＡＩＤコントローラ２３０にＲＡＩＤインターフェース２３２およびＰＣＬｅ接続２３４を介して接続する。
ＲＡＩＤコントローラ２３０は、複数のデバイスポート２３６を含む。
デバイスマネージャインターフェース２３８は、ベースボード管理コントローラまたはサーバｉＬＯマネージャ２０５をデバイスハードウェアエージェント２１０Ｂに接続する。
【００３３】
デバイスハードウェアエージェント２１０Ｃは、デュアルポートＮＩＣ２４０にＮＩＣインターフェース２４２およびＰＣＬｅ接続２４４を介して接続する。
デュアルポートＮＩＣ２４０は複数のデバイスポート２４６を含む。
デバイスマネージャインターフェース２４８はベースボード管理コントローラまたはサーバｉＬＯマネージャ２０５をデバイスハードウェアエージェント２１０Ｃに接続する。
【００３４】
デバイスハードウェアエージェント２１０Ｄは、オプションカードデバイス２５０（例えばＨＢＡ）にＨＢＡ２５２およびＰＣＬｅ接続２５４を介して接続する。
オプションカードデバイス２５０は、複数のデバイスポート２５６を含む。
デバイスマネージャインターフェース２５８は、ベースボード管理コントローラまたはサーバｉＬＯマネージャ２０５をデバイスハードウェアエージェント２１０Ｄに接続する。
【００３５】
サーバの中で管理される電子コンポーネントは通常、共通のデバッグインターフェースを含まない。
デバイスハードウェアエージェントは、しかしながら、ｉ２Ｃ、シリアル、ＪＴＡＧ，ＧＰＩＯおよびＳＰＩといった１つ以上のインターフェースを含み、デバイスハードウェアエージェントの中の供給者に特定のファームウェアに内部レジスタへのアクセスおよび電子コンポーネントの制御を可能とする。
【００３６】
デバイスマネージャインターフェース２２８，２３８，２４８および２５８は標準的または共通のハードウェアインターフェースである。
例えば、このインターフェースはｉＬＯ設計の中に既に含まれていることができ、ペリフェラルコンポーネントインターコネクト（ＰＣＩ）オプションカードおよびメザニンカード(mezzanine cards)上で入手可能なものであることができる。
【００３７】
図３は、一実施例に従った１つ以上のデバイスハードウェアエージェントを備えた管理サーバのフロー図である。
【００３８】
ブロック３００によると、サーバにある１つ以上のデバイスハードウェアエージェントが１つ以上の電子デバイスの情報を集める。
例えば、デバイスハードウェアエージェントは、ＣＰＵ、ＲＡＩＤコントローラ、ＨＢＡ、ＮＩＣおよびサーバブレードメザニンカードの動作についての情報を集める。
【００３９】
ブロック３１０によると、デバイスハードウェアエージェントにより集められた情報は、サーバにあるベースボード管理コントローラ（ＢＭＣ）により読み出され、あるいは、これに送信される。
デバイスハードウェアエージェントそれぞれは、デバイスハードウェアエージェントが異なる電子コンポーネントおよびＢＭＣと通信することを可能とする１つ以上の異なるインターフェースを含む。
【００４０】
一実施例においては、デバイスハードウェアエージェントそれぞれは、１つの電子コンポーネントに接続され、それについての情報を集める。
他の実施例においては、１つのハードウェアエージェントは、複数の異なる電子コンポーネント（例えば、ＮＩＣ，ＨＢＡ，ＣＰＵ，コントローラなど）に接続され、それらについての情報を集める。
【００４１】
ブロック３２０によれば、集められた情報は遠隔管理サーバに送信される。
例えば、遠隔管理デバイスにいるユーザは、サーバｉＬＯマネージャを介してサーバにログインし、集められた情報を取り出す。
ユーザはまた、ＢＭＣまたはｉＬＯマネージャおよび電子コンポーネントにハードウェアエージェントを通してデータおよび命令を送信することができる。
【００４２】
図４は、デバイスハードウェアエージェントを介したデバイス（つまり電子コンポーネント）へのファームウェアの更新を提供するフロー図である。
【００４３】
ブロック４００によれば、ベースボード管理コントローラは、ネットワークされたコンピュータの中のデバイスのための新しいファームウェアの更新を受信する。
ブロック４０５によれば、ＢＭＣはハードウェアエージェントにデバイスのためのファームウェア更新命令を送る。
【００４４】
ブロック４１０によれば、デバイスハードウェアエージェントの中のファームウェアはＯＳデバイスドライバにファームウェア更新が発生したことを通知する。
この通知は、デバイスドライバにさらなるデバイスへのＯＳデータ伝送要求を停止させる。
【００４５】
ブロッ４２０によれば、デバイスハードウェアエージェントの中のファームウェアは、ＢＭＣからのファームウェア更新を流し(stream)、デバイスのファームウェアを更新する。
【００４６】
ブロック４３０によれば、ファームウェアの更新が完了した後に、デバイスハードウェアエージェントは、デバイスのハードウェアリセットにより新たなファームウェアを活性化する。
【００４７】
ブロック４４０によれば、デバイスがリブートから初期化した後で、デバイスハードウェアエージェントは、デバイスからＯＳデバイスドライバにデバイスを介してメッセージを送り、ドライバにファームウェア更新が完了したと通知する。
例えば、「ホットプラグ(hot-plug)」ＰＣＩイベントがデバイスのために受信され、デバイスが初期化されたことを示すＯＳ特定のメッセージが送られる。
この初期化はＯＳのリブート(reboot)を要求しない。
【００４８】
ブロック４５０によれば、ＯＳドライバはデバイスを初期化し、初期化が完了したときにデバイスハードウェアエージェントに通知する。
【００４９】
ブロック４６０によれば、デバイスハードウェアエージェントはＢＭＣにＯＳドライバの再初期化を含むファームウェア更新が完了したことを通知する。
【００５０】
図４の方法は、デバイスハードウェアエージェントおよび（例えば、ｉＬＯマネージャからデバイスハードウェアエージェントを介して現行のＯＳデバイスドライバへアップロードされたＯＳデバイスドライバを備えた）デバイスを使ったデバイスドライバの更新にまで拡張されることができる。
新しいデバイスドライバは（例えば、同じ「ホットプラグ」ＰＣＩイベントメッセージおよびデバイスの再初期化を用いて）再ロードする。
【００５１】
図５は、一実施例に従ったハードウェアエージェント５００である。
一実施例において、デバイスハードウェアエージェント５００は、メモリ５２０に結合されたプロセッサコア５１０マイクロコントローラである。
第１のインターフェース５３０は、コンピューティングデバイス（例えば、ｉＬＯマネージャ）と通信するように用意され、１つ以上の第２のインターフェース５４０はコンピューティングデバイスの中の電子コンポーネントと通信するように用意される。
第１のインターフェース５３０は、ｉ２Ｃ，シリアルイーサネット，ＧＰＩＯ，ＪＴＡＧ，ＳＰＩなどといったＢＭＣインターフェースである。
第２のインターフェース５４０は、ｉ２Ｃ，シリアルイーサネット，ＧＰＩＯ，ＪＴＡＧ，ＳＰＩなどといったデバイス管理インターフェースである。
プロセッサコア５１０とメモリ５２０は、デバイス特定ファームウェア５６０および共通のＡＰＩファームウェア５７０を含むデバイスエージェントファームウェア５５０に結合する。
デバイスエージェントファームウェア５５０は、レジスタ、メールボックスなどといった共通ＡＰＩインターフェース５８０に結合する。
【００５２】
ここおよび請求項において用いられているように、以下の用語は以下のように定義される：
【００５３】
用語「共通ＡＰＩ」または「標準化されたＡＰＩ(standardized API)」は、様々な異なるデバイスをハードウェアデバイスマネージャインターフェース命令の共通の集合に抽象化するアプリケーションプログラミングインターフェースである（例：show device-name, show firmware-version or update firmware）。
【００５４】
用語「ハードウェア」は、電子デバイス（例えばサーバのコンポーネント）物理的なコンポーネントである。
ハードウェアは、無形なソフトウェアと反対に有形である（つまり触られうる）。
【００５５】
用語「インテグレーテットライツアウト(Integrated Lights Out; (iLO)」またはベースボード管理コントローラ（ＢＭＣ）は、遠隔電子デバイスまたはコンピュータにサーバから離れた位置からサーバ上の活動を可能とするサーバ管理技術である。
例えば、ｉＬＯカードは、個別のネットワーク接続およびＨＴＴＰ(Hyper Text Markup Language)を通してユーザがインターネットを介して接続することができるそれ自体のＩＰ(Internet Protocol)アドレスを有する。
遠隔電子デバイスは、サーバリセット、サーバの電源投入、サーバのスクリーンの小計、物理的なＣＤ／ＤＶＤドライブまたはイメージの取り付けまたは取り去り、サーバのＩＭＬ(Integrated Management Log)アクセスおよびサーバのための遠隔コンソールの提供といった活動を実行することができる。
さらに、ｉＬＯおよびＢＭＣは帯域外管理技術として使われることができる。
【００５６】
用語「マイクロコントローラ」は、プロセッサコアとメモリとを含む集積回路である。
マイクロコントローラはまた、プログラム可能な入出力（Ｉ／Ｏ）周辺装置を含むことができる。
【００５７】
用語「帯域外通信」は、サーバＯＳデータから切り離された情報（例えば、制御情報）の交換である。
帯域外情報は、データからの個別・専用のチャネル上で提供される。
【００５８】
用語「帯域外管理」は、一次（primary）ネットワークサブシステムハードウェアまたはソフトウェア障害のイベントさえにおけるシステムコントロールアクセスである。
このアクセスは、コンソールサーバまたはリモートアクセスカードに備えられることができる。
【００５９】
一実施形態において、ここで議論された１つ以上のブロックまたはステップは自動化されている。
換言すると、装置、システムおよび方法は自動的に起こる。
用語「自動化された（automated）」または「自動的に(automatically)」は、人間の介入の必要なしに制御されるコンピュータおよび／または機械的／電気的なデバイスを用いた装置、システムおよび／または処理の動作を意味する。
【００６０】
実施例に従った方法は例として提供され、発明の範囲の他の実施例を制限すると解釈されるべきでない。
さらに、異なった図面において議論された方法またはステップは、他の図面における方法またはステップと追加されまたは交換されることができる。
さらになお、（特定の量、数字およびカテゴリなどといった）特定の数的なデータ値またはその他の特定の情報は、実施例を議論するための説明であると解釈されるべきである。
このような特定の情報は実施例を限定するために提供されていない。
【００６１】
いくつかの実施例においては、ここに説明された方法、それに関連付けられたデータおよび命令は、１つ以上のコンピュータ可読またはコンピュータ利用可能な媒体として実現されるそれぞれの記憶媒体に格納される。
記憶媒体は、ＤＲＡＭまたはＳＲＡＭ、消去可能およびプログラム可能なリードオンリーメモリ（ＥＰＲＯＭｓ）、電気的に消去およびプログラムが可能なリードオンリーメモリ（ＥＥＰＲＯＭ）およびフラッシュメモリといった半導体メモリデバイス；固定された、フロッピー（登録商標）、リムーバブルディスクといった磁気ディスク；テープを含む他の磁気媒体、および、コンパクトディスク（ＣＤｓ）またはディジタル多目的ディスク（ＤＶＤｓ）といった光学媒体を含む異なったメモリの形態を含む。
以上、議論されたソフトウェアの命令は１つのコンピュータ可読またはコンピュータ利用可能な媒体上で提供されることができ、または代わりに、複数のノードを有する可能性がある大きいシステムにおいて複数のコンピュータ可読またはコンピュータ利用可能な媒体上で提供されることができる。
このようなコンピュータ可読またはコンピュータ利用可能な媒体は、物品（または物品の製造）の一部と考えられる。
物品または物品の製造は、製造されたいかなる単一のコンポーネントまたは複数のコンポーネントにも言及する。
【００６２】
実施例は方法、システムおよび／または装置として実現される。
一例として、実施例およびそれに関連付けられたステップは、１つ以上のコンピュータソフトウェアプログラムとして実現され、ここに記載された方法を実現する。
ソフトウェアは１つ以上のモジュールとして実現される（コードサブルーチン、またはオブジェクト指向プログラミングにおける「オブジェクト」として言及される）。
ソフトウェアプログラミングコードは、例えば、コンピュータまたはサーバのプロセッサまたは複数のプロセッサにより、ＣＤ−ＲＯＭドライブまたはハードドライブといったいくつかのタイプの長期記憶媒体からアクセスされる。
ソフトウェアプログラミングコードは、データ処理システムとともに、または、半導体、磁気および光学デバイスといったいかなるメモリデバイスにおいて使われる既知の様々な物理的および有形的な媒体のいずれの上にも実現されて格納される。
コードは、いくつかのタイプのネットワークを介して他のコンピュータシステムへこのような媒体によって配布され、または、１つのコンピュータシステムのメモリまたは記憶装置からいくつかのタイプのネットワークを介して他のコンピュータシステムに、このような他のシステムのユーザによる私用のために配信される。
あるいは、プログラミングコードは、メモリ内に実現され、プロセッサによってバスを用いてアクセスされる。
メモリ内、物理的媒体および／またはネットワークを介したソフトウェアの配信においてソフトウェアプログラミングコードを実現するための技術および方法は周知であり、ここではさらに議論されない。
【００６３】
上記の議論は実施例の様々な原理の説明になるように意図される。
数々の変形および変更は、一度、上記開示が完全に評価されれば、当業者にとって明らかとなるであろう。
以下の請求項が、全てのこのような変形および変更を含むように解釈されることが意図されている。
【符号の説明】
【００６４】
１００・・・コンピュータシステム，
１２０・・・被制御コンピュータ／被管理サーバ，
１３０・・・ネットワーク，
１４０・・・遠隔管理デバイス１４０，
２００・・・被管理サーバ，
２０５・・・ベースボード管理コントローラ，
２１０・・・デバイスハードウェアエージェント，
２２０・・・ＣＰＵ，
２２２・・・ＣＰＵインターフェース，
２２４・・・メモリインターフェース，
２３０・・・ＲＡＩＤコントローラ，
２３２・・・ＲＡＩＤインターフェース，
２３６，２４６・・・デバイスポート，
２３８・・・デバイスマネージャインターフェース，
２４０・・・デュアルポートＮＩＣ，
２４２・・・ＮＩＣインターフェース，
２４４・・・ＰＣＬｅ接続，
２５０・・・オプションカードデバイス，
５００・・・デバイスハードウェアエージェント，
５１０・・・プロセッサコア，
５２０・・・メモリ，
５３０・・・第１のインターフェース，
５４０・・・第２のインターフェース，
５５０・・・デバイスエージェントファームウェア，
５６０・・・デバイス特定ファームウェア，
５７０・・・共通ＡＰＩファームウェア，
５８０・・・共通ＡＰＩインターフェース，
【図１】
0005640154.tif 000002
【図２】
0005640154.tif 000003
【図３】
0005640154.tif 000004
【図４】
0005640154.tif 000005
【図５】
0005640154.tif 000006