(57)【要約】【課題】拡張デバイスコントローラを有するコンピュータシステムにおいて、拡張ＢＩＯＳによる初期化時及びコンピュータシステムのブート時に使用するメモリ量を低減する。【解決手段】ブート時に、システムＢＩＯＳ２０が実行され、拡張ＢＩＯＳ４１が存在する場合には当該拡張ＢＩＯＳ４１が実行されるコンピュータシステムにおいて、対応する拡張デバイス５０をコントロールする拡張デバイスコントローラ４０と、拡張デバイスコントローラ４０に対応して備えられる拡張ＢＩＯＳ４１と、を有し、拡張ＢＩＯＳ４１が、各実行フェーズに対応して個別に展開して実行されるルーチンに分割して実装され、当該拡張ＢＩＯＳ４１の実行時に、各実行フェーズに対応して必要となるルーチンのみがメモリ３０上の拡張ＢＩＯＳエリア３２に展開されるコンピュータシステム。【選択図】      図１
2004220345.tif 000002
【特許請求の範囲】
【請求項１】
ＣＰＵ及びメモリを備え、ブート時に、システムＢＩＯＳが実行されるとともに、拡張ＢＩＯＳが存在する場合には当該拡張ＢＩＯＳが実行されるコンピュータシステムにおいて、
対応する拡張デバイスをコントロールする一の拡張デバイスコントローラと、
この拡張デバイスコントローラに対応して備えられる拡張ＢＩＯＳと、を有し、
前記拡張ＢＩＯＳが、各実行フェーズに対応して個別に展開して実行されるルーチンに分割して実装され、当該拡張ＢＩＯＳの実行時に、各実行フェーズに対応して必要となるルーチンのみがメモリ上の拡張ＢＩＯＳエリアに展開される
ことを特徴とするコンピュータシステム。
【請求項２】
前記各実行フェーズの終了とともに、前記展開されたルーチンが、メモリ上から破棄される
ことを特徴とする請求項１記載のコンピュータシステム。
【請求項３】
前記拡張ＢＩＯＳが、初期化ルーチン及びランタイムルーチンに、又は、初期化ルーチン、ステータスルーチン及びランタイムルーチンに分割して実装される
ことを特徴とする請求項１又は２記載のコンピュータシステム。
【請求項４】
前記拡張デバイスコントローラが複数備えられる場合に、
前記拡張ＢＩＯＳが、複数の拡張デバイスコントローラに対応して複数備えられ、複数の各拡張ＢＩＯＳが、それぞれ、複数の実行フェーズに対応する複数のルーチンごとに分割して実装された
ことを特徴とする請求項１〜３のいずれかに記載のコンピュータシステム。
【請求項５】
前記拡張デバイスコントローラが複数備えられる場合に、
前記ＣＰＵが、ブート時に、前記システムＢＩＯＳの設定情報にもとづいて、ブートを実行するブートデバイスを決定するとともに、このブートデバイスに対応する前記拡張ＢＩＯＳのランタイムルーチンを前記メモリに展開して実行し、他の拡張デバイスに対応する前記拡張ＢＩＯＳのランタイムルーチンを前記メモリに展開しない
ことを特徴とする請求項１〜４のいずれかに記載のコンピュータシステム。
【請求項６】
実行フェーズごとに分割したルーチンにより構成される拡張ＢＩＯＳを備えた拡張デバイスコントローラと、システムＢＩＯＳと、これらを展開実行するためのエリアを有するメモリとを備えたコンピュータシステムのブートデバイス初期化方法であって、
前記コンピュータシステムのＣＰＵが、
前記システムＢＩＯＳによる診断・設定を実行し、
前記拡張ＢＩＯＳの初期化ルーチンを実行し、
前記システムＢＩＯＳによる診断・設定を実行し、
ブートを実行するためのブートデバイスを決定し、
前記拡張ＢＩＯＳのランタイムルーチンを実行し、
前記ブートデバイスよりＯＳブートを行う
ことを特徴とするコンピュータシステムのブートデバイス初期化方法。
【請求項７】
実行フェーズごとに分割したルーチンにより構成される拡張ＢＩＯＳを備えた拡張デバイスコントローラと、システムＢＩＯＳと、これらを展開実行するためのエリアを有するメモリとを備えたコンピュータシステムのブートデバイス初期化方法であって、
前記コンピュータシステムのＣＰＵが、
前記システムＢＩＯＳによる診断・設定を実行し、
前記拡張ＢＩＯＳの初期化ルーチンを実行し、
前記システムＢＩＯＳによる診断・設定を実行し、
前記拡張ＢＩＯＳのステータスルーチンを実行し、
前記システムＢＩＯＳによる診断・設定を実行し、
ブートを実行するためのブートデバイスを決定し、
前記拡張ＢＩＯＳのランタイムルーチンを実行し、
前記ブートデバイスよりＯＳブートを行う
ことを特徴とするコンピュータシステムのブートデバイス初期化方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、拡張デバイスコントローラを有するコンピュータシステムにおいて、拡張ＢＩＯＳ（Ｂａｓｉｃ  Ｉｎｐｕｔ  Ｏｕｔｐｕｔ  Ｓｙｓｔｅｍ）による初期化時及びコンピュータシステムのブート時にメモリ消費量を低減するコンピュータシステム及びコンピュータシステムのブートデバイス初期化方法に関する。
【０００２】
【従来の技術】
従来、コンピュータシステムをブートする場合、そのコンピュータシステムのＣＰＵは、システムＢＩＯＳにより、コンピュータシステムを診断するとともに、初期設定を実行している。
また、コンピュータシステムが、オプションカードなどを接続するための拡張デバイスコントローラを有している場合、システムＢＩＯＳによって、これが認識され、その拡張デバイスコントローラが有する拡張ＢＩＯＳによる初期化処理が、ＣＰＵにより実行される。
これによって、コンピュータシステムにその拡張デバイスコントローラが使用可能なものとして認識される。
【０００３】
また、ブート用の拡張ＢＩＯＳが実装されていない、又は拡張ＢＩＯＳが実装されていてもブート機能のないボードがコンピュータに接続されていても、そのボードに接続されているデバイスをブートデバイスとして使用可能とするブートＲＯＭ搭載ボードなどの提案も行われている（例えば、特許文献１参照。）。
【０００４】
【特許文献１】
特開２００２−１４９４０８号公報
【０００５】
【発明が解決しようとする課題】
しかしながら、これらのような従来の技術によれば、拡張ＢＩＯＳ自体は、一つのモジュールで構成されているため、コンピュータシステムに複数の拡張デバイスコントローラが接続され、それぞれに拡張ＢＩＯＳが保有されている場合には、多くのメモリを消費するという問題があった。
すなわち、これらすべての拡張ＢＩＯＳが実行されるため、拡張デバイスの数が多くなると、コンピュータシステムの初期化時に、すべての拡張デバイスに対して診断・設定ができない場合が生じることがあった。
【０００６】
また、無事に初期化を行うことができても、次にブートを実行するのに必要なメモリが不足する場合があった。
すなわち、従来の手段によれば、すべての拡張ＢＩＯＳが実行されるため、不必要なランタイムルーチンが、メモリにおける拡張ＢＩＯＳエリアに保有され、多くのメモリを消費していた。
これらの問題は、従来の技術によっては解決することのできないものであった。
【０００７】
本発明は、上記の事情にかんがみなされたものであり、拡張ＢＩＯＳを実行フェーズごとに分割したルーチンにより構成し、それぞれのルーチンをその動作が必要なときのみメモリ上にロードして実行することによって、拡張ＢＩＯＳによる初期化時及びコンピュータシステムのブート時にメモリ消費量を低減するコンピュータシステム及びコンピュータシステムのブートデバイス初期化方法の提供を目的とする。
【０００８】
【課題を解決するための手段】
上記目的を達成するため、本発明の請求項１記載のコンピュータシステムは、ＣＰＵ及びメモリを備え、ブート時に、システムＢＩＯＳが実行されるとともに、拡張ＢＩＯＳが存在する場合には当該拡張ＢＩＯＳが実行されるコンピュータシステムにおいて、対応する拡張デバイスをコントロールする一の拡張デバイスコントローラと、この拡張デバイスコントローラに対応して備えられる拡張ＢＩＯＳと、を有し、拡張ＢＩＯＳが、各実行フェーズに対応して個別に展開して実行されるルーチンに分割して実装され、当該拡張ＢＩＯＳの実行時に、各実行フェーズに対応して必要となるルーチンのみがメモリ上の拡張ＢＩＯＳエリアに展開される構成としてある。
【０００９】
コンピュータシステムをこのような構成にすれば、そのブート時に、拡張ＢＩＯＳを、例えば、初期化フェーズ、ブートフェーズといった実行フェーズごとに、個別にメモリに展開して実行することができる。
このため、動作に不必要なルーチンのコードがメモリを占拠することを防止し、メモリ消費量を低減することが可能となる。
【００１０】
なお、コンピュータシステムの診断・設定とは、ＢＩＯＳにおけるＰＯＳＴ（Ｐｏｗｅｒ  Ｏｎ  Ｓｅｌｆ  Ｔｅｓｔ）の実行内容を意味しており、具体的な内容は、一般的に、実行フェーズや、デバイスの種類、及びデバイスの状況等によって異なることが多い。
また、本明細書において、コードとは、コンピュータシステムの診断・設定を行うプログラムや各種設定情報等を意味し、ルーチンとは、必要なコードを複数まとめた集合体を意味するものとして用いている。
【００１１】
本発明の請求項２記載のコンピュータシステムは、各実行フェーズの終了とともに、展開されたルーチンが、メモリ上から破棄される構成としてある。
コンピュータシステムをこのような構成にすれば、ブート時に、拡張ＢＩＯＳを実行フェーズごとに個別にメモリに展開して実行することができることに加え、その実行フェーズのごとに使用済みのルーチンのコードをメモリから破棄することができるため、メモリ消費量を低減することが可能となる。
【００１２】
本発明の請求項３記載のコンピュータシステムは、拡張ＢＩＯＳが、初期化ルーチン及びランタイムルーチンに、又は、初期化ルーチン、ステータスルーチン及びランタイムルーチンに分割して実装される構成としてある。
コンピュータシステムをこのような構成にすれば、拡張デバイスコントローラが保有する拡張ＢＩＯＳを上記のような各ルーチンに分割することによって、それぞれ別個にメモリに展開実行することができるため、メモリ消費量を低減することが可能となる。
【００１３】
本発明の請求項４記載のコンピュータシステムは、拡張デバイスコントローラが複数備えられる場合に、拡張ＢＩＯＳが、複数の拡張デバイスコントローラに対応して複数備えられ、複数の各拡張ＢＩＯＳが、それぞれ、複数の実行フェーズに対応する複数のルーチンごとに分割して実装された構成としてある。
【００１４】
コンピュータシステムをこのような構成にすれば、コンピュータシステムに複数の拡張デバイスコントローラが備えられ、これらの拡張ＢＩＯＳが実行されることにより、従来はメモリが不足してすべての拡張デバイスに対する初期化を行うことができなかったような場合についても、拡張ＢＩＯＳを機能ごとに分割し、それぞれの実行時のメモリ使用量を低減させることによって、その初期化を可能にすることができる。
【００１５】
本発明の請求項５記載のコンピュータシステムは、拡張デバイスコントローラが複数備えられる場合に、ＣＰＵが、ブート時に、システムＢＩＯＳの設定情報にもとづいて、ブートを実行するブートデバイスを決定するとともに、このブートデバイスに対応する拡張ＢＩＯＳのランタイムルーチンをメモリに展開して実行し、他の拡張デバイスに対応する前記拡張ＢＩＯＳのランタイムルーチンを前記メモリに展開しない構成としてある。
【００１６】
コンピュータシステムをこのような構成にすれば、ブート実行時に、そのブートを行うためのブートデバイスを制御するランタイムルーチンのみを実行し、不必要なランタイムルーチンについては、メモリ上に展開して実行することを防止することができる。
このため、特にコンピュータシステムに複数の拡張デバイスコントローラが接続されている場合に、メモリ消費量を大きく低減することが可能となる。
【００１７】
本発明の請求項６記載のコンピュータシステムのブートデバイス初期化方法は、実行フェーズごとに分割したルーチンにより構成される拡張ＢＩＯＳを備えた拡張デバイスコントローラと、システムＢＩＯＳと、これらを展開実行するためのエリアを有するメモリとを備えたコンピュータシステムのブートデバイス初期化方法であって、コンピュータシステムのＣＰＵが、システムＢＩＯＳによる診断・設定を実行し、拡張ＢＩＯＳの初期化ルーチンを実行し、システムＢＩＯＳによる診断・設定を実行し、ブートを実行するためのブートデバイスを決定し、拡張ＢＩＯＳのランタイムルーチンを実行し、ブートデバイスよりＯＳブートを行う方法としてある。
【００１８】
従来は、ブートデバイスが決定される前に、初期化ルーチンに相当するコードとともに、ランタイムルーチンに相当するコードもメモリ上に展開されていた。
このため、すぐに実行されることのないコードや、あるいは結果的に実行されることのないコードが、メモリ上に保有され、多くのメモリを消費することとなっていた。
しかしながら、コンピュータシステムのブートデバイス初期化方法を上記のような方法にすれば、拡張ＢＩＯＳを実行フェーズごとに展開し、実行することができるため、必要なルーチンを必要なタイミングで展開実行することが可能となり、メモリ消費量を低減させることが可能となる。
なお、本請求項の初期化ルーチンは、拡張デバイスコントローラの診断・設定機能と、拡張デバイス（ブートデバイス等）のステータスを取得する機能が含まれるものである。
【００１９】
本発明の請求項７記載のコンピュータシステムのブートデバイス初期化方法は、実行フェーズごとに分割したルーチンにより構成される拡張ＢＩＯＳを備えた拡張デバイスコントローラと、システムＢＩＯＳと、これらを展開実行するためのエリアを有するメモリとを備えたコンピュータシステムのブートデバイス初期化方法であって、コンピュータシステムのＣＰＵが、システムＢＩＯＳによる診断・設定を実行し、拡張ＢＩＯＳの初期化ルーチンを実行し、システムＢＩＯＳによる診断・設定を実行し、拡張ＢＩＯＳのステータスルーチンを実行し、システムＢＩＯＳによる診断・設定を実行し、ブートを実行するためのブートデバイスを決定し、拡張ＢＩＯＳのランタイムルーチンを実行し、ブートデバイスよりＯＳブートを行う方法としてある。
【００２０】
コンピュータシステムのブートデバイス初期化方法をこのような方法にすれば、拡張ＢＩＯＳを、初期化ルーチン、ステータスルーチン、及びランタイムルーチンごとにそれぞれ必要なタイミングで、メモリ上に展開することができる。
このため、メモリの消費量を、各実行フェーズに必要最小限のものとすることができ、低減させることが可能となる。
また、コンピュータシステムが複数の拡張デバイスコントローラを有している場合には、実行されることのないランタイムルーチンをメモリ上に展開することを防止することもできるため、メモリ消費量を低減することが可能となる。
【００２１】
【発明の実施の形態】
以下、本発明の実施形態につき、図面を参照して説明する。
［第一実施形態］
まず、本発明の第一実施形態について、図１を参照して説明する。同図は、本実施形態のコンピュータシステム１の構成を示すブロック図である。
【００２２】
図１に示すように、本実施形態のコンピュータシステム１は、ＣＰＵ１０、システムＢＩＯＳ２０、メモリ３０、拡張デバイスコントローラ４０（４０−１〜４０−ｎ）、ブートデバイス５０（５０−１〜５０−ｎ）、及びバス６０を有している。
ＣＰＵ１０は、コンピュータシステムにおける各種装置の制御やデータ処理を実行するコンピュータの中枢であり、メモリ３０からプログラムを読み込んで、解釈し、実行する。
【００２３】
システムＢＩＯＳ２０は、電源オン時に起動されるハードウェアの初期設定や各ハードウェアの直接的な制御を行うプログラム、例えば、フレキシブルディスクの制御、チップセットのモード制御等を行うプログラムを格納するＲＯＭである。
このシステムＢＩＯＳ２０としては、例えば、ＥＥＰＲＯＭやフラッシュメモリ等を用いることができる。
メモリ３０は、コンピュータシステムにおける主記憶装置であり、汎用的に使用されるものである。メモリ３０は、その領域上の一部に、システムＢＩＯＳ２０が展開して実行されるシステムＢＩＯＳエリア３１と、拡張ＢＩＯＳ４１の各ルーチンが動作する拡張ＢＩＯＳエリア３２を有している。
【００２４】
拡張デバイスコントローラ４０は、コンピュータシステム１に拡張機能を付加するオプションカード等の機能を制御するものである。この拡張デバイスコントローラ４０は、主としてオプションカード等がブート機能を有する場合に、それぞれ対応する拡張ＢＩＯＳ４１（４１−１〜４１−ｎ）を保有する。
また、この拡張デバイスコントローラ４０は、オプションカードの種類に応じて専用のものとすることができる。例えば、オプションカードがＳＣＳＩ（Ｓｍａｌｌ  Ｃｏｍｐｕｔｅｒ  Ｓｙｓｔｅｍ  Ｉｎｔｅｒｆａｃｅ）カードである場合は、ＳＣＳＩカード用の拡張デバイスコントローラとすることができる。
拡張ＢＩＯＳ４１は、拡張デバイスを制御するためのＢＩＯＳとして機能し、システムＢＩＯＳ２０に対して機能を追加する位置づけを有するものである。
【００２５】
この拡張ＢＩＯＳ４１は、それぞれ対応する初期化ルーチン４１ａ（４１ａ−１〜４１ａ−ｎ）、ステータスルーチン４１ｂ（４１ｂ−１〜４１ｂ−ｎ）、及びランタイムルーチン４１ｃ（４１ｃ−１〜４１ｃ−ｎ）を有している。
初期化ルーチン４１ａは、拡張デバイスコントローラ４０の診断及び初期化（設定）を実行する機能を有する。また、ステータスルーチン４１ｂのロード機能を有する。
【００２６】
ステータスルーチン４１ｂは、拡張デバイスコントローラ４０に接続するブートデバイス５０のステータスを診断し、必要な設定を行う。
このステータスとは、例えば、ブートデバイス５０が拡張デバイスコントローラ４０に接続されているかどうか、ブートデバイス５０がブート機能を持っているかどうか、ブートデバイス５０が有するデータのうち、どの部分からブートを実行するのか等を挙げることができる。
また、必要な設定とは、例えば、ブートデバイスを使用可能とする設定や、システムＢＩＯＳ２０側で管理するデータの設定等を意味する。
さらに、ステータスルーチン４１ｂは、ランタイムルーチン４１ｃのロード機能を有している。
【００２７】
ランタイムルーチン４１ｃは、拡張デバイスコントローラ４０を制御するとともに、この拡張デバイスコントローラ４０に接続されているデバイスを制御する。
さらに、ランタイムルーチン４１ｃは、ブートデバイス５０からシステムをブートするのに必要なコードを有している。
【００２８】
ブートデバイス５０は、コンピュータシステム１における拡張デバイスであり、拡張デバイスコントローラ４０に接続されている。
本実施形態において、このブートデバイス５０は、コンピュータシステム１が動作するために必要なＯＳやアプリケーションソフトウェア等を保有している。
また、コンピュータシステム１がブートするために必要な初期プログラムを有している。
このブートデバイス５０としては、例えば、ＳＣＳＩカード，ＬＡＮカード，ＩＤＥ（ｉｎｔｅｇｒａｔｅｄ  ｄｅｖｉｃｅ  ｅｌｅｃｔｒｏｎｉｃｓ）ハードディスク，シリコンデバイス等を挙げることができる。
バス６０は、ＣＰＵ１０、システムＢＩＯＳ２０、メモリ３０、及び拡張デバイスコントローラ４０を接続する。
【００２９】
次に、本実施形態のコンピュータシステム１における処理手順について、図２を参照して説明する。
同図は、本実施形態のコンピュータシステム１における処理手順を示すフローチャートである。
まず、ＣＰＵ１０は、システムＢＩＯＳ２０の初期診断コード（ＰＯＳＴ）を用いて、コンピュータシステム１の基本部分、例えば、ＣＰＵ１０やメモリ３０等に対して診断・設定を実行する（ステップＡ１）。
システムＢＩＯＳ２０においては、一般に実行コードが圧縮して格納されている。また、必要に応じて、コンピュータシステム１の環境に合わせて一部のコードを自己変更する内容を有している。
このため、上記診断・設定において、この実行コードは、汎用メモリであるメモリ３０のシステムＢＩＯエリア３１に展開コピーされ、ＣＰＵ１０によって実行される。
【００３０】
次に、ＣＰＵ１０は、拡張デバイスコントローラ４０の有無を確認し、この拡張デバイスコントローラ４０が拡張ＢＩＯＳ４１を有する場合に、拡張ＢＩＯＳ４１内の初期化ルーチン４１ａを実行する（ステップＡ２）。
拡張ＢＩＯＳ４１も、システムＢＩＯＳ２０の場合と同様にして、メモリ３０の拡張ＢＩＯＳエリア３２で展開、コピーされて実行される。
この初期化ルーチン４１ａにより、拡張デバイスコントローラ４０の診断・設定が実行され、ステータスルーチン４１ｂのロード機能のみがメモリ３０の拡張ＢＩＯＳエリア３２に設定される。
この際、拡張ＢＩＯＳエリア３２に展開されている初期化ルーチン４１ａの実行コードは、破棄される。以下のルーチンについても同様に、実行の終了にともなって、メモリ上から破棄される。
そして、ＣＰＵ１０は、拡張デバイスを含めたコンピュータシステム１の構成情報の設定をシステムＢＩＯＳ２０により実行する（ステップＡ３）。
このシステムＢＩＯＳ２０による診断・設定も、上述の初期診断コードの一部により実行される。また、以下におけるシステムＢＩＯＳ２０による診断・設定についても同様である。
【００３１】
次に、ＣＰＵ１０は、拡張ＢＩＯＳ４１のステータスルーチン４１ｂを実行し、システムＢＩＯＳ２０は、拡張デバイスのステータスを取得する（ステップＡ４）。
この拡張デバイスのステータスとは、上述のように、例えば、コンピュータシステム１の構成情報として、拡張デバイスコントローラ４０がブートデバイス５０を有しているかどうかということなどの拡張デバイスの情報やブートに必要な情報等を挙げることができる。
また、ステータスルーチン４１ｂの実行によって、デバイスアクセスのためのランタイムルーチン４１ｃのロード機能のみが、メモリ３０の拡張ＢＩＯＳエリア３２に設定される。
【００３２】
そして、ＣＰＵ１０は、コンピュータシステム１に接続されているブートデバイス５０についての診断及び初期設定を、システムＢＩＯＳ２０により実行する（ステップＡ５）。
これによって、コンピュータシステム１のブートデバイスとして、ブートデバイス５０の選択が可能となり、ブートデバイス５０のうちの一がシステムのブート先として決定される（ステップＡ６）。ここでは、仮にブートデバイス５０−１が決定されたとする。
このとき、ブートデバイスの決定は、システムＢＩＯＳ２０の設定情報における順序にもとづいて行われ、先に決定されたブートデバイスによるブートが失敗すると、次の順番のブートデバイスがブート先のデバイスとして決定される。
【００３３】
次に、このブートデバイス５０−１に対応する制御コードとして、拡張ＢＩＯＳ４１−１のランタイムルーチン４１ｃ−１が、拡張ＢＩＯＳエリア３２にロードされる（ステップＡ７）。
そして、コンピュータシステム１において、ＣＰＵ１０は、ランタイムルーチン４１ｃ−１を用いて、ブートデバイス５０−１よりＯＳブートを実行する（ステップＡ８）。
このように、本発明によれば、実際にブートに必要なランタイムルーチンのみを、ブート時にメモリ上に展開して実行することができるため、不必要なコードがメモリ上に保有されることを防止することが可能となる。
【００３４】
次に、本発明の特徴及び効果をより明確にするため、従来のコンピュータシステムにおけるデバイスの初期化について、図５及び図６を参照して説明する。図５は、従来のコンピュータシステム３の構成を示すブロック図であり、図６は、このコンピュータシステム３における処理手順を示すフローチャートである。
図５に示すように、従来のコンピュータシステム３における拡張デバイスコントローラ４００（４００−１〜４００−ｎ）の拡張ＢＩＯＳ４１０（４１０−１〜４１０−ｎ）は、一つのモジュールとして構成されている。
【００３５】
そして、図６に示すように、システムＢＩＯＳ２００の実行（ステップＣ１）によって、拡張デバイスコントローラ４００が認識され、拡張ＢＩＯＳ４１０の存在が確認されると、この拡張ＢＩＯＳ４１０は、メモリ３００の拡張ＢＩＯＳエリア３２０に展開され、実行される（ステップＣ２）。
そして、ブートデバイスが決定され（ステップＣ６）、このブートデバイスよりＯＳブートが実行される（ステップＣ８）。
すなわち、この従来の処理手順においては、図２に示す本発明の第一実施形態のステップＡ３〜Ａ５，及びＡ７に相当するステップが存在しない。
【００３６】
このため、図５のように拡張デバイスコントローラ４００が複数ある場合には、実際には実行されないものを含め、すべての拡張デバイスコントローラ４００における拡張ＢＩＯＳがメモリ３００の拡張ＢＩＯＳエリア３２０に展開される。
その結果、拡張ＢＩＯＳエリア３２０が多く消費され、拡張デバイスの数が多くなるとコンピュータシステムの初期化時に、すべての拡張デバイスに対する診断・設定を実行することができなくなる場合があった。
また、診断・設定ができた場合であっても、すべての拡張ＢＩＯＳ４１０が実行されることから、拡張ＢＩＯＳエリア３２０が不必要なランタイムによって消費され、コンピュータシステムの動作に必要なメモリが不足して、ブートが実行できない場合もあった。
【００３７】
これに対して、以上説明したように、本実施形態のコンピュータシステムによれば、拡張ＢＩＯＳを実行フェーズごとに必要なルーチンに分割しているので、コンピュータシステムの初期化時に、複数の拡張ＢＩＯＳが展開実行された場合にも、システムメモリの使用量を最小限に抑えることができ、メモリ不足の発生を防止することが可能となる。
このため、初期化ができなくなる事態が生じることを抑制することが可能となる。
また、ブートフェーズにおいては、実際にブートに必要なランタイムルーチンのみを必要なタイミングで、メモリ上に展開して実行することができるため、特に複数の拡張デバイスコントローラがある場合に、メモリ消費量を大きく低減することが可能となる。
このため、メモリ不足によって、ブートができなくなることを回避することが可能となる。
【００３８】
［第二実施形態］
次に、本発明の第二実施形態について、図３を参照して説明する。同図は、本実施形態のコンピュータシステム２の構成を示すブロック図である。
本実施形態におけるコンピュータシステム２は、拡張ＢＩＯＳが、初期化ルーチンとランタイムルーチンにより構成される点で第一実施形態と異なる。
すなわち、図３において、拡張デバイスコントローラ７０（７０−１〜７０−ｎ）は、それぞれ対応する拡張ＢＩＯＳ７１（７１−１〜７１−ｎ）を有しており、この拡張ＢＩＯＳ７１は、それぞれ対応する初期化ルーチン７１ａ（７１ａ−１〜７１ａ−ｎ）及びランタイムルーチン７１ｃ（７１ｃ−１〜７１ｃ−ｎ）を有している。
また、それぞれの拡張デバイスコントローラ７０に、対応するブートデバイス８０（８０−１〜８０−ｎ）が接続されている。
【００３９】
本実施形態における初期化ルーチン７１ａは、図１における初期化ルーチン４１ａとステータスルーチン４１ｂを統合した一つのモジュールとして構成することができる。
すなわち、本実施形態においては、システムＢＩＯＳ２０による動作をコンピュータシステムの診断及び構成チェック等と、ブート動作という大きく二つの動作フェーズに分類し、それぞれに合わせて拡張ＢＩＯＳのルーチンを構成したものである。
コンピュータシステム２におけるその他の構成については、第一実施形態におけるものと同様であるため、その説明は省略する。
【００４０】
次に、本実施形態のコンピュータシステム２における処理手順について、図４を参照して説明する。
同図は、本実施形態のコンピュータシステム２における処理手順を示すフローチャートである。
まず、ＣＰＵ１０は、システムＢＩＯＳ２０の初期診断コードを用いて、コンピュータシステム２の基本部分に対して診断・設定を実行する（ステップＢ１）。
【００４１】
次に、ＣＰＵ１０は、拡張デバイスコントローラ７０の有無を確認し、この拡張デバイスコントローラ７０が拡張ＢＩＯＳ７１を有する場合に、拡張ＢＩＯＳ７１内の初期化ルーチン７１ａを実行する（ステップＢ２）。
このとき、ＣＰＵ１０は、拡張デバイスコントローラ７０の診断及び各種設定を行うと同時に、システムＢＩＯＳ２０からの問い合わせに対して、ブートデバイス８０についての情報をシステムＢＩＯＳ２０へ提供する。
すなわち、本実施形態におけるステップＢ２において、図２に示す第一実施形態のステップＡ２〜Ａ４に相当する処理が、初期化ルーチン７１ａの実行により行われる。
これ以降の動作（ステップＢ５〜ステップＢ８）については、第一実施形態における動作（ステップＡ５〜ステップＡ８）と同様である。
【００４２】
以上説明したように、本実施形態によれば、第一実施形態における初期化ルーチンによる処理及びステータスルーチンによる処理に相当する処理が、ステップＢ２において、まとめて実行されるため、その分のメモリ消費量は、第一実施形態に比較して増大するものの、このように拡張ＢＩＯＳの機能を大きく２つの実行フェーズに分割した場合であっても、適切なランタイムルーチンのみを適切なタイミングで展開実行することが可能である。
このため、コンピュータシステムに拡張デバイスコントローラが多く接続されている場合などには、第一実施形態と同様に、メモリ消費量を大きく低減することが可能となる。
【００４３】
なお、本発明は以上の実施形態に限定されるものではなく、本発明の範囲内において、種々の変更実施が可能であることは言うまでもない。
例えば、上記実施形態では、拡張ＢＩＯＳの機能を２つ又は３つに分割した例を示したが、より多くの機能に分割して、一層のメモリ低減を図るなど適宜変更することが可能である。
【００４４】
【発明の効果】
以上のように、本発明によれば、拡張ＢＩＯＳを実行フェーズごとに分割したルーチンにより構成し、それぞれのルーチンをその動作が必要なときのみメモリ上にロードして実行することができる。
このため、拡張ＢＩＯＳによる初期化時及びコンピュータシステムのブート時にメモリ消費量を低減することが可能となる。
特に、コンピュータシステムが複数の拡張デバイスコントローラを有する場合には、ブートに必要なランタイムルーチンのみが適切なタイミングで、メモリ上に展開して実行されるため、メモリ消費量を大きく低減することが可能となる。
【図面の簡単な説明】
【図１】本発明の第一実施形態のコンピュータシステムの構成を示すブロック図である。
【図２】本発明の第一実施形態のコンピュータシステムにおける処理手順を示すフローチャートである。
【図３】本発明の第二実施形態のコンピュータシステムの構成を示すブロック図である。
【図４】本発明の第二実施形態のコンピュータシステムにおける処理手順を示すフローチャートである。
【図５】従来のコンピュータシステムの構成を示すブロック図である。
【図６】従来のコンピュータシステムにおける処理手順を示すフローチャートである。
【符号の説明】
１〜３  コンピュータシステム
１０  ＣＰＵ
２０  システムＢＩＯＳ
３０  メモリ
３１  システムＢＩＯＳエリア
３２  拡張ＢＩＯＳエリア
４０（４０−１〜４０−ｎ）  拡張デバイスコントローラ
４１（４１−１〜４１−ｎ）  拡張ＢＩＯＳ
４１ａ（４１ａ−１〜４１ａ−ｎ）  初期化ルーチン
４１ｂ（４１ｂ−１〜４１ｂ−ｎ）  ステータスルーチン
４１ｃ（４１ｃ−１〜４１ｃ−ｎ）  ランタイムルーチン
５０（５０−１〜５０−ｎ）  ブートデバイス
６０  バス
７０（７０−１〜７０−ｎ）  拡張デバイスコントローラ
７１（７１−１〜７１−ｎ）  拡張ＢＩＯＳ
７１ａ（７１ａ−１〜７１ａ−ｎ）  初期化ルーチン
７１ｃ（７１ｃ−１〜７１ｃ−ｎ）  ランタイムルーチン
８０（８０−１〜８０−ｎ）  ブートデバイス
１００  ＣＰＵ
２００  システムＢＩＯＳ
３００  メモリ
３１０  システムＢＩＯＳエリア
３２０  拡張ＢＩＯＳエリア
４００（４００−１〜４００−ｎ）  拡張デバイスコントローラ
４１０（４１０−１〜４１０−ｎ）  拡張ＢＩＯＳ
５００（５００−１〜５００−ｎ）  ブートデバイス
６００  バス
【図１】
2004220345.tif 000003
【図２】
2004220345.tif 000004
【図３】
2004220345.tif 000005
【図４】
2004220345.tif 000006
【図５】
2004220345.tif 000007
【図６】
2004220345.tif 000008