(57)【要約】【課題】合理化されたサーバ設計の方法及びシステムを提供する。【解決手段】異なるタイプのサーバ用のベースボードの構成を可能にするためのシステム及び方法が開示される。所望のパラメータ及び対応するサーバ識別情報が、ファームウェアイメージ内のハードウェア又はソフトウェアストラップ構造に記憶される。サーバ製品タイプを含むボード識別情報が、ベースボードのメモリから読み取られる。サーバ製品タイプが、ストラップ構造内のサーバ識別情報と比較される。対応する所望のパラメータが、ベースボードのベースボードコンポーネントにロードされ、サーバ機能が実行される。【選択図】図３
2020038604.tif 000002
【特許請求の範囲】
【請求項１】
サーバの機能を構成する方法であって、
複数の所望のパラメータと、対応するサーバ識別情報と、をストラップ構造に記憶する工程と、
サーバ製品タイプを含むボード識別情報をベースボードのメモリから読み取る工程と、
前記サーバ製品タイプを、前記ストラップ構造内の前記サーバ識別情報と比較する工程と、
対応する前記所望のパラメータを前記ベースボードのベースボードコンポーネントにロードして、サーバ機能を実行する工程と、
を含むことを特徴とする方法。
【請求項２】
前記ベースボードコンポーネントはプラットフォームコントローラハブであり、前記パラメータは、シリアルバスを介してメインボードへのプラットフォームコントローラハブの出力信号を構成するためのソフトウェアストラップであることを特徴とする請求項１に記載の方法。
【請求項３】
前記コンポーネントは、メインボードのプロセッサの構成入力への出力を有する論理回路であり、前記パラメータは、前記論理回路の出力の状態を設定するためのハードウェアパラメータであることを特徴とする請求項１に記載の方法。
【請求項４】
前記サーバ識別情報が前記サーバ製品タイプと一致しない場合にシステムエラーログを送信する工程を含むことを特徴とする請求項１に記載の方法。
【請求項５】
前記サーバ識別情報が前記サーバ製品タイプと一致しない場合にパワーオンセルフテストルーチンを停止する工程を含むことを特徴とする請求項４に記載の方法。
【請求項６】
前記ストラップ構造は、前記ベースボードの基本入出力システム内のファームウェアイメージに記憶されることを特徴とする請求項１に記載の方法。
【請求項７】
構成可能なサーバであって、
サーバ製品タイプを含むボード識別情報を記憶するメモリと、
複数の所望のパラメータと、対応するサーバ識別情報と、を含むハードウェアストラップ構造を有するファームウェアイメージを含む基本入主力システムと、
前記複数の所望のパラメータのうち前記サーバ製品タイプに一致するサーバ識別情報を有するパラメータからのハードウェアストラップパラメータに従って設定された出力を有する論理回路と、
複数の機能のうち１つの機能を有効にするための構成入力を有するプロセッサであって、前記構成入力の状態に基づいて前記複数の機能のうち１つの機能を実行し、前記構成入力が前記論理回路の出力に接続されているプロセッサと、
を備えることを特徴とするサーバ。
【請求項８】
前記メモリ及び前記基本入出力システムはベースボードに搭載されており、前記プロセッサはメインボードに搭載されていることを特徴とする請求項７に記載のサーバ。
【請求項９】
構成可能なサーバであって、
サーバ製品タイプを含むボード識別情報を記憶するメモリと、
複数の所望のパラメータと、対応するサーバ識別情報と、を含むソフトウェアストラップ構造を有するファームウェアイメージを含む基本入出力システムと、
前記複数の所望のパラメータのうち前記サーバ製品タイプに一致するサーバ識別情報を有するパラメータからのソフトウェアストラップパラメータを記憶するフラッシュメモリと、
構成可能なハードウェアコンポーネントと、
前記構成可能なハードウェアコンポーネントに接続されたシリアルバスと、
前記フラッシュメモリに接続されたプラットフォームハブコントローラであって、前記ソフトウェアストラップパラメータを読み取り、前記シリアルバスの構成パラメータを前記構成可能なハードウェアコンポーネントに送信するプラットフォームハブコントローラと、
を備えるサーバ。
【請求項１０】
前記メモリと前記基本入出力システムと前記フラッシュメモリと前記プラットフォームハブコントローラとを搭載するベースボードと、前記構成可能なハードウェアコンポーネントを搭載するメインボードと、を備えることを特徴とする請求項９に記載のサーバ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、概して、製造中の効率的なサーバ構成に関し、具体的には、ファームウェアイメージを用いて、追加のソフトウェア又はハードウェアの変更なしに、製造中のサーバの効率的なカスタマイズを可能にする方法及びシステムに関する。
【背景技術】
【０００２】
コンピューティングアプリケーションのためのクラウドの出現は、データを記憶し、リモート接続されたコンピュータデバイスのユーザによってアクセスされるアプリケーションを実行するデータセンタとして知られるオフサイト施設（installations）に対する需要を増大させている。このようなデータセンタは、通常、データを記憶及び管理するための膨大なサーバ、スイッチ及びストレージデバイスを備えている。一般的なデータセンタは、付帯電源及び通信接続を有する物理ラック構造を備えている。ラックは、データセンタの１つ以上の部屋に亘って列をなして配置される。各ラックは、複数のネットワークデバイス（例えば、サーバ、スイッチ及びストレージデバイス等）を搭載することができる。データセンタのオペレータによって様々な機能が要求されるので、専用サーバが必要である。このような専用サーバは、ストレージサーバ、コンピューティングサーバ、グラフィックス処理ユニットサーバ又はネットワークスイッチサーバを含むことができる。サーバの種類毎に、ハードウェア及びソフトウェアの異なる設定が必要である。
【０００３】
よって、サーバの基本プラットフォーム（例えば、ベースボード等）のハードウェア設計は、通常、様々な用途の考慮を必要とし、殆どのサーバ機能を備える。ベースボードは、ベースボード管理コントローラと、様々な機能を有する様々な専用メインボードをサポートするコンポーネントと、を含む回路基板である。このようなサーバプラットフォームは、通常、様々なサーバ展開シナリオに対して最高の互換性をサポートする。よって、サーバプラットフォームの最適なハードウェア設計は、サーバベースボード上のマルチプレクサ及びデータセレクタ回路を含み、専用ボード上で異なる機能を選択することを可能にする。このような回路は、最大の変数及び独立した要件に適応する。これらの設計は、正確な回路を選択して各々の完全な機能を果たすために、非公式な論理プログラミング及びコントローラを用いる。これらの変数及び独立した要件は、通常、サーバ上にのみ存在し、恒久的に有効又は無効にされる。しかし、サーバプラットフォームは、一般的に、サーバが顧客に出荷された後に修正を可能にするように設計されていない。
【０００４】
近年、顧客が機能をカスタマイズするのを可能にする適応可能なサーバプラットフォームが導入されている。このような適応可能なサーバプラットフォームは、より多くのデバイスを採用することができるコネクタ、メモリソケット又はＩＯ周辺機器スロット等の物理ハードウェアコンポーネントから、それらの適応性を引き出すことができる。また、このようなプラットフォームは、論理プログラミング及びコントローラの設定を感知することによってアクティブになる特定のサーバ機能のためのオプションを含むことができる。このようなメカニズムは、このような帝王可能なサーバ設計に対して柔軟な使用モデルをもたらす。
【０００５】
コストを増加させることなく柔軟性を達成するために、サーバのベースボード設計は、交換可能な、追加された、取り外し可能なハードウェア回路を備えておくことができる。サーバ設計が大量生産を予定されても、様々な利用可能な用途を顧客に提供することができる。このような場合、工場サイトは、顧客のマニフェストを使用して、同じベースボード設計を使用するが論理プログラミング及びコントローラの設定を調整してベースボードを構成することによって、所望の機能をサーバに正しく組み込むことができる。よって、工場の生産ラインでは、従来の基本入出力システム（ＢＩＯＳ）及びベースボード管理コントローラ（ＢＭＣ）に依存する論理プログラミング及びコントローラ構成を用意する必要がある。これらのコンポーネントは、サーバの初期関連ハードウェア構成を使用してプログラミングされる主要なファームウェアである。これにより、異なるサーバ用の異なるマザーボードを設計、交換及び準備する生産ラインの時間及び費用を節約することができる。
【０００６】
一般に、論理プログラミングの設定及びコントローラの構成は、ファームウェアの固定パラメータとハードウェア信号の静的状態とに基づいている。固定パラメータは、ベースボードのファームウェア設計者によって構築された組み合わせファームウェアイメージファイルの一部とすることができる。このようなパラメータは、ベースボードの不揮発性メモリ（例えば、シリアルペリフェラルインタフェース（ＳＰＩ）フラッシュチップ等）に記憶することができる。ハードウェア信号の静的状態は、ベースボード上のハードウェア論理回路から出力される信号とすることができる。しかし、必要とされるサーバの種類が増える場合、十分な種類の組み合わせファームウェアイメージファイルを生成し、生産ラインのハードウェア論理回路の出力を変更することが複雑なタスクになる。さらに、シリコンベースのハードウェアデバイスは、構成パラメータ（例えば、インテルプラットフォームコントローラハブ（ＰＣＨ）等）の単一のセクションしか認識することができない。ＰＣＨの構成パラメータが組み合わせファームウェアイメージファイルの特定の領域に存在するので、特定の機能がアクティブ又は非アクティブであるか、ＰＣＨの構成パラメータが変更された場合、ファームウェア設計者は、組み合わせファームウェアイメージファイルを再構築しなければならない。
【０００７】
一般に、シリコンのベンダは、通常、そのチップセット内に複数の機能を提供し、開発者が、サーバベースボード上の関連するハードウェア回路を用いて機能を選択し配備するのを可能にする。開発者は、ベースボードのパワーオンシーケンス中にチップセット内の何れの機能をアクティブにし、非アクティブにするかを決定することができる。機能が選択されると、チップセットの出力ピンは、内部のマルチプレクサ及びデータセレクタを介して外部のハードウェア回路と接続することができる。チップセットは、通常、何れの機能（例えばインテルプラットフォームコントローラハブ（ＰＣＨ）の機能等）をアクティブにし、非アクティブにするかを識別するいくつかのメカニズムを提供する。ＰＣＨの構成パラメータは、組み合わせファームウェアイメージファイルの特定領の域に存在する。このような構成パラメータは、「ソフトウェアストラップ」と呼ばれる。
【０００８】
図１は、ソフトウェアストラップを選択するための従来のプロセスを示す図である。図１は、プラットフォームコントローラハブ（ＰＣＨ）チップ１０を含む。ＰＣＨチップ１０は、内部ＳＡＴＡコントローラと、内部ＰＣＩルートコントローラと、を有する。ＰＣＨチップ１０は、内部ＳＡＴＡコントローラ又は内部ＰＣＩルートコントローラによってルーティングされるパラメータ信号を送信することができる構成パラメータ出力１２を含む。ＰＣＨチップ１０のパラメータ信号は、何れのコントローラが有効にされているかに基づいて、ＰＣｌｅバス１４又はＳＡＴＡバス１６の構成情報を最終的に出力する。パラメータは、ソフトウェアストラップと呼ばれる。ＰＣＨ１０は、シリアルペリフェラルインタフェース（ＳＰＩ）フラッシュチップ２０に接続されたＳＰＩインタフェース１８を含む。
【０００９】
図１は、ＳＰＩフラッシュチップ２０に焼き付けられたファームウェアイメージのメモリマップ３０を示す図である。メモリマップ３０は、リザーブ領域３２と、ＰＣＨソフトウェアストラップ領域３４と、リザーブ領域３６と、ＢＩＯＳ領域３８と、記述子マップ領域４０と、シグネチャ領域４２と、を含む。ＰＣＨソフトウェアストラップ領域３４は、ビット位置とビットフィールドの記述とを含み、ソフトウェアストラップを表すテーブル５０として示されている。この例において、テーブル５０内のソフトウェアストラップは、ＰＣＨチップ１０のパラメータ出力１２の値の選択を含む。よって、テーブル５０は、プラットフォームコントローラハブチップ１０が、２つの内部コントローラ（ｓＳＡＴＡ又はＰＣＩｅ）のうち１つを単一ポート出力にどのようにルーティングするかを示すパラメータの一例である。マルチプレクサと同様に、何れか１つのコントローラを選択して、内部ＰＣＩルートコントローラ又は内部ＳＡＴＡコントローラから各々のＰＣｌｅバス１４又はＳＡＴＡバス１６までの機能を有効にするための出力信号を供給する。
【００１０】
ＰＣＨ１０のパラメータ出力１２の結果の出力がテーブル５２に示されている。テーブル５２に示すように、パラメータ出力１２の最初の２つのポートは固定信号である。パラメータ出力１２の第３及び第４ポートは多重化されてもよい。テーブル５２は、ＰＣＨシリコン設計の一例である。２つの異なるコントローラ（ｓＳＡＴＡ及びＰＣＩｅ）がプラットフォームコントローラハブチップ１０内に存在するが、プラットフォームコントローラハブは、接続に用いる何れかのコントローラの選択を可能にする単一ポート出力のみを提供する。出力ポート選択オプションを提供しない固定信号とは対照的に、多重化信号のみが出力ポート選択を提供することができる。
【００１１】
同様に、図２は、「ハードウェアストラップ」と呼ばれるプロセッサのハードウェア設定の従来の構成プロセスを示す図である。このプロセスにおいて、プロセッサ６０（例えば、インテルプロセッサ等）は、プロセッサ６０によって実行される異なる機能を定義する入力ピンを含む。プロセッサ６０の機能構成は、入力ピン６４に接続されているハードウェアレジスタを有する論理回路６２からのハードウェア入力信号の静的状態に依存する。この例において、論理回路６２は、顧客の部品表に従ってサーバのベースボードに取り付けられている。テーブル６６は、プロセッサ６０の機能を構成するハードウェアストラップを構成する静的状態を含むことができる。この例において、プロセッサ６０の機能は、パワーオンシーケンス中に入力ピン６４に接続された信号の状態によって決定される。
【００１２】
図１及び図２に示すソフトウェアストラップ及びハードウェアストラップは静的パラメータ及び固定状態であるため、これらを変更することは、様々な異なる機能ベースボードが必要とされる場合、追加のコーディング、コンパイル、リリース、厳格なメンテナンス処理、及び、アフターサービスが必要である。このようなプロセスは、顧客のファームウェアイメージファイルの異なるリビジョンを維持するためのコストを増大させる。さらに、異なる機能を有する新たなサーバ設計が必要な場合、ベースボード製造ラインのハードウェア論理回路を変更するために複雑なプロセスが必要になる。
【００１３】
よって、異なる機能を有する異なるサーバの製造を可能にするための合理化されたプロセスが必要とされている。ハードウェア論理回路を変更したり、ファームウェアイメージを書き換えたりせずに、異なるサーバ機能を可能にするための柔軟な構成がさらに必要とされている。
【発明の概要】
【発明が解決しようとする課題】
【００１４】
本発明は、合理化されたサーバ設計の方法及びシステムを提供する。
【課題を解決するための手段】
【００１５】
開示された一例は、サーバの機能を構成する方法である。所望のパラメータ及び対応するサーバ識別情報は、ファームウェアイメージ内のハードウェア又はソフトウェアストラップ構造に記憶される。サーバ製品タイプを含むボード識別情報は、ベースボードのメモリから読み取られる。サーバ製品タイプは、ストラップ構造内のサーバ識別情報と比較される。対応する所望のパラメータは、サーバ機能を実行するためにベースボードのベースボードコンポーネントにロードされる。
【００１６】
他の開示された例は、サーバ製品タイプを含むボード識別情報を記憶するメモリを有する構成可能なサーバである。サーバは、ハードウェアストラップ構造を有するファームウェアイメージを含む基本入出力システムを備える。ハードウェアストラップ構造は、複数の所望のパラメータと、対応するサーバ識別情報と、を有する。論理回路は、複数の所望のパラメータのうちサーバ製品タイプと一致するサーバ識別情報を有するパラメータからのハードウェアストラップパラメータに従って設定された出力を有する。プロセッサは、複数の機能のうち１つの機能を有効にするための構成入力を有する。プロセッサは、構成入力の状態に基づいて、複数の機能のうち１つの機能を実行する。構成入力は、論理回路の出力に接続されている。
【００１７】
他の開示された例は、サーバ製品タイプを含むボード識別情報を記憶するメモリを有する構成可能なサーバである。サーバは、ソフトウェアストラップ構造を有するファームウェアイメージを含む基本入出力システムを備える。ソフトウェアストラップ構造は、複数の所望のパラメータと、対応するサーバ識別情報と、を有する。フラッシュメモリは、複数の所望のパラメータのうちサーバ製品タイプと一致するサーバ識別情報を有するパラメータからのソフトウェアストラップパラメータを記憶する。シリアルバスは、構成可能なハードウェアコンポーネントに接続されている。プラットフォームハブコントローラは、フラッシュメモリに接続されている。プラットフォームハブコントローラは、ソフトウェアストラップパラメータを読み取り、シリアルバスの構成パラメータを、構成可能なハードウェアコンポーネントに送信する。
【００１８】
上記の概要は、本開示の各実施形態又はあらゆる態様を表すことを意図したものではない。むしろ、上記の概要は、本明細書に記載したいくつかの新規な態様及び特徴の一例を単に提供するものである。本開示の上記の特徴及び利点と他の特徴及び利点とは、添付の図面及び添付の特許請求の範囲と関連して読めば、本発明を実施するための代表的な実施形態及びモードについての以下の詳細な説明から容易に明らかになるであろう。
【００１９】
本発明の実施形態は、図面と以下の詳細な説明とを参照する。
【図面の簡単な説明】
【００２０】
【図１】サーバのソフトウェアストラップの従来技術の設定を示すブロック図である。
【図２】サーバのハードウェアストラップの従来技術の設定を示すブロック図である。
【図３】所望の異なるタイプのサーバに対する効率的な構成を可能にする例示的なサーバ構成及び組み立てプロセスのフローチャートである。
【図４】サーバのベースボードのブロック図である。
【図５】サーバのソフトウェアストラップ構成パラメータをプラットフォームコントロールハブに提供するプロセスを示す図である。
【図６Ａ】ソフトウェアストラップ構成パラメータをプラットフォームコントロールハブに提供するプロセスのフローチャートである。
【図６Ｂ】ソフトウェアストラップ構成パラメータをプラットフォームコントロールハブに提供するプロセスのフローチャートである。
【図７】サーバのハードウェアストラップ構成パラメータをハードウェアロジックに提供するプロセスのフローチャートである。
【図８Ａ】ハードウェアストラップ構成パラメータをハードウェアロジックに提供するプロセスのフローチャートである。
【図８Ｂ】ハードウェアストラップ構成パラメータをハードウェアロジックに提供するプロセスのフローチャートである。
【発明を実施するための形態】
【００２１】
本発明は、様々な変更及び代替形態を受け入れることができる。いくつかの代表的な実施形態は、図面に例として示されており、本明細書で詳細に説明される。しかし、本発明は、開示された特定の形態に限定されないことを理解されたい。むしろ、本発明は、添付の特許請求の範囲によって定義される本発明の趣旨及び範囲に含まれる全ての変更、均等物、代替物をカバーするものである。
【００２２】
本発明は、多くの異なる形態で具体化することができる。代表的な実施形態が図面に示されており、本明細書で詳細に説明する。本発明は、本発明の原理の例示であり、本発明の幅広い態様を、例示した実施形態に限定することを意図していない。その限りにおいて、例えば、概要、要約、詳細な説明に開示されているが、特許請求の範囲に明示的に記載されていない要素及び限定は、暗示的、推論的又は他の方法で、単独に又はまとめて、特許請求の範囲に組み込まれるべきではない。本発明の詳細な説明のために、特に断りのない限り、単数形は複数形を含み、その逆も同様である。「含む」という用語は、「限定することなく含む」ことを意味する。さらに、「約」、「ほぼ」、「実質的に」、「およそ」等の用語は、本明細書において、例えば「〜に」、「〜に近い」、「大体」、「〜の３〜５％の範囲内」、「許容される製造公差内」、又は、これらの任意の論理的組み合わせを意味するものとして用いることができる。
【００２３】
上述した方法及びシステムは、異なるサーバタイプに対応する複数のハードウェアストラップ及びソフトウェアストラップを有するファームウェアイメージファイルを提供することによって、異なるタイプのサーバの製造を可能にする。組み立て時に、ボードＩＤフィールドがベースボードから読み取られ、所望のサーバタイプが決定される。そして、適切な機能用のサーバを構成するために、適切なハードウェアストラップ及びソフトウェアストラップがファームウェアイメージファイルからコピーされる。このプロセスは、リリースされる組み合わせファームウェアイメージファイルの必要とされる量を減らすことを可能にし、サーバのベースボードのハードウェア論理回路の変更を減らすことができる。この例はサーバに関連するが、ここで説明する原理は、現在、自動的に実行される異なるハードウェア変更要件を有するマザーボード上で同じファームウェアイメージを実行し得る任意の電子製品に適用され得る。これらの削減により、追加のハードウェア又はソフトウェアの再プログラムを必要とせずに、製造時に多くの異なるサーバオプションの使用を可能にする。
【００２４】
図３は、同じベースボード及び他のコンポーネンツを用いて、異なるタイプのサーバを製造する例示的なプロセスを示す図である。プロセスは、異なるタイプのサーバ用のハードウェアストラップ及びソフトウェアストラップの異なるモジュールを含む包括的なファームウェアイメージ１１０をオーサリングする工程を含む。包括的なファームウェアイメージ１１０は、異なるタイプのサーバの製造に必要とされる組み合わせファームウェアイメージファイルリリースの量を減らす。また、プロセスは、プログラマブルロジックコントローラ１１２を用いることによって、機能を指定するハードウェア論理回路の変更を減らす。包括的なファームウェアイメージ１１０は、ベースボード１１４のメモリに書き込まれる。次に、製造オペレータは、ベースボードをサーバシャーシに設置し、所望のタイプのサーバ１１６に基づいて正確な機能が選択される。ファームウェアイメージ内の構成パラメータ及びプログラマブルロジックコントローラは、例えば、ストレージサーバ、計算サーバ、ＧＰＵサーバ又はネットワークスイッチサーバ等の異なるサーバ１１８の製造を可能にする。このようなサーバ１１８の製造は、複数のファームウェアイメージ又は複雑なハードウェア論理回路を必要としない。さらに、プロセスは、ベースボードが、組み合わせファームウェアイメージの正しい用意と、要求されたサーバタイプのハードウェアロジックの出力と、を有しているか否かを検査するためのメカニズムを提供する。本プロセスは、ファームウェアアルゴリズムを包括的なファームウェアイメージ１１０に組み込んで、リリースされたファームウェアイメージファイルの量を減らすと同時に、異なるサーバ設計が共通のコンポーネント（例えば、ベースボード等）を使用するのを可能にする。また、プロセスは、サーバプロセッサ機能を設定するために、ベースボードに取り付けるハードウェアレジスタの変更を減らすための柔軟な方法を含む。
【００２５】
図４は、サーバのタイプに基づいて異なる機能を指示するように構成され得るサーバ１２０内のハードウェア及びメモリデバイスのブロック図である。サーバ１２０は、共通のコンポーネント（例えば、ベースボード１３０等）をそれぞれ有するいくつかのタイプのうち１つであってもよい。例えば、サーバタイプは、上述したように、ストレージサーバ、計算サーバ、ＧＰＵサーバ又はネットワークスイッチサーバを含むことができる。
【００２６】
サーバ１２０は、ベースボード１３０と、メインボード１３２と、を有する。メインボード１３２は、プロセッサ１３４と、他の構成可能なデバイスと、を有する。ベースボード１３０は、最大の変数及び独立した要件に適応する最適化設計である。よって、ベースボードの設計者は、異なるタイプのサーバに用いられるベースボードにインストールされる全ての可能なハードウェアコンポーネントを理想的に検討する。また、メインボード１３２は、サーバのタイプの所望の機能に特有の特殊なコンポーネントを含むことができる。例えば、ＧＰＵサーバ用のメインボードは複数のＧＰＵを含み、ストレージサーバ用のメインボードは、複数のソリッドステートドライブ又はハードディスクドライブを含む。ベースボード１３０は、ベースボード管理コントローラ（ＢＭＣ）１４０と、ベースボードマネジメントコントローラ１４０用のＢＩＯＳと、を搭載する。また、ベースボード１３０は、プラットフォームコントローラハブ（ＰＣＨ）１４６と、ＳＰＩフラッシュチップ１４８と、を有する。この例では、ＰＣＨ１４６は、内部ＰＣＩルートコントローラと、内部ＳＡＴＡコントローラと、を有する。ベースボード１３０は、識別メモリ（例えば、ＥＥＰＲＯＭ１５０等）を有する。サーバ１２０に関連する識別データは、ＥＥＰＲＯＭ１５０に記憶される。さらに、ベースボード１３０は、プラットフォームロジックコントローラ１５２を有する。プラットフォームロジックコントローラ１５２は、プロセッサ１３４上の構成入力に接続されたハードウェアレジスタを有する。様々な構成機能を実行するためにＢＩＯＳが参照されているが、ユニファイドエクステンシブルファームウェアインタフェース（ＵＥＦＩ）も同じ機能を実行することができる。システム管理バス１５４は、ベースボード１３０上のコンポーネントが互いに通信するのを可能にする。
【００２７】
ベースボード管理コントローラ１４０のＢＩＯＳの例示的なファームウェアアルゴリズムは、ＥＥＰＲＯＭ１５０に記憶されたボードＩＤに基づいて、異なる機能についてＰＣＨ１４６のソフトウェアストラップパラメータを再プログラミングする。この例では、ボードＩＤには、特定のサーバ識別情報（固有のシグネチャ、製品名、カスタムデータ及びチェックサムフィールドを含む）が含まれている。よって、ボードＩＤは、所望のサーバのタイプと、これに対応するサーバの機能と、を伝達する。ＢＩＯＳは、ＳＰＩフラッシュチップ１４８内のｅモジュール（eModule）に記憶されたＢＩＯＳファームウェアイメージファイル１６０を有する。ファームウェアイメージは、可能なボードＩＤのうち１つにそれぞれ関連付けられた、様々な所望のソフトウェアストラップ構造１６２を有する。ＢＩＯＳファームウェアイメージファイル１６０は、「所望のソフトウェアストラップ」と呼ばれる構造として、ＢＩＯＳのｅモジュール内にＰＣＨソフトウェアストラップを構築する。以下に説明するように、ソフトウェアストラップパラメータは、適切なコントローラを選択するためにソフトウェアストラップパラメータの値を参照することによって、ＰＣＨ１４６が、ＳＡＴＡバス又はＰＣｌｅバス等のシリアルバス１５６を介してメインボード１３２上のハードウェアコンポーネントを構成することを可能にする。プラットフォームコントローラハブ１４６によるパワーオンシーケンス中に、回路ルーティングが実行される。
【００２８】
ＢＩＯＳは、所望のタイプのサーバの正確なボードＩＤを用いて、ＢＩＯボードＩＤを読み取って、パワーオンシーケンス中に初期化されているサーバのタイプを知ることができる。次に、ＢＩＯＳは、ＳＰＩフラッシュチップ１４８に記憶されているソフトウェアストラップパラメータを、ｅモジュールの所望のソフトウェアストラップと比較することができる。ソフトウェアストラップパラメータと所望のソフトウェアストラップとの間の内容が異なる場合、ベースボード１３０が新たなサーバシャーシタイプに取り付けられていることを示す。この場合、ＢＩＯＳは、ＳＰＩフラッシュチップ１４８のソフトウェアストラップパラメータを、ｅモジュールからの所望のソフトウェアストラップ構造に再プログラミングする。次に、ＢＩＯＳは、ハードウェアのパワーサイクルをトリガする。次いで、ＢＩＯＳは、ソフトウェアストラップパラメータを再度認識し、ＰＣＨ１４６を介してベースボードハードウェアの挙動を変更するように、ＰＣＨ１４６に要求する。よって、このアルゴリズムは、ＳＰＩインタフェースを介して、ＳＰＩフラッシュチップ１４８のソフトウェアストラップ構造１６２の値を調整する。ＢＭＣ１４０がＳＰＩフラッシュチップ１４８にアクセスする能力を有する場合、このアルゴリズムは、ＢＭＣ１４０によって実行され得る。
【００２９】
図５は、ソフトウェアストラップパラメータを提供して、特定の機能を有するサーバを生成するプロセスのフローチャートである。図４のＰＣＨ１４６の内部コントローラは、起動時に、ＳＰＩフラッシュチップ１４８からソフトウェアストラップを読み取り、そのハードウェアロジック出力信号を構成する（５００）。ＢＭＣ１４０のＢＩＯＳは、ＥＥＰＲＯＭ１５０に記憶されたボードＩＤのサーバ識別フィールドを読み取る（５０２）。次に、ＢＩＯＳは、サーバホストに記憶されたＢＩＯＳ  ｅモジュールからソフトウェアストラップのパラメータを読み取る（５０４）。ＢＩＯＳは、サーバ識別情報を比較した後にソフトウェアストラップパラメータを再プログラミングして、ＳＰＩフラッシュチップ１４８内のソフトウェアストラップパラメータがサーバ識別情報のものと一致するか否かを判別する（５０６）。次に、ＢＩＯＳは、パワーサイクルを開始するようにＰＣＨ１４６を制御する（５０８）。ＰＣＨ１４６がパワーサイクルを実行した後、サーバは、リセットされ、ＳＰＩフラッシュチップ１４８に現在記憶されているソフトウェアストラップを読み取る（５１０）。
【００３０】
図６Ａ及び図６Ｂは、図５に示すソフトウェアストラップパラメータを比較及び再プログラミングするために、ＢＩＯＳによって実行されるルーチンのフローチャートである。ＢＩＯＳは、最初に、ソフトウェアストラップサービスルーチンを開始する（６００）。次に、ＢＩＯＳは、パワーサイクルが開始されたか否かを判別する（６０２）。パワーサイクルが開始されている場合、ＢＩＯＳは、ＥＥＰＲＯＭ１５０からボードＩＤを読み取る（６０４）。ＢＩＯＳは、ボードＩＤからのシグネチャフィールドを、図４に示すＳＰＩフラッシュチップ１４８に記憶された所望のソフトウェアストラップ構造１６２にリストされているサーバ識別情報と比較することによって、所望のサーバ製品を識別する（６０６）。また、ソフトウェアストラップ構造は、ＢＩＯＳによってアクセス可能なマザーボード内の他のエンティティに記憶されてもよい。
【００３１】
ＢＩＯＳは、ボードＩＤからのシグネチャが所望のソフトウェアストラップ構造内の任意のサーバ識別情報と一致するか否かを判別する（６０８）。シグネチャが何れのサーバ識別情報とも一致しない場合、誤った構成が存在し、ＢＩＯＳは、システムイベントログ（ＳＥＬ）をＢＭＣ１４０に送信する（６１０）。次に、ＢＩＯＳは、パワーオンセルフテストルーチンを停止する（６１２）。シグネチャの一致がある場合（６０８）、ＢＩＯＳは、図４のＳＰＩフラッシュチップ１４８からソフトウェアストラップパラメータを読み取る（６１４）。ＢＩＯＳは、ソフトウェアストラップパラメータを、ｅモジュールに記憶された所望のソフトウェアストラップ構造と比較する（６１６）。ＢＩＯＳは、比較によって、ＳＰＩフラッシュチップ１４８から読み取られたソフトウェアストラップが正確であるか否かを判別する（６１８）。所望のソフトウェアストラップ構造内のシグネチャと関連するパラメータとの一致がある場合、ＢＩＯＳは、パワーオンセルフテストルーチンを継続する（６２０）。一致が見つからない場合、ＢＩＯＳは、所望のソフトウェアストラップ構造から適切なソフトウェアストラップを有するＳＰＩフラッシュチップ１４８内のソフトウェアストラップを再プログラミングする（６２２）。次に、ＢＩＯＳは、パワーサイクルを実行するようにＰＣＨ１４６にコマンドを送信する（６２４）。
【００３２】
図６Ａは、ＳＰＩフラッシュチップ１４８に記憶され得るＰＣＨソフトウェアストラップテーブル６３０を示す図である。ＰＣＨソフトウェアストラップテーブル６３０は、ＰＣＨ１４６の異なる出力ポートの構成を定義するビットを有する。見てわかるように、ソフトウェアストラップテーブル６３０は、ＳＡＴＡバス又はＰＣｌｅバスの出力ポート構成を有する。
【００３３】
また、図６Ａは、ＥＥＰＲＯＭ１５０に記憶された例示的なボードＩＤ構造６４０を示している。ボードＩＤイメージ６４０は、ボードＩＤバージョンフィールド６４２と、ボードＳＫＵ  ＩＤフィールド６４４と、チェックサムフィールド６４６と、シグネチャフィールド６４８と、製品名フィールドと、カスタムデータフィールド６５０と、オプションのデータフィールド６５２と、を有する。ボードＩＤ構造６４０は、ベースボード／サーバプラットフォームの識別情報を記述するデータ構造である。ボードＩＤバージョンフィールド６４２は、構造のスキーマを記述するリリースバージョン（release version）である。ボードＳＫＵ  ＩＤフィールド６４４は、ベースボードを記述する固有の番号である。チェックサムフィールド６４６は、工場構築のための構造の完全性を記録するためのハッシュ値である。シグネチャフィールド６４８は、セキュリティ検査のための構造の完全性を記録するためのハッシュ値である。製品名フィールドは、異なるシャーシタイプを有するシステムを記述する文字列である。カスタムデータフィールド６５０は、ユーザ固有の設定に用いられるフィールドである。
【００３４】
図６Ｂは、ｅモジュールに記憶される所望のソフトウェアストラップ構造６６０を示す図である。所望のソフトウェアストラップ構造６６０は、構造ヘッダフィールド６６２と、チェックサムフィールド６６４と、サーバ製品リストフィールド６６６と、サーバ識別フィールド６６８と、オプションのデータフィールド６７０と、ソフトウェアストラップディレクトリフィールド６７２と、を有する。ソフトウェアストラップパラメータフィールド６７４には、様々なソフトウェアストラップパラメータが記憶されている。ソフトウェアストラップディレクトリ６７２は、ソフトウェアストラップパラメータフィールド６７４に記憶されたソフトウェアストラップへのマップを提供する。各サーバタイプは、サーバタイプに関連するソフトウェアストラップパラメータの対応する識別情報と共にサーバ識別フィールド６６８に記憶される。
【００３５】
ベースボードＢＩＯＳのファームウェアアルゴリズムは、ボードＩＤの内容に基づいて、プログラマブル入力／出力（Ｉ／Ｏ）チップの構成（例えば、図４のプラットフォームロジックコントローラ１５２等）を調整することができる。出力信号の状態はプロセッサ１３４に一貫して存在しなければならないので、この例では、プログラマブルＩ／Ｏチップの出力信号は、オープンドレイン（open-drain）として構成されてもよく、最大１００Ωのオン抵抗を提供してもよい。プロセッサ１３４がパワーオンシーケンス中にその入力ピンをサンプリングすることができるように、一貫した信号が必要である。次に、プロセッサ１３４は、パワーオンシーケンスの異なる段階に対してリンク／機能及び内部構成コントローラレジスタを初期化する。ｅモジュールの所望のソフトウェアストラップ構造と同様に、ＢＩＯＳファームウェアイメージファイル１６０は、潜在的なボードＩＤの各々と一致する様々なハードウェアストラップを有することができる。ハードウェアストラップは、図６Ｂに示す「所望のハードウェアストラップ」構造６６０としてＢＩＯＳの内部に構築される。
【００３６】
図７は、サーバのプロセッサを構成するためのハードウェアストラップパラメータを提供するプロセスを示す図である。図４のＣＰＵ１３４の内部コントローラは、起動時に、その入力ピンの状態をサンプリングして、そのリンク機能を構成する（７００）。ＢＩＯＳ又はＢＭＣ１４０は、ＥＥＰＲＯＭ１５０に記憶されているボードＩＤのサーバ識別フィールドを読み取る（７０２）。次に、ＢＩＯＳは、プラットフォームロジックコントローラ１５２からハードウェアストラップの構成を読み取る（７０４）。ＢＩＯＳは、ＳＭＢｕｓ読み取り命令をＥＥＰＲＯＭ１５０に送信し、次いで、サーバ識別フィールドを含むボードＩＤ情報のブロックを検索する。ＢＩＯＳは、ハードウェアストラップ構成がサーバ識別情報のものと一致するか否かを判別するために、サーバ識別情報を比較した後に構成を調整する（７０６）。そして、ＢＩＯＳは、パワーサイクルを開始するようにＰＣＨ１４６を制御する（７０８）。ＰＣＨ１４６がパワーサイクルを実行した後、ＣＰＵ１３４は、リセットして、プラットフォームロジックコントローラ１５２の出力に接続された入力ピンの状態から決定されるように機能を実行する（７１０）。
【００３７】
図８Ａ及び図８Ｂは、図７に示すハードウェアストラップパラメータを比較及び再プログラミングするために、ＢＩＯＳ（図４）によって実行されるルーチンのフローチャートである。このルーチンは、図５、図６Ａ及び図６Ｂを参照して説明したルーチンと同時に実行することができる。ＢＩＯＳは、最初に、ハードウェアストラップサービスルーチンを開始する（８００）。次に、ＢＩＯＳは、パワーサイクルが開始されたか否かを判別する（８０２）。パワーサイクルが開始された場合、ＢＩＯＳは、ＥＥＰＲＯＭ１５０からボードＩＤを読み取る（８０４）。ＢＩＯＳは、ボードＩＤからのシグネチャフィールドを、ＢＩＯＳ  ｅモジュールに記憶された所望のハードウェアストラップ構造内にリストされたサーバ識別情報と比較することによって、所望のサーバ製品を識別する（８０６）。また、ハードウェアストラップ構造は、ＢＩＯＳによってアクセス可能なマザーボード内の他のエンティティに記憶されてもよい。
【００３８】
ＢＩＯＳは、ボードＩＤからのシグネチャーが、所望のハードウェアストラップ構造内の何れかのサーバ識別情報と一致するか否かを判別する（８０８）。シグネチャが何れのサーバ識別情報とも一致しない場合、誤った構成があり（及び、現在のＵＥＦＩ  ＢＩＯＳサポートがない）、ＢＩＯＳは、システムイベントログ（ＳＥＬ）をＢＭＣ１３０に送信する（８１０）。次に、ＢＩＯＳは、パワーオンセルフテストルーチンを停止する（８１２）。ＵＥＦＩ  ＢＩＯＳがマザーボードをサポートすることを示すシグネチャの一致がある場合（８０８）、ＢＩＯＳは、プラットフォームロジックコントローラ１５２からハードウェアストラップパラメータを読み出す（８１４）。ＢＩＯＳは、ハードウェアストラップパラメータを、ｅモジュールに記憶された所望のハードウェアストラップ構造と比較する（８１６）。ＢＩＯＳは、比較結果により、プラットフォームロジックコントローラ１５２から読み取られるハードウェアストラップが正確であるか否かを判別する（８１８）。所望のハードウェアストラップ構造内のシグネチャに関連するパラメータに一致がある場合、ＢＩＯＳは、パワーオンセルフテストルーチンを継続する（８２０）。一致が見つからない場合、ＢＩＯＳは、所望のハードウェアストラップ構造からの適切なハードウェアストラップを用いて、プラットフォームロジックコントローラ１５２内のハードウェアストラップを再プログラミングする（８２２）。次に、ＢＩＯＳは、パワーサイクルを実行するようにＰＣＨ１４６にコマンドを送信する（８２４）。
【００３９】
図８Ｂは、所望のハードウェアストラップ構造８６０の一例を示す図である。所望のハードウェアストラップ構造８６０は、構造ヘッダフィールド８６２と、チェックサムフィールド８６４と、サーバ製品リストフィールド８６６と、サーバ識別フィールド８６８と、オプションのデータフィールド８７０と、ソフトウェアストラップディレクトリフィールド８７２と、を有する。ハードウェアストラップパラメータフィールド８７４には、様々なハードウェアストラップパラメータが記憶されている。ハードウェアストラップディレクトリ８７２は、ハードウェアストラップパラメータフィールド８７４に記憶されたハードウェアストラップへのマップを提供する。各サーバタイプは、そのサーバのタイプに関連する、対応する正確に記憶されたソフトウェアストラップパラメータフィールドと共に、サーバ識別フィールド８６８に記憶される。図８Ａは、プロセッサ１３４の機能入力ピンに対するプラットフォームロジックコントローラ１５２の出力状態を示す構成テーブル８００を示している。例示的な構成テーブル８８０は、プロセッサが重要な機能（例えば、ＬＬＣ  ＆  ＭＬＣ  ＢＩＳＴ，  ＴＸＴ）をアクティブにするのを可能にする設定を有する。これらの機能は、プログラミングＩ／Ｏチップからの信号ハイ／ロー出力を認識することによって有効／無効になる。ＵＥＦＩ  ＢＩＯＳは、プログラミングＩ／Ｏチップの設定値を読み取り、その設定値とハードウェアストラップ構造とを比較する。
【００４０】
製造ラインにおいて誤った「ボードＩＤ」が提供されるのを防止するために、上記のアルゴリズムは両方とも、ボードＩＤのシグネチャが、所望のソフトウェア又はハードウェア構造のサーバ識別情報と一致するか否かを調べる。一致しない場合、ＢＩＯＳは、システムイベントログ（ＳＥＬ）をＢＭＣ１４０に送信して警告を発し、パワーアップセルフテストルーチンを停止して、サーバが誤った機能を実行及び開始するのを防止する。顧客の様々な用途でのサーバの大量製造が予定されると、製造側のオペレータは、ベースボードを変更することなく、単一のファームウェアイメージファイル及び顧客の部品表を用いて、正確な機能をサーバ上に容易に構成することができる。上記のプロセスは、部品表におけるハードウェアの変更を考慮に入れるだけでなく、ファームウェアの復帰管理、メンテナンス及びリリースの作業負荷を軽減する。
【００４１】
図６Ａ、図６Ｂ、図８Ａ及び図８Ｂのフローチャートは、正確なソフトウェア及びハードウェア構成パラメータを提供するための図４のＢＭＣ１４０の例示的な機械可読命令を表す。これらの例では、機械可読命令は、（ａ）プロセッサ、（ｂ）コントローラ、及び／又は、（ｃ）１つ以上の他の適切な処理デバイスにより実行されるアルゴリズムを有する。アルゴリズムは、有形の媒体（例えば、フラッシュメモリ、ＣＤ−ＲＯＭ、フロッピー（登録商標）ディスク、デジタルビデオ（汎用）ディスク（ＤＶＤ）又は他のメモリデバイス等）に記憶されたソフトウェアで具現化することができる。しかし、当業者であれば理解できるように、アルゴリズム全体及び／又はその一部は、代替的に、プロセッサ以外のデバイスによって実行され、及び／又は、周知の方法でファームウェア又は専用のハードウェアで実施することができる（例えば、特定用途向け集積回路（ＡＳＩＣ）、プログラマブルロジックデバイス（ＰＬＤ）、フィールドプログラマブルロジックデバイス（ＦＰＬＤ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、ディスクリートロジック等によって実行され得る）。例えば、インタフェースの何れか又は全てのコンポーネントは、ソフトウェア、ハードウェア、及び／又は、ファームウェアによって実装することができる。また、フローチャートによって表される機械可読命令の一部又は全ては、手動で実施されてもよい。さらに、例示的なアルゴリズムは、図６Ａ、図６Ｂ、図８Ａ及び図８Ｂに示すフローチャートを参照して説明されているが、当業者であれば理解できるように、例示的な機械可読命令を実行する他の多くの方法が代替的に用いられてもよい。例えば、ブロックの実行順序は変更されてもよいし、及び／又は、説明したブロックのいくつかは変更、削除又は組み合わされてもよい。
【００４２】
本明細書で使用される「コンポーネント」、「モジュール」、「システム」等の用語は、一般に、コンピュータ関連のエンティティ、即ち、ハードウェア（例えば、回路）、ハードウェアとソフトウェアの組み合わせ、ソフトウェア、又は、１つ以上の特定の機能を有する操作可能な機器に関連するエンティティの何れかを指す。例えば、コンポーネントは、プロセッサ（例えば、デジタル信号プロセッサ等）で実行されるプロセス、プロセッサ、オブジェクト、実行可能ファイル、実行スレッド、プログラム、及び／又は、コンピュータとすることができるが、これらに限定されない。例として、コントローラ上で実行されるアプリケーション、及び、コントローラの両方がコンポーネントとなることができる。１つ以上のコンポーネントがプロセス及び／又は実行スレッド内に存在してもよく、コンポーネントが１つのコンピュータ上に位置してもよく、及び／又は、２つ以上のコンピュータ間に分散されてもよい。さらに、「デバイス」は、特別に設計されたハードウェア、ハードウェアが特定の機能を実行するのを可能にするソフトウェアの実行によって特殊化された汎用ハードウェア、コンピュータ可読媒体に記憶されたソフトウェア、又は、これらの組み合わせの形態をとることができる。
【００４３】
本明細書で使用される用語は、特定の実施形態を説明することを目的としており、本発明を限定するものではない。本明細書で使用される場合、「一つの」、「１つの」及び「その」という単数形は、文脈が明らかにそうでないことを示さない限り、複数形も含むことを意図している。さらに、「含む」、「有する」、又は、これらの変形は、詳細な説明及び／又は特許請求の範囲の何れかに使用される限りにおいて、「備える」という用語と同様の方法で包括的であることが意図される。
【００４４】
他に定義されない限り、本明細書で使用される全ての用語（技術用語及び科学用語を含む）は、当業者によって一般的に理解されるのと同じ意味を有する。さらに、一般的に使用される辞書で定義されているような用語は、関連技術の文脈におけるそれらの意味と一致する意味を有すると解釈されるべきであり、明確に定義されない限り、理想的又は過度に形式的な意味で解釈されるべきではない。
【００４５】
本発明の様々な実施形態は上述した通りであるが、これらは例示としてのみ提示されており、これらに限定されないことを理解されたい。本発明の趣旨又は範囲から逸脱することなく、本明細書の開示に従って、開示された実施形態に対するいくつかの変更を加えることができる。よって、本発明の広さ及び範囲は、上述した実施形態によって限定されるべきではない。むしろ、本発明の範囲は、添付の特許請求の範囲及びこれらの均等物に従って定義されるべきである。
【００４６】
本発明の好ましい実施形態を前述の通り開示したが、これらは決して本発明を限定するものではなく、当業者であれば、本発明の技術的思想を逸脱しない範囲で各種の変形を加えることができる。
【符号の説明】
【００４７】
１０…プラットフォームコントローラハブ（ＰＣＨ）チップ
１２…構成パラメータ出力
１４…ＰＣｌｅバス
１６…ＳＡＴＡバス
１８…ＳＰＩインタフェース
２０…シリアルペリフェラルインタフェース（ＳＰＩ）フラッシュチップ
３０…メモリマップ
３２…リザーブ領域
３４…ＰＣＨソフトウェアストラップ領域
３６…リザーブ領域
３８…ＢＩＯＳ領域
４０…記述子マップ領域
４２…シグネチャ領域
５０，５２，６６…テーブル
６０…プロセッサ
６２…論理回路
６４…入力ピン
１１０…包括的なファームウェアイメージ
１１２…プログラマブルロジックコントローラ
１１４，１３０…ベースボード
１１６，１１８，１２０…サーバ
１３２…メインボード
１３４…プロセッサ
１４０…ベースボード管理コントローラ（ＢＭＣ）
１４６…プラットフォームコントローラハブ（ＰＣＨ）
１４８…ＳＰＩフラッシュチップ
１５０…ＥＥＰＲＯＭ
１５２…プラットフォームロジックコントローラ
１５６…シリアルバス
１６０…ＢＩＯＳファームウェアイメージファイル
１６２…ソフトウェアストラップ構造
６３０…ＰＣＨソフトウェアストラップテーブル
６４０…ボードＩＤ構造
６４２…ボードＩＤバージョンフィールド
６４４…ボードＳＫＵ  ＩＤフィールド
６４６…チェックサムフィールド
６４８…シグネチャフィールド
６５０…カスタムデータフィールド
６５２…オプションのデータフィールド
６６０…所望のソフトウェアストラップ構造
６６２…構造ヘッダフィールド
６６４…チェックサムフィールド
６６６…サーバ製品リストフィールド
６６８…サーバ識別フィールド
６７０…オプションのデータフィールド
６７２…ソフトウェアストラップディレクトリフィールド
８６０…所望のハードウェアストラップ構造
８６２…構造ヘッダフィールド
８６４…チェックサムフィールド
８６６…サーバ製品リストフィールド
８６８…サーバ識別フィールド
８７０…オプションのデータフィールド
８７２…ソフトウェアストラップディレクトリフィールド
８７４…ハードウェアストラップパラメータフィールド
８８０…構成テーブル
【図１】
2020038604.tif 000003
【図２】
2020038604.tif 000004
【図３】
2020038604.tif 000005
【図４】
2020038604.tif 000006
【図５】
2020038604.tif 000007
【図６Ａ】
2020038604.tif 000008
【図６Ｂ】
2020038604.tif 000009
【図７】
2020038604.tif 000010
【図８Ａ】
2020038604.tif 000011
【図８Ｂ】
2020038604.tif 000012