(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】5795758
(24)【登録日】2015年8月21日
(45)【発行日】2015年10月14日
(54)【発明の名称】不揮発性記憶装置のデータを保護する方法
(51)【国際特許分類】
G06F 1/30 20060101AFI20150928BHJP
G06F 12/16 20060101ALI20150928BHJP
【FI】
G06F1/30 M
G06F12/16 310M
G06F12/16 310A
【請求項の数】18
【全頁数】16
(21)【出願番号】特願2012-221830(P2012-221830)
(22)【出願日】2012年10月4日
(65)【公開番号】特開2014-75015(P2014-75015A)
(43)【公開日】2014年4月24日
【審査請求日】2013年12月19日
(73)【特許権者】
【識別番号】505205731
【氏名又は名称】レノボ・シンガポール・プライベート・リミテッド
(74)【代理人】
【識別番号】100106699
【弁理士】
【氏名又は名称】渡部 弘道
(74)【代理人】
【識別番号】100132595
【弁理士】
【氏名又は名称】袴田 眞志
(72)【発明者】
【氏名】塚本 泰通
(72)【発明者】
【氏名】米持 健信
(72)【発明者】
【氏名】宮口 康宏
【審査官】
征矢 崇
(56)【参考文献】
【文献】
特開2000−011670(JP,A)
【文献】
特開2010−117990(JP,A)
【文献】
特開2010−165039(JP,A)
【文献】
特開2012−079100(JP,A)
【文献】
特開2009−230314(JP,A)
【文献】
特開2011−081694(JP,A)
【文献】
特開平08−147988(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F1/26;1/32
G06F12/16
G11C16/02−16/06;
17/00;17/08;17/12;17/18
(57)【特許請求の範囲】
【請求項1】
不揮発性記憶装置と該不揮発性装置のライトバック・シャシング方式によるキャッシュとして機能する半導体メモリとを有する電子機器において、前記半導体メモリが記憶するデータを保護する方法であって、
前記半導体メモリにデータを書き込むステップと、
前記半導体メモリの限界記憶保持時間を計算するステップと、
前記半導体メモリが記憶するデータが前記限界記憶保持時間に到達したか否かを判断するステップと、
前記電子機器がスリープ状態に遷移している間に前記限界記憶保持時間に到達したと判断したときにパワー・オン状態に移行して前記半導体メモリが記憶するデータを前記不揮発性記憶装置に書き込むステップと
を有する方法。
【請求項2】
前記スリープ状態がハイバネーション状態である請求項1に記載の方法。
【請求項3】
前記不揮発性記憶装置に書き込むステップが、前記半導体メモリが記憶するデータをリフレッシュするステップを含む請求項2に記載の方法。
【請求項4】
前記半導体メモリに書き込んだ直後に前記ハイバネーション状態に戻るステップを有する請求項2に記載の方法。
【請求項5】
前記限界記憶保持時間に到達したか否かを判断するステップが、前記スリープ状態に移行してからの経過時間で判断する請求項1から請求項4のいずれかに記載の方法。
【請求項6】
前記限界記憶保持時間に到達したか否かを判断するステップが、前記半導体メモリにデータを書き込んでからの経過時間で判断する請求項1から請求項4のいずれかに記載の方法。
【請求項7】
前記電子機器に電池ユニットから電力を供給するステップを有し、前記不揮発性記憶装置に書き込むステップが、
前記電池ユニットの残容量が所定値に到達したときには前記限界記憶保持時間に到達したと判断する前に前記半導体メモリが記憶するデータを前記不揮発性記憶装置に書き込む請求項1から請求項6のいずれかに記載の方法。
【請求項8】
前記スリープ状態における経過時間を前記電池ユニットの電気量の変化から計時するステップを含む請求項7に記載の方法。
【請求項9】
前記限界記憶保持時間を計算するステップが、前記半導体メモリの劣化パラメータの変化に応じて定期的に計算するステップを含む請求項1から請求項8のいずれかに記載の方法。
【請求項10】
前記スリープ状態に移行する直前に前記半導体メモリのデータの書き換えまたは前記不揮発性記憶装置への書き込みを行うステップを有する請求項1から請求項9のいずれかに記載の方法。
【請求項11】
不揮発性記憶装置と該不揮発性記憶装置のライトバック・シャシング方式のキャッシュとして機能する半導体メモリとを有する電子機器において、前記半導体メモリが記憶するデータを保護する方法であって、
前記半導体メモリにデータを書き込むステップと、
前記半導体メモリの限界記憶保持時間を計算するステップと、
前記半導体メモリが記憶するデータが前記限界記憶保持時間に到達したか否かを判断するステップと、
前記電子機器がスリープ状態に遷移している間に前記限界記憶保持時間に到達したと判断したときにパワー・オン状態に移行して前記半導体メモリが記憶するデータを書き換えるステップと
を有する方法。
【請求項12】
前記スリープ状態がサスペンド状態である請求項11に記載の方法。
【請求項13】
プロセッサと、
不揮発性記憶装置と、
前記不揮発性記憶装置のライトバック・シャシング方式によるキャッシュとして機能する半導体メモリと、
前記半導体メモリの劣化パラメータと限界記憶保持時間の関係を示す参照テーブルと、
前記劣化パラメータと前記参照テーブルから限界記憶保持時間を計算し、前記半導体メモリにデータを書き込んでスリープ状態に移行してからの経過時間が前記限界記憶保持時間に到達したときにパワー・オン状態に移行して前記半導体メモリに記憶したデータを前記不揮発性記憶装置に記憶する制御部と
を有する電子機器。
【請求項14】
前記電子機器に電力を供給する電池パックを有し、
前記制御部は前記電池パックの残量が所定値だけ減少したときにパワー・オン状態に移行して前記半導体メモリに記憶したデータを前記不揮発性記憶装置に記憶する請求項13に記載の電子機器。
【請求項15】
前記劣化パラメータが、前記半導体メモリの累積使用時間である請求項13に記載の電子機器。
【請求項16】
プロセッサと、
不揮発性記憶装置と、
前記不揮発性記憶装置のライトバック・シャシング方式によるキャッシュとして機能する半導体メモリと、
前記半導体メモリの劣化パラメータと限界記憶保持時間の関係を示す参照テーブルと、
前記劣化パラメータと前記参照テーブルから限界記憶保持時間を計算し、前記半導体メモリにデータを書き込んでスリープ状態に移行してからの経過時間が前記限界記憶保持時間に到達したときにパワー・オン状態に移行して前記半導体メモリに記憶したデータを書き換える制御部と
を有する電子機器。
【請求項17】
不揮発性記憶装置と該不揮発性記憶装置のライトバック・シャシング方式によるキャッシュとして機能する半導体メモリとを有するコンピュータに、
前記半導体メモリにデータを書き込む機能と、
前記半導体メモリの限界記憶保持時間を計算する機能と、
前記半導体メモリにデータを書き込んでからの経過時間を計時する機能と、
前記コンピュータがスリープ状態に遷移している間に前記経過時間が前記限界記憶保持時間に到達したときにパワー・オン状態に移行して前記不揮発性メモリが記憶するデータを前記不揮発性記憶装置に書き込む機能と
を実現させるためのコンピュータ・プログラム。
【請求項18】
不揮発性記憶装置と該不揮発性記憶装置のライトバック・シャシング方式によるキャッシュとして機能する半導体メモリとを有するコンピュータに、
前記半導体メモリにデータを書き込む機能と、
前記半導体メモリの限界記憶保持時間を計算する機能と、
前記半導体メモリにデータを書き込んでからの経過時間を計時する機能と、
前記コンピュータがスリープ状態に遷移している間に前記経過時間が前記限界記憶保持時間に到達したときにパワー・オン状態に移行して前記半導体メモリが記憶するデータを書き換える機能と
を実現させるためのコンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、有限の記憶保持時間を有する不揮発性記憶装置が記憶するデータを保護する技術に関する。
【背景技術】
【0002】
ノートブック型パーソナル・コンピュータ(ノートPC)またはタブレット端末などの携帯式コンピュータでは、バッテリィによる動作時間を確保することが特に重要である。そのために携帯式コンピュータは、パワー・オン状態からさまざまな省電力状態に遷移する。ハイバネーション状態では、パワー・オン状態でのシステム・コンテキストおよびメイン・メモリの記憶内容(ハイバネーション・データ)をハードディスク・ドライブ(HDD)やソリッド・ステート・ドライブ(SSD)などのディスク・ドライブに格納してからほとんどのデバイスの電力を停止する。復帰時はディスク・ドライブからハイバネーション・データを元の位置に復帰することでパワー・オフ状態から起動するよりも復帰時間を短縮することができる。
【0003】
米国インテル社(インテルは登録商標)は、インテル・ラピッド・ストレージ・テクノロジー(IRST)というRAID管理用ツールの一部としてインテル・スマート・レスポンス・テクノロジー(ISRT)という技術を提供する。ISRTは、Mini SATAというインターフェースに接続されたフラッシュ・メモリ(SSD)をHDDのキャッシュとして利用して、高速な読み取りを実現する技術である。
【0004】
ISRTでは、OSはHDDだけに格納され、SSDはデータ領域とキャッシュ領域がパーティションで区切られている。ホストがライト・コマンドを発行したときは、ライトスルー・キャッシングのようにデータをSSDとHDDの両方に書き込む。あるいはライトバック・キャッシングのようにデータを先にSSDにだけ書き込みアイドル時にHDDに書き込む。ホストが発行したリード・コマンドに対して、SSDにデータがあるときはSSDから読み取り、SSDにデータがないときはHDDから読み取って返送する。
【0005】
特許文献1は、NAND型フラッシュ・メモリのデータ保持期間が経過したときに、情報処理装置を起動しないようにした情報処理装置を開示する。起動後に前回のデータ保持期間の開始日時となる最終確認日時がCMOS RAMに記録されていることを確認したときは、それとRTCから取得した現在の日時と比較する。そして、データ保持期間が経過していると判断したときは起動を中止する。なお、最終確認日時の記録は、サスペンドまたはハイバネーションを行うとき、レジュームするとき、またはシャットダウンしたときに行う。
【0006】
特許文献2は、最後の書き換え時刻からの経過時間が限界電荷保持時間に到達したときにリフレッシュする半導体不揮発性記憶装置を開示する。限界電荷保持時間は、累積書き換え回数が増大すると減少する。限界電荷保持時間は、実際に取得した累積書き換え回数とあらかじめ用意した累積書き換え回数と限界電荷保持時間を関連付けたテーブルから計算する。
【先行技術文献】
【特許文献】
【0007】
【特許文献1】特開2012−88780号公報
【特許文献2】特開平8−147988号公報
【発明の概要】
【発明が解決しようとする課題】
【0008】
フラッシュ・メモリには、特許文献2が示すようにフローティング・ゲートが電荷を保持することができる時間(以後、限界記憶保持時間ということにする。)が存在する。そして、フラッシュ・メモリに対する累積書き換え回数が増加するにしたがって、限界記憶保持時間は短縮する。フラッシュ・メモリをHDDのキャッシュとして利用する場合は、システムがHDDに書き込むデータが一旦フラッシュ・メモリに書き込まれる。ライトバック・キャッシングは、高速にHDDへの書き込みをする場合などに採用され、サイトスルー・キャッシングはデータ記録の信頼性を高めたい場合などに採用される。
【0009】
ライトバック・キャッシングでは、書き込みが完了した時点でフラッシュ・メモリにだけデータが存在する。フラッシュ・メモリが記憶するデータは、システムがアイドル状態のときなどの所定のアルゴリズムに基づくタイミングでHDDに書き込まれる。この処理をフラッシュという。劣化が進行したフラッシュ・メモリにライトバック・キャッシングを採用すると、フラッシュ・メモリが記憶するデータをHDDに書き込んでからの経過時間が限界記憶保持時間を越えてデータが消失する傾向が顕著になる。
【0010】
ユーザは、ノートPCをハイバネーション状態に遷移させた状態で長時間放置する場合がある。そして、ユーザはライトバック・キャッシングの仕組みや、フラッシュ・メモリの劣化を意識しないため、ハイバネーション状態に遷移する前にメイン・メモリに存在していたデータはHDDに書き込まれていると認識する。システムはハイバネーション状態ではフラッシュ・メモリをフラッシュすることができないため、システムがHDDに書き込んだが実際にはフラッシュ・メモリにだけ存在するデータがハイバネーション中に完全に消失してしまう可能性がある。
【0011】
そこで本発明の目的は、有限の記憶保持時間を有する不揮発性記憶装置が記憶するデータを保護する方法を提供することにある。さらに本発明の目的は、システムがスリープ状態の間に不揮発性記憶装置が記憶するデータが消失することを防止する方法を提供することにある。さらに本発明の目的は、ハイバネーション状態からの短時間の復帰を確保する方法を提供することにある。さらに本発明の目的は、そのような方法を実現する電子機器、およびコンピュータ・プログラムを提供することにある。
【課題を解決するための手段】
【0012】
本発明の第1の態様では、第1の不揮発性記憶装置と第2の不揮発性記憶装置とを有する電子機器において、第2の不揮発性記憶装置が記憶するデータを保護する方法を提供する。最初に第2の不揮発性記憶装置にデータを書き込む。つづいて第2の不揮発性記憶装置の限界記憶保持時間を計算する。限界記憶保持時間の計算は、第2の不揮発性記憶装置の劣化パラメータの変化に応じて定期的に計算することができる。また劣化パラメータは第2の不揮発性記憶装置の累積使用時間とすることができる。
【0013】
第2の不揮発性記憶装置が記憶するデータが限界記憶保持時間に到達したか否かを判断する。判断は、スリープ状態に移行してからの経過時間で行ってもよいし、第2の不揮発性記憶装置にデータを書き込んでからの経過時間で行ってもよい。つづいて電子機器がスリープ状態に遷移している間に限界記憶保持時間に到達したと判断したときにパワー・オン状態に移行して第2の不揮発性記憶装置が記憶するデータを第1の不揮発性記憶装置に書き込む。
【0014】
このような構成を備えることにより、ユーザが特別な操作をしないでも長時間スリープ状態に遷移している間に第2の不揮発性記憶装置が記憶するデータが消失することを防ぐことができる。第1の不揮発性記憶装置を磁気ディスク装置とし第2の不揮発性記憶装置を半導体メモリとすることができる。第2の不揮発性記憶装置は、第1の不揮発性記憶装置から独立して機能してもよいし、第1の不揮発性記憶装置のライトバック・キャッシング方式を採用したキャッシュとして機能するものでもよい。
【0015】
スリープ状態はサスペンド状態またはハイバネーション状態とすることができる。パワー・オン状態に復帰して第1の不揮発性記憶装置にデータを書き込むときには、第2の不揮発性記憶装置が記憶するデータをリフレッシュすることができる。その結果、パワー・オン状態に遷移するときは、第2の不揮発性記憶装置からデータを読み取ることができる。
【0016】
第2の不揮発性記憶装置に書き込んだ直後にハイバネーション状態に戻すことで、フラッシュが終了したあとにハイバネーション状態を継続することができる。この場合、ユーザにハイバネーション状態における電子機器の動作を意識させることなく、第2の不揮発性記憶装置のデータを保護することができる。電子機器に電池ユニットから電力を供給する場合は、電池ユニットの残容量が所定値に到達したときには、限界記憶保持時間に到達したと判断する前に第2の不揮発性半導体装置が記憶するデータを前記第1の不揮発性記憶装置に書き込むことで、データ保護の処理を確実に行うことができる。
【0017】
スリープ状態における電池ユニットはほぼ一定の微小電力を供給するため、経過時間は電池ユニットの電気量の変化から計時することもできる。この場合、システムのタイマを動作させる必要がないため、スリープ状態での待機電力を低減することができる。スリープ状態に移行する直前に第2の不揮発性記憶装置のデータの書き換えまたは前記第1の不揮発性記憶装置への書き込みを行うことができる。この場合、劣化が進行したときにも、スリープ状態で第2の不揮発性記憶装置が記憶するデータを一層確実に保護することができる。
【0018】
本発明の第2の態様では、電子機器に搭載された不揮発性記憶装置が記憶するデータを保護する方法を提供する。最初に不揮発性記憶装置にデータを書き込む。つづいて、不揮発性記憶装置の限界記憶保持時間を計算する。つづいて、不揮発性記憶装置が記憶するデータが限界記憶保持時間に到達したか否かを判断する。つづいて、電子機器がスリープ状態に遷移している間に限界記憶保持時間に到達したと判断したときにパワー・オン状態に移行して不揮発性記憶装置が記憶するデータをリフレッシュする。このときのスリープ状態はサスペンド状態であってもよい。
【発明の効果】
【0019】
本発明により、有限の記憶保持時間を有する不揮発性記憶装置が記憶するデータを保護する方法を提供することができた。さらに本発明により、システムがスリープ状態の間に不揮発性記憶装置が記憶するデータが消失することを防止する方法を提供することができた。さらに本発明により、ハイバネーション状態からの短時間の復帰を確保する方法を提供することができた。さらに本発明により、そのような方法を実現する電子機器、およびコンピュータ・プログラムを提供することができた。
【図面の簡単な説明】
【0020】
【
図1】ノートPCのハードウェア構成の一例を示す機能ブロック図である。
【
図2】フラッシュ・メモリの限界記憶保持時間が短縮する様子を説明する図である。
【
図3】フラッシュによりフラッシュ・メモリのデータを保護する手順を示すフローチャートである。
【
図4】フラッシュによりフラッシュ・メモリのデータを保護する手順を説明するタイムチャートである。
【
図5】リフレッシュによりフラッシュ・メモリのデータを保護する他の手順を示すフローチャートである。
【
図6】リフレッシュによりフラッシュ・メモリのデータを保護する他の手順を説明するタイムチャートである。
【発明を実施するための形態】
【0021】
[パワー・ステート]
図1は、ノートPC10のハードウェア構成の一例を示す機能ブロック図である。多くのハードウェアの構成は周知であるため、ここでは本発明の理解に必要な範囲で説明する。最初にノートPC10のパワー・ステートについて説明する。ノートPC10は、ACPI(Advanced Configuration and Power Interface)の省電力機能に対応している。ACPIでは、S1ステートからS4ステートまでの4つのスリーピング・ステート(省電力状態)、S0ステート(パワー・オン状態)、およびS5ステート(パワー・オフ状態)を定義している。
【0022】
ACPIのスリーピング・ステートのなかでノートPC10は、一例としてS3ステートとS4ステートだけを定義しているが他のスリーピング・ステートを定義してもよい。スリーピング・ステートのときはCPU11の電源は停止する。S3ステート(サスペンド状態)は、メイン・メモリ13の記憶を保持し、メイン・メモリ13の記憶保持に必要のないデバイスの電源を停止する状態である。サスペンド状態に入る際にオペレーティング・システム(OS)は、電源が停止するデバイスが保持していたシステム・コンテキストをメイン・メモリ13に退避し、パワー・オン状態に戻ったときにそれを各デバイスに設定する。
【0023】
S4ステート(ハイバネーション状態)は、ACPIでサポートされるスリーピング・ステートの中で最も起動までの時間が長く、かつ消費電力が少ない状態である。ノートPC10がパワー・オン状態からハイバネーション状態に遷移する際には、OSがHDD19にメイン・メモリ13が記憶するハイバネーション・データを格納してからパワー・コントローラ51などの電源の起動に必要なデバイス以外のデバイスに対する電源を停止する。
【0024】
S5ステートはいわゆるソフト・オフともいわれ、OSがハイバネーション・データをHDD19に格納しない点を除いては基本的に電力を供給するデバイスの範囲はハイバネーション状態と同じである。なお、本発明におけるハイバネーション状態には、OSがS3ステートに遷移させてから所定の時間が経過したときにBIOSが自動的にハイバネーション状態に遷移させる状態も含む。この場合は、OSはシステムがサスペンド状態に遷移していると認識するが、実際の電力状態はハイバネーション状態となる。
【0025】
チップセット17にはCPU11、HDD19、NAND型のフラッシュ・メモリ21、BIOS_ROM33、NVRAM35、およびエンベデッド・コントローラ(EC)41接続されている。CPU11にはメイン・メモリ13およびLCD15が接続されている。チップセット17は、さまざまな規格のインターフェース機能を備えており、
図1では代表的にSATA23にHDD19が接続され、mSATA25にフラッシュ・メモリ21が接続され、SPI29にBIOS_ROM33が接続され、LPC30にEC41およびNVRAM35が接続されている。チップセット17は、フラッシュ・メモリ21をHDD21のキャッシュとして機能させるためのキャッシュ・コントローラ27を含む。
【0026】
キャッシュ・コントローラ27は、CPU11が実行するプログラムがHDD19に書き込むデータをライトバック・キャッシングまたはライトスルー・キャッシングでフラッシュ・メモリ21およびHDD19に書き込む。ライトバック・キャッシングとライトスルー・キャッシングの切り換えは、HDD19に格納されCPU11で実行されるユーティリティ・マネージャというプログラムを通じてユーザが設定することができる。ユーザはユーティリティ・マネージャを通じていずれのキャッシング方式を採用するかを選択することができる。
【0027】
ライトバック・キャッシングが選択されたとき、キャッシュ・コントローラ27はHDD19に対する書き込みデータを一旦フラッシュ・メモリ21にだけ書き込む。キャッシュ・コントローラ27はHDD19がアイドル状態のときまたはその他のタイミングでの所定のアルゴリズムで、フラッシュ・メモリ21にだけ記憶されているデータをHDD19に記憶する。そのとき、キャッシュ・コントローラ27はフラッシュ・メモリ21が記憶するデータをリフレッシュ(再書き込み)することもできる。
【0028】
一例としてフラッシュ・メモリ21の記憶領域は、書き込み時に使用するライト・キャッシュ領域と読み取り時に利用するリード・キャッシュ領域を区分しない。この場合、HDD19への書き込み時にフラッシュ・メモリ21が記憶したデータは読み取り時にフラッシュ・メモリ21から読み取られる。この場合は、消失を防ぐ必要があるデータはフラッシュ・メモリ21が記憶するすべてのデータとなる。他の例では、ライト・キャッシュ領域とリード・キャッシュ領域を区分してもよい。
【0029】
そして、HDD19に対する最初のリード・アクセスがあったときに、キャッシュ・コントローラ27はHDD19から読み取ってシステムに応答すると同時にリード・キャッシュ領域にも書き込む。次回以降にHDD19に対する同一データのリード・アクセスがあったときに、キャッシュ・コントローラ27はリード・キャッシュ領域から読み取って応答する。この場合、消失を防ぐ必要があるデータは、ライト・キャッシュ領域に記憶されたデータとなる。チップセット17は、その他にシステムにカレンダ時刻を提供するRTC31、パワー・ステートを制御するためのACPIレジスタ32などを含んでいる。
【0030】
フラッシュ・メモリ21は、累積書き込み回数が増えるとデータの保持期間が短くなる。累積書き込み回数は、新たに使用したときから書き込んだ累積データ量とフラッシュ・メモリ21の容量に応じて増加していく。同じ累積データ量であれば、フラッシュ・メモリ21の容量が小さいほど累積書き込み回数は多くなる。フラッシュ・メモリ21の容量は一例として16GBまたは20GBである。また、フラッシュ・メモリ21をノートPC10において通常の方法で使用する場合には、累積書き込み回数を累積使用時間として捕らえることもできる。
【0031】
図2はこのときの様子を説明する図で、横軸は累積書き込み回数、累積書き込みデータ量または累積使用時間などのいずれかの劣化パラメータを示し、縦軸が限界記憶保持時間を示している。フラッシュ・メモリ21の記憶単位であるセルは、劣化が進行すると徐々にフローティング・ゲートに電荷を保持する時間が短くなる。エラー訂正する所定の単位のデータに対してビット・エラーが多くなるとエラー訂正して回復することができなくなる。限界記憶保持時間は、このような場合にデータを書き込んでから実質的に読み取ることができなくなるまでの経過時間に相当する。限界記憶保持時間は使用開始からしばらくの間はほぼ一定のtx0を維持しているが、劣化パラメータがある程度を越えると、tx1、tx2、tx3といったように急激に低下していく。
【0032】
フラッシュ・メモリ21は、データを書き込む前に書き込み領域を消去する必要がある。消去の単位はバイト単位より大きいブロック単位となる。キャッシュ・コントローラ27は、フラッシュ・メモリ21の特定の記憶素子に対して書き換えが集中しないように、書き込んだデータを所定のアルゴリズムでスワップするウェアレベリングを実行する。ウェアレベリングにより本発明ではフラッシュ・メモリ21のセルの劣化は全体に渡って均一に進行するものとして扱う。ただし、ブロック単位で限界記憶保持時間を管理して本発明を適用することもできる。
【0033】
HDD19はOS、デバイス・ドライバ、アプリケーション・プログラム、およびユーザ・データなどを記憶する大容量の記憶装置(ディスク・ドライブ)である。BIOS_ROM33はシステムBIOSを格納する。フラッシュ・メモリ21の限界記憶保持時間が低下したときは、メーカのサービス機関が新しいフラッシュ・メモリと交換する。不揮発性半導体メモリであるNVRAM31は、フラッシュ・メモリ21が交換されたときにその交換日時を記憶する。
【0034】
EC41には、電池コントローラ59およびパワー・コントローラ51が接続されている。EC41は、CPU、CPUが実行するファームウェアを格納するROM、CPUの作業領域を提供するRAM、および参照テーブル45および劣化パラメータ47などのデータを格納するEEPROMなどで構成されたマイクロ・コンピュータである。参照テーブル45は、
図2に示した劣化特性と劣化パラメータの関係を示す2次元マトリクスで構成され、EC41が劣化パラメータ47から限界記憶保持時間を計算するために利用する。
【0035】
劣化パラメータ47は、フラッシュ・メモリ21の累積書き換え回数の代用特性となる累積使用時間または累積書き込みデータ量のいずれかとすることができる。あるいは劣化パラメータ47は、キャッシュ・コントローラ27がウェアレベリングに基づいてカウントした各ブロックの平均的な累積書き換え回数としてもよい。電池コントローラ59には、リチウムイオン型の電池セルおよび保護回路などを含む電池ユニット61が接続されている。電池コントローラ59は電池セルの残容量を計算したり充放電時の安全を管理したりするマイクロ・コントローラである。電池コントローラ59と電池ユニット61は、スマート・バッテリィ・システム(SBS)の規格に適合する電池パックとして構成することもできる。
【0036】
電池ユニット61は電池コントローラ59に電力を供給する。したがって、電池コントローラ59は、システムがパワー・オフ状態のときにも動作する。電池コントローラ59は、ウェイクアップ信号を送るためにパワー・ユニット51にも接続されている。EC41は電池コントローラ59と通信して定期的に電池ユニット61に残存する電気量(残容量)を取得することができる。パワー・コントローラ51には、パワー・ボタン53およびDC/DCコンバータ61が接続されている。パワー・コントローラ51は、EC41からの指示、パワー・ボタン53の押下または電池コントローラ59からのウェイクアップ信号などに基づいてDC/DCコンバータ63を制御するワイヤード・ロジックのディジタル制御回路(ASIC)である。
【0037】
パワー・コントローラ51はタイマ55、メモリ・レジスタ56、およびパワー・レジスタ57を含んでいる。メモリ・レジスタ56は、ウェイクアップの原因がフラッシュ・メモリ21のフラッシュまたはリフレッシュにあることを示すメモリ・ビットを設定する。パワー・レジスタ57は、ノートPC10の現在の電力源がAC/DCアダプタ65であることを示すパワー・ビットを設定する。DC/DCコンバータ63は、AC/DCアダプタ65または電池ユニット61から供給される直流電圧を、ノートPC10を動作させるために必要な複数の電圧に変換し、さらにパワー・ステートに応じて定義された電力供給区分に基づいて各々のデバイスに電力を供給する。AC/DCアダプタ65は、電池ユニット61を充電するとともにDC/DCコンバータ63に電力を供給する。AC/DCアダプタ65が接続されていないときは、電池ユニット61がDC/DCコンバータ63に電力を供給する。
【0038】
[フラッシュによりデータを保護する手順]
図3は、ハイバネーション状態に遷移したときにフラッシュ・メモリ21のデータを保護する手順を示すフローチャートで、
図4はそれに対応するタイムチャートである。ブロック101では、時刻t0からt1までの間にノートPC10がパワー・オン状態に遷移している。キャッシュ・コントローラ27はライトバック・キャッシングで動作するように設定されている。また、AC/DCアダプタ65は接続されておらずノートPC10の電力源は電池ユニット61であるものとする。
【0039】
ブロック103でアプリケーション・プログラムがHDD19に書き込むデータを、キャッシュ・コントローラ27は一旦フラッシュ・メモリ21にだけ書き込むとシステムに書き込み完了の応答をする。その後、キャッシュ・コントローラ27は、所定のアルゴリズムでフラッシュ・メモリ21のデータをHDD19にフラッシュするが、フラッシュが完了するまでの間はフラッシュ・メモリ21だけがデータを記憶している状態になる。
【0040】
ブロック105でEC41は定期的に劣化パラメータ47を更新する。劣化パラメータ47がフラッシュ・メモリ21の累積使用時間の場合は、EC41はNVRAM35から取得したフラッシュ・メモリ21の使用開始日時とチップセット17のRTC31から取得した現在の日時から累積使用時間を計算する。劣化パラメータがHDD19に対する累積書き込みデータ量または累積書き換え回数の場合は、EC41はそれらのデータをキャッシュ・コントローラ27から取得することができる。EC41は、いずれか1つの劣化パラメータまたは複数の劣化パラメータを取得してもよい。
【0041】
ブロック107でEC41は、1つまたは複数の劣化パラメータ47を参照して限界記憶保持時間が、tx1〜tx3のいずれかに到達したか否かを判断する。複数の劣化パラメータを使用する場合は、各パラメータに基づく限界記憶保持時間の最低値または平均値を使用することができる。tx1〜tx3のいずれかに到達していると判断したときは、CPU11に割り込みをかけてシステムBIOSを通じてLCD15に注意を促す。注意は限界記憶保持時間の低下の程度に応じてユーザにフラッシュやリフレッシュの実行を促したり、フラッシュ・メモリ21の即時交換を求めたりするプロンプト画面で行うことができる。
【0042】
ブロック109で、ユーザまたはシステムがハイバネーション状態に遷移させるためのスリープ・トリガを生成する。ユーザは、LCD15が表示するアイコンの操作、キーボードのFnキーの操作、パワー・ボタン53の押下、または、筐体を閉じる操作などによりスリープ・トリガを生成することができる。システムはアイドル時間が所定値を越えたときにスリープ・トリガを生成することができる。
【0043】
OSは、パワー・オン状態に復帰するのに必要なシステム・コンテキストおよびメイン・メモリ13が記憶するデータなどのハイバネーション・データをHDD19に書き込む。しかしライトバック・キャッシングを採用しているため、キャッシュ・コントローラ27は一旦ハイバネーション・データをフラッシュ・メモリ21にだけ書き込む。ハイバネーション状態に遷移する準備が完了するとOSはBIOSを経由してチップセット17のACPIレジスタ32に遷移先のパワー・ステートを設定してEC41に通知する。
【0044】
ブロック111で、EC41はその時点における劣化パラメータ47と参照テーブル45から計算した限界記憶保持時間をパワー・コントローラ51のタイマ55に設定する。キャッシュ・コントローラ27による自動的なフラッシュが短い時間間隔で行われる場合は、ハイバネーション状態に遷移するタイミングで限界記憶保持時間をタイマ55に設定しても誤差は少ない。ただし、EC41は、キャッシュ・コントローラ27から、フラッシュ・メモリ21に記憶したリフレッシュ前の最も古いデータの記憶日時を取得して、RTC31の現在の日時との差に相当する時間を限界保持時間から減じた値をタイマ55に設定するようにしてもよい。
【0045】
この場合は、実際にフラッシュ・メモリ21に書き込まれた日時から限界記憶保持時間までの経過時間が計時される。
図2に示したように限界保持時間は、劣化が進行すると急激に低下する傾向がある。したがって、EC41は現在の限界保持時間がtx2またはtx3まで低下したときに、ハイバネーション状態に遷移する直前に、ユーティリティ・マネージャにフラッシュ・メモリ21をリフレッシュするかまたはフラッシュする要求をしてもよい。
【0046】
ブロック113では時刻t1でEC41が、パワー・コントローラ51に指示してシステムをハイバネーション状態に遷移させる。このとき、EC41の電源は停止するがパワー・コントローラ51には電源が供給されているためタイマ51は動作を継続する。電池ユニット61の残容量がシステムを強制的にシャットダウンする値に近付くと、AC/DCアダプタ65を接続しない限り以下の手順でパワー・オン状態に復帰してフラッシュしてから再度ハイバネーション状態に戻すことができなくなる。
【0047】
ブロック115で電池コントローラ59は、電池ユニット61の残容量がパワー・オン状態に遷移してフラッシュ・メモリ51のデータをHDD19にフラッシュする処理をするのに必要な所定値まで低下したときには、限界記憶保持時間に到達する前であってもパワー・コントローラ51にウェイクアップ信号を送ってブロック119に移行する。ウェイクアップ信号を受け取ったパワー・コントローラ51はメモリ・レジスタ56にメモリ・ビットを設定する。電池ユニット61の残容量が所定値以上のときは、ブロック117に移行する。
【0048】
ブロック117では時刻t2でタイマ55がタイムアップすると、パワー・コントローラ51はメモリ・レジスタ56にメモリ・ビットを設定してブロック119に移行する。ブロック119でパワー・コントローラ51は、DC/DCコンバータ63に信号を送ってシステムをパワー・オン状態に遷移させる。電源が投入されたEC41は、メモリ・レジスタ56を参照し、さらにBIOSを通じてチップセット17のACPIレジスタ32を参照して今回のウェイクアップの目的がフラッシュ・メモリ21のフラッシュであることを認識する。
【0049】
ブロック121でOSはBIOSを通じてACPIレジスタ32を参照しハイバネーション状態からの復帰であることを認識すると、フラッシュ・メモリ21からハイバネーション・データを読み取って、メイン・メモリ13および各種コントローラのレジスタに復帰させる。この時点でフラッシュ・メモリ21は確実にデータを記憶している。EC41はCPU11に割り込みをかけて、BIOSを通じてユーティリティ・マネージャにフラッシュ・メモリ21が記憶するデータをHDD19にフラッシュするように要求する。
【0050】
ユーティリティ・マネージャがキャッシュ・コントローラ27にフラッシュのコマンドを送ると、キャッシュ・コントローラ27はフラッシュ・メモリ21が記憶するすべてのデータをHDD19に書き込む。このとき、ユーティリティ・マネージャはキャッシュ・コントローラ27に、フラッシュすることに加えてフラッシュ・メモリ21のデータをリフレッシュするように要求することができる。
【0051】
フラッシュ・メモリ21のデータがリフレッシュされるとブロック123でHDD19に(実際にはフラッシュ・メモリ21に)ハイバネーション・データを書き込まないで移行したブロック151でパワー・オン状態に移行する際、またはパワー・オン状態に移行した後にHDD19に対するリード・アクセスがあった際にフラッシュ・メモリ21から確実にデータを読み取ることができるので、ハイバネーション状態からの復帰を短時間で完了したり短時間でアクセスを完了したりすることができる。
【0052】
ユーティリティ・マネージャは、フラッシュ・メモリ21のフラッシュおよび必要に応じて行ったリフレッシュが完了すると、ブロック123でOSにハイバネーション状態に戻ることを要求する。OSは、ブロック113と同じ手順でハイバネーションを実行し、ブロック151に移行する。ハイバネーション・データはブロック113でHDD19に確実に記憶されているので、ここではハイバネーション・データの記憶を省略してもよい。
【0053】
ブロック151では、ユーザがパワー・ボタン53を押下したり、筐体を開いたりして通常のウェイクアップ操作をする。通常のウェイクアップ操作が行われたときはレジスタ56にメモリ・ビットが設定されないため、ブロック153ではシステムが時刻t3でパワー・オン状態に遷移してブロック103に移行する。パワー・オン状態に移行する際にEC41はタイマ55をリセットし、さらにユーティリティ・マネージャにその時点でフラッシュ・メモリ21のデータをフラッシュまたはリフレッシュするように要求してもよい。その後は、キャッシュ・コントローラ27のアルゴリズムによりフラッシュ・メモリ21のデータはHDD19にフラッシュされる。
【0054】
ここまで、ハイバネーション状態のときにパワー・コントローラ51のタイマ51が時間を計時する例を説明したが、他の方法では電池ユニット61の残容量からハイバネーション中の経過時間を計時することもできる。ノートPC10が長期間放置されるときは、AC/DCアダプタ65が外されることが多い。ハイバネーション状態ではパワー・コントローラ51以外のほとんどのデバイスの電力が停止し、電池ユニット61は自然放電、電池コントローラ59の動作およびパワー・コントローラ51の動作によるわずかな一定の消費電力により徐々に残容量が低下する。
【0055】
したがって、電池コントローラ59は現在の残容量と単位時間当たりの消費電力から限界記憶保持時間に相当する残容量を計算して、ウェイクアップ信号を出力することもできる。この場合、タイマ55が動作しないためハイバネーション中の待機電力を低減することができる。なお、このときAC/DCアダプタ65が接続されると、パワー・ユニット51にAC/DCアダプタ57から電力が供給される。AC/DCアダプタ65が接続されたときは、ハイバネーション状態であってもEC41に電力を供給することができる。
【0056】
電力が供給されたEC41は、電池コントローラ59から電池ユニット61の残容量の低下に相当する経過時間の情報を取得して残りの時間をタイマ55に設定し、限界記憶保持時間までの経過時間を計時してブロック115以降の手順を実行することができる。ここではハイバネーション中のフラッシュ・メモリ21のデータ保護について説明したが、
図3、
図4の手順はサスペンド中の保護に適用することもできる。
【0057】
[リフレッシュによりデータを保護する手順]
これまで、スリープ状態でのフラッシュ・メモリのデータをフラッシュにより保護する方法を説明したが、本発明ではリフレッシュにより保護することもできる。
図5は、サスペンド状態に遷移したときにフラッシュ・メモリ21のデータを保護する手順を示すフローチャートで、
図6はそれに対応するタイムチャートである。
図5の手順は
図3の手順と多くの内容が重複する。
図5の手順において
図3の手順を参照して容易に理解できるものは、同一の参照番号を付して説明を省略する。
【0058】
ブロック201では、ユーザまたはシステムがサスペンド状態に遷移するためのスリープ・トリガを生成する。ブロック203では時刻t11でOSは、システムがサスペンド状態に移行したときに電源が停止するコントローラのコンテキストをメイン・メモリ21に書き込むと、BIOSを通じてチップセット17のACPIレジスタに遷移先としてのサスペンドを示すビットを設定しさらにEC41にメイン・メモリ13の記憶を保持するために必要な電源以外の電源を停止するように指示する。
【0059】
ブロック117では時刻t13でタイマ55がタイムアップする。ブロック205では、タイマ55のタイムアップまたは電池コントローラ59のウェイクアップ信号によりメモリ・レジスタ56にはメモリ・ビットが設定されている。電源が投入されたEC41は、レジスタ56を参照し、さらにBIOSを通じてACPIレジスタ32を参照して今回のウェイクアップの目的がフラッシュ・メモリ21のリフレッシュであることを認識する。
【0060】
ブロック207でOSはBIOSを通じてACPIレジスタ32を参照しハイバネーション状態からの復帰であることを認識すると、フラッシュ・メモリ21からハイバネーション・データを読み取って、メイン・メモリ13および各種コントローラのレジスタに設定する。EC41はCPU11に割り込みをかけて、BIOSを通じてユーティリティ・マネージャにフラッシュ・メモリ21が記憶するデータをリフレッシュするように要求する。
【0061】
ユーティリティ・マネージャがキャッシュ・コントローラ27にリフレッシュのコマンドを送ると、キャッシュ・コントローラ27はフラッシュ・メモリ21が記憶するすべてのデータを書き換える。ユーティリティ・マネージャは、フラッシュ・メモリ21のリフレッシュが完了すると、ブロック209でOSにサスペンド状態に戻ることを要求してブロック111に移行する。
図3の手順と異なり、
図5の手順ではフラッシュ・メモリ21のデータはHDD19にフラッシュされないので、サスペンド状態の時間が長くなるとリフレッシュされた後に続くサスペンド状態における経過時間が再度限界記憶保持時間に到達する場合がある。
【0062】
ブロック209からブロック111に戻る手順により時刻t15でつぎの限界記憶保持時間が到来したときには、フラッシュ・メモリ21のデータは再度リフレッシュされる。ブロック153では時刻t17でシステムが、通常のウェイクアップによりパワー・オン状態に戻る。
図5、
図6の例では、サスペンド状態の間にフラッシュ・メモリ21のデータをリフレッシュする例を説明したが、この手順はハイバネーション状態に適用することもできる。
【0063】
これまで、フラッシュ・メモリ21がHDD21のキャッシュとして機能する例を説明したが、本発明はフラッシュ・メモリ21がHDD21から独立した半導体メモリとして機能する場合にも適用できる。また本発明の適用においては、HDD21はSSDまたはその他の記憶装置としてもよい。フラッシュ・メモリ21は、不揮発性半導体メモリの例示であり、本発明は、劣化パラメータの計測が可能なあらゆる記憶装置に適用することができる。
【符号の説明】
【0064】
10 ノートPC
17 チップセット
41 エンベデッド・コントローラ
51 パワー・コントローラ