(57)【要約】  ノード上における複数の中央処理ユニット（ＣＰＵ）を備える複数のエージェント間でのファームウェアの共有が記載されている。一例では、コンピューティングノードが、バスと、複数のエージェントのファームウェアを記憶する、上記バスに結合された不揮発性メモリと、複数のＣＰＵの電源投入シーケンスを実施する電源シーケンサと、この電源シーケンサの出力に基づいて、複数のＣＰＵの状態をそれぞれ制御する複数の電源制御ステートマシンと、これらの複数の電源制御ステートマシンの状態に基づいて、複数のエージェントを不揮発性メモリに選択的に結合するバスコントローラとを備える。【選択図】図２
2016519816.tif 000002
【特許請求の範囲】
【請求項１】
ノード上において複数の中央処理ユニット（ＣＰＵ）を有する複数のエージェント間でファームウェアを共有する装置であって、
バスと、
前記バスに結合され、前記複数のエージェントのファームウェアを記憶する不揮発性メモリと、
前記複数のＣＰＵの電源投入シーケンスを実施する電源シーケンサと、
前記電源シーケンサの出力に基づいて、前記複数のＣＰＵの状態をそれぞれ制御する複数の電源制御ステートマシンと、
前記複数の電源制御ステートマシンの状態に基づいて、前記複数のエージェントを前記不揮発性メモリに選択的に結合するバスコントローラと、
を備える、装置。
【請求項２】
前記バスコントローラは、
前記不揮発性メモリとの通信用に前記複数のエージェントのうちの１つを選択するバスアービタと、
前記不揮発性メモリと、前記バスアービタによって選択された前記複数のエージェントのうちの１つとの間で通信リンクを確立するバスマルチプレクサと、
を備える、請求項１に記載の装置。
【請求項３】
前記バスはシリアルデータバスである、請求項１に記載の装置。
【請求項４】
前記複数のエージェントは、前記ファームウェアのイメージを前記不揮発性メモリにロードする管理エージェントを更に含む、請求項１に記載の装置。
【請求項５】
前記複数の電源制御ステートマシンのそれぞれは、前記複数のＣＰＵのそれぞれ１つを、電源投入のために前記電源シーケンサによって選択されるまでリセット状態に保持する、請求項１に記載の装置。
【請求項６】
ノード上においてバスに接続された複数の中央処理ユニット（ＣＰＵ）を有する複数のエージェント間でファームウェアを共有する方法であって、
前記バスに結合された不揮発性メモリに前記複数のエージェントのファームウェアを記憶するステップと、
前記複数のＣＰＵの電源投入シーケンスを実施するステップと、
前記電源投入シーケンスに基づいて前記複数のＣＰＵの状態を制御するステップと、
前記複数のＣＰＵの状態に基づいて、前記複数のエージェントを前記不揮発性メモリに選択的に結合するステップと、
を含む、方法。
【請求項７】
前記状態を制御するステップは、
前記複数のＣＰＵのうち、前記電源投入シーケンスに基づいて電源投入を許可されるＣＰＵを選択するステップと、
前記不揮発性メモリへのアクセスを前記ＣＰＵに与えるステップと、
該選択されたＣＰＵ以外の前記複数のＣＰＵのそれぞれをリセット状態に維持するステップと、
前記選択するステップ、前記与えるステップ、及び前記維持するステップを、前記複数のＣＰＵのうちの少なくとも１つのさらなるＣＰＵについて繰り返すステップと、
を含む、請求項６に記載の方法。
【請求項８】
前記不揮発性メモリへのアクセスを管理プロセスに与えて、該不揮発性メモリに記憶された前記ファームウェアを更新するステップ、
を更に含む、請求項６に記載の方法。
【請求項９】
前記複数のエージェントのうちの要求側エージェントから、前記不揮発性メモリへのアクセスを得る要求を受信するステップと、
前記要求に基づいて、前記要求側エージェントに排他的なアクセスを連続的に与えるステップと、
を更に含む、請求項６に記載の方法。
【請求項１０】
前記バスはシリアルデータバスである、請求項６に記載の方法。
【請求項１１】
コンピュータシステムであって、
少なくとも１つのノードを備え、該少なくとも１つのノードは、
複数の中央処理ユニット（ＣＰＵ）を有する複数のエージェントと、
バスと、
前記バスに結合され、前記複数のエージェントのファームウェアを記憶する不揮発性メモリと、
前記バスに結合された集積回路と、
を備え、前記集積回路は、
前記複数のＣＰＵの電源投入シーケンスを実施する電源シーケンサと、
前記電源シーケンサの回路の出力に基づいて、前記複数のＣＰＵの状態をそれぞれ制御する複数の電源制御ステートマシンと、
前記複数の電源制御ステートマシンの回路の状態に基づいて、前記複数のエージェントを前記不揮発性メモリに選択的に結合するバスコントローラと、
を備える、コンピュータシステム。
【請求項１２】
前記バスコントローラは、
前記不揮発性メモリとの通信用に前記複数のエージェントのうちの１つを選択するバスアービタと、
前記不揮発性メモリと、前記バスアービタによって選択された前記複数のエージェントのうちの１つとの間で通信リンクを確立するバスマルチプレクサと、
を備える、請求項１１に記載のコンピュータシステム。
【請求項１３】
前記バスはシリアルデータバスである、請求項１１に記載のコンピュータシステム。
【請求項１４】
前記複数のエージェントは、前記ファームウェアのイメージを前記不揮発性メモリにロードする管理エージェントを更に含む、請求項１１に記載のコンピュータシステム。
【請求項１５】
前記複数の電源制御ステートマシンのそれぞれは、前記複数のＣＰＵのそれぞれ１つを、電源投入のために前記電源シーケンサによって選択されるまでリセット状態に保持する、請求項１１に記載のコンピュータシステム。
【発明の詳細な説明】
【背景技術】
【０００１】
コンピュータシステムは、電源が投入されたとき又は「ブート」されたときに実行される最初のコードを記憶する不揮発性メモリを備える。この不揮発性メモリは、「ファームウェア」と呼ぶことができる。ファームウェアのコードは、基本入出力システム（ＢＩＯＳ）、統合拡張ファームウェアインタフェース（ＵＥＦＩ：ユニファイド・エクステンシブル・ファームウェア・インタフェース）等のファームウェアインタフェースを提供することができる。ファームウェアのコードの少なくとも一部分は、更新可能とすることができる。ファームウェア内の更新可能なコードの現在の状態は、「イメージ」と呼ばれる。このため、ファームウェアの現在のイメージは、新たなイメージと置き換えることができる。ファームウェア更新プロセスは、ファームウェアの不揮発性メモリの消去及び再プログラミングを伴うことができる。
【０００２】
現代のコンピュータは、多くの場合、単一のプロセッサシステムを上回る改善された処理速度及び性能を提供する複数のプロセッサを有する。通常、システム内の各プロセッサは、そのプロセッサがオペレーティングシステム（ＯＳ）をロードすることを可能にする専用のファームウェアを有する。この専用のファームウェアは、プロセッサのそれぞれに個別の不揮発性メモリに記憶されている。このファームウェアをアップグレードするには、更新されたファームウェアをプロセッサごとの各メモリ内にロードする必要がある。
【０００３】
本発明の幾つかの実施形態が以下の図に関して説明される。
【図面の簡単な説明】
【０００４】
【図１】一例示の実施態様によるコンピューティングノードのブロック図である。
【図２】本発明の一例による図１のコンピューティングノードのファームウェアサブシステムのブロック図である。
【図３】本発明の一例によるコンピュータシステムを示すブロック図である。
【図４】一例示の実施態様によるノード上のバスに接続された複数のＣＰＵを備える複数のエージェント間でファームウェアを共有する方法を示すフロー図である。
【図５】本発明の一例によるＣＰＵ状態を制御する方法を示すフロー図である。
【発明を実施するための形態】
【０００５】
コンピューティングノードにおけるエージェント間でのファームウェアの共有が説明される。一例では、複数のエージェントのファームウェアを記憶する不揮発性メモリが、バスに結合されている。これらの複数のエージェントは、複数の中央処理ユニット（ＣＰＵ）を備える。電源シーケンサが、複数のＣＰＵの電源投入（power-up）シーケンスを実施する。複数の制御ステートマシン（制御状態機械）が、電源シーケンサの出力に基づいてＣＰＵの状態をそれぞれ制御する。バスコントローラが、電源制御ステートマシンの状態に基づいて、エージェントを不揮発性メモリに選択的に結合する。このように、ファームウェアを記憶する単一の不揮発性メモリを複数のエージェント間で共有することができる。その上、バスコントローラが、電源シーケンサの出力に基づいて、ＣＰＵ間での不揮発性メモリへのアクセスを調停する。ファームウェアアクセスの調停と電源シーケンシングとの間のこの結合によって、ＣＰＵが任意の特定の電源投入シーケンスに基づいてファームウェアを取得して実行することが必要なときに、それを行うことが可能になる。
【０００６】
一例では、ハードウェア及びソフトウェアの組み合わせを用いて、複数の中央処理ユニット（ＣＰＵ）をブートするのに用いられるファームウェアを含む単一の不揮発性メモリデバイスへの共有されたアクセスを管理することができる。この不揮発性メモリがＣＰＵのいずれによっても用いられていないときに管理エージェントを用いてファームウェアを更新することができ、全てのＣＰＵは同時に更新を認識する（see）ことができる。この不揮発性メモリは、コンピューティングノードにおける他のエージェントのファームウェアを記憶するのに用いることができる。ファームウェアを有する単一の不揮発性メモリを複数のエージェント間で共有することによって、ノードコストが削減され、必要とされる場所（real estate：土地）がより少なくなる。ファームウェアを有する単一の不揮発性メモリしか存在しないので、全てのエージェントのファームウェアの更新ポイントは単一である。これによって、更新時間を節約することができる。一例では、管理エージェントは、ＣＰＵ上で動作する悪意のあるソフトウェアによる破損に対するより大きなセキュリティレベルを提供するために、不揮発性メモリに書き込みを行う独占権を有することができる。
【０００７】
図１は、一例示の実施態様によるコンピューティングノード１００のブロック図である。コンピューティングノード１００は、単一のコンピュータシステムとすることもできるし、複数のそのようなコンピューティングノードを備えるより大きなコンピュータシステムの一部とすることもできる。コンピューティングノード１００は、複数の中央処理ユニット（ＣＰＵ）１０２、管理プロセッサ１０４、様々なサポート回路（支援回路）１０６、メモリ１０８、様々な入出力（ＩＯ）回路１２０、ファームウェア１１４、及び相互接続回路１０１を備える。相互接続回路１０１は、コンピュータシステム１００の構成要素間の通信を容易にするバス、ブリッジ等を提供することができる。ＣＰＵ１０２は、当該技術分野において知られている任意のタイプのマイクロプロセッサを含むことができる。サポート回路１０６は、キャッシュ、電源装置、クロック回路、データレジスタ等を含むことができる。メモリ１０８は、ランダムアクセスメモリ、読み出し専用メモリ、キャッシュメモリ、磁気読み出し／書き込みメモリ等、又はそのようなメモリデバイスの任意の組み合わせを含むことができる。
【０００８】
管理プロセッサ１０４は、任意のタイプのマイクロプロセッサ、マイクロコントローラ、マイクロコンピュータ等を含むことができる。管理プロセッサ１０４は、システム管理環境と、ＣＰＵ１０２、サポート回路１０６、メモリ１０８、ＩＯ回路１２０、及び／又はファームウェア１１４を含むコンピューティングノード１００のハードウェア構成要素との間のインタフェースを提供する。幾つかの実施態様では、管理プロセッサ１０４は、ベースボード管理コントローラ（ＢＭＣ）と呼ぶことができる。管理プロセッサ１０４及びその機能は、ＣＰＵ１０２のものから分離している。
【０００９】
ファームウェア１１４は、ＣＰＵ１０２を含む、ノード１００内の様々なデバイスによって用いられるコードを記憶する不揮発性メモリを含むことができる。このファームウェアは、ＢＩＯＳ、ＵＥＦＩ等を含むことができる。ファームウェア１１４は、ブート又はリセットの際にＣＰＵ１０２によって最初に実行される、「ブートコード」と呼ばれるコードも含むことができる。「不揮発性メモリ」という用語は、本明細書において用いられるとき、任意のタイプの不揮発性記憶装置を指すことができる。例として、読み出し専用メモリ（ＲＯＭ）、電気的消去可能プログラマブルＲＯＭ（ＥＥＰＲＯＭ）、フラッシュメモリ、強誘電ランダムアクセスメモリ（Ｆ−ＲＡＭ）等、及びそのようなデバイスの組み合わせが含まれる。
【００１０】
図２は、本発明の一例によるコンピューティングノード１００のファームウェアサブシステム２００のブロック図である。ファームウェアサブシステム２００は、複数のエージェント２０２、コントローラ２０４、不揮発性メモリ２０６、及びバス２０８を備える。エージェント２０２は、ＣＰＵ１０２及び管理プロセッサ１０４を備えることができる。一例では、エージェント２０２は、少なくとも１つの他のエージェント（「他のエージェント（複数の場合もある）２１０」）を含むことができる。不揮発性メモリ２０６は、ファームウェア１１４を記憶する。ファームウェア１１４は、エージェント２０２のそれぞれによる実行用のコードを含むことができる。バス２０８は、シリアル周辺インタフェース（ＳＰＩ）バス等のシリアルデータバスとすることができる。別の例では、バスは、パラレルバスを含む任意のタイプのバスとすることができる。エージェント２０２、コントローラ２０４、及び不揮発性メモリ２０６は、通信用にバス２０８に結合されている。
【００１１】
コントローラ２０４は、電源シーケンサ２１２、複数の電源制御ステートマシン２１４、及びバスコントローラ２１６を備えることができる。一例では、コントローラ２０４は、特定用途向け集積回路（ＡＳＩＣ）、プログラマブルロジックデバイス（ＰＬＤ）（例えば、複合プログラマブルロジックデバイス（ＣＰＬＤ）又はフィールドプログラマブルゲートアレイ（ＦＰＧＡ））等の集積回路とすることができる。一例では、電源シーケンサ２１２、複数の電源制御ステートマシン２１４、及びバスコントローラ２１６のうちの１つ又は複数は、集積回路に実装された回路とすることができる。一例では、電源シーケンサ２１２、制御ステートマシン２１４、及びバスコントローラ２１６のうちの１つ又は複数は、集積回路内のプロセッサによって実行されるソフトウェアとして実施することができる。別の例では、コントローラ２０４の要素は、ハードウェア回路及びソフトウェアの組み合わせを用いて実施することができる。
【００１２】
電源シーケンサ２１２は、ＣＰＵ１０２の電源投入シーケンスを実施する。一例では、電源シーケンサ２１２は、電源投入のために一時に１つのＣＰＵを選択する。所与のＣＰＵがその電源投入を完了した後、電源シーケンサ２１２は、別のＣＰＵを選択する。このように、ＣＰＵ１０２は、同時に全てが電源投入されるのではなく、順次電源投入される。「電源オン（power-on）」及び「電源投入」という用語は、本明細書において同じ意味に用いられる。一般に、ＣＰＵは、特定の予め規定されたロケーション（例えば、リセットベクトル）から開始する命令の実行を目的として「電源オン」する。
【００１３】
電源制御ステートマシン２１４は、電源シーケンサ２１２の出力に基づいてＣＰＵ１０２の状態を制御する。一例では、ＣＰＵのそれぞれは、電源オフ、リセット、電源オン、及び様々な部分的電源供給状態（例えば、様々なスリープ状態）のうちのいずれか等の様々な状態にある可能性がある。ＣＰＵ１０２のそれぞれは、専用の電源制御ステートマシン２１４を備える。一例では、電源制御ステートマシン２１４は、電源オンされていないＣＰＵ１０２のそれぞれをリセット状態に維持する。
【００１４】
バスコントローラ２１６は、電源制御ステートマシン２１４の状態に基づいて、エージェント２０２を不揮発性メモリ２０６に選択的に結合する。電源制御ステートマシン２１４が、ＣＰＵ１０２のうちの１つが電源オンされることを示しているとき、バスコントローラ２１６は、この選択されたＣＰＵ１０２を不揮発性メモリ２０６に結合する。一例では、バスコントローラ２１６は、バスアービタ２１８及びバスマルチプレクサ２２０を備える。バスアービタ２１８は、バス２０８を介した不揮発性メモリ２０６との通信用にエージェント２０２のうちのいずれかを選択する。すなわち、バスアービタ２１８は、一時に１つのエージェントにバスアクセスを与える。バスアービタ２１８は、各ＣＰＵ１０２が電源制御ステートマシン２１４の出力（及び間接的に電源シーケンサ２１２の出力）に基づいて電源オンされる際に、そのようなＣＰＵにバスアクセスを与えることができる。バスマルチプレクサ２２０は、不揮発性メモリと、バスアービタ２１８によって選択されたエージェント２０２との間に通信リンクを確立する。バスコントローラ２１６は、本発明とともに用いることができる異なるタイプの既知のバスに基づく異なる構成を有することができることが理解されるべきである。一般に、バスコントローラ２１６は、複数のエージェント２０２間での不揮発性メモリ２０６への共有アクセスを容易にする。ＣＰＵ１０２が、不揮発性メモリ２０６へのアクセスを有すると、ＣＰＵ１０２は、そのファームウェアを取り出して、電源投入を行うことができる。
【００１５】
バスコントローラ２１６は、ＣＰＵ１０２以外のエージェント２０２にバスアクセスを与えるさらなる入力を受信することができる。例えば、バスコントローラ２１６は、不揮発性メモリ２０６へのアクセスを得るための他のエージェント２０２からのバスアクセス要求にサービスを提供することができる。一例では、管理プロセッサ１０４は、そのような要求をバスコントローラ２１６に送信することができる。管理プロセッサ１０４は、ファームウェアを書き込み及び／又は読み出すために、不揮発性メモリ２０６へのアクセスを要求することができる。例えば、管理プロセッサ１０４は、ファームウェアの様々なイメージ（複数の場合もある）（例えば、エージェント２０２のうちのいずれかのアップグレードされたファームウェア）を不揮発性メモリに書き込むことができる。他のエージェント２１０のいずれも、不揮発性メモリに記憶されたファームウェアを書き込み及び／又は読み出すための不揮発性メモリへのアクセスを同様に要求することができる。
【００１６】
図３は、本発明の一例によるコンピュータシステム３００を示すブロック図である。コンピュータシステム３００は、複数のコンピューティングノード３０２を備える。コンピューティングノード３０２のそれぞれは、コンピューティングノード１００と同様に構成することができる。コンピューティングノード３０２のそれぞれは、図２に示すものと同様のファームウェアサブシステム２００を備えることができる。すなわち、各コンピューティングノード３０２は、不揮発性メモリ内のファームウェアへの共有アクセスを有する複数のエージェントを備える。これらのエージェントは、電源投入及びブートのために不揮発性メモリへの共有アクセスを取得してそれらのファームウェアを取り出す複数のＣＰＵを備える。
【００１７】
図４は、一例示の実施態様による、ノード上においてバスに接続された複数のＣＰＵを備える複数のエージェント間でファームウェアを共有する方法４００を示すフロー図である。方法４００は、ステップ４０２から開始する。このステップにおいて、複数のエージェントのファームウェアが、バスに接続された不揮発性メモリに記憶される。ステップ４０４において、複数のＣＰＵの電源投入シーケンスが実施される。ステップ４０６において、複数のＣＰＵの状態が、電源投入シーケンスに基づいて制御される。ステップ４０８において、エージェントが、ＣＰＵの状態に基づいて不揮発性メモリに選択的に結合される。
【００１８】
ステップ４１０において、要求側エージェントに与えられる不揮発性メモリへのアクセス及び排他的なアクセスを得るためのさらなる要求（複数の場合もある）を行うことができる。特に、ステップ４１２において、管理プロセッサは、不揮発性メモリへのアクセスを与えられて、不揮発性メモリに記憶されたファームウェアを更新することができる。
【００１９】
図５は、本発明の一例によるＣＰＵ状態を制御する方法５００を示すフロー図である。方法５００は、方法４００におけるステップ４０６において実行することができる。ステップ５０２において、電源オンされることを許可されるＣＰＵが、電源投入シーケンスに基づいて選択される。ステップ５０４において、このＣＰＵには、不揮発性メモリへのバスアクセスが与えられる。ステップ５０６において、他のＣＰＵのそれぞれは、リセット状態に維持される。方法５００は、その後、ＣＰＵごとに繰り返すことができる。
【００２０】
上記説明において、本発明の理解を提供するために、数多くの詳細が述べられている。しかしながら、本発明はこれらの詳細がなくても実施することができることが当業者によって理解されるであろう。本発明は、限られた数の実施形態に関して開示されているが、当業者であれば、これらの実施形態から数多くの変更形態及び変形形態を認識するであろう。添付の特許請求の範囲は、本発明の真の趣旨及び範囲内に含まれる変更形態及び変形形態を包含することが意図されている。
【図１】
2016519816.tif 000003
【図２】
2016519816.tif 000004
【図３】
2016519816.tif 000005
【図４】
2016519816.tif 000006
【図５】
2016519816.tif 000007
【国際調査報告】
2016519816.tif 000008
2016519816.tif 000009