(57)【特許請求の範囲】
【請求項１】
第１のＰＯＳＴコードと該第１のＰＯＳＴコードよりも短い時間で処理を終了することができる第２のＰＯＳＴコードを実装し、電力源が交流電源と２次電池で構成されたコンピュータがパワー・オフ状態からパワー・オン状態に移行する方法であって、
前記コンピュータが、プロセッサの前回のリセットから今回のリセットまでの間に前記交流電源と前記２次電池がいずれも電力供給を停止したときに、前記２次電池の電圧に基づいて前記コンピュータの筐体に収納された内部デバイスに対する物理的なアクセスの可能性を判断するステップと、
前記物理的なアクセスの可能性が高いと判断したときに前記第１のＰＯＳＴコードを実行するステップと、
前記物理的なアクセスの可能性が低いと判断したときに前記第２のＰＯＳＴコードを実行するステップと
を有する方法。
【請求項２】
前記物理的なアクセスの可能性を判断するステップが、前記パワー・オン状態で前記２次電池の電圧が所定値未満に低下したときに前記物理的なアクセスの可能性が低いと判断する請求項１に記載の方法。
【請求項３】
前記物理的なアクセスの可能性を判断するステップが、前記パワー・オン状態で前記２次電池の電圧が前記所定値以上に維持され、かつ、前記パワー・オフ状態で前記２次電池の電圧が所定値未満に低下したときに前記物理的なアクセスの可能性が低いと判断する請求項２に記載の方法。
【請求項４】
前記コンピュータが前記第２のＰＯＳＴコードよりも短い時間で処理を終了することができる第３のＰＯＳＴコードを実装し、
前記第２のＰＯＳＴコードまたは前記第３のＰＯＳＴコードのいずれかを選択するステップを有する請求項１から請求項３のいずれかに記載の方法。
【請求項５】
前記パワー・オン状態で外部デバイスが接続されたか否かを判断するステップと、
前記外部デバイスが接続されたと判断したときに前記第１のＰＯＳＴコードを実行するステップと
を有する請求項１から請求項４のいずれかに記載の方法。
【請求項６】
前記筐体のカバー蓋が開放されたと判断したときに前記第１のＰＯＳＴコードを実行するステップを有する請求項１から請求項５のいずれかに記載の方法。
【請求項７】
前記カバー蓋を取り付けるネジが外されたときに前記カバー蓋が開放されたと判断する請求項６に記載の方法。
【請求項８】
前記第１のＰＯＳＴコードを実行するステップが、
前記内部デバイスの検査だけを実行するステップと、
前記内部デバイスの検査の結果エラーが発生したときに前記エラーを表示するステップと、
前記エラーを表示してから再起動されたときに前記第１のＰＯＳＴコードをすべて実行するステップと
を有する請求項１から請求項７のいずれかに記載の方法。
【請求項９】
筐体に複数の内部デバイスを収納し、電力源に交流電源と２次電池を含むコンピュータが起動する方法であって、
前記複数の内部デバイスの検査と初期化をしてパラメータを設定する第１のコードと前記第１のコードよりも簡易な手順でパラメータを設定する第２のコードを用意するステップと、
プロセッサがリセット信号を受け取るステップと、
前記コンピュータが、前記交流電源と前記２次電池が前記コンピュータに対する電力供給を停止したときに前記２次電池の電圧に基づいて前記内部デバイスに対する物理的なアクセスの可能性を判断するステップと、
前記物理的なアクセスの可能性が高いと判断したときに前記第１のコードを実行するステップと、
前記物理的なアクセスの可能性が低いと判断したときに前記第２のコードを実行するステップと
を有する方法。
【請求項１０】
前記物理的なアクセスの可能性を判断するステップが、
パワー・オン状態で前記２次電池の電圧が所定値未満に低下したか否かを判断するステップを含む請求項９に記載の方法。
【請求項１１】
前記物理的なアクセスの可能性を判断するステップが、
パワー・オフ状態で前記２次電池の電圧が所定値未満に低下したか否かを判断するステップを含む請求項１０に記載の方法。
【請求項１２】
筐体に内部デバイスを収納し、電池パックおよびＡＣ／ＤＣアダプタから電力の供給を受ける携帯式コンピュータであって、
プロセッサと、
前記プロセッサがリセットされたときに前記内部デバイスにパラメータを設定するように前記コンピュータを機能させる基本ＰＯＳＴコードと、
前記プロセッサがリセットされたときに前記基本ＰＯＳＴコードよりも短時間でパラメータを設定するように前記コンピュータを機能させる高速ＰＯＳＴコードと、
前記プロセッサの前回のリセットから今回のリセットまでの間に前記電池パックおよび前記ＡＣ／ＤＣアダプタが電力供給を停止したときに、前記電池パックの電圧に基づいて前記内部デバイスに対する物理的なアクセスの可能性を判断し、前記物理的なアクセスの可能性があると判断したときに前記基本ＰＯＳＴコードを選択し前記物理的なアクセスの可能性がないと判断したときに前記高速ＰＯＳＴコードを選択する機能を前記コンピュータに実現させるＰＯＳＴ選択コードと
を有する携帯式コンピュータ。
【請求項１３】
前記ＰＯＳＴ選択コードが、パワー・オン状態における前記電池パックの電圧が所定値未満に低下したときに前記物理的なアクセスの可能性がないと判断する機能を前記コンピュータに実現させる請求項１２に記載の携帯式コンピュータ。
【請求項１４】
前記ＰＯＳＴ選択コードが、パワー・オフ状態における前記電池パックの電圧が所定値未満に低下したときに前記物理的なアクセスの可能性がないと判断する機能を前記コンピュータに実現させる請求項１３に記載の携帯式コンピュータ。
【請求項１５】
２次電池から電力の供給を受けることが可能で筐体に内部デバイスを収納するコンピュータが起動したときに、前記コンピュータに、
前回の起動から今回の起動までの間に前記コンピュータの電力源が電力供給を停止したときに前記２次電池の電圧に基づいて前記内部デバイスに対する物理的なアクセスの可能性を検出するステップと、
前記物理的なアクセスの可能性を検出したときに前記内部デバイスの検査と初期化を実行するステップと、
前記物理的なアクセスの可能性を検出しないときに少なくとも前記検査と前記初期化の一部を省略して不揮発性メモリに記憶していたパラメータをリストアするステップと
を含む処理を実行させるためのＢＩＯＳコード。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はコンピュータを起動する際のＰＯＳＴ時間の短縮と動作の安定性の両立を図る技術に関する。
【背景技術】
【０００２】
コンピュータは、電源が投入されるとオペレーティング・システム（ＯＳ）がメイン・メモリにロードされる前に、ＢＩＯＳ＿ＲＯＭに格納されたＢＩＯＳコードが実行される。ＢＩＯＳコードは、コンピュータに搭載されているデバイスを検出して、検査および初期化を行うＰＯＳＴ（Power On Self Test）コードを含む。プロセッサ（ＣＰＵ）は、リセットされるとＯＳのロードを開始する前にＰＯＳＴコードを実行する。
【０００３】
特許文献１は、ＰＯＳＴを短時間で終了するためのファースト・スタートアップの方法について開示する。ユーザはファースト・スタートアップをディスエーブルにしてからシステムのハウジングを開放してコンフィグレーションを変更する。その後パワー・オンされるとファースト・スタートアップがイネーブルに設定される。今回のスタートアップがイネーブルに設定されたあとの最初のスタートアップのときはノーマル・スタートアップを実行しそのときに設定したコンテンツをＢＩＯＳチップに格納する。最初のスタートアップでない場合は、ＢＩＯＳチップに格納されたパラメータをコントローラのレジスタに設定することでＰＯＳＴ時間を短縮する。
【０００４】
特許文献２は、新しいソフトウェアをロードしたときにＯＳがレジストリ・キーを更新したりＯＳ環境をリスタートしたりするために行うプラットフォームのリスタートを短時間で終了する方法を開示する。同文献には、プラットフォームに対してハードウェアの変更がないことを検出したときは、プラットフォームの全体をリスタートしたりすべてのハードウェアを再初期化したりしないことが記載されている。また、Ｗｉｎｄｏｗｓ（登録商標）は、前回の起動状況やハードウェアの変更情報を参照して、ＢＩＯＳによる初期化を可能な限り簡略化してコンピュータの起動を高速化するFast Bootという機能を備えている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】米国特許第７２１３１３９号公報
【特許文献２】特開２０１０−１２３１２５号
【発明の概要】
【発明が解決しようとする課題】
【０００６】
ＯＳ環境下においてデバイスの動作の安定性を図る上では、ＰＯＳＴでその時点で装着されているすべてのデバイスを対象にして検出、検査および初期化をすることが望ましい。このようにすべてのデバイスの検出、検査および初期化を行うＰＯＳＴを基本ＰＯＳＴということにする。一方で、ＰＯＳＴ時間は、コンピュータの電源が投入されてから使用可能になるまでの待ち時間になるのでできるだけ短いことが望ましい。したがってコンピュータのデバイスが変更、追加、または撤去されて構成が変更されることは一般的に少ないような一般的な状況下で、起動のたびに基本ＰＯＳＴを実行することは好ましくない。
【０００７】
特許文献１または特許文献２に記載されているような、基本ＰＯＳＴを簡略化して短時間でブートを完了するＰＯＳＴ（以下、高速ＰＯＳＴという。）を実行すると、構成が変更されたデバイスの動作が不安定になったりＰＯＳＴがハングアップしたりする可能性がでてくる。デバイスの構成が変更された場合には基本ＰＯＳＴを実行し、構成が変更されていない場合は高速ＰＯＳＴを実行するようにすれば動作の安定性とブート時間の短縮の両立を図ることができる。しかし、従来のＢＩＯＳコードではデバイスの構成が変更されたことを検出することはできない。
【０００８】
特許文献１には、ファースト・スタートアップをディスエーブルに設定してからコンピュータのハウジングを開放してデバイスの構成を変更し、その後起動してデバイスの初期化がされた後にファースト・スタートアップをイネーブルにすれば構成が変更されても問題がないことが記載されている。ただし、もし、ファースト・スタートアップをイネーブルに設定してからハウジングを開放してデバイスの変更をし、その後起動した場合には、ＢＩＯＳチップに格納されたコンテンツが変更されたデバイスに設定されて問題が生ずる可能性があることに言及している。
【０００９】
特許文献１の発明ではこの場合、もし、３回以上再起動できない場合は、ファースト・スタートアップをディスエーブルにしてから起動して再度デバイスの検査および初期化を行い、それ以降にファースト・スタートアップをイネーブルにするようにしている。また、再起動はできるが、デバイスの動作が不安定なときはユーザがファースト・スタートアップをディスエーブルに設定してから再起動したあとにイネーブルに設定するようになっている。
【００１０】
デバイスの中には、無線モジュールのように不適切な場所ではブートの完了時に自動的に動作を開始しないことが望まれるものがある。そのようなデバイスは、ＰＯＳＴの段階で確実に検出して動作を停止させたりパラメータを適切に設定したりすることが望ましい。またＰＯＳＴでエラーが発生したあとに、複数回の再起動を繰り返すとブート遅延につながる場合がある。したがって、高速ＰＯＳＴと基本ＰＯＳＴを併用する場合には、デバイスの構成の変更の有無をＢＩＯＳコードが判断していずれかのＰＯＳＴコードを選択するようにすれば、少ないユーザの負担で動作の安定化とブート時間の短縮の両立を図ることができる。
【００１１】
そこで本発明の目的は、コンピュータに共存する基本ＰＯＳＴと高速ＰＯＳＴの中から適切なＰＯＳＴを選択してパワー・オフ状態からパワー・オン状態に移行する方法を提供することにある。さらに本発明の目的は、動作の安定化とブート時間の短縮の両立を図る方法を提供することにある。さらに本発明の目的は、そのようなＰＯＳＴを実行するコンピュータおよびコンピュータ・プログラムを提供することにある。
【課題を解決するための手段】
【００１２】
本発明は、プロセッサがリセットされてからオペレーティング・システムのロードを開始するまでのＢＩＯＳコードの動作に関する。本発明では、コンピュータの筐体の内部に第１のＰＯＳＴコードと第１のＰＯＳＴコードよりも短い時間で処理を終了することができる第２のＰＯＳＴコードを実装する。第２のＰＯＳＴコードはそれ以前に初期化した際に設定したパラメータを少なくとも一部の内部デバイスにリストアするように構成することができる。あるいは、第２のＰＯＳＴコードは、少なくとも一部の内部デバイスに対する検査と初期化を省略するように構成することができる。
【００１３】
コンピュータは、プロセッサの前回のリセットから今回のリセットまでの間に筐体に収納された内部デバイスに対する物理的なアクセスが行われた可能性を判断する。筐体に収納された内部デバイスに物理的にアクセスするには筐体のカバー蓋を開放する場合があるため、カバー蓋の開放を検出して物理的なアクセスの可能性を判断することができる。その際には、カバー蓋を取り付けるネジが外されたことを判断することができる。
【００１４】
物理的なアクセスの可能性が高いと判断したときには第１のＰＯＳＴコードを実行し、低いと判断したときには第２のＰＯＳＴコードを実行する。このように構成することで、内部デバイスの構成が変更された可能性の高低に応じて適切なＰＯＳＴコードを選択し、デバイスの安定動作とＰＯＳＴ時間の短縮の両立を図ることができる。
【００１５】
本発明では、物理的なアクセスの可能性の判断に対する誤りをコンピュータの電力源の電力供給状態を調べて補完することができる。たとえば誤って物理的なアクセスの可能性が低いと判断した場合に、さらにプロセッサの前回のリセットから今回のリセットまでの間の電力源の電力供給状態を確認する。カバー蓋を開放する際には、ユーザはコンピュータを駆動するすべての電力源を停止して安全を確保してからアクセスするようになっている。電力源が２次電池と交流電源で構成される場合は、すべての電力源を停止するために２次電池を筐体から取り外しかつ交流電源を切断することになる。
【００１６】
したがって、いずれかの電力源が電力供給をしていたと判断したときは内部デバイスの構成が変更された可能性は低いと判断して第２のＰＯＳＴコードを実行することができる。２次電池および交流電源による電力供給は、内部デバイスへのアクセスを目的としない場合にも停止することがある。したがって、２次電池および交流電源がいずれも電力供給を停止したと判断したときに、ただちに第１のＰＯＳＴコードを実行しないで、さらに別の方法で内部デバイスへのアクセスの可能性を判断することが望ましい。
【００１７】
内部デバイスに物理的にアクセスするユーザは、電池パックが完全に放電するのを待たずに電圧が残っている間に急に筐体から外して安全を確保することが一般的である。一方で、電池パックの電圧は交流電源が電力供給をしていない場合には、パワー・オン状態でデバイスに電力を供給したり、パワー・オフ状態で待機電力を供給したりして残容量が低下しクリティカル電圧まで徐々に低下する。そしてクリティカル電圧に到達すると、いずれの場合にもコンピュータのすべての電力源が電力供給を停止することになるが、本発明ではそこに至る経過を調べることで内部デバイスに対するアクセスの可能性を判断することができる。
【００１８】
最初にパワー・オン状態で２次電池の電圧が所定値未満に低下したか否かを判断する。電池駆動でコンピュータの使用を継続した場合には内部デバイスへのアクセスをしない場合にも、パワー・オン状態で２次電池の電圧が所定値未満に低下する。本発明ではパワー・オン状態で２次電池の電圧が所定値未満に低下したと判断した場合は、すべての電力源が電力供給を停止した場合であっても、内部デバイスの構成が変更された可能性は低いといえるので第２のＰＯＳＴコードを実行することができる。
【００１９】
すべての電力源が電力供給を停止し、パワー・オン状態で２次電池の電圧が所定値以上に維持されていると判断したときであっても、ただちに第１のＰＯＳＴコードを実行しないで、さらに内部デバイスへのアクセスの可能性を判断することが望ましい。パワー・オン状態で２次電池の電圧が所定値以上に維持されている場合であっても、ユーザはパワー・オフ状態で急に２次電池を外して内部デバイスにアクセスする場合がある。
【００２０】
２次電池を搭載したコンピュータからＡＣ／ＤＣアダプタを外して長期間放置すると、パワー・オフ状態で２次電池の電圧が所定値まで低下する。したがって、パワー・オフ状態で２次電池の電圧が所定値未満に低下したと判断した場合は、デバイスの構成が変更された可能性は低いといえるので第２のＰＯＳＴコードを実行することができる。さらに、すべての電力源が停止し、かつパワー・オン状態およびパワー・オフ状態のいずれの場合にも２次電池の電圧が所定値以上を維持していたと判断したときは、内部デバイスへのアクセスのために、電圧が所定値未満に低下する前にユーザが２次電池を急に外したと判断して第１のＰＯＳＴコードを実行することができる。
【００２１】
なお、パワー・オフ状態はＡＣＰＩに規定するＧ３ステートを除いたＳ１ステートからＳ５ステートまでのパワー・ステートとすることができる。また、パワー・オン状態で新たな外部デバイスが接続された場合に、ＰＯＳＴコードでの初期化を必要とする場合がある。この場合、新たな外部デバイスが接続されたと判断したときには、第１のＰＯＳＴコードを実行することができる。
【００２２】
本発明では、第１のＰＯＳＴコードを実行する際には、第２のＰＯＳＴコードよりは確実性の高い手順であって、かつ第１のＰＯＳＴコードの完全な実行よりは簡素化した手順を実行することができる。一例として、すべてのデバイスの検査を実行し、デバイスの検査の結果エラーが発生したときにエラーを表示し、エラーが発生しないときにはオペレーティング・システムのロードを開始することができる。エラーが表示されるとユーザは通常何らかの処置をするため、その後再起動されたときに第１のＰＯＳＴコードのすべてを実行することで処置が完了した内部デバイスを初期化することができる。
【発明の効果】
【００２３】
本発明により、コンピュータに共存する基本ＰＯＳＴと高速ＰＯＳＴの中から適切なＰＯＳＴを選択してパワー・オフ状態からパワー・オン状態に移行する方法を提供することができた。さらに本発明により、動作の安定化とＰＯＳＴ時間の短縮の両立を図る方法を提供することができた。さらに本発明により、そのようなＰＯＳＴを実行するコンピュータおよびコンピュータ・プログラムを提供することができた。
【図面の簡単な説明】
【００２４】
【図１】本実施の形態にかかるコンピュータ１０の主要な構成を示す機能ブロック図である。
【図２】ＢＩＯＳ＿ＲＯＭ３３のデータ構造を示す図である。
【図３】ＲＴＣメモリ２２のセット・アップ・データの一部を示す図である。
【図４】開放センサ３９の構成を説明する図である。
【図５】ＥＣ２９の本実施の形態に関連する構成を示す図である。
【図６】ＲＴＣメモリ２２の選択ＰＯＳＴビットがイネーブルに設定され、ＥＥＰＲＯＭ３０の各状態設定ビットが設定される際の手順を示すフローチャートである。
【図７】選択ＰＯＳＴの実行手順を示すフローチャートである。
【図８】選択ＰＯＳＴの実行手順を示すフローチャートである。
【図９】選択ＰＯＳＴの実行手順を示すフローチャートである。
【発明を実施するための形態】
【００２５】
［コンピュータの構成］
図１は、本実施の形態にかかるコンピュータ１０の主要な構成を示す機能ブロック図である。本明細書の全体に渡って、同一の要素には同一の参照番号を付与する。コンピュータ１０は、電池パック４１を搭載し、ＡＣ／ＤＣアダプタ４５の接続が可能なノートブック型携帯式コンピュータ（以下、ノートＰＣという。）とすることができる。ＣＰＵ１１は、インテル（登録商標）のＸ８６シリーズのアーキテクチャを採用し、ＢＩＯＳを実行するリアル・モード（Real Address Mode）とＯＳを実行する保護仮想アドレス・モード（Protected Virtual Address Mode）で動作することができる。保護仮想アドレス・モードは単にプロテクト・モードということもある。
【００２６】
メモリ・コントローラ・ハブ（ＭＣＨ）１３は、メイン・メモリ１５へのアクセス動作を制御するためのメモリ・コントローラ機能、およびＣＰＵ１１と他のデバイスとの間のデータ転送速度の差を吸収するためのデータ・バッファ機能を含むチップ・セットである。ＭＣＨ１３にはＣＰＵ１１、メイン・メモリ１５、グラフィック・プロセッシング・ユニット（ＧＰＵ）１７、およびアイオー・コントローラ・ハブ（ＩＣＨ）２１が接続されている。
【００２７】
メイン・メモリ１５は、ＣＰＵ１１が実行するプログラムやＢＩＯＳコードの読み込み領域、処理データを書き込む作業領域として利用する揮発性のＲＡＭである。ＧＰＵ１７にはＬＣＤ１９が接続されている。ＧＰＵ１７は、ＣＰＵ１１から受け取った描画命令に基づいてＶＲＡＭにイメージを書き込み、所定のタイミングでＬＣＤ１９に画像イメージのデータを送るための専用プロセッサで、グラフィックス・アクセラレータともいう。
【００２８】
ＩＣＨ２１は周辺入出力デバイスに関するデータ転送を処理するチップ・セットである。ＩＣＨ２１は、ＵＳＢ（Universal Serial Bus）、シリアルＡＴＡ（AT Attachment）、ＳＰＩ (Serial Peripheral Interface)バス、 ＰＣＩ（Peripheral Component Interconnect）バス、ＰＣＩ−Ｅｘｐｒｅｓｓバス、およびＬＰＣ（Low Pin Count）などのコントローラを備え、ＨＤＤ２３およびＬＰＣバス２８の他に周辺デバイス２５として記載したＵＳＢコネクタ、無線モジュール、マイクロフォン、スピーカ、およびカメラなどのさまざまなデバイスが接続されている。
【００２９】
ＩＣＨ２１は、内部にＲＴＣ（Real Time Clock）とＲＴＣメモリ２２を含んでいる。ＲＴＣおよびＲＴＣメモリ２２は、ＩＣＨ２１がＤＣ／ＤＣコンバータ３５から電力が供給されないときにボタン電池２７から電力の供給を受けることができる。ＲＴＣメモリ２２は、ＢＩＯＳのセット・アップ・データおよびＲＴＣが生成した時間情報などを記憶する揮発性メモリである。ＨＤＤ２３はブート・ディスクで、コンピュータ１０が起動するときのブート・イメージを格納している。ＬＰＣバス２８には、エンベデッド・コントローラ（ＥＣ）２９およびＢＩＯＳ＿ＲＯＭ３３などの高速なデータ転送を要求しないデバイスが接続される。
【００３０】
ＥＣ２９は、ＣＰＵ、ＲＯＭ、ＥＥＰＲＯＭ、ＤＭＡコントローラ、割り込みコントローラ、およびタイマなどで構成されたマイクロ・コンピュータであり、さらにＡ／Ｄ入力端子、Ｄ／Ａ出力端子、ＳＭバス・ポート、ＳＰＩバス・ポート、およびディジタル入出力端子を備えている。ＥＣ２９はＣＰＵ１１からは独立して動作し、ノートＰＣ１０に実装されるデバイスに供給する電力をパワー・ステートに応じて制御したり、システム筐体の内部の温度を管理したりする。
【００３１】
ＥＣ２９には、電池パック４１、パワー・マネジメント・コントローラ（ＰＭＣ）３１および開放センサ３９が接続されている。電池パック４１は、スマート・バッテリィの規格に準拠しており、ＡＣ／ＤＣアダプタ４５が接続されてないときにＤＣ／ＤＣコンバータ３５に電力を供給する。ＥＣ２９はＳＭバスを通じて電池パック４１から電池の状態に関する情報を取得する。ＡＣ／ＤＣアダプタ４５は、充電器４３に電力を供給して電池パック４１を充電するとともにＤＣ／ＤＣコンバータ３５に電力を供給する。
【００３２】
ＢＩＯＳ＿ＲＯＭ３３は不揮発性で記憶内容の電気的な書き替えが可能なメモリでありＢＩＯＳコードを格納する。ＰＭＣ３１は、ノートＰＣ１０の電力を制御するワイヤード・ロジックのディジタル制御回路（ＡＳＩＣ）である。ＰＭＣ３１は、Ｇ３ビットを記憶するＧ３検出レジスタ３２を含んでいる。ノートＰＣ１０はパワー・ステートに応じた必要な範囲のデバイスに電力を供給するが、ＰＭＣ３１には、Ｇ３ステートを除くすべてのパワー・ステートにおいて電池パック４１またはＡＣ／ＤＣアダプタ４５のいずれかから電力が供給される。
【００３３】
Ｇ３検出レジスタ３２は、ＰＯＳＴ選択コード１０５（図２）により参照される。ＰＯＳＴ選択コード１０５はＧ３検出レジスタ３２を参照した後にＧ３ビットが設定されていないときは設定する。Ｇ３検出レジスタ３２はＰＭＣ３１の電力が停止すると解除される。ＰＭＣ３１の電力が停止するのは、ＡＣ／ＤＣアダプタ４５および電池パック４１がノートＰＣ１０に電力を供給しないときだけなので、ＰＯＳＴ選択コード１０５がＧ３ビットの解除を検出したときは、ノートＰＣ１０が前回の起動から今回の起動までの間にＧ３ステートに遷移したことになる。
【００３４】
ＰＭＣ３１には、起動スイッチ３７およびＤＣ／ＤＣコンバータ３５の制御回路が接続されている。起動スイッチ３７はノートＰＣ１０を起動する際に動作し、ユーザが押下するパワー・ボタンおよび筐体の蓋の開閉を検出するリッド・センサで構成される。ＤＣ／ＤＣコンバータ３５は複数の電圧を出力できるように構成され、パワー・ステートに応じてノートＰＣ１０を構成するデバイスに所定の電圧の電力を供給する。ＰＭＣ３１はＥＣ２９からの指示に基づいてＤＣ／ＤＣコンバータ３３の動作を制御する。
【００３５】
図１に示したデバイスは、ノートＰＣ１０の筐体の中に収納されており、以後これらを内部デバイスということにする。これに対して、ノートＰＣのＵＳＢ端子、ＶＧＡ端子、ｅＳＡＴＡ端子などを通じて接続されるデバイスを外部デバイスということにする。開放センサ３９は、内部デバイスを交換、追加または撤去するときに開放する必要がある筐体またはデバイス・ベイの蓋（以下、カバー蓋という。）が開放されたことを検出し信号をＥＣ２９に出力する。
【００３６】
〔パワー・ステート〕
ノートＰＣ１０は、ＡＣＰＩの規格に適合しており、Ｇ０ステート、Ｇ１ステート、Ｇ２ステート、およびＧ３ステートの４つのグローバル・システム・ステートに遷移することができる。Ｇ０ステートはパワー・ステートとしてのＳ０ステートに相当し、ＣＰＵ１１はアプリケーション・プログラムを実行できる状態となり、周辺デバイスは電力が供給されるが独自の機能に基づいて省電力動作をする。Ｓ０ステートはパワー・オン状態ともいう。Ｇ１ステートはスリーピング・ステートともいわれ、パワー・ステートとしてのＳ１ステートからＳ４ステートに相当する。
【００３７】
Ｓ３ステートはサスペンド状態ともいわれ、メイン・メモリ１５の記憶を保持するために必要なデバイスの電源を除いてほとんどのデバイスの電源が停止する。Ｓ４ステートは、ハイバネーション状態ともいわれ、システムのコンテキストがＨＤＤ２２に記憶されてほとんどのデバイスの電源が停止する。Ｇ２ステートはソフト・オフともいわれるパワー・ステートとしてのＳ５ステートに相当し、システムのコンテキストをＨＤＤ２３に記憶しないでほとんどのデバイスの電源が停止する。Ｇ３ステートは、メカニカル・オフ・ステートともいわれ、ボタン電池２７を除いてノートＰＣ１０の一切の電源は停止する。
【００３８】
Ｇ３ステートのときは、ＡＣ／ＤＣアダプタ４５および電池パック４１がノートＰＣ１０から外されたかあるいはそれらが電力を供給しない状態となり、ノートＰＣ１０にはボタン電池２７以外の電力源が存在しないことになる。本明細書では、ボタン電池２７はノートＰＣ１０の電力源としては扱わず、ＡＣ／ＤＣアダプタ４５および電池パック４１が電力供給を停止したＧ３ステートのときはノートＰＣ１０のすべての電力源が停止したということにする。
【００３９】
Ｇ３ステートはＡＣＰＩの規格に、ノートＰＣ１０の内部デバイスにアクセスするための電気的な安全が確保された状態としても定義されている。本明細書ではＳ１ステートからＳ４ステートまでのスリーピング・ステートおよびＳ５ステートのソフト・オフをＳｘステートということにする。Ｓｘステートはパワー・オフ状態ともいう。本明細書においては、ノートＰＣ１０がＳ１ステート〜Ｓ３ステートからＳ０ステートに遷移して動作状態に至ることをレジュームといい、Ｓ４ステートまたはＳ５ステートからＳ０ステートに遷移して動作状態に至ることをコールド・ブートまたは単にブートということにする。また、ノートＰＣ１０のパワー・ステートをＳｘステートからＳ０ステートに遷移させることを起動ということにする。
【００４０】
なお、図１は本実施の形態を説明するために、本実施の形態に関連する主要なハードウェアの構成および接続関係を簡略化して記載したに過ぎないものである。ここまでの説明で言及した以外にも、ノートＰＣ１０を構成するには多くのデバイスが使われる。しかしそれらは当業者には周知であるので、ここでは詳しく言及しない。図で記載した複数のブロックを１個の集積回路もしくは装置としたり、逆に１個のブロックを複数の集積回路もしくは装置に分割して構成したりすることも、当業者が任意に選択することができる範囲においては本発明の範囲に含まれる。
【００４１】
〔ＢＩＯＳ＿ＲＯＭの構成〕
図２はＢＩＯＳ＿ＲＯＭ３３のデータ構造を示す図である。ＢＩＯＳ＿ＲＯＭ３３は、ＢＩＯＳコードが格納されているＢＩＯＳ領域５１とデータ領域５３を含む。ＢＩＯＳ＿ＲＯＭ３３はＢＩＯＳコードの書き換えに伴うリスクを軽減するためにブート・ブロック方式を採用している。ＢＩＯＳ領域５１はブート・ブロック５５とシステム・ブロック５７に分かれている。ブート・ブロック５５は書き込み保護がされている記憶領域でここに格納されたプログラムまたはコードはＴＰＭ（Trusted Platform Module ）の仕様書に規定するＣＲＴＭ(Core Root of Trust for Measurement）として扱われ特別な権限がないと書き換えができないようになっている。
【００４２】
ブート・ブロック５５には基本デバイス初期化コード１０１、一貫性認証コード１０３、およびＰＯＳＴ選択コード１０５がＣＲＴＭとして格納されている。ＣＲＴＭは、ＢＩＯＳコードの中で一貫性のある部分として構成され、ノートＰＣ１０がブートするときに必ず最初に実行される。ノートＰＣ１０のプラットフォームに関するすべての一貫性の計測は一貫性認証コード１０３により行われる。
【００４３】
ユーザは、ＴＰＭオーナーシップに基づいて許可される操作の中でいくつかの特権的な操作に関しては、フィジカル・プリゼンス（Physical Presence）の認証を求められる。一貫性認証コード１０３はフィジカル・プリゼンスの認証も行う。基本デバイス初期化コード１０１は、ノートＰＣ１０が起動してＳｘステートからＳ０ステートに遷移する際に、メイン・メモリ１５にＢＩＯＳコードをロードして実行を開始するまでに必要なＣＰＵ１１、メイン・メモリ１５およびその他の基本的なデバイスの検出、検査および初期化を必要な範囲で行う。ＰＯＳＴ選択コード１０５は、前回の起動から今回の起動までの間に内部デバイスの構成が変更された可能性を判断して、あらかじめ用意した複数のＰＯＳＴコードの中から適切なＰＯＳＴコードを選択し、ＰＯＳＴ終了後のデバイスの動作の安定化とＰＯＳＴ時間の短縮の両立を図る。
【００４４】
ＰＯＳＴとは、ＳｘステートからＳ０ステートに遷移する際に、ＣＰＵ１１にリセット信号が供給されてから、ＯＳがロードされるまでの期間にＢＩＯＳ＿ＲＯＭ３３に格納されたＰＯＳＴコードがチップ・セットのコントローラにパラメータを設定して使用できる状態にする作業をいう。ＰＯＳＴは、ＣＰＵ１１がリセットされてからＯＳがロードを開始するまでにＢＩＯＳコードが行うすべての処理であったり、あるいはその中からＣＰＵ１１およびメイン・メモリ１３などの基本的なデバイスに対する初期化を除いた処理であったりしてよい。ＰＯＳＴコードが実行を開始してから終了するまでの時間をＰＯＳＴ時間という。
【００４５】
基本ＰＯＳＴコード１０７は、すべての内部デバイスを対象にして検出、検査、および初期化といった完全なＰＯＳＴ処理を行う。基本ＰＯＳコード１０７は、所定のデバイスが検出できないときおよび検査の結果デバイスが正常に動作しないと判断したときにビープ音や画面表示によるエラーを出力する。基本ＰＯＳＴコード１０７は、ＭＣＨ１３およびＩＣＨ２１に接続されているデバイスからパラメータを取得して現在のシステムにおいて最適なパラメータを選択しＭＣＨ１３およびＩＣＨ２１が含むコントローラに設定する。
【００４６】
本明細書においてはこのように内部デバイスを検査してそこから取得した情報に基づいて選択した最適なパラメータをコントローラに設定することを初期化といい、いずれかの場所に保存しておいた過去に設定したパラメータを対応するコントローラに設定することをリストアということにする。リストアは、内部デバイスの検出、検査および最適パラメータの選択のための処理を省略するので初期化に比べて短時間で完了することができるが、デバイスの構成が変更されている場合は動作が不安定になったり、ＰＯＳＴがハングアップしたりする可能性がある。
【００４７】
高速ＰＯＳＴ１コード１０９および高速ＰＯＳＴ２コード１１１はそれぞれ基本ＰＯＳＴよりも少ない手順で高速ＰＯＳＴ１および高速ＰＯＳＴ２を行う。基本ＰＯＳＴコード１０７は、高速ＰＯＳＴ１コード１０９および高速ＰＯＳＴ２コード１１１に比べて実行時間が長い。高速ＰＯＳＴ１は、一例として本発明の出願人が採用するＦａｓｔ  Ｐｏｓｔとすることができる。
【００４８】
Ｆａｓｔ  ＰＯＳＴは、あらかじめ決めておいた一部のデバイスは必ず装着されているという前提に立ってそれらの検出、検査、および最適なパラメータの選択などの処理を省略する手法である。Ｆａｓｔ  ＰＯＳＴの対象としては、ＨＤＤ２３、ＵＳＢデバイス、および無線モジュールなどのような応答時間が長いために初期化に多くの時間を費やす内部デバイスや、動作のタイミングからＯＳが初期化をしても問題がないような内部デバイスなどを選定することができる。Ｆａｓｔ  ＰＯＳＴを実行すると、処理を省略した内部デバイスの構成が変更されていた場合にその動作が不安定になったり、ＰＯＳＴがハングアップしたりすることがある。
【００４９】
高速ＰＯＳＴ２は一例として、最初に基本ＰＯＳＴを実行して設定した最適なパラメータやそのときのデバイスの情報など（以下、パラメータという。）をＢＩＯＳ＿ＲＯＭ３３のデータ領域５３および他の不揮発性の記憶領域に格納しておき、次回のＰＯＳＴの際には、基本的なデバイスを除いて格納しておいたパラメータをリストアすることでＰＯＳＴの時間を短縮する手法を採用することができる。
【００５０】
ここで、Ｓ３ステートからＳ０ステートにレジュームする場合のＰＯＳＴを説明する。起動の際に実行されたＰＯＳＴコードおよびコントローラに設定されたパラメータなどは、Ｓ０ステートにおいてメイン・メモリ１５に記憶される。Ｓ０ステートからＳ３ステートにサスペンドするときには、メイン・メモリ１５に記憶されたＰＯＳＴコードおよびパラメータの記憶が維持される。Ｓ３ステートからＳ０ステートにレジュームするときにはメイン・メモリ１５に記憶されたＰＯＳＴコードを実行して、メイン・メモリ１５に記憶されたパラメータを設定することで短時間にコントローラの設定を完了することができる。なお、レジュームするときも、ブート・ブロック５５に記憶されたＢＩＯＳコードは必ず実行される。
【００５１】
高速ＰＯＳＴ２では、Ｓ３ステートにおいて電池パック４９の電圧が低下したときまたは所定の時間が経過したときなどに、ＯＳが認識しない状態でメイン・メモリ１５に記憶されていたＰＯＳＴコードおよびパラメータを、Ｓ０ステートを経由してＨＤＤ２３またはその他の不揮発性メモリに記憶した後にＳ５ステートに遷移させる。このとき、ＯＳはシステムがＳ３ステートに遷移していると認識している。そして次にＳ５ステートからＳ０ステートに遷移するときには、ＨＤＤ２３に記憶されていたＰＯＳＴコードがＨＤＤ２３に記憶されていたパラメータをコントローラに設定することで短時間に処理を完了することができる。
【００５２】
Ｉ／Ｏコード１１３は、ＣＰＵ１１がリアル・モードで動作する際に周辺デバイスにアクセスするための入出力のインターフェースを提供する。ＢＩＯＳセット・アップ・コード１１５は、ブート・ドライブの選択、各デバイスの機能のイネーブル／ディスエーブル、セキュリティのイネーブル／ディスエーブルなどのような内部デバイスに対する設定をユーザがカスタマイズするためのインターフェースを提供する。ノートＰＣ１０をブートする際に、ＯＳがロードされる前に所定のキーを操作するとＢＩＯＳセット・アップ・コード１１５が実行されて、ＬＣＤ１９にＢＩＯＳ設定画面が表示される。
【００５３】
ユーザが設定したセット・アップ・データは、ＩＣＨ２１内のＲＴＣメモリ２２に記憶される。基本ＰＯＳＴコード１０７、高速ＰＯＳＴコード１０９、および高速ＰＯＳＴコード１１１を実行する際にはＲＴＣメモリ２２に記憶されたセット・アップ・データが参照される。環境ユーティリティ・コード１１７は、ノートＰＣ１０の温度および電力を制御する。認証コード１１９は、パワー・オン・パスワード、ＨＤＤパスワード、および管理者パスワードなどの認証を行う。
【００５４】
なお、本発明はブート・ブロック方式を採用しないＢＩＯＳ＿ＲＯＭ３３、あるいは、ＢＩＯＳ領域の全体をブート・ブロックにしたＢＩＯＳ＿ＲＯＭに適用することもできる。高速ＰＯＳＴ１および高速ＰＯＳＴ２は、いずれも基本ＰＯＳＴよりも手順を簡易化したりまたは基本ＰＯＳＴの一部を省略したりしてより短時間でＯＳのロードを開始できるものであれば他の方式を採用することもできる。ただし、本発明における高速ＰＯＳＴ１および高速ＰＯＳＴ２は、内部デバイスの構成が変更されたときに実行されると、内部デバイスの動作が不安定になったりＰＯＳＴが停止したりする場合があるという特質を備える。
【００５５】
〔ＲＴＣメモリ〕
図３は、ＲＴＣメモリ２２のセット・アップ・データの一部を示す図である。ＲＴＣメモリ２２には、ＢＩＯＳセット・アップ・コード１１５により設定されたセット・アップ・データおよびＲＴＣを利用したスケジュール・ウェイク・アップに関する設定情報や時間情報が記憶される。選択ＰＯＳＴビット１４１は、図６〜図９の手順で実行される選択ＰＯＳＴをイネーブルまたはディスエーブルに設定する項目である。選択ＰＯＳＴビット１４１がイネーブルに設定されたときは、コンピュータが起動すると図７〜図９の手順でＰＯＳＴが実行されるが、ディスエーブルに設定されたときは従来どおり基本ＰＯＳＴだけが実行される。選択ＰＯＳＴビット１４１は、ＰＯＳＴ選択コード１０５が図５のＦＥＴ４６を制御する際に参照される。
【００５６】
Ｓ０高速ＰＯＳＴビット１４３は、図７のブロック３６７の手順で実行する高速ＰＯＳＴの種類を設定する項目である。本実施の形態では、高速ＰＯＳＴ１または高速ＰＯＳＴ２のいずれかを設定する。いずれの高速ＰＯＳＴも設定しないときは、ブロック３６７の手順で基本ＰＯＳＴが実行される。Ｓｘ高速ＰＯＳＴビット１４５は、図７のブロック３７１の手順で実行する高速ＰＯＳＴの種類を設定する項目である。本実施の形態では、高速ＰＯＳＴ１または高速ＰＯＳＴ２のいずれかを設定する。いずれの高速ＰＯＳＴの種類も設定しないときは、ブロック３７１の手順で基本ＰＯＳＴが実行される。完全ＰＯＳＴビット１４７は、図８のブロック４０１の手順で、ブロック４０３とブロック４０５のいずれに移行するかを設定する項目である。
【００５７】
〔開放センサ〕
図４は、開放センサ３９の構成の一例を説明する図である。図４（Ａ）は、ノートＰＣ１０の筐体２０１の底面にカバー蓋２０３が形成されている様子を示す平面図で、図４（Ｂ）は側面図である。ノートＰＣ１０の内部デバイスを交換する際には、カバー蓋２０３を外す必要がある。カバー蓋２０３は、内部デバイスの構成を変更するための物理的なアクセス経路の一例である。物理的なアクセス経路の他の例としては、筐体２０１の側面に形成されたデバイス・ベイの蓋がある。キーボード２０７の内面には、内部にネジが切られたタッピング・ボス２０９が形成されている。カバー蓋２０３はネジ２０５、２０７で筐体２０１に取り付けられる。
【００５８】
ネジ２０５はカバー蓋２０３を筐体２０１に固定する際にタッピング・ボス２０９に結合される。ネジ２０５は、マザー・ボード２１３を貫通している。マザー・ボード２１３には、ネジ２０５が貫通する位置に分割雌ねじ２１１ａ、２１１ｂが取り付けられている。ネジ２０５はタッピング・ボス２０９に結合する際に分割雌ねじ２１１ａ、２１１ｂに結合するようになっている。図４（Ｃ）は、分割雌ねじ２１１ａ、２１１ｂとネジ２０５が結合している状態を示し、図４（Ｄ）は分割雌ねじ２１１a、２１１ｂとネジ２０５が結合してない状態を示す。
【００５９】
ネジ２０７も同じ構造で他のタッピング・ボスと分割雌ねじに結合する。図４（Ｃ）はカバー蓋２０３がシステム筐体２０１に取り付けられた状態を示し、図４（Ｄ）はカバー蓋２０３がシステム筐体２０１から取り外された状態を示しているといえる。分割雌ねじ２１１ｂは電源ラインに接続され、分割雌ネジ２１１ａはグラウンドに接続される。ネジ２０５が結合されている場合は、分割雌ねじ２１１ｂと分割雌ねじ２１１ａが導通して、分割雌ねじ２１１ｂの電位がグラウンド・レベルになり、ネジ２０５が結合されていない場合は分割雌ねじ２１１ｂの電位が電源の電位になる。
【００６０】
開放センサ３９は、この電位の変化を利用してカバー蓋２０３が開放された状態を検出する。開放センサ３９は、図４に示した実施例に限定されない。たとえば、プラスチックで形成されたカバー蓋２０３の内面に導電性の板を張り付け、筐体２０１側に２本の電極を形成して、カバー蓋２０３の装着による電極の導通を検出するようにしてもよい。また、カバー蓋２０３の装着を検出するマイクロ・スイッチやマグネット式のセンサを設けるようにしてもよい。
【００６１】
〔ＥＣの構成〕
図５は、ＥＣ２９の本実施の形態に関連する構成を示す図である。ＥＣ２９は、ＥＥＰＲＯＭ３０およびハードウェア論理回路で構成された開放検出回路１５１を含んでいる。ＥＥＰＲＯＭ３０には、複数の状態設定ビット１５３〜１６１が設定される。ＰＯＳＴ選択コード１０５は、状態設定ビット１５３〜１６１を参照することができる。開放ビット１５３は、カバー蓋２０３が開放された状態を示す。開放検出回路１５１には、ＤＣ／ＤＣコンバータ３５およびボタン電池２７からそれぞれのダイオードを経由したいわゆるワイヤードＯＲ回路で電圧が印加される。
【００６２】
電池パック４１またはＡＣ／ＤＣアダプタ４５が電力を供給する間は、開放検出回路１５１にＤＣ／ＤＣコンバータ４５が電力を供給するが、ノートＰＣ１０がＧ３ステートに遷移したときにはボタン電池２７が電力を供給する。開放センサ３９の一端は開放検出回路１５１に接続され、他端はグラウンドに接続されている。カバー蓋２０３が閉じているときはＤＣ／ＤＣコンバータ３５または、ＲＴＣメモリ２７からグラウンドに電流が流れる。
【００６３】
開放センサ３９の一端の電圧は、カバー蓋２０３が閉じているときはグラウンド・レベルであるが、カバー蓋２０３が開放するとＤＣ／ＤＣコンバータ３５またはボタン電池２７の電圧まで上昇する。開放検出回路１５１はＰＯＳＴ選択コード１０５により指示された以降において開放センサ３９の一端の電圧が所定値まで上昇したときに開放ビット１５３を設定する。ＰＯＳＴ選択コード１０５は開放ビット１５３を参照したあと、もし設定されていた場合は次回の起動時に選択ＰＯＳＴを実行するために解除する。
【００６４】
開放検出回路１５１の電力をボタン電池２７がバック・アップすることで、開放検出回路１５１はＧ３ステートに遷移してからカバー蓋２０３が開放されたときの状態を検出して、開放ビット１５３を設定することができる。ただし、本発明では、開放検出回路１５１の電力がボタン電池２７でバック・アップされないような場合でも、図７のブロック３６３以降の手順により、選択ＰＯＳＴを実行することができる。
【００６５】
ノートＰＣ１０は、パワー・オン状態またはパワー・オフ状態では電池パック４１またはＡＣ／ＤＣアダプタ４５から電力の供給を受けるため、ボタン電池２７は開放検出回路１５１のために消耗しないが、工場から出荷する前のようにＧ３ステートの状態が長く続くと、ボタン電池２７の消耗が激しくなる。不必要なボタン電池２７の消耗を避けるために、ボタン電池２７に接続されたダイオードのカソードには、ＦＥＴ４６が接続されている。ＦＥＴ４６は、ボタン電池２７から電力の供給を受ける制御回路４７で制御される。ＰＯＳＴ選択コード１０５は、ＲＴＣメモリ２２の選択ＰＯＳＴビット１４１がイネーブルに設定されたときは制御回路４７に指示してＦＥＴ４６をオンにし、ディスエーブルに設定されたときはオフにする。
【００６６】
Ｓ０＿ＢＡＴＴ＿ＬｏｗビットとＳｘ＿ＢＡＴＴ＿Ｌｏｗビットは、それぞれ電池パック４１の電圧が所定値（クリティカル電圧）未満に低下して放電を停止する状態になったことを示す。ＥＣ２９は、電池パック４１の電圧が、Ｓ０ステートの間にクリティカル電圧まで低下して放電を停止するときの状態を示すＳ０＿ＢＡＴＴ＿ＬｏｗビットおよびＳｘステートの間にクリティカル電圧まで低下して放電を停止するときの状態を示すＳｘ＿ＢＡＴＴ＿Ｌｏｗビットを設定する。ＰＯＳＴ選択コード１０５は、Ｓ０＿ＢＡＴＴ＿ＬｏｗビットおよびＳｘ＿ＢＡＴＴ＿Ｌｏｗビットを参照した後に、もし設定されていた場合は次回の起動時に選択ＰＯＳＴを実行するために解除する。
【００６７】
ＰｎＰビット１５９は、ＯＳの動作環境下でプラグ・アンド・プレイにより外部デバイスが接続された状態を示す。ＥＣ２９はＳ０ステートの間にプラグ・アンド・プレイにより外部デバイスが接続されたことの通知をＯＳから受け取ったときにはＰｎＰビット１５９を設定する。ＰＯＳＴ選択コード１０５は、ＰｎＰビット１５９を参照した後に、もし設定されていた場合は次回の起動時に選択ＰＯＳＴを実行するために解除する。
【００６８】
ノートＰＣ１０では、ＳｘステートからＳ０ステートに遷移するときに、遷移元のパワー・ステートにより異なった処理が行われる。パワー・ステート・ビット１６１は、ＳｘステートからＳ０ステートに遷移する際の遷移元のパワー・ステートを示す。パワー・ステート・ビット１６１は、ＩＣＨ２１から通知を受けたＥＣ２９がＳ０ステートからＳｘステートに遷移する際に遷移先のパワー・ステートとして設定し、ＳｘステートからＳ０ステートに遷移する際に解除する。
【００６９】
〔選択ＰＯＳＴの手順〕
つぎに、ノートＰＣ１０における選択ＰＯＳＴの実行手順を、図６〜図９のフローチャートを参照して説明する。図６は、ＲＴＣメモリ２２の選択ＰＯＳＴビットがイネーブルに設定され、ＥＥＰＲＯＭ３０の各状態設定ビットが設定される際の手順を示すフローチャートである。図６のブロック３０１では、Ｓ４ステートまたはＳ５ステートのときに、起動スイッチ３７を操作してノートＰＣ１０を起動する。ＥＣ２９はＳ０ステートに遷移させるためにＰＭＣ３１を通じてＤＣ／ＤＣコンバータ３５を動作させる。
【００７０】
ＥＣ２９からＳ０ステートに遷移する信号を受け取ったＩＣＨ２１は、ＣＰＵ１１にリセット信号を送る。リセット信号を受け取ったＣＰＵ１１は、電圧が安定すると内部のキャッシュおよびレジスタを初期化する。ＣＰＵ１１はその後あらかじめ定められたメイン・メモリ１５のアドレス（リセット・ベクタ）にアクセスしてインストラクションをフェッチする。
【００７１】
ノートＰＣ１０がブートするときは、ブート・ブロック５５に格納されたＢＩＯＳコードが所定のアドレスから実行される。ＭＣＨ１３は遷移元のパワー・ステートが、Ｓ４ステートまたはＳ５ステートであると判断して、リセット・ベクタへのアクセスをＢＩＯＳ＿ＲＯＭ３３のブート・ブロック５５に格納された基本デバイス初期化コード１０１のアドレスに切り換える。ＣＰＵ１１は基本デバイス初期化コード１０１をキャッシュに読み出して、メイン・メモリ１５およびＭＣＨ１３などのＢＩＯＳコードを実行するのに必要な基本的なデバイスの検出、検査および初期化をする。
【００７２】
基本デバイス初期化コード１０１は、初期化するためにコントローラに設定したパラメータをデータ領域５３および必要に応じて他の不揮発性メモリに書き込む。つづいて、基本デバイス初期化コード１０１は、ＢＩＯＳ＿ＲＯＭ３３に格納されている所定のコードをメイン・メモリ１５にロードして、メイン・メモリ１５をシャドウＲＡＭとして利用できるようにする。それ以降は、ＣＰＵ１１は、メイン・メモリ１５にアクセスしてＢＩＯＳコードを実行する。
【００７３】
つぎに、一貫性認証コード１０３は、システム・ブロック５７に格納されたＢＩＯＳコードの改変に関する認証を行う。認証が終了するとＰＯＳＴ選択コード１０５が実行される。この時点では、ＲＴＣメモリ２２の選択ＰＯＳＴビット１４１がディスエーブルであるため、図７〜図９に示す手順による選択ＰＯＳＴは実行されない。ＰＯＳＴ選択コード１０５は、Ｇ３検出レジスタ３２にＧ３ビットを設定してＰＭＣ３１に電力が供給されたことを表明する。ブロック３０３では、ＯＳのロードが開始される前にユーザが所定のキーを押下してＢＩＯＳセット・アップ・コード１１５を呼び出してＲＴＣメモリ２２にセット・アップ・データを記憶する。ブロック３０５でユーザが選択ＰＯＳＴビット１４１をイネーブルに設定する。
【００７４】
ブロック３０７では、ユーザが高速ＰＯＳＴの種類を設定する。Ｓ０高速ＰＯＳＴビット１４３およびＳｘ高速ＰＯＳＴビット１４５は、それぞれ図７のブロック３６７、３７１でＰＯＳＴ選択コード１０５が判断する対象となる。内部デバイスにアクセスする可能性はＳ０ステートで行われるよりもＳｘステートで行われる可能性の方が高い。したがって、電池パック４１の電圧がＳ０ステートでクリティカル電圧まで低下したブロック３６５の状態よりも、Ｓｘステートでクリティカル電圧まで低下したブロック３６９の状態の方がより確実なＰＯＳＴをすることが望ましい。よって、ブロック３０７ではユーザがＳ０高速ＰＯＳＴビット１４３にパラメータをリストアする高速ＰＯＳＴ２を設定し、Ｓｘ高速ＰＯＳＴビット１４５に一部の内部デバイスを除いてパラメータを初期化する高速ＰＯＳＴ１を設定する。
【００７５】
ブロック３０９では、ユーザが完全基本ＰＯＳＴビット１４７を設定または解除する。ブロック３１１では、ユーザがセット・アップ・データをＲＴＣメモリ２２に保存してＢＩＯＳセット・アップ・コード１１５を終了すると基本ＰＯＳＴコード１０７が実行される。基本ＰＯＳＴコード１０７は基本デバイス初期化コード１０１で処理されていない残りのすべてのデバイスの検出、検査および初期化を行う。基本ＰＯＳＴコード１０７は、初期化するためにコントローラに設定したパラメータをデータ領域５３および必要に応じて他の不揮発性メモリに書き込む。ブロック３１３では、基本ＰＯＳＴコード１０７に続いてＯＳおよびアプリケーション・プログラムがロードされ実行される。
【００７６】
この時点では、メイン・メモリ１５にはＢＩＯＳコードと、コントローラに設定したパラメータが記憶されている。メイン・メモリ１５の記憶が維持されるＳ１ステート〜Ｓ３ステートからＳ０ステートにレジュームする際に必要なＢＩＯＳコードとパラメータ以外のデータを記憶するメイン・メモリ１５の記憶領域は、一般のプログラムの使用のために開放される。
【００７７】
ブロック３１５では、プラグ・アンド・プレイで新たに外部デバイスが接続されるとＯＳから通知を受けたＥＣ２９がＥＥＰＲＯＭ３０にＰｎＰビット１５９を設定する。さらにＥＣ２９は電池パック４１の電圧がクリティカル電圧まで低下したことを検出するとパワー・ステート・ビット１６１を参照してＳ０＿ＢＡＴＴ＿Ｌｏｗビット１５５を設定する。ブロック３１７では、起動スイッチ３７の操作、ＯＳのインターフェースを通じた操作またはパワー・マネジメントの実行などによりノートＰＣ１０がＳｘステートに遷移する。
【００７８】
ＯＳからＳｘステートへの遷移の準備が完了したことの通知を受け取ったＩＣＨ２１は、遷移先のパワー・ステートをＥＥＰＲＯＭ３０のパワー・ステート・ビット１６１に設定する。Ｓ１ステート〜Ｓ３ステートに遷移する場合は、メイン・メモリ１５の記憶が維持されるため、直近の起動においてメイン・メモリ１５に記憶されたＢＩＯＳコードおよびパラメータのメイン・メモリ１５への記憶が維持される。Ｓ４ステートまたはＳ５ステートに遷移する場合は、メイン・メモリ１５の電源が喪失するのでメイン・メモリ１５に記憶されていたすべてのデータは消失する。
【００７９】
Ｓｘステートに遷移すると、ＣＰＵ１１の動作が停止しさらにパワー・ステートに応じてあらかじめ決められた内部デバイスの電力も停止する。Ｓｘステートの間はノートＰＣ１０の動作は停止しているが、ＡＣ／ＤＣアダプタ４５が接続されているときは、ＥＣ２９は電池パック４１の電圧が待機電力のために所定値まで低下したときに電池パック４１から充電要求を受け取って充電器４３を動作させて充電する。また、ＡＣ／ＤＣアダプタ４５が接続されていないときは、Ｓｘステートにおける待機電力を電池パック４１が供給するために、クリティカル電圧まで低下することがある。ブロック３２１では、Ｓｘステート中に電池パック４１の電圧がクリティカル電圧まで低下したことをＥＣ２９が検出すると、パワー・ステート・ビット１６１を参照してＳｘ＿ＢＡＴＴ＿ＬＯＷビット１５７を設定する。
【００８０】
図７〜図９は、選択ＰＯＳＴの実行手順を示すフローチャートである。ブロック３５１では、ノートＰＣ１０がＳｘステートに遷移しているときに、起動スイッチ３７の操作、ＷＯＬのマジック・パケットの受信、またはスケジュール・ウェイク・アップによるウェイク・アップ時刻の到来などを契機として、ＥＣ２９に起動信号が送られる。ＥＣ２９から起動信号を受け取ったＩＣＨ２１は、ＥＣ２９にＳ０ステートに遷移させるためにすべてのデバイスに電力を供給するように指示し、さらにＣＰＵ１１にリセット信号を送る。
【００８１】
リセット信号を受け取ったＣＰＵ１１は、メイン・メモリ１５のリセット・ベクタにアクセスする。ＭＣＨ１３はＣＰＵ１１のリセット・ベクタへのアクセスをＢＩＯＳ＿ＲＯＭのブート・ブロック５５に記憶されている基本デバイス初期化コード１０１のアドレスに切り換える。基本デバイスの初期化を終了した基本デバイス初期化コード１０１は、ブロック３５５でＥＥＰＲＯＭ３０のパワー・ステート・ビット１６１を参照して遷移元のパワー・ステートを判断する。遷移元のパワー・ステートがＳ１ステート〜Ｓ３ステートの場合は、メイン・メモリ１５に前回の起動のときに実行されたＰＯＳＴコードおよびパラメータが記憶されているので、ブロック３５７に移行してＣＰＵ１１のアクセス先をメイン・メモリ１５のＰＯＳＴコードが記憶されているアドレスに切り換える。
【００８２】
ブロック３５７では、メイン・メモリ１５に記憶されていたＰＯＳＴコードが同じくメイン・メモリ１５に記憶されていたデバイス情報とパラメータに基づいてコントローラの設定をする。この作業は、デバイスの検出、検査、および最適なパラメータの選択などを省略するため短いＰＯＳＴ時間でＯＳをロードする状態に移行することができる。なお、前回の起動のときに選択ＰＯＳＴビット１４１がイネーブルに設定されていれば、ＰＯＳＴ選択コード１０５が実行されブロック３５９からの手順で内部デバイスへの物理的なアクセスの可能性がある場合に基本ＰＯＳＴコード１０７が実行される。
【００８３】
ブロック３５５で基本デバイス初期化コード１０１が、遷移元のパワー・ステートがＳ４ステートまたはＳ５ステートであると判断したときは、その後ブロック３０１と同様の手順でブート・ブロック５５のＢＩＯＳコードを順番に実行してブロック３５９に移行する。今回は、ＲＴＣメモリ２２の選択ＰＯＳＴビット１４１がイネーブルに設定されているため、ＣＰＵ１１はＰＯＳＴ選択コード１０５を完全に実行する。ブロック３５９では、ＰＯＳＴ選択コード１０５が、ＥＥＰＲＯＭ３０のＰｎＰビット１５９を確認する。
【００８４】
ＯＳの動作環境下で新たに接続された外部デバイスは、ＯＳが初期化またはリストアすればよいので基本的にＰＯＳＴの対象から外すことができるが、外部デバイスが最優先のブート・デバイスに設定されたＵＳＢデバイスのような場合には、ＢＩＯＳコードがこれを初期化することが望ましい。ＰｎＰビット１５９が設定されているときは、基本ＰＯＳＴの実行を原則とするノードＡの手順に移行し、ＰｎＰビット１５９が設定されていないときはブロック３６１に移行することができる。なお、プラグ・アンド・プレイにより装着された外部デバイスの設定はＯＳがすべて行うものとして、ブロック３５９の判断を省略してもよい。
【００８５】
ブロック３６１ではＰＯＳＴ選択コード１０５がＥＥＰＲＯＭ３０の開放ビット１５３を参照して、前回の起動から今回の起動までの間にカバー蓋２０３が開放されたことがあるか否かを判断する。ＰＯＳＴ選択コード１０５は、開放ビット１５３の参照が終了すると開放ビット１５３を解除した後に、それ以降に開放センサ３９がカバー蓋２０３の開放を示したときに開放ビット１５３を設定するように開放検出回路１５１を制御する。
【００８６】
開放ビット１５３が設定されているときは交換、追加、または撤去などによる内部デバイスの構成の変更が行われた可能性が高いので、ノードＡの手順に移行する。開放ビット１５３が設定されていないときは、カバー蓋２０３が物理的に開放されていないため内部デバイスの構成が変更された可能性は極めて低いと考えられ、高速ＰＯＳＴ１または高速ＰＯＳＴ２を実行しても動作の不安定を招くようなことはないといえる。
【００８７】
しかし、カバー蓋２０３の開放を検出するための開放検出回路１５１の電源をボタン電池２７でバック・アップしない方法を採用する場合やボタン電池２７が消耗した場合には、Ｇ３ステートに遷移してからカバー蓋２０３が開放された状態を開放検出回路１５１が検出できなくなる。さらに、ボタン電池２７の電圧は維持されていても開放センサ３９または開放検出回路１５１が正常に動作しないためにカバー蓋２０３の開放を正しく検出できない場合もあり得る。さらにカバー蓋２０３が開放しないで交換できる形態で内部デバイスが実装される場合もある。
【００８８】
本実施の形態では、カバー蓋２０３が開放されていないと判断した場合にただちに高速ＰＯＳＴ１または高速ＰＯＳＴ２を実行しないで、内部デバイスへのアクセスの可能性をさらに判断して信頼性の高い基本ＰＯＳＴを実行する必要性の有無を判断する。ここで、ノートＰＣ１０のメインテナンス・マニュアルでは、内部デバイスの構成を変更する際には、電池パック４１およびＡＣ／ＤＣアダプタ４５を取り外して電気的に安全なＧ３ステートにしてから筐体を開放するように定めている。
【００８９】
本実施の形態ではユーザがメインテナンス・マニュアルに従って内部デバイスにアクセスする蓋然性を利用して、カバー蓋２０３の開放を検出しない場合に、ブロック３６３、３６５、３６９の手順を実行してノートＰＣ１０がＧ３ステートに遷移したか否かおよびＧ３ステートに遷移した理由が内部デバイスへのアクセスを目的としていたか否かを判断する。ブロック３６３では、ＰＯＳＴ選択コード１０５はＰＭＣ３１のＧ３検出レジスタ３２を参照して、前回の起動から今回の起動までの間にノートＰＣ１０がＧ３ステートに遷移したか否かを確認する。レジスタ３２のＧ３ビットが解除されている場合は、Ｇ３ステートに遷移したことになるのでブロック３６５に移行する。なお、Ｇ３ビットが解除されていることを確認したあとには、ＰＯＳＴ選択コード１０５は、次回の選択ＰＯＳＴのためにＧ３ビットを設定する。
【００９０】
Ｇ３ビットが設定されているときは、ノートＰＣ１０の電池パック４１またはＡＣ／ＤＣアダプタ４５の少なくともいずれかは電力源として接続されていたことになり、内部デバイスの構成が変更された可能性は低いので、高速ブートを基本とするノードＢの手順に移行する。ところでノートＰＣ１０がＧ３ステートに遷移するのは、ユーザが内部デバイスを交換するために、ＡＣ／ＤＣアダプタ４５と電池パック４１を取り外す場合に限らない。ノートＰＣ１０が電池駆動の状態で使用されているときに電池パック４１の電圧がクリティカル電圧まで低下すると、電池パック４１は出力を停止するためノートＰＣ１０はＧ３ステートに遷移する。
【００９１】
また、ノートＰＣ１０がＳｘステートに遷移しているときであってもＡＣ／ＤＣアダプタ４５が接続されていないときは、待機電力の消費で電池パック４１の電圧がクリティカル電圧まで低下してＧ３ステートに遷移する場合がある。このように電池パック４１の電圧がクリティカル電圧まで低下したことによるＧ３ステートへの遷移は、内部デバイスのアクセスとは無関係に起こり得る現象である。
【００９２】
ブロック３６５でＰＯＳＴ選択コード１０５は、Ｓ０＿ＢＡＴＴ＿Ｌｏｗビット１５５を確認する。Ｓ０＿ＢＡＴＴ＿Ｌｏｗビット１５５が設定されているときは電池パック４１の電圧がＳ０ステートで徐々にクリティカル電圧まで低下してＧ３ステートに遷移したことを意味し、内部デバイスにアクセスした可能性は低いといえるためブロック３６７に移行する。ブロック３６５でＳ０＿ＢＡＴＴ＿Ｌｏｗビット１５５が設定されていないときは、突然電池パック４１が外されて内部デバイスへのアクセスがされた可能性もあるが、Ｓｘステートで徐々にクリティカル電圧まで低下してＧ３ステートに遷移した可能性も残るためさらにブロック３６９に移行する。
【００９３】
ブロック３６９でＰＯＳＴ選択コード１０５は、Ｓｘ＿ＢＡＴＴ＿Ｌｏｗビット１５７を確認する。Ｓｘ＿ＢＡＴＴ＿Ｌｏｗビット１５７が設定されているときはＳｘステートで電池パック４１の電圧が徐々にクリティカル電圧まで低下してＧ３ステートに遷移したことを意味し、内部デバイスにアクセスした可能性は低いといえるためブロック３７１に移行する。ブロック３６９でＳｘ＿ＢＡＴＴ＿Ｌｏｗビット１５７が設定されていないときは、ブロック３６１からブロック３６９までのパスに基づいて判断すれば突然電池パック４１が外された可能性が高い。そして、突然電池パック４１が外された場合は、内部デバイスにアクセスがあった可能性が高いのでノートＡに移行する。
【００９４】
ブロック３６７とブロック３７１は、いずれも電池パック４１の電圧がクリティカル電圧まで低下したときに、基本ＰＯＳＴ、高速ＰＯＳＴ１または高速ＰＯＳＴ２のいずれを実行するかを選択する手順を示す。ＰＯＳＴ選択コード１０５は、ブロック３６７でＲＴＣメモリ２２のＳ０高速ＰＯＳＴビット１４３を参照し、ブロック３７１でＳｘ高速ＰＯＳＴビット１４５を参照してノードＡまたはノードＢのいずれを実行するかを選択する。
【００９５】
図８は、基本ＰＯＳＴの実行を原則とする手順を示すフローチャートである。図７の手順で示したように基本ＰＯＳＴコード１０７は、内部デバイスの構成が変更された可能性が高いときに実行される。基本ＰＯＳＴコード１０７を実行する場合には、構成が変更された内部デバイスをできるだけ短時間で検出してその検査と初期化を終了できることが望ましい。そのために、基本ＰＯＳＴコード１０７を実行する場合にもいくつかの手順を省略して行うことができる。
【００９６】
ブロック４０１では、ＰＯＳＴ選択コード１０５から基本ＰＯＳＴコード１０７に動作が移る。基本ＰＯＳＴコード１０７は、最初にＲＴＣメモリ２２の完全基本ＰＯＳＴビット１４７を確認する。完全基本ＰＯＳＴビット１４７が設定されている場合は、ブロック４０３に移行して基本ＰＯＳＴコード１０７をすべて実行してデバイスの検出、検査、および初期化を行い、その後ブロック４１７に移行してＯＳをロードする。
【００９７】
ブロック４０１で完全基本ＰＯＳＴビット１４７が設定されていないときは、ブロック４０５ですべての内部デバイスに対して検査だけを行う。ブロック４０７で基本ＰＯＳＴコード１０７は、すべての内部デバイスを検査してエラーが発生しない場合は、ブロック４０９に移行して、データ領域５３に記憶されていたパラメータをリストアしてからブロック４１７に移行する。ブロック４０７でエラーが発生したときは、ブロック４１１に移行して完全基本ＰＯＳＴビット１４７を設定しユーザにエラーを表示する。
【００９８】
ブロック４１３では、ユーザはカバー蓋２０３を開放して、構成を変更した内部デバイスに異常があれば処置をして再起動する。その後は、ブロック３５１からの手順が開始される。そして、ブロック４０１では、完全基本ＰＯＳＴビット１４７が設定されているためブロック４０３で基本ＰＯＳＴコード１０７が完全に実行される。
【００９９】
図９は、高速ＰＯＳＴを実行する手順を示すフローチャートである。ブロック４５３では、ＰＯＳＴ選択コード１０５から図７のブロック３６７、３７１で選択された高速ＰＯＳＴコード１０９または１１１に動作が移る。高速ＰＯＳＴ１コード１０９に動作が移った場合は、ブロック４５７で所定のデバイスに対して検査と初期化が行われる。ブロック４５９で高速ＰＯＳＴ１コード１０９がエラーを検出したときはブロック４５１に移行する。ブロック４５１では、基本ＰＯＳＴコード１０７に動作が移り、基本ＰＯＳＴコード１０７が完全に実行されてからブロック４５５に移行する。
【０１００】
ブロック４５９でエラーが検出されないときは、ブロック４５５に移行する。ブロック４５５では、ＯＳおよびアプリケーション・プログラムがロードされる。ブロック４５３で高速ＰＯＳＴ２コード１１１に動作が移った場合は、ブロック４５３でメイン・メモリ１５、データ領域５３またはＨＤＤ２３などに記憶されていたパラメータがリストアされてブロック４５５に移行する。
【０１０１】
図７のブロック３６３、３６５、３６７の手順は、ブロック３６１において実際にカバー蓋２０３が開放されたにもかかわらず開放検出回路１５１がそれを検出しないという誤りを補完する意義がある。これは図５に示したカバー蓋２０３の開放を検出する回路の構造では、実際にネジ２０５が結合しているにもかかわらず結合していないという出力をする可能性が小さいためである。本発明では開放検出回路１５１が、カバー蓋２０３が閉じているにもかかわらず、開放したと出力する誤りを図７のブロック３６３、３６５、３６７の手順を利用して補完することもできる。
【０１０２】
具体的には、ブロック３６１でカバー蓋２０３が開放したと判断したときにただちにノードＡに移行しないで、ブロック３６３からブロック３７１までのパスに移行する。そして、ブロック３６７、３６９、３７１を経由してノートＡに移行するようにすれば、カバー蓋２０３が開放したと判断する誤りを前回の起動から今回の起動までの間のＧ３ステートへの遷移の有無および電池パック４１の状態を判断して補完することができる。
【０１０３】
これまで本発明について図面に示した特定の実施の形態をもって説明してきたが、本発明は図面に示した実施の形態に限定されるものではなく、本発明の効果を奏する限り、これまで知られたいかなる構成であっても採用することができることはいうまでもないことである。
【符号の説明】
【０１０４】
１０…ノートＰＣ
２２…ＲＴＣメモリ
２９…エンベデッド・コントローラ
３０…ＥＥＰＲＯＭ
３３…ＢＩＯＳ＿ＲＯＭ
３９…開放センサ
５１…ＢＩＯＳ領域
５３…データ領域
５５…ブート・ブロック
５７…システム・ブロック
【図１】
0005378451.tif 000002
【図２】
0005378451.tif 000003
【図３】
0005378451.tif 000004
【図４】
0005378451.tif 000005
【図５】
0005378451.tif 000006
【図６】
0005378451.tif 000007
【図７】
0005378451.tif 000008
【図８】
0005378451.tif 000009
【図９】
0005378451.tif 000010