(57)【特許請求の範囲】
【請求項１】
メモリ・コントローラであって、
メモリの記憶システム・ブロックとメモリの主メモリ・ブロックとの間に１つ以上のエイリアスを作成する要求を受けるように構成されたインタフェースであって、前記メモリの記憶システム・ブロックが記憶システム・データを維持するときに使用され、前記メモリの主メモリ・ブロックがコンピュータの主メモリのために使用される、インタフェースと、
前記メモリの記憶システム・ブロックと前記メモリの主メモリ・ブロックとの間、および前記メモリの記憶システム・ブロックの各サブブロックと前記メモリの主メモリ・ブロックの各対応するサブブロックとの間に、エイリアスを作成するように構成されたエイリアス回路と、
前記主メモリ・ブロックのデータを求める読み取り要求に応答して、前記エイリアスが切断されない限り、前記記憶システム・ブロックからデータを得るように構成された引き出し回路と、
を備える、メモリ・コントローラ。
【請求項２】
請求項１記載のメモリ・コントローラにおいて、前記記憶システム・データがファイル・システムのファイル・システム・データを含む、メモリ・コントローラ。
【請求項３】
請求項１記載のメモリ・コントローラにおいて、前記インタフェースが、前記コンピュータ上にホストされたオペレーティング・システムのファイル・システム・ドライバから前記要求を受けるように構成される、メモリ・コントローラ。
【請求項４】
請求項１記載のメモリ・コントローラにおいて、前記メモリの主メモリ・ブロックがメモリのページを含み、前記メモリの主メモリ・ブロックの各サブブロックがキャッシュ・ラインを含む、メモリ・コントローラ。
【請求項５】
請求項１記載のメモリ・コントローラにおいて、前記引き出し回路が、更に、エイリアスが切断されていない前記記憶システム・ブロックのサブブロックから第１データを得る前記読み取り要求に応答して、エイリアスが切断された前記主メモリ・ブロックのサブブロックから第２データを得るように構成され、前記引き出し回路が、更に、前記読み取り要求に応答するために、前記第１データおよび前記第２データを組み合わせるように構成される、メモリ・コントローラ。
【請求項６】
請求項１記載のメモリ・コントローラにおいて、前記エイリアス回路が、更に、前記第１サブブロックに書き込む要求または前記第２サブブロックに書き込む要求に応答して、第１サブブロックから第２サブブロックへのエイリアスを切断するように構成される、メモリ・コントローラ。
【請求項７】
請求項６記載のメモリ・コントローラにおいて、前記エイリアス回路が、更に、前記書き込み要求の後、および前記第１サブブロックからの読み取り要求にサービスする直前に、前記第１サブブロックから前記第２サブブロックへの前記エイリアスを切断するように構成される、メモリ・コントローラ。
【請求項８】
請求項１記載のメモリ・コントローラであって、更に、前記主メモリ・ブロックを新たな位置にコピーする要求に応答するように構成されたコピー回路を含む、メモリ・コントローラ。
【請求項９】
請求項８記載のメモリ・コントローラにおいて、前記コピー回路が、前記主メモリ・ブロック内にデータを残し、前記新たな位置から要求されたときに前記データが戻されるようにマッピング・エレメントを変更することによって、前記主メモリ・ブロックを前記新たな位置にコピーする要求に応答するように構成される、メモリ・コントローラ。
【請求項１０】
請求項１記載のメモリ・コントローラであって、更に、前記主メモリの一部または全部を含む要求メモリ範囲を消去する要求に応答するように構成された消去回路を含む、メモリ・コントローラ。
【請求項１１】
請求項１０記載のメモリ・コントローラにおいて、前記消去回路が、前記要求範囲が消去されたことを示し、その後、前記要求メモリ範囲に関与する読み取り要求に応答して、リード・キャッシュにゼロを入れることによって、前記メモリの要求範囲を消去する要求に応答するように構成される、メモリ・コントローラ。
【請求項１２】
請求項１０記載のメモリ・コントローラにおいて、前記消去回路が、前記主メモリをホストするコンピュータの再起動の指示を受けた後に、前記メモリの要求範囲を消去することによって、前記メモリの要求範囲を消去する要求に応答するように構成される、メモリ・コントローラ。
【請求項１３】
請求項１記載のメモリ・コントローラにおいて、前記エイリアス回路が、更に、エイリアス・ブロックを移動させる要求に応答して、前記エイリアス・ブロックを再エイリアスするように構成される、メモリ・コントローラ。
【請求項１４】
請求項１記載のメモリ・コントローラにおいて、前記メモリの主メモリ・ブロックおよび前記記憶システム・ブロックが共に、メモリ・バスに取り付けられた不揮発メモリに含まれる、メモリ・コントローラ。
【請求項１５】
少なくとも部分的にコンピュータによって実装される方法であって、
メモリ・コントローラ・インタフェースにおいて、メモリの記憶システム・ブロックとメモリの主メモリ・ブロックとの間にエイリアスを作成する要求を受けるステップであって、前記メモリの記憶システム・ブロックが記憶システム・データを維持するときに使用され、前記メモリの主メモリ・ブロックがコンピュータの主メモリのために使用される、ステップと、
前記メモリの記憶システム・ブロックと前記メモリの主メモリ・ブロックとの間、および前記メモリの記憶システム・ブロックと前記メモリの主メモリ・ブロックとにおける各対応するサブブロックの間に、前記エイリアスを作成するステップと、
データを求める要求に応答して、前記メモリの記憶システム・ブロックから前記データを供給するステップであって、前記要求が、前記メモリの主メモリ・ブロックを示す、ステップと、
を含む、方法。
【請求項１６】
請求項１５記載の方法において、前記メモリの記憶システム・ブロックおよび前記メモリの主メモリ・ブロックの一方が不揮発メモリ・デバイスに含まれ、前記メモリの記憶システム・ブロックおよび前記メモリの主メモリ・ブロックの他方が揮発メモリ・デバイスに含まれる、方法。
【請求項１７】
請求項１５記載の方法であって、更に、
前記データを求める要求に応答して、エイリアスが切断されていない前記記憶システム・ブロックのサブブロックから第１データを得ると共に、エイリアスが切断された前記主メモリ・ブロックのサブブロックから第２データを得るステップと、
前記第１データおよび前記第２データを組み合わせて、前記データを求める要求に応答するステップと、
を含む、方法。
【請求項１８】
コンピュータ実行可能命令を有するコンピュータ記憶媒体であって、前記命令が実行されると、
オペレーティング・システムのファイル・システム・ドライバから、要求をメモリ・コントローラのインタフェースに送るアクションであって、前記要求がメモリの第１ブロックとメモリの第２ブロックとの間、および前記第１および第２ブロックの各対応するサブブロックの間における１つ以上のエイリアスの作成を要求し、前記メモリの第１ブロックが記憶システム・データを維持するときに使用され、前記メモリの第２ブロックがコンピュータの主メモリのために使用される、アクションと、
前記ファイル・システム・ドライバから前記メモリ・コントローラに、データを求める要求を送るアクションであって、前記要求が前記メモリの第１ブロックを示す、アクションと、
前記データを求める要求に応答して、前記メモリ・コントローラから、前記メモリの第２ブロックからのデータを受けるアクションと、
を含む、コンピュータ記憶媒体。
【発明の詳細な説明】
【背景技術】
【０００１】
コンピュータ・システムのメモリは、従前より揮発性および不揮発性メモリに分類されている。揮発性メモリは、そこに格納されたデータを維持するためには電力を必要とする。不揮発性メモリは、給電されないときでも、データを保持することができる。以前より、各々に一定の利点があるので、コンピュータは揮発性および不揮発性双方のメモリを使用している。例えば、揮発性メモリは、通例、不揮発性メモリよりも遙かに高速であるが、不揮発性メモリは、ビット当たりのコストが遙かに少ない場合が多い。不揮発性メモリ技術の進歩により、不揮発性メモリは、停電の間データを保存するという利点を維持しつつ、揮発性メモリと不揮発性メモリとの間の速度のギャップは狭まりつつある。
【０００２】
本明細書において特許請求する主題は、任意の欠点を解決する実施形態にも、以上で説明したような環境においてのみ動作する実施形態にも限定されない。むしろ、この背景は、本明細書において説明する実施形態を実施できる技術分野の一例を例示するために設けられたに過ぎない。
【発明の概要】
【課題を解決するための手段】
【０００３】
端的に言うと、本明細書において説明する主題の態様は、記憶システムおよびエイリアス・メモリ(aliased memory)に関する。態様において(in aspects)、ファイル・システム・ドライバまたは他のコンポーネントが、メモリの２つのブロック間においてエイリアスを作成する要求をメモリ・コントローラに送ることができる。これらのメモリ・ブロックの内一方は主メモリに使用することができ、これらのメモリ・ブロックの他方は記憶システムに使用することができる。応答して、メモリ・コントローラは、これらのメモリ・ブロック間においてエイリアスを作成することができる。エイリアスが切断される(sever)まで、メモリ・コントローラが主メモリにおけるブロックからのデータを求める要求を受けると、メモリ・コントローラは、記憶システムに使用されるメモリ・ブロックからのデータで応答することができる。また、メモリ・コントローラは、本明細書において説明するように、他のアクションも実現することができる。
【０００４】
本摘要は、詳細な説明において以下で更に説明する主題のいくつかの態様を端的に確認するために設けられている。本摘要は、特許請求する主題の主要な特徴や必須の特徴を特定することを意図するのではなく、特許請求する主題の範囲を限定するために使用されることを意図するのでもない。
【０００５】
「本明細書において説明する主題」という句は、文脈が明らかに他のことを示すのではない限り、詳細な説明において説明される主題を指す。「態様」(aspects)という用語は、「少なくとも１つの態様」と読解されてしかるべきである。詳細な説明において説明される主題の態様を識別することは、特許請求する主題の主要なまたは必須の特徴を識別することを意図するのではない。
【０００６】
以上で説明した態様、および本明細書において説明する主題の他の態様は、一例としてそして限定ではなく、添付図面に例示される。図面において、同様の参照番号は同様のエレメントを示す。
【図面の簡単な説明】
【０００７】
【図１】図１は、本明細書において説明する主題の態様を組み込むことができる汎用計算環境の一例を表すブロック図である。
【図２】図２は、本明細書において説明する主題の態様にしたがって、不揮発性メモリを概略的に表すブロック図である。
【図３】図３は、本明細書において説明する主題の態様にしたがって、図２のメモリ・ブロックのサブブロック間におけるエイリアスの種々の状態を概略的に表すブロック図である。
【図４】図４は、本明細書において説明する主題の態様にしたがって構成されたシステムのコンポーネント例を概略的に表すブロック図である。
【図５】図５は、本明細書において説明する主題の態様にしたがって、不揮発性メモリを概略的に表すブロック図である。
【図６】図６は、本明細書において説明する主題の態様にしたがって構成されたシステムのコンポーネント例を概略的に表すブロック図である。
【図７】図７は、本明細書において説明する主題の態様にしたがって、メモリ・コントローラの観点からエイリアスの作成に伴って行うことができるアクション例を概略的に表す流れ図である。
【図８】図８は、本明細書において説明する主題の態様にしたがって、メモリ・コントローラの観点からエイリアス・ブロックに対するデータを入手することに伴って行うことができるアクション例を概略的に表す流れ図である。
【図９】図９は、本明細書において説明する主題の態様にしたがって、メモリ・コントローラを介してメモリにアクセスするコンポーネントにおいて行うことができるアクション例を示す流れ図である。
【発明を実施するための形態】
【０００８】
定義
本明細書において使用する場合、「含む」という用語およびその変形は、「含むが限定されない」ことを意味する開放端用語として読解されるものとする。「または」という用語は、文脈が明らかに他のことを指示するのではない限り、「および／または」と解読されるものとする。「基づく」という用語は、「少なくとも部分的に基づく」と読解されるものとする。「一実施形態」(one embodiment)および「実施形態」(an embodiment)という用語は、「少なくとも１つの実施形態」と解読されるものとする。「他の実施形態」という用語は、「少なくとも１つの他の実施形態」と読解されるものとする。
【０００９】
本明細書において使用する場合、「ａ」、「ａｎ」、および「ｔｈｅ」のような用語は、示される項目またはアクションを１つ以上含むものとする。更に特定すると、請求項においてある項目に言及するときは、一般に、少なくとも１つのそのような項目が存在することを意味し、あるアクションに言及するときは、そのアクションの少なくとも１つのインスタンスが実行されることを意味するものとする。
【００１０】
本明細書では、「第１」、「第２」、「第３」等の用語が使用されることもある。追加のコンテキストがなければ、請求項におけるこれらの用語の使用は、順序を含意することを意図するのではなく、むしろ識別の目的で使用される。例えば、「第１バージョン」および「第２バージョン」という句は、必ずしも、第１バージョンが最初のバージョンであり、第２バージョンよりも前に作成されたことを意味するのではなく、第１バージョンが第２バージョンの前に要求されることもまたは動作することさえも意味しない。むしろ、これらの句は異なるバージョンを識別するために使用される。
【００１１】
見出しは便宜上に過ぎず、所与のトピックについての情報が、そのトピックを示す見出しの章以外で見出されることもある。
明示的および暗示的な他の定義も、以下に含まれる場合もある。
【００１２】
動作環境例
図１は、本明細書において説明する主題の態様を実現することができる、適した計算システム環境１００の一例を示す。計算システム環境１００は、適した計算環境の一例に過ぎず、本明細書において説明する主題の態様の使用範囲や機能に関して何の限定をも示唆することは意図していない。また、計算環境１００が、動作環境例１００に示されるコンポーネントの内いずれの１つまたはその組み合わせに関しても、依存性や用件を有するようには決して解釈してはならない。
【００１３】
本明細書において説明する主題の態様は、多数の他の汎用または特殊目的計算システム環境あるいは構成とでも動作する。本明細書において説明する主題の態様との使用に適していると考えられる周知の計算システム、環境、または構成の例には、パーソナル・コンピュータ、ベア・メタル上または仮想マシンとしてのいずれでもよいサーバー・コンピュータ、ハンドヘルドまたはラップトップ・デバイス、マルチプロセッサ・システム、マイクロコントローラ・ベース・システム、セットトップ・ボックス、プログラマブルおよびプログラマブルでない消費者用電子機器、ネットワークＰＣ、ミニコンピュータ、メインフレーム・コンピュータ、パーソナル・ディジタル・アシスタント（ＰＤＡ）、ゲーミング・デバイス、プリンタ、セットトップ、メディア・センター、または他のアプライアンスを含むアプライアンス、自動車埋め込み型または取り付け型計算デバイス、他の移動体デバイス、セル・フォン、ワイヤレス・フォン、および有線電話を含む電話デバイス、以上のシステムまたはデバイスの内任意のものを含む分散型計算環境等が含まれる。種々の実施形態は以上のデバイスの内１つ以上に限定されることもあるが、コンピュータという用語は、別段指示されない限り、以上のデバイスを範囲に含むことを意図している。
【００１４】
本明細書において説明する主題の態様は、コンピュータによって実行される、プログラム・モジュールのような、コンピュータ実行可能命令という一般的なコンテキストで説明することができる。一般に、プログラム・モジュールは、ルーチン、プログラム、オブジェクト、コンポーネント、データ構造等を含み、特定のタスクを実行するかまたは特定の抽象データ型を実装する。また、本明細書において説明する主題の態様は、分散型計算環境においても実施することができ、この場合、タスクは、通信ネットワークを介してリンクされたリモート処理デバイスによって実行される。分散型計算環境では、プログラム・モジュールは、メモリ記憶デバイスを含むローカルおよびリモート双方のコンピュータ記憶媒体に配置されてもよい。
【００１５】
あるいはまたは加えて、ここで説明する機能は、少なくとも部分的に、１つ以上のハードウェア論理コンポーネントによって実行することもできる。例えば、そして限定ではなく、使用することができる実例となるタイプのハードウェア論理コンポーネントには、フィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）、プログラム特定集積回路（ＡＳＩＣ）、プログラム特定標準製品（ＡＳＳＰ）、システム・オン・チップ・システム（ＳＯＣ）、複合プログラマブル論理デバイス（ＣＰＬＤ）等が含まれる。
【００１６】
図１を参照すると、本明細書において説明する主題の態様を実現するためのシステム例は、コンピュータ１１０の形態とした汎用計算デバイスを含む。コンピュータは、命令を実行することができる任意の電子デバイスを含むことができる。コンピュータ１１０のコンポーネントは、処理ユニット１２０、システム・メモリ１３０、およびシステム・メモリから処理ユニット１２０までを含む種々のシステム・コンポーネントを結合する１つ以上のシステム・バス（システム・バス１２１によって代表される）を含むことができる。システム・バス１２１は、メモリ・バスまたはメモリ・コントローラ、周辺バス、および種々のバス・アーキテクチャの内任意のものを使用するローカル・バスを含む、様々なタイプのバス構造の内任意のものとすることができる。一例として、そして限定ではなく、このようなアーキテクチャには、業界標準アーキテクチャ（ＩＳＡ）バス、マイクロ・チャネル・アーキテクチャ（ＭＣＡ）バス、拡張ＩＳＡ（ＥＩＳＡ）バス、ビデオ電子規格連合（ＶＥＳＡ）ローカル・バス、およびMezzanineバスとしても知られる周辺コンポーネント相互接続（ＰＣＩ）バス、周辺素子相互接続拡張（ＰＣＩ−Ｘ）バス、高度グラフィクス・ポート（ＡＧＰ）、およびＰＣＩエクスプレス（ＰＣＩｅ）を含む。
【００１７】
処理ユニット１２０は、ハードウェア・セキュリティ・デバイス１２２に接続することができる。セキュリティ・デバイス１２２は、コンピュータ１１０の種々の態様の安全性を確保するために使用することができる暗号鍵を格納し、生成することができるとよい。一実施形態では、セキュリティ・デバイス１２２は、信頼プラットフォーム・モジュール（ＴＰＭ）チップ、ＴＰＭセキュリティ・デバイス等を含むことができる。
【００１８】
コンピュータ１１０は、通例、種々のコンピュータ読み取り可能媒体を含む。コンピュータ読み取り可能媒体は、コンピュータ１１０によってアクセスすることができる任意の入手可能な媒体とすることができ、揮発性および不揮発性双方の媒体、ならびにリムーバブルおよび非リムーバブル媒体を含む。一例として、そして限定ではなく、コンピュータ読み取り可能媒体は、コンピュータ記憶媒体および通信媒体を含むことができる。
【００１９】
コンピュータ記憶媒体は、揮発性および不揮発性の双方の、リムーバブルおよび非リムーバブル媒体を含み、コンピュータ読み取り可能命令、データ構造、プログラム・モジュール、または他のデータというような情報の格納のためのいずれかの方法または技術で実現される。コンピュータ記憶媒体は、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、ソリッド・ステート・ストレージ、フラッシュ・メモリまたは他のメモリ技術、ＣＤ−ＲＯＭ、ディジタル・バーサタイル・ディスク（ＤＶＤ）、ブルーレイ・ディスク（ＢＤ）、または他の光ディスク・ストレージ、磁気カセット、磁気テープ、磁気ディスク・ストレージまたは他の磁気記憶デバイス、または所望の情報を格納するために使用することができそしてコンピュータ１１０によってアクセスすることができる他のあらゆる媒体を含む。コンピュータ記憶媒体は、通信媒体を含まない。  
【００２０】
通信媒体は、通例、コンピュータ読み取り可能命令、データ構造、プログラム・モジュール、または他のデータを、搬送波のような変調データ信号または他の移送メカニズムに具体化し、任意の情報配信媒体を含む。「変調データ信号」という用語は、その信号内に情報をエンコードするようにして、その特性の１つ以上が設定または変更された信号を意味する。一例として、そして限定ではなく、通信媒体は、有線ネットワークまたは直接有線接続というような有線媒体と、音響、ＲＦ、赤外線、および他のワイヤレス媒体というようなワイヤレス媒体とを含む。以上の内任意のものの組み合わせも、コンピュータ読み取り可能媒体の範囲に含まれてしかるべきである。
【００２１】
システム・メモリ１３０は、リード・オンリ・メモリ（ＲＯＭ）１３１およびランダム・アクセス・メモリ（ＲＡＭ）１３２のような、揮発性および／または不揮発性メモリの形態としたコンピュータ記憶媒体を含むこともできる。不揮発性メモリは、ＲＯＭ１３１および／またはＲＡＭ１３２の一部または全部と交換されてもよい。例えば、メモリスタ・メモリ(memristor memory)、相変化メモリ（ＰＣＭ）、または何らかの他のタイプの不揮発性メモリを、ＲＯＭ１３１および／またはＲＡＭ１３２の代わりに、またはこれらに加えて使用することができる。
【００２２】
基本入力／出力システム１３３（ＢＩＯＳ）は、起動中におけるように、コンピュータ１１０内部にあるエレメント間で情報を転送するのに役立つ基本的なルーチンを含み、通例ＲＯＭ１３１に格納される。ＲＡＭ１３２は、通例、処理ユニット１２０によって直ちにアクセス可能なデータおよび／またはプログラム・モジュール、および／または現在処理ユニット１２０によって処理されているデータおよび／またはプログラム・モジュールを含む。一例として、そして限定ではなく、図１は、オペレーティング・システム１３４、アプリケーション・プログラム１３５、他のプログラム・モジュール１３６およびプログラム・データ１３７を示す。
【００２３】
また、コンピュータ１１０は、他のリムーバブル／非リムーバブル、揮発性／不揮発性コンピュータ記憶媒体も含むことができる。一例に過ぎないが、図１は、非リムーバブル、不揮発性磁気媒体に対して読み取りまたは書き込みを行うハード・ディスク・ドライブ１４１、リムーバブル、不揮発性磁気ディスク１５２に対して読み取りまたは書き込みを行う磁気ディスク・ドライブ１５１、およびＣＤ−ＲＯＭ、ＤＶＤ、ＢＤ、または他の光媒体のようなリムーバブル、不揮発性光ディスク１５６に対して読み取りまたは書き込みを行う光ディスク・ドライブ１５５を示す。
【００２４】
一実施態様では、メムリスター・メモリ、相変化メモリ、または何らかの他のタイプの不揮発性メモリを、ハード・ドライブ１４１の代わりに、またはこれに加えて使用することもできる。
【００２５】
この動作環境例において使用することができる他のリムーバブル／非リムーバブル、揮発性／不揮発性コンピュータ記憶媒体には、磁気テープ・カセット、フラッシュ・メモリ・カードおよび他のソリッド・ステート記憶デバイス、ディジタル・バーサタイル・ディスク、他の光ディスク、ディジタル・ビデオ・テープ、ソリッド・ステートＲＡＭ、ソリッド・ステートＲＯＭ等が含まれる。ハード・ディスク・ドライブ１４１は、インタフェース１４０を介してシステム・バス１２１に接続されればよく、磁気ディスク・ドライブ１５１および光ディスク・ドライブ１５５は、インタフェース１５０のようなリムーバブル不揮発性メモリ用インタフェースによってシステム・バス１２１に接続されればよい。
【００２６】
以上で論じ図１に示すこれらのドライブおよびそれに関連するコンピュータ記憶媒体は、コンピュータ１１０のためのコンピュータ読み取り可能命令、データ構造、プログラム・モジュール、および他のデータの格納を行う。図１では、例えば、ハード・ディスク・ドライブ１４１は、オペレーティング・システム１４４、アプリケーション・プログラム１４５、他のプログラム・モジュール１４６、およびプログラム・データ１４７を格納することが示される。尚、これらのコンポーネントは、オペレーティング・システム１３４、アプリケーション・プログラム１３５、他のプログラム・モジュール１３６、およびプログラム・データ１３７と同一であること、または異なることもできる。オペレーティング・システム１４４、アプリケーション・プログラム１４５、他のプログラム・モジュール１４６、およびプログラム・データ１４７は、ここでは、これらが異なるコピーであることを示すために、異なる番号が与えられている。
【００２７】
ユーザーは、キーボード１６２、および一般にマウス、トラックボール、またはタッチ・パッドと呼ばれるポインティング・デバイス１６１というような入力デバイスによって、コマンドおよび情報をコンピュータ１１０に入力することができる。他の入力デバイス（図示せず）には、マイクロフォン（例えば、音声またはその他のオーディオを入力するため）、ジョイスティック、ゲーム・パッド、衛星ディッシュ、スキャナ、タッチ感応画面、書き込みタブレット、カメラ（例えば、ジェスチャーまたは他の視覚入力を入力するため）等を含むことができる。これらおよび他の入力デバイスは、多くの場合、ユーザー入力インタフェース１６０を介して処理ユニット１２０に接続される。ユーザー入力インタフェース１６０は、システム・バスに結合されるが、パラレル・ポート、ゲーム・ポート、またはユニバーサル・シリアル・バス（ＵＳＢ）のような他のインタフェースおよびバス構造によって接続されてもよい。
【００２８】
以上で識別した入力デバイスの内１つ以上の使用によって、自然ユーザー・インタフェース（ＮＵＩ）を策定することもできる。ＮＵＩは、音声認識、タッチおよびスタイラス認識、画面上および画面付近の双方におけるジェスチャー認識、エア・ジェスチャー、頭部および眼球追跡、音声および発話、視覚(vision)、タッチ、ジェスチャー、および機械インテリジェンス等に頼ることができる。ユーザーと対話処理するために採用することができるいくつかのＮＵＩ技術の例には、タッチ感応ディスプレイ、音声および発話認識、意図および目標理解、深度カメラ（立体視カメラ・システム、赤外線カメラ・システム、ＲＧＢカメラ・システム、およびこれらの組み合わせ等）を使用する動きジェスチャー検出、加速度計／ジャイロスコープを使用する動きジェスチャー検出、顔認識、３Ｄディスプレイ、頭部、眼球、および凝視追跡、没入拡張現実および仮想現実システム、ならびに電界検知電極を使用して脳の活動を検知する技術（ＥＥＧおよび関連方法）が含まれる。
【００２９】
更に、モニタ１９１または他のタイプのディスプレイ・デバイスも、ビデオ・インタフェース１９０のようなインタフェースを介して、システム・バス１２１に接続される。モニタに加えて、コンピュータは、スピーカ１９７およびプリンタ１９６のような他の周辺出力デバイスも含むことができ、これらは出力周辺インタフェース１９５を介して接続することができる。
【００３０】
コンピュータ１１０は、リモート・コンピュータ１８０のような１つ以上のリモート・コンピュータへの論理接続を使用して、ネットワーク接続環境 (networked environment)において動作することもできる。リモート・コンピュータ１８０は、パーソナル・コンピュータ、サーバー、ルーター、ネットワークＰＣ、ピア・デバイス、または他の一般的なネットワーク・ノードであってよく、通例、コンピュータ１１０に関して先に説明したエレメントの多くまたは全部を含むが、図１にはメモリ記憶デバイス１８１だけが示されている。図１に示す論理接続は、ローカル・エリア・ネットワーク（ＬＡＮ）１７１およびワイド・エリア・ネットワーク（ＷＡＮ）１７３を含むが、電話ネットワーク、近場(near field)ネットワーク、および他のネットワークを含むこともできる。このようなネットワーキング環境 (networking environment) は、事務所、企業規模のコンピュータ・ネットワーク、イントラネット、およびインターネットでは極普通である。
【００３１】
ＬＡＮネットワーキング環境において使用される場合、コンピュータ１１０は、ネットワーク・インタフェースまたはアダプター１７０を介してＬＡＮ１７１に接続される。ＷＡＮネットワーキング環境において使用される場合、コンピュータ１１０は、インターネットのようなＷＡＮ１７３を介して通信を確立するモデム１７２または他の手段を含めばよい。モデム１７２は、内蔵型でも外付けでもよく、ユーザー入力インタフェース１６０または他のしかるべきメカニズムを介してシステム・バス１２１に接続することができる。ネットワーク接続環境では、コンピュータ１１０に関して図示したプログラム・モジュール、またはその一部が、リモート・メモリ記憶デバイスに格納されてもよい。一例として、そして限定ではなく、図１は、リモート・アプリケーション・プログラム１８５を、メモリ・デバイス１８１上に存在するものとして示す。尚、図示したネットワーク接続は一例であり、コンピュータ間に通信リンクを確立する他の手段を使用してもよいことは認められよう。
【００３２】
不揮発性メモリ
既に述べたように、不揮発メモリにおいて進歩がなされつつある。本明細書において説明する主題の態様によれば、これらの進歩を利用するように、オペレーティング・システムを構築する(structured)ことができる。図２および図５は、本明細書において説明する主題の態様による不揮発性メモリを概略的に表すブロック図である。不揮発性メモリ２０５は、アドレスによってアクセスすることができるメモリ記憶エレメントのアレイを含むことができる。一実施態様では、不揮発性メモリ２０５を含むメモリ・デバイスは、メモリ・プリミティブ(memory primitives)を使用してアドレスすることもできる。不揮発性メモリ２０５にアクセスするために使用されるメモリ・プリミティブは、ＲＡＭのような揮発性メモリにアクセスするために使用されるものと同様または同一であってもよい。
【００３３】
高速不揮発メモリがメモリ・バスに取り付けられてもよい。例えば、現在、あるタイプの不揮発性メモリは、ＲＡＭよりも２〜４倍遅く動作し、フラッシュ・メモリまたはハード・ディスク・ストレージより２桁速く動作する。これらのタイプの不揮発性メモリは、低レイテンシーおよび高データ転送レートを有することができ、ストレージ・バス(storage bus)に接続されるよりも、メモリ・バスに接続されることによって一層活用することができる(benefit)。
【００３４】
図２に示すように、不揮発性メモリ２０５は、ファイル・システム領域２１０およびメモリ領域２１１に分割することができる。これらの領域の図示するサイズは、例示に過ぎない。一実施態様では、例えば、これらのサイズは、図２に示すサイズから著しく異なってもよい。
【００３５】
更に、不揮発性メモリ２０５は、１つ以上のサブシステムを使用して実装することもできる。例えば、多数のタイプの不揮発性メモリがシステム上にホストされる場合、あるいは不揮発性メモリの同じまたは異なるタイプの多数のメモリ・ユニットがシステム上にホストされる場合、システムは、不揮発性メモリにアクセスするために多数のサブシステムを含むことができる。
【００３６】
「ファイル・システム」という用語が本明細書において時々使用されるが、この用語は例示に過ぎないこと、そして本明細書における教示は、他のタイプの記憶システムにも適用できることは理解されるはずであろう。記憶システムは、永続的に保存されるデータを編成する１つ以上のハードウェアおよび／またはソフトアウェア・コンポーネントを含むことができる。
【００３７】
ファイル・システム領域２１０のサイズ、およびメモリ領域２１１のサイズは、例えば、構成設定動作(configuration operation)の間に、設定または再設定することもできる。構成設定動作は、オペレーティング・システムをインストールする前または後に、メモリ領域のサイズを所望通りに設定または再設定するために行うことができる。オペレーティング・システムは、不揮発性メモリ２０５の予め定められた位置において構成データを捜すように構成することができる。構成データは、ファイル・システム・データと、他の使用のために利用可能なメモリとの間で、不揮発性メモリをどのように分割すればよいか示すことができる。
【００３８】
メモリ領域２１１は、不揮発性メモリ２０５において、コンピュータのために追加の主メモリを設けるために、取り置きされている部分である。このメモリは、コンピュータの任意のＲＡＭまたは他の揮発性メモリの代わりに、またはそれに加えて使用されてもよい。
【００３９】
ファイル・システム領域２１０は、不揮発性メモリ２０５において、ファイル・システム・データのために取り置きされている部分である。物理的には、この領域におけるメモリ・エレメントには、メモリ領域２１１におけるメモリ・エレメントと同じようにアクセスすることができるが、メモリ・ハードウェアと関連しながら動作するファイル・システム・コンポーネントが、以下で更に詳しく説明するように、これらのアクセスに関して一定の規則を強制することもできる。
【００４０】
従前からのファイル・システムでは、ハード・ディスクからのデータのブロックは、主メモリにコピーすることができる。一旦主メモリに入ると、データを変更することができる。ある時点において、変更されたデータのブロックは、主メモリからハード・ディスクに書き込まれる。
【００４１】
本明細書において説明する主題の態様によれば、ファイル・システムは、従前のファイル・システムにおいて発生するコピーの一部を回避するように構成することができる。例えば、図２を参照すると、アプリケーションがブロック２１５においてデータを得ようとするとしてもよい。ブロック２１５におけるデータをブロック２１６におけるメモリにコピーする代わりに、ファイル・システムは、メモリ・ハードウェアがブロック２１６とブロック２１５との間においてエイリアスを作成することを要求することができる。エイリアスが作成されると、ブロック２１６を読み取ろうとする動作は、一定の条件を満たすときを除いて、ブロック２１５からデータを得ることになる。
【００４２】
エイリアスを作成した後、ブロック２１６への書き込みは、データをブロック２１６に書き込ませる。一実施態様では、メモリ・ハードウェアは、ブロック２１６へのデータの書き込み後の時点まで、ブロック２１６に書き込まれたデータをブロック２１５にコピーするのを待つことができる。他の実施態様では、メモリ・ハードウェアは、ブロック２１６に書き込まれたデータをブロック２１５にコピーする前に、ファイル・システムからの明示的なコマンドを待つこともできる。これによって、不揮発性メモリ２０５に対して書き込みが行われるとき、ファイル・システムが一層関与を強めることができる。
【００４３】
一旦ブロック２１６に対する書き込みが行われたなら、ブロック２１６からブロック２１５への１つ以上のエイリアスを断絶する(break)こともできる。例えば、ブロック２１５は、複数のサブブロックによって実装することもできる。一実施態様では、サブブロックは、不揮発性メモリ２０５を使用するメモリ・アーキテクチャー上においてアクセスすることができる、小さな固定サイズのメモリとすることができる。一実施態様では、ブロックは１ページのメモリに対応することができ、サブブロックはキャッシュ・ラインに対応することができる。
【００４４】
一実施態様では、ブロック２１６とブロック２１５との間においてエイリアスが設定されると、物理的に、ブロック２１６の各サブブロックと、ブロック２１５のその対応するサブブロックとの間に、エイリアスを設定することができる。この結果、ブロック２１６および２１５のメモリ・エレメント間に複数のエイリアスができる。
【００４５】
一実施態様では、ブロック２１６の一部に書き込まれるとき、この部分を含むサブブロックを決定することができ、これらのサブブロックに関連付けられたエイリアスを切断する(sever)ことができる。この切断は、ブロック２１６の後続の読み取りよりも前の任意の時点において行うことができる。ブロック２１６に対する後続の読み取りを受けたとき、この読み取りに対するデータは、エイリアスが切断されていないブロック２１５から、そしてエイリアスが切断されたブロック２１６から引き出される。
【００４６】
他の実施態様では、ブロック２１５の一部に書き込まれるとき、この部分を含むサブブロックを決定することができ、これらのサブブロックに関連付けられたエイリアスを切断することができる。この切断は、ブロック２１６の後続の読み取りよりも前の任意の時点において行うことができる。ブロック２１６に対する後続の読み取りを受けたとき、この読み取りに対するデータは、エイリアスが切断されていないブロック２１５から、そしてエイリアスが切断されたブロック２１６を介して引き出される。
【００４７】
ブロック２１６のサブブロックとブロック２１５のサブブロックとの間におけるエイリアスの切断と合わせて、更にブロック２１５のサブブロックにおいてデータを上書きする前に、ブロック２１５のサブブロックにおけるデータが、ブロック２１６の対応するサブブロック（またはブロック２１５のサブブロックにエイリアスされた任意の他のサブブロック）にアクセスしたときに得られるように、これを保存することができる。データの保存は、例えば、ブロック２１６に割り当てられた位置にデータをコピーすること、データを新たな位置にコピーしこの新たな位置を指し示すようにブロック２１６のエイリアスを更新すること、データをその現在の位置に保持し、ブロック２１５への読み取りによって変更後のデータが得られるように、ブロック２１５に関連付けられたマッピング構造を更新すること等を含むことができる。このビヘイビア(behavior)は、ブロック２１５のデータが変化したときでも、ブロック２１６を介して得ることができるデータを不変のまま維持する。
【００４８】
一実施態様では、ブロック２１５の一部に書き込まれるとき、またはブロック２１６の一部に書き込まれるとき、先に概要を説明したように、エイリアスは断絶される。他の実施態様では、ブロック２１６への書き込みに応答して、エイリアスが断絶されるが、ブロック２１５に対する書き込みに応答して断絶されることはない。他の実施態様では、エイリアスは、ブロック２１５への書き込みに応答して断絶されるが、ブロック２１６への書き込みをしようとしても断絶されることはない。特定のシステムに基づく(followed)実施態様は、ハードウェアまたはソフトウェアによって構成可能であっても、ハード・ワイヤ配線されても、またはハード・コード化されても、その他であってもよい。
【００４９】
図３は、本明細書において説明する主題の態様による、図２のメモリ・ブロックのサブブロック間におけるエイリアスの種々の状態を概略的に表すブロック図である。ブロック２１６とブロック２１５との間にエイリアスが設定される場合、これによって、ブロック２１６のサブブロックとブロック２１５のサブブロックの間に複数のエイリアスを設定することができる。ブロック２１６にアドレスされるデータのリード要求をこの状態において受けると、ブロック２１５におけるデータによってこの読み取りは満たされる(satisfy)。
【００５０】
ブロック３１６は、データがブロック２１６に書き込まれた後におけるブロック２１６を表す。具体的には、データは、サブブロック３０１〜３０３に書き込まれている。ブロック３１６を作成するためのデータ書き込みと関連付けて、サブブロック３０１〜３０３に対するエイリアスが切断されている。ブロック３１６にアドレスされる読み取りは、エイリアスが切断されてないブロック２１５からデータを引き出し、更にエイリアスが切断されたブロック３１６（例えば、ブロック３０１〜３０３）からデータを引き出す。メモリ・コントローラ（例えば、図４のメモリ・コントローラ４１０）は、存在するあらゆるエイリアスを考慮に入れて、しかるべき位置からデータを引き出すための回路を含むことができる。
【００５１】
図４および図６は、本明細書において説明する主題の態様にしたがって構成されたシステムのコンポーネント例を概略的に表すブロック図である。図４および図６に示すコンポーネントは、例示であり、必要とされるまたは含まれる可能性があるコンポーネントを全て含むことを意味するのではない。更に、コンポーネントの数は、本明細書において説明する主題の態様の主旨や範囲から逸脱することなく、他の実施形態では異なる場合もある。ある実施形態では、図４および図６と関連付けて説明するコンポーネントは、本明細書において説明する主題の態様の主旨や範囲から逸脱することなく、他のコンポーネント（図示するまたは図示しない）に含まれてもよく、またはサブコンポーネント内に置かれてもよい。ある実施形態では、図４および図６と関連付けて説明するコンポーネントおよび／または機能は、多数のデバイスにわたって分散されてもよい。
【００５２】
キャッシュ４１５は、不揮発性メモリ２０５からのデータをキャッシュするメモリ・エレメントを含むことができる。一実施態様では、キャッシュは、ダイナミックＲＡＭ（ＤＲＡＭ）、スタティックＲＡＭ（ＳＲＡＭ）、あるいは何らかの他のタイプの揮発性または不揮発性メモリを含むことができる。ある実施態様では、キャッシュ４１５を省略してもよい。ある実施態様では、１レベルよりも多いキャッシュがあってもよい。
【００５３】
メモリ・コントローラ４１０は、不揮発性メモリ２０５上のデータにアクセスするための回路を含むことができる。本明細書において使用する場合、アクセスとは、データの読み取り、データの書き込み、データの削除、データの更新、以上の内２つ以上を含む組み合わせ等を含むことができる。一実施態様では、メモリ・コントローラ４１０は、キャッシュ４１５のみを使用して、不揮発性メモリ２０５にアクセスすることができる。言い換えると、この実施態様では、メモリ・コントローラ４１０が読み取りまたは書き込みを行うときはいつでも、その読み取りまたは書き込みをキャッシュ４１５に送ることができる。読み取りでは、キャッシュ４１５がデータを有する場合、キャッシュ４１５はキャッシュ４１５からのデータを供給し、キャッシュがデータを有していない場合、不揮発性メモリ２０５からデータを得て、次いでこのデータを供給することができる。書き込みでは、キャッシュ４１５は、書き込みデータをキャッシュ４１５に格納することができ、キャッシュ動作方針にしたがって、そのキャッシュを不揮発性メモリ２０５にフラッシュする(flush)ことができる。
【００５４】
他の実施態様では、メモリ・コントローラ４１０は、キャッシュ４１５のためのコントローラとしても機能することができ、キャッシュ４１５または不揮発性メモリ２０５から適宜データを得ることができる。この実施態様では、メモリ・コントローラ４１０は、キャッシュ４１５に、キャッシュ動作方針にしたがってデータを不揮発性メモリ２０５に書き込ませることもできる。
【００５５】
メモリ・コントローラ４１０は、インタフェースを含むことができ、このインタフェースによって、ファイル・システム・ドライバ４０５は要求を送りデータを受けることができる。具体的には、このインタフェースは、以下を含む通信を可能にすることができる。
【００５６】
１．不揮発性メモリに対してエイリアスを作成する要求
一実施態様では、メモリ・コントローラ４１０は、不揮発性メモリ２０５のメモリのブロックを不揮発性メモリ２０５の他のメモリのブロックにエイリアスする要求を受けるように構築する(structure)ことができる。要求を受けた後、一実施態様では、メモリ・コントローラ４１０は、エイリアスされるブロックが２つ以上のサブブロックにおよぶ場合、多数のエイリアスを作成することができる。
【００５７】
他の実施態様では、メモリ・コントローラ４１０は、エイリアス要求毎に１つのエイリアスだけを作成するのでもよい。この実施態様では、ファイル・システム・ドライバ４０５は、所与のメモリのブロックに対していくつのエイリアスが必要とされるか判断し、これらのエイリアスの各々を確立するためにメモリ・コントローラ４１０と通信することが予期されればよい。
【００５８】
２．メモリのブロックを読み取る要求
一実施態様では、メモリ・コントローラ４１０は、不揮発性メモリ２０５のメモリのブロックを読み取る要求を受けるように構築することができる。ブロックがエイリアスされたメモリを含む場合、メモリ・コントローラ４１０は、エイリアスされたデータがエイリアスされたブロック（またはそのキャッシュされた表現）から得られることを確保することができる。ブロックが、エイリアスされないメモリを含む場合、メモリ・コントローラ４１０は、エイリアスされたデータが、エイリアスされないブロック（またはそのキャッシュされた表現）から得られることを確保することができる。要求されたブロックがエイリアスされたデータおよびエイリアスされないデータの双方を含む場合、メモリ・コントローラ４１０は、この要求に応答することと併せて、エイリアスされたデータおよびエイリアスされないデータを組み合わせることができる。
【００５９】
３．メモリのブロックに書き込む要求
一実施態様では、メモリ・コントローラ４１０は、不揮発性メモリ２０５のメモリのブロックに書き込む要求を受けるように構築することができる。そのメモリのブロックがエイリアスされている場合、メモリ・コントローラ４１０は、少なくとも、エイリアスされたブロックの読み取りに応答してデータを供給する前に、適宜エイリアスが断絶されることを確保することができる。メモリ・コントローラ４１０は、書き込みデータを、キャッシュに書き込ませることができる。メモリ・コントローラ４１０は、キャッシュ動作方針にしたがって、またはファイル・システム・ドライバ４０５からの明示的なコマンドに応答して、周期的にキャッシュからデータをフラッシュすることができる。
【００６０】
４．不揮発性メモリのブロックを不揮発性メモリの他の位置にコピーする要求
一実施態様では、メモリ・コントローラ４１０は、ファイル・システム・ドライバ４０５からのコピー・コマンドを受けるように構築することができる。コピー・コマンドに応答して、メモリ・コントローラ４１０は、そのブロックを不揮発性メモリ２０５の他の位置に論理的または物理的にコピーすることができる。ブロックを他の位置に物理的にコピーする場合、そのブロックからデータを読み取り、読み取ったデータを他の位置にコピーすることを伴えばよい。論理的にブロックをコピーする場合、例えば、データをそれがあるところに残すが、新たな位置に要求されたときにこのデータが戻されるように、マッピング・エレメントを変更することを含めばよい。
【００６１】
コピーするメモリの部分がキャッシュ４１５に入ったままで、不揮発性メモリ２０５にフラッシュされていない場合、これは種々の方法で処理することができる。例えば、一実施態様では、メモリ・コントローラ４１０は、そのデータをソース・ブロックにフラッシュしてまたはしないで、キャッシュ４１５内のデータを宛先ブロックにコピーすることを確保することができる。
【００６２】
他の実施態様では、ファイル・システム・ドライバ４０５が、コピー・コマンドを発行する前に、このコピーに関与するあらゆるダーティ・キャッシュをフラッシュするように要求することもできる。
【００６３】
５．再起動時に不揮発性メモリ２０５の一部または全部を消去する(zero)要求
オペレーティング・システムは、ＲＡＭを使用することに加えてまたはその代わりに、不揮発性メモリ２０５の一部を主メモリとして使用することがある。例えば、オペレーティング・システムは、コードおよびデータ構造を図２のメモリ領域２１１にロードする場合がある。不揮発性メモリ２０５は停電時にもデータを失わないので、このコードおよびデータは、不揮発性メモリ２０５をホストするコンピュータを再起動した後であっても残留することができる。再起動時にメモリ領域２１１にデータを有すると、種々の問題を起こすおそれがある。
【００６４】
一実施態様では、メモリ・コントローラ４１０は、再起動時消去(zero-on-restart)要求を受けるように構築することができる。応答して、メモリ・コントローラ４１０は、この要求を示すデータを格納し、再起動時に、論理的または物理的に、不揮発性メモリ２０５の要求された部分（例えば、メモリ領域２１１）を消去する(zero out)することができる。要求された部分を論理的に消去する場合、例えば、要求された部分を消去することを合図し(flag)、次いでそのブロックに対する読み取りまたは書き込み要求を受けるまで、ブロックを物理的に消去するのを待つことを伴うのでもよい。再起動後である限り、ファイル・システム・ドライバ４０５が消去と印されたブロックを要求するとき、システム・ファイル・ドライバ４０５は、消去ブロック(zeroed block)に対してゼロを受け、この消去機能(zeroing functionality)を設ける任意の実施態様を、本明細書において説明する主題の態様の主旨や範囲から逸脱することなく、使用することができる。
【００６５】
一実施態様では、メモリ・コントローラ４１０は、ブロックの複数の部分を並列に消去するために、ハードウェア並列処理を使用することもできる。このハードウェア並列処理は、多数のメモリ・エレメントを同時に消去することができる１つ以上の回路エレメントを含むことができる。
【００６６】
６．現在エイリアスされているブロックを再エイリアスする要求
不揮発性メモリ２０５を使用するオペレーティング・システムまたは他のプロセスは、ときとして、不揮発性メモリ２０５内のブロックを、不揮発性メモリ２０５内の他の位置に移動させたい場合がある。これは、移動されるメモリがエイリアスに関与する場合、問題を生ずるおそれがある。例えば、図５を参照すると、プロセスが、メモリ・ブロック２１５におけるデータをブロック５０５に移動させることを要求するとしてもよい。メモリ・ブロック２１６は、メモリ・ブロック２１５を指し示すようにエイリアスされるおそれがある。
【００６７】
エイリアスが新たなブロック５０５に変更されない場合、メモリ・ブロック２１５内のデータが変化すると、メモリ・ブロック２１６内のデータの読み取りは、変化したデータを戻すおそれがある。これは、例えば、ブロック２１６が変化していないデータ（例えば、ブロック５０５におけるデータ）にエイリアスし続けることをプログラムが予期する場合、問題を発生するおそれがある。
【００６８】
この問題およびその他の問題に取り組むために、メモリ・コントローラ４１０は、現在エイリアスされているブロックを再エイリアスする要求を受けるように構築することができる。例えば、一実施態様では、メモリ・コントローラ４１０は、指定された範囲内のメモリを、他の指定された範囲内のメモリに再エイリアスする要求を受けるように構築することができる。この実施態様では、メモリ・コントローラ４１０は、最初に指定された範囲を指し示す全てのエイリアスを判定し、これらのエイリアスが第２の指定された範囲を指し示すように再エイリアスすることができる。
【００６９】
他の実施態様では、メモリ・コントローラ４１０は、特定のエイリアスを新たな位置に再エイリアスする要求を受けるように構築することができる。例えば、図３および図４を参照すると、メモリ・コントローラ４１０は、ブロック２１５のサブブロックに対するエイリアスの内１つを再エイリアスする要求を受けるように構築することができる。この実施態様では、ファイル・システムがメモリの一部に対する１組のエイリアスを再エイリアスしようとするとき、ファイル・システム・ドライバ４０５は、各エイリアスを再エイリアスするコマンドをメモリ・コントローラ４１０に送ることと併せて、メモリのその部分に対する全てのエイリアスを判定するロジックを含むことができる。
【００７０】
図５に戻り、再エイリアス要求が受け入れられて処理されると、以前はブロック２１６からブロック２１５を指し示していたエイリアスを、ブロック２１６からブロック５０５に指し示すエイリアスと置き換えることができる。メモリ・コントローラは、「安全」に再エイリアス動作を実行するように構築することができる。この文脈における安全とは、再エイリアス要求の後に受け入れられる他の動作を実行する前に、論理的に再エイリアス動作が実行されることを意味する。一実施態様では、ファイル・システム・ドライバ４０５が、いずれの１組の動作を使用しても、再エイリアス動作が、それが受け取られたときに関して、順序通りに実行されなかったことを検出できない限り、メモリ・コントローラは、物理的に他の動作を実行することができる。
【００７１】
メモリ・コントローラは、本明細書において説明する主題の態様の主旨や範囲から逸脱することなく、他の方法で再エイリアス処理を実現することもできる。例えば、一実施態様では、メモリ・コントローラは、ブロック移動コマンドを受けるように構築することができ、そしてブロックが移動されたとき、そのブロックを指し示すエイリアスを自動的に再エイリアスすることができる。
【００７２】
他の実施態様では、メモリ・コントローラは、ブロック移動コマンドを受けるように構築することができ、更に物理的にブロックを他の位置にコピーすることなく、論理的にブロックを移動させるために、内部マッピング・エレメントを変更することができる。ある実施態様では、このようにブロックを移動させると、再エイリアス処理を実行する必要性をなくすことができる。例えば、あるエイリアスが、マッピング情報には関係なく、ブロックを指し示す場合、そのブロックを移動させるためにマッピング情報が変更されても、このエイリアスはなおもそのブロックを指し示す。
【００７３】
他の実施態様では、メモリ・コントローラは、ブロック移動コマンドによって自動的にトリガーされない再エイリアス・コマンドを受けるように構築することができる。この実施態様では、ファイル・システム・ドライバ４０５は、ブロックを適宜移動させることを要求することに加えて、明示的に再エイリアス処理を要求することができる。
【００７４】
以上の例は、再エイリアス・コマンドを実行するようにメモリ・コントローラを構成できる方法を全て含むことや、網羅的であることを意図するのではない。本明細書における教示に基づいて、当業者は、本明細書において説明する主題の態様の主旨や範囲から逸脱することなく使用することができる他の実施態様も認めることができよう。
【００７５】
ファイル・システム・ドライバ４０５は、コマンドを与え、メモリ・コントローラ４１０から応答を受けるソフトウェアおよび／またはハードウェア・コンポーネントであってもよい。ファイル・システム・ドライバ４０５は、ファイル・システムの記憶スタックの一部であってもよく、システム・バスまたは他の通信リンクを介してメモリ・コントローラ４１０と通信することもできる。ファイル・システム・ドライバ４０５は、ファイル・システムの記憶スタックにインタフェースを設けることができ、このインタフェースは、不揮発性メモリ２０５が、記憶スタックに利用可能な他のストレージ（例えば、ハード・ディスク、フラッシュ・メモリ、他の不揮発性または揮発性メモリ等）のように現われさせる。
【００７６】
本明細書における例の一部は、不揮発性メモリに関するエイリアスおよびその他のアクションについて説明したが、本明細書における教示は、他のメモリ構成を使用してファイル・システム領域およびメモリ領域が実装される実施態様にも適用することができる。例えば、ファイル・システム領域および／またはメモリ領域は、揮発性、不揮発性、または揮発性および不揮発性メモリの組み合わせで実装することもできる。更に、ファイル・システム領域は、メモリ領域以外のメモリ・タイプ上に実装することもできる。
【００７７】
これらの実施態様では、本明細書における教示を、例えば、揮発性から揮発性メモリへのエイリアス、揮発性から不揮発性メモリへのエイリアス、不揮発性から揮発性メモリへのエイリアス、２つ以上の異なるタイプのエイリアス（例えば、不揮発性から不揮発性へ、揮発性から不揮発性へ等）を有するシステム等にも適用することができる。更に、本明細書において説明する主題の態様の主旨や範囲から逸脱することなく、図４のメモリ・コントローラ４１０のようなメモリ・コントローラが、エイリアスの使用、作成、再エイリアス等を行わせ、更に本明細書において説明した他のアクションを実行させるインタフェースを設けることもできる。
【００７８】
図６に移ると、メモリ・コントローラ６０５が、インタフェース１６０および回路例６１５〜６１８と共に示されている。一実施形態では、回路が、抵抗器、トランジスター、キャパシター、電圧源、電流源、スイッチ、インダクター等のような物理コンポーネントだけを含むのでもよい。物理コンポーネントの内１つ以上を１つ以上のチップに統合することもできる。他の実施形態では、回路が物理コンポーネントを命令と一緒に含むこともできる。命令は、これらの物理コンポーネントがどのように動作すべきか指示する。命令は、揮発性または不揮発性メモリ内でエンコードすることができる。
【００７９】
メモリ・コントローラ６０５の回路は、例示であり、必要とされるまたは含まれる可能性がある回路を全て含むことを意図するのではない。更に、本明細書において説明する主題の態様の主旨や範囲から逸脱することなく、回路の個数は他の実施形態では異なることもあり得る。ある実施形態では、図６と関連付けて説明した回路は、本明細書において説明する主題の態様の主旨や範囲から逸脱することなく、他の回路に含まれても、サブ回路内に置かれてもよい。
【００８０】
インタフェース６１０は、ファイル・システム・ドライバ４０５がメモリ・コントローラ６０５と通信することを可能にする構造を含むことができる。例えば、インタフェース６１０は、ファイル・システム・ドライバに、要求およびこれらの要求に対する応答をエンコードする電気信号、光信号、または他の信号によって、メモリ・コントローラ６０５と通信させることができる。また、インタフェース６１０は、図４と関連付けて示したように、通信を可能にするように構築することもできる。
【００８１】
例えば、インタフェース６１０は、メモリの記憶システム・ブロックとメモリの主メモリ・ブロックとの間にエイリアスを作成する要求を受けるように構築することができる。メモリの記憶システム・ブロックは、例えば、記憶システムのデータを維持するために使用することができ、例えば、図２のファイル・システム領域２１０に対応することができる。主メモリ・ブロックは、コンピュータの主メモリに使用することができ、図２のメモリ領域２１１に対応することができる。
【００８２】
エイリアス回路６１５は、メモリの記憶システム・ブロックとメモリの主メモリ・ブロックとの間にエイリアスを、ファイル・システム・ドライバによって要求される通りに作成するように構築することができる。既に示したように、これらのメモリ・ブロック間でエイリアスを作成するには、これらのブロックのサブブロック間において複数のエイリアスを作成することを含む場合もある。エイリアス回路６１５は、更に、サブブロックへの書き込みの要求に応答して、このサブブロックに対するエイリアスを切断するように構築することもできる。一実施態様では、エイリアス回路６１５は、サブブロックから読み取る要求をサービスする直前まで、このサブブロックに対するエイリアスを切断するのを待つことができる。また、エイリアス回路６１５は、例えば、エイリアスされたブロックを移動させる要求に応答して、このエイリアスされたブロックを再エイリアスするように構築することもできる。
【００８３】
コピー回路６１６は、主メモリ・ブロックを新たな位置にコピーする要求に応答するように構築することができる。一実施態様では、コピー回路６１６は、主メモリ・ブロック内のデータを新たな位置に物理的にコピーすることによって応答することができる。他の実施態様では、コピー回路６１６は、前述のように、主メモリ・ブロック内にデータを残し、マッピング・エレメントを更新することによって、主メモリ・ブロック内のデータを新たな位置に論理的にコピーすることもできる。
【００８４】
消去回路(zeroing circuit)６１８は、要求されたメモリの範囲を消去する要求に応答するように構築される。要求されたメモリの範囲は、主メモリに使用されるメモリの一部または全部を含むことができる。一実施態様では、消去回路６１８は、要求された範囲を消去することを示すことによって、要求されたメモリの範囲を消去することもできる。一実施形態では、消去回路６１８は、要求された範囲の一部に対する読み取りまたは書き込み要求がメモリ・コントローラ６０５によって受け取られるまで、この部分を物理的に消去するのを待つことができる。他の実施形態では、消去回路６１８は、消去と指示されているメモリに対する読み取りに応答して、リード・キャッシュにゼロを入れることもできる。この実施形態では、消去回路６１８は、実際には物理的に指示された範囲を消去しないが、リード・キャッシュからサービスされるので、メモリに対する読み取りはゼロを戻すことができる。一実施態様では、消去回路は、主メモリをホストするコンピュータの再起動の指示を受ける後まで、メモリを消去する（例えば、物理的または論理的に）のを待つこともできる。
【００８５】
引き出し回路６１７は、ファイル・システム・ドライバの読み取り要求に応答するように構築することができる。あるエイリアスが切断されている場合、引き出し回路６１７は、エイリアスが切断されていない記憶システム・ブロックのサブブロックから第１データを得て、エイリアスが切断された主メモリ・ブロックのサブブロックから第２データを得て、次いで第１データおよび第２データを組み合わせて読み取り要求に応答することによって、要求に応答することができる。
【００８６】
一例では、メモリの主メモリ・ブロックは、サブブロックに分割することができるメモリのページを含むことができ、各サブブロックはキャッシュ・ラインに対応する。
図７〜図９は、本明細書において説明する主題の態様にしたがって行うことができるアクション例を概略的に現す流れ図である。説明を簡単にするために、図７〜図９と関連付けて説明する方法は、一連のアクトとして図示し説明することとする。尚、本明細書において説明する主題の態様は、例示されるアクトおよび／またはアクトの順序によって限定されないことは理解され、認められてしかるべきである。一実施形態では、アクトは、以下で説明するような順序で行われる。しかしながら、他の実施形態では、これらのアクトの内２つ以上が、並列にまたは他の順序で行われてもよい。他の実施形態では、これらのアクションの内１つ以上が、本明細書では提示および説明されない他のアクトと共に行われてもよい。更に、本明細書において説明する主題の態様にしたがって方法を実施するために、例示されるアクトの全てが必要ではない場合もある。加えて、方法は、代わりに、一連の相互に関係付けられた状態として、状態図によって、またはイベントとして、表せることは当業者には理解され認められよう。
【００８７】
図７は、本明細書において説明した主題の態様にしたがって、メモリ・コントローラの観点から、エイリアスの作成に伴って行うことができるアクション例を概略的に現す流れ図である。ブロック７０５において、アクションが開始する。
【００８８】
ブロック７１０において、エイリアスを作成する要求を受ける。例えば、図６を参照すると、メモリ・コントローラ６０５が、インタフェース６１０を介して、メモリのブロックをエイリアスする要求を受けることができる。この要求は、ファイル・システム・ドライバ４０５から来るのでもよい。この要求は、メモリの記憶システム・ブロックとメモリの主メモリ・ブロックの間におけるエイリアスの作成を要求するのでもよい。
【００８９】
ブロック７１５において、１つ以上のエイリアスを作成することができる。例えば、図６を参照すると、エイリアス回路６１５は、メモリの２つのブロック間でエイリアスを作成することができ、および／またはメモリの２つのブロックの対応するサブブロック間でエイリアスを作成することもできる。
【００９０】
ブロック７２０において、他のアクションがある場合、それを実行することができる。他のアクションには、例えば、メモリ・コントローラに関して本明細書において説明したアクションの内任意のものが含まれる。
【００９１】
図８は、本明細書において説明する主題の態様にしたがって、メモリ・コントローラの観点から、エイリアス・ブロック(aliased block)に対するデータを得ることに伴って行うことができるアクション例を概略的に現す流れ図である。ブロック８０５において、アクションが開始する。
【００９２】
ブロック８１０において、エイリアス・ブロックに対する読み取り要求を受ける。例えば、図２および図６を参照すると、メモリ・コントローラ６０５は、ブロック２１６におけるデータを読み取る要求を受けることができる。要求は、ファイル・システム・ドライバ４０５から来るのでもよく、インタフェース６１０を介して伝達されてもよい。
【００９３】
要求に応答して、該当するブロックまたはサブブロックからデータを得ることができる。例えば、図３および図６を参照すると、ブロック２１６および２１５のサブブロック間のエイリアスがいずれも切断されていない場合、引き出し回路６１７はブロック２１５からデータを得ることができる。図３に示したようにエイリアスが切断されている場合、引き出し回路６１７は、エイリアスが切断されていないブロック２１５のサブブロックから、そしてエイリアスが切断されているサブブロック３０１、３０２、および３０３からデータを得ることができる。
【００９４】
ブロック８２０において、必要であれば、データを組み合わせる。サブブロックのエイリアスの全てではないが一部が切断されている場合、要求に応答して、異なるブロックに含まれるサブブロックからのデータを組み合わせることができる。例えば、図３および図６を参照すると、ブロック２１６および２１５のサブブロック間のエイリアスのいずれも切断されていない場合、引き出し回路６１７は、メモリの異なるブロックからのサブブロックを組み合わせる必要がないとしてもよく、そうでなければ、引き出し回路６１７は、サブブロック３０１、３０２、および３０３からのデータを、エイリアスが切断されていないブロック２１５のサブブロックからのデータと組み合わせることができる。
【００９５】
ブロック８２５において、要求に応答してデータを供給する。例えば、図６を参照すると、メモリ・コントローラ６０５は、インタフェース６１０を介してデータをファイル・システム・ドライバ４０５に供給することができる。
【００９６】
ブロック８３０において、他のアクションがある場合、それを実行することができる。
図９は、本明細書において説明する主題の態様にしたがって、メモリ・コントローラを介してメモリにアクセスするコンポーネントにおいて行うことができるアクション例を示す流れ図である。ブロック９０５において、アクションが開始する。
【００９７】
ブロック９１０において、エイリアスを作成する要求を送る。例えば、図６を参照すると、ファイル・システム・ドライバ４０５は、メモリの２つのブロック間でエイリアスを作成する要求を送ることができる。この要求は、インタフェース６１０を介して、メモリ・コントローラ６０５に送ることができる。
【００９８】
ブロック９１５において、エイリアスを作成する要求が送られた後に、エイリアス・データを求める要求を送ることができる。例えば、図２および図６を参照すると、ファイル・システム・ドライバ４０５は、ブロック２１６にアドレスされた要求を送ることができる。また、この要求は、インタフェース６１０を介してメモリ・コントローラ６０５にも送ることができる。
【００９９】
ブロック９２０において、要求に応答して、データを受けることができる。例えば、図２および図６を参照すると、以前に送った要求に応答して、ファイル・システム・ドライバ４０５は、ブロック２１５から得られたデータを受けることができる。
【０１００】
ブロック９２５において、他のアクションがあれば、それを実行することができる。
以上の詳細な説明からわかるように、記憶システムおよびエイリアスに関する態様について説明した。本明細書において説明した主題の態様には、種々の変更および代替構造が可能であるが、図面にはそれらの中からある種の実証された実施形態を示し、以上で詳細に説明した。しかしながら、特許請求する主題の態様を、開示した特定の形態に限定する意図はなく、逆に、本発明は、本明細書において説明した主題の種々の態様の主旨および範囲に該当する全ての変更、代替構造、および均等物を包含することは、理解されてしかるべきである。
【図１】
0006324494.tif 000002
【図２】
0006324494.tif 000003
【図３】
0006324494.tif 000004
【図４】
0006324494.tif 000005
【図５】
0006324494.tif 000006
【図６】
0006324494.tif 000007
【図７】
0006324494.tif 000008
【図８】
0006324494.tif 000009
【図９】
0006324494.tif 000010