(57)【要約】【課題】ピア・プログラマブル・ハードウェア・デバイスの自動ファームウェア復元の方法を提供する。【解決手段】ファームウェアを復元する技法を提供する。第１のプログラマブル・ハードウェア・デバイスが、第２のプログラマブル・ハードウェア・デバイスは有効ファームウェア・イメージを必要とすると判断し、外部メモリから有効ファームウェア・イメージのコピーを取り出し、この有効ファームウェア・イメージを、プライベート通信リンクを介して第２のプログラマブル・ハードウェア・デバイスに送信し、ここでプライベート通信リンクは、第１のプログラマブル・ハードウェア・デバイスと第２のプログラマブル・ハードウェア・デバイスとの間のプライベート通信を可能にする。第２のプログラマブル・ハードウェア・デバイスは、有効ファームウェア・イメージを用いて既存のファームウェアを復元する。【選択図】      図１
2010524108.tif 000002
【特許請求の範囲】
【請求項１】
ファームウェアを復元するコンピュータ実施の方法であって、
第１のプログラマブル・ハードウェア・デバイスの制御下で、
第２のプログラマブル・ハードウェア・デバイスは有効ファームウェア・イメージを必要とすると判断し、
外部メモリから前記有効ファームウェア・イメージのコピーを取り出し、
前記有効ファームウェア・イメージを前記第２のプログラマブル・ハードウェア・デバイスに、前記第１のプログラマブル・ハードウェア・デバイスと前記第２のプログラマブル・ハードウェア・デバイスとの間のプライベート通信を可能するプライベート通信リンクを介して送信し、
前記第２のプログラマブル・ハードウェア・デバイスの制御下で、
前記有効ファームウェア・イメージを用いて既存のファームウェアを復元する、
方法。
【請求項２】
以下の条件、
ｉ）前記外部メモリは前記第１のプログラマブル・ハードウェア・デバイス専用である、
ｉｉ）前記外部メモリは前記第１のプログラマブル・ハードウェア・デバイス及び前記第２のプログラマブル・ハードウェア・デバイスによって共有される、
ｉｉｉ）前記外部メモリは前記第２のプログラマブル・ハードウェア・デバイス専用であり、前記第１のプログラマブル・ハードウェア・デバイスによってアクセス可能である、
ｉｖ）前記外部メモリは前記有効ファームウェア・イメージの複数のバージョンをストアする、
のうちの１つ又は複数を含む、請求項１に記載の方法。
【請求項３】
以下の条件、
ｉ）前記第１のプログラマブル・ハードウェア・デバイス及び前記第２のプログラマブル・ハードウェア・デバイスは冗長であり、同じファームウェアを用いる、
ｉｉ）前記第１のプログラマブル・ハードウェア・デバイス及び前記第２のプログラマブル・ハードウェア・デバイスは冗長ではなく、異なるファームウェアを用いる、
のうちの１つ又は両方を含む、請求項１又は請求項２に記載の方法。
【請求項４】
前記第２のプログラマブル・ハードウェア・デバイスは前記有効ファームウェア・イメージを必要とすると判断するステップは、ハートビート機能を用いるステップを含み、
前記第２のプログラマブル・ハードウェア・デバイスが、前記第１のプログラマブル・ハードウェア・デバイスからのハートビート機能メッセージに所定の時間内に応答しないとき、前記第１のプログラマブル・ハードウェア・デバイスは、前記第２のプログラマブル・ハードウェア・デバイスが前記有効ファームウェア・イメージを必要とすると判断する、
請求項２又は請求項３に記載の方法。
【請求項５】
前記第２のプログラマブル・ハードウェア・デバイスは前記有効ファームウェア・イメージを必要とすると判断するステップは、前記有効ファームウェア・イメージを要求する前記第２のプログラマブル・ハードウェア・デバイスからの指示を受信するステップをさらに含み、
前記第２のプログラマブル・ハードウェア・デバイスは前記有効ファームウェア・イメージのバージョンを指定する、
請求項１乃至請求項４の何れか１項に記載の方法。
【請求項６】
ファームウェアを復元するためのコンピュータ実施の方法であって、
第１のプログラマブル・ハードウェア・デバイスの制御下で、
第２のプログラマブル・ハードウェア・デバイスは有効ファームウェア・イメージを必要とすると判断し、
外部メモリから前記有効ファームウェア・イメージのコピーを取り出し、
前記第２のプログラマブル・ハードウェア・デバイスの内部メモリを、前記有効ファームウェア・イメージを前記内部メモリを更新するユーティリティに直接書き込むことによって、直接更新し、
前記第２のプログラマブル・ハードウェア・デバイスの制御下で、
前記有効ファームウェア・イメージを用いて既存のファームウェアを復元する、
方法。
【請求項７】
前記ユーティリティは、ジョイント・テスト・アクション・グループ（ＪＴＡＧ）インターフェースを含む、請求項６に記載の方法。
【請求項８】
コンピュータ可読プログラムを含むコンピュータ使用可能媒体を備えたコンピュータ・プログラム製品であって、
前記コンピュータ可読プログラムは、実行されるとき、
第１のプログラマブル・ハードウェア・デバイスの制御下で、
第２のプログラマブル・ハードウェア・デバイスは有効ファームウェア・イメージを必要とすると判断するステップと、
外部メモリから前記有効ファームウェア・イメージのコピーを取り出スステップと、
前記有効ファームウェア・イメージを前記第２のプログラマブル・ハードウェア・デバイスに、プライベート通信リンクを介して送信するステップと
を実行させ、
前記プライベート通信リンクは、前記第１のプログラマブル・ハードウェア・デバイスと前記第２のプログラマブル・ハードウェア・デバイスとの間のプライベート通信を可能にし、
前記第２のプログラマブル・ハードウェア・デバイスにおける既存のファームウェアは前記有効ファームウェア・イメージを用いて復元される、
コンピュータ・プログラム製品。
【請求項９】
以下の条件、
ｉ）前記外部メモリは前記第１のプログラマブル・ハードウェア・デバイス専用である、
ｉｉ）前記外部メモリは前記第１プログラマブル・ハードウェア・デバイス及び前記第２のプログラマブル・ハードウェア・デバイスによって共有される、
ｉｉｉ）前記外部メモリは前記第２のプログラマブル・ハードウェア・デバイス専用であり、前記第１のプログラマブル・ハードウェア・デバイスによってアクセス可能である、
ｉｖ）前記外部メモリは前記有効ファームウェア・イメージの複数のバージョンをストアする、
のうちの１つ又は複数を含む、請求項８に記載のコンピュータ・プログラム製品。
【請求項１０】
以下の条件、
ｉ）前記第１のプログラマブル・ハードウェア・デバイス及び前記第２のプログラマブル・ハードウェア・デバイスは冗長であり、同じファームウェアを用いる、
ｉｉ）前記第１のプログラマブル・ハードウェア・デバイス及び前記第２のプログラマブル・ハードウェア・デバイスは冗長ではなく、異なるファームウェアを用いる、
のうちの１つ又は両方を含む、請求項８又は請求項９に記載のコンピュータ・プログラム製品。
【請求項１１】
、
前記コンピュータ可読プログラムは、実行されるときハートビート機能を用い、
前記第２のプログラマブル・ハードウェア・デバイスが、前記第１のプログラマブル・ハードウェア・デバイスからのハートビート機能メッセージに所定の時間内に応答しないとき、前記第１のプログラマブル・ハードウェア・デバイスは、前記第２のプログラマブル・ハードウェア・デバイスが前記有効ファームウェア・イメージを必要とすると判断する、
請求項８乃至請求項１０の何れか１項に記載のコンピュータ・プログラム製品。
【請求項１２】
前記コンピュータ可読プログラムは、実行されるとき、前記有効ファームウェア・イメージを要求する前記第２のプログラマブル・ハードウェア・デバイスからの指示を受信し、
前記第２のプログラマブル・ハードウェア・デバイスは前記有効ファームウェア・イメージのバージョンを指定する、
請求項８乃至請求項１１の何れか１項に記載のコンピュータ・プログラム製品。
【請求項１３】
コンピュータ可読プログラムを含むコンピュータ使用可能媒体を備えたコンピュータ・プログラム製品であって、
前記コンピュータ可読プログラムは、実行されるとき、
第１のプログラマブル・ハードウェア・デバイスの制御下で、
第２のプログラマブル・ハードウェア・デバイスは有効ファームウェア・イメージを必要とすると判断するステップと、
外部メモリから前記有効ファームウェア・イメージのコピーを取り出すステップと、
前記第２のプログラマブル・ハードウェア・デバイスの内部メモリを、前記有効ファームウェア・イメージを前記内部メモリを更新するユーティリティに直接書き込むことによって、直接更新するステップと
を実行させ、
前記第２のプログラマブル・ハードウェア・デバイスにおける既存のファームウェアは前記有効ファームウェア・イメージを用いて復元される、
コンピュータ・プログラム製品。
【請求項１４】
前記ユーティリティは、ジョイント・テスト・アクション・グループ（ＪＴＡＧ）インターフェースを含む、請求項１３に記載のコンピュータ・プログラム製品。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、ピア・プログラマブル・ハードウェア・デバイスの自動ファームウェア復元に関する。
【背景技術】
【０００２】
プログラマブル・ハードウェア・デバイス（例えば、記憶サーバ内の小型コンピュータ・システム・インタフェース（ＳＣＳＩ）エンクロージャ・サービス（ＳＥＳ）プロセッサ、又はＵＳＢデバイス用のユニバーサル・シリアス・バス（ＵＳＢ）コントローラ）は、多くの異なる型のシステム内に見出される。幾つかの場合において、プログラマブル・ハードウェア・デバイスの目的は、信頼性、利用可能性又は有用性（ＲＡＳ）の特徴を提供することである。しかしながら、場合によっては、プログラマブル・ハードウェア・デバイスはその動作を駆動するファームウェアに対する更新を必要とする可能性がある。ファームウェアは、デバイスの恒久的な部分であるプログラミングと言うことができる（例えば、プログラマブル読み取り専用メモリ（ＰＲＯＭ）に挿入することによって）。また、ファームウェアは、プログラマブル・ハードウェア・デバイス上で実行しているプログラミングであると言うことができ、一方、ファームウェア・イメージは、プログラマブル・ハードウェア・デバイスにロードされるファームウェアを含む一組のデータと言うことができる。多くの場合、プログラマブル・ハードウェア・デバイスに書き込まれるファームウェアは、以前のオペレーティング・ファームウェアを上書きすることになる。従って、破損したファームウェア（即ち、ファームウェア・イメージの形態における）が、プログラマブル・ハードウェア・デバイスに書き込まれる場合には、プログラマブル・ハードウェア・デバイスは動作しないことになり、従って、もはや通常の機能を提供することができない。破損したファームウェアを有する（即ち、破損したファームウェア・イメージを有する）プログラマブル・ハードウェア・デバイスは、破損したプログラマブル・ハードウェア・デバイスと呼ぶことができる。破損しているファームウェアは、破損したファームウェア又は無効なファームウェアと言うことができる。
【０００３】
場合によって起り得る別の状態は、ファームウェアが通常の動作中にエラーを起し（例えば、ファームウェア・イメージのダウンロードが行われないとき、又は実行時間中に）、そのエラーがファームウェア・イメージを破損し、従ってまた、プログラマブル・ハードウェア・デバイスが通常の機能を提供するのを妨げる状態である。
【０００４】
通常、どうかすると失敗するシステム・デバイスは、システムの全体的性能に悪影響を及ぼし、これはほとんどの顧客の環境において許容できるものではない。通常、問題を修復するための従来の方法は、プログラマブル・ハードウェア・デバイスを取り換えることであり、又は、可能であれば、ファームウェア・イメージを再インストールすることである。しかしながら、これらの修復は、ある型の外部サポートによる介入を必要とし、またこの型の介入は自動的ではない。顧客が如何なる遅延によっても悪影響を受ける重大な動作を行う場合には、サポートを要求して待ち受ける既存の解決法は適切ではなくなる。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
従って、当技術分野において、プログラマブル・ハードウェア・デバイスに関するファームウェア問題の自動的自己修正を可能にすることが必要である。
【課題を解決するための手段】
【０００６】
本発明によれば、ファームウェアを復元する方法及びコンピュータ・プログラム製品が提供される。第１のプログラマブル・ハードウェア・デバイスは、第２のプログラマブル・ハードウェア・デバイスが有効なファームウェア・イメージを必要とすることを判断し、外部メモリから有効ファームウェア・イメージのコピーを取り出し、そしてプライベート通信リンクを介して有効ファームウェア・イメージを第２のプログラマブル・ハードウェア・デバイスに送信し、ここでプライベート通信リンクは、第１のプログラマブル・ハードウェア・デバイスと第２のプログラマブル・ハードウェア・デバイスとの間のプライベート通信を可能にする。第２のプログラマブル・ハードウェア・デバイスは有効ファームウェア・イメージを用いて既存のファームウェアを復元する。
【０００７】
ここで、全体を通して類似の参照番号が対応する部分を表す図面を参照する。
【図面の簡単な説明】
【０００８】
【図１】本発明の特定の実施形態による、２つの冗長デバイスの細部を示す。
【図２】本発明の特定の実施形態による、２つの非冗長のプログラマブル・ハードウェア・デバイスの細部を示す。
【図３】特定の実施形態による、ファームウェア・イメージの受信に応答して各プログラマブル・ハードウェア・デバイスが実行する論理を示す。
【図４】特定の実施形態による、失敗したプログラマブル・ハードウェア・デバイスによって実行される論理を示す。
【図５】特定の実施形態による、パートナが失敗したときにプログラマブル・ハードウェア・デバイスによって実行される論理を示す。
【図６】特定の実施形態により用いることができるシステム・アーキテクチャを示す。
【発明を実施するための形態】
【０００９】
以下の説明において、本明細書の一部分を形成し本発明の幾つかの実施形態を示す添付の図面を参照する。他の実施形態を用いることができ、構造上及び操作上の変更を本発明の範囲から逸脱せずに施すことができることを理解されたい。
【００１０】
実施形態は、冗長パートナを有するか、又は別のプロセッサとの共有外部メモリを有するか、又はプログラマブル・ハードウェア・デバイス用の有効ファームウェア・イメージのコピーを維持する別のプロセッサにリンクされる、プログラマブル・ハードウェア・デバイスに対する自動的ファームウェア復元を提供する。特定の実施形態において、２つの冗長デバイスが存在し、失敗デバイスが更新を受信することができ且つ通信インターフェースが２つのデバイス間で機能するとすれば、デバイスのうちの１つに対する任意のファームウェアの更新を他のデバイスによって修正することができる。ファームウェアの更新は、ファームウェア・イメージの更新と言うことができる。特定の実施形態においては、冗長ではない２つのプロセッサが存在し、しかし破損したプロセッサは他方のプロセッサへの機能する通信インターフェースを有し、そしてこの他方のプロセッサは、破損したプロセッサのファームウェア・イメージのコピーを含む破損したプロセッサの外部メモリに対するアクセス権を有するか、又は破損したプロセッサのファームウェア・イメージのコピーをある記憶装置内に維持する（例えば、ファームウェア・イメージはファームウェアの更新中に、記憶のためにプロセッサに送られる）。実施形態はまた、ファームウェアの更新とは別の、プロセッサが通常の動作中にファームウェア・イメージを破損するある型のエラーに遭遇し、そしてプロセッサが通常の動作中又は再起動の際に失敗を検出する場合の状態に適用可能である。
【００１１】
単に理解を高めるために、ファームウェアの更新に適用可能な実施形態の説明を与える。しかしながら、実施形態はまた、ファームウェア・イメージが通常の動作中に破損する状態にも適用可能である。
【００１２】
図１は、本発明の特定の実施形態による、２つの冗長デバイスの細部を示す。図１において、管理モジュール（ＭＭ）１００は開始デバイスであり、外部デバイス通信媒体１５０を介してサーバ１１０に接続される。サーバ１１０は、アクティブ・ベースボード管理コントローラ（ＢＭＣ）１２０及びスタンバイ・ベースボード管理コントローラ（ＢＭＣ）１３０を含む。アクティブ及びスタンバイＢＭＣ１２０、１３０は、ローカル・リソースに対する管理機能を提供し、また共有リソースに対する冗長管理機能を提供する。
アクティブＢＭＣ１２０は、プロセッサ１２２及び内部メモリ１２４を含む。スタンバイＢＭＣは、プロセッサ１３２及び内部メモリ１３４を含む。
【００１３】
図１において、アクティブ及びスタンバイＢＭＣ１２０、１３０は、冗長プログラマブル・ハードウェア・デバイスである。アクティブＢＭＣ１２０及びスタンバイＢＭＣ１３０はまた、それぞれ、第１及び第２のターゲット・デバイス、又はパートナＢＭＣと呼ぶこともできる。アクティブ及びスタンバイＢＭＣ１２０、１３０は、サーバ１１０全体の信頼性を向上させる冗長性のためのデュアルＢＭＣと言うことができるが、しかし、各ＢＭＣ１２０、１３０が個々に制御する、冗長性で保護されないローカル・コンポーネントが存在する（例えば、１つのＢＭＣ１２０、１３０は、パートナＢＭＣ１２０、１３０によって直接的に制御されるコンポーネントに電力を供給することはできない）。ＢＭＣ１２０、１３０は、各ＢＭＣ１２０、１３０専用の外部メモリ１２８、１３８に加えて、それらの間の内部プライベート通信リンク１４２を有する。これらのコンポーネント１４２、１２８、１３８を用いることにより、実施形態は自動的ファームウェア修正を可能にする。
【００１４】
アクティブＢＭＣ１２０及びスタンバイＢＭＣ１３０は、プライベート通信リンク１４２によって通信することができる。プライベート通信リンク１４２は、アクティブ及びスタンバイＢＭＣ１２０、１３０の間のプライベート通信を可能にするプライベート・デバイス通信媒体と言うことができる。管理モジュール１００は、直接にプライベート通信リンク１４２上に通信を送信することはできない。内部デバイス通信媒体１４０は外部デバイス通信媒体１５０に結合される。特定の実施形態において、外部デバイス通信媒体１５０は、バス（例えば、ＲＳ４８５シリアルバス、集積回路間（Ｉ２Ｃ）バス、デュアルポートＲＡＭ（ＤＰＲＡＭ）、又は他のバスベースの媒体）とすることができ、また内部デバイス通信媒体１４０は、外部デバイス通信媒体１５０に接続されるバス（例えば、内部ＲＳ４８５シリアルバス、集積回路間（Ｉ２Ｃ）バス、デュアルポートＲＡＭ（ＤＰＲＡＭ）、又は他のバスベースの媒体）とすることができる。
【００１５】
通常の動作中、管理モジュール１００は、単一のファームウェア・イメージを（複数のパケットにより）アクティブ及びスタンバイＢＭＣ１２０、１３０の両方に、単一の外部デバイス通信媒体１５０上でファームウェア・イメージを発行することによって送信する。通常の更新プロセスにおいて、各ＢＭＣ１２０、１３０は、ファームウェア・イメージを、プロセッサ１２２、１３２を駆動するＢＭＣ命令セットをストアする内部メモリ１２４、１３４（例えば、内部フラッシュ領域）に直接書き込む。ファームウェア・イメージが破損した場合、各ＢＭＣ１２０、１３０は、ファームウェア更新プロセスにおいて更新されないコード（即ち、ブート・ブロックと呼ばれる場所にストアされるコード）内に準備された一組の縮小機能による新規のファームウェア更新を待つ限定的な機能を有する。しかしながら、ＢＭＣ１２０、１３０の通常の機能は、ファームウェア・イメージが破損した場合には、もはや与えることができない。このことはサーバ１１０において、各ＢＭＣ１２０、１３０がサーバ１１０内のシステム電力を制御するので、問題となり得る。それゆえに、サーバ１１０がファームウェア更新の間に電源が落ちて更新が失敗する場合（即ち、ファームウェア・イメージが破損する）には、サーバ１１０は、有効ファームウェア更新が与えられるまでは電源をオンにすることができず、これは顧客がブレード・サーバの有用性を失うことを意味する。「有効」ファームウェア更新は、破損しておらず、ＢＭＣ１２０、１３０がその機能の正しい実行を開始するのを可能にするものと言うことができる。破損したファームウェアの例示的な結果は、ファームウェア更新が成功裡に完了してＢＭＣ１２０、１３０が正常に開始するが、その通常の機能の幾つかが新規の破損したファームウェアによって妨げられる状況である。第２のＢＭＣ１２０、１３０が存在する場合でも、ファームウェアの失敗の場合には、第２のＢＭＣ１２０、１３０は、パートナＢＭＣ１２０、１３０によって直接制御されるコンポーネントに電力を供給することができず、これはＢＭＣ１２０、１３０の両方が動作状態であることの重要性を強調する。
【００１６】
実施形態により、アクティブＢＭＣ１２０は外部メモリ１２８に結合され、その中にアクティブＢＭＣ１２０はファームウェア・イメージのコピーをストアする。スタンバイＢＭＣ１３０は外部メモリ１３８に結合され、その中にスタンバイＢＭＣ１３０はファームウェア・イメージのコピーをストアする。冗長デバイスの場合、各々の冗長デバイスは同じファームウェアを実行する。従って、外部メモリ１２８、１３８内のファームウェア・イメージのコピーは同じである。これらのコピーにより、ＢＭＣ１２０、１３０のうちの１つが破損したファームウェアを有する場合には、他のＢＭＣ１２０、１３０が外部メモリ１２８、１３８から対応するファームウェア・イメージを供給することができる。
【００１７】
特定の実施形態において、サーバ１１０は、ＩＢＭ（登録商標）ＢｌａｄｅＣｅｎｔｅｒ（登録商標）シャーシ（インターナショナル・ビジネス・マシーンズ・コーポレーションから入手可能）内のブレード・サーバであり、ここでブレード・サーバは、デュアル・ベースボード管理コントローラ（ＢＭＣ）を有する。ブレード・サーバは、中級サーバ・クラスの記憶システムと言うことができる。しかしながら、実施形態は、任意の組のターゲット・デバイス（例えば、アクティブ及びスタンバイＢＭＣ１２０、１３０のような冗長デバイス）に適用可能であり、データ・スニッフィング・モードにおける「スヌーピング」を可能にする、ターゲット・デバイス間の任意の共有通信媒体（例えば、内部デバイス通信媒体１４０）を用いることができ、そして冗長ターゲット・デバイス間の任意のプライベート・デバイス通信媒体（例えば、プライベート通信リンク１４２）を用いることができる。データ・スニッフィング・モード（「プロミスキャス」モードとも呼ばれる）は、ターゲット・デバイスが、届いた各通信を、その通信がそのターゲット・デバイスを宛先にしたものであってもなくても、傍受してその全体を読み取るモードと言うことができる。実施形態は、シリアル又は非シリアルのネットワーク内で用いることができる。本明細書の実施例はファームウェアの更新に関連するが、実施形態はソフトウェアの更新にも適用可能である。また、同じデバイス通信媒体によって更新を受信する任意の数のデバイスが存在できる。アクティブ及びスタンバイＢＭＣ１２０、１３０は、ＩＢＭ（登録商標）ＢｌａｄｅＣｅｎｔｅｒ（登録商標）管理モジュール（ＭＭ）によって用いられるブレード・サーバ内の制御エンティティと言うことができる。
【００１８】
通常の動作中、１つのＢＭＣ（例えば、アクティブＢＭＣ１２０）は、外部デバイス通信媒体１５０を「所有する」と言われ、それゆえ１つのＢＭＣは同時に管理モジュール１００と通信することができる。管理モジュール１００はアクティブＢＭＣ１２０に命令を送信することを認識するが、管理モジュール１００はアクティブＢＭＣ１２０に直接には通信しない。その代わりに、管理モジュール１００は、サーバ１１０のスロットに関連付けられる外部デバイス通信媒体１５０上のアドレスにメッセージを送信するので、アクティブ及びスタンバイＢＭＣ１２０、１３０はこのアドレス上で応答及び／又は聞き取ることができる。従って、管理モジュール１００の見地からは、管理モジュールはいつでも１つのＢＭＣに通信している。サーバ１１０内のデュアルＢＭＣ１２０、１３０の特定の実施形態において、両方のＢＭＣが外部デバイス通信媒体１５０をアクティブに用いることを妨げるハードウェア障害は存在しない（その場合、スタンバイＢＭＣ１３０は内部デバイス通信媒体１４０を介して外部デバイス通信媒体１５０にアクセスすることができる）。しかしながら、特定の実施形態において、外部デバイス通信媒体１５０は、アクティブＢＭＣ１２０と定義されたデフォルトＢＭＣによってアクティブに用いられ、そして他のＢＭＣ１３０は、外部デバイス通信媒体１５０をアクティブに用いるアクティブＢＭＣ１２０が失敗するまで、内部デバイス通信媒体１４０に関する非アクティブ状態に留まる。
【００１９】
図２は、本発明の特定の実施形態による冗長ではない２つのプログラマブル・ハードウェア・デバイスの細部を示す。図２において、管理モジュール（ＭＭ）２００は開始デバイスであり、外部デバイス通信媒体２５０を介してサーバ２１０に接続される。サーバ２１０は、プログラマブル・ハードウェア・デバイスＡ２２０及びプログラマブル・ハードウェア・デバイスＢ２３０を含む。プログラマブル・ハードウェア・デバイスＡ２２０は、プロセッサ２２２及び内部メモリ２２４を含む。プログラマブル・ハードウェア・デバイスＢは、プロセッサ２３２及び内部メモリ２３４を含む。
【００２０】
図２において、プログラマブル・ハードウェア・デバイス２２０、２３０はまた、パートナと呼ぶことができる。プログラマブル・ハードウェア・デバイス２２０、２３０は、それらの間の内部プライベート通信リンク２４２を有し、各プログラマブル・ハードウェア・デバイス２２０、２３０は、外部メモリ２２８、２３８を有する。破線２９０は、プログラマブル・ハードウェア・デバイスＡ２２０が随意に外部メモリ２３８に結合されることを示し、一方、破線２９２は、プログラマブル・ハードウェア・デバイスＢ２３０が随意に外部メモリ２２８に結合されることを示す。このようにして、どちらかの外部メモリ２２８、２３８、又は両方の外部メモリ２２８、２３８は、共有外部メモリとして機能することができる。特定の実施形態において、外部メモリ２２８、２３８は、１つのプログラマブル・ハードウェア・デバイス２２０、２３０に専用のものとし、他のプログラマブル・ハードウェア・デバイス２２０、２３０によってアクセス可能とする。図２に示す実施形態により、プログラマブル・ハードウェア・デバイス２２０、２３０は、同じファームウェアを用いないが、各々は、他のプログラマブル・ハードウェア・デバイス２２０、２３０のファームウェア・イメージのコピーにアクセスすることができる（例えば、それ自体の外部メモリ２２８、２３８から、又は他のプログラマブル・ハードウェア・デバイスの外部メモリ２２８、２３８から）。それゆえに、１つのプログラマブル・ハードウェア・デバイス２２０、２３０が、破損したファームウェアのために失敗する場合、他のプログラマブル・ハードウェア・デバイス２２０、２３０が有効なファームウェア・イメージを供給することができる。
【００２１】
実施形態は外部メモリ１２８、１３８、２２８、２３８に関連するが、プログラマブル・ハードウェア・デバイス１２０、１３０、２２０、２３０の外部の任意の記憶空間を、その記憶空間が不揮発性であるか又は何らかの方法でコンテンツを保護してメモリ内のファームウェアが失われないようにする限り（例えば、電源オフ段階の間）、用いることができる。
【００２２】
図２において、内部デバイス通信媒体２４０は、外部デバイス通信媒体２５０に結合される。特定の実施形態において、外部デバイス通信媒体２５０は、バス（例えば、ＲＳ４８５シリアルバス、集積回路間（Ｉ２Ｃ）バス、デュアルポートＲＡＭ（ＤＰＲＡＭ）、又は他のバスベースの媒体）とすることができ、そして内部デバイス通信媒体２４０は、外部デバイス通信媒体２５０に接続されるバス（例えば、内部ＲＳ４８５シリアルバス、集積回路間（Ｉ２Ｃ）バス、デュアルポートＲＡＭ（ＤＰＲＡＭ）、又は他のバスベースの媒体）とすることができる。
【００２３】
実施形態により、各プログラマブル・ハードウェア・デバイス（例えば、ＢＭＣ１２０、１３０又はデバイス２２０、２３０）は、そのプログラマブル・ハードウェア・デバイスに接続された新規のハードウェア・コンポーネントである外部メモリを用いる。図３は、特定の実施形態による、ファームウェア・イメージの受信に応答して各プログラマブル・ハードウェア・デバイス１２０、１３０、２２０、２３０によって実行される論理を示す。制御はブロック３００で開始し、プログラマブル・ハードウェア・デバイス１２０、１３０、２２０、２３０がファームウェア・イメージを受信する（即ち、受信された第１のファームウェア・イメージ、又は以前に受信されたファームウェア・イメージに対する更新とすることができる新規のファームウェア・イメージ）。ブロック３０２において、プログラマブル・ハードウェア・デバイス１２０、１３０、２２０、２３０は外部メモリ内にファームウェア・イメージをストアする。各外部メモリ１２８、１３８、２２８、２３８は、ファームウェア・イメージの複数のコピーを保持するのに十分に大きい（例えば、プログラマブル・ハードウェア・デバイス１２０、１３０、２２０、２３０がファームウェア・イメージの特定のバージョンを取得するのを可能にする複数のバージョン）。特定の実施形態において、コピーの数は、メモリが幾つのコピーをサポートするかによって決定され、一方、他の実施形態においては、メモリサイズに加えて、又はその代りに他の要因を用いることができる。
【００２４】
具体的には、通常のファームウェアの動作中、各ＢＭＣ１２０、１３０は、ファームウェア・イメージを外部メモリ１２８、１３８内の一領域にコピーする。各ＢＭＣ１２０、１３０は２つ又は複数のコピーを保持する。１つ又は複数の外部メモリ２２８、２３８を共有する非冗長型プログラマブル・ハードウェア・デバイス２２０、２３０に関しては、各プログラマブル・ハードウェア・デバイス２２０、２３０は、そのファームウェア・イメージのコピーを共有外部メモリ２２８、２３８内にストアすることができる。一方、１つ又は複数の外部メモリ２２８、２３８を共有しない非冗長型プログラマブル・ハードウェア・デバイス２２０、２３０に関しては、各プログラマブル・ハードウェア・デバイス２２０、２３０は、他のプログラマブル・ハードウェア・デバイス２２０、２３０のファームウェア・イメージのコピーを受信し、そのコピーをそれ自体の外部メモリ２２８、２３８内にストアする。
【００２５】
図４は、特定の実施形態による、失敗したプログラマブル・ハードウェア・デバイス１２０、１３０、２２０、２３０によって実行される論理を示す。制御はブロック４００で開始し、プログラマブル・ハードウェア・デバイス１２０、１３０、２２０、２３０は隋意に、有効ファームウェア・イメージが必要であると判断してパートナに通知する。特定の実施形態において、プログラマブル・ハードウェア・デバイス１２０、１３０、２２０、２３０がパートナに通知するのではなく、パートナが自動的に失敗を検出して有効ファームウェア・イメージを送信する。ブロック４０２において、プログラマブル・ハードウェア・デバイス１２０、１３０、２２０、２３０は、有効ファームウェア・イメージのコピーを受信する。特定の実施形態において、プログラマブル・ハードウェア・デバイス１２０、１３０、２２０、２３０は、パートナからコピーを受信する。特定の代替の実施形態において、プログラマブル・ハードウェア・デバイス１２０、１３０、２２０、２３０は、その外部メモリ１２８、１３８、２２８、２３８から有効ファームウェア・イメージのコピーを取得する。ブロック４０６において、プログラマブル・ハードウェア・デバイス１２０、１３０、２２０、２３０は、有効ファームウェア・イメージの受信したコピーを用いて復元される。ブロック４０６において、プログラマブル・ハードウェア・デバイス１２０、１３０、２２０、２３０は、隋意に、有効ファームウェア・イメージのコピーをその外部メモリ１２８、１３８、２２８、２３８内にストアする（例えば、ファームウェア・イメージがそれ自体の外部メモリ１２８、１３８、２２８、２３８から取り出されない場合）。
【００２６】
図５は、特定の実施形態による、パートナが失敗したときにプログラマブル・ハードウェア・デバイス１２０、１３０、２２０、２３０によって実行される論理を示す。制御はブロック５００で開始し、プログラマブル・ハードウェア・デバイス１２０、１３０、２２０、２３０はパートナが有効ファームウェア・イメージを必要とすると判断する。その判断はプログラマブル・ハードウェア・デバイス１２０、１３０、２２０、２３０によって自動的に行うことができ、又は、プログラマブル・ハードウェア・デバイス１２０、１３０、２２０、２３０がパートナから失敗の指示を受信することができる。ブロック５０２において、プログラマブル・ハードウェア・デバイス１２０、１３０、２２０、２３０は、外部メモリ１２８、１３８、２２８、２３８から有効ファームウェア・イメージのコピーを取り出す。種々の実施形態において、有効ファームウェア・イメージのコピーは、プログラマブル・ハードウェア・デバイス１２０、１３０、２２０、２３０の専用外部メモリから、又は共有外部メモリから取り出すことができる。ブロック５０４において、プログラマブル・ハードウェア・デバイス１２０、１３０、２２０、２３０は、プライベート通信リンク１４２、２４２を介して、有効ファームウェア・イメージのコピーをパートナに送信する。
【００２７】
図１、及び２つの冗長デバイスが存在する実施形態を参照すると、破損したファームウェア・イメージが管理モジュール１００からＢＭＣ１２０、１３０に渡される場合、１つのＢＭＣ１２０、１３０は同時に更新されるので、ファームウェア更新プロセスは、実施形態によるアクションが実行されずに失敗する可能性がある。特定の実施形態において、破損したＢＭＣ１２０、１３０は、ファームウェア・イメージのコピーに対してその外部メモリ１２８、１３８に直接アクセスしてそれ自体を更新する。特定の実施形態において、ＢＭＣ１２０、１３０が外部メモリ１２０、１３０内に有効ファームウェア・イメージを見出さない場合、又は、破損したＢＭＣ１２０、１３０が指示をパートナに与えるように設計される場合には、破損したＢＭＣ１２０、１３０は、有効ファームウェア・イメージが必要であるとの指示をパートナＢＭＣ１２０、１３０に供給する。パートナＢＭＣ１２０、１３０は、その外部メモリ１２８、１３８内の最新の有効ファームウェア・イメージを破損したＢＭＣ１２０、１３０に供給することにより、又は、それ自体のファームウェア・イメージを直接読み取り、それを他のＢＭＣ１２０、１３０にプライベート通信リンク１４２を介して供給することによって、破損したＢＭＣ１２０、１３０のファームウェアをロールバックする立場にある。動作中のＢＭＣ１２０、１３０は、ファームウェア更新プロセスを開始して破損したパートナＢＭＣ１２０、１３０を更新する管理モジュールとして機能する。ＢＭＣ１２０、１３０のファームウェア更新を開始するための制御は、ハートビート機構を有する有効パートナのドメイン内に配置することができる。ハートビート機構は、プログラマブル・ハードウェア・デバイス１２０、１３０、２２０、２３０が周期的にメッセージをパートナに送信し、パートナからメッセージを受信してパートナが相変わらず機能しているかどうかを判断するものと言うことができる。例えば、プログラマブル・ハードウェア・デバイス１２０、１３０、２２０、２３０が所定の時間内にハートビート機能のメッセージに応答しないとき、パートナのプログラマブル・ハードウェア・デバイス１２０、１３０、２２０、２３０は、プログラマブル・ハードウェア・デバイス１２０、１３０、２２０、２３０が失敗して、有効ファームウェア・イメージを必要とすると判断する。このように完了すると、両方のＢＭＣは再び冗長形式で動作することができる。
【００２８】
図２、及びデバイスが冗長ではない実施形態を参照すると、共有外部メモリ２２８、２３８はプロセッサ２２２、２３２の間で使用可能とすることができ、或いは、両方のプロセッサ２２２、２３２は別々の専用外部メモリ２２８、２３８内にパートナのファームウェア・イメージを維持することができる。プロセッサ２２２、２３２は、冗長である必要はないが、機能する通信インターフェース（例えば、プライベート通信リンク２４２）を有する。種々の実施形態において、各プロセッサ２２２、２３２が通常の動作中にハートビート機能を実施するか、又は破損したプロセッサ２２２、２３２が失敗をパートナ・プロセッサ２２２、２３２に示す。ファームウェアの更新に対して、ハートビート機構は一時的に停止するが、その理由は、更新されるプロセッサ２２２、２３２がその機能を処理する立場にないからである（即ち、通常、その機能はファームウェア更新中にアクセスできない動作中のコード内にあるので）。しかしながら、ハートビード機構が時間内に開始しない場合に終了するタイムアウトを実行することができる（即ち、タイムアウトは、パートナ・プロセッサのためのファームウェア更新に許容される最長時間として定義することができる）。タイムアウトの場合、パートナ・プロセッサ２２２、２３２は、自動的に外部メモリ２２８、２３８からファームウェア・イメージを取り出して、破損したプロセッサ２２２、２３２を更新する。特定の実施形態において、破損したプロセッサ２２２、２３２は、パートナ・プロセッサ２２２、２３２から使用可能なファームウェアの最新バージョンのファームウェア・イメージを要求し受信する。ファームウェア・イメージは、プロセッサ２２２、２３２の間のプライベート通信リンク２４２によって供給することができ、又は、代替的に、パートナ・プロセッサ２２２、２３２が、ジョイント・テスト・アクション・グループ（ＪＴＡＧ）インターフェースのようなプロセッサの内部メモリ２２４、２３４を更新するユーティリティに直接書き込むことによって内部メモリ２２４、２３４を直接更新する機能を有する場合には、破損したプロセッサの内部メモリ２２４、２３４（例えば、内部フラッシュ領域）を直接更新することができる。完了すると、破損したプロセッサは有効ファームウェア・イメージを有する。
【００２９】
これらの実施形態を用いて、破損したファームウェア・イメージを受信したプログラマブル・ハードウェア・デバイス１２０、１３０、２２０、２３０は、有効ファームウェア・イメージにより自動的に復元される。実施形態により、プログラマブル・ハードウェア・デバイス１２０、１３０、２２０、２３０が通常の動作中にそのファームウェア又はファームウェア・イメージを破損するエラーに遭遇するとき、プログラマブル・ハードウェア・デバイス１２０、１３０、２２０、２３０は、それ自体の外部メモリ１２８、１３８、２２８、２３８からの、又はパートナ１２０、１３０、２２０、２３０からの有効ファームウェア・イメージを用いて復元することができる。通常の動作中にファームウェア・イメージを破損する条件の一例は、ファームウェアに無効なコードを実行させるか又は不要なデータにアクセスさせる無効なメモリ・アクセスである。この場合、プログラマブル・ハードウェア・デバイス１２０、１３０、２２０、２３０が、通常の動作中にそれが破損した状態にあることを識別する機能を有する場合には、プログラマブル・ハードウェア・デバイス１２０、１３０、２２０、２３０は有効ファームウェア・イメージにより復元することができる。また、プログラマブル・ハードウェア・デバイス１２０、１３０、２２０、２３０がタイムアウト（例えば、ウォッチドッグ・タイマーのタイムアウト）のために再起動し、その初期化中に、プログラマブル・ハードウェア・デバイス１２０、１３０、２２０、２３０が、問題があったことを識別する場合には、プログラマブル・ハードウェア・デバイス１２０、１３０、２２０、２３０は、通常の起動を停止して有効ファームウェア・イメージを取得することができる。ウォッチドッグ・タイマーは、ハードウェアにより周期的にリセットされるタイマーと言うことができ、タイマーがリセットされない場合、システムは失敗状態に入る。
【００３０】
従って、実施形態により、破損したプログラマブル・ハードウェア・デバイス１２０、１３０、２２０、２３０は、パートナのプログラマブル・ハードウェア・デバイス１２０、１３０、２２０、２３０から有効ファームウェア・イメージを取得し、有効ファームウェア・イメージにより動作することができる。
【００３１】
破損したファームウェア・イメージは、ファームウェア更新中又は通常の動作中に復元することができる。実施形態は、有効ファームウェア・イメージへのロール・バックを可能にする。実施形態はまた、ハートビート機構を提供して、通常の動作中にパートナ１２０、１３０、２２０、２３０の失敗を検出する。
【００３２】
付加的な実施形態の細部
説明した動作は、標準のプログラミング及び／又は工学技術を用いてソフトウェア、ファームウェア、ハードウェア又はそれらの任意の組合せを作成する方法、コンピュータ・プログラム製品又は装置として実施することができる。
【００３３】
実施形態の各々は、もっぱらハードウェアの実施形態、もっぱらソフトウェアの実施形態、又は、ハードウェア要素及びソフトウェア要素の両方を含む実施形態の形をとることができる。実施形態は、ファームウェア、常駐ソフトウェア、マイクロコードなどを含むがそれらに限定されないソフトウェアの内部に実装することができる。
【００３４】
さらに、実施形態は、コンピュータ又は任意の命令実行システムにより又はそれと共に用いるためのプログラム・コードを与えるコンピュータ使用可能又はコンピュータ可読媒体からアクセスできるコンピュータ・プログラム製品の形態をとることができる。この説明の目的で、コンピュータ使用可能又はコンピュータ可読媒体は、命令実行システム、装置又はデバイスにより、又はそれと共に用いるためのプログラムを含み、ストアし、通信し、伝搬し、又は輸送することができる任意の装置とすることができる。
【００３５】
説明した動作は、コンピュータ使用可能又はコンピュータ可読媒体内に維持されるコードとして実装することができ、ここでプロセッサは、コンピュータ可読媒体からコードを読み取って実行することができる。媒体は、電子、磁気、光学、電磁気、赤外線、又は半導体システム（又は装置又はデバイス）、又は伝搬媒体とすることができる。コンピュータ可読媒体の実施例は、半導体又はソリッド・ステート・メモリ、磁気テープ、リムーバブル・コンピュータ・ディスケット、剛性磁気ディスク、光ディスク、磁気記憶媒体（例えば、ハードディスク・ドライブ、フロッピー・ディスク、テープなど）、揮発性及び不揮発性メモリ・デバイス（例えば、ランダム・アクセス・メモリ（ＲＡＭ）、ＤＲＡＭ、ＳＲＡＭ、読み取り専用メモリ（ＲＯＭ）、ＰＲＯＭ、ＥＥＰＲＯＭ、フラッシュ・メモリ、ファームウェア、プログラム可能な論理など）を含む。光ディスクの現在の実施例は、コンパクト・ディスク読み取り専用メモリ（ＣＤ−ＲＯＭ）、コンパクト・ディスク読み取り／書き込み（ＣＤ−Ｒ／Ｗ）メモリ及びＤＶＤを含む。
【００３６】
説明した動作を実施するコードは、さらに、ハードウェア論理（例えば、集積回路チップ、プログラム可能なゲート・アレイ（ＰＧＡ）、特定用途向け集積回路（ＡＳＣＩ）など）内にさらに実装することができる。またさらに、説明した動作を実施するコードは「伝送信号」内に実装することができ、ここで伝送信号は、空間を通して、又は光ファイバ、銅線などのような伝送媒体を通して伝搬することができる。コード又は論理が内部に符号化された伝送信号は、無線信号、衛星伝送、電波、赤外線信号、ブルートゥースなどをさらに含むことができる。コード又は論理が内部に符号化された伝送信号は、送信ステーションによって送信され、受信ステーションによって受信することができ、その際伝送信号内に符号化されたコード又は論理は復号して、受信及び送信ステーション又はデバイスのハードウェア又はコンピュータ可読媒体内にストアすることができる。
【００３７】
コンピュータ・プログラム製品は、コンピュータ使用可能又はコンピュータ可読媒体、ハードウェア論理、及び／又は、コードを内部に実装することができる伝送信号を含むことができる。当然、当業者は、この構成に対して多くの修正を、本実施形態の範囲から逸脱せずに施すことができること、及びコンピュータ・プログラム製品は当技術分野で既知の任意の適切な情報保持媒体を含むことができることを理解するであろう。
【００３８】
論理という用語は、例として、ソフトウェア、ハードウェア、ファームウェア、及び／又はソフトウェアとハードウェアの組合せを含むことができる。
【００３９】
特定の実施は、人又は自動処理によるコンピュータ・インフラストラクチャを配備してコンピュータ可読コードをコンピュータ・システム内に組み込む方法に向けることができ、ここでコードはコンピュータ・システムと共に説明した実施の動作を実行することができる。
【００４０】
図３、図４及び図５の論理は、特定の順序で行われる特定の動作を説明する。代替の実施形態において、論理動作の中の幾つかは異なる順序で実行し、修正し又は除去することができる。さらに、上述の論理に動作を加えて、なお説明した実施形態に適合させることができる。さらに、本明細書で説明した動作は連続的に行うことができ、又は特定の動作は並行して処理することができ、或いは、単一のプロセスにより実行されるように説明した動作は分散プロセスによって実行することができる。
【００４１】
図３、図４及び図５に示した論理は、ソフトウェア、ハードウェア、プログラム可能な及び非プログラム式ゲート・アレイ論理内に、又は、ハードウェア、ソフトウェア若しくはゲート・アレイ論理のなんらかの組合せの中に実装することができる。
【００４２】
図６は、特定の実施形態により用いることができるシステム・アーキテクチャ６００を示す。クライアント・コンピュータ１００及び／又はサーバ・コンピュータ１２０は、システム・アーキテクチャ６００を実装することができる。システム・アーキテクチャ６００は、プログラム・コードをストア及び／又は実行するのに適し、システム・バス６２０を通してメモリ要素６０４に直接的又は間接的に結合された少なくとも１つのプロセッサ６０２を含む。メモリ要素６０４は、プログラム・コードの実際の実行中に用いられるローカル・メモリ、大容量記憶装置、及び、実行中に大容量記憶装置からコードを取り出さなければならない回数を減らすための、少なくとも幾つかのプログラム・コードの一時的記憶を与えるキャッシュ・メモリを含むことができる。メモリ要素６０４は、オペレーティング・システム６０５及び１つ又は複数のコンピュータ・プログラム６０６を含む。メモリ要素６０４はまた、本発明の実施形態によって教示される説明した動作の幾つか又は全てを実施するコード６３０を含むことができる。コード６３０を図示するが、本発明の実施形態によって教示される説明した動作は、代替的に、ハードウェアにおいて、又はハードウェアとソフトウェアの組合せにおいて実施することができる。
【００４３】
入力／出力（Ｉ／Ｏ）デバイス６１２、６１４（キーボード、ディスプレイ、ポインティング・デバイスなどを含むがそれらに限定されない）は、システムに直接に、又は介在するＩ／Ｏコントローラ６１０により、結合することができる。
【００４４】
またネットワーク・アダプタ６０８をシステムに結合して、データ処理システムが他のデータ処理システム又は遠隔プリンタ又は記憶装置に、介在するプライベート又はパブリック・ネットワークを通して結合できるようにすることができる。モデム、ケーブル・モデム及びイーサネット・カードは、現在利用できるネットワーク・アダプタ６０８の一部にすぎない。
【００４５】
システム・アーキテクチャ６００は、記憶装置６１６（例えば、磁気ディスク・ドライブ、光ディスク・ドライブ、テープ・ドライブなどのような不揮発性記憶領域）に結合することができる。記憶装置６１６は、内部記憶デバイス又は付属記憶装置又はネットワーク・アクセス可能記憶装置を含むことができる。記憶装置６１６内のコンピュータ・プログラム６０６は、当技術分野で知られている様式で、メモリ要素６０４にロードしてプロセッサ６０２によって実行することができる。
【００４６】
システム・アーキテクチャ６００は、図示したよりも少数のコンポーネント、本明細書では説明しなかった付加的なコンポーネント、又は説明したコンポーネントと付加的なコンポーネントの何らかの組合せを含むことができる。システム・アーキテクチャ６００は、メインフレーム、サーバ、パーソナル・コンピュータ、ワークステーション、ラップトップ・コンピュータ、ハンドヘルド・コンピュータ、電話デバイス、ネットワーク・アプライアンス、仮想デバイス、ストレージ・コントローラなどのような、当技術分野で既知の任意のコンピュータ・デバイスを含むことができる。
【００４７】
本発明の実施形態に関する前述の説明は、例証と説明のために提示したものである。これは網羅的であること、又は実施形態を開示された通りの形に限定することを意図したものではない。
【符号の説明】
【００４８】
１００、２００：管理モジュール（ＭＭ）
１１０、２１０：サーバ
１２０：アクティブ・ベースボード管理コントローラ（ＢＭＣ）（プログラマブル・ハードウェア・デバイス）
１２２、１３２、２２２、２３２：プロセッサ
１２４、１３４、２２４、２３４：内部メモリ
１２８、１３８、２２８、２３８：外部メモリ
１３０：スタンバイ・ベースボード管理コントローラ（ＢＭＣ）（プログラマブル・ハードウェア・デバイス）
１４０：内部デバイス通信媒体
１４２：内部プライベート通信リンク
１５０、２５０：外部デバイス通信媒体
２２０、２３０：プログラマブル・ハードウェア・デバイス
２９０、２９２：破線
６００：システム・アーキテクチャ
６０２：プロセッサ
６０４：メモリ要素
６０５：オペレーティング・システム
６０６：コンピュータ・プログラム
６０８：ネットワーク・アダプタ
６１０：Ｉ／Ｏコントローラ
６１２：入力デバイス
６１４：出力デバイス
６１６：記憶装置
６２０：システム・バス
６３０：コード
【図１】
2010524108.tif 000003
【図２】
2010524108.tif 000004
【図３】
2010524108.tif 000005
【図４】
2010524108.tif 000006
【図５】
2010524108.tif 000007
【図６】
2010524108.tif 000008
【国際調査報告】
2010524108.tif 000009
2010524108.tif 000010
2010524108.tif 000011