(57)【要約】  モバイルプロセッサ(440)が利用可能な最も効率的なメモリ(405)を利用するために、ページアクセスカウンタ(480)が、複数の異なるタイプのメモリ(405、410)と関連付けられた利用率を記録するために使用され得る。一実施形態では、オペレーティングシステムルーチンは、ページアクセスカウンタ(480)を分析して、複数の異なるタイプのメモリ(405、410)の間で動的に割り当てるために、低利用率ページ(510)および高利用率ページ(520)を決定することができ、複数の異なるタイプのメモリは、より効率の低いメモリのタイプ(410)よりも大きい容量、高いスループット、小さいレイテンシ、または小さい電力消費を有する、より効率の高いメモリのタイプ(405)を含み得る。したがって、より効率の低いメモリ(410)における高利用率ページ(520)およびより効率の高いメモリ(405)における低利用率ページ(510)を検出したことに応答して、それらと関連付けられた内容が、より効率の高いメモリ(405)およびより効率の低いメモリ(410)にそれぞれコピーされてよく、仮想アドレスから物理アドレスへのマッピングは、再割当てを反映するように変更され得る。
2015534200.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサメモリを効率的に利用するための方法であって、
第1のメモリ中のページおよび第2のメモリ中のページと関連付けられた利用率を測定するページアクセスカウンタを監視するステップであって、前記第1のメモリが前記第2のメモリよりも高い効率を有する、ステップと、
前記監視されたページアクセスカウンタに基づいて、前記第1のメモリ中の前記ページおよび前記第2のメモリ中の前記ページを動的に割り当てるステップとを含む、方法。
【請求項２】
前記第1のメモリ中の前記ページおよび前記第2のメモリ中の前記ページを動的に割り当てるステップが、
高い利用率を有する前記第2のメモリ中のページからの内容を前記第1のメモリにコピーするステップであって、前記高い利用率を有する前記第2のメモリ中の前記ページが、前記監視されたページアクセスカウンタに基づいて特定される、ステップと、
前記コピーするステップに基づいて、前記動的に割り当てられたページに対応する、仮想アドレスと物理アドレスとのマッピングを変更するステップとを含む、請求項1に記載の方法。
【請求項３】
前記第1のメモリ中の前記ページおよび前記第2のメモリ中の前記ページを動的に割り当てるステップが、
低い利用率を有する前記第1のメモリ中のページからの内容を前記第2のメモリにコピーするステップであって、前記低い利用率を有する前記第1のメモリ中の前記ページが、前記監視されたページアクセスカウンタに基づいて特定される、ステップと、
前記コピーするステップに基づいて、前記動的に割り当てられたページに対応する、仮想アドレスと物理アドレスとのマッピングを変更するステップとを含む、請求項1に記載の方法。
【請求項４】
カーネルまたはオペレーティングシステムのルーチンが、前記第1のメモリ中の前記ページおよび前記第2のメモリ中の前記ページを動的に割り当てる、請求項1に記載の方法。
【請求項５】
前記第1のメモリがワイド入力/出力(I/O)メモリを含み、前記第2のメモリがダブルデータレート(DDR)メモリを含む、請求項1に記載の方法。
【請求項６】
前記ページアクセスカウンタが、仮想メモリと関連付けられた仮想アドレスと前記第1のメモリ中の前記ページおよび前記第2のメモリ中の前記ページと関連付けられた物理アドレスとのマッピングを記憶するページテーブルに組み込まれる、ハードウェアベースのカウンタを含む、請求項1に記載の方法。
【請求項７】
前記ハードウェアベースのカウンタが、前記第1のメモリ中の前記ページおよび前記第2のメモリ中の前記ページと関連付けられた前記利用率に関するカウントを記憶する、1つまたは複数のレジスタを含む、請求項6に記載の方法。
【請求項８】
前記第1のメモリが、前記第2のメモリよりも大きい容量、高いスループット、小さいレイテンシ、または小さい電力消費の1つまたは複数を有していることに基づいて、前記第1のメモリが前記第2のメモリより高い効率を有すると判定するステップであって、カーネルまたはオペレーティングシステムのルーチンが、前記第1のメモリおよび前記第2のメモリと関連付けられた前記容量、スループット、レイテンシ、および電力消費を規定する、1つまたは複数の所定の基準に基づいて、前記第1のメモリが前記第2のメモリよりも高い効率を有すると判定する、ステップをさらに含む、請求項1に記載の方法。
【請求項９】
前記第1のメモリが、前記第2のメモリよりも大きい容量、高いスループット、小さいレイテンシ、または小さい電力消費の1つまたは複数を有していることに基づいて、前記第1のメモリが前記第2のメモリより高い効率を有すると判定するステップであって、カーネルまたはオペレーティングシステムのルーチンが、前記第1のメモリおよび前記第2のメモリと関連付けられた前記容量、スループット、レイテンシ、および電力消費を測定する、ベンチマーク作成プロセスに基づいて、前記第1のメモリが前記第2のメモリよりも高い効率を有すると判定する、ステップをさらに含む、請求項1に記載の方法。
【請求項１０】
前記第1のメモリ中のページまたは前記第2のメモリ中のページの1つまたは複数と関連付けられたイベントを検出するステップと、
前記検出されたイベントと関連付けられたタイプに基づいて、前記検出されたイベントに対応する前記ページと関連付けられた前記ページアクセスカウンタを更新するステップとをさらに含む、請求項1に記載の方法。
【請求項１１】
前記ページアクセスカウンタを更新するステップが、前記検出されたイベントと関連付けられた前記タイプが前記ページにアクセスするステップを含むと判定したことに応答して、前記検出されたイベントに対応する前記ページと関連付けられた前記ページアクセスカウンタをインクリメントするステップを含む、請求項10に記載の方法。
【請求項１２】
前記ページアクセスカウンタを更新するステップが、前記ページと関連付けられた仮想アドレスを前記ページと関連付けられた物理アドレスにマッピングするデータ構造から前記ページに対応するエントリを除去するステップを前記検出されたイベントと関連付けられた前記タイプが含むと判定したことに応答して、前記検出されたイベントに対応する前記ページと関連付けられた前記ページアクセスカウンタをリセットするステップを含む、請求項10に記載の方法。
【請求項１３】
前記第1のメモリおよび前記第2のメモリが、モバイルプロセッサがアクセス可能なラストキャッシュレベルより上にメインメモリの中で位置する、請求項1に記載の方法。
【請求項１４】
請求項1から13のいずれか一項に記載の方法を実行するための手段を含む装置。
【請求項１５】
コンピュータ実行可能命令が記録されたコンピュータ可読記憶媒体であって、前記コンピュータ実行可能命令を1つまたは複数のプロセッサ上で実行するステップが、前記1つまたは複数のプロセッサに、請求項1から13のいずれか一項に記載の方法を実行させる、コンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
米国特許法第119条に基づく優先権の主張
米国特許法第119条に従って、本出願は、その内容が完全に参照により本明細書に組み込まれる、2012年11月9日に出願された「PROCESSOR MEMORY OPTIMIZATION VIA PAGE ACCESS COUNTING」という名称の米国仮特許出願第61/724,310号の優先権を主張する。
【０００２】
本出願は一般にプロセッサメモリの最適化に関し、より具体的には、モバイルプロセッサにおける効率的なメモリ利用率を得るために、より効率的な低電力かつ低密度のメモリを効率的に割り当てることに関する。
【背景技術】
【０００３】
プロセッサは通常、ポータブル電子デバイスまたはモバイル電子デバイスと関連付けられた組込みアプリケーションを含み得る、様々な用途で計算のタスクを実行する。これらの電子デバイスと関連付けられた、拡張し続ける機能のセットおよび増強された機能は、一般に、常に計算上強力なプロセッサを必要とする。たとえば、大半の現在のプロセッサは、命令実行パイプラインが大半のプログラムまたはアプリケーションと関連付けられた空間的かつ時間的な局所性の特性を利用するために容易にアクセスすることを可能としている1つまたは複数のキャッシュメモリ中に、最近実行された命令および最近使用されたデータを記憶する。具体的には、キャッシュは一般に、ランダムアクセスメモリ(RAM)および/または対応する連想メモリ(CAM)を含む、高速な(通常はオンチップの)メモリ構造を指す。
【０００４】
ラストキャッシュレベル以外では、多くのプロセッサは、異なるスループット、電力効率、容量、およびレイテンシに従って通常は動作する、複数の異なるタイプのメモリを伴うメインメモリを有する。たとえば、メインプロセッサメモリで使用され得る異なるタイプのメモリは、とりわけ、ワイド入力/出力(I/O)メモリ、シリアルメモリ、エクストリームデータレート(XDR)またはモバイルXDR(M-XDR)メモリ、ダブルデータレート(DDR)メモリ、低電力DDR(LPDDR)メモリ、スタックメモリインターフェース(SDI)アーキテクチャ、および外部バスインターフェース(EBI)メモリアーキテクチャを含み得る。異なるスループット、電力効率、容量、レイテンシ、および異なるタイプのメモリと関連付けられた他の特性の間のトレードオフのバランスをとる、または管理することを試みる既存の技法は、異なるタイプのメモリに固定されたアドレスを割り当てる傾向がある。たとえば、プロセッサメモリを効率的に利用するための1つの提案されている解決法は、設計時点でソフトウェア内に異なるメモリをどのように割り振るかを構成することである。しかしながら、この提案されている解決法には、より効率的なメモリをどのように割り当てるかを統計的に定義することが、多くの使用事例において、より効率的なメモリがアイドル状態になることをもたらし得ることを含む、様々な欠点がある。この問題に対する別の提案されている解決法は、動的なメモリ割振りルーチンに割当てを扱わせることである。しかしながら、この提案されている解決法も、メモリが割り当てられた時点で実際のメモリ利用率が動的なメモリ割振りルーチンに知られていない可能性があることを含む欠点を有する。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
したがって、実行速度を向上させ、電力消費を減らし、メモリ利用率を改善する、プロセッサの最適化が望ましい。
【課題を解決するための手段】
【０００６】
以下では、1つまたは複数の実施形態の基本的な理解をもたらすために、本明細書で開示されるページアクセスカウントを介したプロセッサメモリの最適化の、1つまたは複数の実施形態の簡略化された概要を提示する。したがって、この概要は、すべての考慮される実施形態の包括的な概要であると見なされるべきではなく、また、この概要は、本明細書で説明されるすべての実施形態の主要な要素または重要な要素を識別するものではなく、いずれの特定の実施形態の範囲を定めるものでもない。したがって、この概要の唯一の目的は、以下で提示されるより詳細な説明の前置きとして、本明細書で開示されるプロセッサメモリの最適化に関する1つまたは複数の実施形態に関するいくつかの概念を、簡略化された形で提示することである。
【０００７】
様々な実施形態によれば、ページアクセスカウントが、プロセッサ(たとえば、モバイルプロセッサ)中の低電力かつ低密度のメモリを効率的に利用するために使用され得る。具体的には、プロセッサは、様々な使用事例において効率性を得るように動的に割り当てられ、変更され、または利用され得る、複数の異なるタイプのメモリを有するメインメモリを含み得る。一実施形態では、メモリ利用率は、ページアクセスカウントを介してページごとに測定されてよく、次いで、カーネルルーチンまたはオペレーティングシステムルーチンが、効率的なメモリにおいてマッピングするために使用されてよい。たとえば、ハードウェアベースのページアクセスカウンタがメモリ利用率を記録するために使用されてよく、次いで、カーネルまたはオペレーティングシステムのルーチンが、仮想アドレスから物理アドレスへのマッピングを変更し、メモリの割当てを動的に変更することができる。
【０００８】
様々な実施形態によれば、通常、利用可能であるページアクセスカウンタの数より多くのメモリページが、メインメモリにおいて利用可能である複数の異なるタイプのメモリ内で使用されていてよく、これは、アドレス変換キャッシュ(トランスレーションルックアサイドバッファまたはTLBとも呼ばれる)における状況と実質的に同様であり得る。よって、一実施形態では、ページアクセスカウンタは、したがって、異なるメモリと関連付けられたページテーブルに組み込まれてよく、特定のページテーブルに組み込まれるページアクセスカウンタは、そのページテーブルにアクセスするイベントに応答してインクリメントされ得る。さらに、アドレス変換キャッシュまたはTLBからエントリを除去するイベントに応答して、除去されたエントリと関連付けられたページアクセスカウンタは、それに従ってリセットまたは更新され得る。一実施形態では、異なるタイプのメモリのうちのより効率的なメモリ(たとえば、DDRメモリに対するワイドI/Oメモリ)のメモリページに切り替えるために、メモリページの内容が、ある物理メモリデバイスから他の物理メモリデバイスに(たとえば、DDRメモリからワイドI/Oメモリに)コピーされ得る。さらに、より多く使用されているメモリページからより効率的なタイプのメモリに割り当てることによって得られた効率性が、コピー動作と関連付けられたあらゆるオーバーヘッドを相殺することができる。
【０００９】
様々な実施形態によれば、ページアクセスカウントを介してメインメモリにおいて利用可能な、プロセッサが有する、低電力の、低密度の、またはより効率的なメモリを利用するための技法は、より効率的なメモリがメインメモリと同時に存在することを可能にし得る。その上、利用可能なメモリは、ユーザプログラムまたはアプリケーションに対する変更を何ら必要とすることなく、より効率的なメモリが最も頻繁にアクセスされるメモリページのために常に使用されることを確実にするために、測定された利用率(たとえば、ページアクセスカウンタを介した)に基づいて動的に割り当てられてよく、それは、すべてのソフトウェアのサポートが、カーネルまたはオペレーティングシステムのルーチンに対して限局され得るからである。具体的には、仮想アドレスと物理アドレスとのマッピングを動的に変更する最適化は、カーネルまたはオペレーティングシステムのルーチンが、物理メモリがデータを記憶する物理アドレスを変更でき、新たな物理アドレスを反映するように仮想アドレスと関連付けられたマッピングを更新できるという点で、物理メモリに記憶されたデータにアクセスするために仮想アドレスを利用するユーザプログラムに対して透過的であってよい。したがって、ユーザプログラムは、同じ仮想アドレスを利用して、何ら変更を伴わずに新たな物理アドレスにあるデータにアクセスすることができる。
【００１０】
一実施形態によれば、プロセッサメモリを効率的に利用するための方法は、第1のメモリ中のページおよび第2のメモリ中のページと関連付けられた利用率を測定するページアクセスカウンタを監視するステップを含んでよく、第1のメモリは第2のメモリより高い効率を有し(たとえば、それぞれの電力消費、密度、レイテンシ、および/またはそれらと関連付けられた帯域幅に基づいて)、方法はさらに、監視されたページアクセスカウンタに基づいて、第1のメモリ中のページおよび第2のメモリ中のページを動的に割り当てるステップを含み得る。たとえば、一実施形態では、第1のメモリ中のページおよび第2のメモリ中のページを動的に割り当てるステップは、利用率の高い第2のメモリ中のページと関連付けられた内容を第1のメモリにコピーするステップと、利用率の低い第1のメモリ中のページと関連付けられた内容を第2のメモリにコピーするステップと、コピーするステップに基づいて、動的に割り当てられたページに対応する仮想アドレスと物理アドレスとのマッピングを変更するステップとを含み得る。一実施形態では、ページアクセスカウンタは、仮想アドレスと、第1のメモリおよび第2のメモリ中のページと関連付けられた物理アドレスとのマッピングを記憶する、ページテーブルに組み込まれる、ハードウェアベースのカウンタを含み得る。さらに、一実施形態では、方法はさらに、第1のメモリ中のページと第2のメモリ中のページの1つまたは複数と関連付けられたイベントを検出するステップと、検出されたイベントと関連付けられたタイプに基づいて、検出されたイベントに対応するページと関連付けられたページアクセスカウンタを更新するステップとを含み得る。たとえば、検出されたイベントに対応するページと関連付けられたページアクセスカウンタは、検出されたイベントと関連付けられたタイプがページにアクセスするステップを含む場合、インクリメントされてよく、または代替的に、ページアクセスカウンタは、検出されたイベントと関連付けられたタイプが、仮想アドレスをそれと関連付けられた物理アドレスにマッピングするデータ構造からページに対応するエントリを除去する場合、リセットされてよい。
【００１１】
別の実施形態によれば、プロセッサメモリを効率的に利用するための装置は、第1のメモリ中のページおよび第2のメモリ中のページと関連付けられた利用率を測定するページアクセスカウンタを監視するための手段と、監視されたページアクセスカウンタに基づいて、第1のメモリ中のページおよび第2のメモリ中のページを動的に割り当てるための手段とを含み得る。たとえば、一実施形態では、ページを動的に割り当てるための手段は、利用率の高い第2のメモリ中のページと関連付けられた内容を第1のメモリにコピーするための手段と、利用率の低い第1のメモリ中のページと関連付けられた内容を第2のメモリにコピーするための手段と、コピーしたことに基づいて、動的に割り当てられたページに対応する仮想アドレスと物理アドレスとのマッピングを変更するための手段とを含み得る。一実施形態では、ページアクセスカウンタは、仮想アドレスと、第1のメモリおよび第2のメモリ中のページと関連付けられた物理アドレスとのマッピングを記憶する、ページテーブルに組み込まれる、ハードウェアベースのカウンタを含み得る。さらに、一実施形態では、第1のメモリ中のページおよび第2のメモリ中のページを動的に割り当てるための手段は、カーネルまたはオペレーティングシステムのルーチンを含む。
【００１２】
別の実施形態によれば、プロセッサメモリを効率的に利用するために、コンピュータ実行可能命令が記録されたコンピュータ可読記憶媒体が使用されてよく、プロセッサ上でコンピュータ実行可能命令を実行するステップは、プロセッサに、第1のメモリ中のページおよび第2のメモリ中のページと関連付けられた利用率を測定するページアクセスカウンタを監視させ、監視されたページアクセスカウンタに基づいて、第1のメモリ中のページおよび第2のメモリ中のページを動的に割り当てさせることができる。たとえば、一実施形態では、コンピュータ実行可能命令は、プロセッサに、利用率の高い第2のメモリ中のページと関連付けられた内容を第1のメモリへコピーさせ、利用率の低い第1のメモリ中のページと関連付けられた内容を第2のメモリへコピーさせ、第1のメモリおよび第2のメモリ中のページを動的に割り当てるために、コピーしたことに基づいて、動的に割り当てられたページに対応する仮想アドレスと物理アドレスとのマッピングを変更させることができる。一実施形態では、コンピュータ実行可能命令は、カーネルまたはオペレーティングシステムのルーチンを含み、ページアクセスカウンタは、第1のメモリおよび第2のメモリの中のページと関連付けられた仮想アドレスと物理アドレスとのマッピングを記憶するページテーブルに組み込まれる、ハードウェアベースのカウンタを含み得る。
【００１３】
別の実施形態によれば、プロセッサメモリを効率的に利用できる装置は、とりわけ、第1のメモリおよび第2のメモリを有するメモリアーキテクチャと、プロセッサに、第1のメモリ中のページおよび第2のメモリ中のページと関連付けられた利用率を測定するページアクセスカウンタを監視させ、監視されたページアクセスカウンタに基づいて、第1のメモリ中のページおよび第2のメモリ中のページを動的に割り当てさせる、カーネルまたはオペレーティングシステムのルーチンを実行するように構成されるプロセッサとを含み得る。たとえば、一実施形態では、カーネルまたはオペレーティングシステムのルーチンは、プロセッサに、利用率の高い第2のメモリ中のページからの内容を第1のメモリへコピーさせ、第1のメモリおよび第2のメモリの中のページを動的に割り当てるために、利用率の低い第1のメモリ中のページからの内容を第2のメモリへコピーさせることができ、次いで、動的に割り当てられたページに対応する仮想アドレスと物理アドレスとのマッピングが、適切に変更され得る。
【００１４】
本明細書で説明されるプロセッサメモリの最適化に関する実施形態と関連付けられた他の目的および利点が、添付の図面および詳細な説明に基づいて、当業者には明らかになるであろう。
【００１５】
添付の図面は、本明細書で開示される実施形態の説明を助けるために提示され、開示される実施形態と関連付けられた例示的な機能を、それを何ら限定することなく例示することのみを目的に与えられた。
【図面の簡単な説明】
【００１６】
【図１】ある例示的な実施形態による、本明細書で説明されるプロセッサメモリの最適化を実施することができるメモリアーキテクチャを伴うモバイルデバイスを含む例示的なワイヤレス通信システムを示す図である。
【図２】ある例示的な実施形態による、本明細書で説明されるプロセッサメモリの最適化を実施することができるメモリアーキテクチャを伴う例示的なモバイルデバイスを示す図である。
【図３】モバイルプロセッサにおいて利用され得る例示的な従来のメモリアーキテクチャを示す図である。
【図４】ある例示的な実施形態による、本明細書で説明されるプロセッサメモリの最適化を実施するためにモバイルプロセッサで利用され得る例示的なメモリアーキテクチャを示す図である。
【図５Ａ】ある例示的な実施形態による、本明細書で説明されるプロセッサメモリの最適化を実施するためにモバイルプロセッサで利用され得る例示的なメモリのマッピングを示す図であり、図5Aに示されるメモリは、最適化前のメモリの割当てを表す。
【図５Ｂ】ある例示的な実施形態による、本明細書で説明されるプロセッサメモリの最適化を実施するためにモバイルプロセッサで利用され得る例示的なメモリのマッピングを示す図であり、図5Bに示されるメモリは、最適化後のメモリの割当てを表す。
【図６】ある例示的な実施形態による、モバイルプロセッサにおけるメモリ利用率を最適化するための例示的な方法を示す図である。
【図７】ある例示的な実施形態による、本明細書で説明されるプロセッサメモリの最適化を実施することができるメモリアーキテクチャを伴うワイヤレス通信デバイスに対応する例示的なブロック図である。
【図８】ある例示的な実施形態による、本明細書で説明されるプロセッサメモリの最適化を実施することができるメモリアーキテクチャを伴う1つまたは複数の通信デバイスを含む例示的な通信システムを示す図である。
【発明を実施するための形態】
【００１７】
態様が、ページアクセスカウントを介したプロセッサメモリの最適化の様々な例示的な実施形態に関する具体的な例を示すために、以下の説明および関連する図面において開示される。代替的な実施形態が、本開示を読めば当業者には明らかであり、本開示の範囲または趣旨から逸脱することなく、理解され実践され得る。加えて、本明細書で開示される態様および実施形態の関連する詳細を不明瞭にしないように、よく知られている要素は詳細には説明されず、または省略され得る。
【００１８】
「例示的な」という言葉は、「例、事例、または例示として機能する」ことを意味するように本明細書で使用される。「例示的」として本明細書で説明される任意の実施形態は、必ずしも他の実施形態よりも好ましいか、または有利であると解釈されるべきではない。同様に、「実施形態」という用語は、すべての実施形態が、説明された特徴、利点または動作モードを含むことを必要としない。
【００１９】
本明細書で使用される用語は、特定の実施形態のみを説明するために与えられ、本明細書で開示されるいずれの実施形態も限定することを意図されていない。本明細書で使用される単数形「a」、「an」、および「the」は、文脈が別段に明確に示さない限り、複数形をも含むことが意図される。本明細書で使用される「含む(comprises)」、「含んでいる(comprising)」、「含む(includes)」、および/または「含んでいる(including)」という用語は、述べられた特徴、整数、ステップ、動作、要素、および/または構成要素の存在を規定するが、1つまたは複数の他の特徴、整数、ステップ、動作、要素、構成要素、および/またはそれらのグループの存在または追加を排除しないことがさらに理解されよう。
【００２０】
一実施形態によれば、図1は、本明細書で説明されるプロセッサメモリの最適化を実施することができるメモリアーキテクチャを伴う1つまたは複数のモバイルデバイス106を含むワイヤレス通信システム100を示す。一実施形態では、ワイヤレス通信システム100は、任意の適切なワイヤレス規格に従って動作し得る。たとえば、ワイヤレス通信システム100は、複数のユーザをサポートするために利用可能なネットワークリソースを共有できる、多元接続ネットワークであってよく、例示的な多元接続ネットワークは、符号分割多元接続(CDMA)ネットワーク、時分割多元接続(TDMA)ネットワーク、周波数分割多元接続(FDMA)ネットワーク、および直交FDMA(OFDMA)ネットワークを含み得る。これらの多元接続ネットワークは、様々な無線技術を実装することができ、「無線技術」、「無線接続技術」(RAT)、「接続技術」、および「エアインターフェース」という用語は、しばしば交換可能に使用され得る。CDMAネットワークは、cdma2000(たとえば、IS-2000、IS-856、および/またはIS-95規格の1つまたは複数に従った)、Wideband-CDMA(W-CDMA)、または他の適切な無線技術のような、無線技術を実装することができる。CDMA2000 1x(または単に「1x」)ネットワークは、IS-2000および/またはIS-95を実装するワイヤレスネットワークを指す。CDMA2000 1xEV-DO(または単に「1xEV-DO」)ネットワークは、IS-856を実装するワイヤレスネットワークを指す。ユニバーサルモバイル通信システム(UMTS)ネットワークは、W-CDMAネットワークを実装するワイヤレスネットワークである。TDMAネットワークは、グローバルシステムモバイル通信(GSM(登録商標))のような無線技術を実装し得る。これらの様々な無線技術、規格、およびセルラーネットワークが当技術分野で知られている。W-CDMA、GSM(登録商標)、およびUMTSは、「第3世代パートナーシッププロジェクト」(3GPP)という名称の組織からの文書に記載されており、cdma2000は、「第3世代パートナーシッププロジェクト2」(3GPP2)という名称の組織からの文書に記載されている。3GPPおよび3GPP2の文書は、公に入手可能である。
【００２１】
一実施形態では、1つまたは複数のモバイルデバイス106に加えて、図1に示されるワイヤレス通信システム100は、1つまたは複数のモバイルデバイス106と通信するアクセスポイント(AP)104を含んでよく、AP 104はまた、NodeB、無線ネットワークコントローラ(RNC)、eNodeB、基地局コントローラ(BSC)、基地局装置(BTS)、基地局(BS)、送受信機機能(TF)、無線ルータ、無線送受信機、または他の適切な用語を含んでよく、それらとして実装されてよく、またはそれらとして知られていてよい。
【００２２】
一般に、AP 104は、ワイヤレス通信システム100のためのハブまたは基地局として機能することができ、1つまたは複数のモバイルデバイス106は、ワイヤレス通信システム100においてユーザとして機能することができる。たとえば、一実施形態では、モバイルデバイス106は、ラップトップコンピュータ、携帯情報端末(PDA)、携帯電話、または、バッテリーの電力で動作でき、および/またはワイヤレス通信をサポートできる、任意の他の適切なデバイスであり得る。モバイルデバイス106はまた、移動局(STA)、端末、アクセス端末(AT)、ユーザ機器(UE)、加入者局、加入者ユニット、遠隔局、遠隔端末、ユーザ端末、ユーザエージェント、ユーザデバイス、または他の適切な用語を含んでよく、それらとして実装されてよく、またはそれらとして知られていてよい。様々な実施形態では、モバイルデバイス106はまた、携帯電話、コードレス電話、セッション開始プロトコル(SIP)電話、ワイヤレスローカルループ(WLL)局、PDA、ワイヤレス接続機能を有するハンドヘルドデバイス、またはワイヤレスモデムに接続された他の適切な処理デバイスを含み得る。したがって、本明細書で説明される1つまたは複数の実施形態は、電話(たとえば、携帯電話もしくはスマートフォン)、コンピュータ(たとえば、ラップトップ)、ポータブル通信デバイス、ヘッドセット、ポータブルコンピューティングデバイス(たとえば、携帯情報端末)、娯楽デバイス(たとえば、音楽デバイス、ビデオデバイス、衛星ラジオなど)、ゲームデバイスもしくはシステム、全地球測位システムデバイス、または、バッテリーの電力で動作し、および/またはワイヤレス媒体を介して通信するように構成された任意の他の適切なモバイルデバイスに組み込まれ得る。
【００２３】
一実施形態では、ワイヤレス通信システム100は、モバイルデバイス106がWiFi適合ワイヤレスリンク(たとえば、IEEE 802.11プロトコル)を介してAP 104に接続して一般的なインターネット接続または別のワイドエリアネットワーク(WAN)への接続を獲得する、ワイヤレスローカルエリアネットワーク(WLAN)を含み得る。一実施形態では、モバイルデバイス106はまた、(たとえば、Wi-Fi Direct規格に従って)AP 104として使用され得る。モバイルデバイス106およびAP 104は一般に、ワイヤレス通信ネットワーク100において送信ノードまたは受信ノードと呼ばれ得る。一実施形態では、ワイヤレス通信システム100におけるモバイルデバイス106とAP 104との間の送信をサポートするために、様々な処理および機構が使用され得る。たとえば、一実施形態では、ワイヤレス通信システム100における送信は、一般に、OFDM/OFDMA技法によれば、AP 104から送信されモバイルデバイス106において受信される信号と、モバイルデバイス106から送信されAP 104において受信される信号とを含んでよく、この場合、ワイヤレス通信システム100は、OFDM/OFDMAシステムと呼ばれ得る。あるいは(または加えて)、信号は、CDMA技法によれば、AP 104およびモバイルデバイス106から送信され、それらにおいて受信されてよく、この場合、ワイヤレス通信システム100はCDMAシステムと呼ばれ得る。
【００２４】
一実施形態では、AP 104からモバイルデバイス106の1つまたは複数への送信を搬送する通信リンクは、ダウンリンク(DL)108と呼ばれてよく、ダウンリンク108はまた、順方向リンクまたは順方向チャネルと呼ばれてよく、モバイルデバイス106の1つまたは複数からAP 104への送信を搬送する通信リンクは、アップリンク(UL)110と呼ばれてよく、アップリンク110はまた、逆方向リンクまたは逆方向チャネルと呼ばれてよい。一実施形態では、上で述べられたように、AP 104は一般に、基地局またはハブとして動作し、基本サービスエリア(BSA)102の中でワイヤレス通信カバレッジを提供し得る。一実施形態では、AP 104およびBSA 102におけるワイヤレス通信のためのAP 104を使用するモバイルデバイス106は、基本サービスセット(BSS)と呼ばれ得る。しかしながら、ワイヤレス通信システム100は、中央AP 104を有さない場合があり、むしろモバイルデバイス106間のピアツーピアネットワークまたはアドホックネットワークとして機能することがあることを、当業者は理解するだろう。したがって、本明細書で説明されるAP 104の機能は、代替的に、(たとえば、Wi-Fi Direct規格に従って)モバイルデバイス106の1つまたは複数によって実装される、または実行されることがある。
【００２５】
一実施形態によれば、図2は、図1に示されるワイヤレス通信システム100内の、本明細書で説明されたプロセッサメモリの最適化を実装できるメモリアーキテクチャを伴うモバイルデバイス202を示す。一実施形態では、モバイルデバイス202は、本明細書で説明されるプロセッサメモリの最適化と関連付けられた様々な機能を実装するように構成され得る、任意の適切なデバイスを表し得る。たとえば、いくつかの実施形態では、図2に示されるモバイルデバイス202は、図1に示されるAP 104、図1に示されるモバイルデバイス106の1つ、または、図1に示されるAP 104の機能を実装する、もしくは別様に実行する、図1に示されるモバイルデバイス106の1つを含み得る。
【００２６】
一実施形態では、モバイルデバイス202は、モバイルデバイス202の動作を制御するプロセッサ204を含み得る。プロセッサ204はまた、中央処理装置(CPU)と呼ばれることがある。加えて、モバイルデバイス202は、RAM、読取り専用メモリ(ROM)、DDRメモリ、ワイドI/Oメモリ、または他の適切なメモリ技術を含み得る、メモリ206を含み得る。一実施形態では、メモリ206は、プロセッサ204がモバイルデバイス202の動作を制御するために実行および/または利用できる、命令およびデータを記憶し得る。一実施形態では、メモリ206はさらに、不揮発性ランダムアクセスメモリ(NVRAM)を含み得る。プロセッサ204は一般に、メモリ206に記憶されている命令に基づいて論理演算および算術演算を実行し、および/または、メモリ206に記憶されている命令を実行して本明細書で説明されるメモリの最適化を実施することができる。
【００２７】
一実施形態では、モバイルデバイス202はさらに、モバイルデバイス202と遠隔のエンティティ(たとえば、基地局またはAP、別のモバイルデバイスなど)との間でのデータの送信および受信を可能にするための送信機210および受信機212を有する、筐体208および送受信機214を含み得る。一実施形態では、データは、筐体208に取り付けられ送受信機214に電気的に結合され得るアンテナ216を介して、遠隔のエンティティに送信されそれから受信され得る。さらに、モバイルデバイス202は、複数の送信機、複数の受信機、複数の送受信機、および/または複数のアンテナを適切に含み得ることを、当業者は理解するだろう。
【００２８】
一実施形態では、モバイルデバイス202はさらに、送受信機214を介して送信され受信された信号のレベルを検出し定量化するために使用され得る、信号検出器218を含み得る。信号検出器218は、総エネルギー、シンボルごとのサブキャリア当たりのエネルギー、電力スペクトル密度、および他の適切な信号のような信号を検出し得る。モバイルデバイス202はまた、送受信機214を介して送信され受信される信号を処理する際に使用するためのデジタル信号プロセッサ(DSP)220を含み得る。たとえば、一実施形態では、DSP 220は、送信機210を介した送信のためにデータユニットを生成するように構成され得る。様々な実施形態において、データユニットは、明らかであるように、パケットまたはメッセージとも呼ばれ得る、物理レイヤプロトコルデータユニット(PPDU)を含み得る。
【００２９】
一実施形態では、モバイルデバイス202はさらに、キーパッド、マイクロフォン、スピーカー、ディスプレイ、および/または、モバイルデバイス202のユーザに情報を伝え、および/またはユーザからの入力を受け取ることができる、他の適切な要素もしくはコンポーネントを含み得る、ユーザインターフェース222を含み得る。さらに、一実施形態では、モバイルデバイス202の様々なコンポーネントは、バスシステム226を介して一緒に結合され得る。たとえば、バスシステム226は、相互接続構造部、データバス、電力バス、制御信号バス、状態信号バス、または、モバイルデバイス202の様々なコンポーネントを互いに相互接続し、もしくは別様に結合できる、任意の他の適切なコンポーネントを含み得る。しかしながら、モバイルデバイス202のコンポーネントは、他の適切な機構を使用して、互いに結合され、または互いに入力を受け入れ、または互いに入力を提供できることを、当業者は理解するだろう。
【００３０】
さらに、図2は、様々な別個のコンポーネントを有するものとしてモバイルデバイス202を示すが、コンポーネントの1つまたは複数は、適切に組み合わされ、または共通に実装されることを、当業者は認識するだろう。たとえば、プロセッサ204は、信号検出器218および/またはDSP 220に関して上で説明された機能に加えて、プロセッサ204に関して上で説明された機能を実装することができる。さらに、図2に示される任意の特定のコンポーネントが、複数の別個の要素を使用して実装され得る(たとえば、送信機210は複数の送信機210を含んでよく、受信機212は複数の受信機212を含んでよいなど)ことを、当業者は認識するだろう。
【００３１】
ここで図3を参照すると、モバイルプロセッサにおいて利用され得る例示的な従来のメモリアーキテクチャが図3で示される。具体的には、図3に示されるメモリアーキテクチャは、キャッシュ330に結合されたプロセッサ340を含んでよく、プロセッサ340は、キャッシュ330に最近実行された命令および最近使用されたデータを記憶し、その後、キャッシュ330に記憶されている命令およびデータにアクセスして、命令実行パイプラインに与えられ得る命令およびデータへの高速なアクセスを得ることができる。一実施形態では、プロセッサ340およびキャッシュ330は、バスまたは他の適切な相互接続構造部320を介して、メインメモリに接続し得る。一実施形態では、相互接続構造部320は、メインメモリと関連付けられたアドレス指定および許可を扱うために、トランスレーションルックアサイドバッファ(TLB)と関連付けられた機能を含み、または実装し得る。したがって、プロセッサ340は、メインメモリに記憶されるべきデータを相互接続構造部320に提供することができ、相互接続構造部320は、メインメモリ中のある物理アドレスにおけるデータを記憶することができる。さらに、メインメモリに記憶されているデータにアクセスするために、プロセッサ340は、データと関連付けられた物理アドレスを相互接続構造部320に提供することができ、相互接続構造部320は、その物理アドレスを使用して記憶されているデータを取得することができ、そのデータはキャッシュ330に記憶され得る。任意の既知の技法が、図3に示される従来のメモリアーキテクチャ内のメインメモリにデータを記憶し、メインメモリ中のデータにアクセスするために使用され得ることを、当業者は理解するだろう。
【００３２】
図3に示されるように、メインメモリは一般に、ワイドI/Oメモリ305およびDDRメモリ310を含み得る、2つのタイプのメモリを有し得る。しかしながら、メインメモリは、異なるタイプのメモリおよび/または追加のタイプのメモリを含み得ることを、当業者は理解するだろう。示される例では、ワイドI/Oメモリ305およびDDRメモリ310は一般に、異なるスループット、電力効率、レイテンシ、および容量を有し得るので、ワイドI/Oメモリ305またはDDRメモリ310をどのように効率的に利用するかということに関する、トレードオフが存在し得る。たとえば、ワイドI/Oメモリ305は一般に、システムオンチップ(SoC)の上に直接積層されるシリコン貫通ビア(TSV)相互接続およびメモリチップを伴う、チップレベルの3次元積層を可能にでき、これは、電力効率とメモリ帯域幅の増大とを必要とする用途(たとえば、ゲーム、高解像度ビデオ、マルチタスクなど)に対しては特によく適したものであり得る。さらに、DDRメモリ310は、位相ロックループ、自己較正、および高い伝送レートを実現するための他の技法を使用して、電子データおよびクロック信号と関連付けられたタイミングを厳密に制御することができる。したがって、ワイドI/Oメモリ305は一般に、DDRメモリ310と比較して、より小さい容量、より小さい電力消費、およびより高い帯域幅を有し得るが、ワイドI/Oメモリ305およびDDRメモリ310は一般に、等しい、または実質的に同様のレイテンシを有し得る。
【００３３】
図4は、一実施形態による、本明細書で説明されるプロセッサメモリの最適化を実施するためにモバイルプロセッサで利用され得るメモリアーキテクチャを示す。一般に、図4に示されるメモリアーキテクチャは、プロセッサ440を含む、図3に示され上で説明されたメモリアーキテクチャと実質的に同様の様々なコンポーネントを含んでよく、プロセッサ440は、最近実行された命令および最近使用されたデータを、プロセッサ440に結合されたキャッシュ430に記憶する(たとえば、キャッシュ430に記憶されている最近実行された命令および最近使用されたデータに後でアクセスし、それによって、命令実行パイプラインに与えられ得る命令およびデータへの高速なアクセスを得るために)ように構成される。したがって、説明を簡潔かつ簡単にするために、図4に示されるメモリアーキテクチャ中のいくつかのコンポーネントに関する様々な詳細は、同一のまたは実質的に同様の詳細が図3に関して上で提供された程度まで、省略され得る。
【００３４】
一実施形態では、図4に示されるメモリアーキテクチャは一般に、ワイドI/Oメモリ405およびDDRメモリ410と関連付けられた利用率を監視し、監視された利用率に基づいて、ワイドI/Oメモリ405および/またはDDRメモリ410における1つまたは複数のページと関連付けられた割当てを動的に変更することができる。一般に、ワイドI/Oメモリ405およびDDRメモリ410は、プロセッサ440がアクセス可能でありキャッシュ430と関連付けられたラストレベルよりも上に位置する、メインメモリに含まれてよい、またはその中に位置してよい。一実施形態では、メモリアーキテクチャは、様々なページアクセスカウンタ480によって、監視されたメモリ利用率を記録することができ、ページアクセスカウンタ480は、ワイドI/Oメモリ405および/またはDDRメモリ410の中で割り当てられたあるページが何回アクセスされたかを測定する、ハードウェアベースのカウンタを含み得る。たとえば、一実施形態では、ハードウェアベースのページアクセスカウンタ480は、あるハードウェア関連活動に関するカウントを記憶することができる専用レジスタを含んでよく、ハードウェア関連活動は、この場合、ワイドI/Oメモリ405および/またはDDRメモリ410の中のあるページを利用するために、他のI/O動作にアクセスしまたはそれを実行するイベントを含み得る。しかしながら、他の適切な機構がページアクセスカウンタ480を実装するために利用され得ることを、当業者は理解するだろう。さらに、一実施形態では、メモリアーキテクチャは、メモリ利用率を監視するように構成される1つまたは複数のメモリコントローラを含み得る(たとえば、メモリコントローラ465は、ワイドI/Oメモリ405と関連付けられたページアクセスカウンタ480を介してワイドI/Oメモリ405と関連付けられた利用率を監視することができ、メモリコントローラ470は、DDRメモリ410と関連付けられたページアクセスカウンタ480を介してDDRメモリ410と関連付けられた利用率を監視することができる)。当業者にはよく知られているように、メモリコントローラ465およびメモリコントローラ470は一般に、メインメモリにおける相互接続構造部420とワイドI/Oメモリ405とDDRメモリ410との間のデータの流れを制御する、デジタル回路を含み得る(たとえば、ワイドI/Oメモリ405から読み取りDDRメモリ410に書き込むことができる論理回路を含む)。さらに、図4は、ワイドI/Oメモリ405およびDDRメモリ410と関連付けられた異なるメモリコントローラ465および470を示すが、そのような図示は便宜的なものにすぎず、メモリコントローラ465および470は1つのメモリコントローラ内で組み合わされてよいことを、当業者は理解するだろう。
【００３５】
一実施形態では、監視された利用率に基づいて、ワイドI/Oメモリ405および/またはDDRメモリ410の中でのページと関連付けられた割当てを動的に変更するために、プロセッサ440は、動的に割り当てられたページと関連付けられた仮想アドレスから物理アドレスへのマッピングを変更できる、カーネルまたはオペレーティングシステムのルーチンを実行することができる。たとえば、一実施形態では、メモリ管理ユニット(MMU)450は、アクセスするプロセスに固有の仮想アドレスとハードウェアに固有の物理アドレスとの間のマッピングを記憶するための1つまたは複数のページテーブル(たとえば、ワイドI/Oメモリ405およびDDRメモリ410)を保持してよく、仮想アドレスと物理アドレスとの間のマッピングは、ページテーブルのエントリと呼ばれ得る。プロセスが特定の仮想アドレスへのアクセスを要求するとき、プロセッサ440は、MMU 450に仮想アドレスを提供することができ、MMU 450は次いで、ページテーブルのエントリを参照して、仮想アドレスを、仮想アドレスと関連付けられたデータが物理的に記憶される場所に対応する物理アドレスにマッピングする。さらに、上で述べられたように、相互接続構造部420は、メインメモリと関連付けられたアドレス指定および許可を扱うために、TLBと関連付けられた機能を含み、または実装することができ、TLBは、TLBにキャッシュされたマッピングと関連付けられた特定の仮想アドレスにアクセスするためのその後の要求が、ページテーブルが検索されることを要求しないように、最近の仮想アドレスから物理アドレスへのマッピングをキャッシュすることができる。
【００３６】
一実施形態によれば、図5A〜図5Bは、ワイドI/Oメモリ405および/またはDDRメモリ410の中でのページと関連付けられた割当てを動的に変更するためにMMU 450が使用し得る、仮想メモリと物理メモリとの例示的なマッピングを示す。具体的には、示される仮想メモリは一般に、プロセッサ440が利用可能な全体のアドレス範囲と、プロセッサ440で実行されるすべてのプロセスとを含んでよく、MMU 450は、特定のサイズ(たとえば、1MB)および16進数の仮想アドレス(たとえば、7_FFFF_FFFF、2_21CF_FFFF、2_31CF_FFFF、0_0000_0000など)を有する様々なページへと、仮想メモリのアドレス空間を分割することができる。したがって、仮想メモリの中でページを割り振るための要求に応答して、MMU 450は、物理メモリの中のページを最初に割り振り、物理メモリの中の割り振られたページを仮想メモリの中のページと関連付けられた仮想アドレスにマッピングすることができる。その後、仮想アドレスにアクセスするための要求に応答して、MMU 450は、トランスレーションルックアサイドバッファ(TLB)とも呼ばれ得るアドレス変換キャッシュを使用して、仮想アドレスにマッピングされた物理メモリページに対応する物理アドレスへと、仮想アドレスを変換することができる。仮想アドレスから物理アドレスへのマッピングがどのように作成され、管理され、または使用されるかということに関するさらなる詳細は当業者には明らかであり、簡潔のために本明細書では繰り返されない。
【００３７】
一実施形態では、したがって、使用中のメモリページの数は、利用可能なページアクセスカウンタの数を超えることがある。たとえば、図5A〜図5Bは、ワイドI/Oメモリ405が4GBの物理アドレス空間を含み、DDRメモリ410が16GBの物理アドレス空間を含み、仮想メモリが使用中の32GBのアドレス空間を含む、例示的な使用事例を示す。ワイドI/Oメモリ405およびDDRメモリ410と関連付けられた物理アドレス空間の中の各ページは、利用可能な1つのページアクセスカウンタを有すると仮定すると、物理アドレス空間において利用可能なページアクセスカウンタよりも多くのメモリページが、仮想メモリの中で使用中であり得る。したがって、一実施形態では、ページアクセスカウンタ480は、仮想メモリアドレスと物理メモリ中の対応するアドレスとのマッピングを記憶する、ページテーブルに組み込まれ得る。たとえば、図5に示される様々な矢印は、全般に、仮想メモリおよび物理メモリの中のいくつかのページの間のマッピングを表すことができ、物理メモリ中のページと関連付けられたページアクセスカウンタ480は、物理メモリ中のページにマッピングされた仮想メモリ中のページに組み込まれ得る。図5Aに示されるように、最適化前のメモリの割当ては、仮想メモリ中の様々なアドレスを、利用率の高いワイドI/Oメモリ405中の1つまたは複数のページ(たとえば、ページ520a、520b、520c)および利用率の低いワイドI/Oメモリ405中の1つまたは複数のページ(たとえば、ページ510a)にマッピングすることができる。さらに、図5Aに示されるメモリの割当ては、仮想メモリ中の様々なアドレスを、利用率の高いDDRメモリ410中の1つまたは複数のページ(たとえば、ページ520d)および利用率の低いDDRメモリ410中の1つまたは複数のページ(たとえば、ページ510b、510c、510d)にさらにマッピングすることができる。
【００３８】
一実施形態では、MMU 450がプロセッサ440から特定の仮想アドレスにアクセスするための要求を受け取るたびに、MMU 450は、仮想アドレスを対応する物理アドレスに変換することができ、さらに、仮想アドレスから変換された物理アドレスに対応する、物理メモリ中のページと関連付けられた利用率を記録するために、変換された仮想アドレスを含むページテーブルのエントリに組み込まれたページアクセスカウンタ480をインクリメントすることができる。さらに、一実施形態では、ページテーブルに組み込まれるページアクセスカウンタ480は、アドレス変換キャッシュまたはTLBからページテーブルのエントリを除去するイベントに応答して、適切に更新され得る。たとえば、当業者には一般に知られているように、アドレス変換キャッシュまたはTLBの中の1つまたは複数の既存のエントリが、キャッシュミスの際に1つまたは複数の新たなエントリを記憶するための空間をアドレス変換キャッシュの中に設けるために除去されてよく、キャッシュミスは、要求された仮想アドレスを対応する物理アドレスにマッピングするエントリをページテーブルが欠いている場合に起こり得る。したがって、アドレス変換キャッシュまたはTLBからエントリを除去するための方針は、キャッシュミスの際に、最も使用頻度の低い(LFU:least-frequently-used)、または最もアクセス頻度の低いエントリを新たなエントリで置き換えることと、ページアクセスカウンタ480が最も多く使用されるページと関連付けられた利用率を正確に測定することを確実にするために、最も使用頻度の低いエントリと関連付けられたページアクセスカウンタをリセットすることとを含み得る。あるいは(または加えて)、アドレス変換キャッシュまたはTLBからエントリを除去するための方針は、より最近使用されたページと関連付けられた利用率を測定するために、最も以前に使用された(LRU:least-recently-used)、または最も以前にアクセスされたエントリを除去することができる(たとえば、複数のエントリが同一の、または実質的に同様の利用率を有する場合、より最近使用されたエントリは保存されてよく、より以前に使用されたエントリは新たなエントリのための空間を設けるために除去されてよい)。
【００３９】
一実施形態では、ページアクセスカウンタ480によって測定された利用率に基づいて、カーネルまたはオペレーティングシステムのルーチンは、MMU 450において使用される仮想アドレスから物理アドレスへのマッピングを変更して、プロセッサ440と関連付けられたメインメモリにおいて利用可能な最も効率的なメモリにページを動的に割り当てる(または割り当て直す)ことができる。一実施形態では、メインメモリで利用可能であり得る異なるタイプのメモリと関連付けられた相対的な効率は、それらと関連付けられた容量、スループット、レイテンシ、および/または電力効率に基づいて定義され得る。具体的には、所与のメモリに関して、容量は一般に、メモリの中で利用可能な全体の記憶領域(通常GBで表される)を指すことができ、スループットは、メモリと関連付けられたメモリインターフェースを通じてデータを伝送するための速度(通常GB/sまたはギガバイト毎秒で表される)を指すことができ、レイテンシは、MMU 450がプロセッサ440からの負荷命令の間にメモリにアクセスするための時間を表す、キャッシュミスペナルティの比率を指すことができ、電力効率は、アイドル状態、アクティブ状態、または他のI/O状態の間にメモリが消費する電力を指すことができる。したがって、一実施形態では、カーネルまたはオペレーティングシステムのルーチンは、ある既存のタイプのメモリと関連付けられた相対的な効率を規定し、したがって、それに基づいて「より効率の高い」タイプのメモリおよび「より効率の低い」タイプのメモリを定義するように、所定の規則によって構成され得る。たとえば、一実施形態では、ワイドI/Oメモリは、一般に、DDRメモリに対してより高い帯域幅(すなわち、より高いスループットとより低いレイテンシ)およびより高い電力効率(すなわち、同じ状態で動作しているときのより小さい電力消費)を有することがあり、これによって、カーネルまたはオペレーティングシステムのルーチンは、DDRメモリよりも高い効率を有するものとしてワイドI/Oメモリを定義することができる。あるいは(または加えて)、カーネルまたはオペレーティングシステムのルーチンは、1つまたは複数の適切なベンチマーク作成プロセスを実行して、メインメモリで利用可能な異なるタイプのメモリと関連付けられた相対的な容量、スループット、レイテンシ、および電力効率を測定し、それらに基づいて、より高いまたはより低い効率を有するメモリのタイプを定義することができる。この方式で、本明細書で説明されるプロセッサメモリの最適化は、既存の、および/または今後開発されるメモリ技術に適用され得るので、メモリ効率の改善を利用して、異なるタイプのメモリの間でページを最適に割り当てる(または割り当て直す)ことができる。
【００４０】
一実施形態では、メインメモリで利用可能な異なるタイプのメモリと関連付けられた相対的な効率を適切に定義したこと、または決定したことに応答して、カーネルまたはオペレーティングシステムのルーチンは、ページアクセスカウンタ480によって記録された利用率に基づいて、より効率の低いメモリ(たとえば、図4のDDRメモリ410)からより効率の高いメモリ(たとえば、図4のワイドI/Oメモリ405)にあるページを動的に割り当て直すことができる。具体的には、特定のページをより効率の低いメモリからより効率の高いメモリへ動的に割り当てるために、または切り替えるために(たとえば、高利用率ページ520dをDDRメモリ410からワイドI/Oメモリ405に切り替えるために)、カーネルまたはオペレーティングシステムのルーチンは、メモリコントローラ465および470に、DDRメモリ410中のページと関連付けられた内容をワイドI/Oメモリ405へコピーさせるための、適切な命令を出すことができる。たとえば、一実施形態では、より効率の低いメモリからより効率の高いメモリに切り替えられたページは、最も多く使用されているページを含み得る。別の実施形態では、より効率的なメモリに割り当てられ利用率の低いページは、より効率の低いメモリに切り替えられ得る(たとえば、低利用率ページ510aは、ワイドI/Oメモリ405からDDRメモリ410にコピーされ得る、または切り替えられ得る)。たとえば、一実施形態では、高利用率ページ520dをDDRメモリ410からワイドI/Oメモリ405にコピーし、または切り替え、低利用率ページ510aをワイドI/Oメモリ405からDDRメモリ410にさらにコピーする、または切り替える最適化は、図5Bに示されるメモリのマッピングをもたらすことができ、高利用率ページ520dおよび低利用率ページ510aと関連付けられた仮想アドレスから物理アドレスへのマッピングは、メモリの割当ての変化を反映するように適切に更新されている。一般に、高い利用率および低い利用率を有するページを決定するために、または特定するために、様々な基準が使用され得ることを、当業者は理解するだろう。たとえば、1つまたは複数のページがより効率の低いメモリからより効率の高いメモリに(またはその逆方向に)動的に割り当て直される時点で、異なるタイプのメモリの中のページと関連付けられた利用率が、互いに対して決定されてよく、または特定されてよく、利用率が最高であるページは、より効率の高いメモリが埋まるまでそのより効率の高いメモリに割り当てられてよく、より効率の低いメモリの中の任意のページが、より効率の高いメモリに割り当てられている1つまたは複数のページを超える利用率レベルにその後で達した場合には、ページは再び動的に割り当て直され得る。あるいは(または加えて)、(たとえば、異なるタイプのメモリの間での過剰な再割当てを避けるために)利用率が高いものとしてページが特定されるよりも前にページが達することを要求され得る、ある最小限の利用率を要求するように、閾値が定義され得る。
【００４１】
ページアクセスカウンタ480によって記録された利用率に基づいて、あるページがより効率の高いメモリに割り当てられたべきか、またはより効率の低いメモリに割り当てられたべきかを判定するために、様々な他の技法が適切に利用され得ることを、当業者は理解するだろう。さらに、あるメモリから別のメモリへページを動的に割り当て直すことを扱うカーネルまたはオペレーティングシステムのルーチンは、1つまたは複数の方針または他の適切な基準に基づいてページを動的に割り当て直すように構成されてよく、この方針または他の基準は、カーネルまたはオペレーティングシステムのルーチンに、所定のスケジュールに従って、および/または、ある誘因イベントに応答して(たとえば、各I/O動作の後、所定の数のI/O動作の後、閾値の数のページがより効率の高いまたはより効率の低いメモリの1つまたは複数に割り振られたと判定したことに応答して、より効率の高いまたはより効率の低いメモリが閾値の数の割り振られていない利用可能なページを有すると判定したことに応答して、など)、定期的な間隔でページを動的に割り当て直させることができることを、当業者は理解するだろう。
【００４２】
一実施形態では、図6に示される方法は、効率の異なる複数の異なるメモリを含むメインメモリにおけるメモリ利用率を監視するステップと、監視されたメモリ利用率に基づいて、異なるメモリの中のページと関連付けられた割当てを動的に変更するステップとを含み得る。たとえば、一実施形態では、メモリ利用率は、異なるメモリの中のあるページが何回アクセスされたかを測定する、様々なページアクセスカウンタによって記録され得る。一実施形態では、ブロック610において、ページアクセスイベントが検出されてよく、ページアクセスイベントは、メインメモリ内の物理アドレスにマッピングされた特定の仮想アドレスへのアクセスを要求するプロセスを含み得る。一実施形態では、次いで、ページアクセスイベントと関連付けられたタイプが、ブロック620において決定され得る。たとえば、一実施形態では、ブロック620で決定されたタイプは、ブロック610で受け取られた要求と関連付けられた仮想アドレスにマッピングされた物理アドレスを含む、物理メモリ中のページにアクセスするステップを含み得る。さらに、一実施形態では、ブロック620で決定されるタイプはさらに、仮想メモリ中の別のページを物理メモリ中の別のページにマッピングするページテーブルのエントリを除去するステップを(たとえば、アドレス変換キャッシュまたはTLBがすでにそのマッピングを含んでいなかった場合に、ブロック610で受け取られた要求と関連付けられたデータを記憶する仮想メモリのページと物理メモリのページとのマッピングを記憶するための空間を、アドレス変換キャッシュまたはTLBの中に設けるために)含み得る。
【００４３】
一実施形態では、メモリ利用率を記録するページアクセスカウンタが次いで、ブロック630において更新され得る。たとえば、一実施形態では、ブロック630は、要求された仮想アドレスにマッピングされた物理アドレスを含む物理メモリページと関連付けられたページアクセスカウンタをインクリメントして、アクセス物理メモリページと関連付けられた利用率を記録するステップを含み得る。加えて、一実施形態では、ブロック630はさらに、アドレス変換キャッシュまたはTLBから除去されたページテーブルのエントリと関連付けられた任意の物理メモリページに対応するページアクセスカウンタをリセットするステップを含み得る。たとえば、上で述べられたように、アドレス変換キャッシュまたはTLBの中のエントリが、キャッシュミスの際に新たなエントリを記憶するための空間を設けるために除去されてよく、キャッシュミスは、要求された仮想アドレスに対応する物理アドレスに要求された仮想アドレスをマッピングするエントリをページテーブルが欠いている場合に起こり得る。したがって、ブロック630は、より多く(または最近)使用されたページと関連付けられた利用率をページアクセスカウンタが測定することを確実にするために、アドレス変換キャッシュまたはTLBから除去されるエントリと関連付けられたページアクセスカウンタをリセットするステップを含み得る。
【００４４】
一実施形態では、次いで、ページアクセスカウンタによって記録されるメモリ利用率が、ブロック640において分析され得る。たとえば、一実施形態では、ブロック640は、所定のスケジュールに従って、ある誘因イベントに応答して、および/または、1つまたは複数の方針または他の適切な基準に基づいて、定期的な間隔でメモリ利用率を分析するために実行され得る。一実施形態では、分析されたメモリ利用率に基づいて、メモリの割当てが次いでブロック650において変更されてよく、ブロック650は、メインメモリで利用可能な異なるメモリのうち最も効率の高いメモリにページを動的に割り当てる(または割り当て直す)ように、仮想アドレスから物理アドレスへのマッピングを変更するステップを含み得る。たとえば、一実施形態では、ブロック650は、ある多く使用されているページを、より効率の低いメモリからより効率の高いメモリへ動的に割り当て直すステップと、利用率の低いより効率の高いメモリ中のページをより効率の低いメモリへ動的に割り当て直すステップとを含んでよく、これは、ページアクセスカウンタに基づいて決定され得る。一実施形態では、メモリの割当てを動的に変更するために、ブロック650は、第1の物理メモリデバイス中のページと関連付けられた内容を第2の物理メモリデバイスにコピーするステップと、対応する仮想アドレスのマッピングを動的に更新するステップとを含み得る(すなわち、第1の物理メモリデバイス中のページは、最初は特定の仮想アドレスにマッピングされてよく、これによって、ブロック650は、第2の物理メモリデバイス中のページへの、その仮想アドレスと関連付けられたマッピングを変更することができる)。
【００４５】
一実施形態では、図7は、本明細書で説明されるプロセッサメモリの最適化を実施することができるメモリアーキテクチャを伴うワイヤレス通信デバイス120に対応し得る例示的なブロック図を示す。送信経路上で、エンコーダ722は、ワイヤレス通信デバイス120によって基地局、Node B、またはアクセスポイントに送信されることになるデータおよびシグナリングを受け取ることができる。エンコーダ722は、適切なコーディング方式に従って、データおよびシグナリングを処理(たとえば、フォーマット、符号化、およびインターリーブ)することができる。変調器(Mod)724はさらに、コーディングされたデータおよびシグナリングを処理(たとえば、変調およびスクランブル)して、出力チップを生成することができる。一般に、エンコーダ722および変調器724による処理は、データの送信先のワイヤレスネットワークのための無線技術(たとえば、IEEE 802.11、1x、1xEV-DO、UMTS、またはGSM(登録商標))によって決定され得る。一実施形態では、送信機(TMTR)732は、出力チップを調整(たとえば、アナログに変換、フィルタリング、増幅、および周波数アップコンバート)して高周波(RF)信号を生成することができ、RF信号は、アンテナ734を介してワイヤレスネットワークを通じて、基地局、Node B、またはアクセスポイントに送信され得る。
【００４６】
一実施形態では、受信経路上で、アンテナ734は、基地局、Node B、および/またはアクセスポイントによって送信されるRF信号を受信することができる。受信機(RCVR)736は、アンテナ734から受信されたRF信号を調整(たとえば、フィルタリング、増幅、周波数ダウンコンバート、およびデジタル化)して、サンプルを提供することができる。復調器(Demod)726は、サンプルを処理(たとえば、デスクランブルおよび復調)して、シンボル推定値を提供することができる。デコーダ728は、シンボル推定値を処理(たとえば、デインタリーブおよび復号)して、復号されたデータおよびシグナリングを提供することができる。一般に、復調器726およびデコーダ728による処理は、基地局、Node B、および/またはアクセスポイントにおける変調器およびエンコーダによって実行される処理の逆であり得る。さらに、一実施形態では、エンコーダ722、変調器724、復調器726、およびデコーダ728は、モデムプロセッサ720において実装され得る。図7は、簡潔さのために各処理ユニットの一例を示すが、一般に、ワイヤレス通信デバイス120によってサポートされる異なる無線技術のために、1つまたは複数のモデムプロセッサ、送信機、受信機、コントローラ、およびメモリがあり得る。
【００４７】
一実施形態では、コントローラ/プロセッサ740は、ワイヤレス通信デバイス120における様々な処理ユニットの動作を指示することができる。たとえば、一実施形態では、コントローラ/プロセッサ740および/またはワイヤレス通信デバイス120内の他の処理ユニットは、図4〜図6を参照して上で説明されたような、ページアクセスカウントを介してプロセッサメモリを最適化するための様々な機能を実装することができる。コントローラ/プロセッサ740はまた、本明細書で説明される任意の他の適切なプロセスまたは機能を実施または指示することができる。一実施形態では、メモリ742は、ワイヤレス通信デバイス120のための、プログラムコードおよびデータを記憶することができる。メモリ742はまた、ページカウンタ(たとえば、図4のページアクセスカウンタ480)、仮想メモリアドレスから物理メモリアドレスへのマッピング(たとえば、図5に示されるような)、または、本明細書で説明されるプロセッサメモリの最適化、ワイヤレス通信デバイス120と関連付けられたアプリケーション、および/もしくはワイヤレス通信デバイス120で使用される無線技術をサポートできる、任意の他の適切なデータもしくは情報を記憶することができる。
【００４８】
一実施形態によれば、図8は、本明細書で説明されるプロセッサメモリの最適化を実施することができるメモリアーキテクチャを伴う1つまたは複数の通信デバイスを含む例示的な通信システム800を示す。説明のために、図8は、3つの通信デバイス820、830、および850と、2つの基地局840とを示す。本明細書で説明される例示的な実施形態による他のワイヤレス通信システムは、本明細書で説明される例示的な実施形態の範囲または趣旨から逸脱することなく、より多数または少数の通信デバイスおよび/または基地局を有し得ることを、当業者は認識するだろう。一実施形態では、通信デバイス820、830、および850は、それぞれの半導体デバイス825、835、および855を含んでよく、通信デバイス820、830、および850、ならびに/または、それらとそれぞれ関連付けられた半導体デバイス825、835、および855は、本明細書で説明されるプロセッサメモリの最適化が実施され得るデバイスを含み得る。一実施形態では、図8に示されるように、1つまたは複数の順方向リンク信号880が、データを基地局840から通信デバイス820、830、および850に通信するために使用されてよく、1つまたは複数の逆方向リンク信号890が、データを通信デバイス820、830、および850から基地局840に通信するために使用され得る。
【００４９】
図8に示される例示的な実施形態では、通信デバイス820は携帯電話を含んでよく、通信デバイス830はポータブルコンピュータを含んでよく、通信デバイス850はワイヤレスローカルループシステム中の固定位置の遠隔ユニット(たとえば、検針装置)を含んでよい。様々な実施形態では、しかしながら、通信デバイス820、830、および850は、携帯電話、ハンドヘルド個人用通信システムユニット、ポータブルデータユニット、携帯情報端末、ナビゲーションデバイス(たとえば、GPS対応デバイスまたは位置認識デバイス)、セットトップボックス、音楽プレーヤー、ビデオプレーヤー、娯楽ユニット、固定位置データユニット、または、データおよび/もしくはコンピュータ実行可能命令を適切に記憶し、取り出し、通信し、もしくは別様に処理できる、任意の他のデバイスもしくはデバイスの組合せを含み得る。図8は、本開示の教示に従った通信デバイス820、830、および850を示すが、本開示は、例示的な示される通信デバイス820、830、および850に限定されるべきではないことを、当業者は理解するだろう。したがって、様々な実施形態は、試験および特性評価のためのメモリおよびオンチップ回路を含む能動的な集積回路を有する、任意の適切なデバイス内で適切に利用され得る、または実装され得る。
【００５０】
情報および信号が種々の異なる技術および技法のいずれかを使用して表され得ることを、当業者は理解するだろう。たとえば、上の説明全体にわたって言及され得るデータ、命令、コマンド、情報、信号、ビット、シンボル、およびチップは、電圧、電流、電磁波、磁界もしくは磁性粒子、光場もしくは光学粒子、またはそれらの任意の組合せによって表され得る。
【００５１】
さらに、多くの実施形態が、論理ブロック、モジュール、回路、アルゴリズム、ステップ、および動作のシーケンスに関して説明されることがあり、これらは、汎用プロセッサ、DSP、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ、プログラマブル論理デバイス、ディスクリートゲート、トランジスタ論理回路、個別のハードウェアコンポーネント、コンピューティングデバイスと関連付けられた要素、または、本明細書で説明される機能を実行し、もしくは別様に制御するように設計される、それらの任意の適切な組合せによって、実行され得る、または制御され得る。汎用プロセッサはマイクロプロセッサであり得るが、代替として、プロセッサは任意の従来のプロセッサ、コントローラ、マイクロコントローラ、または状態機械であり得る。プロセッサはまた、コンピューティングデバイスの組合せ、たとえば、DSPとマイクロプロセッサとの組合せ、複数のマイクロプロセッサ、DSPコアと連携する1つもしくは複数のマイクロプロセッサ、または任意の他のそのような構成として実装され得る。
【００５２】
さらに、本明細書で開示された実施形態に関連して説明された様々な例示的な論理ブロック、モジュール、回路、アルゴリズム、およびステップは、電子ハードウェア、コンピュータソフトウェア、またはこれらの任意の適切な組合せとして実装され得ることを、当業者は理解するだろう。ハードウェアおよびソフトウェアのこの互換性を明確に示すために、様々な例示的なコンポーネント、ブロック、モジュール、回路、アルゴリズム、およびステップが、上ではそれらの全般的な機能に関して説明された。そのような機能がハードウェアで実装されるかソフトウェアで実装されるかは、具体的な用途および設計制約に依存し、当業者は、各々の具体的な用途に適合するように説明された機能を様々な方法で実装することができるが、そのような実装の判断は、本開示の範囲または趣旨からの逸脱を引き起こすものと解釈されるべきではない。加えて、本明細書で説明される様々な論理ブロック、モジュール、回路、アルゴリズム、ステップ、および動作のシーケンスは、実行時に、関連付けられたプロセッサに本明細書で説明される機能を実行させるコンピュータ命令の対応するセットが記憶された、任意の形式のコンピュータ可読記憶媒体内で完全に具現化されるものと見なされ得る。したがって、本明細書で開示される様々な態様および実施形態は、特許請求される主題の範囲または趣旨の中にすべて入ることが企図されているいくつかの異なる形式で具現化され得る。加えて、本明細書で説明される実施形態の各々について、任意のそのような実施形態の対応する形式は、本明細書では、たとえば、説明される動作を実行する「ように構成された論理」として説明されることがある。
【００５３】
本明細書で開示された実施形態に関連して説明された方法、シーケンス、および/またはアルゴリズムは、ハードウェアで、プロセッサによって実行されるソフトウェアモジュールで、またはそれらの任意の適切な組合せで直接具現化され得る。ソフトウェアモジュールは、メモリコントローラ、DDRメモリ、RAMフラッシュメモリ、ROM、電気的プログラム可能ROMメモリ(EPROM)、電気的消去プログラム可能ROM(EEPROM)、レジスタ、ハードディスク、リムーバブルディスク、CD-ROM、または、当技術分野で知られている任意の他の記憶媒体もしくは今後開発され得る記憶媒体の中に存在し得る。例示的な記憶媒体は、プロセッサが記憶媒体から情報を読み取り、記憶媒体に情報を書き込むことができるように、プロセッサに結合される。代替として、記憶媒体はプロセッサと一体であってよい。プロセッサおよび記憶媒体はASIC中に存在し得る。ASICはユーザ端末または他のコンピューティングデバイス中に存在し得る。代替として、プロセッサおよび記憶媒体は、ユーザ端末または他のコンピューティングデバイス中に個別のコンポーネントとして存在し得る。
【００５４】
1つまたは複数の例示的な実施形態では、説明される制御機能は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せで実装され得る。ソフトウェアで実装される場合、機能は、1つもしくは複数の命令またはコードとしてコンピュータ可読媒体上に記憶されるか、あるいはコンピュータ可読媒体を介して送信され得る。コンピュータ可読媒体は、ある位置から別の位置へのコンピュータプログラムの転送を容易にする任意の媒体を含む、記憶媒体と通信媒体の両方を含む。記憶媒体は、コンピュータによってアクセスされ得る任意の利用可能な媒体であり得る。限定ではなく例として、そのようなコンピュータ可読媒体は、RAM、ROM、EEPROM、CD-ROMもしくは他の光ディスクストレージ、磁気ディスクストレージもしくは他の磁気ストレージデバイス、または、命令もしくはデータ構造の形態の所望のプログラムコードを搬送あるいは記憶するために使用され、コンピュータによってアクセスされ得る媒体を含み得る。また、あらゆる接続がコンピュータ可読媒体と適切に呼ばれる。たとえば、ソフトウェアが、同軸ケーブル、光ファイバケーブル、ツイストペア、デジタル加入者回線(DSL)、または赤外線、無線、およびマイクロ波などのワイヤレス技術を使用して、ウェブサイト、サーバ、または他のリモートソースから送信される場合、同軸ケーブル、光ファイバケーブル、ツイストペア、DSL、または赤外線、無線、およびマイクロ波などのワイヤレス技術は、媒体の定義に含まれる。本明細書で使用される場合、ディスク(disk)およびディスク(disc)は、コンパクトディスク(disc)(CD)、レーザーディスク(登録商標)(disc)、光ディスク(disc)、デジタル多用途ディスク(disc)(DVD)、フロッピー(登録商標)ディスク(disk)、およびブルーレイディスク(disc)を含み、ディスク(disk)は、通常、磁気的にデータを再生し、ディスク(disc)は、レーザーで光学的にデータを再生する。上記の組合せもコンピュータ可読媒体の範囲の中に含まれるべきである。
【００５５】
上記の開示は本明細書で開示されるページアクセスカウントを介したプロセッサメモリの最適化の説明のための実施形態を示すが、添付の特許請求の範囲によって定義される本開示の範囲または趣旨から逸脱することなく、様々な変更および修正が本明細書において行われ得ることを当業者は理解するだろう。本明細書で開示された実施形態による方法クレームの機能、ステップ、動作、および/または行為は特定の順序で実行される必要はない。さらに、本明細書で開示された態様および実施形態の要素は、単数形で説明または特許請求されていることがあるが、単数形に限定することが明示的に述べられていない限り、複数形が企図される。
【符号の説明】
【００５６】
100  ワイヤレス通信システム
102  基本サービスエリア
104  アクセスポイント
106  モバイルデバイス
108  ダウンリンク
110  アップリンク
120  ワイヤレス通信デバイス
【図１】
2015534200.tif 000003
【図２】
2015534200.tif 000004
【図３】
2015534200.tif 000005
【図４】
2015534200.tif 000006
【図５Ａ】
2015534200.tif 000007
【図５Ｂ】
2015534200.tif 000008
【図６】
2015534200.tif 000009
【図７】
2015534200.tif 000010
【図８】
2015534200.tif 000011
【手続補正書】
【提出日】平成27年5月12日(2015.5.12)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
プロセッサメモリを効率的に利用するための方法であって、
第1のメモリ中のページおよび第2のメモリ中のページと関連付けられた利用率を測定するページアクセスカウンタを監視するステップであって、前記第1のメモリおよび前記第2のメモリが別個の物理アドレス空間を有し、前記第1のメモリが前記第2のメモリよりも高い効率を有する、ステップと、
前記監視されたページアクセスカウンタに基づいて、前記第1のメモリおよび前記第2のメモリと関連付けられた前記別個の物理アドレス空間の間で、前記第1のメモリ中の前記ページおよび前記第2のメモリ中の前記ページを動的に割り当てるステップとを含む、方法。
【請求項２】
前記第1のメモリ中の前記ページおよび前記第2のメモリ中の前記ページを動的に割り当てるステップが、
高い利用率を有する前記第2のメモリ中のページからの内容を前記第1のメモリにコピーするステップであって、前記高い利用率を有する前記第2のメモリ中の前記ページが、前記監視されたページアクセスカウンタに基づいて特定される、ステップと、
前記コピーするステップに基づいて、前記動的に割り当てられたページに対応する、仮想アドレスと物理アドレスとのマッピングを変更するステップとを含む、請求項1に記載の方法。
【請求項３】
前記第1のメモリ中の前記ページおよび前記第2のメモリ中の前記ページを動的に割り当てるステップが、
低い利用率を有する前記第1のメモリ中のページからの内容を前記第2のメモリにコピーするステップであって、前記低い利用率を有する前記第1のメモリ中の前記ページが、前記監視されたページアクセスカウンタに基づいて特定される、ステップと、
前記コピーするステップに基づいて、前記動的に割り当てられたページに対応する、仮想アドレスと物理アドレスとのマッピングを変更するステップとを含む、請求項1に記載の方法。
【請求項４】
カーネルまたはオペレーティングシステムのルーチンが、前記第1のメモリ中の前記ページおよび前記第2のメモリ中の前記ページを動的に割り当てる、請求項1に記載の方法。
【請求項５】
前記第1のメモリがワイド入力/出力(I/O)メモリを含み、前記第2のメモリがダブルデータレート(DDR)メモリを含む、請求項1に記載の方法。
【請求項６】
前記ページアクセスカウンタが、仮想メモリと関連付けられた仮想アドレスと前記第1のメモリ中の前記ページおよび前記第2のメモリ中の前記ページと関連付けられた物理アドレスとのマッピングを記憶するページテーブルに組み込まれる、ハードウェアベースのカウンタを含む、請求項1に記載の方法。
【請求項７】
前記ハードウェアベースのカウンタが、前記第1のメモリ中の前記ページおよび前記第2のメモリ中の前記ページと関連付けられた前記利用率に関するカウントを記憶する、1つまたは複数のレジスタを含む、請求項6に記載の方法。
【請求項８】
前記第1のメモリが、前記第2のメモリよりも大きい容量、高いスループット、小さいレイテンシ、または小さい電力消費の1つまたは複数を有していることに基づいて、前記第1のメモリが前記第2のメモリより高い効率を有すると判定するステップであって、カーネルまたはオペレーティングシステムのルーチンが、前記第1のメモリおよび前記第2のメモリと関連付けられた前記容量、スループット、レイテンシ、および電力消費を規定する、1つまたは複数の所定の基準に基づいて、前記第1のメモリが前記第2のメモリよりも高い効率を有すると判定する、ステップをさらに含む、請求項1に記載の方法。
【請求項９】
前記第1のメモリが、前記第2のメモリよりも大きい容量、高いスループット、小さいレイテンシ、または小さい電力消費の1つまたは複数を有していることに基づいて、前記第1のメモリが前記第2のメモリより高い効率を有すると判定するステップであって、カーネルまたはオペレーティングシステムのルーチンが、前記第1のメモリおよび前記第2のメモリと関連付けられた前記容量、スループット、レイテンシ、および電力消費を測定する、ベンチマーク作成プロセスに基づいて、前記第1のメモリが前記第2のメモリよりも高い効率を有すると判定する、ステップをさらに含む、請求項1に記載の方法。
【請求項１０】
前記第1のメモリ中のページまたは前記第2のメモリ中のページの1つまたは複数と関連付けられたイベントを検出するステップと、
前記検出されたイベントと関連付けられたタイプに基づいて、前記検出されたイベントに対応する前記ページと関連付けられた前記ページアクセスカウンタを更新するステップとをさらに含む、請求項1に記載の方法。
【請求項１１】
前記ページアクセスカウンタを更新するステップが、前記検出されたイベントと関連付けられた前記タイプが前記ページにアクセスするステップを含むと判定したことに応答して、前記検出されたイベントに対応する前記ページと関連付けられた前記ページアクセスカウンタをインクリメントするステップを含む、請求項10に記載の方法。
【請求項１２】
前記ページアクセスカウンタを更新するステップが、前記ページと関連付けられた仮想アドレスを前記ページと関連付けられた物理アドレスにマッピングするデータ構造から前記ページに対応するエントリを除去するステップを前記検出されたイベントと関連付けられた前記タイプが含むと判定したことに応答して、前記検出されたイベントに対応する前記ページと関連付けられた前記ページアクセスカウンタをリセットするステップを含む、請求項10に記載の方法。
【請求項１３】
前記第1のメモリおよび前記第2のメモリが、異なるタイプを有するとともにモバイルプロセッサがアクセス可能なラストキャッシュレベルより上にメインメモリの中で位置する、別個の物理メモリデバイスを含む、請求項1に記載の方法。
【請求項１４】
請求項1から13のいずれか一項に記載の方法を実行するための手段を含む装置。
【請求項１５】
コンピュータ実行可能命令が記録されたコンピュータ可読記憶媒体であって、前記コンピュータ実行可能命令を1つまたは複数のプロセッサ上で実行するステップが、前記1つまたは複数のプロセッサに、請求項1から13のいずれか一項に記載の方法を実行させる、コンピュータ可読記憶媒体。
【国際調査報告】
2015534200.tif 000012
2015534200.tif 000013