【解決手段】SSD30はフラッシュ・メモリ37を備えており、シリアル・バス32を通じてチップ・セット20に接続されている。待機状態ではSSD30の電力が停止する。EC40は待機状態に遷移する前に、フラッシュ・メモリ37が記憶するデータが消失するまでの残存時間を電池ユニット60に設定する。電池ユニットが待機状態に遷移してからの経過時間を計時する。EC40は待機状態の間、タイマー57で一時的にウェイクアップして、電池ユニット60が計時する経過時間を監視する。EC40は、残存時間が到来したと判断したときは所定のデバイスに電力を供給してSSD30にリフレッシュ・コマンドを送る。
前記電源制御部が前記待機状態に遷移したときに電源が停止し、前記待機状態の間に所定のタイミングでウェイクアップして前記計時部が計時した経過時間を監視する請求項1に記載のコンピュータ。
前記電源制御部が前記待機状態に遷移して電源が停止する前に前記電池ユニットに前記消失時刻までの経過時間を設定し、前記電池ユニットは前記消失時刻が到来したときに前記電源制御部をウェイクアップさせる請求項6に記載のコンピュータ。
前記電源制御部が前記待機状態に遷移して電源が停止する前に前記ウェイクアップ回路に前記消失時刻を設定し、前記ウェイクアップ回路は前記消失時刻が到来したときに前記電源制御部をウェイクアップさせる請求項8に記載のコンピュータ。
前記待機イベントに応じて前記コンピュータが前記ディスク・ドライブから前記消失時刻を計算するための書込日時に関する情報とデータ保持時間に関する情報を取得する請求項14に記載の方法。
前記リフレッシュ・コマンドを送付するステップが、システム・ファームウェアがブート段階で前記コンピュータに前記リフレッシュ・コマンドを送付する機能を実現させるステップを含む請求項14に記載の方法。
【発明の概要】
【発明が解決しようとする課題】
【0007】
ホスト装置に接続されるSSDは、ホスト装置から電力の供給を受ける。ホスト装置は、使用しないときに省電力状態に移行してSSDの電力を停止する場合がある。ホスト装置およびSSDがともに電力が供給されて動作している間は、特許文献1の発明のようにリテンション・チェックを行って、データの消失を防ぐことができる。また、特許文献4の発明のようにSSDがホストからコマンドを受け取ったり自ら定期的にリフレッシュしたりすることは可能である。しかし、待機状態においてホスト装置またはSSDの電力が停止しているときはこのような方法を採用することができない。
【0008】
特許文献2の発明のように、SSDに内部バッテリィを搭載する場合は待機状態でもリフレッシュできるが、コストの増加およびサイズの増加などのほかにバッテリィの容量管理などが課題になる。特許文献3のようにホスト装置が定期的にSSDの電源を投入してリフレッシュする方法は、ホスト装置に電源が投入されていることが前提になるため、待機状態に遷移するホスト装置に適用することはできない。またデータ保持時間とは無関係に定期的にSSDに電源を投入するとホスト装置の待機電力が増加する。
【0009】
そこで本発明の目的は、待機状態に遷移するホスト装置に接続された不揮発性メモリのデータ消失を防止する方法を提供することにある。さらに本発明の目的は、ホスト装置の待機電力の低減を図りながら不揮発性メモリのデータ消失を防止する方法を提供することにある。さらに本発明の目的は、ハードウェアの変更を最小限にしながら不揮発性メモリのデータ消失を防止する方法を提供することにある。さらに本発明の目的は、そのような方法を実現するホスト装置およびコンピュータを提供することにある。
【課題を解決するための手段】
【0010】
本発明にかかる不揮発性メモリは、書き込んでからデータ保持時間が経過するとデータの信頼性が低下して実質的に消失したとみなす。このような不揮発性メモリのデータの消失を防ぐためにはデータの書込時刻からの経過時間を計時してデータ保持時間が経過する前にリフレッシュすることが有効である。しかし、記憶装置の電源はコンピュータが待機状態に遷移したときに停止する必要があるため、内部に電力源のない記憶装置では経過時間を計時することができない。
【0011】
コンピュータは、待機状態において待機状態に遷移してから不揮発性メモリが記憶するデータが消失する消失時刻までの経過時間を計時して監視する。消失時刻の計算に必要な書込時刻に関する情報とデータ保持時間に関する情報は、待機状態に遷移する前に記憶装置から取得することができる。本発明の第1の態様では、コンピュータは、経過時間に基づいて消失時刻が到来したと判断したときに、記憶装置とリフレッシュ・コマンドを送出するために必要な回路に電源を投入して記憶装置にリフレッシュ・コマンドを送出する。したがって、待機状態を維持しながらデータの消失を防ぐことができる。
【0012】
記憶装置はオペレーティング・システムを記憶するスタティック・ディスク・ドライブであってもよい。また不揮発性メモリは、ハードディスク・ドライブのキャッシュもよい。不揮発性メモリの種類は、リフレッシュによりデータの消失を防ぐことができるものであれば特に限定しない。リフレッシュ・コマンドは待機状態のコンピュータに電源を投入してからオペレーティング・システムがロードされる前に送出すると待機電力の増加防止およびリフレッシュ時間の短縮の面で有益である。
【0013】
電源制御部は、待機状態で電源を停止し所定のタイミングでウェイクアップして経過時間を監視するようにすれば待機電力を低減できる。ウェイクアップの所定のタイミングは一定の周期にしてもよいし、ウェイクアップして再び電源が停止する前に毎回異なる時間を設定して異なる周期にしてもよい。計時部が、コンピュータに電力を供給する電池の充放電を制御する電池ユニットの制御部とすれば、ハードウェアの変更の必要がなく計時動作のために待機電力が増加しない。電源制御部は待機状態に遷移して電源が停止する前に電池ユニットに消失時刻までの経過時間を設定し、電池ユニットは経過時間が到来したときに電源制御部をウェイクアップさせれば、電源制御部が無駄にウェイクアップすることがなくなる。
【0014】
また計時部が、システムの時刻情報を生成するリアル・タイム・クロックを含むウェイクアップ回路とすることもできる。電源制御部は待機状態に遷移して電源が停止する前にウェイクアップ回路に消失時刻を設定し、ウェイクアップ回路は消失時刻が到来したときに電源制御部をウェイクアップさせることもできる。この場合もハードウェアの変更の必要がなく計時動作のための待機電力も増加しない。
【0015】
本発明の第2の態様では、記憶装置が、コントローラが参照してリフレッシュの必要性を判断するためのリフレッシュ端子を備える。計時部は記憶装置の電源が停止する待機状態に遷移してから不揮発性メモリが記憶するデータが消失するまでの残存時間を計時する。電源制御部は、残存時間の経過に応答して記憶装置に電源を投入する。設定部は残存時間の経過に応答してリフレッシュ信号を出力してリフレッシュ端子を設定する。この場合、待機状態において、記憶装置の電源とリフレッシュ信号を出力する回路に電源を投入すれば、データが消失する前にリフレッシュすることができる。
【0016】
設定部は、インターフェースを利用しないサイドバンドを経由してリフレッシュ端子を設定することができる。計時部と設定部をコンピュータに電力を供給する電池ユニットが構成したり、システムの時刻情報を生成するリアル・タイム・クロックを含むウェイクアップ回路が構成したりすれば、待機電力を増加させないようにしながらサイドバンドを追加するだけでリフレッシュをすることができる。
【発明の効果】
【0017】
本発明により、待機状態に遷移するホスト装置に接続された不揮発性メモリのデータ消失を防止する方法を提供することができた。さらに本発明により、ホスト装置の待機電力の低減を図りながら不揮発性メモリのデータ消失を防止する方法を提供することができた。さらに本発明により、ハードウェアの変更を最小限にしながら不揮発性メモリのデータ消失を防止する方法を提供することができた。さらに本発明により、そのような方法を実現するホスト装置およびコンピュータを提供することができた。
【発明を実施するための形態】
【0019】
[用語の意味]
最初に本明細書で使用する用語を説明する。ホスト装置とは、SSDの電源を制御することが可能な装置をいう。ホスト装置は、省電力状態(待機状態)に遷移している間にSSDの電源を停止するがリフレッシュが必要なタイミングで一時的に電源を投入することができる。データ保持時間とは、フラッシュ・メモリのページにデータを書き込んでからフローティング・ゲートに注入した電荷が抜けてデータが消失すると想定するまでの時間または電荷を維持してデータの記憶を維持すると想定する時間をいう。データの書込時刻からの経過時間がデータ保持時間に到達するとデータは十分な信頼性のもとで記憶されているとはいえなくなり、実質的に消失したことと同等の状態として扱う。
【0020】
データ保持時間はフラッシュ・メモリの固有の性能で劣化パラメータの影響を受けて短くなる。本発明においては、ホスト装置がデータ保持時間を取得する方法は問わない。データ保持時間は、フラッシュ・メモリまたはSSDの製造者によって、動作中のSSDから取得が可能な劣化パラメータに関連付けた値として提供される。劣化パラメータは主として書込回数の前提となる消去回数とすることができるが、読取回数や使用時間などの他の劣化パラメータを含めてデータ保持時間を取得するようにしてもよい。本実施の形態では、劣化パラメータを代表的に消去回数として説明する。
【0021】
また本実施の形態では、消去をそれぞれ読み書きの最小単位となる複数のページの集合であるブロック単位で行うため消去回数はブロックごとに発生し、データ保持時間もブロックごとに発生する。書込時刻は、ページにデータを書き込んだ時刻をいう。消失時刻は、書込時刻からデータ保持時間が経過したときの時刻をいう。残存時間は、消失時刻と現在時刻の差に相当する現在からデータが消失するまでの時間をいう。このときデータ保持時間は、書込時刻から消失時刻までの時間に相当する。また、消去はブロック単位で行うため、消失時刻はブロック単位の概念として把握することができる。各ブロックの消失時刻は、当該ブロックのなかで最も早く書き込まれたページの書込時刻から当該ブロックのデータ保持時間が経過する時刻に相当する。
【0022】
リフレッシュは、各ブロックの消失時刻が到来する前にフラッシュ・メモリのデータをRAMに読み出してから同じブロックに書き込む処理をいう。リフレッシュは、SSDの電源がリフレッシュ中に停止したときのデータ消失を防ぐために、元のブロックに書き込んだデータをRAMに読み出してリフレッシュ領域のブロックに書き込み、その後元のブロックを消去して新たなリフレッシュ領域として割り当てる方法で行うこともできる。リフレッシュするブロックの単位は特に限定しない。したがって、いずれかのブロックが消失時刻に近付いたときにすべてのブロックを一括してリフレッシュしてもよいし、消失時刻が到来した単一のブロックまたは消失時刻の到来が近い複数のブロックごとにリフレッシュしてもよい。
【0023】
[ノートPCの構成]
図1は、ホスト装置の一例としてのノートブック型パーソナル・コンピュータ(ノートPC)10の、本実施形態の理解に必要な構成を説明するための機能ブロック図である。本明細書では、後に第1のリフレッシュ方法から第3のリフレッシュ方法まで3つのリフレッシュの実行態様を説明する。それぞれの実行態様では、
図1に示すいずれかの要素を利用する。したがって、
図1に示す要素がすべて各実行態様の必須の要素にはならない。本発明の必須の要素は特許請求の範囲に記載するとおりである。
【0024】
ノートPC10は、ACPIが規定するパワー・オン状態(S0ステート)、ソフト・オフ状態(S5ステート)に加えてサスペンド状態(S3ステート)、ハイバネーション状態(S4ステート)などのスリーピング状態に遷移する。ソフト・オフ状態およびスリーピング状態を併せて本実施の形態においては待機状態ということにする。なお、ノートPC10の通常の動作ではソフト・オフ状態およびスリーピング状態からパワー・オン状態に復帰するが、本実施の形態にかかる待機状態ではリフレッシュに必要な一部のデバイスにだけ電源を供給する場合もある。本発明の待機状態は必ずしもACPIのパワー・ステートに関連付ける必要がないが、待機状態ではSSD30の電源が停止する。
【0025】
なお本発明の適用可能な待機状態はここで例示したパワー・ステートに限定するものではなく、少なくともSSD30およびCPU11の電源が停止する省電力状態とすることができる。また、待機状態における待機電力は常に一定である必要はない。待機状態はリフレッシュのために一時的にSSD30、CPU11およびその他のデバイスに電力を供給する状態も含む。
【0026】
チップ・セット20は、USB(Universal Serial Bus)、SATA(Serial AT Attachment)バス、SPI (Serial Peripheral Interface)バス、 PCI(Peripheral Component Interconnect)バス、PCI−Express(PCIe)バス、およびLPC(Low Pin Count)バスなどのインターフェースとなるI/Oコントローラ25を備え、それらに対応したさまざまなデバイスを接続することができる。
【0027】
図1では本実施の形態の理解のためにチップ・セット20に接続された、CPU11、システム・メモリ13、ファームウェアROM15、SSD30およびエンベデッド・コントローラ40を例示している。一般的なノートPCではチップ・セット20にさらに、図示しないUSBコネクタ、通信モジュール、ディスプレイ、およびオーディオ・デバイスなどが接続される。チップ・セット20は、複数の機能ブロックごとに電力を供給することができる。パワー・オン状態ではすべての機能ブロックに電力を供給するが、待機状態では当該パワー・ステートに応じた必要最小限の機能ブロックにだけ電力を供給して消費電力を低減することができる。
【0028】
一例としてSSD30はSATAポートに接続され、EC40はSPIポートに接続される。チップ・セット20はさらに、RTC21およびRTCメモリ23を含んでいる。RTC21はシステムが使用するカレンダ時刻を生成するための計時動作をする。
【0029】
RTCメモリ23はRTC21の計時動作に基づいて生成されたカレンダ時刻を記憶する。OSは、ネットワークを通じて取得した標準時刻で定期的にRTCメモリ23が記憶するカレンダ時刻を補正することができる。RTCメモリ23が記憶するカレンダ時刻はシステムや周辺デバイスに提供され、ファイルのタイム・スタンプやスケジュール管理などに利用される。
【0030】
RTC21およびRTCメモリ23はチップ・セット20に電力が供給されるときはその電力で動作するが電力が供給されないときはボタン電池(図示せず)から供給された電力で動作するため、ノートPC10がいかなるパワー・ステートに遷移していてもカレンダ時刻の生成が停止することはない。チップ・セット20は、周知のRTCウェイクアップ機能を備えている。
【0031】
RTCウェイクアップ機能は、チップ・セット20がRTCメモリ23のカレンダ時刻を利用してRTCメモリ23に設定された時刻でシステムを待機状態からパワー・オン状態に遷移させる処理をいう。RTCウェイクアップ機能は、RTC21、RTCメモリおよびEC40に対する入出力回路で構成するRTCウェイクアップ回路24が実行する。RTCウェイクアップ機能がイネーブルになる場合は、待機状態のときにRTCウェイクアップ回路24に電源が供給される。
【0032】
RTCウェイクアップ回路24は、第2のリフレッシュ方法において消失時刻が到来したときにRTCウェイクアップ機能を利用してEC40をウェイクアップさせる。RTCウェイクアップ回路24は、第3のリフレッシュ方法において消失時刻が到来したときにサイドバンド34を通じてリフレッシュ端子39を設定するためのコードを含む。
【0033】
SSD30は、チップ・セット20にシリアル・バス32で接続するインターフェース31、MPU33、MPU33が実行するファームウェアを格納するROM34、RAM35、NAND型のフラッシュ・メモリ37、およびDRAMまたはMRAMで構成したキャッシュ・メモリ36などを含んでいる。SSD30は、DC/DCコンバータ51から電力が供給される。SSD30は、ノートPC10の筐体に収納される内蔵タイプでも、筐体に設けたコネクタで接続された外付けタイプでもよい。
【0034】
MPU33はファームウェアを実行して、フラッシュ・メモリ37に対する読み取り、書き込み、ウェアレベリング(wear leveling)、およびリフレッシュなどを行うコントローラとして機能する。後に説明する第3のリフレッシュ方法を実現するために、SSD30には電源が投入されたときにMPU33が参照してリフレッシュの必要性を判断するためのリフレッシュ端子39を設けることができる。リフレッシュ端子39は、サイドバンド34でRTCクロック回路24に接続され、サイドバンド38で電池ユニット60に接続される。サイドバンド32、38は、電源が停止してそれぞれの基本的な通信経路であるシリアル・バス32またはSM(System Management)バス62を利用した通信ができないときにリフレッシュ信号を送るための通信経路である。
【0035】
RTCクロック回路24または電池ユニット60はリフレッシュ信号を出力して、リフレッシュ端子39を設定することができる。リフレッシュ端子39は、周知のさまざまな回路で構成することができる。一例では、FETでグランドとSSD30の内部電源に接続され、リフレッシュ信号がFETをオンにしたときにグランド電位に遷移し、オフにしたときに電源の電位に遷移する端子とすることができる。リフレッシュ端子39を備えるSSD30のMPU33は、電源が投入されるたびにリフレッシュ端子39を参照して、設定されているときには、CPU11からのアクセスがないアイドル状態のときにリフレッシュを実行することができる。
【0036】
フラッシュ・メモリ37は、
図2に示すように管理領域、予備領域、リフレッシュ領域、およびユーザ領域に論理的に区分されている。管理領域は、ホスト装置がアクセスできない領域で、ホスト装置が指定する論理ブロック・アドレス(LBA)を物理ブロック・アドレス(PBA)に変換するアドレス変換テーブルの他に、ブロック管理テーブル81を格納している。ブロック管理テーブル81は、予備領域、リフレッシュ領域、およびユーザ領域をそれぞれ構成する各ブロックの消去回数、書込日時およびデータ保持時間を記録するテーブルである。
【0037】
ここに消去回数は、データ保持時間を推定するための劣化パラメータに相当する。MPU33は消去回数が増加するたびにブロック管理テーブル81を更新する。MPU33は消去回数に基づいてブロックごとのデータ保持時間を決定しブロック管理テーブル81に書き込むことができる。データ保持時間は、SSD30から受け取った書込回数に基づいてシステムが決定することもできる。その場合はブロック管理テーブル81にデータ保持時間を記録しておく必要はない。
【0038】
フラッシュ・メモリ37では一例として、最小単位が512+16バイトの固定長のページを最小単位として読み書きが行われる。ブロックは任意の数のページの集合として構成することができる。MPU33は、SSD30に電源が投入されるたびにシステムからRTCメモリ23のカレンダ時刻を取得することができる。MPU33は、各ブロックを構成するいずれかのページに、最初にデータ書き込まれたときの書込日時をブロック管理テーブル81に書き込む。
【0039】
予備領域は、不良ページが発生したときの代替記憶領域である。リフレッシュ領域は、リフレッシュの際の新たな書き込み先のブロックとして利用する領域である。SSD30はブート・ドライブで、ユーザ領域にはOS91、アプリケーション93、リフレッシュ・マネージャ95などのプログラムの他にユーザ・データ97が記憶される。リフレッシュ・マネージャ95は、リフレッシュに関する処理をするアプリケーションである。
【0040】
ファームウェアROM15は、BIOSやUEFIといった主として電源起動時のデバイスの初期化や認証などを行うシステム・ファームウェアを格納する。システム・ファームウェアはリセットされたCPU11が必ず最初に実行するプログラムである。後に説明する第1のリフレッシュ方法と第2のリフレッシュ方法において、システム・ファームウェアはリフレッシュのために待機状態のCPU11に電源が投入されたときに、OS91にブート処理を渡す前にSSD30にリフレッシュ・コマンドを送る。
【0041】
EC40は、MPU41、ROM43、RAM45、フラッシュ・メモリ47およびロジック回路49などを含むマイクロ・コンピュータである。EC40はさらに、図示しないDMAコントローラ、割り込みコントローラ、および電池ユニット60に接続するSMバポート、およびチップ・セット20に接続するSPIポートなどを備えている。EC40はCPU11からは独立して動作し、パワー・ステートに応じてDC/DCコンバータ51の動作を制御する。
【0042】
EC40には、DC/DCコンバータ51の制御回路、ユーザが操作するパワー・ボタン53、筐体の開閉を検知するリッド・センサ55、タイマー57、充電器58が接続され、さらにSMバス62およびサイドバンド64で電池ユニット60が接続されている。ROM43はMPU41がリフレッシュをするための消失時刻の判断や電源の起動制御などを行うためのコードを含む。フラッシュ・メモリ47は、
図3に示すリフレッシュ管理テーブル83を格納する。
【0043】
リフレッシュ管理テーブル83は、ブロック番号ごとに消失時刻または残存時間を記録する。MPU41は、システムが待機状態に遷移する際に、毎回、SSD30からブロック管理テーブル81が記憶するブロック番号ごとの書込日時とデータ保持時間を受け取り、RTCメモリ23が記憶するカレンダ時刻に基づいて消失時刻を計算してリフレッシュ管理テーブル83に記憶することができる。
【0044】
MPU41は、SSD30からデータ保持時間を受け取ることができないときは、あらかじめリフレッシュ・マネージャ95を通じて消去回数とデータ保持時間の関係を示すリフレッシュ管理テーブル85を受け取ってフラッシュ・メモリ47に格納しておくことができる。リフレッシュ管理テーブル85は、フラッシュ・メモリやSSDの製造者により提供される。この場合、MPU41はシステムが待機状態に遷移する直前に、毎回、SSD30からブロック管理テーブル81が記憶するブロック番号ごとの書込日時と消去回数を受け取り、リフレッシュ管理テーブル85からデータ保持時間を抽出して、RTCメモリ23が記憶するカレンダ時刻に基づいて消失時刻を計算することができる。
【0045】
EC40は待機状態でロジック回路49を除いて電力が停止する。タイマー57は、EC40に比べて消費電力は小さい。タイマー57は第1のリフレッシュ方法において、待機状態で常時電力を供給して利用する。MPU41は、待機状態に入る直前にタイマー57に動作時間を設定する。タイマー57は、待機状態のときにMPU41が設定した動作時間を計時してロジック回路49にタイムアップ信号を出力する。ロジック回路49は第1のリフレッシュ方法において、待機状態のときにタイマー57のタイムアップ信号を受け取ってDC/DCコンバータ51を制御し、EC40に電源を供給してウェイクアップさせる。タイマー57の精度が十分に確保できないときは、待機状態に遷移する前にEC40がシステム・クロックを利用してタイマー57をキャリブレーションすることができる。
【0046】
ロジック回路49は第2のリフレッシュ方法において、待機状態のときにサイドバンド64を通じて電池ユニット60からウェイクアップ信号を受け取ったときにDC/DCコンバータ51を制御してEC40をウェイクアップさせることができる。またロジック回路49は第2のリフレッシュ方法において、待機状態のときにRTCウェイクアップ回路24からウェイクアップ信号を受け取ったときにDC/DCコンバータ51を制御してEC40をウェイクアップさせることができる。
【0047】
ロジック回路49は、待機状態の時にパワー・ボタン53の押下またはリッド・センサ55の動作を検出してDC/DCコンバータ51を制御し、ノートPC10をパワー・オン状態に遷移させる。DC/DCコンバータ51は電池ユニット60または図示しないAC/DCアダプタから電力の供給を受けて複数の安定した電圧に変換する。DC/DCコンバータ51はパワー・ステートに対応するように複数の系統に別れており、SSD30を含むノートPC10の各デバイスに電力を供給する。MPU41は、SMバスを通じてMPU61から電池セル69の充電状態に関連するデータを取得し、充電器58の動作を制御する。充電器58は、AC/DCアダプタが供給する電力で電池ユニット60を充電する。
【0048】
電池ユニット60は、AC/DCアダプタが接続されていないときにDC/DCコンバータ51に電力を供給する。電池ユニット60は、MPU61、保護回路63、ROM65、タイマー67、電池セル69、および電池セル69の充放電経路となる入出力回路71などを含んでいる。電池ユニット60は、ノートPC10に内蔵してもよいし電池パックとして電池ベイに装着するようにしてもよい。電池ユニット60はサイドバンド38でリフレッシュ端子39に接続される。
【0049】
ROM65は、第2のリフレッシュ方法において残存時間が到来したときにサイドバンド64を通じてEC40をウェイクアップさせるコードを含む。ROM65は、第3のリフレッシュ方法において残存時間が到来したときにサイドバンド38を通じてリフレッシュ端子39を設定するためのコードを含む。EC40はバスマスタとなって、電池ユニット60と定期的に通信して電池セル69の電圧、残容量およびセル温度などの状態を監視して充電器58に充電パラメータの設定をする。
【0050】
[第1のリフレッシュ方法]
図4は、ノートPC10が第1のリフレッシュ方法を実行する手順を説明するためのフローチャートである。ブロック101でノートPC10は、パワー・オン状態に遷移しており、CPU11はSSD30にデータを書き込む。SSD30のMPU33は、電源投入時およびその後随時RTC21が計時した時刻情報をシステムから取得して電源が投入されている間は内部で経過時間を計時して時刻情報を生成することができる。SSD30は、パワー・オン状態の間は周知のリテンション・チェックを利用してデータを保持することができる。
【0051】
ブロック103でMPU33は、いずれかのブロックが消去されるたびに、ブロック管理テーブル81の当該ブロックに関する消去回数を1ずつ増加するように更新する。ブロックの消去は、新たなデータの書き込み、リテンション・チェック、リフレッシュまたはウェアレベリングなどによって発生する。MPU33は、消去されたブロックが含むいずれかのページに最初にデータが書き込まれた日時を書込日時としてブロック管理テーブル81に記録する。
【0052】
MPU33は自らが消去回数からデータ保持時間を抽出できる場合は、いずれかのブロックの消去回数を更新したときに、必要に応じてブロック管理テーブル81が記憶する当該ブロックのデータ保持時間を更新する。ブロック105でパワー・ボタン53の押下、リッド・センサ55の動作、図示しないキーボードの操作または設定されたアイドル時間の経過などにより待機状態に遷移するための待機イベントが生成されOS91に通知される。
【0053】
OS91は実行中のアプリケーション93、リフレッシュ・マネージャ95、デバイス・ドライバおよびEC40に待機イベントを送る。ブロック107で待機イベントを受け取ったEC40は、CPU11に割り込みをかけてリフレッシュ・マネージャ95にSSD30からブロック管理テーブル81が記憶する、消失時刻または残存時間を計算するための基礎データを取得するように要求する。リフレッシュ・マネージャ95は、ブロック管理テーブル81がデータ保持時間を記憶する場合は、基礎データとしてブロック番号とそれに対応する書込日時およびデータ保持時間を取得する。
【0054】
リフレッシュ・マネージャ95は、ブロック管理テーブル81がデータ保持時間を記憶していない場合は、基礎データとしてブロック番号とそれに対応する消去回数および書込日時を取得する。ブロック109でMPU41はリフレッシュ・マネージャ95から受け取った基礎データを必要に応じてフラッシュ・メモリ47に記憶する。MPU41はブロック番号ごとの書込日時とデータ保持時間から消失時刻または残存時間を計算して、リフレッシュ管理テーブル83を更新する。MPU41はSSD30からデータ保持時間を受け取らない場合は、リフレッシュ管理テーブル85を参照して消去回数に基づいてデータ保持時間を計算してからブロック番号ごとの消失時刻または残存時間を計算する。
【0055】
この時点ではシステムの電源はまだ維持されているが、待機状態に遷移するとCPU11およびSSD30の電源は停止しそれぞれのパワー・ステートに応じた最小限のデバイスにだけ電力が供給される。電源が停止したSSD30は経過時間を計時することができないため、消失時刻または残存時間を管理することができない。フラッシュ・メモリ37のデータ消失を防止するためにはSSD30に代わってホスト装置が残存時間を管理する必要があるが待機状態で消費電力が増大することは好ましくない。また、ハードウェアの変更も最小限に留めることが望ましい。
【0056】
MPU41は、更新されたリフレッシュ管理テーブル83において最も消失時刻が早い(残存時間が短い)ブロックを抽出してリフレッシュ・フラグを設定する。リフレッシュ・フラグは、消失時刻の早い順に抽出した複数のブロックに対して設定してもよい。ブロック111でMPU41は、電池ユニット60のMPU61に現在のカレンダ時刻からの経過時間を計時するように要求する。あるいは、MPU41は現在のカレンダ時刻と消失時刻から計算した残存時間の残り時間を計時するように要求する。さらに、MPU41はこのとき必要に応じて、残存時間を監視するために、タイマー57にEC40がウェイクアップするまでの時間を設定することができる。
【0057】
EC40は電池ユニット60に経過時間の計時動作を開始させ、必要に応じてタイマー57を設定してから、OS91に待機状態への準備完了の通知をする。OS91はすべてのハードウェアおよびプログラムが待機状態への遷移の準備が完了したことを確認すると、ブロック113でEC40に指示して遷移先のパワー・ステートに応じたデバイスの電源を停止させシステムを待機状態に遷移させる。
【0058】
電池ユニット60のMPU61はタイマー67を動作させて待機状態に遷移してからの経過時間の計時をする。待機状態でも自然放電で電池セル69の残存容量は低下する。電池ユニット60は、システムが待機状態であっても電池セル69の充電状態を管理して必要に応じてEC40に充電の要求をする必要がある。電池セル69は待機状態でもMPU61や保護回路63に電力を供給するため、消失時刻を計時するために電池ユニット60の消費電力はほとんど増加しない。
【0059】
EC40は、待機状態の間に電池セル69の残存容量が低下したときに充電器58を動作させて充電する必要がある。タイマー57は、待機状態のときにMPU41がMPU61と通信して電池セル69の残存容量を確認できるように定期的にタイムアップ信号を送ってEC40をウェイクアップさせる。EC40はブロック115で、残存容量の確認のためにウェイクアップしたときに、ブロック117で電池ユニット60が計時した待機状態に遷移してからの経過時間または残存時間の残り時間を確認してリフレッシュの必要性を判断する。残存容量の確認のためにウェイクアップする一定の周期が、リフレッシュの必要性を管理するための周期として利用できない場合は、EC40は先にブロック111でタイマー57に残存時間の確認のために設定した動作時間でウェイクアップすることができる。
【0060】
ブロック117でEC40は、リフレッシュ管理テーブル83にリフレッシュ・フラグが設定された最も早い消失時刻が到来していないと判断したときは、必要に応じてタイマー57にウェイクアップまでの新たな時間を設定してから、自らの電源を停止してブロック113に戻る。新たなウェイクアップまでの時間は、残存時間が少なくなるにしたがって短くなるように設定してもよいし一定でもよい。EC40は消失時刻が到来したと判断したときに、ブロック119でDC/DCコンバータ51を制御して所定のデバイスに電力を供給する。このとき、EC40はフラッシュ・メモリ47にCPU11のリセットの原因がリフレッシュであることをシステム・ファームウェアに通知するためのフラグを設定する。
【0061】
所定のデバイスは、SSD30にリフレッシュ・コマンドを送るために必要な最低限の範囲に留めることが望ましい。したがって、CPU11、システム・メモリ13、ファームウェアROM15、チップ・セット20の一部およびSSD30には電力を供給するが、図示しないディスプレイ、オーディオ・デバイス、および通信デバイスなどには電力を供給する必要がない。
【0062】
電源が投入されると、リセットされたCPU11はシステム・メモリ13にシステム・ファームウェアをロードして実行する。システム・ファームウェアはブロック121で、必要なデバイスの初期化をしてからフラッシュ・メモリ47のリセット原因を示すフラグを確認する。システム・ファームウェアはOSのロードをしないで自らおよびファームウェア・アプリケーションからのSSD30に対するアクセスを停止する。ブロック123でシステム・ファームウェアは、シリアル・バス32を通じてSSD30にリフレッシュ・コマンドを送ってSSD30からのリフレッシュ完了通知を待つ。リフレッシュ・コマンドは本実施の形態において定義するユニークなコマンドである。
【0063】
システム・ファームウェアはOSがブートする前にSSD30へのアクセスを停止して、リフレッシュ・コマンドを送ることができるため、SSD30は電源が起動してから短時間でリフレッシュを開始することができる。リフレッシュ・コマンドは、ノートPC10のブートが完了してからリフレッシュ・マネージャ95が送るようにしてもよいが、OSがブートしている間はSSD30へのアクセスを停止することができず、また、OSのブートが完了するまで長い時間を費やすので、リフレッシュ・コマンドはシステム・ファームウェアが送った方が待機電力とリフレッシュの完了までの時間の観点で有益である。
【0064】
システム・ファームウェアは、リフレッシュ管理テーブル83を参照して、リフレッシュ・コマンドのパラメータにリフレッシュ・フラグが設定されているブロックのブロック番号を設定する。さらにシステム・ファームウェアは、リフレッシュ・コマンドに、データが書き込まれているすべてのブロックをリフレッシュするようにパラメータを設定してもよい。ブロック125でMPU33はリフレッシュ・コマンドを実行して、指定されたブロックまたはすべてのブロックをリフレッシュする。
【0065】
リフレッシュが終了したSSD30は、ブロック管理テーブル81を更新すると、ブロック127でシステム・ファームウェアにリフレッシュ完了通知をする。システム・ファームウェアはブート処理をOSに渡さないで、EC40に指示してシステムをふたたび待機状態に戻す。上記手順では、タイマー57による計時動作も、電池ユニット60による計時動作も待機状態での消費電力をほとんど増加させない。
【0066】
また、EC40はSMバス62を通じて電池ユニット60が計時する経過時間を監視することができ、システム・ファームウェアはシリアル・バス32を通じてSSD30にリフレッシュ・コマンドを送ることができるためハードウェアを変更する必要がない。さらにシステム・ファームウェアがリフレッシュ・コマンドを送っているため、リフレッシュのためにシステムが消費する電力は最小限の範囲に留めることができる。ブロック115で、電池ユニット60が計時する経過時間を監視する例を説明したが、EC40はウェイクアップしたときにRTCウェイク回路24を通じてカレンダ時刻を取得し、リフレッシュ管理テーブル83を参照して消失時刻の到来を判断することもできる。
【0067】
[第2のリフレッシュ方法]
第1のリフレッシュ方法では、EC40がタイマー57で一時的にウェイクアップして電池ユニット60が計時する残存時間またはRTCウェイク回路24のカレンダ時刻を確認したときにリフレッシュの必要がなく、再び待機状態に戻る動作をすることが多くなる。第2のリフレッシュ方法は、システム・ファームウェアがシリアル・バス32を通じてリフレッシュ・コマンドを送る点では第1のリフレッシュ方法と同じであるが、待機状態のときにEC40をタイマー57でウェイクアップさせないでリフレッシュが必要なときにだけウェイクアップさせる。
【0068】
第2のリフレッシュ方法の1つの態様では、EC40と電池ユニット60の間に新たに設けたサイドバンド64を利用する。第2のリフレッシュ方法の手順は、
図4のブロック111からブロック117までの手順に代えて行う。EC40は電池ユニット60に消失時刻までの残存時間を設定してからシステムを待機状態に遷移させEC40の電源を停止する。待機状態の間EC40はリフレッシュの必要性を確認するためにタイマー57でウェイクアップしない。
【0069】
MPU61は、設定された残存時間が到来すると、サイドバンド64を経由してロジック回路49にウェイクアップ信号を送り、EC40をウェイクアップさせる。それ以降は、
図4のブロック119以降の手順と同じである。この場合、EC40が無駄にウェイクアップすることによって待機電力が増加しない。第2のリフレッシュ方法の他の態様ではEC40は、待機状態に遷移する前にRTCメモリ23に消失時刻を設定する。待機状態で設定時刻が到来すると、RTCウェイクアップ回路24は設定された消失時刻でEC40をウェイクアップさせる。この場合は、RTCウェイクアップ機能がディスエーブルのときでも待機状態でRTCウェイクアップ回路に電源を供給する必要があるがハードウェアを変更する必要はない。
【0070】
[第3のリフレッシュ方法]
第1のリフレッシュ方法と第2のリフレッシュ方法は、いずれも、SSD30にリフレッシュ・コマンドを送ってリフレッシュするため、SSD30についてはファームウェアの変更をするだけで実現できる。ただし、リフレッシュ・コマンドを送る際に、CPU11、システム・メモリ13およびチップ・セット20などに電力を供給する必要がある。第3のリフレッシュ方法では、リフレッシュ・コマンドに代えてサイドバンド34、38を通じてリフレッシュ信号を送る。SSD30にはリフレッシュ信号で設定するリフレッシュ端子39を設ける。第3のリフレッシュ方法の手順は、
図4のブロック111からブロック119までの手順に代えて行う。
【0071】
第3のリフレッシュ方法では、第2のリフレッシュ方法と同じように電池ユニット60またはRTCウェイク回路24が待機状態の間に経過時間または消失時刻を計時する。そして消失時刻が到来したときにEC40をウェイクアップさせる。EC40は、DC/DCコンバータ51を動作させて、第1のリフレッシュ方法および第2のリフレッシュ方法とは異なって、SSD30にだけ電源を供給する。つづいて、電池ユニット60またはRTCウェイク回路24は、サイドバンド38またはサイドバンド34を経由してリフレッシュ信号を送りリフレッシュ端子39を設定する。電源が投入されたSSD30は、MPU33がリフレッシュ端子39を参照してリフレッシュを実行する。
【0072】
これまで、SSDが搭載するフラッシュ・メモリ37のリフレッシュを行う方法を説明したが、本発明はシステムが待機状態のときに書込時刻からの経過時間を計測できない他のフラッシュ・メモリに適用することもできる。一例として本発明はHDDのキャッシュ・メモリに適用することができる。HDDのライトバック・キャッシングでは、書き込みが完了した時点でフラッシュ・メモリにだけデータが存在する。
【0073】
フラッシュ・メモリが記憶するデータは、システムがアイドル状態のときに所定のアルゴリズムに基づくタイミングでHDDに書き込まれる。劣化が進行したフラッシュ・メモリにライトバック・キャッシングを採用すると、フラッシュ・メモリが記憶するデータをフラッシュ・メモリに書き込んでから待機状態に遷移した場合に、消失時刻が経過する傾向が顕著になるため、本発明を適用してデータが消失する前にキャッシュをリフレッシュすることが有効である。
【0074】
この場合のキャッシュ・メモリはHDDに内蔵してもよいし外部に設けてもよい。キャッシュ・メモリをHDDの外に設けて独立したインターフェースでチップ・セット20に接続する場合は、チップ・セット20に内蔵したキャッシュ・コントローラがリフレッシュをすることができる。また、NAND型のフラッシュ・メモリを例示して説明したが、本発明はNOR型のフラッシュ・メモリに適用することもできる。さらに、EPROMまたは強誘電体メモリのような劣化が進行したセルのデータを保持するためにリフレッシュが必要な不揮発性メモリ一般に適用することができる。さらに本発明は、コンピュータだけでなく、フラッシュ・メモリが接続され待機状態に遷移するホスト装置全般に適用することができる。
【0075】
これまで本発明について図面に示した特定の実施の形態をもって説明してきたが、本発明は図面に示した実施の形態に限定されるものではなく、本発明の効果を奏する限り、これまで知られたいかなる構成であっても採用することができることはいうまでもないことである。