(57)【要約】【課題】不揮発性メモリに置き換えるためにＲＡＭメモリオブジェクトをプロファイルする方法及び装置を提供する。【解決手段】メモリプロファイリングシステムは、揮発性メモリ内のメモリオブジェクトをプロファイルし、そのメモリオブジェクトを、不揮発性メモリに記憶されてそこから直接読み取られる候補として識別する。このシステムは、ページ欠陥を経てメモリアクセスを監視し、揮発性メモリにロードされるメモリオブジェクトを識別し、又、ページ欠陥を使用してページ欠陥の形式及びメモリオブジェクトの書き込み頻度を決定すると共に、メモリオブジェクトのメモリアクセス形式を決定する。更に、オブジェクトのメモリアクセス形式が不揮発性メモリ技術の能力を満足するかどうか決定する。もしそうであれば、メモリオブジェクトを、不揮発性メモリへ移行されてそこから直接読み取られる候補として識別する。【選択図】図１
2010157218.tif 000002
【特許請求の範囲】
【請求項１】
揮発性メモリ内のメモリオブジェクトへのメモリアクセスを監視してプロファイルデータを収集し及び生成するステップと、
揮発性メモリ内のメモリオブジェクトが、不揮発性メモリに記憶されてそこから直接読み取られる候補であるかどうかを、前記プロファイルデータを使用して決定するステップと、
前記メモリオブジェクトの候補を不揮発性メモリに記憶して、前記メモリオブジェクトが不揮発性メモリから直接読み取られるようにするステップと、
を備えた方法。
【請求項２】
揮発性メモリ内のメモリオブジェクトへのメモリアクセスを監視する前記ステップは、
ページテーブルのアクティビティを監視する段階と、
前記ページテーブルのアクティビティのページ欠陥を検出する段階と、
前記ページ欠陥を使用して、揮発性メモリへロードされるメモリオブジェクトを識別する段階と、
を含む請求項１に記載の方法。
【請求項３】
揮発性メモリ内のメモリオブジェクトが、不揮発性メモリに記憶されてそこから直接読み取られる候補であるかどうかを決定する前記ステップは、
メモリオブジェクトの書き込み頻度を決定する段階であって、その書き込み頻度は、プロファイル時間周期中にメモリオブジェクトが書き込まれる回数であるような段階と、
前記書き込み頻度が書き込みスレッシュホールドを満足するかどうか決定する段階と、
前記書き込み頻度が書き込みスレッシュホールドを満足する場合にメモリオブジェクトが不揮発性メモリから直接読み取られる候補であることを識別する段階と、
を含む請求項１に記載の方法。
【請求項４】
前記書き込み頻度が書き込みスレッシュホールドを満足するかどうか決定する前記段階は、
前記書き込み頻度がＰＣＭスレッシュホールド以下であるかどうか決定する工程であって、そのＰＣＭスレッシュホールドは、ＰＣＭ技術の現在書き込み性能レートであるような工程と、
前記書き込み頻度がＰＣＭスレッシュホールド以下である場合にメモリオブジェクトが不揮発性メモリから直接読み取られる候補であることを識別する工程と、
を含む請求項３に記載の方法。
【請求項５】
前記書き込み頻度がＮＯＲスレッシュホールドを越えるかどうか決定する工程であって、第１のＮＯＲスレッシュホールドは、ＮＯＲメモリ技術の現在書き込み性能レートであるような工程と、
前記書き込み頻度がＮＯＲスレッシュホールドを越える場合にメモリオブジェクトがＰＣＭメモリから直接読み取られる候補であることを識別する工程と、
を含む請求項４に記載の方法。
【請求項６】
前記書き込み頻度がＮＯＲスレッシュホールドを越えない場合にメモリオブジェクトがＮＯＲメモリ及びＰＣＭメモリの少なくとも一方から直接読み取られる候補であることを識別する工程を更に含む請求項５に記載の方法。
【請求項７】
メモリオブジェクトの書き込み頻度を決定する前記段階は、
メモリオブジェクトをリードオンリメモリオブジェクトとしてロードする工程と、
ある時間周期中にメモリオブジェクトへ書き込むための試みを監視する工程であって、前記時間周期は、ユーザ定義時間周期であるような工程と、
前記時間周期中にメモリオブジェクトが書き込まれる回数を決定する工程と、
を含む請求項３に記載の方法。
【請求項８】
前記メモリオブジェクトの候補を不揮発性メモリに記憶して、メモリオブジェクトが不揮発性メモリから直接読み取られるようにする前記ステップは、
前記プロファイルデータに基づいてシステムメモリを再構成する段階であって、システムメモリのこの再構成は、不揮発性メモリ内のメモリオブジェクトを解凍し、そしてそのメモリオブジェクトを、解凍したメモリオブジェクトとして不揮発性メモリに記憶する段階を含む、請求項１に記載の方法。
【請求項９】
前記メモリオブジェクトの候補を不揮発性メモリに記憶して、メモリオブジェクトが不揮発性メモリから直接読み取られるようにする前記ステップは、
前記プロファイルデータを、システムメモリの再構築に使用されるフォーマットへとフォーマットする段階と、
そのフォーマットされたデータを与えて、システムメモリを再構築する段階と、
を含む請求項１に記載の方法。
【請求項１０】
マシンによって実行された場合に、マシンが、
揮発性メモリ内のメモリオブジェクトへのメモリアクセスを監視してプロファイルデータを収集し及び生成し、
揮発性メモリ内のメモリオブジェクトが、不揮発性メモリに記憶されてそこから直接読み取られる候補であるかどうかを、前記プロファイルデータを使用して決定し、
前記メモリオブジェクトの候補を不揮発性メモリに記憶して、前記メモリオブジェクトが不揮発性メモリから直接読み取られるようにする、
ことを含むオペレーションを遂行するようにさせるインストラクションを与えるマシンアクセス可能な記憶媒体。
【請求項１１】
揮発性メモリ内のメモリオブジェクトへのメモリアクセスの前記監視は、
ページテーブルのアクティビティを監視し、
前記ページテーブルのアクティビティのページ欠陥を検出し、
前記ページ欠陥を使用して、揮発性メモリへロードされるメモリオブジェクトを識別する、
ことを含む請求項１０に記載のマシンアクセス可能な記憶媒体。
【請求項１２】
揮発性メモリ内のメモリオブジェクトが、不揮発性メモリに記憶されてそこから直接読み取られる候補であるかどうかの前記決定は、
メモリオブジェクトの書き込み頻度を決定し、その書き込み頻度は、プロファイル時間周期中にメモリオブジェクトが書き込まれる回数であり、
前記書き込み頻度が書き込みスレッシュホールドを満足するかどうか決定し、
前記書き込み頻度が書き込みスレッシュホールドを満足する場合にメモリオブジェクトが不揮発性メモリから直接読み取られる候補であることを識別する、
ことを含む請求項１０に記載のマシンアクセス可能な記憶媒体。
【請求項１３】
前記書き込み頻度が書き込みスレッシュホールドを満足するかどうかの前記決定は、
前記書き込み頻度がＰＣＭスレッシュホールド以下であるかどうか決定し、そのＰＣＭスレッシュホールドは、ＰＣＭ技術の現在書き込み性能レートであり、
前記書き込み頻度がＰＣＭスレッシュホールド以下である場合にメモリオブジェクトが不揮発性メモリから直接読み取られる候補であることを識別する、
ことを含む請求項１２に記載のマシンアクセス可能な記憶媒体。
【請求項１４】
前記書き込み頻度がＮＯＲスレッシュホールドを越えるかどうか決定し、第１のＮＯＲスレッシュホールドは、ＮＯＲメモリ技術の現在書き込み性能レートであり、
前記書き込み頻度がＮＯＲスレッシュホールドを越える場合にメモリオブジェクトがＰＣＭメモリから直接読み取られる候補であることを識別する、
ことを含む請求項１３に記載のマシンアクセス可能な記憶媒体。
【請求項１５】
前記書き込み頻度がＮＯＲスレッシュホールドを越えない場合にメモリオブジェクトがＮＯＲメモリ及びＰＣＭメモリの少なくとも一方から直接読み取られる候補であることを識別することを更に含む、請求項１４に記載のマシンアクセス可能な記憶媒体。
【請求項１６】
メモリオブジェクトの書き込み頻度の前記決定は、
メモリオブジェクトをリードオンリメモリオブジェクトとしてロードし、
ある時間周期中にメモリオブジェクトへ書き込むための試みを監視し、前記時間周期は、ユーザ定義時間周期であり、
前記時間周期中にメモリオブジェクトが書き込まれる回数を決定する、
ことを含む請求項１２に記載のマシンアクセス可能な記憶媒体。
【請求項１７】
前記メモリオブジェクトの候補を不揮発性メモリに記憶して、メモリオブジェクトが不揮発性メモリから直接読み取られるようにすることは、
前記プロファイルデータに基づいてシステムメモリを再構成することを含み、システムメモリのこの再構成は、不揮発性メモリ内のメモリオブジェクトを解凍し、そしてそのメモリオブジェクトを、解凍したメモリオブジェクトとして不揮発性メモリに記憶することを含む、請求項１２に記載のマシンアクセス可能な記憶媒体。
【請求項１８】
プロセッサと、
前記プロセッサに結合された不揮発性メモリと、
前記プロセッサに結合されたランダムアクセスメモリであって、このランダムアクセスメモリに記憶されたメモリオブジェクトを不揮発性メモリへ移行させ、その移行されたメモリオブジェクトが不揮発性メモリから直接アクセスされるようにするランダムアクセスメモリと、
を備えたシステム。
【請求項１９】
前記プロセッサに関連されて、前記ランダムアクセスメモリ内でメモリオブジェクトが得られない場合にページ欠陥を発生するメモリ管理ユニットを更に備え、前記ランダムアクセスメモリは、このページ欠陥を使用して、不揮発性メモリへ移行すべき１つ以上のメモリオブジェクトを識別する、請求項１８に記載のシステム。
【請求項２０】
前記ランダムアクセスメモリは、更に、そのランダムアクセスメモリに記憶されたメモリオブジェクトを不揮発性メモリへ移行させるようにシステムメモリマップを再構成する、請求項１８に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、不揮発性メモリに置き換えるために揮発性メモリオブジェクトをプロファイルすることに係る。より詳細には、本発明の実施形態は、ランダムアクセスメモリに存在するメモリオブジェクトを、不揮発性メモリに記憶してそこから直接読み取るための候補として識別し、そしてその候補メモリオブジェクトを不揮発性メモリへ移行させることに係る。
【背景技術】
【０００２】
多くのコンピュータアーキテクチャーは、メモリを、（１）揮発性（メモリに電力がないときに情報が失われることを意味する）であるが比較的高速な一次メモリ、例えば、ランダムアクセスメモリ（ＲＡＭ）として、又は（２）不揮発性であるが比較的低速な二次メモリ、例えば、フラッシュメモリ及びハードディスクとして構成している。典型的に、相手先製品製造者（ＯＥＭ）は、持続性ファイルを不揮発性メモリに記憶する一方、他のほとんどのオブジェクトはＲＡＭにおいて生成し記憶している。例えば、ＯＥＭは、コードをフラッシュメモリに、そしてデータをＤＲＡＭに記憶する。しかしながら、時が経つにつれて、ＯＥＭは、コードを揮発性メモリに記憶し、そして著しい量のＤＲＡＭを使用し始めた。ＤＲＡＭに記憶されたオブジェクトの多くは、コードを直接実行できる不揮発性メモリ技術（例えば、ＮＯＲ技術及び相変化メモリ（ＰＣＭ）技術）へ移行させることができる。しかしながら、ＯＥＭは、典型的に、ＤＲＡＭに記憶されたメモリオブジェクトであって不揮発性メモリに記憶してそこから直接読み取ることのできるメモリオブジェクトを識別するツールがない。
【０００３】
本発明の実施形態は、同様の要素が同じ参照番号で示された添付図面を参照して一例として以下に詳細に説明するが、これに限定されるものではない。
【図面の簡単な説明】
【０００４】
【図１】本発明の一実施形態によるメモリプロファイリングシステムを示す。
【図２】本発明の一実施形態によるメモリプロファイリングシステムのブロック図である。
【図３】揮発性メモリに記憶されたメモリオブジェクトを、不揮発性メモリから直接読み取られる候補として識別する方法の一実施形態のフローチャートである。
【図４】メモリオブジェクトが、不揮発性メモリに記憶されてそこから直接読み取られる候補であるかどうか決定するための方法の一実施形態のフローチャートである。
【図５】メモリオブジェクトの書き込み頻度を決定する方法の一実施形態のフローチャートである。
【図６】メモリオブジェクトの書き込み頻度が書き込み頻度スレッシュホールドを満足するかどうか決定する方法の一実施形態のフローチャートである。
【発明を実施するための形態】
【０００５】
本発明の実施形態は、揮発性メモリ（例えば、ＲＡＭ及びＤＲＡＭ）に存在するメモリオブジェクトを、不揮発性メモリ（例えば、ＮＯＲ及びＰＣＭ）へ移動してそこから直接読み取られる候補としてプロファイルする方法及びシステムを提供する。このメモリプロファイリングシステムは、ページ欠陥を経てメモリアクセスを監視し、そして揮発性メモリにロードされるべきメモリオブジェクトを識別する。又、このプロファイリングシステムは、ページ欠陥を使用して、ページ欠陥の形式及びメモリオブジェクトの書き込み頻度を決定すると共に、メモリオブジェクトのメモリアクセス形式を決定する。更に、プロファイリングシステムは、オブジェクトのメモリアクセス形式が不揮発性メモリ技術の能力を満足するかどうか決定する。メモリアクセス形式が不揮発性メモリ技術の能力を満足する場合には、プロファイリングシステムが、メモリオブジェクトを、不揮発性メモリ（例えば、ＮＯＲおよびＰＣＭ）へ移行されるべき候補として識別する。プロファイリングシステムは、そのメモリオブジェクト候補を不揮発性メモリに記憶し、メモリオブジェクトが不揮発性メモリから直接読み取られるようにする。この方法及びシステムは、揮発性メモリ（例えば、ＲＡＭ及びＤＲＡＭ）からロードされ読み取られるのではなく、不揮発性メモリ（例えば、ＮＯＲおよびＰＣＭ）から直接読み取ることのできるメモリオブジェクトを識別することにより、性能を改善することができる。
【０００６】
図１は、本発明の一実施形態によるメモリプロファイリングシステム１００を示す。一実施形態として、このシステム１００は、ワイヤレスインターフェイス１２０を有している。このワイヤレスインターフェイス１２０は、アンテナ１４０に結合される。又、ワイヤレスインターフェイス２０は、データ及び情報を受信し送信する。しかしながら、この実施形態は、ワイヤレス通信の実施形態に限定されない。他の、非ワイヤレス用途でも、本発明の実施形態を使用できる。
【０００７】
システム１００は、インターフェイス１０５に結合されたプロセッサ１１０を備えている。インターフェイス１０５は、プロセッサ１１０とシステムメモリ１１５のメモリ記憶装置との間に通信又は情報を与えるように使用することができる。又、インターフェイス１０５は、プロセッサ１１０とシステムメモリ１１５との間にハンドシェークを与えるのに使用されるコントロール信号ラインと共に情報を共有するためのシリアル及び／又はパラレルバスを備えることができる。
【０００８】
システムメモリ１１５は、任意であるが、プロセッサ１１０により実行されるインストラクションを記憶するのに使用できる。又、システムメモリ１５は、１つ以上の異なる形式のメモリによって設けることができ、揮発性メモリ（例えば、ランダムアクセスメモリ１４３（ＲＡＭ）及びダイナミックランダムアクセスメモリ（ＤＲＡＭ））と、不揮発性メモリ（例えば、リードオンリメモリ１５０（ＲＯＭ）及び相変化材料をもつ不揮発性メモリ１５５）との両方を含むものでよい。不揮発性メモリ１５５は、例えば、ＮＯＲフラッシュメモリ、相変化メモリ（ＰＣＭ）、相変化ランダムアクセスメモリ（ＰＲＡＭ又はＰＣＲＡＭ）、オボニック・ユニファイド・メモリ（ＯＵＭ）、又はカルコゲナイドランダムアクセスメモリ（Ｃ−ＲＡＭ）を含む。揮発性メモリ１４３は、例えば、ＲＡＭ及びＤＲＡＭである。システムメモリ１１５は、揮発性メモリ内のメモリオブジェクトを、不揮発性メモリから直接読み取られるようにプロファイルし移行させるためのメモリマネージャー１４１を備えている。
【０００９】
ＲＡＭ１４３は、典型的に、プロセッサ１１０に対して直ちにアクセスでき及び／又はプロセッサ１１０により現在動作されているデータ及び／又はプログラムモジュールを含む。図１は、オペレーティングシステム１４５、アプリケーションプログラム１４７、他のプログラムモジュール１４９、及びプログラムデータ１５１を示している。揮発性メモリ１４３、及び不揮発性メモリ１５０、１５５は、ボード上の占有面積を減少するように積み重ねプロセスで結合することもできるし、個別にパッケージすることもできるし、或いはメモリコンポーネントをプロセッサの上部に載せるようにマルチチップパッケージに入れることもできる。又、この実施形態は、１つ以上のプロセッサコア１６０、１８０に不揮発性メモリを埋設できることも示している。
【００１０】
ある実施形態では、システム１００は、一体的なメモリ管理ユニット（ＭＭＵ）１３０をもつプロセッサ１１０を備えている。他の実施形態では、メモリ管理ユニット１３０が個別のチップである。メモリ管理ユニット（ＭＭＵ）１３０は、プロセッサ１１０により要求されたメモリへのアクセスをハンドリングする役割を果たすハードウェア装置又は回路である。又、メモリ管理ユニット１３０は、バーチャルアドレスを物理的アドレスへと変換することによりバーチャルメモリ及びページングをサポートする。メモリ管理ユニット１３０は、バーチャルアドレススペース（プロセッサにより使用されるアドレスの範囲）を、２の累乗（即ち２N）のサイズを各々もつページへと分割する。アドレスの最下位Ｎビット（ページ内のオフセット）は、不変のままである。上位アドレスビットは、バーチャルページ番号である。
【００１１】
メモリ管理ユニット１３０は、バーチャルページ番号を物理的ページ番号へと変換するテーブルを保持する僅かな量のメモリ（例えば、キャッシュ）を含んでもよい。このテーブルは、バーチャルアドレスを物理的アドレスにマッチングする変換ルックアサイドバッファ（ＴＬＢ）とも称される。全てのデータ要求は、メモリ管理ユニット１３０へ伝送され、このユニットは、データが揮発性メモリ１４３に記憶されているか又は大量記憶装置（例えば、ディスクドライブ１７０）からフェッチされる必要があるかを決定する。データが記憶装置にない場合には、メモリ管理ユニット１３０は、ページ欠陥割り込みを発生する。
【００１２】
図２は、本発明の一実施形態によるメモリプロファイリングシステム２００のブロック図である。このシステム２００は、ページ形式のバーチャルアドレススキームを使用するもので、揮発性メモリ内のメモリオブジェクトを、不揮発性メモリから直接読み取れるようにプロファイルし移行するためのメモリマネージャー１４１を備えている。全てのデータ要求は、ＭＭＵ１３０へ伝送され、このＭＭＵは、メモリオブジェクトが揮発性メモリ（例えば、ＤＲＡＭ）に記憶されたかどうか決定する。メモリオブジェクトは、バーチャルページ番号と、そのページ番号とのオフセットとを含むバーチャルアドレスを有している。ＭＭＵ１３０は、典型的に、変換ルックアサイドバッファ２０２（ＴＬＢ）を経てバーチャルページ番号を物理的ページ番号へと変換する。例えば、プログラムが実行されて、メモリオブジェクトへのアクセスを試みる場合には、ＭＭＵ１３０は、ＴＬＢ２０２内のアドレスをルックアップする。ＭＭＵ１３０がＴＬＢ２０２内のバーチャルページに対する一致（ＴＬＢヒット）を検出した場合には、物理的位置が検索され、そしてプログラムは、メモリオブジェクトにアクセスすることができる。しかしながら、ＴＬＢ２０２は、固定数のページ変換を保持することができ、そしてＴＬＢ２０２が変換を欠く（ＴＬＢミス）場合には、ＭＭＵ１３０は、ハードウェア特有のデータ構造を伴うメカニズムであるページテーブル２０４にアクセスする（２０３）。
【００１３】
ページテーブル２０４は、ページテーブルエントリー２０７Ａ−Ｅ（ＰＴＥ）を含み、各エントリーは、ページ（２０６Ａ、２０６Ｂ、２０６Ｄ、又は２０６Ｅ）の物理的位置を識別する。ページは、ＲＡＭ１４３の定義された長さの隣接部分であり、いずれの形式のデータを記憶することもできる。又、ページテーブルエントリー２０７Ａ−Ｅは、ページ（メモリオブジェクト）が書き込まれたかどうか、それが最後にロードされたのはいつか、どんな種類のプロセスがそれを読み取り及び書き込みできるか、それをキャッシュ記憶すべきかどうかの情報を含むこともできる。
【００１４】
ＭＭＵ１３０がページテーブル２０４内でバーチャルアドレスに対する有効エントリーを見出さない場合には、ＭＭＵ１３０は、ページ欠陥２０５割り込み（又はページ欠陥）と称されるプロセッサ割り込みを発生する。例えば、メモリオブジェクトがＤＲＡＭにおいて得られないときには、ＭＭＵ１３０は、ページテーブル２０５に変換がないことが分かり（例えば、２０７Ｃ）、そしてＭＭＵ１３０は、ページ欠陥２０５を発生する。ページ欠陥２０５が生じると、ＭＭＵ１３０は、ページ欠陥ハンドラー２２０へコントロールを移送する。
【００１５】
ページ欠陥ハンドラー２２０は、ページ欠陥２０５をどのように取り扱うか判断する。ページ欠陥ハンドラー２２０は、バーチャルアドレスが有効であるかどうか決定する。バーチャルアドレスが有効である場合には、ページ欠陥ハンドラー２２０は、利用可能なページを見出し、そのページにメモリオブジェクトを入れ、そしてページテーブル２０４を変換で更新する。ページ欠陥ハンドラー２２０は、ＭＭＵ１３０にオペレーションの再試みを命令する。ＭＭＵ１３０は、オペレーションの再試みを行い、ページ（メモリオブジェクト）が揮発性メモリ（例えば、ＤＲＡＭ）にロードされる。
【００１６】
ページ欠陥ハンドラー２２０は、ＤＲＡＭにロードされたメモリオブジェクトを、不揮発性メモリ（例えば、ＮＯＲ、ＰＣＭ）に記憶されてそこから直接読み取られる候補としてプロファイルするためのプロファイラー２０９を備えている。このプロファイラー２０９は、ページ欠陥２０５を使用して、ＤＲＡＭにロードされるべきメモリオブジェクトを識別すると共に、ページテーブルアクティビティを監視して、メモリオブジェクトが不揮発性メモリから直接読み取られる候補であるかどうか決定するためのプロファイルデータを発生する。プロファイルデータは、メモリオブジェクトのアドレス、どれほど頻繁にオブジェクトがＤＲＡＭにロードされるか、及びどれほど頻繁にオブジェクトが書き込まれるかを含むことができる。又、プロファイラー２０９は、プロファイルデータを使用して、メモリオブジェクトをメモリアクセス形式について分類すると共に、メモリアクセス形式がＮＯＲ又はＰＣＭメモリに対する候補として適格であるかどうか決定する。テーブル１は、ＮＯＲ又はＰＣＭ技術に対する候補として適格な４つのメモリアクセス形式（例えば、「読み取りのみ」、「読み取り−書き込み低頻度」、「読み取り−書き込み」及び「読み取り−書き込み高頻度」）を例示する。
【００１７】
2010157218.tif 000003
テーブル１
【００１８】
理想的な候補は、読み取りのみであるか又は読み取り−低頻度書き込みであるメモリオブジェクトを含む。「低頻度」及び「高頻度」という語は、システムにおけるメモリ技術の形式の特定パラメータを指すのに使用される語である。図６は、メモリアクセス形式を詳細に示している。
【００１９】
プロファイラー２０９は、メモリオブジェクトの書き込み頻度を決定することによってメモリオブジェクトのメモリアクセス形式を決定する。又、プロファイラー２０９は、ある時間周期（プロファイル時間周期）中にページテーブルアクティビティを監視する。書き込み頻度とは、プロファイル時間周期中にメモリオブジェクトが書き込まれた回数である。プロファイラー２０９は、メモリオブジェクトが書き込まれるたびにメモリオブジェクトに対するページ欠陥２０６をロギングすることによりメモリオブジェクトの書き込み頻度を決定する。プロファイラー２０９は、ページテーブルのページテーブルエントリーを清掃するためのページテーブルエントリー（ＰＴＥ）クリーナー２０８を備えている。ページがロードされるときに、ＰＴＥクリーナー２０８は、そのロードされたページを否ロードとマークし直す。一実施形態では、ＰＴＥクリーナーは、ロードされたページを、既定の時間間隔（例えば、１０ｍｓ）で周期的に否ロードとマークする。ロードされたページを否ロードとマークすることは、ページテーブル２０４を人為的に清掃し、メモリオブジェクトが要求されたときにページ欠陥をプロファイラー２０９で検出できるよう強制する。プロファイラー２０９は、ページ欠陥を検出し、メモリオブジェクトが書き込まれたかどうか決定する。プロファイラー２０９は、メモリオブジェクトが書き込まれた回数をログする。
【００２０】
例えば、システム２００は、ページ２０６Ａ及びページ２０６Ｂを示している。プロファイラー２０９は、ページ２０６Ａが一回ロードされそしてそれに対して書き込みアクティビティが行われていないと決定する。それ故、プロファイラー２０９は、ページ２０６Ａを読み取りのみのメモリアクセス形式として分類する。プロファイラー２０９は、ページ２０６Ｂが一度ロードされそしてプロファイル時間周期中に一回書き込まれたと決定する。それ故、プロファイラー２０９は、ページ２０６Ｂを読み取り−書き込み低頻度のメモリアクセス形式として分類する。
【００２１】
プロファイラー２０９は、プロファイルデータを、１６進又は２進情報を含む生のデータファイルとして出力することができる。一実施形態では、ロガー２１０は、プロファイラー２０９の出力を受け取り、新たなメモリマップ（例えば、メモリコンフィギュレーションファイル）を生成し、そしてその新たなメモリマップに基づいてシステムメモリを自動的に再構築する。一般的に、ページ（例えば、２０６Ａ−２０６Ｅ）は、それが不揮発性メモリに記憶される前に圧縮される。ページが要求されたときに、オペレーティングシステムは、不揮発性メモリに記憶された圧縮された映像からページを読み取り、それを解凍し、そしてその解凍されたページをＤＲＡＭにロードする。新たなメモリマップは、ページが不揮発性メモリに記憶される前にどのページを非圧縮のままにするか定義し、ページを不揮発性メモリから直接読み取り、もはやＤＲＡＭにはロードしなくてよいようにする。例えば、プロファイラー２０９がページ２０６Ａを読み取りのみのメモリアクセス形式として識別する場合には、ページ２０６Ａは、不揮発性メモリ（例えば、ＰＣＭ）に留まる候補となる。ページ２０６ＡをＰＣＭにおいて圧縮せずＰＣＭにおいて非圧縮映像として留めるよう定義する新たなメモリマップが生成される。それ故、ページ２０６Ａは、ＤＲＡＭにはロードされず、ページ２０６Ａが次に要求されたときにはＰＣＭから直接読み取られる。
【００２２】
別の実施形態では、ロガー２１０は、プロファイラー２０９によって発生されたプロファイルデータを、システムのメモリマップを手動で変更し且つシステムメモリを手動で再構築するためにユーザが使用できるフォーマットへとフォーマットする。ロガー２１０は、プロファイラーの出力を受け取り、それを、特定のページ（例えば、特定のデータオブジェクト、特定のファイル、特定の実行可能な映像、特定のデータベースファイル、等、並びにそのファイル内のオフセット）へマップして戻す。このフォーマットは、どのページが高頻繁でロードされ、どのページが低頻度でロードされたか示すことのできるヒストグラムでよい。ユーザは、このヒストグラムに与えられるデータに基づいて、システムのメモリマップを手動で変更し、システムメモリを手動で再構築することができる。
【００２３】
別の実施形態では、システム２００は、システムメモリをダイナミックに再構成するためのメモリリコンフィギュレータ２４０を備えている。このメモリリコンフィギュレータ２４０は、プロファイラー２０９の出力を自動的に受け取り、そしてどのページを非圧縮映像として不揮発性メモリに記憶すべきかを識別する。プロファイラー２０９の出力を使用して、メモリリコンフィギュレータ２４０は、識別されたページを解凍し、そして情報（例えば、新たなメモリマップ）をメモリリロケータ２３０に与える。
【００２４】
メモリリロケータ２３０は、新たなメモリマップを使用して、ページ欠陥ハンドラー２２０と対話し、新たなメモリマップに基づいてＮＯＲ又はＰＣＭからメモリオブジェクトを得られるようにする。上述した例を使用すると、メモリリロケータ２３０は、ページ２０６Ａの要求がなされたことを検出し、ページ２０６ＡがＰＣＭにおける非圧縮ページであることを識別し、そしてページ欠陥ハンドラー２２０に、ページ２０６ＡをＤＲＡＭにロードせず、ページ２０６ＡをＰＣＭから直接読み取るように命令する。
【００２５】
図３は、揮発性メモリに記憶されたメモリオブジェクトを、不揮発性メモリから直接読み取られる候補として識別する方法の一実施形態のフローチャートである。この方法は、ハードウェア（例えば、回路、専用ロジック、等）、ソフトウェア（例えば、汎用コンピュータシステム又は専用マシンで実行される）、又はその両方の組合せより成る処理ロジックによって遂行することができる。一実施形態では、処理ロジックは、図１のメモリプロファイリングシステム１００に存在する。
【００２６】
ブロック３０１において、処理ロジックは、揮発性メモリ（例えば、ＤＲＡＭ）にロードされたメモリオブジェクトへのメモリアクセスを監視して、プロファイルデータを収集し、生成する。プロファイルデータは、メモリオブジェクトのアドレス、どれほど頻繁にオブジェクトがＤＲＡＭにロードされるか、及びどれほど頻繁にオブジェクトが書き込まれるか、を含むことができる。ブロック３０３では、処理ロジックは、プロファイルデータを使用して、メモリオブジェクトが不揮発性メモリへ移行され且つ不揮発性メモリから直接読み取られるべき候補であるかどうか決定する。ブロック３０５では、処理ロジックは、メモリオブジェクトの候補を、不揮発性メモリに非圧縮のメモリオブジェクトとして記憶し、メモリオブジェクトを不揮発性メモリから直接読み取りできるようにする。
【００２７】
図４は、メモリオブジェクトが、不揮発性メモリに記憶されてそこから直接読み取られる候補であるかどうか決定するための方法の一実施形態の別のフローチャートである。この方法は、ハードウェア（例えば、回路、専用ロジック、等）、ソフトウェア（例えば、汎用コンピュータシステム又は専用マシンで実行される）、又はその両方の組合せより成る処理ロジックによって遂行することができる。一実施形態では、処理ロジックは、図１のメモリプロファイリングシステム１００に存在する。
【００２８】
ブロック４０１では、処理ロジックは、ページ欠陥を検出し、そしてページ欠陥を使用して、ＤＲＡＭにロードされるべきメモリオブジェクトを識別する。処理ロジックは、ある時間周期又はプロファイル時間中に、ページテーブルのアクティビティを監視することによりページ欠陥を検出する。プロファイル時間は、既定の時間周期でもよいし、又はユーザが定義した時間周期でもよい。例えば、ＯＥＭは、２時間の時間周期でテストを実行することができ、それ故、処理ロジックは、２時間の時間周期でページテーブルのアクティビティを監視する。処理ロジックは、アドレス及びアドレス形式（例えば、読み取り又は書き込み）によりオブジェクトを識別することができる。
【００２９】
ブロック４０３では、処理ロジックは、メモリオブジェクトの書き込み頻度を決定する。書き込み頻度とは、メモリオブジェクトが書き込まれる回数である。書き込み頻度は、図５を参照して以下に詳細に述べる。ブロック４０５において、処理ロジックは、書き込み頻度が書き込みスレッシュホールドを満足するかどうか決定する。図６は、書き込みスレッシュホールドを満足させることについて詳細に示す。ブロック４０７では、処理ロジックは、書き込み頻度が書き込みスレッシュホールドを満足させるかどうかに基づいて、メモリオブジェクトを、不揮発性メモリから直接読み取るべき候補として識別する。
【００３０】
図５は、メモリオブジェクトの書き込み頻度を決定する方法５００の一実施形態のフローチャートである。この方法は、ハードウェア（例えば、回路、専用ロジック、等）、ソフトウェア（例えば、汎用コンピュータシステム又は専用マシンで実行される）、又はその両方の組合せより成る処理ロジックによって遂行することができる。一実施形態では、処理ロジックは、図１のメモリプロファイリングシステム１００に存在する。
【００３１】
ブロック５０１において、処理ロジックは、ページテーブルのアクティビティを監視する。ブロック５０３では、処理ロジックは、ページ欠陥があるかどうか決定する。処理ロジックは、それがページ欠陥を検出した場合には（ブロック５０３）、ブロック５０５において、ページ欠陥を引き起こしたメモリオブジェクトのアドレスを識別する。ブロック５０７では、処理ロジックは、メモリオブジェクトのアドレスをログする。或いは又、処理ロジックは、メモリオブジェクトが既にロードされ、それ故、既にログされたと決定することができる。ブロック５０９では、処理ロジックは、メモリオブジェクトを読み取りのみとしてロードし、そしてブロック５１１において、メモリオブジェクトを、ロードされたとしてログする。
【００３２】
処理ロジックは、それがページ欠陥を検出しない場合には（ブロック５０３）、ブロック５１３において、メモリオブジェクトが書き込まれたかどうか決定する。処理ロジックは、それが書き込みアクティビティを検出する場合には（ブロック５１３）、メモリオブジェクトの書き込みアクティビティをログし（ブロック５１５）、そしてブロック５２１において、プロファイル時間周期が経過したかどうか決定する。
【００３３】
ブロック５１３において、処理ロジックは、それが書き込みアクティビティを検出しない場合には、ブロック５１７において、ページテーブルを清掃すべきかどうか決定する。処理ロジックは、ユーザ定義時間周期が経過したかどうかに基づいてページテーブルエントリーを清掃すべきかどうか決定する。例えば、ＯＥＭは、ページテーブルエントリーを１０ｍｓごとに清掃するように処理ロジックを定義することができる。処理ロジックは、ユーザ定義時間周期が経過したと決定する場合には（ブロック５１７）、ＤＲＡＭに現在ロードされているメモリオブジェクトを、ブロック５１９において、否ロードとマークし直し、従って、メモリオブジェクトを再ロードするように強制する。処理ロジックは、ユーザ定義時間周期が経過しないと決定した場合には（ブロック５１７）、ブロック５２１において、プロファイル時間周期が経過したかどうか決定する。
【００３４】
ブロック５２１において、処理ロジックは、プロファイル時間周期が経過しないと決定した場合には、ブロック５０１へ復帰して、ページテーブルアクティビティの監視を継続する。処理ロジックは、プロファイル時間周期が経過したと決定した場合には（ブロック５２１）、ブロック５２３において、ログされたデータを使用して、メモリオブジェクトが書き込まれた回数を決定する。
【００３５】
図６は、メモリオブジェクトが、不揮発性メモリに記憶されてそこから直接読み取られる書き込みスレッシュホールドを満足するかどうか決定するための方法６００の一実施形態のフローチャートである。この方法は、ハードウェア（例えば、回路、専用ロジック、等）、ソフトウェア（例えば、汎用コンピュータシステム又は専用マシンで実行される）、又はその両方の組合せより成る処理ロジックによって遂行することができる。一実施形態では、処理ロジックは、図１のメモリプロファイリングシステム１００に存在する。
【００３６】
ブロック６０１において、処理ロジックは、メモリオブジェクトの書き込み頻度がＰＣＭスレッシュホールド以下であるかどうか決定する。ＰＣＭスレッシュホールドは、ＰＣＭ技術の現在書き込み性能レートである。例えば、ＰＣＭの現在書き込み性能は、１０ＭＢ／ｓのレートである。しかしながら、技術の開発に伴い、ＰＣＭの将来の書き込み性能は、例えば、４０ＭＢ／ｓにもなり得る。処理ロジックは、メモリオブジェクトの書き込み頻度がＰＣＭスレッシュホールドより大きいと決定する場合には（ブロック６０１）、メモリオブジェクトが不揮発性メモリに対する候補でないことを識別し（ブロック６０３）、方法６００は、完了となる。
【００３７】
テーブル２Ａから２Ｃは、各メモリアクセス形式に対するスレッシュホールドを例示する。
2010157218.tif 000004
テーブル２Ａ
【００３８】
例えば、テーブル２Ａは、ＮＯＲ、ＰＣＭ及びＤＲＡＭ技術を含むシステムに対して、ＮＯＲ、ＰＣＭ及びＤＲＡＭの現在書き込み性能パラメータが「低頻度」及び「高頻度」という語に対する基準点を与えることを示している。それ故、技術の書き込み性能パラメータが変化する場合には、「低頻度」及び「高頻度」という語は、その変化に応じて調整される。以下のテーブル２Ｂは、ＮＯＲ、ＰＣＭ及びＤＲＡＭ技術を含むシステムに対してメモリアクセス形式を定義するための基準として使用される現在書き込み性能レートを示す。
2010157218.tif 000005
テーブル２Ｂ
【００３９】
テーブル２Ｂで明らかなように、ＮＯＲの現在書き込み性能は、１ＭＢ／ｓのレートであり、「低頻度」という語に対する基準点を与える。ＰＣＭの現在書き込み性能は、１０ＭＢ／ｓのレートであり、「読み取り−書き込み」メモリアクセス形式に対する基準点を与える。ＤＲＡＭの現在書き込み性能は、１００ＭＢ／ｓのレートであり、「高頻度」という語に対する基準点を与える。それ故、メモリオブジェクトが１ＭＢ／ｓ以下の書き込み頻度を有する場合には、オブジェクトが「読み取り−書き込み低頻度」メモリアクセス形式であり、オブジェクトが５ＭＢ／ｓの書き込み頻度を有する場合には、オブジェクトが「読み取り−書き込み」メモリアクセス形式であり、そしてオブジェクトが３０ＭＢ／ｓの書き込み頻度を有する場合には、オブジェクトが「読み取り−書き込み高頻度」メモリアクセス形式である。
【００４０】
以下のテーブル２Ｃは、ＰＣＭ技術の書き込み性能パラメータが４０ＭＢ／ｓのレートに変化した場合を例示する。この例では、オブジェクトが３０ＭＢ／ｓの書き込み頻度を有する場合に、オブジェクトは、今や、テーブル２Ｂにより前記で定義された「読み取り−書き込み高頻度」メモリアクセス形式ではなく、「読み取り−書き込み」メモリアクセス形式である。
2010157218.tif 000006
テーブル２Ｃ
【００４１】
図６に戻ると、処理ロジックは、メモリオブジェクトの書き込み頻度がＰＣＭスレッシュホールド以下であると決定した場合に（ブロック６０１）、ブロック６０５において、メモリオブジェクトの書き込み頻度がＮＯＲスレッシュホールド以下であるかどうか決定する。ＮＯＲスレッシュホールドは、ＮＯＲ技術の現在書き込み性能レートである。例えば、ＮＯＲの現在書き込み性能は、１ＭＢ／ｓのレートである。処理ロジックは、メモリオブジェクトの書き込み頻度がＮＯＲスレッシュホールドより大きいと決定する場合には（ブロック６０５）、ブロック６０７において、メモリオブジェクトが、ＰＣＭメモリに記憶されてそこから直接読み取られる候補であることを識別する。処理ロジックは、メモリオブジェクトの書き込み頻度がＮＯＲスレッシュホールド以下であると決定する場合には（ブロック６０５）、ブロック６０９において、メモリオブジェクトが、ＰＣＭメモリ及びＮＯＲメモリに記憶されてそこから直接読み取られる候補であることを識別する。
【００４２】
アルゴリズムは、ここでは、一般的に、希望の結果を導くアクション及びオペレーションの自己一貫性シーケンスであると考えられる。これらは、物理量の物理的操作を含む。通常、必ずしもそうでないが、これらの量は、記憶、転送、合成、比較、その他、操作することのできる電気的又は磁気的信号の形態をとる。主として共通使用の理由で、これらの信号をビット、値、エレメント、記号、キャラクタ、項、番号、等として参照するのが時々は便利であると分かっている。これら及び同様の語は、全て、適当な物理量に関連されるべきであり、且つそれらの量に適用される便利な表示に過ぎない。
【００４３】
特に指示のない限り、以下の説明から明らかなように、明細書全体にわたり、「監視」、「記憶」、「検出」、「使用」、「識別」、「マーキング」、「受信」、「ロード」、「再構成」、「フォーマット」、「決定」、等の語を使用する説明は、コンピューティングシステムのレジスタ及びメモリ内の物理的（電子的）量として表されたデータを、コンピューティングシステムのメモリ又はレジスタ或いは他のそのような情報記憶、伝達又は表示装置内の物理的量として同様に表された他のデータへと操作及び／又は変換するコンピュータ又はコンピューティングシステム又は同様の電子的コンピューティング装置のアクション及び／又はプロセスを指すことが明らかである。
【００４４】
本発明の実施形態は、ここに述べるオペレーションを遂行するための装置を包含する。装置は、望ましい目的に対して特別に構成されてもよいし、或いは装置に記憶されたプログラムにより選択的にアクチベートされ又は再構成される汎用のコンピューティング装置を含んでもよい。このようなプログラムは、これに限定されないが、フロッピーディスク、光学ディスク、コンパクトディスクリードオンリメモリ（ＣＤ−ＲＯＭ）、磁気−光学ディスクを含む任意の形式のディスク、リードオンリメモリ（ＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）、電気的にプログラム可能なリードオンリメモリ（ＥＰＲＯＭ）、電気的に消去可能でプログラム可能なリードオンリメモリ（ＥＥＰＲＯＭ）、磁気又は光学カード、或いは電子的インストラクションを記憶するのに適し且つコンピューティング装置のためのシステムバスに結合できる他の形式の媒体、等の記憶媒体に記憶することができる。
【００４５】
ここに述べる技術に基づくプログラムと共に種々の汎用システムを使用することもできるし、或いはここに述べる方法を遂行するように特殊な装置を構成するのが便利であると分かっている。種々のこれらシステムに対する望ましい構造は、ここでの説明から明らかとなろう。更に、本発明の実施形態は、特定のプログラミング言語を参照して説明しなかった。ここに述べる本発明の技術を実施するのに種々のプログラミング言語を使用することができる。更に、ここに述べるオペレーション、能力及び特徴は、ハードウェア（個別回路又は集積回路）及びソフトウェアの組合せで実施できることを理解されたい。
【００４６】
以上、本発明の特定の実施形態を参照して、本発明を説明した。しかしながら、本発明の広い精神及び範囲から逸脱せずに種々の変更や修正がなされ得ることが明らかである。従って、明細書及び図面は、単なる例示に過ぎず、それに限定されるものではない。
【符号の説明】
【００４７】
１００：メモリプロファイリングシステム
１０５：インターフェイス
１１０：プロセッサ
１１５：システムメモリ
１２０：ワイヤレスインターフェイス
１３０：一体的メモリ管理ユニット（ＭＭＵ）
１４０：アンテナ
１４１：メモリマネージャー
１４３：ランダムアクセスメモリ（ＲＡＭ）
１４５：オペレーティングシステム
１４７：アプリケーションプログラム
１４９：他のプログラムモジュール
１５０：リードオンリメモリ（ＲＯＭ）
１５１：プログラムデータ
１５５：不揮発性メモリ
２００：メモリプロファイリングシステム
２０２：変換ルックアサイドバッファ（ＴＬＢ）
２０４：ページテーブル
２０５：ページ欠陥
２０６Ａ、２０６Ｂ、２０６Ｄ、２０６Ｅ：ページ
２０７Ａ−Ｅ：ページテーブルエントリー
２０８：ページテーブルエントリー（ＰＴＥ）クリーナー
２０９：プロファイラー
２１０：ロガー
２２０：ページ欠陥ハンドラー
２３０：メモリリロケータ
２４０：メモリリコンフィギュレータ
【図１】
2010157218.tif 000007
【図２】
2010157218.tif 000008
【図３】
2010157218.tif 000009
【図４】
2010157218.tif 000010
【図５】
2010157218.tif 000011
【図６】
2010157218.tif 000012
【外国語明細書】
2010157218.tif 000013
2010157218.tif 000014
2010157218.tif 000015
2010157218.tif 000016
2010157218.tif 000017
2010157218.tif 000018
2010157218.tif 000019
2010157218.tif 000020
2010157218.tif 000021
2010157218.tif 000022
2010157218.tif 000023
2010157218.tif 000024
2010157218.tif 000025
2010157218.tif 000026
2010157218.tif 000027
2010157218.tif 000028
2010157218.tif 000029
2010157218.tif 000030
2010157218.tif 000031
2010157218.tif 000032
2010157218.tif 000033
2010157218.tif 000034
2010157218.tif 000035
2010157218.tif 000036
2010157218.tif 000037
2010157218.tif 000038
2010157218.tif 000039