(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0018】
以下、本発明の一実施形態を、図面を参照して説明する。
【0019】
A.第1実施形態
まず、本発明の第1実施形態について説明する。
図1は、本発明の第1実施形態による情報処理装置1の構成を示すブロック図である。
図1において、情報処理装置1は、CPU11、12、13、14、PCH(Platform Controller Hub)21、MGM(Management Board)31、NVRAM(Non Volatile Random Access Memory)41、メモリライザ(Memory Riser)51、52、53、54、FAN(ファン)61、及びLCD(Liquid Crystal Display)71を備えている。CPU11、12、13、14は、各々、FRUストレージ(Storage)111、121、131、141を備えている。また、MGM31は、BMC(Baseboard Management Controller:制御部)311、及びFRUストレージ312を備えている。メモリライザ(Memory Riser)51、52、53、54は、各々、FRUストレージ511、521、531、541を備えている。FAN61は、FRUストレージ611を備え、LCD71は、FRUストレージ711を備えている。
【0020】
CPU11、12、13、14の間は、高速なインターフェース(第2のインターフェース)82を介して接続されている。また、PCH21とCPU11、PCH21とBMC311、及びPCH21とNVRAM41は、各々、高速なインターフェース81、83、84で接続されている。PCH21は、CPU11と入出力関係のデバイス制御を行うチップセットである。また、CPU11とメモリライザ51とは、インターフェース85で、CPU12とメモリライザ52とは、インターフェース86で、CPU13とメモリライザ53とは、インターフェース87で、CPU14とメモリライザ54とは、インターフェース88で接続されている。また、BMC311は、FRUストレージ312とは、低速なインターフェース91で接続され、FRUストレージ611、711とは、低速なインターフェース92で接続され、FRUストレージ111、121、131、141、511、521、531、541とは、低速なインターフェース93で接続されている。
【0021】
インターフェース81、82、83、84は、各々、高速にデータを送受信できるインターフェースである。例えば、インターフェース81は、PCI Expressなどからなり、インターフェース83は、LPCなどからなり、インターフェース84は、SPIなどからなる。また、インターフェース91、92、93は、シリアルインターフェース(例えばI2C)であり、データ転送には比較的時間がかかる。
【0022】
CPU11は、起動時にファームウェアであるBIOS112を実行し、BMC311は、ファームウェアであるBMCFW(Baseboard Management Controller Firm Ware)313を実行する。FRUストレージ111、121、131、141、312、511、521、531、541、611、711には、SMBIOSデータ作成に必要なFRU情報が格納されている。また、FRU情報には、少なくとも構成部品を識別するための識別情報(シリアル番号:Serial Number)と、構成部品の構成内容を示す構成内容情報(Common Header)とが含まれる。このような構成において、CPU11上のBIOS112がFRUストレージ312のFRU情報にアクセスするとき、インターフェース81、83は、高速なデータのやり取りが可能であるが、インターフェース91は、低速なシリアルでデータのやり取りを行う。このため、インターフェース81、83と比べると、大幅に時間がかかってしまい、インターフェース91がボトルネックとなる。
【0023】
BMC311上には、BMCFW313が構成部品の載せ換えがあったかどうかを記憶するためのFRUフラグ一覧テーブル311−1(
図2)がある。該FRUフラグ一覧テーブル311−1は、特許請求の範囲におけるフラグ一覧テーブルに相当する。また、NVRAM41には、BIOS112が作成するSMBIOSデータの一覧表であるSMBIOS保存データ41−1(
図3)がある。該SMBIOS保存データ41−1は、特許請求の範囲における保存データに相当する。なお、FRUフラグ一覧テーブル311−1、及びSMBIOS保存データ41−1の詳細については後述する。
【0024】
PCH21は、各構成部品間を接続する役割を持つ。例えば、BIOS112がFRUストレージ312にアクセスするためには、CPU11からPCH21へ、PCH21からBMC311に命令を送信する必要がある。この命令を受け取ったBMC311上で動くBMCFW313によって、FRUストレージ312へアクセスすることになる。BIOS112がBMCFW313からデータを受け取るときも同様に、PCH21を介して行われる。BIOS112からNVRAM41にアクセスするときも同様にPCH21経由で行われる。
【0025】
BIOS112は、当該コンピュータシステムの立ち上げ中にSMBIOSデータを作成する必要がある。SMBIOSデータは、OS(Operating System)113が起動時に参照するデータである。SMBIOSデータ作成には、システム内のFRUストレージに格納されているFRU情報を参照する必要がある。FRU情報をBIOS112から参照する場合、本発明によらない場合、BIOS112がSMBIOSデータを作成するタイミングで必要な全FRU情報を取得するために、低速なシリアルインターフェース91、92、93を用いて、FRUストレージ111、121、131、141、312、511、521、531、541、611、711にアクセスしている。
【0026】
これに対して、本第1実施形態では、BIOS112がSMBIOSデータを作成する前に、BMC311で動作するBMCFW313がFRUストレージ111、121、131、141、312、511、521、531、541、611、711にアクセスしてFRU情報に変更があるか否かを確認し、確認結果を保存する処理を追加する。
【0027】
これにより、BIOS112は、BMCFW313に構成部品の交換があったか否かを確認することができ、変更があった構成部品のFRU情報のみを低速なシリアルインターフェース91、92、93を用いて取得する。交換がなかった構成部品(前回とFRU情報に変更がない構成部品)に関しては、PCH21に高速なインターフェース84で接続されているNVRAM41にあるSMBIOS保存データ41−1から取得する。
【0028】
このように、本第1実施形態では、変更があった構成部品のFRU情報のみを低速なシリアルインターフェース91、92、93を用いて取得してSMBIOS保存データ41−1を作成することで、FRUストレージ111、121、131、141、312、511、521、531、541、611、711にアクセスする頻度を減少させることができ、従来よりも高速にSMBIOSデータの作成を行うことができる。
【0029】
なお、上述したコンピュータシステムの構成は
図1に示したものに限らず、CPU11〜14、PCH21、BMC311、NVRAM41の個数・種類も限定しない。また、CPU11とBMC311の中継点となっているPCH21も、PCHに限定せず、同様な機能持つチップセットでも構わない。PCH21は、接続されるCPUの世代によっては、ノースブリッジとサウスブリッジに置き換えられることもある。また、シリアルインターフェース91、92、93は、
図1では1:Nで接続しているが、1:1でBMC311と直接接続していてもよい。
【0030】
図2は、本第1実施形態において、BMC311上に保存されるFRUフラグ一覧テーブル311−1の構成を示す概念図である。このFRUフラグ一覧テーブル311−1は、構成部品を一意に特定する物理番号(Physical Number)と、構成部品の交換があったことを表す(前回立ち上げ時から変更があり、更新する必要があることを表す)ステータスフラグ(Status)と、構成部品を識別するために付けられた文字列データからなるシリアル番号(Serial Number)と、FRUストレージ内のFRU情報のフォーマットを表すコモンヘッダ(Common Header)とを、それぞれ構成部品毎に対応付けるテーブルである。シリアル番号(Serial Number)は、構成部品を識別するための識別情報であり、コモンヘッダ(Common Header)は、構成部品の構成内容を示す構成内容情報である。
ステータスフラグが「0」の場合、対応する構成部品が前回の起動時より後に交換されていないことを示す。一方、ステータスフラグが「1」の場合、対応する構成部品が前回の起動時より後に交換されたことを示す。
【0031】
コモンヘッダ(Common Header)の値は、16進数で示されており、「Common Header」欄の「h」が16進数であることを表す。
物理番号(Physical Number)は、対応する構成部品が交換されても変わらない固定された番号である。例えば、
図1のCPU11の物理番号は、CPU11が交換されたとしても同じである。これに対して、シリアル番号(Serial Number)は、個々の構成部品に固有の識別番号であり、構成部品が交換された場合、交換前の構成部品のシリアル番号と交換後の構成部品のシリアル番号とは異なる。ゆえに、BMC311は、構成部品のシリアル番号に基づき、FRUフラグ一覧テーブル311−1に既に登録されているシリアル番号か否かを判別すれば、その構成部品が交換されたか否かを知ることができる。つまり、BMC311は、FRUフラグ一覧テーブル311−1に登録されていないシリアル番号の構成部品を、前回の起動時より後に交換された構成部品であると判定し、FRUフラグ一覧テーブル311−1に登録されているシリアル番号の構成部品を、前回の起動時より後に交換されていない構成部品であると判定する。
【0032】
シリアル番号(Serial Number)もFRU情報の一部である。FRU情報のフォーマット詳細は、Platform Management FRU Information Storage Definition(以降、FRU Specと表記)を参照されたい。コモンヘッダ(Common Header)には、Internal User Area、Chassis Info Area、Board Info Area、Product Info Areaへのオフセットが格納されている。FRU情報は、先に挙げた4つのエリアを含む情報から構成されており、これらのエリアにアクセスして必要なデータを取得することになる。
【0033】
図3は、本第1実施形態において、BIOS112によって作成され、NVRAM41に保存されるSMBIOS保存データ41−1を示す概念図である。
図3に示すように、NVRAM41には、BIOS112によって作成されるSMBIOS保存データ41−1がある。SMBIOS保存データ41−1の内容は、複数のSMBIOSデータの一覧表である。Type名別に各Fieldの設定値が保存されている。BIOS112は、FRU情報にアクセスして取得した情報を、SMBIOS保存データ41−1の適切なフィールドに保存する。
図3に示すType名欄は、SMBIOSデータのテーブルのタイプを格納する。各Typeは必要に応じて1つ以上作成される。Length欄は、各Typeのテーブル長が格納される。Handle欄は、各テーブルを判別するための番号が格納される。Type別に格納されるデータ(構成内容情報)とは、システムを構成する部品やシステム固有の情報などからなる。例えば、Type4で定義されるCPUの構成内容情報は、CPU TypeやVersion、Speedや動作状態(Status)などからなる。その他にも、USBやSerialなどのポート、PCIスロットに対して、システムがサポートしている言語やメモリの情報などに対してSMBIOSデータは作成される。Type名とHandleとで、SMBIOSデータのテーブルが一意に決まる。
【0034】
なお、SMBIOS保存データ41−1は、情報処理装置1に含まれる複数の構成部品によって実現される制御状態や構成内容を示す情報を、項目毎に対応付けるテーブルである。よって、BIOS112は、変更された構成部品に応じて、対応する情報を更新する。
【0035】
BIOS112は、BMC311上にあるFRUフラグ一覧テーブル311−1を参照したり、更新したり、データを書き込む際に、IPMIに準拠したコマンド(a)、(b)、(c)を用いてBMC311にあるFRUフラグ一覧テーブル311−1にアクセスする。BMC311は、上記コマンド(a)、(b)、(c)を用いてアクセスされると、コマンドに応じた処理を、FRUフラグ一覧テーブル311−1に対して実行する。以下、コマンド(a)、(b)、(c)について説明する。
【0036】
図4は、コマンド(a)のRequest Data/Response Dataフォーマットの一例を示す概念図である。コマンド(a)は、リクエストするためのコマンド(Request Data)とそのレスポンスを受け取るコマンド(Response Data)とで1つのセットとなっている。コマンドを送信する際に、
図4に示すようなRequest Data/Response Data以外に、BMC311で、コマンド(a)であることが分かるコードとリクエスト/レスポンスが判断できるコードを付ける。このコマンド(a)をBMC311に送信することで、BMC311からデータを取得することができる。BIOS112がBMC311から受け取るResponse Dataには、BMC311の処理が正常終了したことを表すCompletion Codeが付与される。
【0037】
具体的には、BIOS112は、BMCFW313に対して構成部品の物理番号(Physical Number)を指定してコマンド(a)を発行する。それを受け取ったBMCFW313は、
図2に示すFRUフラグ一覧テーブル311−1にアクセスして、Request Dataに格納された物理番号(Physical Number)と一致する構成部品のステータスフラグ(Status)をResponse DataとしてBIOS112に返す。BIOS112は、BMCFW313から返されたResponse Dataからステータスフラグ(Status)を取得する。
【0038】
図5は、コマンド(b)のRequest Data/Response Dataフォーマットの一例を示す概念図である。コマンド(b)は、コマンド(a)と同様に、リクエストするためのコマンド(Request Data)とそのレスポンスを受け取るコマンド(Response Data)とで1つのセットとなっている。BIOS112は、BMCFW313に対して、構成部品の物理番号(Physical Number)を指定してコマンド(b)を発行する。該コマンド(b)を受け取ったBMCFW313は、
図2に示すFRUフラグ一覧テーブル311−1にアクセスし、Request DataのPhysical Numberと一致するFRUフラグ一覧テーブル311−1のCommon Headerを、Response DataとしてBIOS112に返す。BIOS112は、BMCFW313から返されたResponse DataからCommon Headerを取得する。
【0039】
図6は、コマンド(c)のRequest Data/Response Dataフォーマットの一例を示す概念図である。コマンド(c)は、コマンド(a)、(b)と同様に、リクエストするためのコマンド(Request Data)とそのレスポンスを受け取るコマンド(Response Data)とで1つのセットとなっている。BIOS112は、BMCFW313に対して、BIOS112が物理番号(Physical Number)を指定してコマンド(c)を発行する。該コマンド(c)を受け取ったBMCFW313は、Request DataのPhysical Numberと一致するFRUフラグ一覧テーブル311−1のステータスフラグ(Status)を1から0に変更する。BIOS112は、BMCFW313から受信した、Response Dataに含まれているCompletion Codeで、処理が正常に終了したことを確認し、前回立ち上げ時から変更があった構成部品に対する処理を完了する。
【0040】
次に、本第1実施形態の動作を説明する。
図7は、本第1実施形態において、BMCFW313がSMBIOSデータを生成するときの処理を説明するためのフローチャートである。ここでは、AC電源が投入されると、BMCFW313が動作し、一連の処理が終了したら、BMCFW313からBIOS112に処理(
図8)がシリアルに移行するものとする。
【0041】
まず、AC電源がONにされると、BMC311は、図示しないメモリからBMCFW313のプログラムの情報を読み出して実行し、BMCFW313は、各構成部品のFRU情報にアクセスして情報を確認(取得)する(ステップSa1)。
図1に示すMGM31上にあるFRUストレージ312を例に説明すると、BMCFW313は、FRUストレージ312にアクセスし、FRU情報から対応する構成部品のシリアル番号を取得する。
【0042】
次に、ステップSa1で取得した構成部品のシリアル番号とFRUフラグ一覧テーブル311−1(
図2)の対応する構成部品のシリアル番号(Serial Number)とが同一であるか否か、すなわち変更があったか否かを判定する(ステップSa2)。言い換えると、BMCFW313は、FRUフラグ一覧テーブル311−1を参照して、ステップSa1で取得した構成部品のシリアル番号がFRUフラグ一覧テーブル311−1に記憶されているか否かを判定する。ここでは、取得した構成部品のシリアル番号が「MG000001」である場合、FRUフラグ一覧テーブル311−1において、構成部品「Physical Number(00020001(MGM01))」に対応付けられているシリアル番号「MG000001」であるか否かを判定する。
【0043】
そして、双方のシリアル番号が同一の場合には、FRU情報(すなわち構成部品)変更なしと判定する(ステップSa2のNO)。例えば、BMCFW313は、FRUフラグ一覧テーブル311−1を参照して、ステップSa1で取得した構成部品のシリアル番号がFRUフラグ一覧テーブル311−1に記憶されている場合、Physical Numberが(00020001(MGM01))で示される構成部品が、前回以前の起動時に接続されていた構成部品であることと判定する。なお、FRUフラグ一覧テーブル311−1において、Physical Numberが(00020001(MGM01))に対応するステータスフラグ(Status)のFieldに「1」が書き込まれていた場合、BMCFW313は、FRU情報の更新が不要であることを示す「0」に書き換える。
【0044】
一方、双方のシリアル番号が不一致の場合には、FRU情報(すなわち構成部品)変更ありと判定する(ステップSa2のYES)。例えば、BMCFW313は、FRUフラグ一覧テーブル311−1を参照して、ステップSa1で取得した構成部品のシリアル番号がFRUフラグ一覧テーブル311−1に記憶されていない場合、Physical Numberが(00020001(MGM01))で示される構成部品が、前回以前の起動時に接続されていない構成部品(つまり、前回の起動時よりも後に接続された構成部品)であることと判定する。
【0045】
そして、BMCFW313は、FRUフラグ一覧テーブル311−1のステータスフラグ(Status)のFeildに、AC OFF時に構成部品の交換があり、FRU情報の更新が必要であることを示す「1」を書き込む(ステップSa3)。より具体的には、
図2に示すFRUフラグ一覧テーブル311−1の対応する構成部品の「Serial Number」のフィールドに取得したシリアル番号を代入する。また、BMCFW313は、FRUストレージ312のFRU情報にアクセスして、Common Headerを取得する。取得したCommon Headerを、
図2に示すFRUフラグ一覧テーブル311−1の「Common Header」のフィールドに書き込む。
【0046】
次いで、BMCFW313は、FRU情報の取得対象である全ての構成部品のチェックが終了したか否かをFRUフラグ一覧テーブル311−1より判定する(ステップSa4)。
なお、この構成部品「Physical Number(00020001(MGM01))」は、FRUフラグ一覧テーブル311−1に登録されている情報である。BMCFW313は、このFRUフラグ一覧テーブル311−1に登録されているPhysical Numberの構成部品について、順番に、FRUフラグ一覧テーブル311−1に登録されているシリアル番号が、実際に搭載されている構成部品から取得されるシリアル番号と一致しているか否かを判定する。全てにPhysical Numberの構成部品について、ステップSa2の判定がなされた場合、BMCFW313は、FRU情報の取得対象である全ての構成部品のチェックが終了したと判定する。
一方、未確認の構成部品があれば、すなわち全ての構成部品のチェックが終了していない場合(ステップSa4のNO)、BMCFW313は、ステップSa1に戻り、次の構成部品に対して処理を継続する。
【0047】
そして、全ての構成部品のチェックが終了した場合には(ステップSa4のYES)、DC電源のONを実施し(ステップSa5)、CPU11のリセットを解除して、BIOS112を起動する(ステップSa6)。
【0048】
図8は、本第1実施形態による、BIOS112の動作を説明するためのフローチャートである。上述したように、BMCFW313による一連の処理が終了すると、BMCFW313からBIOS112に処理が移行する。BIOS112に処理が移行すると、まず、BIOS112は、NVRAM41で保持しているSMBIOS保存データ41−1で、SMBIOSデータの初期化を行う(ステップSb1)。初期化は、FRU情報を必要とするFieldだけでなく、更新されることのない(固定値を設定する)Fieldも同時に行う。
なお、SMBIOSデータは、起動時に毎回BIOS112が作成するものである。ここでいう初期化は、SMBIOS保存データ41−1をそのまま、今から作成するSMBIOSデータに設定することをいう。SMBIOS保存データ41−1によりSMBIOSデータは、前回起動時と同じデータとして作成される。そして、交換された部品に関わるFieldのみを、上書きする。
【0049】
次に、BIOS112は、SMBIOSデータの中でFRU情報が必要とされるSMBIOSデータの作成を開始する(ステップSb2)。
具体的に説明すると、BIOS112は、前回の立ち上げ時の構成と今回立ち上げ時の構成に変更があったか否かを判定するため、BMC311に対して構成部品の物理番号(Physical Number)を指定してコマンド(a)を発行し、BMC311上にあるFRUフラグ一覧テーブル311−1から対応する構成部品のステータスフラグ(Status)を取得する(ステップSb3)。例えば、BIOS112は、BMCFW313と接続されている複数の構成部品に対応するPhysical Numberとして、NVRAM41に予め登録されている情報を参照し、1つのPhysical Numberを取得する。例えば、BIOS112は、Physical Number(00020001(MGM01))を取得し、このPhysical Number(00020001(MGM01))を含むコマンド(a)のRequest Dataを発行し、BMCFW313に出力する。
【0050】
このコマンド(a)のRequest Dataを受信したBMCFW313は、FRUフラグ一覧テーブル311−1を参照し、このPhysical Number(00020001(MGM01))と対応付けられているステータスフラグ(Status)を取得する。そして、BMCFW313は、この取得したステータスフラグ(Status)を含むコマンド(a)のResponse Dataを作成し、BIOS112に出力する。
【0051】
次に、BIOS112は、ステップb3で取得したステータスフラグ(Status)に基づいて、FRUフラグ一覧テーブル311−1の構成、すなわち構成部品に変更があったか否かを判定する(ステップSb4)。そして、ステータスフラグ(Status)=0である場合には、前回立ち上げ時の構成部品に変更はないと判定し(ステップSb4のNO)、後述するステップSb10に進む。
【0052】
一方、ステータスフラグ(Status)=1である場合には、前回立ち上げ時から構成部品の交換があったと判定し(ステップSb4のYES)、BIOS112は、FRUフラグ一覧テーブル311−1よりFRUのオフセット情報などを取得するため、コマンド(b)をBMC311に対して発行し、BMC311上にあるFRUフラグ一覧テーブル311−1から対応する構成部品のOffset情報などを取得する(ステップSb5)。
【0053】
例えば、BIOS112は、BMCFW313と接続されている複数の構成部品に対応するPhysical Numberとして、NVRAM41に予め登録されている情報を参照し、1つのPhysical Numberを取得する。例えば、BIOS112は、Physical Number(00020001(MGM01))を取得し、このPhysical Number(00020001(MGM01))を含むコマンド(b)のRequest Dataを発行し、BMCFW313に出力する。
【0054】
このコマンド(b)を受け取ったBMCFW313は、FRUフラグ一覧テーブル311−1を参照し、このPhysical Number(00020001(MGM01))と対応付けられているCommon Headerを取得する。そして、BMCFW313は、この取得したCommon Headerを含むコマンド(b)のResponse Dataを作成し、BIOS112に出力する。
【0055】
次に、BIOS112は、コマンド(b)で得た情報を元に、FRUストレージにアクセスしてFRU情報を取得する(ステップSb6)。次に、ステップSb3でFRU情報が更新されていることが分かっているので、BIOS112は、NVRAM41にあるSMBIOS保存データ41−1の対応するフィールドに、ステップSb6で取得したFRU情報を上書き保存する(ステップSb7)。次に、BIOS112は、ステップSb6で取得したFRU情報を用いて、SMBIOSデータを更新する(ステップSb8)。
【0056】
BIOS112は、SMBIOS保存データ41−1、及びSMBIOSデータの更新処理を完了したので、BMC311に対して、BMC311が保持するFRUフラグ一覧テーブル311−1に反映させるためにコマンド(c)を発行し、BMC311上にあるFRUフラグ一覧テーブル311−1の処理対象の構成部品のステータスフラグ(Status)をクリア(=0)する(ステップSb9)。
【0057】
次に、BIOS112は、SMBIOSデータ作成に必要なFRU情報が全て取得できたか否か、すなわちSMBIOSデータの作成が完了したか否かを判定する(ステップSb10)。具体的には、BMCFW313は、FRUフラグ一覧テーブル311−1に登録されているPhysical Numberの構成部品について、順番に、FRUフラグ一覧テーブル311−1に登録されているステータスフラグ(Status)が「1(変更あり)」であるか否か、すなわち構成部品に変更があったか否かを判定する。全てにPhysical Numberの構成部品について、ステップSb4の判定がなされた場合、BMCFW313は、SMBIOSデータ作成に必要なFRU情報が全て取得したと判定する。そして、SMBIOSデータの作成が完了していない場合には(ステップSb10のNO)、ステップSb3に戻り、上述した処理を繰り返す。
【0058】
一方、SMBIOSデータの作成が完了した場合には(ステップSb10のYES)、SMBIOSデータの作成を終了し、また、BIOS112がすべきその他の処理を終了し、OSに処理を移行する(ステップSb11)。
【0059】
上述した本第1実施形態によれば、最初の立ち上げ時には、BIOS112は、SMBIOSデータに必要な全てのFRU情報を取得するために、全てのFRUストレージにアクセスしなければならない。しかし、2回目以降の立ち上げでは、構成部品を交換していなければ、BIOS112は、FRUストレージにアクセスする必要はなくなる。よって、SMBIOSデータの作成の高速化を図ることができる。
【0060】
また、DC電源のON前にBMCFW313によって、FRU情報を収集しておくことで、BIOS112がDC電源のONの度に、SMBIOSデータ作成でFRUストレージへアクセスする必要がなくなる。これは、構成部品の載せ換えがAC電源のOFF後に実施されるため、AC電源がOFFされるまでは、FRU情報が変更されることがないからである。そのため、BMCFW313、BIOS112が保持しているテーブルを変更する必要もない。
【0061】
FRUフラグ一覧テーブル311−1は、AC電源がONされて初めて、FRUストレージにアクセスしてFRU情報を取得する必要性が出てくるのである。これにより、構成部品の交換がないDC電源のON/OFFで低速なシリアルインターフェース91、92、93を介したデータ転送を実施し、アクセスを待つ必要がなくなり、DC電源のON/OFFの立ち上げ時間の大幅な時間短縮を実現することができる。
【0062】
上述した第1実施形態によれば、情報処理装置等におけるCPU11上で動作するファームウェアであるBIOS112が低速なシリアルインターフェースを介して構成部品のFRU情報を取得する際に、予めBMCFW(BMC311上で動作するファームウェア)313によって作成された更新情報を参照し、更新があった構成部品にのみ低速なシリアルインターフェースを用いたデータ取得を行うことで、アクセス頻度を減少させ、起動時間を短縮することができる。
【0063】
より具体的には、BMCFW313が予めFRU情報に前回立ち上げ時から変更があったのかを確認しているため、BIOS112は、変更された構成部品のFRU情報のみにアクセスすればよく、FRU情報を取得する回数と、そのために待つ時間が減少するため、起動時間を短縮することができる。
【0064】
また、取得したFRU情報を、BIOS112がNVRAMなどの不揮発性記憶媒体に保存しておくことで、AC電源のON前後で、載せ替えや実装/未実装の変更がない構成部品に関して、逐次構成部品にアクセスする必要がなくなり、変更されていないFRU情報にアクセスする手間が省略できるので、BIOS112がSMBIOSデータの作成を効率よく行うことができる。
【0065】
B.第2実施形態
次に、本発明の第2実施形態について説明する。
なお、コンピュータシステムの構成は、
図1と同様であるので説明を省略する。上述した第1実施形態との違いは、BMC311がFRUフラグ一覧テーブル311−1ではなく、FRU情報一覧テーブル311−2を保持していることである。FRU情報一覧テーブル311−2には、
図2に示す内容と、FRUストレージのFRU情報とが全て格納されている。該FRU情報一覧テーブル311−2は、特許請求の範囲における情報一覧テーブルに相当する。
【0066】
図9は、本第2実施形態において、BMC311上に保存されるFRU情報一覧テーブル311−2のデータ構成を示す概念図である。FRU情報一覧テーブル311−2の内容は、構成部品を一意に特定する物理番号(Physical Number)、構成部品の交換があったことを表す(前回立ち上げ時から変更があり、更新する必要があることを表す)ステータスフラグ(Status)、交換された構成部品かどうかを確認するために用いる文字列データであるシリアル番号(Serial Number)、FRUストレージ内のFRU情報のフォーマットを表すコモンヘッダ(Common Header)、Internal User Area Data、Chassis Info Area Data、Board Info Area Data、及びProduct Info Area Dataが格納されている。
【0067】
また、本第2実施形態では、BIOS112は、BMC311上にあるFRU情報一覧テーブル311−2を参照してFRU情報を取得する際に、IPMIに準拠したコマンド(d)、を用いてBMC311にあるFRUフラグ一覧テーブル311−1にアクセスする。BMC311は、上記コマンド(d)を用いてアクセスされると、Response Dataとして、FRU情報一覧テーブル311−2から、指定された構成部品のFRU情報を返す。以下、コマンド(d)について説明する。
【0068】
図10は、コマンド(d)のRequest Data/Response Dataフォーマットの一例を示す概念図である。コマンド(d)は、コマンド(a)から(c)と同様に、リクエストするためのコマンド(Request Data)とそのレスポンスを受け取るコマンド(Response Data)とで1つのセットとなっている。BIOS112は、BMCFW313に対して、対象構成部品の物理番号(Physical Number)と取得したいFRU情報のオフセット(ステップSd5で取得したオフセット)とを、Request Dataとして指定してコマンド(d)を発行する。該コマンド(d)を受け取ったBMCFW313は、Response Dataとして、FRU情報一覧テーブル311−2から、指定された構成部品のFRU情報を返す。BIOS112は、BMCFW313から返されたResponse Dataから指定した構成部品のFRU情報を取得する。
【0069】
図11は、本第2実施形態における、BMCFW313の動作を説明するためのフローチャートである。まず、AC電源がONにされると、BMCFW313は、自動的に動作を開始し、各構成部品のFRU情報にアクセスして情報を確認する(ステップSc1)。
図1に示すMGM31上にあるFRUストレージ312を例に説明すると、BMCFW313は、FRUストレージ312にアクセスし、FRU情報から対応する構成部品のシリアル番号を取得する。
【0070】
次に、ステップSc1でFRU情報から取得した構成部品のシリアル番号とFRU情報一覧テーブル311−2の対応する構成部品のシリアル番号(Serial Number)とが同一であるか否か、すなわち変更があったか否かを判定する(ステップSc2)。
【0071】
そして、双方のシリアル番号が同一の場合には、FRU情報(すなわち構成部品)変更なしと判定し(ステップSc2のNO)、BMCFW313は、FRU情報の取得対象である全ての構成部品のチェックが終了したか否かをFRU情報一覧テーブル311−2より判定する(ステップSc4)。そして、未確認の構成部品があれば、すなわち全ての構成部品のチェックが終了していない場合には(ステップSc4のNO)、ステップSc1に戻り、次の構成部品に対して処理を継続する。
【0072】
一方、双方のシリアル番号が不一致の場合には、FRU情報(すなわち構成部品)に変更ありと判定し(ステップSc2のYES)、BMCFW313は、変更があったFRUストレージのFRU情報一覧テーブル311−2(
図9)を作成するため、FRUストレージにアクセスしてFRU情報をフォーマットごと全て取得してFRU情報一覧テーブル311−2に書き込み、また、変更があったFRUストレージのステータスフラグ(Status)を「1」に変更する(ステップSc3)。そして、対象構成部品のFRU情報一覧テーブル311−2(
図9)の作成が終わると、BMCFW313は、FRU情報の取得対象である全ての構成部品のチェックが終了したか否かをFRU情報一覧テーブル311−2より判定する(ステップSc4)。そして、未確認の構成部品があれば、すなわち全ての構成部品のチェックが終了していない場合には(ステップSc4のNO)、ステップSc1に戻り、次の構成部品に対して処理を継続する。
【0073】
そして、全ての構成部品のチェックが終了した場合には(ステップSc4のYES)、DC電源のONを実施し(ステップSc5)、CPU11のリセットを解除して、BIOS112を起動する(ステップSc6)。
【0074】
図12は、本第2実施形態による、BIOS112の動作を説明するためのフローチャートである。上述したように、BMCFW313による一連の処理が終了すると、BMCFW313からBIOS112に処理が移行する。BIOS112に処理が移行すると、まず、BIOS112は、NVRAM41に保持しているSMBIOS保存データ41−1で、SMBIOSデータの初期化を行う(ステップSd1)。初期化は、FRU情報を必要とするFieldだけでなく、更新されることのない(固定値を設定する)Fieldも同時に行う。
【0075】
次に、BIOS112は、SMBIOSデータの中でFRU情報が必要とされるSMBIOSデータの作成を開始する(ステップSd2)。次に、BIOS112は、BMCFW313が保持しているFRU情報一覧テーブル311−2のステータスフラグ(Status)を、コマンド(a)を発行することにより取得する(ステップSd3)。次に、ステップSd3で取得したステータスフラグ(Status)の値に基づいて、FRU情報に変更があったか否かを判定する(ステップSd4)。そして、ステータスフラグ(Status)が「0」の場合には、FRU情報に変更がないと判定し(ステップSd4のNO)、後述するステップSd10に進む。
【0076】
一方、ステータスフラグ(Status)が「1」の場合には、BIOS112は、FRU情報に変更があったと判定し(ステップSd4のYES)、更新処理を行うため、BMC311にコマンド(b)を発行することにより、FRU情報一覧テーブル311−2の“Common Header”からオフセット情報などを取得する(ステップSd5)。次に、BIOS112は、BMC311にコマンド(d)を発行することにより、FRU情報一覧テーブル311−2から、必要なAreaのFRU情報を取得する(ステップSd6)。
【0077】
次に、ステップSd3でFRU情報が更新されていることが分かっているので、BIOS112は、NVRAM41にあるSMBIOS保存データ41−1に、ステップSd6で取得した更新されたFRU情報を上書き保存する(ステップSd7)。次に、BIOS112は、ステップSd6で取得したFRU情報を用いて、SMBIOSデータを更新する(ステップSd8)。
【0078】
次に、BIOS112は、SMBIOS保存データ41−1、及びSMBIOSデータの更新処理を完了したので、BMC311に対して、BMC311が保持するFRU情報一覧テーブル311−2に反映させるためにコマンド(c)を発行し、BMC311上にあるFRU情報一覧テーブル311−2の処理対象の構成部品のステータスフラグ(Status)をクリア(=0)する(ステップSd9)。
【0079】
次に、BIOS112は、SMBIOSデータ作成に必要なFRU情報が全て取得できたか否か、すなわちSMBIOSデータの作成が完了したか否かを判定する(ステップSd10)。そして、SMBIOSデータの作成が完了していない場合には(ステップSd10のNO)、ステップSd3に戻り、上述した処理を繰り返す。
【0080】
一方、SMBIOSデータの作成が完了した場合には(ステップSd10のYES)、SMBIOSデータの作成を終了し、また、BIOS112がすべきその他の処理を終了し、OS113に処理を移行する(ステップSd11)。
【0081】
上述した第2実施形態では、AC電源のONからDC電源がONされるまでの間に、BMC311が、変更のあった全てのFRUストレージから全てのFRU情報を取得する必要がある。そのため、構成部品の載せ替えによりFRU情報に変更があると、AC電源のONからDC電源のONまでの処理時間は、第1実施形態よりも長くなる。但し、FRUストレージに変更がなかった場合には、AC電源のONからDC電源のONまでの処理時間は第1実施形態と同様に短縮することができる。
【0082】
これに対して、本第2実施形態において、DC電源のON後の処理では、BIOS112は、全てのFRU情報をFRU情報一覧テーブル311−2から取得できるため、FRUストレージに直接アクセスする必要がなくなる。そのため、DC電源のONからOSハンドオフ(Hand off)するまでの処理時間は、構成部品(FRU情報)の変更の有無によらず一定となる。
【0083】
なお、上述した第2実施形態において、
図9に示すFRU情報一覧テーブル311−2に格納されるデータはこれに限らない。例えば、SMBIOSデータ作成、または他の機能が必要とするデータのみを格納するようにしてもよい。
【0084】
また、
図2に示すFRUフラグ一覧テーブル311−1(第1実施形態)、
図3に示すSMBIOS保存データ41−1、
図9に示すFRU情報一覧テーブル311−2(第2実施形態)の形式は、図示したものに限定せず、装置の構成により変更され得るものである。
【0085】
また、第1実施形態で用いたBMC311が保持しているFRUフラグ一覧テーブル311−1(
図2)は、構成部品の更新情報が分かることが重要であり、保存先は不揮発性の記録媒体であれば、如何なるデバイスでも構わない。
【0086】
また、BIOS112からもBMCFW313からもアクセスできる不揮発性の記録媒体がある場合には、
図2と
図3を組み合わせたテーブル、または
図2のみ、
図3のみ、
図2と
図3の必要な部分のみを抽出したテーブルなど、必要なデータを格納したテーブルを不揮発性の記録媒体に保存しておき、BIOS112とBMCFW313が必要なときに単独でアクセスすることも可能である。この場合、コマンドを用意する必要がなくなる。
【0087】
また、第1、第2実施形態では、FRU情報の取得について説明したが、FRU情報に限定せず、例えばSPDなどの、低速なインターフェースを介してアクセスしなければならない情報取得に対しても適用可能である。
【0088】
なお、本発明に係る情報処理装置システムの最小の構成要素は、割り当てられた固有の識別情報101−1〜101−Nと、構成内容を示す構成内容情報102−1〜102−Nとを、それぞれが備える記憶領域103−1〜103−Nにそれぞれ記憶している複数の構成部品100−1〜100−Nと、複数の前記構成部品100−1〜100−Nと接続されており、前回以前の起動時に接続されていた前記構成部品を示す前記識別情報を記憶するテーブル110−1を参照して、接続されている複数の前記構成部品100−1〜100−Nから入力するそれぞれの前記識別情報101−1〜101−Nに基づき、前回の起動時より後に接続された前記構成部品の前記識別情報を取得する監視制御部110と、複数の前記構成部品100−1〜100−Nから入力する前記構成内容情報102−1〜102−Nを記憶する記憶領域120−1を備え、前記監視制御部110によって取得された前記前回の起動時より後に接続された前記構成部品の前記識別情報に基づき、当該構成部品の前記構成内容情報を取得し、前記記憶領域120−1を更新する更新部120と、を備えることを特徴とする情報処理装置である。この構成を
図13に示す。
【0089】
図13に示す構成部品100−1〜100−Nは、実施形態のCPU12、13、14、MGM31、メモリライザ51、52、53、54、FAN61、及びLCD71に相当する構成である。また、識別情報101−1〜101−Nは、実施形態の構成部品に付けられたシリアル番号である。また、構成内容情報102−1〜102−Nは、
図2に示すFRUフラグ一覧テーブル311−1のコモンヘッダ(Common Header)に相当する。記憶領域103−1〜103−Nは、実施形態のFRUストレージ111、121、131、141、312、511、521、531、541、611、711に相当する。また、監視制御部110は、実施形態のBMCFW313に相当し、テーブル110−1は、FRUフラグ一覧テーブル311−1、FRU情報一覧テーブル311−2に相当する。更新部120は、BIOS112に相当し、記憶領域120−1は、NVRAM41に相当する。
【0090】
上記の実施形態の一部又は全部は、以下の付記のようにも記載され得るが、以下には限られない。
【0091】
(付記1)割り当てられた固有の識別情報と、構成内容を示す構成内容情報とを、それぞれが備える記憶領域にそれぞれ記憶している複数の構成部品と、複数の前記構成部品と接続されており、前回以前の起動時に接続されていた前記構成部品を示す前記識別情報を記憶するテーブルを参照して、接続されている複数の前記構成部品から入力するそれぞれの前記識別情報に基づき、前回の起動時より後に接続された前記構成部品の前記識別情報を取得する監視制御部と、複数の前記構成部品から入力する前記構成内容情報を記憶する記憶領域を備え、前記監視制御部によって取得された前記前回の起動時より後に接続された前記構成部品の前記識別情報に基づき、当該構成部品の前記構成内容情報を取得し、前記記憶領域を更新する更新部と、を備えることを特徴とする情報処理装置。
【0092】
(付記2)前記監視制御部は、第1の通信速度で情報の送受信を行う第1のインターフェースを介して、複数の前記構成部品と接続されており、前記更新部は、前記第1のインターフェースを介して複数の前記構成部品と接続され、前記第1の通信速度に比べて高速な第2の通信速度で情報の送受信を行う第2のインターフェースを介して前記監視制御部と接続されていることを特徴とする付記1に記載の情報処理装置。
【0093】
(付記3)前記監視制御部は、複数の前記構成部品のすべてから前記識別情報を入力し、前記構成部品から入力する前記識別情報が前記テーブルに記憶されていない場合、前記テーブルを更新して当該識別情報を書き込むことを特徴とする付記1に記載の情報処理装置。
【0094】
(付記4)前記構成内容情報は、前記構成部品の起動時における前記構成部品のそれぞれの動作状態あるいは機能構成の内容のうち少なくとも一方を示す情報であることを特徴とする付記1に記載の情報処理装置。
【0095】
(付記5)前記監視制御部は、複数の前記構成部品と接続されており、前回以前の起動時に接続されていた前記構成部品を示す前記識別情報を記憶するテーブルを参照して、接続されている複数の前記構成部品から入力するそれぞれの前記識別情報に基づき、前回の起動時より後に接続された前記構成部品の前記識別情報と前記構成内容情報とを取得し、前記更新部は、前記監視制御部によって取得された前記前回の起動時より後に接続された前記構成部品の前記識別情報に基づき、前記監視制御部から当該構成部品の前記構成内容情報を取得し、前記記憶領域を更新する、ことを特徴とする付記1から4のいずれか一項に記載の情報処理装置。
【0096】
(付記6)割り当てられた固有の識別情報と、構成内容を示す構成内容情報とを、それぞれが備える記憶領域にそれぞれ記憶している複数の構成部品と接続されている監視制御部により、前回以前の起動時に接続されていた前記構成部品を示す前記識別情報を記憶するテーブルを参照して、接続されている複数の前記構成部品から入力するそれぞれの前記識別情報に基づき、前回の起動時より後に接続された前記構成部品の前記識別情報を取得するステップと、複数の前記構成部品から入力する前記構成内容情報を記憶する記憶領域を備えた更新部により、前記監視制御部によって取得された前記前回の起動時より後に接続された前記構成部品の前記識別情報に基づき、当該構成部品の前記構成内容情報を取得し、前記記憶領域を更新するステップとを含むことを特徴とする情報取得方法。
【0097】
(付記7)情報処理装置のコンピュータに、割り当てられた固有の識別情報と、構成内容を示す構成内容情報とを、それぞれが備える記憶領域にそれぞれ記憶している複数の構成部品と接続されている監視制御部により、前回以前の起動時に接続されていた前記構成部品を示す前記識別情報を記憶するテーブルを参照して、接続されている複数の前記構成部品から入力するそれぞれの前記識別情報に基づき、前回の起動時より後に接続された前記構成部品の前記識別情報を取得するステップと、複数の前記構成部品から入力する前記構成内容情報を記憶する記憶領域を備えた更新部により、前記監視制御部によって取得された前記前回の起動時より後に接続された前記構成部品の前記識別情報に基づき、当該構成部品の前記構成内容情報を取得し、前記記憶領域を更新するステップとを実行させることを特徴とするプログラム。