(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】5916955
(24)【登録日】2016年4月15日
(45)【発行日】2016年5月11日
(54)【発明の名称】ハイブリッドメモリ管理のための方法、システムおよびデバイス
(51)【国際特許分類】
G06F 12/10 20160101AFI20160422BHJP
G06F 12/08 20160101ALI20160422BHJP
【FI】
G06F12/10 553Z
G06F12/08 579
G06F12/08 543Z
G06F12/08 565
【請求項の数】84
【全頁数】40
(21)【出願番号】特願2015-526533(P2015-526533)
(86)(22)【出願日】2013年6月13日
(65)【公表番号】特表2015-528597(P2015-528597A)
(43)【公表日】2015年9月28日
(86)【国際出願番号】US2013045685
(87)【国際公開番号】WO2014025454
(87)【国際公開日】20140213
【審査請求日】2015年7月10日
(31)【優先権主張番号】13/568,523
(32)【優先日】2012年8月7日
(33)【優先権主張国】US
【早期審査対象出願】
(73)【特許権者】
【識別番号】507364838
【氏名又は名称】クアルコム,インコーポレイテッド
(74)【代理人】
【識別番号】100108453
【弁理士】
【氏名又は名称】村山 靖彦
(74)【代理人】
【識別番号】100163522
【弁理士】
【氏名又は名称】黒田 晋平
(72)【発明者】
【氏名】サディープ・ラヴィ・コッティリンガル
(72)【発明者】
【氏名】ラメシュ・ラマスワミー
(72)【発明者】
【氏名】スハイル・ジャリル
(72)【発明者】
【氏名】アゼディン・トウズニ
【審査官】
滝谷 亮一
(56)【参考文献】
【文献】
米国特許出願公開第2012/0198140(US,A1)
【文献】
米国特許出願公開第2009/0106478(US,A1)
【文献】
米国特許出願公開第2012/0117304(US,A1)
【文献】
米国特許出願公開第2003/0200400(US,A1)
【文献】
特開2011−022933(JP,A)
【文献】
特開平11−242629(JP,A)
【文献】
特開2004−310580(JP,A)
【文献】
特開平04−230508(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 12/10
G06F 12/08
(57)【特許請求の範囲】
【請求項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に記載の非一時的コンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ハイブリッドメモリ管理のための方法、システムおよびデバイスに関する。
【背景技術】
【0002】
セルラーおよびワイヤレス通信技術は、過去数年にわたって爆発的成長を遂げてきた。ワイヤレスサービスプロバイダは、現在、多数の機能およびサービスを提供し、それらのユーザに、情報、リソースおよび通信へのかつてないレベルのアクセスを与える。これらのサービス向上に対応するために、モバイル電子デバイス(たとえば、セルラーフォン、タブレット、ラップトップなど)は、かつてないほど機能が豊富で複雑になっており、今や、通常、複数のプロセッサと、システムオンチップ(SoC)と、複数のメモリと、モバイルデバイスユーザが彼らのモバイルデバイス上で複雑で電力集約的なソフトウェアアプリケーション(たとえば、ビデオストリーミング、マルチメディア処理など)を実行することを可能にする他のリソース(たとえば、母線など)とを含む。モバイルデバイスおよび関連技術の人気および使用が増大し続けるにつれて、モバイルデバイスのパフォーマンス能力および電力消費特性を改善することがモバイルデバイス設計者にとって重要で難しい設計基準になることが予想される。
【発明の概要】
【課題を解決するための手段】
【0003】
様々な態様は、モニタエージェントまたはモニタエージェントプロセスにおいて中間物理アドレスを物理アドレスに変換するステップによって、コンピューティングシステム上でメモリスペースを割り振るステップを含み得る、メモリを有するコンピューティングシステム上でメモリを管理する方法を含む。一態様では、モニタエージェントは、メモリの特性とコンピューティングシステムの1つまたは複数のプロセスの特性とに基づいて物理アドレスを割り当て得る。一態様では、メモリの特性に基づいて物理アドレスを割り当てるステップは、ハイブリッドメモリの特性に基づいて物理アドレスを割り当てるステップを含み得る。一態様では、コンピューティングシステム上でメモリスペースを割り振るステップは、オペレーティングシステムにおいて仮想アドレスを中間物理アドレスに変換するステップをさらに含み得る。
【0004】
さらなる態様では、コンピューティングシステム上でメモリスペースを割り振るステップは、ソフトウェアプロセスにメモリスペースを割り振るステップを含み得る。さらなる態様では、コンピューティングシステム上でメモリスペースを割り振るステップは、ハードウェアアクセラレータにメモリスペースを割り振るステップを含み得る。さらなる態様では、コンピューティングシステム上でメモリスペースを割り振るステップは、ソフトウェアプロセスとハードウェアアクセラレータとの組合せにメモリスペースを割り振るステップを含み得る。
【0005】
さらなる態様では、ハイブリッドメモリの特性と1つまたは複数のプロセスの特性とに基づいて物理アドレスを割り当てるステップは、ハイブリッドメモリのパフォーマンス特性、ハイブリッドメモリの電力消費特性、およびハイブリッドメモリのレイテンシ特性のうちの1つまたは複数に基づいて物理アドレスを割り当てるステップを含み得る。さらなる態様では、ハイブリッドメモリの特性と1つまたは複数のプロセスの特性とに基づいて物理アドレスを割り当てるステップは、1つまたは複数のプロセスのパフォーマンス特性に基づいて物理アドレスを割り当てるステップを含み得る。さらなる態様では、ハイブリッドメモリは2つ以上のタイプのメモリ技術を含み得、ハイブリッドメモリの特性と1つまたは複数のプロセスの特性とに基づいて物理アドレスを割り当てるステップは、ハイブリッドメモリに含まれるそれらのタイプのメモリ技術に基づいて物理アドレスを割り当てるステップを含み得る。
【0006】
一態様では、本方法は、1つまたは複数のプロセスがディマンディングプロセスを含むかどうかを判断するステップを含み得る。さらなる態様では、1つまたは複数のプロセスがディマンディングプロセスを含むかどうかを判断するステップは、1つまたは複数のプロセスが、マルチメディアアプリケーション、ビデオプレーヤアプリケーション、ストリーミングビデオアプリケーション、仮想現実アプリケーション、拡張現実アプリケーション、ゲームアプリケーション、コンピュータビジョンアプリケーション、ビデオ会議アプリケーション、ジェスチャー認識アプリケーション、および音声認識アプリケーションのうちの1つまたは複数に関連するプロセスを含むかどうかを判断するステップを含み得る。
【0007】
さらなる態様では、ハイブリッドメモリの特性と1つまたは複数のプロセスの特性とに基づいて物理アドレスを割り当てるステップは、1つまたは複数のプロセスがディマンディングプロセスを含むと判断されたとき、ディマンディングプロセスに関連するアプリケーションプログラムにハイブリッドメモリの高速部分を割り当てるステップと、別のプロセスに関連するアプリケーションプログラムにハイブリッドメモリの低速部分を割り当てるステップとを含み得る。さらなる態様では、ハイブリッドメモリの特性と1つまたは複数のプロセスの特性とに基づいて物理アドレスを割り当てるステップは、1つまたは複数のプロセスがディマンディングプロセスを含むと判断されたとき、ディマンディングプロセスに関連するハードウェアアクセラレータにハイブリッドメモリの高速部分を割り当てるステップと、別のプロセスに関連するハードウェアアクセラレータにハイブリッドメモリの低速部分を割り当てるステップとを含み得る。
【0008】
さらなる態様では、本方法は、ディマンディングプロセスについてメモリ速度要件を判断するステップを含み得、ハイブリッドメモリの特性と1つまたは複数のプロセスの特性とに基づいて物理アドレスを割り当てるステップは、ディマンディングプロセスのメモリ速度要件が高いと判断したことに応答して、ディマンディングプロセスに関連するアプリケーションプログラムにハイブリッドメモリの高速部分を割り当てるステップと、別のプロセスに関連するアプリケーションプログラムにハイブリッドメモリの低速部分を割り当てるステップとを含み得る。
【0009】
さらなる態様では、本方法は、ディマンディングプロセスについてメモリ速度要件を判断するステップを含み得、ハイブリッドメモリの特性と1つまたは複数のプロセスの特性とに基づいて物理アドレスを割り当てるステップは、ディマンディングプロセスに関連するハードウェアアクセラレータにハイブリッドメモリの高速部分を割り当てるステップと、1つまたは複数の他のプロセスに関連する1つまたは複数のハードウェアアクセラレータにハイブリッドメモリの低速部分を割り当てるステップとを含み得る。
【0010】
さらなる態様では、本方法は、ディマンディングプロセスがエネルギー効率的なメモリを割り当てられ得るかどうかを判断するステップを含み得、ハイブリッドメモリの特性と1つまたは複数のプロセスの特性とに基づいて物理アドレスを割り当てるステップは、ディマンディングプロセスがエネルギー効率的なメモリを割り当てられ得ると判断したことに応答して、ディマンディングプロセスに関連するアプリケーションプログラムにハイブリッドメモリのエネルギー効率的な部分を割り当てるステップと、ディマンディングプロセスがエネルギー効率的なメモリを割り当てられ得ないと判断したことに応答して、ディマンディングプロセスに関連するアプリケーションプログラムにハイブリッドメモリのあまりエネルギー効率的でない部分を割り当てるステップとを含み得る。
【0011】
さらなる態様では、本方法は、コンピューティングシステムがより低いパフォーマンス状態に入りつつあり得るときを判断するステップを含み得、ハイブリッドメモリの特性と1つまたは複数のプロセスの特性とに基づいて物理アドレスを割り当てるステップは、コンピューティングシステムがより低いパフォーマンス状態に入りつつあり得ると判断したことに応答して、コンピューティングシステム上で動作しているソフトウェアアプリケーションにハイブリッドメモリのエネルギー効率的な部分を割り当てるステップを含み得る。
【0012】
さらなる態様では、本方法は、コンピューティングシステムがより低いパフォーマンス状態から出つつあり得るときを判断するステップを含み得、ハイブリッドメモリの特性と1つまたは複数のプロセスの特性とに基づいて物理アドレスを割り当てるステップは、メモリを要求するアプリケーションがエネルギー効率的なメモリを割り当てられ得ないことと、コンピューティングシステムがより低いパフォーマンス状態から出つつあり得ることとを判断したことに応答して、コンピューティングシステム上で動作しているソフトウェアアプリケーションにハイブリッドメモリのあまりエネルギー効率的でない部分を再割り当てするステップを含み得る。
【0013】
さらなる態様では、モニタエージェントにおいて中間物理アドレスを物理アドレスに変換するステップは、ハイパーバイザにおいて中間物理アドレスを物理アドレスに変換するステップを含み得る。さらなる態様では、モニタエージェントにおいて中間物理アドレスを物理アドレスに変換するステップは、オペレーティングシステムの外部のモニタソフトウェアにおいて中間物理アドレスを物理アドレスに変換するステップを含み得る。さらなる態様では、モニタエージェントにおいて中間物理アドレスを物理アドレスに変換するステップは、ハードウェアレイヤ構成要素において中間物理アドレスを物理アドレスに変換するステップを含み得る。さらなる態様では、モニタエージェントにおいて中間物理アドレスを物理アドレスに変換するステップは、デバイスドライバの一部として動作しているソフトウェアモニタにおいて中間物理アドレスを物理アドレスに変換するステップを含み得る。
【0014】
さらなる態様は、上記で説明した方法に対応する様々な動作を実行するためのプロセッサ実行可能命令で構成されたプロセッサを有するコンピューティングデバイスを含み得る。
【0015】
さらなる態様は、上記で説明した方法に対応する様々な動作を実行するように構成されたハードウェアレイヤ構成要素を有するコンピューティングデバイスを含み得る。
【0016】
さらなる態様は、上記で説明した方法動作に対応する機能を実行するための様々な手段を有するコンピューティングデバイスを含み得る。
【0017】
さらなる態様は、上記で説明した方法動作に対応する様々な動作をプロセッサに実行させるように構成されたプロセッサ実行可能命令を記憶した非一時的プロセッサ可読記憶媒体を含み得る。
【0018】
本明細書に組み込まれ、本明細書の一部をなす添付の図面は、本発明の例示的な実施形態を示し、上記の概略的な説明および下記の詳細な説明とともに、本発明の特徴を説明するのに役立つ。
【図面の簡単な説明】
【0019】
【
図1】様々な態様を実装するのに好適なコンピューティングデバイスのハードウェア構成要素を示すシステムブロック図である。
【
図2】様々な態様を実装するのに好適なコンピューティングシステム中の論理構成要素およびインターフェースを示す階層化コンピュータアーキテクチャ図である。
【
図3】様々な態様を実装するのに好適な仮想マシン中の論理構成要素を示す階層化コンピュータアーキテクチャ図である。
【
図4】様々な態様を実装するのに好適な仮想マシン中の論理構成要素を示す階層化コンピュータアーキテクチャ図である。
【
図5】システム仮想マシンを実装するコンピューティングデバイス上で2つの段においてメモリを割り振ることに関連する論理構成要素およびデータフローを示す構成要素フロー図である。
【
図6A】ハイブリッドメモリの異なる部分の特性を考慮する方法で2つの段においてメモリを割り振るための態様方法を示すプロセスフロー図である。
【
図6B】アプリケーションプログラムのメモリ要件とハイブリッドメモリの異なる部分のメモリアクセス速度とに基づいて物理アドレスを割り振るための態様方法を示すプロセスフロー図である。
【
図6C】アプリケーションプログラムのメモリ要件とハイブリッドメモリの異なる部分のエネルギー消費特性とに基づいて物理アドレスを割り振るための態様方法を示すプロセスフロー図である。
【
図7】一態様による、システム仮想マシンを実装するコンピューティングデバイス上で2つの段においてメモリを割り振ることに関連するメモリアーキテクチャおよびメッセージフロー図である。
【
図8A】ハイブリッドメモリの異なる部分の間でメモリを再割り振りする態様方法を示すプロセスフロー図である。
【
図8B】ハイブリッドメモリの異なる部分の間でメモリを再構成することに関連する変換を示すメモリアドレス図である。
【
図9】様々な態様を実装するのに好適なモバイルデバイスを示す構成要素ブロック図である。
【
図10】様々な態様を実装するのに好適な別のモバイルデバイスを示す構成要素ブロック図である。
【発明を実施するための形態】
【0020】
様々な態様について添付の図面を参照しながら詳細に説明する。可能な場合はいつでも、同じまたは同様の部分を指すために図面全体にわたって同じ参照番号を使用する。特定の例および実装形態になされる言及は、説明のためであり、本発明の範囲または特許請求の範囲を限定するものではない。
【0021】
「例示的」という単語は、本明細書では、「例、事例、または例示の働きをすること」を意味するために使用する。「例示的」として本明細書で説明するいかなる実装形態も、必ずしも他の実装形態よりも好ましいまたは有利であると解釈されるべきではない。
【0022】
「モバイルデバイス」および「コンピューティングデバイス」という用語は、本明細書では、セルラー電話、スマートフォン、パーソナルまたはモバイルマルチメディアプレーヤ、個人情報端末(PDA)、ラップトップコンピュータ、タブレットコンピュータ、スマートブック、パームトップコンピュータ、ワイヤレス電子メール受信機、マルチメディアインターネット対応セルラー電話、ワイヤレスゲームコントローラ、および、プログラマブルプロセッサとメモリとを含み、電力節約方法が有益であるようなバッテリー電力で動作する同様のパーソナル電子デバイスのうちのいずれか1つまたはすべてを指すために互換的に使用する。様々な態様は、限られた処理能力およびバッテリー容量を有する、セルラー電話などのモバイルデバイスにおいて特に有用であるが、態様は、概して、プロセッサパフォーマンスの改善およびエネルギー消費の低減から恩恵を受け得る任意のコンピューティングデバイスにおいて有用である。
【0023】
「モニタエージェント」という用語は、本明細書では、ハードウェアモニタ、チップ上に作製された専用ハードウェア、ハイパーバイザ、仮想マシンモニタ、高レベルオペレーションシステム(HLOS)の外部で動作しているモニタソフトウェア、HLOSの外部にあり得るデバイスドライバの一部として動作しているソフトウェアモニタ、それのメモリ管理システム、および/またはそれのアロケータ機能のうちのいずれか1つまたはすべてを含む、仮想化技術をサポートし、および/またはコンピューティングリソースの抽象化(または仮想化)を可能にする任意のハードウェア構成要素またはソフトウェアを指すために総称的に使用する。
【0024】
「ハードウェアアクセラレータ」という用語は、本明細書では、汎用中央処理ユニット(CPU)の、あるいは伝統的にまたは歴史的にCPUによって実行されてきた、1つまたは複数の特殊な機能を実行するように構成された任意のハードウェア構成要素を指すために総称的に使用する。ハードウェアアクセラレータの例としては、グラフィックス処理ユニット(GPU)、グラフィックスアクセラレータ(たとえば、ビットブロック転送ユニット、ビデオまたはグラフィックスカードなど)、浮動小数点アクセラレータ(たとえば、数学コプロセッサなど)、正規表現アクセラレータ、デジタル信号プロセッサ(DSP)、モデムプロセッサ、ベクトルコプロセッサ、データコントローラ、メモリコントローラ、システムコントローラ、タイマー、およびCPUまたはコンピューティングデバイス上で動作しているクライアントソフトウェアアプリケーションをサポートするために使用される他の同様のハードウェア構成要素がある。
【0025】
様々な態様はまた、コンピューティングデバイス上で動作している任意のディマンディング、プロセス集約的、データ集約的、あるいは電力集約的ソフトウェアアプリケーションまたはプロセス(総称して「ディマンディングプロセス」)をサポートすることにおいて有用であり得る。ディマンディングプロセスの例としては、ビデオプレーヤアプリケーション、ストリーミングビデオアプリケーション、マルチメディアアプリケーション、仮想現実および拡張現実アプリケーション、ゲームアプリケーション、コンピュータビジョンアプリケーション、ビデオ会議アプリケーション、ジェスチャー認識アプリケーション、音声認識アプリケーションなど、ビデオ出力を生成し、したがって、メモリ内外の大量のビデオデータを処理しなければならないソフトウェアアプリケーションがある。ディマンディングプロセスは、専用ハードウェアがなく、したがって、中央処理ユニット(CPU)において処理が遂行される、任意のプロセッサ集約的および/またはデータ集約的プロセスをも含み得る。ディマンディングプロセスは、ハードウェアアクセラレータなどの周辺デバイスに処理を要求する任意のプロセスをさらに含み得る。
【0026】
現代のモバイルコンピューティングデバイスは、複数のバラバラのメモリ部分および/または異なるタイプのメモリを含み得る。これらの異なるメモリタイプ/部分の各々は、書込み速度(たとえば、データをメモリに書き込むために必要な時間)、レイテンシ、アクセス時間(たとえば、読取りアクセス時間)、セキュリティ、信頼性、電力消費などに関係する異なるパフォーマンス特性を有し得る。そのような特性は、実行速度および電力消費に関してモバイルデバイスパフォーマンスに著しく影響を及ぼす可能性がある。異種メモリシステム、および/または異なるパフォーマンス特性をもつ複数の部分または構成要素を有するメモリシステムを本明細書では「ハイブリッドメモリ」と呼ぶ。
【0027】
メモリインターリーブは、処理ユニット(たとえば、モバイルデバイスCPU)がメモリの複数のチャンクに同時にアクセスすることを可能にすることによってメモリ帯域幅を増加させる高度メモリ編成技法である。メモリインターリーブ方式は、メモリの各ブロックが異なる制御線またはチャネルを介してアクセスされ得るように、システムメモリを複数のブロックに分割し得る。各制御線/チャネルは、他の制御線/チャネルと同時にデータを転送し得る。したがって、メモリインターリーブ方式を実装するモバイルコンピューティングデバイスの処理ユニットは、第1のチャネル上でのメモリの第1のブロックへの第1の読取りまたは書込み動作と、第2のチャネル上でのメモリの別のブロックへの第2の読取りまたは書込み動作とを同時に発行し得る。処理ユニットは、第2の動作を実行する前に第1の動作の完了を待つ必要がないので、処理ユニットは、非インターリーブメモリよりも高速にインターリーブメモリにアクセスし得る。
【0028】
ハイブリッドメモリは、インターリーブメモリと非インターリーブメモリの両方を含み得る。一態様では、インターリーブメモリ部分(part/portion)は高速メモリ部分であり得、非インターリーブメモリ部分は低速メモリ部分であり得る。一態様では、インターリーブメモリ部分は高性能メモリ部分であり得る。一態様では、非インターリーブメモリ部分はエネルギー効率的なメモリ部分であり得る。
【0029】
ハイブリッドメモリおよび/またはメモリ部分はまた、相変化メモリ(PCM)、ダイナミックランダムアクセスメモリ(DRAM)、スタティックランダムアクセスメモリ(SRAM)、不揮発性ランダムアクセスメモリ(NVRAM)、擬似スタティックランダムアクセスメモリ(PSRAM)、ダブルデータレート同期ダイナミックランダムアクセスメモリ(DDR SDRAM)、ならびに当技術分野で知られている他のランダムアクセスメモリ(RAM)および読取り専用メモリ(ROM)技術を含む、任意の数の異なるタイプのメモリ技術を含み得る。一態様では、ハイブリッドメモリはPCMメモリ部分とDRAMメモリ部分とを含み得る。一態様では、PCMメモリ部分は高レイテンシおよび/または低電力メモリ部分であり得る。一態様では、DRAMメモリ部分は低レイテンシおよび/または高電力メモリ部分であり得る。
【0030】
近年、モバイルコンピューティングデバイスアーキテクチャは、複雑さが増しており、今や複数のプロセッサとハイブリッドメモリとを含み得る。複雑さのこの増加に伴い、コンピューティングデバイスパフォーマンスと電力消費とを最適化するための新しいメモリ管理ソリューションが必要とされる。たとえば、既存のメモリ管理システムは、ハイブリッドメモリ中の異なる要素にデータを割り振るときに、ハイブリッドメモリの様々なメモリ部分の固有の特性を効率的に考慮することができない。したがって、既存のメモリ管理システムは、コンピューティングデバイスのパフォーマンスを改善し、および/またはデバイスの電力消費を低減するために、ハイブリッドメモリ特性を活用することが可能ではない。
【0031】
様々な態様は、オペレーティングシステムがハイブリッドメモリを統合された方法で使用することを可能にして、メモリアクセス時間とプロセッサパフォーマンスとを改善し、および/またはコンピューティングデバイスよって消費される電力量を低減する、改善されたコンピューティングデバイスメモリ管理システムを提供する。様々な態様は、オペレーティングシステムが各メモリアクセスにおいて行われている動作の詳細を知る必要なしに、オペレーティングシステムがバラバラのハイブリッドメモリを統合された方法で使用することを可能にする。特に、様々な態様は、データ負荷が、所与のハイブリッドメモリ構成のために動的に分散され、最適化されるように、アドレス変換の第2の段が、メモリ割振りを構成するためにハードウェアレイヤまたはハイパーバイザレイヤにおいて実行される、2段アドレス変換プロセスを使用し得る。様々な態様は、既存のオペレーティングシステム、周辺機器(たとえば、ハードウェアアクセラレータなど)、またはアプリケーションプログラムへの変更が必要ないように、コンピューティングデバイスのハイパーバイザレイヤおよび/またはチップレイヤ内に実装され得る。
【0032】
様々な態様は、その一例が
図1に示されている、多種多様な単一およびマルチプロセッサコンピュータアーキテクチャ上に実装され得る。コンピューティングデバイス100は、図示されたデジタル信号プロセッサ(DSP)102、モデムプロセッサ104、グラフィックスプロセッサ106、およびアプリケーションプロセッサ108など、いくつかの異種プロセッサを含み得る。コンピューティングデバイス100は、プロセッサ102〜108のうちの1つまたは複数に接続された1つまたは複数のベクトルコプロセッサ110をも含み得る。各プロセッサ102〜110は1つまたは複数のコアを含み得、各プロセッサ/コアは他のプロセッサ/コアとは無関係に動作を実行し得る。各プロセッサ102〜110はメモリ(図示せず)および/またはメモリ管理システムコントローラをも含み得る。一態様では、コンピューティングデバイス100構成要素は、単一の基板上にあり、および/またはシステムオンチップ(SOC)125として互いに近接して結合され得る。
【0033】
コンピューティングデバイス100は、センサーデータ、アナログデジタル変換、ワイヤレスデータ送信を管理し、ゲームおよび映画用の符号化オーディオ信号の処理など、他の特殊な動作を実行するためのアナログ回路およびカスタム回路114を含み得る。コンピューティングデバイス100は、電圧調整器、発振器、位相ロックループ、周辺ブリッジ、データコントローラ、メモリコントローラ、システムコントローラ、アクセスポート、タイマー、およびプロセッサと、メモリと、コンピューティングデバイス上で動作しているクライアントとをサポートするために使用される他の同様の構成要素など、システム構成要素およびリソース116をさらに含み得る。システム構成要素/リソース116の各々はメモリ(図示せず)および/またはメモリ管理システムコントローラをさらに含み得る。
【0034】
様々な態様では、アプリケーションプロセッサ108は、中央処理ユニット(CPU)、CPUの構成要素、またはCPUに結合された処理ユニットであり得る。一態様では、CPUは、プロセッサ102〜110、システム構成要素/リソース116および/または周辺機器の様々なメモリとの間で情報の読取りおよび書込みを行うように構成され得、これは、それぞれのプロセッサ102〜110、リソース116および/または周辺機器のメモリ管理システムコントローラを介して達成され得る。
【0035】
コンピューティングデバイス100は、クロック118および電圧調整器120など、構成要素およびリソース間の通信のための入出力モジュール(図示せず)をさらに含み得る。プロセッサ102〜108は、相互接続/バスモジュール122を介して、1つまたは複数のメモリ要素112、リソース116、カスタム回路114、および様々な他のシステム構成要素に相互接続され得る。
【0036】
上述のように、コンピューティングデバイス100は、プロセッサ102〜108のうちの1つまたは複数に接続された1つまたは複数のベクトルコプロセッサ110を含み得る。そのようなベクトルコプロセッサ110は、マルチメディアおよびビデオストリーミングアプリケーションなど、高速および並列実行を必要とするアプリケーションを処理するために特に有用であり得る。一態様では、ベクトルコプロセッサ110は、独立したハードウェアレジスタ、メモリ、および/または実行ハードウェアを含む単一命令複数データ(SIMD: single instruction multiple data)命令セットアーキテクチャ(ISA)を実装し得る。SIMDベクトルコプロセッサは、コンピューティングデバイス100のメインプロセッサ(たとえば、アプリケーションプロセッサ108、CPUなど)の一部であるか、またはそれに近接して結合され得る。
【0037】
図2に、様々な態様を実装するのに好適な典型的なコンピュータシステム中の論理構成要素およびインターフェースを示す、プロセッサの階層化アーキテクチャを示す。図示されたコンピュータシステムアーキテクチャ200はハードウェア構成要素222とソフトウェア構成要素220の両方を含む。ソフトウェア構成要素220は、オペレーティングシステム202と、ライブラリモジュール204と、1つまたは複数のアプリケーションプログラム(A0〜An)206とを含み得る。ハードウェア構成要素222は、周辺機器208(たとえば、ハードウェアアクセラレータ、入出力デバイスなど)と、中央処理ユニット(CPU)210と、中央処理ユニットメモリ管理ユニット(CPU MMU)216と、1つまたは複数のシステムメモリ管理ユニット(本明細書では「システムMMU」または「SMMU」)212と、1つまたは複数のメモリ214とを含み得る。
【0038】
モバイルコンピューティングデバイスのために書かれたアプリケーションソフトウェアは、一般に「アプリケーション」、「アプリ」、またはアプリケーションプログラム206と呼ばれるものである、実行可能コードにコンパイルされ得る。各アプリケーションプログラム206は、単一のプロセスまたはスレッドであり得るか、あるいは複数のプロセスまたはスレッドを含み得る。
【0039】
アプリケーションプログラム206は、アプリケーションプログラムインターフェース(API)を介してライブラリモジュール204に高水準言語(HLL)ライブラリコールを発行し得る。ライブラリモジュール204は、アプリケーションバイナリインターフェース(ABI)を介してオペレーティングシステム202上で(たとえば、オペレーティングシステムコールを介して)サービスを起動し得る。オペレーティングシステム202は、ハードウェア222によって実装される特定の演算コード(オペコード)およびネイティブコマンドのリストである固有の命令セットアーキテクチャ(ISA)を使用してハードウェア構成要素と通信し得る。このようにして、ISAは、オペレーティングシステム202から見たハードウェア222を定義する。
【0040】
オペレーティングシステム202は、複数のアプリケーションプログラム(A0〜An)206にわたって物理メモリを区分することを含み得る、アプリケーションプログラム206の間で様々なメモリ214の割振りおよび使用を協調させることおよび制御することを担当し得る。一態様では、オペレーティングシステム202は、様々なアプリケーションプログラム(A0〜An)206によるシステムメモリの割振りおよび使用を管理するための1つまたは複数のメモリ管理システム(たとえば、仮想メモリマネージャなど)を含み得る。メモリ管理システムは、あるプロセスによって使用されるメモリが、別のプロセスによってすでに使用中であるメモリを干渉しないことを保証するように機能し得る。
【0041】
一態様では、オペレーティングシステム202は、オペレーティングシステム202が特定の物理アドレスを別のアドレス(すなわち、仮想アドレス)のように見せることを可能にする「仮想アドレス指定」動作を実行するように構成された仮想メモリマネージャ(OS VMM)を含み得る。仮想アドレス指定動作は、アプリケーションプログラム(A0〜An)206に仮想メモリアドレスを割り振ることを含み得る。オペレーティングシステム202内に仮想メモリマネージャを含めることは、複数のプロセスまたはアプリケーションプログラム(A0〜An)206の間でのシステムメモリの協調および制御を簡略化し得る。
【0042】
上記で説明したソフトウェアベースのメモリ管理システム(たとえば、OS VMMなど)に加えて、システムは、
図2に示された中央処理ユニット(CPU)メモリ管理ユニット(MMU)216およびシステムMMU212など、1つまたは複数のハードウェアベースのメモリ管理システムを含み得る。CPU MMU216およびシステムMMU212は、物理アドレスへの仮想アドレスの変換、キャッシュ制御、バスアービトレーション、およびメモリ保護など、様々なメモリ関係の動作を実行することを担当する1つまたは複数のハードウェア構成要素をそれぞれ含み得る。一態様では、CPU MMU216は、メインCPU210にアドレス変換サービスおよび保護機能を与えることを担当し得、システムMMU212は、他のハードウェア構成要素(たとえば、デジタル信号プロセッサ、モデムプロセッサ、グラフィックスプロセッサなど)にアドレス変換サービスおよび保護機能を与えることを担当し得る。
【0043】
様々な態様では、メモリ管理システム(たとえば、システムMMU212、CPU MMU216など)のうちの1つまたは複数は、メモリアドレス変換(たとえば、仮想アドレスを物理アドレスに変換することなど)のために使用され得るキャッシュメモリであるトランスレーションルックアサイドバッファ(TLB: translation look-aside buffer)を含み得る。一態様では、トランスレーションルックアサイドバッファ(TLB)は、記憶された情報がキー値フォーマット(たとえば、ハッシュテーブル)に編成されるハードウェア連想配列メモリ(hardware associative array memory)であり得る連想メモリ(CAM: content-addressable memory)であり得る。キーは仮想アドレスであり得、値は物理アドレスであり得る。様々な態様では、TLBは、ハードウェア管理されたTLB、ソフトウェア管理されたTLB、またはそれらの任意の組合せであり得る。ハードウェア管理されたTLBの場合、TLBエントリのフォーマットは、ソフトウェアに可視でなくてもよく、したがって、CPUのタイプごとに異なり得る。
【0044】
概して、メモリアドレス変換プロセスの一部として、メモリ管理システム(たとえば、OS VMM、システムMMU212、CPU MMU216など)は、TLBにキーとして仮想アドレスを送ることによって、TLBに物理アドレスを要求するためにCAM探索を実行し得る。仮想アドレスキーがTLB中の対応する物理アドレス値を有する(すなわち、TLB「ヒット」が発生した)場合、CAM探索は、対応する物理アドレスを取り出し、戻し得る。要求されたアドレスがTLB中にない(すなわち、TLB「ミス」が発生した)場合、メモリアドレス変換プロセスは、複数のメモリロケーションのコンテンツを読み取り、物理アドレスを計算することによって、ページウォーク(たとえば、ソフトウェアページウォーク、ハードウェアページウォークなど)を実行し得る。物理アドレスがページウォークによって判断された後、仮想アドレスから物理アドレスへのマッピングがTLBに記憶され得る。
【0045】
ソフトウェア管理されたTLBを含む態様では、TLBミスは、オペレーティングシステムが、ページテーブルをウォークし、ソフトウェアで変換を実行することを引き起こし得る。ハードウェア管理されたTLBを含む態様では、メモリ管理システムは、指定された仮想アドレスキーについて有効なページテーブルエントリが存在するかどうかを判断するためにハードウェアテーブルウォークを実行し得る。
【0046】
様々な態様では、メモリ214は、複数のバラバラの部分を有するハイブリッドメモリであり得、その各々は、異なるパフォーマンス、速度、レイテンシ、アクセス時間、セキュリティ、信頼性、および/または電力消費特性を有し得る。ハイブリッドメモリにおける複数のタイプのメモリの間のパフォーマンスの差により、特定のタイプのアプリケーションデータ(たとえば、ビデオデータ対テキストデータ)を保持するために適切なメモリ部分を選択することは著しいパフォーマンス利益を与えることができる。同様に、異なるメモリの電力消費特性の差により、アプリケーションプログラム(たとえば、マルチメディア対テキスト編集など)および/またはデバイス状態(たとえば、スリープ、低電力モード、高パフォーマンスモードなど)に基づいて適切なメモリを選択することはコンピューティングデバイスの電力消費特性を著しく改善し得る。電力消費特性を改善することは、スマートフォンおよびタブレットコンピュータなど、モバイルデバイスにとって特に重要である。しかしながら、アプリケーションプログラムは、概して、そのようなアプリケーションが、一般に、広範囲にわたるデバイスおよび/またはオペレーティングシステム上で動作するように書かれるので、メモリ構造に対するインサイトを有せず、したがって、ハイブリッドメモリのそのようなパフォーマンス特性を利用することができない。
【0047】
現在のオペレーティングシステムは、メモリのパフォーマンスまたは電力コストがそれらのメモリ割振り実装の一部として割り振られるものと見なさず、ハイブリッドメモリを効率的に管理することができない。したがって、オペレーティングシステムは、様々なタイプのアプリケーションがアプリケーションのためにハイブリッドメモリのパフォーマンス特性を活用することを可能にしない。各タイプのメモリにコストを関連付け、ポリシーのセットに基づいてメモリを選択する、非ユニファイドメモリアクセス(NUMA)のようなソフトウェア技法があるが、モバイルデバイス(たとえば、スマートフォン)上では、現在の種類のOSカーネルはハイブリッドメモリ構成のための特殊動作を可能にしない。さらに、既存のソリューションは、静的コストポリシーを単に実装し、固有のハイブリッドメモリのパフォーマンス特性をほとんど通知されず、静的ポリシーへの変更は、概して、オペレーティングシステムが再コンパイル、リブート、または再初期化されることを必要とする。これらおよび他の理由で、既存のメモリ管理ソリューションは、パフォーマンスおよび/または電力効率に関して様々なタイプのアプリケーションについてモバイルコンピューティングデバイスパフォーマンスを改善するために、ハイブリッドメモリの異なる部分の様々な特性を効率的に利用することができない。
【0048】
様々な態様は、オペレーティングシステムがバラバラのハイブリッドメモリを統合された方法で使用することを可能にするために仮想化技法を利用するメモリ管理システムを提供する。仮想化技術は、オペレーティングシステムとハードウェアとの間に制御プログラム(たとえば、仮想マシンモニタ「VMM」またはハイパーバイザ)を配置することによって達成され得るコンピューティングリソースの抽象化(または仮想化)を可能にする。仮想化技法は、通常、物理ハードウェアマシンのようにアプリケーションプログラムを実行するソフトウェアアプリケーションであり得る仮想マシン(VM)において実装される。仮想マシンは、アプリケーションプログラムと実行ハードウェアとの間にインターフェースを与えて、固有のISAに結合されたアプリケーションプログラムが、異なるISAを実装するハードウェア上で実行することを可能にする。
【0049】
図3および
図4に、仮想マシンを実装する典型的なコンピュータシステム中の論理構成要素を示す。仮想マシンは、システム仮想マシンおよびプロセス仮想マシンという2つの一般的なカテゴリに分類され得る。システム仮想マシンは、異なるプロセスまたはアプリケーション間で下位物理ハードウェアの共有を可能にする。一方、プロセス仮想マシンは単一のプロセスまたはアプリケーションをサポートする。
【0050】
図3は、プロセス仮想マシン310を実装するコンピューティングデバイス300の論理レイヤを示す階層化アーキテクチャ図である。コンピュータシステム300は、ハードウェア308と、アプリケーションプロセスモジュール302、仮想化モジュール304、およびオペレーティングシステム306を含むソフトウェア構成要素とを含み得る。
【0051】
図2を参照しながら上記で説明したように、ハードウェア構成要素はオペレーティングシステム202を通してしかアプリケーションプログラム206に可視でないので、ABIおよびAPIがアプリケーションプログラム206にとって利用可能なハードウェア機能を事実上定義する。仮想化ソフトウェアモジュール304は、アプリケーションプロセス302が、さもなければハードウェア構成要素と通信するのと同様の方法で(すなわち、システム/ライブラリコールを介して)仮想化ソフトウェアモジュール304と通信するように、ABI/APIレベルにおいて論理演算を実行し、ならびに/あるいはオペレーティングシステムコールまたはライブラリコールをエミュレートし得る。このようにして、アプリケーションプロセス302は、仮想化モジュール304とオペレーティングシステム306とハードウェア308との組合せを、
図3に示されたプロセス仮想マシン310などの単一のマシンと見なす。これは、アプリケーションソフトウェアが、アプリケーションが最終的に実行するコンピューティングデバイスの実際のアーキテクチャに関係する必要がないので、アプリケーション開発者の仕事を簡略化する。
【0052】
プロセス仮想マシン310は、単一のアプリケーションプロセス302をサポートするためにのみ存在し、したがって、プロセス302とともに作成され、プロセス302が実行を完了したときに終了される。仮想マシン310上で動作するプロセス302は「ゲスト」と呼ばれ、下位プラットフォームは「ホスト」と呼ばれる。プロセス仮想マシンを実装する仮想化ソフトウェア304は、一般にランタイムソフトウェア(または単に「ランタイム」)と呼ばれる。
【0053】
図4は、システム仮想マシン410を実装するコンピューティングデバイス400中の論理レイヤを示す階層化アーキテクチャ図である。コンピュータシステムは、ハードウェア構成要素(たとえば、実行ハードウェア、メモリ、I/Oデバイスなど)408と、アプリケーションプログラムモジュール402、オペレーティングシステム404、および仮想化モジュール406を含むソフトウェア構成要素とを含み得る。仮想化モジュール406の上で動作するソフトウェアは「ゲスト」ソフトウェアと呼ばれ、仮想化モジュールをサポートする下位プラットフォームは「ホスト」ハードウェアと呼ばれる。
【0054】
プロセス仮想マシンとは異なり、システム仮想マシン410は、複数のオペレーティングシステム(「ゲストオペレーティングシステム」と呼ばれる)が共存することができる完全な環境を与える。同様に、ホストハードウェアプラットフォームは、複数の分離したゲストオペレーティングシステム環境を同時にサポートするように構成され得る。並行して実行しているオペレーティングシステム間の分離はシステムにセキュリティレベルを追加する。たとえば、1つのゲストオペレーティングシステム上のセキュリティが侵害された場合、または1つのゲストオペレーティングシステムが障害を受けた場合、他のゲストシステム上で動作しているソフトウェアはその侵害/障害によって影響を及ぼされない。ホストハードウェアプラットフォームはまた、アプリケーションソフトウェアが、アプリケーションが最終的に実行するコンピューティングデバイスの実際のアーキテクチャに関係する必要がないので、アプリケーション開発者の仕事を簡略化する。
【0055】
仮想化ソフトウェアモジュール406は、ホストハードウェアとゲストソフトウェアとの間に論理的に位置し得る。仮想化ソフトウェアは、実際のハードウェア上で(ネイティブに)、またはオペレーティングシステムの上で(ホストされて)動作し得、一般に「ハイパーバイザ」または仮想マシンモニタ(VMM)と呼ばれる。ネイティブ構成では、仮想化ソフトウェアは、利用可能な最も高い特権モードで実際のハードウェア上で動作し、ゲストオペレーティングシステムは、ハードウェアリソースに通常アクセスするかまたはそれを操作するであろうすべてのゲストオペレーティングシステムのアクションを仮想化ソフトウェアがインターセプトし、エミュレートすることができるように、低減された特権を用いて動作する。ホストされた構成では、仮想化ソフトウェアは、既存のホストオペレーティングシステムの上で動作し、デバイスドライバおよび他の下位レベルサービスを与えるためにホストオペレーティングシステムに依拠し得る。いずれの場合も、ゲストオペレーティングシステムの各々(たとえば、オペレーティングシステム404)は、仮想化ソフトウェアモジュール406と物理ハードウェア408の組合せを単一の仮想マシン410と見なして、ゲストオペレーティングシステムがハードウェア408と通信するのと同様の方法で仮想化モジュール406と通信する。これは、各ゲストオペレーティングシステム(たとえば、オペレーティングシステム404)が、ハードウェア408中のプロセッサ、周辺機器、I/O、MMU、およびメモリへの排他的アクセスを有するという錯覚の下で動作することを可能にする。
【0056】
図2を参照しながら上記で説明したように、オペレーティングシステムは、複数のプロセスにわたって物理メモリを区分することを担当し得る。これは、メモリアドレススペース変換プロセスを介して達成され得る。メモリアドレススペース変換プロセスでは、オペレーティングシステムは、各アプリケーションプログラムに仮想アドレス(VA)を割り当て、次いで、プログラムの実行の前に仮想アドレス(VA)に基づいて物理メモリアドレス(PA)を割り振る。しかしながら、仮想マシンの上で動作しているゲストオペレーティングシステムを含むシステムでは、ゲストオペレーティングシステムによって割り振られるメモリアドレスは、真の物理アドレス(PA)ではなく、中間物理アドレス(IPA: intermediate physical address)である。そのようなシステムでは、物理メモリの実際の割振りは、概して、仮想アドレス(VA)と中間物理アドレス(IPA)と物理アドレス(PA)との間の関係を維持することが必要であり得るハイパーバイザによって実行される。
【0057】
大部分のプロセッサシステムは、メモリアドレス変換プロセスの単一の段のみをサポートし、ハイパーバイザが仮想アドレス(VA)と中間物理アドレス(IPA)と物理アドレス(PA)との間の関係を管理することを必要とする。これは、概して、ハイパーバイザが、ゲストオペレーティングシステムの変換テーブルの各々を解釈することによって導出され得るそれ自体の変換テーブル(シャドー変換テーブルと呼ばれる)を維持することによって達成される。そのようなシステム上で、ハイパーバイザは、ゲストオペレーティングシステムの変換テーブルへのすべての変更がシャドー構造に反映されること、ならびに保護を実施し、アクセスフォールトを適切な段にリダイレクトすることを保証しなければならない。これらの動作は、ハイパーバイザの複雑さを増加させ、ハイパーバイザを実行、維持、および/または管理することに著しいオーバーヘッドを追加する。モバイルデバイス上で、これらの追加された複雑さおよびオーバーヘッドはパフォーマンスに著しい影響を及ぼし得る。
【0058】
上記で説明した単一段プロセッサとは異なり、いくつかのプロセッサシステム(たとえば、ARM v7-A)はメモリ変換の両方の段にハードウェア支援を与える。たとえば、ARMプロセッサは、ゲストオペレーティングシステムが第1の段において仮想アドレス(VA)を中間物理アドレス(IPA)に変換することを可能にし、ハードウェアが第2の段において中間物理アドレス(IPA)を物理アドレス(PA)に変換することを可能にする、仮想化拡張を含み得る。そのような仮想化拡張は、ハイパーバイザの実行、維持、および/または管理に関連するオーバーヘッドを低減し、コンピューティングデバイスパフォーマンスを改善する。
【0059】
図5に、システム仮想マシンを実装するコンピューティングデバイス500上で2つの段においてメモリを割り振ることに関連する例示的な論理構成要素およびアドレス変換を示す。ゲストオペレーティングシステム510のメモリ管理システムは、アプリケーションプログラム/プロセス(A0、An)の各々に仮想アドレススペース502、504を割り当て得る。たとえば、仮想アドレススペース502、504は仮想メモリマネージャ(たとえば、ゲストOS VMM)によって割り当てられ得る。各アプリケーションプログラム/プロセス(A0、An)はそれ自体の仮想アドレススペース502、504を割り当てられ得、各仮想アドレススペース502、504は1つまたは複数の仮想アドレスVA0、VAnを含み得る。
【0060】
図5に示された例では、メモリアドレスは2つの段において変換される。第1の変換段512において、ゲストオペレーティングシステムの仮想メモリマネージャ(ゲストOS VMM)が、仮想アドレスVA0、VAnを中間物理アドレススペース506中の中間物理アドレスIPA0、IPAnにマッピングし得る。第2の変換段514において、ハイパーバイザおよび/または仮想化拡張が、中間物理アドレスIPA0、IPAnを物理アドレススペース508中の物理アドレスPA0、PAnにマッピングし得る。第1の変換段512は第2の変換段514とは無関係に実行され得、既存のシステムでは、第2段変換514を実行する構成要素は、メモリの特性に基づいて物理アドレスを割り振らない。
【0061】
上述のように、仮想化拡張は、(たとえば、VAをIPAに変換するための1つのベーステーブルと、IPAをPAに変換するための第2のベーステーブルとを介して)あらゆるメモリアドレスを2回変換することを可能にし得る。様々な実施形態は、これらの2段変換技法/特徴を使用して、オペレーティングシステムがハイブリッドまたはバラバラのメモリを統合された方法で使用することを可能にし得る。そうする際に、様々な実施形態は、オペレーティングシステムが、各メモリアクセスにおいて行われている動作の詳細を知る必要なしに、データをそれの必要に最も適するタイプのメモリに割り振ることによってメモリ使用量を最適化し得る。
【0062】
図6Aに、ハイブリッドメモリの様々なメモリ部分の固有の特性に基づいて2つの段においてメモリを割り振る態様方法600を示す。ブロック602において、アプリケーションプログラムが、ハイパーバイザ上で実行しているゲストオペレーティングシステムであり得るオペレーティングシステムにメモリスペースの割振りを要求する。ブロック604において、オペレーティングシステムは、要求に応答してアプリケーションプログラムに仮想メモリアドレスを割り振る。ブロック606において、ハードウェアプラットフォームにおいて下にある異なるメモリ構成に気づいていないことがあるオペレーティングシステムは、仮想メモリアドレス(VA)を中間物理アドレス(IPA)に変換することによってアドレス変換プロセスの第1の段を実行する。ブロック608において、チップまたは仮想化ソフトウェアは、アプリケーションプログラムおよび/またはハイブリッドメモリの様々な部分の異なる特性を考慮する方法で中間物理アドレス(IPA)を物理アドレス(PA)に変換することによってアドレス変換の第2の段を実行する。一態様では、ブロック608の一部として、チップまたは仮想化ソフトウェアは、所与のハイブリッドメモリ構成についてデータ負荷が分散され、最適化されるように、物理メモリページを構成し得る。
【0063】
図6Bに、アプリケーションプログラムのメモリ要件とハイブリッドメモリのアクセス速度特性とに基づいて物理アドレスを割り振る方法620を示す。ブロック622において、チップまたは仮想化ソフトウェアが、ハイブリッドメモリのより高速の部分を識別し、それらの位置を特定する。ブロック624において、チップまたは仮想化ソフトウェアは、ハイブリッドメモリのより低速の部分を識別し、それらの位置を特定する。ハイブリッドメモリ中のより高速およびより低速のメモリセグメントまたは部分を識別する動作は、初期構成セットアッププロセスの一部として、電源投入時に実行されるブートプロセスの一部として、またはアプリケーションのローディングの一部としてなど、任意の時間に遂行され得る。ブロック626において、チップまたは仮想化ソフトウェアはアプリケーションプログラムのメモリ要件を判断する。たとえば、チップまたは仮想化ソフトウェアは、アプリケーションプログラムが、ビデオストリーミング/処理、あるいはデータを与えるかまたは処理するためにシステムに高い負担をかける他の技術に関係し、したがって、より高速のメモリセグメントを使用することから恩恵を受けるかどうかを判断し得る。代替的に、チップまたは仮想化ソフトウェアは、アプリケーションプログラムが、時間敏感でなく、したがって、アプリケーションのパフォーマンスに影響を及ぼさずにより低速のメモリを割り振られ得る方法でデータを使用するかどうかを判断し得る。
【0064】
判断ブロック628において、チップまたは仮想化ソフトウェアは、アプリケーションプログラムが、ハイブリッドメモリのより高速の部分を割り当てられるための要件を満たす(たとえば、ビデオストリーミング/処理に関係するなど)かどうかを判断する。アプリケーションプログラムが、ハイブリッドメモリのより高速の部分を割り当てられるための要件を満たさないと判断された場合(すなわち、判断ブロック628=「No」)、ブロック630において、チップまたは仮想化ソフトウェアは、アプリケーションプログラムに関連する中間物理アドレス(IPA)を、ハイブリッドメモリの識別されたより低速の部分中の物理アドレス(PA)に変換する。アプリケーションプログラムが、ハイブリッドメモリのより高速の部分を割り当てられるための要件を満たすと判断された場合(すなわち、判断ブロック628=「Yes」)、ブロック632において、チップまたは仮想化ソフトウェアは、アプリケーションプログラムに関連する中間物理アドレス(IPA)を、ハイブリッドメモリの識別されたより高速の部分中の物理アドレス(PA)に変換する。
【0065】
様々な態様は、より高速のメモリにアクセスすることから恩恵を受ける、コンピューティングデバイス上で動作している任意のディマンディング、複雑な、または電力集約的アプリケーションをサポートすることにおいて有用であり得る。例としては、ビデオプレーヤアプリケーション、ストリーミングビデオアプリケーション、マルチメディアアプリケーション、仮想現実および拡張現実アプリケーション、ゲームアプリケーション、コンピュータビジョンアプリケーション、ビデオ会議アプリケーション、ジェスチャー認識アプリケーション、音声認識アプリケーションなど、ビデオ出力を生成し、したがって、メモリ内外の大量のビデオデータを処理しなければならないアプリケーションがある。様々な態様は、概して、専用ハードウェアがなく、したがって、中央処理ユニット(CPU)において処理が遂行される、任意のプロセス集約的および/またはデータ集約的処理のためにも有用であり得る。別の例として、様々な態様は、大量のデータを与えているかまたは使用しており、したがって、より高速のメモリセグメントへの優先的アクセスを有することから恩恵を受けることができる様々な周辺デバイスにメモリを割り振るために有用であり得る。
【0066】
図6Cに、アプリケーションプログラムのメモリ要件とハイブリッドメモリのエネルギー消費特性とに基づいて物理アドレスを割り振る方法640を示す。ブロック642において、チップまたは仮想化ソフトウェアが、ハイブリッドメモリのよりエネルギー効率的な部分を識別し、それらの位置を特定する。ブロック644において、チップまたは仮想化ソフトウェアは、ハイブリッドメモリのあまりエネルギー効率的でない部分を識別し、それらの位置を特定する。上記で説明した方法620と同様に、ハイブリッドメモリ中のよりエネルギー効率的なおよびあまりエネルギー効率的でないメモリセグメントまたは部分を識別する動作は、初期構成セットアッププロセスの一部として、電源投入時に実行されるブートプロセスの一部として、またはアプリケーションのローディングの一部としてなど、任意の時間に遂行され得る。ブロック646において、チップまたは仮想化ソフトウェアは、メモリのエネルギー消費特性に関係し得る方法でアプリケーションプログラムのメモリ要件を判断する。たとえば、チップまたは仮想化ソフトウェアは、アプリケーションプログラムが、書き込むかまたはアクセスするのにより高速であるが、より多くの電力を消費し得るハイブリッドメモリの他の部分の代わりに、電力効率的なメモリにデータが記憶された場合、影響を及ぼされない方法でデータを使用するかどうかを判断し得る。
【0067】
判断ブロック648において、チップまたは仮想化ソフトウェアは、アプリケーションプログラムがより効率的なメモリセグメントによるメモリ割振りに関してサポートされ得るのか、またはハイブリッドメモリのあまりエネルギー効率的でない部分を必要とする(たとえば、ビデオストリーミング/処理に関係するなど)のかを判断する。アプリケーションプログラムが、ハイブリッドメモリのよりエネルギー効率的な部分を割り当てられ得ると判断された場合(すなわち、判断ブロック648=「Yes」)、ブロック650において、チップまたは仮想化ソフトウェアは、アプリケーションプログラムに関連する中間物理アドレス(IPA)を、ハイブリッドメモリの識別されたよりエネルギー効率的な部分中の物理アドレス(PA)に変換する。アプリケーションプログラムが、よりエネルギー効率的なメモリを利用することができないか、またはハイブリッドメモリのあまりエネルギー効率的でない部分の割当てを必要とすると判断された場合(すなわち、判断ブロック648=「No」)、ブロック652において、チップまたは仮想化ソフトウェアは、アプリケーションプログラムに関連する中間物理アドレス(IPA)を、ハイブリッドメモリの識別されたあまりエネルギー効率的でない部分中の物理アドレス(PA)に変換する。
【0068】
様々な態様はまた、コンピューティングシステムが、非アクティビティ期間の後に実装され得るアイドルまたは低電力モードなど、低減された電力状態に入るときに電力を節約するのを可能にすることにおいて有用であり得る。コンピューティングシステム上で動作しているアプリケーションは、そのようなアイドルまたはより低い電力状態中に高パフォーマンスメモリを必要とする可能性が低いので、ユーザは、アプリケーションをサポートするためにより電力効率的だがより低速のメモリを使用することにより起こり得るパフォーマンス低減に気づかないであろう。したがって、コンピューティングシステムがより低いパフォーマンス状態(たとえば、アイドル、低電力またはスリープモード)に入りつつあることをチップまたは仮想化ソフトウェアが検出したか、あるいはオペレーティングシステムによって通知されたとき、チップまたは仮想化ソフトウェアは、すべてのアプリケーションプログラムが、ハイブリッドメモリのよりエネルギー効率的な部分を割り当てられ得ると判断し(すなわち、すべてのアプリケーションについて判断ブロック648=「Yes」)、方法640のブロック650において、チップまたは仮想化ソフトウェアは、すべてのアプリケーションプログラムに関連する中間物理アドレス(IPA)を、ハイブリッドメモリの識別されたよりエネルギー効率的な部分中の物理アドレス(PA)に変換する。逆に、コンピューティングシステムがパフォーマンス状態に戻りつつある(たとえば、アイドルまたは低電力モードから出つつある)ことをチップまたは仮想化ソフトウェアが検出したか、あるいはオペレーティングシステムによって通知されたとき、チップまたは仮想化ソフトウェアは、アクティブプログラムについてアプリケーションプログラムメモリ要件を判断するために方法640のブロック646に戻り、ブロック648において、パフォーマンスヒットを経験することなしにエネルギー効率的なメモリを使用することができないアプリケーションプログラムについて、中間物理アドレス(IPA)を、ハイブリッドメモリの識別されたあまりエネルギー効率的でない部分中の物理アドレス(PA)に変換するために、より低い電力状態に入るときに行われたメモリ割当てのいずれかが変更される必要があるかどうかを判断する。
【0069】
図7に、様々な態様による、ハイブリッドメモリの様々なメモリ部分の固有の特性に基づいて2段アドレス変換プロセスを実行するように構成された例示的なコンピューティングシステム700における例示的な論理構成要素および変換を示す。
図7に示された例では、コンピューティングシステム700は、より高速のメモリ部分とより低速のメモリ部分とを有する物理メモリ702を含む。コンピューティングシステム700のオペレーティングシステム(たとえば、ゲストオペレーティングシステム)は、比較的低い優先度、複雑さ、および/またはメモリ要件を有する第1のアプリケーションプログラム(A0)(たとえば、テキストエディタアプリケーション)に第1の仮想アドレス(VA0)を割り当て得る。オペレーティングシステムは、比較的高い優先度、複雑さ、および/またはメモリ要件を有する第2のアプリケーションプログラム(An)(たとえば、ビデオ処理アプリケーション)に第2の仮想アドレス(VAn)を割り当て得る。
【0070】
第1の変換段712において、オペレーティングシステムは仮想アドレスVA0、VAnを中間物理アドレスIPA0、IPAnに変換し得る。第2の変換段714において、仮想化ソフトウェアまたはチップは、アプリケーションプログラム(A0)がメモリのより低速のブロック704(またはよりエネルギー効率的なメモリ)を割り当てられ、アプリケーションプログラム(An)がメモリのより高速のブロック706を割り当てられるように、中間物理アドレスIPA0、IPAnを物理アドレスにインテリジェントに変換し得る。中間物理アドレスのインテリジェント変換は、チップまたは仮想化ソフトウェアにおいて実装され、かつインテリジェント様式でメモリを分配し、割り振り、および/または割り当てるように構成された、隔離認識(segregation-aware)第2段トランスレータを介して達成され得る。
【0071】
一態様では、中間物理アドレスのインテリジェント変換は、ハイブリッドメモリの現在のパフォーマンス/エネルギー消費特性に基づいて物理メモリを動的に割り振るために、アクセスパフォーマンス(たとえば、アクセス速度)モデルおよび/またはエネルギー消費モデルに基づいてチップまたは仮想化ソフトウェアによって実行され得る。
【0072】
パフォーマンスモデルおよび/またはエネルギー消費モデルは、各アプリケーションプログラムと、コード単位と、コア/プロセッサと、メモリ部分と、特定のコア/プロセッサおよび/またはメモリ部分についてそれぞれのアプリケーションプログラム/コード単位のためのメモリ読取り/書込み動作を実行するのに必要な時間/電力の量とを監視するための情報を記憶するデータ構造(たとえば、リスト、アレイ、テーブル、マップなど)を含み得る。エネルギー消費モデルは、各アプリケーションプログラムについて代替のより効率的なメモリまたはメモリ部分を識別するための情報をも記憶し得る。様々な態様では、エネルギー消費モデルは、仮想化ソフトウェア作成者、チップ設計者、アプリケーションプログラムの作成者、またはメモリ製造業者によって供給され得る。
【0073】
一態様では、エネルギー消費モデルは、機械学習プロシージャを使用して、動作しながら(すなわち、ランタイムで)仮想ソフトウェアまたはチップによって構築または調整され得る。そのような機械学習プロシージャは、コンピューティングデバイスが、メモリパフォーマンスデータを生成するために、書込みおよびアクセス時間、ならびに/あるいはデータを書き込み、維持し、アクセスするための電力要件を監視するために、オブジェクトコードを実行するとき、および/またはメモリにアクセスするときに実装され得る。そのようなメモリパフォーマンスデータから、機械学習プロシージャは、新しいパフォーマンスモデルおよび/またはエネルギー消費モデルを生成するか、あるいはデバイス/ハードウェア製造業者またはソフトウェアベンダーによって前に生成または供給されたパフォーマンスモデルおよび/またはエネルギー消費モデルを更新し得る。たとえば、仮想ソフトウェアは、機械学習技法を使用することによって前のメモリ読取り/書込み動作から収集された読取り/書込み時間および/または電力消費情報に基づいてエネルギー消費モデルを構築するように構成され得る。
【0074】
様々なフィードバックおよび機械学習技法が、メモリパフォーマンスモデルおよびエネルギー消費モデルを生成し、修正するために使用され得る。たとえば、測定された結果がモデル予測から逸脱するとき、最適化ルールが変更または調整され得る。別の例として、機械摂動およびテスト方法試験(machine perturb and test method experiment)が仮想ソフトウェアによって実行され得る。機械摂動およびテスト方法試験は、最適化ルールを変更することと、最適化ルールの変更の前後でメモリアクセスの測定された電力消費を比較することと、変更された最適化ルールが最良の結果を与える場合、その最適化ルールを使用するように選択することとを伴い得る。一態様では、様々な長さのメモリの電力パフォーマンスが、より良い最適化が行われることを可能にするパターンを認識するために互いに比較され得る。
【0075】
メモリパフォーマンスモデルおよびエネルギー消費モデルを生成および/または調整するためにフィードバックおよび学習機構を使用することはいくつかの利点を与える。たとえば、フィードバックおよび学習機構は、モデルが設計された後、コンピューティングシステムが、初期設計がなされた後に発生したハードウェアパフォーマンスの変化(たとえば、新しいメモリの追加、プロセッサの置換など)に適応することを可能にし得る。そのような変化は、同じベンダーからのメモリチップのロットごとに、メモリが2つ以上のベンダーから購入されたときに、新しいハードウェアがシステムに追加されたときに、およびシステムパフォーマンスの変化により経時的に発生し得る。したがって、フィードバックおよび学習機構は、様々な態様が、メモリアクセス速度および電力消費特性におけるロットごとおよびラインごとの変動をより良く相殺することを可能にし得る。
【0076】
さらなる態様では、チップまたは仮想化ソフトウェアは、ハイブリッドメモリの異なる部分の間でメモリを再構成または再割り振りするように構成され得る。この機能は、アプリケーションプログラムまたはオペレーティングシステムのいずれの知識または関与もなしに、速度および/または電力消費に関してさらなるアプリケーションパフォーマンス改善を可能にし得る。
【0077】
図8Aに、ハイブリッドメモリの異なる部分の間でメモリを再割り振りする態様方法800を示す。ブロック802において、コンピューティングデバイスのチップまたは仮想化ソフトウェアはアイドル状態にある。ブロック804において、チップまたは仮想化ソフトウェアは、たとえば、物理メモリへの読取り/書込みの要求に応答してアクティブになる。ブロック806において、チップまたは仮想化ソフトウェアは、ハイブリッドメモリの様々な部分を走査して、様々な特性を有する異なるメモリ部分を識別し、それらの位置を特定する。たとえば、チップまたは仮想化ソフトウェアは、メモリを走査して、より高速のメモリ部分、よりエネルギー効率的な部分、高いレイテンシを有する部分などを識別し得る。ブロック808において、チップまたは仮想化ソフトウェアは、より高速の部分(またはより効率的な部分など)、より高速の部分への参照、またはより高速の部分に記憶された情報が互いに極めて近接して位置するように、ハイブリッドメモリをデフラグする。ブロック810において、チップまたは仮想化ソフトウェアは2段アドレス変換プロセスの第2の段を実行する。
【0078】
図8Bに、ハイブリッドメモリの異なる部分の間でメモリを再構成または再割り振りするように構成されたコンピューティングシステム850における論理構成要素および変換を示す。上記で説明したように、チップまたは仮想化ソフトウェアにおいて実装される隔離認識第2段トランスレータは、インテリジェント様式でメモリを分配し、割り振り、および/または割り当てるように構成され得る。
図8Bは、隔離認識第2段トランスレータがアイドル状態852にある間、ハイブリッドメモリ856のより高速およびより低速の部分がメモリ856全体にわたって分配され得ることを示している。アクティブ状態854にあるとき、隔離認識第2段トランスレータは、より高速のメモリ部分が互いにより極めて近接するように、ハイブリッドメモリ858の異なる部分の間でメモリを再構成または再割り振りし得る。
【0079】
アドレス変換サービスを与えるように構成された1つまたは複数のメモリ管理ユニット(たとえば、システムMMUまたはSMMU)を含むコンピューティングシステム上で、様々な態様は、いずれかの周辺MMUインスタンスにマッピングされたメモリを追跡し、それらのメモリがリクレームの候補になることを防ぎ得る。
【0080】
様々な態様とともに使用するのに好適な典型的なモバイルデバイス900は、
図9に示されている構成要素を共有する。たとえば、例示的なモバイルデバイス900は、内部メモリ901とディスプレイ904とスピーカー964とに結合されたプロセッサ902を含み得る。さらに、モバイルデバイスは、プロセッサ902に結合された、電磁放射を送信および受信するためのアンテナ924を有し得る。いくつかの態様では、モバイルデバイス900は、システムオンチップを含み得る1つまたは複数の専用または汎用プロセッサ905、924を含み得る。モバイルデバイスは、一般に、ユーザ入力を受け取るためのキーパッドまたは小型キーボードおよびメニュー選択ボタンまたはロッカースイッチをも含む。
【0081】
図10に示されているラップトップコンピュータ1000など、コンピューティングデバイスの他の形態も、様々な態様を実装し、それらから恩恵を受け得る。ラップトップコンピュータ1000のようなコンピューティングデバイスは、一般に、内部メモリ1001とディスプレイ1009とに結合されたプロセッサ1002を含む。さらに、コンピューティングデバイスは、情報を送信および受信するための通信ポート1005を有し得る。コンピューティングデバイスは、ユーザ入力を受け取るためのキーボード1008および選択ボタン1007をも含み得る。
【0082】
様々な態様を実装するコンピューティングデバイスにおいて使用されるプロセッサ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によってアクセス可能なすべてのメモリを指す。
【0083】
上記の方法の説明およびプロセスフロー図は、単に説明のための例として提供したものであり、様々な態様のステップが提示された順序で実行されなければならないことを要求または暗示するものではない。当業者なら諒解するように、上記の態様におけるステップの順序は、どんな順序でも実行され得る。「その後」、「次いで」、「次に」などの単語は、ステップの順序を限定するものではなく、これらの単語は、単に、読者に方法の説明を案内するために使用される。さらに、たとえば、冠詞「a」、「an」または「the」を使用する単数形の請求項要素への言及は、その要素を単数形に限定するものと解釈すべきではない。
【0084】
本明細書で開示した態様に関して説明した様々な例示的な論理ブロック、モジュール、回路、およびアルゴリズムステップは、電子ハードウェア、コンピュータソフトウェア、またはその両方の組合せとして実装され得る。ハードウェアとソフトウェアのこの互換性を明確に示すために、様々な例示的な構成要素、ブロック、モジュール、回路、およびステップについて、上記では概してそれらの機能に関して説明した。そのような機能がハードウェアとして実装されるか、ソフトウェアとして実装されるかは、特定の適用例および全体的なシステムに課された設計制約に依存する。当業者は、説明した機能を特定の適用例ごとに様々な方法で実装し得るが、そのような実装の決定は、本発明の範囲からの逸脱を生じるものと解釈されるべきではない。
【0085】
本明細書で開示した態様に関して説明した様々な例示的な論理、論理ブロック、モジュール、および回路を実装するために使用されるハードウェアは、汎用プロセッサ、デジタル信号プロセッサ(DSP)、マルチメディアブロードキャスト受信機チップ内のDSP、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)または他のプログラマブル論理デバイス、個別ゲートまたはトランジスタ論理、個別ハードウェア構成要素、あるいは本明細書で説明した機能を実行するように設計されたそれらの任意の組合せで実装または実行され得る。汎用プロセッサはマイクロプロセッサであり得るが、代替として、プロセッサは、任意の従来のプロセッサ、コントローラ、マイクロコントローラ、または状態機械であり得る。プロセッサはまた、コンピューティングデバイスの組合せ、たとえば、DSPとマイクロプロセッサとの組合せ、複数のマイクロプロセッサ、DSPコアと連携する1つまたは複数のマイクロプロセッサ、あるいは任意の他のそのような構成として実装され得る。代替的に、いくつかのステップまたは方法は、所与の機能に固有の回路によって実行され得る。
【0086】
1つまたは複数の例示的な態様では、説明した機能は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せで実装され得る。ソフトウェアで実装される場合、機能は、1つまたは複数の命令またはコードとして非一時的コンピュータ可読媒体または非一時的プロセッサ可読媒体に記憶され得る。本明細書で開示した方法またはアルゴリズムのステップは、非一時的コンピュータ可読記憶媒体またはプロセッサ可読記憶媒体上に常駐し得る、プロセッサ実行可能ソフトウェアモジュールにおいて実施され得る。非一時的コンピュータ可読記憶媒体またはプロセッサ可読記憶媒体は、コンピュータまたはプロセッサによってアクセスされ得る任意の記憶媒体であり得る。限定ではなく例として、そのような非一時的コンピュータ可読媒体またはプロセッサ可読媒体は、RAM、ROM、EEPROM、フラッシュメモリ、CD-ROMまたは他の光ディスクストレージ、磁気ディスクストレージまたは他の磁気ストレージデバイス、あるいは命令またはデータ構造の形態で所望のプログラムコードを記憶するために使用され得、コンピュータによってアクセスされ得る、任意の他の媒体を含み得る。本明細書で使用するディスク(disk)およびディスク(disc)は、コンパクトディスク(disc)(CD)、レーザーディスク(disc)、光ディスク(disc)、デジタル多用途ディスク(disc)(DVD)、フロッピー(登録商標)ディスク(disk)、およびblu-rayディスク(disc)を含み、ディスク(disk)は、通常、データを磁気的に再生し、ディスク(disc)は、データをレーザーで光学的に再生する。上記の組合せも非一時的コンピュータ可読媒体およびプロセッサ可読媒体の範囲内に含まれる。さらに、方法またはアルゴリズムの動作は、コンピュータプログラム製品に組み込まれ得る、非一時的プロセッサ可読媒体および/またはコンピュータ可読媒体上のコードおよび/または命令の1つまたは任意の組合せ、あるいはそのセットとして常駐し得る。
【0087】
開示した実施形態の上記の説明は、当業者が本発明を作成または使用することができるようにするために提供したものである。これらの実施形態に対する様々な変更は当業者には容易に明らかであり、本明細書で定義した一般原理は、本発明の趣旨または範囲から逸脱することなく他の実施形態に適用され得る。したがって、本発明は、本明細書で示した実施形態に限定されるものではなく、以下の特許請求の範囲ならびに本明細書で開示する原理および新規の特徴に合致する最も広い範囲を与えられるべきである。
【符号の説明】
【0088】
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 ディスプレイ