(57)【要約】【課題】携帯式コンピュータのＨＤＤの損傷を防止しながらパワー・ステートを制御する方法を提供する。【解決手段】ノートＰＣはＨＤＤとキャッシュ用の半導体メモリを搭載する。時刻ｔ１でスリープ状態からウェイクさせるシステム・イベントが生成されたときに、レジューム処理の間に携帯式コンピュータに所定値以上の加速度が発生していると判断したときにはキャッシュをライト・バックに設定する。また、時刻３でシステム・イベントが生成されたときに所定値以下の加速度が発生していると判断したときにはライト・スルーに設定する。ライト・スルーに設定したときは同期時のデータ消失の危険性を軽減し、ライト・バックに設定したときは振動時のスピンアップによりＨＤＤが損傷する危険性を軽減することができる。【選択図】図３
2014146142.tif 000002
【特許請求の範囲】
【請求項１】
回転式のディスクを備える記憶装置とライト・バック方式またはライト・スルー方式に設定して前記記憶装置のキャッシュとして機能する不揮発性半導体メモリを搭載した携帯式コンピュータがパワー・ステートを制御する方法であって、
スリープ状態の間に生成された第１のシステム・イベントに応答してレジューム処理を開始するステップと、
前記レジューム処理の間に前記携帯式コンピュータに発生した加速度が所定値以上であると判断したことに応答して前記ライト・バック方式に設定するステップと、
パワー・オン状態に移行したあとに生成された第２のシステム・イベントに応答して前記パワー・オン状態から前記スリープ状態に移行するステップと
を有する方法。
【請求項２】
前記レジューム処理の間に前記加速度が所定値以下であると判断したことに応答して前記ライト・スルー方式に設定するステップを有する請求項１に記載の方法。
【請求項３】
前記第１のシステム・イベントが、前記携帯式コンピュータが所定の無線アクセス・ポイントを検出したときに生成される請求項１または請求項２に記載の方法。
【請求項４】
前記第１のシステム・イベントが、前記携帯式コンピュータの計時装置により一定の時間間隔で生成される請求項１から請求項３のいずれかに記載の方法。
【請求項５】
前記パワー・オン状態で前記携帯式コンピュータが所定のプログラムを実行して無線で接続したネットワークから更新データを取得して記憶するステップを有する請求項１から請求項４のいずれかに記載の方法。
【請求項６】
前記記憶装置が、電源が投入されたときに前記ディスクの回転を停止させておく回転抑止機構を備え、前記第１のシステム・イベントを生成する前に前記回転抑止機構をイネーブルに設定するステップを有する請求項１から請求項５のいずれかに記載の方法。
【請求項７】
前記レジューム処理の間に前記ディスクに記憶された前記記憶装置の初期化に必要なデータを不揮発性半導体メモリから読み取るステップを有する請求項６に記載の方法。
【請求項８】
ユーザの操作に応答してウェイク・イベントを生成するステップと、
前記ウェイク・イベントに応答してレジューム処理をする間に前記ライト・スルー方式に設定するステップと
を有する請求項１から請求項７のいずれかに記載の方法。
【請求項９】
前記パワー・オン状態において前記不揮発性半導体メモリの空き容量を監視するステップと、
前記空き容量が所定値より少ないと判断したときに前記不揮発性半導体メモリが記憶するデータを前記ディスクに書き込んで所定の空き容量を確保するステップと
を有する請求項１から請求項８のいずれかに記載の方法。
【請求項１０】
前記携帯式コンピュータに電力を供給する電池の残容量を監視するステップを有し、
前記ライト・バック方式に設定するステップを前記残容量が所定値より多いと判断したときに実行する請求項１から請求項９のいずれかに記載の方法。
【請求項１１】
回転式のディスクを備える記憶装置とライト・バック方式またはライト・スルー方式に設定して前記記憶装置のキャッシュとして機能する不揮発性半導体メモリを搭載した携帯式コンピュータのパワー・ステートを制御する方法であって、
スリープ状態の間に生成されたウェイク・イベントに応答してレジューム処理を開始するステップと、
前記レジューム処理の間に前記ウェイク・イベントの種類を判断するステップと、
前記ウェイク・イベントがシステム・イベントであると判断したことに応答して前記ライト・バック方式に設定するステップと、
パワー・オン状態に移行したあとに生成されたシステム・イベントに応答して前記パワー・オン状態から前記スリープ状態に移行するステップと
を有する方法。
【請求項１２】
前記レジューム処理の間に前記携帯式コンピュータに発生する加速度の大きさを判断するステップを有し、
前記ライト・バック方式に設定するステップを前記加速度が所定値以下のときに実行する請求項１１に記載の方法。
【請求項１３】
前記ウェイク・イベントがユーザ・イベントであると判断したことに応答して前記ライト・スルー方式に設定するステップを有する請求項１１または請求項１２に記載の方法。
【請求項１４】
前記携帯式コンピュータに電力を供給する電池の残容量を監視するステップを有し、
前記ライト・バック方式に設定するステップを前記残容量が所定値より多いときに実行する請求項１１から請求項１３のいずれかに記載の方法。
【請求項１５】
回転式のディスクを備える記憶装置とライト・バック方式またはライト・スルー方式に設定して前記記憶装置のキャッシュとして機能する不揮発性半導体メモリを搭載した携帯式コンピュータが移動中に無線アクセス・ポイントに接続して所定のアプリケーション・プログラムがデータを更新する方法であって、
前記コンピュータがスリープ状態に遷移するステップと、
前記コンピュータが生成したシステム・イベントに応答してレジューム処理を開始するステップと、
前記レジューム処理の間に前記携帯式コンピュータに発生した加速度が所定値以上であると判断したことに応答して前記ライト・バック方式に設定しパワー・オン状態に移行するステップと、
前記パワー・オン状態において前記無線アクセス・ポイントと通信してデータを更新するステップと、
データの更新が終了したことに応答して前記パワー・オン状態から前記スリープ状態に移行するステップと
を有する方法。
【請求項１６】
回転式のディスクを備える記憶装置とライト・バック方式またはライト・スルー方式に設定して前記記憶装置のキャッシュとして機能する不揮発性半導体メモリを搭載した携帯式コンピュータが移動中に無線アクセス・ポイントに接続して所定のアプリケーション・プログラムがデータを更新する方法であって、
前記コンピュータをスリープ状態に遷移させるステップと、
前記コンピュータが生成したウェイク・イベントに応答してレジューム処理を開始するステップと、
前記レジューム処理の間に前記ウェイク・イベントの種類を判断するステップと、
前記ウェイク・イベントがシステム・イベントであると判断したことに応答して前記ライト・バック方式に設定しパワー・オン状態に移行するステップと、
前記パワー・オン状態において前記無線アクセス・ポイントと通信してデータを更新するステップと、
データの更新が終了したことに応答して前記パワー・オン状態から前記スリープ状態に移行するステップと
を有する方法。
【請求項１７】
携帯式のコンピュータであって、
回転式のディスクを備える記憶装置と、
ライト・バック方式またはライト・スルー方式に設定して前記記憶装置のキャッシュとして機能する不揮発性半導体メモリと、
加速度センサとを有し、
スリープ状態の前記コンピュータがレジューム処理の間に、前記コンピュータに対して所定値以上の振動が発生していると判断したことに応答してレジューム処理の間に前記ライト・バック方式に設定し、パワー・オン状態において生成されたシステム・イベントに応答して前記パワー・オン状態から前記スリープ状態に移行する携帯式コンピュータ。
【請求項１８】
携帯式コンピュータであって、
回転式のディスクを備える記憶装置と、
ライト・バック方式またはライト・スルー方式に設定して前記記憶装置のキャッシュとして機能する不揮発性半導体メモリとを有し、
スリープ状態の前記コンピュータがシステム・イベントを生成したことに応答してレジューム処理の間に前記ライト・バック方式に設定し、パワー・オン状態において生成されたシステム・イベントに応答して前記パワー・オン状態から前記スリープ状態に移行する携帯式コンピュータ。
【請求項１９】
回転式のディスクを備える記憶装置と前記ディスクに対してライト・バック方式またはライト・スルー方式に設定することが可能な不揮発性半導体メモリを搭載した携帯式コンピュータに、
スリープ状態の間に生成されたシステム・イベントに応答してレジューム処理を開始するステップと、
前記レジューム処理の間に前記携帯式コンピュータに振動が発生していると判断したことに応答して前記ライト・バック方式に設定するステップと、
パワー・オン状態に移行したあとにネットワークに接続して所定のプログラムが前記不揮発性半導体メモリに更新データを書き込んだあとに前記パワー・オン状態から前記スリープ状態に移行するステップと
を有する処理を実行させるためのコンピュータ・プログラム。
【請求項２０】
回転式のディスクを備える記憶装置と前記ディスクに対してライト・バック方式またはライト・スルー方式に設定することが可能な不揮発性半導体メモリを搭載した携帯式コンピュータに、
スリープ状態の間に生成されたウェイク・イベントに応答してレジューム処理を開始するステップと、
前記レジューム処理の間に前記ウェイク・イベントの種類を判断するステップと、
に前記ウェイク・イベントがシステム・イベントであると判断したことに応答して前記ライト・バック方式に設定するステップと、
パワー・オン状態に移行したあとにネットワークに接続して所定のプログラムが前記不揮発性半導体メモリに更新データを書き込んだあとに前記パワー・オン状態から前記スリープ状態に移行するステップと
を有する処理を実行させるためのコンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、回転式のディスクを備える記憶装置を搭載する携帯式コンピュータのデータをタイムリーに更新する技術に関し、さらには記憶装置の損傷防止、データ消失の危険性の軽減、またはデータ更新の確実性の向上などを図る技術に関する。
【背景技術】
【０００２】
コンピュータは、ソーシャル・ネットワーク・サービス（ＳＮＳ）、電子メール、またはニュースなどのタイムリーにデータの更新が必要なアプリケーション・プログラム（ＡＯＡＣアプリケーション）を実装する。インテル（登録商標）社では、ＡＯＡＣアプリケーションに対して常時ネットワークに接続してオン・デマンドでコミュニケーションを行うＡＯＡＣ（Always On Always connected）という利用モードを提供する。
【０００３】
ＡＯＡＣを実現する際には、コンピュータをパワー・オン状態にする必要がある。消費電力が大きな問題にならないデスクトップＰＣおよびＡＣ／ＤＣアダプタが接続されたノートブック型パーソナル・コンピュータ（ノートＰＣ）では、常時ネットワークに接続してＡＯＡＣを実現することができる。しかし、モバイル環境で動作しているノートＰＣでＡＯＡＣを実現するためにはバッテリィ・ライフを考慮したり、移動しながらネットワークに接続可能な時間を考慮したりする必要がある。
【０００４】
インテル（登録商標）社では、バッテリィの消耗を防ぎながらノートＰＣでＡＯＡＣを実現するために、インテル（登録商標）・スマート・コネクト・テクノロジー（ＩＳＣＴ）を提供する。ＩＳＣＴを導入したノートＰＣはスリープ状態のときに定期的にパワー・オン状態にウェイクする。あるいはＩＳＣＴを導入したノートＰＣがスリープ状態でさまざまな場所に移動すると、ＷｉＦｉカードが以前に接続したアクセス・ポイント（ＡＰ）を検出してノートＰＣを自動的にウェイクさせる。その後ネットワークへの接続を確立したノートＰＣは、ＡＯＡＣアプリケーションがデータを更新するＡＯＡＣ処理をしてから再びスリープ状態に遷移することで仮想的にＡＯＡＣを実現する。
【０００５】
ＡＯＡＣ処理には、ＡＯＡＣアプリケーションの実行および更新データの記憶が必要となる。したがって、大容量の記憶装置としてハードディスク・ドライブ（ＨＤＤ）を搭載するノートＰＣでは、ＡＯＡＣ処理のためにスリープ状態からのウェイクが発生するたびに、磁気ディスクがスピンアップする。ＡＯＡＣ処理のためのウェイクは、ノートＰＣがユーザとともに移動しているときにも発生するが、ノートＰＣに振動、衝撃または揺動（総称して振動）が生じた状態でスピンアップするとＨＤＤが損傷する危険性が高まる。
【０００６】
特許文献１は、振動や衝撃を検出したときに動作モードを切り換えるストレージ装置を開示する。このストレージ装置は内部にバッテリィを搭載し、主電源が停止したときにキャッシュ・メモリ、衝撃センサ、コントローラなどの電源を維持する。最も小さい振動状態のときには通常動作時のキャッシュ方式であるライト・バック方式に設定する。つぎに大きい振動状態ではライト・スルー方式に設定する。さらに大きい振動状態のときにはライト・バック方式に設定する。最大の振動を検出したときは、ストレージ装置の電源を停止して外部の補助記憶装置へデータを退避する。退避したデータはその後ストレージ装置に戻す。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００７−２００２１６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
ＨＤＤはフラッシュＳＳＤに比べてビット当たりの単価は安いが、回転機構があるため振動に対する耐性が低く消費電力も大きい。ＩＳＣＴを導入したシステムは、ＡＰを検出するとユーザの知らない間に自動的にウェイクするためＨＤＤが損傷する可能性が高い。振動を検出したときにウェイクを停止したり、ＨＤＤに対するアクセスを停止したりすることによってＨＤＤの損傷を防ぐことはできるが、タイムリーにＡＯＡＣ処理ができない事態が生ずる。
【０００９】
特に、空港や駅などを移動中においてＡＰにアクセスできる時間が短い場合には、振動が収まるまでＨＤＤに対するアクセスを停止するとデータの更新がまったくできなくなる。ＨＤＤに対してキャッシュとして機能する不揮発性半導体メモリ（ＨＤＤキャッシュ）を設けて、ＨＤＤに対するアクセス時間を短縮する技術が知られている。ＨＤＤキャッシュは、ライト・スルー方式およびライト・バック方式の２つのキャッシュ・モードのいずれかを選択して動作することができる。
【００１０】
ライト・スルー方式では書き込み時にデータをＨＤＤキャッシュと磁気ディスクの両方に書き込む。磁気ディスクに書き込まれた時点でシステムは書き込みが完了したと認識するため書き込み時間は短縮できないが、読み取りの際にはＨＤＤキャッシュにデータが保持されている限り短時間で読み取ることができる。ライト・バック方式では、書き込み時にＨＤＤキャッシュに書き込むと、システムは書き込みが完了したと認識するため短時間で書き込み処理を終了することができる。ＨＤＤキャッシュから磁気ディスクへの書き込みは、ＨＤＤキャッシュの空きが少なくなったときにシステムのアイドル時間を利用して行う。
【００１１】
ＨＤＤキャッシュと磁気ディスクの間のデータの同期は、メイン・メモリにロードされて実行されるプログラムが管理する。ＨＤＤキャッシュから磁気ディスクに書き込みデータを転送（フラッシュ）する際にシステムがハングアップしたり電源が不安定になったりすると、同期が崩れてフラッシュ前のデータが消失する危険性が高まるため、通常、システムが管理するＨＤＤキャッシュはライト・スルー方式に設定している。したがって、ＨＤＤキャッシュを設けてもＡＯＡＣ処理の際には、磁気ディスクへのアクセスが発生する。本発明は、このようなＡＯＡＣ処理から派生する諸問題を解決する方法を提供する。
【００１２】
そこで本発明の目的は、携帯式コンピュータに搭載された回転式のディスクを備える記憶装置の損傷を防止する方法を提供することにある。さらに本発明の目的は、記憶装置の損傷を防止しながら同期時のデータ消失の危険性を軽減する方法を提供することにある。さらに本発明の目的は、記憶装置の損傷を防止しながら消費電力の低減を図る方法を提供することにある。さらに本発明の目的は、記憶装置の損傷を防止しながらＡＯＡＣ処理の確実性を向上させる方法を提供することにある。さらに本発明の目的は、そのような方法を実現するコンピュータ・プログラムおよび携帯式コンピュータを提供することにある。
【課題を解決するための手段】
【００１３】
本発明は、回転式のディスクを備える記憶装置とライト・バック方式またはライト・スルー方式に設定して記憶装置のキャッシュとして機能する不揮発性半導体メモリを搭載した携帯式コンピュータのパワー・ステートを制御する方法に関する。第１の態様では、スリープ状態の間に生成された第１のシステム・イベントに応答してレジューム処理を開始する。レジューム処理の間に携帯式コンピュータに発生した加速度が所定値以上であると判断したことに応答してライト・バック方式に設定する。そしてパワー・オン状態に移行したあとに生成された第２のシステム・イベントに応答してパワー・オン状態からスリープ状態に移行する。
【００１４】
パワー・オン状態において発生する記憶装置の損傷の危険性が、レジューム処理の間に測定した加速度の大きさで判断される。そして損傷の危険性に応じてキャッシュ・モードの制御が行われる。加速度が大きい場合はライト・バック方式に設定することによりスピンアップの頻度を低下させて、記憶装置の損傷の危険性を軽減させる。また、ライト・バック方式に設定することでスピンアップの頻度が低下するため消費電力を低減することができる。
【００１５】
レジューム処理の間に加速度が所定値以下であると判断したことに応答してライト・スルー方式に設定することができる。加速度が小さい場合はライト・スルー方式に設定しても記憶装置が損傷する危険性は増大しない。しかも、ライト・スルー方式に設定すれば、フラッシュして半導体メモリが記憶するデータとディスクが記憶するデータを同期させる際にシステムのハングアップや電源の障害が発生してデータが消失する危険性をなくすことができる。
【００１６】
第１のシステム・イベントは、携帯式コンピュータが所定の無線アクセス・ポイントを検出したときに生成するようにしてもよい。あるいは携帯式コンピュータの計時装置が一定の時間間隔で生成するようにしてもよい。パワー・オン状態で携帯式コンピュータは所定のプログラムを実行して無線で接続したネットワークから更新データを取得して記憶することができる。その際にはキャッシュ・モードを選択することで、振動の有無にかかわらずレジュームできるため、無線ネットワークに接続可能な時間が短い場合でも確実に更新することができる。さらに、ライト・バック方式に設定しておけば短時間で更新データの書き込みを終了できるためタイムリーな更新の確実性を向上させることができる。
【００１７】
記憶装置は、電源が投入されたときにディスクの回転を停止させておく回転抑止機構を備え、第１のシステム・イベントを生成する前に回転抑止機構をイネーブルに設定しておくことができる。その結果、電源の投入と同時にスピンアップしないため、パワー・オン状態で保護システムが機能する前の無防備な状態でスピンアップする時間を短縮することができる。その際には、レジューム処理の間にディスクに記憶された記憶装置の初期化に必要なデータを不揮発性メモリから読み取ることでレジューム時間が遅延しないようにすることができる。
【００１８】
ユーザの操作に応答してウェイク・イベントが生成されたときにはライト・スルー方式に設定することができる。ユーザが使用する目的のユーザ・ウェイクは携帯式コンピュータが静止した状態で行われると想定できるため、同期時のデータ消失の危険性を軽減しながら記憶装置と不揮発性半導体メモリを利用することができる。パワー・オン状態において不揮発性半導体メモリの空き容量を監視し、空き容量が所定値より少ないと判断したときに不揮発性半導体メモリが記憶するデータをディスクに書き込んで所定の空き容量を確保することができる。
【００１９】
その結果、ライト・バック方式に設定して更新データを不揮発性半導体メモリにだけ書き込むことができるため、スピンアップする頻度を低下させて記憶装置が損傷する危険性を一層軽減することができる。携帯式コンピュータに電力を供給する電池の残容量を監視して、ライト・バック方式の設定を残容量が所定値より多いときに行うことができる。その結果、電源が不安定な状態でライト・バック方式に設定することにより発生する同期時のデータ消失の危険性を軽減することができる。
【００２０】
第２の態様では、スリープ状態の間に生成されたウェイク・イベントに応答してレジューム処理を開始する。レジューム処理の間にウェイク・イベントの種類を判断する。ウェイク・イベントがシステム・イベントであると判断したことに応答してライト・バック方式に設定する。そして、パワー・オン状態に移行したあとに生成されたシステム・イベントに応答してパワー・オン状態からスリープ状態に移行する。
【００２１】
システム・イベントは、携帯式コンピュータが持ち運ばれて振動しているときに生成されることが多い。この場合は、ライト・バック方式に設定することで記憶装置が損傷する危険性を軽減することができる。レジューム処理の間に携帯式コンピュータに発生する加速度の大きさを判断し、ライト・バック方式の設定を加速度が所定値以下のときに実行することができる。ウェイク・イベントがユーザ・イベントであると判断したことに応答してライト・スルー方式に設定することができる。携帯式コンピュータに電力を供給する電池の残容量が所定値より多いと判断した場合に限ってライト・バック方式に設定することができる。
【発明の効果】
【００２２】
本発明により、携帯式コンピュータに搭載された回転式のディスクを備える記憶装置の損傷を防止する方法を提供することができた。さらに本発明により、記憶装置の損傷を防止しながら同期時のデータ消失の危険性を軽減する方法を提供することができた。さらに本発明により、記憶装置の損傷を防止しながら消費電力の低減を図る方法を提供することができた。さらに本発明により、記憶装置の損傷を防止しながらＡＯＡＣ処理の確実性を向上させる方法を提供することができた。さらに本発明により、そのような方法を実現するコンピュータ・プログラムおよび携帯式のコンピュータを提供することができた。
【図面の簡単な説明】
【００２３】
【図１】ノートＰＣのハードウェア構成の一例を説明するための機能ブロック図である。
【図２】ノートＰＣのソフトウェアの構成の一例を説明する図である。
【図３】第１のＡＯＡＣ処理の実行手順を示すタイムチャートである。
【図４】第１のＡＯＡＣ処理の実行手順を示すフローチャートである。
【図５】第１のＡＯＡＣ処理の実行手順を示すフローチャートである。
【図６】第１のＡＯＡＣ処理の実行手順を示すフローチャートである。
【図７】第１のＡＯＡＣ処理の実行手順を示すフローチャートである。
【図８】第２のＡＯＡＣ処理の実行手順を示すタイムチャートである。
【図９】第２のＡＯＡＣ処理の実行手順を示すフローチャートである。
【図１０】第２のＡＯＡＣ処理の実行手順を示すフローチャートである。
【図１１】第２のＡＯＡＣ処理の実行手順を示すフローチャートである。
【図１２】第２のＡＯＡＣ処理の実行手順を示すフローチャートである。
【発明を実施するための形態】
【００２４】
［ノートＰＣの構成とパワー・ステート］
図１は、ノートＰＣ１０のハードウェア構成の一例を説明するための機能ブロック図で、図２は磁気ディスク２４に格納されたプログラムの一例を説明する図である。多くのハードウェアの構成は周知であるため、ここでは本発明の理解に必要な範囲で説明する。最初にノートＰＣ１０のパワー・ステートについて説明する。ノートＰＣ１０は、ＡＣＰＩ（Advanced Configuration and Power Interface）の省電力機能に対応している。ＡＣＰＩでは、Ｓ１ステートからＳ４ステートまでの４つのスリーピング・ステート（スリープ状態）、Ｓ０ステート（パワー・オン状態）、およびＳ５ステート（パワー・オフ状態またはソフト・オフ状態）を定義している。
【００２５】
ＡＣＰＩのスリーピング・ステートのなかでノートＰＣ１０は、一例としてＳ３ステートとＳ４ステートだけを定義しているが他のスリーピング・ステートを定義してもよい。また、Ｓ５ステートは独立して定義しないでＳ４ステートの中に含めるようにしてもよい。スリープ状態のときはＣＰＵ１１およびＨＤＤ２３の電源が必ず停止する。したがって、スリープ状態からウェイク・アップするときはＨＤＤ２３がリセットされる。Ｓ３ステート（サスペンド状態）では、メイン・メモリ１３の記憶保持とノートＰＣ１０の電源を投入するのに必要なデバイス以外のデバイスに対する電力を停止する。サスペンド状態に入る際にＯＳは、電源が停止するＣＰＵ１１およびその他のデバイスのキャッシュやレジスタなどが記憶していたシステム・コンテキストをメイン・メモリ１３に退避し、パワー・オン状態に戻ったときにそれを各デバイスにリストアする。
【００２６】
Ｓ４ステート（ハイバネーション状態）は、ＡＣＰＩでサポートされるスリーピング・ステートの中で最もレイテンシィが長く、かつ消費電力が少ないパワー・ステートである。ノートＰＣ１０がパワー・オン状態からハイバネーション状態に遷移する際には、ＯＳがＨＤＤ２３またはフラッシュ・メモリ１９のハイバネーション領域などにメイン・メモリ１３が記憶するハイバネーション・データを格納してからパワー・コントローラ３３などの電源の投入に必要なデバイス以外のデバイスに対する電力を停止する。
【００２７】
Ｓ５ステートはいわゆるソフト・オフともいわれ、ＯＳがハイバネーション・データをＨＤＤ２３などに格納しない点を除いては基本的に電力を供給するデバイスの範囲はＳ４ステートと同じである。なお、本発明におけるＳ４ステートには、ＯＳがＳ３ステートに遷移させてから所定の時間が経過したときにシステム・ファームウェアが自動的にＳ４ステートに遷移させる状態も含む。この場合は、ＯＳはシステムがＳ３ステートに遷移していると認識するが、実際のパワー・ステートはＳ４ステートとなる。以後、スリープ状態とパワー・オフ状態を総称するときはＳｘステートという。
【００２８】
チップ・セットとして構成されるプラットフォーム・コントロール・ハブ（ＰＣＨ）１７にはＣＰＵ１１、フラッシュ・メモリ１９、ＨＤＤ２３、ＷｉＦｉカード２６、ファームウェアＲＯＭ２５およびエンベデッド・コントローラ（ＥＣ）２７が接続されている。チップ・セットはＰＣＨ１７に代えて、ＩＣＨとＭＣＨで構成したりＩＯＨとＩＣＨで構成したりすることができる。ＣＰＵ１１にはメイン・メモリ１３およびＬＣＤ１５が接続されている。ＰＣＨ１７は、さまざまな規格のインターフェース機能を備えており、図１では代表的にＳＡＴＡコントローラにフラッシュ・メモリ１９が接続され、ＳＡＴＡコントローラにＨＤＤ２３が接続され、ＰＣＩにＷｉＦｉカード２６が接続され、ＳＰＩにファームウェアＲＯＭ２５が接続され、ＬＰＣにＥＣ２７が接続されている。
【００２９】
フラッシュ・メモリ１９はｍＳＡＴＡのインターフェースを含むシステム・オン・チップ（ＳＯＣ）を含んで構成されており、一例ではＨＤＤ２３のキャッシュとして利用するキャッシュ領域とＳ４ステートに遷移させるときのハイバネーション・データ記憶するハイバネーション領域の２つのパーティションで区切られている。フラッシュ・メモリ１９がハイバネーション領域を含まない場合は、ＨＤＤ２３がハイバネーション・データを記憶することができる。フラッシュ・メモリ１９の通常の使用では、キャッシュ領域をライト・スルー方式に設定し、ハイバネーション領域をライト・バック方式に設定する。
【００３０】
図２に示すように、ＨＤＤ２３はＡＰＳアプリケーション８０、メーラーやＳＮＳアプリケーションなどのＡＯＡＣアプリケーション８１、パワー・マネジメント（ＰＭ）ユーティリティ８３、ＯＳ８５、デバイス・ドライバ８７およびユーザ・データなどを記憶する磁気ディスク２４を含む。ＨＤＤ２３はブート・ディスク・ドライブでノートＰＣ１０がレジュームするときにロードされるブート・ファイルを格納している。ＨＤＤ２３は内部に、パワー・アップ・イン・スタンバイ（Power Up in Standby：ＰＵＩＳ）の設定をするフラッシュ・メモリを含む。
【００３１】
ファームウェアＲＯＭ２５は、不揮発性で記憶内容の電気的な書き替えが可能な半導体メモリでコード領域とデータ領域を含む。コード領域は複数のコード群で構成されたＵＥＦＩ（Unified Extensible Firmware Interface）ファームウェア（以後、ＵＥＦＩファームウェア）を格納する。ＵＥＦＩファームウェアはＵＥＦＩファームウェア・フォーラムが策定したＢＩＯＳに代わってまたはＢＩＯＳに加えて使用する新しい仕様のシステム・ファームウェアである。ＵＥＦＩファームウェアは、ノートＰＣ１０がパワー・オフ状態またはスリープ状態からパワー・オン状態にレジュームする際に、ＣＰＵ１１がパワー・オン・リセットされると必ず最初に実行される。
【００３２】
ＵＥＦＩファームウェアは、レジュームする際に自身のコードに対する改変の有無を検査したり、パスワード認証をしたりデバイスを初期化したりするいわゆるＰＯＳＴ（Power On Self Test）を実行する。ＵＥＦＩファームウェアはシステムがレジュームするときの遷移元のパワー・ステートに応じてＰＯＳＴの内容を変えることができる。たとえば、Ｓ５ステートからレジュームする際には、すべてのデバイスからパラメータを取得してインターフェースに設定する完全なＰＯＳＴを実行する。
【００３３】
また、Ｓ４ステートからレジュームする際には一部のデバイスのＰＯＳＴをＯＳに委ねたり以前に設定していたパラメータをデバイスにリストアしたりしてＰＯＳＴ時間を短縮する。Ｓ３ステートからレジュームするときは短時間で終了できるようにより簡素なＰＯＳＴを実行する。データ領域は、レジュームする際にＵＥＦＩファームウェアが使用するＨＤＤデータを格納する。ＨＤＤデータは、スリープ状態からパワー・オン状態にレジュームする際に、ＨＤＤ２３のＰＯＳＴをするために、従来はＵＥＦＩファームウェアが磁気ディスク２４から読み取っていたデータである。ＵＥＦＩファームウェアは、システムにＨＤＤ２３を使用させるためにＨＤＤ２３のＰＯＳＴを終了してからレジュームの間またはレジュームの後にＨＤＤデータを必要とする。
【００３４】
ＵＥＦＩファームウェアは、ＰＵＩＳをイネーブルに設定したときにファームウェアＲＯＭ２５のデータ領域からＨＤＤデータを読み取ることができる。なお、ＵＥＦＩファームウェアがＨＤＤデータを格納する領域は、ファームウェアＲＯＭ２５に限定する必要はなく、ＵＥＦＩファームウェアがＰＯＳＴ中にアクセスできるフラッシュ・メモリ１９やＨＤＤ２３に収納されたフラッシュ・メモリなどのような他の不揮発性メモリとすることもできる。
【００３５】
レジュームの際に電源が投入されたＨＤＤ２３は、内部のＣＰＵがパワー・オン・リセットしてスピンドル・モータが動作し磁気ディスク２４を回転させる。このＨＤＤ２３の動作をスピンアップという。パワー・オン状態のＨＤＤ２３はシステムからのコマンドまたは独自のアルゴリズムで、アクティブ、アイドル、スタンバイ、またはスリープなどのパワー・マネジメント動作を実行して消費電力の低減を図る。スタンバイとスリープではスピンドル・モータが停止して磁気ディスク２４の回転が停止する。このＨＤＤ２３の動作をスピンダウンという。スピンダウンの間はヘッドがランプ機構に退避しているためＨＤＤ２３の耐衝撃性は向上する。
【００３６】
電源が投入されたＨＤＤ２３にスピンダウンを維持させる方法として、ＡＴＡではＰＵＩＳという動作モードを規定する。磁気ディスク２４には、定格容量、メーカ名、型式、パーティション情報、回転式であることを示す情報、ＰＵＩＳのサポートの有無などのＨＤＤ２３を特定する固有のデータ（ＨＤＤデータ）が記憶されている。ＵＥＦＩファームウェアはＨＤＤ２３のＰＯＳＴを完了するために磁気ディスク２４からＨＤＤデータを読み取る必要がある。またＨＤＤ２３はＰＯＳＴ時に、ＵＥＦＩファームウェアにレディ信号を送る前にスピンアップして自主検査をする必要がある。ＵＥＦＩファームウェアはスピンアップしたＨＤＤ２３からレディ信号を受け取ればその後磁気ディスク２４からＨＤＤデータを読み取ることができる。
【００３７】
ＨＤＤ２３がスピンアップしている間にノートＰＣ１０に衝撃が加えられるとＨＤＤ２３が損傷する可能性がある。ＡＰＳアプリケーション８０は、ノートＰＣ１０がパワー・オン状態のときに加速度センサ２９が検出した加速度を所定のアルゴリズムで処理して、大きな衝撃の可能性を予知したときにヘッドをランプ機構に退避させる衝撃対応システム（Ｓ０＿ＡＰＳ）を構成する。衝撃対応システムの一例が特開２００４−１４６０３６号公報に開示されている。Ｓ０＿ＡＰＳは、危険な衝撃を予測したときだけヘッドを退避させることで、必要以上にＨＤＤ２３の動作を停止させないようにしている。
【００３８】
システムがレディ信号を受け取ってＨＤＤ２３を認識するためには、レジュームの際にＨＤＤ２３をスピンアップさせてＨＤＤデータを読み取る必要がある。しかし、ＯＳが実行される前はＳ０＿ＡＰＳが機能しないため、特に移動中にレジュームするときに電源の投入からＳ０＿ＡＰＳが機能するまでの間にＨＤＤ２３が損傷する危険性が高まる。ＵＥＦＩファームウェアまたはＯＳがＰＵＩＳをイネーブルに設定すると、電源が投入されたりリセットされたりしたときにＨＤＤ２３はスピンダウンを維持する。イネーブルに設定されたＰＵＩＳは、ＨＤＤ２３がその後ディスエーブルに設定するコマンドを受け取らない限りディスエーブルに戻らない。
【００３９】
ＰＵＩＳをイネーブルに設定すればウェイク・アップしてＨＤＤ２３に電力を供給したときにスピンダウンを維持して衝撃による損傷を防ぐことはできる。しかし、ＰＯＳＴを終了するにはＵＥＦＩファームウェアがＨＤＤ２３にコマンドを送ってスピンアップさせレディ信号を受け取った後にＨＤＤデータを読み取る必要がある。この手順はＰＯＳＴ時間の延長をもたらす。また、ユーザがシステムを利用するためにレジュームさせるときは、できるだけ短時間でＰＯＳＴを終了する必要がある。本実施の形態では、各レジュームのタイミングでＰＵＩＳをイネーブルに設定しかつ磁気ディスク２４に代えてファームウェアＲＯＭ２５にあらかじめ格納して置いたＨＤＤデータを読み取ることでＳ０＿ＡＰＳが機能する前のＨＤＤの損傷防止とレジューム時間の短縮を両立させることができる。
【００４０】
ＰＣＨ１７は、ＲＴＣ（Real Time Clock）５０とＲＴＣメモリ５１を含んでいる。ＲＴＣ５０およびＲＴＣメモリ５１は、ＡＣ／ＤＣアダプタ３９および電池パック４１の電力が停止して、ＰＣＨ１７にＤＣ／ＤＣコンバータ３７から電力が供給されないときにボタン電池から電力の供給を受けることができる。ＲＴＣメモリ５１は、ＵＥＦＩファームウェアがデバイスに設定するセット・アップ・データおよびＲＴＣ５０が生成した時間情報などを記憶する揮発性メモリである。
【００４１】
ユーザはＵＥＦＩファームウェアのセット・アップ・コードを通じてＲＴＣメモリ５１に、ＡＯＡＣ処理をイネーブルにする設定、およびその他のＡＯＡＣ処理に関するさまざまな設定情報を記憶する。スリープ状態のシステムが自動的にＡＯＡＣ処理のためのウェイクをすると、Ｓ０ステートに遷移してからＡＯＡＣアプリケーション８１がデータを更新してスリープ状態に戻る。ＡＯＡＣ処理のためにウェイクしたパワー・ステートはＳ０ステートであるが、ＡＯＡＣ処理が終了すると自動的にスリープ状態に遷移する特別なＳ０ステートである点に着目してこれをＡＯＡＣ＿Ｓ０ステートということにする。
【００４２】
ＡＯＡＣ処理は、ＡＯＡＣ＿Ｓ０ステートでＡＯＡＣアプリケーション８１がネットワークに接続してデータを更新する作業に相当する。ＡＯＡＣ＿Ｓ０ステートでは、ユーザがマウスやキーボードでシステムにアクセスしない場合にＡＯＡＣ処理が終了するとシステムは自動的にスリープ状態に遷移する。スリープ状態のときにユーザによるパワー・ボタン３５の押下またはリッド・センサ３６の動作により電源が投入されてパワー・オン状態に移行することをユーザ・ウェイクといい、そのときに生成されるイベントをユーザ・イベントということにする。
【００４３】
ユーザ・イベントは、ユーザがシステムを使用する際に生成される。なお、ユーザ・イベントには、パワー・オン状態においてユーザがマウスまたはキーボードなどの入力デバイスを操作したときに生成されるイベントも含む。また、システムが同様のことを行う場合をシステム・ウェイクおよびシステム・イベントということにする。システム・ウェイクは、システムがパワー・マネジメントをしたりＡＯＡＣ処理をしたりするために行う。
【００４４】
ＡＯＡＣ処理のためのシステム・ウェイクをＡＯＡＣウェイクといいそのときに生成されるシステム・イベントをＡＯＡＣイベントということにする。システム・イベントは、ＷｉＦｉカード２６またはＲＴＣ５０のいずれかが生成することができる。ＡＯＡＣイベントは、ＷｉＦｉカード２６が所定のＡＰが発信するＳＳＩＤを検出したときに生成することができる。さらに、ＲＴＣ５０が所定の時刻または所定の周期で生成することができる。なお、ユーザ・イベントおよびシステム・イベントの用語は、システムをパワー・オン状態からスリープ状態に遷移させるためのスリープ・イベントにも適用する。
【００４５】
ＰＣＨ１７は、スリープ状態の間も記憶が維持されるレジスタ５３、５５、５７、５９を含む。レジスタ５３は、ＡＣＰＩに規定するＳＬＰ＿ＴＹＰレジスタおよびＳＬＰ＿ＥＮレジスタに相当する。レジスタ５３はＳ０ステートからＳｘステートに遷移する際にＯＳにより設定される。ＯＳは、システムがＳｘステートに遷移する準備が完了したときにレジスタ５３に遷移先のパワー・ステートを設定する。レジスタ５３に遷移先のパワー・ステートが設定されるとＰＣＨ１７はＥＣ２７を通じてシステムを設定されたパワー・ステートに遷移させる。
【００４６】
ＵＥＦＩファームウェアはＳｘステートからレジュームする際にレジスタ５３を参照し、遷移元のパワー・ステートに応じてＰＯＳＴの実行パスを決定する。ＵＥＦＩファームウェアが選択するＰＯＳＴの実行パスでは、遷移元のパワー・ステートがＳ５ステートのときにＰＯＳＴ時間が最大になり、Ｓ３ステートのときに最小になる。レジスタ５５には、ＲＴＣ５０またはＷｉＦｉカード２６がＡＯＡＣイベントを生成したときにウェイク・ビットが設定される。
【００４７】
ＰＣＨ１７は、スリープ状態のときにレジスタ５７にウェイク・ビットが設定されると、ＥＣ２７を通じて各デバイスに電力を供給する。レジスタ５７には、ＥＣ２７により加速度フラグが設定される。レジスタ５９には、ＡＯＡＣイベントが生成されたときにＡＯＡＣフラグが設定される。ＵＥＦＩファームウェアは、ＡＯＡＣイベントでレジュームするときにＡＯＡＣフラグを設定し、ユーザ・イベントでレジュームするときまたはＡＯＡＣ＿Ｓ０ステートでユーザ・イベントが生成されたときにＡＯＡＣフラグを解除する。
【００４８】
ＰＣＨ１７は、フラッシュ・メモリ１９をＨＤＤ２３のキャッシュとして機能させるためのキャッシュ・コントローラ５３を含む。キャッシュ・コントローラ５３は、フラッシュ・メモリ１９のＨＤＤ２３に対するキャッシュ・モードをライト・バック方式またはライト・スルー方式のいずれかのキャッシュ・モードに設定することができる。ＵＥＦＩファームウェアはレジュームの際にキャッシュ・モードの設定を行うことができる。
【００４９】
ＥＣ２７には、加速度センサ２９およびパワー・コントローラ３３が接続されている。ＥＣ２７は、ＣＰＵ、ＲＯＭ、ＲＡＭなどで構成されたマイクロ・コンピュータである。ＥＣ２７は、ノートＰＣ１０の内部の動作環境の管理にかかるプログラムをＣＰＵ１１とは独立して実行することができる。ＥＣ２７は、パワー・コントローラ３３を通じてＤＣ／ＤＣコンバータ３７の動作を制御する。ＥＣ２７は定期的に電池パック４１と通信して電池の残容量データを取得する。
【００５０】
加速度センサ２９は、ノートＰＣ１０に発生する加速度をＥＣ２７に出力する。加速度センサ２９とＡＰＳアプリケーション８０が構成するＳ０＿ＡＰＳは、レジュームの際にＯＳが実行されるまでは機能しない。ただし、ＥＣ２７および加速度センサ２９に電源が投入されるとＥＣ２７は加速度の大きさを検出することができる。本実施の形態ではこの加速度を、キャッシュ・モードの選択に利用する。
【００５１】
この機構をＳ０＿ＡＰＳと区別するためにＳ３＿ＡＰＳということにする。Ｓ３＿ＡＰＳはＳ０＿ＡＰＳと異なり複雑なアルゴリズムを採用できないためＨＤＤ２３のスピンアップの制御に利用すると必要以上にスピンダウンさせる場合があるが、キャッシュ・モードの選択に利用する上では支障なく機能する。Ｓ３＿ＡＰＳのイネーブル／ディスエーブルはＵＥＦＩファームウェアがレジスタ６１に設定する。ＥＣ２７はＳ３＿ＡＰＳがイネーブルに設定されると、レジュームの際に加速度センサ２９から取得した加速度が所定値を越えたときにレジスタ５７に加速度フラグを設定する。ＥＣ２７は所定の時間、加速度が閾値より低下したときに加速度フラグをリセットする。
【００５２】
パワー・コントローラ３３には、パワー・ボタン３５、リッド・センサ３６およびＤＣ／ＤＣコンバータ３７の制御回路が接続されている。パワー・コントローラ３３は、ＥＣ２７からの指示に基づいてＤＣ／ＤＣコンバータ３７を制御するワイヤード・ロジックのディジタル制御回路（ＡＳＩＣ）である。パワー・コントローラ３３は、ウェイク・ビットを設定するレジスタ６３を備えている。
【００５３】
パワー・コントローラ３３は、ノートＰＣ１０をレジュームさせるためにＳｘステートでも電力が維持される。レジスタ６３のウェイク・ビットは、パワー・ボタン３５の押下またはリッド・センサ３６の動作があったときにパワー・コントローラ３３の論理回路が設定する。パワー・ボタン３５またはリッド・センサ３６の信号はユーザ・イベントに相当する。
【００５４】
ＡＣ／ＤＣアダプタ３９および電池パック４１は、ノートＰＣ１０の電力源である。ＤＣ／ＤＣコンバータ３７は、ＡＣ／ＤＣアダプタ３９または電池パック４１から供給される直流電圧を、ノートＰＣ１０を動作させるために必要な複数の電圧に変換し、さらにパワー・ステートに応じて定義された電力供給区分に基づいて各々のデバイスに電力を供給する。
【００５５】
［ＡＯＡＣ処理の基本的な原理］
本実施の形態は、ＡＯＡＣ処理において発生する諸問題を解決するために以下のような特徴を有する。ウェイクの種類と振動の可能性の関係について、ユーザ・ウェイクはユーザが使用する状態であるため振動の可能性は低いと想定し、ＡＯＡＣウェイクはユーザの使用の意図から離れて不意に発生するため振動の可能性が高いと想定する。
【００５６】
ＰＯＳＴ中のスピンアップによるＨＤＤの損傷を防止するために、電源を投入してからＳ０＿ＡＰＳが機能するまでの間のＳ０＿ＡＰＳによる保護がない状態でスピンアップする時間は極力短くすることが望ましい。そのために、ＰＵＩＳをイネーブルに設定して電源の投入と同時にスピンアップしないようにする。また、ＰＵＩＳをイネーブルに設定することでＰＯＳＴ時間が遅延しないようにするために、あらかじめＨＤＤデータをファームウェアＲＯＭ２５に格納しておく。
【００５７】
ＰＯＳＴ時間の短縮は、結果としてＡＰとの接続時間が短くてもＡＯＡＣ処理の確実性を高めることになるとともに消費電力の低減をもたらす。ＡＯＡＣ＿Ｓ０ステート中のスピンアップによるＨＤＤが損傷する危険性の軽減と、ライト・バック方式を採用したときに生ずる同期時にデータが消失する危険性の軽減を調和するためにＳＯ＿ＡＰＳに加えて以下の２つの方法のいずれかを採用する。第１の方法ではＰＯＳＴの間に振動の有無を検査して、振動がない場合はフラッシュ・メモリ１９をライト・スルー方式に設定し振動がある場合はライト・バック方式に設定する。振動がない場合は、ライト・スルー方式に設定することで同期時にデータが消失する危険性の軽減を優先する。また振動がある場合は、ライト・バック方式に設定することでスピンアップの頻度を低減してＨＤＤが損傷する危険性の軽減を優先する。
【００５８】
ライト・バック方式に設定すると、Ｓ０＿ＡＰＳが機能してスピンアップしない場合でも、フラッシュ・メモリ１９に空きスペースがある限りそこに更新データを書き込んでＡＯＡＣ処理をすることができる。ライト・バック方式に設定したときにスピンアップの頻度を低下させるためには、ＡＯＡＣ＿Ｓ０ステートに遷移する前にフラッシュ・メモリ１９の空きスペースを十分に確保しておく必要がある。本実施の形態では、ＡＯＡＣ＿Ｓ０ステートの間にフラッシュのタイミングを設けてスピンアップの頻度を低減する。
【００５９】
第１の方法ではＰＯＳＴ中に振動がないと判断してライト・スルー方式に設定したときに、ＡＯＡＣ＿Ｓ０ステート中に振動が発生するとＳ０＿ＡＰＳが機能してＡＯＡＣ処理が停滞する。第２の方法は、ＡＯＡＣウェイクが連続して継続する限りユーザ・ウェイクが発生するまでライト・バック方式に設定する。ライト・バック方式に設定しておけば、書き込み時間を短縮することができる。また、フラッシュ・メモリ１９に空きスペースがある限りＳ０＿ＡＰＳが機能してもＡＯＡＣ処理をすることができるため、書き込み時間を短縮することでＡＯＡＣ処理の確実性を向上しかつ消費電力の低減を図ることができる。第２の方法は、持続的な振動が予想されかつＡＰに接続する時間が短いような場合に特に有効である。
【００６０】
［第１の方法］
図３はＡＯＡＣ処理の第１の方法を説明するタイムチャートで、図４〜図７はそれに対応する手順を示すフローチャートである。なおフローチャートに記述した時刻ｔ０〜ｔ７は、フローチャートの説明の便宜のために付記したもので、手順と図に記述した時刻のタイミングは一致しない場合がある。図４のブロック１０１でシステムは、Ｓ０ステートに遷移している。ＰＵＩＳはディスエーブルに設定され、キャッシュ・コントローラ５３のキャッシュ・モードはライト・スルー方式に設定されＳ３＿ＡＰＳはディスエーブルに設定されている。ＣＰＵ１１がＯＳ８５およびＡＰＳアプリケーション８０を実行しているため、Ｓ０＿ＡＰＳは有効に機能している。
【００６１】
ブロック１０３では、時刻ｔ０にＳ３ステートへ移行するスリープ・イベントが生成される。スリープ・イベントはＯＳ８５が所定のアイドル時間を計測したときに生成するシステム・イベントまたはパワー・ボタン３５の押下、リッド・センサ３６の動作またはＧＵＩの操作により生成するユーザ・イベントなどとすることができる。ブロック１０５でＯＳ８５はＵＥＦＩファームウェアを経由してレジスタ６１にＳ３＿ＡＰＳイネーブルを設定し、ブロック１０７でＨＤＤ２３をＰＵＩＳイネーブルに設定する。
【００６２】
ブロック１０９で、ＯＳ８５はシステム・コンテキストをメイン・メモリ１３に保存して各アプリケーションからＳ３ステートへ遷移準備の完了通知を受け取ると、レジスタ５３にＳ３ビットを設定する。レジスタ５３が設定されたＰＣＨ１７はＥＣ２７にメイン・メモリ１３の記憶保持に必要のないデバイスおよびＡＯＡＣイベントを生成するのに必要のないデバイスの電源を停止するように指示する。なお、電源の投入に必要なＰＣＨ１７の一部の機能およびパワー・コントローラ３３にはＳ３ステートの間も電力が供給される。システムがＳ３ステートに遷移するとＡＰＳアプリケーション８０は動作が停止するためＳ０＿ＡＰＳの機能が停止する。
【００６３】
このあと、ユーザがノートＰＣ１０を鞄に入れて持ち運ぶシナリオを想定する。ブロック１１１ではスリープ状態からレジュームするためのウェイク・イベントが生成される（時刻ｔ１、ｔ３、ｔ５、ｔ７）。ウェイク・イベントは、ユーザが使用を目的とするためのユーザ・イベントとシステムがＡＯＡＣ処理をするためのシステム・イベント（ＡＯＡＣイベント）を含む。図５のブロック２０１ではいずれのウェイク・イベントであってもＳ０ステートで動作するデバイスに電力が供給される。
【００６４】
ＥＣ２７は、Ｓ３＿ＡＰＳを実現するために加速度センサ２９の出力を監視して所定の閾値を超えたときにはレジスタ５７に加速度フラグを設定してＰＣＨ１７に通知する。ＥＣ２７は、所定の時間加速度が閾値を下回ったときに加速度フラグを解除する。電力が供給されたＨＤＤ２３は内部のＣＰＵがリセット動作を開始するが、ＰＵＩＳがイネーブルに設定されているため、電源が投入された直後はそれ以降にスピンアップ・コマンドを受け取るまでスピンダウンを維持する。
【００６５】
ＵＥＦＩファームウェアは、ＣＰＵ１１およびメイン・メモリ１３などのＰＯＳＴの実行開始に最低限必要な基本的なデバイスを初期化し、さらにプラットフォームの一貫性を検証する。ブロック２０３でＵＥＦＩファームウェアは、ＰＣＨ１７、フラッシュ・メモリ１９、およびＨＤＤ２３などのデバイスのインターフェースを検査してから、それらにＲＴＣメモリ５１に格納しておいたパラメータを設定して初期化する。その後ＵＥＦＩファームウェアはＨＤＤ２３を含む各デバイスからのレディ信号を待つ。
【００６６】
ブロック２０５でＵＥＦＩファームウェアはファームウェアＲＯＭ２５のデータ領域からＨＤＤデータを読み取る。ＵＥＦＩファームウェアはファームウェアＲＯＭ２５から読み取ったＨＤＤデータを利用してＰＯＳＴを行いブロック２０７に移行する。ブロック２０７でＵＥＦＩファームウェアはＰＣＨ１７のレジスタ５５およびパワー・コントローラ３３のレジスタ６３を参照してウェイク・イベントの種類を検査する。ＲＴＣメモリ５１でＡＯＡＣ処理がイネーブルに設定されかつレジスタ５５にウェイク・ビットが設定されているときはＡＯＡＣウェイクであると判断してブロック２０９に移行する（時刻ｔ１、ｔ３、ｔ５）。レジスタ６３にウェイク・ビットが設定されているときはユーザ・ウェイクであると判断して図７のブロック４０１に移行する（時刻ｔ７）。
【００６７】
ブロック２０９でＵＥＦＩファームウェアは、振動が発生してレジスタ５７に加速度フラグが設定されているか否かを確認する。ブロック２１１でＵＥＦＩファームウェアは加速度フラグが設定されていると判断したときはブロック２１３に移行し（時刻ｔ１、ｔ５）、設定されていないと判断したときはブロック２３１に移行する（時刻ｔ３）。ＵＥＦＩファームウェアはブロック２１３で、ＥＣ２７に電池パック４１の残容量を問い合わせる。ＵＥＦＩファームウェアは、電池パック４１の残容量が所定の閾値よりも多いと判断したときはブロック２１５に移行し、少ないと判断したときはブロック２１１に戻る。
【００６８】
ブロック２１５でＵＥＦＩファームウェアは、キャッシュ・コントローラ５３をライト・バック方式に設定し、ブロック２３１でライト・スルー方式に設定する。ブロック２１１、２１３の手順により、振動がないときはライト・スルー方式に設定され、振動がありかつ電池パック４１の残容量が多いときは、ライト・スルー方式に設定される。ＵＥＦＩファームウェアは振動がありかつ電池パック４１の残容量が少ないときは、静止するまでＰＯＳＴを中断する。ＵＥＦＩファームウェアは電池容量が少ないときは電源が不安定になる可能性があるため、ライト・スルー方式に設定する。
【００６９】
ブロック２１７でＵＥＦＩファームウェアは、システムがＡＯＡＣ処理のためにウェイクしたことをＡＯＡＣアプリケーション８１に知らせるためのＡＯＡＣフラグをレジスタ５９に設定する。ブロック２１９でＵＥＦＩファームウェアは、レジスタ６１をＳ３＿ＡＰＳディスエーブルに設定して、Ｓ３＿ＡＰＳの機能をブロック２１１で振動の判断に利用したあとは次回のレジュームまで停止させる。
【００７０】
ブロック２２１でＵＥＦＩファームウェアがＨＤＤ２３にスピンアップ・コマンドを送るとＨＤＤ２３はスピンアップする。スピンアップを開始したＨＤＤ２３はヘッドを駆動するアクチュエータや磁気ディスク２４を回転させるスピンドル・モータなどのサーボ系の自主検査を行う。このサーボ系の検査は電子回路系の検査に比べて時間がかかる。ＨＤＤ２３は、サーボ系の自主検査を終了するとＵＥＦＩファームウェアにレディ信号を送る。
【００７１】
ここまでの手順において、ＰＵＩＳをイネーブルに設定することによりブロック２０１からブロック２１９まではＨＤＤ２３がスピンアップしない。スピンアップはブロック２２１で開始するため、Ｓ０＿ＡＰＳが機能しない時間帯でスピンアップしている時間を短くして振動によりＨＤＤ２３が損傷する危険性を軽減することができる。ただし、レジュームはユーザ・イベントでも行われる。ユーザ・イベントによるレジュームの際にスピンアップのタイミングを遅らせるとＰＯＳＴ時間が遅延するためユーザのストレスとなる。
【００７２】
ユーザ・イベントのときのＰＯＳＴ時間の遅延を防ぐため、ブロック２０５でＵＥＦＩファームウェアはＰＵＩＳをイネーブルに設定したときにスピンアップ・コマンド送ってＨＤＤ２３からレディ信号を受け取ったあとにＨＤＤデータを磁気ディスク２４から読み取ることはしない。ＵＥＦＩファームウェアは、レディ信号を受け取る前にファームウェアＲＯＭ２５に格納したＨＤＤデータを利用してＰＯＳＴを進めておき、ＰＯＳＴが進んだ段階でスピンアップさせてレディ信号を受け取るようにして、ＰＵＩＳをイネーブルに設定することによるＰＯＳＴ時間の遅延を抑制する。
【００７３】
図６のブロック３０１でＵＥＦＩファームウェアは、各デバイスからレディ信号を受け取りそれらの利用が可能になったことを確認する。すべてのデバイスからレディ信号を受け取るとレジューム処理はＵＥＦＩファームウェアからＯＳに引き継がれる。ＵＥＦＩファームウェアはＯＳにＰＯＳＴを引き継ぐ際にＡＯＡＣアプリケーション８１にＡＯＡＣウェイクであることを通知する。
【００７４】
ＯＳはシステムを図４のブロック１０１の状態に戻すために、システム・コンテキストをＣＰＵ１１やその他のデバイスのキャッシュ、レジスタなどにリストアする。ブロック３０３でシステムはＡＯＡＣ＿Ｓ０ステートに遷移する。ＡＯＡＣ＿ＳＯステートではシステムがブロック１０１の状態に戻って、ＡＯＡＣアプリケーション８１は、ＷｉＦｉカード２６を通じてネットワークにアクセスして更新処理を開始する。
【００７５】
ブロック３０５でＡＯＡＣアプリケーション８１は更新作業を開始する。キャッシュ・コントローラ５３は、この時点で、ＡＯＡＣ＿ＳＯステートに遷移する前に振動がないときはライト・スルー方式に設定され振動があるときはライト・バック方式に設定されている。ライト・スルー方式に設定されているときは、ＨＤＤ２３への書き込みの際に磁気ディスク２４がスピンアップするが、振動がないためＨＤＤ２３が損傷する危険性を生じさせないようにしながら同期時のデータ消失の危険性を軽減することができる。
【００７６】
ライト・バック方式に設定されているときは、フラッシュ・メモリ１９に空き容量があれば更新データがフラッシュ・メモリ１９にだけ書き込まれるため磁気ディスク２４はスピンアップしない。振動があるときは、ライト・スルー方式に設定するよりもライト・バック方式に設定して、ＨＤＤ損傷の危険性を軽減した方が有利である。したがって、ＡＯＡＣ＿Ｓ０ステートでは、振動の有無にかかわらずＡＯＡＣ処理をすることができ、かつ、ＨＤＤの損傷防止と同期時に更新データが消失する危険性の軽減の調和を図ることができる。
【００７７】
ブロック３０７で、ＰＭユーティリティ８３は、ＯＳ８５を通じてキャッシュ・コントローラ５３にフラッシュ・メモリ１９の空き容量を問い合わせる。フラッシュ・メモリ１９の空き容量が所定値未満になったときは、ブロック３０９に移行し空き容量に余裕があるときはブロック３１５に移行する。ブロック３０９でＰＭユーティリティ８３は、ＯＳ８５を通じてキャッシュ・コントローラ５３に現在のキャッシュ・モードを問い合わせる。振動がないことを前提にしたライト・スルー方式に設定されているときはブロック３１１に移行し、振動があることを前提にしたライト・バック方式に設定されているときはブロック３１５に移行する。
【００７８】
ブロック３１１でＰＭユーティリティ８３は、ＵＥＦＩファームウェアを通じてＥＣ２７に電池パック４１の残容量を問い合わせる。電池パック４１の残容量が多いときはブロック３１３に移行し、少ないときはブロック３１５に移行する。ブロック３１３で、ＰＭユーティリティ８３はＯＳ８５を通じてキャッシュ・コントローラ５３にフラッシュ・メモリ１９をフラッシュするように要求する。その結果、フラッシュ・メモリ１９の所定のデータが磁気ディスク２４に書き込まれて、空き容量が形成される。フラッシュ・メモリ１９の空き容量に余裕があるとき、電池パック４１の残容量が少ないときまたはライト・バック方式に設定されているときは今回のＡＯＡＣ＿Ｓ０ステートではフラッシュしないで、それ以降にＡＯＡＣ＿Ｓ０ステートに遷移した機会に行う。
【００７９】
ユーザは、システムがＡＯＡＣ＿Ｓ０ステートに遷移したことを利用して引き続きノートＰＣ１０を利用する場合がある。この場合、システムをＳ０ステートに遷移させる必要がある。ブロック３１５で、ＰＭユーティリティ８３はユーザ・イベントの有無を監視する。ユーザがマウスまたはキーボードによる操作をしてユーザ・イベントが生成したときは図７のブロック４１１に移行し、ユーザ・イベントを生成しないときはブロック３１７に移行する。ブロック３１７でＡＯＡＣ処理が完了したと判断したＰＭユーティリティ８３がスリープ・イベント（システム・イベント）を生成して（時刻ｔ２、ｔ４、ｔ６）、ＯＳ８５にＳ３ステートに遷移するように要求すると、ブロック３１９でシステムはＳ３ステートに遷移して、図４のブロック１０９に移行する。
【００８０】
図７のブロック４０１でＵＥＦＩファームウェアは、キャッシュ・コントローラ５３をライト・スルー方式に設定する。ブロック４０３でＵＥＦＩファームウェアは、ＨＤＤ２３をＰＵＩＳディスエーブルに設定する。ブロック４０５でＵＥＦＩファームウェアは、ＥＣ２７のレジスタ６１をＳ３＿ＡＰＳディスエーブルに設定する。ブロック４０７でＵＥＦＩファームウェアはＨＤＤ２３にスピンアップ・コマンドを送る。ブロック４０９でＵＥＦＩファームウェアはすべてのデバイスからレディ信号を受け取るとブロック４１１でレジスタ５９のＡＯＡＣフラグを解除しＰＯＳＴをＯＳ８５に引き継ぐ。
【００８１】
図６のブロック３１５からブロック４１１に移行したときは、この時点でＡＯＡＣ＿Ｓ０ステートからＳ０ステートに遷移し、ＡＯＡＣ処理が終了してもシステムによるＳ３ステートへの遷移は行われない。ブロック４１３でＳ０ステートに遷移したシステムは図４のブロック１０３に移行する。上記の手順では、ＡＯＡＣウェイクが連続して行われる。一例では、ＷｉＦｉカード２６が接続可能なＡＰのＳＳＩＤを検出するたびにＡＯＡＣイベントを生成する。他の例では、最初にＷｉＦｉカード２６がＡＰを検出したときはＷｉＦｉカード２６がＡＯＡＣイベントを生成し、それ以降はユーザ・イベントが生成されるまで一定の周期でＲＴＣ５０がＡＯＡＣイベントを生成することができる。
【００８２】
［第２の方法］
図８はＡＯＡＣ処理の第２の方法を説明するタイムチャートで、図９〜図１２はそれに対応する手順を示すフローチャートである。図９〜図１２は、図４〜図７に共通する手順を多く含むため、共通する手順には同一の参照番号を付与して説明を省略または簡略化する。図９では、図４のブロック１０７の手順を省略している。ブロック１０９に図１１のブロック３１９（時刻ｔ４、ｔ６。ｔ８）を経由するパスで移行する場合はＰＵＩＳがイネーブルに設定されキャッシュ・モードがライト・バックに設定され、Ｓ３＿ＡＰＳがディスエーブルに設定されている。
【００８３】
ブロック１０９に図９のブロック１０１（時刻ｔ０）または図１２のブロック４１３（時刻ｔ２）を経由するパスで移行する場合はＰＵＩＳがディスエーブルに設定されキャッシュ・モードがライト・スルーに設定されＳ３＿ＡＰＳがイネーブルに設定されている。すなわち、Ｓ３ステートにＳ０ステートから遷移する場合はＰＵＩＳがディスエーブルに設定されキャッシュ・モードがライト・スルーに設定されＳ３＿ＡＰＳがイネーブルに設定されることになる。
【００８４】
またＳ３ステートに、ＡＯＡＣ＿Ｓ０ステートから遷移する場合はＰＵＩＳがイネーブルに設定されキャッシュ・モードがライト・バックに設定されＳ３＿ＡＰＳがディスエーブルに設定されることになる。図１０のブロック５０１でＰＵＩＳがディスエーブルに設定されているときは電源が投入されると同時にＨＤＤ２３はスピンアップする。
【００８５】
Ｓ３ステートでＰＵＩＳがディスエーブルに設定されている状態は、図８の時刻ｔ０、ｔ２で、Ｓ０ステートから遷移した場合である。Ｓ０ステートとＳ３ステートの遷移は、ユーザがシステムを使用するときに繰り返される。このとき図９のブロック１１１ではユーザ・イベントが生成される。ユーザ・イベントは、静止状態で生成されると想定してよいため、ＰＵＩＳがディスエーブルに設定されてＨＤＤ２３が電源投入と当時にスピンアップしても、ＨＤＤ２３が損傷する危険性は少ない。しかも、ＨＤＤ２３はＵＥＦＩファームウェアにレディ信号を短時間のうちに送信することができるためＰＯＳＴ時間を短縮してユーザの利便性を向上することができる。
【００８６】
ただしこの利便性よりもＨＤＤ２３の損傷防止を優先させる環境で使用する場合は、Ｓ３ステートに対する遷移元がＳ０ステートまたはＡＯＡＣ＿Ｓ０ステートのいずれであってもＰＵＩＳをイネーブルに設定するようにしてもよい。図１０のブロック２０７でＡＯＡＣウェイクの場合はブロック５０３に移行し（時刻ｔ３、ｔ５、ｔ７）、ユーザ・ウェイクの場合は図１２のブロック５５１に移行する（時刻ｔ１、ｔ９）。ブロック５０３では、レジスタ５９にＡＯＡＣフラグが設定されているときはブロック２２１に移行し、設定されていないときはブロック２０９に移行する。
【００８７】
すなわち連続するＡＯＡＣウェイクのなかで２回目以降のＡＯＡＣウェイクの場合はすでにＡＯＡＣフラグが設定されているため、ブロック２１５でライト・バックに設定され、ブロック２１９でＳ３＿ＡＰＳがディスエーブルに設定され、ブロック５１１でＰＵＩＳがイネーブルに設定されていることになる。このときＵＥＦＩファームウェアはブロック２０９からブロック５１１までのパスをスキップしてブロック２２１でスピンアップ・コマンドを送信する。ブロック２０９からブロック５１１までのパスをスキップすることで、レジューム処理を短時間で終了してタイムリーなＡＯＡＣ処理の実現性を向上する。
【００８８】
最初のＡＯＡＣウェイクの場合は、ＡＯＡＣフラグが設定されていないため、ＰＵＩＳがディスエーブルに設定され、キャッシュ・モードがライト・スルーに設定され、Ｓ３＿ＡＰＳがイネーブルに設定されている。ＡＯＡＣウェイクの場合は、ノートＰＣ１０が振動している可能性がある。ブロック５０５ではＳ３＿ＡＰＳが振動を検出している間はＰＯＳＴを停止する。そして、Ｓ３＿ＡＰＳが振動を検出しないときにブロック５０７からブロック５１１までのパスを実行して図１１のブロック３０１に移行する。
【００８９】
ブロック５０７で電池パック４１の残容量が少ないときはブロック５０９でレジュームを停止して、電源が不安定な状態でライト・バック方式に設定しないようにする。この場合ＡＯＡＣ処理をするためには電池パック４１を充電する必要がある。電源が不安定な状態におけるライト・バック方式での動作を完全に禁止するために、ブロック５０７、５０９の手順をブロック５０３からブロック２２１に移行するパスの途中にも入れることができる。
【００９０】
ブロック５１１ではＰＵＩＳがイネーブルに設定される。図１１のブロック３１５ではＡＯＡＣ＿Ｓ０ステートの間にユーザ・イベントが生成されると、ブロック５３１でＰＵＩＳがディスエーブルに設定され、ブロック５３３でキャッシュ・モードがライト・スルー方式に設定されて図１２のブロック４１１に移行する。図１２のブロック５５１では、ユーザ・ウェイクのときにその時点でのキャッシュ・モードを判断する。
【００９１】
Ｓ０ステートとＳ３ステートの間にＡＯＡＣウェイクが発生しない場合は、ライト・スルー方式に設定されていることになるが、ＡＯＡＣウェイクが発生したときはライト・バックに設定されている。ライト・バック方式に設定されているときはブロック４０１でライト・スルー方式に設定される。ライト・スルー方式に設定されているときは、ブロック４０５に移行する。
【００９２】
［その他］
図３〜図１２で説明したＡＯＡＣ処理の方法は本発明の一例を示したものであり、本発明の原理を実現できる限りフローチャートに示したすべての手順を実行する必要はなく、また、フローチャートの手順を入れ替えたり、周知の異なる方法を採用したり、さらには付随的な手順を追加したりすることができる。ここではスリープ状態としてＳ３ステートを例示して説明したが、本発明はこれに限定するものではなく、システム・ウェイクが可能なＳ４ステートまたはＯＳ８５がＳ３ステートに遷移させてから一定時間が経過したときにＵＥＦＩファームウェアが自動的に遷移させるＳ４ステートであってもよい。
【００９３】
フラッシュ・メモリ１９は、システムがキャッシングの管理をするキャッシュである限りＨＤＤ２３の内部に収納することもできる。ＰＣＨ１７、ＥＣ２７、およびパワー・コントローラ３３に設けた各種レジスタの配置は、例示したデバイスに限定するものではなく、例示したデバイスとは異なるデバイスに設けるようにしてもよい。本発明では、ＡＯＡＣ＿Ｓ０ステートにおいてライト・バック方式に設定する場合にフラッシュ・メモリ１９の空き容量を確保してスピンアップの頻度を減らすようにしている。
【００９４】
ＡＯＡＣ＿Ｓ０ステートでＨＤＤ２３へのアクセスが発生する場合は、ＵＥＦＩファームウェアがレジュームの段階でＨＤＤ２３をスピンアップさせてレディ信号を受け取っておく必要がある。ＡＯＡＣ処理で動作するプログラムの実行およびデータの記憶に利用できるだけのフラッシュ・メモリ１９の容量を確保するようにすれば、ＡＯＡＣ＿Ｓ０ステートにおいてＨＤＤ２３へのアクセスを完全に停止することも可能になる。その場合、レジュームの段階でＨＤＤ２３のスピンダウンを維持することができるため、一層ＨＤＤ損傷の危険性を軽減することができる。
【００９５】
これまで本発明について図面に示した特定の実施の形態をもって説明してきたが、本発明は図面に示した実施の形態に限定されるものではなく、本発明の効果を奏する限り、これまで知られたいかなる構成であっても採用することができることはいうまでもないことである。
【符号の説明】
【００９６】
１０  ノートＰＣ
１７  チップ・セット（ＰＣＨ）
１９  フラッシュ・メモリ
２３  ＨＤＤ
２４  磁気ディスク
２５  ファームウェアＲＯＭ
３３  パワー・コントローラ
【図１】
2014146142.tif 000003
【図２】
2014146142.tif 000004
【図３】
2014146142.tif 000005
【図４】
2014146142.tif 000006
【図５】
2014146142.tif 000007
【図６】
2014146142.tif 000008
【図７】
2014146142.tif 000009
【図８】
2014146142.tif 000010
【図９】
2014146142.tif 000011
【図１０】
2014146142.tif 000012
【図１１】
2014146142.tif 000013
【図１２】
2014146142.tif 000014