(57)【特許請求の範囲】
【請求項１】
メモリを有するコンピューティングシステム上でメモリを管理する方法であって、
前記メモリのメモリパフォーマンスデータを収集するステップと、
前記収集されたメモリパフォーマンスデータを使用して前記メモリのエネルギー消費モデルとメモリパフォーマンスモデルとを生成するステップと、
前記エネルギー消費モデルと前記メモリパフォーマンスモデルとに基づいて、モニタエージェントにおいて中間物理アドレスを物理アドレスに変換するステップであって、前記モニタエージェントが、前記メモリの特性と前記コンピューティングシステムの1つまたは複数のプロセスの特性とに基づいて前記物理アドレスを割り当てる、変換するステップ
を含む、前記コンピューティングシステム上でメモリスペースを割り振るステップ
を含む、方法。
【請求項２】
前記コンピューティングシステム上でメモリスペースを割り振るステップが、ソフトウェアプロセスにメモリスペースを割り振るステップを含む、請求項1に記載の方法。
【請求項３】
モニタエージェントにおいて中間物理アドレスを物理アドレスに変換するステップが、ハイパーバイザにおいて前記中間物理アドレスを前記物理アドレスに変換するステップを含む、請求項1に記載の方法。
【請求項４】
モニタエージェントにおいて中間物理アドレスを物理アドレスに変換するステップが、前記コンピューティングシステムのオペレーティングシステムの外部のモニタソフトウェアにおいて前記中間物理アドレスを前記物理アドレスに変換するステップを含む、請求項1に記載の方法。
【請求項５】
モニタエージェントにおいて中間物理アドレスを物理アドレスに変換するステップが、ハードウェアレイヤ構成要素において前記中間物理アドレスを前記物理アドレスに変換するステップを含む、請求項1に記載の方法。
【請求項６】
モニタエージェントにおいて中間物理アドレスを物理アドレスに変換するステップが、デバイスドライバの一部として動作しているソフトウェアモニタにおいて前記中間物理アドレスを前記物理アドレスに変換するステップを含む、請求項1に記載の方法。
【請求項７】
前記コンピューティングシステム上でメモリスペースを割り振るステップが、
オペレーティングシステムにおいて仮想アドレスを前記中間物理アドレスに変換するステップ
をさらに含む、請求項1に記載の方法。
【請求項８】
前記メモリがハイブリッドメモリであり、前記メモリの特性と前記コンピューティングシステムの1つまたは複数のプロセスの特性とに基づいて前記物理アドレスを割り当てるステップが、前記ハイブリッドメモリの特性に基づいて前記物理アドレスを割り当てるステップを含む、請求項1に記載の方法。
【請求項９】
前記ハイブリッドメモリの特性と1つまたは複数のプロセスの前記特性とに基づいて前記物理アドレスを割り当てるステップが、
前記ハイブリッドメモリのパフォーマンス特性、
前記ハイブリッドメモリの電力消費特性、および
前記ハイブリッドメモリのレイテンシ特性
のうちの1つまたは複数に基づいて前記物理アドレスを割り当てるステップを含む、請求項8に記載の方法。
【請求項１０】
前記ハイブリッドメモリの特性と1つまたは複数のプロセスの特性とに基づいて前記物理アドレスを割り当てるステップが、前記1つまたは複数のプロセスのパフォーマンス特性に基づいて前記物理アドレスを割り当てるステップを含む、請求項8に記載の方法。
【請求項１１】
前記ハイブリッドメモリが2つ以上のタイプのメモリ技術を含み、
前記ハイブリッドメモリの特性と1つまたは複数のプロセスの特性とに基づいて前記物理アドレスを割り当てるステップが、前記ハイブリッドメモリに含まれる前記タイプのメモリ技術に基づいて前記物理アドレスを割り当てるステップを含む、請求項8に記載の方法。
【請求項１２】
前記コンピューティングシステムがより低いパフォーマンス状態に入りつつあるときを判断するステップをさらに含み、
前記ハイブリッドメモリの特性と1つまたは複数のプロセスの特性とに基づいて前記物理アドレスを割り当てるステップは、前記コンピューティングシステムがより低いパフォーマンス状態に入りつつあると判断したことに応答して、前記コンピューティングシステム上で動作しているソフトウェアアプリケーションに前記ハイブリッドメモリのエネルギー効率的な部分を割り当てるステップを含む、請求項8に記載の方法。
【請求項１３】
前記コンピューティングシステムが前記より低いパフォーマンス状態から出つつあるときを判断するステップをさらに含み、
前記ハイブリッドメモリの特性と1つまたは複数のプロセスの特性とに基づいて前記物理アドレスを割り当てるステップは、メモリを要求する前記ソフトウェアアプリケーションがエネルギー効率的なメモリを割り当てられ得ないことと、前記コンピューティングシステムが前記より低いパフォーマンス状態から出つつあることとを判断したことに応答して、前記ハイブリッドメモリのあまりエネルギー効率的でない部分を前記ソフトウェアアプリケーションに再割り当てするステップを含む、請求項12に記載の方法。
【請求項１４】
前記1つまたは複数のプロセスがディマンディングプロセスを含むかどうかを判断するステップをさらに含む、請求項8に記載の方法。
【請求項１５】
前記1つまたは複数のプロセスがディマンディングプロセスを含むかどうかを判断するステップは、前記1つまたは複数のプロセスが、
マルチメディアアプリケーション、
ビデオプレーヤアプリケーション、
ストリーミングビデオアプリケーション、
仮想現実アプリケーション、
拡張現実アプリケーション、
ゲームアプリケーション、
コンピュータビジョンアプリケーション、
ビデオ会議アプリケーション、
ジェスチャー認識アプリケーション、および
音声認識アプリケーション
のうちの1つまたは複数に関連するプロセスを含むかどうかを判断するステップを含む、請求項14に記載の方法。
【請求項１６】
前記ハイブリッドメモリの特性と1つまたは複数のプロセスの特性とに基づいて前記物理アドレスを割り当てるステップは、
前記1つまたは複数のプロセスがディマンディングプロセスを含むと判断されたとき、前記ディマンディングプロセスに関連するアプリケーションプログラムに前記ハイブリッドメモリの高速部分を割り当てるステップと、別のプロセスに関連するアプリケーションプログラムに前記ハイブリッドメモリの低速部分を割り当てるステップと
を含む、請求項14に記載の方法。
【請求項１７】
前記1つまたは複数のプロセスについてメモリ速度要件を判断するステップと、
前記1つまたは複数のプロセスがディマンディングプロセスを含むかどうかを判断するステップと
をさらに含み、
前記ハイブリッドメモリの特性と1つまたは複数のプロセスの特性とに基づいて前記物理アドレスを割り当てるステップは、
前記1つまたは複数のプロセスが前記ディマンディングプロセスを含むと判断したことに応答して、前記1つまたは複数のプロセスに前記ハイブリッドメモリの高速部分を割り当てるステップ
を含む、請求項14に記載の方法。
【請求項１８】
前記1つまたは複数のプロセスについてエネルギー効率に関連付けられたメモリ要件を判断するステップと、
前記1つまたは複数のプロセスがディマンディングプロセスを含むかどうかを判断するステップと
をさらに含み、
前記ハイブリッドメモリの特性と1つまたは複数のプロセスの特性とに基づいて前記物理アドレスを割り当てるステップは、
前記1つまたは複数のプロセスが前記ディマンディングプロセスを含むと判断したことに応答して、前記1つまたは複数のプロセスに前記ハイブリッドメモリのエネルギー効率的でない部分を割り当てるステップと
を含む、請求項14に記載の方法。
【請求項１９】
コンピューティングデバイスであって、
メモリと、
前記メモリに結合されたプロセッサとを含み、前記プロセッサが、
前記メモリのメモリパフォーマンスデータを収集するステップと、
前記収集されたメモリパフォーマンスデータを使用して前記メモリのエネルギー消費モデルとメモリパフォーマンスモデルとを生成するステップと、
前記エネルギー消費モデルと前記メモリパフォーマンスモデルとに基づいて、モニタエージェントにおいて中間物理アドレスを物理アドレスに変換するステップであって、前記モニタエージェントが、前記メモリの特性と前記コンピューティングデバイス上で動作している1つまたは複数のプロセスの特性とに基づいて前記物理アドレスを割り当てる、変換するステップ
を含む、前記コンピューティングデバイス上でメモリスペースを割り振るステップ
を含む、コンピューティングデバイス。
【請求項２０】
前記プロセッサは、前記コンピューティングデバイス上でメモリスペースを割り振るステップが、ソフトウェアプロセスにメモリスペースを割り振るステップを含むような動作を実行するためのプロセッサ実行可能命令で構成された、請求項19に記載のコンピューティングデバイス。
【請求項２１】
前記プロセッサは、中間物理アドレスを物理アドレスに変換するステップが、ハイパーバイザが前記中間物理アドレスを前記物理アドレスに変換するステップを含むような動作を実行するためのプロセッサ実行可能命令で構成された、請求項19に記載のコンピューティングデバイス。
【請求項２２】
前記プロセッサは、中間物理アドレスを物理アドレスに変換するステップが、オペレーティングシステムの外部で動作しているモニタソフトウェアが前記中間物理アドレスを前記物理アドレスに変換するステップを含むような動作を実行するためのプロセッサ実行可能命令で構成された、請求項19に記載のコンピューティングデバイス。
【請求項２３】
前記プロセッサは、中間物理アドレスを物理アドレスに変換するステップが、デバイスドライバが前記中間物理アドレスを前記物理アドレスに変換するステップを含むような動作を実行するためのプロセッサ実行可能命令で構成された、請求項19に記載のコンピューティングデバイス。
【請求項２４】
前記プロセッサは、前記コンピューティングデバイス上でメモリスペースを割り振るステップが、
オペレーティングシステムプロセスにおいて仮想アドレスを前記中間物理アドレスに変換するステップ
をさらに含むような動作を実行するためのプロセッサ実行可能命令で構成された、請求項19に記載のコンピューティングデバイス。
【請求項２５】
前記メモリがハイブリッドメモリであり、前記メモリの特性と前記コンピューティングデバイス上で動作している1つまたは複数のプロセスの特性とに基づいて前記物理アドレスを割り当てるステップが、前記ハイブリッドメモリの特性に基づいて前記物理アドレスを割り当てるステップを含む、請求項19に記載のコンピューティングデバイス。
【請求項２６】
前記プロセッサは、前記ハイブリッドメモリの特性と1つまたは複数のプロセスの特性とに基づいて前記物理アドレスを割り当てるステップが、
前記ハイブリッドメモリのパフォーマンス特性、
前記ハイブリッドメモリの電力消費特性、および
前記ハイブリッドメモリのレイテンシ特性
のうちの1つまたは複数に基づいて前記物理アドレスを割り当てるステップを含むような動作を実行するためのプロセッサ実行可能命令で構成された、請求項25に記載のコンピューティングデバイス。
【請求項２７】
前記プロセッサは、前記ハイブリッドメモリの特性と1つまたは複数のプロセスの特性とに基づいて前記物理アドレスを割り当てるステップが、前記1つまたは複数のプロセスのパフォーマンス特性に基づいて前記物理アドレスを割り当てるステップを含むような動作を実行するためのプロセッサ実行可能命令で構成された、請求項25に記載のコンピューティングデバイス。
【請求項２８】
前記ハイブリッドメモリが2つ以上のタイプのメモリ技術を含み、前記プロセッサは、前記ハイブリッドメモリの特性と1つまたは複数のプロセスの特性とに基づいて前記物理アドレスを割り当てるステップが、前記ハイブリッドメモリに含まれる前記タイプのメモリ技術に基づいて前記物理アドレスを割り当てるステップを含むような動作を実行するためのプロセッサ実行可能命令で構成された、請求項25に記載のコンピューティングデバイス。
【請求項２９】
前記プロセッサは、前記コンピューティングデバイスがより低いパフォーマンス状態に入りつつあるときを判断するステップをさらに含む動作を実行するためのプロセッサ実行可能命令で構成され、
前記プロセッサは、前記ハイブリッドメモリの特性と1つまたは複数のプロセスの特性とに基づいて前記物理アドレスを割り当てるステップが、前記コンピューティングデバイスがより低いパフォーマンス状態に入りつつあると判断したことに応答して、前記ハイブリッドメモリのエネルギー効率的な部分をソフトウェアアプリケーションに割り当てるステップを含むような動作を実行するためのプロセッサ実行可能命令で構成された、請求項25に記載のコンピューティングデバイス。
【請求項３０】
前記プロセッサは、前記コンピューティングデバイスが前記より低いパフォーマンス状態から出つつあるときを判断するステップをさらに含む動作を実行するためのプロセッサ実行可能命令で構成され、
前記プロセッサは、前記ハイブリッドメモリの特性と1つまたは複数のプロセスの特性とに基づいて前記物理アドレスを割り当てるステップが、メモリを要求する前記ソフトウェアアプリケーションがエネルギー効率的なメモリを割り当てられ得ないことと、前記コンピューティングデバイスが前記より低いパフォーマンス状態から出つつあることとを判断したことに応答して、前記ハイブリッドメモリのあまりエネルギー効率的でない部分を前記ソフトウェアアプリケーションに再割り当てするステップを含むような動作を実行するためのプロセッサ実行可能命令で構成された、請求項29に記載のコンピューティングデバイス。
【請求項３１】
前記プロセッサは、
前記1つまたは複数のプロセスがディマンディングプロセスを含むかどうかを判断するステップ
をさらに含む動作を実行するためのプロセッサ実行可能命令で構成された、請求項25に記載のコンピューティングデバイス。
【請求項３２】
前記プロセッサは、前記1つまたは複数のプロセスがディマンディングプロセスを含むかどうかを判断するステップが、前記1つまたは複数のプロセスが、
マルチメディアアプリケーション、
ビデオプレーヤアプリケーション、
ストリーミングビデオアプリケーション、
仮想現実アプリケーション、
拡張現実アプリケーション、
ゲームアプリケーション、
コンピュータビジョンアプリケーション、
ビデオ会議アプリケーション、
ジェスチャー認識アプリケーション、および
音声認識アプリケーション
のうちの1つまたは複数に関連するプロセスを含むかどうかを判断するステップを含むような動作を実行するためのプロセッサ実行可能命令で構成された、請求項31に記載のコンピューティングデバイス。
【請求項３３】
前記プロセッサは、前記ハイブリッドメモリの特性と1つまたは複数のプロセスの特性とに基づいて前記物理アドレスを割り当てるステップが、
前記1つまたは複数のプロセスがディマンディングプロセスを含むと判断されたとき、前記ディマンディングプロセスに関連するアプリケーションプログラムに前記ハイブリッドメモリの高速部分を割り当てるステップと、別のプロセスに関連するアプリケーションプログラムに前記ハイブリッドメモリの低速部分を割り当てるステップと
を含むような動作を実行するためのプロセッサ実行可能命令で構成された、請求項31に記載のコンピューティングデバイス。
【請求項３４】
前記プロセッサは、前記1つまたは複数のプロセスのメモリ速度要件を判断するステップと、
前記1つまたは複数のプロセスがディマンディングプロセスを含むかどうかを判断するステップと
をさらに含む動作を実行するためのプロセッサ実行可能命令で構成され、
前記プロセッサは、前記ハイブリッドメモリの特性と1つまたは複数のプロセスの特性とに基づいて前記物理アドレスを割り当てるステップが、
前記1つまたは複数のプロセスが前記ディマンディングプロセスを含むと判断したことに応答して、前記1つまたは複数のプロセスに前記ハイブリッドメモリの高速部分を割り当てるステップ
を含むような動作を実行するためのプロセッサ実行可能命令で構成された、請求項31に記載のコンピューティングデバイス。
【請求項３５】
前記プロセッサは、
前記1つまたは複数のプロセスについてエネルギー効率に関連付けられたメモリ要件を判断するステップと、
前記1つまたは複数のプロセスがディマンディングプロセスを含むかどうかを判断するステップと
をさらに含む動作を実行するためのプロセッサ実行可能命令で構成され、
前記プロセッサは、前記ハイブリッドメモリの特性と1つまたは複数のプロセスの特性とに基づいて前記物理アドレスを割り当てるステップが、
前記1つまたは複数のプロセスが前記ディマンディングプロセスを含むと判断したことに応答して、前記1つまたは複数のプロセスに前記ハイブリッドメモリのエネルギー効率的でない部分を割り当てるステップと
を含むような動作を実行するためのプロセッサ実行可能命令で構成された、請求項31に記載のコンピューティングデバイス。
【請求項３６】
コンピューティングデバイスであって、
メモリと、
ハードウェアレイヤ構成要素と、
前記メモリと前記ハードウェアレイヤ構成要素とに結合されたプロセッサと
を含み、
前記プロセッサが、
前記メモリのメモリパフォーマンスデータを収集するステップと、
前記収集されたメモリパフォーマンスデータを使用して前記メモリのエネルギー消費モデルとメモリパフォーマンスモデルとを生成するステップと、
前記コンピューティングデバイス上でメモリスペースを割り振るステップと
を含む動作を実行するためのプロセッサ実行可能命令で構成され、
前記ハードウェアレイヤ構成要素が、前記メモリの特性と前記コンピューティングデバイス上で動作している1つまたは複数のプロセスの特性とに基づいて物理アドレスを割り当てるステップによって、前記エネルギー消費モデルと前記メモリパフォーマンスモデルとに基づいて中間物理アドレスを物理アドレスに変換するように構成された、コンピューティングデバイス。
【請求項３７】
前記プロセッサは、前記コンピューティングデバイス上でメモリスペースを割り振るステップが、ソフトウェアプロセスにメモリスペースを割り振るステップを含むような動作を実行するためのプロセッサ実行可能命令で構成された、請求項36に記載のコンピューティングデバイス。
【請求項３８】
前記プロセッサは、前記コンピューティングデバイス上でメモリスペースを割り振るステップが、オペレーティングシステムにおいて仮想アドレスを前記中間物理アドレスに変換することによって、前記コンピューティングデバイス上でメモリスペースを割り振るステップを含むような動作を実行するためのプロセッサ実行可能命令で構成された、請求項36に記載のコンピューティングデバイス。
【請求項３９】
前記メモリがハイブリッドメモリであり、前記ハードウェアレイヤ構成要素は、前記メモリの特性と前記コンピューティングデバイスの1つまたは複数のプロセスの特性とに基づいて前記物理アドレスを割り当てるステップが、前記ハイブリッドメモリの特性に基づいて前記物理アドレスを割り当てるステップを含むように構成された、請求項36に記載のコンピューティングデバイス。
【請求項４０】
前記ハードウェアレイヤ構成要素は、前記ハイブリッドメモリの特性と1つまたは複数のプロセスの特性とに基づいて前記物理アドレスを割り当てるステップが、
前記ハイブリッドメモリのパフォーマンス特性、
前記ハイブリッドメモリの電力消費特性、および
前記ハイブリッドメモリのレイテンシ特性
のうちの1つまたは複数に基づいて前記物理アドレスを割り当てるステップを含むように構成された、請求項39に記載のコンピューティングデバイス。
【請求項４１】
前記ハードウェアレイヤ構成要素は、前記ハイブリッドメモリの特性と1つまたは複数のプロセスの特性とに基づいて前記物理アドレスを割り当てるステップが、前記1つまたは複数のプロセスのパフォーマンス特性に基づいて前記物理アドレスを割り当てるステップを含むように構成された、請求項39に記載のコンピューティングデバイス。
【請求項４２】
前記ハイブリッドメモリが2つ以上のタイプのメモリ技術を含み、前記ハードウェアレイヤ構成要素は、前記ハイブリッドメモリの特性と1つまたは複数のプロセスの特性とに基づいて前記物理アドレスを割り当てるステップが、前記ハイブリッドメモリに含まれる前記タイプのメモリ技術に基づいて前記物理アドレスを割り当てるステップを含むように構成された、請求項39に記載のコンピューティングデバイス。
【請求項４３】
前記プロセッサは、前記コンピューティングデバイスがより低いパフォーマンス状態に入りつつあるときを判断するステップを含む動作を実行するためのプロセッサ実行可能命令で構成され、
前記ハードウェアレイヤ構成要素は、前記ハイブリッドメモリの特性と1つまたは複数のプロセスの特性とに基づいて前記物理アドレスを割り当てるステップが、前記コンピューティングデバイスがより低いパフォーマンス状態に入りつつあると判断したことに応答して、前記ハイブリッドメモリのエネルギー効率的な部分をソフトウェアアプリケーションに割り当てるステップを含むように構成された、請求項39に記載のコンピューティングデバイス。
【請求項４４】
前記プロセッサは、前記コンピューティングデバイスが前記より低いパフォーマンス状態から出つつあるときを判断するステップをさらに含む動作を実行するためのプロセッサ実行可能命令で構成され、
前記ハードウェアレイヤ構成要素は、前記ハイブリッドメモリの特性と1つまたは複数のプロセスの特性とに基づいて前記物理アドレスを割り当てるステップが、メモリを要求する前記ソフトウェアアプリケーションがエネルギー効率的なメモリを割り当てられ得ないことと、前記コンピューティングデバイスが前記より低いパフォーマンス状態から出つつあることとを判断したことに応答して、前記ハイブリッドメモリのあまりエネルギー効率的でない部分を前記ソフトウェアアプリケーションに再割り当てするステップを含むように構成された、請求項43に記載のコンピューティングデバイス。
【請求項４５】
前記プロセッサは、前記1つまたは複数のプロセスがディマンディングプロセスを含むかどうかを判断するステップをさらに含む動作を実行するためのプロセッサ実行可能命令で構成された、請求項39に記載のコンピューティングデバイス。
【請求項４６】
前記プロセッサは、前記1つまたは複数のプロセスがディマンディングプロセスを含むかどうかを判断するステップが、前記1つまたは複数のプロセスが、
マルチメディアアプリケーション、
ビデオプレーヤアプリケーション、
ストリーミングビデオアプリケーション、
仮想現実アプリケーション、
拡張現実アプリケーション、
ゲームアプリケーション、
コンピュータビジョンアプリケーション、
ビデオ会議アプリケーション、
ジェスチャー認識アプリケーション、および
音声認識アプリケーション
のうちの1つまたは複数に関連するプロセスを含むかどうかを判断するステップを含むような動作を実行するためのプロセッサ実行可能命令で構成された、請求項45に記載のコンピューティングデバイス。
【請求項４７】
前記ハードウェアレイヤ構成要素は、前記ハイブリッドメモリの特性と1つまたは複数のプロセスの特性とに基づいて前記物理アドレスを割り当てるステップが、
前記1つまたは複数のプロセスがディマンディングプロセスを含むと判断されたとき、前記ディマンディングプロセスに関連するアプリケーションプログラムに前記ハイブリッドメモリの高速部分を割り当てるステップと、別のプロセスに関連するアプリケーションプログラムに前記ハイブリッドメモリの低速部分を割り当てるステップと
を含むように構成された、請求項45に記載のコンピューティングデバイス。
【請求項４８】
前記プロセッサは、前記1つまたは複数のプロセスのメモリ速度要件を判断するステップと、
前記1つまたは複数のプロセスがディマンディングプロセスを含むかどうかを判断するステップと
をさらに含む動作を実行するためのプロセッサ実行可能命令で構成され、
前記ハードウェアレイヤ構成要素は、前記ハイブリッドメモリの特性と1つまたは複数のプロセスの特性とに基づいて前記物理アドレスを割り当てるステップが、
前記1つまたは複数のプロセスが前記ディマンディングプロセスを含むと判断したことに応答して、前記1つまたは複数のプロセスに前記ハイブリッドメモリの高速部分を割り当てるステップ
を含むように構成された、請求項45に記載のコンピューティングデバイス。
【請求項４９】
前記プロセッサは、
前記1つまたは複数のプロセスについてエネルギー効率に関連付けられたメモリ要件を判断するステップと、
前記1つまたは複数のプロセスがディマンディングプロセスを含むかどうかを判断するステップと
をさらに含む動作を実行するためのプロセッサ実行可能命令で構成され、
前記ハードウェアレイヤ構成要素は、前記ハイブリッドメモリの特性と1つまたは複数のプロセスの特性とに基づいて前記物理アドレスを割り当てるステップが、
前記1つまたは複数のプロセスが前記ディマンディングプロセスを含むと判断したことに応答して、前記1つまたは複数のプロセスに前記ハイブリッドメモリのエネルギー効率的でない部分を割り当てるステップと
を含むように構成された、請求項45に記載のコンピューティングデバイス。
【請求項５０】
コンピューティングデバイスであって、
メモリのメモリパフォーマンスデータを収集するための手段と、
前記収集されたメモリパフォーマンスデータを使用して前記メモリのエネルギー消費モデルとメモリパフォーマンスモデルとを生成するための手段と、
前記エネルギー消費モデルと前記メモリパフォーマンスモデルとに基づいて、モニタエージェントにおいて中間物理アドレスを物理アドレスに変換するための手段であって、前記モニタエージェントが、前記メモリの特性と前記コンピューティングデバイス上で動作している1つまたは複数のプロセスの特性とに基づいて前記物理アドレスを割り当てる、変換するための手段
を含む、前記コンピューティングデバイス上でメモリスペースを割り振るための手段
を含む、コンピューティングデバイス。
【請求項５１】
前記コンピューティングデバイス上でメモリスペースを割り振るための手段が、ソフトウェアプロセスにメモリスペースを割り振るための手段を含む、請求項50に記載のコンピューティングデバイス。
【請求項５２】
モニタエージェントにおいて前記中間物理アドレスを物理アドレスに変換するための手段が、ハイパーバイザにおいて前記中間物理アドレスを前記物理アドレスに変換するための手段を含む、請求項50に記載のコンピューティングデバイス。
【請求項５３】
モニタエージェントにおいて前記中間物理アドレスを物理アドレスに変換するための手段が、前記コンピューティングデバイスのオペレーティングシステムの外部のモニタソフトウェアにおいて前記中間物理アドレスを前記物理アドレスに変換するための手段を含む、請求項50に記載のコンピューティングデバイス。
【請求項５４】
モニタエージェントにおいて前記中間物理アドレスを物理アドレスに変換するための手段が、ハードウェアレイヤ構成要素において前記中間物理アドレスを前記物理アドレスに変換するための手段を含む、請求項50に記載のコンピューティングデバイス。
【請求項５５】
モニタエージェントにおいて前記中間物理アドレスを物理アドレスに変換するための手段が、デバイスドライバの一部として動作しているソフトウェアモニタにおいて前記中間物理アドレスを前記物理アドレスに変換するための手段を含む、請求項50に記載のコンピューティングデバイス。
【請求項５６】
前記コンピューティングデバイス上でメモリスペースを割り振るための手段が、オペレーティングシステムにおいて仮想アドレスを前記中間物理アドレスに変換するための手段をさらに含む、請求項50に記載のコンピューティングデバイス。
【請求項５７】
前記メモリの特性と前記コンピューティングデバイスの1つまたは複数のプロセスの特性とに基づいて前記物理アドレスを割り当てるための手段が、ハイブリッドメモリの特性に基づいて前記物理アドレスを割り当てるための手段を含む、請求項50に記載のコンピューティングデバイス。
【請求項５８】
前記ハイブリッドメモリの特性と1つまたは複数のプロセスの特性とに基づいて前記物理アドレスを割り当てるための手段が、
前記ハイブリッドメモリのパフォーマンス特性、
前記ハイブリッドメモリの電力消費特性、および
前記ハイブリッドメモリのレイテンシ特性
のうちの1つまたは複数に基づいて前記物理アドレスを割り当てるための手段を含む、請求項57に記載のコンピューティングデバイス。
【請求項５９】
前記ハイブリッドメモリの特性と1つまたは複数のプロセスの特性とに基づいて前記物理アドレスを割り当てるための手段が、前記1つまたは複数のプロセスのパフォーマンス特性に基づいて前記物理アドレスを割り当てるための手段を含む、請求項57に記載のコンピューティングデバイス。
【請求項６０】
前記ハイブリッドメモリの特性と1つまたは複数のプロセスの特性とに基づいて前記物理アドレスを割り当てるための手段が、前記ハイブリッドメモリに含まれる2つ以上のタイプのメモリ技術に基づいて前記物理アドレスを割り当てるための手段を含む、請求項57に記載のコンピューティングデバイス。
【請求項６１】
前記コンピューティングデバイスがより低いパフォーマンス状態に入りつつあるときを判断するための手段をさらに含み、
前記ハイブリッドメモリの特性と1つまたは複数のプロセスの特性とに基づいて前記物理アドレスを割り当てるための手段は、前記コンピューティングデバイスがより低いパフォーマンス状態に入りつつあると判断したことに応答して、前記ハイブリッドメモリのエネルギー効率的な部分をソフトウェアアプリケーションに割り当てるための手段を含む、請求項57に記載のコンピューティングデバイス。
【請求項６２】
前記コンピューティングデバイスが前記より低いパフォーマンス状態から出つつあるときを判断するための手段をさらに含み、
前記ハイブリッドメモリの特性と1つまたは複数のプロセスの特性とに基づいて前記物理アドレスを割り当てるための手段は、メモリを要求する前記ソフトウェアアプリケーションがエネルギー効率的なメモリを割り当てられ得ないことと、前記コンピューティングデバイスが前記より低いパフォーマンス状態から出つつあることとを判断したことに応答して、動作している前記ソフトウェアアプリケーションに前記ハイブリッドメモリのあまりエネルギー効率的でない部分を再割り当てするための手段を含む、請求項61に記載のコンピューティングデバイス。
【請求項６３】
前記1つまたは複数のプロセスがディマンディングプロセスを含むかどうかを判断するための手段
をさらに含む、請求項57に記載のコンピューティングデバイス。
【請求項６４】
前記1つまたは複数のプロセスがディマンディングプロセスを含むかどうかを判断するための手段は、前記1つまたは複数のプロセスが、
マルチメディアアプリケーション、
ビデオプレーヤアプリケーション、
ストリーミングビデオアプリケーション、
仮想現実アプリケーション、
拡張現実アプリケーション、
ゲームアプリケーション、
コンピュータビジョンアプリケーション、
ビデオ会議アプリケーション、
ジェスチャー認識アプリケーション、および
音声認識アプリケーション
のうちの1つまたは複数に関連するプロセスを含むかどうかを判断するための手段を含む、請求項63に記載のコンピューティングデバイス。
【請求項６５】
前記ハイブリッドメモリの特性と1つまたは複数のプロセスの特性とに基づいて前記物理アドレスを割り当てるための手段は、
前記1つまたは複数のプロセスがディマンディングプロセスを含むと判断されたとき、前記ディマンディングプロセスに関連するアプリケーションプログラムに前記ハイブリッドメモリの高速部分を割り当てるための手段と、別のプロセスに関連するアプリケーションプログラムに前記ハイブリッドメモリの低速部分を割り当てるための手段と
を含む、請求項63に記載のコンピューティングデバイス。
【請求項６６】
前記1つまたは複数のプロセスのメモリ速度要件を判断するための手段と、
前記1つまたは複数のプロセスがディマンディングプロセスを含むかどうかを判断するための手段と
をさらに含み、前記ハイブリッドメモリの特性と1つまたは複数のプロセスの特性とに基づいて前記物理アドレスを割り当てるための手段は、
前記1つまたは複数のプロセスが前記ディマンディングプロセスを含むと判断したことに応答して、前記1つまたは複数のプロセスに前記ハイブリッドメモリの高速部分を割り当てるための手段
を含む、請求項63に記載のコンピューティングデバイス。
【請求項６７】
前記1つまたは複数のプロセスについてエネルギー効率に関連付けられたメモリ要件を判断するための手段と、
前記1つまたは複数のプロセスがディマンディングプロセスを含むかどうかを判断するための手段と
をさらに含み、前記ハイブリッドメモリの特性と1つまたは複数のプロセスの特性とに基づいて前記物理アドレスを割り当てるための手段は、
前記1つまたは複数のプロセスが前記ディマンディングプロセスを含むと判断したことに応答して、前記1つまたは複数のプロセスに前記ハイブリッドメモリのエネルギー効率的でない部分を割り当てるための手段と
を含む、請求項63に記載のコンピューティングデバイス。
【請求項６８】
メモリを有するコンピューティングデバイス上でメモリを管理するための動作をプロセッサに実行させるように構成されたプロセッサ実行可能ソフトウェア命令を記憶した非一時的コンピュータ可読記憶媒体であって、前記動作が、
前記メモリのメモリパフォーマンスデータを収集するステップと、
前記収集されたメモリパフォーマンスデータを使用して前記メモリのエネルギー消費モデルとメモリパフォーマンスモデルとを生成するステップと、
前記エネルギー消費モデルと前記メモリパフォーマンスモデルとに基づいて、モニタエージェントにおいて中間物理アドレスを物理アドレスに変換するステップであって、前記モニタエージェントが、前記メモリの特性と前記コンピューティングデバイス上で動作している1つまたは複数のプロセスの特性とに基づいて前記物理アドレスを割り当てる、変換するステップ
を含む、前記コンピューティングデバイス上でメモリスペースを割り振るステップ
を含む、非一時的コンピュータ可読記憶媒体。
【請求項６９】
前記記憶されたプロセッサ実行可能ソフトウェア命令は、前記コンピューティングデバイス上でメモリスペースを割り振るステップが、ソフトウェアプロセスにメモリスペースを割り振るステップを含むような動作をプロセッサに実行させるように構成された、請求項68に記載の非一時的コンピュータ可読記憶媒体。
【請求項７０】
前記記憶されたプロセッサ実行可能ソフトウェア命令は、前記中間物理アドレスを物理アドレスに変換するステップが、ハイパーバイザにおいて前記中間物理アドレスを前記物理アドレスに変換するステップを含むような動作をプロセッサに実行させるように構成された、請求項68に記載の非一時的コンピュータ可読記憶媒体。
【請求項７１】
前記記憶されたプロセッサ実行可能ソフトウェア命令は、前記中間物理アドレスを物理アドレスに変換するステップが、オペレーティングシステムの外部で動作しているモニタソフトウェアにおいて前記中間物理アドレスを前記物理アドレスに変換するステップを含むような動作をプロセッサに実行させるように構成された、請求項68に記載の非一時的コンピュータ可読記憶媒体。
【請求項７２】
前記記憶されたプロセッサ実行可能ソフトウェア命令は、前記中間物理アドレスを物理アドレスに変換するステップが、デバイスドライバにおいて前記中間物理アドレスを前記物理アドレスに変換するステップを含むような動作をプロセッサに実行させるように構成された、請求項68に記載の非一時的コンピュータ可読記憶媒体。
【請求項７３】
前記記憶されたプロセッサ実行可能ソフトウェア命令は、前記コンピューティングデバイス上でメモリスペースを割り振るステップが、オペレーティングシステムプロセスにおいて仮想アドレスを前記中間物理アドレスに変換するステップを含むような動作をプロセッサに実行させるように構成された、請求項68に記載の非一時的コンピュータ可読記憶媒体。
【請求項７４】
前記記憶されたプロセッサ実行可能ソフトウェア命令は、前記メモリの特性と前記コンピューティングデバイス上で動作している1つまたは複数のプロセスの特性とに基づいて前記物理アドレスを割り当てるステップが、ハイブリッドメモリの特性に基づいて前記物理アドレスを割り当てるステップを含むような動作をプロセッサに実行させるように構成された、請求項68に記載の非一時的コンピュータ可読記憶媒体。
【請求項７５】
前記記憶されたプロセッサ実行可能ソフトウェア命令は、前記ハイブリッドメモリの特性と1つまたは複数のプロセスの特性とに基づいて前記物理アドレスを割り当てるステップが、
前記ハイブリッドメモリのパフォーマンス特性、
前記ハイブリッドメモリの電力消費特性、および
前記ハイブリッドメモリのレイテンシ特性
のうちの1つまたは複数に基づいて前記物理アドレスを割り当てるステップを含むような動作をプロセッサに実行させるように構成された、請求項74に記載の非一時的コンピュータ可読記憶媒体。
【請求項７６】
前記記憶されたプロセッサ実行可能ソフトウェア命令は、前記ハイブリッドメモリの特性と1つまたは複数のプロセスの特性とに基づいて前記物理アドレスを割り当てるステップが、
前記1つまたは複数のプロセスのパフォーマンス特性に基づいて前記物理アドレスを割り当てるステップ
を含むような動作をプロセッサに実行させるように構成された、請求項74に記載の非一時的コンピュータ可読記憶媒体。
【請求項７７】
前記ハイブリッドメモリが2つ以上のタイプのメモリ技術を含み、前記記憶されたプロセッサ実行可能ソフトウェア命令は、前記ハイブリッドメモリの特性と1つまたは複数のプロセスの特性とに基づいて前記物理アドレスを割り当てるステップが、
前記ハイブリッドメモリに含まれる前記タイプのメモリ技術に基づいて前記物理アドレスを割り当てるステップ
を含むような動作をプロセッサに実行させるように構成された、請求項74に記載の非一時的コンピュータ可読記憶媒体。
【請求項７８】
前記記憶されたプロセッサ実行可能ソフトウェア命令は、前記コンピューティングデバイスがより低いパフォーマンス状態に入りつつあるときを判断するステップをさらに含む動作をプロセッサに実行させるように構成され、
前記記憶されたプロセッサ実行可能ソフトウェア命令は、前記ハイブリッドメモリの特性と1つまたは複数のプロセスの特性とに基づいて前記物理アドレスを割り当てるステップが、前記コンピューティングデバイスがより低いパフォーマンス状態に入りつつあると判断したことに応答して、前記ハイブリッドメモリのエネルギー効率的な部分をソフトウェアアプリケーションに割り当てるステップを含むような動作をプロセッサに実行させるように構成された、請求項74に記載の非一時的コンピュータ可読記憶媒体。
【請求項７９】
前記記憶されたプロセッサ実行可能ソフトウェア命令は、前記コンピューティングデバイスが前記より低いパフォーマンス状態から出つつあるときを判断するステップをさらに含む動作をプロセッサに実行させるように構成され、
前記記憶されたプロセッサ実行可能ソフトウェア命令は、前記ハイブリッドメモリの特性と1つまたは複数のプロセスの特性とに基づいて前記物理アドレスを割り当てるステップが、メモリを要求する前記ソフトウェアアプリケーションがエネルギー効率的なメモリを割り当てられ得ないことと、前記コンピューティングデバイスが前記より低いパフォーマンス状態から出つつあることとを判断したことに応答して、動作している前記ソフトウェアアプリケーションに前記ハイブリッドメモリのあまりエネルギー効率的でない部分を再割り当てするステップを含むような動作をプロセッサに実行させるように構成された、請求項78に記載の非一時的コンピュータ可読記憶媒体。
【請求項８０】
前記記憶されたプロセッサ実行可能ソフトウェア命令は、
前記1つまたは複数のプロセスがディマンディングプロセスを含むかどうかを判断するステップ
を含む動作をプロセッサに実行させるように構成された、請求項74に記載の非一時的コンピュータ可読記憶媒体。
【請求項８１】
前記記憶されたプロセッサ実行可能ソフトウェア命令は、前記1つまたは複数のプロセスがディマンディングプロセスを含むかどうかを判断するステップが、前記1つまたは複数のプロセスが、
マルチメディアアプリケーション、
ビデオプレーヤアプリケーション、
ストリーミングビデオアプリケーション、
仮想現実アプリケーション、
拡張現実アプリケーション、
ゲームアプリケーション、
コンピュータビジョンアプリケーション、
ビデオ会議アプリケーション、
ジェスチャー認識アプリケーション、および
音声認識アプリケーション
のうちの1つまたは複数に関連するプロセスを含むかどうかを判断するステップを含むような動作をプロセッサに実行させるように構成された、請求項80に記載の非一時的コンピュータ可読記憶媒体。
【請求項８２】
前記記憶されたプロセッサ実行可能ソフトウェア命令は、前記ハイブリッドメモリの特性と1つまたは複数のプロセスの特性とに基づいて前記物理アドレスを割り当てるステップが、
前記1つまたは複数のプロセスがディマンディングプロセスを含むと判断されたとき、前記ディマンディングプロセスに関連するアプリケーションプログラムに前記ハイブリッドメモリの高速部分を割り当てるステップと、別のプロセスに関連するアプリケーションプログラムに前記ハイブリッドメモリの低速部分を割り当てるステップと
を含むような動作をプロセッサに実行させるように構成された、請求項80に記載の非一時的コンピュータ可読記憶媒体。
【請求項８３】
前記記憶されたプロセッサ実行可能ソフトウェア命令は、
前記1つまたは複数のプロセスのメモリ速度要件を判断するステップと、
前記1つまたは複数のプロセスがディマンディングプロセスを含むかどうかを判断するステップと
を含む動作をプロセッサに実行させるように構成され、
前記記憶されたプロセッサ実行可能ソフトウェア命令は、前記ハイブリッドメモリの特性と1つまたは複数のプロセスの特性とに基づいて前記物理アドレスを割り当てるステップが、
前記1つまたは複数のプロセスが前記ディマンディングプロセスを含むと判断したことに応答して、前記1つまたは複数のプロセスに前記ハイブリッドメモリの高速部分を割り当てるステップ
を含むような動作をプロセッサに実行させるように構成された、請求項80に記載の非一時的コンピュータ可読記憶媒体。
【請求項８４】
前記記憶されたプロセッサ実行可能ソフトウェア命令は、
前記1つまたは複数のプロセスについてエネルギー効率に関連付けられたメモリ要件を判断するステップと、
前記1つまたは複数のプロセスがディマンディングプロセスを含むかどうかを判断するステップと
を含む動作をプロセッサに実行させるように構成され、
前記記憶されたプロセッサ実行可能ソフトウェア命令は、前記ハイブリッドメモリの特性と1つまたは複数のプロセスの特性とに基づいて前記物理アドレスを割り当てるステップが、
前記1つまたは複数のプロセスが前記ディマンディングプロセスを含むと判断したことに応答して、前記1つまたは複数のプロセスに前記ハイブリッドメモリのエネルギー効率的でない部分を割り当てるステップと
を含むような動作をプロセッサに実行させるように構成された、請求項80に記載の非一時的コンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ハイブリッドメモリ管理のための方法、システムおよびデバイスに関する。
【背景技術】
【０００２】
セルラーおよびワイヤレス通信技術は、過去数年にわたって爆発的成長を遂げてきた。ワイヤレスサービスプロバイダは、現在、多数の機能およびサービスを提供し、それらのユーザに、情報、リソースおよび通信へのかつてないレベルのアクセスを与える。これらのサービス向上に対応するために、モバイル電子デバイス(たとえば、セルラーフォン、タブレット、ラップトップなど)は、かつてないほど機能が豊富で複雑になっており、今や、通常、複数のプロセッサと、システムオンチップ(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  ディスプレイ
【図１】
0005916955.tif 000002
【図２】
0005916955.tif 000003
【図３】
0005916955.tif 000004
【図４】
0005916955.tif 000005
【図５】
0005916955.tif 000006
【図６Ａ】
0005916955.tif 000007
【図６Ｂ】
0005916955.tif 000008
【図６Ｃ】
0005916955.tif 000009
【図７】
0005916955.tif 000010
【図８Ａ】
0005916955.tif 000011
【図８Ｂ】
0005916955.tif 000012
【図９】
0005916955.tif 000013
【図１０】
0005916955.tif 000014