(57)【要約】【課題】フラッシュ・メモリに記憶したデータを保護する。【解決手段】  キャッシュ・コントローラ２７は、フラッシュ・メモリ２１をキャッシュとしてライトバック・キャッシングでＨＤＤ１９にデータを書き込む。キャッシュ・コントローラは、所定のアルゴリズムでフラッシュ・メモリのデータをＨＤＤ２１にフラッシュするので書き込みデータがフラッシュ・メモリ２１にだけ存在する状態が発生する。フラッシュ・メモリが記憶を維持できる限界記憶保持時間を計算し、フラッシュ・メモリが記憶するデータが限界記憶保持時間に到達したか否かを判断する。スリープ状態に遷移している間に限界記憶保持時間に到達したと判断したときにパワー・オン状態に移行してフラッシュする。【選択図】図１
2014075015.tif 000002
【特許請求の範囲】
【請求項１】
第１の不揮発性記憶装置と第２の不揮発性記憶装置とを有する電子機器において、前記第２の不揮発性記憶装置が記憶するデータを保護する方法であって、
前記第２の不揮発性記憶装置にデータを書き込むステップと、
前記第２の不揮発性記憶装置の限界記憶保持時間を計算するステップと、
前記第２の不揮発性記憶装置が記憶するデータが前記限界記憶保持時間に到達したか否かを判断するステップと、
前記電子機器がスリープ状態に遷移している間に前記限界記憶保持時間に到達したと判断したときにパワー・オン状態に移行して前記第２の不揮発性記憶装置が記憶するデータを前記第１の不揮発性記憶装置に書き込むステップと
を有する方法。
【請求項２】
前記第２の不揮発性記憶装置が、前記第１の不揮発性記憶装置のライトバック・キャッシング方式のキャッシュとして機能する請求項１に記載の方法。
【請求項３】
前記スリープ状態がハイバネーション状態で前記第２の不揮発性記憶装置が半導体メモリであり、前記第１の不揮発性記憶装置に書き込むステップが、前記第２の不揮発性記憶装置が記憶するデータをリフレッシュするステップを含む請求項１または請求項２に記載の方法。
【請求項４】
前記第２の不揮発性記憶装置に書き込んだ直後に前記ハイバネーション状態に戻るステップを有する請求項３に記載の方法。
【請求項５】
前記限界保持時間に到達したか否かを判断するステップが、前記スリープ状態に移行してからの経過時間で判断する請求項１から請求項４のいずれかに記載の方法。
【請求項６】
前記限界保持時間に到達したか否かを判断するステップが、前記第２の不揮発性記憶装置にデータを書き込んでからの経過時間で判断する請求項１から請求項４のいずれかに記載の方法。
【請求項７】
前記電子機器に電池ユニットから電力を供給するステップを有し、前記第１の不揮発性記憶装置に書き込むステップが、
前記電池ユニットの残容量が所定値に到達したときには前記限界記憶保持時間に到達したと判断する前に前記第２の不揮発性半導体装置が記憶するデータを前記第１の不揮発性記憶装置に書き込む請求項１から請求項６のいずれかに記載の方法。
【請求項８】
スリープ状態における経過時間を前記電池ユニットの電気量の変化から計時するステップを含む請求項７に記載の方法。
【請求項９】
前記限界記憶保持時間を計算するステップが、前記第２の不揮発性記憶装置の劣化パラメータの変化に応じて定期的に計算するステップを含む請求項１から請求項８のいずれかに記載の方法。
【請求項１０】
前記スリープ状態に移行する直前に前記第２の不揮発性記憶装置のデータの書き換えまたは前記第１の不揮発性記憶装置への書き込みを行うステップを有する請求項１から請求項９のいずれかに記載の方法。
【請求項１１】
電子機器に搭載された不揮発性記憶装置が記憶するデータを保護する方法であって、
前記不揮発性記憶装置にデータを書き込むステップと、
前記不揮発性記憶装置の限界記憶保持時間を計算するステップと、
前記不揮発性記憶装置が記憶するデータが前記限界記憶保持時間に到達したか否かを判断するステップと、
前記電子機器がスリープ状態に遷移している間に前記限界記憶保持時間に到達したと判断したときにパワー・オン状態に移行して前記不揮発性記憶装置が記憶するデータを書き換えるステップと
を有する方法。
【請求項１２】
前記スリープ状態がサスペンド状態である請求項１１に記載の方法。
【請求項１３】
プロセッサと、
第１の不揮発性記憶装置と、
第２の不揮発性記憶装置と、
前記第２の不揮発性記憶装置の劣化パラメータと限界記憶保持時間の関係を示す参照テーブルと、
前記劣化パラメータと前記参照テーブルから限界記憶保持時間を計算し、前記第２の不揮発性記憶装置にデータを書き込んでスリープ状態に移行してからの経過時間が前記限界記憶保持時間に到達したときにパワー・オン状態に移行して前記第２の不揮発性記憶装置に記憶したデータを前記第１の不揮発性記憶装置に記憶する制御部と
を有する電子機器。
【請求項１４】
前記第１の不揮発性記憶装置が磁気ディスク装置で前記第２の不揮発性記憶装置が半導体メモリである請求項１３に記載の電子機器。
【請求項１５】
前記第２の不揮発性記憶装置をライトバック・キャッシング方式により前記第１の不揮発性記憶装置のキャッシュとして機能させるキャッシュ・コントローラを有する請求項１３または請求項１４に記載の電子機器。
【請求項１６】
前記電子機器に電力を供給する電池パックを有し、
前記制御部は前記電池パックの残量が所定値だけ減少したときにパワー・オン状態に移行して前記第２の不揮発性記憶装置に記憶したデータを前記第１の不揮発性記憶装置に記憶する請求項１３から請求項１５のいずれかに記載の電子機器。
【請求項１７】
前記劣化パラメータが、前記不揮発性記憶装置の累積使用時間である請求項１３から請求項１６のいずれかに記載の電子機器。
【請求項１８】
プロセッサと、
不揮発性記憶装置と、
前記不揮発性記憶装置の劣化パラメータと限界記憶保持時間の関係を示す参照テーブルと、
前記劣化パラメータと前記参照テーブルから限界記憶保持時間を計算し、前記不揮発性記憶装置にデータを書き込んでスリープ状態に移行してからの経過時間が前記限界記憶保持時間に到達したときにパワー・オン状態に移行して前記不揮発性記憶装置に記憶したデータを書き換える制御部と
を有する電子機器。
【請求項１９】
第１の不揮発性記憶装置と第２の不揮発性記憶装置とを有するコンピュータに、
前記第２の不揮発性記憶装置にデータを書き込む機能と、
前記第２の不揮発性記憶装置の限界記憶保持時間を計算する機能と、
前記第２の不揮発性記憶装置にデータを書き込んでからの経過時間を計時する機能と、
前記電子機器がスリープ状態に遷移している間に前記経過時間が前記限界記憶保持時間に到達したときにパワー・オン状態に移行して前記第２の不揮発性記憶装置が記憶するデータを前記第１の不揮発性記憶装置に書き込む機能と
を実現させるためのコンピュータ・プログラム。
【請求項２０】
不揮発性記憶装置を有するコンピュータに、
前記不揮発性記憶装置にデータを書き込む機能と、
前記不揮発性記憶装置の限界記憶保持時間を計算する機能と、
前記不揮発性記憶装置にデータを書き込んでからの経過時間を計時する機能と、
前記電子機器がスリープ状態に遷移している間に前記経過時間が前記限界記憶保持時間に到達したときにパワー・オン状態に移行して前記不揮発性記憶装置が記憶するデータを書き換える機能と
を実現させるためのコンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、有限の記憶保持時間を有する不揮発性記憶装置が記憶するデータを保護する技術に関する。
【背景技術】
【０００２】
ノートブック型パーソナル・コンピュータ（ノートＰＣ）またはタブレット端末などの携帯式コンピュータでは、バッテリィによる動作時間を確保することが特に重要である。そのために携帯式コンピュータは、パワー・オン状態からさまざまな省電力状態に遷移する。ハイバネーション状態では、パワー・オン状態でのシステム・コンテキストおよびメイン・メモリの記憶内容（ハイバネーション・データ）をハードディスク・ドライブ（ＨＤＤ）やソリッド・ステート・ドライブ（ＳＳＤ）などのディスク・ドライブに格納してからほとんどのデバイスの電力を停止する。復帰時はディスク・ドライブからハイバネーション・データを元の位置に復帰することでパワー・オフ状態から起動するよりも復帰時間を短縮することができる。
【０００３】
米国インテル社（インテルは登録商標）は、インテル・ラピッド・ストレージ・テクノロジー（ＩＲＳＴ）というＲＡＩＤ管理用ツールの一部としてインテル・スマート・レスポンス・テクノロジー（ＩＳＲＴ）という技術を提供する。ＩＳＲＴは、Ｍｉｎｉ ＳＡＴＡというインターフェースに接続されたフラッシュ・メモリ（ＳＳＤ）をＨＤＤのキャッシュとして利用して、高速な読み取りを実現する技術である。
【０００４】
ＩＳＲＴでは、ＯＳはＨＤＤだけに格納され、ＳＳＤはデータ領域とキャッシュ領域がパーティションで区切られている。ホストがライト・コマンドを発行したときは、ライトスルー・キャッシングのようにデータをＳＳＤとＨＤＤの両方に書き込む。あるいはライトバック・キャッシングのようにデータを先にＳＳＤにだけ書き込みアイドル時にＨＤＤに書き込む。ホストが発行したリード・コマンドに対して、ＳＳＤにデータがあるときはＳＳＤから読み取り、ＳＳＤにデータがないときはＨＤＤから読み取って返送する。
【０００５】
特許文献１は、ＮＡＮＤ型フラッシュ・メモリのデータ保持期間が経過したときに、情報処理装置を起動しないようにした情報処理装置を開示する。起動後に前回のデータ保持期間の開始日時となる最終確認日時がＣＭＯＳ  ＲＡＭに記録されていることを確認したときは、それとＲＴＣから取得した現在の日時と比較する。そして、データ保持期間が経過していると判断したときは起動を中止する。なお、最終確認日時の記録は、サスペンドまたはハイバネーションを行うとき、レジュームするとき、またはシャットダウンしたときに行う。
【０００６】
特許文献２は、最後の書き換え時刻からの経過時間が限界電荷保持時間に到達したときにリフレッシュする半導体不揮発性記憶装置を開示する。限界電荷保持時間は、累積書き換え回数が増大すると減少する。限界電荷保持時間は、実際に取得した累積書き換え回数とあらかじめ用意した累積書き換え回数と限界電荷保持時間を関連付けたテーブルから計算する。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２０１２−８８７８０号公報
【特許文献２】特開平８−１４７９８８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
フラッシュ・メモリには、特許文献２が示すようにフローティング・ゲートが電荷を保持することができる時間（以後、限界記憶保持時間ということにする。）が存在する。そして、フラッシュ・メモリに対する累積書き換え回数が増加するにしたがって、限界記憶保持時間は短縮する。フラッシュ・メモリをＨＤＤのキャッシュとして利用する場合は、システムがＨＤＤに書き込むデータが一旦フラッシュ・メモリに書き込まれる。ライトバック・キャッシングは、高速にＨＤＤへの書き込みをする場合などに採用され、サイトスルー・キャッシングはデータ記録の信頼性を高めたい場合などに採用される。
【０００９】
ライトバック・キャッシングでは、書き込みが完了した時点でフラッシュ・メモリにだけデータが存在する。フラッシュ・メモリが記憶するデータは、システムがアイドル状態のときなどの所定のアルゴリズムに基づくタイミングでＨＤＤに書き込まれる。この処理をフラッシュという。劣化が進行したフラッシュ・メモリにライトバック・キャッシングを採用すると、フラッシュ・メモリが記憶するデータをＨＤＤに書き込んでからの経過時間が限界記憶保持時間を越えてデータが消失する傾向が顕著になる。
【００１０】
ユーザは、ノートＰＣをハイバネーション状態に遷移させた状態で長時間放置する場合がある。そして、ユーザはライトバック・キャッシングの仕組みや、フラッシュ・メモリの劣化を意識しないため、ハイバネーション状態に遷移する前にメイン・メモリに存在していたデータはＨＤＤに書き込まれていると認識する。システムはハイバネーション状態ではフラッシュ・メモリをフラッシュすることができないため、システムがＨＤＤに書き込んだが実際にはフラッシュ・メモリにだけ存在するデータがハイバネーション中に完全に消失してしまう可能性がある。
【００１１】
そこで本発明の目的は、有限の記憶保持時間を有する不揮発性記憶装置が記憶するデータを保護する方法を提供することにある。さらに本発明の目的は、システムがスリープ状態の間に不揮発性記憶装置が記憶するデータが消失することを防止する方法を提供することにある。さらに本発明の目的は、ハイバネーション状態からの短時間の復帰を確保する方法を提供することにある。さらに本発明の目的は、そのような方法を実現する電子機器、およびコンピュータ・プログラムを提供することにある。
【課題を解決するための手段】
【００１２】
本発明の第１の態様では、第１の不揮発性記憶装置と第２の不揮発性記憶装置とを有する電子機器において、第２の不揮発性記憶装置が記憶するデータを保護する方法を提供する。最初に第２の不揮発性記憶装置にデータを書き込む。つづいて第２の不揮発性記憶装置の限界記憶保持時間を計算する。限界記憶保持時間の計算は、第２の不揮発性記憶装置の劣化パラメータの変化に応じて定期的に計算することができる。また劣化パラメータは第２の不揮発性記憶装置の累積使用時間とすることができる。
【００１３】
第２の不揮発性記憶装置が記憶するデータが限界記憶保持時間に到達したか否かを判断する。判断は、スリープ状態に移行してからの経過時間で行ってもよいし、第２の不揮発性記憶装置にデータを書き込んでからの経過時間で行ってもよい。つづいて電子機器がスリープ状態に遷移している間に限界記憶保持時間に到達したと判断したときにパワー・オン状態に移行して第２の不揮発性記憶装置が記憶するデータを第１の不揮発性記憶装置に書き込む。
【００１４】
このような構成を備えることにより、ユーザが特別な操作をしないでも長時間スリープ状態に遷移している間に第２の不揮発性記憶装置が記憶するデータが消失することを防ぐことができる。第１の不揮発性記憶装置を磁気ディスク装置とし第２の不揮発性記憶装置を半導体メモリとすることができる。第２の不揮発性記憶装置は、第１の不揮発性記憶装置から独立して機能してもよいし、第１の不揮発性記憶装置のライトバック・キャッシング方式を採用したキャッシュとして機能するものでもよい。
【００１５】
スリープ状態はサスペンド状態またはハイバネーション状態とすることができる。パワー・オン状態に復帰して第１の不揮発性記憶装置にデータを書き込むときには、第２の不揮発性記憶装置が記憶するデータをリフレッシュすることができる。その結果、パワー・オン状態に遷移するときは、第２の不揮発性記憶装置からデータを読み取ることができる。
【００１６】
第２の不揮発性記憶装置に書き込んだ直後にハイバネーション状態に戻すことで、フラッシュが終了したあとにハイバネーション状態を継続することができる。この場合、ユーザにハイバネーション状態における電子機器の動作を意識させることなく、第２の不揮発性記憶装置のデータを保護することができる。電子機器に電池ユニットから電力を供給する場合は、電池ユニットの残容量が所定値に到達したときには、限界記憶保持時間に到達したと判断する前に第２の不揮発性半導体装置が記憶するデータを前記第１の不揮発性記憶装置に書き込むことで、データ保護の処理を確実に行うことができる。
【００１７】
スリープ状態における電池ユニットはほぼ一定の微小電力を供給するため、経過時間は電池ユニットの電気量の変化から計時することもできる。この場合、システムのタイマを動作させる必要がないため、スリープ状態での待機電力を低減することができる。スリープ状態に移行する直前に第２の不揮発性記憶装置のデータの書き換えまたは前記第１の不揮発性記憶装置への書き込みを行うことができる。この場合、劣化が進行したときにも、スリープ状態で第２の不揮発性記憶装置が記憶するデータを一層確実に保護することができる。
【００１８】
本発明の第２の態様では、電子機器に搭載された不揮発性記憶装置が記憶するデータを保護する方法を提供する。最初に不揮発性記憶装置にデータを書き込む。つづいて、不揮発性記憶装置の限界記憶保持時間を計算する。つづいて、不揮発性記憶装置が記憶するデータが限界記憶保持時間に到達したか否かを判断する。つづいて、電子機器がスリープ状態に遷移している間に限界記憶保持時間に到達したと判断したときにパワー・オン状態に移行して不揮発性記憶装置が記憶するデータをリフレッシュする。このときのスリープ状態はサスペンド状態であってもよい。
【発明の効果】
【００１９】
本発明により、有限の記憶保持時間を有する不揮発性記憶装置が記憶するデータを保護する方法を提供することができた。さらに本発明により、システムがスリープ状態の間に不揮発性記憶装置が記憶するデータが消失することを防止する方法を提供することができた。さらに本発明により、ハイバネーション状態からの短時間の復帰を確保する方法を提供することができた。さらに本発明により、そのような方法を実現する電子機器、およびコンピュータ・プログラムを提供することができた。
【図面の簡単な説明】
【００２０】
【図１】ノートＰＣのハードウェア構成の一例を示す機能ブロック図である。
【図２】フラッシュ・メモリの限界記憶保持時間が短縮する様子を説明する図である。
【図３】フラッシュによりフラッシュ・メモリのデータを保護する手順を示すフローチャートである。
【図４】フラッシュによりフラッシュ・メモリのデータを保護する手順を説明するタイムチャートである。
【図５】リフレッシュによりフラッシュ・メモリのデータを保護する他の手順を示すフローチャートである。
【図６】リフレッシュによりフラッシュ・メモリのデータを保護する他の手順を説明するタイムチャートである。
【発明を実施するための形態】
【００２１】
［パワー・ステート］
図１は、ノートＰＣ１０のハードウェア構成の一例を示す機能ブロック図である。多くのハードウェアの構成は周知であるため、ここでは本発明の理解に必要な範囲で説明する。最初にノートＰＣ１０のパワー・ステートについて説明する。ノートＰＣ１０は、ＡＣＰＩ（Advanced Configuration and Power Interface）の省電力機能に対応している。ＡＣＰＩでは、Ｓ１ステートからＳ４ステートまでの４つのスリーピング・ステート（省電力状態）、Ｓ０ステート（パワー・オン状態）、およびＳ５ステート（パワー・オフ状態）を定義している。
【００２２】
ＡＣＰＩのスリーピング・ステートのなかでノートＰＣ１０は、一例としてＳ３ステートとＳ４ステートだけを定義しているが他のスリーピング・ステートを定義してもよい。スリーピング・ステートのときはＣＰＵ１１の電源は停止する。Ｓ３ステート（サスペンド状態）は、メイン・メモリ１３の記憶を保持し、メイン・メモリ１３の記憶保持に必要のないデバイスの電源を停止する状態である。サスペンド状態に入る際にオペレーティング・システム（ＯＳ）は、電源が停止するデバイスが保持していたシステム・コンテキストをメイン・メモリ１３に退避し、パワー・オン状態に戻ったときにそれを各デバイスに設定する。
【００２３】
Ｓ４ステート（ハイバネーション状態）は、ＡＣＰＩでサポートされるスリーピング・ステートの中で最も起動までの時間が長く、かつ消費電力が少ない状態である。ノートＰＣ１０がパワー・オン状態からハイバネーション状態に遷移する際には、ＯＳがＨＤＤ１９にメイン・メモリ１３が記憶するハイバネーション・データを格納してからパワー・コントローラ５１などの電源の起動に必要なデバイス以外のデバイスに対する電源を停止する。
【００２４】
Ｓ５ステートはいわゆるソフト・オフともいわれ、ＯＳがハイバネーション・データをＨＤＤ１９に格納しない点を除いては基本的に電力を供給するデバイスの範囲はハイバネーション状態と同じである。なお、本発明におけるハイバネーション状態には、ＯＳがＳ３ステートに遷移させてから所定の時間が経過したときにＢＩＯＳが自動的にハイバネーション状態に遷移させる状態も含む。この場合は、ＯＳはシステムがサスペンド状態に遷移していると認識するが、実際の電力状態はハイバネーション状態となる。
【００２５】
チップセット１７にはＣＰＵ１１、ＨＤＤ１９、ＮＡＮＤ型のフラッシュ・メモリ２１、ＢＩＯＳ＿ＲＯＭ３３、ＮＶＲＡＭ３５、およびエンベデッド・コントローラ（ＥＣ）４１接続されている。ＣＰＵ１１にはメイン・メモリ１３およびＬＣＤ１５が接続されている。チップセット１７は、さまざまな規格のインターフェース機能を備えており、図１では代表的にＳＡＴＡ２３にＨＤＤ１９が接続され、ｍＳＡＴＡ２５にフラッシュ・メモリ２１が接続され、ＳＰＩ２９にＢＩＯＳ＿ＲＯＭ３３が接続され、ＬＰＣ３０にＥＣ４１およびＮＶＲＡＭ３５が接続されている。チップセット１７は、フラッシュ・メモリ２１をＨＤＤ２１のキャッシュとして機能させるためのキャッシュ・コントローラ２７を含む。
【００２６】
キャッシュ・コントローラ２７は、ＣＰＵ１１が実行するプログラムがＨＤＤ１９に書き込むデータをライトバック・キャッシングまたはライトスルー・キャッシングでフラッシュ・メモリ２１およびＨＤＤ１９に書き込む。ライトバック・キャッシングとライトスルー・キャッシングの切り換えは、ＨＤＤ１９に格納されＣＰＵ１１で実行されるユーティリティ・マネージャというプログラムを通じてユーザが設定することができる。ユーザはユーティリティ・マネージャを通じていずれのキャッシング方式を採用するかを選択することができる。
【００２７】
ライトバック・キャッシングが選択されたとき、キャッシュ・コントローラ２７はＨＤＤ１９に対する書き込みデータを一旦フラッシュ・メモリ２１にだけ書き込む。キャッシュ・コントローラ２７はＨＤＤ１９がアイドル状態のときまたはその他のタイミングでの所定のアルゴリズムで、フラッシュ・メモリ２１にだけ記憶されているデータをＨＤＤ１９に記憶する。そのとき、キャッシュ・コントローラ２７はフラッシュ・メモリ２１が記憶するデータをリフレッシュ（再書き込み）することもできる。
【００２８】
一例としてフラッシュ・メモリ２１の記憶領域は、書き込み時に使用するライト・キャッシュ領域と読み取り時に利用するリード・キャッシュ領域を区分しない。この場合、ＨＤＤ１９への書き込み時にフラッシュ・メモリ２１が記憶したデータは読み取り時にフラッシュ・メモリ２１から読み取られる。この場合は、消失を防ぐ必要があるデータはフラッシュ・メモリ２１が記憶するすべてのデータとなる。他の例では、ライト・キャッシュ領域とリード・キャッシュ領域を区分してもよい。
【００２９】
そして、ＨＤＤ１９に対する最初のリード・アクセスがあったときに、キャッシュ・コントローラ２７はＨＤＤ１９から読み取ってシステムに応答すると同時にリード・キャッシュ領域にも書き込む。次回以降にＨＤＤ１９に対する同一データのリード・アクセスがあったときに、キャッシュ・コントローラ２７はリード・キャッシュ領域から読み取って応答する。この場合、消失を防ぐ必要があるデータは、ライト・キャッシュ領域に記憶されたデータとなる。チップセット１７は、その他にシステムにカレンダ時刻を提供するＲＴＣ３１、パワー・ステートを制御するためのＡＣＰＩレジスタ３２などを含んでいる。
【００３０】
フラッシュ・メモリ２１は、累積書き込み回数が増えるとデータの保持期間が短くなる。累積書き込み回数は、新たに使用したときから書き込んだ累積データ量とフラッシュ・メモリ２１の容量に応じて増加していく。同じ累積データ量であれば、フラッシュ・メモリ２１の容量が小さいほど累積書き込み回数は多くなる。フラッシュ・メモリ２１の容量は一例として１６ＧＢまたは２０ＧＢである。また、フラッシュ・メモリ２１をノートＰＣ１０において通常の方法で使用する場合には、累積書き込み回数を累積使用時間として捕らえることもできる。
【００３１】
図２はこのときの様子を説明する図で、横軸は累積書き込み回数、累積書き込みデータ量または累積使用時間などのいずれかの劣化パラメータを示し、縦軸が限界記憶保持時間を示している。フラッシュ・メモリ２１の記憶単位であるセルは、劣化が進行すると徐々にフローティング・ゲートに電荷を保持する時間が短くなる。エラー訂正する所定の単位のデータに対してビット・エラーが多くなるとエラー訂正して回復することができなくなる。限界記憶保持時間は、このような場合にデータを書き込んでから実質的に読み取ることができなくなるまでの経過時間に相当する。限界記憶保持時間は使用開始からしばらくの間はほぼ一定のｔｘ０を維持しているが、劣化パラメータがある程度を越えると、ｔｘ１、ｔｘ２、ｔｘ３といったように急激に低下していく。
【００３２】
フラッシュ・メモリ２１は、データを書き込む前に書き込み領域を消去する必要がある。消去の単位はバイト単位より大きいブロック単位となる。キャッシュ・コントローラ２７は、フラッシュ・メモリ２１の特定の記憶素子に対して書き換えが集中しないように、書き込んだデータを所定のアルゴリズムでスワップするウェアレベリングを実行する。ウェアレベリングにより本発明ではフラッシュ・メモリ２１のセルの劣化は全体に渡って均一に進行するものとして扱う。ただし、ブロック単位で限界記憶保持時間を管理して本発明を適用することもできる。
【００３３】
ＨＤＤ１９はＯＳ、デバイス・ドライバ、アプリケーション・プログラム、およびユーザ・データなどを記憶する大容量の記憶装置（ディスク・ドライブ）である。ＢＩＯＳ＿ＲＯＭ３３はシステムＢＩＯＳを格納する。フラッシュ・メモリ２１の限界記憶保持時間が低下したときは、メーカのサービス機関が新しいフラッシュ・メモリと交換する。不揮発性半導体メモリであるＮＶＲＡＭ３１は、フラッシュ・メモリ２１が交換されたときにその交換日時を記憶する。
【００３４】
ＥＣ４１には、電池コントローラ５９およびパワー・コントローラ５１が接続されている。ＥＣ４１は、ＣＰＵ、ＣＰＵが実行するファームウェアを格納するＲＯＭ、ＣＰＵの作業領域を提供するＲＡＭ、および参照テーブル４５および劣化パラメータ４７などのデータを格納するＥＥＰＲＯＭなどで構成されたマイクロ・コンピュータである。参照テーブル４５は、図２に示した劣化特性と劣化パラメータの関係を示す２次元マトリクスで構成され、ＥＣ４１が劣化パラメータ４７から限界記憶保持時間を計算するために利用する。
【００３５】
劣化パラメータ４７は、フラッシュ・メモリ２１の累積書き換え回数の代用特性となる累積使用時間または累積書き込みデータ量のいずれかとすることができる。あるいは劣化パラメータ４７は、キャッシュ・コントローラ２７がウェアレベリングに基づいてカウントした各ブロックの平均的な累積書き換え回数としてもよい。電池コントローラ５９には、リチウムイオン型の電池セルおよび保護回路などを含む電池ユニット６１が接続されている。電池コントローラ５９は電池セルの残容量を計算したり充放電時の安全を管理したりするマイクロ・コントローラである。電池コントローラ５９と電池ユニット６１は、スマート・バッテリィ・システム（ＳＢＳ）の規格に適合する電池パックとして構成することもできる。
【００３６】
電池ユニット６１は電池コントローラ５９に電力を供給する。したがって、電池コントローラ５９は、システムがパワー・オフ状態のときにも動作する。電池コントローラ５９は、ウェイクアップ信号を送るためにパワー・ユニット５１にも接続されている。ＥＣ４１は電池コントローラ５９と通信して定期的に電池ユニット６１に残存する電気量（残容量）を取得することができる。パワー・コントローラ５１には、パワー・ボタン５３およびＤＣ／ＤＣコンバータ６１が接続されている。パワー・コントローラ５１は、ＥＣ４１からの指示、パワー・ボタン５３の押下または電池コントローラ５９からのウェイクアップ信号などに基づいてＤＣ／ＤＣコンバータ６３を制御するワイヤード・ロジックのディジタル制御回路（ＡＳＩＣ）である。
【００３７】
パワー・コントローラ５１はタイマ５５、メモリ・レジスタ５６、およびパワー・レジスタ５７を含んでいる。メモリ・レジスタ５６は、ウェイクアップの原因がフラッシュ・メモリ２１のフラッシュまたはリフレッシュにあることを示すメモリ・ビットを設定する。パワー・レジスタ５７は、ノートＰＣ１０の現在の電力源がＡＣ／ＤＣアダプタ６５であることを示すパワー・ビットを設定する。ＤＣ／ＤＣコンバータ６３は、ＡＣ／ＤＣアダプタ６５または電池ユニット６１から供給される直流電圧を、ノートＰＣ１０を動作させるために必要な複数の電圧に変換し、さらにパワー・ステートに応じて定義された電力供給区分に基づいて各々のデバイスに電力を供給する。ＡＣ／ＤＣアダプタ６５は、電池ユニット６１を充電するとともにＤＣ／ＤＣコンバータ６３に電力を供給する。ＡＣ／ＤＣアダプタ６５が接続されていないときは、電池ユニット６１がＤＣ／ＤＣコンバータ６３に電力を供給する。
【００３８】
［フラッシュによりデータを保護する手順］
図３は、ハイバネーション状態に遷移したときにフラッシュ・メモリ２１のデータを保護する手順を示すフローチャートで、図４はそれに対応するタイムチャートである。ブロック１０１では、時刻ｔ０からｔ１までの間にノートＰＣ１０がパワー・オン状態に遷移している。キャッシュ・コントローラ２７はライトバック・キャッシングで動作するように設定されている。また、ＡＣ／ＤＣアダプタ６５は接続されておらずノートＰＣ１０の電力源は電池ユニット６１であるものとする。
【００３９】
ブロック１０３でアプリケーション・プログラムがＨＤＤ１９に書き込むデータを、キャッシュ・コントローラ２７は一旦フラッシュ・メモリ２１にだけ書き込むとシステムに書き込み完了の応答をする。その後、キャッシュ・コントローラ２７は、所定のアルゴリズムでフラッシュ・メモリ２１のデータをＨＤＤ１９にフラッシュするが、フラッシュが完了するまでの間はフラッシュ・メモリ２１だけがデータを記憶している状態になる。
【００４０】
ブロック１０５でＥＣ４１は定期的に劣化パラメータ４７を更新する。劣化パラメータ４７がフラッシュ・メモリ２１の累積使用時間の場合は、ＥＣ４１はＮＶＲＡＭ３５から取得したフラッシュ・メモリ２１の使用開始日時とチップセット１７のＲＴＣ３１から取得した現在の日時から累積使用時間を計算する。劣化パラメータがＨＤＤ１９に対する累積書き込みデータ量または累積書き換え回数の場合は、ＥＣ４１はそれらのデータをキャッシュ・コントローラ２７から取得することができる。ＥＣ４１は、いずれか１つの劣化パラメータまたは複数の劣化パラメータを取得してもよい。
【００４１】
ブロック１０７でＥＣ４１は、１つまたは複数の劣化パラメータ４７を参照して限界記憶保持時間が、ｔｘ１〜ｔｘ３のいずれかに到達したか否かを判断する。複数の劣化パラメータを使用する場合は、各パラメータに基づく限界記憶保持時間の最低値または平均値を使用することができる。ｔｘ１〜ｔｘ３のいずれかに到達していると判断したときは、ＣＰＵ１１に割り込みをかけてシステムＢＩＯＳを通じてＬＣＤ１５に注意を促す。注意は限界記憶保持時間の低下の程度に応じてユーザにフラッシュやリフレッシュの実行を促したり、フラッシュ・メモリ２１の即時交換を求めたりするプロンプト画面で行うことができる。
【００４２】
ブロック１０９で、ユーザまたはシステムがハイバネーション状態に遷移させるためのスリープ・トリガを生成する。ユーザは、ＬＣＤ１５が表示するアイコンの操作、キーボードのＦｎキーの操作、パワー・ボタン５３の押下、または、筐体を閉じる操作などによりスリープ・トリガを生成することができる。システムはアイドル時間が所定値を越えたときにスリープ・トリガを生成することができる。
【００４３】
ＯＳは、パワー・オン状態に復帰するのに必要なシステム・コンテキストおよびメイン・メモリ１３が記憶するデータなどのハイバネーション・データをＨＤＤ１９に書き込む。しかしライトバック・キャッシングを採用しているため、キャッシュ・コントローラ２７は一旦ハイバネーション・データをフラッシュ・メモリ２１にだけ書き込む。ハイバネーション状態に遷移する準備が完了するとＯＳはＢＩＯＳを経由してチップセット１７のＡＣＰＩレジスタ３２に遷移先のパワー・ステートを設定してＥＣ４１に通知する。
【００４４】
ブロック１１１で、ＥＣ４１はその時点における劣化パラメータ４７と参照テーブル４５から計算した限界記憶保持時間をパワー・コントローラ５１のタイマ５５に設定する。キャッシュ・コントローラ２７による自動的なフラッシュが短い時間間隔で行われる場合は、ハイバネーション状態に遷移するタイミングで限界記憶保持時間をタイマ５５に設定しても誤差は少ない。ただし、ＥＣ４１は、キャッシュ・コントローラ２７から、フラッシュ・メモリ２１に記憶したリフレッシュ前の最も古いデータの記憶日時を取得して、ＲＴＣ３１の現在の日時との差に相当する時間を限界保持時間から減じた値をタイマ５５に設定するようにしてもよい。
【００４５】
この場合は、実際にフラッシュ・メモリ２１に書き込まれた日時から限界記憶保持時間までの経過時間が計時される。図２に示したように限界保持時間は、劣化が進行すると急激に低下する傾向がある。したがって、ＥＣ４１は現在の限界保持時間がｔｘ２またはｔｘ３まで低下したときに、ハイバネーション状態に遷移する直前に、ユーティリティ・マネージャにフラッシュ・メモリ２１をリフレッシュするかまたはフラッシュする要求をしてもよい。
【００４６】
ブロック１１３では時刻ｔ１でＥＣ４１が、パワー・コントローラ５１に指示してシステムをハイバネーション状態に遷移させる。このとき、ＥＣ４１の電源は停止するがパワー・コントローラ５１には電源が供給されているためタイマ５１は動作を継続する。電池ユニット６１の残容量がシステムを強制的にシャットダウンする値に近付くと、ＡＣ／ＤＣアダプタ６５を接続しない限り以下の手順でパワー・オン状態に復帰してフラッシュしてから再度ハイバネーション状態に戻すことができなくなる。
【００４７】
ブロック１１５で電池コントローラ５９は、電池ユニット６１の残容量がパワー・オン状態に遷移してフラッシュ・メモリ５１のデータをＨＤＤ１９にフラッシュする処理をするのに必要な所定値まで低下したときには、限界記憶保持時間に到達する前であってもパワー・コントローラ５１にウェイクアップ信号を送ってブロック１１９に移行する。ウェイクアップ信号を受け取ったパワー・コントローラ５１はメモリ・レジスタ５６にメモリ・ビットを設定する。電池ユニット６１の残容量が所定値以上のときは、ブロック１１７に移行する。
【００４８】
ブロック１１７では時刻ｔ２でタイマ５５がタイムアップすると、パワー・コントローラ５１はメモリ・レジスタ５６にメモリ・ビットを設定してブロック１１９に移行する。ブロック１１９でパワー・コントローラ５１は、ＤＣ／ＤＣコンバータ６３に信号を送ってシステムをパワー・オン状態に遷移させる。電源が投入されたＥＣ４１は、メモリ・レジスタ５６を参照し、さらにＢＩＯＳを通じてチップセット１７のＡＣＰＩレジスタ３２を参照して今回のウェイクアップの目的がフラッシュ・メモリ２１のフラッシュであることを認識する。
【００４９】
ブロック１２１でＯＳはＢＩＯＳを通じてＡＣＰＩレジスタ３２を参照しハイバネーション状態からの復帰であることを認識すると、フラッシュ・メモリ２１からハイバネーション・データを読み取って、メイン・メモリ１３および各種コントローラのレジスタに復帰させる。この時点でフラッシュ・メモリ２１は確実にデータを記憶している。ＥＣ４１はＣＰＵ１１に割り込みをかけて、ＢＩＯＳを通じてユーティリティ・マネージャにフラッシュ・メモリ２１が記憶するデータをＨＤＤ１９にフラッシュするように要求する。
【００５０】
ユーティリティ・マネージャがキャッシュ・コントローラ２７にフラッシュのコマンドを送ると、キャッシュ・コントローラ２７はフラッシュ・メモリ２１が記憶するすべてのデータをＨＤＤ１９に書き込む。このとき、ユーティリティ・マネージャはキャッシュ・コントローラ２７に、フラッシュすることに加えてフラッシュ・メモリ２１のデータをリフレッシュするように要求することができる。
【００５１】
フラッシュ・メモリ２１のデータがリフレッシュされるとブロック１２３でＨＤＤ１９に（実際にはフラッシュ・メモリ２１に）ハイバネーション・データを書き込まないで移行したブロック１５１でパワー・オン状態に移行する際、またはパワー・オン状態に移行した後にＨＤＤ１９に対するリード・アクセスがあった際にフラッシュ・メモリ２１から確実にデータを読み取ることができるので、ハイバネーション状態からの復帰を短時間で完了したり短時間でアクセスを完了したりすることができる。
【００５２】
ユーティリティ・マネージャは、フラッシュ・メモリ２１のフラッシュおよび必要に応じて行ったリフレッシュが完了すると、ブロック１２３でＯＳにハイバネーション状態に戻ることを要求する。ＯＳは、ブロック１１３と同じ手順でハイバネーションを実行し、ブロック１５１に移行する。ハイバネーション・データはブロック１１３でＨＤＤ１９に確実に記憶されているので、ここではハイバネーション・データの記憶を省略してもよい。
【００５３】
ブロック１５１では、ユーザがパワー・ボタン５３を押下したり、筐体を開いたりして通常のウェイクアップ操作をする。通常のウェイクアップ操作が行われたときはレジスタ５６にメモリ・ビットが設定されないため、ブロック１５３ではシステムが時刻ｔ３でパワー・オン状態に遷移してブロック１０３に移行する。パワー・オン状態に移行する際にＥＣ４１はタイマ５５をリセットし、さらにユーティリティ・マネージャにその時点でフラッシュ・メモリ２１のデータをフラッシュまたはリフレッシュするように要求してもよい。その後は、キャッシュ・コントローラ２７のアルゴリズムによりフラッシュ・メモリ２１のデータはＨＤＤ１９にフラッシュされる。
【００５４】
ここまで、ハイバネーション状態のときにパワー・コントローラ５１のタイマ５１が時間を計時する例を説明したが、他の方法では電池ユニット６１の残容量からハイバネーション中の経過時間を計時することもできる。ノートＰＣ１０が長期間放置されるときは、ＡＣ／ＤＣアダプタ６５が外されることが多い。ハイバネーション状態ではパワー・コントローラ５１以外のほとんどのデバイスの電力が停止し、電池ユニット６１は自然放電、電池コントローラ５９の動作およびパワー・コントローラ５１の動作によるわずかな一定の消費電力により徐々に残容量が低下する。
【００５５】
したがって、電池コントローラ５９は現在の残容量と単位時間当たりの消費電力から限界記憶保持時間に相当する残容量を計算して、ウェイクアップ信号を出力することもできる。この場合、タイマ５５が動作しないためハイバネーション中の待機電力を低減することができる。なお、このときＡＣ／ＤＣアダプタ６５が接続されると、パワー・ユニット５１にＡＣ／ＤＣアダプタ５７から電力が供給される。ＡＣ／ＤＣアダプタ６５が接続されたときは、ハイバネーション状態であってもＥＣ４１に電力を供給することができる。
【００５６】
電力が供給されたＥＣ４１は、電池コントローラ５９から電池ユニット６１の残容量の低下に相当する経過時間の情報を取得して残りの時間をタイマ５５に設定し、限界記憶保持時間までの経過時間を計時してブロック１１５以降の手順を実行することができる。ここではハイバネーション中のフラッシュ・メモリ２１のデータ保護について説明したが、図３、図４の手順はサスペンド中の保護に適用することもできる。
【００５７】
［リフレッシュによりデータを保護する手順］
これまで、スリープ状態でのフラッシュ・メモリのデータをフラッシュにより保護する方法を説明したが、本発明ではリフレッシュにより保護することもできる。図５は、サスペンド状態に遷移したときにフラッシュ・メモリ２１のデータを保護する手順を示すフローチャートで、図６はそれに対応するタイムチャートである。図５の手順は図３の手順と多くの内容が重複する。図５の手順において図３の手順を参照して容易に理解できるものは、同一の参照番号を付して説明を省略する。
【００５８】
ブロック２０１では、ユーザまたはシステムがサスペンド状態に遷移するためのスリープ・トリガを生成する。ブロック２０３では時刻ｔ１１でＯＳは、システムがサスペンド状態に移行したときに電源が停止するコントローラのコンテキストをメイン・メモリ２１に書き込むと、ＢＩＯＳを通じてチップセット１７のＡＣＰＩレジスタに遷移先としてのサスペンドを示すビットを設定しさらにＥＣ４１にメイン・メモリ１３の記憶を保持するために必要な電源以外の電源を停止するように指示する。
【００５９】
ブロック１１７では時刻ｔ１３でタイマ５５がタイムアップする。ブロック２０５では、タイマ５５のタイムアップまたは電池コントローラ５９のウェイクアップ信号によりメモリ・レジスタ５６にはメモリ・ビットが設定されている。電源が投入されたＥＣ４１は、レジスタ５６を参照し、さらにＢＩＯＳを通じてＡＣＰＩレジスタ３２を参照して今回のウェイクアップの目的がフラッシュ・メモリ２１のリフレッシュであることを認識する。
【００６０】
ブロック２０７でＯＳはＢＩＯＳを通じてＡＣＰＩレジスタ３２を参照しハイバネーション状態からの復帰であることを認識すると、フラッシュ・メモリ２１からハイバネーション・データを読み取って、メイン・メモリ１３および各種コントローラのレジスタに設定する。ＥＣ４１はＣＰＵ１１に割り込みをかけて、ＢＩＯＳを通じてユーティリティ・マネージャにフラッシュ・メモリ２１が記憶するデータをリフレッシュするように要求する。
【００６１】
ユーティリティ・マネージャがキャッシュ・コントローラ２７にリフレッシュのコマンドを送ると、キャッシュ・コントローラ２７はフラッシュ・メモリ２１が記憶するすべてのデータを書き換える。ユーティリティ・マネージャは、フラッシュ・メモリ２１のリフレッシュが完了すると、ブロック２０９でＯＳにサスペンド状態に戻ることを要求してブロック１１１に移行する。図３の手順と異なり、図５の手順ではフラッシュ・メモリ２１のデータはＨＤＤ１９にフラッシュされないので、サスペンド状態の時間が長くなるとリフレッシュされた後に続くサスペンド状態における経過時間が再度限界記憶保持時間に到達する場合がある。
【００６２】
ブロック２０９からブロック１１１に戻る手順により時刻ｔ１５でつぎの限界記憶保持時間が到来したときには、フラッシュ・メモリ２１のデータは再度リフレッシュされる。ブロック１５３では時刻ｔ１７でシステムが、通常のウェイクアップによりパワー・オン状態に戻る。図５、図６の例では、サスペンド状態の間にフラッシュ・メモリ２１のデータをリフレッシュする例を説明したが、この手順はハイバネーション状態に適用することもできる。
【００６３】
これまで、フラッシュ・メモリ２１がＨＤＤ２１のキャッシュとして機能する例を説明したが、本発明はフラッシュ・メモリ２１がＨＤＤ２１から独立した半導体メモリとして機能する場合にも適用できる。また本発明の適用においては、ＨＤＤ２１はＳＳＤまたはその他の記憶装置としてもよい。フラッシュ・メモリ２１は、不揮発性半導体メモリの例示であり、本発明は、劣化パラメータの計測が可能なあらゆる記憶装置に適用することができる。
【符号の説明】
【００６４】
１０  ノートＰＣ
１７  チップセット
４１  エンベデッド・コントローラ
５１  パワー・コントローラ
【図１】
2014075015.tif 000003
【図２】
2014075015.tif 000004
【図３】
2014075015.tif 000005
【図４】
2014075015.tif 000006
【図５】
2014075015.tif 000007
【図６】
2014075015.tif 000008