(57)【要約】  複数のメモリデバイスと、複数のコントローラと、複数のメモリデバイスを備える複数の電子デバイスとが説明される。一実施形態において、メモリデバイスは、揮発性メモリと、不揮発性メモリと、コントローラとを有し、コントローラは、メモリバッファおよびロジックを含む。ロジックは、アプリケーションからの複数の要求に応答して、メモリバッファを介して不揮発性メモリと揮発性メモリとの間でデータを移転させる。メモリバッファ内のデータはアプリケーションにアクセス可能なものである。複数の他の実施形態も開示され、特許請求の範囲に記載される。
2016523411.tif 000002
【特許請求の範囲】
【請求項１】
揮発性メモリと、
不揮発性メモリと、
コントローラと、
を備える
メモリデバイスであって、
前記コントローラは、
メモリバッファと、
アプリケーションからの複数の要求に応答して前記メモリバッファを介して前記不揮発性メモリと前記揮発性メモリとの間でデータを移転させるロジックと、を有し、
前記メモリバッファ内の前記データは、前記アプリケーションにアクセス可能である、
メモリデバイス。
【請求項２】
前記揮発性メモリは、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）を有し、
前記不揮発性メモリは、３次元クロスポイントメモリを有する、
請求項１に記載のメモリデバイス。
【請求項３】
前記不揮発性メモリは、前記揮発性メモリにバックアップを提供する、
請求項１または２に記載のメモリデバイス。
【請求項４】
前記コントローラは、ページイン要求を受信するロジックを有し、
前記ロジックは、前記ページイン要求に応答して、
前記不揮発性メモリから前記メモリバッファにページデータを移動し、
前記ページデータが利用可能な前記アプリケーションに信号を提供し、
前記アプリケーションからの読み取り動作に応答して、前記メモリバッファから前記揮発性メモリにページデータを書き込む、
請求項１から３の何れか一項に記載のメモリデバイス。
【請求項５】
前記メモリバッファは、複数のキャッシュラインを含み、
前記コントローラは、前記キャッシュラインが前記揮発性メモリに書き込まれた場合、前記メモリバッファ内の複数の前記キャッシュラインを無効化するロジックをさらに有する、
請求項４に記載のメモリデバイス。
【請求項６】
前記コントローラは、
ページアウト要求を受信するロジックを有し、
前記ロジックは、前記ページアウト要求に応答して、
予め定められたアドレスに対する読み取り動作を受信し、
前記読み取り動作に応答して前記不揮発性メモリから前記メモリバッファにページデータを読み取り、
前記不揮発性メモリに前記ページデータを書き込む、
請求項１から５の何れか一項に記載のメモリデバイス。
【請求項７】
電力格納をさらに備える、
請求項１から６の何れか一項に記載のメモリデバイス。
【請求項８】
オペレーティングシステムおよび少なくとも１つのアプリケーションを実行するプロセッサと、
揮発性メモリ、
不揮発性メモリ、及び、
コントローラを有する
メモリデバイスと、
前記少なくとも１つのアプリケーションと前記メモリデバイスとの間で複数のメモリアクセス動作を管理するドライバと、
を備える
電子デバイスであって、
前記コントローラは、
メモリバッファと、
前記アプリケーションからの複数の要求に応答して前記メモリバッファを介して前記不揮発性メモリと前記揮発性メモリとの間でデータを移転させるロジックと、
を有し、
前記メモリバッファ内の前記データは前記アプリケーションにアクセス可能である、
電子デバイス。
【請求項９】
前記揮発性メモリは、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）を含み、
前記不揮発性メモリは、３次元クロスポイントメモリを含む、
請求項８に記載の電子デバイス。
【請求項１０】
前記不揮発性メモリは、前記揮発性メモリにバックアップを提供する、
請求項８または９に記載の電子デバイス。
【請求項１１】
前記ドライバは、ロジックを含み、
前記ロジックは、
前記不揮発性メモリから前記揮発性メモリにページデータを移動するページイン要求を生成し、
前記ページ用に前記プロセッサ内の１つまたは複数のキャッシュラインを無効化する、
請求項８から１０の何れか一項に記載の電子デバイス。
【請求項１２】
前記コントローラは、前記ページイン要求を受信するロジックを含み、
前記ロジックは、前記ページイン要求に応答して、
前記不揮発性メモリから前記メモリバッファにページデータを移動し、
前記ページデータが利用可能な前記アプリケーションに信号を提供し、
前記アプリケーションからの読み取り動作に応答して前記メモリバッファから前記揮発性メモリにページデータを書き込む、
請求項１１に記載の電子デバイス。
【請求項１３】
前記メモリバッファは、複数のキャッシュラインを含み、
前記コントローラは、前記キャッシュラインが前記揮発性メモリに書き込まれた場合、前記メモリバッファ内の複数の前記キャッシュラインを無効化するロジックを含む、
請求項１２に記載の電子デバイス。
【請求項１４】
前記ドライバは、ロジックを含み、
前記ロジックは、
前記不揮発性メモリから前記揮発性メモリにページデータを移動するページアウト要求を生成する、
請求項８から１０の何れか一項に記載の電子デバイス。
【請求項１５】
前記コントローラは、前記ページアウト要求を受信するロジックを含み、
前記ロジックは、前記ページアウト要求に応答して、
予め定められたアドレスに対する読み取り動作を受信し、
前記読み取り動作に応答して、前記不揮発性メモリから前記メモリバッファにページデータを読み取り、
前記不揮発性メモリに前記ページデータを書き込む、
請求項１４に記載の電子デバイス。
【請求項１６】
前記メモリデバイスは、電力格納を備える
請求項１に記載のメモリデバイス。
【請求項１７】
揮発性メモリおよび不揮発性メモリを有するメモリデバイス用のコントローラであって、
前記コントローラは、
メモリバッファと
ロジックとを有し、
前記ロジックは、アプリケーションからの複数の要求に応答して前記メモリバッファを介して前記不揮発性メモリと前記揮発性メモリとの間でデータを移転させ、
前記メモリバッファ内の前記データは、前記アプリケーションにアクセス可能である、
コントローラ。
【請求項１８】
前記揮発性メモリは、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）を含み、
前記不揮発性メモリは、３次元クロスポイントメモリを含む、
請求項１７に記載のコントローラ。
【請求項１９】
前記不揮発性メモリは、前記揮発性メモリにバックアップを提供する、
請求項１７または１８に記載のコントローラ。
【請求項２０】
前記コントローラは、ページイン要求を受信するロジック
をさらに含み、
前記ロジックは、前記ページイン要求に応答して、
前記不揮発性メモリから前記メモリバッファにページデータを移動し、
前記ページデータが利用可能な前記アプリケーションに信号を提供し、
前記アプリケーションからの読み取り動作に応答して前記メモリバッファから前記揮発性メモリにページデータを書き込む、
請求項１７から１９の何れか一項に記載のコントローラ。
【請求項２１】
前記メモリバッファは、複数のキャッシュラインを含み、
前記コントローラは、前記キャッシュラインが前記揮発性メモリに書き込まれた場合、前記メモリバッファ内の複数の前記キャッシュラインを無効化するロジック
をさらに含む
請求項２０に記載のコントローラ。
【請求項２２】
前記コントローラは、ページアウト要求を受信するロジックをさらに備え、
前記ロジックは、前記ページアウト要求に応答して
予め定められたアドレスに対する読み取り動作を受信し、
前記読み取り動作に応答して前記不揮発性メモリから前記メモリバッファにページデータを読み取り、
前記不揮発性メモリに前記ページデータを書き込む、
請求項１７から２１の何れか一項に記載のコントローラ。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、概して、エレクトロニクスの分野に関する。特に、本発明のいくつかの実施形態は概して、ハイブリッドメモリデバイスに関する。
【背景技術】
【０００２】
例えば、マルチコア処理のような、システムアーキテクチャにおける複数の継続的改良およびアプリケーションにおける複数の改良は、複数のメモリシステムにおいて複数の対応する改良を要する。例えば、複数のインメモリデータベースと複数の仮想化サーバのような、プロセッサシステムにおける実質的により大きいメモリ容量を要するコアの数およびアプリケーションの数の増加に伴い、大きいメモリ容量は、ますます重要となっている。複数の既存のメモリシステム（例えば、複数のダブルデータレートデュアルインラインメモリモジュール（ＤＤＲ‐ＤＩＭＭｓ））を拡張する能力は、コスト、電力消費、密度および性能を含むいくつかの要因によって限定される。典型的な大きいメモリプラットホームは、１６ＤＩＭＭｓまたはそれより大きい程度の大きい容量を含んでよい。これは、コンポーネントの配置、冷却、複数の信号のルーティングと同様に、複数の課題を生み、これらの全ては、それらのシステムの複数のコストに加わる。
【０００３】
容量に加えて、永続メモリは、複数の特定のアプリケーションにおいてますます有用である。典型的な例は、インメモリデータベースであり、データベースのサイズが大きくなるにつれて、メモリイメージを構築する時間はかなり長くなり得る。パワーサイクリング中で複数のメモリコンテンツを維持する能力は、起動時間を減少し得て、複数の冗長運用系または待機系サーバの要件を取り除き得る。
【０００４】
従って、複数のハイブリッドメモリデバイスのユーティリティは期待できる。
【図面の簡単な説明】
【０００５】
本詳細な説明は添付の複数の図を参照して提供される。複数の図において、参照番号の最も左の桁は、その参照番号が最初に登場する図を特定する。異なる複数の図に同じ複数の参照番号が用いられる場合、同様のまたは同一の複数の要素を示す。
【図１】本明細書において説明する複数の様々な実施形態に係るハイブリッドメモリデバイスを実装する装置の複数のコンポーネントの概略ブロック図を示す。
【図２Ａ】本明細書において説明する複数の様々な実施形態に係るハイブリッドメモリデバイスが実装され得る典型的なアーキテクチャの概略ブロック図を示す。
【図２Ｂ】本明細書において説明する複数の様々な実施形態に係る揮発性メモリの概略図を示す。
【図３】本明細書において説明する複数の様々な実施形態に係るメモリマッピングの概略図を示す。
【図４】本明細書において説明する複数の様々な実施形態に係るハイブリッドメモリデバイスを実装する方法における複数の動作を示す複数のフローチャートである。
【図５】本明細書において説明する複数の様々な実施形態に係るハイブリッドメモリデバイスを実装する方法における複数の動作を示す複数のフローチャートである。
【図６】本明細書において説明する複数の様々な実施形態に係るハイブリッドメモリデバイスを実装するのに適合し得る複数の電子デバイスの概略ブロック図を示す。
【図７】本明細書において説明する複数の様々な実施形態に係るハイブリッドメモリデバイスを実装するのに適合し得る複数の電子デバイスの概略ブロック図を示す。
【図８】本明細書において説明する複数の様々な実施形態に係るハイブリッドメモリデバイスを実装するのに適合し得る複数の電子デバイスの概略ブロック図を示す。
【図９】本明細書において説明する複数の様々な実施形態に係るハイブリッドメモリデバイスを実装するのに適合し得る複数の電子デバイスの概略ブロック図を示す。
【図１０】本明細書において説明する複数の様々な実施形態に係るハイブリッドメモリデバイスを実装するのに適合し得る複数の電子デバイスの概略ブロック図を示す。
【発明を実施するための形態】
【０００６】
いくつかのメモリシステムは、揮発性メモリとして頻繁に具現化され、キャッシュメモリとして機能し得るローカルな高速アクセスメモリ、および、例えば、磁気または光学メモリなどの不揮発性メモリを備え得る１つまたは複数の遠隔メモリデバイスを用いて、実装され得る。例として、複数の遠隔メモリデバイスは、１つまたは複数のデュアルインラインメモリモジュール（ＤＩＭＭｓ）を備えてよく、これらの各々は、１つまたは複数のメモリランクを有してよい。１つまたは複数のメモリランクは、逐次に１つまたは複数のダイナミックランダムアクセスメモリ（ＤＲＡＭ）チップを含んでよく、例えば、３次元クロスポイントメモリ、フラッシュメモリ、強誘電体メモリ、シリコン‐酸化物‐窒化物‐酸化物‐シリコン構造（ＳОＮОＳ）メモリ、ポリマーメモリ、メモリ、ナノワイヤ、強誘電体トランジスタ、ランダムアクセスメモリ（ＦｅＴＲＡＭまたはＦｅＲＡＭ）、ナノワイヤまたは電気的消去可能でプログラマブルな読み取り専用メモリ（ＥＥＰＲОＭ）のような、不揮発性メモリを有してよい。いくつかの電子デバイス（例えば、複数のスマートフォン、複数のタブレットコンピュータなど）は、１つまたは複数のＤＲＡＭを含む複数のより簡易な遠隔メモリシステムを有してよい。
【０００７】
揮発性メモリ（例えば、ＤＲＡＭ）および不揮発性メモリを含む複数のハイブリッドメモリデバイスは、本明細書において説明される。複数のデバイスは、コントローラをさらに備え、コントローラは、メモリバッファと、アプリケーションからの複数の要求に応答してメモリバッファを介して不揮発性メモリと揮発性メモリの間でメモリバッファにおけるアプリケーションにアクセス可能なデータを移転させるロジックと、を有する。メモリデバイスを組み込む電子デバイスは、オペレーティングシステムおよび１つまたは複数のアプリケーションを実行するプロセッサと、少なくとも１つのアプリケーションとメモリデバイスの間の複数のメモリアクセス動作を管理するオペレーティングシステムデバイスドライバと、を有してよい。
【０００８】
本明細書において説明される複数の技術は、複数の様々なコンピューティングシステム（例えば、複数のサーバ、複数のデスクトップコンピュータ、複数のノートブック、複数のスマートフォン、複数のポータブルゲームコンソールなどを含む）に提供されてよく、複数の様々なコンピューティングシステムは、一般にデュアルインラインメモリモジュール（ＤＩＭＭ）および不揮発性メモリに組み込まれる複数のＤＲＡＭチップを含むメモリシステムを備えてよい。そのような複数の実施形態において、１つまたは複数のＤＩＭＭは、別々の制御ロジックを含んでよい。
【０００９】
以下の説明において、複数の様々な実施形態の十分な理解を提供すべく、多数の具体的な詳細が記載される。しかし、本発明の複数の様々な実施形態は、具体的な詳細がなくても実施され得る。複数の他の例において、本発明の複数の特定の実施形態を曖昧にしないように、複数の周知の、方法、手順、コンポーネントおよび回路は、詳細には説明されていない。さらに、本発明の複数の実施形態の複数の様々な態様は、複数の集積半導体回路（「ハードウェア」）、１つまたは複数のプログラムにまとめられた複数のコンピュータ可読命令（「ソフトウェア」）、またはハードウェアおよびソフトウェアのある組み合わせのような、複数の様々な手段を用いて実行されてよい。この開示の複数の目的として、「ロジック」の参照は、ハードウェア、ソフトウェア、またはそれらのある組み合わせのいずれかを意味するものとする。
【００１０】
図１は、本明細書において説明されるように、いくつかの実施形態に係るハイブリッドメモリデバイスを組み込むのに適合し得る典型的な電子デバイス１００の概略図を示す。複数の様々な実施形態において、電子デバイス１００は、パーソナルコンピュータ、ラップトップコンピュータ、パーソナルデジタルアシスタント、携帯電話、娯楽デバイス、タブレットコンピュータ、電子リーダ、または他のコンピューティングデバイスとして、具現化されてよい。
【００１１】
電子デバイス１００は、ランダムアクセスメモリおよび／または読み取り専用メモリとして、実装され得る、システムハードウェア１２０およびメモリ１３０を備える。バッテリ１８０のような電力ソースは、電子デバイス１００に連結されてよい。
【００１２】
システムハードウェア１２０は、１つまたは複数のプロセッサ１２２、複数のバス構造１２３、１つまたは複数のグラフィックスプロセッサ１２４、複数のメモリシステム１２５、複数のネットワークインタフェース１２６、および複数の入力／出力インタフェース１２７を有してよい。一実施形態において、プロセッサ１２２は、アメリカ合衆国カリフォルニア州サンタクララのインテル・コーポレーション社より入手可能なインテル（登録商標）Ｃｏｒｅ２  Ｄｕｏ（登録商標）プロセッサとして具現化されてよい。本明細書において用いられるように、用語「プロセッサ」は、マイクロプロセッサ、マイクロコントローラ、複合命令セットコンピューティング（ＣＩＳＣ）マイクロプロセッサ、縮小命令セットコンピューティング（ＲＩＳＣ）マイクロプロセッサ、超長命令語（ＶＬＩＷ）マイクロプロセッサ、または任意の他の種類のプロセッサもしくは処理回路のような、任意の種類の計算要素を意味するものとするが、それらに限定されるものではない。
【００１３】
複数のバス構造１２３は、システムハードウェア１２０の複数の様々なコンポーネントを接続する。一実施形態において、複数のバス構造１２８は、メモリバス、周辺バスまたは外部バス、および／または任意の様々な利用可能バスアーキテクチャを使用したローカルバスを含む、１つまたは複数のいくつかの種類のバス構造であってよく、これらに限定されないが、１１ビットバス、工業規格アーキテクチャ（ＩＳＡ）、マイクロチャネルアーキテクチャ（ＭＳＡ）、拡張ＩＳＡ（ＥＩＳＡ）、インテリジェントドライブエレクトロニクス（ＩＤＥ）、ＶＥＳＡローカルバス（ＶＬＢ）、ペリフェラルコンポーネントインターコネクト（ＰＣＩ）、ユニバーサルシリアルバス（ＵＳＢ）、アドバンスグラフィックスポート（ＡＧＰ）、パーソナルコンピュータメモリカード国際協会（ＰＣＭＣＩＡ）バス、およびスモールコンピュータシステムインターフェース（ＳＣＳＩ）を含んでよい。
【００１４】
グラフィックスプロセッサ１２４は、グラフィックスおよび／または複数のビデオオペレーションを管理する付属プロセッサとして機能してよい。グラフィックスプロセッサ１２４は、電子デバイス１００のマザーボード上に集積させられてよく、または、拡大スロットを介してマザーボード上に連結されてよい。
【００１５】
複数のメモリシステム１２５は、上述のように、例えば、キャッシュメモリ、揮発性メモリと不揮発性メモリのうちの１つまたは複数の形態のようなローカルメモリを有してよい。
【００１６】
一実施形態において、ネットワークインタフェース１２６は、イーサネット（登録商標）インタフェースのような有線インタフェース（例えば、電気電子技術者協会／ＩＥＥＥ８０２．３‐２００２を参照）であってよく、または、ＩＥＥＥ８０２．１１ａ，ｂまたはｇに準拠するインタフェース（例えば、システムＬＡＮ／ＭＡＮ間のＩＴ通信および情報交換のためのＩＥＥＥ規格−パートＩＩ：無線ＬＡＮ媒体アクセス制御（ＭＡＣ）および物理層（ＰＨＹ）規格修正４：２．４ＧＨｚ帯におけるさらなる高データレート拡張、８０２．１１Ｇ−２００３を参照）などの無線インタフェースであってよい。無線インタフェースの別の例は、汎用パケット無線サービス（ｇｅｎｅｒａｌ ｐａｃｋｅｔ ｒａｄｉｏ ｓｅｒｖｉｃｅ，ＧＰＲＳ）インタフェース（例えば、ＧＰＲＳハンドセットの複数の要件に関する複数のガイドライン、Ｇｌｏｂａｌ Ｓｙｓｔｅｍ ｆｏｒ Ｍｏｂｉｌｅ Ｃｏｍｍｕｎｉｃａｔｉｏｎｓ／ＧＳＭ（登録商標）アソシエーション  Ｖｅｒ．３．０．１、２００２年１２月を参照）であってよい。
【００１７】
Ｉ／Ｏインタフェース１２７は、例えば、ディスプレイ、タッチスクリーン、１つまたは複数のスピーカ、キーボード、マウス、タッチパッドなどの、１つまたは複数のＩ／Ｏデバイス上に実装されてよい。
【００１８】
メモリ１３０は、電子デバイス１００の複数の動作を管理するオペレーティングシステム１４０を格納してよい。一実施形態において、オペレーティングシステム１４０は、例えば、１つまたは複数のオペレーティングシステムデバイスドライバのような、システムハードウェア１２０にインタフェースを提供するハードウェアインタフェースモジュール１５４を含む。また、オペレーティングシステム１４０は、電子デバイス１００の動作に用いられる複数のファイルを管理するファイルシステム１５０および電子デバイス１００上で実行する複数の処理を管理する処理制御サブシステム１５２を含んでよい。
【００１９】
オペレーティングシステム１４０は、遠隔ソースから複数のデータパケットおよび／または複数のデータストリームを送受信するシステムハードウェア１２０と連携して動作し得る１つまたは複数の通信インタフェースを含んで（または、管理して）よい。オペレーティングシステム１４０は、オペレーティングシステム１４０とメモリ１３０に内蔵する１つまたは複数のアプリケーションモジュールとの間でインタフェースを提供するシステムコールインタフェースモジュール１４２をさらに含んでよい。オペレーティングシステム１４０は、ＵＮＩＸ（登録商標）オペレーティングシステム、または、それらの派生システム（例えば、Ｌｉｎｕｘ（登録商標）、Ｓｏｌａｒｉｓなど）、もしくは、Ｗｉｎｄｏｗｓ（登録商標）ブランドのオペレーティングシステム、または、複数の他のオペレーティングシステムとして具現化されてよい。
【００２０】
いくつかの実施形態において、メモリ１３０は、オペレーティングシステム１４０の監視の下、１つまたは複数のプロセッサ１２２上で実行し得る１つまたは複数のアプリケーション１６０と、１つまたは複数のメモリドライバ１６２とを格納してよい。アプリケーション１６０およびドライバ１６２は、１つまたは複数のプロセッサ１２２上で実行可能な有形の非一時的コンピュータ可読媒体（すなわち、ソフトウェアまたはファームウェア）に格納される複数のロジック命令として、具現化されてよい。代替的に、これらのアプリケーションは、例えば、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）などのプログラマブルデバイス上のロジックとして、具現化されてよい。代替的に、これらのアプリケーションは、集積回路内にハードワイヤされ得るロジックに変えられてよい。
【００２１】
図２Ａは、本明細書において説明される複数の様々な実施形態に従ってハイブリッドメモリデバイスが中に実装され得る典型的なアーキテクチャの概略ブロック図である。図２Ａを参照すれば、いくつかの実施形態において、中央処理装置（ＣＰＵ）パッケージ２００は、制御ハブ２２０およびローカルメモリ２３０に連結される１つまたは複数のＣＰＵ２１０を含んでよい。制御ハブ２２０は、メモリコントローラ２２２およびメモリインタフェース２２４を含む。
【００２２】
メモリインタフェース２２４は、通信バス２３５によって１つまたは複数の遠隔メモリデバイス２４０に連結される。一例として、通信バス２３５は、ダブルデータレートメモリバスであってよい。
【００２３】
メモリデバイス２４０は、コントローラ２４２と、不揮発性メモリ２５０と、揮発性メモリ２６０と、電力格納２８０とを有してよい。コントローラ２４２は、１つまたは複数のコントローラレジスタ２４４と、複数のメモリバッファ２４６と、マルチプレクサ２４８のような入力／出力インタフェースとを含む。
【００２４】
複数の様々な実施形態において、不揮発性メモリ２５０は、例えば、相変化メモリ、ＮＡＮＤ（フラッシュ）メモリ、強誘電体ランダムアクセスメモリ（ＦｅＴＲＡＭ）、ナノワイヤベースの不揮発性メモリ、メモリスタ技術を組み込むメモリ、スタティックランダムアクセスメモリ（ＳＲＡＭ）、相変化メモリ（ＰＣＭ）のような３次元（３Ｄ）クロスポイントメモリ、スピン注入メモリ（ＳＴＴ‐ＲＡＭ）またはＮＡＮＤメモリを用いて実装されてよい。
【００２５】
複数の様々な実施形態において、揮発性メモリ２６０は、１つまたは複数のＤＲＡＭメモリモジュールを用いて実装されてよい。例として、図２Ｂを参照すれば、いくつかの実施形態において、揮発性メモリ２６０は、メモリコントローラ１２２に通信リンクを提供するメモリチャネル２７２に連結される１つまたは複数のデュアルインラインメモリモジュール（ＤＩＭＭ）２７０を含んでよい。図２Ｂに示される実施形態において、各ＤＩＭＭ２７０は、第１ランク２７４および第２ランク２７６を含み、第１ランク２７４と第２ランク２７６の各々が複数のＤＲＡＭモジュール２７８を含む。当業者は、揮発性メモリ２６０はより多くのまたはより少ないＤＩＭＭ２７０を含んでよく、各ＤＩＭＭはより多くのまたはより少ないランクを含んでよいことを認識するであろう。さらに、いくつかの電子デバイス（例えば、複数のスマートフォン、複数のタブレットコンピュータなど）は、１つまたは複数のＤＲＡＭを含む複数のより簡易なメモリシステムを有してよい。
【００２６】
図３を参照すれば、いくつかの実施形態において、不揮発性メモリ２５０は、揮発性メモリ２６０より大きい。これは、オペレーティングシステム１４０に提示されるシステム物理メモリが揮発性メモリ２６０のサイズによって限定されるアドレッシングスキームを可能にする。不揮発性メモリ２５０は、揮発性メモリ２６０の不揮発性メモリバックアップを提供するバックアップ領域を含む。残りの不揮発性メモリアドレス空間は、ドライバ１６２によって管理されるページング空間として利用可能である。つまり、アプリケーション１６０に利用可能な全体の仮想アドレス空間は、総計の不揮発性物理メモリアドレス空間であり得る。
【００２７】
通常、オペレーティングシステムは、支援する適切なシステム物理メモリを有する割り当てられた仮想メモリを確保することによって、例えば、ハードディスクドライブまたはソリッドステートドライブのような不揮発性ストレージデバイスから仮想メモリへのページングを限定する。ページングは、通常、非アクティブ期間後に処理を再開するように限定される。メモリデバイス２４０において、不揮発性メモリ２５０から揮発性メモリへのコピーは、例えば、ＤＩＭＭのような同一のメモリデバイス上で発生し、非常に急速に発生し得る。また、アプリケーション１６０は、不揮発性メモリから揮発性メモリへのコピーが継続すると同時に、データにアクセスすることが許可され得る。これは、アプリケーション１６０とドライバ１６２とが同時に複数のページフォルトを処理することを可能にする。
【００２８】
さらに、不揮発性メモリ２５０と揮発性メモリ２６０との間の全てのデータ移動はメモリデバイス２４０上で保たれるので、通信チャネル２３５は、実際のデータアクセスについてプロセッサによってのみ利用される。  この限定されたデータ移動プロファイルは、仮想メモリページングを実装するのに要される電力を実質的に低減できる。
【００２９】
これらの要因は、不揮発性メモリ２５０と揮発性メモリ２６０との間のより多くの動的ページングを可能にし、つまり、アプリケーション１６０に用いられるより大きい仮想アドレス空間を提供する。複数のアプリケーションによる複数のメモリアクセスは、揮発性メモリに向けられ、よって、高メモリ性能を取得する。
【００３０】
上述のように、いくつかの実施形態において、メモリデバイス２４０内のコントローラ２４２は、電子デバイス１００内のドライバ１６２と協働してメモリデバイス２４０内の複数のメモリオペレーションを管理する。コントローラ２４２および／またはドライバ１６２によって実装された複数の動作については、図４から５を参照して説明される。図４は、不揮発性メモリ２５０から揮発性メモリ２６０に１つまたは複数のページのコピーを管理する実装された複数の動作（すなわち、ページインオペレーション）を示し、一方で、図５は、揮発性メモリから不揮発性メモリに１つまたは複数のページのコピーを管理する実装された複数の動作（すなわち、ページアウトオペレーション）を示す。
【００３１】
まず、図４を参照すれば、オペレーション４１０では、アプリケーション１６０は、オペレーティングシステム１４０に送信されるページフォルトになるページフォルトをもたらすページを読み取る。オペレーション４１５では、オペレーティングシステム１４０は、アプリケーション１６０からのページフォルト要求を受信し、ページフォルト要求に応答して、アプリケーション１６０に要求されたページデータ（すなわち、ページイン要求）を不揮発性メモリ２５０から揮発性メモリ２６０に移転させるようにドライバ１６２を呼ぶ（オペレーション４２０）。オペレーション４２５では、ドライバ１６２は、ページ移転要求を受信し、オペレーション４３０では、ドライバ１６２は、不揮発性メモリ２５０からメモリバッファ２４６にページを移転させるようにコントローラ２４２をプログラムする。データ要求は、バス２３５を介してメモリデバイス２４０内のコントローラ２４２に転送される。オペレーション４３５では、ドライバ１６２は、複数のＣＰＵ２１０内のページ用にキャッシュラインを無効化する。
【００３２】
オペレーション４４０では、コントローラ２４２は、ページイン要求を受信し、オペレーション４４５では、コントローラ２４２は、不揮発性メモリ２５０からコントローラ２４２内の複数のメモリバッファ２４６に要求されたページデータをコピーする。オペレーション４５０では、コントローラ２４２は、ドライバ１６２に戻される完了状態信号をセットする。オペレーション４５５では、ドライバ１６２は、オペレーティングシステム１４０に渡される状態信号を読み取る。
【００３３】
オペレーション４６０では、オペレーティングシステム１４０は、ドライバ１６２から信号完了を受信し、オペレーション４６５では、オペレーティングシステム１４０は、アプリケーション１６０にページをリリースする。オペレーション４７０では、アプリケーションは、オペレーティングシステム１４０がページフォルトを処理するまで待つ。ページがアプリケーションにリリースされたとき、制御がオペレーション４７０に移り、アプリケーション１６０は複数のメモリバッファ２４６からのページデータを読み取る（オペレーション４７５）。オペレーション４８０では、コントローラ２４２は、読み取り要求を受信し、オペレーション４８５では、コントローラ２４２は、読み取り要求に応答して、メモリバッファ２４６から揮発性メモリ２６０にページを供給してバッファをリリースする。アプリケーションがデータを読み取ったとき、コントローラ２４２は、揮発性メモリ２６０にページデータを書き込み（オペレーション４５５）、キャッシュライン毎にバッファを無効化する。つまり、ページインオペレーションは、不揮発性メモリ２６０に対するアドレスコンフリクトがないことを確保する。以後の複数のページフォルトオペレーションにおいて、ドライバ１６２がメモリバッファ２４６内に使用されていないメモリがないと発見した場合、次にドライバ１６２は、例えば、揮発性メモリ２６０に単一メモリラインになるように複数のダミーの上書きを行うことによって、揮発性メモリ２６０に複数のバッファをフラッシュすることができる。これは、ＣＰＵ２１０とバッファ移転との間の不揮発性メモリアクセスにコンフリクトがないことを確保する。オペレーション４９０では、アプリケーション１６０は、新しいデータを用いる。
【００３４】
図５を参照すれば、ページアウトオペレーションにおいて、アプリケーションまたはオペレーティングシステム１４０は、アプリケーション１６０に使用されべく、揮発性メモリ２６０のページを利用可能にする必要がある（オペレーション５１０）。オペレーション５１５では、オペレーティングシステム１４０は、ドライバ１６２に揮発性メモリ２６０から不揮発性メモリ２５０にページデータを移動するように要求する。オペレーション５２０では、ドライバ１６２は、要求を受信してメモリバッファ２４６が読み取り動作に利用可能であることを確保するチェックを行う（オペレーション５２５）。オペレーション５３０では、ドライバ１６２は、複数のメモリバッファ２４６を通じて揮発性メモリ２６０から不揮発性メモリ２５０にページのコピーをするようにコントローラ２４２をプログラムする。
【００３５】
オペレーション５３５では、ドライバ１６２は、コントローラ２４２のメモリバッファ２４６内の「ダミー」位置に対して複数の一連の読み取り動作を実行する。例として、ドライバ１６２は、４ＫＢのページに対して複数の６４キャッシュライン読み取り動作を実行してよい。コントローラが揮発性メモリ２６０から不揮発性メモリ２５０にページをコピーすると同時に、複数の「ダミー」読み取り動作は、ＣＰＵ２１０を複数のダミー位置を読み取るようにビジー状態に保持させる。これは、揮発性メモリ２６０からメモリバッファ２４６にページを読み取ることと、ＣＰＵ２１０が別のアプリケーション用に揮発性メモリ２６０を読み取ろうとすることとの間の潜在的コンフリクトを回避する。
【００３６】
オペレーション５４０では、コントローラ２４２は、ページアウト要求を受信する。オペレーション５４５では、コントローラ２４２は、ドライバ１６２にダミーデータを提供し、オペレーション５５０では、コントローラ２４２は、バックグラウンドオペレーションとして、揮発性メモリ２６０からメモリバッファ２４６にページデータをコピーする。複数のダミー読み取り動作は、ページデータがコピーされるまで、複数のメモリバッファ２４６をビジー状態に保持させる。いくつかの実施形態において、コントローラ２４２は、オペレーション５３０において実行された全てのダミー読み取り動作について揮発性メモリ２６０から読み取り動作を実装し、揮発性メモリ２６０にアクセスする時のコンフリクトを回避する。
【００３７】
オペレーション５５５では、ドライバ１６２は、ＣＰＵ２１０内のキャッシュメモリからのページを無効化し、オペレーション５６０では、ドライバ１６２は、揮発性メモリ２６０からオペレーティングシステム１４０にページをリリースする。オペレーション５６５では、オペレーティングシステム１４０は、ドライバ１６２からページデータが揮発性メモリに使用されていないという信号を受信する。
【００３８】
上述のように、いくつかの実施形態において、電子デバイスは、コンピュータシステムとして具現化されてよい。図６は、本発明の実施形態に係るコンピューティングシステム６００のブロック図を示す。コンピューティングシステム６００は、１つまたは複数の中央処理装置ＣＰＵ６０２または相互接続ネットワーク（またはバス）６０４を介して通信を行う複数のプロセッサを含んでよい。プロセッサ６０２は、汎用プロセッサ、ネットワークプロセッサ（コンピュータネットワーク６０３経由で通信を行われたデータを処理する）、または複数の他の種類のプロセッサ（縮小命令セットコンピューティング（ＲＩＳＣ）プロセッサまたは複合命令セットコンピューティング（ＣＩＳＣ）プロセッサを含む）を含んでよい。さらに、プロセッサ６０２は、単一または複数コア設計を含んでよい。複数コア設計を含むプロセッサ６０２は、同一の集積回路（ＩＣ）ダイ上の複数の異なる種類のプロセッサコアを集積し得る。また、複数コア設計を有するプロセッサ６０２は、複数の対称的または非対称的マルチプロセッサとして、実装されてよい。一実施形態において、１つまたは複数のプロセッサ６０２は、図１の複数のプロセッサ１０２と同一または同様であってよい。例えば、１つまたは複数のプロセッサ６０２は、図１から３を参照して説明された制御ユニット１２０を含んでよい。また、図３から５を参照して説明された複数の動作は、システム６００の１つまたは複数のコンポーネントによって実行されてよい。
【００３９】
チップセット６０６はまた、相互接続ネットワーク６０４と通信を行ってよい。チップセット６０６は、メモリ制御ハブ（ＭＣＨ）６０８を含んでよい。ＭＣＨ６０８は、メモリ６１２（図１のメモリ１３０と同一または同様であってよい）と通信を行うメモリコントローラ６１０を含んでよい。メモリ４１２は、ＣＰＵ６０２またはコンピューティングシステム６００に含まれる任意の他のデバイスによって実行されてよい、複数の命令のシーケンスを含むデータを格納してよい。本発明の一実施形態において、メモリ６１２は、ランダムアクセスメモリ（ＲＡＭ）、動的ＲＡＭ（ＤＲＡＭ）、同期ＤＲＡＭ（ＳＤＲＡＭ）、スタティックＲＡＭ（ＳＲＡＭ）または複数の他の種類のストレージデバイスなど、１つまたは複数の揮発性ストレージ（またはメモリ）デバイスを含んでよい。不揮発性メモリはまた、ハードディスクのように利用されてもよい。複数の追加デバイスは、複数のＣＰＵおよび／または複数のシステムメモリのように、相互接続ネットワーク６０４を介して通信を行ってよい。
【００４０】
ＭＣＨ６０８はまた、ディスプレイデバイス６１６と通信を行うグラフィックスインタフェース６１４を含んでよい。本発明の一実施形態において、グラフィックスインタフェース６１４は、アクセラレーテッドグラフィックスポート（ＡＧＰ）を介してディスプレイデバイス６１６と通信を行ってよい。本発明の一実施形態において、（フラットパネルディスプレイのような）ディスプレイ６１６は、例えば、ビデオメモリまたはシステムメモリのようなストレージデバイスに格納された画像のデジタル表現を、ディスプレイ６１６によって解読および表示される複数の表示信号に変換する信号コンバータを通じて、グラフィックスインタフェース６１４と通信を行ってよい。ディスプレイデバイスによって生成される複数の表示信号は、ディスプレイ６１６によって解読され、次にその上に表示される前に、複数の様々な制御デバイスを渡されてよい。
【００４１】
ハブインタフェース６１８は、ＭＣＨ６０８と入力／出力制御ハブ（ＩＣＨ）６２０とが通信を行うことを可能にし得る。ＩＣＨ６２０は、コンピューティングシステム６００と通信を行うＩ／Ｏデバイスにインタフェースを提供してよい。ＩＣＨ６２０は、ペリフェラルコンポーネントインターコネクト（ＰＣＩ）ブリッジ、ユニバーサルシリアルバス（ＵＳＢ）コントローラ、または複数の他の種類の周辺ブリッジもしくは複数のコントローラのような周辺ブリッジ（またはコントローラ）６２４を通じてバス６２２と通信を行ってよい。ブリッジ６２４は、ＣＰＵ６０２と複数の周辺デバイスとの間でデータパスを提供してよい。複数の他の種類の複数のトポロジは利用されてよい。また、複数のバスは、例えば、複数のブリッジ又は複数のコントローラを通じて、ＩＣＨ６２０と通信を行ってよい。さらに、本発明の複数の様々な実施形態において、ＩＣＨ６２０と通信を行う複数の他の周辺機器は、統合ドライブエレクトロニクス（ＩＤＥ）、またはスモールコンピュータシステムインタフェース（ＳＣＳＩ）ハードドライブ、ＵＳＢポート、キーボード、マウス、パラレルポート、シリアルポート、フロッピー（登録商標）ディスクドライブ、デジタル出力サポート（例えば、デジタルビデオインタフェース（ＤＶＩ））、もしくは複数の他のデバイスを含んでよい。
【００４２】
バス６２２は、オーディオデバイス６２６と、１つまたは複数のディスクドライブ６２８と、ネットワークインタフェースデバイス６３０（コンピュータネットワーク６０３と通信を行う）と通信を行ってよい。複数の他のデバイスは、バス６２２を介して通信を行ってよい。また、本発明のいくつかの実施形態において、（ネットワークインタフェースデバイス６３０のような）複数の様々なコンポーネントは、ＭＣＨ６０８と通信を行ってよい。さらに、本明細書で説明される、プロセッサ６０２と１つまたは複数の他のコンポーネントは、単一のチップを形成（例えば、システムオンチップ（ＳｏＣ）を提供）するように組み合わせられてよい。さらに、本発明の複数の他の実施形態において、グラフィックスアクセラレータ６１６は、ＭＣＨ６０８内に含まれてよい。
【００４３】
さらに、コンピューティングシステム６００は、揮発性および／または不揮発性メモリ（またはストレージ）を含んでよい。例えば、不揮発性メモリは、読み取り専用メモリ（ＲＯＭ）、プログラマブルＲＯＭ（ＰＲＯＭ）、消去可能ＰＲＯＭ（ＥＰＲＯＭ）、電気的ＥＰＲＯＭ（ＥＥＰＲＯＭ）、ディスクドライブ（例えば、６２８）、フロッピー（登録商標）ディスク、コンパクトディスクＲＯＭ（ＣＤ−ＲＯＭ）、デジタル多用途ディスク（ＤＶＤ）、フラッシュメモリ、光磁気ディスク、または電子データ（例えば、複数の命令を含む）を格納可能な複数の他の種類の不揮発性機械可読メディアのうち１つまたは複数を含んでよい。
【００４４】
図７は、本発明の実施形態に係るコンピューティングシステム７００のブロック図を示す。システム７００は、１つまたは複数のプロセッサ７０２‐１から７０２‐Ｎ（概して、本明細書では「複数のプロセッサ７０２」または「プロセッサ７０２」と称される）を含んでよい。複数のプロセッサ７０２は、相互接続ネットワークまたはバス７０４を介して通信を行ってよい。各プロセッサは、複数の様々なコンポーネントを含んでよい。それらのコンポーネントのうちのいくつかについては、明確にすべく、プロセッサ７０２‐１のみを参照して説明される。従って、残りのプロセッサ７０２‐２から７０２‐Ｎの各々は、プロセッサ７０２‐１を参照して説明される複数のコンポーネントと同一または同様なものを含んでよい。
【００４５】
一実施形態において、プロセッサ７０２‐１は、１つまたは複数のプロセッサコア７０６‐１から７０６‐Ｍ（本明細書では「複数のコア７０６」、またはより概しては「コア７０６」と称される）、共有キャッシュ７０８、ルータ７１０、および／またはプロセッサ制御ロジックもしくはユニット７２０を含んでよい。複数のプロセッサコア７０６は、単一の集積回路（ＩＣ）チップ上に実装されてよい。さらに、チップは、１つまたは複数の共有および／または専用キャッシュ（例えば、キャッシュ７０８）、複数のバスまたは複数の相互接続（例えば、バスまたは相互接続ネットワーク７１２）、複数のメモリコントローラまたは複数の他のコンポーネントを含んでよい。
【００４６】
一実施形態において、ルータ７１０は、プロセッサ７０２‐１および／またはシステム７００の複数の様々なコンポーネントの間で通信を行うように用いられてよい。さらに、プロセッサ７０２‐１は、１つより多くのルータ７１０を含んでよい。さらに、多数のルータ７１０は、プロセッサ７０２‐１内または外の複数の様々なコンポーネントの間でデータルーティングを可能にするように通信を行ってよい。
【００４７】
共有キャッシュ７０８は、複数のコア７０６のようなプロセッサ７０２‐１の１つまたは複数のコンポーネントによって利用されるデータ（例えば、複数の命令を含む）を格納してよい。例えば、共有キャッシュ７０８は、プロセッサ７０２の複数のコンポーネントによるアクセスをより高速にすべく、メモリ７１４内に格納されるデータをローカルにキャッシュしてよい。一実施形態において、キャッシュ７０８は、中レベルキャッシュ（例えば、レベル２（Ｌ２）、レベル３（Ｌ３）、レベル４（Ｌ４）または複数の他のレベルのキャッシュ）、ラストレベルキャッシュ（ＬＬＣ）、および／またはそれらの複数の組み合わせを含んでよい。さらに、プロセッサ７０２‐１の複数の様々なコンポーネントは、バス（例えば、バス７１２）、および／またはメモリコントローラもしくはハブを通じて直接に共有キャッシュ７０８と通信を行ってよい。図７に示されるように、いくつかの実施形態において、複数のコア７０６のうち１つまたは複数は、レベル１（Ｌ１）キャッシュ７１６‐１（概して、本明細書では「Ｌ１キャッシュ７１６」と称される）を含んでよい。一実施形態において、制御ユニット７２０は、図２Ａのメモリコントローラ２２２を参照して上述された複数の動作を実装するロジックを含んでよい。
【００４８】
図８は、本発明の実施形態に係るコンピューティングシステムのプロセッサコア７０６および複数の他のコンポーネントの一部のブロック図を示す。一実施形態において、図８に示される複数の矢印は、コア７０６を通じた複数の命令のフローの方向を示す。１つまたは複数のプロセッサコア（例えば、プロセッサコア７０６）は、図７を参照して説明されたもののような単一の集積回路チップ（またはダイ）上に実装されてよい。さらに、チップは、１つまたは複数の、共有および／または専用キャッシュ（例えば、図７のキャッシュ７０８）、複数の相互接続（例えば、図７の相互接続７０４および／または７１２）、複数の制御ユニット、複数のメモリコントローラまたは複数の他のコンポーネントを含んでよい。
【００４９】
図８に示されるように、プロセッサコア７０６は、コア７０６による実行を目的とする複数の命令（複数の条件付き分岐を有する複数の命令を含む）をフェッチするフェッチユニット８０２を含んでよい。複数の命令は、メモリ７１４のような複数の任意のストレージデバイスからフェッチされてよい。コア７０６はまた、フェッチされた命令をデコードするデコードユニット８０４を含んでよい。例えば、デコードユニット８０４は、フェッチされた命令を複数のｕｏｐ（複数のマイクロオペレーション）にデコードしてよい。
【００５０】
また、コア７０６は、スケジューリングユニット８０６を含んでよい。スケジューリングユニット８０６は、複数の命令がディスパッチ可能となるまで、例えば、デコードされた命令の全てのソース値が適用可能となるまで、複数のデコードされた命令（例えば、デコードユニット８０４から受信されたもの）の格納に関連付けられた複数の様々な動作を実行してよい。一実施形態において、スケジューリングユニット８０６は、複数のデコードされた命令をスケジューリングし、および／またはこれらを実行すべく、実行ユニット８０８に発し（または、ディスパッチし）てもよい。実行ユニット８０８は、複数のディスパッチされた命令が（例えば、デコードユニット８０４によって）デコードされ、（例えば、スケジューリングユニット８０６によって）ディスパッチされた後、これらを実行してよい。一実施形態において、実行ユニット８０８は、１つより多くの実行ユニットを含んでよい。実行ユニット８０８はまた、加算、減算、乗算、および／または除算のような複数の様々な算術演算を実行してよく、１つまたは複数の論理演算ユニット（ＡＬＵ）を含んでよい。一実施形態において、コプロセッサ（図示せず）は、実行ユニット８０８と共に複数の様々な算術演算を実行してよい。
【００５１】
さらに、実行ユニット８０８は、複数の命令をアウトオブオーダで実行してよい。よって、一実施形態において、プロセッサコア７０６は、アウトオブオーダプロセッサコアであってよい。コア７０６はまた、リタイアメントユニット８１０を含んでよい。リタイアメントユニット８１０は、実行された複数の命令がコミットされた後でこれらをリタイアしてよい。一実施形態において、実行された複数の命令のリタイアは、プロセッサの状態が複数の命令の実行からコミットされること、複数の命令によって用いられる複数の物理レジスタが割り当て解除されることなどをもたらしてよい。
【００５２】
コア７０６はまた、１つまたは複数のバス（例えば、バス８０４および／または８１２）を介して、プロセッサコア７０６の複数のコンポーネントと（図８を参照して説明された複数のコンポーネントのような）複数の他のコンポーネントとの間の通信を行うことを可能にするバスユニット７１２を含んでよい。コア７０６はまた、コア７０６の複数の様々なコンポーネントによってアクセスされるデータ（例えば、複数の電力消費状態設定に関する複数の値）を格納する１つまたは複数のレジスタ８１６を含んでよい。
【００５３】
さらに、図７は、制御ユニット７２０が相互接続７１２を介してコア７０６に連結されるものとして示すが、複数の様々な実施形態においては、制御ユニット７２０は、バス７０４などを介してコアに連結されるコア７０６の内部のような他の箇所に配置され得る。
【００５４】
いくつかの実施形態において、本明細書で説明される複数のコンポーネントのうち１つまたは複数は、システムオンチップ（ＳｏＣ）デバイスとして具現化されてよい。図９は、一実施形態に係るＳｏＣパッケージのブロック図を示す。図９に示めされるように、ＳｏＣパッケージ９０２は、１つまたは複数の中央処理装置（ＣＰＵ）コア９２０、１つまたは複数のグラフィックスプロセッサユニット（ＧＰＵ）コア９３０、入力／出力（Ｉ／Ｏ）インタフェース９４０、およびメモリコントローラ９４２を含む。ＳｏＣパッケージ９０２の複数の様々なコンポーネントは、本明細書において複数の他の図を参照して説明されるもののような相互接続またはバスに連結されてよい。また、ＳｏＣパッケージ９０２は、本明細書において複数の他の図を参照して説明されるもののような、より多くのまたはより少ない複数のコンポーネントを含んでよい。さらに、ＳｏＣパッケージ９０２の各コンポーネントは、例えば、本明細書において複数の他の図を参照して説明されるような、１つまたは複数の他のコンポーネントを含んでよい。一実施形態において、ＳｏＣパッケージ９０２（およびその複数のコンポーネント）は、例えば、単一の半導体デバイス内にパッケージ化される１つまたは複数の集積回路（ＩＣ）ダイ上に提供される。
【００５５】
図９に示めされるように、ＳｏＣパッケージ９０２は、メモリコントローラ９４２を介して、（本明細書において複数の他の図を参照して説明されるメモリと同様のまたは同一のものであってよい）メモリ９６０に連結される。一実施形態において、メモリ９６０（またはその一部）は、ＳｏＣパッケージ９０２上に集積され得る。
【００５６】
Ｉ／Ｏインタフェース９４０は、例えば、本明細書において複数の他の図を参照して説明されるような相互接続および／またはバスを介して、１つまたは複数のＩ／Ｏデバイス９７０に連結されてよい。Ｉ／Ｏデバイス９７０は、１つまたは複数のキーボード、マウス、タッチパッド、ディスプレイ、画像／ビデオキャプチャデバイス（カメラまたはカムコーダ／ビデオレコーダなど）、タッチスクリーン、スピーカなどを含んでよい。
【００５７】
図１０は、本発明の実施形態に係るポイントツーポイント（ＰｔＰ）構成において設置されるコンピューティングシステム１０００を示す。特に、図１０は、複数のプロセッサ、メモリおよび複数の入力／出力デバイスが多数のポイントツーポイントインタフェースによって相互接続されるシステムを示す。
【００５８】
図１０に示めされるように、システム１０００は、いくつかのプロセッサを含んでよく、明確にすべく、プロセッサ１００２および１００４の２つのみが示される。プロセッサ１００２および１００４は、それぞれ、メモリ１０１０および１０１２と通信を行うことを可能にするローカルメモリコントローラハブ（ＭＣＨ）１００６および１００８を含んでよい。いくつかの実施形態において、ＭＣＨ１００６および１００８は、図１のメモリコントローラ１２０および／またはロジック１２５を含んでよい。
【００５９】
一実施形態において、プロセッサ１００２および１００４は、図７を参照して説明された複数のプロセッサ７０２のうちの１つであってよい。プロセッサ１００２および１００４は、それぞれ、ＰｔＰインタフェース回路１０１６および１０１８を用いてポイントツーポイント（ＰｔＰ）インタフェース１０１４を介してデータを交換してよい。また、プロセッサ１００２および１００４は、それぞれ、ポイントツーポイントインタフェース回路１０２６、１０２８、１０３０および１０３２を用いて、個々のＰｔＰインタフェース１０２２および１０２４を介して、チップセット１０２０とデータを交換してよい。チップセット１０２０は、さらに、例えば、ＰｔＰインタフェース回路１０３７を用いて、高性能グラフィックスインタフェース１０３６を介して、高性能グラフィックス回路１０３４とデータを交換してよい。
【００６０】
図１０に示されるように、図１の１つまたは複数のコア１０６および／またはキャッシュ１０８は、複数のプロセッサ１００４内に配置されてよい。しかし、本発明の複数の他の実施形態は、図１０のシステム１０００内の複数の他の回路、複数の論理ユニット、または複数のデバイスに存在してよい。さらに、本発明の複数の他の実施形態は、図１０に示されるいくつかの回路、論理ユニット、またはデバイス全体に分散されてよい。
【００６１】
チップセット１０２０は、ＰｔＰインタフェース回路１０４１を用いてバス１０４０と通信を行ってよい。バス１０４０は、バスブリッジ１０４２と複数のＩ／Ｏデバイス１０４３のような、それ自体と通信を行う１つまたは複数のデバイスを含んでよい。バスブリッジ１０４４は、バス１０４０を介して、キーボード／マウス１０４５、複数の通信デバイス１０４６（コンピュータネットワーク１００３と通信を行い得る、複数のモデム、複数のネットワークインタフェースデバイス、または複数の他の通信デバイスなど）、オーディオＩ／Ｏデバイス、および／またはデータストレージデバイス１０４８のような、複数の他のデバイスと通信を行ってよい。データストレージデバイス１０４８（ハードディスクドライブまたはＮＡＮＤフラッシュベースソリッドステートドライブであってよい）は、プロセッサ１００４によって実行され得るコード１０４９を格納してよい。
【００６２】
以下の複数の例は、さらなる複数の実施形態に関する。
【００６３】
例１は、揮発性メモリと不揮発性メモリとコントローラとを有するメモリデバイスである。コントローラは、メモリバッファと、アプリケーションからの複数の要求に応答してメモリバッファを介して不揮発性メモリと揮発性メモリとの間でデータを移転させるロジックと、を含み、メモリバッファ内のデータは、アプリケーションにアクセス可能である。
【００６４】
例２において、例１の揮発性メモリは、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）を任意選択的に含んでよく、不揮発性メモリは、３次元クロスポイントメモリを含む。
【００６５】
例３において、例１から２の何れか１つの主題は、揮発性メモリにバックアップを提供する不揮発性メモリを任意選択的に含むことができる。
【００６６】
例４において、例１から３の何れか１つの主題は、ページイン要求を受信し、ページイン要求に応答して不揮発性メモリからメモリバッファにページデータを移動し、ページデータが利用可能なアプリケーションに信号を提供し、アプリケーションからの読み取り動作に応答してメモリバッファから揮発性メモリにページデータを書き込むロジックを任意選択的に含むことができる。
【００６７】
例５において、例１から４の何れか１つの主題は、複数のキャッシュラインを含むメモリバッファを任意選択的に含むことができ、コントローラは、キャッシュラインが揮発性メモリに書き込まれた場合、メモリバッファ内の複数のキャッシュラインを無効化するロジックをさらに含むことができる。
【００６８】
例６において、例１から５の何れか１つの主題は、ページアウト要求を受信し、ページアウト要求に応答して予め定められたアドレスに対する読み取り動作を受信し、読み取り動作に応答して不揮発性メモリからメモリバッファにページデータを読み取り、不揮発性メモリにページデータを書き込むロジックを任意選択的に含むことができる。
【００６９】
例７において、例１から６の何れか１つの主題は、電力格納を任意選択的に含むことができる。
【００７０】
例８は、オペレーティングシステムおよび少なくとも１つのアプリケーションを実行するプロセッサと、揮発性メモリおよび不揮発性メモリ並びにコントローラを有するメモリデバイスと、少なくとも１つのアプリケーションとメモリデバイスとの間の複数のメモリアクセス動作を管理するドライバとを備える電子デバイスである。コントローラは、メモリバッファと、アプリケーションからの複数の要求に応答してメモリバッファを介して不揮発性メモリと揮発性メモリとの間でデータを移転させるロジックとを有し、メモリバッファ内のデータは、アプリケーションにアクセス可能である。
【００７１】
例９において、例８の揮発性メモリは、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）を任意選択的に含むことができ、不揮発性メモリは、３次元クロスポイントメモリを含む。
【００７２】
例１０において、例８から９の何れか１つの主題は、揮発性メモリにバックアップを提供する不揮発性メモリを任意選択的に含むことができる。
【００７３】
例１１において、例８から１０の何れか１つの主題は、不揮発性メモリから揮発性メモリにページデータを移動するページイン要求を生成し、ページ用にプロセッサ内の１つまたは複数のキャッシュラインを無効化するロジックを任意選択的に含むことができる。
【００７４】
例１２において、例８から１１の何れか１つの主題は、ページイン要求を受信し、ページイン要求に応答して不揮発性メモリからメモリバッファにページデータを移動し、ページデータが利用可能なアプリケーションに信号を提供し、アプリケーションからの読み取り動作に応答してメモリバッファから揮発性メモリにページデータを書き込むロジックを任意選択的に含むことができる。
【００７５】
例１３において、例８から１２の何れか１つの主題は、複数のキャッシュラインを含むメモリバッファと、キャッシュラインが揮発性メモリに書き込まれた場合、メモリバッファ内の複数のキャッシュラインを無効化するロジックとを任意選択的に含むことができる。
【００７６】
例１４において、例８から１３の何れか１つの主題は、不揮発性メモリから揮発性メモリにページデータを移動するページアウト要求を生成するロジックを任意選択的に含むことができる。
【００７７】
例１５において、例８から１４の何れか１つの主題は、ページアウト要求を受信し、ページアウト要求に応答して予め定められたアドレスに対する読み取り動作を受信し、読み取り動作に応答して不揮発性メモリからメモリバッファにページデータを読み取り、不揮発性メモリにページデータを書き込むロジックを任意選択的に含むことができる。
【００７８】
例１６において、例８から１５の何れか１つの主題は、電力格納を任意選択的に含むことができる。
【００７９】
例１７は、揮発性メモリおよび不揮発性メモリを含むメモリデバイス用のコントローラである。コントローラは、メモリバッファと、アプリケーションからの複数の要求に応答してメモリバッファを介して不揮発性メモリと揮発性メモリとの間でデータを移転させるロジックとを含み、メモリバッファ内のデータは、アプリケーションにアクセス可能である。
【００８０】
例１８において、例１７の揮発性メモリは、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）を任意選択的に含むことができ、不揮発性メモリは、３次元クロスポイントメモリを含む。
【００８１】
例１９において、例１７から１８の何れか１つの主題は、揮発性メモリにバックアップを提供する不揮発性メモリを任意選択的に含むことができる。
【００８２】
例２０において、例１７から１９の何れか１つの主題は、ページイン要求を受信し、ページイン要求に応答して不揮発性メモリからメモリバッファにページデータを移動し、ページデータが利用可能なアプリケーションに信号を提供し、アプリケーションからの読み取り動作に応答してメモリバッファから揮発性メモリにページデータを書き込むロジックを任意選択的に含むことができる。
【００８３】
例２１において、例１７から２０の何れか１つの主題は、複数のキャッシュラインを含むメモリバッファと、キャッシュラインが揮発性メモリに書き込まれた場合、メモリバッファ内の複数のキャッシュラインを無効化するロジックとを任意選択的に含むことができる。
【００８４】
例２２において、例１７から２１の何れか１つの主題は、ページアウト要求を受信し、ページアウト要求に応答して予め定められたアドレスに対する読み取り動作を受信し、読み取り動作に応答して不揮発性メモリからメモリバッファにページデータを読み取り、不揮発性メモリにページデータを書き込むロジックを任意選択的に含むことができる。
【００８５】
例２３は、非一時的コンピュータ可読媒体上に格納された複数のロジック命令を備えるコンピュータプログラム製品である。複数のロジック命令は、それら自身が揮発性メモリおよび不揮発性メモリを含むメモリデバイス用のコントローラによって実行された場合、アプリケーションからの複数の要求に応答してメモリバッファを介して不揮発性メモリと揮発性メモリとの間でメモリバッファにおけるアプリケーションにアクセス可能なデータを移転させるロジックをするようにコントローラを構成する。
【００８６】
例２４において、例２３の主題は、非一時的コンピュータ可読媒体上に格納された複数のロジック命令を任意選択的に含むことができる。複数のロジック命令は、それら自身が揮発性メモリおよび不揮発性メモリを含むメモリデバイス用のコントローラによって実行された場合、ページイン要求を受信し、ページイン要求に応答して不揮発性メモリからメモリバッファにページデータを移動し、ページデータが利用可能なアプリケーションに信号を提供し、アプリケーションからの読み取り動作に応答してメモリバッファから揮発性メモリにページデータを書き込むようにコントローラを構成する。
【００８７】
例２５において、例２３から２４の何れか１つの主題は、複数のキャッシュラインを含むメモリバッファと、非一時的コンピュータ可読媒体上に格納される複数のロジック命令とを任意選択的に含むことができる。複数のロジック命令は、それら自身が揮発性メモリおよび不揮発性メモリを含むメモリデバイス用のコントローラによって実行された場合、キャッシュラインが揮発性メモリに書き込まれたときにはメモリバッファ内の複数のキャッシュラインを無効化するようにコントローラを構成する。
【００８８】
例２６において、例２３から２５の何れか１つの主題は、非一時的コンピュータ可読媒体上に格納される複数のロジック命令を任意選択的に含むことができる。複数のロジック命令は、それら自身が揮発性メモリおよび不揮発性メモリを含むメモリデバイス用のコントローラによって実行された場合、ページアウト要求を受信し、ページアウト要求に応答して予め定められたアドレスに対する読み取り動作を受信し、読み取り動作に応答して不揮発性メモリからメモリバッファにページデータを読み取り、不揮発性メモリにページデータを書き込むようにコントローラを構成する。
【００８９】
本発明の複数の様々な実施形態において、本明細書において説明されている複数の動作は、ハードウェア（例えば、回路）、ソフトウェア、ファームウェア、マイクロコード、またはそれらの複数の組み合わせとして、実装されてよく、例えば、有形の（例えば、非一時的な）機械可読またはコンピュータ可読なメディアを含み、メディアはその上に格納された、本明細書において説明されている処理を実行するコンピュータのプログラムに用いられる複数の命令（または複数のソフトウェア手順）を有する、コンピュータプログラム製品として提供されてよい。また、用語「ロジック」は、例として、ソフトウェア、ハードウェア、またはソフトウェアおよびハードウェアの複数の組み合わせを含んでよい。機械可読メディアは、本明細書において説明されるもののようなストレージデバイスを含んでよい。
【００９０】
本明細書における「一実施形態」または「実施形態」という記載は、実施形態に関連して説明された特定の機能、構造、または特性が、少なくとも１つの実装に含まれてよいことを意味する。本明細書の様々な複数の箇所における「一実施形態において」という表現の出現は、全て同一の実施形態を参照してもよく、しなくてもよい。
【００９１】
また、説明および特許請求の範囲において、「連結」および「接続」という用語は、これらの複数の活用形と共に用いられてよい。本発明のいくつかの実施形態において、「接続」は、２つまたはそれより多くの要素が互いに直接物理的にまたは電気的に接触することを示すべく、用いられてよい。「連結」は、２つまたはそれより多くの要素が直接物理的にまたは電気的に接触することを意味してよい。しかし、「連結」はまた、２つまたはそれより多くの要素は互いに直接に接触しなくてよいが、依然と互いに協調又は相互作用してよいことを意味してもよい。
【００９２】
つまり、本発明の複数の実施形態は、複数の構造的な特徴および／または複数の方法論的な動きに固有の記載で説明されているが、特許請求の範囲に係る主題は、説明された複数の具体的な特徴または複数の動きに限定されなくてよいことを理解されたい。むしろ、複数の具体的な特徴および複数の動きは、特許請求の範囲に係る主題を実施すべく、複数の例示的な形式として開示される。
【図１】
2016523411.tif 000003
【図２Ａ】
2016523411.tif 000004
【図２Ｂ】
2016523411.tif 000005
【図３】
2016523411.tif 000006
【図４】
2016523411.tif 000007
【図５】
2016523411.tif 000008
【図６】
2016523411.tif 000009
【図７】
2016523411.tif 000010
【図８】
2016523411.tif 000011
【図９】
2016523411.tif 000012
【図１０】
2016523411.tif 000013
【国際調査報告】
2016523411.tif 000014
2016523411.tif 000015
2016523411.tif 000016