JP5916955B2 - ハイブリッドメモリ管理のための方法、システムおよびデバイス - Google Patents

ハイブリッドメモリ管理のための方法、システムおよびデバイス Download PDF

Info

Publication number
JP5916955B2
JP5916955B2 JP2015526533A JP2015526533A JP5916955B2 JP 5916955 B2 JP5916955 B2 JP 5916955B2 JP 2015526533 A JP2015526533 A JP 2015526533A JP 2015526533 A JP2015526533 A JP 2015526533A JP 5916955 B2 JP5916955 B2 JP 5916955B2
Authority
JP
Japan
Prior art keywords
memory
physical address
computing device
processes
processor
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2015526533A
Other languages
English (en)
Other versions
JP2015528597A (ja
Inventor
サディープ・ラヴィ・コッティリンガル
ラメシュ・ラマスワミー
スハイル・ジャリル
アゼディン・トウズニ
Original Assignee
クアルコム,インコーポレイテッド
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by クアルコム,インコーポレイテッド filed Critical クアルコム,インコーポレイテッド
Publication of JP2015528597A publication Critical patent/JP2015528597A/ja
Application granted granted Critical
Publication of JP5916955B2 publication Critical patent/JP5916955B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/3296Power saving characterised by the action undertaken by lowering the supply or operating voltage
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0292User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/15Use in a specific computing environment
    • G06F2212/151Emulated environment, e.g. virtual machine
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/20Employing a main memory using a specific memory technology
    • G06F2212/205Hybrid memory, e.g. using both volatile and non-volatile memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/651Multi-level translation tables
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/657Virtual address space management
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Information Transfer Between Computers (AREA)
  • Power Sources (AREA)
  • Memory System (AREA)

Description

本発明は、ハイブリッドメモリ管理のための方法、システムおよびデバイスに関する。
セルラーおよびワイヤレス通信技術は、過去数年にわたって爆発的成長を遂げてきた。ワイヤレスサービスプロバイダは、現在、多数の機能およびサービスを提供し、それらのユーザに、情報、リソースおよび通信へのかつてないレベルのアクセスを与える。これらのサービス向上に対応するために、モバイル電子デバイス(たとえば、セルラーフォン、タブレット、ラップトップなど)は、かつてないほど機能が豊富で複雑になっており、今や、通常、複数のプロセッサと、システムオンチップ(SoC)と、複数のメモリと、モバイルデバイスユーザが彼らのモバイルデバイス上で複雑で電力集約的なソフトウェアアプリケーション(たとえば、ビデオストリーミング、マルチメディア処理など)を実行することを可能にする他のリソース(たとえば、母線など)とを含む。モバイルデバイスおよび関連技術の人気および使用が増大し続けるにつれて、モバイルデバイスのパフォーマンス能力および電力消費特性を改善することがモバイルデバイス設計者にとって重要で難しい設計基準になることが予想される。
様々な態様は、モニタエージェントまたはモニタエージェントプロセスにおいて中間物理アドレスを物理アドレスに変換するステップによって、コンピューティングシステム上でメモリスペースを割り振るステップを含み得る、メモリを有するコンピューティングシステム上でメモリを管理する方法を含む。一態様では、モニタエージェントは、メモリの特性とコンピューティングシステムの1つまたは複数のプロセスの特性とに基づいて物理アドレスを割り当て得る。一態様では、メモリの特性に基づいて物理アドレスを割り当てるステップは、ハイブリッドメモリの特性に基づいて物理アドレスを割り当てるステップを含み得る。一態様では、コンピューティングシステム上でメモリスペースを割り振るステップは、オペレーティングシステムにおいて仮想アドレスを中間物理アドレスに変換するステップをさらに含み得る。
さらなる態様では、コンピューティングシステム上でメモリスペースを割り振るステップは、ソフトウェアプロセスにメモリスペースを割り振るステップを含み得る。さらなる態様では、コンピューティングシステム上でメモリスペースを割り振るステップは、ハードウェアアクセラレータにメモリスペースを割り振るステップを含み得る。さらなる態様では、コンピューティングシステム上でメモリスペースを割り振るステップは、ソフトウェアプロセスとハードウェアアクセラレータとの組合せにメモリスペースを割り振るステップを含み得る。
さらなる態様では、ハイブリッドメモリの特性と1つまたは複数のプロセスの特性とに基づいて物理アドレスを割り当てるステップは、ハイブリッドメモリのパフォーマンス特性、ハイブリッドメモリの電力消費特性、およびハイブリッドメモリのレイテンシ特性のうちの1つまたは複数に基づいて物理アドレスを割り当てるステップを含み得る。さらなる態様では、ハイブリッドメモリの特性と1つまたは複数のプロセスの特性とに基づいて物理アドレスを割り当てるステップは、1つまたは複数のプロセスのパフォーマンス特性に基づいて物理アドレスを割り当てるステップを含み得る。さらなる態様では、ハイブリッドメモリは2つ以上のタイプのメモリ技術を含み得、ハイブリッドメモリの特性と1つまたは複数のプロセスの特性とに基づいて物理アドレスを割り当てるステップは、ハイブリッドメモリに含まれるそれらのタイプのメモリ技術に基づいて物理アドレスを割り当てるステップを含み得る。
一態様では、本方法は、1つまたは複数のプロセスがディマンディングプロセスを含むかどうかを判断するステップを含み得る。さらなる態様では、1つまたは複数のプロセスがディマンディングプロセスを含むかどうかを判断するステップは、1つまたは複数のプロセスが、マルチメディアアプリケーション、ビデオプレーヤアプリケーション、ストリーミングビデオアプリケーション、仮想現実アプリケーション、拡張現実アプリケーション、ゲームアプリケーション、コンピュータビジョンアプリケーション、ビデオ会議アプリケーション、ジェスチャー認識アプリケーション、および音声認識アプリケーションのうちの1つまたは複数に関連するプロセスを含むかどうかを判断するステップを含み得る。
さらなる態様では、ハイブリッドメモリの特性と1つまたは複数のプロセスの特性とに基づいて物理アドレスを割り当てるステップは、1つまたは複数のプロセスがディマンディングプロセスを含むと判断されたとき、ディマンディングプロセスに関連するアプリケーションプログラムにハイブリッドメモリの高速部分を割り当てるステップと、別のプロセスに関連するアプリケーションプログラムにハイブリッドメモリの低速部分を割り当てるステップとを含み得る。さらなる態様では、ハイブリッドメモリの特性と1つまたは複数のプロセスの特性とに基づいて物理アドレスを割り当てるステップは、1つまたは複数のプロセスがディマンディングプロセスを含むと判断されたとき、ディマンディングプロセスに関連するハードウェアアクセラレータにハイブリッドメモリの高速部分を割り当てるステップと、別のプロセスに関連するハードウェアアクセラレータにハイブリッドメモリの低速部分を割り当てるステップとを含み得る。
さらなる態様では、本方法は、ディマンディングプロセスについてメモリ速度要件を判断するステップを含み得、ハイブリッドメモリの特性と1つまたは複数のプロセスの特性とに基づいて物理アドレスを割り当てるステップは、ディマンディングプロセスのメモリ速度要件が高いと判断したことに応答して、ディマンディングプロセスに関連するアプリケーションプログラムにハイブリッドメモリの高速部分を割り当てるステップと、別のプロセスに関連するアプリケーションプログラムにハイブリッドメモリの低速部分を割り当てるステップとを含み得る。
さらなる態様では、本方法は、ディマンディングプロセスについてメモリ速度要件を判断するステップを含み得、ハイブリッドメモリの特性と1つまたは複数のプロセスの特性とに基づいて物理アドレスを割り当てるステップは、ディマンディングプロセスに関連するハードウェアアクセラレータにハイブリッドメモリの高速部分を割り当てるステップと、1つまたは複数の他のプロセスに関連する1つまたは複数のハードウェアアクセラレータにハイブリッドメモリの低速部分を割り当てるステップとを含み得る。
さらなる態様では、本方法は、ディマンディングプロセスがエネルギー効率的なメモリを割り当てられ得るかどうかを判断するステップを含み得、ハイブリッドメモリの特性と1つまたは複数のプロセスの特性とに基づいて物理アドレスを割り当てるステップは、ディマンディングプロセスがエネルギー効率的なメモリを割り当てられ得ると判断したことに応答して、ディマンディングプロセスに関連するアプリケーションプログラムにハイブリッドメモリのエネルギー効率的な部分を割り当てるステップと、ディマンディングプロセスがエネルギー効率的なメモリを割り当てられ得ないと判断したことに応答して、ディマンディングプロセスに関連するアプリケーションプログラムにハイブリッドメモリのあまりエネルギー効率的でない部分を割り当てるステップとを含み得る。
さらなる態様では、本方法は、コンピューティングシステムがより低いパフォーマンス状態に入りつつあり得るときを判断するステップを含み得、ハイブリッドメモリの特性と1つまたは複数のプロセスの特性とに基づいて物理アドレスを割り当てるステップは、コンピューティングシステムがより低いパフォーマンス状態に入りつつあり得ると判断したことに応答して、コンピューティングシステム上で動作しているソフトウェアアプリケーションにハイブリッドメモリのエネルギー効率的な部分を割り当てるステップを含み得る。
さらなる態様では、本方法は、コンピューティングシステムがより低いパフォーマンス状態から出つつあり得るときを判断するステップを含み得、ハイブリッドメモリの特性と1つまたは複数のプロセスの特性とに基づいて物理アドレスを割り当てるステップは、メモリを要求するアプリケーションがエネルギー効率的なメモリを割り当てられ得ないことと、コンピューティングシステムがより低いパフォーマンス状態から出つつあり得ることとを判断したことに応答して、コンピューティングシステム上で動作しているソフトウェアアプリケーションにハイブリッドメモリのあまりエネルギー効率的でない部分を再割り当てするステップを含み得る。
さらなる態様では、モニタエージェントにおいて中間物理アドレスを物理アドレスに変換するステップは、ハイパーバイザにおいて中間物理アドレスを物理アドレスに変換するステップを含み得る。さらなる態様では、モニタエージェントにおいて中間物理アドレスを物理アドレスに変換するステップは、オペレーティングシステムの外部のモニタソフトウェアにおいて中間物理アドレスを物理アドレスに変換するステップを含み得る。さらなる態様では、モニタエージェントにおいて中間物理アドレスを物理アドレスに変換するステップは、ハードウェアレイヤ構成要素において中間物理アドレスを物理アドレスに変換するステップを含み得る。さらなる態様では、モニタエージェントにおいて中間物理アドレスを物理アドレスに変換するステップは、デバイスドライバの一部として動作しているソフトウェアモニタにおいて中間物理アドレスを物理アドレスに変換するステップを含み得る。
さらなる態様は、上記で説明した方法に対応する様々な動作を実行するためのプロセッサ実行可能命令で構成されたプロセッサを有するコンピューティングデバイスを含み得る。
さらなる態様は、上記で説明した方法に対応する様々な動作を実行するように構成されたハードウェアレイヤ構成要素を有するコンピューティングデバイスを含み得る。
さらなる態様は、上記で説明した方法動作に対応する機能を実行するための様々な手段を有するコンピューティングデバイスを含み得る。
さらなる態様は、上記で説明した方法動作に対応する様々な動作をプロセッサに実行させるように構成されたプロセッサ実行可能命令を記憶した非一時的プロセッサ可読記憶媒体を含み得る。
本明細書に組み込まれ、本明細書の一部をなす添付の図面は、本発明の例示的な実施形態を示し、上記の概略的な説明および下記の詳細な説明とともに、本発明の特徴を説明するのに役立つ。
様々な態様を実装するのに好適なコンピューティングデバイスのハードウェア構成要素を示すシステムブロック図である。 様々な態様を実装するのに好適なコンピューティングシステム中の論理構成要素およびインターフェースを示す階層化コンピュータアーキテクチャ図である。 様々な態様を実装するのに好適な仮想マシン中の論理構成要素を示す階層化コンピュータアーキテクチャ図である。 様々な態様を実装するのに好適な仮想マシン中の論理構成要素を示す階層化コンピュータアーキテクチャ図である。 システム仮想マシンを実装するコンピューティングデバイス上で2つの段においてメモリを割り振ることに関連する論理構成要素およびデータフローを示す構成要素フロー図である。 ハイブリッドメモリの異なる部分の特性を考慮する方法で2つの段においてメモリを割り振るための態様方法を示すプロセスフロー図である。 アプリケーションプログラムのメモリ要件とハイブリッドメモリの異なる部分のメモリアクセス速度とに基づいて物理アドレスを割り振るための態様方法を示すプロセスフロー図である。 アプリケーションプログラムのメモリ要件とハイブリッドメモリの異なる部分のエネルギー消費特性とに基づいて物理アドレスを割り振るための態様方法を示すプロセスフロー図である。 一態様による、システム仮想マシンを実装するコンピューティングデバイス上で2つの段においてメモリを割り振ることに関連するメモリアーキテクチャおよびメッセージフロー図である。 ハイブリッドメモリの異なる部分の間でメモリを再割り振りする態様方法を示すプロセスフロー図である。 ハイブリッドメモリの異なる部分の間でメモリを再構成することに関連する変換を示すメモリアドレス図である。 様々な態様を実装するのに好適なモバイルデバイスを示す構成要素ブロック図である。 様々な態様を実装するのに好適な別のモバイルデバイスを示す構成要素ブロック図である。
様々な態様について添付の図面を参照しながら詳細に説明する。可能な場合はいつでも、同じまたは同様の部分を指すために図面全体にわたって同じ参照番号を使用する。特定の例および実装形態になされる言及は、説明のためであり、本発明の範囲または特許請求の範囲を限定するものではない。
「例示的」という単語は、本明細書では、「例、事例、または例示の働きをすること」を意味するために使用する。「例示的」として本明細書で説明するいかなる実装形態も、必ずしも他の実装形態よりも好ましいまたは有利であると解釈されるべきではない。
「モバイルデバイス」および「コンピューティングデバイス」という用語は、本明細書では、セルラー電話、スマートフォン、パーソナルまたはモバイルマルチメディアプレーヤ、個人情報端末(PDA)、ラップトップコンピュータ、タブレットコンピュータ、スマートブック、パームトップコンピュータ、ワイヤレス電子メール受信機、マルチメディアインターネット対応セルラー電話、ワイヤレスゲームコントローラ、および、プログラマブルプロセッサとメモリとを含み、電力節約方法が有益であるようなバッテリー電力で動作する同様のパーソナル電子デバイスのうちのいずれか1つまたはすべてを指すために互換的に使用する。様々な態様は、限られた処理能力およびバッテリー容量を有する、セルラー電話などのモバイルデバイスにおいて特に有用であるが、態様は、概して、プロセッサパフォーマンスの改善およびエネルギー消費の低減から恩恵を受け得る任意のコンピューティングデバイスにおいて有用である。
「モニタエージェント」という用語は、本明細書では、ハードウェアモニタ、チップ上に作製された専用ハードウェア、ハイパーバイザ、仮想マシンモニタ、高レベルオペレーションシステム(HLOS)の外部で動作しているモニタソフトウェア、HLOSの外部にあり得るデバイスドライバの一部として動作しているソフトウェアモニタ、それのメモリ管理システム、および/またはそれのアロケータ機能のうちのいずれか1つまたはすべてを含む、仮想化技術をサポートし、および/またはコンピューティングリソースの抽象化(または仮想化)を可能にする任意のハードウェア構成要素またはソフトウェアを指すために総称的に使用する。
「ハードウェアアクセラレータ」という用語は、本明細書では、汎用中央処理ユニット(CPU)の、あるいは伝統的にまたは歴史的にCPUによって実行されてきた、1つまたは複数の特殊な機能を実行するように構成された任意のハードウェア構成要素を指すために総称的に使用する。ハードウェアアクセラレータの例としては、グラフィックス処理ユニット(GPU)、グラフィックスアクセラレータ(たとえば、ビットブロック転送ユニット、ビデオまたはグラフィックスカードなど)、浮動小数点アクセラレータ(たとえば、数学コプロセッサなど)、正規表現アクセラレータ、デジタル信号プロセッサ(DSP)、モデムプロセッサ、ベクトルコプロセッサ、データコントローラ、メモリコントローラ、システムコントローラ、タイマー、およびCPUまたはコンピューティングデバイス上で動作しているクライアントソフトウェアアプリケーションをサポートするために使用される他の同様のハードウェア構成要素がある。
様々な態様はまた、コンピューティングデバイス上で動作している任意のディマンディング、プロセス集約的、データ集約的、あるいは電力集約的ソフトウェアアプリケーションまたはプロセス(総称して「ディマンディングプロセス」)をサポートすることにおいて有用であり得る。ディマンディングプロセスの例としては、ビデオプレーヤアプリケーション、ストリーミングビデオアプリケーション、マルチメディアアプリケーション、仮想現実および拡張現実アプリケーション、ゲームアプリケーション、コンピュータビジョンアプリケーション、ビデオ会議アプリケーション、ジェスチャー認識アプリケーション、音声認識アプリケーションなど、ビデオ出力を生成し、したがって、メモリ内外の大量のビデオデータを処理しなければならないソフトウェアアプリケーションがある。ディマンディングプロセスは、専用ハードウェアがなく、したがって、中央処理ユニット(CPU)において処理が遂行される、任意のプロセッサ集約的および/またはデータ集約的プロセスをも含み得る。ディマンディングプロセスは、ハードウェアアクセラレータなどの周辺デバイスに処理を要求する任意のプロセスをさらに含み得る。
現代のモバイルコンピューティングデバイスは、複数のバラバラのメモリ部分および/または異なるタイプのメモリを含み得る。これらの異なるメモリタイプ/部分の各々は、書込み速度(たとえば、データをメモリに書き込むために必要な時間)、レイテンシ、アクセス時間(たとえば、読取りアクセス時間)、セキュリティ、信頼性、電力消費などに関係する異なるパフォーマンス特性を有し得る。そのような特性は、実行速度および電力消費に関してモバイルデバイスパフォーマンスに著しく影響を及ぼす可能性がある。異種メモリシステム、および/または異なるパフォーマンス特性をもつ複数の部分または構成要素を有するメモリシステムを本明細書では「ハイブリッドメモリ」と呼ぶ。
メモリインターリーブは、処理ユニット(たとえば、モバイルデバイスCPU)がメモリの複数のチャンクに同時にアクセスすることを可能にすることによってメモリ帯域幅を増加させる高度メモリ編成技法である。メモリインターリーブ方式は、メモリの各ブロックが異なる制御線またはチャネルを介してアクセスされ得るように、システムメモリを複数のブロックに分割し得る。各制御線/チャネルは、他の制御線/チャネルと同時にデータを転送し得る。したがって、メモリインターリーブ方式を実装するモバイルコンピューティングデバイスの処理ユニットは、第1のチャネル上でのメモリの第1のブロックへの第1の読取りまたは書込み動作と、第2のチャネル上でのメモリの別のブロックへの第2の読取りまたは書込み動作とを同時に発行し得る。処理ユニットは、第2の動作を実行する前に第1の動作の完了を待つ必要がないので、処理ユニットは、非インターリーブメモリよりも高速にインターリーブメモリにアクセスし得る。
ハイブリッドメモリは、インターリーブメモリと非インターリーブメモリの両方を含み得る。一態様では、インターリーブメモリ部分(part/portion)は高速メモリ部分であり得、非インターリーブメモリ部分は低速メモリ部分であり得る。一態様では、インターリーブメモリ部分は高性能メモリ部分であり得る。一態様では、非インターリーブメモリ部分はエネルギー効率的なメモリ部分であり得る。
ハイブリッドメモリおよび/またはメモリ部分はまた、相変化メモリ(PCM)、ダイナミックランダムアクセスメモリ(DRAM)、スタティックランダムアクセスメモリ(SRAM)、不揮発性ランダムアクセスメモリ(NVRAM)、擬似スタティックランダムアクセスメモリ(PSRAM)、ダブルデータレート同期ダイナミックランダムアクセスメモリ(DDR SDRAM)、ならびに当技術分野で知られている他のランダムアクセスメモリ(RAM)および読取り専用メモリ(ROM)技術を含む、任意の数の異なるタイプのメモリ技術を含み得る。一態様では、ハイブリッドメモリはPCMメモリ部分とDRAMメモリ部分とを含み得る。一態様では、PCMメモリ部分は高レイテンシおよび/または低電力メモリ部分であり得る。一態様では、DRAMメモリ部分は低レイテンシおよび/または高電力メモリ部分であり得る。
近年、モバイルコンピューティングデバイスアーキテクチャは、複雑さが増しており、今や複数のプロセッサとハイブリッドメモリとを含み得る。複雑さのこの増加に伴い、コンピューティングデバイスパフォーマンスと電力消費とを最適化するための新しいメモリ管理ソリューションが必要とされる。たとえば、既存のメモリ管理システムは、ハイブリッドメモリ中の異なる要素にデータを割り振るときに、ハイブリッドメモリの様々なメモリ部分の固有の特性を効率的に考慮することができない。したがって、既存のメモリ管理システムは、コンピューティングデバイスのパフォーマンスを改善し、および/またはデバイスの電力消費を低減するために、ハイブリッドメモリ特性を活用することが可能ではない。
様々な態様は、オペレーティングシステムがハイブリッドメモリを統合された方法で使用することを可能にして、メモリアクセス時間とプロセッサパフォーマンスとを改善し、および/またはコンピューティングデバイスよって消費される電力量を低減する、改善されたコンピューティングデバイスメモリ管理システムを提供する。様々な態様は、オペレーティングシステムが各メモリアクセスにおいて行われている動作の詳細を知る必要なしに、オペレーティングシステムがバラバラのハイブリッドメモリを統合された方法で使用することを可能にする。特に、様々な態様は、データ負荷が、所与のハイブリッドメモリ構成のために動的に分散され、最適化されるように、アドレス変換の第2の段が、メモリ割振りを構成するためにハードウェアレイヤまたはハイパーバイザレイヤにおいて実行される、2段アドレス変換プロセスを使用し得る。様々な態様は、既存のオペレーティングシステム、周辺機器(たとえば、ハードウェアアクセラレータなど)、またはアプリケーションプログラムへの変更が必要ないように、コンピューティングデバイスのハイパーバイザレイヤおよび/またはチップレイヤ内に実装され得る。
様々な態様は、その一例が図1に示されている、多種多様な単一およびマルチプロセッサコンピュータアーキテクチャ上に実装され得る。コンピューティングデバイス100は、図示されたデジタル信号プロセッサ(DSP)102、モデムプロセッサ104、グラフィックスプロセッサ106、およびアプリケーションプロセッサ108など、いくつかの異種プロセッサを含み得る。コンピューティングデバイス100は、プロセッサ102〜108のうちの1つまたは複数に接続された1つまたは複数のベクトルコプロセッサ110をも含み得る。各プロセッサ102〜110は1つまたは複数のコアを含み得、各プロセッサ/コアは他のプロセッサ/コアとは無関係に動作を実行し得る。各プロセッサ102〜110はメモリ(図示せず)および/またはメモリ管理システムコントローラをも含み得る。一態様では、コンピューティングデバイス100構成要素は、単一の基板上にあり、および/またはシステムオンチップ(SOC)125として互いに近接して結合され得る。
コンピューティングデバイス100は、センサーデータ、アナログデジタル変換、ワイヤレスデータ送信を管理し、ゲームおよび映画用の符号化オーディオ信号の処理など、他の特殊な動作を実行するためのアナログ回路およびカスタム回路114を含み得る。コンピューティングデバイス100は、電圧調整器、発振器、位相ロックループ、周辺ブリッジ、データコントローラ、メモリコントローラ、システムコントローラ、アクセスポート、タイマー、およびプロセッサと、メモリと、コンピューティングデバイス上で動作しているクライアントとをサポートするために使用される他の同様の構成要素など、システム構成要素およびリソース116をさらに含み得る。システム構成要素/リソース116の各々はメモリ(図示せず)および/またはメモリ管理システムコントローラをさらに含み得る。
様々な態様では、アプリケーションプロセッサ108は、中央処理ユニット(CPU)、CPUの構成要素、またはCPUに結合された処理ユニットであり得る。一態様では、CPUは、プロセッサ102〜110、システム構成要素/リソース116および/または周辺機器の様々なメモリとの間で情報の読取りおよび書込みを行うように構成され得、これは、それぞれのプロセッサ102〜110、リソース116および/または周辺機器のメモリ管理システムコントローラを介して達成され得る。
コンピューティングデバイス100は、クロック118および電圧調整器120など、構成要素およびリソース間の通信のための入出力モジュール(図示せず)をさらに含み得る。プロセッサ102〜108は、相互接続/バスモジュール122を介して、1つまたは複数のメモリ要素112、リソース116、カスタム回路114、および様々な他のシステム構成要素に相互接続され得る。
上述のように、コンピューティングデバイス100は、プロセッサ102〜108のうちの1つまたは複数に接続された1つまたは複数のベクトルコプロセッサ110を含み得る。そのようなベクトルコプロセッサ110は、マルチメディアおよびビデオストリーミングアプリケーションなど、高速および並列実行を必要とするアプリケーションを処理するために特に有用であり得る。一態様では、ベクトルコプロセッサ110は、独立したハードウェアレジスタ、メモリ、および/または実行ハードウェアを含む単一命令複数データ(SIMD: single instruction multiple data)命令セットアーキテクチャ(ISA)を実装し得る。SIMDベクトルコプロセッサは、コンピューティングデバイス100のメインプロセッサ(たとえば、アプリケーションプロセッサ108、CPUなど)の一部であるか、またはそれに近接して結合され得る。
図2に、様々な態様を実装するのに好適な典型的なコンピュータシステム中の論理構成要素およびインターフェースを示す、プロセッサの階層化アーキテクチャを示す。図示されたコンピュータシステムアーキテクチャ200はハードウェア構成要素222とソフトウェア構成要素220の両方を含む。ソフトウェア構成要素220は、オペレーティングシステム202と、ライブラリモジュール204と、1つまたは複数のアプリケーションプログラム(A0〜An)206とを含み得る。ハードウェア構成要素222は、周辺機器208(たとえば、ハードウェアアクセラレータ、入出力デバイスなど)と、中央処理ユニット(CPU)210と、中央処理ユニットメモリ管理ユニット(CPU MMU)216と、1つまたは複数のシステムメモリ管理ユニット(本明細書では「システムMMU」または「SMMU」)212と、1つまたは複数のメモリ214とを含み得る。
モバイルコンピューティングデバイスのために書かれたアプリケーションソフトウェアは、一般に「アプリケーション」、「アプリ」、またはアプリケーションプログラム206と呼ばれるものである、実行可能コードにコンパイルされ得る。各アプリケーションプログラム206は、単一のプロセスまたはスレッドであり得るか、あるいは複数のプロセスまたはスレッドを含み得る。
アプリケーションプログラム206は、アプリケーションプログラムインターフェース(API)を介してライブラリモジュール204に高水準言語(HLL)ライブラリコールを発行し得る。ライブラリモジュール204は、アプリケーションバイナリインターフェース(ABI)を介してオペレーティングシステム202上で(たとえば、オペレーティングシステムコールを介して)サービスを起動し得る。オペレーティングシステム202は、ハードウェア222によって実装される特定の演算コード(オペコード)およびネイティブコマンドのリストである固有の命令セットアーキテクチャ(ISA)を使用してハードウェア構成要素と通信し得る。このようにして、ISAは、オペレーティングシステム202から見たハードウェア222を定義する。
オペレーティングシステム202は、複数のアプリケーションプログラム(A0〜An)206にわたって物理メモリを区分することを含み得る、アプリケーションプログラム206の間で様々なメモリ214の割振りおよび使用を協調させることおよび制御することを担当し得る。一態様では、オペレーティングシステム202は、様々なアプリケーションプログラム(A0〜An)206によるシステムメモリの割振りおよび使用を管理するための1つまたは複数のメモリ管理システム(たとえば、仮想メモリマネージャなど)を含み得る。メモリ管理システムは、あるプロセスによって使用されるメモリが、別のプロセスによってすでに使用中であるメモリを干渉しないことを保証するように機能し得る。
一態様では、オペレーティングシステム202は、オペレーティングシステム202が特定の物理アドレスを別のアドレス(すなわち、仮想アドレス)のように見せることを可能にする「仮想アドレス指定」動作を実行するように構成された仮想メモリマネージャ(OS VMM)を含み得る。仮想アドレス指定動作は、アプリケーションプログラム(A0〜An)206に仮想メモリアドレスを割り振ることを含み得る。オペレーティングシステム202内に仮想メモリマネージャを含めることは、複数のプロセスまたはアプリケーションプログラム(A0〜An)206の間でのシステムメモリの協調および制御を簡略化し得る。
上記で説明したソフトウェアベースのメモリ管理システム(たとえば、OS VMMなど)に加えて、システムは、図2に示された中央処理ユニット(CPU)メモリ管理ユニット(MMU)216およびシステムMMU212など、1つまたは複数のハードウェアベースのメモリ管理システムを含み得る。CPU MMU216およびシステムMMU212は、物理アドレスへの仮想アドレスの変換、キャッシュ制御、バスアービトレーション、およびメモリ保護など、様々なメモリ関係の動作を実行することを担当する1つまたは複数のハードウェア構成要素をそれぞれ含み得る。一態様では、CPU MMU216は、メインCPU210にアドレス変換サービスおよび保護機能を与えることを担当し得、システムMMU212は、他のハードウェア構成要素(たとえば、デジタル信号プロセッサ、モデムプロセッサ、グラフィックスプロセッサなど)にアドレス変換サービスおよび保護機能を与えることを担当し得る。
様々な態様では、メモリ管理システム(たとえば、システムMMU212、CPU MMU216など)のうちの1つまたは複数は、メモリアドレス変換(たとえば、仮想アドレスを物理アドレスに変換することなど)のために使用され得るキャッシュメモリであるトランスレーションルックアサイドバッファ(TLB: translation look-aside buffer)を含み得る。一態様では、トランスレーションルックアサイドバッファ(TLB)は、記憶された情報がキー値フォーマット(たとえば、ハッシュテーブル)に編成されるハードウェア連想配列メモリ(hardware associative array memory)であり得る連想メモリ(CAM: content-addressable memory)であり得る。キーは仮想アドレスであり得、値は物理アドレスであり得る。様々な態様では、TLBは、ハードウェア管理されたTLB、ソフトウェア管理されたTLB、またはそれらの任意の組合せであり得る。ハードウェア管理されたTLBの場合、TLBエントリのフォーマットは、ソフトウェアに可視でなくてもよく、したがって、CPUのタイプごとに異なり得る。
概して、メモリアドレス変換プロセスの一部として、メモリ管理システム(たとえば、OS VMM、システムMMU212、CPU MMU216など)は、TLBにキーとして仮想アドレスを送ることによって、TLBに物理アドレスを要求するためにCAM探索を実行し得る。仮想アドレスキーがTLB中の対応する物理アドレス値を有する(すなわち、TLB「ヒット」が発生した)場合、CAM探索は、対応する物理アドレスを取り出し、戻し得る。要求されたアドレスがTLB中にない(すなわち、TLB「ミス」が発生した)場合、メモリアドレス変換プロセスは、複数のメモリロケーションのコンテンツを読み取り、物理アドレスを計算することによって、ページウォーク(たとえば、ソフトウェアページウォーク、ハードウェアページウォークなど)を実行し得る。物理アドレスがページウォークによって判断された後、仮想アドレスから物理アドレスへのマッピングがTLBに記憶され得る。
ソフトウェア管理されたTLBを含む態様では、TLBミスは、オペレーティングシステムが、ページテーブルをウォークし、ソフトウェアで変換を実行することを引き起こし得る。ハードウェア管理されたTLBを含む態様では、メモリ管理システムは、指定された仮想アドレスキーについて有効なページテーブルエントリが存在するかどうかを判断するためにハードウェアテーブルウォークを実行し得る。
様々な態様では、メモリ214は、複数のバラバラの部分を有するハイブリッドメモリであり得、その各々は、異なるパフォーマンス、速度、レイテンシ、アクセス時間、セキュリティ、信頼性、および/または電力消費特性を有し得る。ハイブリッドメモリにおける複数のタイプのメモリの間のパフォーマンスの差により、特定のタイプのアプリケーションデータ(たとえば、ビデオデータ対テキストデータ)を保持するために適切なメモリ部分を選択することは著しいパフォーマンス利益を与えることができる。同様に、異なるメモリの電力消費特性の差により、アプリケーションプログラム(たとえば、マルチメディア対テキスト編集など)および/またはデバイス状態(たとえば、スリープ、低電力モード、高パフォーマンスモードなど)に基づいて適切なメモリを選択することはコンピューティングデバイスの電力消費特性を著しく改善し得る。電力消費特性を改善することは、スマートフォンおよびタブレットコンピュータなど、モバイルデバイスにとって特に重要である。しかしながら、アプリケーションプログラムは、概して、そのようなアプリケーションが、一般に、広範囲にわたるデバイスおよび/またはオペレーティングシステム上で動作するように書かれるので、メモリ構造に対するインサイトを有せず、したがって、ハイブリッドメモリのそのようなパフォーマンス特性を利用することができない。
現在のオペレーティングシステムは、メモリのパフォーマンスまたは電力コストがそれらのメモリ割振り実装の一部として割り振られるものと見なさず、ハイブリッドメモリを効率的に管理することができない。したがって、オペレーティングシステムは、様々なタイプのアプリケーションがアプリケーションのためにハイブリッドメモリのパフォーマンス特性を活用することを可能にしない。各タイプのメモリにコストを関連付け、ポリシーのセットに基づいてメモリを選択する、非ユニファイドメモリアクセス(NUMA)のようなソフトウェア技法があるが、モバイルデバイス(たとえば、スマートフォン)上では、現在の種類のOSカーネルはハイブリッドメモリ構成のための特殊動作を可能にしない。さらに、既存のソリューションは、静的コストポリシーを単に実装し、固有のハイブリッドメモリのパフォーマンス特性をほとんど通知されず、静的ポリシーへの変更は、概して、オペレーティングシステムが再コンパイル、リブート、または再初期化されることを必要とする。これらおよび他の理由で、既存のメモリ管理ソリューションは、パフォーマンスおよび/または電力効率に関して様々なタイプのアプリケーションについてモバイルコンピューティングデバイスパフォーマンスを改善するために、ハイブリッドメモリの異なる部分の様々な特性を効率的に利用することができない。
様々な態様は、オペレーティングシステムがバラバラのハイブリッドメモリを統合された方法で使用することを可能にするために仮想化技法を利用するメモリ管理システムを提供する。仮想化技術は、オペレーティングシステムとハードウェアとの間に制御プログラム(たとえば、仮想マシンモニタ「VMM」またはハイパーバイザ)を配置することによって達成され得るコンピューティングリソースの抽象化(または仮想化)を可能にする。仮想化技法は、通常、物理ハードウェアマシンのようにアプリケーションプログラムを実行するソフトウェアアプリケーションであり得る仮想マシン(VM)において実装される。仮想マシンは、アプリケーションプログラムと実行ハードウェアとの間にインターフェースを与えて、固有のISAに結合されたアプリケーションプログラムが、異なるISAを実装するハードウェア上で実行することを可能にする。
図3および図4に、仮想マシンを実装する典型的なコンピュータシステム中の論理構成要素を示す。仮想マシンは、システム仮想マシンおよびプロセス仮想マシンという2つの一般的なカテゴリに分類され得る。システム仮想マシンは、異なるプロセスまたはアプリケーション間で下位物理ハードウェアの共有を可能にする。一方、プロセス仮想マシンは単一のプロセスまたはアプリケーションをサポートする。
図3は、プロセス仮想マシン310を実装するコンピューティングデバイス300の論理レイヤを示す階層化アーキテクチャ図である。コンピュータシステム300は、ハードウェア308と、アプリケーションプロセスモジュール302、仮想化モジュール304、およびオペレーティングシステム306を含むソフトウェア構成要素とを含み得る。
図2を参照しながら上記で説明したように、ハードウェア構成要素はオペレーティングシステム202を通してしかアプリケーションプログラム206に可視でないので、ABIおよびAPIがアプリケーションプログラム206にとって利用可能なハードウェア機能を事実上定義する。仮想化ソフトウェアモジュール304は、アプリケーションプロセス302が、さもなければハードウェア構成要素と通信するのと同様の方法で(すなわち、システム/ライブラリコールを介して)仮想化ソフトウェアモジュール304と通信するように、ABI/APIレベルにおいて論理演算を実行し、ならびに/あるいはオペレーティングシステムコールまたはライブラリコールをエミュレートし得る。このようにして、アプリケーションプロセス302は、仮想化モジュール304とオペレーティングシステム306とハードウェア308との組合せを、図3に示されたプロセス仮想マシン310などの単一のマシンと見なす。これは、アプリケーションソフトウェアが、アプリケーションが最終的に実行するコンピューティングデバイスの実際のアーキテクチャに関係する必要がないので、アプリケーション開発者の仕事を簡略化する。
プロセス仮想マシン310は、単一のアプリケーションプロセス302をサポートするためにのみ存在し、したがって、プロセス302とともに作成され、プロセス302が実行を完了したときに終了される。仮想マシン310上で動作するプロセス302は「ゲスト」と呼ばれ、下位プラットフォームは「ホスト」と呼ばれる。プロセス仮想マシンを実装する仮想化ソフトウェア304は、一般にランタイムソフトウェア(または単に「ランタイム」)と呼ばれる。
図4は、システム仮想マシン410を実装するコンピューティングデバイス400中の論理レイヤを示す階層化アーキテクチャ図である。コンピュータシステムは、ハードウェア構成要素(たとえば、実行ハードウェア、メモリ、I/Oデバイスなど)408と、アプリケーションプログラムモジュール402、オペレーティングシステム404、および仮想化モジュール406を含むソフトウェア構成要素とを含み得る。仮想化モジュール406の上で動作するソフトウェアは「ゲスト」ソフトウェアと呼ばれ、仮想化モジュールをサポートする下位プラットフォームは「ホスト」ハードウェアと呼ばれる。
プロセス仮想マシンとは異なり、システム仮想マシン410は、複数のオペレーティングシステム(「ゲストオペレーティングシステム」と呼ばれる)が共存することができる完全な環境を与える。同様に、ホストハードウェアプラットフォームは、複数の分離したゲストオペレーティングシステム環境を同時にサポートするように構成され得る。並行して実行しているオペレーティングシステム間の分離はシステムにセキュリティレベルを追加する。たとえば、1つのゲストオペレーティングシステム上のセキュリティが侵害された場合、または1つのゲストオペレーティングシステムが障害を受けた場合、他のゲストシステム上で動作しているソフトウェアはその侵害/障害によって影響を及ぼされない。ホストハードウェアプラットフォームはまた、アプリケーションソフトウェアが、アプリケーションが最終的に実行するコンピューティングデバイスの実際のアーキテクチャに関係する必要がないので、アプリケーション開発者の仕事を簡略化する。
仮想化ソフトウェアモジュール406は、ホストハードウェアとゲストソフトウェアとの間に論理的に位置し得る。仮想化ソフトウェアは、実際のハードウェア上で(ネイティブに)、またはオペレーティングシステムの上で(ホストされて)動作し得、一般に「ハイパーバイザ」または仮想マシンモニタ(VMM)と呼ばれる。ネイティブ構成では、仮想化ソフトウェアは、利用可能な最も高い特権モードで実際のハードウェア上で動作し、ゲストオペレーティングシステムは、ハードウェアリソースに通常アクセスするかまたはそれを操作するであろうすべてのゲストオペレーティングシステムのアクションを仮想化ソフトウェアがインターセプトし、エミュレートすることができるように、低減された特権を用いて動作する。ホストされた構成では、仮想化ソフトウェアは、既存のホストオペレーティングシステムの上で動作し、デバイスドライバおよび他の下位レベルサービスを与えるためにホストオペレーティングシステムに依拠し得る。いずれの場合も、ゲストオペレーティングシステムの各々(たとえば、オペレーティングシステム404)は、仮想化ソフトウェアモジュール406と物理ハードウェア408の組合せを単一の仮想マシン410と見なして、ゲストオペレーティングシステムがハードウェア408と通信するのと同様の方法で仮想化モジュール406と通信する。これは、各ゲストオペレーティングシステム(たとえば、オペレーティングシステム404)が、ハードウェア408中のプロセッサ、周辺機器、I/O、MMU、およびメモリへの排他的アクセスを有するという錯覚の下で動作することを可能にする。
図2を参照しながら上記で説明したように、オペレーティングシステムは、複数のプロセスにわたって物理メモリを区分することを担当し得る。これは、メモリアドレススペース変換プロセスを介して達成され得る。メモリアドレススペース変換プロセスでは、オペレーティングシステムは、各アプリケーションプログラムに仮想アドレス(VA)を割り当て、次いで、プログラムの実行の前に仮想アドレス(VA)に基づいて物理メモリアドレス(PA)を割り振る。しかしながら、仮想マシンの上で動作しているゲストオペレーティングシステムを含むシステムでは、ゲストオペレーティングシステムによって割り振られるメモリアドレスは、真の物理アドレス(PA)ではなく、中間物理アドレス(IPA: intermediate physical address)である。そのようなシステムでは、物理メモリの実際の割振りは、概して、仮想アドレス(VA)と中間物理アドレス(IPA)と物理アドレス(PA)との間の関係を維持することが必要であり得るハイパーバイザによって実行される。
大部分のプロセッサシステムは、メモリアドレス変換プロセスの単一の段のみをサポートし、ハイパーバイザが仮想アドレス(VA)と中間物理アドレス(IPA)と物理アドレス(PA)との間の関係を管理することを必要とする。これは、概して、ハイパーバイザが、ゲストオペレーティングシステムの変換テーブルの各々を解釈することによって導出され得るそれ自体の変換テーブル(シャドー変換テーブルと呼ばれる)を維持することによって達成される。そのようなシステム上で、ハイパーバイザは、ゲストオペレーティングシステムの変換テーブルへのすべての変更がシャドー構造に反映されること、ならびに保護を実施し、アクセスフォールトを適切な段にリダイレクトすることを保証しなければならない。これらの動作は、ハイパーバイザの複雑さを増加させ、ハイパーバイザを実行、維持、および/または管理することに著しいオーバーヘッドを追加する。モバイルデバイス上で、これらの追加された複雑さおよびオーバーヘッドはパフォーマンスに著しい影響を及ぼし得る。
上記で説明した単一段プロセッサとは異なり、いくつかのプロセッサシステム(たとえば、ARM v7-A)はメモリ変換の両方の段にハードウェア支援を与える。たとえば、ARMプロセッサは、ゲストオペレーティングシステムが第1の段において仮想アドレス(VA)を中間物理アドレス(IPA)に変換することを可能にし、ハードウェアが第2の段において中間物理アドレス(IPA)を物理アドレス(PA)に変換することを可能にする、仮想化拡張を含み得る。そのような仮想化拡張は、ハイパーバイザの実行、維持、および/または管理に関連するオーバーヘッドを低減し、コンピューティングデバイスパフォーマンスを改善する。
図5に、システム仮想マシンを実装するコンピューティングデバイス500上で2つの段においてメモリを割り振ることに関連する例示的な論理構成要素およびアドレス変換を示す。ゲストオペレーティングシステム510のメモリ管理システムは、アプリケーションプログラム/プロセス(A0、An)の各々に仮想アドレススペース502、504を割り当て得る。たとえば、仮想アドレススペース502、504は仮想メモリマネージャ(たとえば、ゲストOS VMM)によって割り当てられ得る。各アプリケーションプログラム/プロセス(A0、An)はそれ自体の仮想アドレススペース502、504を割り当てられ得、各仮想アドレススペース502、504は1つまたは複数の仮想アドレスVA0、VAnを含み得る。
図5に示された例では、メモリアドレスは2つの段において変換される。第1の変換段512において、ゲストオペレーティングシステムの仮想メモリマネージャ(ゲストOS VMM)が、仮想アドレスVA0、VAnを中間物理アドレススペース506中の中間物理アドレスIPA0、IPAnにマッピングし得る。第2の変換段514において、ハイパーバイザおよび/または仮想化拡張が、中間物理アドレスIPA0、IPAnを物理アドレススペース508中の物理アドレスPA0、PAnにマッピングし得る。第1の変換段512は第2の変換段514とは無関係に実行され得、既存のシステムでは、第2段変換514を実行する構成要素は、メモリの特性に基づいて物理アドレスを割り振らない。
上述のように、仮想化拡張は、(たとえば、VAをIPAに変換するための1つのベーステーブルと、IPAをPAに変換するための第2のベーステーブルとを介して)あらゆるメモリアドレスを2回変換することを可能にし得る。様々な実施形態は、これらの2段変換技法/特徴を使用して、オペレーティングシステムがハイブリッドまたはバラバラのメモリを統合された方法で使用することを可能にし得る。そうする際に、様々な実施形態は、オペレーティングシステムが、各メモリアクセスにおいて行われている動作の詳細を知る必要なしに、データをそれの必要に最も適するタイプのメモリに割り振ることによってメモリ使用量を最適化し得る。
図6Aに、ハイブリッドメモリの様々なメモリ部分の固有の特性に基づいて2つの段においてメモリを割り振る態様方法600を示す。ブロック602において、アプリケーションプログラムが、ハイパーバイザ上で実行しているゲストオペレーティングシステムであり得るオペレーティングシステムにメモリスペースの割振りを要求する。ブロック604において、オペレーティングシステムは、要求に応答してアプリケーションプログラムに仮想メモリアドレスを割り振る。ブロック606において、ハードウェアプラットフォームにおいて下にある異なるメモリ構成に気づいていないことがあるオペレーティングシステムは、仮想メモリアドレス(VA)を中間物理アドレス(IPA)に変換することによってアドレス変換プロセスの第1の段を実行する。ブロック608において、チップまたは仮想化ソフトウェアは、アプリケーションプログラムおよび/またはハイブリッドメモリの様々な部分の異なる特性を考慮する方法で中間物理アドレス(IPA)を物理アドレス(PA)に変換することによってアドレス変換の第2の段を実行する。一態様では、ブロック608の一部として、チップまたは仮想化ソフトウェアは、所与のハイブリッドメモリ構成についてデータ負荷が分散され、最適化されるように、物理メモリページを構成し得る。
図6Bに、アプリケーションプログラムのメモリ要件とハイブリッドメモリのアクセス速度特性とに基づいて物理アドレスを割り振る方法620を示す。ブロック622において、チップまたは仮想化ソフトウェアが、ハイブリッドメモリのより高速の部分を識別し、それらの位置を特定する。ブロック624において、チップまたは仮想化ソフトウェアは、ハイブリッドメモリのより低速の部分を識別し、それらの位置を特定する。ハイブリッドメモリ中のより高速およびより低速のメモリセグメントまたは部分を識別する動作は、初期構成セットアッププロセスの一部として、電源投入時に実行されるブートプロセスの一部として、またはアプリケーションのローディングの一部としてなど、任意の時間に遂行され得る。ブロック626において、チップまたは仮想化ソフトウェアはアプリケーションプログラムのメモリ要件を判断する。たとえば、チップまたは仮想化ソフトウェアは、アプリケーションプログラムが、ビデオストリーミング/処理、あるいはデータを与えるかまたは処理するためにシステムに高い負担をかける他の技術に関係し、したがって、より高速のメモリセグメントを使用することから恩恵を受けるかどうかを判断し得る。代替的に、チップまたは仮想化ソフトウェアは、アプリケーションプログラムが、時間敏感でなく、したがって、アプリケーションのパフォーマンスに影響を及ぼさずにより低速のメモリを割り振られ得る方法でデータを使用するかどうかを判断し得る。
判断ブロック628において、チップまたは仮想化ソフトウェアは、アプリケーションプログラムが、ハイブリッドメモリのより高速の部分を割り当てられるための要件を満たす(たとえば、ビデオストリーミング/処理に関係するなど)かどうかを判断する。アプリケーションプログラムが、ハイブリッドメモリのより高速の部分を割り当てられるための要件を満たさないと判断された場合(すなわち、判断ブロック628=「No」)、ブロック630において、チップまたは仮想化ソフトウェアは、アプリケーションプログラムに関連する中間物理アドレス(IPA)を、ハイブリッドメモリの識別されたより低速の部分中の物理アドレス(PA)に変換する。アプリケーションプログラムが、ハイブリッドメモリのより高速の部分を割り当てられるための要件を満たすと判断された場合(すなわち、判断ブロック628=「Yes」)、ブロック632において、チップまたは仮想化ソフトウェアは、アプリケーションプログラムに関連する中間物理アドレス(IPA)を、ハイブリッドメモリの識別されたより高速の部分中の物理アドレス(PA)に変換する。
様々な態様は、より高速のメモリにアクセスすることから恩恵を受ける、コンピューティングデバイス上で動作している任意のディマンディング、複雑な、または電力集約的アプリケーションをサポートすることにおいて有用であり得る。例としては、ビデオプレーヤアプリケーション、ストリーミングビデオアプリケーション、マルチメディアアプリケーション、仮想現実および拡張現実アプリケーション、ゲームアプリケーション、コンピュータビジョンアプリケーション、ビデオ会議アプリケーション、ジェスチャー認識アプリケーション、音声認識アプリケーションなど、ビデオ出力を生成し、したがって、メモリ内外の大量のビデオデータを処理しなければならないアプリケーションがある。様々な態様は、概して、専用ハードウェアがなく、したがって、中央処理ユニット(CPU)において処理が遂行される、任意のプロセス集約的および/またはデータ集約的処理のためにも有用であり得る。別の例として、様々な態様は、大量のデータを与えているかまたは使用しており、したがって、より高速のメモリセグメントへの優先的アクセスを有することから恩恵を受けることができる様々な周辺デバイスにメモリを割り振るために有用であり得る。
図6Cに、アプリケーションプログラムのメモリ要件とハイブリッドメモリのエネルギー消費特性とに基づいて物理アドレスを割り振る方法640を示す。ブロック642において、チップまたは仮想化ソフトウェアが、ハイブリッドメモリのよりエネルギー効率的な部分を識別し、それらの位置を特定する。ブロック644において、チップまたは仮想化ソフトウェアは、ハイブリッドメモリのあまりエネルギー効率的でない部分を識別し、それらの位置を特定する。上記で説明した方法620と同様に、ハイブリッドメモリ中のよりエネルギー効率的なおよびあまりエネルギー効率的でないメモリセグメントまたは部分を識別する動作は、初期構成セットアッププロセスの一部として、電源投入時に実行されるブートプロセスの一部として、またはアプリケーションのローディングの一部としてなど、任意の時間に遂行され得る。ブロック646において、チップまたは仮想化ソフトウェアは、メモリのエネルギー消費特性に関係し得る方法でアプリケーションプログラムのメモリ要件を判断する。たとえば、チップまたは仮想化ソフトウェアは、アプリケーションプログラムが、書き込むかまたはアクセスするのにより高速であるが、より多くの電力を消費し得るハイブリッドメモリの他の部分の代わりに、電力効率的なメモリにデータが記憶された場合、影響を及ぼされない方法でデータを使用するかどうかを判断し得る。
判断ブロック648において、チップまたは仮想化ソフトウェアは、アプリケーションプログラムがより効率的なメモリセグメントによるメモリ割振りに関してサポートされ得るのか、またはハイブリッドメモリのあまりエネルギー効率的でない部分を必要とする(たとえば、ビデオストリーミング/処理に関係するなど)のかを判断する。アプリケーションプログラムが、ハイブリッドメモリのよりエネルギー効率的な部分を割り当てられ得ると判断された場合(すなわち、判断ブロック648=「Yes」)、ブロック650において、チップまたは仮想化ソフトウェアは、アプリケーションプログラムに関連する中間物理アドレス(IPA)を、ハイブリッドメモリの識別されたよりエネルギー効率的な部分中の物理アドレス(PA)に変換する。アプリケーションプログラムが、よりエネルギー効率的なメモリを利用することができないか、またはハイブリッドメモリのあまりエネルギー効率的でない部分の割当てを必要とすると判断された場合(すなわち、判断ブロック648=「No」)、ブロック652において、チップまたは仮想化ソフトウェアは、アプリケーションプログラムに関連する中間物理アドレス(IPA)を、ハイブリッドメモリの識別されたあまりエネルギー効率的でない部分中の物理アドレス(PA)に変換する。
様々な態様はまた、コンピューティングシステムが、非アクティビティ期間の後に実装され得るアイドルまたは低電力モードなど、低減された電力状態に入るときに電力を節約するのを可能にすることにおいて有用であり得る。コンピューティングシステム上で動作しているアプリケーションは、そのようなアイドルまたはより低い電力状態中に高パフォーマンスメモリを必要とする可能性が低いので、ユーザは、アプリケーションをサポートするためにより電力効率的だがより低速のメモリを使用することにより起こり得るパフォーマンス低減に気づかないであろう。したがって、コンピューティングシステムがより低いパフォーマンス状態(たとえば、アイドル、低電力またはスリープモード)に入りつつあることをチップまたは仮想化ソフトウェアが検出したか、あるいはオペレーティングシステムによって通知されたとき、チップまたは仮想化ソフトウェアは、すべてのアプリケーションプログラムが、ハイブリッドメモリのよりエネルギー効率的な部分を割り当てられ得ると判断し(すなわち、すべてのアプリケーションについて判断ブロック648=「Yes」)、方法640のブロック650において、チップまたは仮想化ソフトウェアは、すべてのアプリケーションプログラムに関連する中間物理アドレス(IPA)を、ハイブリッドメモリの識別されたよりエネルギー効率的な部分中の物理アドレス(PA)に変換する。逆に、コンピューティングシステムがパフォーマンス状態に戻りつつある(たとえば、アイドルまたは低電力モードから出つつある)ことをチップまたは仮想化ソフトウェアが検出したか、あるいはオペレーティングシステムによって通知されたとき、チップまたは仮想化ソフトウェアは、アクティブプログラムについてアプリケーションプログラムメモリ要件を判断するために方法640のブロック646に戻り、ブロック648において、パフォーマンスヒットを経験することなしにエネルギー効率的なメモリを使用することができないアプリケーションプログラムについて、中間物理アドレス(IPA)を、ハイブリッドメモリの識別されたあまりエネルギー効率的でない部分中の物理アドレス(PA)に変換するために、より低い電力状態に入るときに行われたメモリ割当てのいずれかが変更される必要があるかどうかを判断する。
図7に、様々な態様による、ハイブリッドメモリの様々なメモリ部分の固有の特性に基づいて2段アドレス変換プロセスを実行するように構成された例示的なコンピューティングシステム700における例示的な論理構成要素および変換を示す。図7に示された例では、コンピューティングシステム700は、より高速のメモリ部分とより低速のメモリ部分とを有する物理メモリ702を含む。コンピューティングシステム700のオペレーティングシステム(たとえば、ゲストオペレーティングシステム)は、比較的低い優先度、複雑さ、および/またはメモリ要件を有する第1のアプリケーションプログラム(A0)(たとえば、テキストエディタアプリケーション)に第1の仮想アドレス(VA0)を割り当て得る。オペレーティングシステムは、比較的高い優先度、複雑さ、および/またはメモリ要件を有する第2のアプリケーションプログラム(An)(たとえば、ビデオ処理アプリケーション)に第2の仮想アドレス(VAn)を割り当て得る。
第1の変換段712において、オペレーティングシステムは仮想アドレスVA0、VAnを中間物理アドレスIPA0、IPAnに変換し得る。第2の変換段714において、仮想化ソフトウェアまたはチップは、アプリケーションプログラム(A0)がメモリのより低速のブロック704(またはよりエネルギー効率的なメモリ)を割り当てられ、アプリケーションプログラム(An)がメモリのより高速のブロック706を割り当てられるように、中間物理アドレスIPA0、IPAnを物理アドレスにインテリジェントに変換し得る。中間物理アドレスのインテリジェント変換は、チップまたは仮想化ソフトウェアにおいて実装され、かつインテリジェント様式でメモリを分配し、割り振り、および/または割り当てるように構成された、隔離認識(segregation-aware)第2段トランスレータを介して達成され得る。
一態様では、中間物理アドレスのインテリジェント変換は、ハイブリッドメモリの現在のパフォーマンス/エネルギー消費特性に基づいて物理メモリを動的に割り振るために、アクセスパフォーマンス(たとえば、アクセス速度)モデルおよび/またはエネルギー消費モデルに基づいてチップまたは仮想化ソフトウェアによって実行され得る。
パフォーマンスモデルおよび/またはエネルギー消費モデルは、各アプリケーションプログラムと、コード単位と、コア/プロセッサと、メモリ部分と、特定のコア/プロセッサおよび/またはメモリ部分についてそれぞれのアプリケーションプログラム/コード単位のためのメモリ読取り/書込み動作を実行するのに必要な時間/電力の量とを監視するための情報を記憶するデータ構造(たとえば、リスト、アレイ、テーブル、マップなど)を含み得る。エネルギー消費モデルは、各アプリケーションプログラムについて代替のより効率的なメモリまたはメモリ部分を識別するための情報をも記憶し得る。様々な態様では、エネルギー消費モデルは、仮想化ソフトウェア作成者、チップ設計者、アプリケーションプログラムの作成者、またはメモリ製造業者によって供給され得る。
一態様では、エネルギー消費モデルは、機械学習プロシージャを使用して、動作しながら(すなわち、ランタイムで)仮想ソフトウェアまたはチップによって構築または調整され得る。そのような機械学習プロシージャは、コンピューティングデバイスが、メモリパフォーマンスデータを生成するために、書込みおよびアクセス時間、ならびに/あるいはデータを書き込み、維持し、アクセスするための電力要件を監視するために、オブジェクトコードを実行するとき、および/またはメモリにアクセスするときに実装され得る。そのようなメモリパフォーマンスデータから、機械学習プロシージャは、新しいパフォーマンスモデルおよび/またはエネルギー消費モデルを生成するか、あるいはデバイス/ハードウェア製造業者またはソフトウェアベンダーによって前に生成または供給されたパフォーマンスモデルおよび/またはエネルギー消費モデルを更新し得る。たとえば、仮想ソフトウェアは、機械学習技法を使用することによって前のメモリ読取り/書込み動作から収集された読取り/書込み時間および/または電力消費情報に基づいてエネルギー消費モデルを構築するように構成され得る。
様々なフィードバックおよび機械学習技法が、メモリパフォーマンスモデルおよびエネルギー消費モデルを生成し、修正するために使用され得る。たとえば、測定された結果がモデル予測から逸脱するとき、最適化ルールが変更または調整され得る。別の例として、機械摂動およびテスト方法試験(machine perturb and test method experiment)が仮想ソフトウェアによって実行され得る。機械摂動およびテスト方法試験は、最適化ルールを変更することと、最適化ルールの変更の前後でメモリアクセスの測定された電力消費を比較することと、変更された最適化ルールが最良の結果を与える場合、その最適化ルールを使用するように選択することとを伴い得る。一態様では、様々な長さのメモリの電力パフォーマンスが、より良い最適化が行われることを可能にするパターンを認識するために互いに比較され得る。
メモリパフォーマンスモデルおよびエネルギー消費モデルを生成および/または調整するためにフィードバックおよび学習機構を使用することはいくつかの利点を与える。たとえば、フィードバックおよび学習機構は、モデルが設計された後、コンピューティングシステムが、初期設計がなされた後に発生したハードウェアパフォーマンスの変化(たとえば、新しいメモリの追加、プロセッサの置換など)に適応することを可能にし得る。そのような変化は、同じベンダーからのメモリチップのロットごとに、メモリが2つ以上のベンダーから購入されたときに、新しいハードウェアがシステムに追加されたときに、およびシステムパフォーマンスの変化により経時的に発生し得る。したがって、フィードバックおよび学習機構は、様々な態様が、メモリアクセス速度および電力消費特性におけるロットごとおよびラインごとの変動をより良く相殺することを可能にし得る。
さらなる態様では、チップまたは仮想化ソフトウェアは、ハイブリッドメモリの異なる部分の間でメモリを再構成または再割り振りするように構成され得る。この機能は、アプリケーションプログラムまたはオペレーティングシステムのいずれの知識または関与もなしに、速度および/または電力消費に関してさらなるアプリケーションパフォーマンス改善を可能にし得る。
図8Aに、ハイブリッドメモリの異なる部分の間でメモリを再割り振りする態様方法800を示す。ブロック802において、コンピューティングデバイスのチップまたは仮想化ソフトウェアはアイドル状態にある。ブロック804において、チップまたは仮想化ソフトウェアは、たとえば、物理メモリへの読取り/書込みの要求に応答してアクティブになる。ブロック806において、チップまたは仮想化ソフトウェアは、ハイブリッドメモリの様々な部分を走査して、様々な特性を有する異なるメモリ部分を識別し、それらの位置を特定する。たとえば、チップまたは仮想化ソフトウェアは、メモリを走査して、より高速のメモリ部分、よりエネルギー効率的な部分、高いレイテンシを有する部分などを識別し得る。ブロック808において、チップまたは仮想化ソフトウェアは、より高速の部分(またはより効率的な部分など)、より高速の部分への参照、またはより高速の部分に記憶された情報が互いに極めて近接して位置するように、ハイブリッドメモリをデフラグする。ブロック810において、チップまたは仮想化ソフトウェアは2段アドレス変換プロセスの第2の段を実行する。
図8Bに、ハイブリッドメモリの異なる部分の間でメモリを再構成または再割り振りするように構成されたコンピューティングシステム850における論理構成要素および変換を示す。上記で説明したように、チップまたは仮想化ソフトウェアにおいて実装される隔離認識第2段トランスレータは、インテリジェント様式でメモリを分配し、割り振り、および/または割り当てるように構成され得る。図8Bは、隔離認識第2段トランスレータがアイドル状態852にある間、ハイブリッドメモリ856のより高速およびより低速の部分がメモリ856全体にわたって分配され得ることを示している。アクティブ状態854にあるとき、隔離認識第2段トランスレータは、より高速のメモリ部分が互いにより極めて近接するように、ハイブリッドメモリ858の異なる部分の間でメモリを再構成または再割り振りし得る。
アドレス変換サービスを与えるように構成された1つまたは複数のメモリ管理ユニット(たとえば、システムMMUまたはSMMU)を含むコンピューティングシステム上で、様々な態様は、いずれかの周辺MMUインスタンスにマッピングされたメモリを追跡し、それらのメモリがリクレームの候補になることを防ぎ得る。
様々な態様とともに使用するのに好適な典型的なモバイルデバイス900は、図9に示されている構成要素を共有する。たとえば、例示的なモバイルデバイス900は、内部メモリ901とディスプレイ904とスピーカー964とに結合されたプロセッサ902を含み得る。さらに、モバイルデバイスは、プロセッサ902に結合された、電磁放射を送信および受信するためのアンテナ924を有し得る。いくつかの態様では、モバイルデバイス900は、システムオンチップを含み得る1つまたは複数の専用または汎用プロセッサ905、924を含み得る。モバイルデバイスは、一般に、ユーザ入力を受け取るためのキーパッドまたは小型キーボードおよびメニュー選択ボタンまたはロッカースイッチをも含む。
図10に示されているラップトップコンピュータ1000など、コンピューティングデバイスの他の形態も、様々な態様を実装し、それらから恩恵を受け得る。ラップトップコンピュータ1000のようなコンピューティングデバイスは、一般に、内部メモリ1001とディスプレイ1009とに結合されたプロセッサ1002を含む。さらに、コンピューティングデバイスは、情報を送信および受信するための通信ポート1005を有し得る。コンピューティングデバイスは、ユーザ入力を受け取るためのキーボード1008および選択ボタン1007をも含み得る。
様々な態様を実装するコンピューティングデバイスにおいて使用されるプロセッサ902、905、924、1002は、本明細書で説明する様々な態様の機能を含む様々な機能を実行するようにプロセッサ実行可能ソフトウェア命令(アプリケーション)によって構成され得る、任意のプログラマブルマイクロプロセッサ、マイクロコンピュータ、または1つまたは複数の多重プロセッサチップであり得る。一般に、ソフトウェアアプリケーションおよびプロセッサ実行可能命令は、それらがアクセスされ、プロセッサ902、905、924、1002にロードされる前に、内部メモリ901、1001に記憶され得る。いくつかのモバイルデバイスでは、プロセッサ902、905、924、1002は、アプリケーションソフトウェア命令を記憶するのに十分な内部メモリを含み得る。いくつかのモバイルデバイスでは、セキュアなメモリが、プロセッサ902、905、924、1002に結合された別個のメモリチップ中にあり得る。多くのモバイルデバイスでは、内部メモリ901、1001は、揮発性メモリ、またはフラッシュメモリなどの不揮発性メモリ、あるいはその両方の混合であり得る。本明細書では、メモリへの一般的言及は、内部メモリ、モバイルデバイスにプラグ接続されたリムーバブルメモリ、およびプロセッサ内のメモリを含む、プロセッサ902、905、924、1002によってアクセス可能なすべてのメモリを指す。
上記の方法の説明およびプロセスフロー図は、単に説明のための例として提供したものであり、様々な態様のステップが提示された順序で実行されなければならないことを要求または暗示するものではない。当業者なら諒解するように、上記の態様におけるステップの順序は、どんな順序でも実行され得る。「その後」、「次いで」、「次に」などの単語は、ステップの順序を限定するものではなく、これらの単語は、単に、読者に方法の説明を案内するために使用される。さらに、たとえば、冠詞「a」、「an」または「the」を使用する単数形の請求項要素への言及は、その要素を単数形に限定するものと解釈すべきではない。
本明細書で開示した態様に関して説明した様々な例示的な論理ブロック、モジュール、回路、およびアルゴリズムステップは、電子ハードウェア、コンピュータソフトウェア、またはその両方の組合せとして実装され得る。ハードウェアとソフトウェアのこの互換性を明確に示すために、様々な例示的な構成要素、ブロック、モジュール、回路、およびステップについて、上記では概してそれらの機能に関して説明した。そのような機能がハードウェアとして実装されるか、ソフトウェアとして実装されるかは、特定の適用例および全体的なシステムに課された設計制約に依存する。当業者は、説明した機能を特定の適用例ごとに様々な方法で実装し得るが、そのような実装の決定は、本発明の範囲からの逸脱を生じるものと解釈されるべきではない。
本明細書で開示した態様に関して説明した様々な例示的な論理、論理ブロック、モジュール、および回路を実装するために使用されるハードウェアは、汎用プロセッサ、デジタル信号プロセッサ(DSP)、マルチメディアブロードキャスト受信機チップ内のDSP、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)または他のプログラマブル論理デバイス、個別ゲートまたはトランジスタ論理、個別ハードウェア構成要素、あるいは本明細書で説明した機能を実行するように設計されたそれらの任意の組合せで実装または実行され得る。汎用プロセッサはマイクロプロセッサであり得るが、代替として、プロセッサは、任意の従来のプロセッサ、コントローラ、マイクロコントローラ、または状態機械であり得る。プロセッサはまた、コンピューティングデバイスの組合せ、たとえば、DSPとマイクロプロセッサとの組合せ、複数のマイクロプロセッサ、DSPコアと連携する1つまたは複数のマイクロプロセッサ、あるいは任意の他のそのような構成として実装され得る。代替的に、いくつかのステップまたは方法は、所与の機能に固有の回路によって実行され得る。
1つまたは複数の例示的な態様では、説明した機能は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せで実装され得る。ソフトウェアで実装される場合、機能は、1つまたは複数の命令またはコードとして非一時的コンピュータ可読媒体または非一時的プロセッサ可読媒体に記憶され得る。本明細書で開示した方法またはアルゴリズムのステップは、非一時的コンピュータ可読記憶媒体またはプロセッサ可読記憶媒体上に常駐し得る、プロセッサ実行可能ソフトウェアモジュールにおいて実施され得る。非一時的コンピュータ可読記憶媒体またはプロセッサ可読記憶媒体は、コンピュータまたはプロセッサによってアクセスされ得る任意の記憶媒体であり得る。限定ではなく例として、そのような非一時的コンピュータ可読媒体またはプロセッサ可読媒体は、RAM、ROM、EEPROM、フラッシュメモリ、CD-ROMまたは他の光ディスクストレージ、磁気ディスクストレージまたは他の磁気ストレージデバイス、あるいは命令またはデータ構造の形態で所望のプログラムコードを記憶するために使用され得、コンピュータによってアクセスされ得る、任意の他の媒体を含み得る。本明細書で使用するディスク(disk)およびディスク(disc)は、コンパクトディスク(disc)(CD)、レーザーディスク(disc)、光ディスク(disc)、デジタル多用途ディスク(disc)(DVD)、フロッピー(登録商標)ディスク(disk)、およびblu-rayディスク(disc)を含み、ディスク(disk)は、通常、データを磁気的に再生し、ディスク(disc)は、データをレーザーで光学的に再生する。上記の組合せも非一時的コンピュータ可読媒体およびプロセッサ可読媒体の範囲内に含まれる。さらに、方法またはアルゴリズムの動作は、コンピュータプログラム製品に組み込まれ得る、非一時的プロセッサ可読媒体および/またはコンピュータ可読媒体上のコードおよび/または命令の1つまたは任意の組合せ、あるいはそのセットとして常駐し得る。
開示した実施形態の上記の説明は、当業者が本発明を作成または使用することができるようにするために提供したものである。これらの実施形態に対する様々な変更は当業者には容易に明らかであり、本明細書で定義した一般原理は、本発明の趣旨または範囲から逸脱することなく他の実施形態に適用され得る。したがって、本発明は、本明細書で示した実施形態に限定されるものではなく、以下の特許請求の範囲ならびに本明細書で開示する原理および新規の特徴に合致する最も広い範囲を与えられるべきである。
100 コンピューティングデバイス
102 デジタル信号プロセッサ
102 プロセッサ
104 モデムプロセッサ
104 プロセッサ
106 グラフィックスプロセッサ
106 プロセッサ
108 アプリケーションプロセッサ
108 プロセッサ
110 ベクトルコプロセッサ
110 プロセッサ
112 メモリ
114 アナログ回路およびカスタム回路
114 カスタム回路
114 アナログおよびカスタム回路
116 システム構成要素およびリソース
116 システム構成要素/リソース
116 リソース
118 クロック
120 電圧調整器
122 相互接続/バスモジュール
122 相互接続/バス
125 システムオンチップ
200 コンピュータシステムアーキテクチャ
202 オペレーティングシステム
204 ライブラリモジュール
204 ライブラリ
206 アプリケーションプログラム
206 アプリケーションプログラム/プロセス
208 周辺機器
210 中央処理ユニット
210 メインCPU
212 システムメモリ管理ユニット
212 システムMMU
212 SMMU
214 メモリ
216 中央処理ユニットメモリ管理ユニット
216 CPU MMU
220 ソフトウェア構成要素
220 ソフトウェア
222 ハードウェア構成要素
222 ハードウェア
300 コンピューティングデバイス
300 コンピュータシステム
302 アプリケーションプロセスモジュール
302 アプリケーションプロセス
302 プロセス
302 アプリケーションプログラム/プロセス
304 仮想化モジュール
304 仮想化ソフトウェアモジュール
304 仮想化ソフトウェア
306 オペレーティングシステム
308 ハードウェア
310 プロセス仮想マシン
310 仮想マシン
400 コンピューティングデバイス
402 アプリケーションプログラム
402 アプリケーションプログラムモジュール
404 オペレーティングシステム
406 仮想化モジュール
406 仮想化ソフトウェアモジュール
408 ハードウェア構成要素
408 ハードウェア
408 物理ハードウェア
410 システム仮想マシン
410 仮想マシン
500 コンピューティングデバイス
502 仮想アドレススペース
504 仮想アドレススペース
506 中間物理アドレススペース
508 物理アドレススペース
510 ゲストオペレーティングシステム
512 第1の変換段
512 段1の変換
514 第2の変換段
514 第2段変換
514 段2の変換
702 物理メモリ
712 第1の変換段
712 段1の変換
714 第2の変換段
714 段2の変換
852 アイドル状態
854 アクティブ状態
900 モバイルデバイス
901 内部メモリ
902 プロセッサ
904 ディスプレイ
905 汎用プロセッサ
905 プロセッサ
924 汎用プロセッサ
924 プロセッサ
1000 ラップトップコンピュータ
1001 内部メモリ
1002 プロセッサ
1005 通信ポート
1007 選択ボタン
1008 キーボード
1009 ディスプレイ

Claims (84)

  1. メモリを有するコンピューティングシステム上でメモリを管理する方法であって、
    前記メモリのメモリパフォーマンスデータを収集するステップと、
    前記収集されたメモリパフォーマンスデータを使用して前記メモリのエネルギー消費モデルとメモリパフォーマンスモデルとを生成するステップと、
    前記エネルギー消費モデルと前記メモリパフォーマンスモデルとに基づいて、モニタエージェントにおいて中間物理アドレスを物理アドレスに変換するステップであって、前記モニタエージェントが、前記メモリの特性と前記コンピューティングシステムの1つまたは複数のプロセスの特性とに基づいて前記物理アドレスを割り当てる、変換するステップ
    を含む、前記コンピューティングシステム上でメモリスペースを割り振るステップ
    を含む、方法。
  2. 前記コンピューティングシステム上でメモリスペースを割り振るステップが、ソフトウェアプロセスにメモリスペースを割り振るステップを含む、請求項1に記載の方法。
  3. モニタエージェントにおいて中間物理アドレスを物理アドレスに変換するステップが、ハイパーバイザにおいて前記中間物理アドレスを前記物理アドレスに変換するステップを含む、請求項1に記載の方法。
  4. モニタエージェントにおいて中間物理アドレスを物理アドレスに変換するステップが、前記コンピューティングシステムのオペレーティングシステムの外部のモニタソフトウェアにおいて前記中間物理アドレスを前記物理アドレスに変換するステップを含む、請求項1に記載の方法。
  5. モニタエージェントにおいて中間物理アドレスを物理アドレスに変換するステップが、ハードウェアレイヤ構成要素において前記中間物理アドレスを前記物理アドレスに変換するステップを含む、請求項1に記載の方法。
  6. モニタエージェントにおいて中間物理アドレスを物理アドレスに変換するステップが、デバイスドライバの一部として動作しているソフトウェアモニタにおいて前記中間物理アドレスを前記物理アドレスに変換するステップを含む、請求項1に記載の方法。
  7. 前記コンピューティングシステム上でメモリスペースを割り振るステップが、
    オペレーティングシステムにおいて仮想アドレスを前記中間物理アドレスに変換するステップ
    をさらに含む、請求項1に記載の方法。
  8. 前記メモリがハイブリッドメモリであり、前記メモリの特性と前記コンピューティングシステムの1つまたは複数のプロセスの特性とに基づいて前記物理アドレスを割り当てるステップが、前記ハイブリッドメモリの特性に基づいて前記物理アドレスを割り当てるステップを含む、請求項1に記載の方法。
  9. 前記ハイブリッドメモリの特性と1つまたは複数のプロセスの前記特性とに基づいて前記物理アドレスを割り当てるステップが、
    前記ハイブリッドメモリのパフォーマンス特性、
    前記ハイブリッドメモリの電力消費特性、および
    前記ハイブリッドメモリのレイテンシ特性
    のうちの1つまたは複数に基づいて前記物理アドレスを割り当てるステップを含む、請求項8に記載の方法。
  10. 前記ハイブリッドメモリの特性と1つまたは複数のプロセスの特性とに基づいて前記物理アドレスを割り当てるステップが、前記1つまたは複数のプロセスのパフォーマンス特性に基づいて前記物理アドレスを割り当てるステップを含む、請求項8に記載の方法。
  11. 前記ハイブリッドメモリが2つ以上のタイプのメモリ技術を含み、
    前記ハイブリッドメモリの特性と1つまたは複数のプロセスの特性とに基づいて前記物理アドレスを割り当てるステップが、前記ハイブリッドメモリに含まれる前記タイプのメモリ技術に基づいて前記物理アドレスを割り当てるステップを含む、請求項8に記載の方法。
  12. 前記コンピューティングシステムがより低いパフォーマンス状態に入りつつあるときを判断するステップをさらに含み、
    前記ハイブリッドメモリの特性と1つまたは複数のプロセスの特性とに基づいて前記物理アドレスを割り当てるステップは、前記コンピューティングシステムがより低いパフォーマンス状態に入りつつあると判断したことに応答して、前記コンピューティングシステム上で動作しているソフトウェアアプリケーションに前記ハイブリッドメモリのエネルギー効率的な部分を割り当てるステップを含む、請求項8に記載の方法。
  13. 前記コンピューティングシステムが前記より低いパフォーマンス状態から出つつあるときを判断するステップをさらに含み、
    前記ハイブリッドメモリの特性と1つまたは複数のプロセスの特性とに基づいて前記物理アドレスを割り当てるステップは、メモリを要求する前記ソフトウェアアプリケーションがエネルギー効率的なメモリを割り当てられ得ないことと、前記コンピューティングシステムが前記より低いパフォーマンス状態から出つつあることとを判断したことに応答して、前記ハイブリッドメモリのあまりエネルギー効率的でない部分を前記ソフトウェアアプリケーションに再割り当てするステップを含む、請求項12に記載の方法。
  14. 前記1つまたは複数のプロセスがディマンディングプロセスを含むかどうかを判断するステップをさらに含む、請求項8に記載の方法。
  15. 前記1つまたは複数のプロセスがディマンディングプロセスを含むかどうかを判断するステップは、前記1つまたは複数のプロセスが、
    マルチメディアアプリケーション、
    ビデオプレーヤアプリケーション、
    ストリーミングビデオアプリケーション、
    仮想現実アプリケーション、
    拡張現実アプリケーション、
    ゲームアプリケーション、
    コンピュータビジョンアプリケーション、
    ビデオ会議アプリケーション、
    ジェスチャー認識アプリケーション、および
    音声認識アプリケーション
    のうちの1つまたは複数に関連するプロセスを含むかどうかを判断するステップを含む、請求項14に記載の方法。
  16. 前記ハイブリッドメモリの特性と1つまたは複数のプロセスの特性とに基づいて前記物理アドレスを割り当てるステップは、
    前記1つまたは複数のプロセスがディマンディングプロセスを含むと判断されたとき、前記ディマンディングプロセスに関連するアプリケーションプログラムに前記ハイブリッドメモリの高速部分を割り当てるステップと、別のプロセスに関連するアプリケーションプログラムに前記ハイブリッドメモリの低速部分を割り当てるステップと
    を含む、請求項14に記載の方法。
  17. 前記1つまたは複数のプロセスについてメモリ速度要件を判断するステップと、
    前記1つまたは複数のプロセスがディマンディングプロセスを含むかどうかを判断するステップと
    をさらに含み、
    前記ハイブリッドメモリの特性と1つまたは複数のプロセスの特性とに基づいて前記物理アドレスを割り当てるステップは、
    前記1つまたは複数のプロセスが前記ディマンディングプロセスを含むと判断したことに応答して、前記1つまたは複数のプロセスに前記ハイブリッドメモリの高速部分を割り当てるステッ
    含む、請求項14に記載の方法。
  18. 前記1つまたは複数のプロセスについてエネルギー効率に関連付けられたメモリ要件を判断するステップと、
    前記1つまたは複数のプロセスがディマンディングプロセスを含むかどうかを判断するステップと
    をさらに含み、
    前記ハイブリッドメモリの特性と1つまたは複数のプロセスの特性とに基づいて前記物理アドレスを割り当てるステップは、
    前記1つまたは複数のプロセスが前記ディマンディングプロセスを含むと判断したことに応答して、前記1つまたは複数のプロセスに前記ハイブリッドメモリのエネルギー効率的でない部分を割り当てるステップと
    を含む、請求項14に記載の方法。
  19. コンピューティングデバイスであって、
    メモリと、
    前記メモリに結合されたプロセッサとを含み、前記プロセッサが、
    前記メモリのメモリパフォーマンスデータを収集するステップと、
    前記収集されたメモリパフォーマンスデータを使用して前記メモリのエネルギー消費モデルとメモリパフォーマンスモデルとを生成するステップと、
    前記エネルギー消費モデルと前記メモリパフォーマンスモデルとに基づいて、モニタエージェントにおいて中間物理アドレスを物理アドレスに変換するステップであって、前記モニタエージェントが、前記メモリの特性と前記コンピューティングデバイス上で動作している1つまたは複数のプロセスの特性とに基づいて前記物理アドレスを割り当てる、変換するステップ
    を含む、前記コンピューティングデバイス上でメモリスペースを割り振るステップ
    を含む、コンピューティングデバイス。
  20. 前記プロセッサは、前記コンピューティングデバイス上でメモリスペースを割り振るステップが、ソフトウェアプロセスにメモリスペースを割り振るステップを含むような動作を実行するためのプロセッサ実行可能命令で構成された、請求項19に記載のコンピューティングデバイス。
  21. 前記プロセッサは、中間物理アドレスを物理アドレスに変換するステップが、ハイパーバイザが前記中間物理アドレスを前記物理アドレスに変換するステップを含むような動作を実行するためのプロセッサ実行可能命令で構成された、請求項19に記載のコンピューティングデバイス。
  22. 前記プロセッサは、中間物理アドレスを物理アドレスに変換するステップが、オペレーティングシステムの外部で動作しているモニタソフトウェアが前記中間物理アドレスを前記物理アドレスに変換するステップを含むような動作を実行するためのプロセッサ実行可能命令で構成された、請求項19に記載のコンピューティングデバイス。
  23. 前記プロセッサは、中間物理アドレスを物理アドレスに変換するステップが、デバイスドライバが前記中間物理アドレスを前記物理アドレスに変換するステップを含むような動作を実行するためのプロセッサ実行可能命令で構成された、請求項19に記載のコンピューティングデバイス。
  24. 前記プロセッサは、前記コンピューティングデバイス上でメモリスペースを割り振るステップが、
    オペレーティングシステムプロセスにおいて仮想アドレスを前記中間物理アドレスに変換するステップ
    をさらに含むような動作を実行するためのプロセッサ実行可能命令で構成された、請求項19に記載のコンピューティングデバイス。
  25. 前記メモリがハイブリッドメモリであり、前記メモリの特性と前記コンピューティングデバイス上で動作している1つまたは複数のプロセスの特性とに基づいて前記物理アドレスを割り当てるステップが、前記ハイブリッドメモリの特性に基づいて前記物理アドレスを割り当てるステップを含む、請求項19に記載のコンピューティングデバイス。
  26. 前記プロセッサは、前記ハイブリッドメモリの特性と1つまたは複数のプロセスの特性とに基づいて前記物理アドレスを割り当てるステップが、
    前記ハイブリッドメモリのパフォーマンス特性、
    前記ハイブリッドメモリの電力消費特性、および
    前記ハイブリッドメモリのレイテンシ特性
    のうちの1つまたは複数に基づいて前記物理アドレスを割り当てるステップを含むような動作を実行するためのプロセッサ実行可能命令で構成された、請求項25に記載のコンピューティングデバイス。
  27. 前記プロセッサは、前記ハイブリッドメモリの特性と1つまたは複数のプロセスの特性とに基づいて前記物理アドレスを割り当てるステップが、前記1つまたは複数のプロセスのパフォーマンス特性に基づいて前記物理アドレスを割り当てるステップを含むような動作を実行するためのプロセッサ実行可能命令で構成された、請求項25に記載のコンピューティングデバイス。
  28. 前記ハイブリッドメモリが2つ以上のタイプのメモリ技術を含み、前記プロセッサは、前記ハイブリッドメモリの特性と1つまたは複数のプロセスの特性とに基づいて前記物理アドレスを割り当てるステップが、前記ハイブリッドメモリに含まれる前記タイプのメモリ技術に基づいて前記物理アドレスを割り当てるステップを含むような動作を実行するためのプロセッサ実行可能命令で構成された、請求項25に記載のコンピューティングデバイス。
  29. 前記プロセッサは、前記コンピューティングデバイスがより低いパフォーマンス状態に入りつつあるときを判断するステップをさらに含む動作を実行するためのプロセッサ実行可能命令で構成され、
    前記プロセッサは、前記ハイブリッドメモリの特性と1つまたは複数のプロセスの特性とに基づいて前記物理アドレスを割り当てるステップが、前記コンピューティングデバイスがより低いパフォーマンス状態に入りつつあると判断したことに応答して、前記ハイブリッドメモリのエネルギー効率的な部分をソフトウェアアプリケーションに割り当てるステップを含むような動作を実行するためのプロセッサ実行可能命令で構成された、請求項25に記載のコンピューティングデバイス。
  30. 前記プロセッサは、前記コンピューティングデバイスが前記より低いパフォーマンス状態から出つつあるときを判断するステップをさらに含む動作を実行するためのプロセッサ実行可能命令で構成され、
    前記プロセッサは、前記ハイブリッドメモリの特性と1つまたは複数のプロセスの特性とに基づいて前記物理アドレスを割り当てるステップが、メモリを要求する前記ソフトウェアアプリケーションがエネルギー効率的なメモリを割り当てられ得ないことと、前記コンピューティングデバイスが前記より低いパフォーマンス状態から出つつあることとを判断したことに応答して、前記ハイブリッドメモリのあまりエネルギー効率的でない部分を前記ソフトウェアアプリケーションに再割り当てするステップを含むような動作を実行するためのプロセッサ実行可能命令で構成された、請求項29に記載のコンピューティングデバイス。
  31. 前記プロセッサは、
    前記1つまたは複数のプロセスがディマンディングプロセスを含むかどうかを判断するステップ
    をさらに含む動作を実行するためのプロセッサ実行可能命令で構成された、請求項25に記載のコンピューティングデバイス。
  32. 前記プロセッサは、前記1つまたは複数のプロセスがディマンディングプロセスを含むかどうかを判断するステップが、前記1つまたは複数のプロセスが、
    マルチメディアアプリケーション、
    ビデオプレーヤアプリケーション、
    ストリーミングビデオアプリケーション、
    仮想現実アプリケーション、
    拡張現実アプリケーション、
    ゲームアプリケーション、
    コンピュータビジョンアプリケーション、
    ビデオ会議アプリケーション、
    ジェスチャー認識アプリケーション、および
    音声認識アプリケーション
    のうちの1つまたは複数に関連するプロセスを含むかどうかを判断するステップを含むような動作を実行するためのプロセッサ実行可能命令で構成された、請求項31に記載のコンピューティングデバイス。
  33. 前記プロセッサは、前記ハイブリッドメモリの特性と1つまたは複数のプロセスの特性とに基づいて前記物理アドレスを割り当てるステップが、
    前記1つまたは複数のプロセスがディマンディングプロセスを含むと判断されたとき、前記ディマンディングプロセスに関連するアプリケーションプログラムに前記ハイブリッドメモリの高速部分を割り当てるステップと、別のプロセスに関連するアプリケーションプログラムに前記ハイブリッドメモリの低速部分を割り当てるステップと
    を含むような動作を実行するためのプロセッサ実行可能命令で構成された、請求項31に記載のコンピューティングデバイス。
  34. 前記プロセッサは、前記1つまたは複数のプロセスのメモリ速度要件を判断するステップと、
    前記1つまたは複数のプロセスがディマンディングプロセスを含むかどうかを判断するステップと
    をさらに含む動作を実行するためのプロセッサ実行可能命令で構成され、
    前記プロセッサは、前記ハイブリッドメモリの特性と1つまたは複数のプロセスの特性とに基づいて前記物理アドレスを割り当てるステップが、
    前記1つまたは複数のプロセスが前記ディマンディングプロセスを含むと判断したことに応答して、前記1つまたは複数のプロセスに前記ハイブリッドメモリの高速部分を割り当てるステッ
    含むような動作を実行するためのプロセッサ実行可能命令で構成された、請求項31に記載のコンピューティングデバイス。
  35. 前記プロセッサは、
    前記1つまたは複数のプロセスについてエネルギー効率に関連付けられたメモリ要件を判断するステップと、
    前記1つまたは複数のプロセスがディマンディングプロセスを含むかどうかを判断するステップと
    をさらに含む動作を実行するためのプロセッサ実行可能命令で構成され、
    前記プロセッサは、前記ハイブリッドメモリの特性と1つまたは複数のプロセスの特性とに基づいて前記物理アドレスを割り当てるステップが、
    前記1つまたは複数のプロセスが前記ディマンディングプロセスを含むと判断したことに応答して、前記1つまたは複数のプロセスに前記ハイブリッドメモリのエネルギー効率的でない部分を割り当てるステップと
    を含むような動作を実行するためのプロセッサ実行可能命令で構成された、請求項31に記載のコンピューティングデバイス。
  36. コンピューティングデバイスであって、
    メモリと、
    ハードウェアレイヤ構成要素と、
    前記メモリと前記ハードウェアレイヤ構成要素とに結合されたプロセッサと
    を含み、
    前記プロセッサが、
    前記メモリのメモリパフォーマンスデータを収集するステップと、
    前記収集されたメモリパフォーマンスデータを使用して前記メモリのエネルギー消費モデルとメモリパフォーマンスモデルとを生成するステップと、
    前記コンピューティングデバイス上でメモリスペースを割り振るステップと
    を含む動作を実行するためのプロセッサ実行可能命令で構成され、
    前記ハードウェアレイヤ構成要素が、前記メモリの特性と前記コンピューティングデバイス上で動作している1つまたは複数のプロセスの特性とに基づいて物理アドレスを割り当てるステップによって、前記エネルギー消費モデルと前記メモリパフォーマンスモデルとに基づいて中間物理アドレスを物理アドレスに変換するように構成された、コンピューティングデバイス。
  37. 前記プロセッサは、前記コンピューティングデバイス上でメモリスペースを割り振るステップが、ソフトウェアプロセスにメモリスペースを割り振るステップを含むような動作を実行するためのプロセッサ実行可能命令で構成された、請求項36に記載のコンピューティングデバイス。
  38. 前記プロセッサは、前記コンピューティングデバイス上でメモリスペースを割り振るステップが、オペレーティングシステムにおいて仮想アドレスを前記中間物理アドレスに変換することによって、前記コンピューティングデバイス上でメモリスペースを割り振るステップを含むような動作を実行するためのプロセッサ実行可能命令で構成された、請求項36に記載のコンピューティングデバイス。
  39. 前記メモリがハイブリッドメモリであり、前記ハードウェアレイヤ構成要素は、前記メモリの特性と前記コンピューティングデバイスの1つまたは複数のプロセスの特性とに基づいて前記物理アドレスを割り当てるステップが、前記ハイブリッドメモリの特性に基づいて前記物理アドレスを割り当てるステップを含むように構成された、請求項36に記載のコンピューティングデバイス。
  40. 前記ハードウェアレイヤ構成要素は、前記ハイブリッドメモリの特性と1つまたは複数のプロセスの特性とに基づいて前記物理アドレスを割り当てるステップが、
    前記ハイブリッドメモリのパフォーマンス特性、
    前記ハイブリッドメモリの電力消費特性、および
    前記ハイブリッドメモリのレイテンシ特性
    のうちの1つまたは複数に基づいて前記物理アドレスを割り当てるステップを含むように構成された、請求項39に記載のコンピューティングデバイス。
  41. 前記ハードウェアレイヤ構成要素は、前記ハイブリッドメモリの特性と1つまたは複数のプロセスの特性とに基づいて前記物理アドレスを割り当てるステップが、前記1つまたは複数のプロセスのパフォーマンス特性に基づいて前記物理アドレスを割り当てるステップを含むように構成された、請求項39に記載のコンピューティングデバイス。
  42. 前記ハイブリッドメモリが2つ以上のタイプのメモリ技術を含み、前記ハードウェアレイヤ構成要素は、前記ハイブリッドメモリの特性と1つまたは複数のプロセスの特性とに基づいて前記物理アドレスを割り当てるステップが、前記ハイブリッドメモリに含まれる前記タイプのメモリ技術に基づいて前記物理アドレスを割り当てるステップを含むように構成された、請求項39に記載のコンピューティングデバイス。
  43. 前記プロセッサは、前記コンピューティングデバイスがより低いパフォーマンス状態に入りつつあるときを判断するステップを含む動作を実行するためのプロセッサ実行可能命令で構成され、
    前記ハードウェアレイヤ構成要素は、前記ハイブリッドメモリの特性と1つまたは複数のプロセスの特性とに基づいて前記物理アドレスを割り当てるステップが、前記コンピューティングデバイスがより低いパフォーマンス状態に入りつつあると判断したことに応答して、前記ハイブリッドメモリのエネルギー効率的な部分をソフトウェアアプリケーションに割り当てるステップを含むように構成された、請求項39に記載のコンピューティングデバイス。
  44. 前記プロセッサは、前記コンピューティングデバイスが前記より低いパフォーマンス状態から出つつあるときを判断するステップをさらに含む動作を実行するためのプロセッサ実行可能命令で構成され、
    前記ハードウェアレイヤ構成要素は、前記ハイブリッドメモリの特性と1つまたは複数のプロセスの特性とに基づいて前記物理アドレスを割り当てるステップが、メモリを要求する前記ソフトウェアアプリケーションがエネルギー効率的なメモリを割り当てられ得ないことと、前記コンピューティングデバイスが前記より低いパフォーマンス状態から出つつあることとを判断したことに応答して、前記ハイブリッドメモリのあまりエネルギー効率的でない部分を前記ソフトウェアアプリケーションに再割り当てするステップを含むように構成された、請求項43に記載のコンピューティングデバイス。
  45. 前記プロセッサは、前記1つまたは複数のプロセスがディマンディングプロセスを含むかどうかを判断するステップをさらに含む動作を実行するためのプロセッサ実行可能命令で構成された、請求項39に記載のコンピューティングデバイス。
  46. 前記プロセッサは、前記1つまたは複数のプロセスがディマンディングプロセスを含むかどうかを判断するステップが、前記1つまたは複数のプロセスが、
    マルチメディアアプリケーション、
    ビデオプレーヤアプリケーション、
    ストリーミングビデオアプリケーション、
    仮想現実アプリケーション、
    拡張現実アプリケーション、
    ゲームアプリケーション、
    コンピュータビジョンアプリケーション、
    ビデオ会議アプリケーション、
    ジェスチャー認識アプリケーション、および
    音声認識アプリケーション
    のうちの1つまたは複数に関連するプロセスを含むかどうかを判断するステップを含むような動作を実行するためのプロセッサ実行可能命令で構成された、請求項45に記載のコンピューティングデバイス。
  47. 前記ハードウェアレイヤ構成要素は、前記ハイブリッドメモリの特性と1つまたは複数のプロセスの特性とに基づいて前記物理アドレスを割り当てるステップが、
    前記1つまたは複数のプロセスがディマンディングプロセスを含むと判断されたとき、前記ディマンディングプロセスに関連するアプリケーションプログラムに前記ハイブリッドメモリの高速部分を割り当てるステップと、別のプロセスに関連するアプリケーションプログラムに前記ハイブリッドメモリの低速部分を割り当てるステップと
    を含むように構成された、請求項45に記載のコンピューティングデバイス。
  48. 前記プロセッサは、前記1つまたは複数のプロセスのメモリ速度要件を判断するステップと、
    前記1つまたは複数のプロセスがディマンディングプロセスを含むかどうかを判断するステップと
    をさらに含む動作を実行するためのプロセッサ実行可能命令で構成され、
    前記ハードウェアレイヤ構成要素は、前記ハイブリッドメモリの特性と1つまたは複数のプロセスの特性とに基づいて前記物理アドレスを割り当てるステップが、
    前記1つまたは複数のプロセスが前記ディマンディングプロセスを含むと判断したことに応答して、前記1つまたは複数のプロセスに前記ハイブリッドメモリの高速部分を割り当てるステッ
    含むように構成された、請求項45に記載のコンピューティングデバイス。
  49. 前記プロセッサは、
    前記1つまたは複数のプロセスについてエネルギー効率に関連付けられたメモリ要件を判断するステップと、
    前記1つまたは複数のプロセスがディマンディングプロセスを含むかどうかを判断するステップと
    をさらに含む動作を実行するためのプロセッサ実行可能命令で構成され、
    前記ハードウェアレイヤ構成要素は、前記ハイブリッドメモリの特性と1つまたは複数のプロセスの特性とに基づいて前記物理アドレスを割り当てるステップが、
    前記1つまたは複数のプロセスが前記ディマンディングプロセスを含むと判断したことに応答して、前記1つまたは複数のプロセスに前記ハイブリッドメモリのエネルギー効率的でない部分を割り当てるステップと
    を含むように構成された、請求項45に記載のコンピューティングデバイス。
  50. コンピューティングデバイスであって、
    メモリのメモリパフォーマンスデータを収集するための手段と、
    前記収集されたメモリパフォーマンスデータを使用して前記メモリのエネルギー消費モデルとメモリパフォーマンスモデルとを生成するための手段と、
    前記エネルギー消費モデルと前記メモリパフォーマンスモデルとに基づいて、モニタエージェントにおいて中間物理アドレスを物理アドレスに変換するための手段であって、前記モニタエージェントが、前記メモリの特性と前記コンピューティングデバイス上で動作している1つまたは複数のプロセスの特性とに基づいて前記物理アドレスを割り当てる、変換するための手段
    を含む、前記コンピューティングデバイス上でメモリスペースを割り振るための手段
    を含む、コンピューティングデバイス。
  51. 前記コンピューティングデバイス上でメモリスペースを割り振るための手段が、ソフトウェアプロセスにメモリスペースを割り振るための手段を含む、請求項50に記載のコンピューティングデバイス。
  52. モニタエージェントにおいて前記中間物理アドレスを物理アドレスに変換するための手段が、ハイパーバイザにおいて前記中間物理アドレスを前記物理アドレスに変換するための手段を含む、請求項50に記載のコンピューティングデバイス。
  53. モニタエージェントにおいて前記中間物理アドレスを物理アドレスに変換するための手段が、前記コンピューティングデバイスのオペレーティングシステムの外部のモニタソフトウェアにおいて前記中間物理アドレスを前記物理アドレスに変換するための手段を含む、請求項50に記載のコンピューティングデバイス。
  54. モニタエージェントにおいて前記中間物理アドレスを物理アドレスに変換するための手段が、ハードウェアレイヤ構成要素において前記中間物理アドレスを前記物理アドレスに変換するための手段を含む、請求項50に記載のコンピューティングデバイス。
  55. モニタエージェントにおいて前記中間物理アドレスを物理アドレスに変換するための手段が、デバイスドライバの一部として動作しているソフトウェアモニタにおいて前記中間物理アドレスを前記物理アドレスに変換するための手段を含む、請求項50に記載のコンピューティングデバイス。
  56. 前記コンピューティングデバイス上でメモリスペースを割り振るための手段が、オペレーティングシステムにおいて仮想アドレスを前記中間物理アドレスに変換するための手段をさらに含む、請求項50に記載のコンピューティングデバイス。
  57. 前記メモリの特性と前記コンピューティングデバイスの1つまたは複数のプロセスの特性とに基づいて前記物理アドレスを割り当てるための手段が、ハイブリッドメモリの特性に基づいて前記物理アドレスを割り当てるための手段を含む、請求項50に記載のコンピューティングデバイス。
  58. 前記ハイブリッドメモリの特性と1つまたは複数のプロセスの特性とに基づいて前記物理アドレスを割り当てるための手段が、
    前記ハイブリッドメモリのパフォーマンス特性、
    前記ハイブリッドメモリの電力消費特性、および
    前記ハイブリッドメモリのレイテンシ特性
    のうちの1つまたは複数に基づいて前記物理アドレスを割り当てるための手段を含む、請求項57に記載のコンピューティングデバイス。
  59. 前記ハイブリッドメモリの特性と1つまたは複数のプロセスの特性とに基づいて前記物理アドレスを割り当てるための手段が、前記1つまたは複数のプロセスのパフォーマンス特性に基づいて前記物理アドレスを割り当てるための手段を含む、請求項57に記載のコンピューティングデバイス。
  60. 前記ハイブリッドメモリの特性と1つまたは複数のプロセスの特性とに基づいて前記物理アドレスを割り当てるための手段が、前記ハイブリッドメモリに含まれる2つ以上のタイプのメモリ技術に基づいて前記物理アドレスを割り当てるための手段を含む、請求項57に記載のコンピューティングデバイス。
  61. 前記コンピューティングデバイスがより低いパフォーマンス状態に入りつつあるときを判断するための手段をさらに含み、
    前記ハイブリッドメモリの特性と1つまたは複数のプロセスの特性とに基づいて前記物理アドレスを割り当てるための手段は、前記コンピューティングデバイスがより低いパフォーマンス状態に入りつつあると判断したことに応答して、前記ハイブリッドメモリのエネルギー効率的な部分をソフトウェアアプリケーションに割り当てるための手段を含む、請求項57に記載のコンピューティングデバイス。
  62. 前記コンピューティングデバイスが前記より低いパフォーマンス状態から出つつあるときを判断するための手段をさらに含み、
    前記ハイブリッドメモリの特性と1つまたは複数のプロセスの特性とに基づいて前記物理アドレスを割り当てるための手段は、メモリを要求する前記ソフトウェアアプリケーションがエネルギー効率的なメモリを割り当てられ得ないことと、前記コンピューティングデバイスが前記より低いパフォーマンス状態から出つつあることとを判断したことに応答して、動作している前記ソフトウェアアプリケーションに前記ハイブリッドメモリのあまりエネルギー効率的でない部分を再割り当てするための手段を含む、請求項61に記載のコンピューティングデバイス。
  63. 前記1つまたは複数のプロセスがディマンディングプロセスを含むかどうかを判断するための手段
    をさらに含む、請求項57に記載のコンピューティングデバイス。
  64. 前記1つまたは複数のプロセスがディマンディングプロセスを含むかどうかを判断するための手段は、前記1つまたは複数のプロセスが、
    マルチメディアアプリケーション、
    ビデオプレーヤアプリケーション、
    ストリーミングビデオアプリケーション、
    仮想現実アプリケーション、
    拡張現実アプリケーション、
    ゲームアプリケーション、
    コンピュータビジョンアプリケーション、
    ビデオ会議アプリケーション、
    ジェスチャー認識アプリケーション、および
    音声認識アプリケーション
    のうちの1つまたは複数に関連するプロセスを含むかどうかを判断するための手段を含む、請求項63に記載のコンピューティングデバイス。
  65. 前記ハイブリッドメモリの特性と1つまたは複数のプロセスの特性とに基づいて前記物理アドレスを割り当てるための手段は、
    前記1つまたは複数のプロセスがディマンディングプロセスを含むと判断されたとき、前記ディマンディングプロセスに関連するアプリケーションプログラムに前記ハイブリッドメモリの高速部分を割り当てるための手段と、別のプロセスに関連するアプリケーションプログラムに前記ハイブリッドメモリの低速部分を割り当てるための手段と
    を含む、請求項63に記載のコンピューティングデバイス。
  66. 前記1つまたは複数のプロセスのメモリ速度要件を判断するための手段と、
    前記1つまたは複数のプロセスがディマンディングプロセスを含むかどうかを判断するための手段と
    をさらに含み、前記ハイブリッドメモリの特性と1つまたは複数のプロセスの特性とに基づいて前記物理アドレスを割り当てるための手段は、
    前記1つまたは複数のプロセスが前記ディマンディングプロセスを含むと判断したことに応答して、前記1つまたは複数のプロセスに前記ハイブリッドメモリの高速部分を割り当てるための手
    含む、請求項63に記載のコンピューティングデバイス。
  67. 前記1つまたは複数のプロセスについてエネルギー効率に関連付けられたメモリ要件を判断するための手段と、
    前記1つまたは複数のプロセスがディマンディングプロセスを含むかどうかを判断するための手段と
    をさらに含み、前記ハイブリッドメモリの特性と1つまたは複数のプロセスの特性とに基づいて前記物理アドレスを割り当てるための手段は、
    前記1つまたは複数のプロセスが前記ディマンディングプロセスを含むと判断したことに応答して、前記1つまたは複数のプロセスに前記ハイブリッドメモリのエネルギー効率的でない部分を割り当てるための手段と
    を含む、請求項63に記載のコンピューティングデバイス。
  68. メモリを有するコンピューティングデバイス上でメモリを管理するための動作をプロセッサに実行させるように構成されたプロセッサ実行可能ソフトウェア命令を記憶した非一時的コンピュータ可読記憶媒体であって、前記動作が、
    前記メモリのメモリパフォーマンスデータを収集するステップと、
    前記収集されたメモリパフォーマンスデータを使用して前記メモリのエネルギー消費モデルとメモリパフォーマンスモデルとを生成するステップと、
    前記エネルギー消費モデルと前記メモリパフォーマンスモデルとに基づいて、モニタエージェントにおいて中間物理アドレスを物理アドレスに変換するステップであって、前記モニタエージェントが、前記メモリの特性と前記コンピューティングデバイス上で動作している1つまたは複数のプロセスの特性とに基づいて前記物理アドレスを割り当てる、変換するステップ
    を含む、前記コンピューティングデバイス上でメモリスペースを割り振るステップ
    を含む、非一時的コンピュータ可読記憶媒体。
  69. 前記記憶されたプロセッサ実行可能ソフトウェア命令は、前記コンピューティングデバイス上でメモリスペースを割り振るステップが、ソフトウェアプロセスにメモリスペースを割り振るステップを含むような動作をプロセッサに実行させるように構成された、請求項68に記載の非一時的コンピュータ可読記憶媒体。
  70. 前記記憶されたプロセッサ実行可能ソフトウェア命令は、前記中間物理アドレスを物理アドレスに変換するステップが、ハイパーバイザにおいて前記中間物理アドレスを前記物理アドレスに変換するステップを含むような動作をプロセッサに実行させるように構成された、請求項68に記載の非一時的コンピュータ可読記憶媒体。
  71. 前記記憶されたプロセッサ実行可能ソフトウェア命令は、前記中間物理アドレスを物理アドレスに変換するステップが、オペレーティングシステムの外部で動作しているモニタソフトウェアにおいて前記中間物理アドレスを前記物理アドレスに変換するステップを含むような動作をプロセッサに実行させるように構成された、請求項68に記載の非一時的コンピュータ可読記憶媒体。
  72. 前記記憶されたプロセッサ実行可能ソフトウェア命令は、前記中間物理アドレスを物理アドレスに変換するステップが、デバイスドライバにおいて前記中間物理アドレスを前記物理アドレスに変換するステップを含むような動作をプロセッサに実行させるように構成された、請求項68に記載の非一時的コンピュータ可読記憶媒体。
  73. 前記記憶されたプロセッサ実行可能ソフトウェア命令は、前記コンピューティングデバイス上でメモリスペースを割り振るステップが、オペレーティングシステムプロセスにおいて仮想アドレスを前記中間物理アドレスに変換するステップを含むような動作をプロセッサに実行させるように構成された、請求項68に記載の非一時的コンピュータ可読記憶媒体。
  74. 前記記憶されたプロセッサ実行可能ソフトウェア命令は、前記メモリの特性と前記コンピューティングデバイス上で動作している1つまたは複数のプロセスの特性とに基づいて前記物理アドレスを割り当てるステップが、ハイブリッドメモリの特性に基づいて前記物理アドレスを割り当てるステップを含むような動作をプロセッサに実行させるように構成された、請求項68に記載の非一時的コンピュータ可読記憶媒体。
  75. 前記記憶されたプロセッサ実行可能ソフトウェア命令は、前記ハイブリッドメモリの特性と1つまたは複数のプロセスの特性とに基づいて前記物理アドレスを割り当てるステップが、
    前記ハイブリッドメモリのパフォーマンス特性、
    前記ハイブリッドメモリの電力消費特性、および
    前記ハイブリッドメモリのレイテンシ特性
    のうちの1つまたは複数に基づいて前記物理アドレスを割り当てるステップを含むような動作をプロセッサに実行させるように構成された、請求項74に記載の非一時的コンピュータ可読記憶媒体。
  76. 前記記憶されたプロセッサ実行可能ソフトウェア命令は、前記ハイブリッドメモリの特性と1つまたは複数のプロセスの特性とに基づいて前記物理アドレスを割り当てるステップが、
    前記1つまたは複数のプロセスのパフォーマンス特性に基づいて前記物理アドレスを割り当てるステップ
    を含むような動作をプロセッサに実行させるように構成された、請求項74に記載の非一時的コンピュータ可読記憶媒体。
  77. 前記ハイブリッドメモリが2つ以上のタイプのメモリ技術を含み、前記記憶されたプロセッサ実行可能ソフトウェア命令は、前記ハイブリッドメモリの特性と1つまたは複数のプロセスの特性とに基づいて前記物理アドレスを割り当てるステップが、
    前記ハイブリッドメモリに含まれる前記タイプのメモリ技術に基づいて前記物理アドレスを割り当てるステップ
    を含むような動作をプロセッサに実行させるように構成された、請求項74に記載の非一時的コンピュータ可読記憶媒体。
  78. 前記記憶されたプロセッサ実行可能ソフトウェア命令は、前記コンピューティングデバイスがより低いパフォーマンス状態に入りつつあるときを判断するステップをさらに含む動作をプロセッサに実行させるように構成され、
    前記記憶されたプロセッサ実行可能ソフトウェア命令は、前記ハイブリッドメモリの特性と1つまたは複数のプロセスの特性とに基づいて前記物理アドレスを割り当てるステップが、前記コンピューティングデバイスがより低いパフォーマンス状態に入りつつあると判断したことに応答して、前記ハイブリッドメモリのエネルギー効率的な部分をソフトウェアアプリケーションに割り当てるステップを含むような動作をプロセッサに実行させるように構成された、請求項74に記載の非一時的コンピュータ可読記憶媒体。
  79. 前記記憶されたプロセッサ実行可能ソフトウェア命令は、前記コンピューティングデバイスが前記より低いパフォーマンス状態から出つつあるときを判断するステップをさらに含む動作をプロセッサに実行させるように構成され、
    前記記憶されたプロセッサ実行可能ソフトウェア命令は、前記ハイブリッドメモリの特性と1つまたは複数のプロセスの特性とに基づいて前記物理アドレスを割り当てるステップが、メモリを要求する前記ソフトウェアアプリケーションがエネルギー効率的なメモリを割り当てられ得ないことと、前記コンピューティングデバイスが前記より低いパフォーマンス状態から出つつあることとを判断したことに応答して、動作している前記ソフトウェアアプリケーションに前記ハイブリッドメモリのあまりエネルギー効率的でない部分を再割り当てするステップを含むような動作をプロセッサに実行させるように構成された、請求項78に記載の非一時的コンピュータ可読記憶媒体。
  80. 前記記憶されたプロセッサ実行可能ソフトウェア命令は、
    前記1つまたは複数のプロセスがディマンディングプロセスを含むかどうかを判断するステップ
    を含む動作をプロセッサに実行させるように構成された、請求項74に記載の非一時的コンピュータ可読記憶媒体。
  81. 前記記憶されたプロセッサ実行可能ソフトウェア命令は、前記1つまたは複数のプロセスがディマンディングプロセスを含むかどうかを判断するステップが、前記1つまたは複数のプロセスが、
    マルチメディアアプリケーション、
    ビデオプレーヤアプリケーション、
    ストリーミングビデオアプリケーション、
    仮想現実アプリケーション、
    拡張現実アプリケーション、
    ゲームアプリケーション、
    コンピュータビジョンアプリケーション、
    ビデオ会議アプリケーション、
    ジェスチャー認識アプリケーション、および
    音声認識アプリケーション
    のうちの1つまたは複数に関連するプロセスを含むかどうかを判断するステップを含むような動作をプロセッサに実行させるように構成された、請求項80に記載の非一時的コンピュータ可読記憶媒体。
  82. 前記記憶されたプロセッサ実行可能ソフトウェア命令は、前記ハイブリッドメモリの特性と1つまたは複数のプロセスの特性とに基づいて前記物理アドレスを割り当てるステップが、
    前記1つまたは複数のプロセスがディマンディングプロセスを含むと判断されたとき、前記ディマンディングプロセスに関連するアプリケーションプログラムに前記ハイブリッドメモリの高速部分を割り当てるステップと、別のプロセスに関連するアプリケーションプログラムに前記ハイブリッドメモリの低速部分を割り当てるステップと
    を含むような動作をプロセッサに実行させるように構成された、請求項80に記載の非一時的コンピュータ可読記憶媒体。
  83. 前記記憶されたプロセッサ実行可能ソフトウェア命令は、
    前記1つまたは複数のプロセスのメモリ速度要件を判断するステップと、
    前記1つまたは複数のプロセスがディマンディングプロセスを含むかどうかを判断するステップと
    を含む動作をプロセッサに実行させるように構成され、
    前記記憶されたプロセッサ実行可能ソフトウェア命令は、前記ハイブリッドメモリの特性と1つまたは複数のプロセスの特性とに基づいて前記物理アドレスを割り当てるステップが、
    前記1つまたは複数のプロセスが前記ディマンディングプロセスを含むと判断したことに応答して、前記1つまたは複数のプロセスに前記ハイブリッドメモリの高速部分を割り当てるステッ
    含むような動作をプロセッサに実行させるように構成された、請求項80に記載の非一時的コンピュータ可読記憶媒体。
  84. 前記記憶されたプロセッサ実行可能ソフトウェア命令は、
    前記1つまたは複数のプロセスについてエネルギー効率に関連付けられたメモリ要件を判断するステップと、
    前記1つまたは複数のプロセスがディマンディングプロセスを含むかどうかを判断するステップと
    を含む動作をプロセッサに実行させるように構成され、
    前記記憶されたプロセッサ実行可能ソフトウェア命令は、前記ハイブリッドメモリの特性と1つまたは複数のプロセスの特性とに基づいて前記物理アドレスを割り当てるステップが、
    前記1つまたは複数のプロセスが前記ディマンディングプロセスを含むと判断したことに応答して、前記1つまたは複数のプロセスに前記ハイブリッドメモリのエネルギー効率的でない部分を割り当てるステップと
    を含むような動作をプロセッサに実行させるように構成された、請求項80に記載の非一時的コンピュータ可読記憶媒体。
JP2015526533A 2012-08-07 2013-06-13 ハイブリッドメモリ管理のための方法、システムおよびデバイス Expired - Fee Related JP5916955B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/568,523 US9047090B2 (en) 2012-08-07 2012-08-07 Methods, systems and devices for hybrid memory management
US13/568,523 2012-08-07
PCT/US2013/045685 WO2014025454A1 (en) 2012-08-07 2013-06-13 Methods, systems and devices for hybrid memory management

Publications (2)

Publication Number Publication Date
JP2015528597A JP2015528597A (ja) 2015-09-28
JP5916955B2 true JP5916955B2 (ja) 2016-05-11

Family

ID=48747725

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015526533A Expired - Fee Related JP5916955B2 (ja) 2012-08-07 2013-06-13 ハイブリッドメモリ管理のための方法、システムおよびデバイス

Country Status (6)

Country Link
US (1) US9047090B2 (ja)
EP (1) EP2883146A1 (ja)
JP (1) JP5916955B2 (ja)
CN (1) CN104520823B (ja)
IN (1) IN2015MN00051A (ja)
WO (1) WO2014025454A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11182311B2 (en) 2019-09-24 2021-11-23 Kabushiki Kaisha Toshiba Virtualization support device, control method of virtualization support device, and calculation system

Families Citing this family (52)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8515052B2 (en) 2007-12-17 2013-08-20 Wai Wu Parallel signal processing system and method
GB2495959A (en) 2011-10-26 2013-05-01 Imagination Tech Ltd Multi-threaded memory access processor
US10303618B2 (en) * 2012-09-25 2019-05-28 International Business Machines Corporation Power savings via dynamic page type selection
US9348757B2 (en) 2012-10-08 2016-05-24 International Business Machines Corporation System supporting multiple partitions with differing translation formats
US9355032B2 (en) 2012-10-08 2016-05-31 International Business Machines Corporation Supporting multiple types of guests by a hypervisor
US9740624B2 (en) 2012-10-08 2017-08-22 International Business Machines Corporation Selectable address translation mechanisms within a partition
US9280488B2 (en) 2012-10-08 2016-03-08 International Business Machines Corporation Asymmetric co-existent address translation structure formats
US9600419B2 (en) * 2012-10-08 2017-03-21 International Business Machines Corporation Selectable address translation mechanisms
US9355040B2 (en) 2012-10-08 2016-05-31 International Business Machines Corporation Adjunct component to provide full virtualization using paravirtualized hypervisors
US9448612B2 (en) * 2012-11-12 2016-09-20 International Business Machines Corporation Management to reduce power consumption in virtual memory provided by plurality of different types of memory devices
US10210096B2 (en) * 2013-10-01 2019-02-19 Ampere Computing Llc Multi-stage address translation for a computing device
US10437479B2 (en) 2014-08-19 2019-10-08 Samsung Electronics Co., Ltd. Unified addressing and hierarchical heterogeneous storage and memory
US10282100B2 (en) 2014-08-19 2019-05-07 Samsung Electronics Co., Ltd. Data management scheme in virtualized hyperscale environments
GB2536201B (en) * 2015-03-02 2021-08-18 Advanced Risc Mach Ltd Handling address translation requests
US10157008B2 (en) 2015-04-29 2018-12-18 Qualcomm Incorporated Systems and methods for optimizing memory power consumption in a heterogeneous system memory
US9547361B2 (en) * 2015-04-29 2017-01-17 Qualcomm Incorporated Methods and apparatuses for memory power reduction
US9977730B2 (en) * 2015-05-08 2018-05-22 Dell Products, Lp System and method for optimizing system memory and input/output operations memory
US10007435B2 (en) 2015-05-21 2018-06-26 Micron Technology, Inc. Translation lookaside buffer in memory
JP6212073B2 (ja) * 2015-06-29 2017-10-11 ファナック株式会社 プログラムの内容に応じて格納先を自動選択する機能を備えた数値制御装置
US9690494B2 (en) * 2015-07-21 2017-06-27 Qualcomm Incorporated Managing concurrent access to multiple storage bank domains by multiple interfaces
US10003529B2 (en) * 2015-08-04 2018-06-19 Telefonaktiebolaget Lm Ericsson (Publ) Method and system for memory allocation in a software-defined networking (SDN) system
US9740438B2 (en) * 2015-08-20 2017-08-22 Sap Se Allocating memory on multiple types of main memory technologies from software application layer
US20170108911A1 (en) * 2015-10-16 2017-04-20 Qualcomm Incorporated System and method for page-by-page memory channel interleaving
US20170108914A1 (en) * 2015-10-16 2017-04-20 Qualcomm Incorporated System and method for memory channel interleaving using a sliding threshold address
GB2545170B (en) * 2015-12-02 2020-01-08 Imagination Tech Ltd GPU virtualisation
US11762764B1 (en) * 2015-12-02 2023-09-19 Pure Storage, Inc. Writing data in a storage system that includes a first type of storage device and a second type of storage device
US20170168541A1 (en) 2015-12-15 2017-06-15 Intel Corporation Processor core energy management
US20170185292A1 (en) * 2015-12-23 2017-06-29 Intel Corporation Memory Management of High-Performance Memory
CN105676727B (zh) * 2016-01-11 2018-03-02 西北工业大学 一种发动机燃油供应系统控制时序存储和读取方法
US10140216B2 (en) * 2016-01-21 2018-11-27 Arm Limited Measuring address translation latency
US9830086B2 (en) * 2016-03-03 2017-11-28 Samsung Electronics Co., Ltd. Hybrid memory controller for arbitrating access to volatile and non-volatile memories in a hybrid memory group
US20170262367A1 (en) * 2016-03-11 2017-09-14 Qualcomm Incorporated Multi-rank collision reduction in a hybrid parallel-serial memory system
CN106657718B (zh) * 2016-11-07 2019-12-06 金陵科技学院 实现虚拟现实的数据传送系统及其方法
US10866912B2 (en) 2017-03-10 2020-12-15 Toshiba Memory Corporation Integrated heterogeneous solid state storage drive
CN107102824B (zh) * 2017-05-26 2019-08-30 华中科技大学 一种基于存储和加速优化的Hadoop异构方法和系统
US11049009B2 (en) 2017-06-12 2021-06-29 Western Digital Technologies, Inc. Identifying memory block write endurance using machine learning
US10445009B2 (en) * 2017-06-30 2019-10-15 Intel Corporation Systems and methods of controlling memory footprint
US10783252B2 (en) 2017-08-23 2020-09-22 Qualcomm Incorporated System and method for booting within a heterogeneous memory environment
US10691805B2 (en) * 2018-02-14 2020-06-23 GM Global Technology Operations LLC Resident manufacturing test software based system for mitigating risks associated with vehicle control modules
US20190370009A1 (en) * 2018-06-03 2019-12-05 Apple Inc. Intelligent swap for fatigable storage mediums
CN110928737B (zh) * 2018-09-19 2021-05-18 华为技术有限公司 监控样本进程的内存访问行为的方法和装置
US11176493B2 (en) 2019-04-29 2021-11-16 Google Llc Virtualizing external memory as local to a machine learning accelerator
CN112016693B (zh) * 2019-05-30 2021-06-04 中兴通讯股份有限公司 机器学习引擎实现方法及装置、终端设备、存储介质
CN110265029A (zh) * 2019-06-21 2019-09-20 百度在线网络技术(北京)有限公司 语音芯片和电子设备
US11099758B2 (en) * 2019-07-16 2021-08-24 Facebook Technologies, Llc Memory management of computing devices
US10996975B2 (en) 2019-08-22 2021-05-04 Micron Technology, Inc. Hierarchical memory systems
US11650742B2 (en) * 2019-09-17 2023-05-16 Micron Technology, Inc. Accessing stored metadata to identify memory devices in which data is stored
US11494311B2 (en) 2019-09-17 2022-11-08 Micron Technology, Inc. Page table hooks to memory types
US11733763B2 (en) * 2020-08-06 2023-08-22 Micron Technology, Inc. Intelligent low power modes for deep learning accelerator and random access memory
WO2022118322A1 (en) * 2020-12-02 2022-06-09 Unifabrix Ltd. System and method for multimodal computer address space provisioning
US11791326B2 (en) 2021-05-10 2023-10-17 International Business Machines Corporation Memory and logic chip stack with a translator chip
US20240168535A1 (en) * 2022-11-22 2024-05-23 Gopro, Inc. Dynamic power allocation for memory using multiple interleaving patterns

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04230508A (ja) * 1990-10-29 1992-08-19 Internatl Business Mach Corp <Ibm> 低電力消費メモリ装置
JPH11242629A (ja) * 1997-10-09 1999-09-07 Matsushita Electric Ind Co Ltd メモリシステム
US7330954B2 (en) 2002-04-18 2008-02-12 Intel Corporation Storing information in one of at least two storage devices based on a storage parameter and an attribute of the storage devices
JP2004310580A (ja) * 2003-04-09 2004-11-04 Mitsubishi Electric Corp メモリマップ最適化方式及びメモリマップ最適化方法
WO2008055270A2 (en) 2006-11-04 2008-05-08 Virident Systems, Inc. Writing to asymmetric memory
WO2009052525A1 (en) 2007-10-19 2009-04-23 Virident Systems, Inc. Managing memory systems containing components with asymmetric characteristics
GB2460393B (en) 2008-02-29 2012-03-28 Advanced Risc Mach Ltd A data processing apparatus and method for controlling access to secure memory by virtual machines executing on processing circuitry
JP2011022933A (ja) * 2009-07-17 2011-02-03 Toshiba Corp メモリ管理装置を含む情報処理装置及びメモリ管理方法
KR101038167B1 (ko) 2008-09-09 2011-05-31 가부시끼가이샤 도시바 프로세서로부터 메모리로의 액세스를 관리하는 메모리 관리 장치를 포함하는 정보 처리 장치 및 메모리 관리 방법
GB2474666B (en) 2009-10-21 2015-07-15 Advanced Risc Mach Ltd Hardware resource management within a data processing system
US8589650B2 (en) * 2010-05-17 2013-11-19 Texas Instruments Incorporated Dynamically configurable memory system
GB2483907A (en) 2010-09-24 2012-03-28 Advanced Risc Mach Ltd Privilege level switching for data processing circuitry when in a debug mode
GB2483906C (en) * 2010-09-24 2019-10-09 Advanced Risc Mach Ltd Selection of debug instruction set for debugging of a data processing apparatus
US8239620B2 (en) 2010-09-27 2012-08-07 Mips Technologies, Inc. Microprocessor with dual-level address translation
US8990538B2 (en) 2010-11-05 2015-03-24 Microsoft Corporation Managing memory with limited write cycles in heterogeneous memory systems

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11182311B2 (en) 2019-09-24 2021-11-23 Kabushiki Kaisha Toshiba Virtualization support device, control method of virtualization support device, and calculation system

Also Published As

Publication number Publication date
CN104520823A (zh) 2015-04-15
US20140047251A1 (en) 2014-02-13
IN2015MN00051A (ja) 2015-10-16
US9047090B2 (en) 2015-06-02
JP2015528597A (ja) 2015-09-28
CN104520823B (zh) 2016-05-04
WO2014025454A1 (en) 2014-02-13
EP2883146A1 (en) 2015-06-17

Similar Documents

Publication Publication Date Title
JP5916955B2 (ja) ハイブリッドメモリ管理のための方法、システムおよびデバイス
US9311011B2 (en) Dynamic address negotiation for shared memory regions in heterogenous multiprocessor systems
CN107636625B (zh) 用于共享系统高速缓存的虚拟化控制的方法和装置
TWI614752B (zh) 經由記憶體通道關閉之節電技術
US8041920B2 (en) Partitioning memory mapped device configuration space
US20160267013A1 (en) Techniques to prelink software to improve memory de-duplication in a virtual system
KR102423713B1 (ko) 가상 어드레스를 물리적 어드레스로 번역을 수행하기 위해 입력-출력 메모리 관리 유닛내 다수의 메모리 소자들 사용
US20190188028A1 (en) Paravirtualized access for device assignment by bar extension
EP1966703B1 (en) Method and apparatus for hardware-based dynamic escape detection in managed run-time environments
JP2012533124A (ja) ブロックベースの非透過的キャッシュ
EP3757799B1 (en) System and method to track physical address accesses by a cpu or device
US12131063B2 (en) Methods and apparatus for offloading tiered memories management
US10365947B2 (en) Multi-core processor including a master core performing tasks involving operating system kernel-related features on behalf of slave cores
JP2020514859A (ja) 変換索引バッファにおける構成可能なスキューアソシエイティビティ
CN110597742A (zh) 用于具有持久系统存储器的计算机系统的改进存储模型
US10678705B2 (en) External paging and swapping for dynamic modules
KR102544401B1 (ko) 어드레스 트랜슬레이션 캐시 및 이를 포함하는 시스템
US20230004417A1 (en) Method and apparatus to select assignable device interfaces for virtual device composition
US11714753B2 (en) Methods and nodes for handling memory

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150710

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20150710

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20150710

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20150804

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20151005

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20151224

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20160307

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160405

R150 Certificate of patent or registration of utility model

Ref document number: 5916955

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees