(57)【特許請求の範囲】
【請求項１】
メモリを割り当てるコンピュータ実行方法であって、
システム始動中に第１の処理ユニットに割り当てられた物理メモリ内のメモリ空間の量を決定することと、
前記決定された量のメモリ空間内で現在前記第１の処理ユニットによってシステムエンティティが実行されているかを決定することと、
前記決定された量のメモリ空間内で現在前記システムエンティティが実行されていないとの決定に応答して、前記決定された量のメモリ空間を整備することと、
ランタイム中に、前記整備されたメモリ空間を第２の処理ユニットに割り当て直すことと、
を有するコンピュータ実行方法。
【請求項２】
前記第２の処理ユニットにメモリ空間を割り当てることの要求を受信すること、を有する請求項１に記載のコンピュータ実行方法。
【請求項３】
未割当てのメモリ空間を前記物理メモリが含んでいるかを決定すること、を有する請求項１に記載のコンピュータ実行方法。
【請求項４】
利用可能なメモリ空間を前記第１の処理ユニットに割り当てられた物理メモリが含んでいるかを決定すること、を有する請求項１に記載のコンピュータ実行方法。
【請求項５】
前記第１の処理ユニットに割り当てられた前記メモリ空間が閾値を超えているかを決定すること、を有する請求項１に記載のコンピュータ実行方法。
【請求項６】
前記決定された量の前記メモリ空間からの物理ページを再マッピングすること、を有する請求項１に記載のコンピュータ実行方法。
【請求項７】
メモリ資源を不揮発性の長期記憶装置にコピーして、前記第１の処理ユニット内に利用可能なメモリ空間を作り出すこと、を有する請求項１に記載のコンピュータ実行方法。
【請求項８】
前記決定された量の前記メモリ空間内のメモリ資源を、前記第１の処理ユニットに割り当てられている利用可能なメモリ空間にコピーすること、を有する請求項１に記載のコンピュータ実行方法。
【請求項９】
前記物理メモリの割当てに関するユーザ作成プロファイルに基づいて、ランタイム中に前記物理メモリを前記第２の処理ユニットに割り当て直すことの要求を受信すること、を有する請求項１に記載のコンピュータ実行方法。
【請求項１０】
アプリケーション固有プロファイルに基づいて、ランタイム中に前記物理メモリを前記第２の処理ユニットに割り当て直すことの要求を受信すること、を有する請求項１に記載のコンピュータ実行方法。
【請求項１１】
システムエンティティによる動的な決定に基づいて、ランタイム中に前記物理メモリを前記第２の処理ユニットに割り当て直すことの要求を受信すること、を有する請求項１に記載のコンピュータ実行方法。
【請求項１２】
複数の命令を有するコンピュータプログラムであって、前記複数の命令は、コンピューティング装置上で実行されることに応答して、前記コンピューティング装置に、請求項１乃至１１の何れかに記載の方法を実行させる、コンピュータプログラム。
【請求項１３】
メモリを割り当てる装置であって、
複数の処理ユニットと、
第１の処理ユニットに割り当てられた第１のメモリ空間と第２の処理ユニットに割り当てられた第２のメモリ空間とを有する物理メモリを再配分するように前記複数の処理ユニットのうちの少なくとも１つ上で動作するメモリ配分マネジャであり、
前記第１の処理ユニットから前記第２の処理ユニットに割り当て直すべき前記第１のメモリ空間の量を決定し、
前記決定した量の前記第１のメモリ空間内で現在前記第１の処理ユニットによってシステムエンティティが実行されているかを決定し、且つ
前記決定した量の前記第１のメモリ空間内で現在前記システムエンティティが実行されていないとの決定に応答して、ランタイム中に、前記決定した量の前記第１のメモリ空間を前記第１の処理ユニットから前記第２の処理ユニットに割り当て直す、
よう動作するメモリ配分マネジャと、
を有する装置。
【請求項１４】
前記メモリ配分マネジャは、前記決定した量の第１のメモリ空間を整備するよう動作する、請求項１３に記載の装置。
【請求項１５】
前記メモリ配分マネジャは、前記第２の処理ユニットにメモリ空間を割り当てることの要求を受信するよう動作する、請求項１３に記載の装置。
【請求項１６】
前記メモリ配分マネジャは、利用可能なメモリ空間を前記第１のメモリ空間が含んでいるかを決定するよう動作する、請求項１３に記載の装置。
【請求項１７】
前記メモリ配分マネジャは仮想マシンモニタ上で動作する、請求項１３に記載の装置。
【請求項１８】
前記メモリ配分マネジャは、中央演算処理ユニット、グラフィックドライバ、論理回路、又はオペレーティングシステムのうちの１つ上で動作する、請求項１３に記載の装置。
【請求項１９】
前記メモリ配分マネジャは、前記第１の処理ユニットに割り当てられた前記第１のメモリ空間が閾値を超えているかを決定するよう動作する、請求項１３に記載の装置。
【請求項２０】
前記メモリ配分マネジャは、前記決定した量の前記第１のメモリ空間からの物理ページを再マッピングするよう動作する、請求項１３に記載の装置。
【請求項２１】
前記複数の処理ユニットのうちの少なくとも１つに動作可能に結合されたデジタルディスプレイ、を有する請求項１３に記載の装置。
【請求項２２】
メモリを割り当てるシステムであって、
複数の処理ユニットと、
前記複数の処理ユニットのうちの少なくとも１つに動作可能に結合されたデジタルディスプレイと、
第１の処理ユニットに割り当てられた物理メモリ空間内の第１のメモリ空間、及び第２の処理ユニットに割り当てられた前記物理メモリ空間内の第２のメモリ空間を再割り当てする、前記複数の処理ユニットのうちの少なくとも１つ上で動作するメモリ配分マネジャであり、
前記第２の処理ユニットに割り当てるべき前記第１のメモリ空間の量を決定し、
前記決定した量の前記第１のメモリ空間内で現在前記第１の処理ユニットによってシステムエンティティが実行されているかを決定し、
前記決定した量の前記第１のメモリ空間内で現在前記システムエンティティが実行されていないとの決定に応答して、前記決定した量の前記第１のメモリ空間を整備し、且つ
前記整備した第１のメモリ空間を前記第２の処理ユニットに割り当て直す、
よう動作するメモリ配分マネジャと、
を有するシステム。
【請求項２３】
前記複数の処理ユニットのうちの少なくとも１つに動作可能に結合された無線受信器、を有する請求項２２に記載のシステム。
【請求項２４】
前記メモリ配分マネジャは、前記決定した量の前記第１のメモリ空間内のメモリ資源を、前記第１の処理ユニットに割り当てられている利用可能なメモリ空間にコピーするよう動作する、請求項２２に記載のシステム。
【請求項２５】
当該システムは、前記物理メモリ空間内に第３のメモリ空間を有し、
前記メモリ配分マネジャは、
第３の処理ユニットに割り当てるべき前記第３のメモリ空間の量を決定し、
前記決定した量の第３のメモリ空間を整備し、且つ
前記整備した第３のメモリ空間を前記第３の処理ユニットに再割り当てする、
よう動作する、
請求項２２に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
開示の実施形態は、物理メモリの動的パーティショニング技術に関する。
【背景技術】
【０００２】
コンピューティングシステムはしばしば、中央演算処理ユニットとグラフィック処理ユニットとの間で共有メモリを使用する。現在、コンピューティングシステムの物理メモリは、コンピューティングシステムの始動時に割り当てられている。例えば、メモリの一部が、中央演算処理ユニットによる使用のために静的に割り当てられ、他の一部が、グラフィック処理ユニットによる使用のために静的に割り当てられる。例えばシステム起動時といったシステム始動時にメモリが静的に割り当てられるので、中央演算処理ユニット又はグラフィック処理ユニットの何れかが更なる物理メモリを必要とすることが後にランタイムにおいて決定されても、現在利用可能なソリューションを用いてでは、物理メモリの静的割当てをランタイム中に変更することができないので、その要求を満たすことは可能でない。
【０００３】
より多くのメモリに対するアプリケーションのニーズに対処するための現行ソリューションは、しばしば非効率的であり、システム性能を低下させ、且つ／或いは同時実行するアプリケーションの数を減らしてしまう。従って、これら及びその他の問題を解決するための改善された技術が望まれ得る。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
物理メモリの動的パーティショニング技術を提供する。
【課題を解決するための手段】
【０００５】
一態様によれば、コンピュータによって実行されるコンピュータ実行方法は、システム始動中に、第１の処理ユニットに割り当てられる物理メモリ内のメモリ空間の量を決定し、決定された量のメモリ空間を整備し、ランタイム中に、整備されたメモリ空間を第２の処理ユニットに割り当て直すことを含み得る。
【図面の簡単な説明】
【０００６】
【図１】第１のシステムのブロック図を例示する図である。
【図２】共有物理メモリを再配分することの一実施形態を例示する図である。
【図３】第１の論理フローの一実施形態を例示する図である。
【図４】第２の論理フローの一実施形態を例示する図である。
【図５】システム内での通信の一実施形態を例示する図である。
【図６】共有物理メモリを再配分することの他の一実施形態を例示する図である。
【図７】第２のシステムの一実施形態を例示する図である。
【図８】通信アーキテクチャの一実施形態を例示する図である。
【発明を実施するための形態】
【０００７】
実施形態は概して、ランタイム中のメモリ割当て技術に向けられる。現在、システム始動中に静的なメモリ空間のみが割り当てられ得る。システムの始動は、コンピューティングシステムがオペレーティングシステムをメモリにロードするとともにコンピューティングシステム上の基本入出力システムが再びアクティブにされる時間期間を有し得る。システム始動は、コンピューティングシステムがターンオンされると直ちに行われることができ、システムブートアップ又はシステムスタートアップと称されることもある。オペレーティングシステムがロードされると、システムの始動が完了し、ランタイムが始まる。ランタイムは、システム始動が行われた後の時間期間を有することができ、システムがクローズ且つ／或いはターンオフされるまで続き得る。
【０００８】
一部の実施形態は特に、ランタイム中に静的メモリ空間を第１の処理ユニットから第２の処理ユニットへと動的に割り当てるように構成されるメモリ割当て技術に向けられる。一実施形態において、例えば、メモリ配分（パーティショニング）マネジャが、より多くのメモリを第２の処理ユニットが必要とすることを決定し得る。システムの再始動まで待つ代わりに、メモリ配分マネジャは、現在は第１の処理ユニットに割り当てられている物理メモリ内の或る量のメモリ空間をランタイム中に第２の処理ユニットに割り当て直すことを決定し得る。メモリ配分マネジャは、より多くのメモリを第２の処理ユニットに割り当てるために、ランタイム中にメモリ空間を整備し得る。現行のメモリ割当てはしばしば、第１の処理ユニットが、割り当てられた利用可能あるいは未使用の静的メモリ空間を有しながら、第２の処理ユニットが、アプリケーションを走らせるためにもっと多くのメモリ空間を必要とするということをもたらすので、ここに記載される実施形態は、静的メモリ空間を第１の処理ユニットから第２の処理ユニットにランタイム中に割り当て直すことができる。ランタイム中にこれらの処理ユニットに対してメモリ空間を再配分することにより、この物理メモリ分配は、システムプラットフォームを再始動することに伴う待ち時間を抑制あるいは除去しながら、より効率的なメモリ割当てにつながり得る。
【０００９】
コンピューティングプラットフォームは物理メモリを含み得る。物理メモリは、１つ以上の処理ユニットによって共有され得る。共有物理メモリは、処理ユニットに割り当てられる様々なメモリ空間へと分割され得る。メモリ及びメモリ空間なる用語は、本開示のいたる所で、相互に入れ換え可能に使用されることがある。例えば、コンピューティングシステムがグラフィック処理ユニットと中央演算処理ユニットとを含む場合、物理メモリ領域は、グラフィック処理ユニットに割り当てられる第１のメモリ空間と、中央演算処理ユニットに割り当てられる第２のメモリ空間とに分割され得る。
【００１０】
コンピューティングプラットフォームは、例えば中央演算処理ユニット、グラフィック処理ユニット、デジタル信号処理ユニット、及び／又はネットワーク処理ユニットなどの、複数の処理ユニットを含み得る。処理ユニットはプロセッサ回路を含み得る。中央演算処理ユニット及びネットワーク処理ユニットは、基本算術演算及び論理演算を行うことによって命令を実行する。グラフィック処理ユニットは、ディスプレイに出力されることが可能な画像の作成を加速するよう、メモリの操作及び改変を行う。デジタル信号処理ユニットは、フィルタリング及び圧縮により、アナログ情報信号を操作する。
【００１１】
処理ユニットは、例えばアプリケーション又はオペレーティングシステムなどの１つ以上のシステムエンティティを起動し得る。或るシステムエンティティが或る処理ユニット上で起動されるとき、そのシステムエンティティは、その処理ユニットに割り当てられた物理メモリ内のメモリ空間を使用し得る。現在、或るシステムユニットが、割り当てられた静的メモリ空間の全てを使用するとき、共有物理メモリをランタイム中に再配分することができないので、その処理ユニットは、より多くのメモリ空間を割り当てられることができない。
【００１２】
歴史的に見て、各処理ユニットは、別個のシリコンダイ上に位置するディスクリート（個別）物理ユニットであった。ディスクリート処理ユニットは、その処理ユニットに直接的に取り付けられることが多いそれ自身のメモリを含んでいた。結果として、処理ユニットは、別の処理ユニットのメモリへの電気的アクセスを有していなかった。従って、複数の処理ユニットがメモリ資源を共有するはずがなかった。
【００１３】
現在、しばしば、複数の処理ユニットが同一のシリコンダイ上に集積される。これらの処理ユニットは同じ物理空間内にあるので、これらの処理ユニットは同じ物理メモリへの電気的アクセスを有し、その物理メモリが共有される。しかしながら、処理ユニットが共有物理メモリへのアクセスを有するとはいえ、以下に限られないが例えば基本入出力システム、オペレーティングシステム、３次元ランタイムアプリケーション、及びアプリケーションインタフェースなどのシステムエンティティは依然として、共有物理メモリがあたかも別個の物理メモリであるかのように、処理ユニットに割り当てられたメモリを使用している。従って、システム始動時に、基本入出力システムが、各処理ユニットに対して特定量のメモリを定めており、現時において、共有物理メモリの割当てをランタイム中に動的に再配分する手法は存在しない。そこで、メモリを再配分するのではなく、処理ユニットは、現システムエンティティを実行し続けるために、仮想メモリを使用するか、その処理ユニットの割当てメモリ空間を使用するシステムエンティティを閉じるかしている。
【００１４】
仮想メモリを使用する現行手法は、コンピューティングシステムの性能低下を引き起こす。例えば処理ユニットを呼び出すなどのその他の手法も、システムの性能を低下させる。また、その処理ユニット上で実行されることができる同時アプリケーション数を減らすことなどの手法は非効率的である。というのは、異なる処理ユニットに割り当てられたメモリ空間が利用可能であり得るからである。
【００１５】
これら及びその他の問題を解決するため、実施形態は、共有物理メモリ内の静的メモリ空間を、第１の処理ユニットから第２の処理ユニットへとランタイム中に動的に再配分する。第２の処理ユニットに割り当て直すべき第１の処理ユニットに割り当てられた物理メモリ内のメモリ空間の量を決定するために、コンピューティングシステムにメモリ配分マネジャが含められ得る。メモリ配分マネジャは、第１の処理ユニット上で現在起動している如何なるシステムエンティティも、決定された量のメモリ空間を第２の処理ユニットに割り当て直すのに先立って完了されることを確実にするために、これらの処理ユニットと通信し得る。第１の処理ユニットに割り当てられたメモリ空間上でシステムエンティティが今や起動していないことを確実にするメモリ配分マネジャを使用しないと、静的メモリ空間の再配分はシステム障害を生じさせ得る。
【００１６】
どのシステムエンティティも今や起動していないことを第１の処理ユニットがメモリ配分マネジャと通信すると、メモリ配分マネジャは、決定された量の静的メモリ空間をランタイム中に整備し得る。この整備されたメモリ空間が、第２の処理ユニットに割り当てられ得る。より多くのメモリを第２の処理ユニットが必要とすることにランタイム中に動的に応えることにより、システムは共有物理メモリ内のメモリを効率的に使用し得る。
【００１７】
従って、様々な実施形態は、ランタイム中に共有物理メモリ内のメモリ空間の再配分及び再割り当てを行うことを記述する。メモリ配分マネジャを使用してメモリ空間を再配分することにより、処理ユニットへの共有物理メモリの割り当てが効率的になり得る。例えば、メモリ空間の現行割当ては静的であるため、第１の処理ユニットが利用可能な割当てメモリ空間を有しながら、第２の処理ユニットがアプリケーションを起動するためにもっと多くのメモリ空間を必要としていることがある。ここに記載される実施形態においては、共有物理メモリ内のメモリ空間が第１の処理ユニットから第２の処理ユニットへとランタイム中に割り当て直されることができ、これは非常に効率的に電力及び性能を保存する。
【００１８】
装置は、プロセッサ回路と、プロセッサ回路上で動作可能なメモリ配分マネジャとを含み得る。メモリ配分マネジャは、第１の処理ユニットに割り当てられる第１のメモリ空間と、第２の処理ユニットに割り当てられる第２のメモリ空間とを有する物理メモリを再配分し得る。メモリ配分マネジャは、第２の処理ユニットに割り当てるべき第１のメモリ空間の量を決定し、第１のメモリ空間をランタイム中に整備し得る。メモリ配分マネジャは、切れ目のない整備されたメモリ空間を第２の処理ユニットに割り当て得る。
【００１９】
メモリ配分マネジャは、メモリ配分マネジャ実行コンテキストのコンポーネントとし得る。一実施形態において、メモリ配分マネジャ実行コンテキストは仮想マシンモニタとし得る。仮想マシンモニタは、コンピューティング装置が複数の等しい実行環境をサポートすることを可能にする仮想マシン又はホストオペレーティングシステムを有し得る。他の一実施形態において、メモリ配分マネジャ実行コンテキストは、ソフトウェアコンポーネントとして中央演算処理ユニット上で動作してもよいし、オペレーティングシステム上で動作してもよいし、あるいはハードウェアユニットとして動作してもよい。メモリ配分マネジャは、より多くのメモリ空間が或る処理ユニットに割り当てられ得るように物理メモリを再配分し得る。例えば、メモリ配分マネジャは、検出されたシステムニーズに基づいて、メモリ割当てを変更するアクションを起こし得る。代わりに、あるいは加えて、メモリ配分マネジャは、例えばアプリケーション又はオペレーティングシステムなどのシステムエンティティからの要求に応答して、共有物理メモリ割当てを変更してもよい。
【００２０】
ここに記載される実施形態は、従来のメモリ割当て技術に対して幾つかの利点を提供し得る。第１の処理ユニットから第２の処理ユニットへとメモリ空間を割り当て直すことにより、共有物理メモリがいっそう効率的に使用される。より効率的なメモリ空間の使用は、個々のアプリケーション及び／又は集合的なアプリケーション群のスピードを高め得る。また、より効率的なメモリ空間の使用は、より多くのアプリケーションが同時に動作することを可能にし得る。例えば、或る処理ユニット上で同時に実行されてメモリ空間を使用するアプリケーションの数を、別のアプリケーションがその処理ユニット上で実行されてそのメモリ空間を使用するようにするために減らす必要をなくし得る。その代わりに、異なる処理ユニットに割り当てられた利用可能なメモリ空間を、ランタイム中に再割り当てし得る。システムが再始動するまで待つことに代えて、ランタイム中に処理ユニットにメモリを割り当て直すことにより、システム性能の低下を引き起こす現行手法を不要とし得る。例えば仮想メモリを用いたり、あるいはグラフィック処理ユニットメモリ資源を呼び出したりするなどの、システム性能を低下させる一部の現行手法を回避可能とし得る。さらに、ランタイム中にメモリ空間を割り当て直すことにより、システムが再始動することを待つ代わりに、ランタイム中に不要なメモリの電源を落とし得るので、電力を節約し得る。低減された電力消費は、システムが電池電力で動作するときに特に有利となり得る。何故なら、それにより電池の寿命を延長することができるからである。
【００２１】
以下、図面を参照するが、図面においては全体を通して、同様の要素は似通った参照符号を用いて参照する。以下の説明においては、説明の目的で、その完全なる理解を提供するために数多くの具体的詳細事項を明らかにする。しかしながら、明らかなように、これら新規の実施形態は、これらの具体的詳細事項を用いずにも実施され得るものである。また、周知の構造及び装置は、その記述を容易にするためにブロック図の形態で示す。特許請求に係る事項の精神及び範囲に入る全ての変更、均等及び代替に及ぶことが意図される。
【００２２】
図１は、例示的なコンピューティングプラットフォームを実装するシステム１００を例示している。システム１００は、複数のプロセッサ回路を含み得る。複数のプロセッサ回路は少なくとも第１の処理ユニットと第２の処理ユニットとを含み得る。複数のプロセッサ回路のことを、グラフィック処理ユニット１１０及び中央演算処理ユニット１２０として表記することがある。システム１００は、共有物理メモリ１２５及びメモリ配分マネジャ実行コンテキスト１３５を含み得る。
【００２３】
グラフィック処理ユニット１１０は、ディスプレイへの出力に利用可能な画像の作成を加速するよう、メモリの操作及び改変を行う。グラフィック処理ユニット１１０は、計算集約的な計算を急速なスピードで実行することによって、コンピュータグラフィックスを効率的に操作する。グラフィック処理ユニット１１０は、データの大きいブロックを並列に速く処理する。中央演算処理ユニット１２０は、基本算術演算及び論理演算を行うことによって命令を実行し得る。図１には示していないが、システム１００は、これらに加えて、あるいは代えて、以下に限られないが例えばデジタル信号処理ユニット及び／又はネットワーク処理ユニットなどの処理ユニットを含み得る。
【００２４】
共有物理メモリ１２５は、処理ユニットに割り当てられるメモリ空間を含み得る。例えば、図１において、共有物理メモリ１２５は、グラフィック処理ユニット部分１２６と中央演算処理ユニット部分１２７とに割り当てられるメモリ空間を含み得る。図示していないが、他の実施形態において、共有物理メモリ１２５は、例えばシステム１００上のデジタル信号処理ユニット及び／又はネットワーク処理ユニットなどの、システム１００によって実装されるその他の処理ユニットに割り当てられるメモリ空間を含み得る。
【００２５】
システム１００は、メモリ配分マネジャ実行コンテキスト１３５を含み得る。メモリ配分マネジャ実行コンテキスト１３５は、多様は手法で実装され得る。一実施形態において、メモリ配分マネジャ実行コンテキスト１３５は、仮想マシンモニタとして実装され得る。仮想マシンモニタとして、メモリ配分マネジャ実行コンテキスト１３５は、システム１００上で起動される様々な仮想マシンを連係させ得る。例えば、メモリ配分マネジャ実行コンテキスト１３５は、システム１００上で起動されるオペレーティングシステムを変化させる仮想マシンと連携し得る。仮想マシンは、物理的なコンピューティング装置のようなプログラムを実行するコンピューティング装置のソフトウェア実装を有し得る。例えば、仮想マシンは、オペレーティングシステムの実行を支援し得る。他の一実施形態において、メモリ配分マネジャ実行コンテキスト１３５は、ソフトウェアコンポーネントとして中央演算処理ユニット１２０上で動作するように実装され得る。別の他の一実施形態において、メモリ配分マネジャ実行コンテキスト１３５は、例えば電力制御ユニット又はマネージャビリティエンジンなど、オペレーティングシステム、ドライバ又はマイクロコントローラ上で動作する実装されてもよい。更なる他の一実施形態において、メモリ配分マネジャ実行コンテキスト１３５は、ソフトウェア制御に晒されるレジスタインタフェースを有するハードウェアユニットとして動作してもよい。実施形態は、この点で限定されるものではない。
【００２６】
メモリ配分マネジャ実行コンテキスト１３５は、メモリ配分マネジャ１３７を含み得る。メモリ配分マネジャ１３７は、ランタイム中に処理ユニットに、より多くの、あるいはより少ない共有物理メモリ１２５が割り当てられるように、物理メモリを再配分することを担い得る。メモリ配分マネジャ１３７は、検出されたシステムニーズに基づいて、物理メモリのメモリ割当てをランタイム中に変更するアクションを起こし得る。メモリ配分マネジャ１３７は、以下に限られないが例えばアプリケーション又はオペレーティングシステムなどのシステムエンティティからの要求に応答して、共有物理メモリ１２５の割当てをランタイム中に変更してもよい。代わりに、あるいは加えて、メモリ配分マネジャ１３７は、より多くのメモリをランタイム中に取得するための処理ユニット１１０、１２０からの要求に応答してもよい。メモリ配分マネジャは、中央演算処理ユニット、グラフィックドライバ、論理回路、又はオペレーティングシステムのうちの１つ上で動作し得る。
【００２７】
システム１００は、処理ユニット上で動作し、且つ該処理ユニットに割り当てられた共有物理メモリ１２５のメモリ空間を使用する、１つ以上のシステムエンティティ１３０を含み得る。システムエンティティ１３０は、以下に限られないが、アプリケーション、ドライバ、及び／又はオペレーティングシステムを含み得る。例えば、システムエンティティ１３０は、例えば３次元ゲーム及び／又はビデオなどのマルチメディアの作成又は更新に使用されるアプリケーションとし得る。アプリケーションは、以下に限られないが例えば、２次元質感アプリケーション、３次元質感アプリケーション、音響効果アプリケーション、及び陰影付けアプリケーションなど、タスク又は機能を含み得る。代わりに、システムエンティティ１３０は、例えばＵｎｉｘ（登録商標）又はＷｉｎｄｏｗｓ（登録商標）などのオペレーティングシステムを含んでいてもよい。
【００２８】
システム１００はグラフィックドライバ１４０を含み得る。動作時、或るシステムエンティティ１３０が、ビデオコンテンツのフレーム１５５を提示するためにグラフィックドライバ１４０を呼び出し得る。グラフィックドライバ１４０は、ディスプレイ１６０へのフレームの提示を取り扱い得る。システム１００はまた、デジタルディスプレイ１６０と通信可能に結合され得る。
【００２９】
図２は、共有物理メモリを動的に再配分することの一実施形態を例示している。図２は、当初の配分の共有物理メモリ２０１ａと、後の配分の共有物理メモリ２０１ｂとを例示している。共有物理メモリ２０１ａ及び２０１ｂはブロックの組として描かれており、１つのブロックが１つの物理メモリページを表している。当初の配分の共有物理メモリ２０１ａにおいて、第１の処理ユニット２５０に割り当てられた静的メモリが、第２の処理ユニット２６０に割り当てられた静的メモリの上に示されている。第１の処理ユニット２５０に割り当てられた静的メモリは、第２の処理ユニット２６０に割り当てられた静的メモリに連続し得る。例えば、第１の処理ユニット２５０は、０から５００メガバイトのメモリ空間を含み得る。第２の処理ユニット２６０は、５００から１０００メガバイトのメモリ空間を含み得る。一実施形態において、第１の処理ユニット２５０は中央演算処理ユニット１２０を表し、第２の処理ユニット２６０はグラフィック処理ユニット１１０を表し得る。他の一実施形態において、第１のメモリ空間はグラフィック処理ユニット１１０を表し、第２のメモリ空間は中央演算処理ユニット１２０を表し得る。更なる他の一実施形態において、第１のメモリ空間はネットワーク処理ユニットを表し、第２のメモリ空間は中央演算処理ユニット１２０を表し得る。他の一実施形態において、他の処理ユニットに割り当てられた第３又は更なるメモリ空間が存在し得る。
【００３０】
共有物理メモリ２０１ａは再配分され得る。第１の処理ユニット２５０がより多くのメモリを必要とするとき、共有物理メモリ２０１ａは、２０１ｂに示されるように再配分され得る。共有物理メモリ２０１ｂは、共有物理メモリ２０１ａとは別の状態であり、システムは、共有物理メモリ２０１ａに示される状態又は共有物理メモリ２０１ｂに示される状態の何れかとすることができる。共有物理メモリ２０１ｂに示されるように、第１の処理ユニット２５０、又は第１の処理ユニット２５０上で起動されているシステムエンティティは、より多くのメモリ空間を要求し得る。メモリ配分マネジャ１３７が、第２の処理ユニット２６０に現在割り当てられている静的メモリ空間のうちの或る量が第１の処理ユニット２５０に割り当て直されることを要求し得る。
【００３１】
現在、静的メモリ空間は、ランタイム中に割り当て直されることができない。メモリ配分マネジャ１３７を使用しないと、静的メモリの再配分は、システム障害を生じさせることなしでは可能でないことがある。メモリ配分マネジャ１３７は、第１の処理ユニット２５０及び第２の処理ユニット２６０と通信し得る。この通信は、第２の処理ユニット２６０に現在割り当てられている静的メモリ空間のうちの要求量が、システム障害を生じさせることなく第１の処理ユニット２５０に割り当て直され得るように、第２の処理ユニット２６０上で現在起動しているシステムエンティティ１３０が完了されることを確実にし得る。
【００３２】
共有メモリ割当て２０１ｂは、第１の処理ユニット２５０及び第２の処理ユニット２６０に割り当てられるメモリ空間の、新たな望ましい配分を示している。第２の処理ユニット２６０から第１の処理ユニット２５０に割り当てられるメモリ空間は、連続的なメモリ空間である。例えば、第１のメモリ空間のうちの１２８ＭＢが、第２の処理ユニット２６０から第１の処理ユニット２５０に再割り当てされることを要求され得る。第２の処理ユニット１１０のメモリ空間のうちのこの１２８ＭＢは、そのメモリ空間のうちの、第１の処理ユニット１２０のメモリ空間に連続した１２８ＭＢである。
【００３３】
図３は、より多くのメモリの要求を受信するメモリ配分マネジャ１３７の論理フロー３００の一実施形態を例示している。ここには、開示のアーキテクチャの新規な態様を実行する例示的な方法を表す１つ以上のフローが含まれている。ここでは、説明の容易さの目的で、これら１つ以上の方法はフローチャート又はフロー図の形態で図示され且つ一連のアクト（活動）として図示及び説明されるが、理解及び認識されるべきことには、これらの方法はこのアクト順によって限定されるものではない。というのは、一部のアクトは、これらの方法に従って、ここに図示されて説明されるものとは異なる順序で行われてもよく、且つ／或いは他のアクトと同時に行われてもよいからである。例えば、当業者が理解及び認識するように、方法は代替的に、例えば状態図においてのように、一連の相互に関係のある状態又はイベントとして表現されることができる。また、或る新規な実装に関して、方法内に示される全てではないアクトのみ必要とされることがある。
【００３４】
論理フロー３００は、ブロック３０５にて、或る処理ユニットのためのメモリ空間の要求を受信し得る。メモリ配分マネジャ実行コンテキスト１３５が、共有物理メモリを再配分することの要求を受信し得る。この要求は、以下に限られないが例えばオペレーティングシステム、ドライバ、又はアプリケーションなどの、システムエンティティ１３０から送信され得る。システムエンティティ１３０は、処理ユニット１１０、１２０を用いて動作し得る。システムエンティティ１３０は、処理ユニット１１０、１２０に割り当てられている共有物理メモリ１２５のメモリ空間を使用し得る。しかしながら、処理ユニット１１０、１２０に割り当てられている共有物理メモリ１２５内のメモリ空間がフル（いっぱい）になることがある。システムエンティティ１３０が処理ユニット１１０、１２０上で動作するようにため、システムエンティティ１３０は、より多くのメモリ空間が処理ユニット１１０に割り当てられることを要求し得る。
【００３５】
例えば、３次元アプリケーションが、グラフィック処理ユニット１１０が当該３次元アプリケーションを実行し且つ３次元画像のテクスチャを包含あるいは保持するために、より多くの物理メモリが必要なことを検出し得る。グラフィックドライバ１４０が、再配分要求を起こし得る。グラフィックドライバ１４０は、現在どれだけの物理メモリがグラフィック処理ユニット１１０に割り当てられているかを通知され得る。グラフィックドライバ１４０は、オペレーティングシステム、グラフィック処理ユニット１１０、又はメモリ配分マネジャ１３７の何れかから通知を受け得る。３次元アプリケーションが、資源を創出あるいは粉砕し、また、グラフィック処理ユニット１１０に割り当てられているメモリを消費する処理を実行するとき、グラフィックドライバ１４０は、これらの処理によってどれだけ多くのメモリがグラフィック処理ユニット１１０上で使用されているかを追跡し得る。グラフィック処理ユニット１１０上の３次元アプリケーションの創出資源及び処理によって必要とされるメモリの量が、グラフィック処理ユニット１１０に現在割り当てられている物理メモリの量を超えるとき、グラフィックドライバ１４０は、更なる物理メモリを要求するためにメモリ配分マネジャ１３７に信号伝達し得る。同様に、必要なメモリの量が、グラフィック処理ユニット１１０に対して現在割り当てられている物理メモリ閾量を下回るとき、グラフィックドライバ１４０は、グラフィック処理ユニット１１０がより少ない物理メモリを使用し得ることを、メモリ配分マネジャ１３７に通知することができる。
【００３６】
共有物理メモリ１２５のグラフィック処理ユニット部分１２６がフルであるとドライバが決定するとき、その時のコマンドバッファが、実行のためにグラフィック処理ユニット１１０にフラッシュされ得る。グラフィック処理ユニット１１０は、３次元アプリケーションが更なるメモリの要求をメモリ配分マネジャ１３７に送信するのに先立って、コマンドバッファを首尾よく実行し得る。
【００３７】
他の一実施形態において、アプリケーションが更なるメモリを要求することに代えて、オペレーティングシステムが更なるメモリを要求し得る。オペレーティングシステムは、物理メモリについてのアプリケーションの需要を監視することができ、オペレーティングシステムは、アプリケーションのニーズに基づいてメモリ配分マネジャ１３７が物理メモリを再配分することを要求し得る。
【００３８】
更なる他の一実施形態において、ユーザが共有物理メモリ１２５の再割り当てを要求してもよい。システム１００は、ランタイム中の手動設定モードをサポートすることができ、それにより、ユーザは、システム１００の共有物理メモリ１２５の好ましい配分を指定し得る。ユーザは、以下に限られないが例えば制御パネル、キーボード、ジョイスティック、及び／又はタッチスクリーンなどのインタフェースを介して、共有物理メモリ１２５の割当てを指定し得る。指定されると、メモリ配分マネジャ１３７は、ユーザ要求を守るように共有物理メモリを再割り当てすることの要求を受信し得る。結果として、ユーザは、システムを再始動する必要なく、既存のアプリケーションプロファイルの完全に外にあるアプリケーションを走らせ得る。
【００３９】
例えば、ユーザが、中央演算処理ユニット１２０よりも、グラフィック処理ユニット１１０の使用を好むことがある。ユーザは、入力装置を用いて、好ましいメモリ割当てをメモリ配分マネジャ１３７に提供し得る。ユーザは、好ましいメモリ割当てを、例えばシステム始動時又はランタイム中のどちらでもといった、何らかの時点で提供し得る。故に、グラフィック処理ユニット１１０が更なるメモリを必要とするとき、メモリ配分マネジャ１３７は、グラフィック処理ユニットに割り当てるべき利用可能なメモリ空間を作るように中央演算処理ユニット１２０に要求を送り得る。
【００４０】
他の一実施形態において、共有物理メモリ１２５を再割り当てすることの要求は、アプリケーション固有のプロファイルに基づいてもよい。システム１００の動作中の何らかのときに、システムエンティティ１３０としてアプリケーションをロードすることができ、アプリケーションはアプリケーション固有プロファイルを含み得る。アプリケーション固有プロファイルは、ランタイム中に物理メモリの分配への変更を要求し得る。メモリ配分マネジャ１３７は、アプリケーション固有プロファイルから、共有物理メモリ１２５内のメモリ空間を割り当て直すことの要求を受信し得る。
【００４１】
論理フロー３００は、ブロック３１０にて、共有物理メモリ１２５内に未割当てメモリ空間が存在するかを決定し得る。メモリ配分マネジャ１３７が要求を受信し得る。メモリ配分マネジャ１３７は、処理ユニット１１０、１２０に割り当てるのに利用可能なメモリ空間が存在するかを決定し得る。メモリ配分マネジャ１３７は、共有物理メモリ１２５内の割り当てられていないメモリ空間を特定することによって、更なるメモリ空間が利用可能であるかを決定し得る。
【００４２】
未割当てメモリが存在することをメモリ配分マネジャ１３７が決定したとき、論理フロー３００は、ブロック３１５にて、未割当てメモリを処理ユニット１１０、１２０に割り当て得る。メモリ配分マネジャ１３７は、処理ユニット１１０、１２０に関連付けられたハードウェアレジスタを再プログラムすることによって、利用可能な未割当てメモリ空間を処理ユニット１１０、１２０に割り当て得る。例えば、処理ユニット１１０、１２０は、一組の利用可能なアドレス可能物理メモリを規定する一対のメモリアドレス範囲レジスタを維持管理し得る。処理ユニット１１０、１２０は、開始アドレス用の第１のレジスタと、終了アドレス用の第２のレジスタとを有し得る。物理メモリの割当てが変わるとき、メモリ配分マネジャ１３７は、影響される各処理ユニット１１０、１２０のこれらのレジスタに新たな値を書き込み得る。一実施形態において、新たな値が書き込まれたのち、処理ユニット１１０、１２０は、これらのレジスタへの変更の割込み通知を受信し得る。これは、処理ユニット１１０、１２０上で動作しているソフトウェアコンポーネントによって取り扱われる。ソフトウェアコンポーネントは、有効なアドレス可能メモリ空間について自身がローカルに維持管理している情報を更新し得る。他の一実施形態において、新たな値が書き込まれた後、メモリ配分マネジャ１３７が、レジスタを更新し、影響される処理ユニット１１０、１２０上のソフトウェアコンポーネントにソフトウェアメッセージを介して通知し得る。更なる他の一実施形態において、これらソフトウェアコンポーネントが、利用可能なメモリ空間を維持管理することを担ってもよく、ソフトウェアコンポーネントは、メモリ空間の割当てが変わったかを決定するために、周期的にハードウェアレジスタにポーリングし得る。
【００４３】
論理フロー３００は、ブロック３２０にて、割り当てられるメモリ空間の量及び位置を応答し得る。メモリ配分マネジャ１３７が、処理ユニット１１０、１２０に割り当てられるメモリ空間の量を有する応答を要求元に送信し得る。一実施形態において、メモリ配分マネジャ１３７は、非同期応答を要求元に送信し得る。共有物理メモリが未割当てメモリ空間を含んでいるとメモリ配分マネジャ１３７が決定したとき、メモリ配分マネジャ１３７は、未割当てメモリ空間の全て又は一部を処理ユニット１１０、１２０に割り当て得る。例えば、メモリ配分マネジャ１３７は、システムエンティティを実行するために処理ユニット１１０、１２０によって必要とされる最小限の量のメモリ空間を割り当て得る。メモリ配分マネジャ１３７によって割り当てられる量は、ユーザによって要求された量に等しくてもよく、且つ／或いはそのシステムエンティティを動作させるのに十分なものであってもよい。
【００４４】
他の例では、メモリ配分マネジャ１３７によって割り当てられる量が、要求量より少なく、且つ／或いはそのシステムエンティティを動作させるのに不十分であることがある。メモリ配分マネジャ１３７は、他の処理ユニットからのメモリを要求し得る。例えば、メモリ配分マネジャ１３７は、割り当てられていない物理メモリ空間は存在しないと決定することがある。より多くのメモリが必要とされるとき、論理フロー３００は、ブロック３３５にて、少なくとも１つの他の処理ユニットに、より少ないメモリを使用するように要求を送り得る。一実施形態において、メモリ配分マネジャ１３７は、非同期要求を送信し得る。
【００４５】
必要に応じての一実施形態において、論理フロー３００は、ブロック３２５にて、少なくとも１つの他の処理ユニットが現在、その処理ユニットに関する閾量より多くを使用しているかを決定し得る。メモリ配分マネジャ１３７が、他の処理ユニットがその処理ユニットに関する閾量又は最小量より多くを使用しており且つ／或いは割り当てられているかを決定し得る。例えば、メモリ配分マネジャ１３７は、処理ユニットに割り当てられる共有物理メモリのメモリ空間の閾量を指定し得る。他の例では、閾量は、システム１００のユーザによって指定されてもよい。更なる他の一例において、閾量は、オペレーティングシステム又はアプリケーション固有プロファイルによって指定されてもよい。閾量に基づき、メモリ配分マネジャ１３７は、例えばグラフィック処理メモリ１１０などの或る処理ユニットが閾量より多くのメモリ空間を現在割り当てられていることを決定し得る。結果として、メモリ配分マネジャ１３７は、グラフィック処理メモリ１１０がもっと少ないメモリを使用することを要求し得る。メモリ配分マネジャは、グラフィック処理ユニット１１０が割当てメモリ空間を或る特定量だけ削減することを要求し得る。実施形態は、以上の例に限定されるものではない。
【００４６】
論理フロー３００は、ブロック３３０にて、利用可能なメモリ空間がないとの応答を送信し得る。例えば、或るシステムエンティティ１３０が、より多くのメモリ空間の要求を送信したとし得る。メモリ配分マネジャ１３７は、ブロック３１０で、未割当てのメモリ空間が存在しない且つ／或いは十分な量の未割当てメモリ空間が存在しないと決定し得る。メモリ配分マネジャ１３７は、ブロック３２５で、どの処理ユニットも閾量より多くを現在使用していないことを決定し得る。結果として、メモリ配分マネジャ１３７は、要求に対して、その処理ユニットに割り当てることに利用可能なメモリ空間がないことを応答し得る。
【００４７】
論理フロー３００は、ブロック３３５にて、少なくとも１つの他の処理ユニットに、メモリ空間の量を削減するよう、非同期要求を送信し得る。メモリ配分マネジャ１３７が、ブロック３１０での共有物理メモリ１２５の全てが割り当て済みとの決定に基づいて、少なくとも１つの他の処理ユニットに、より少ないメモリ空間を使用するよう、非同期要求を送信し得る。場合により、メモリ配分マネジャ１３７は、或る処理ユニットに、その処理ユニットが閾量より多くを使用しているとの決定に基づき、より少ないメモリ空間を使用するよう、非同期要求を送信し得る。
【００４８】
論理フロー３００は、ブロック３４０にて、どのメモリ空間も現在利用可能でないがメモリ空間が利用可能になり得るとの応答を送信し得る。メモリ配分マネジャ１３７が、メモリ空間を処理ユニット１１０、１２０に割り当てることができるかを決定するとき、要求元にコールバックを行い得る。例えば、メモリ配分マネジャ１３７は、その処理ユニットのための更なるメモリ空間の要求を起こしたシステムエンティティ１３０に応答を送信し得る。メモリ配分マネジャ１３７は、どのメモリ空間も現在利用可能でないが、メモリ空間が利用可能になる場合及び／又は時にはメモリ配分マネジャ１３７がそのシステムエンティティ１３０にメッセージを非同期的に送信することになる、と応答し得る。
【００４９】
論理フロー３００は、ブロック３４５にて、少なくとも１つの他の処理ユニットが共有物理メモリ内に利用可能なメモリ空間を作り出すことができたかを決定し得る。他の処理ユニットが共有物理メモリ１２５内に利用可能なメモリ空間を作り出すことができた場合、論理フロー３００は、ブロック３２０にて、割り当てられるメモリ空間の量を応答し得る。この応答は、要求元に、メモリ配分マネジャ１３７が利用可能なメモリ空間を処理ユニット１１０、１２０に割り当て得ることを通知し得る。新たに割り当てられたメモリの結果として、システムエンティティ１３０は処理ユニット１１０、１２０上で動作し得る。
【００５０】
そうではなく、どの処理ユニット１１０、１２０も共有物理メモリ内に利用可能なメモリ空間を作り出さなかった場合、論理フロー３００は、ブロック３３０にて、どのメモリ空間も利用可能でないと応答し得る。例えば、どの処理ユニット１１０、１２０もその最小量の閾値より多くを使用していないことがある。その場合、１つ以上の処理ユニットが更なるメモリの恩恵を受け得ることにかかわらず、システムは、全てのメモリを完全に利用して最適に動作していることがある。
【００５１】
図４は、処理ユニット１１０、１２０に割り当てられたメモリの量が本発明の実施形態に従って削減される論理フロー４００の一実施形態を例示している。論理フロー４００は、利用可能なメモリ空間を処理ユニットが作り出すことを描いている。論理フロー４００は、ここに記載される１つ以上の実施形態によって実行される処理の一部又は全てを代表し得る。
【００５２】
図４に示す例示実施形態において、論理フロー４００は、ブロック４０５にて、割り当て直すべきメモリ空間の量を決定し得る。メモリ配分マネジャ１３７が、処理ユニットから受信した要求に基づいてメモリ空間の量を決定し得る。メモリ配分マネジャ１３７は、決定された量の割当てメモリを何時にどの処理ユニットが削減すべきかを特定し得る。例えば、メモリ配分マネジャ１３７は、いつ処理ユニットが最小閾量より多くの共有物理メモリ１２５割り当てられるかを特定し得る。他の一例において、メモリ配分マネジャ１３７は、より多くのメモリ空間の要求を受信し、アプリケーションプロファイル又はユーザ要求に基づいて、或る特定の処理ユニットに割り当てられたメモリ空間の量が減らされるべきであると決定し得る。
【００５３】
論理フロー４００は、ブロック４１０にて、処理ユニットによって利用されているメモリ空間を削減するよう、要求を送信し得る。メモリ配分マネジャ１３７が、処理ユニットに要求を送信し得る。他の例では、メモリ配分マネジャ１３７は、処理ユニットを管理するエンティティに要求を送信してもよい。例えば、グラフィック処理ユニット１１０が共有物理メモリ１２５内のその割当てメモリ空間を削減することをメモリ配分マネジャ１３７が要求する場合、メモリ配分マネジャ１３７は、そのグラフィック処理ユニット１１０を管理するグラフィックドライバ又はオペレーティングシステムに要求を送信してもよい。他の例では、中央演算処理ユニット１２０が共有物理メモリ１２５内のその割当てメモリ空間を削減することをメモリ配分マネジャ１３７が要求する場合、メモリ配分マネジャ１３７は、中央演算処理ユニット１２０を管理するオペレーティングシステムに要求を送信してもよい。
【００５４】
メモリ配分マネジャ１３７から送信される要求は、処理ユニットに割り当てられているメモリ空間を削減すべき量を含み得る。一実施形態において、メモリ配分マネジャ１３７は、処理ユニット１１０、１２０がそのメモリ空間の利用を、図３でシステムエンティティによって必要とされる全体量だけ削減することを要求し得る。他の一実施形態において、メモリ配分マネジャ１３７は、図３で要求されるメモリ空間の総量より少なく要求し得る。例えば、メモリ配分マネジャ１３７は、一部のメモリ空間を未割当てメモリ空間から割り当て得る。他の例では、メモリ配分マネジャ１３７は、メモリ空間を別の処理ユニットから割り当て得る。
【００５５】
論理フロー４００は、ブロック４１５にて、処理ユニット１１０、１２０に割り当てられたメモリ空間が削減されることになるとの応答を受信し得る。メモリ配分マネジャ１３７が、処理ユニット１１０、１２０を管理するエンティティが該処理ユニットに割り当てられている共有物理メモリ１２５内のメモリ空間の量を非同期的に削減することになるとの応答を受信し得る。処理ユニット１１０、１２０を管理するエンティティは、共有物理メモリ１２５のその処理ユニットの割当て部分内で、決定された量だけメモリ空間を非同期的に削減し得る。
【００５６】
物理メモリのその処理ユニットの部分内に、利用可能なメモリ空間が不十分にしか存在しない場合、図５にて更に説明するようにしてメモリ空間が利用可能にされ得る。共有物理メモリのその処理ユニットの部分１２６、１２７内に、利用可能なメモリ空間が存在するようになると、処理ユニット１１０、１２０は、メモリ配分マネジャ１３７に、共有物理メモリ１２５を整備するよう要求を送信し得る。
【００５７】
論理フロー４００は、ブロック４２０にて、決定された量のメモリ空間を整備することの要求を受信し得る。メモリ配分マネジャ１３７が、処理ユニットを管理するエンティティが要求量のメモリ空間を利用可能にした後にメモリ空間を整備することの要求を受信し得る。メモリ配分マネジャ１３７は、共有物理メモリ１２５を再配分するように利用可能メモリ空間を整備することの整備要求を受信し得る。
【００５８】
論理フロー４００は、ブロック４２５にて、決定された量のメモリ空間を整備し得る。メモリ配分マネジャ１３７が、第２の処理ユニットに割り当てられるべきメモリ空間内のメモリ資源を、第１の処理ユニットに割り当てられたままにされる利用可能なメモリ空間にコピーすることによって、決定された量のメモリ空間を整備し得る。メモリ資源は、メモリ空間内の情報及び／又はメモリアレイとし得る。第２の処理ユニットに割り当てられるべきメモリ空間は、メモリ配分マネジャによって要求された、第１の処理ユニットに割り当てられたメモリ空間のうちの上記決定された量とし得る。決定された量のメモリ空間内のメモリ資源は、第１の処理ユニットに割り当てられたままにされる利用可能メモリ空間にコピーされ得る。この再配置により、利用可能なメモリ空間を、第２の処理ユニットに割り当てられるべき決定された量のメモリ空間に置き得る。決定された量のメモリ空間内のメモリ資源は、第１の処理ユニットに割り当てられたままにされるメモリ空間にコピーされ得る。
【００５９】
例えば、システム始動時、メガバイト０から１００が第１の処理ユニットに割り当てられ、メガバイト１００から２００が第２の処理ユニットに割り当てられ得る。メモリ配分マネジャ１３７が、第１の処理ユニットのメモリ空間のうちの２０メガバイトを第２の処理ユニットに割り当て直すことの要求を送信し得る。第１の処理ユニットは、共有物理メモリ１２５の第１の処理ユニットの部分内に、利用可能なメモリを作り出し得る。第１の処理ユニットを管理するエンティティによって利用可能にされるメモリ空間は、その処理ユニットに割り当てられたメモリ空間の至る所に位置し得る。例えば、利用可能にされたメモリ空間の２０利用可能メガバイトは、メモリの０メガバイトから１００メガバイトまでの至る所に位置し得る。しかしながら、２０メガバイトのメモリ空間を第１の処理ユニットから第２の処理ユニットに割り当て直すためには、第１の処理ユニット内のそのメモリ空間が、第２の処理ユニットのメモリ空間と連続的である必要がある。従って、第１の処理ユニットから第２の処理ユニットに２０メガバイトを割り当てるには、メガバイト８０−１００が連続的である。メモリ配分マネジャ１３７は、メガバイト８０−１００内のメモリ資源をメガバイト０−８０内の利用可能メモリ空間にコピーすることによって、第１の処理ユニットに割り当てられたメモリ空間を整備する。
【００６０】
他の一実施形態において、メモリ配分マネジャ１３７は、決定された量のメモリ空間を、物理ページを再マッピングすることによって整備してもよい。換言すれば、別の処理ユニットに割り当て直されるメモリ空間内の物理ページがマッピングされ直されてもよい。処理ユニットはしばしば、例えば仮想アドレスといった、ソフトウェアによって使用されるメモリアドレスを、実際のメモリコンテンツを置くためにハードウェアによって使用される物理アドレスにマッピングするページ付け構造を介して、仮想アドレス空間を使用しているので、仮想メモリにおける物理ページの再マッピングは、コピーすることを不要にし得る。例えば、０ｘ５００００なる仮想アドレスが、ページテーブルを介して、０ｘｆｅ８０４２００なる物理メモリアドレスに変換され得る。オペレーティングシステムを仮想マシンとして動作させてシステムが仮想化される場合、更なるレベルの変換が存在する。仮想マシンによって見られる物理アドレスは、ハードウェアによって使用される実際の物理アドレスと必ずしも一致しない。更なるレイヤの変換が仮想メモリマネジャによって維持管理され得る。メモリ配分マネジャ１３７が、仮想メモリマネジャ内で動作する場合、又は仮想メモリマネジャと通信することができる場合、メモリ配分マネジャ１３７は、０ｘｆｅ８０４２００なる仮想マシン物理メモリ参照に、０ｘｆｅ８０４２００とは異なる物理ページを指し示させることができる。故に、処理ユニットが、連続的なメモリ領域を有するために物理アドレス０ｘｆｅ８０４２００を必要とする場合、仮想メモリマネジャの一部としてのメモリ配分マネジャ１３７は、処理ユニットが、実際にはこのアドレスが何らかの他の利用可能物理ページに変換されるときに、物理アドレス０ｘｆｅ８０４２００が利用可能であるとして認識することを可能にし得る。
【００６１】
論理フロー４００は、ブロック４３０にて、整備されたメモリ空間を再割り当てし得る。メモリ配分マネジャ１３７がメモリ空間を整備した後、共有物理メモリ１２５は動的に再配分され得る。メモリ配分マネジャ１３７は、ランタイム中に、決定されたメモリ空間を他の処理ユニットに動的に割り当て得る。一実施形態において、ハードウェア範囲レジスタが上述のように更新され得る。これらのレジスタは、処理ユニット間でのアクセス保護を強いるために使用され得る。上述の仮想メモリマネジャが再マッピングするケースにおいて、処理ユニットは、物理メモリ空間全体への完全な範囲でのアクセスを有することができ、仮想メモリマネジャ又はその他の機構を介してセキュリティ制御が強いられ得る。
【００６２】
図５は、メモリ配分マネジャと処理ユニットとの間での通信の一実施形態を例示している。図５において、メモリ配分マネジャ１３７は、グラフィック処理ユニット１１０に割り当てられたメモリを削減するためにグラフィックドライバ１４０と通信し得る。グラフィックドライバ１４０は、グラフィック処理ユニット１１０を管理し得る。ここに記載される実施形態は、この例に限定されるものではない。
【００６３】
メモリ配分マネジャ１３７が、グラフィック処理ユニット１１０によって利用されるメモリ空間を削減するよう、グラフィックドライバ１４０に要求５１０を送信し得る。グラフィックドライバ１４０が、共有物理メモリ１２５内の、グラフィック処理ユニット１１０に割り当てられたメモリ空間を削減することの要求５１０を受信し得る。この要求は、メモリ空間を削減すべき量を含み得る。
【００６４】
グラフィックドライバ１４０が、メモリ配分マネジャ１３７に応答して、グラフィック処理ユニット１１０に割り当てられたメモリ空間が削減されることになることを指し示す。グラフィックドライバ１４０が、いつグラフィック処理ユニット１１０がその現在タスクを完了するかを決定することの要求５２０を、グラフィック処理ユニット１１０に送信し得る。
【００６５】
グラフィック処理ユニット１１０は、解放される必要がある共有物理メモリ１２５のグラフィック処理ユニット部分１２６がもはやアクティブでない、例えば、もはや使用されていない、ようになるまで待機し得る。グラフィック処理ユニット１１０は、システム１００が同期されたままであることを確実にするため、メモリ空間を削減する前に、タスクが完了するまで待機し得る。同期化を確保することにより、処理ユニット１１０、１２９に割り当てられたメモリ空間の削減が、シームレスなプロセスになり得る。結果として、障害なく、且つ／或いはシステム１００がフリーズすることなく、全てのタスクが完了され得る。例えば、グラフィックドライバ１４０は、共有物理メモリ１２５のグラフィック処理ユニット部分１２６を削減するのに先立ち、グラフィック処理ユニット１１０によって受信された現在フレームが完了して全てのアクティブ描写コンテンツがレンダリングされるまで待機し得る。
【００６６】
グラフィック処理ユニット１１０がタスクを完了した後、グラフィック処理ユニット１１０は、グラフィックドライバ１４０に、現在タスクが完了したことの通知５２５を送信し得る。グラフィックドライバ１４０が、グラフィック処理ユニット１１０に現在割り当てられている共有物理メモリ１２５のグラフィック処理ユニット部分１２６内の、要求された量のメモリ空間を利用可能にし得る。メモリ空間は、メモリ資源を解放すること、メモリ資源をコピーすること、又は、以下に限られないが例えば磁気ディスク若しくはハードディスクなどの不揮発性の長期記憶装置にメモリ資源をページ付けすることによって利用可能にされ得る。メモリ資源は、メモリ空間内の情報及び／又はメモリアレイとし得る。例えば、グラフィック処理ユニット１１０は、もはや使用されておらず且つ／或いはもはや必要ない物理メモリ内のメモリ資源又はメモリアレイを消去することによって、利用可能なメモリ空間を作り出し得る。他の一例において、グラフィック処理ユニット１１０はメモリ資源を磁気ディスクにページ付けし得る。
【００６７】
メモリ空間が利用可能になると、グラフィックドライバ１４０が、グラフィックドライバ１４０によって利用可能にされたメモリ空間を整備するよう、メモリ配分マネジャ１３７に要求５３０を送信し得る。メモリ配分マネジャが、メモリ空間を整備し、故に共有物理メモリ１２５を再配分し得る。図４にて説明したように、メモリ配分マネジャは、要求されたメモリ空間を整備することができ、要求された量のメモリ空間が別の処理ユニットに割り当てられ得る。
【００６８】
再配分の後、グラフィックドライバ１４０が、利用可能なメモリ空間を作り出すために移動されたメモリ資源を再配置５３５し得る。グラフィックドライバ１４０は、既存の方法に従って、グラフィック処理ユニット１１０に割り当てられたメモリ空間にメモリ資源をコピーすることを管理し得る。
【００６９】
図６は、共有物理メモリを動的に再配分することの一実施形態を例示している。６０１での共有物理メモリの当初の配分において、第１の処理ユニットに割り当てられたメモリ空間を共有物理メモリ内の第１の組のキロバイト６０６とし、第２の処理ユニットに割り当てられたメモリを共有物理メモリの第２の組のキロバイト６０８とし得る。例えば、第１の処理ユニットは中央演算処理ユニット１２０であるとすることができ、第２の処理ユニットはグラフィック処理ユニット１１０であるとすることができる。ここに記載される実施形態は、この例に限定されるものではない。
【００７０】
共有物理メモリ６０２において、メモリ配分マネジャ１３７は、或る量のメモリ空間をグラフィック処理ユニット１１０に割り当てることを決定し得る。メモリ配分マネジャ１３７は、中央演算処理ユニット１２０に現在割り当てられている第１のメモリ空間６０６のうちの或る量をグラフィック処理ユニット１１０に割り当て直すことを要求し得る。共有物理メモリ６０２は、中央演算処理ユニット１２０に割り当てられるメモリ空間６０６の新たな望ましい配分を描いている。グラフィック処理ユニット１１０は、メモリ空間６０８とともに、新たに割り当てられたメモリ空間６１５を割り当てられ得る。共有物理メモリ６０２は、共有物理メモリの中央演算処理ユニット部分１２７から共有物理メモリ１２５のグラフィック処理ユニット部分１２６へと再配分されるメモリ６１５の量を例示している。例えば、第１のメモリ空間６０６のうちの１２８ＭＢが、中央演算処理ユニット１２０からグラフィック処理ユニット１１０に割り当て直され得る。
【００７１】
共有物理メモリ６０３において、中央演算処理ユニット１２０によって必要とされるメモリ空間の量を削減するために、中央演算処理ユニット１２０に割り当てられたメモリ空間６０６からのメモリ資源が仮想メモリにコピーされ得る。一実施形態において、中央演算処理ユニット１２０に割り当てられたメモリ空間６０６からのメモリ資源は、メモリアレイ、メモリ情報、及び／又はメモリコンテンツを含み得る。共有物理メモリ１２５の中央演算処理ユニット部分１２７からのメモリ空間が、以下に限られないが例えばグラフィックドライバ１４０又はシステムエンティティ１３０（例えばオペレーティングシステムなど）など、中央演算処理ユニット１２０を管理するエンティティによって利用可能にされ得る。中央演算処理ユニット１２０を管理するエンティティは、グラフィック処理ユニット１１０に割り当て直すのに利用可能な十分なメモリ空間を中央演算処理ユニット部分１２７が有するようになるまで、中央演算処理ユニット部分１２７からのメモリ資源を、以下に限られないが例えば磁気ディスク若しくはハードディスクなどの不揮発性の長期記憶装置上のページ付けされたメモリにコピーし得る。一実施形態において、中央演算処理ユニット１２０を管理するエンティティは、中央演算処理ユニット部分１２７からのメモリ資源を、中央演算処理ユニット１２０にアクセス可能な何らかの種類のバックアップ記憶装置にコピーし得る。不揮発性の長期記憶装置又はバックアップ記憶装置は、共有物理メモリ１２５より大きいが、それより低い処理速度を有し得る。
【００７２】
処理ユニットが連続的なメモリ空間を使用するとき、中央演算処理ユニット１２０メモリ空間内の利用可能にされたメモリ空間が、グラフィック処理ユニット１１０に割り当てられたメモリ空間に連続したメモリ空間６１５内にされ得る。共有物理メモリ６０４において、メモリ配分マネジャ１３７は、グラフィック処理ユニット１１０に割り当てられるメモリ空間６１５からのメモリ資源を、中央演算処理ユニット１２０に割り当てられたままにされる利用可能なメモリ空間６０６にコピーし得る。例えば、グラフィック処理ユニット１１０に割り当て直されるメモリ空間６１５のメモリページ６２０からのメモリ資源が、中央演算処理ユニット１２０に割り当てられたままにされるメモリ空間６０６内の利用可能なメモリページ６１０にコピーされ得る。メモリ資源を、メモリページ６２０から、中央演算処理ユニット１２０に割り当てられたままにされる利用可能なメモリページ６１０にコピーすることにより、グラフィック処理ユニット部分１２６に連続したメモリ空間６１５が利用可能になり得る。メモリ空間６１５が利用可能なメモリ空間になると、それが、グラフィック処理ユニット部分１２６の一部となるように再配分され得る。
【００７３】
共有物理メモリ６０５において、グラフィック処理ユニット１１０のために要求されたメモリ空間６１５が、ランタイム中に、グラフィック処理ユニット１１０に動的に再割り当てされ得る。メモリ配分マネジャ１３７が、ランタイム中に動的に、メモリ空間６１５をグラフィック処理ユニット１１０に割り当て得る。グラフィック処理ユニット１１０、及び／又はグラフィック処理ユニット１１０を管理するエンティティは、要求したメモリ空間６１５を含めて、共有物理メモリのグラフィック処理ユニット部分１２６を制御し得る。
【００７４】
メモリ空間６１５がランタイム中に動的にグラフィック処理ユニット１１０に割り当て直された後、以下に限られないが例えば不揮発性の長期メモリ若しくは磁気ディスクなどの記憶装置上のページ付けられたメモリに格納された、中央演算処理ユニット１２０のメモリ資源が、共有物理メモリ１２５の中央演算処理ユニット部分１２７に移し戻され得る。一実施形態において、メモリ資源は、中央演算処理ユニット部分１２７のメモリ空間のうち、これらのメモリ資源が元々置かれていたところとは異なる部分又は領域に移し戻されてもよい。中央演算処理ユニット１２０を管理するエンティティは、現行手法によるオンデマンドページングにより、中央演算処理ユニット１２０に割り当てられたメモリ空間６０６内の様々なメモリページにメモリ資源をコピーし得る。一実施形態において、例えばオペレーティングシステムなどのシステムエンティティが、現行手法に従ってメモリ空間を管理し得る。現行手法は、以下に限られないが、プログラムが資源を要求する時点でオンデマンドでディスクの物理メモリにメモリ資源をコピーすることを含み得る。
【００７５】
図７は、本開示の図１のシステムを実装するのに好適であり得るシステム７００の一実施形態を例示している。実施形態において、システム７００は、パーソナルコンピュータ（ＰＣ）、ラップトップコンピュータ、ウルトララップトップコンピュータ、タブレット、タッチパッド、ポータブルコンピュータ、ハンドヘルドコンピュータ、パームトップコンピュータ、携帯情報端末（ＰＤＡ）、携帯電話、結合携帯電話／ＰＤＡ、テレビジョン、スマート装置（例えば、スマートフォン、スマートタブレット、又はスマートテレビジョン）モバイルインターネット装置（ＭＩＤ）、メッセージング装置、及びデータ通信装置などに組み込まれ得る。
【００７６】
様々な実施形態は、ハードウェア要素、ソフトウェア要素、又はこれら双方の組み合わせを用いて実装され得る。ハードウェア要素の例は、プロセッサ、マイクロプロセッサ、回路、回路素子（例えば、トランジスタ、抵抗、キャパシタ、及びインダクタなど）、集積回路、特定用途向け集積回路（ＡＳＩＣ）、プログラマブルロジックデバイス（ＰＬＤ）、デジタル信号プロセッサ（ＤＳＰ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、論理ゲート、レジスタ、半導体デバイス、チップ、マイクロチップ、及びチップセットなどを含み得る。ソフトウェアの例は、ソフトウェアコンポーネント、プログラム、アプリケーション、コンピュータプログラム、アプリケーションプログラム、システムプログラム、機械プログラム、オペレーティングシステムソフトウェア、ミドルウェア、ファームウェア、ソフトウェアモジュール、ルーチン、サブルーチン、ファンクション、メソッド、プロシージャ、ソフトウェアインタフェース、アプリケーションプログラムインタフェース、命令セット、コンピューティングコード、コンピュータコード、コードセグメント、コンピュータコードセグメント、ワード、バリュー、シンボル、又はこれらの何らかの組み合わせを含み得る。実施形態をハードウェア要素及び／又はソフトウェア要素の何れを用いて実装するかを決めることは、例えば、所望の計算レート、電力レベル、熱耐性、処理サイクルバジェット、入力データレート、出力データレート、メモリリソース、データバススピード、及びその他の設計上若しくは性能上の制約などの、多数の要因に従って変わり得る。
【００７７】
実施形態において、システム７００は、ディスプレイ７２０に結合されたプラットフォーム７０２を有する。プラットフォーム７０２は、例えばコンテンツサービス装置７３０若しくはコンテンツ配信装置７４０又はその他同様なコンテンツ源などの、コンテンツ装置からコンテンツを受信し得る。例えばプラットフォーム７０２及び／又はディスプレイ７２０とインタラクトするために、１つ以上のナビゲーション機構を有するナビゲーションコントローラ７５０が使用され得る。これらのコンポーネントの各々を更に詳細に後述する。
【００７８】
実施形態において、プラットフォーム７０２は、チップセット７０５、プロセッサ７１０、メモリ７１２、ストレージ７１４、グラフィックスサブシステム７１５、アプリケーション７１６及び／又は無線装置７１８の組み合わせを有し得る。チップセット７０５は、プロセッサ７１０、メモリ７１２、ストレージ７１４、グラフィックスサブシステム７１５、アプリケーション７１６及び／又は無線装置７１８の間での相互通信を提供し得る。例えば、チップセット７０５は、ストレージ７１４との相互通信を提供することが可能なストレージアダプタ（図示せず）を含み得る。
【００７９】
プロセッサ７１０は、複数命令セットコンピュータ（ＣＩＳＣ）プロセッサ若しくは縮小命令セットコンピュータ（ＲＩＳＣ）プロセッサ、ｘ８６命令セット互換プロセッサ、マルチコア、又はその他のマイクロプロセッサ若しくは中央演算処理ユニットとして実装され得る。実施形態において、プロセッサ７１０は、デュアルコアプロセッサやデュアルコアモバイルプロセッサなどを有し得る。
【００８０】
メモリ７１２は、以下に限られないが例えばランダムアクセスメモリ（ＲＡＭ）、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）、又はスタティックＲＡＭ（ＳＲＡＭ）などの、揮発性メモリデバイスとして実装され得る。
【００８１】
ストレージ７１４は、以下に限られないが例えば磁気ディスクドライブ、光ディスクドライブ、テープドライブ、内部記憶装置、取付式記憶装置、フラッシュメモリ、電池バックアップ式ＳＤＲＡＭ（同期式ＤＲＡＭ）、及び／又はネットワークアクセス可能記憶装置などの、不揮発性記憶装置として実装され得る。実施形態において、ストレージ７１４は、例えば複数のハードドライブが含められるとき、貴重なデジタルメディアの対する記憶性能強化保護を高めるための技術を有し得る。
【００８２】
グラフィックスサブシステム７１５は、静止画又は動画などの画像の表示のための処理を実行し得る。グラフィックスサブシステム７１５は、例えば、グラフィック処理ユニット（ＧＰＵ）１１０又はビジュアル処理ユニット（ＶＰＵ）とし得る。グラフィックスサブシステム７１５とディスプレイ７２０とを通信可能に結合するために、アナログ又はデジタルのインタフェースが使用され得る。例えば、このインタフェースは、ＨＤＭＩ（登録商標）（高精細度マルチメディアインタフェース）、ＤｉｓｐｌａｙＰｏｒｔ、ワイヤレスＨＤＭＩ、及び／又はワイヤレスＨＤに準拠した技術のうちの何れかとし得る。グラフィックスサブシステム７１５は、プロセッサ７１０又はチップセット７０５に統合されてもよい。グラフィックスサブシステム７１５は、チップセット７０５に通信可能に結合されたスタンドアローン型カードであってもよい。
【００８３】
ここに記載されるグラフィックス及び／又はビデオ処理技術は、様々なハードウェアアーキテクチャにて実装され得る。例えば、グラフィックス及び／又はビデオ機能は、チップセット内に統合されてもよい。他の例では、別個のグラフィックス及び／又はビデオプロセッサが使用されてもよい。更なる他の一実施形態として、グラフィックス及び／又はビデオ機能は、マルチコアプロセッサを含め汎用プロセッサによって実装されてもよい。更なる一実施形態において、これらの機能は消費者電子装置にて実装されてもよい。
【００８４】
無線装置７１８は、様々な好適な無線通信技術を用いて信号の送信及び受信を行うことが可能な１つ以上の無線装置を含み得る。例えば、無線装置は無線受信器を含み得る。このような技術は、１つ以上の無線ネットワークを横切っての通信を伴い得る。典型的な無線ネットワークは、（以下に限られないが）無線ローカルエリアネットワーク（ＷＬＡＮ）、無線パーソナルエリアネットワーク（ＷＰＡＮ）、無線メトロポリタンエリアネットワーク（ＷＭＡＮ）、携帯電話ワーク、及び衛星ネットワークを含む。このようなネットワークを横切って通信する際、無線装置７１８は、何らかのバージョンの１つ以上の適用可能な規格に従って動作し得る。
【００８５】
実施形態において、ディスプレイ７２０は、如何なるテレビジョンタイプのモニタ若しくはディスプレイを有していてもよい。ディスプレイ７２０は、例えば、コンピュータ表示スクリーン、タッチスクリーンディスプレイ、ビデオモニタ、テレビジョンのような装置、及び／又はテレビジョンを有し得る。ディスプレイ７２０は、デジタル及び／又はアナログとし得る。実施形態において、ディスプレイ７２０はホログラフィックディスプレイであってもよい。また、ディスプレイ７２０は、視覚投影を受け得る透明表面であってもよい。そのような投影は、様々な形態の情報、画像、及び／又はオブジェクトを伝達し得る。例えば、そのような投影は、モバイル拡張現実（ＭＡＲ）アプリケーション用の視覚的オーバーレイとし得る。１つ以上のソフトウェアアプリケーション７１６の制御下で、プラットフォーム７０２はディスプレイ７２０上にユーザインタフェース７２２を表示し得る。
【００８６】
実施形態において、コンテンツサービス装置７３０は、何らかの国家サービス、国際サービス及び／又は独立系サービスをホストとすることができ、故に、例えばインターネットを介してプラットフォーム７０２にアクセス可能である。コンテンツサービス装置７３０は、プラットフォーム７０２及び／又はディスプレイ７２０に結合されてもよい。プラットフォーム７０２及び／又はコンテンツサービス装置７３０は、ネットワーク７６０に結合されて、ネットワーク７６０との間でメディア情報を通信（例えば送信及び／又は受信）してもよい。コンテンツ配信装置７４０もまた、プラットフォーム７０２及び／又はディスプレイ７２０に結合され得る。
【００８７】
実施形態において、コンテンツサービス装置７３０は、ケーブルテレビジョンボックス、パーソナルコンピュータ、ネットワーク、電話機、デジタル情報及び／又はコンテンツを配信することが可能なインターネット接続可能装置若しくは機器、及び、ネットワーク７６０を介して、あるいは直接的にコンテンツプロバイダとプラットフォーム７０２及び／又はディスプレイ７２０との間で単方向あるいは双方向にコンテンツを通信することが可能なその他の同様の装置を有し得る。認識されるように、コンテンツは、ネットワーク７６０を介して、システム７００内のコンポーネントのうちの何れか１つとコンテンツプロバイダとの間で単方向及び／又は双方向に通信され得る。コンテンツの例は、例えばビデオ、音楽、医療情報、及びゲーム情報などを含む如何なるメディア情報をも含み得る。
【００８８】
コンテンツサービス装置７３０は、例えばメディア情報、デジタル情報及び／又はその他のコンテンツを含む例えばケーブルテレビジョン番組などのコンテンツを受信する。コンテンツプロバイダの例は、ケーブルテレビジョンプロバイダ、衛星テレビジョンプロバイダ、ラジオプロバイダ、又はインターネットコンテンツプロバイダを含み得る。提示した例は、本発明の実施形態を限定することを意図したものではない。
【００８９】
実施形態において、プラットフォーム７０２は、１つ以上のナビゲーション機構を有するナビゲーションコントローラ７５０から制御信号を受信し得る。コントローラ７５０のナビゲーション機構は、例えば、ユーザインタフェース７２２とインタラクト（対話）するために使用され得る。実施形態において、ナビゲーションコントローラ７５０は、ユーザが空間（連続的且つ多次元）データをコンピュータに入力することを可能にするコンピュータハードウェアコンポーネント（具体的には、ヒューマンインタフェース装置）であるポインティング装置とし得る。例えばグラフィカルユーザインタフェース（ＧＵＩ）、テレビジョン及びモニタなどの数多くのシステムは、ユーザが身体的なジェスチャを用いてコンピュータ又はテレビジョンを制御したりそれにデータを提供したりすることを可能にしている。
【００９０】
コントローラ７５０のナビゲーション機構の動作は、ディスプレイ上に表示されるポインタ、カーソル、焦点リング又はその他の視覚的インジケータの動作によって、ディスプレイ（例えば、ディスプレイ７２０）上に反映され得る。例えば、ソフトウェアアプリケーション７１６の制御下で、ナビゲーションコントローラ７５０上に位置するナビゲーション機構が、例えば、ユーザインタフェース７２２上に表示される仮想ナビゲーション機構にマッピングされ得る。実施形態において、コントローラ７５０は、別個のコンポーネントではなくて、プラットフォーム７０２及び／又はディスプレイ７２０に統合されてもよい。実施形態は、しかしながら、ここに図示あるいは記載される要素又は状況に限定されるものではない。
【００９１】
実施形態において、テレビジョンのようなプラットフォームを、例えば使用可能にされるとき、システム始動後にボタンのタッチを用いて即座にターンオン／オフすることを可能にする技術をドライバ（図示せず）が有し得る。プラットフォーム７０２がターン“オフ”されるとき、プラットフォーム７０２がコンテンツをメディアアダプタ又はその他のコンテンツサービス装置７３０若しくはコンテンツ配信装置７４０にストリーミングすることを、プログラムロジックが可能にし得る。さらに、例えば、５．１チャンネルサラウンド音声オーディオ及び／又は高精細６．１チャンネルサラウンド音声オーディオ用のハードウェア及び／又はソフトウェアサポートを、チップセット７０５が有し得る。ドライバは、統合グラフィックスプラットフォーム用のグラフィックスドライバを含み得る。実施形態において、グラフィックスドライバは、ＰＣＩ（ペリフェラルコンポーネントインターコネクト）Ｅｘｐｒｅｓｓ（エクスプレス）グラフィックスカードを有し得る。
【００９２】
様々な実施形態において、システム７００内に示したコンポーネントのうちの何れか１つ以上が統合されてもよい。例えば、プラットフォーム７０２とコンテンツサービス装置７３０とが一体にされてもよいし、プラットフォーム７０２とコンテンツ配信装置７４０とが一体にされてもよいし、プラットフォーム７０２とコンテンツサービス装置７３０とコンテンツ配信装置７４０とが一体にされてもよい。様々な実施形態において、プラットフォーム７０２及びディスプレイ７２０は、一体化されたユニットとし得る。例えば、ディスプレイ７２０とコンテンツサービス装置７３０とが一体にされてもよいし、ディスプレイ７２０とコンテンツ配信装置７４０とが一体にされてもよい。これらの例は、本発明を限定することを意図したものではない。
【００９３】
様々な実施形態において、システム７００は、無線システム、有線システム、又はこれら双方の組み合わせとして実装され得る。無線システムとして実装されるとき、システム７００は、例えば１つ以上のアンテナ、送信器、受信器、送受信器、増幅器、フィルタ、及び制御ロジックなどの、無線共有媒体上で通信を行うことに適したコンポーネント及びインタフェースを含み得る。無線共有媒体の一例は、例えばＲＦスペクトルなどの無線スペクトルの一部を含み得る。有線システムとして実装されるとき、システム７００は、例えば入力／出力（Ｉ／Ｏ）アダプタ、Ｉ／Ｏアダプタを対応する有線通信媒体と接続する物理的なコネクタ、ネットワークインタフェースカード（ＮＩＣ）、ディスクコントローラ、ビデオコントローラ、及びオーディオコントローラなどの、有線通信媒体上で通信を行うことに適したコンポーネント及びインタフェースを含み得る。有線通信媒体の例は、ワイヤ、ケーブル、金属リード、印刷回路基板（ＰＣＢ）、バックプレーン、スイッチ構成、半導体材料、ツイストペアワイヤ、同軸ケーブル、及び光ファイバを含み得る。
【００９４】
プラットフォーム７０２は、情報を通信する１つ以上の論理チャネル又は物理チャネルを構築し得る。情報は、メディア情報と制御情報とを含み得る。メディア情報は、ユーザに向けられるコンテンツを表すデータを意味し得る。コンテンツの例は、例えば、音声会話からのデータ、ビデオ会議、ストリーミングビデオ、電子メール（“ｅｍａｉｌ”）メッセージ、音声メールメッセージ、英数字記号、グラフィックス、画像、ビデオ、及びテキストなどを含み得る。音声会話からのデータは、例えば、音声情報、沈黙器官、背景雑音、快適雑音、及びトーンなどとし得る。制御情報は、自動化システムに向けられるコマンド、命令又は指令語を表すデータを意味し得る。例えば、制御情報は、メディア情報をシステム内で経路付けるため、あるいは所定の手法でノードがメディア情報を処理するように命令するために使用され得る。実施形態は、しかしながら、図７に図示あるいは記載された要素又は状況に限定されるものではない。
【００９５】
図８は、先述の様々な実施形態を実装するのに好適な例示的な通信アーキテクチャ８００のブロック図を示している。通信アーキテクチャ８００は、例えば送信器、受信器、送受信器、無線装置、ネットワークインタフェース、ベースバンドプロセッサ、アンテナ、増幅器、及びフィルタなどの、様々な一般的な通信素子を含んでいる。しかしながら、実施形態は、通信アーキテクチャ８００による実装に限定されるものではない。
【００９６】
図８に示されるように、通信アーキテクチャ８００は、１つ以上のクライアント８０２及びサーバ８０４を有する。クライアント８０２及びサーバ８０４は、それぞれ１つ以上のクライアントデータストア８０８及びサーバデータストア８１０に動作的に接続され、これらのデータストアはそれぞれ、例えばクッキー及び／又は関連する文脈情報など、クライアント８０２及びサーバ８０４にローカルな情報を格納するために使用されることができる。
【００９７】
クライアント８０２及びサーバ８０４は、通信フレームワーク８０６を用いて相互間で情報を通信し得る。通信フレームワーク８０６は、よく知られた通信技術及びプロトコルを実装し得る。通信フレームワーク８０６は、パケット交換ネットワーク（例えば、インターネットなどの公衆ネットワーク、及び企業イントラネットなどの私的ネットワークなど）、回線交換ネットワーク（例えば、公衆交換電話網）、又はパケット交換ネットワークと回線交換ネットワークとの組み合わせ（好適なゲートウェイ及び変換装置を用いる）として実装され得る。
【００９８】
様々な実施形態は、ハードウェア要素、ソフトウェア要素、又はこれら双方の組み合わせを用いて実装され得る。ハードウェア要素の例は、プロセッサ、マイクロプロセッサ、回路、回路素子（例えば、トランジスタ、抵抗、キャパシタ、及びインダクタなど）、集積回路、特定用途向け集積回路（ＡＳＩＣ）、プログラマブルロジックデバイス（ＰＬＤ）、デジタル信号プロセッサ（ＤＳＰ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、論理ゲート、レジスタ、半導体デバイス、チップ、マイクロチップ、及びチップセットなどを含み得る。ソフトウェアの例は、ソフトウェアコンポーネント、プログラム、アプリケーション、コンピュータプログラム、アプリケーションプログラム、システムプログラム、機械プログラム、オペレーティングシステムソフトウェア、ミドルウェア、ファームウェア、ソフトウェアモジュール、ルーチン、サブルーチン、ファンクション、メソッド、プロシージャ、ソフトウェアインタフェース、アプリケーションプログラムインタフェース、命令セット、コンピューティングコード、コンピュータコード、コードセグメント、コンピュータコードセグメント、ワード、バリュー、シンボル、又はこれらの何らかの組み合わせを含み得る。実施形態をハードウェア要素及び／又はソフトウェア要素の何れを用いて実装するかを決めることは、例えば、所望の計算レート、電力レベル、熱耐性、処理サイクルバジェット、入力データレート、出力データレート、メモリリソース、データバススピード、及びその他の設計上若しくは性能上の制約などの、多数の要因に従って変わり得る。
【００９９】
一部の実施形態は、“一実施形態”又は“或る実施形態”なる表現並びにこれらの派生表現を用いて記述されることがある。これらの表現が意味することは、その実施形態との関連で記述される特定の機構、構造又は特徴が、少なくとも１つの実施形態に含まれるということである。明細書の様々な箇所で“一実施形態において”なる言い回しが現れることは、必ずしも全てが同じ実施形態を参照しているわけではない。また、一部の実施形態は、“結合され”又は“接続され”なる表現並びにこれらの派生表現を用いて記述されることがある。これらの表現は必ずしも相互に同義語であるようには意図されない。例えば、一部の実施形態は、２つ以上の要素が互いに直接的に物理的あるいは電気的に接触していることを指し示すために、“接続され”及び／又は“結合され”なる用語を用いて記述されることがある。しかしながら、“結合され”なる用語はまた、２つ以上の要素が互いに直接的に接触しないが、なおも互いに協働あるいは作用し合うことをも意味し得る。
【０１００】
強調しておくことには、本開示の要約は、読者が直ちに技術開示の特質を確かめることを可能にするために提供されている。これは、請求項の範囲又は意味を解釈あるいは限定することには要約は使用されないという理解の下でのことである。また、以上の詳細な説明においては、理解されるように、開示を効率化する目的で様々な機構が単一の実施形態にまとめられている。この開示方法は、特許請求される実施形態が各請求項に明示的に記載されるより多くの機構を必要とするという意図を映すものとして解釈されるべきではない。むしろ、以下の請求項が映すように、発明的事項は、単一の開示された実施形態の全ての機構よりも少ないものにある。故に、以下の請求項はここにて、各請求項が別個の実施形態として自立しているものとして詳細な説明に組み込まれる。添付の請求項において、“含む（including）”及び“それにおいて（in  which）”なる用語は、それぞれ、“有する（comprising）”及び“において（wherein）”なる用語の平易な同義語として使用される。また、“第１の”、“第２の”及び“第３の”などの用語は、単にラベルとして使用されており、それらの対象物に数字的な要件を課すものではない。
【０１０１】
一部の実施形態において、コンピュータによって実行されるコンピュータ実行方法は、システム始動中に、第１の処理ユニットに割り当てられる物理メモリ内のメモリ空間の量を決定することと、決定された量のメモリ空間を整備することと、ランタイム中に、整備されたメモリ空間を第２の処理ユニットに割り当て直すこととを含み得る。第２の処理ユニットにメモリ空間を割り当てることの要求が受信され得る。物理メモリが未割当てのメモリ空間を含んでいるかが決定され得る。利用可能なメモリ空間を第１の処理ユニットが含んでいるかが決定され得る。第１の処理ユニットに割り当てられたメモリ空間が閾値を超えているかが決定され得る。決定された量のメモリ空間からの物理ページが再マッピングされ得る。メモリ資源が不揮発性の長期記憶装置にコピーされて、第１の処理ユニット内に利用可能なメモリ空間が作り出され得る。決定された量のメモリ空間内のメモリ資源が、第１の処理ユニットに割り当てられている利用可能なメモリ空間にコピーされ得る。ランタイム中に物理メモリを割り当て直すことの要求が、物理メモリの割当てに関するユーザ作成プロファイル、アプリケーション固有プロファイル、又はシステムエンティティによる動的な決定に基づいて受信され得る。一実施形態において、システムエンティティはオペレーティングシステムとし得る。
【０１０２】
一実施形態において、装置は、複数の処理ユニットと、第１の処理ユニットに割り当てられた第１のメモリ空間と第２の処理ユニットに割り当てられた第２のメモリ空間とを有する物理メモリを再配分するように前記複数の処理ユニットのうちの少なくとも１つ上で動作するメモリ配分マネジャとを含み得る。メモリ配分マネジャは、第２の処理ユニットに割り当て直すべき第１のメモリ空間の量を決定し、ランタイム中に、決定した量の第１のメモリ空間を第２の処理ユニットに割り当て直すよう動作し得る。メモリ配分マネジャは、決定した量の第１のメモリ空間を整備するよう動作し得る。メモリ配分マネジャは、第２の処理ユニットにメモリ空間を割り当てることの要求を受信するよう動作し得る。メモリ配分マネジャは、利用可能なメモリ空間を第１の処理ユニットが含んでいるかを決定するよう動作し得る。メモリ配分マネジャは仮想マシンモニタ上で動作し得る。メモリ配分マネジャは、中央演算処理ユニット、グラフィックドライバ、論理回路、又はオペレーティングシステムのうちの１つ上で動作し得る。メモリ配分マネジャは、第１の処理ユニットに割り当てられた第１のメモリ空間が閾値を超えているかを決定するよう動作し得る。メモリ配分マネジャは、決定した量のメモリ空間からの物理ページを再マッピングするよう動作し得る。装置は、前記複数の処理ユニットのうちの少なくとも１つに動作可能に結合されたデジタルディスプレイを含み得る。
【０１０３】
様々な実施形態において、少なくとも１つの機械読み取り可能媒体は、コンピューティング装置上で実行されることに応答して該コンピューティング装置に、第１の処理ユニットに割り当てられた物理メモリ内の或る量のメモリ空間が第２の処理ユニットに割り当て直されることを要求させ、ランタイム中に、第１の処理ユニットに割り当てられた物理メモリ内の要求量のメモリ空間を整備させ、整備されたメモリ空間を第２の処理ユニットに割り当て直させる複数の命令を含み得る。上記少なくとも１つの機械読み取り可能媒体は、コンピューティング装置上で実行されることに応答して該コンピューティング装置に、物理メモリが未割当てのメモリ空間を含んでいるかを決定させる複数の命令を含み得る。上記少なくとも１つの機械読み取り可能媒体は、コンピューティング装置上で実行されることに応答して該コンピューティング装置に、第１の処理ユニットに割り当てられたメモリ空間が閾値を超えているかを決定させる複数の命令を含み得る。上記少なくとも１つの機械読み取り可能媒体は、コンピューティング装置上で実行されることに応答して該コンピューティング装置に、要求量のメモリ空間からの物理ページを再マッピングさせる複数の命令を含み得る。上記少なくとも１つの機械読み取り可能媒体は、コンピューティング装置上で実行されることに応答して該コンピューティング装置に、メモリ資源を不揮発性の長期メモリにコピーして第１の処理ユニット内に利用可能なメモリ空間を作り出させる複数の命令を含み得る。
【０１０４】
一部の実施形態において、システムは、複数の処理ユニットと、前記複数の処理ユニットのうちの少なくとも１つに動作可能に結合されたデジタルディスプレイと、第１の処理ユニットに割り当てられた物理メモリ空間内の第１のメモリ空間、及び第２の処理ユニットに割り当てられた前記物理メモリ空間内の第２のメモリ空間を再割り当てする前記複数の処理ユニットのうちの少なくとも１つ上のメモリ配分マネジャとを含み得る。メモリ配分マネジャは、第２の処理ユニットに割り当てるべき第１のメモリ空間の量を決定し、決定した量の第１のメモリ空間を整備し、整備した第１のメモリ空間を第２の処理ユニットに割り当て直すよう動作し得る。システムは、前記複数の処理ユニットのうちの少なくとも１つに動作可能に結合された無線受信器を含み得る。メモリ配分マネジャは、メモリ資源を揮発性の長期メモリにコピーして、第１の処理ユニット内に利用可能なメモリ空間を作り出すよう動作し得る。メモリ配分マネジャは、決定した量の第１のメモリ空間内のメモリ資源を、第１の処理ユニットに割り当てられている利用可能なメモリ空間にコピーするよう動作し得る。システムは、前記物理メモリ空間内に第３のメモリ空間を含むことができ、メモリ配分マネジャは、第３の処理ユニットに割り当てるべき第３のメモリ空間の量を決定し、決定した量の第３のメモリ空間を整備し、整備した第３のメモリ空間を第３の処理ユニットに再割り当てするよう動作し得る。
【０１０５】
上述したものは、開示したアーキテクチャの例を含んでいる。当然ながら、構成要素及び／又は手順の考え得る全ての組み合わせを記載することは可能でないが、当業者が認識し得るように、数多くの更なる組み合わせ及び変形が可能である。従って、新規なアーキテクチャは、添付の請求項の精神及び範囲に入る全てのそのような改変、変更及び変形を包含するものである。
【図１】
0006009675.tif 000002
【図２】
0006009675.tif 000003
【図３】
0006009675.tif 000004
【図４】
0006009675.tif 000005
【図５】
0006009675.tif 000006
【図６】
0006009675.tif 000007
【図７】
0006009675.tif 000008
【図８】
0006009675.tif 000009