説明

起動時の信頼性とPOST時間の短縮を図る方法およびコンピュータ

【課題】動作の安定化とPOST時間の短縮の両立を図ったコンピュータの起動方法を提供する。
【解決手段】BIOS_ROM33は第1のPOSTコードと第1のPOSTコードよりも短い時間で処理を終了する第2のPOSTコードを格納する。プロセッサ11がリセットされてからOSのロードを開始するまでの間に、開放センサ39がカバー蓋の開放の有無を検出して内部デバイスに対する物理的なアクセスが行われた可能性を判断する。物理的なアクセスの可能性が高いと判断したときに第1のPOSTコードを実行し、物理的なアクセスの可能性が低いと判断したときに第2のPOSTコードを実行する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明はコンピュータを起動する際のPOST時間の短縮と動作の安定性の両立を図る技術に関する。
【背景技術】
【0002】
コンピュータは、電源が投入されるとオペレーティング・システム(OS)がメイン・メモリにロードされる前に、BIOS_ROMに格納されたBIOSコードが実行される。BIOSコードは、コンピュータに搭載されているデバイスを検出して、検査および初期化を行うPOST(Power On Self Test)コードを含む。プロセッサ(CPU)は、リセットされるとOSのロードを開始する前にPOSTコードを実行する。
【0003】
特許文献1は、POSTを短時間で終了するためのファースト・スタートアップの方法について開示する。ユーザはファースト・スタートアップをディスエーブルにしてからシステムのハウジングを開放してコンフィグレーションを変更する。その後パワー・オンされるとファースト・スタートアップがイネーブルに設定される。今回のスタートアップがイネーブルに設定されたあとの最初のスタートアップのときはノーマル・スタートアップを実行しそのときに設定したコンテンツをBIOSチップに格納する。最初のスタートアップでない場合は、BIOSチップに格納されたパラメータをコントローラのレジスタに設定することでPOST時間を短縮する。
【0004】
特許文献2は、新しいソフトウェアをロードしたときにOSがレジストリ・キーを更新したりOS環境をリスタートしたりするために行うプラットフォームのリスタートを短時間で終了する方法を開示する。同文献には、プラットフォームに対してハードウェアの変更がないことを検出したときは、プラットフォームの全体をリスタートしたりすべてのハードウェアを再初期化したりしないことが記載されている。また、Windows(登録商標)は、前回の起動状況やハードウェアの変更情報を参照して、BIOSによる初期化を可能な限り簡略化してコンピュータの起動を高速化するFast Bootという機能を備えている。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】米国特許第7213139号公報
【特許文献2】特開2010−123125号
【発明の概要】
【発明が解決しようとする課題】
【0006】
OS環境下においてデバイスの動作の安定性を図る上では、POSTでその時点で装着されているすべてのデバイスを対象にして検出、検査および初期化をすることが望ましい。このようにすべてのデバイスの検出、検査および初期化を行うPOSTを基本POSTということにする。一方で、POST時間は、コンピュータの電源が投入されてから使用可能になるまでの待ち時間になるのでできるだけ短いことが望ましい。したがってコンピュータのデバイスが変更、追加、または撤去されて構成が変更されることは一般的に少ないような一般的な状況下で、起動のたびに基本POSTを実行することは好ましくない。
【0007】
特許文献1または特許文献2に記載されているような、基本POSTを簡略化して短時間でブートを完了するPOST(以下、高速POSTという。)を実行すると、構成が変更されたデバイスの動作が不安定になったりPOSTがハングアップしたりする可能性がでてくる。デバイスの構成が変更された場合には基本POSTを実行し、構成が変更されていない場合は高速POSTを実行するようにすれば動作の安定性とブート時間の短縮の両立を図ることができる。しかし、従来のBIOSコードではデバイスの構成が変更されたことを検出することはできない。
【0008】
特許文献1には、ファースト・スタートアップをディスエーブルに設定してからコンピュータのハウジングを開放してデバイスの構成を変更し、その後起動してデバイスの初期化がされた後にファースト・スタートアップをイネーブルにすれば構成が変更されても問題がないことが記載されている。ただし、もし、ファースト・スタートアップをイネーブルに設定してからハウジングを開放してデバイスの変更をし、その後起動した場合には、BIOSチップに格納されたコンテンツが変更されたデバイスに設定されて問題が生ずる可能性があることに言及している。
【0009】
特許文献1の発明ではこの場合、もし、3回以上再起動できない場合は、ファースト・スタートアップをディスエーブルにしてから起動して再度デバイスの検査および初期化を行い、それ以降にファースト・スタートアップをイネーブルにするようにしている。また、再起動はできるが、デバイスの動作が不安定なときはユーザがファースト・スタートアップをディスエーブルに設定してから再起動したあとにイネーブルに設定するようになっている。
【0010】
デバイスの中には、無線モジュールのように不適切な場所ではブートの完了時に自動的に動作を開始しないことが望まれるものがある。そのようなデバイスは、POSTの段階で確実に検出して動作を停止させたりパラメータを適切に設定したりすることが望ましい。またPOSTでエラーが発生したあとに、複数回の再起動を繰り返すとブート遅延につながる場合がある。したがって、高速POSTと基本POSTを併用する場合には、デバイスの構成の変更の有無をBIOSコードが判断していずれかのPOSTコードを選択するようにすれば、少ないユーザの負担で動作の安定化とブート時間の短縮の両立を図ることができる。
【0011】
そこで本発明の目的は、コンピュータに共存する基本POSTと高速POSTの中から適切なPOSTを選択してパワー・オフ状態からパワー・オン状態に移行する方法を提供することにある。さらに本発明の目的は、動作の安定化とブート時間の短縮の両立を図る方法を提供することにある。さらに本発明の目的は、そのようなPOSTを実行するコンピュータおよびコンピュータ・プログラムを提供することにある。
【課題を解決するための手段】
【0012】
本発明は、プロセッサがリセットされてからオペレーティング・システムのロードを開始するまでのBIOSコードの動作に関する。本発明では、コンピュータの筐体の内部に第1のPOSTコードと第1のPOSTコードよりも短い時間で処理を終了することができる第2のPOSTコードを実装する。第2のPOSTコードはそれ以前に初期化した際に設定したパラメータを少なくとも一部の内部デバイスにリストアするように構成することができる。あるいは、第2のPOSTコードは、少なくとも一部の内部デバイスに対する検査と初期化を省略するように構成することができる。
【0013】
コンピュータは、プロセッサの前回のリセットから今回のリセットまでの間に筐体に収納された内部デバイスに対する物理的なアクセスが行われた可能性を判断する。筐体に収納された内部デバイスに物理的にアクセスするには筐体のカバー蓋を開放する場合があるため、カバー蓋の開放を検出して物理的なアクセスの可能性を判断することができる。その際には、カバー蓋を取り付けるネジが外されたことを判断することができる。
【0014】
物理的なアクセスの可能性が高いと判断したときには第1のPOSTコードを実行し、低いと判断したときには第2のPOSTコードを実行する。このように構成することで、内部デバイスの構成が変更された可能性の高低に応じて適切なPOSTコードを選択し、デバイスの安定動作とPOST時間の短縮の両立を図ることができる。
【0015】
本発明では、物理的なアクセスの可能性の判断に対する誤りをコンピュータの電力源の電力供給状態を調べて補完することができる。たとえば誤って物理的なアクセスの可能性が低いと判断した場合に、さらにプロセッサの前回のリセットから今回のリセットまでの間の電力源の電力供給状態を確認する。カバー蓋を開放する際には、ユーザはコンピュータを駆動するすべての電力源を停止して安全を確保してからアクセスするようになっている。電力源が2次電池と交流電源で構成される場合は、すべての電力源を停止するために2次電池を筐体から取り外しかつ交流電源を切断することになる。
【0016】
したがって、いずれかの電力源が電力供給をしていたと判断したときは内部デバイスの構成が変更された可能性は低いと判断して第2のPOSTコードを実行することができる。2次電池および交流電源による電力供給は、内部デバイスへのアクセスを目的としない場合にも停止することがある。したがって、2次電池および交流電源がいずれも電力供給を停止したと判断したときに、ただちに第1のPOSTコードを実行しないで、さらに別の方法で内部デバイスへのアクセスの可能性を判断することが望ましい。
【0017】
内部デバイスに物理的にアクセスするユーザは、電池パックが完全に放電するのを待たずに電圧が残っている間に急に筐体から外して安全を確保することが一般的である。一方で、電池パックの電圧は交流電源が電力供給をしていない場合には、パワー・オン状態でデバイスに電力を供給したり、パワー・オフ状態で待機電力を供給したりして残容量が低下しクリティカル電圧まで徐々に低下する。そしてクリティカル電圧に到達すると、いずれの場合にもコンピュータのすべての電力源が電力供給を停止することになるが、本発明ではそこに至る経過を調べることで内部デバイスに対するアクセスの可能性を判断することができる。
【0018】
最初にパワー・オン状態で2次電池の電圧が所定値未満に低下したか否かを判断する。電池駆動でコンピュータの使用を継続した場合には内部デバイスへのアクセスをしない場合にも、パワー・オン状態で2次電池の電圧が所定値未満に低下する。本発明ではパワー・オン状態で2次電池の電圧が所定値未満に低下したと判断した場合は、すべての電力源が電力供給を停止した場合であっても、内部デバイスの構成が変更された可能性は低いといえるので第2のPOSTコードを実行することができる。
【0019】
すべての電力源が電力供給を停止し、パワー・オン状態で2次電池の電圧が所定値以上に維持されていると判断したときであっても、ただちに第1のPOSTコードを実行しないで、さらに内部デバイスへのアクセスの可能性を判断することが望ましい。パワー・オン状態で2次電池の電圧が所定値以上に維持されている場合であっても、ユーザはパワー・オフ状態で急に2次電池を外して内部デバイスにアクセスする場合がある。
【0020】
2次電池を搭載したコンピュータからAC/DCアダプタを外して長期間放置すると、パワー・オフ状態で2次電池の電圧が所定値まで低下する。したがって、パワー・オフ状態で2次電池の電圧が所定値未満に低下したと判断した場合は、デバイスの構成が変更された可能性は低いといえるので第2のPOSTコードを実行することができる。さらに、すべての電力源が停止し、かつパワー・オン状態およびパワー・オフ状態のいずれの場合にも2次電池の電圧が所定値以上を維持していたと判断したときは、内部デバイスへのアクセスのために、電圧が所定値未満に低下する前にユーザが2次電池を急に外したと判断して第1のPOSTコードを実行することができる。
【0021】
なお、パワー・オフ状態はACPIに規定するG3ステートを除いたS1ステートからS5ステートまでのパワー・ステートとすることができる。また、パワー・オン状態で新たな外部デバイスが接続された場合に、POSTコードでの初期化を必要とする場合がある。この場合、新たな外部デバイスが接続されたと判断したときには、第1のPOSTコードを実行することができる。
【0022】
本発明では、第1のPOSTコードを実行する際には、第2のPOSTコードよりは確実性の高い手順であって、かつ第1のPOSTコードの完全な実行よりは簡素化した手順を実行することができる。一例として、すべてのデバイスの検査を実行し、デバイスの検査の結果エラーが発生したときにエラーを表示し、エラーが発生しないときにはオペレーティング・システムのロードを開始することができる。エラーが表示されるとユーザは通常何らかの処置をするため、その後再起動されたときに第1のPOSTコードのすべてを実行することで処置が完了した内部デバイスを初期化することができる。
【発明の効果】
【0023】
本発明により、コンピュータに共存する基本POSTと高速POSTの中から適切なPOSTを選択してパワー・オフ状態からパワー・オン状態に移行する方法を提供することができた。さらに本発明により、動作の安定化とPOST時間の短縮の両立を図る方法を提供することができた。さらに本発明により、そのようなPOSTを実行するコンピュータおよびコンピュータ・プログラムを提供することができた。
【図面の簡単な説明】
【0024】
【図1】本実施の形態にかかるコンピュータ10の主要な構成を示す機能ブロック図である。
【図2】BIOS_ROM33のデータ構造を示す図である。
【図3】RTCメモリ22のセット・アップ・データの一部を示す図である。
【図4】開放センサ39の構成を説明する図である。
【図5】EC29の本実施の形態に関連する構成を示す図である。
【図6】RTCメモリ22の選択POSTビットがイネーブルに設定され、EEPROM30の各状態設定ビットが設定される際の手順を示すフローチャートである。
【図7】選択POSTの実行手順を示すフローチャートである。
【図8】選択POSTの実行手順を示すフローチャートである。
【図9】選択POSTの実行手順を示すフローチャートである。
【発明を実施するための形態】
【0025】
[コンピュータの構成]
図1は、本実施の形態にかかるコンピュータ10の主要な構成を示す機能ブロック図である。本明細書の全体に渡って、同一の要素には同一の参照番号を付与する。コンピュータ10は、電池パック41を搭載し、AC/DCアダプタ45の接続が可能なノートブック型携帯式コンピュータ(以下、ノートPCという。)とすることができる。CPU11は、インテル(登録商標)のX86シリーズのアーキテクチャを採用し、BIOSを実行するリアル・モード(Real Address Mode)とOSを実行する保護仮想アドレス・モード(Protected Virtual Address Mode)で動作することができる。保護仮想アドレス・モードは単にプロテクト・モードということもある。
【0026】
メモリ・コントローラ・ハブ(MCH)13は、メイン・メモリ15へのアクセス動作を制御するためのメモリ・コントローラ機能、およびCPU11と他のデバイスとの間のデータ転送速度の差を吸収するためのデータ・バッファ機能を含むチップ・セットである。MCH13にはCPU11、メイン・メモリ15、グラフィック・プロセッシング・ユニット(GPU)17、およびアイオー・コントローラ・ハブ(ICH)21が接続されている。
【0027】
メイン・メモリ15は、CPU11が実行するプログラムやBIOSコードの読み込み領域、処理データを書き込む作業領域として利用する揮発性のRAMである。GPU17にはLCD19が接続されている。GPU17は、CPU11から受け取った描画命令に基づいてVRAMにイメージを書き込み、所定のタイミングでLCD19に画像イメージのデータを送るための専用プロセッサで、グラフィックス・アクセラレータともいう。
【0028】
ICH21は周辺入出力デバイスに関するデータ転送を処理するチップ・セットである。ICH21は、USB(Universal Serial Bus)、シリアルATA(AT Attachment)、SPI (Serial Peripheral Interface)バス、 PCI(Peripheral Component Interconnect)バス、PCI−Expressバス、およびLPC(Low Pin Count)などのコントローラを備え、HDD23およびLPCバス28の他に周辺デバイス25として記載したUSBコネクタ、無線モジュール、マイクロフォン、スピーカ、およびカメラなどのさまざまなデバイスが接続されている。
【0029】
ICH21は、内部にRTC(Real Time Clock)とRTCメモリ22を含んでいる。RTCおよびRTCメモリ22は、ICH21がDC/DCコンバータ35から電力が供給されないときにボタン電池27から電力の供給を受けることができる。RTCメモリ22は、BIOSのセット・アップ・データおよびRTCが生成した時間情報などを記憶する揮発性メモリである。HDD23はブート・ディスクで、コンピュータ10が起動するときのブート・イメージを格納している。LPCバス28には、エンベデッド・コントローラ(EC)29およびBIOS_ROM33などの高速なデータ転送を要求しないデバイスが接続される。
【0030】
EC29は、CPU、ROM、EEPROM、DMAコントローラ、割り込みコントローラ、およびタイマなどで構成されたマイクロ・コンピュータであり、さらにA/D入力端子、D/A出力端子、SMバス・ポート、SPIバス・ポート、およびディジタル入出力端子を備えている。EC29はCPU11からは独立して動作し、ノートPC10に実装されるデバイスに供給する電力をパワー・ステートに応じて制御したり、システム筐体の内部の温度を管理したりする。
【0031】
EC29には、電池パック41、パワー・マネジメント・コントローラ(PMC)31および開放センサ39が接続されている。電池パック41は、スマート・バッテリィの規格に準拠しており、AC/DCアダプタ45が接続されてないときにDC/DCコンバータ35に電力を供給する。EC29はSMバスを通じて電池パック41から電池の状態に関する情報を取得する。AC/DCアダプタ45は、充電器43に電力を供給して電池パック41を充電するとともにDC/DCコンバータ35に電力を供給する。
【0032】
BIOS_ROM33は不揮発性で記憶内容の電気的な書き替えが可能なメモリでありBIOSコードを格納する。PMC31は、ノートPC10の電力を制御するワイヤード・ロジックのディジタル制御回路(ASIC)である。PMC31は、G3ビットを記憶するG3検出レジスタ32を含んでいる。ノートPC10はパワー・ステートに応じた必要な範囲のデバイスに電力を供給するが、PMC31には、G3ステートを除くすべてのパワー・ステートにおいて電池パック41またはAC/DCアダプタ45のいずれかから電力が供給される。
【0033】
G3検出レジスタ32は、POST選択コード105(図2)により参照される。POST選択コード105はG3検出レジスタ32を参照した後にG3ビットが設定されていないときは設定する。G3検出レジスタ32はPMC31の電力が停止すると解除される。PMC31の電力が停止するのは、AC/DCアダプタ45および電池パック41がノートPC10に電力を供給しないときだけなので、POST選択コード105がG3ビットの解除を検出したときは、ノートPC10が前回の起動から今回の起動までの間にG3ステートに遷移したことになる。
【0034】
PMC31には、起動スイッチ37およびDC/DCコンバータ35の制御回路が接続されている。起動スイッチ37はノートPC10を起動する際に動作し、ユーザが押下するパワー・ボタンおよび筐体の蓋の開閉を検出するリッド・センサで構成される。DC/DCコンバータ35は複数の電圧を出力できるように構成され、パワー・ステートに応じてノートPC10を構成するデバイスに所定の電圧の電力を供給する。PMC31はEC29からの指示に基づいてDC/DCコンバータ33の動作を制御する。
【0035】
図1に示したデバイスは、ノートPC10の筐体の中に収納されており、以後これらを内部デバイスということにする。これに対して、ノートPCのUSB端子、VGA端子、eSATA端子などを通じて接続されるデバイスを外部デバイスということにする。開放センサ39は、内部デバイスを交換、追加または撤去するときに開放する必要がある筐体またはデバイス・ベイの蓋(以下、カバー蓋という。)が開放されたことを検出し信号をEC29に出力する。
【0036】
〔パワー・ステート〕
ノートPC10は、ACPIの規格に適合しており、G0ステート、G1ステート、G2ステート、およびG3ステートの4つのグローバル・システム・ステートに遷移することができる。G0ステートはパワー・ステートとしてのS0ステートに相当し、CPU11はアプリケーション・プログラムを実行できる状態となり、周辺デバイスは電力が供給されるが独自の機能に基づいて省電力動作をする。S0ステートはパワー・オン状態ともいう。G1ステートはスリーピング・ステートともいわれ、パワー・ステートとしてのS1ステートからS4ステートに相当する。
【0037】
S3ステートはサスペンド状態ともいわれ、メイン・メモリ15の記憶を保持するために必要なデバイスの電源を除いてほとんどのデバイスの電源が停止する。S4ステートは、ハイバネーション状態ともいわれ、システムのコンテキストがHDD22に記憶されてほとんどのデバイスの電源が停止する。G2ステートはソフト・オフともいわれるパワー・ステートとしてのS5ステートに相当し、システムのコンテキストをHDD23に記憶しないでほとんどのデバイスの電源が停止する。G3ステートは、メカニカル・オフ・ステートともいわれ、ボタン電池27を除いてノートPC10の一切の電源は停止する。
【0038】
G3ステートのときは、AC/DCアダプタ45および電池パック41がノートPC10から外されたかあるいはそれらが電力を供給しない状態となり、ノートPC10にはボタン電池27以外の電力源が存在しないことになる。本明細書では、ボタン電池27はノートPC10の電力源としては扱わず、AC/DCアダプタ45および電池パック41が電力供給を停止したG3ステートのときはノートPC10のすべての電力源が停止したということにする。
【0039】
G3ステートはACPIの規格に、ノートPC10の内部デバイスにアクセスするための電気的な安全が確保された状態としても定義されている。本明細書ではS1ステートからS4ステートまでのスリーピング・ステートおよびS5ステートのソフト・オフをSxステートということにする。Sxステートはパワー・オフ状態ともいう。本明細書においては、ノートPC10がS1ステート〜S3ステートからS0ステートに遷移して動作状態に至ることをレジュームといい、S4ステートまたはS5ステートからS0ステートに遷移して動作状態に至ることをコールド・ブートまたは単にブートということにする。また、ノートPC10のパワー・ステートをSxステートからS0ステートに遷移させることを起動ということにする。
【0040】
なお、図1は本実施の形態を説明するために、本実施の形態に関連する主要なハードウェアの構成および接続関係を簡略化して記載したに過ぎないものである。ここまでの説明で言及した以外にも、ノートPC10を構成するには多くのデバイスが使われる。しかしそれらは当業者には周知であるので、ここでは詳しく言及しない。図で記載した複数のブロックを1個の集積回路もしくは装置としたり、逆に1個のブロックを複数の集積回路もしくは装置に分割して構成したりすることも、当業者が任意に選択することができる範囲においては本発明の範囲に含まれる。
【0041】
〔BIOS_ROMの構成〕
図2はBIOS_ROM33のデータ構造を示す図である。BIOS_ROM33は、BIOSコードが格納されているBIOS領域51とデータ領域53を含む。BIOS_ROM33はBIOSコードの書き換えに伴うリスクを軽減するためにブート・ブロック方式を採用している。BIOS領域51はブート・ブロック55とシステム・ブロック57に分かれている。ブート・ブロック55は書き込み保護がされている記憶領域でここに格納されたプログラムまたはコードはTPM(Trusted Platform Module )の仕様書に規定するCRTM(Core Root of Trust for Measurement)として扱われ特別な権限がないと書き換えができないようになっている。
【0042】
ブート・ブロック55には基本デバイス初期化コード101、一貫性認証コード103、およびPOST選択コード105がCRTMとして格納されている。CRTMは、BIOSコードの中で一貫性のある部分として構成され、ノートPC10がブートするときに必ず最初に実行される。ノートPC10のプラットフォームに関するすべての一貫性の計測は一貫性認証コード103により行われる。
【0043】
ユーザは、TPMオーナーシップに基づいて許可される操作の中でいくつかの特権的な操作に関しては、フィジカル・プリゼンス(Physical Presence)の認証を求められる。一貫性認証コード103はフィジカル・プリゼンスの認証も行う。基本デバイス初期化コード101は、ノートPC10が起動してSxステートからS0ステートに遷移する際に、メイン・メモリ15にBIOSコードをロードして実行を開始するまでに必要なCPU11、メイン・メモリ15およびその他の基本的なデバイスの検出、検査および初期化を必要な範囲で行う。POST選択コード105は、前回の起動から今回の起動までの間に内部デバイスの構成が変更された可能性を判断して、あらかじめ用意した複数のPOSTコードの中から適切なPOSTコードを選択し、POST終了後のデバイスの動作の安定化とPOST時間の短縮の両立を図る。
【0044】
POSTとは、SxステートからS0ステートに遷移する際に、CPU11にリセット信号が供給されてから、OSがロードされるまでの期間にBIOS_ROM33に格納されたPOSTコードがチップ・セットのコントローラにパラメータを設定して使用できる状態にする作業をいう。POSTは、CPU11がリセットされてからOSがロードを開始するまでにBIOSコードが行うすべての処理であったり、あるいはその中からCPU11およびメイン・メモリ13などの基本的なデバイスに対する初期化を除いた処理であったりしてよい。POSTコードが実行を開始してから終了するまでの時間をPOST時間という。
【0045】
基本POSTコード107は、すべての内部デバイスを対象にして検出、検査、および初期化といった完全なPOST処理を行う。基本POSコード107は、所定のデバイスが検出できないときおよび検査の結果デバイスが正常に動作しないと判断したときにビープ音や画面表示によるエラーを出力する。基本POSTコード107は、MCH13およびICH21に接続されているデバイスからパラメータを取得して現在のシステムにおいて最適なパラメータを選択しMCH13およびICH21が含むコントローラに設定する。
【0046】
本明細書においてはこのように内部デバイスを検査してそこから取得した情報に基づいて選択した最適なパラメータをコントローラに設定することを初期化といい、いずれかの場所に保存しておいた過去に設定したパラメータを対応するコントローラに設定することをリストアということにする。リストアは、内部デバイスの検出、検査および最適パラメータの選択のための処理を省略するので初期化に比べて短時間で完了することができるが、デバイスの構成が変更されている場合は動作が不安定になったり、POSTがハングアップしたりする可能性がある。
【0047】
高速POST1コード109および高速POST2コード111はそれぞれ基本POSTよりも少ない手順で高速POST1および高速POST2を行う。基本POSTコード107は、高速POST1コード109および高速POST2コード111に比べて実行時間が長い。高速POST1は、一例として本発明の出願人が採用するFast Postとすることができる。
【0048】
Fast POSTは、あらかじめ決めておいた一部のデバイスは必ず装着されているという前提に立ってそれらの検出、検査、および最適なパラメータの選択などの処理を省略する手法である。Fast POSTの対象としては、HDD23、USBデバイス、および無線モジュールなどのような応答時間が長いために初期化に多くの時間を費やす内部デバイスや、動作のタイミングからOSが初期化をしても問題がないような内部デバイスなどを選定することができる。Fast POSTを実行すると、処理を省略した内部デバイスの構成が変更されていた場合にその動作が不安定になったり、POSTがハングアップしたりすることがある。
【0049】
高速POST2は一例として、最初に基本POSTを実行して設定した最適なパラメータやそのときのデバイスの情報など(以下、パラメータという。)をBIOS_ROM33のデータ領域53および他の不揮発性の記憶領域に格納しておき、次回のPOSTの際には、基本的なデバイスを除いて格納しておいたパラメータをリストアすることでPOSTの時間を短縮する手法を採用することができる。
【0050】
ここで、S3ステートからS0ステートにレジュームする場合のPOSTを説明する。起動の際に実行されたPOSTコードおよびコントローラに設定されたパラメータなどは、S0ステートにおいてメイン・メモリ15に記憶される。S0ステートからS3ステートにサスペンドするときには、メイン・メモリ15に記憶されたPOSTコードおよびパラメータの記憶が維持される。S3ステートからS0ステートにレジュームするときにはメイン・メモリ15に記憶されたPOSTコードを実行して、メイン・メモリ15に記憶されたパラメータを設定することで短時間にコントローラの設定を完了することができる。なお、レジュームするときも、ブート・ブロック55に記憶されたBIOSコードは必ず実行される。
【0051】
高速POST2では、S3ステートにおいて電池パック49の電圧が低下したときまたは所定の時間が経過したときなどに、OSが認識しない状態でメイン・メモリ15に記憶されていたPOSTコードおよびパラメータを、S0ステートを経由してHDD23またはその他の不揮発性メモリに記憶した後にS5ステートに遷移させる。このとき、OSはシステムがS3ステートに遷移していると認識している。そして次にS5ステートからS0ステートに遷移するときには、HDD23に記憶されていたPOSTコードがHDD23に記憶されていたパラメータをコントローラに設定することで短時間に処理を完了することができる。
【0052】
I/Oコード113は、CPU11がリアル・モードで動作する際に周辺デバイスにアクセスするための入出力のインターフェースを提供する。BIOSセット・アップ・コード115は、ブート・ドライブの選択、各デバイスの機能のイネーブル/ディスエーブル、セキュリティのイネーブル/ディスエーブルなどのような内部デバイスに対する設定をユーザがカスタマイズするためのインターフェースを提供する。ノートPC10をブートする際に、OSがロードされる前に所定のキーを操作するとBIOSセット・アップ・コード115が実行されて、LCD19にBIOS設定画面が表示される。
【0053】
ユーザが設定したセット・アップ・データは、ICH21内のRTCメモリ22に記憶される。基本POSTコード107、高速POSTコード109、および高速POSTコード111を実行する際にはRTCメモリ22に記憶されたセット・アップ・データが参照される。環境ユーティリティ・コード117は、ノートPC10の温度および電力を制御する。認証コード119は、パワー・オン・パスワード、HDDパスワード、および管理者パスワードなどの認証を行う。
【0054】
なお、本発明はブート・ブロック方式を採用しないBIOS_ROM33、あるいは、BIOS領域の全体をブート・ブロックにしたBIOS_ROMに適用することもできる。高速POST1および高速POST2は、いずれも基本POSTよりも手順を簡易化したりまたは基本POSTの一部を省略したりしてより短時間でOSのロードを開始できるものであれば他の方式を採用することもできる。ただし、本発明における高速POST1および高速POST2は、内部デバイスの構成が変更されたときに実行されると、内部デバイスの動作が不安定になったりPOSTが停止したりする場合があるという特質を備える。
【0055】
〔RTCメモリ〕
図3は、RTCメモリ22のセット・アップ・データの一部を示す図である。RTCメモリ22には、BIOSセット・アップ・コード115により設定されたセット・アップ・データおよびRTCを利用したスケジュール・ウェイク・アップに関する設定情報や時間情報が記憶される。選択POSTビット141は、図6〜図9の手順で実行される選択POSTをイネーブルまたはディスエーブルに設定する項目である。選択POSTビット141がイネーブルに設定されたときは、コンピュータが起動すると図7〜図9の手順でPOSTが実行されるが、ディスエーブルに設定されたときは従来どおり基本POSTだけが実行される。選択POSTビット141は、POST選択コード105が図5のFET46を制御する際に参照される。
【0056】
S0高速POSTビット143は、図7のブロック367の手順で実行する高速POSTの種類を設定する項目である。本実施の形態では、高速POST1または高速POST2のいずれかを設定する。いずれの高速POSTも設定しないときは、ブロック367の手順で基本POSTが実行される。Sx高速POSTビット143は、図7のブロック371の手順で実行する高速POSTの種類を設定する項目である。本実施の形態では、高速POST1または高速POST2のいずれかを設定する。いずれの高速POSTの種類も設定しないときは、ブロック371の手順で基本POSTが実行される。完全POSTビット147は、図8のブロック401の手順で、ブロック403とブロック405のいずれに移行するかを設定する項目である。
【0057】
〔開放センサ〕
図4は、開放センサ39の構成の一例を説明する図である。図4(A)は、ノートPC10の筐体201の底面にカバー蓋203が形成されている様子を示す平面図で、図4(B)は側面図である。ノートPC10の内部デバイスを交換する際には、カバー蓋203を外す必要がある。カバー蓋203は、内部デバイスの構成を変更するための物理的なアクセス経路の一例である。物理的なアクセス経路の他の例としては、筐体201の側面に形成されたデバイス・ベイの蓋がある。キーボード207の内面には、内部にネジが切られたタッピング・ボス209が形成されている。カバー蓋203はネジ205、207で筐体201に取り付けられる。
【0058】
ネジ205はカバー蓋203を筐体201に固定する際にタッピング・ボス209に結合される。ネジ205は、マザー・ボード213を貫通している。マザー・ボード213には、ネジ205が貫通する位置に分割雌ねじ211a、211bが取り付けられている。ネジ205はタッピング・ボス209に結合する際に分割雌ねじ211a、211bに結合するようになっている。図4(C)は、分割雌ねじ211a、211bとネジ205が結合している状態を示し、図4(D)は分割雌ねじ211a、211bとネジ205が結合してない状態を示す。
【0059】
ネジ207も同じ構造で他のタッピング・ボスと分割雌ねじに結合する。図4(C)はカバー蓋203がシステム筐体201に取り付けられた状態を示し、図4(D)はカバー蓋203がシステム筐体201から取り外された状態を示しているといえる。分割雌ねじ211bは電源ラインに接続され、分割雌ネジ211aはグラウンドに接続される。ネジ205が結合されている場合は、分割雌ねじ211bと分割雌ねじ211aが導通して、分割雌ねじ211bの電位がグラウンド・レベルになり、ネジ205が結合されていない場合は分割雌ねじ211bの電位が電源の電位になる。
【0060】
開放センサ39は、この電位の変化を利用してカバー蓋203が開放された状態を検出する。開放センサ39は、図4に示した実施例に限定されない。たとえば、プラスチックで形成されたカバー蓋203の内面に導電性の板を張り付け、筐体201側に2本の電極を形成して、カバー蓋203の装着による電極の導通を検出するようにしてもよい。また、カバー蓋203の装着を検出するマイクロ・スイッチやマグネット式のセンサを設けるようにしてもよい。
【0061】
〔ECの構成〕
図5は、EC29の本実施の形態に関連する構成を示す図である。EC29は、EEPROM30およびハードウェア論理回路で構成された開放検出回路151を含んでいる。EEPROM30には、複数の状態設定ビット153〜161が設定される。POST選択コード105は、状態設定ビット153〜161を参照することができる。開放ビット153は、カバー蓋203が開放された状態を示す。開放検出回路151には、DC/DCコンバータ35およびボタン電池27からそれぞれのダイオードを経由したいわゆるワイヤードOR回路で電圧が印加される。
【0062】
電池パック41またはAC/DCアダプタ45が電力を供給する間は、開放検出回路151にDC/DCコンバータ45が電力を供給するが、ノートPC10がG3ステートに遷移したときにはボタン電池27が電力を供給する。開放センサ39の一端は開放検出回路151に接続され、他端はグラウンドに接続されている。カバー蓋203が閉じているときはDC/DCコンバータ35または、RTCメモリ27からグラウンドに電流が流れる。
【0063】
開放センサ39の一端の電圧は、カバー蓋203が閉じているときはグラウンド・レベルであるが、カバー蓋203が開放するとDC/DCコンバータ35またはボタン電池27の電圧まで上昇する。開放検出回路151はPOST選択コード105により指示された以降において開放センサ39の一端の電圧が所定値まで上昇したときに開放ビット153を設定する。POST選択コード105は開放ビット153を参照したあと、もし設定されていた場合は次回の起動時に選択POSTを実行するために解除する。
【0064】
開放検出回路151の電力をボタン電池27がバック・アップすることで、開放検出回路151はG3ステートに遷移してからカバー蓋203が開放されたときの状態を検出して、開放ビット153を設定することができる。ただし、本発明では、開放検出回路151の電力がボタン電池27でバック・アップされないような場合でも、図7のブロック363以降の手順により、選択POSTを実行することができる。
【0065】
ノートPC10は、パワー・オン状態またはパワー・オフ状態では電池パック41またはAC/DCアダプタ45から電力の供給を受けるため、ボタン電池27は開放検出回路151のために消耗しないが、工場から出荷する前のようにG3ステートの状態が長く続くと、ボタン電池27の消耗が激しくなる。不必要なボタン電池27の消耗を避けるために、ボタン電池27に接続されたダイオードのカソードには、FET46が接続されている。FET46は、ボタン電池27から電力の供給を受ける制御回路47で制御される。POST選択コード105は、RTCメモリ22の選択POSTビット141がイネーブルに設定されたときは制御回路47に指示してFET46をオンにし、ディスエーブルに設定されたときはオフにする。
【0066】
S0_BATT_LowビットとSx_BATT_Lowビットは、それぞれ電池パック41の電圧が所定値(クリティカル電圧)未満に低下して放電を停止する状態になったことを示す。EC29は、電池パック41の電圧が、S0ステートの間にクリティカル電圧まで低下して放電を停止するときの状態を示すS0_BATT_LowビットおよびSxステートの間にクリティカル電圧まで低下して放電を停止するときの状態を示すSx_BATT_Lowビットを設定する。POST選択コード105は、S0_BATT_LowビットおよびSx_BATT_Lowビットを参照した後に、もし設定されていた場合は次回の起動時に選択POSTを実行するために解除する。
【0067】
PnPビット159は、OSの動作環境下でプラグ・アンド・プレイにより外部デバイスが接続された状態を示す。EC29はS0ステートの間にプラグ・アンド・プレイにより外部デバイスが接続されたことの通知をOSから受け取ったときにはPnPビット159を設定する。POST選択コード105は、PnPビット159を参照した後に、もし設定されていた場合は次回の起動時に選択POSTを実行するために解除する。
【0068】
ノートPC10では、SxステートからS0ステートに遷移するときに、遷移元のパワー・ステートにより異なった処理が行われる。パワー・ステート・ビット161は、SxステートからS0ステートに遷移する際の遷移元のパワー・ステートを示す。パワー・ステート・ビット161は、ICH21から通知を受けたEC29がS0ステートからSxステートに遷移する際に遷移先のパワー・ステートとして設定し、SxステートからS0ステートに遷移する際に解除する。
【0069】
〔選択POSTの手順〕
つぎに、ノートPC10における選択POSTの実行手順を、図6〜図9のフローチャートを参照して説明する。図6は、RTCメモリ22の選択POSTビットがイネーブルに設定され、EEPROM30の各状態設定ビットが設定される際の手順を示すフローチャートである。図6のブロック301では、S4ステートまたはS5ステートのときに、起動スイッチ37を操作してノートPC10を起動する。EC29はS0ステートに遷移させるためにPMC31を通じてDC/DCコンバータ35を動作させる。
【0070】
EC29からS0ステートに遷移する信号を受け取ったICH21は、CPU11にリセット信号を送る。リセット信号を受け取ったCPU11は、電圧が安定すると内部のキャッシュおよびレジスタを初期化する。CPU11はその後あらかじめ定められたメイン・メモリ15のアドレス(リセット・ベクタ)にアクセスしてインストラクションをフェッチする。
【0071】
ノートPC10がブートするときは、ブート・ブロック55に格納されたBIOSコードが所定のアドレスから実行される。MCH13は遷移元のパワー・ステートが、S4ステートまたはS5ステートであると判断して、リセット・ベクタへのアクセスをBIOS_ROM33のブート・ブロック55に格納された基本デバイス初期化コード101のアドレスに切り換える。CPU11は基本デバイス初期化コード101をキャッシュに読み出して、メイン・メモリ15およびMCH13などのBIOSコードを実行するのに必要な基本的なデバイスの検出、検査および初期化をする。
【0072】
基本デバイス初期化コード101は、初期化するためにコントローラに設定したパラメータをデータ領域53および必要に応じて他の不揮発性メモリに書き込む。つづいて、基本デバイス初期化コード101は、BIOS_ROM33に格納されている所定のコードをメイン・メモリ15にロードして、メイン・メモリ15をシャドウRAMとして利用できるようにする。それ以降は、CPU11は、メイン・メモリ15にアクセスしてBIOSコードを実行する。
【0073】
つぎに、一貫性認証コード103は、システム・ブロック57に格納されたBIOSコードの改変に関する認証を行う。認証が終了するとPOST選択コード105が実行される。この時点では、RTCメモリ22の選択POSTビット141がディスエーブルであるため、図7〜図9に示す手順による選択POSTは実行されない。POST選択コード105は、G3検出レジスタ32にG3ビットを設定してPMC31に電力が供給されたことを表明する。ブロック303では、OSのロードが開始される前にユーザが所定のキーを押下してBIOSセット・アップ・コード115を呼び出してRTCメモリ22にセット・アップ・データを記憶する。ブロック305でユーザが選択POSTビット141をイネーブルに設定する。
【0074】
ブロック307では、ユーザが高速POSTの種類を設定する。S0高速POSTビット143およびSx高速POSTビット145は、それぞれ図7のブロック367、371でPOST選択コード105が判断する対象となる。内部デバイスにアクセスする可能性はS0ステートで行われるよりもSxステートで行われる可能性の方が高い。したがって、電池パック41の電圧がS0ステートでクリティカル電圧まで低下したブロック365の状態よりも、Sxステートでクリティカル電圧まで低下したブロック369の状態の方がより確実なPOSTをすることが望ましい。よって、ブロック307ではユーザがS0高速POSTビット143にパラメータをリストアする高速POST2を設定し、Sx高速POSTビット145に一部の内部デバイスを除いてパラメータを初期化する高速POST1を設定する。
【0075】
ブロック309では、ユーザが完全基本POSTビット147を設定または解除する。ブロック311では、ユーザがセット・アップ・データをRTCメモリ22に保存してBIOSセット・アップ・コード115を終了すると基本POSTコード107が実行される。基本POSTコード107は基本デバイス初期化コード101で処理されていない残りのすべてのデバイスの検出、検査および初期化を行う。基本POSTコード107は、初期化するためにコントローラに設定したパラメータをデータ領域53および必要に応じて他の不揮発性メモリに書き込む。ブロック313では、基本POSTコード107に続いてOSおよびアプリケーション・プログラムがロードされ実行される。
【0076】
この時点では、メイン・メモリ15にはBIOSコードと、コントローラに設定したパラメータが記憶されている。メイン・メモリ15の記憶が維持されるS1ステート〜S3ステートからS0ステートにレジュームする際に必要なBIOSコードとパラメータ以外のデータを記憶するメイン・メモリ15の記憶領域は、一般のプログラムの使用のために開放される。
【0077】
ブロック315では、プラグ・アンド・プレイで新たに外部デバイスが接続されるとOSから通知を受けたEC29がEEPROM30にPnPビット159を設定する。さらにEC29は電池パック41の電圧がクリティカル電圧まで低下したことを検出するとパワー・ステート・ビット161を参照してS0_BATT_Lowビット155を設定する。ブロック317では、起動スイッチ37の操作、OSのインターフェースを通じた操作またはパワー・マネジメントの実行などによりノートPC10がSxステートに遷移する。
【0078】
OSからSxステートへの遷移の準備が完了したことの通知を受け取ったICH21は、遷移先のパワー・ステートをEEPROM30のパワー・ステート・ビット161に設定する。S1ステート〜S3ステートに遷移する場合は、メイン・メモリ15の記憶が維持されるため、直近の起動においてメイン・メモリ15に記憶されたBIOSコードおよびパラメータのメイン・メモリ15への記憶が維持される。S4ステートまたはS5ステートに遷移する場合は、メイン・メモリ15の電源が喪失するのでメイン・メモリ15に記憶されていたすべてのデータは消失する。
【0079】
Sxステートに遷移すると、CPU11の動作が停止しさらにパワー・ステートに応じてあらかじめ決められた内部デバイスの電力も停止する。Sxステートの間はノートPC10の動作は停止しているが、AC/DCアダプタ45が接続されているときは、EC29は電池パック41の電圧が待機電力のために所定値まで低下したときに電池パック41から充電要求を受け取って充電器43を動作させて充電する。また、AC/DCアダプタ45が接続されていないときは、Sxステートにおける待機電力を電池パック41が供給するために、クリティカル電圧まで低下することがある。ブロック321では、Sxステート中に電池パック41の電圧がクリティカル電圧まで低下したことをEC29が検出すると、パワー・ステート・ビット161を参照してSx_BATT_LOWビット157を設定する。
【0080】
図7〜図9は、選択POSTの実行手順を示すフローチャートである。ブロック351では、ノートPC10がSxステートに遷移しているときに、起動スイッチ37の操作、WOLのマジック・パケットの受信、またはスケジュール・ウェイク・アップによるウェイク・アップ時刻の到来などを契機として、EC29に起動信号が送られる。EC29から起動信号を受け取ったICH21は、EC29にS0ステートに遷移させるためにすべてのデバイスに電力を供給するように指示し、さらにCPU11にリセット信号を送る。
【0081】
リセット信号を受け取ったCPU11は、メイン・メモリ15のリセット・ベクタにアクセスする。MCH13はCPU11のリセット・ベクタへのアクセスをBIOS_ROMのブート・ブロック55に記憶されている基本デバイス初期化コード101のアドレスに切り換える。基本デバイスの初期化を終了した基本デバイス初期化コード101は、ブロック355でEEPROM30のパワー・ステート・ビット161を参照して遷移元のパワー・ステートを判断する。遷移元のパワー・ステートがS1ステート〜S3ステートの場合は、メイン・メモリ15に前回の起動のときに実行されたPOSTコードおよびパラメータが記憶されているので、ブロック357に移行してCPU11のアクセス先をメイン・メモリ15のPOSTコードが記憶されているアドレスに切り換える。
【0082】
ブロック357では、メイン・メモリ15に記憶されていたPOSTコードが同じくメイン・メモリ15に記憶されていたデバイス情報とパラメータに基づいてコントローラの設定をする。この作業は、デバイスの検出、検査、および最適なパラメータの選択などを省略するため短いPOST時間でOSをロードする状態に移行することができる。なお、前回の起動のときに選択POSTビット141がイネーブルに設定されていれば、POST選択コード105が実行されブロック359からの手順で内部デバイスへの物理的なアクセスの可能性がある場合に基本POSTコード107が実行される。
【0083】
ブロック355で基本デバイス初期化コード101が、遷移元のパワー・ステートがS4ステートまたはS5ステートであると判断したときは、その後ブロック301と同様の手順でブート・ブロック55のBIOSコードを順番に実行してブロック359に移行する。今回は、RTCメモリ22の選択POSTビット141がイネーブルに設定されているため、CPU11はPOST選択コード105を完全に実行する。ブロック359では、POST選択コード105が、EEPROM30のPnPビット159を確認する。
【0084】
OSの動作環境下で新たに接続された外部デバイスは、OSが初期化またはリストアすればよいので基本的にPOSTの対象から外すことができるが、外部デバイスが最優先のブート・デバイスに設定されたUSBデバイスのような場合には、BIOSコードがこれを初期化することが望ましい。PnPビット159が設定されているときは、基本POSTの実行を原則とするノードAの手順に移行し、PnPビット159が設定されていないときはブロック361に移行することができる。なお、プラグ・アンド・プレイにより装着された外部デバイスの設定はOSがすべて行うものとして、ブロック359の判断を省略してもよい。
【0085】
ブロック361ではPOST選択コード105がEEPROM30の開放ビット153を参照して、前回の起動から今回の起動までの間にカバー蓋203が開放されたことがあるか否かを判断する。POST選択コード105は、開放ビット153の参照が終了すると開放ビット153を解除した後に、それ以降に開放センサ39がカバー蓋203の開放を示したときに開放ビット153を設定するように開放検出回路151を制御する。
【0086】
開放ビット153が設定されているときは交換、追加、または撤去などによる内部デバイスの構成の変更が行われた可能性が高いので、ノードAの手順に移行する。開放ビット153が設定されていないときは、カバー蓋203が物理的に開放されていないため内部デバイスの構成が変更された可能性は極めて低いと考えられ、高速POST1または高速POST2を実行しても動作の不安定を招くようなことはないといえる。
【0087】
しかし、カバー蓋203の開放を検出するための開放検出回路151の電源をボタン電池27でバック・アップしない方法を採用する場合やボタン電池27が消耗した場合には、G3ステートに遷移してからカバー蓋203が開放された状態を開放検出回路151が検出できなくなる。さらに、ボタン電池27の電圧は維持されていても開放センサ39または開放検出回路151が正常に動作しないためにカバー蓋203の開放を正しく検出できない場合もあり得る。さらにカバー蓋203が開放しないで交換できる形態で内部デバイスが実装される場合もある。
【0088】
本実施の形態では、カバー蓋203が開放されていないと判断した場合にただちに高速POST1または高速POST2を実行しないで、内部デバイスへのアクセスの可能性をさらに判断して信頼性の高い基本POSTを実行する必要性の有無を判断する。ここで、ノートPC10のメインテナンス・マニュアルでは、内部デバイスの構成を変更する際には、電池パック41およびAC/DCアダプタ45を取り外して電気的に安全なG3ステートにしてから筐体を開放するように定めている。
【0089】
本実施の形態ではユーザがメインテナンス・マニュアルに従って内部デバイスにアクセスする蓋然性を利用して、カバー蓋203の開放を検出しない場合に、ブロック363、365、369の手順を実行してノートPC10がG3ステートに遷移したか否かおよびG3ステートに遷移した理由が内部デバイスへのアクセスを目的としていたか否かを判断する。ブロック363では、POST選択コード105はPMC31のG3検出レジスタ32を参照して、前回の起動から今回の起動までの間にノートPC10がG3ステートに遷移したか否かを確認する。レジスタ32のG3ビットが解除されている場合は、G3ステートに遷移したことになるのでブロック365に移行する。なお、G3ビットが解除されていることを確認したあとには、POST選択コード105は、次回の選択POSTのためにG3ビットを設定する。
【0090】
G3ビットが設定されているときは、ノートPC10の電池パック41またはAC/DCアダプタ45の少なくともいずれかは電力源として接続されていたことになり、内部デバイスの構成が変更された可能性は低いので、高速ブートを基本とするノードBの手順に移行する。ところでノートPC10がG3ステートに遷移するのは、ユーザが内部デバイスを交換するために、AC/DCアダプタ45と電池パック41を取り外す場合に限らない。ノートPC10が電池駆動の状態で使用されているときに電池パック41の電圧がクリティカル電圧まで低下すると、電池パック41は出力を停止するためノートPC10はG3ステートに遷移する。
【0091】
また、ノートPC10がSxステートに遷移しているときであってもAC/DCアダプタ45が接続されていないときは、待機電力の消費で電池パック41の電圧がクリティカル電圧まで低下してG3ステートに遷移する場合がある。このように電池パック41の電圧がクリティカル電圧まで低下したことによるG3ステートへの遷移は、内部デバイスのアクセスとは無関係に起こり得る現象である。
【0092】
ブロック365でPOST選択コード105は、S0_BATT_Lowビット155を確認する。S0_BATT_Lowビット155が設定されているときは電池パック41の電圧がS0ステートで徐々にクリティカル電圧まで低下してG3ステートに遷移したことを意味し、内部デバイスにアクセスした可能性は低いといえるためブロック367に移行する。ブロック365でS0_BATT_Lowビット155が設定されていないときは、突然電池パック41が外されて内部デバイスへのアクセスがされた可能性もあるが、Sxステートで徐々にクリティカル電圧まで低下してG3ステートに遷移した可能性も残るためさらにブロック369に移行する。
【0093】
ブロック369でPOST選択コード105は、Sx_BATT_Lowビット157を確認する。Sx_BATT_Lowビット157が設定されているときはSxステートで電池パック41の電圧が徐々にクリティカル電圧まで低下してG3ステートに遷移したことを意味し、内部デバイスにアクセスした可能性は低いといえるためブロック371に移行する。ブロック369でSx_BATT_Lowビット157が設定されていないときは、ブロック361からブロック369までのパスに基づいて判断すれば突然電池パック41が外された可能性が高い。そして、突然電池パック41が外された場合は、内部デバイスにアクセスがあった可能性が高いのでノートAに移行する。
【0094】
ブロック367とブロック371は、いずれも電池パック41の電圧がクリティカル電圧まで低下したときに、基本POST、高速POST1または高速POST2のいずれを実行するかを選択する手順を示す。POST選択コード105は、ブロック367でRTCメモリ22のS0高速POSTビット143を参照し、ブロック371でSx高速POSTビット145を参照してノードAまたはノードBのいずれを実行するかを選択する。
【0095】
図8は、基本POSTの実行を原則とする手順を示すフローチャートである。図7の手順で示したように基本POSTコード107は、内部デバイスの構成が変更された可能性が高いときに実行される。基本POSTコード107を実行する場合には、構成が変更された内部デバイスをできるだけ短時間で検出してその検査と初期化を終了できることが望ましい。そのために、基本POSTコード107を実行する場合にもいくつかの手順を省略して行うことができる。
【0096】
ブロック401では、POST選択コード105から基本POSTコード107に動作が移る。基本POSTコード107は、最初にRTCメモリ22の完全基本POSTビット147を確認する。完全基本POSTビット147が設定されている場合は、ブロック403に移行して基本POSTコード107をすべて実行してデバイスの検出、検査、および初期化を行い、その後ブロック417に移行してOSをロードする。
【0097】
ブロック401で完全基本POSTビット147が設定されていないときは、ブロック405ですべての内部デバイスに対して検査だけを行う。ブロック407で基本POSTコード107は、すべての内部デバイスを検査してエラーが発生しない場合は、ブロック409に移行して、データ領域53に記憶されていたパラメータをリストアしてからブロック417に移行する。ブロック407でエラーが発生したときは、ブロック411に移行して完全基本POSTビット147を設定しユーザにエラーを表示する。
【0098】
ブロック413では、ユーザはカバー蓋203を開放して、構成を変更した内部デバイスに異常があれば処置をして再起動する。その後は、ブロック351からの手順が開始される。そして、ブロック401では、完全基本POSTビット147が設定されているためブロック403で基本POSTコード107が完全に実行される。
【0099】
図9は、高速POSTを実行する手順を示すフローチャートである。ブロック453では、POST選択コード105から図7のブロック367、371で選択された高速POSTコード109または111に動作が移る。高速POST1コード109に動作が移った場合は、ブロック457で所定のデバイスに対して検査と初期化が行われる。ブロック459で高速POST1コード109がエラーを検出したときはブロック451に移行する。ブロック451では、基本POSTコード107に動作が移り、基本POSTコード107が完全に実行されてからブロック455に移行する。
【0100】
ブロック459でエラーが検出されないときは、ブロック455に移行する。ブロック455では、OSおよびアプリケーション・プログラムがロードされる。ブロック453で高速POST2コード111に動作が移った場合は、ブロック453でメイン・メモリ15、データ領域53またはHDD23などに記憶されていたパラメータがリストアされてブロック455に移行する。
【0101】
図7のブロック363、365、367の手順は、ブロック361において実際にカバー蓋203が開放されたにもかかわらず開放検出回路151がそれを検出しないという誤りを補完する意義がある。これは図5に示したカバー蓋203の開放を検出する回路の構造では、実際にネジ205が結合しているにもかかわらず結合していないという出力をする可能性が小さいためである。本発明では開放検出回路151が、カバー蓋203が閉じているにもかかわらず、開放したと出力する誤りを図7のブロック363、365、367の手順を利用して補完することもできる。
【0102】
具体的には、ブロック361でカバー蓋203が開放したと判断したときにただちにノードAに移行しないで、ブロック363からブロック371までのパスに移行する。そして、ブロック367、369、371を経由してノートAに移行するようにすれば、カバー蓋203が開放したと判断する誤りを前回の起動から今回の起動までの間のG3ステートへの遷移の有無および電池パック41の状態を判断して補完することができる。
【0103】
これまで本発明について図面に示した特定の実施の形態をもって説明してきたが、本発明は図面に示した実施の形態に限定されるものではなく、本発明の効果を奏する限り、これまで知られたいかなる構成であっても採用することができることはいうまでもないことである。
【符号の説明】
【0104】
10…ノートPC
22…RTCメモリ
29…エンベデッド・コントローラ
30…EEPROM
33…BIOS_ROM
39…開放センサ
51…BIOS領域
53…データ領域
55…ブート・ブロック
57…システム・ブロック

【特許請求の範囲】
【請求項1】
第1のPOSTコードと該第1のPOSTコードよりも短い時間で処理を終了することができる第2のPOSTコードを実装するコンピュータがパワー・オフ状態からパワー・オン状態に移行する方法であって、
前記コンピュータが、プロセッサの前回のリセットから今回のリセットまでの間に前記筐体に収納された内部デバイスに対する物理的なアクセスが行われた可能性を判断するステップと、
前記物理的なアクセスの可能性が高いと判断したときに前記第1のPOSTコードを実行するステップと、
前記物理的なアクセスの可能性が低いと判断したときに前記第2のPOSTコードを実行するステップと
を有する方法。
【請求項2】
前記第2のPOSTコードを実行するステップが、
前記プロセッサの前回のリセットから今回のリセットまでの間にすべての電力源が電力供給を停止したか否かを判断するステップと、
いずれかの電力源が電力供給していたと判断したときに前記第2のPOSTコードを実行するステップと
を含む請求項1に記載の方法。
【請求項3】
前記すべての電力源が2次電池と交流電源で構成され、
前記第2のPOSTコードを実行するステップが、
前記プロセッサの前回のリセットから今回のリセットまでの間に前記2次電池と前記交流電源がいずれも電力供給を停止したと判断したときに、前記パワー・オン状態で前記2次電池の電圧が所定値未満に低下したか否かを判断するステップと、
所定値未満に低下したと判断したときに前記第2のPOSTコードを実行するステップと
を含む請求項2に記載の方法。
【請求項4】
前記第2のPOSTコードを実行するステップが、
前記パワー・オン状態で前記2次電池の電圧が前記所定値以上に維持されていたと判断したときに、前記パワー・オフ状態で前記2次電池の電圧が前記所定値未満に低下したか否かを判断するステップと、
前記所定値未満に低下したと判断したときに前記第2のPOSTコードを実行するステップと、
前記所定値以上を維持していたと判断したときに前記第1のPOSTコードを実行するステップと
を有する請求項3に記載の方法。
【請求項5】
前記コンピュータが前記第2のPOSTコードよりも短い時間で処理を終了することができる第3のPOSTコードを実装し、
前記第2のPOSTコードまたは前記第3のPOSTコードのいずれかを選択するステップを有する請求項1から請求項4のいずれかに記載の方法。
【請求項6】
前記パワー・オン状態で外部デバイスが接続されたか否かを判断するステップと、
前記外部デバイスが接続されたと判断したときに前記第1のPOSTコードを実行するステップと
を有する請求項1から請求項5のいずれかに記載の方法。
【請求項7】
前記物理的なアクセスが行われた可能性を判断するステップが、前記筐体のカバー蓋が開放されたことを判断するステップを含む請求項1から請求項6のいずれかに記載の方法。
【請求項8】
前記物理的なアクセスが行われた可能性を判断するステップが、前記カバー蓋を取り付けるネジが外されたことを判断するステップを含む請求項7に記載の方法。
【請求項9】
前記第1のPOSTコードを実行するステップが、
前記内部デバイスの検査を実行するステップと、
前記内部デバイスの検査の結果エラーが発生したときに前記エラーを表示するステップと、
前記エラーを表示してから再起動されたときに前記第1のPOSTコードをすべて実行するステップと
を有する請求項1から請求項8のいずれかに記載の方法。
【請求項10】
筐体に複数の内部デバイスを収納するコンピュータが起動する方法であって、
前記複数の内部デバイスの検査と初期化をしてパラメータを設定する第1のコードと前記第1のコードよりも簡易な手順でパラメータを設定する第2のコードを用意するステップと、
プロセッサがリセット信号を受け取るステップと、
前記コンピュータが前記内部デバイスに対する物理的なアクセスの可能性を判断するステップと、
前記内部デバイスに対する物理的なアクセスの可能性が高いと判断したときに前記第1のコードを実行するステップと、
前記内部デバイスに対する物理的なアクセスの可能性が低いと判断したときに前記第2のコードを実行するステップと、
を有する方法。
【請求項11】
前記物理的なアクセスの可能性を判断するステップが、前記プロセッサの前回のリセットから今回のリセットまでの間における前記コンピュータに対する電力源の電力供給状態を判断するステップを含む請求項10に記載の方法。
【請求項12】
前記電力源が2次電池を含み、
前記電力源の電力供給状態を判断するステップが、
前記コンピュータに対するすべての電力源が電力供給を停止したか否かを判断するステップと、
すべての電力源が電力供給を停止したと判断したときに前記2次電池の電圧が所定値未満に低下したか否かを判断するステップと
を含む請求項11に記載の方法。
【請求項13】
筐体に内部デバイスを収納し、電池パックおよびAC/DCアダプタから電力の供給を受ける携帯式コンピュータであって、
プロセッサと、
前記プロセッサがリセットされたときに前記内部デバイスにパラメータを設定するように前記コンピュータを機能させる基本POSTコードと、
前記プロセッサがリセットされたときに前記基本POSTコードよりも短時間でパラメータを設定するように前記コンピュータを機能させる高速POSTコードと、
前記内部デバイスに対する物理的なアクセスの可能性を示す状態を検出する検出部と、
前記物理的なアクセスの可能性を示す状態を検出したときに前記基本POSTコードを選択し、前記物理的なアクセスの可能性を示す状態を検出しないときに前記高速POSTコードを選択する機能を前記コンピュータに実現させるPOST選択コードと
を有する携帯式コンピュータ。
【請求項14】
前記POST選択コードが、前記プロセッサが前回リセットされてから今回リセットされるまでの間に前記電池パックおよび前記AC/DCアダプタの少なくともいずれか一方が電力供給を継続していたか否かを判断する機能を含む請求項13に記載の携帯式コンピュータ。
【請求項15】
前記POST選択コードが、前記電池パックおよび前記AC/DCアダプタが電力供給を停止したと判断したときに、前記プロセッサの前回のリセットから今回のリセットまでの間に前記電池パックの電圧が所定値未満に低下したか否かを判断する請求項14に記載の携帯式コンピュータ。
【請求項16】
前記検出部が、前記筐体を開放するカバー蓋の開放状態を検出する請求項13から請求項15のいずれかに記載の携帯式コンピュータ。
【請求項17】
前記検出部が、リアル・タイム・クロックに電力を供給するボタン電池から電力の供給を受ける請求項13から請求項16のいずれかに記載の携帯式コンピュータ。
【請求項18】
筐体に内部デバイスを収納するコンピュータが起動したときに前記コンピュータに、
前記前回の起動から今回の起動までの間に前記内部デバイスに対して行われた物理的なアクセスの可能性を検出するステップと、
前記物理的なアクセスの可能性を検出したときに前記内部デバイスの検査と初期化を実行するステップと、
前記物理的なアクセスの可能性を検出しないときに少なくとも前記検査と前記初期化の一部を省略して不揮発性メモリに記憶していたパラメータをリストアするステップと
を含む処理を実行させるためのBIOSコード。
【請求項19】
前記物理的なアクセスの可能性を検出するステップが、前回の起動から今回の起動までの間に前記コンピュータのすべての電力源が電力供給を停止したか否かを判断するステップを含む請求項18に記載のBIOSコード。
【請求項20】
前記物理的なアクセスの可能性を検出するステップが、前回の起動から今回の起動までの間に前記2次電池の電圧が所定値以上を維持していたか否かを判断するステップを含む請求項18または請求項19に記載のBIOSコード。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate


【公開番号】特開2012−243237(P2012−243237A)
【公開日】平成24年12月10日(2012.12.10)
【国際特許分類】
【出願番号】特願2011−115540(P2011−115540)
【出願日】平成23年5月24日(2011.5.24)
【出願人】(505205731)レノボ・シンガポール・プライベート・リミテッド (292)
【復代理人】
【識別番号】100106699
【弁理士】
【氏名又は名称】渡部 弘道
【復代理人】
【識別番号】100077584
【弁理士】
【氏名又は名称】守谷 一雄
【Fターム(参考)】