(57)【特許請求の範囲】
【請求項１】
ＡＣＰＩ（Advanced Configuration and Power Interface）対応のオペレーティングシステムがACPI Enableコマンドを発行したことを要因とするＳＭＩ（System Management Interrupt）が発生した場合に、ＳＭＩ発生時のＣＰＵの状態が保持されるCPU STATE MAP領域を参照して、前記オペレーティングシステムのカーネルの種類を判別する判別手段を、ＡＣＰＩ対応のＢＩＯＳ（Basic Input/Output System）が備えるＳＭＩハンドラ内に設けたことを特徴とする情報処理装置。
【請求項２】
前記オペレーティングシステムのカーネルが３２ビットカーネルか６４ビットカーネルかを判別することで、前記オペレーティングシステムが３２ビットオペレーティングシステムおよび６４ビットオペレーティングシステムのいずれであるかを判別することを特徴とする請求項１記載の情報処理装置。
【請求項３】
前記判別手段は、前記CPU STATE MAP領域のＥＦＥＲ（Extended Feature Enable MSR）レジスタのＬＭＥビットの値に基づき、前記オペレーティングシステムが３２ビットオペレーティングシステムおよび６４ビットオペレーティングシステムのいずれであるのかを判定することを特徴とする請求項２記載の情報処理装置。
【請求項４】
前記ＡＣＰＩ対応のオペレーティングシステムに対して前記ＡＣＰＩ対応のＢＩＯＳが提供する、当該ＡＣＰＩ対応のＢＩＯＳに対して各種処理を要求すべくＳＭＩを発生させるためのプログラムの初期化処理ルーチン部に、前記ＡＣＰＩ対応のオペレーティングシステムの判別要求がなされたことを要因とするＳＭＩを発生させる手続きを含め、
前記判別手段は、当該判別要求がなされたことを要因とするＳＭＩが発生した場合、前記CPU STATE MAP領域のＣＲ４（Control Register 4）レジスタのＰＡＥ Enableビットの値およびＥＦＥＲレジスタのＬＭＥビットの値に基づき、前記オペレーティングシステムが３２ビットオペレーティングシステムおよび６４ビットオペレーティングシステムのいずれであるのかを判定することを特徴とする請求項２記載の情報処理装置。
【請求項５】
前記ＡＣＰＩ対応のオペレーティングシステムに対して前記ＡＣＰＩ対応のＢＩＯＳが提供する、当該ＡＣＰＩ対応のＢＩＯＳに対して各種処理を要求すべくＳＭＩを発生させるためのプログラムは、中間言語（ＡＭＬ：ACPI Machine Language）で記述されることを特徴とする請求項４記載の情報処理装置。
【請求項６】
前記ＡＣＰＩ対応のＢＩＯＳは、当該情報処理装置のリソース報告の要求時、前記ＡＣＰＩ対応のオペレーティングシステムの判別要求がなされたことを要因とするＳＭＩを前記ＡＣＰＩ対応のオペレーティングシステムに発生させる手段を有し、
前記判別手段は、当該判別要求がなされたことを要因とするＳＭＩが発生した場合、前記CPU STATE MAP領域のＣＲ４レジスタのＰＡＥ Enableビットの値およびＥＦＥＲレジスタのＬＭＥビットの値に基づき、前記オペレーティングシステムが３２ビットオペレーティングシステムおよび６４ビットオペレーティングシステムのいずれであるのかを判定することを特徴とする請求項２記載の情報処理装置。
【請求項７】
前記ＡＣＰＩ対応のＢＩＯＳは、前記ＡＣＰＩ対応のオペレーティングシステムが３２ビットオペレーティングシステムおよび６４ビットオペレーティングシステムのいずれであるのかを選択させるための選択画面であって、前記ＡＣＰＩ対応のオペレーティングシステムを自動判別させる選択肢を含む選択画面を提示するセットアップ手段を具備し、
前記セットアップ手段は、前記選択画面上で前記ＡＣＰＩ対応のオペレーティングシステムを自動判別させる選択肢が選択された場合、前記ＡＣＰＩ対応のオペレーティングシステムの判別要求がなされたことを要因とするＳＭＩを前記ＡＣＰＩ対応のオペレーティングシステムに発生させる手段を有し、
前記判別手段は、当該判別要求がなされたことを要因とするＳＭＩが発生した場合、前記CPU STATE MAP領域のＥＦＥＲレジスタのＬＭＥビットの値に基づき、前記オペレーティングシステムが３２ビットオペレーティングシステムおよび６４ビットオペレーティングシステムのいずれであるのかを判定することを特徴とする請求項２記載の情報処理装置。
【請求項８】
ＡＣＰＩ対応のオペレーティングシステムおよびＡＣＰＩ対応のＢＩＯＳが動作する情報処理装置におけるオペレーティングシステム判別方法であって、
前記ＡＣＰＩ対応のＢＩＯＳが、
前記ＡＣＰＩ対応のオペレーティングシステムがACPI Enableコマンドを発行したことを要因とするＳＭＩが発生した場合に、ＳＭＩ発生時のＣＰＵの状態が保持されるCPU STATE MAP領域を参照して、前記オペレーティングシステムのカーネルの種類を、ＳＭＩハンドラによって判定する、
ことを特徴とするオペレーティングシステム判別方法。
【請求項９】
前記オペレーティングシステムのカーネルが３２ビットカーネルか６４ビットカーネルかを判別することで、前記オペレーティングシステムが３２ビットオペレーティングシステムおよび６４ビットオペレーティングシステムのいずれであるかを判別することを特徴とする請求項８記載のオペレーティングシステム判別方法。
【請求項１０】
前記CPU STATE MAP領域のＥＦＥＲレジスタのＬＭＥビットの値に基づき、前記オペレーティングシステムが３２ビットオペレーティングシステムおよび６４ビットオペレーティングシステムのいずれであるのかを判定することを特徴とする請求項９記載のオペレーティングシステム判別方法。
【請求項１１】
前記ＡＣＰＩ対応のオペレーティングシステムに対して前記ＡＣＰＩ対応のＢＩＯＳが提供する、当該ＡＣＰＩ対応のＢＩＯＳに対して各種処理を要求すべくＳＭＩを発生させるためのプログラムの初期化処理ルーチン部に、前記ＡＣＰＩ対応のオペレーティングシステムの判別要求がなされたことを要因とするＳＭＩを発生させる手続きを含め、
前記ＡＣＰＩ対応のＢＩＯＳは、
当該判別要求がなされたことを要因とするＳＭＩが発生した場合、前記CPU STATE MAP領域のＣＲ４レジスタのＰＡＥ Enableビットの値およびＥＦＥＲレジスタのＬＭＥビットの値に基づき、前記オペレーティングシステムが３２ビットオペレーティングシステムおよび６４ビットオペレーティングシステムのいずれであるのかを判定することを特徴とする請求項９記載のオペレーティングシステム判別方法。
【請求項１２】
前記ＡＣＰＩ対応のオペレーティングシステムに対して前記ＡＣＰＩ対応のＢＩＯＳが提供する、当該ＡＣＰＩ対応のＢＩＯＳに対して各種処理を要求すべくＳＭＩを発生させるためのプログラムは、中間言語で記述されることを特徴とする請求項１１記載のオペレーティングシステム判別方法。
【請求項１３】
前記ＡＣＰＩ対応のＢＩＯＳは、
当該情報処理装置のリソース報告の要求時、前記ＡＣＰＩ対応のオペレーティングシステムの判別要求がなされたことを要因とするＳＭＩを前記ＡＣＰＩ対応のオペレーティングシステムに発生させ、
当該判別要求がなされたことを要因とするＳＭＩが発生した場合、前記CPU STATE MAP領域のＣＲ４レジスタのＰＡＥ Enableビットの値およびＥＦＥＲレジスタのＬＭＥビットの値に基づき、前記オペレーティングシステムが３２ビットオペレーティングシステムおよび６４ビットオペレーティングシステムのいずれであるのかを判定することを特徴とする請求項９記載のオペレーティングシステム判別方法。
【請求項１４】
前記ＡＣＰＩ対応のＢＩＯＳは、
前記ＡＣＰＩ対応のオペレーティングシステムが３２ビットオペレーティングシステムおよび６４ビットオペレーティングシステムのいずれであるのかを選択させるための選択画面であって、前記ＡＣＰＩ対応のオペレーティングシステムを自動判別させる選択肢を含む選択画面を提示し、
前記選択画面上で前記ＡＣＰＩ対応のオペレーティングシステムを自動判別させる選択肢が選択された場合、前記ＡＣＰＩ対応のオペレーティングシステムの判別要求がなされたことを要因とするＳＭＩを前記ＡＣＰＩ対応のオペレーティングシステムに発生させ、
当該判別要求がなされたことを要因とするＳＭＩが発生した場合、前記CPU STATE MAP領域のＥＦＥＲレジスタのＬＭＥビットの値に基づき、前記オペレーティングシステムが３２ビットオペレーティングシステムおよび６４ビットオペレーティングシステムのいずれであるのかを判定することを特徴とする請求項９記載のオペレーティングシステム判別方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、３２ビットオペレーティングシステムおよび６４ビットオペレーティングシステムのいずれもが動作し得るパーソナルコンピュータ等に適用して好適なオペレーティングシステムの自動判別技術に関する。
【背景技術】
【０００２】
近年、ノートブックタイプやデスクトップタイプ等、様々なタイプのパーソナルコンピュータが広く普及している。この種のパーソナルコンピュータは、オペレーティングシステム（ＯＳ）によってリソース管理が司られ、このＯＳの制御下において、ユーティリティを含む各種アプリケーションプログラムが実行される。
【０００３】
このように、ＯＳは、パーソナルコンピュータにおいて重要な役割を担うものであるために、当該ＯＳの取り扱いに関する提案が、これまでも種々なされている（例えば特許文献１等参照）。
【特許文献１】特開平２−２８０２２９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
ＯＳは、リソース管理を行うにあたり、ＢＩＯＳ（Basic Input/Output System）に対して、そのパーソナルコンピュータのリソース、即ち、当該ＯＳが管理すべきリソースを問い合わせる（リソース報告）。そして、ＯＳは、このＢＩＯＳからのリソース報告の内容に基づき、リソース管理を実施する。
【０００５】
最近では、最大４Ｇバイトまでメモリ領域を利用可能な３２ビットＯＳに代わり、それ以上のメモリ領域を利用可能な６４ビットＯＳが主流になりつつある。これに伴って、増設できるメモリの容量が飛躍的に大きくなっている。
【０００６】
ＢＩＯＳは、そのパーソナルコンピュータ上で動作するＯＳが、３２ビットＯＳであるのか６４ビットＯＳであるのかを、例えばユーティリティプログラム等を使ったユーザの設定によって与えられ、この設定内容に基づき、ＯＳに対するリソース報告を行うのが一般的である。従って、仮に、６４ビットＯＳであるにも関わらず、３２ビットＯＳであるかのごとく設定が行われてしまうと、搭載されるメモリの容量が４Ｇバイトを遙かに越える場合であっても、ＢＩＯＳは、３２ビットＯＳが対応可能な４Ｇバイト分のリソース報告をＯＳに行ってしまう。
【０００７】
逆に、３２ビットＯＳであるにも関わらず、６４ビットＯＳであるかのごとく設定が行われてしまうと、搭載されるメモリの容量が４Ｇバイトを越えていた場合、３２ビットＯＳが対応不可能な４Ｇバイト以上のリソース報告がＯＳに行われ、パーソナルコンピュータの誤動作を招くおそれがある。
【０００８】
このようなことから、ＢＩＯＳ自身が、そのパーソナルコンピュータ上で動作するＯＳが、３２ビットＯＳであるのか６４ビットＯＳであるのかを自動的に判別する仕組みを備えることが強く望まれている。
【０００９】
この発明は、このような事情を考慮してなされたものであり、オペレーティングシステムの自動判別をＢＩＯＳにて実現する情報処理装置およびオペレーティングシステム判別方法を提供することを目的とする。
【課題を解決するための手段】
【００１０】
前述の目的を達成するために、この発明の情報処理装置は、ＡＣＰＩ対応のオペレーティングシステムがACPI Enableコマンドを発行したことを要因とするＳＭＩが発生した場合に、ＳＭＩ発生時のＣＰＵの状態が保持されるCPU STATE MAP領域を参照して、前記オペレーティングシステムのカーネルの種類を判別する判別手段を、ＡＣＰＩ対応のＢＩＯＳが備えるＳＭＩハンドラ内に設けたことを特徴とする。
【００１１】
また、この発明のオペレーティングシステム判別方法は、ＡＣＰＩ対応のオペレーティングシステムおよびＡＣＰＩ対応のＢＩＯＳが動作する情報処理装置におけるオペレーティングシステム判別方法であって、前記ＡＣＰＩ対応のＢＩＯＳが、前記ＡＣＰＩ対応のオペレーティングシステムがACPI Enableコマンドを発行したことを要因とするＳＭＩが発生した場合に、ＳＭＩ発生時のＣＰＵの状態が保持されるCPU STATE MAP領域を参照して、前記オペレーティングシステムのカーネルの種類を、ＳＭＩハンドラによって判定する、ことを特徴とする。
【発明の効果】
【００１２】
この発明によれば、オペレーティングシステムの自動判別をＢＩＯＳにて実現する情報処理装置およびオペレーティングシステム判別方法を提供することができる。
【発明を実施するための最良の形態】
【００１３】
以下、図面を参照して本発明の一実施形態を説明する。
【００１４】
図１は、本実施形態に係る情報処理装置のシステム構成を示す図である。この情報処理装置は、例えばノートブックタイプやデスクトップタイプ等の各種パーソナルコンピュータとして実現される。
【００１５】
本コンピュータは、図１に示すように、ＣＰＵ１１、ノースブリッジ１２、主メモリ１３、表示コントローラ１４、ビデオメモリ（ＶＲＡＭ）１４Ａ、サウスブリッジ１５、ＢＩＯＳ−ＲＯＭ１６、ハードディスクドライブ（ＨＤＤ）１７、光磁気ディスクドライブ（ＯＤＤ）１８、エンベデッドコントローラ／キーボードコントローラ（ＥＣ／ＫＢＣ）１９、電源回路２０、ネットワークコントローラ２１および各種デバイス２２等を備えている。
【００１６】
ＣＰＵ１１は、本コンピュータの動作を制御するプロセッサであり、ＨＤＤ１６から主メモリ１３にロードされる、オペレーティングシステム（ＯＳ）１００や、このＯＳ１００の制御下で動作する、ユーティリティソフトウェアを含む各種アプリケーションプログラム２００を実行する。また、ＣＰＵ１１は、ＢＩＯＳ−ＲＯＭ１６に格納されたＢＩＯＳも実行する。以下では、このＢＩＯＳ−ＲＯＭ１６に格納されたＢＩＯＳ自体についてもＢＩＯＳ１６と表記することがある。ＢＩＯＳ１６は、ハードウェア制御のためのプログラムである。このＣＰＵ１１によって実行されるＯＳ１００およびＢＩＯＳ−ＲＯＭ１６は、電力制御や周辺機器の活栓挿抜制御用に規定されたＡＣＰＩ（Advanced Configuration and Power Interface）に対応している。
【００１７】
ノースブリッジ１２は、ＣＰＵ１１のローカルバスとサウスブリッジ１５との間を接続するブリッジデバイスである。ノースブリッジ１２は、バスを介して表示コントローラ１４との通信を実行する機能を有しており、また、主メモリ１３をアクセス制御するメモリコントローラも内蔵されている。表示コントローラ１４は、本コンピュータに内蔵または外部接続される表示装置を駆動制御する。
【００１８】
サウスブリッジ１５は、ＰＣＩバス上の各種デバイス２２を制御するコントローラである。サウスブリッジ１５には、ＢＩＯＳ−ＲＯＭ１６、ＨＤＤ１７、ＯＤＤ１８が直接的に接続され、これらを制御する機能も有している。また、サウスブリッジ１５は、後述するＳＭＩ（System Management Interrupt）の発生を通知する信号をＣＰＵ１１に供給する機能も有している。
【００１９】
ＨＤＤ１７は、各種ソフトウェアおよびデータを格納する記憶装置である。また、ＯＤＤ１８は、ＣＤ（Compact Disc）やＤＶＤ（Digital versatile Disc）等の記憶メディアを駆動するためのドライブユニットである。
【００２０】
ＥＣ／ＫＢＣ１９は、電力管理のためのエンベデッドコントローラと、キーボード２４およびタッチパッド２５を制御するためのキーボードコントローラとが集積された１チップマイクロコンピュータである。ＥＣ／ＫＢＣ１９は、電源回路２０と協働して、バッテリや外部ＡＣ電源等からの電力を各部に供給制御する。そして、ネットワークコントローラ２１は、例えばインターネットなどの外部ネットワークとの通信を実行する通信装置である。
【００２１】
このようなシステム構成をもつ本コンピュータのリソース管理は、ＯＳ１００によって司られている。また、このＯＳ１００に対するリソース報告は、ＢＩＯＳ１６によって実施される。本コンピュータでは、３２ビットＯＳおよび６４ビットＯＳのいずれもが動作し得るものと想定する。即ち、ＢＩＯＳ１６は、６４ビットＯＳに対しては６４ビットＯＳ用のリソース報告を行い、３２ビットＯＳに対しては３２ビットＯＳ用のリソース報告を行う必要がある。そこで、本コンピュータは、このＢＩＯＳ１６自身が、ＯＳ１００が６４ビットＯＳであるのか３２ビットＯＳであるのかを自動的に判別する仕組みを備えたものであり、以下、この点について詳述する。
【００２２】
ここでは、まず、以下の説明の理解を助けるために、（１）ＳＭＩの概略、（２）Long Modeの概略、（３）ＡＣＰＩ  ＯＳの動作の概略、について説明する。
【００２３】
（１）ＳＭＩの概略
ＳＭＩは、ＯＳ稼働中でもＢＩＯＳが処理しなければならない割込み要因を処理するための割込みである。ＳＭＩが発生すると、ＣＰＵは、汎用レジスタをはじめとしたＣＰＵの状態をCPU STATE MAPと呼ばれる領域に保存し、ＢＩＯＳのＳＭＩハンドラを呼び出す。CPU STATE MAPには、ＣＰＵの動作モードに関する情報も含まれており、この情報を基に稼働中のＯＳが６４ビットＯＳか否かを判断することができる。ＳＭＩハンドラが終了すると、ＣＰＵは、CPU STATE MAPからＣＰＵの動作モードを復帰して、ＳＭＩ発生前の処理を再開する。
【００２４】
（２）Long Modeの概略
Intel64, AMD64アークテクチャのＣＰＵでは、Long Mode(IA-32e mode)と呼ばれるＣＰＵの動作モードを持っており、ＣＰＵの動作モードがLong Modeか否かは、EFER(Extended Feature Enable MSR), CR4と呼ばれるレジスタを参照することによって判断できる。
【００２５】
６４ビット（x64エディションの）ＯＳでは、このLong Modeを利用しており、一方、３２ビットＯＳでは、このLong Modeを利用しないため、ＯＳ稼働中のＣＰＵの動作モードがLong Modeであるか否かを調べれば、６４ビットＯＳか否かを判別できる。
【００２６】
（３）ＡＣＰＩ  ＯＳの動作の概略
ＢＩＯＳは、ＡＣＰＩ  ＯＳに対して、中間言語（ＡＭＬ：ACPI Machine Language）で記述されたプログラムを提供する。ＡＣＰＩ  ＯＳは、ACPI Enableコマンドにより、ＢＩＯＳに対してＡＣＰＩ  ＯＳが起動することを通知し、以後、ＯＳ自身が持つインタプリタ（ＯＳＰＭ）によりＡＭＬを解釈しながら当該プログラムを実行する。
【００２７】
また、このACPI Enableコマンドの発行により、ＳＭＩが発生するので、ＢＩＯＳは、ＳＭＩハンドラの中で、ＡＣＰＩ  ＯＳが起動したことを検出する。
【００２８】
（第１実施形態）
以上の「ＳＭＩの概要」、「Long Modeの概略」、「ＡＣＰＩ  ＯＳの動作の概略」を踏まえて、まず、本コンピュータにおけるＢＩＯＳ１６によるＯＳ１００の自動判別の第１実施形態について説明する。
【００２９】
図１に示されるように、ＢＩＯＳ１６は、（ＯＳ１００に提供する）中間言語プログラム１６１、ＳＢ設定モジュール１６２およびＳＭＩハンドラ１６３を有している。
【００３０】
中間言語プログラム１６１は、目的のＳＭＩを発生させるための、「（サウスブリッジ１５に割り当てられた）Ｉ／Ｏアドレス空間のｘｘ番地にｙｙ値を書き込む」といった情報を管理するテーブルを保持する。一方、ＳＢ設定モジュール１６２は、「（サウスブリッジに割り当てられた）Ｉ／Ｏアドレス空間のｘｘ番地にｙｙ値が書き込まれたらＳＭＩの発生を通知する信号をＣＰＵ１１に供給する」ように、当該サウスブリッジ１５を設定する。そして、ＳＭＩハンドラ１６３は、この中間言語プログラム１６１およびＳＢ設定モジュール１６２の協働によって発生可能となるＳＭＩが実際に発生した場合に、各々の要因に対応する処理を実行する。
【００３１】
本コンピュータでは、このＳＭＩハンドラ１６３に、ＯＳ判別ルーチンを設け、このＯＳ判別ルーチンによって、ＯＳ１００が６４ビットＯＳか３２ビットＯＳかを自動的に判別する。図２には、CPU STATE MAPに格納される情報をＯＳの種類別に一覧するためのテーブルが示されている。
【００３２】
「ＳＭＩの概略」で説明したように、ＳＭＩが発生すると、ＣＰＵ１１は、汎用レジスタをはじめとしたＣＰＵの状態をCPU STATE MAPと呼ばれる領域に保存する。ＯＳ１００が６４ビットＯＳであれば、「Long Modeの概略」で説明したように、この時のＣＰＵ１１の動作モードはLong Modeとなる。そして、Long Modeの場合は、EFERレジスタのLMEビットの値は"1"となるようになっている。つまり、このEFERレジスタのLMEビットの値を参照することで、ＯＳ１００が６４ビットＯＳか否かを判別することができる。
【００３３】
また、「ＡＣＰＩ  ＯＳの動作の概略」で説明したように、ＯＳ１００は、ＡＣＰＩ  ＯＳの起動をACPI EnableコマンドによってＢＩＯＳ１６に通知する。そして、このACPI Enableコマンドの発行時にはＳＭＩが発生する。そこで、ＳＭＩハンドラ１６３は、このACPI Enableコマンドを要因とするＳＭＩが発生した場合に、ＯＳ判別ルーチンがEFERレジスタのLMEビットの値を参照し、ＯＳ１００が６４ビットＯＳか否かを自動判別する。その後、ＯＳ１００からリソース報告の要求を受けたら、ＢＩＯＳ１６は、この時の判定結果に基づき、６４ビットＯＳ用または３２ビットＯＳ用のリソース報告を適切に実行する。
【００３４】
図３は、本コンピュータで実行されるＢＩＯＳ１６によるＯＳ１００の自動判別の動作手順を示すフローチャートである。
【００３５】
ＢＩＯＳ１６のＳＭＩハンドラ１６３は、ＳＭＩが発生すると、まず、その要因を判別する（ステップＡ１）。もし、このＳＭＩ要因がACPI Enableコマンドによるものであった場合（ステップＡ２のＹＥＳ）、ＳＭＩハンドラ１６３は、この要求されたACPI Enable処理を実行した後（ステップＡ３）、（ＯＳ判別ルーチンによって）CPU STATE MAP内のEFERレジスタのLMEビットの値を参照する（ステップＡ４）。
【００３６】
そして、このEFERレジスタのLMEビットの値が"1"ならば（ステップＡ４のＹＥＳ）、ＳＭＩハンドラ１６３（のＯＳ判別ルーチン）は、ＯＳ１００は６４ビットＯＳであると判定し（ステップＡ５）、一方、"1"でなければ（ステップＡ４のＮＯ）、ＯＳ１００は３２ビットＯＳであると判定する（ステップＡ６）。
【００３７】
また、ＳＭＩ要因がACPI Enableコマンド以外によるものであれば（ステップＡ２のＮＯ）、ＳＭＩハンドラ１６３は、その要求された従来のハンドラ処理を実行する（ステップＡ７）。
【００３８】
このように、本第１実施形態のコンピュータは、ＢＩＯＳ１６によるＯＳ１００の自動判別を実現する。
【００３９】
（第２実施形態）
次に、本コンピュータにおけるＢＩＯＳ１６によるＯＳ１００の自動判別の第２実施形態について説明する。本第２実施形態では、ＯＳ１００のカーネル判別についても説明する。
【００４０】
例えば図４に示すように、６４ビットＯＳのブート過程において、Long Modeへの移行（ａ２）が、ACPI Enableコマンド発行（ａ１）後に行われるような場合には、ACPI Enableコマンドを要因とするＳＭＩの発生時、ＳＭＩハンドラ１６３は、当該ＯＳ１００は３２ビットＯＳであると判別する。このような場合は、６４ビットＯＳに対して３２ビットＯＳ用のリソース報告（ａ３）を行ってしまうことになる。このようなブート過程を採るＯＳは一般的には存在し得ないが、万全を期すために、本第２実施形態では、このような状況下においても適切なリソース報告が行えるようにすべくＯＳ判別を行うための仕組みを備える。
【００４１】
そのために、まず、ＢＩＯＳ１６がＯＳ１００に提供する中間言語プログラム１６１の初期化処理ルーチン部（ACPIの_INIメソッド）、即ち、ＯＳ１００のＯＳＰＭが最初に実行するメソッド中に、「ＯＳ判別要求」を要因とするＳＭＩを発生させる手続きを記述する。そして、ＳＭＩハンドラ１６３は、この「ＯＳ判別要求」を要因とするＳＭＩが発生したら、ＯＳ判別ルーチンによるＯＳ１００の自動判別を実行する。
【００４２】
この初期化処理ルーチン部は、Long Modeへの移行後に実行されると考えられるので、６４ビットＯＳを３２ビットＯＳと誤認することはない。即ち、上述のような状況下においても、適切なリソース報告を行うことができる。
【００４３】
ここで、図５および図６を参照して、この第２実施形態のコンピュータで実行されるＢＩＯＳ１６によるＯＳ１００の自動判別の動作手順を説明する。図５には、ＢＩＯＳ１６がＯＳ１００に提供する中間言語プログラム１６１の初期化処理ルーチン部の流れ、図６には、ＢＩＯＳ１６のＳＭＩハンドラ１６３の流れ、がそれぞれ示されている。
【００４４】
ACPI Enableコマンドを発行し、ＢＩＯＳに対してＡＣＰＩ  ＯＳが起動することを通知したＯＳ１００は、自身のＯＳＰＭにより、図５に示す、ＢＩＯＳ１６から提供された中間言語プログラム１６１を解釈しながら初期化処理ルーチン部を実行する。
【００４５】
即ち、まず、「ＯＳ判別要求」を要因とするＳＭＩを発生させ（ステップＢ１）、その後に、従来の初期化処理を実行する（ステップＢ２）。
【００４６】
一方、ＳＭＩハンドラ１６３は、ＳＭＩが発生すると、まず、その要因を判別する（ステップＣ１）。このＳＭＩ要因がACPI Enableコマンドによるものであった場合（ステップＣ２のＹＥＳ）、ＳＭＩハンドラ１６３は、この要求されたACPI Enable処理を実行した後（ステップＣ３）、（ＯＳ判別ルーチンによって）CPU STATE MAP内のCR4レジスタのPAE Enableビットの値およびEFERレジスタのLMEビットの値を参照する（ステップＣ４，ステップＣ６）。ＣＰＵの動作モードがLong Modeか否か、即ち、６４ビットＯＳか否かは、（第１実施形態の図３のフローチャートに示すように、）EFERレジスタのLMEビットが"1"か否かで判別可能であるが、この第２実施形態では、更に、CR4レジスタのPAE Enableビットの値が"1"か"0"かを調べて、ＯＳ１００が６４ビットＯＳか否かを判定する。図２に示すように、非ＰＡＥカーネルの場合、PAE Enableビットの値は"0"となるようになっている。６４ビットＯＳはＰＡＥカーネルのみであるので、このPAE Enableビットの値が"1"でなければ、ＯＳ１００は６４ビットＯＳではないことがわかる。
【００４７】
そこで、ＳＭＩハンドラ１６３（のＯＳ判別ルーチン）は、このPAE Enableビットの値が"1"でなければ（ステップＣ４のＮＯ）、まずは、その時点で、ＯＳ１００は３２ビットＯＳ（非ＰＡＥカーネル）であると判定する（ステップＣ５）。
【００４８】
続いて、ＳＭＩハンドラ１６３（のＯＳ判別ルーチン）は、EFERレジスタのLMEビットの値が"1"ならば（ステップＣ６のＹＥＳ）、ＳＭＩハンドラ１６３（のＯＳ判別ルーチン）は、ＯＳ１００は６４ビットＯＳであると判定し（ステップＣ７）、一方、"1"でなければ（ステップＣ６のＮＯ）、ＯＳ１００は３２ビットＯＳ（ＰＡＥカーネル）であると判定する（ステップＣ８）。
【００４９】
また、ＳＭＩハンドラ１６３は、ＳＭＩ要因が「ＯＳ判別要求」によるものであった場合も（ステップＣ２のＮＯ，ステップＣ９）、ステップＣ４〜ステップ８の処理、即ち、ＯＳ自動判別処理を実行する。これにより、中間言語プログラム１６１の初期化処理ルーチン部実行時に、当該ＯＳ自動判別処理が必ず実施されることになる。更に、ＳＭＩ要因がACPI Enableコマンドおよび「ＯＳ判別要求」以外によるものであれば（ステップＣ９のＮＯ）、ＳＭＩハンドラ１６３は、その要求された従来のハンドラ処理を実行する（ステップＣ１０）。
【００５０】
このように、本第２実施形態のコンピュータは、ＢＩＯＳ１６によるＯＳ１００の自動判別を実現する。
【００５１】
ところで、ここでは、図４に示すように、Long Modeへの移行がACPI Enableコマンド発行後に行われるような場合における誤認を防止する仕組みを、中間言語プログラム１６１の初期化処理ルーチン部において「ＯＳ判別要求」を要因とするＳＭＩを発生させることによって実現する例を説明したが、その他の例として、ＯＳ１００がリソース報告を要求してきた時に、ＢＩＯＳ１６が、この「ＯＳ判別要求」を要因とするＳＭＩを発生させることによっても実現できる。図７は、ＯＳ１００からリソース報告の要求を受けた場合におけるＢＩＯＳ１６の動作手順を示すフローチャートである。
【００５２】
ＯＳ１００からリソース報告の要求を受けると、ＢＩＯＳ１６は、「ＯＳ判別要求」を要因とするＳＭＩを発生させ（ステップＤ１）、図６に示すＳＭＩハンドラ１６３によるＯＳ自動判別処理を実施させる。その後、ＢＩＯＳ１６は、６４ビットＯＳに対しては６４ビットＯＳ用のリソース報告を行い（ステップＤ２のＹＥＳ，ステップＤ３）、一方、３２ビットＯＳに対しては（ステップＤ２のＮＯ、ステップＤ４）、ＰＡＥカーネルであれば３２ビットＯＳ（ＰＡＥカーネル）用のリソース報告を行い（ステップＤ４のＹＥＳ，ステップＤ５）、非ＰＡＥカーネルであれば３２ビットＯＳ（非ＰＡＥカーネル）用のリソース報告を行う（ステップＤ４のＮＯ，ステップＤ６）。
【００５３】
なお、中間言語プログラム１６１の初期化処理ルーチン部において「ＯＳ判別要求」を要因とするＳＭＩを発生させる仕組み、および、リソース報告の要求受け付け時に「ＯＳ判別要求」を要因とするＳＭＩを発生させる仕組みは、必ずしも排他選択的にその一方のみを搭載する必要はなく、（中間言語プログラム１６１の初期化処理ルーチン部において「ＯＳ判別要求」を要因とするＳＭＩを発生させる仕組みによる判定結果は、リソース報告の要求受け付け時に「ＯＳ判別要求」を要因とするＳＭＩを発生させる仕組みによる判定結果によって更新されるために冗長的なものとなってしまうが、）その両方を搭載しても構わない。
【００５４】
（第３実施形態）
次に、本コンピュータにおけるＢＩＯＳ１６によるＯＳ１００の自動判別の第３実施形態について説明する。
【００５５】
ＢＩＯＳは、通常、セットアップなどと称される、動作環境を設定するための画面をユーザに提示する機能を有している。そこで、本第３実施形態では、ＢＩＯＳ１６が、例えば図８に示すようなセットアップを提示する。即ち、ＯＳ１００が３２ビットＯＳなのか６４ビットＯＳなのかを設定する選択肢（ｂ２，ｂ３）に加えて、ＯＳをＢＩＯＳ１６に自動判別させるための選択肢（ｂ１）を新設する。このセットアップ上で、自動判別用の選択肢（ｂ１）が選択されたら、ＢＩＯＳ１６は、例えば第２実施形態で説明した「ＯＳ判別要求」を要因とするＳＭＩを発生させる。
【００５６】
このセットアップによっても、ユーザの手を煩わせることなく、６４ビットＯＳに対しては６４ビットＯＳ用のリソース報告、３２ビットＯＳに対しては３２ビットＯＳ用のリソース報告が適切に行われることになる。
【００５７】
なお、本発明は、上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合わせにより種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。更に、異なる実施形態に構成要素を適宜組み合わせてもよい。
【図面の簡単な説明】
【００５８】
【図１】この発明の実施形態に係る情報処理装置のシステム構成を示す図
【図２】CPU STATE MAPに格納される情報をオペレーティングシステムの種類別に一覧するためのテーブルを示す図
【図３】同第１実施形態の情報処理装置で実行されるＢＩＯＳによるオペレーティングシステムの自動判別の動作手順を示すフローチャート
【図４】Long Modeへの移行をACPI Enableコマンド発行後に行う６４ビットオペレーティングシステムのブート手順を示すタイムチャート
【図５】同第２実施形態の情報処理装置のＢＩＯＳがオペレーティングシステムに提供する中間言語プログラムの初期化処理ルーチン部の流れを示すフローチャート
【図６】同第２実施形態の情報処理装置のＢＩＯＳのＳＭＩハンドラの流れを示すフローチャート
【図７】同第２実施形態の情報処理装置のオペレーティングシステムからリソース報告の要求を受けた場合におけるＢＩＯＳの動作手順を示すフローチャート
【図８】同第３実施形態の情報処理装置のＢＩＯＳが提示するセットアップ（画面）を示す図
【符号の説明】
【００５９】
１１…ＣＰＵ、１２…ノースブリッジ、１３…主メモリ、１４…表示コントローラ、１４Ａ…ＶＲＡＭ、１５…サウスブリッジ、１６…ＢＩＯＳ−ＲＯＭ、１７…ＨＤＤ、１８…ＯＤＤ、１９…エンベデッドコントローラ／キーボードコントローラ（ＥＣ／ＫＢＣ）、２０…電源回路、２１…ネットワークコントローラ、２２…各種デバイス、１００…オペレーティングシステム（ＯＳ）、１６１…中間言語（ＡＭＬ）プログラム、１６２…ＳＢ設定モジュール、１６３…ＳＭＩハンドラ、２００…各種アプリケーション。
【図１】
0004352086.tif 000002
【図２】
0004352086.tif 000003
【図３】
0004352086.tif 000004
【図４】
0004352086.tif 000005
【図５】
0004352086.tif 000006
【図６】
0004352086.tif 000007
【図７】
0004352086.tif 000008
【図８】
0004352086.tif 000009