(57)【要約】【課題】システム内の電子機器が誤動作することを防止する。【解決手段】制御装置２０には、それぞれがいずれかの電子機器に対応し、対応する電子機器が制御装置２０の制御により正常に動作可能であるか否かを示す値が設定された複数のビットを備える動作判定マップ２３が記憶される。起動制御部２２は、動作判定マップ２３内のビットのうちの１つを指定するビット指定情報１３を機器搭載部１０ａから取得し、ビット指定情報１３が指定する動作判定マップ２３内のビットに設定された動作可否情報を読み出す。起動制御部２２は、動作可否情報が動作可能を示す場合、機器搭載部１０ａに対して電子機器１１を起動させるように要求する一方、動作可否情報が動作不可能を示す場合、機器搭載部１０ａに搭載された電子機器１１を起動制御対象から除外する。【選択図】図１
2012079176.tif 000002
【特許請求の範囲】
【請求項１】
制御装置と、前記制御装置による制御の下で起動して動作する電子機器がそれぞれ搭載された複数の機器搭載部とを備えた情報処理システムにおいて、
前記制御装置は、
それぞれがいずれかの電子機器に対応し、対応する電子機器が自装置の制御により正常に動作可能であるか否かを示す動作可否情報が設定される複数のビットを備える動作判定マップを記憶する第１の不揮発性記憶部と、
前記動作判定マップ内のビットを指定するビット指定情報を、前記機器搭載部から取得し、取得したビット指定情報が指定する前記動作判定マップ内のビットに設定された動作可否情報を読み出し、読み出した動作可否情報が動作可能を示す場合には、ビット指定情報の取得元の機器搭載部に対して、当該機器搭載部に搭載された電子機器を起動させるように要求する一方、読み出した動作可否情報が動作不可能を示す場合には、ビット指定情報の取得元の機器搭載部に搭載された電子機器を起動制御対象から除外する起動制御部と、
を有し、
前記複数の機器搭載部のそれぞれは、自身に搭載された電子機器の動作可否情報を記憶し、前記制御装置内の前記起動制御部に出力する第２の不揮発性記憶部を有する、
ことを特徴とする情報処理システム。
【請求項２】
前記制御装置は、前記動作判定マップ内のビットのうち動作不可能を示すビットを、動作可能を示すように書き替える更新処理部をさらに有することを特徴とする請求項１記載の情報処理システム。
【請求項３】
前記制御装置の前記第１の不揮発性記憶部には、機器搭載部に搭載された電子機器に対して起動時に設定する設定情報が記憶され、
前記起動制御部は、機器搭載部から取得したビット指定情報が指定する前記動作判定マップ内のビットに設定された動作可否情報が動作可能を示す場合には、ビット指定情報の取得元の機器搭載部に対して、前記第１の不揮発性記憶部に記憶された設定情報を送信し、送信した設定情報を当該機器搭載部に搭載された電子機器に設定して当該電子機器を起動させるように要求する、
ことを特徴とする請求項１記載の情報処理システム。
【請求項４】
前記制御装置は、前記動作判定マップ内のビットのうち動作不可能を示すビットを動作可能を示すように書き替えるとともに、動作可能を示すように書き替えたビットに対応する電子機器を正常に動作させる新たな設定情報を前記第１の不揮発性記憶部に記録する更新処理部をさらに有することを特徴とする請求項３記載の情報処理システム。
【請求項５】
前記起動制御部は、機器搭載部から取得したビット指定情報が指定する前記動作判定マップ内のビットに設定された動作可否情報が動作可能を示す場合には、ビット指定情報の取得元の機器搭載部に付与された版数以下であって当該版数に最も近い版数が付与された設定情報を選択し、選択した設定情報を、ビット指定情報の取得元の機器搭載部に送信することを特徴とする請求項３または４記載の情報処理システム。
【請求項６】
前記起動制御部は、機器搭載部から取得したビット指定情報が指定する前記動作判定マップ内のビットに設定された動作可否情報が動作可能を示す場合には、取得したビット指定情報が指定する前記動作判定マップ内のビットに対応付けられた設定情報を、ビット指定情報の取得元の機器搭載部に送信することを特徴とする請求項３または４記載の情報処理システム。
【請求項７】
前記第１の不揮発性記憶部には、機器搭載部に搭載された電子機器の種別ごとに個別の動作判定マップが記憶され、
前記起動制御部は、ビット指定情報の取得元の機器搭載部に搭載された電子機器の種別に対応する動作判定マップから動作可否情報を読み出す、
ことを特徴とする請求項１記載の情報処理システム。
【請求項８】
前記複数の機器搭載部のうち少なくとも一部の機器搭載部が備える第２の不揮発性記憶部には、各ビットに対応する電子機器が当該第２の不揮発性記憶部が属する機器搭載部内の電子機器と組み合わせて正常に動作可能であるか否かを示す組合せ可否情報が各ビットに設定された組合せ判定マップが、さらに記憶され、
前記起動制御部は、組合せ判定マップが記憶された第１の機器搭載部から組合せ判定マップを取得し、前記第１の機器搭載部と組み合わせて動作する第２の機器搭載部からビット指定情報を取得し、前記第２の機器搭載部から取得したビット指定情報が指定する組合せ判定マップ内のビットに設定された組合せ可否情報を読み出し、読み出した組合せ可否情報が動作不可能を示す場合には、前記第１の機器搭載部または前記第２の機器搭載部の少なくとも一方に搭載された電子機器を起動制御対象から除外する、
ことを特徴とする請求項７記載の情報処理システム。
【請求項９】
制御装置と、前記制御装置による制御の下で起動して動作する電子機器がそれぞれ搭載された複数の機器搭載部とを備えた情報処理システムにおける起動制御方法であって、
前記制御装置が、対応する電子機器が自装置の制御により正常に動作可能であるか否かを示す動作可否情報が設定されたビットを複数有する動作判定マップのいずれか１つのビットを指定するビット指定情報を、前記機器搭載部に設けられた第１の不揮発性記憶部から取得し、
前記制御装置が、自装置内の第２の不揮発性記憶部に記憶された前記動作判定マップを参照し、各機器搭載部の第１の不揮発性記憶部から取得したビット指定情報が指定する前記動作判定マップ内のビットに設定された動作可否情報を前記第２の不揮発性記憶部から読み出し、
読み出した動作可否情報が動作可能を示す場合には、ビット指定情報の取得元の機器搭載部に対して、当該機器搭載部に搭載された電子機器を起動するように要求する一方、読み出した動作可否情報が動作不可能を示す場合には、ビット指定情報の取得元の機器搭載部に搭載された電子機器を起動制御対象から除外する、
ことを特徴とする起動制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理システムおよび起動制御方法に関する。
【背景技術】
【０００２】
サーバなどのコンピュータシステムとして、ＣＰＵ（Central Processing Unit）やメモリ、Ｉ／Ｏ（Input/Output）デバイスなどをそれぞれ個別のデバイスユニット上に設け、これらのデバイスユニットを任意に組み合わせることで構築されたものがある。例えば、６４ユニットといった多数のＣＰＵユニットを備えたコンピュータシステムがある。このように複数のデバイスユニットを備えたコンピュータシステムには、各デバイスユニットを統括的に制御する制御装置が設けられることがある。制御装置は、例えば、各デバイスユニットの起動制御や、各デバイスユニットにおける異常発生の監視などを行う。
【０００３】
また、コンピュータの起動制御に関する技術として、不揮発メモリから取り出されたブートローダのコードから生成したハッシュ値を基に、そのブートローダが許可されたものかを判定し、許可されたものである場合のみブートローダを実行するようにしたコンピュータがある。
【０００４】
さらに、複数の外部デバイスが接続されるコンピュータの例として、接続された外部デバイスが不具合デバイスであると認知された場合に、不具合デバイスの情報を記憶し、次回の起動時に、記憶した情報を基に、前回起動時における不具合デバイスを除外して起動するものがある。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００７−１０２７９１号公報
【特許文献２】特開２００７−２４９７６１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
ところで、上記のように複数のデバイスユニットおよび制御装置を備えたコンピュータシステムにおいては、搭載されたデバイスユニットが、新たに発売された版数の新しいデバイスユニットに交換されることがある。また、コンピュータシステムに版数の異なるデバイスユニットが混在する場合もある。
【０００７】
ここで、例えば、制御装置が実行するファームウェアを更新しないまま、コンピュータシステムに新たな版数のデバイスユニットが搭載された場合、新たに搭載されたデバイスユニットは、現在コンピュータシステムで実行されているファームウェアを用いて正常に動作しないことがあり得る。コンピュータシステム内に正常に動作しないデバイスユニットが存在する場合、コンピュータシステム全体が異常な動作を行う可能性もあることから、デバイスユニットの誤動作が発生しないようにすることが求められていた。
【０００８】
本発明はこのような課題に鑑みてなされたものであり、システム内の電子機器が誤動作することを防止する情報処理システムおよび起動制御方法を提供することを目的とする。
【課題を解決するための手段】
【０００９】
上記目的を達成するために、制御装置と、前記制御装置による制御の下で起動して動作する電子機器がそれぞれ搭載された複数の機器搭載部とを備えた情報処理システムが提供される。この情報処理システムにおいて、制御装置は、それぞれがいずれかの電子機器に対応し、対応する電子機器が自装置の制御により正常に動作可能であるか否かを示す動作可否情報が設定される複数のビットを備える動作判定マップを記憶する第１の不揮発性記憶部と、動作判定マップ内のビットを指定するビット指定情報を、機器搭載部から取得し、取得したビット指定情報が指定する前記動作判定マップ内のビットに設定された動作可否情報を読み出し、読み出した動作可否情報が動作可能を示す場合には、ビット指定情報の取得元の機器搭載部に対して、当該機器搭載部に搭載された電子機器を起動させるように要求する一方、読み出した動作可否情報が動作不可能を示す場合には、ビット指定情報の取得元の機器搭載部に搭載された電子機器を起動制御対象から除外する起動制御部と、を有する。また、複数の機器搭載部のそれぞれは、自身に搭載された電子機器の動作可否情報を記憶し、制御装置内の起動制御部に出力する第２の不揮発性記憶部を有する。
【００１０】
また、上記目的を達成するために、上記の情報処理システムと同様の処理を行う起動制御方法が提供される。
【発明の効果】
【００１１】
上記の情報処理システムおよび起動制御方法によれば、機器搭載部の誤動作を防止することができる。
【図面の簡単な説明】
【００１２】
【図１】第１の実施の形態に係る情報処理システムの構成例を示す図である。
【図２】第２の実施の形態に係るコンピュータシステムの構成例を示す図である。
【図３】管理端末のハードウェア構成例を示す図である。
【図４】制御装置が備える処理機能の例を示すブロック図である。
【図５】動作判定マップおよびファームウェア対応マップの構成例を示す図である。
【図６】動作判定マップと、デバイスユニットおよび初期設定値の各版数との関係を示す第１の図である。
【図７】動作判定マップと、デバイスユニットおよび初期設定値の各版数との関係を示す第２の図である。
【図８】ある版数のファームウェアがリリースされた時点での動作判定マップとファームウェア対応マップの状態を示す図である。
【図９】新たな版数のＣＰＵユニットがラックに挿入された場合の動作判定マップおよびファームウェア対応マップの状態を示す図である。
【図１０】ファームウェアが更新された場合の動作判定マップおよびファームウェア対応マップの状態を示す図である。
【図１１】制御装置によるデバイスユニットの起動処理の手順を示すフローチャートである。
【図１２】第３の実施の形態における各種マップの構成例を示す図である。
【図１３】制御装置によるデバイスユニットの起動処理の手順を示すフローチャートである。
【図１４】組合せ判定処理の手順を示すフローチャートである。
【発明を実施するための形態】
【００１３】
以下、実施の形態について図面を参照して詳細に説明する。
〔第１の実施の形態〕
図１は、第１の実施の形態に係る情報処理システムの構成例を示す図である。
【００１４】
図１に示す情報処理システム１は、複数の機器搭載部と、制御装置２０とを備える。図１の例では、情報処理システム１は、３つの機器搭載部１０ａ，１０ｂ，１０ｃを備えているが、情報処理システム１が備える機器搭載部の数はこれに限らない。
【００１５】
機器搭載部１０ａには、制御装置２０による制御の下で起動して動作する電子機器１１と、不揮発性記憶部１２が搭載されている。電子機器１１は、例えば、コンピュータを構成するＣＰＵ、メモリ、ＩＯデバイスなどの個々の機器である。あるいは、電子機器１１自体がコンピュータであってもよい。不揮発性記憶部１２には、後述するビット指定情報１３が格納されている。なお、機器搭載部１０ａにおいて、不揮発性記憶部１２は、電子機器１１が起動していない状態（例えば、電源が供給されていない状態）でも、記憶した情報に対する制御装置２０からのアクセスを受け付けることができる。
【００１６】
機器搭載部１０ｂ，１０ｃの構成も、基本的に機器搭載部１０ａと同じである。ただし、機器搭載部１０ａ，１０ｂ，１０ｃのそれぞれに搭載される電子機器は、種別の異なるものであってもよい。例えば、機器搭載部１０ａ，１０ｂ，１０ｃのそれぞれに搭載される電子機器が、コンピュータを構成する個々の機器である場合、機器搭載部１０ａ，１０ｂ，１０ｃのそれぞれに搭載された電子機器がコンピュータとして動作してもよい。
【００１７】
制御装置２０は、不揮発性記憶部２１と起動制御部２２とを備える。不揮発性記憶部２１には、動作判定マップ２３が記憶される。起動制御部２２は、不揮発性記憶部２１に記憶された動作判定マップ２３を参照して、機器搭載部１０ａ，１０ｂ，１０ｃがそれぞれ備える電子機器の起動制御を行う。
【００１８】
ここで、起動制御部２２による電子機器の起動制御について詳しく説明する。起動制御部２２は、機器搭載部に搭載された電子機器を起動させる際に、その機器搭載部からビット指定情報を取得し、ビット指定情報と動作判定マップ２３との比較に基づいて、ビット指定情報の取得元の機器搭載部に搭載された電子機器を起動させるか否かを判定する。
【００１９】
動作判定マップ２３は、それぞれがいずれかの電子機器に対応する複数のビットを備える。各ビットに対応する電子機器が制御装置２０の制御により正常に動作可能であるか否かを示す動作可否情報が、動作判定マップ２３の各ビットに設定される。図１の例では、動作判定マップ２３はビット「０」からビット「７」までの８つのビットを備え、各ビットには、動作可否情報として「１」または「０」のいずれかの値が設定される。値「１」が設定されたビットは、そのビットに対応する電子機器が制御装置２０により正常に動作可能であることを示し、値「０」が設定されたビットは、そのビットに対応する電子機器が制御装置２０により正常に動作できないことを示す。
【００２０】
一方、各機器搭載部に記憶されるビット指定情報は、動作判定マップ２３のビットのうち１つを指定する情報である。換言すると、ビット指定情報は、このビット指定情報が記憶されている機器搭載部内の電子機器が、動作判定マップ２３のどのビットに対応付けられているかを示す情報である。
【００２１】
なお、動作判定マップ２３の各ビットに対しては、同じ種別の電子機器が対応付けられることが望ましい。この場合、動作判定マップ２３は電子機器の種別ごとに用意され、起動制御部２２は、電子機器の起動制御を行う際、制御対象の電子機器の種別に対応する動作判定マップ２３を参照する。また、この場合、機器搭載部に記憶されるビット指定情報は、この機器搭載部に搭載されている電子機器の種別に対応する動作判定マップ２３のビットのうち、この機器搭載部に搭載されている電子機器に対応する１つのビットを指定する情報となる。
【００２２】
以下、例として、起動制御部２２が機器搭載部１０ａ内の電子機器１１を起動させる際の処理について説明する。
起動制御部２２は、電子機器１１を起動させるのに先立って、起動させる電子機器１１を搭載している機器搭載部１０ａ内の不揮発性記憶部１２からビット指定情報１３を取得する。起動制御部２２は、取得したビット指定情報１３が指定する動作判定マップ２３内のビットに設定された動作可否情報を読み出す。起動制御部２２は、読み出した動作可否情報が動作可能を示す場合には、機器搭載部１０ａに対して電子機器１１を起動させるように要求する。一方、起動制御部２２は、読み出した動作可否情報が動作不可能を示す場合には、電子機器１１を起動制御対象から除外する。このとき、起動制御部２２は、電子機器１１を正常に動作させることができないことを、表示などによりユーザに通知するような処理を行ってもよい。
【００２３】
このようなビット指定情報１３と動作判定マップ２３との比較結果に基づく起動制御により、制御装置２０が正常に動作させることができない電子機器１１は起動しなくなる。その結果、電子機器１１の誤動作を防止でき、情報処理システム１の動作の信頼性が向上する。
【００２４】
また、制御装置２０は、動作判定マップ２３のビットのうち動作不可能を示すビットを、動作可能を示すように書き替える機能を備えてもよい。この場合、起動制御部２２は、例えば、動作可能を示すように書き替えられたビットに対応する電子機器を正常に動作させることができるように、その処理内容が更新される。このように、動作判定マップ２３のビットに設定された動作可否情報を動作不可能から動作可能を示すように書き替えることで、起動制御部２２が正しく動作させることが可能な電子機器を増やすことができる。
【００２５】
例えば、新たな機器搭載部が発売された当初においては、制御装置２０が新たな機器搭載部内の電子機器の動作を保証できない場合には、動作判定マップ２３における新たな電子機器に対応するビットを動作不可能に設定しておくことで、情報処理システム１において新たな電子機器が動作することを阻止できる。そして、その後に起動制御部２２の処理内容（例えば、機器制御部２２の処理手順を記述したファームウェア）が更新され、制御装置２０が新たな機器搭載部内の電子機器の動作を保証できるようになった場合には、動作判定マップ２３における新たな電子機器に対応するビットを動作可能を示すように更新することで、新たな電子機器を情報処理システム１において動作させることが可能になる。
【００２６】
〔第２の実施の形態〕
図２は、第２の実施の形態に係るコンピュータシステムの構成例を示す図である。
図２に示すコンピュータシステム１００は、コンピュータを構成する各種のデバイスがそれぞれ基板上に搭載されたデバイスユニットを複数備える。図２のコンピュータシステム１００は、デバイスユニットの例として、ＣＰＵが搭載されたＣＰＵユニット１１０、主記憶装置として使用されるメモリが搭載されたメモリユニット１２０、および、ＩＯデバイスが搭載されたＩＯユニット１３０を、それぞれ複数備える。さらに、コンピュータシステム１００は、各デバイスユニットを制御する制御装置２００を備える。
【００２７】
各デバイスユニットおよび制御装置２００は、例えば、コンピュータシステム１００の筐体内のラックに設けられたスロットに挿入される。また、デバイスユニット間は、データバス３１０を介して接続されており、デバイスユニットと制御装置２００との間は、制御バス３２０を介して接続されている。データバス３１０および制御バス３２０は、例えば、ラックのバックプレーンに設けられる。
【００２８】
ＣＰＵユニット１１０は、ＣＰＵチップ１１１と、ハードウェア（Ｈ／Ｗ）コントローラ１１２とを備える。ＣＰＵチップ１１１には、ＣＰＵの他、キャッシュ機構や、データバス３１０とのインタフェース回路などの各種周辺回路が搭載されている。また、ＣＰＵチップ１１１は、制御装置２００からハードウェアコントローラ１１２を通じて設定された初期設定値に基づいて、動作を開始する。
【００２９】
ハードウェアコントローラ１１２は、ＣＰＵユニット１１０内のハードウェアの動作を制御する機能、制御バス３２０を通じて制御装置２００と通信する機能などを備える。ハードウェアコントローラ１１２には、不揮発性メモリ１１２ａが設けられ、不揮発性メモリ１１２ａには、後述するファームウェア対応マップがあらかじめ記憶される。
【００３０】
メモリユニット１２０は、メモリ１２１、メモリアクセスコントローラ１２２およびハードウェアコントローラ１２３を備える。メモリ１２１は、１つまたは複数のＣＰＵユニット１１０内のＣＰＵに対する主記憶装置として動作するＲＡＭ（Random Access Memory）である。メモリアクセスコントローラ１２２は、ＣＰＵからのデータバス３１０を通じたメモリ１２１へのアクセスを制御する回路である。また、メモリアクセスコントローラ１２２は、制御装置２００からハードウェアコントローラ１１２を通じて設定された初期設定値に基づいて、動作を開始する。
【００３１】
ハードウェアコントローラ１２３は、メモリユニット１２０内のハードウェアの動作を制御する機能、制御バス３２０を通じて制御装置２００と通信する機能などを備える。ハードウェアコントローラ１２３には、不揮発性メモリ１２３ａが設けられ、不揮発性メモリ１２３ａには、後述するファームウェア対応マップがあらかじめ記憶される。
【００３２】
ＩＯユニット１３０は、ＩＯデバイス１３１、ＩＯアクセスコントローラ１３２およびハードウェアコントローラ１３３を備える。ＩＯデバイス１３１は、例えば、ＨＤＤ（Hard Disk Drive）などの２次記憶装置として使用される不揮発性記憶装置、光ディスクなどの可搬型記憶媒体の記録再生装置、ＰＣＩ（Peripheral Component Interconnect）インタフェースやＬＡＮ（Local Area Network）インタフェースなどの、外部機器との通信用のインタフェース回路などである。ＩＯアクセスコントローラ１３２は、ＣＰＵからのデータバス３１０を通じたＩＯデバイス１３１へのアクセスを制御する回路である。
【００３３】
ハードウェアコントローラ１３３は、ＩＯユニット１３０内のハードウェアの動作を制御する機能、制御バス３２０を通じて制御装置２００と通信する機能などを備える。ハードウェアコントローラ１３３には、不揮発性メモリ１３３ａが設けられ、不揮発性メモリ１３３ａには、後述するファームウェア対応マップがあらかじめ記憶される。
【００３４】
ここで、コンピュータシステム１００に搭載されたデバイスユニットについては、例えば、同じメーカからより新しい同種のデバイスユニットが提供された場合には、その新しいデバイスユニットに交換されることがある。各種別のデバイスユニットには版数が付与される。デバイスユニットの版数は、時間的に後に提供されたデバイスユニットほど大きな値とされる。コンピュータシステム１００においては、版数の異なる同種のデバイスユニットが混在してもよい。例えば、それぞれ版数の異なる複数のＣＰＵユニット１１０がコンピュータシステム１００に搭載されてもよい。
【００３５】
制御装置２００は、コントローラ２０１、不揮発性メモリ２０２、バスインタフェース２０３およびＬＡＮインタフェース２０４を備える。コントローラ２０１は、その内部にＣＰＵやＲＡＭなどを備え、不揮発性メモリ２０２に記憶されたファームウェアを実行することで、各デバイスユニットの動作を制御する。不揮発性メモリ２０２は、コントローラ２０１内のＣＰＵが実行するファームウェアや、ファームウェアの実行に必要な各種データなどを記憶する。
【００３６】
バスインタフェース２０３は、各デバイスユニットとの間で制御バス３２０を通じてデータを送受信する。ＬＡＮインタフェース２０４は、ＬＡＮケーブルを介して外部の管理端末４００とデータを送受信する。管理端末４００は、例えば、制御装置２００に対してコンピュータシステム１００内の各デバイスユニットの起動を要求する機能や、制御装置２００から出力された警告情報などの表示情報をモニタに表示する機能などを備える。
【００３７】
なお、図示しないが、各デバイスユニットには、デバイスユニット内のハードウェアに対して電源を供給する電源制御回路も設けられている。デバイスユニット内の電源制御回路は、同じデバイスユニット内のハードウェアコントローラによる制御の下で、電源の供給開始／停止の動作を行う。
【００３８】
図３は、管理端末のハードウェア構成例を示す図である。
管理端末４００は、図３に示すようなコンピュータとして実現される。図３のコンピュータは、ＣＰＵ４０１によって装置全体が制御されている。ＣＰＵ４０１には、バス４０８を介して、ＲＡＭ４０２と複数の周辺機器が接続されている。
【００３９】
ＲＡＭ４０２は、コンピュータの主記憶装置として使用される。ＲＡＭ４０２には、ＣＰＵ４０１に実行させるプログラムの少なくとも一部が一時的に格納される。また、ＲＡＭ４０２には、ＣＰＵ４０１による処理に必要な各種データが格納される。
【００４０】
バス４０８に接続されている周辺機器としては、ＨＤＤ４０３、グラフィック処理装置４０４、入力インタフェース４０５、光学ドライブ装置４０６およびＬＡＮインタフェース４０７がある。
【００４１】
ＨＤＤ４０３は、コンピュータの二次記憶装置として使用される。ＨＤＤ４０３には、ＣＰＵ４０１が実行するプログラムや、各種データが格納される。なお、二次記憶装置としては、フラッシュメモリなどの半導体記憶装置を使用することもできる。
【００４２】
グラフィック処理装置４０４には、モニタ４０４ａが接続されている。グラフィック処理装置４０４は、ＣＰＵ４０１からの命令に従って、画像をモニタ４０４ａの画面に表示させる。モニタ４０４ａとしては、ＣＲＴ（Cathode Ray Tube）を用いた表示装置や液晶表示装置などがある。
【００４３】
入力インタフェース４０５には、例えば、キーボード４０５ａとマウス４０５ｂとが接続されている。入力インタフェース４０５は、キーボード４０５ａやマウス４０５ｂから送られてくる信号をＣＰＵ４０１に送信する。マウス４０５ｂは、ポインティングデバイスの一例であり、他のポインティングデバイスを使用することもできる。他のポインティングデバイスとしては、タッチパネル、タブレット、タッチパッド、トラックボールなどがある。
【００４４】
光学ドライブ装置４０６は、レーザ光などを利用して、光ディスク４０６ａに記録されたデータの読み取りを行う。光ディスク４０６ａは、光の反射によって読み取り可能なようにデータが記録された可搬型の記録媒体である。光ディスク４０６ａには、ＤＶＤ（Digital Versatile Disc）、ＤＶＤ−ＲＡＭ、ＣＤ−ＲＯＭ（Compact Disc Read Only Memory）、ＣＤ−Ｒ（Recordable）／ＲＷ（ReWritable）などがある。
【００４５】
ＬＡＮインタフェース４０７は、コンピュータシステム１００内の制御装置２００との間でＬＡＮケーブルを介してデータを送受信する。
ところで、制御装置２００は、各デバイスユニットの電源状態に関係なく、常に電源が供給された状態とされる。電源が供給された状態の制御装置２００では、コントローラ２０１のＣＰＵによって不揮発性メモリ２０２内のファームウェアが実行される。一方、デバイスユニットがコンピュータシステム１００のスロットに挿入されると、まず、デバイスユニット内のハードウェアコントローラに対して電源が投入される。電源が投入されたハードウェアコントローラは、制御バス３２０を通じて制御装置との通信を開始する。制御装置２００は、ハードウェアコントローラとの通信を開始することで、通信相手のハードウェアコントローラが設けられたデバイスユニットがスロットに挿入されたことを検知する。その後、制御装置２００は、ハードウェアコントローラに対して処理を要求することで、そのハードウェアコントローラが設けられたデバイスユニットを起動させる。
【００４６】
ハードウェアコントローラは、制御装置２００からの要求に応じて、自身が属するデバイスユニットにおける他のハードウェアに対して電源供給を開始する。より具体的には、ハードウェアコントローラは、自身が属するデバイスユニットにおける他のハードウェアへの電源供給を開始するのに先立って、制御装置２００から初期設定値を受信する。ハードウェアコントローラは、自身が属するデバイスユニットにおける他のハードウェアへの電源供給を開始した後、電源供給先の所定のハードウェアに対して制御装置２００から受信した初期設定値を設定して、デバイスユニット全体を起動させる。
【００４７】
例えば、図２において、ＣＰＵユニット１１０のハードウェアコントローラ１１２は、制御装置２００から初期設定値を受信した後、制御装置２００からの要求に応じて、ＣＰＵチップ１１１に対する電源供給を開始する。ＣＰＵチップ１１１に対して電源が供給されると、ハードウェアコントローラ１１２は、制御装置２００から受信した初期設定値をＣＰＵチップ１１１に設定して、ＣＰＵチップ１１１を起動させる。ＣＰＵチップ１１１に設定される初期設定値としては、例えば、ＣＰＵチップ１１１内のＣＰＵの動作周波数を指定する情報などがある。
【００４８】
また、メモリユニット１２０のハードウェアコントローラ１２３は、制御装置２００から初期設定値を受信した後、制御装置２００からの要求に応じて、メモリ１２１およびメモリアクセスコントローラ１２２に対する電源供給を開始する。メモリ１２１およびメモリアクセスコントローラ１２２に対して電源が供給されると、ハードウェアコントローラ１２３は、制御装置２００から受信した初期設定値をメモリアクセスコントローラ１２２に設定して、メモリアクセスコントローラ１２２を起動させ、メモリ１２１へのアクセスが可能な状態に遷移させる。メモリアクセスコントローラ１２２に設定される初期設定値としては、例えば、メモリアクセスコントローラ１２２の動作周波数を指定する情報などがある。
【００４９】
また、ＩＯユニット１３０のハードウェアコントローラ１３３は、制御装置２００から初期設定値を受信した後、制御装置２００からの要求に応じて、ＩＯデバイス１３１およびＩＯアクセスコントローラ１３２に対する電源供給を開始する。ＩＯデバイス１３１およびＩＯアクセスコントローラ１３２に対して電源が供給されると、ハードウェアコントローラ１３３は、制御装置２００から受信した初期設定値をＩＯアクセスコントローラ１３２に設定することで、ＩＯユニット１３０全体を起動させる。ＩＯアクセスコントローラ１３２に設定される初期設定値としては、例えば、ＩＯアクセスコントローラ１３２の動作周波数を指定する情報などがある。
【００５０】
本実施の形態では、ハードウェアコントローラは、自身が属するデバイスユニットを起動させるのに先立って、自身が備える不揮発性メモリに記憶されたファームウェア対応マップの値を制御装置２００に送信する。制御装置２００は、ハードウェアコントローラから受信したファームウェア対応マップの値と、不揮発性メモリ２０２に記憶された動作判定マップとを比較し、その比較結果から、ファームウェア対応マップの値の送信元のデバイスユニットを正常に動作させる初期設定値が不揮発性メモリ２０２に存在するかを判定する。制御装置２００は、デバイスユニットを正常に動作させる初期設定値が不揮発性メモリ２０２に存在すると判定した場合に、その初期設定値を不揮発性メモリ２０２から読み出し、デバイスユニット内のハードウェアコントローラに送信し、送信した初期設定値を用いてデバイスユニットを起動させる。一方、制御装置２００は、デバイスユニットを正常に動作させる初期設定値が不揮発性メモリ２０２に存在しないと判定した場合には、デバイスユニットを起動させない。制御装置２００は、このようなファームウェア対応マップと動作判定マップとの比較結果に基づく起動制御を行うことで、デバイスユニットに誤動作をさせる可能性のある初期設定値をデバイスユニットに設定しないようにし、デバイスユニットの動作の信頼性を向上させる。
【００５１】
図４は、制御装置が備える処理機能の例を示すブロック図である。なお、図４では、制御対象のデバイスユニットの一例として、ＣＰＵユニット１１０の構成についても併せて図示する。
【００５２】
制御装置２００のコントローラ２０１は、ユニット制御部２１１およびファームウェア（Ｆ／Ｗ）更新部２１２を備える。また、制御装置２００の不揮発性メモリ２０２には、動作判定マップ２２１および初期設定値２２２が記憶される。ユニット制御部２１１およびファームウェア更新部２１２の処理は、コントローラ２０１が備えるＣＰＵが、不揮発性メモリ２０２に記憶されたユニット制御ファームウェアを実行することにより実現される。なお、ユニット制御部２１１およびファームウェア更新部２１２の処理は、それぞれ別のファームウェアの実行によって実現されてもよい。また、動作判定マップ２２１および初期設定値２２２は、例えば、ユニット制御部２１１の処理を実現するファームウェアの一部として提供される。
【００５３】
一方、各デバイスユニットにおいて、ハードウェアコントローラに設けられた不揮発性メモリには、ファームウェア対応マップと、デバイスユニットの版数を示す版数情報とが記憶される。例えば、図４に示すように、ＣＰＵユニット１１０において、ハードウェアコントローラ１１２に設けられた不揮発性メモリ１１２ａには、ファームウェア（Ｆ／Ｗ）対応マップ１１３と版数情報１１４とが記憶される。
【００５４】
さらに、各デバイスユニットには、電源制御回路が設けられている。電源制御回路は、コンピュータシステム１００内の共通電源回路（図示せず）から供給される電源電圧を、デバイスユニット内のハードウェアに供給する。電源制御回路は、ハードウェアコントローラに対しては常時電源を供給し、ハードウェアコントローラからの要求に応じて、ハードウェアコントローラ以外のデバイスユニット内のハードウェアに対して電源の供給を開始する。例えば、図４において、ＣＰＵユニット１１０に設けられた電源制御回路１１５は、ハードウェアコントローラ１１２に対しては常時電源を供給し、ハードウェアコントローラ１１２からの要求に応じて、ＣＰＵチップ１１１に対して電源供給を開始する。
【００５５】
制御装置２００のユニット制御部２１１は、管理端末４００からの要求に応じて、コンピュータシステム１００のラックに挿入されたデバイスユニットの起動処理を制御する。ユニット制御部２１１は、デバイスユニットを起動させる際、まず、デバイスユニットのハードウェアコントローラから、ファームウェア対応マップおよび版数情報を取得する。以下、例として、ＣＰＵユニット１１０を起動させる場合の処理について説明する。
【００５６】
ユニット制御部２１１は、ＣＰＵユニット１１０から取得したファームウェア対応マップ１１３と、不揮発性メモリ２０２から読み出した動作判定マップ２２１とを比較する。ここで、動作判定マップ２２１はデバイスユニットの種別ごとに用意されており、ユニット制御部２１１は、制御対象のデバイスユニットの種別に対応する動作判定マップ２２１を、不揮発性メモリ２０２から読み出す。
【００５７】
ユニット制御部２１１は、ファームウェア対応マップ１１３と動作判定マップ２２１との比較結果を基に、制御対象のＣＰＵユニット１１０が、自身が正常に起動させることができるものか否かを判定する。ここで、ユニット制御部２１１がＣＰＵユニット１１０を正常に起動できるということは、ユニット制御部２１１の処理を実現するファームウェアに含まれるいずれかの初期設定値２２２をＣＰＵユニット１１０に設定することで、ＣＰＵユニット１１０を正常に起動できることを意味する。
【００５８】
ユニット制御部２１１は、起動を要求されたＣＰＵユニット１１０を正常に起動できると判定した場合には、ＣＰＵユニット１１０に適合する初期設定値２２２を不揮発性メモリ２０２から読み出す。ここで、初期設定値２２２は、設定先のデバイスユニットの種別ごとに１つ以上用意され、各初期設定値２２２にはデバイスユニットの種別ごとの版数が付与されている。ユニット制御部２１１は、ＣＰＵユニットに対する設定用の初期設定値２２２の中から、制御対象のＣＰＵユニット１１０から取得した版数情報１１４が示す版数と同じ版数、または、版数情報１１４が示す版数より小さく、かつ最も近い版数が付与された初期設定値２２２を、不揮発性メモリ２０２から読み出す。
【００５９】
ユニット制御部２１１は、読み出した初期設定値２２２をＣＰＵユニット１１０のハードウェアコントローラ１１２に送信し、送信した初期設定値２２２を用いてＣＰＵユニット１１０全体を起動するようにハードウェアコントローラ１１２に要求する。起動要求を受け付けたハードウェアコントローラ１１２は、電源制御回路１１５に、ＣＰＵチップ１１１への電源供給を開始させた後、ユニット制御部２１１から受信した初期設定値２２２をＣＰＵチップ１１１に設定して、ＣＰＵチップ１１１を起動させる。
【００６０】
一方、ユニット制御部２１１は、ファームウェア対応マップ１１３と動作判定マップ２２１との比較結果に基づき、制御対象のＣＰＵユニット１１０を正常に起動できないと判定した場合には、ＣＰＵユニット１１０に対する初期設定値２２２の送信および起動要求を行わない。ユニット制御部２１１は、制御対象のＣＰＵユニット１１０が正常に起動させることができないものであり、そのＣＰＵユニット１１０を起動させなかったことなどを示す警告情報を、管理端末４００の操作者に対して通知するよう、管理端末４００に要求する。管理端末４００は、例えば、警告情報をモニタ４０４ａに表示させる。
【００６１】
以上のユニット制御部２１１についての説明では、管理端末４００からＣＰＵユニット１１０の起動を制御する場合の処理について述べたが、他の種別のデバイスユニットの起動を制御する場合でも同様の処理が実行される。
【００６２】
ファームウェア更新部２１２は、管理端末４００からの要求に応じて、コントローラ２０１が実行するファームウェアを更新する。ファームウェア更新部２１２は、新たな版数のファームウェアを管理端末４００から受信して、ファームウェアの更新処理を行う。ファームウェア更新部２１２は、新たな版数のファームウェアにおいて、動作判定マップ２２１が更新されていた場合には、不揮発性メモリ２０２に記憶された動作判定マップ２２１を、新たな版数のファームウェアに含まれる動作判定マップ２２１に更新する。また、ファームウェア更新部２１２は、新たな版数のファームウェアにおいて初期設定値２２２が追加されていた場合には、追加された初期設定値２２２を不揮発性メモリ２０２に記録する。
【００６３】
図５は、動作判定マップおよびファームウェア対応マップの構成例を示す図である。
動作判定マップ２２１は、デバイスユニットの種別ごとに用意される。例えば、図２の例のようにＣＰＵユニット、メモリユニットおよびＩＯユニットの３種類のデバイスユニットがある場合、動作判定マップ２２１もＣＰＵユニット、メモリユニットおよびＩＯユニットのそれぞれの種別に対して用意される。
【００６４】
動作判定マップ２２１は、複数のビットを備える。図５の例では、動作判定マップ２２１は、ビット「０」からビット「７」までの８ビットのデータとされる。動作判定マップ２２１のビットは、既存ユニット領域に属するビットと、拡張領域に属するビットとに分類される。図５の例では、ビット「０」およびビット「１」が既存ユニット領域に属し、ビット「２」からビット「７」までが拡張領域に属する。既存ユニット領域に属するビットは、この動作判定マップ２２１が属するファームウェアの提供時点においてすでに存在する（例えば、発売済みである）デバイスユニットに対応付けられる。一方、拡張領域は、将来提供されるデバイスユニットに対応付けて動作判定マップ２２１に設けられている。
【００６５】
動作判定マップ２２１の各ビットは、同じ種別に属するデバイスユニットに対応付けられる。そして、動作判定マップ２２１の各ビットに設定された値は、各ビットに対応付けられたデバイスユニットが、この動作判定マップ２２１を含むファームウェアを用いて正常に起動可能か否かを示す。図５に示す動作判定マップ２２１は、例として版数「０１」のファームウェアに含まれるものとする。ビットの設定値が「１」である場合、ビットに対応付けられたデバイスユニットが、版数「０１」のファームウェアを用いて正常に起動可能であることを示す。ビットの設定の値が「０」である場合、ビットに対応付けられたデバイスユニットは、版数「０１」のファームウェアを用いて正常に起動できないことを示す。
【００６６】
また、現状の版数のファームウェア（図５の場合は版数「０１」のファームウェア）に含まれる初期設定値のいずれかを用いて、今後に新たに発売されるデバイスユニットの起動も可能にする場合には、動作判定マップ２２１のビットのうち拡張領域のビットを、新たな版数のデバイスユニット用に予約しておき、予約したビットの値をあらかじめ「１」としておく、図５の例では、動作判定マップ２２１のビット「２」からビット「４」までの各設定値が「１」となっている。この場合、ビット「２」からビット「４」までの各ビットが、版数「０１」のファームウェアに含まれるいずれかの初期設定値によって起動可能な、今後新たに発売されるＣＰＵユニットに対応付けられる。
【００６７】
さらに、拡張領域のビットのうち値が「０」とされたビットは、今後新たに発売されるデバイスユニットのうち、現状の版数のファームウェアに含まれる初期設定値を用いて起動できないデバイスユニットに対応付けられる。値が「０」とされたビットは、ファームウェアの更新により「１」に更新され得る。従って、値が「０」とされたビットは、将来的に新たな初期設定情報によって正常に起動させるデバイスユニットのために予約されたビットと言うことができる。図５の例では、ビット「５」からビット「７」までの各設定値が「０」に設定されている。そのため、版数「０１」のファームウェアでは起動できないデバイスユニットは、ビット「５」からビット「７」に割り当てられる。
【００６８】
一方、デバイスユニットに記憶されるファームウェア対応マップ１１３は、動作判定マップ２２１と同じ数のビットを有する。ファームウェア対応マップでは、１つのビットにのみ「１」が設定され、その他のビットには、値が書き込まれないか、あるいは「０」が書き込まれる。ファームウェア対応マップ１１３の各ビットは、動作判定マップ２２１における同じビットに対応している。そして、ファームウェア対応マップ１１３は、自身が記憶されたデバイスユニットが、動作判定マップ２２１におけるどのビットに対応付けられているかを示す。
【００６９】
図５では、例として、版数「０１」のＣＰＵユニット１１０に記憶されたファームウェア対応マップ１１３を示す。図５のファームウェア対応マップ１１３では、ビット「０」の設定値が「１」とされている。これは、ファームウェア対応マップ１１３が記憶されたＣＰＵユニット１１０が、動作判定マップ２２１のビット「０」に対応付けられていることを意味する。
【００７０】
制御装置２００のユニット制御部２１１は、制御対象のデバイスユニットから取得したファームウェア対応マップから、どのビットの値が「１」であるかを認識する。ユニット制御部２１１は、動作判定マップ２２１のビットの値のうち、ファームウェア対応マップにおいて値が「１」であったビットと同じビットの値を参照する。参照したビットの値が「１」であった場合、ユニット制御部２１１は、動作判定マップ２２１を含むファームウェアを用いて、制御対象のデバイスユニットを正常に起動可能であると判定する。一方、参照した動作判定マップ２２１のビットの値が「０」であった場合、ユニット制御部２１１は、動作判定マップ２２１を含むファームウェアを用いて、制御対象のデバイスユニットを正常に起動できないと判定する。
【００７１】
図５の例では、ファームウェア対応マップ１１３におけるビット「０」の設定値が「１」とされていることから、このファームウェア対応マップ１１３が記憶されたＣＰＵユニット１１０は、動作判定マップ２２１におけるビット「０」に対応付けられていることがわかる。図５の動作判定マップ２２１において、ビット「０」の設定値は「１」であることから、図５のファームウェア対応マップ１１３が記憶されたＣＰＵユニット１１０は、版数「０１」のファームウェアを用いて正常に起動するものである。
【００７２】
なお、デバイスユニットが、自身が動作判定マップ２２１におけるどのビットに対応付けられているかを制御装置２００に通知するための情報の形式は、ファームウェア対応マップ１１３に限らない。例えば、図５の例のように動作判定マップ２２１のビット数が８である場合には、３ビットの２進数の数値によって、デバイスユニットが動作判定マップ２２１のどのビットに対応付けられているかを制御装置２００に通知することもできる。この場合、図５のファームウェア対応マップ１１３のように、デバイスユニットが動作判定マップ２２１のビット「０」に対応付けられていることを示す数値は、「０００」とすることができる。または、例えば、デバイスユニットが動作判定マップ２２１のビット「７」に対応付けられていることを示す数値は、「１００」とすることができる。
【００７３】
図６は、動作判定マップと、デバイスユニットおよび初期設定値の各版数との関係を示す第１の図である。
前述のように、動作判定マップ２２１の各ビットには、１つ以上の版数のデバイスユニットが対応付けられる。例えば、版数「０１」のファームウェアは、ＣＰＵユニット用の初期設定値として、版数「０１」，「０２」の各初期設定値を含むものとする。また、版数「０１」のＣＰＵユニットは、版数「０１」の初期設定値を用いて正常に起動し、版数「０２」，「０３」の各ＣＰＵユニットは、ともに版数「０２」の初期設定値を用いて正常に起動するものとする。
【００７４】
この場合、例えば、図６に示すように、版数「０１」のＣＰＵユニットを動作判定マップ２２１のビット「０」に対応付け、版数「０２」，「０３」の各ＣＰＵユニットを動作判定マップ２２１のビット「１」に対応付けることができる。すなわち、版数「０１」のＣＰＵユニットが備えるファームウェア対応マップでは、ビット「０」の設定値が「１」とされる。動作判定マップ２２１のビット「０」に版数「０１」の初期設定値を対応付けておくことにより、動作判定マップ２２１のビット「０」を介して、版数「０１」のＣＰＵユニットと版数「０１」の初期設定値とが対応付けられる。また、版数「０２」，「０３」の各ＣＰＵユニットが備えるファームウェア対応マップでは、ともに、ビット「１」の設定値が「１」とされる。動作判定マップ２２１のビット「１」に版数「０２」の初期設定値を対応付けておくことで、動作判定マップ２２１のビット「１」を介して、版数「０１」，「０２」の各ＣＰＵユニットと版数「０２」の初期設定値とが対応付けられる。
【００７５】
また、動作判定マップ２２１における拡張領域のビットについても、複数の版数のデバイスユニットを対応付けることができる。例えば、版数「０１」のファームウェアのリリース後に発売された版数「１１」，「１２」の各ＣＰＵユニットが、ともに版数「０２」の初期設定値を用いて正常に起動できるとする。この場合、版数「１１」，「１２」の各ＣＰＵユニットを、拡張領域のビットのうち値が「１」とされたビット（図６の例ではビット「３」）に対応付けることができる。動作判定マップ２２１のビット「３」に版数「０２」の初期設定値を対応付けておくことで、動作判定マップ２２１のビット「３」を介して、版数「１１」，「１２」の各ＣＰＵユニットと版数「０２」の初期設定値とが対応付けられる。この場合には、版数「０１」のファームウェアを更新することなく、版数「１１」，「１２」の各ＣＰＵユニットを正常に起動させることができる。
【００７６】
以上の図６の例のように、動作判定マップ２２１の各ビットに複数の版数のデバイスユニットを対応付けることを可能にすることで、動作判定マップ２２１のビット数の増加を抑制できる。
【００７７】
図７は、動作判定マップと、デバイスユニットおよび初期設定値の各版数との関係を示す第２の図である。
図６の例では、動作判定マップ２２１の１つのビットに対して１つの版数の初期設定値が対応付けられていたが、動作判定マップ２２１の１つのビットに対して複数の版数の初期設定値が対応付けられてもよい。例えば、図７において、版数「０２」のＣＰＵユニットは、版数「０２」の初期設定値を用いて正常に起動し、版数「０３」，「０４」の各ＣＰＵユニットは、ともに版数「０３」の初期設定値を用いて正常に起動するものとする。この場合、動作判定マップ２２１の同一のビット（図７の例ではビット「１」）に、版数「０２」，「０３」，「０４」の各ＣＰＵユニットを対応付けてもよい。この状態では、動作判定マップ２２１のビット「１」は、版数「０２」，「０３」，「０４」の各ＣＰＵユニットが、版数「０２」，「０３」の初期設定値のうちいずれかを用いて正常に起動可能であることを示す。このように、動作判定マップ２２１の１つのビットに対して複数の版数の初期設定値を対応付けることで、動作判定マップ２２１のビット数の増加を抑制できる。
【００７８】
なお、図６の例のように、動作判定マップ２２１の１つのビットに対して１つの版数の初期設定値が対応付けられた場合には、制御装置２００のユニット制御部２１１は、どの版数のデバイスユニットに対してどの版数の初期設定値を設定するかを、動作判定マップ２２１を基に判定することができる。例えば、図６の場合、ユニット制御部２１１は、版数「０２」，「０３」の各ＣＰＵユニットに対して、動作判定マップ２２１のビット「１」に対応付けられた版数「０２」の初期設定値を設定すればよいと判定できる。
【００７９】
一方、図７の例のように、動作判定マップ２２１の１つのビットに対して複数の版数の初期設定値が対応付けられた場合には、ユニット制御部２１１は、どの版数のデバイスユニットに対してどの版数の初期設定値を設定するかを、動作判定マップ２２１を基に判定することができない。そこで、本実施の形態では、ユニット制御部２１１は、制御対象のデバイスユニットから取得した版数情報が示す版数と、初期設定値の版数とを比較することで、デバイスユニットに設定すべき初期設定値を判定する。具体的には、ユニット制御部２１１は、デバイスユニットから取得した版数情報が示す版数以下であり、かつ最も値が近い版数を持つ初期設定値を、デバイスユニットに対して設定する。
【００８０】
次に、動作判定マップとファームウェア対応マップとの比較結果に基づく、ユニット制御部２１１による具体的な判定処理例を挙げる。以下の図８〜図１０では、デバイスユニットの例としてＣＰＵユニットの起動を制御する場合の処理を示す。
【００８１】
まず、図８は、ある版数のファームウェアがリリースされた時点での動作判定マップとファームウェア対応マップの状態を示す図である。
図８において、制御装置２００のコントローラ２０１が実行する、版数「０１」のファームウェアは、版数「０１」の初期設定値２２２ａ、版数「０２」の初期設定値２２２ｂおよび動作判定マップ２２１ａを含む。版数「０１」の初期設定値２２２ａは、版数「０１」のＣＰＵユニットを正常に起動させ、版数「０２」の初期設定値２２２ｂは、版数「０２」のＣＰＵユニットを正常に起動させる。
【００８２】
また、動作判定マップ２２１ａでは、既存ユニット領域のビット「０」，「１」のうち、ビット「０」とビット「１」にともに「１」が設定される、ビット「０」は、版数「０１」のＣＰＵユニットに対応付けられ、ビット「１」は、版数「０２」のＣＰＵユニットに対応付けられるものとする。さらに、動作判定マップ２２１ａの拡張領域のビットのうち、ビット「２」からビット「４」に「１」が設定されている。すなわち、ビット「２」からビット「４」は、版数「０１」のファームウェアを用いて起動可能にする、将来発売されるＣＰＵユニットのために予約される。また、動作判定マップ２２１ａの拡張領域のうち、ビット「５」からビット「７」に「０」が設定されている。
【００８３】
ここで、コンピュータシステム１００のラックに対して、版数「０１」のＣＰＵユニット１１０ａと版数「０２」のＣＰＵユニット１１０ｂとが挿入されたとする。制御装置２００のユニット制御部２１１は、ＣＰＵユニット１１０ａ，１１０ｂのそれぞれから、ファームウェア対応マップ１１３ａ，１１３ｂを取得する。
【００８４】
前述のように、動作判定マップ２２１ａにおいては、ビット「０」に版数「０１」のＣＰＵユニットが対応付けられ、ビット「１」に版数「０２」のＣＰＵユニットが対応付けられている。このため、版数「０１」のＣＰＵユニット１１０ａから取得したファームウェア対応マップ１１３ａでは、ビット「０」に「１」が設定されており、版数「０２」のＣＰＵユニット１１０ｂから取得したファームウェア対応マップ１１３ｂでは、ビット「１」に「１」が設定されている。
【００８５】
制御装置２００のユニット制御部２１１は、ＣＰＵユニット１１０ａから取得したファームウェア対応マップ１１３ａのビット「０」に「１」が設定されていることから、動作判定マップ２２１ａのビット「０」の値を参照する。動作判定マップ２２１ａではビット「０」に「１」が設定されていることから、ユニット制御部２１１は、ＣＰＵユニット１１０ａが版数「０１」のファームウェアを用いて正常に起動すると判定する。ユニット制御部２１１は、ＣＰＵユニット１１０ａの版数と同じ版数「０１」の初期設定値２２２ａをＣＰＵユニット１１０ａのハードウェアコントローラに送信し、ＣＰＵユニット１１０ａの起動を要求する。
【００８６】
また、制御装置２００のユニット制御部２１１は、ＣＰＵユニット１１０ｂから取得したファームウェア対応マップ１１３ｂのビット「１」に「１」が設定されていることから、動作判定マップ２２１ａのビット「１」の値を参照する。動作判定マップ２２１ａではビット「１」に「１」が設定されていることから、ユニット制御部２１１は、ＣＰＵユニット１１０ｂが版数「０１」のファームウェアを用いて正常に起動すると判定する。ユニット制御部２１１は、ＣＰＵユニット１１０ｂの版数と同じ版数「０２」の初期設定値２２２ｂをＣＰＵユニット１１０ｂのハードウェアコントローラに送信し、ＣＰＵユニット１１０ｂの起動を要求する。
【００８７】
次に、図９は、新たな版数のＣＰＵユニットがラックに挿入された場合の動作判定マップおよびファームウェア対応マップの状態を示す図である。
図９では、版数「０１」のファームウェアがリリースされた後に、新たに版数「１１」のＣＰＵユニットと版数「１２」のＣＰＵユニットとが発売された場合を考える。版数「１１」のＣＰＵユニットは、版数「０１」のファームウェアに含まれる版数「０２」のＣＰＵユニットに対応した初期設定値２２２ｂを用いて正常起動可能であるとする。しかしながら、版数「１２」のＣＰＵユニットは、版数「０１」のファームウェアに含まれる初期設定値２２２ａ，２２２ｂのどちらを用いても、正常に起動できないものとする。
【００８８】
ここで、コンピュータシステム１００のラックにおいて、図８の状態から、版数「０２」のＣＰＵユニット１１０ｂが取り外され、版数「１１」のＣＰＵユニット１１０ｃと、版数「１２」のＣＰＵユニット１１０ｄとが挿入されたとする。制御装置２００のユニット制御部２１１は、新たに挿入されたＣＰＵユニット１１０ｃ，１１０ｄのそれぞれから、ファームウェア対応マップ１１３ｃ，１１３ｄを取得する。
【００８９】
版数「１１」のＣＰＵユニット１１０ｃは、版数「０１」のファームウェアに含まれる初期設定値２２２ｂによって正常に起動可能である。このことから、版数「１１」のＣＰＵユニット１１０ｃが備えるファームウェア対応マップ１１３ｃにおいては、動作判定マップ２２１ａの拡張領域のビットのうち「１」が設定されたいずれかのビットに、「１」が設定される。図９の例では、ファームウェア対応マップ１１３ｃのビット「２」に「１」が設定されている。
【００９０】
ユニット制御部２１１は、ＣＰＵユニット１１０ｃから取得したファームウェア対応マップ１１３ｃのビット「２」に「１」が設定されていることから、動作判定マップ２２１ａのビット「２」の値を参照する。動作判定マップ２２１ａではビット「２」に「１」が設定されていることから、ユニット制御部２１１は、ＣＰＵユニット１１０ｃが版数「０１」のファームウェアを用いて正常に起動すると判定する。ユニット制御部２１１は、ＣＰＵユニット１１０ｃの版数「１１」に最も近い版数「０２」の初期設定値２２２ｂを、ＣＰＵユニット１１０ｃのハードウェアコントローラに送信し、ＣＰＵユニット１１０ｃの起動を要求する。
【００９１】
一方、版数「１２」のＣＰＵユニット１１０ｄは、版数「０１」のファームウェアに含まれるいずれの初期設定値を用いても、正常に起動できない。このことから、版数「１２」のＣＰＵユニット１１０ｄが備えるファームウェア対応マップ１１３ｄにおいては、動作判定マップ２２１ａの拡張領域のビットのうち「０」が設定されたいずれかのビットに、「１」が設定される。図９の例では、ファームウェア対応マップ１１３ｄでは、ビット「５」に「１」が設定されている。
【００９２】
ユニット制御部２１１は、ＣＰＵユニット１１０ｄから取得したファームウェア対応マップ１１３ｄのビット「５」に「１」が設定されていることから、動作判定マップ２２１ａのビット「５」の値を参照する。動作判定マップ２２１ａではビット「５」に「０」が設定されていることから、ユニット制御部２１１は、ＣＰＵユニット１１０ｄが版数「０１」のファームウェアを用いて正常に起動しないと判定する。ユニット制御部２１１は、ＣＰＵユニット１１０ｄの起動処理を中止するとともに、現状のファームウェアを用いた場合にはＣＰＵユニット１１０ｄを起動することができないことを、管理端末４００を通じてユーザに通知する。これにより、ＣＰＵユニット１１０ｄが誤動作する事態を回避することができ、コンピュータシステム１００の動作の信頼性を向上させることができる。
【００９３】
図１０は、ファームウェアが更新された場合の動作判定マップおよびファームウェア対応マップの状態を示す図である。
図９の状態から、制御装置２００のファームウェア更新部２１２により、制御装置２００のコントローラ２０１が実行するファームウェアが、版数「０２」のファームウェアに更新されたとする。版数「０２」のファームウェアでは、起動処理の対象として版数「１２」のＣＰＵユニットを追加するのに伴い、版数「１２」のＣＰＵユニットを正常に起動させる初期設定値２２２ｃが追加されるとともに、動作判定マップも更新される。更新後の動作判定マップ２２１ｂでは、版数「１２」のＣＰＵユニットに対応付けられていたビット「５」の値が、「０」から「１」に変更される。
【００９４】
ファームウェアが更新された後、制御装置２００のユニット制御部２１１は、ＣＰＵユニット１１０ｄからあらためてファームウェア対応マップ１１３ｄを取得する。ユニット制御部２１１は、ＣＰＵユニット１１０ｄから取得したファームウェア対応マップ１１３ｄのビット「５」に「１」が設定されていることから、動作判定マップ２２１ｂのビット「５」の値を参照する。図１０の状態では、動作判定マップ２２１ｂではビット「５」の値が「１」に更新されていることから、ユニット制御部２１１は、ＣＰＵユニット１１０ｄが版数「１２」のファームウェアを用いて正常に起動すると判定する。ユニット制御部２１２１は、ＣＰＵユニット１１０ｄの版数に対応している初期設定値２２２ｃを、ＣＰＵユニット１１０ｄのハードウェアコントローラに送信し、ＣＰＵユニット１１０ｄの起動を要求する。
【００９５】
以上のように、ファームウェアの更新に伴って、動作判定マップにおいて「０」が設定されたビットを「１」に更新することで、更新したビットに対応付けられたデバイスユニットを正常に起動させることができるようになる。従って、デバイスユニットの誤動作の発生を防止しつつ、新たに発売されたデバイスユニットに対しても柔軟に対応できるようになる。
【００９６】
次に、図１１は、制御装置によるデバイスユニットの起動処理の手順を示すフローチャートである。
図１１の初期状態では、制御装置２００に電源が投入されているとともに、コンピュータシステム１００のラックに挿入されたすべてのデバイスユニットにおけるハードウェアコントローラにも、電源が投入されているものとする。そして、制御装置２００は、ラックに挿入されたすべてのデバイスユニットのハードウェアコントローラと通信可能な状態となっている。
【００９７】
［ステップＳ１１］制御装置２００のユニット制御部２１１は、管理端末４００から、コンピュータシステム１００の起動要求を受け付ける。
［ステップＳ１２］ユニット制御部２１１は、ラックに挿入されたデバイスユニットのうち１つを選択し、選択したデバイスユニットのハードウェアコントローラから、ファームウェア対応マップとデバイスユニットの版数情報とを取得する。
【００９８】
［ステップＳ１３］ユニット制御部２１１は、ステップＳ１２で取得したファームウェア対応マップと、ステップＳ１２で選択したデバイスユニットの種別に対応する動作判定マップ２２１とを比較する。ユニット制御部２１１は、ファームウェア対応マップと動作判定マップ２２１との比較結果に基づいて、ステップＳ１２で選択したデバイスユニットを正常に起動可能であるかを判定する。ファームウェア対応マップと動作判定マップ２２１との比較結果に基づく判定処理については、前述の通りである。
【００９９】
ここで、コンピュータシステム１００では、例えば、デバイスユニットの種別ごとにそれぞれ専用のスロットが設けられる。例えば、ＣＰＵユニット１１０はＣＰＵスロットに挿入され、メモリユニット１２０はメモリスロットに挿入され、ＩＯユニット１３０はＩＯスロットに挿入される。この場合、ユニット制御部２１１は、ステップＳ１２で選択したデバイスユニットの種別を、このデバイスユニットが挿入されているスロットの位置から認識することができる。なお、ユニット制御部２１１は、デバイスユニットの種別を、デバイスユニットから取得した情報を基に認識してもよい。
【０１００】
ユニット制御部２１１は、比較結果に基づき、ステップＳ１２で選択したデバイスユニットを起動可能であると判定した場合（Ｓ１３：Ｙｅｓ）には、ステップＳ１４の処理を実行する。一方、ユニット制御部２１１は、デバイスユニットを起動可能でないと判定した場合（Ｓ１３：Ｎｏ）には、ステップＳ１７の処理を実行する。
【０１０１】
［ステップＳ１４］ユニット制御部２１１は、ステップＳ１２で取得したデバイスユニットの版数情報に基づき、ステップＳ１２で選択したデバイスユニットの種別に対応する、不揮発性メモリ２０２に記憶された初期設定値の中に、このデバイスユニットの版数と同じ版数の初期設定値があるかを判定する。ユニット制御部２１１は、デバイスユニットと同じ版数の初期設定値があった場合（Ｓ１４：Ｙｅｓ）には、ステップＳ１５の処理を実行する。一方、ユニット制御部２１１は、デバイスユニットと同じ版数の初期設定値がなかった場合（Ｓ１４：Ｎｏ）には、ステップＳ１６の処理を実行する。
【０１０２】
［ステップＳ１５］ユニット制御部２１１は、ステップＳ１２で選択したデバイスユニットの種別に対応する初期設定値の中から、このデバイスユニットの版数と同じ版数の初期設定値を抽出する。ユニット制御部２１１は、抽出した初期設定値を、ステップＳ１２で選択したデバイスユニットのハードウェアコントローラに送信する。ユニット制御部２１１は、次にステップＳ１９の処理を実行する。
【０１０３】
［ステップＳ１６］ユニット制御部２１１は、ステップＳ１２で選択したデバイスユニットの種別に対応する初期設定値の中から、このデバイスユニットの版数より小さく、かつ最も近い版数の初期設定値を抽出する。ユニット制御部２１１は、抽出した初期設定値を、ステップＳ１２で選択したデバイスユニットのハードウェアコントローラに送信する。ユニット制御部２１１は、次にステップＳ１９の処理を実行する。
【０１０４】
なお、ステップＳ１５またはステップＳ１６においてユニット制御部２１１から送信された初期設定値を受信したハードウェアコントローラは、受信した初期設定値を自身が備える不揮発性メモリに一時的に格納する。その後、ハードウェアコントローラは、制御装置２００から起動要求が発せられるのを監視する。
【０１０５】
［ステップＳ１７］ステップＳ１３においてデバイスユニットを起動可能でないと判定した場合、ユニット制御部２１１は、ステップＳ１２で選択したデバイスユニットの起動処理を中止する。ユニット制御部２１１は、例えば、ステップＳ１２で選択したデバイスユニットのハードウェアコントローラに対して、起動処理の中止を通知する。
【０１０６】
［ステップＳ１８］ユニット制御部２１１は、管理端末４００に対して、ステップＳ１２で選択されたデバイスユニットの起動が不可能であることをユーザに通知するように要求する。管理端末４００は、例えば、ステップＳ１２で選択されたデバイスユニットが、現在実行中のファームウェアを用いて起動させることができないことを、モニタ４０４ａに表示する。
【０１０７】
ユニット制御部２１１は、次にステップＳ１９の処理を実行する。なお、ステップＳ１７，Ｓ１８の処理順は、逆であってもよい。
［ステップＳ１９］ユニット制御部２１１は、ラックに挿入されたすべてのデバイスユニットについて処理が済んだかを判定する。未処理のデバイスユニットがある場合（Ｓ１９：Ｎｏ）、ユニット制御部２１１は、ステップＳ１２に戻り、新たなデバイスユニットを選択して処理を続行する。一方、すべてのデバイスユニットについて処理済みである場合（Ｓ１９：Ｙｅｓ）、ユニット制御部２１１はステップＳ２０の処理を実行する。
【０１０８】
［ステップＳ２０］ユニット制御部２１１は、ステップＳ１３において起動可能と判定してすべてのデバイスユニットのハードウェアコントローラに対して、デバイスユニット全体を起動させるように要求する。
【０１０９】
起動要求を受信したハードウェアコントローラは、自身が属するデバイスユニット内の電源制御回路に対して、このデバイスユニット内の他のハードウェアへの電源供給を開始するように要求する。ハードウェアコントローラは、自身が属するデバイスユニット内の他のハードウェアへの電源供給が開始されると、不揮発性メモリに一時的に格納していた初期設定値を読み出し、所定のハードウェアに対して設定する。これにより、デバイスユニットの起動処理が完了する。
【０１１０】
以上の図１１の処理によれば、ラックに挿入されたデバイスユニットのうち、制御装置２００が実行するファームウェアを用いて正常に起動可能であるデバイスユニットだけが起動され、それ以外のデバイスユニットは起動されずに縮退する。これにより、起動したデバイスユニットの誤動作を防止し、コンピュータシステム１００の動作の信頼性が向上する。
【０１１１】
なお、図６に示したように、動作判定マップ２２１のそれぞれのビットに１つの初期設定値が対応付けられている場合には、図１１におけるステップＳ１４〜Ｓ１６の処理は、次のように変更されてもよい。ユニット制御部２１１は、ステップＳ１２で取得したファームウェア対応マップにおいて「１」が設定されたビットの位置から、デバイスユニットに設定すべき初期設定値を判定する。この場合、例えば、動作判定マップ２２１の各ビットと初期設定値の版数とを対応付けたテーブルを不揮発性メモリ２０２に用意しておき、ユニット制御部２１１は、このテーブルを参照して、デバイスユニットに設定すべき初期設定値を判定してもよい。また、このように、ファームウェア対応マップにおいて「１」とされたビットの位置を基に、デバイスユニットに設定すべき初期設定値を判定する場合には、ユニット制御部２１１は、ステップＳ１２において、デバイスユニットから版数情報を取得する必要はない。
【０１１２】
さらに、上記のように、ファームウェア対応マップにおいて「１」とされたビットの位置を基に、デバイスユニットに設定すべき初期設定値を判定する場合には、動作判定マップ２２１の各ビットに対して、デバイスユニットの版数の代わりにデバイスユニットの型番を対応付けることもできる。
【０１１３】
〔第３の実施の形態〕
第３の実施の形態では、第２の実施の形態のコンピュータシステムにおいて、複数のデバイスユニットのうちの一部のデバイスユニットが、組合せ判定マップをさらに備える。組合せ判定マップは、デバイスユニットにおけるハードウェアコントローラ内の不揮発性メモリに記憶される。組合せ判定マップは、組合せ判定マップを備えるデバイスユニットが、異なる種別の他のデバイスユニットと組み合わせて動作可能か否かを判定する処理に使用される。
【０１１４】
図１２は、第３の実施の形態における各種マップの構成例を示す図である。
図１２に示す制御装置２００ａは、第２の実施の形態で示した制御装置２００に対して、組合せ判定マップに基づく判定処理機能をさらに設けたものである。制御装置２００ａの不揮発性メモリ（図示せず）には、ＣＰＵユニットの起動可否判定に用いる動作判定マップ２２１ａと、ＣＰＵユニットに設定する版数「０１」の初期設定値２２２ａおよび版数「０２」の初期設定値２２２ｂと、メモリユニットの起動可否判定に用いる動作判定マップ２２１ｃと、メモリユニットに設定する版数「０１」の初期設定値２２２ｄおよび版数「０２」の初期設定値２２２ｅとが記憶されている。
【０１１５】
また、ラック内には、例として、版数「０１」のＣＰＵユニット１１０ｅと、版数「０２」のメモリユニット１２０ａとが挿入されている。ＣＰＵユニット１１０ｅにおけるハードウェアコントローラ内の不揮発性メモリ（図示せず）には、ファームウェア対応マップ１１３ｅと組合せ判定マップ１１６ｅとが記憶されている。また、メモリユニット１２０ａにおけるハードウェアコントローラ内の不揮発性メモリ（図示せず）には、ファームウェア対応マップ１２４ａが記憶されている。
【０１１６】
ＣＰＵユニット１１０ｅに記憶された組合せ判定マップ１１６ｅは、ＣＰＵユニット１１０ｅが他のメモリユニットと組み合わせて使用される場合に、そのメモリユニットと組み合わせて正常に使用可能かを制御装置２００ａが判定するために利用される。ここで、ＣＰＵユニット１１０ｅが他のメモリユニットと組み合わせて使用される場合とは、例えば、他のメモリユニット内のメモリがＣＰＵユニット１１０ｅ内のＣＰＵに対する主記憶装置として使用される場合などである。図１２では、ＣＰＵユニット１００ｅとメモリユニット１２０ａとが組み合わせて使用されるものとする。
【０１１７】
ＣＰＵユニット１１０ｅに記憶された組合せ判定マップ１１６ｅは、組合せ可否の判定対象であるメモリユニット１２０ａが備えるファームウェア対応マップ１２４ａと同じ数のビットを有する。組合せ判定マップ１１６ｅの各ビットには、各ビットに対応付けられた１つ以上のメモリユニットが、ＣＰＵユニット１１０ｅと組み合わせて使用可能か否かを示す値が設定される。メモリユニットがＣＰＵユニット１１０ｅと組み合わせて使用可能である場合、そのメモリユニットに対応付けられたビットには「１」が設定される。一方、メモリユニットがＣＰＵユニット１１０ｅと組み合わせて使用できない場合、そのメモリユニットに対応するビットには「０」が設定される。
【０１１８】
制御装置２００ａは、ＣＰＵユニット１１０ｅおよびメモリユニット１２０ａを起動させる場合には、第２の実施の形態と同様に、各ユニットからファームウェア対応マップ１１３ｅ，１２４ａを取得する。そして、制御装置２００ａは、取得したそれぞれのファームウェア対応マップに対応する動作判定マップ２２１ａ、２２１ｃとの比較結果を基に、各ユニットを正常に起動可能であるか否かを判定する。図１２の例では、ファームウェア対応マップ１１３ｅのビット「０」に「１」が設定され、動作判定マップ２２１ａのビット「０」に「１」が設定されていることから、制御装置２００ａは、ＣＰＵユニット１１０ｅを正常に起動可能であると判定する。また、ファームウェア対応マップ１２４ａのビット「１」に「１」が設定され、動作判定マップ２２１ｃのビット「１」に「１」が設定されていることから、制御装置２００ａは、メモリユニット１２０ａも正常に起動可能であると判定する。
【０１１９】
制御装置２００ａはさらに、ＣＰＵユニット１１０ｅから組合せ判定マップ１１６ｅを取得し、メモリユニット１２０ａから取得したファームウェア対応マップ１２４ａと比較して、ＣＰＵユニット１１０ｅに対してメモリユニット１２０ａを組合せ可能か否かを判定する。すなわち、組合せ可否判定の対象であるメモリユニット１２０ａのファームウェア対応マップ１２４ａは、メモリユニット１２０ａの起動可否判定と、ＣＰＵユニットとの組合せ可否判定の両方に兼用される。
【０１２０】
図１２の例では、ファームウェア対応マップ１２４ａにおいてはビット「１」に「１」が設定され、組合せ判定マップ１１６ｅにおいてはビット「１」に「０」が設定されている。対応するビット「１」の値が互いに異なることから、制御装置２００ａは、ＣＰＵユニット１１０ｅとメモリユニット１２０ａとは組み合わせて使用できないと判定し、例えば、ＣＰＵユニット１１０ｅおよびメモリユニット１２０ａのそれぞれの起動処理を中止する。また、制御装置２００ａは、管理端末４００に対して、ＣＰＵユニット１１０ｅとメモリユニット１２０ａとは組み合わせて使用できないことをユーザに通知するように要求してもよい。一方、ファームウェア対応マップと組合せ判定マップとの互いに対応するビットの値がともに「１」であれば、各マップに対応するＣＰＵユニットとメモリユニットとは組み合わせて使用可能であると判定される。
【０１２１】
図１３は、制御装置によるデバイスユニットの起動処理の手順を示すフローチャートである。この図１３では、図１１と同じ処理が行われるステップには同じステップ番号を付して示す。また、ここでは、制御装置２００ａの処理機能の構成は図４に示した制御装置２００と同様であるものとし、組合せ判定マップに基づく判定処理は、ユニット制御部２１１によって行われるものとする。
【０１２２】
図１３の処理において、図１１の処理と異なる点は、図１１におけるステップＳ１２，Ｓ１９の各処理が、ステップＳ１２ａ，Ｓ１９ａに置換されている点と、ステップＳ１３とステップＳ１４との間に、組合せ判定処理（ステップＳ３０）が追加されている点である。
【０１２３】
［ステップＳ１２ａ］ユニット制御部２１１は、ラックに挿入されたデバイスユニットのうち１つを選択し、選択したデバイスユニットのハードウェアコントローラから、ファームウェア対応マップと版数情報とを取得する。また、選択したデバイスユニットに組合せ判定マップが記憶されている場合には、ユニット制御部２１１は、組合せ判定マップも取得する。
【０１２４】
［ステップＳ１９ａ］ユニット制御部２１１は、ラックに挿入されたすべてのデバイスユニットについて処理が済んだかを判定する。ただし、ユニット制御部２１１は、組合せ判定処理（ステップＳ３０）において起動対象から除外されたデバイスユニットについては、処理済みであると判断する。
【０１２５】
未処理のデバイスユニットがある場合（Ｓ１９ａ：Ｎｏ）、ユニット制御部２１１は、ステップＳ１２ａに戻り、新たなデバイスユニットを選択して処理を続行する。一方、すべてのデバイスユニットについて処理済みである場合（Ｓ１９ａ：Ｙｅｓ）、ユニット制御部２１１はステップＳ２０の処理を実行する。
【０１２６】
ステップＳ３０の組合せ判定処理については、次の図１４を用いて説明する。
図１４は、組合せ判定処理の手順を示すフローチャートである。
［ステップＳ３１］ユニット制御部２１１は、図１３のステップＳ１２ａで組合せ判定マップを取得したか否かを判定する。組合せ判定マップを取得した場合（Ｓ３１：Ｙｅｓ）、ユニット制御部２１１はステップＳ３２の処理を実行する。一方、組合せ判定マップを取得しなかった場合（Ｓ３１：Ｎｏ）、ユニット制御部２１１は、図１３のステップＳ１４の処理を実行する。
【０１２７】
［ステップＳ３２］ユニット制御部２１１は、組合せ対象のデバイスユニットを判別する。
組み合わせて使用されるデバイスユニットは、例えば、デバイスユニットが挿入されるスロットの位置によってあらかじめ決められる。例えば、第１のＣＰＵスロットに挿入されたＣＰＵユニットと第１のメモリスロットに挿入されたメモリユニットとが組み合わせて使用され、第２のＣＰＵスロットに挿入されたＣＰＵユニットと第２のメモリスロットに挿入されたメモリユニットとが組み合わせて使用されるように、あらかじめ決められる。この場合、ユニット制御部２１１は、現在処理対象のデバイスユニットが挿入されたスロットの位置から、組合せ対象のデバイスユニットを判別することができる。
【０１２８】
［ステップＳ３３］ユニット制御部２１１は、ステップＳ３２で判別した組合せ対象のデバイスユニット内のハードウェアコントローラから、ファームウェア対応マップを取得する。
【０１２９】
［ステップＳ３４］ユニット制御部２１１は、ステップＳ３３で取得したファームウェア対応マップと、ステップＳ１２ａで取得した組合せ判定マップとを比較する。ユニット制御部２１１は、各マップの比較結果を基に、ステップＳ１２ａで選択したデバイスユニットと、ステップＳ３２で判別した組合せ対象のデバイスユニットとを組み合わせて使用可能かを判定する。ユニット制御部２１１は、各デバイスユニットを組み合わせて使用可能と判定した場合（Ｓ３４：Ｙｅｓ）には、図１３のステップＳ１４の処理を実行する。一方、ユニット制御部２１１は、各デバイスユニットを組み合わせて使用できないと判定した場合（Ｓ３４：Ｎｏ）、ステップＳ３５の処理を実行する。
【０１３０】
各マップの比較処理は次のように行われる。ユニット制御部２１１は、組合せ判定マップのビットのうち、ファームウェア対応マップにおいて「１」が設定されたビットに設定された値を抽出する。ユニット制御部２１１は、組合せ判定マップから抽出した値が「１」の場合、各デバイスユニットを組み合わせて使用可能と判定し、組合せ判定マップから抽出した値が「０」の場合、各デバイスユニットを組み合わせて使用できないと判定する。
【０１３１】
［ステップＳ３５］ユニット制御部２１１は、ステップＳ３２で判別した組合せ対象のデバイスユニットを起動対象から除外する。このステップにおいて起動対象から除外されたデバイスユニットは、図１３のステップＳ１９ａにおいて処理済みと判定される。
【０１３２】
［ステップＳ３６］ユニット制御部２１１は、ステップＳ１２ａで選択したデバイスユニットとステップＳ３２で判別した組合せ対象のデバイスユニットの両方についての起動処理を中止する。ユニット制御部２１１は、例えば、各デバイスユニットのハードウェアコントローラに対して、起動処理の中止を通知する。
【０１３３】
［ステップＳ３７］ユニット制御部２１１は、管理端末４００に対して、ステップＳ１２ａで選択したデバイスユニットとステップＳ３２で判別した組合せ対象のデバイスユニットとを組み合わせて使用できないことをユーザに通知するように要求する。管理端末４００は、例えば、各デバイスユニットを組み合わせて使用できないことを、モニタ４０４ａに表示する。
【０１３４】
ユニット制御部２１１は、次に図１３のステップＳ１９ａの処理を実行する。なお、ステップＳ３６，Ｓ３７の処理順は、逆であってもよい。
以上の図１３，図１４の処理では、組合せ判定マップを用いることで、デバイスユニットが正常に動作しない可能性のある組合せで起動しなくなるので、コンピュータシステムの動作の信頼性を向上させることができる。例えば、発売時期の異なるデバイスユニットを組み合わせて動作させようとしたとき、後に発売された一方のデバイスユニットは、前に発売された他方のデバイスユニットと組み合わせて使用することが想定されていない場合があり得る。上記の図１３，図１４の処理によれば、このように組み合わせて使用することが想定されていないデバイスユニット同士が組み合わされることで、デバイスユニットが誤動作するといった事態を回避することができる。
【０１３５】
また、ファームウェア対応マップは、起動可否の判定と組合せ可否の判定の両方の処理に対して兼用されるため、処理に必要な情報を少なくすることができ、デバイスユニットが備える不揮発性メモリの記憶容量を削減できる。
【０１３６】
なお、上記の図１４の処理では、デバイスユニットから組合せ判定マップを取得した場合、特定の他のデバイスユニットからファームウェア対応マップを取得して、組合せ可否の判定処理を行っていた。しかし、他の例として、ユニット制御部２１１は、デバイスユニットから組合せ判定マップを取得した場合には、ラックに挿入された、他の種別のデバイスユニットのすべてからファームウェア対応マップを取得して、ファームウェア対応マップの取得元のすべてのデバイスユニットとの間の組合せ可否を判定してもよい。この場合、例えば、組合せ判定マップに、組合せの判定対象とするデバイスユニットの種別を示す種別情報を付与しておく。ユニット制御部２１１は、デバイスユニットから組合せ判定マップを取得すると、ラックに挿入されたデバイスユニットのうち、取得した組合せ判定マップに付与された種別情報が示す種別のデバイスユニットのすべてから、ファームウェア対応マップを取得する。そして、ファームウェア対応マップの取得元のすべてのデバイスユニットとの間の組合せ可否を判定する。
【０１３７】
以上の各実施の形態に関し、さらに以下の付記を開示する。
（付記１）  制御装置と、前記制御装置による制御の下で起動して動作する電子機器がそれぞれ搭載された複数の機器搭載部とを備えた情報処理システムにおいて、
前記制御装置は、
それぞれがいずれかの電子機器に対応し、対応する電子機器が自装置の制御により正常に動作可能であるか否かを示す動作可否情報が設定される複数のビットを備える動作判定マップを記憶する第１の不揮発性記憶部と、
前記動作判定マップ内のビットを指定するビット指定情報を、前記機器搭載部から取得し、取得したビット指定情報が指定する前記動作判定マップ内のビットに設定された動作可否情報を読み出し、読み出した動作可否情報が動作可能を示す場合には、ビット指定情報の取得元の機器搭載部に対して、当該機器搭載部に搭載された電子機器を起動させるように要求する一方、読み出した動作可否情報が動作不可能を示す場合には、ビット指定情報の取得元の機器搭載部に搭載された電子機器を起動制御対象から除外する起動制御部と、
を有し、
前記複数の機器搭載部のそれぞれは、自身に搭載された電子機器の動作可否情報を記憶し、前記制御装置内の前記起動制御部に出力する第２の不揮発性記憶部を有する、
ことを特徴とする情報処理システム。
【０１３８】
（付記２）  前記制御装置は、前記動作判定マップ内のビットのうち動作不可能を示すビットを、動作可能を示すように書き替える更新処理部をさらに有することを特徴とする付記１記載の情報処理システム。
【０１３９】
（付記３）  前記制御装置の前記第１の不揮発性記憶部には、機器搭載部に搭載された電子機器に対して起動時に設定する設定情報が記憶され、
前記起動制御部は、機器搭載部から取得したビット指定情報が指定する前記動作判定マップ内のビットに設定された動作可否情報が動作可能を示す場合には、ビット指定情報の取得元の機器搭載部に対して、前記第１の不揮発性記憶部に記憶された設定情報を送信し、送信した設定情報を当該機器搭載部に搭載された電子機器に設定して当該電子機器を起動させるように要求する、
ことを特徴とする付記１記載の情報処理システム。
【０１４０】
（付記４）  前記制御装置は、前記動作判定マップ内のビットのうち動作不可能を示すビットを動作可能を示すように書き替えるとともに、動作可能を示すように書き替えたビットに対応する電子機器を正常に動作させる新たな設定情報を前記第１の不揮発性記憶部に記録する更新処理部をさらに有することを特徴とする付記３記載の情報処理システム。
【０１４１】
（付記５）  前記起動制御部は、機器搭載部から取得したビット指定情報が指定する前記動作判定マップ内のビットに設定された動作可否情報が動作可能を示す場合には、ビット指定情報の取得元の機器搭載部に付与された版数以下であって当該版数に最も近い版数が付与された設定情報を選択し、選択した設定情報を、ビット指定情報の取得元の機器搭載部に送信することを特徴とする付記３または４記載の情報処理システム。
【０１４２】
（付記６）  前記起動制御部は、機器搭載部から取得したビット指定情報が指定する前記動作判定マップ内のビットに設定された動作可否情報が動作可能を示す場合には、取得したビット指定情報が指定する前記動作判定マップ内のビットに対応付けられた設定情報を、ビット指定情報の取得元の機器搭載部に送信することを特徴とする付記３または４記載の情報処理システム。
【０１４３】
（付記７）  前記制御装置の前記第１の不揮発性記憶部には、機器搭載部に搭載された電子機器に対して起動時に設定する設定情報が記憶され、
前記制御装置は、前記動作判定マップ内のビットのうち動作不可能を示すビットを、動作可能を示すように書き替えるとともに、動作可能を示すように書き替えたビットに対応する電子機器を正常に動作させる新たな設定情報を前記第１の不揮発性記憶部に記録する更新処理部をさらに有することを特徴とする付記１記載の情報処理システム。
【０１４４】
（付記８）  前記第１の不揮発性記憶部には、機器搭載部に搭載された電子機器の種別ごとに個別の動作判定マップが記憶され、
前記起動制御部は、ビット指定情報の取得元の機器搭載部に搭載された電子機器の種別に対応する動作判定マップから動作可否情報を読み出す、
ことを特徴とする付記１記載の情報処理システム。
【０１４５】
（付記９）  前記複数の機器搭載部のうち少なくとも一部の機器搭載部が備える第２の不揮発性記憶部には、各ビットに対応する電子機器が当該第２の不揮発性記憶部が属する機器搭載部内の電子機器と組み合わせて正常に動作可能であるか否かを示す組合せ可否情報が各ビットに設定された組合せ判定マップが、さらに記憶され、
前記起動制御部は、組合せ判定マップが記憶された第１の機器搭載部から組合せ判定マップを取得し、前記第１の機器搭載部と組み合わせて動作する第２の機器搭載部からビット指定情報を取得し、前記第２の機器搭載部から取得したビット指定情報が指定する組合せ判定マップ内のビットに設定された組合せ可否情報を読み出し、読み出した組合せ可否情報が動作不可能を示す場合には、前記第１の機器搭載部または前記第２の機器搭載部の少なくとも一方に搭載された電子機器を起動制御対象から除外する、
ことを特徴とする付記８記載の情報処理システム。
【０１４６】
（付記１０）  制御装置と、前記制御装置による制御の下で起動して動作する電子機器がそれぞれ搭載された複数の機器搭載部とを備えた情報処理システムにおける起動制御方法であって、
前記制御装置が、対応する電子機器が自装置の制御により正常に動作可能であるか否かを示す動作可否情報が設定されたビットを複数有する動作判定マップのいずれか１つのビットを指定するビット指定情報を、前記機器搭載部に設けられた第１の不揮発性記憶部から取得し、
前記制御装置が、自装置内の第２の不揮発性記憶部に記憶された前記動作判定マップを参照し、各機器搭載部の第１の不揮発性記憶部から取得したビット指定情報が指定する前記動作判定マップ内のビットに設定された動作可否情報を前記第２の不揮発性記憶部から読み出し、
読み出した動作可否情報が動作可能を示す場合には、ビット指定情報の取得元の機器搭載部に対して、当該機器搭載部に搭載された電子機器を起動するように要求する一方、読み出した動作可否情報が動作不可能を示す場合には、ビット指定情報の取得元の機器搭載部に搭載された電子機器を起動制御対象から除外する、
ことを特徴とする起動制御方法。
【０１４７】
（付記１１）  前記制御装置は、前記動作判定マップ内のビットのうち動作不可能を示すビットを、動作可能を示すように書き替えることが可能であることを特徴とする付記１０記載の起動制御方法。
【０１４８】
（付記１２）  前記制御装置の前記第２の不揮発性記憶部には、機器搭載部に搭載された電子機器に対して起動時に設定する設定情報が記憶され、
前記制御装置は、機器搭載部から取得したビット指定情報が指定する前記動作判定マップ内のビットに設定された動作可否情報が動作可能を示す場合には、ビット指定情報の取得元の機器搭載部に対して、前記第２の不揮発性記憶部に記憶された設定情報を送信し、送信した設定情報を当該機器搭載部に搭載された電子機器に設定して当該電子機器を起動させるように要求する、
ことを特徴とする付記１０記載の起動制御方法。
【０１４９】
（付記１３）  前記制御装置は、前記動作判定マップ内のビットのうち動作不可能を示すビットを動作可能を示すように書き替えるとともに、動作可能を示すように書き替えたビットに対応する電子機器を正常に動作させる新たな設定情報を前記第２の不揮発性記憶部に記録することが可能であることを特徴とする付記１２記載の起動制御方法。
【符号の説明】
【０１５０】
１  情報処理システム
１０ａ，１０ｂ，１０ｃ  機器搭載部
１１  電子機器
１２，２１  不揮発性記憶部
１３  ビット指定情報
２０  制御装置
２２  起動制御部
２３  動作判定マップ
【図１】
2012079176.tif 000003
【図２】
2012079176.tif 000004
【図３】
2012079176.tif 000005
【図４】
2012079176.tif 000006
【図５】
2012079176.tif 000007
【図６】
2012079176.tif 000008
【図７】
2012079176.tif 000009
【図８】
2012079176.tif 000010
【図９】
2012079176.tif 000011
【図１０】
2012079176.tif 000012
【図１１】
2012079176.tif 000013
【図１２】
2012079176.tif 000014
【図１３】
2012079176.tif 000015
【図１４】
2012079176.tif 000016