(57)【要約】【課題】ハイブリッドＨＤＤが搭載する不揮発性半導体メモリに対する新たなデータの記憶方法を提供する。【解決手段】ハイブリッドＨＤＤ１００はフラッシュ・メモリ１０９と磁気ディスク１２９を備える。ハイブリッドＨＤＤ１００は、キャッシュ・モードとメモリ・モードのいずれかで動作する。ホスト装置がキャッシュ・モードに設定すると、ホスト装置から受け取ったデータをフラッシュ・メモリおよび磁気ディスク１２９に書き込む。メモリ・モードに設定するとホスト装置から受け取ったデータを磁気ディスクにアクセスしないでフラッシュ・メモリのキャッシュ・モードで利用する領域に書き込む。メモリ・モードのときのホスト装置からの読み取り要求に対しては、フラッシュ・メモリからデータを読みって出力する。【選択図】図３
2014056543.tif 000002
【特許請求の範囲】
【請求項１】
不揮発性半導体メモリと磁気ディスクを備えるハイブリッド・ハードディスク・ドライブにホスト装置がデータを記憶する方法であって、
前記ホスト装置が前記ハイブリッド・ハードディスク・ドライブをキャッシュ・モードに設定するステップと、
前記キャッシュ・モードに設定されているときに前記ホスト装置が送ったデータを前記不揮発性半導体メモリおよび前記磁気ディスクに書き込むステップと、
前記ホスト装置が前記ハイブリッド・ハードディスク・ドライブをメモリ・モードに設定するステップと、
前記メモリ・モードに設定されているときに前記ホスト装置が送ったデータを前記磁気ディスクにアクセスしないで前記不揮発性半導体メモリの前記キャッシュ・モードで使用する領域に書き込むステップと、
を有する方法。
【請求項２】
前記メモリ・モードに設定されている間に前記ホスト装置から読み取りコマンドを受け取ったときに前記磁気ディスクにアクセスしないで前記不揮発性半導体メモリが記憶するデータを出力するステップを有する請求項１に記載の方法。
【請求項３】
前記キャッシュ・モードに設定されている間に前記ホスト装置から読み取りコマンドを受け取ったときに前記磁気ディスクまたは前記不揮発性半導体メモリが記憶するデータを出力するステップを有する請求項１または請求項２に記載の方法。
【請求項４】
前記不揮発性半導体メモリが、前記キャッシュ・モードに設定されたときに読み取りデータを記憶するリード・キャッシュ領域と書き込みデータを記憶するライト・キャッシュ領域を有し、
前記メモリ・モードに設定するステップが、前記不揮発性半導体メモリに前記ホスト装置から受け取ったデータを書き込むメモリ領域を前記ライト・キャッシュ領域に定義するステップを有する請求項１から請求項３のいずれかに記載の方法。
【請求項５】
前記メモリ領域が前記リード・キャッシュ領域の前部または一部を含む請求項４に記載の方法。
【請求項６】
前記リード・キャッシュ領域に記憶していたデータを再配置して、前記メモリ領域を割り当てるスペースを確保するステップを有する請求項５に記載の方法。
【請求項７】
前記不揮発性半導体メモリがフラッシュ・メモリで、前記キャッシュ・モードに設定するステップが、前記メモリ・モードの間に前記不揮発性半導体メモリに書き込まれたデータを消去するステップを有する請求項１から請求項６のいずれかに記載の方法。
【請求項８】
ハイブリッド・ハードディスク・ドライブを利用してコンピュータがパワー・ステートを制御する方法であって、
不揮発性半導体メモリと磁気ディスクを備えキャッシュ・モードまたはメモリ・モードに設定することができるハイブリッド・ハードディスク・ドライブを提供するステップと、
前記キャッシュ・モードに設定されている間に前記コンピュータが作成したデータを前記磁気ディスクおよび前記不揮発性半導体メモリに書き込むステップと、
前記メモリ・モードに設定されている間に生成されたスリープ・イベントに応答して前記コンピュータのメイン・メモリが記憶する退避データを前記磁気ディスクにアクセスしないで前記不揮発性半導体メモリの前記キャッシュ・モードで使用する領域に記憶してからスリーピング・ステートに移行するステップと
を有する方法。
【請求項９】
前記メモリ・モードに設定されている間に生成された復帰イベントに応答して前記退避データを前記磁気ディスクにアクセスしないで前記不揮発性半導体メモリから前記メイン・メモリに転送してパワー・オン状態に移行するステップを有する請求項８に記載の方法。
【請求項１０】
前記スリーピング・ステートに移行するステップが、
前記スリープ・イベントに応答して前記メイン・メモリにシステム・コンテキストを退避して、前記メイン・メモリの記憶保持に必要な電源以外の電源を停止した第１のスリーピング・ステートに移行するステップと、
前記第１のスリーピング・ステートに続いて所定の時間後に、前記メイン・メモリが記憶する退避データを前記不揮発性半導体メモリに退避して前記第１のスリーピング・ステートより消費電力の小さい第２のスリーピング・ステートに移行するステップと
を含む請求項９に記載の方法。
【請求項１１】
オペレーティング・システムが前記コンピュータに前記第１のスリーピング・ステートへ移行させる機能を発揮させ、ＢＩＯＳが前記コンピュータに前記第２のスリーピング・ステートへ移行させる機能を発揮させる請求項１０に記載の方法。
【請求項１２】
前記パワー・オン状態に移行するステップが、
前記ＢＩＯＳが前記コンピュータに前記第２のスリーピング・ステートから前記第１のスリーピング・ステートへ移行する機能を発揮させるステップと、前記オペレーティング・システムが前記コンピュータに前記第１のスリーピング・ステートから前記パワー・オン状態へ移行する機能を発揮させるステップを有する請求項９から請求項１１のいずれかに記載の方法。
【請求項１３】
前記パワー・オン状態に移行するステップが、前記メモリ・モードから前記キャッシュ・モードに切り換えるステップを含む請求項９から請求項１２に記載の方法。
【請求項１４】
ホスト装置に接続して使用するハイブリッド・ディスク・ドライブであって、
前記ホスト装置に接続するインターフェースと、
第１の不揮発性記憶媒体と、
前記第１の不揮発性記憶媒体より容量が小さくかつアクセス速度が速い第２の不揮発性記憶媒体と、
前記第２の不揮発記憶媒体を前記第１の不揮発記憶媒体のキャッシュとして利用するキャッシュ・モードまたは前記第１の不揮発記憶媒体に対するアクセスをしないで前記第２の不揮発記憶媒体に対するデータの読み書きが可能なメモリ・モードのいずれかに設定する動作モード設定部と
を有するハイブリッド・ディスク・ドライブ。
【請求項１５】
前記第１の不揮発性記憶媒体が磁気ディスクで、前記第２の不揮発性記憶媒体が不揮発性半導体メモリである請求項１４に記載のハイブリッド・ディスク・ドライブ。
【請求項１６】
前記第２の不揮発性記憶媒体が、キャッシュ・モードのときに前記ホスト装置から受け取ったデータを記憶するキャッシュ領域を備え、前記メモリ・モードのときに前記ホスト装置から受け取ったデータが前記キャッシュ領域に記憶される請求項１４または請求項１５に記載のハイブリッド・ディスク・ドライブ。
【請求項１７】
前記第２の不揮発性記憶媒体がＮＡＮＤ型のフラッシュ・メモリで、前記インターフェースがＳＡＴＡ（Serial Advanced Technology Attachment）である請求項１４から請求項１６のいずれかに記載のハイブリッド・ディスク・ドライブ。
【請求項１８】
請求項１４から請求項１７のいずれかに記載されたハイブリッド・ディスク・ドライブを搭載する携帯式コンピュータ。
【請求項１９】
不揮発性半導体メモリと磁気ディスクを備えるハイブリッド・ハードディスク・ドライブにデータを記憶するために、コンピュータに、
キャッシュ・モードまたはメモリ・モードに設定することが可能な前記ハイブリッド・ハードディスク・ドライブにアクセスする機能と、
前記キャッシュ・モードに設定して前記コンピュータが書き込むデータを前記磁気ディスクおよび前記不揮発性半導体メモリに書き込み、前記コンピュータが読み取るデータを前記磁気ディスクまたは前記不揮発性半導体メモリから読み取る機能と、
前記メモリ・モードに設定して前記コンピュータが書き込むデータを前記磁気ディスクにアクセスしないで前記不揮発性半導体メモリに書き込み、前記コンピュータが読み取るデータを前記磁気ディスクにアクセスしないで前記不揮発性半導体メモリから読み取る機能と
を実現させるためのコンピュータ・プログラム。
【請求項２０】
不揮発性半導体メモリと磁気ディスクを備えるハイブリッド・ハードディスク・ドライブを利用してパワー・ステートを制御するために、コンピュータに、
キャッシュ・モードまたはメモリ・モードに設定することが可能な前記ハイブリッド・ハードディスク・ドライブにアクセスする機能と、
前記キャッシュ・モードに設定して前記コンピュータが書き込むデータを前記磁気ディスクおよび前記不揮発性半導体メモリに書き込み、前記コンピュータが読み取るデータを前記磁気ディスクまたは前記不揮発性半導体メモリから読み取る機能と、
前記メモリ・モードに設定して前記メイン・メモリが記憶する退避データを前記磁気ディスクにアクセスしないで前記不揮発性半導体メモリに書き込んでから前記メイン・メモリの電源を停止する機能と
を実現させるためのコンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ハイブリッド・ディスク・ドライブのキャッシュとして機能する不揮発性半導体メモリの利用範囲を拡大する技術に関し、さらには、ハイブリッド・ディスク・ドライブを利用してコンピュータのパワー・ステートを制御する技術に関する。
【背景技術】
【０００２】
携帯式コンピュータでは、バッテリィによる動作時間を確保することが特に重要である。そのために携帯式コンピュータは、ＡＣＰＩに規定するさまざまなスリーピング・ステートに遷移する。ＡＣＰＩでは、パワー・オン状態（Ｓ０ステート）とパワー・オフ状態（Ｓ５ステート）に加えて、Ｓ１ステートからＳ４ステートまでのスリーピング・ステートを定義しており数字が大きいほど待機電力は小さくなるが他方で復帰時間は長くなる。バッテリィによる動作時間に影響を与える待機電力の低減と、使いたいときにただちに使えるというユーザビリティに影響を与える復帰時間の短縮はトレードオフの関係にある。
【０００３】
スリーピング・ステートの中で最も消費電力の少ないＳ４ステート（ハイバネーション状態ともいう。）では、パワー・オン中のメイン・メモリの記憶状態（以下、退避データという。）をハードディスク・ドライブ（ＨＤＤ）やソリッド・ステート・ドライブ（ＳＳＤ）などのディスク・ドライブに格納してからほとんどのデバイスの電力を停止し、復帰時はディスク・ドライブから退避データを復帰することでパワー・オフ状態から起動するよりも復帰時間を短縮することができる。
【０００４】
米国インテル社（インテルは登録商標）は、インテル・ラピッド・ストレージ・テクノロジー（ＩＲＳＴ）というＲＡＩＤ管理用ツールの一部としてインテル・スマート・レスポンス・テクノロジー（ＩＳＲＴ）という技術を提供する。ＩＳＲＴは、Ｍｉｎｉ ＳＡＴＡというインターフェースに接続されたＳＳＤをＨＤＤのキャッシュとして利用して、高速な読み取りを実現する技術である。
【０００５】
ＩＳＲＴでは、ＯＳはＨＤＤだけに格納され、ＳＳＤはデータ領域とキャッシュ領域がパーティションで区切られている。ホストがライト・コマンドを発行したときは、ライトスルー・キャッシングのようにデータをＳＳＤとＨＤＤの両方に書き込む。あるいはライトバック・キャッシングのようにデータを先にＳＳＤにだけ書き込みアイドル時にＨＤＤに書き込む。ホストが発行したリード・コマンドに対して、ＳＳＤにデータがあるときはＳＳＤから読み取り、ＳＳＤにデータがないときはＨＤＤから読み取って返送する。
【０００６】
特許文献１は、ハード・ドライブとは別に用意したＮＶＲＡＭにデータをハイバネートするファースト・ハイバネートについて開示する。ＯＳが現在のシステム状態をＤＲＡＭのハイバネート領域に書き込むと、エンベデッド・プロセッサ（ＥＰ）がＣＰＵのコアをシャットダウンする。その後ＥＰは、ハイバネート領域をＮＶＲＡＭにコピーして、ウェイクさせるのに必要な回路にだけ電力を供給する。レジュームするときは、ＥＰがＮＶＲＡＮからＤＲＡＭにコンテキストを復帰し、さらにＤＲＡＭのコンテキストに対してＯＳが復帰処理をする。
【０００７】
特許文献２は、ハイブリッドＨＤＤに搭載された不揮発性半導体メモリを有効に活用する技術を開示する。不揮発性半導体メモリは、ハイブリッドＨＤＤ用データ領域とリード・データ領域とライト・データ領域に区分されている。ホスト・システムがライト・コマンドを発行したときはデータをディスク媒体に書き込むとともに、ライト・コマンドがＰＩＮＮ登録されていればハイブリッドＨＤＤ用データ領域に書き込み、ＰＩＮＮ登録されていなければライト・データ領域に書き込む。ホスト・システムがＰＩＮＮ登録されたリード・コマンドを発行したときには、ハイブリッドＨＤＤ用データ領域から読み取り、ＰＩＮＮ登録されていないリード・コマンドを発行したときはリード・データ領域またはディスク媒体から読み取る。
【０００８】
特許文献３は、ハイブリッドＨＤＤが搭載する不揮発性半導体メモリをキャッシュに利用する領域と、論理アドレスを割り当てて実データを記憶するＳＳＤとして利用する領域に区分する技術を開示する。特許文献４は、磁気ディスク装置に磁気ディスクに加えて搭載するフラッシュ・メモリを磁気ディスクのデータ記憶エリアの一部として利用する技術を開示する。この技術では頻繁にアクセスするファイルをフラッシュ・メモリに格納することで、磁気ディスクの回転待ち時間やシーク時間をなくして高速なアクセスを可能にする。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】米国特許７９７１０８１号公報
【特許文献２】特開２００９−１８７６０４号公報
【特許文献３】特開２０１１−９０４６０号公報
【特許文献４】特開平６−３１４１７７号公報
【発明の概要】
【発明が解決しようとする課題】
【００１０】
Ｓ４ステートに遷移する際に退避データを一般的なＨＤＤに記憶する場合は、磁気ディスクへのアクセスが発生するためＳＳＤに比べて書き込みおよび読み取りに多くの時間を費やす。ＩＳＲＴのようにＨＤＤのキャッシュとしてＳＳＤを設ければ、ＨＤＤへの高速アクセスを実現できるが、退避データの一時的な記憶のためだけに専用のＳＳＤを用意することになりコストやスペースの点で得策ではない。
【００１１】
また、ＳＳＤとＨＤＤは独自に電力を制御しているので、両者に対する電力源の容量はそれぞれの最大電力の合計を基準にして設計する必要がある。この点で、ハイブリッドＨＤＤが搭載する不揮発性半導体メモリをＳＳＤの代わりに使用できれば、ハイブリッドＨＤＤが磁気ディスクへのアクセスと不揮発性半導体メモリへのアクセスを制御することで、ＳＳＤとＨＤＤの組み合わせよりも電力源の容量を大幅に低減できる。
【００１２】
しかし、ハイブリッドＨＤＤが搭載する不揮発性半導体メモリの本来的な役割は、磁気ディスクのキャッシュとして機能することにあるため、ホスト装置が完全に読み書きを制御できるメモリとしては利用することができない。たとえば特許文献２のハイブリッドＨＤＤに対しては、ＰＩＮＮ登録したデータを不揮発性半導体メモリのハイブリッドＨＤＤ用データ領域に読み書きすることはできる。
【００１３】
しかし、ハイブリッドＨＤＤ用データ領域は磁気ディスクのキャッシュ領域として利用しているため、書き込み時には磁気ディスクにもデータを書き込む必要があり書き込み時間が遅くなる。またＳ４ステートに遷移する際にハイブリッドＨＤＤが記憶する退避データは、復帰したあとには利用価値のない一時的なデータである。したがって、ハイブリッドＨＤＤ用データ領域を退避データの一時的な記憶場所として利用したのでは不揮発性半導体メモリ全体において本来のキャッシュとして利用できる容量が低下し利用率の点で好ましくない。
【００１４】
特許文献３のハイブリッドＨＤＤでは、不揮発性半導体メモリの一部をＳＳＤとして利用し、特許文献４のＨＤＤでは、不揮発性半導体メモリの全体を磁気ディスクの一部として利用しているため、ともに利用率の問題が残る。このようにこれまでのハイブリッドＨＤＤでは、不揮発性半導体メモリの利用形態がキャッシュまたはメモリのいずれか一方であるため、特にスリーピング・ステートに移行する際に発生する退避データの一時的な記憶領域に利用することは不経済であった。
【００１５】
そこで本発明の目的は、ハイブリッド・ディスク・ドライブのキャッシュとして機能する不揮発性半導体メモリを有効に活用しながらデータを記憶する方法を提供することにある。さらに本発明の目的は、ハイブリッド・ディスク・ドライブのキャッシュとして機能する不揮発性半導体メモリに対して、キャッシュの容量に影響を与えないで一時的なデータを読み書きする方法を提供することにある。
【００１６】
さらに本発明の目的は、ハイブリッド・ディスク・ドライブのキャッシュとして機能する不揮発性半導体メモリに、消費電力の低減を図りながらデータを記憶する方法を提供することにある。さらに本発明の目的は、ハイブリッド・ディスク・ドライブのキャッシュとして機能する不揮発性半導体メモリを利用してコンピュータのパワー・ステートを制御する方法を提供することにある。さらに本発明の目的は、そのような方法を実現するハイブリッド・ディスク・ドライブ、携帯式コンピュータ、およびコンピュータ・プログラムを提供することにある。
【課題を解決するための手段】
【００１７】
本発明の第１の態様は、不揮発性半導体メモリと磁気ディスクを備えるハイブリッド・ハードディスク・ドライブにホスト装置がデータを記憶する方法を提供する。ホスト装置は、ハイブリッド・ハードディスク・ドライブをキャッシュ・モードまたはメモリ・モードに設定する。キャッシュ・モードに設定されているハイブリッド・ハードディスク・ドライブは、ホスト装置から受け取ったデータを不揮発性半導体メモリおよび前記磁気ディスクに書き込む。メモリ・モードに設定されているハイブリッド・ハードディスク・ドライブは、ホスト装置が送ったデータを磁気ディスクにアクセスしないで不揮発性半導体メモリのキャッシュ・モードで利用する領域に書き込む。
【００１８】
その結果、ホスト装置は動作モードの設定により不揮発性半導体メモリをキャッシュまたはメモリとして利用してその利用率を向上させることができる。キャッシュ・モードとメモリ・モードでは不揮発性半導体メモリの共通の記憶領域を利用するため、メモリ・モードで利用するためにキャッシュの一部をメモリに割り当てたり、追加的にメモリを用意したりする必要がなくなる。また、メモリ・モードで利用する際には、磁気ディスクにアクセスしないため消費電力の低減を図ることができる。メモリ・モードに設定されている間にホスト装置から読み取りコマンドを受け取ったときには、磁気ディスクにアクセスしないで不揮発性半導体メモリが記憶するデータを出力することができる。
【００１９】
キャッシュ・モードに設定されている間にホスト装置から読み取りコマンドを受け取ったときには、磁気ディスクまたは不揮発性半導体メモリが記憶するデータを出力することができる。不揮発性半導体メモリは、キャッシュ・モードに設定されたときに読み取りデータを記憶するリード・キャッシュ領域と書き込みデータを記憶するライト・キャッシュ領域を備える場合には、メモリ・モードに設定する際に、不揮発性半導体メモリにホスト装置から受け取ったデータを書き込むメモリ領域をライト・キャッシュ領域に定義することができる。
【００２０】
この場合メモリ・モードでデータを書き込むことによるリード・キャッシュ領域のデータが消失することを防ぐことができる。メモリ領域はリード・キャッシュ領域の全体または一部を含むようにしてもよい。リード・キャッシュ領域の一部をメモリ領域にする場合は、メモリ・キャッシュ領域にそれまで記憶していたデータの位置を再配置してメモリ領域のためのスペースを確保することが望ましい。不揮発性半導体メモリがフラッシュ・メモリの場合は、メモリ・モードの間に不揮発性半導体メモリに書き込まれたデータをキャッシュ・モードに設定する際に消去しておけば、キャッシュ・モードに切り換わった直後からキャッシュとしての利用領域を確保することができる。
【００２１】
本発明の第２の態様は、ハイブリッド・ハードディスク・ドライブを利用してコンピュータがパワー・ステートを制御する方法を提供する。ハイブリッド・ハードディスク・ドライブは、不揮発性半導体メモリと磁気ディスクを備えキャッシュ・モードまたはメモリ・モードに設定することができる。ハイブリッド・ハードディスク・ドライブはキャッシュ・モードに設定されている間にコンピュータが作成したデータを磁気ディスクと不揮発性半導体メモリに書き込む。
【００２２】
ハイブリッド・ハードディスク・ドライブはメモリ・モードに設定されている間に生成されたスリープ・イベントに応答してコンピュータのメイン・メモリが記憶する退避データを磁気ディスクにアクセスしないで不揮発性半導体メモリのキャッシュ・モードで使用する領域に記憶してからスリーピング・ステートに移行することができる。磁気ディスクへのアクセスがないことにより消費電力の低減と書き込み時間の短縮を図ることができる。
【００２３】
ハイブリッド・ハードディスク・ドライブは、メモリ・モードに設定されている間に生成された復帰イベントに応答して退避データを磁気ディスクにアクセスしないで不揮発性半導体メモリからメイン・メモリに転送してパワー・オン状態に移行することができる。スリーピング・ステートに移行する際には、スリープ・イベントに応答してメイン・メモリにシステム・コンテキストを退避して、メイン・メモリの記憶保持に必要な電源以外の電源を停止した第１のスリーピング・ステートに移行し、第１のスリーピング・ステートに続いて所定の時間後に、メイン・メモリが記憶する退避データを不揮発性半導体メモリに退避して第１のスリーピング・ステートより消費電力が小さい第２のスリーピング・ステートに移行することができる。
【００２４】
このときオペレーティング・システムが第１のスリーピング・ステートへ移行させ、ＢＩＯＳが第２のスリーピング・ステートへ移行させることができる。第１のスリーピング・ステートに遷移している間にユーザが使用を再開するために復帰操作をする場合は短時間で復帰することができ、所定時間が経過しても復帰操作をしない場合は比較的長時間使用の予定がない場合が多いため、より待機電力の小さい第２のスリーピング・ステートに遷移させて利便性と消費電力の低減の調和を図ることができる。パワー・オン状態に移行する際には、ＢＩＯＳが第２のスリーピング・ステートから第１のスリーピング・ステートへ移行させ、オペレーティング・システムが第１のスリーピング・ステートからパワー・オン状態へ移行させることができる。パワー・オン状態に移行する際には、メモリ・モードから前記キャッシュ・モードに切り換えることができる。
【発明の効果】
【００２５】
本発明により、ハイブリッド・ディスク・ドライブのキャッシュとして機能する不揮発性半導体メモリを有効に活用しながらデータを記憶する方法を提供することができた。さらに本発明により、ハイブリッド・ディスク・ドライブのキャッシュとして機能する不揮発性半導体メモリに対して、キャッシュの容量に影響を与えないで一時的なデータを読み書きする方法を提供することができた。
【００２６】
さらに本発明により、ハイブリッド・ディスク・ドライブのキャッシュとして機能する不揮発性半導体メモリに、消費電力の低減を図りながらデータを記憶する方法を提供することができた。さらに本発明により、ハイブリッド・ディスク・ドライブのキャッシュとして機能する不揮発性半導体メモリを利用してコンピュータのパワー・ステートを制御する方法を提供することができた。さらに本発明により、そのような方法を実現するハイブリッド・ディスク・ドライブ、携帯式コンピュータ、およびコンピュータ・プログラムを提供することができた。
【図面の簡単な説明】
【００２７】
【図１】ノートＰＣ１０のハードウェアの構成を示す機能ブロック図である。
【図２】ノートＰＣ１０のパワー・ステートの遷移を説明する図である。
【図３】ハイブリッドＨＤＤ１００の構成を示す機能ブロック図である。
【図４】フラッシュ・メモリ１０９の構成を説明する図である。
【図５】ＢＩＯＳ＿ＲＯＭ２５のデータ構造を説明する図である。
【図６】ＰＯＳＴ選択コード１０５がＢＩＯＳの実行パスを決定するための論理を説明する図である。
【図７】ノートＰＣ１０がＳ０ステートからＳｘステートへパワー・ステートを変更するときの手順を示すフローチャートである。
【図８】ノートＰＣ１０がＳ０ステートからＳｘステートへパワー・ステートを変更するときの手順を示すフローチャートである。
【図９】ノートＰＣ１０がＳｘステートからＳ０ステートへパワー・ステートを変更するときの手順を示すフローチャートである。
【図１０】ノートＰＣ１０がＳｘステートからＳ０ステートへパワー・ステートを変更するときの手順を示すフローチャートである。
【発明を実施するための形態】
【００２８】
［パワー・ステート］
図１は、ノートブック型パーソナル・コンピュータ（ノートＰＣ）１０のハードウェアの構成を示す機能ブロック図である。多くのハードウェアの構成は周知であるため、ここでは本発明に必要な範囲で説明する。プラットフォーム・コントローラ・ハブ（ＰＣＨ）２１にはＣＰＵ１１が接続されている。ＣＰＵ１１にはメイン・メモリ１５、ビデオ・コントローラ１７が接続されている。ビデオ・コントローラ１７には、ＬＣＤ１９が接続されている。
【００２９】
ＰＣＨ２１はさまざまな規格のインターフェース機能を備えており、図１では代表的にＳＡＴＡにハイブリッドＨＤＤ１００が接続され、ＳＰＩにＢＩＯＳ＿ＲＯＭ２５が接続され、ＬＰＣにエンベデッド・コントローラ（ＥＣ）２７およびＮＶＲＡＭ３１が接続されている。ＥＣ２７には、キーボード２９およびパワー・コントローラ３３が接続されている。パワー・コントローラ３３には、パワー・ボタン３７、リッド・センサ３８、およびＤＣ／ＤＣコンバータ３５が接続されている。
【００３０】
ノートＰＣ１０は、ＡＣＰＩ（Advanced Configuration and Power Interface）の省電力機能およびプラグ・アンド・プレイに対応している。図２は、ノートＰＣ１０のパワー・ステートの遷移を説明する図である。ＡＣＰＩでは、Ｓ１ステートからＳ４ステートまでの４つのスリーピング・ステート（省電力状態）、Ｓ０ステート（パワー・オン状態）、およびＳ５ステート（パワー・オフ状態）を定義している。ＡＣＰＩのスリーピング・ステートについてノートＰＣ１０は、一例としてＳ３ステートとＳ４ステートだけを定義しているが他のスリーピング・ステートを定義してもよい。
【００３１】
Ｓ３ステートはいわゆるサスペンド状態といわれ、メイン・メモリ１５の記憶を保持し、メイン・メモリ１５の記憶保持に必要のない電源を停止する状態である。Ｓ３ステートに入る際にオペレーティング・システム（ＯＳ）は、電源が停止するデバイスが保持していたシステム・コンテキストをメイン・メモリ１５に退避し、電源が復帰したときにそれを各デバイスに復帰する。
【００３２】
Ｓ４ステートはいわゆるハイバネーション状態といわれ、ＡＣＰＩでサポートされるスリーピング・ステートの中で最も起動までの時間が長く、かつ消費電力が少ない状態である。ノートＰＣ１０がＳ０ステートからＳ４ステートに遷移する際には、ＯＳがハイブリッドＨＤＤ１００にメイン・メモリ１５が記憶する退避データを格納してからパワー・コントローラ３３などの電源の起動に必要なデバイス以外のデバイスに対する電源をオフにする。
【００３３】
Ｓ５ステートはいわゆるソフト・オフともいわれ、ＯＳが退避データをハイブリッドＨＤＤ１００に退避しない点を除いては基本的に電力を供給するデバイスの範囲がＳ４ステートと同じである。以下においては、Ｓ３ステート、Ｓ４ステート、およびＳ５ステートを総称するときはＳｘステートと表示する。Ｓｘステートに対してＳ０ステートは原則としてノートＰＣ１０が動作するために必要なすべてのデバイスに電力が供給された状態である。
【００３４】
本実施の形態を説明するために、Ｓ０ステートについては電源状態にだけ着目してＨＷ＿Ｓ０ステートを定義する。ＨＷ＿Ｓ０ステートは、Ｓ０ステートと同じ範囲のデバイスに電力を供給するが、メイン・メモリ１５の記憶状態および各デバイスのシステム・コンテキストはＳ０ステートとは異なる状態である。たとえば、Ｓ４ステートからＳ０ステートに遷移する過渡的な状態のときに、電源はパワー・オン状態に復帰しているがハイブリッドＨＤＤ１００に記憶した退避データがメイン・メモリ１５に転送される前の状態は、ＨＷ＿Ｓ０ステートとはいえるがデータ状態まで含めるとＳ０ステートおよびＳ４ステートのいずれともいえない。
【００３５】
本実施の形態においてはさらにパワー・ステートを遷移させる際のソフトウェア上の実行主体がＯＳとＢＩＯＳのいずれであるかという視点に基づいてＳ３４ステートを定義する。Ｓ３４ステートは、ＯＳがＳ０ステートからＳ３ステートに遷移させ、その後自動的にＢＩＯＳがＳ３ステートからＳ４ステートに遷移させた状態である。Ｓ０ステートからＳｘステートへ移行させる処理およびＳｘステートからＳ０ステートへの復帰処理はＯＳが行うため、ＯＳが認識しているパワー・ステートと実際のパワー・ステートは一致するのが原則である。これに対してＳ３４ステートでは、ＯＳは遷移先がＳ３ステートであると認識しているが、電源状態とデータ状態は実質的にはＳ４ステートに相当する。
【００３６】
ＯＳはＳ０ステートからＳ３ステートに遷移するときに、システム・コンテキストにＳ３ステートからＳ０ステートに復帰するコードを含めているため、Ｓ３４ステートからＳ０ステートに直接復帰させることはできない。Ｓ３４ステートからＳ０ステートに復帰するときは、ＢＩＯＳが一旦システムをＳ３４ステートからＳ３ステートに復帰させた後にＢＩＯＳから制御権を引き継いだＯＳがＳ３ステートからＳ０ステートに復帰させる必要がある。
【００３７】
これに対しＳ０ステートからＳ４ステートに遷移するときは、ＯＳがシステム・コンテキストをメイン・メモリ１５に書き込んだ後に、メイン・メモリ１５が記憶する退避データをＯＳがハイブリッドＨＤＤ１００に記憶する。ＯＳは、システム・コンテキストにＳ４ステートからＳ０ステートに復帰するコードを含めているため、システムをＳ４ステートからＳ０ステートに直接復帰させることができる。Ｓ０ステートからＳ３４ステートに遷移する際に、Ｓ３ステートに留まっている時間をＳ３４時間ということにする。なお、以後の説明ではＳｘステートにＳ３４ステートも含むものとする。
【００３８】
ＳｘステートからＳ０ステートに復帰する際には、リセットされたデバイスに対してＢＩＯＳがＰＯＳＴ（Power On Self Test）を実行する。ＰＯＳＴは、ＣＰＵ１１にリセット信号が供給されてからＯＳのロードを開始するまでの間に、ＢＩＯＳ＿ＲＯＭ２５に格納されたコードがＰＣＨ２１のコントローラや周辺デバイスにパラメータを設定して使用できる状態にする作業をいう。ＰＯＳＴは、ＣＰＵ１１がリセットされてからＯＳがロードを開始するまでにＢＩＯＳコードが行うすべての処理であったり、あるいはその中からＣＰＵ１１およびメイン・メモリ１５などの基本的なデバイスに対する初期化以外の処理を除いた処理であったりしてよい。
【００３９】
［主要なハードウェア］
図１に戻って、ＰＣＨ２１は、ＲＴＣ（Real Time Clock）５０とＲＴＣメモリ５１を含んでいる。ＲＴＣ５０およびＲＴＣメモリ５１は、ＡＣ／ＤＣアダプタおよび電池パックの電力が停止して、ＰＣＨ２１がＤＣ／ＤＣコンバータ３５から電力が供給されないときにボタン電池から電力の供給を受けることができる。ＲＴＣメモリ５１は、ＢＩＯＳのセット・アップ・データおよびＲＴＣが生成した時間情報などを記憶する揮発性メモリである。ＲＴＣメモリ５１は、Ｓ３ステートに遷移する際にＢＩＯＳが参照するＳ３４フラグおよびＳ３４時間を記憶する。ＲＴＣメモリ５１へのＳ３４フラグおよびＳ３４時間の設定は、ＢＩＯＳセット・アップ・コード１１９（図５参照）によりＢＩＯＳ＿ＲＯＭ２５のデータ領域８３（図５参照）にＳ３４イネーブルが設定されたときにＢＩＯＳのＳＭＩハンドラが行う。
【００４０】
Ｓ３４フラグは、ＯＳがノートＰＣ１０をＳ３ステートに遷移させたときに、Ｓ３４ステートに遷移する処理をするようにＢＩＯＳに指示するための情報である。Ｓ３４時間は、ＯＳがシステムをＳ３ステートに遷移させてからＢＩＯＳが自動的にＳ３４ステートに遷移させるまでの時間をいう。ＰＣＨ２１は、Ｓ５ステートで電源が維持されるＡＣＰＩレジスタ５７とレジスタ５８を含む。
【００４１】
ＡＣＰＩレジスタ５７とレジスタ５８は、不揮発性のメモリで構成してもよい。ＡＣＰＩレジスタ５７は、ＡＣＰＩに規定するＳＬＰ＿ＴＹＰレジスタおよびＳＬＰ＿ＥＮレジスタに相当する。ＡＣＰＩレジスタ５７はＳ０ステートからＳｘステートに遷移する際にＯＳにより設定される。レジスタ５８には、Ｓ３ステートに遷移してからＳ３４時間が経過したときにＲＴＣ５０によりタイム・アップ・ビットが設定される。
【００４２】
ハイブリッドＨＤＤ１００はＯＳ、デバイス・ドライバ、アプリケーション・プログラム、およびユーザ・データなどを記憶する大容量の記憶装置である。ハイブリッドＨＤＤ１００は、本実施の形態ではブート・ディスク・ドライブとしており、ノートＰＣ１０が起動するときにロードされるブート・イメージを格納している。ただし、本発明はブート・ディスク以外のハイブリッドＨＤＤに適用することもできる。また、本発明は、ＵＳＢなどの有線または無線インターフェースで直接接続される外付けタイプのハイブリッドＨＤＤまたはネットワーク経由で接続されるハイブリッドＨＤＤに適用することもできる。ハイブリッドＨＤＤ１００の構成は、図３を参照して詳しく説明する。
【００４３】
ＥＣ２７は、ＣＰＵ、ＲＯＭ、ＲＡＭなどで構成されたマイクロ・コンピュータであり、さらにＡ／Ｄ入力端子、Ｄ／Ａ出力端子、タイマー、およびディジタル入出力端子を備えている。ＥＣ２７は、ノートＰＣ１０の内部の動作環境の管理にかかるプログラムをＣＰＵ１１とは独立して実行することができる。ＥＣ２７は、キーボード・コントローラを含んでいる。
【００４４】
パワー・コントローラ３３は、ＥＣ２７からの指示に基づいてＤＣ／ＤＣコンバータ３５を制御するワイヤード・ロジックのディジタル制御回路（ＡＳＩＣ）である。ＤＣ／ＤＣコンバータ３５は、ＡＣ／ＤＣアダプタまたは電池パックから供給される直流電圧を、ノートＰＣ１０を動作させるために必要な複数の電圧に変換し、さらにパワー・ステートに応じて定義された電力供給区分に基づいて各々のデバイスに電力を供給する。
【００４５】
パワー・ボタン３７はユーザが押下できるようにノートＰＣ１０の筐体表面に配置されている。リッド・センサ３８は、ディスプレイ筐体の開閉に連動して動作する。Ｓｘステートに遷移しているときに、パワー・ボタン３７の押下またはリッド・センサの動作により起動イベントが生成されると、パワー・コントローラ３３はノートＰＣ１０のすべてのデバイスに電力を供給して、システムをＨＷ＿Ｓ０ステートに遷移させる。パワー・ボタン３７およびリッド・センサ３８は、起動イベントを生成するデバイスの例示であり、他には指紋認証装置またはＷＯＬのマジック・パケットを受け取るネットワーク・カードなども起動イベントを生成することができる。
【００４６】
［ハイブリッドＨＤＤの構成と動作モード］
図３はハイブリッドＨＤＤ１００の構成を示す機能ブロック図である。ハイブリッドＨＤＤ１００は、ＳＡＴＡインターフェース１０１、ハードディスク・コントローラ（ＨＤＣ）１０３、リード／ライト・チャネル１０５、メモリ・コントローラ１０７、ＮＡＮＤ型のフラッシュ・メモリ１０９、ＤＲＡＭ１１１、ＭＰＵ１１３、ＲＯＭ１１５、ＲＡＭ１１７、ＮＡＮＤ型のフラッシュ・メモリ１１９、サーボ・コントローラ１２１およびドライバ１２３を含んでいる。ハイブリッドＨＤＤ１００は、さらにボイス・コイル・モータ１２５、磁気ヘッド１２７、磁気ディスク１２９、およびスピンドル・モータ１３１を含んでいる。
【００４７】
フラッシュ・メモリ１０９は読み書きの可能な不揮発性半導体メモリの一例であり、磁気ディスク１２９に比べて容量は小さいがアクセス速度は速い。フラッシュ・メモリ１０９の構成は図４を参照して説明する。ＳＡＴＡインターフェース１０１は、ＰＣＨ２１に接続される。ＤＲＡＭ１１１は、ノートＰＣ１０のシステム（ホスト装置）とハイブリッドＨＤＤ１００との間のデータ転送速度の差を調整するバッファとして機能する。
【００４８】
ＭＰＵ１１３はＲＡＭ１１７を作業領域に利用してＲＯＭ１１５に格納されたファームウェアを実行する。ＭＰＵ１１３は、ＨＤＣ１０３を通じてホスト装置から受け取ったコマンドを解釈してハイブリッドＨＤＤ１００の動作を制御する。コマンドは、ＡＣＰＩに定義されているコマンドに加えて、本実施の形態で新たに導入した特別なコマンドを含む。ハイブリッドＨＤＤ１００は、フラッシュ・メモリ１０９の利用方法に関連して２つの動作モードを備えている。
【００４９】
第１の動作モードは、ハイブリッドＨＤＤとしての本来の動作をするためにフラッシュ・メモリ１０９をキャッシュとして利用する方法で、そのときのハイブリッドＨＤＤ１００の動作モードをキャッシュ・モードということにする。第２の動作モードはホスト装置がフラッシュ・メモリ１０９をメモリとして利用する方法で、そのときのハイブリッドＨＤＤ１００の動作モードをメモリ・モードということにする。
【００５０】
キャッシュ・モードは、通常のハイブリッドＨＤＤの動作モードであるが、メモリ・モードは本発明で導入したあらたな動作モードである。メモリ・モードで動作するハイブリッドＨＤＤ１００は、ＡＴＡが規定する読み取りまたは書き込みのコマンドには応答せず、ホスト装置が発行する特別なコマンドだけに応答する。ホスト装置は、メモリ・モードで動作するハイブリッドＨＤＤ１００に対して特別なコマンドを送って、書き込みデータをフラッシュ・メモリ１０９に書き込み、読み取りデータをフラッシュ・メモリ１０９から読み取ることができる。このときＭＰＵ１１３は読み書きのいずれの場合でも磁気ディスク１２９へアクセスしないように制御する。
【００５１】
キャッシュ・モードで動作するハイブリッドＨＤＤ１００がホスト装置からＡＴＡが規定する読み書きのコマンドを受け取ったときは、フラッシュ・メモリ１０９をキャッシュとして利用し、周知のアルゴリズムで磁気ディスク１２９とフラッシュ・メモリ１０９に対する読み書きをする。フラッシュ・メモリ１１９は、動作モードを設定するモード・フラグおよびＳ３４ステートに遷移させるために必要なフラグを格納する。
【００５２】
ハイブリッドＨＤＤ１００は、モード・フラグを設定してからリセットすることにより動作モードを変更することができる。モード・フラグが設定されていない状態でリセットされるとキャッシュ・モードで動作し、モード・フラグが設定された状態でリセットされるとメモリ・モードで動作する。ハイブリッドＨＤＤ１００は、ノートＰＣ１０がＳ０ステートも含むＨＷ＿Ｓ０ステートのときだけパワー・オン状態になり、Ｓｘステートのときはパワー・オフ状態になる。
【００５３】
パワー・オン状態のハイブリッドＨＤＤ１００はホスト装置からのコマンドまたは独自のアルゴリズムで、アクティブ、アイドル、スタンバイ、またはスリープなどのパワー・マネジメントを実行して消費電力の低減を図る。スタンバイとスリープでは磁気ディスク１２９の回転が停止する。ハイブリッドＨＤＤ１００の構成はＲＯＭ１１５が格納するファームウェアとフラッシュ・メモリ１１９に設定するモード・フラグなどのデータを除いて周知である。
【００５４】
［フラッシュ・メモリの構造］
図４はフラッシュ・メモリ１０９の構成を説明する図である。図４の構成は一例であり、本発明の趣旨に沿った他の構成を採用することもできる。図４（Ａ）は、キャッシュ・モードのときの構成を示し、図４（Ｂ）、（Ｃ）はメモリ・モードのときの構成を示す。図４（Ａ）では、フラッシュ・メモリ１０９の記憶領域がシステム領域１５１、リザーブ領域１５３、リード・キャッシュ領域１５５、およびライト・キャッシュ領域１５７に区分されている。
【００５５】
システム領域１５１には、ハイブリッドＨＤＤ１００の動作に必要なシステム・コードの一部が記憶されている。ハイブリッドＨＤＤ１００は、リセット時にシステム領域１５１に格納されたシステム・コードを実行して磁気ディスク１２９からシステム・データを読み取らないでも、ホスト装置の初期化コマンドなどの一部のコマンドを処理することができる。
【００５６】
リザーブ領域１５３は、磁気ディスク１２９に書き込まれたデータのなかで特に読み取り頻度が高いデータを格納する。リザーブ領域１５３は、リード・キャッシュ領域に記憶されるデータのなかで特に優先度の高いデータを格納する領域である。リード・キャッシュ領域１５５は、ホスト装置が磁気ディスク１２９に書き込まれたデータを最初に読み出すときに同じデータを書き込み、次回以降にホスト装置から同じデータへの読み取り要求があったときに磁気ディスク１２９ではなくリード・キャッシュ領域１５５から読み取るための領域である。
【００５７】
リード・キャッシュ領域１５５のデータは、最もヒット率が高くなるように所定のアルゴリズムで新たなデータに置換される。ライト・キャッシュ領域１５７は、ホスト装置が磁気ディスク１２９に書き込むデータを高速に書き込む領域である。ホスト装置がライト・キャッシュ領域１５７に書き込んだデータは、ライトバック・キャッシングまたはライトスルー・キャッシングで磁気ディスク１２９にも書き込まれる。
【００５８】
図４（Ｂ）では、ライト・キャッシュ領域１５７に割り当てられた領域にメモリ領域１５９が定義されている。メモリ領域１５９は一例では、メイン・メモリ１５が記憶する退避データを、Ｓ３４ステートに遷移する際に退避するための領域である。図４（Ｂ）では、メモリ領域１５９に退避データを記憶してもリード・キャッシュ領域１５５に記憶されていたデータは影響を受けない。
【００５９】
図４（Ｃ）では、メモリ領域１６１がライト・キャッシュ領域１５７とリード・キャッシュ領域１５５の一部に定義されている。キャッシュ・モードで使用するリード・キャッシュ領域１５５はリード・キャッシュ領域１５５ａまで縮小されるため、退避データの記憶のためにそれまで記憶されていたデータを消去しなければならない場合がある。このときメモリ・コントローラ１０７は、優先度の低いデータを消去したり、リード・キャッシュ領域１５５のデータを消去しないために記憶位置を再配置したりすることができる。なお、リード・キャッシュ領域１５５のデータをすべて消去して、ライト・キャッシュ領域１５７の全体とリード・キャッシュ領域１５５の全体をメモリ領域１６１に設定することもできる。
【００６０】
〔ＢＩＯＳ＿ＲＯＭの構成〕
図５はＢＩＯＳ＿ＲＯＭ２５のデータ構造を説明する図である。ＢＩＯＳ＿ＲＯＭ２５に格納されたＢＩＯＳコードは、一例としてＵＥＦＩファームウェアで構成している。ＢＩＯＳ＿ＲＯＭ２５は、ＢＩＯＳコードを格納するＢＩＯＳ領域８１とＢＩＯＳコードが利用するデータ領域８３を含む。ＢＩＯＳ＿ＲＯＭ２５はＢＩＯＳコードの書き換えに伴うリスクを軽減するためにブート・ブロック方式を採用している。ＢＩＯＳ領域８１はブート・ブロック８５とシステム・ブロック８７に分かれている。ブート・ブロック８５は書き込み保護がされている記憶領域でここに格納されたプログラムまたはコードはＴＰＭ（Trusted Platform Module ）の仕様書に規定するＣＲＴＭ(Core Root of Trust for Measurement）として扱われ特別な権限がないと書き換えができないようになっている。
【００６１】
ブート・ブロック８５には基本デバイス初期化コード１０１、一貫性認証コード１０３、ＰＯＳＴ選択コード１０５および退避コード１１３がＣＲＴＭとして格納されている。ＣＲＴＭは、ＢＩＯＳコードの中で一貫性のある部分として構成され、ノートＰＣ１０がブートするときに必ず最初に実行される。ノートＰＣ１０のプラットフォームに関するすべての一貫性の計測は一貫性認証コード１０３により行われる。基本デバイス初期化コード１０１は、ノートＰＣ１０が起動してＳｘステートからＳ０ステートに復帰する際に、メイン・メモリ１５にＢＩＯＳコードをロードして実行を開始するまでの処理に必要なＣＰＵ１１、メイン・メモリ１５およびその他の基本的なデバイスの検出、検査および初期化を最低限の範囲で行う。
【００６２】
ＰＯＳＴ選択コード１０５は、図６の論理値表を含んでおり、ＰＣＨ２１のレジスタ５７、５８、ＲＴＣメモリ５１のＳ３４フラグを参照して、基本ＰＯＳＴコード１０７、簡易ＰＯＳＴコード１１１、Ｓ３ＰＯＳＴコード１１５または退避コード１１３のいずれを実行するかを判断してＢＩＯＳコードの実行パスを制御する。退避コード１１３は、Ｓ０ステートからＳ３４ステートに遷移する際に、Ｓ３ステートにおいてメイン・メモリ１５が記憶する退避データをハイブリッドＨＤＤ１００に転送する。退避コード１１３は、メイン・メモリ１５の離散的なアドレスに記憶されている退避データを連続するデータに構成してから転送することができる。したがって、退避データのサイズはメイン・メモリ２５の容量よりも大幅に小さくすることができる。
【００６３】
基本ＰＯＳＴコード１０７はＳ４ステートまたはＳ５ステートからブートをするために、すべての内部デバイスを対象にして検出、検査、および初期化といった完全なＰＯＳＴ処理を行う。基本ＰＯＳＴコード１０７は、ＰＣＨ２１に接続されている周辺デバイスからパラメータを取得して現在のシステムにおいて最適なパラメータを選択しＰＣＨ２１が含むコントローラに設定する。
【００６４】
このように内部デバイスを検査してそこから取得した情報に基づいて選択した最適なパラメータをコントローラに設定することを初期化といい、いずれかの場所に保存しておいた過去に設定したパラメータを対応するコントローラに設定することをリストアということにする。リストアは、内部デバイスの検出、検査および最適パラメータの選択のための処理を省略するので初期化に比べて短時間で完了することができる。
【００６５】
認証コード１０９は、パワー・オン・パスワード、ＨＤＤパスワード、および管理者パスワードなどのＢＩＯＳパスワードの設定のためのプロンプトをＬＣＤ１９に表示したり、入力されたパスワードを認証しまたはハイブリッドＨＤＤ１００に送ってロックを解除したりする。簡易ＰＯＳＴコード１１１は、Ｓ３４ステートからＳ０ステートに復帰する際に、一部のデバイスの検出、検査、および最適なパラメータの選択などのＰＯＳＴ処理を省略して基本ＰＯＳＴコード１０７よりも短時間でブートを完了する。ＰＯＳＴ処理を省略するデバイスの対象としては、ハイブリッドＨＤＤ１００、ＵＳＢデバイス、および無線モジュールなどのような応答時間が長いために初期化に多くの時間を費やすデバイスや、動作のタイミングからＯＳが初期化をしても問題がないようなデバイスなどを選定することができる。
【００６６】
Ｓ４ステートまたはＳ５ステートからブートするときに実行された基本ＰＯＳＴコード１０７が設定した最適なパラメータやそのときのデバイスの情報など（以下、パラメータという。）はＢＩＯＳ＿ＲＯＭ２５のデータ領域８３またはＮＶＲＡＭ３１に格納される。簡易ＰＯＳＴコード１１１は、ブートするときに基本的なデバイスを除いて格納しておいたパラメータをリストアすることでＰＯＳＴ時間を短縮することができる。
【００６７】
Ｓ３ＰＯＳＴコード１１５は、Ｓ３ステートからレジュームする際に簡易ＰＯＳＴコード１１１よりも短時間でＰＯＳＴ処理を完了する。Ｓ４ステートまたはＳ５ステートからブートする際に基本ＰＯＳＴコード１０７が設定したパラメータは、Ｓ０ステートにおいてメイン・メモリ１５に記憶される。Ｓ０ステートからＳ３ステートにサスペンドするときには、メイン・メモリ１５に記憶されたパラメータおよびＳ３ＰＯＳＴコード１１５の記憶が維持される。Ｓ３ＰＯＳＴコード１１５は、メイン・メモリ１５に記憶されたパラメータをリストアすることで短時間にコントローラの設定を完了することができる。
【００６８】
Ｉ／Ｏコード１１７は、ＣＰＵ１１がリアル・モードで動作する際に周辺デバイスにアクセスするための入出力のインターフェースを提供する。ＢＩＯＳセット・アップ・コード１１９は、ブート・ドライブの選択、各デバイスの機能のイネーブル／ディスエーブル、セキュリティのイネーブル／ディスエーブルなどのような内部デバイスに対する設定をユーザがカスタマイズするためのインターフェースを提供する。ブートの初期の段階で所定のキーを操作するとＢＩＯＳセット・アップ・コード１１９が実行されて、ＬＣＤ１９にＢＩＯＳセット・アップ画面が表示される。
【００６９】
ユーザが設定したセット・アップ・データの多くは、ＰＣＨ２１内のＲＴＣメモリ５１に記憶される。ＣＰＵ１１は基本ＰＯＳＴコード１０７、簡易ＰＯＳＴコード１１１、またはＳ３ＰＯＳＴコード１１５を実行する際にＲＴＣメモリ５１に記憶されたセット・アップ・データを参照する。ユーザは、ＢＩＯＳセット・アップ画面を通じて、Ｓ３４ステートの利用をイネーブルまたはディスエーブルに設定することができる。
【００７０】
さらにＳ３４ステートの利用をイネーブルに設定する際には、Ｓ３４時間を設定することもできる。設定されたＳ３４イネーブル・フラグとＳ３４時間は、データ領域８３に格納される。環境ユーティリティ・コード１２１は、ノートＰＣ１０の温度および電力を制御する。各ＢＩＯＳコードは、図３に示したように独立したコードで構成する必要はなく、コードの一部を共通化してそれぞれの機能を果たすように実行パスを制御するように構成してもよい。本発明はブート・ブロック方式を採用しないＢＩＯＳ＿ＲＯＭ、あるいは、ＢＩＯＳ領域の全体をブート・ブロックにしたＢＩＯＳ＿ＲＯＭに適用することもできる。
【００７１】
［Ｓ０ステートからＳｘステートへの遷移］
図７、図８はノートＰＣ１０がＳ０ステートからＳｘステートへパワー・ステートを変更するときの手順を示すフローチャートである。ブロック３０１で、ノートＰＣ１０は最初にＳ５ステートに遷移しておりＡＣＰＩレジスタ５７はＳ５ステートに設定されているものと想定する。また、レジスタ５８およびＲＴＣメモリ５１のＳ３４フラグ、Ｓ３４時間は何らか値が設定されているものとする。パワー・ボタン３７を操作して起動イベントを生成しノートＰＣ１０の電源を起動すると、パワー・コントローラ３３がＤＣ／ＤＣコンバータ３５を動作させてノートＰＣ１０をＨＷ＿Ｓ０ステートに遷移させる。
【００７２】
フラッシュ・メモリ１１９には、モード・ビットが設定されていないため、リセットされたハイブリッドＨＤＤ１００はキャッシュ・モードで動作する。ＥＣ２７から起動イベントを受け取ったＰＣＨ２１は、ＣＰＵ１１にリセット信号を送ってパワー・オン・リセットする。リセットされたＣＰＵ１１は、ブート・ブロック８５に格納された基本デバイス初期化コード１０１から実行するように構成されている。
【００７３】
リセット信号を受け取ったＣＰＵ１１は、電圧が安定すると内部のキャッシュおよびレジスタを初期化する。ＣＰＵ１１はその後あらかじめ定められたＢＩＯＳ＿ＲＯＭ２５のアドレス（リセット・ベクタ）にアクセスしてインストラクションをフェッチする。ＣＰＵ１１は、アクセス先であるリセット・ベクタをＢＩＯＳ＿ＲＯＭ２５の基本デバイス初期化コード１０１のアドレスに切り換える。
【００７４】
ＣＰＵ１１はブート・ブロック８５に格納されたＢＩＯＳコードをキャッシュに読み出して、メイン・メモリ１５およびＰＣＨ２１などのＢＩＯＳコードを実行するのに必要な基本的なデバイスの検出、検査および初期化をする。基本デバイス初期化コード１０１は、初期化するためにコントローラに設定したパラメータをデータ領域８３および必要に応じてＮＶＲＡＭ３１に書き込む。
【００７５】
メイン・メモリ１５が利用できるようになると、つづいて基本デバイス初期化コード１０１はシステム・ブロック８７に格納されているＢＩＯＳコードおよびデータ領域８３のパラメータをメイン・メモリ１５にロードして、メイン・メモリ１５をシャドウＲＡＭとして利用できるようにする。ＣＰＵ１１は、ブート・ブロック８５に格納された一貫性認証コード１０３およびＰＯＳＴ選択コード１０５の実行が終了すると、メイン・メモリ１５にアクセスしてロードしたＢＩＯＳコードを実行する。
【００７６】
つぎに、一貫性認証コード１０３は、システム・ブロック８７に格納されたＢＩＯＳコードの改変に関する検証を行う。検証が終了するとブロック３０３でＣＰＵ１１はＰＯＳＴ選択コード１０５を実行する。ＰＯＳＴ選択コード１０５は最初にＲＴＣメモリ５１のＳ３４フラグを参照する。ＰＯＳＴ選択コード１０５は、Ｓ３４フラグが設定されていないことを確認するとＡＣＰＩレジスタ５７を参照する。ＰＯＳＴ選択コード１０５は、ＡＣＰＩレジスタ５７にＳ５ビットが設定されていることを確認すると、図６の実行パス＃４に従って基本ＰＯＳＴコード１０７に制御権を移す。なお以下の手順においてＣＰＵ１１がリセットされるたびに実行されるＰＯＳＴ選択コード１０５は、図６の論理値表を参照して同様の手順で実行パスを決定する。
【００７７】
ブロック３０５では基本ＰＯＳＴコード１０７が実行されている初期の段階で、ユーザがキーボード２９の所定のファンクション・キーを押下するとＢＩＯＳセット・アップ・コード１１９が呼び出されてＬＣＤ１９にセット・アップ画面を表示する。本発明との関連では、セット・アップ画面を通じてユーザがＢＩＯＳ＿ＲＯＭ２５のデータ領域８３に対するＳ３４フラグの設定およびＳ３４時間の設定を行う。ユーザは、Ｓ３ステートの利便性とＳ３４ステートの省電力の効果を考慮して０時間から所定の時間の範囲の間でＳ３４時間を設定することができる。一例としてＳ３４時間は３時間に設定する。ＢＩＯＳセット・アップ・コード１１９は入力された他のセット・アップ・データをＲＴＣメモリ５１に記憶する。
【００７８】
ユーザはセット・アップ画面を通じて、ハイブリッドＨＤＤ１００のフラッシュ・メモリ１０９に、メモリ領域１５９またはメモリ領域１６１として必要な容量を設定することができる。基本ＰＯＳＴコード１０７は、設定されたメモリ領域１５９、１６１の容量をハイブリッドＨＤＤ１００のフラッシュ・メモリ１１９に格納する。ユーザがＢＩＯＳセット・アップ・コード１１９を終了すると、中断していた基本ＰＯＳＴコード１０７が実行される。基本ＰＯＳＴコード１０７は基本デバイス初期化コード１０１で処理されていない残りのすべてのデバイスの検出、検査および初期化を行う。
【００７９】
ＢＩＯＳコードのブート処理が終了するとブロック３０７でＯＳのロードが開始される。ＯＳ、デバイス・ドライバ、およびアプリケーションなどのプログラムがハイブリッドＨＤＤ１００からメイン・メモリ１５にロードされて実行される。その後ＯＳは、ＢＩＯＳコードがロードされたメイン・メモリ１５の記憶領域を、Ｓ３ステートからＳ０ステートにレジュームする際に必要なコードを除いて一般のプログラムのために開放しＳ０ステートに遷移させる。以後の手順も含めてＳ０ステートに遷移するたびに、ハイブリッドＨＤＤ１００は基本デバイス初期化コード１０１により初期化される。
【００８０】
ブロック３０９でユーザはパワー・ボタン３７の押下、リッド・クローズ、Ｆｎキーの操作、ＯＳのインターフェースを通じた操作またはパワー・マネジメントの実行などによりノートＰＣ１０をＳ０ステートからＳｘステートに遷移させる操作をする。操作の種類と遷移先の関係はあらかじめ定義されている。Ｓ３ステートに移行させる操作とＳ３４ステートに移行させる操作は同一とすることができる。
【００８１】
すなわち、ユーザはＢＩＯＳセット・アップ・コード１１９を実行してＳ３４フラグを設定した後は、Ｓ３４ステートへの遷移を意識した操作をする必要はない。ノートＰＣ１０はユーザがＳ３ステートに遷移させる操作をするとＳ３ステートに遷移し、Ｓ３４時間の経過により自動的にＳ３４ステートに遷移する。Ｓ３ステートに遷移するときはブロック３１１に移行し、Ｓ４ステートまたはＳ５ステートに遷移するときはブロック３１３に移行してそれぞれの処理が行われる。また、Ｓ３４ステートに遷移するときはブロック３１５で処理される。
【００８２】
ＢＩＯＳ＿ＲＯＭ２５のＳ３４フラグがディスエーブルに設定されているときはブロック３１１の処理が行われる。ＯＳが、ＡＣＰＩレジスタ５７にＳ３ステートへの遷移がイネーブルになるように設定すると、ノートＰＣ１０はＳ３ステートに遷移する。ＡＣＰＩレジスタへの設定をトラップしたＳＭＩハンドラは、ＢＩＯＳ＿ＲＯＭ２５のＳ３４フラグを確認してＲＴＣメモリ５１のＳ３４フラグとＳ３４時間をクリアする。
【００８３】
ブロック３１３でＯＳは、ＡＣＰＩレジスタ５７にＳ４ステートまたはＳ５ステートがイネーブルになるように設定して遷移させる。ＳＭＩハンドラはＡＣＰＩレジスタへの設定をトラップしないため、ＲＴＣメモリ５１に対するＳ３４フラグの設定をしない。ＢＩＯＳ＿ＲＯＭ２５のＳ３４フラグがイネーブルに設定されているときはＳ３４ステートに遷移するブロック３１５の処理が行われる。ブロック３１５の手順は図８を参照して説明する。
【００８４】
図８は、ノートＰＣ１０のシステムの動作とそれに対応するハイブリッドＨＤＤ１００の動作を示している。ブロック４０１ではブロック３０９で生成された操作イベントを検出したＰＣＨ２１がＣＰＵ１１に割り込みをかけると、ＯＳは動作中のプログラムにＳ３ステートに遷移するための処理をするように指示し、ＯＳおよび必要に応じてデバイス・ドライバおよびＢＩＯＳがＳ３ステートで消失するシステム・コンテキストをメイン・メモリ１５に記憶する。
【００８５】
システム・コンテキストは、ＯＳやデバイス・ドライバにより各デバイスのレジスタに設定されるハードウェア・コンテキストや、ＯＳやデバイス・ドライバがＣＰＵ１１およびその他のデバイスのキャッシュに記憶する制御データなどのソフトウェア・コンテキストを含む。ＯＳは、Ｓ０ステートからＳ３ステートまたはＳ４ステートに遷移する際にメイン・メモリ１５にシステム・コンテキストを書き込む。
【００８６】
この時点に対応するブロック４５１でハイブリッドＨＤＤ１００は、キャッシュ・モードに設定されており、アクティブ、アイドル、スタンバイ、スリープなどのいずれかのパワー・ステートに遷移している。ブロック４０３でＯＳは、Ｉ／Ｏコード１１７を通じてハイブリッドＨＤＤ１００にＡＴＡが規定するPower Up in Standbyの設定をするためのSET FEATURESコマンドを送る。コマンドを受け取ったＭＰＵ１１３は、フラッシュ・メモリ１１９にPower Up in Standbyのイネーブルを設定する。Power Up in Standbyの設定は、それ以後に解除するコマンドを受け取らない限り、パワー・オン・リセット、ハードウェア・リセット、またはソフトウェア・リセットのいずれによっても解除されることはない。
【００８７】
Power Up in Standbyがイネーブルに設定されると、次に電源が投入されたハイブリッドＨＤＤ１００はスタンバイに遷移し、磁気ディスク１２９を回転させないでSET FEATURES、IDENTIFY DEVICE、IDENTIFY PACKET DEVICEなどのＡＴＡのコマンドを処理することができる。そして、それ以後にホスト装置から磁気ディスク１２９に対する読み書きのコマンドを受け取ったときは磁気ディスク１２９を回転させて処理する。ブロック４０５でＯＳは、Ｉ／Ｏコード１１７を通じてハイブリッドＨＤＤ１００にメモリ・モードに設定するためのコマンドを送る。ブロック４５３でコマンドを受け取ったＭＰＵ１１３は、フラッシュ・メモリ１１９にモード・フラグを設定する。
【００８８】
ＯＳは各プログラムからＳ３ステートへ遷移する準備が完了したことの通知を受け取ると、ＡＣＰＩレジスタ５７に対してＳ３ステートへの遷移がイネーブルになるように設定する。ＳＭＩハンドラは、ＡＣＰＩレジスタ５７への設定をトラップして、ＢＩＯＳ＿ＲＯＭ２５にＳ３４フラグが設定されていることを確認すると、ＲＴＣメモリ５１にＳ３４フラグとＳ３４時間を設定する。ＡＣＰＩレジスタ５７がイネーブルに設定されると、ＰＣＨ２１はＥＣ２７に指示してメイン・メモリ１５の記憶を維持するために必要な電源以外の電源を停止し、ＲＴＣ５０のアラーム機構（RTC Resume）を動作させてブロック４０７でノートＰＣ１０をＳ３ステートに遷移させる。このときブロック４５５で、ハイブリッドＨＤＤ１００の電源も停止する。
【００８９】
ブロック４０９でＲＴＣ５０が計時した時間がＲＴＣメモリ５１に設定したＳ３４時間に到達するとブロック４１１に移行する。ブロック４１１でＲＴＣ５０はレジスタ５８にタイム・アウト・ビットを設定し、さらにＥＣ２７に指示してＨＷ＿Ｓ０ステートに遷移させる。このときブロック４５７でハイブリッドＨＤＤ１００はパワー・オン状態に遷移するが、Power Up in Standbyがイネーブルに設定されているため、磁気ディスク１２９は回転しない。
【００９０】
ブロック４１１でリセットされたＣＰＵ１１はＣＲＴＭを最初のアドレスから実行する。ＰＯＳＴ選択コード１０５は、レジスタ５８とＲＴＣメモリ５１を参照して図６の実行パス＃２を選択してからレジスタ５８のタイム・アップ・ビットを解除する。ブロック４１３で退避コード１１３に制御権が移る。初期化されたハイブリッドＨＤＤ１００のＭＰＵ１１３はブロック４６１でフラッシュ・メモリ１１９を参照して、モード・フラグの設定を確認するとメモリ・モードに移行する。ブロック４１５で退避コード１１３はフラッシュ・メモリ４０９をメモリ・モードで使用するための特別な初期化コマンドを発行する。
【００９１】
コマンドを受け取ったＭＰＵ１１３はメモリ・コントローラ１０７に指示してブロック４６３でフラッシュ・メモリ１０９を初期化しメモリ領域１５９またはメモリ領域１６１を形成する。このときＭＰＵ１１３は必要に応じてリード・キャッシュ領域１５５に記憶されていたデータの記憶場所を変更してメモリ領域１６１のためのスペースを確保する。メモリ領域１５９またはメモリ領域１６１に対応するライト・キャッシュ領域１５７またはリード・キャッシュ領域１５５は、それまで記憶されていたデータが消去されて新たなデータが記録できる状態になる。
【００９２】
ブロック４１７で退避コード１１３は、メイン・メモリ１５に記憶されている退避データの離散的なアドレスを連続するアドレスに構成してから特別な書き込みコマンドを発行してシステム・コンテキストを含む退避データをハイブリッドＨＤＤ１００に転送する。アドレスの構成により、転送する退避データのサイズはメイン・メモリ１５のサイズの半分以下まで小さくすることができる。メモリ・モードでのデータ転送で退避コード１１３は、ＯＳがハイブリッドＨＤＤ１００に書き込みデータを転送する場合のように磁気ディスク１２９のＬＢＡを指定しないで退避データのサイズを知らせて転送できる。ＰＣＨ２１からハイブリッドＨＤＤ１００にはＳＡＴＡでシリアル転送されるため、適当なサイズごとにパリティ・チェックを付加して転送することが望ましい。
【００９３】
ブロック４６５でコマンドを受け取ったＭＰＵ１１３は、ＳＡＴＡインターフェース１０１を通じて受け取った退避データをメモリ領域１５９またはメモリ領域１６１に書き込むようにＨＤＣ１０３およびメモリ・コントローラ１０７などを設定する。このとき、ＭＰＵ１１３は磁気ディスク１２９を回転させない。また、ＭＰＵ１１３はＡＴＡの書き込みコマンドを受け取ってもそれに応答しない。この時点で退避コード１１３は、SET FEATURESコマンドを送ってPower Up in Standbyの設定を解除してもよい。ＭＰＵ１１３はフラッシュ・メモリ１０９への退避データの書き込みが終了すると、フラッシュ・メモリ１１９に退避データが書き込まれていることを示すフラグを設定する。
【００９４】
転送が終了すると退避コード１１３はブロック４１９でＥＣ２７を通じてパワー・コントローラ３３などの起動に必要な最小限のデバイスの電源以外の電源を停止する。それに伴ってブロック４６７でハイブリッドＨＤＤ１００はパワー・オフ状態になる。この時点でノートＰＣ１０は、ＯＳはシステムがＳ３ステートに遷移していると認識するが実際の電源状態およびデータ状態はＳ４ステートであるＳ３４ステートに遷移する。
【００９５】
［ＳｘステートからＳ０ステートへの遷移］
図９、図１０はノートＰＣ１０がＳｘステートからＳ０ステートへパワー・ステートを変更するときの手順を示すフローチャートである。ブロック５０１でＳｘステートに遷移しているノートＰＣ１０に対して、ブロック５０３でパワー・ボタン３７の押下またはリッド・センサ３８の動作があると起動イベントが生成されて、パワー・コントローラ３３がＤＣ／ＤＣコンバータ３５を動作させブロック５０５でシステムをＨＷ＿Ｓ０ステートに遷移させる。
【００９６】
このときリセットされたハイブリッドＨＤＤ１００は、フラッシュ・メモリ１１９にモード・フラグが設定されているためメモリ・モードで動作する。Power Up in Standbyの設定が解除されていない場合は、磁気ディスク１２９は回転しない。ＭＰＵ１１３は、フラッシュ・メモリ１１９に退避データが格納されていることを示すフラグが世定されている間はたとえ初期化をするための特別なコマンドを受け取っても、フラッシュ・メモリ１０９の初期化をしない。ブロック５０７でＣＰＵ１１はＰＯＳＴ選択コード１０５を実行する。
【００９７】
ＰＯＳＴ選択コード１０５は、ＲＴＣメモリ５１のＳ３４フラグ、レジスタ５７のビットを確認して図６の実行パスを選択する。ＰＯＳＴ選択コード１０５は、Ｓ３ステートからの復帰であると判断したときは実行パス＃３を選択してブロック５０９でＳ３ＰＯＳＴコード１１５に制御権を移す。Ｓ３ＰＯＳＴコード１１５がＰＯＳＴ処理を終了すると、ノートＰＣ１０はＳ３ステートへ遷移する前の状態に復帰する。ＰＯＳＴ選択コード１０５はＳ４、Ｓ５ステートからの復帰であると判断したときは実行パス＃４を選択してブロック５１１で基本ＰＯＳＴコード１０７を実行してシステムをＳ０ステートに復帰させる。
【００９８】
ブロック５１３のＳ３４ステートからの復帰処理は図１０を参照して説明する。ブロック６０１でＰＯＳＴ選択コード１０５が実行パス＃１を選択すると、簡易ＰＯＳＴコード１１１に制御権が移る。このときブロック６５１でハイブリッドＨＤＤ１００は、メモリ・モードで動作している。ブロック６０３で簡易ＰＯＳＴコード１１１は、ハイブリッドＨＤＤ１００に退避データを読み取るための特別な読み取りコマンドを発行する。退避データは常に一括して転送されるため特別な読み取りコマンドは、読み取りの指示をするだけでよい。
【００９９】
メモリ・モードの間は、ＭＰＵ１１３はＡＴＡの読み取りコマンドには応答しないで、フラッシュ・メモリ１０９のメモリ領域１５９、１６１に書き込まれたデータを出力する。ブロック６５３でコマンドを受け取ったＭＰＵ１１３は、フラッシュ・メモリ１０９に書き込まれた退避データをメイン・メモリ１５に転送する。このとき、ＭＰＵ１１３は磁気ディスク１２９が回転しないように制御する。
【０１００】
ブロック６０５で簡易ＰＯＳＴコード１１１は、ハイブリッドＨＤＤ１００にキャッシュ・モードに変更するための特別なモード切換コマンドを発行する。ブロック６５５でコマンドを受け取ったＭＰＵ１１３は、フラッシュ・メモリ１１９に設定されていたモード・フラグを解除する。ブロック６０７で簡易ＰＯＳＴコード６０１は、フラッシュ・メモリ１０９をキャッシュ・モードで利用するための特別な初期化コマンドを発行する。コマンドを受け取ったＭＰＵ１１３は、ブロック６５７でフラッシュ・メモリ１０９を図４（Ａ）の状態になるように初期化する。
【０１０１】
ブロック６０９で簡易ＰＯＳＴコード１１１はハイブリッドＨＤＤ１００にＡＴＡが規定するDEVICE RESETコマンドを送る。コマンドを受け取ったＭＰＵ１１３は、リセット動作をする際にフラッシュ・メモリ１１９のモード・フラグが解除されていることを確認すると、ブロック６５９でキャッシュ・モードに移行する。簡易ＰＯＳＴコード１１１はこの時点でPower Up in Standbyの解除をすれば、Ｓ３４ステートへの遷移と復帰の間に磁気ディスク１２９は一切回転しないので、一層消費電力を低減することができる。
【０１０２】
この時点でノートＰＣ１０のデータ状態はＳ３ステートであるが、電源状態はＨＷ＿Ｓ０ステートである。データ転送が終了するとブロック６１１で簡易ＰＯＳＴコード１１１は、制御権をＯＳに移す。ＯＳは、ＡＣＰＩレジスタ５７を参照して遷移元のパワー・ステートがＳ３ステートであると認識してＳ０ステートに遷移するために、必要に応じてデバイス・ドライバおよびＢＩＯＳと協働しながらシステム・コンテキストをリセットされた各デバイスに復帰してＳ０ステートに遷移する。Ｓ３４ステートからＳ０ステートへの復帰は、磁気ディスク１２９にアクセスしないでフラッシュ・メモリ１０９から退避データを読み出し、かつ簡易ＰＯＳＴコード１１１で復帰処理をするため短時間で終了することができる。
【０１０３】
これまで本発明について図面に示した特定の実施の形態をもって説明してきたが、本発明は図面に示した実施の形態に限定されるものではなく、本発明の効果を奏する限り、これまで知られたいかなる構成であっても採用することができることはいうまでもないことである。
【符号の説明】
【０１０４】
１００  ハイブリッドＨＤＤ
１０９  フラッシュ・メモリ
１５５  リード・キャッシュ領域
１５７  ライト・キャッシュ領域
１５９、１６１  メモリ領域
【図１】
2014056543.tif 000003
【図２】
2014056543.tif 000004
【図３】
2014056543.tif 000005
【図４】
2014056543.tif 000006
【図５】
2014056543.tif 000007
【図６】
2014056543.tif 000008
【図７】
2014056543.tif 000009
【図８】
2014056543.tif 000010
【図９】
2014056543.tif 000011
【図１０】
2014056543.tif 000012