説明

不揮発性メモリ・キャッシュの性能改善

【課題】 より効率的な永続的記憶装置を提供すること。
【解決手段】 1つまたは複数の長期記憶媒体を不揮発性メモリと一緒にする。一実施形態では、不揮発性メモリの一部が、長期記憶媒体に対する書込みおよび読取りのための書込みバッファおよび読取りキャッシュとして使用される。不揮発性メモリの書込みバッファおよび読取りキャッシュとしての使用を制御するためにインターフェースが設けられる。さらに、不揮発性メモリの一部が、長期記憶媒体の指定のセクタに関する直接マッピングを実現するように使用される。永続的記憶装置に関する記述データが、不揮発性メモリの別の部分に格納される。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は一般にはコンピュータ・システムに関し、より詳細には、不揮発性メモリを長期記憶装置と共に使用することによってコンピュータ・システムの性能を改善することに関する。
【背景技術】
【0002】
コンピュータ・システムを機能させるための永続的メモリを実現するために、いくつかの記憶装置がコンピュータ・システム上で使用される。例えば、磁気ハードディスク・ドライブ・アセンブリが当技術分野で周知である。しかし、そのような永続的メモリはいくつかの欠点を有する。磁気ハード・ドライブがデータの読取りまたは書込みを行うよう準備するのに時間がかかる。そのようにするために、ほとんどの場合、物理的にディスクのスピニングを開始し、読取り/書込みヘッドを適切な位置の上に位置決めすることが必要である。
【発明の概要】
【発明が解決しようとする課題】
【0003】
記憶装置からの読取りまたは書込みの準備は時間と電力を消費する。加えて、そのような磁気ハード・ドライブ・メモリおよびその構成要素によってノイズが発生する可能性がある。したがって、こうした欠点のいくつかを改善する、コンピュータ・システム用の改良型メモリが求められている。
【0004】
永続的記憶装置の新しい組成および構成は、記憶装置に関する性能を一部改善することができる。しかし、永続的記憶装置にアクセスする従来の技法を単に用いるだけでは、そのような新しい組成または構成が有する十分な利点が得られない。一般に、コンピュータ・システムのオペレーションを制御するのにオペレーティング・システムが使用される。オペレーティング・システムはまた、コンピュータ・システム内の他のアプリケーションとハード・ディスクの間を仲介する。したがって、高い性能を実現するアプリケーション・プログラミング・インターフェース(API)などの方法に対するニーズが存在する。同様に、コンピュータ・システムで使用する記憶装置のための新しい構成および新しい制御技法を生み出すシステムに対するニーズが存在する。
【課題を解決するための手段】
【0005】
不揮発性メモリと共に1つまたは複数の長期記憶媒体が含まれる永続的記憶装置が、アプリケーションプログラム・インターフェース、コマンド、および割込みを提供し、またはそれに応答するオペレーティング・システムと共に使用され、オペレーティング・システムまたはアプリケーション・プログラムが、性能時間および効率を向上させるために、不揮発性メモリを効果的に使用することを可能にする。不揮発性メモリが物理的に長期記憶媒体に含まれることが企図されるが、不揮発性メモリが長期ストレージ媒体と別々であっても長期ストレージ媒体と共に機能して永続的ストレージを実現することも可能である。
【0006】
一実施形態では、長期記憶媒体をスピン・アップ(spin up)またはスピン・ダウン(spin down)する要求を可能にするアプリケーション・プログラム・インターフェース(API)が公開される。別のAPIは、不揮発性メモリがフラッシュされること要求すること、または不揮発性メモリが長期記憶媒体の指定のアドレスからデータを取り込むことを要求すること、を可能にする。さらに別のAPIは、長期記憶媒体にデータを直接書き込むことを可能にし、データをアトミック書込みとして書き込むことを可能にし、または不揮発性メモリ・キャッシュに書き込まれたデータを、長期記憶媒体に書き込むために保存するのではなく、無視することを可能にする。さらに、そのような記憶媒体にとって利用可能な既存の不揮発性メモリについての詳細を見つけ、それを与えるための要求も提供される。
【0007】
一実施形態では、2つの方式のうちの一方で不揮発性メモリを使用することができる。第1の方式では、キャッシュが不揮発性メモリ内に設けられる。このキャッシュは長期記憶媒体からデータを読み取るための読取りキャッシュとして使用され、長期記憶媒体に書き込まれるデータのための書込みバッファとしても使用される。この方法では、長期記憶媒体への読取りおよび書込みは、散発的に行う代わりに、一緒にまとめる(クラスター化する)ことができ、長期記憶媒体からの読取り、長期記憶媒体への書込み、および長期記憶媒体の特徴である準備、により少ない時間しか必要としなくなる。
【0008】
不揮発性メモリの一部をオペレーティング・システムまたは他のアプリケーションで直接所有することができる。長期記憶媒体からのいくつかの論理セクタ・アドレス(LSA)が、不揮発性メモリにマッピングされ、そのLSAからの読取りおよびそのLSAへの書込みは、不揮発性メモリに対して実施される。このマッピングは、上述の不揮発性メモリ部分内のキャッシングと同時に行うことができる。
【0009】
本発明の他の特徴を以下で説明する。
【0010】
好ましい実施形態の上述の「課題を解決するための手段」ならびに以下の詳細な説明は、添付の図面と共に読むときにより良く理解できる。本発明を例示するために、本発明の例示的構成を図面に示す。しかし、本発明は、開示の特定の方法および手段に限定されない。
【図面の簡単な説明】
【0011】
【図1】本発明が常駐する例示的コンピュータ・システムを一般的に示すブロック図である。
【図2】本発明を実装することのできる場所を一般に示す、図1の例示的コンピュータ・システムのブロック図である。
【図3】本発明の一態様による永続的記憶装置のブロック図である。
【図4】本発明の一態様による永続的記憶装置のブロック図である。
【図5】本発明の一実施形態によるオペレーティング・システム、不揮発性メモリ、および長期記憶媒体の間のデータの流れを示すブロック図である。
【図6】本発明の一実施形態による不揮発性メモリのキャッシュ部分の状態の状態図である。
【図7】本発明の一実施形態によるブート状態のオペレーションの流れ図である。
【図8】本発明の一実施形態による動作状態でのオペレーションの流れ図である。
【図9】本発明の一実施形態によるシャット・ダウン状態でのオペレーションの流れ図である。
【図10】本発明の一実施形態による不揮発性メモリのマッピング部分のフラッシュ中のオペレーションの流れ図である。
【発明を実施するための形態】
【0012】
以下の説明では、固体不揮発性メモリを指すのに「NVメモリ」という用語を用いる。NVメモリは、電源が落とされたときにそのデータを保持し続け、消去することができ、および新しいデータで再プログラムすることができる任意のタイプのメモリを意味する。NVメモリは、バッテリ・バックアップ・メモリを含むことができる。NVメモリは、パーソナル・コンピュータ・スロット・カードやシステム・メモリ内の構成要素などの、コンピュータの別々の構成要素としてコンピュータ内に配置することができる。あるいは、NVメモリは、ノートブック装置のドッキング・ステーション内などのハード・ドライブなどの永続的記憶装置の構成要素でよい。モバイル・システム上では、ディスク・ドライブが有するトラック・バッファを使用することができる(すなわち、本発明はトラック・バッファ・メモリを使用して実装することもできる)。
【0013】
モバイル・システム向けの将来のディスクは、ディスクのスピニングを保つための電力を電池から実際に取り出さずに、そのメモリを活動状態(alive)に維持するための電力を電池から得ることができる。NVメモリは、ファイル・データ、ファイル・メタデータ、ならびにブート・セクタやパーティション・テーブルなどの周知のディスク・セクタを格納することができる。パワー・ダウン中または休止モード(hibernate mode)に入っている間、コンピュータ・システムは、以前の使用履歴に基づいて、NVメモリに格納すべき静的および動的構成データを決定する。ディスク・ドライブをスピン・アップする回数を低減するために、データは、システム・オペレーション中に、NVメモリに格納される。モバイルPCなどでは、ディスク・ドライブをスピン・アップする回数を低減することは、電力が削減され、それによってより小型かつ軽量のモバイルPCが可能とし、それらが、所与の電池容量に対してより長く持続することになるので、ユーザ体験を向上させる。また、音が大きく、ユーザにとって不快な、騒音を出す高速ファンを動作させる必要性も低減する。
【0014】
図面を参照すると、同様の参照番号は同様の要素を指しており、本発明が適切なコンピューティング環境で実装されているものとして示されている。必須ではないが、コンピュータによって実行される、プログラム・モジュールなどの、コンピュータ実行可能命令の一般的なコンテクストで本発明を説明する。一般に、プログラム・モジュールは、特定のタスクを実行し、または特定の抽象データ・タイプを実装するルーチン、オブジェクト、コンポーネント、データ構造などを含む。さらに、ハンドヘルド装置、マルチ・プロセッサ・システム、マイクロ・プロセッサ・ベースの、またはプログラム可能な消費者向け電子機器、ネットワークPC、ミニ・コンピュータ、メインフレーム・コンピュータなどを含むその他のコンピュータ・システム構成を用いて本発明を実施できることを当業者は理解されよう。本発明はまた、通信ネットワークを介してリンクされるリモート処理装置によってタスクが実行される分散コンピューティング環境でも実施することができる。分散コンピューティング環境では、プログラム・モジュールは、ローカル・メモリ記憶装置とリモート・メモリ記憶装置の両方にも位置することができる。
【0015】
図1に、本発明を実装することのできる適切なコンピューティング・システム環境100の一例を示す。コンピューティング・システム環境100は、適切なコンピューティング環境の一例にすぎず、本発明の使用法または機能の範囲に関して何らかの制限を示唆するものではない。例示的動作環境100に図示する構成要素のうちのいずれか1つ、あるいはそれらの組合せに関する何らかの依存関係または要件を、コンピューティング環境100が有すると解釈すべきでもない。
【0016】
本発明は、他の多数の汎用または特殊目的コンピューティング・システム環境または構成で動作可能である。本発明と共に使用するのに適した周知のコンピューティング・システム、環境、および/または構成の例には、限定はしないが、パーソナル・コンピュータ、サーバ・コンピュータ、ハンドヘルドまたはラップトップ装置、マルチ・プロセッサ・システム、マイクロ・プロセッサ・ベースのシステム、セットトップボックス、プログラム可能消費者向け電子機器、ネットワークPC、ミニ・コンピュータ、メインフレーム・コンピュータ、ならびに上記のシステムまたは装置のいずれかを含む分散コンピューティング環境など、が含まれる。
【0017】
本発明は、コンピュータによって実行される、プログラム・モジュールなどのコンピュータ実行可能命令の一般的なコンテクストで説明することができる。一般に、プログラム・モジュールは、特定のタスクを実行し、または特定の抽象データ・タイプを実装するルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含む。本発明はまた、通信ネットワークを介してリンクされるリモート処理装置によってタスクが実行される分散コンピューティング環境でも実施することができる。分散コンピューティング環境では、プログラム・モジュールは、メモリ記憶装置を含む、ローカル・コンピュータ記憶媒体とリモート・コンピュータ記憶媒体の両方に位置することができる。
【0018】
図1を参照すると、本発明を実装する例示的システムは、コンピュータ110の形態の汎用コンピューティング装置を含む。コンピュータ110の構成要素には、限定はしないが、処理装置120と、システム・メモリ130と、システム・メモリを含む様々なシステム構成要素を処理装置120に結合するシステム・バス121とを含めることができる。システム・バス121は、メモリ・バスまたはメモリ・コントローラと、周辺バスと、様々なバス・アーキテクチャのうちのいずれかを用いるローカル・バスとを含むいくつかのタイプのバス構造のうちのいずれでもよい。例えば、限定はしないが、このようなアーキテクチャには、ISA(Industry Standard Architecture)バス、MCA(Micro Channel Architecture)バス、EISA(Enhanced ISA)バス、VESA(Video Electronics Standards Association)ローカル・バス、およびメザニン・バスとも呼ばれるPCI(Peripheral Component Interconnect)バスが含まれる。
【0019】
コンピュータ110は、一般に様々なコンピュータ可読媒体を含む。コンピュータ可読媒体は、コンピュータ110がアクセス可能である入手可能などんな媒体でもよく、それには揮発性媒体と不揮発性媒体、取外し可能媒体と取外し不能媒体のどちらも含まれる。例えば、限定はしないが、コンピュータ可読媒体は、コンピュータ記憶媒体および通信媒体を含むことができる。コンピュータ記憶媒体には、コンピュータ可読命令、データ構造、プログラム・モジュール、または他のデータなどの情報を格納するための何らかの方法または技術で実装される、揮発性媒体と不揮発性媒体、取外し可能媒体と取外し不能媒体のどちらも含まれる。コンピュータ記憶媒体には、限定はしないが、RAM、ROM、EEPROM、フラッシュ・メモリ、または他のメモリ技術、CD−ROM、デジタル・バーサタイル・ディスク(DVD)、または他の光ディスク・ストレージ、磁気カセット、磁気テープ、磁気ディスク・ストレージ、または他の磁気記憶装置、あるいは、所望の情報を格納するのに使用することができ、コンピュータ110でアクセスすることができる他のどんな媒体も含まれる。通信媒体は一般に、コンピュータ可読命令、データ構造、プログラム・モジュール、または他のデータを、搬送波または他の移送機構などの被変調データ信号で実施し、その通信媒体にはどんな情報送達媒体も含まれる。「被変調データ信号」という用語は、その特性集合のうちの1つまたは複数を有する信号、または情報をその中に符号化するように変化する信号を意味する。例えば、限定はしないが、通信媒体には、有線ネットワークまたはダイレクト・ワイヤード接続などの有線媒体、ならびに音響媒体、RF媒体、赤外線媒体、他のワイヤレス媒体などのワイヤレス媒体が含まれる。上記のいずれの組合せもコンピュータ可読媒体の範囲内に含まれるべきである。
【0020】
システム・メモリ130は、読取り専用メモリ(ROM)131やランダム・アクセス・メモリ(RAM)132などの揮発性メモリおよび/または不揮発性メモリの形態のコンピュータ記憶媒体を含む。起動中などにコンピュータ110内の要素間で情報を転送する助けになる基本ルーチンを含む基本入出力システム(BIOS)133が、一般にROM131内に格納される。RAM132は一般に、処理装置120が、即座にアクセス可能であり、かつ/または処理装置120によってその上で現在操作されているデータおよび/またはプログラム・モジュールを含む。例えば、限定はしないが、図1にオペレーティング・システム134、アプリケーション・プログラム135、他のプログラム・モジュール136、およびプログラム・データ137を示す。
【0021】
コンピュータ110はまた、他の取外し可能/取外し不能な、揮発性/不揮発性コンピュータ記憶媒体も含むことができる。単なる一例であるが、図1に、取外し不能不揮発性磁気媒体を読み書きするハードディスク・ドライブ141と、取外し可能不揮発性磁気ディスク152を読み書きする磁気ディスク・ドライブ151と、CD−ROMまたは他の光媒体などの取外し可能不揮発性光ディスク156を読み書きする光ディスク・ドライブ155とを示す。例示的動作環境で使用することのできる他の取外し可能/取外し不能な揮発性/不揮発性コンピュータ記憶媒体には、限定はしないが、磁気テープ・カセット、フラッシュ・メモリ・カード、デジタル・バーサタイル・ディスク、デジタル・ビデオテープ、固体RAM、固体ROMなどが含まれる。ハードディスク・ドライブ141は一般に、インターフェース140などの取外し不能メモリ・インターフェースを介してシステム・バス121に接続され、磁気ディスク・ドライブ151および光ディスク・ドライブ155は一般に、インターフェース150などの取外し可能メモリ・インターフェースによってシステム・バス121に接続される。
【0022】
上記で議論し、図1に図示するドライブとその関連するコンピュータ記憶媒体は、コンピュータ110に対してコンピュータ可読命令、データ構造、プログラム・モジュール、および他のデータの記憶を実現する。例えば図1では、ハードディスク・ドライブ141がオペレーティング・システム144、アプリケーション・プログラム145、他のプログラム・モジュール146、およびプログラム・データ147を格納するものとして図示している。これらのコンポーネントは、オペレーティング・システム134、アプリケーション・プログラム135、他のプログラム・モジュール136、およびプログラム・データ137と同じであっても、異なっていてもよいことに留意されたい。オペレーティング・システム144、アプリケーション・プログラム145、他のプログラム・モジュール146、およびプログラム・データ147には、少なくともこれらが相異なるコピーであることを示すために異なる符号を付けてある。ユーザは、キーボード162や、一般にマウス、トラック・ボール、またはタッチパッドと呼ばれるポインティング・デバイス161などの入力装置を介して、コマンドおよび情報をコンピュータ110に入力することができる。他の入力装置(図示せず)には、マイクロフォン、ジョイスティック、ゲーム・パッド、サテライト・ディッシュ、スキャナなどを含めることができる。これらの入力装置や他の入力装置はしばしば、システム・バスに結合されるユーザ入力インターフェース160を介して処理装置120に接続されるが、パラレル・ポート、ゲームポート、またはユニバーサル・シリアル・バス(USB)などの他のインターフェースおよびバス構造によって接続することもできる。モニタ191または他のタイプのディスプレイ装置もまた、ビデオ・インターフェース190などのインターフェースを介してシステム・バス121に接続される。モニタに加えて、コンピュータはまた、スピーカ197やプリンタ196などの他の周辺出力装置も含むことができ、それらは、出力周辺インターフェース195を介して接続することができる。
【0023】
コンピュータ110は、リモート・コンピュータ180などの1つまたは複数のリモート・コンピュータへの論理接続を使用して、ネットワーク環境で動作する(operate)ことができる。リモート・コンピュータ180は、別のパーソナル・コンピュータ、サーバ、ルータ、ネットワークPC、ピア装置、または他の共通ネットワーク・ノードでよく、一般に、パーソナル・コンピュータ110に関して上記で述べた要素のうちの多数またはすべてを含むが、図1にはメモリ記憶装置181だけを示してある。図1に示す論理接続は、ローカル・エリア・ネットワーク(LAN)171および広域ネットワーク(WAN)173を含むが、他のネットワークも含むことができる。このようなネットワーキング環境は、オフィス、事業体全体のコンピュータ・ネットワーク、イントラネット、およびインターネットで一般的なものである。
【0024】
LANネットワーキング環境で使用する際、パーソナル・コンピュータ110は、ネットワーク・インターフェース/アダプタ170を介してLAN171に接続される。WANネットワーキング環境で使用する際、コンピュータ110は一般に、インターネットなどのWAN173を介して通信を確立するためのモデム172または他の手段を含む。モデム172は内蔵でも外付けでもよく、ユーザ入力インターフェース160、または他の適切な機構を介してシステム・バス121に接続することができる。ネットワーク環境では、パーソナル・コンピュータ110に関して示したプログラム・モジュールまたはその一部を、リモート・メモリ記憶装置内に格納することができる。例えば、限定はしないが、図1に、リモート・アプリケーション・プログラム185がメモリ装置181上に常駐するものとして示す。図示するネットワーク接続は例示的なものであって、コンピュータ間の通信リンクを確立する他の手段も使用できることを理解されよう。
【0025】
以下の説明では、別段の指示がない限り、1つまたは複数のコンピュータで実行される動作とオペレーションの象徴的表現とを参照しながら本発明を説明する。したがって、「コンピュータで実行される」として引用される、そうした動作(act)およびオペレーションが、コンピュータの処理装置による、構造化された形式のデータを表す電気信号の操作(manipulation)を含むことを理解されよう。この操作は、データを変換し、またはコンピュータのメモリ・システム内の位置にデータを維持し、それにより、当業者に良く理解されている方式で、コンピュータのオペレーションが再構成または変更される。データを維持するデータ構造は、データのフォーマットによって定義される特定の特性を有するメモリの物理位置である。しかし、本発明を上記の状況で説明するが、それは限定的であることを表すものではなく、以下で説明する様々な動作(act)およびオペレーションをハードウェアでも実装できることを当業者は理解されよう。
【0026】
コンピュータ110内へのNVメモリの包含
次に図2を参照すると、NVメモリ200を、pcスロットに挿入されるカードなどのコンピュータ110の別々の構成要素202として、またはシステム・メモリ内の構成要素204としてコンピュータ110内に配置することができる。あるいは、NVメモリ200は、ノートブック装置のドッキング・ステーション内などの、ハード・ドライブ141などの永続的記憶装置300の構成要素206でもよい。NVメモリ200の別の代替位置は、CompactFlash Associationによって維持されるCompactFlash仕様によるものなど、コンピュータ・システムにプラグ接続することができる取外し可能固体不揮発性メモリ装置の形態などでよい。別々の構成要素202としてのNVメモリ200は、NVメモリ200を有さないレガシー・システムの性能を、NVメモリを有するハード・ドライブを導入することなく、向上させることを可能にする。
【0027】
次に図3を参照すると、永続的記憶装置300は、1つまたは複数のディスク304などの不揮発性メモリ記憶媒体(長期記憶媒体)、ディスク304を読み書きする読取り/書込みヘッド306、読取り/書込みヘッド306をディスク304上の位置に移動するスピンドル/アーマチャ・アセンブリ308、を含むディスク・アセンブリ302を有する。ディスク・アセンブリ302は、図3に示され、以下の説明において用いられるが、この新規な技法の利点は、別の長期記憶媒体を使用したときにも見出すことができ、本発明は、ディスク・アセンブリを長期記憶媒体として使用する場合に限定されない。コントローラ310は、記憶媒体からデータを読み取り、または記憶媒体にデータを書き込むようにディスク・アセンブリに指令する。キャッシュ・メモリ312は、記憶媒体から読み取られ、または記憶媒体に書き込まれるデータをバッファリングするのに使用される。本発明のNVメモリ200は、コントローラ310内に配置され、または永続的記憶装置300の分離した構成要素として配置される。一実施形態では、NVメモリ200は、1つまたは複数の連続するセクタからなるディスク304の少なくとも1つの大きな領域として見えるようにコンピュータ110に公開される。IDE(Integrated Drive Electronics)仕様またはSCSI(Small Computer System Interface)仕様に対する変更は不要である。NVメモリ200はオペレーティング・システムに対して公開され、その結果オペレーティング・システムおよびその他のコンポーネントは、NVメモリ200のサイズを照会することができ、NVメモリ200の状態を制御することができ、トランザクション手続きを使用してNVメモリ200にデータを書き込むことができ、かつ上述のように、NVメモリ200を書込みバッファとして使用することができる。代替実施形態では、コンピュータ110は、ディスク304の大きな領域に対する典型的なアクセス時間約10ミリ秒ではなく500マイクロ秒以下のアクセス時間を観測することによってNVメモリの存在を検出することができる。
【0028】
オペレーティング・システムおよびホスト・アプリケーションのNVメモリの使用再び図2を参照すると、NVメモリ200を利用して性能を向上させるために、本発明の一実施形態によれば、オペレーティング・システム(OS)134は、NVメモリ200の使用を改善するために様々なインターフェースを備える。
【0029】
まず、検出インターフェースが設けられる。OS134は、NVメモリ200が存在するかどうか、およびNVメモリのサイズを検出することができる。この機能は、NVメモリ200がコンピュータ110内に存在するかどうかを判定するためにアプリケーション・プログラム135および他のプログラム・モジュール136が使用することのできるインターフェースとして公開される。さらに、ファイル・システムや他のオブジェクト・ストアなどのOSコンポーネントは、検出インターフェースを使用して、コンピュータ110上のNVメモリ200の存在およびサイズを判定することができる。使用情報やタイプ情報など、NVメモリ200に関する他の情報も提供することができる。あるNVメモリの寿命は限られており、このことが、ある状況ではNVメモリ200の使用に影響を及ぼす可能性があるので、この情報は有用であることがある。
【0030】
ディスク・アセンブリ302内のディスク304から読み取り、またはそれに書き込むためには、ディスクをスピン・アップしなければならず、読取り/書込みヘッド306がスピンドル/電機子アセンブリによって適切な位置に移動しなければならない。この準備動作は時間がかかり、データをディスク・アセンブリ302から読み取ったり、またはそれに書き込んだりすることができるまでの遅延が引き起こされる。ディスク304に書き込む際の準備動作は、読取り/書込みヘッド306の移動も包含されるが、ディスクのスピニング・アップと呼ぶことにする。実際、ディスクを回転媒体として図示するが、永続的記憶装置300において、データをメモリに書き込み、またはメモリから読み取ることができるまでに準備動作を必要とする(ディスク・アセンブリ302以外の)別の形態の長期記憶媒体と共にNVメモリ200を含めることができることも企図される。永続的記憶装置300上の長期記憶媒体を使用するためのどんな準備動作も、追加の準備動作が存在する可能性があることが企図される場合であっても、さらには回転媒体の実際のスピニングが関係しない場合であっても、メモリの「スピン・アップ」または「スピニング・アップ」と呼ばれることになる。アプリケーションまたはオペレーティング・システム134自体は、永続的記憶装置300への書込みに先立って、その装置300上の長期記憶媒体のスピン・アップを必要とするそのような書込みが行われる確率がかなり高いことを認識することができるので、長期記憶媒体のスピン・アップを待つ必要によって引き起こされる遅延を、アプリケーションまたはオペレーティング・システム134が長期記憶媒体のスピン・アップを要求することを可能にするインターフェースの使用を通して回避することができる。
【0031】
同様に、スピン・ダウン・インターフェースも設けられる。電力消費を節約するために、永続的記憶装置300のディスク・アセンブリ302に書込みが行われない場合、ディスク304のスピニングを停止することができる。再び、永続的記憶装置300が回転媒体を含むように示され、そこでは、実際のスピン・ダウンによって電力消費が低減されるが、NVメモリ200は別にして、永続的記憶装置300に関して他の形態の長期記憶媒体も企図され、そのような長期記憶媒体は、ディスク・アセンブリ302のスピン・ダウンに類似の動作を有することがあり、その動作において、そのメモリに対する即時のまたは比較的速い読取りおよび書込みを可能にする動作を中止することによって何らかの利点が得られる。そのような動作の中止は、実際には回転媒体の物理的スピニング・ダウンを含まない可能性があるが、本明細書で言及する「スピン・ダウン」または「スピニング・ダウン」によってそのような中止も企図される。
【0032】
スピン・ダウン動作およびスピン・アップ動作はその最大速度より低い速度実施することができる。低い速度でそのようなオペレーションを実施することにより、そうした動作に関連する音響雑音を低減することができ、電力消費における関連するスパイクを低減することができる。このスピン・アップおよびスピン・ダウン(または長期記憶媒体のための他の準備動作)を、そのような動作の絶対的な必要に先立って実施することができるので、そうした利点を性能に影響を及ぼすことなく得ることができる。ディスクが、瞬時にではなく、低い速度でスピン・アップするとき、ディスクが完全にスピン・アップしたときにディスクが利用可能になるが、ユーザおよびシステムの他の部分に対する影響が最小限に抑えられる。
【0033】
NVメモリ200の一部またはすべてを、永続的記憶装置300のディスク・アセンブリ302用の書込みキャッシュとして使用することができる。そのような場合、この状況に対するインターフェースが設けられ、この状況において、アプリケーションまたはオペレーティング・システム134は、性能上の理由で、NVメモリ200が永続的記憶装置300内の他のメモリにフラッシュされるべきであると決定することができる。このインターフェースは、NVメモリ200を長期記憶媒体にフラッシュする。
【0034】
NVメモリ200の異なる部分を異なる優先順位でマークすることができる。例えば、「ピン留め(pinned)」された、あるいは高優先順位でマークされたNVメモリ200のエリアは、長期記憶媒体にフラッシュするのではなく、NVメモリ200内に、好ましくはこのようにピン留めまたはマークされていないNVメモリ200の他のエリアに、維持すべきである。本発明の一実施形態は、いくつかの優先順位をNVメモリ200内の各エリアに割り当てることを可能にする。例えば、最高の優先順位(あるいは「ピン留めされた」メモリまたは「優先順位1」メモリ)、第2優先順位(「優先順位2」)、および最低の優先順位(または「優先順位3」)の3つの優先順位が存在する可能性がある。NVメモリ200内に空間が必要な場合、高い優先順位のメモリ・エリアがフラッシュされる前に、最低の優先順位メモリが長期記憶媒体にフラッシュされる。したがって、本発明の一実施形態によれば、NVメモリ200キャッシュをフラッシュするためのいくつかのインターフェース・オプションを提示することができる。例えば、キャッシュ全体をフラッシュするインターフェース・オプション、キャッシュの低い優先順位エリアだけをフラッシュするインターフェース・オプション、インターフェースに対する呼出しで指定される優先順位以下の優先順位を有するキャッシュの全エリアをフラッシュするインターフェース・オプションである。
【0035】
別の性能改善として、NVメモリ200に書き込まれたデータが後で削除されることが可能であるという理由で、OS134またはアプリケーションが、NVメモリ200に書き込まれたあるデータがもはや必要ではなく、NVメモリ200書込みキャッシュから廃棄できることを、NVメモリ200に伝える、ことを可能にするインターフェースが提示される。このようにして、メモリがフラッシュされたとき、廃棄されたエリアは長期記憶媒体に書き込まれず、廃棄されたエリアに対して読取りが実施されたとき、エラーまたはランダム・データが返されることになる。
【0036】
このインターフェースは、例えば、トランザクションを管理するために、使用することができる。しばしばトランザクション・ログは、長期間格納する必要のない中間データを収容する。例えば、あるケースでは、トランザクションが行われるとき、トランザクションについてのメタ・データがまずログにコミットされる。このログがNVメモリ200に格納される場合、書込みはディスクのスピニング・アップを必要としない。トランザクションが完了し、変更がコミットされるとき、トランザクションについての格納されたメタ・データが変更または削除され、完了したトランザクションが反映される。しかし、トランザクションを完了またはコミットすることができる前にトランザクションが中断される場合、そのデータは、NVメモリ200中に存続し、したがって何のトランザクションが行われていたかを判定して、そのような中断トランザクションに関する問題を解決するのに、使用することができる。
【0037】
別の例では、このインターフェースは、一時ファイルに関する任意のデータまたはメタ・データをディスクにフラッシュすることを回避するのに使用することができる。当初、こうしたファイルおよびそれらのメタ・データはNVメモリ200内に作成される。これらのファイルが削除されたとき、OS134またはアプリケーションは、NVメモリ200に書き込まれたファイル・データおよびメタ・データがもはや必要ではなく、NVメモリ200書込みキャッシュから廃棄できることを、NVメモリ200に伝えることができる。
【0038】
NVM迂回インターフェースも設けられる。ある状況では、NVメモリの使用が、読取りまたは書込みオペレーションにとって効率的でないことがある。再び図3を参照すると、例えば、アプリケーションがNVメモリ200のサイズよりも大きいデータを永続的記憶装置300に書込み中の場合、そのデータの一部をNVメモリ200に書き込むことは、NVメモリ200が一杯になり、次いでデータをNVメモリ200から長期記憶媒体にフラッシュする必要があるので、一般に有用ではない。したがって、NVM迂回インターフェースは、インターフェースを使用するオペレーティング・システムまたはアプリケーションが、永続的記憶装置300から読み取り、または永続的記憶装置300に書き込むべきデータをNVメモリ200ではなく長期記憶媒体上の物理メモリアドレスから直接読み取り、またはそれに書き込むべきであることを指定する、ことを可能にする。
【0039】
一実施形態では、永続的記憶装置300内のディスク・コントローラがディスク・アセンブリ302をスピニング・アップする準備中または実際にスピニング・アップしているときに、割込みが永続的記憶装置300からホスト・コンピュータ110に送られる。この割込みは、オペレーティング・システム134またはそのコンポーネントあるいはアプリケーションに送ることができる。そのような割込みを受け取ったとき、様子を見ながら動作するように適切にプログラムされた受信側は、データがNVメモリ200から長期記憶媒体に移動し、または長期記憶媒体からNVメモリ200に移動することを、長期記憶媒体がまもなくスピン・アップされ、このような移動の準備ができたときに、保証することができる。これにより、長期記憶媒体のスピン・アップの回数が削減され、したがってディスク・ドライブ電力消費が削減される。さらに、メモリがスピニング中またはスピニング・アップすることを示す割込みを受け取ったとき、OSは、NVM迂回インターフェースを使用して、何らかの非永続的書込みバッファをフラッシュしたり、または長期記憶媒体に直接キャッシュしたりすることができる。
【0040】
さらに、OSコンポーネントおよびアプリケーションは、永続的記憶装置300への書込みをアトミックとして処理することを可能にするアトミック書込みインターフェースを使用することができる。アトミックに書き込むべき全データはNVメモリ200に格納される。これが完了したとき、永続的記憶装置は、アトミックに書き込むべき全データが長期記憶媒体に書き込まれることを保証する。アトミックに書き込むべきデータのすべてをNVメモリ200に格納する前に障害が発生した場合、エラーが返され、受け取ったデータは廃棄される。NVメモリ200に対する格納が完了した後に、システム障害または電源障害のためにアトミック書込みに失敗した場合、システムが再始動したときにその障害が検出され、NVメモリに格納されたデータのアトミック・セットが長期記憶媒体に再書込みされる。このことは、大きなデータのアトミック書込みが好ましいアプリケーションおよび設定の性能を、例えばデータベース・アプリケーションにおける性能を向上させる。なぜなら、こうしたアプリケーションが、当技術分野で「トーン書込み(torn writes)」と呼ばれる問題に対処する必要がないからである。
【0041】
一実施形態では、オペレーティング・システム134、そのコンポーネント、またはアプリケーションは、NVメモリ200を使用して、定期的に使用される特定のファイルまたはオブジェクトを格納する。したがって、負荷のかかる(expensive)長期記憶媒体からの書込み/読取りが回避される。例えば、データベース・トランザクション・ログ、ファイル・システム・メタデータ、およびその他のメタ・データがNVメモリ200に格納される。データを格納するNVメモリ200内の各エリアに異なる優先順位を割り当てるのに優先順位方式が使用される場合、一実施形態では、そのような頻繁にアクセスされるファイルに高い優先順位が与えられる。このことはさらに、負荷のかかる長期記憶媒体への書き込み/長期記憶媒体からの読取りを回避するのに役立つ。
【0042】
NVメモリの区分化(Partitioning)
一実施形態では、NVメモリ200は、NVメモリ200の一部をオペレーティング・システムによって排他的に使用することを可能にするパーティションを含む。この一実装形態は、オペレーティング・システム134が、NVメモリ200をパーティションで区分化し、オペレーティング・システムからの入力で、ディスク・コントローラ・ファームウェア(disk controller firmware)によって直接制御されるNVメモリ200のOSパーティションを有する、ことを可能にすることである。
【0043】
したがって、ディスク・コントローラを介して、OS134は、実際に次に必要とされる可能性の高い特定のセクタをNVメモリ200キャッシュが取り込むことを要求する。例えば、こうしたセクタは、次回のブート、またはシステムが休止状態から再開する(resume)ときに必要なセクタ、または必要である可能性が高いと考えられるセクタである。別の例として、こうしたセクタは、OS134が近い将来必要となると予測するセクタである。
【0044】
したがって、そのような実施形態では、長期記憶媒体がスピン・アップされるごとに、
OSは、論理セクタアドレス(LSA)のリストをディスク・ドライブ・コントローラに送ることにより、NV・メモリ200内の読取りキャッシュのOSパーティションを再取り込みすることができる。このリストは、ディスク・ドライブ・コントローラがどれほど直ちに読取りキャッシュ・データを書込みバッファリング・データで上書きするかを示す、上述の優先順位方式に従って使用される、優先順位情報を含むことができ、る。
【0045】
OS134内では、特定の1組のLSAをNVメモリ200にマッピングする機構が設けられる。これは、NVメモリ200のあるセクションがOS134の直接の制御下に置かれることを可能とする。次いで、こうしたLSAに対する読取りおよび書込みは、常にNVメモリ200にアクセスすることになる。こうしたLSA内のデータは、NVメモリがオペレーティング・システムによって再構成されない限り、記憶装置にフラッシュされない。一実施形態では、NVメモリ200のこのセクションにおいて、OS134が、「ブラック・ボックス・レコーダ情報」、すなわちシステム障害を診断するのに使用される最近のオペレーション履歴、を格納する。OS134は、システムが、静止したブートを実行して機械的ディスク障害を診断することができるように、セーフ・ブートに必要なブート回復コンソールおよびファイルを格納する。OS134はまた、システムファイルの正則表現(regular representation)の代わりに、またはそれに加えて使用される、次回のブートに必要な、場合によっては圧縮したファイルのパッケージも格納する。
【0046】
上述のインターフェースおよびコマンドを以下の表1に示す。
【0047】
【表1】

【0048】
コピー・オン・ライト機能
アプリケーションおよび製品の中でもとりわけ、データベースおよびデータベース製品は、時間およびメモリなどの資源の消費を低減するために、コピー・オン・ライト機能を使用する可能性がある。コピー・オン・ライトは、前のバージョンのデータを利用可能にする。コピー・オン・ライトは、例えばデータベースに格納された現バージョンの情報に加えて、前のバージョンの情報がユーザにとって有用である可能性がある、という理由で有用である。
【0049】
コピー・オン・ライトを用いない場合、前のバージョンのデータに関する情報を提供する一方法は、ユーザにとって関心のある可能性のある時点で、データベースの完全なコピーを作成することである。これを行うと、データベースに関連付けられた全ファイルが格納される。しかし、一定量の記憶空間内に格納されるデータベースについて、各コピーもその量の記憶空間を必要とするので、この技法は空間集約型である。この手法はまた、コピー自体が多くのデータの移動を含むので時間もかかる。
【0050】
したがって、その代わりに、元のバージョンからの変化を格納することができる。NVメモリ200が使用可能である場合、コピー・オン・ライト動作を実施するためにNVメモリ200を使用することができる。コピー・オン・ライトの第1の実装形態では、変更すべき元のデータがシステム・メモリ130に格納される。次いでそれを更新する前に、データの未変更バージョンを利用可能にするために、コピーを安定記憶装置に書き込まなければならない。NVメモリ200が利用可能である場合、そのような記憶域はNVメモリ200とすることができる。これにより、未変更のコピーの格納を迅速に実施することが可能となる。上述のように、その後の時点でこのコピーをディスク記憶域に移動することができる。ブロック指向キャッシングを使用するデータベース・システムは、これを使用して、メモリ書込みのための時間を削減することができる。
【0051】
第2コピー・オン・ライト実装形態では、元のバージョンは長期記憶媒体に格納することができる。このような場合には、データがNVメモリ200内に位置する場合、書込みを行う前に追加のコピーをNVメモリ200内に作成することができる。データがNVメモリ内に格納されていない場合、格納されていた元のコピーを、未変更バージョンを格納するコピーであるアーカイブ・コピーとして扱うことができる。NVメモリ200は、変更後バージョンを格納する。このバージョンがNVメモリ200からフラッシュされるか、またはディスクに移動されるとき、ディスク上の格納されたオリジナルのコピーは今や、変更前のデータのアーカイブ・コピーであるので、このバージョンはメモリ200内の新しい位置に書き込まれる。
【0052】
NVメモリを用いたデフラグメンテーション(断片化解消)
大きなデータ・ストア、例えばファイル・システムやデータベースは、定期的なデータの格納および削除により、フラグメンテーション(断片化)と呼ばれる状態を呈することがある。これは、記憶装置上の空きメモリ(free memory)の大きな範囲が次第にまばらになるときに生じ、性能の劣化をもたらす可能性がある。これを補正するために、デフラグメンテーション(defragmentation)が使用される。デフラグメンテーション・プロセスは、ファイルを連続するアドレス空間内に再結合する。デフラグメンテーションを実施するために、データ・ファイルがディスク上の物理メモリ位置内で移動され、連続して格納されたファイルを生成する。したがって、一時的記憶位置が使用される。第1のファイルによって占有される空間が第2のファイルによって使用された際に、この第1のファイルが失われないように何らかの場所に格納しなければならないからである。
【0053】
一実施形態では、デフラグメンテーション中にNVメモリが一時的記憶場所として使用される。データがNVメモリに書き込まれる。他のデータの記憶の連続性を向上させるために他のデータの位置が変更される。次いで、NVメモリからのデータが、デフラグメンテーションが実行されている記憶装置に書き込まれる。一時的に格納されたデータが記憶装置(コンピュータ・システムのハード・ディスクなど)に復元されたとき、一時的コピーがNVメモリから除去される。したがって、長期記憶媒体と、一時的データを格納するために使用する関連するコストと、を必要とすることなくデフラグメンテーションを行うことができる。
【0054】
永続的記憶装置の制御
図4に示し、上記で説明したように、永続的記憶装置300は、長期記憶媒体430(例えば、図3のディスク・アセンブリ302)を含むことができる。そのような状況では、CPU120からのデータが、ホスト・コンピュータ110と永続的記憶装置300の間を移動する。この流れは、ホスト・コンピュータ110内のホスト・コンピュータ・インターフェース400と永続的記憶装置300内のホスト・コンピュータ・インターフェース420とによって仲介される。装置制御ファームウェア440は、NVメモリ200および長期記憶媒体430内の記憶域を直接的または間接的に制御することができる。
【0055】
永続的記憶装置300の使用を開始するために、オペレーティング・システム134は、記憶装置の構成を照会し、前述のように、NVメモリ200が利用可能かどうかを判定し、利用可能である場合、NVメモリ200のサイズと、タイプ、使用履歴などの他のパラメータが利用可能かどうかを判定する。次いで、NVメモリ200をどのように使用するかに関して決定を行う。
【0056】
NVメモリ200の使用は、2つの方式で制御することができる。第1に、NVメモリ200のいくつかの部分をその記憶装置の制御下に置くことができる。第2に、NVメモリ200のいくつかの部分をOS134の直接の制御下に置くことができる。上記で議論したように、NVメモリ200の一部がOSの直接の制御下にあるとき、その部分は、特定の1組のLSAをマッピングするのに使用される。次いで、こうしたLSAに対する読取りおよび書込みは常に、マッピングした部分のNVメモリ200にアクセスする。こうしたLSA内のデータは、NVメモリがオペレーティング・システムによって再構成されない限り、記憶装置にフラッシュされない。
【0057】
オペレーティング・システムの直接の制御下にないNVメモリ200の部分はキャッシュとして使用される。このキャッシュ部分は、読取りキャッシュと書込みバッファの2重の役割を果たす。書込みバッファがディスクにフラッシュされると、OSは、読取りキャッシュとして働かせるために、様子を見ながらディスクからのデータをNVメモリ200に再取り込みする。このキャッシュ・データは、書込みバッファ・データで上書きされる。やがて、読取りキャッシュは書込みバッファ・データで完全に上書きされ、バッファが一杯になると、記憶装置コントローラがディスクをスピン・アップし、バッファ・データをディスクにフラッシュし、読取りキャッシュに再取り込みし、その後ディスクをスピン・ダウンする。
【0058】
キャッシュ部分とマッピング部分の両方を有するNVメモリの使用を図5に示す。NVメモリ200は、キャッシュ部分500とマッピング部分510とに分割される。矢印520で示すように、マッピング部分510にマッピングされていないLSAからのデータ読み取り、またはLSAへのデータ書き込みはキャッシュ部分500に書き込まれ、矢印530で示すように、LSAから読み取られるデータがキャッシュ部分に存在しない場合、長期記憶媒体430から読み取られる。上記で議論したように、キャッシュ部分500は、読取りキャッシュと書込みキャッシュの両方として機能し、矢印540は、キャッシュ部分540内のデータが長期記憶媒体430にフラッシュされ、キャッシュ部分500を書込みバッファとして使用する空き(space)が存在するときに、データが長期記憶媒体430からキャッシュ部分500にコピーされる、ことを示している。
【0059】
マッピング部分510は特定のLSAに合わせてマッピングされる。したがって、矢印550で示すように、こうしたLSAが読み取られ、またはこうしたLSAに書き込まれるとき、こうした読取りおよび書込みはマッピング部分510に対して直接行われる。マッピング部分510内のデータは長期記憶媒体430にフラッシュされず、長期記憶媒体430がこのマッピング部分にデータを与えることもない。これに対する唯一の例外は、これらが再マッピングに基づく場合である。矢印560で示すように、新しいマッピングが作成されると、前のマッピングからのデータが長期記憶媒体430にコピーされ、マッピングされた新しいLSAに関するディスクからのデータが、NVメモリ200に(具体的にはマッピング部分510に)コピーされる。
【0060】
キャッシュ部分500の制御
キャッシュ部分の制御は、図6に示す状態図で定義される。図6に示すように、初期化中(603)またはシャット・ダウン後のリブート中(625)にブート状態600に入る。ブート状態の後、遷移605で示すように、オペレーティング・システムが動作中状態(running state)610に移ると、キャッシュをフラッシュし、および最初にキャッシュに取り込む論理セクタ・アドレスのリストと共に、再取り込みするコマンドを送る。遷移613で示すように、キャッシュをフラッシュして再取り込みするこのコマンドをオペレーティング・システム134から受け取るごとに、動作中状態610のオペレーションが再度実施される。シャット・ダウン状態620に移るために遷移615が行われる。シャット・ダウンが行われるとき、一実施形態によれば、キャッシュをフラッシュし、LSAリストで再ポピュレートするコマンドが送られる。
【0061】
ディスク・ドライブ・コントローラ・ファームウェア440は、あるケースでは低速のディスク430を使用するのではなく、NVメモリ200を使用することによって、電力消費を削減し、信頼性および性能を向上させる。ディスク・ドライブ・コントローラ440は、OS136からコマンドを受け取り、NVメモリ200のキャッシュ部分500に論理セクタ・アドレス(LSA)の指定のリストに基づいてデータを取り込む。このLSAのリストはセクタの優先順位も含み、この優先順位では、最高の優先順位セクタはキャッシュから除去される可能性が最も低く、最低の優先順位セクタは除去される可能性が最も高い。キャッシュ500に取り込まれると、ディスク430がスピン・ダウンし、キャッシュ500は書込みバッファとして使用される。読取りのためにキャッシュされたセクタは、その優先順位に従ってバッファが満たされるにつれて上書きされる。ディスクは、読取りキャッシュ・ミスがあったとき、書込みバッファが一杯になったとき、または明示的スピン・アップ・コマンドをOS134から受け取ったときにのみスピン・アップする。このようにして、ディスク430は、オンである時間と比べて長い期間オフのままとなり、したがって電力が削減され、信頼性が向上する。最高の優先順位LSAは、OS134によってそうでないように指示されるまで、永続的にNVメモリ200キャッシュ内に置かれる。
【0062】
ブート状態600のオペレーションを図7に示す。図7に示すように、ステップ700では、NVメモリ200からのブート状態ブロックが、BIOSおよびオペレーティング・システム134によって要求されたときに与えられる。それと並行して、長期記憶媒体430(例えばディスク)がスピン・アップする。
【0063】
この状態が完了した後、動作状態610に入り、OSは、キャッシュをフラッシュし、
指定のLSAをキャッシュに取り込むコマンドを送る。動作状態610のオペレーションを図8に示す。図8に示すように、動作状態で、ディスクがまだスピン・アップしていない場合、ステップ800でディスクがスピン・アップする。ステップ810では、NVメモリ200内の任意の修正されたセクタがディスク/長期記憶媒体430にフラッシュされる。次いでステップ820では、OSによって指定されるLSAが、ディスクから読取りキャッシュ用のNVメモリ200に読み取られる。次いでステップ830では、ディスクがスピン・ダウンする。ステップ840では、NVメモリ200が読取りキャッシュおよび書込みバッファとして使用される。キャッシュされたセクタが要求時に提供され、書き込まれるセクタがNVメモリ・バッファに保存され、優先順位に従って読取りキャッシュ・セクタが上書きされる。ステップ850で書込みバッファが全しきい値を超えるとき、ステップ800から830で、NVメモリがフラッシュされ、その後、再び取り込みが実行される。
【0064】
シャット・ダウンするコマンドを受け取ったとき、シャット・ダウン状態620に入る。シャット・ダウン状態620のオペレーションを図9に示す。ステップ900では、ディスクがスピン・アップする。ステップ910では、NVメモリ200内の全ての修正されたセクタがディスク/長期記憶媒体430にフラッシュされる。次いでステップ920では、OSで指定されるLSAが、ディスクから読取りキャッシュ用のNVメモリ200に読み取られる。これにより、NVメモリが、BIOSおよびオペレーティング・システム134によってスタートアップ時に要求される、利用可能なデータを有することが可能となる。
【0065】
他の形態のシャット・ダウンまたは類似の機能の休止(例えば、スタンドバイおよび休止(hibernate))も、図6から図9に示す方法に従って機能する。機能を再開するのに必要な情報(information needed to resume functioning)がNVメモリ200に格納され、それにより、より迅速な再開(resumption)が可能となる。
【0066】
やはり、上述のように、OS134およびアプリケーション(OS134を介して)は、装置コントローラ440に他の手がかりを、装置コントローラ440がいつディスクをスピン・アップまたはスピン・ダウンするかを決定する助けとなるように、与えることができ、また逆に、コントローラFWが何らかの理由でディスクをスピン・アップしなければならない場合、コントローラFWは、ディスクがスピニング・アップされることを示す割込みをOS134に送る。次いで、オペレーティング・システムおよびアプリケーションは、この状況を利用して、揮発性作業メモリにキャッシュされている重要でないデータを記憶装置に書き込むことができる。
【0067】
一実施形態では、ハード・ドライブ記憶装置の音響雑音を低下させるために、コントローラ440ファームウェアも、NVメモリ200で達成される利点を利用する。書込みバッファしきい値を十分低く設定することにより、コントローラ440は、より低速にスピン・アップすることができ、書込みバッファをディスク430にフラッシュするのにより長い時間を取ることができ、スピンドルおよびシーク・サーボに応じるヘッドからの音響雑音を低減する。この技法はまた、電源から取り出されるピーク電流も低減する。コントローラ440ファームウェアはまた、バッファ中の比較的大量のデータを利用して、連続するブロックでディスク上にデータを配置し、データをディスクにフラッシュする際にデフラグメンテーション状態になるのを回避する。
【0068】
キャッシュ500の正確な状態はコントローラ440によってのみ知られる。オペレーティング・システムは、コントローラ440に照会することによってキャッシュ500のスナップ・ショットを得ることができる。任意の時点で、オペレーティング・システム134は、コマンドを送ることにより、キャッシュ500をフラッシュし、近い将来に必要となるとオペレーティング・システム134が考える1組の新しいセクタで開始することを選ぶことができる(図6の遷移613)。
【0069】
一実施形態では、LSAのリスト(遷移615で休止からブートまたは再開するのに必要なもの、あるいは一般には、ブート状態600から遷移する際に、または動作状態610で与えられるもの)を提示することによってキャッシュ部分500にファイルを追加するというOS134からの特定のコマンドがない場合、コントローラは、ブートまたはS4レジュームの直後にディスクIOを監視することにより、ディスクからNVメモリ200へのコントローラ自体のプリフェッチを行うことができる。こうしたIOは、次回のブート時またはS4再開時に必要となる可能性が最も高いデータを表す。このデータがコントローラ440によって収集された後、このデータは、NVメモリ200内のテーブルに格納される。次回のシャット・ダウン時または休止時に、コントローラ440は、このデータを使用して、シャット・ダウンまたは休止する前にディスクからNVメモリ200に取り込む。
【0070】
マッピング部分510の制御
オペレーティング・システムは、NVメモリ200のマッピング部分510を直接制御する。この部分について、オペレーティング・システムは、マッピング部分510にマッピングしなければならない特定の論理セクタ・アドレスを定義する。これにより、NVメモリ200に格納されたデータの、オペレーティング・システムの直接制御が得られる。一実施形態では、このような制御を他のアプリケーションにも与えることができる。
【0071】
これを実施する一方法は、オペレーティング・システム134が、特定であるが必ずしも連続ではない1組のLSAをマッピングまたはシャドーイングするNVメモリ200の一部分を作成することである。この部分を作成するために、OSは、書込みバッファ内および長期記憶媒体430に対する前のマッピング内のすべての修正されたデータを移動する、NVメモリ200全体をフラッシュするコマンドをディスク・コントローラに送る。次いで、OSは、LSAのリストをNVメモリ200のマッピング部分510にマッピングするコマンドを送る。コントローラ440は、ディスクからのセクタをNVメモリ200にコピーし、オペレーティング・システム136によってそうでないように指示されるまで、それをそこに維持する。マッピングのために永続的記憶装置300に送られた論理セクタ・アドレスがディスク430の現アドレス空間を超えて延びている場合、これらがディスクのアドレス空間の終わりに付加される。再マッピングが行われるとき、OS134は、こうした拡張アドレス内のデータをディスクのアドレス空間内の場所にコピーしてデータの紛失を回避する必要がある。オペレーティング・システムは、NVメモリ200内のこうしたマッピング・セクタを直接制御する。
【0072】
OS134は、マッピング部分510をディスク430に周期的にフラッシュし、新しい1組のLSAをマッピング部分510にマッピングすることができる。これは、図10に示すように行われる。ステップ1000では、読取り/書込みのためにディスク430を準備する。ステップ1010では、NVメモリ200のマッピング部分510からのデータをディスク430にフラッシュする。ステップ1020では、キャッシュ部分500もディスクにフラッシュする。ステップ1030では、マッピングすべき新しいLSAをディスク430からNVメモリ200のマッピング部分510にコピーする。図示していないが、一実施形態では、キャッシュ部分500が、読取りキャッシュとして機能するためにディスク430からのデータで満たされる。次いでステップ1040では、ディスク430をスピン・ダウンする。
【0073】
このマッピングの代替方法として、NVメモリを永続的記憶装置300の別々のパーティションまたは論理ボリュームとして構成することもできる。その場合、連続的論理セクタは、上述のようにオペレーティング・システム136の直接の制御下に置かれる。
【0074】
永続的記憶装置300に関する自己記述メモリ部分
図5に示すキャッシュ部分500およびマッピング部分510に加えて、一実施形態では、NVメモリの一部が、永続的記憶装置300についての一定の情報を格納するために取り分けられ、それにより、診断およびその他の情報を維持することが可能となる。
【0075】
一実施形態では、そのような記述情報には、ラベル情報、長期記憶媒体430内の不良セクタの数、一定時間で書き込まれるセクタ数に関する統計データ、一定時間でのディスクのスピン・アップ数またはスピン・ダウン数、および長期記憶媒体が動作している時間が含まれる。
【0076】
一実施形態では、この自己記述メモリ部分が、特定のインターフェースによって読み取られ、これは、OSコンポーネントまたはアプリケーションがメモリにアクセスすることを可能にする。別の実施形態では、永続的記憶装置300はディスプレイを含む。例えば、LCDディスプレイを永続的記憶装置300に含めることができる。ある照会が、コンピュータ110を介して、または直接的に(例えば永続的記憶装置300上のボタンを押すことによって)永続的記憶装置300に対して行われたとき、自己記述メモリ部分からのデータが表示される。
【0077】
一実施形態では、OSまたはアプリケーションは、自己記述メモリに格納された情報を使用して、記憶装置300がその平均寿命に近づき、その結果、前記記憶装置300上に格納されたデータを新しい記憶装置に転送する必要がある時期、を判定する。
【0078】
NVメモリ200を、コンピュータのオペレーションに関するデータを格納する「ブラックボックス」レコーダとして使用することを可能にする情報を格納することもできる。異常シャット・ダウンなどの障害の場合に、コンピュータのオペレーションに関する情報が格納され、障害を分析するためにそれを取り出すことができる。そのような情報は、前記コンピュータ・システムで動作するプロセスに関するプロセス情報、前記コンピュータ・システムで動作するスレッドに関するスレッド情報、データ・アクセス、および装置アクセスを含むことができる。飛行機のブラック・ボックス・レコーダと同様に、限定された量の空間をこの動作情報に割り当てることができ、その空間に満たすことができるよりも多くの情報を収集したとき、前に格納した動作情報を新しい情報で上書きする。
【0079】
疲労(wear)レベリング
あるNVメモリ技術は、過度の消去サイクルの後に疲労する。そのような摩耗の始まりを遅らせるために、一実施形態では、コントローラ440は、NVメモリ200の各エリアをほぼ等しく使用することを保証するために、すべてのエリアについて消去の平衡を取る。コントローラ440は、頻繁に書き込まれる、ディスク・セクタに関連するNVメモリ・ブロックが疲労するのを回避するために、NVメモリ内で使用する物理位置を変更する。一実施形態では、このことは、疲労レベリングを行うためにマッピング部分で利用可能な空間が常に存在することを保証するために使用される一定量のオーバヘッドを必要とする。例えば、1MBのセクタがマッピング部分510用に取り分ける(用意される)場合、ディスク・コントローラは、疲労レベリングが適切に動作することを可能にするために、実際には1.5MBを取り分ける(用意する)ことがある。
【0080】
結論
上記の例は単に説明のために与えたものであり、決して本発明の制限と解釈すべきでないことに留意されたい。様々な実施形態を参照しながら本発明を説明したが、本明細書で使用した語は、限定の語ではなく、説明および例示の語である。さらに、特定の手段、材料、および実施形態を参照しながら本発明を説明したが、本明細書で開示した特定の詳細に本発明を限定するものではない。むしろ、本発明は、特許請求の範囲内にあるものなど、すべての機能的に等しい構造、方法、および使用法に拡張される。本明細書の教示の特典を得る当業者は、本発明の範囲および精神から逸脱することなく、本発明の諸態様で、本発明に対して多数の修正を実施することができ、変更を行うことができる。
【符号の説明】
【0081】
100 コンピューティング・システム環境
110 コンピュータ
120 処理装置(CPU)
121 システム・バス
130 システム・メモリ
134 オペレーティング・システム
135 アプリケーション・プログラム
136 他のプログラム・モジュール
137 プログラム・データ
140 取外し不能不揮発性メモリ・インターフェース
144 オペレーティング・システム
145 アプリケーション・プログラム
146 他のプログラム・モジュール
147 プログラム・データ
150 取外し可能不揮発性メモリ・インターフェース
151 磁気ディスク・ドライブ
152 取外し可能不揮発性磁気ディスク
155 光ディスク・ドライブ
156 取外し可能不揮発性光ディスク
160 ユーザ入力インターフェース
161 マウス
162 キーボード
170 ネットワーク・インターフェース
171 ローカル・エリア・ネットワーク
172 モデム
173 広域ネットワーク
180 リモート・コンピュータ
181 メモリ記憶装置
185 リモート・アプリケーション・プログラム
190 ビデオ・インターフェース
191 モニタ
195 出力周辺インターフェース
196 プリンタ
197 スピーカ
200 NVメモリ(NVキャッシュ・メモリ)
300 永続的記憶装置
302 ディスク・アセンブリ
304 ディスク
306 読取り/書込みヘッド
308 スピンドル/アーマチャ・アセンブリ
310 コントローラ
312 揮発性キャッシュ・メモリ
400 ホスト・コンピュータ・インターフェース
420 ホスト・コンピュータ・インターフェース
430 長期記憶媒体
440 装置制御
500 キャッシュ部分
510 マッピング部分
600 ブート状態
610 動作状態
620 シャット・ダウン状態

【特許請求の範囲】
【請求項1】
不揮発性メモリおよび記憶媒体を有するコンピュータ・システムが制御する方法であって、
前記不揮発性メモリは、マッピング部分、および、キャッシュ部分を有しており、
オペレーティング・システムの直接の制御下で使用される前記不揮発性メモリのマッピング部分であって、記憶媒体の特定の論理セクタアドレスがマッピングされている前記マッピング部分に対して読み取りおよび書き込みを行うこと、
前記不揮発性メモリのマッピング部分にマッピングされていない記憶媒体の論理セクタアドレスに対して読み取りを行う場合に、読取りキャッシュとして使用される前記不揮発性メモリのキャッシュ部分にデータを取り込み、かつ、前記マッピングされていない記憶媒体の論理セクタアドレスに対して書込みを行う場合に、書込みバッファとして使用される前記不揮発性のキャッシュ部分にデータを書き込むことであって、オペレーティング・システムの直接の制御下にない前記不揮発性メモリの部分は、キャッシュとして使用され、前記キャッシュ部分は、読み取りキャッシュおよび書き込みバッファの2つの機能を有し、前記書き込みバッファがディスクにフラッシュされる場合は前記オペレーティング・システムは、読み取りキャッシュとして機能するため、前記ディスクからのデータを有する不揮発性メモリを再度読み取り、前記キャッシュデータは書き込みバッファデータで上書きされ、前記読み取りキャッシュは前記書き込みバッファデータで上書きされ、前記バッファのデータがフルになったとき、記憶装置コントローラは前記ディスクをスピニング・アップし、前記バッファデータを前記ディスクにフラッシュし、前記読み取りキャッシュを再度読み取り、かつ、前記ディスクをスピンダウンする、こと、および
前記書込みバッファに書き込まれたデータを前記記憶媒体に転送すること
を含むことを特徴とする方法。
【請求項2】
前記記憶媒体に対する書込みの準備動作を要求することをさらに含む請求項1に記載の方法。
【請求項3】
前記記憶媒体は回転記憶媒体を備えており、
前記準備動作として、前記回転記憶媒体をスピニング・アップさせる請求項2に記載の方法。
【請求項4】
前記スピニング・アップは、最大速度より低速で行われる請求項3に記載の方法。
【請求項5】
前記準備動作は、準備動作の要求に基づいて行われる請求項2に記載の方法。
【請求項6】
前記記憶媒体を非活動状態にする要求を行うことをさらに含む請求項1に記載の方法。
【請求項7】
前記記憶媒体は回転記憶媒体を備えており、
前記非活動状態として、前記回転記憶媒体をスピニング・ダウンさせる請求項6に記載の方法。
【請求項8】
前記非活動状態は、最大速度より低速で行われる請求項7に記載の方法。
【請求項9】
一定の指定のデータを前記記憶媒体に直接書き込むことを要求することをさらに含むことを特徴とする請求項1に記載の方法。
【請求項10】
前記書込みバッファに書き込まれたデータを記憶媒体に転送するとき、前記書込みバッファ内の優先順位に従って前記データを転送する請求項1に記載の方法。
【請求項11】
前記不揮発性メモリの書込みバッファ内の指定されたデータを廃棄することをさらに含む請求項1に記載の方法。
【請求項12】
前記廃棄されたデータは前記記憶媒体に転送されないことを特徴とする請求項11に記載の方法。
【請求項13】
前記廃棄されたデータのために使用された書込みバッファ内の位置は、他のデータの格納が可能である請求項12に記載の方法。
【請求項14】
前記不揮発性メモリに関する情報を受け取ることをさらに含む請求項1に記載の方法。
【請求項15】
前記情報は、前記不揮発性メモリが存在するかどうかの情報を備える請求項14に記載の方法。
【請求項16】
前記情報は、前記不揮発性メモリのサイズを備える請求項15に記載の方法。
【請求項17】
前記情報は、前記不揮発性メモリに関する使用情報、および前記不揮発性メモリのタイプの情報を備える請求項15に記載の方法。
【請求項18】
請求項1に記載の方法をコンピュータに実施させるためのコンピュータ実行可能命令を有するプログラムを記録したコンピュータ可読記憶媒体。
【請求項19】
不揮発性メモリおよび記憶媒体を使用するコンピュータ・システムであって、
前記不揮発性メモリは、マッピング部分、および、キャッシュ部分を有しており、
前記コンピュータ・システムは、
オペレーティング・システムの直接の制御下で使用される前記不揮発性メモリのマッピング部分であって、記憶媒体の特定の論理セクタアドレスがマッピングされている前記マッピング部分に対して読み取りおよび書き込みを行う手段と、
前記不揮発性メモリのマッピング部分にマッピングされていない記憶媒体の論理セクタアドレスに対して読み取りを行う場合に、読取りキャッシュとして使用される前記不揮発性メモリのキャッシュ部分にデータを取り込み、かつ、前記マッピングされていない記憶媒体の論理セクタアドレスに対して書込みを行う場合に、書込みバッファとして使用される前記不揮発性のキャッシュ部分にデータを書き込む手段であって、オペレーティング・システムの直接の制御下にない前記不揮発性メモリの部分は、キャッシュとして使用され、前記キャッシュ部分は、読み取りキャッシュおよび書き込みバッファの2つの機能を有し、前記書き込みバッファがディスクにフラッシュされる場合は前記オペレーティング・システムは、読み取りキャッシュとして機能するため、前記ディスクからのデータを有する不揮発性メモリを再度読み取り、前記キャッシュデータは書き込みバッファデータで上書きされ、前記読み取りキャッシュは前記書き込みバッファデータで上書きされ、前記バッファのデータがフルになったとき、記憶装置コントローラは前記ディスクをスピニング・アップし、前記バッファデータを前記ディスクにフラッシュし、前記読み取りキャッシュを再度読み取り、かつ、前記ディスクをスピンダウンする、手段と、
前記書込みバッファに書き込まれたデータを前記記憶媒体に転送する手段と
を含むことを特徴とするコンピュータ・システム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate


【公開番号】特開2013−47979(P2013−47979A)
【公開日】平成25年3月7日(2013.3.7)
【国際特許分類】
【出願番号】特願2012−243915(P2012−243915)
【出願日】平成24年11月5日(2012.11.5)
【分割の表示】特願2005−135274(P2005−135274)の分割
【原出願日】平成17年5月6日(2005.5.6)
【出願人】(500046438)マイクロソフト コーポレーション (3,165)