実施形態は概して、ランタイム中のメモリ割当て技術に向けられる。現在、システム始動中に静的なメモリ空間のみが割り当てられ得る。システムの始動は、コンピューティングシステムがオペレーティングシステムをメモリにロードするとともにコンピューティングシステム上の基本入出力システムが再びアクティブにされる時間期間を有し得る。システム始動は、コンピューティングシステムがターンオンされると直ちに行われることができ、システムブートアップ又はシステムスタートアップと称されることもある。オペレーティングシステムがロードされると、システムの始動が完了し、ランタイムが始まる。ランタイムは、システム始動が行われた後の時間期間を有することができ、システムがクローズ且つ/或いはターンオフされるまで続き得る。
一部の実施形態は特に、ランタイム中に静的メモリ空間を第1の処理ユニットから第2の処理ユニットへと動的に割り当てるように構成されるメモリ割当て技術に向けられる。一実施形態において、例えば、メモリ配分(パーティショニング)マネジャが、より多くのメモリを第2の処理ユニットが必要とすることを決定し得る。システムの再始動まで待つ代わりに、メモリ配分マネジャは、現在は第1の処理ユニットに割り当てられている物理メモリ内の或る量のメモリ空間をランタイム中に第2の処理ユニットに割り当て直すことを決定し得る。メモリ配分マネジャは、より多くのメモリを第2の処理ユニットに割り当てるために、ランタイム中にメモリ空間を整備し得る。現行のメモリ割当てはしばしば、第1の処理ユニットが、割り当てられた利用可能あるいは未使用の静的メモリ空間を有しながら、第2の処理ユニットが、アプリケーションを走らせるためにもっと多くのメモリ空間を必要とするということをもたらすので、ここに記載される実施形態は、静的メモリ空間を第1の処理ユニットから第2の処理ユニットにランタイム中に割り当て直すことができる。ランタイム中にこれらの処理ユニットに対してメモリ空間を再配分することにより、この物理メモリ分配は、システムプラットフォームを再始動することに伴う待ち時間を抑制あるいは除去しながら、より効率的なメモリ割当てにつながり得る。
コンピューティングプラットフォームは物理メモリを含み得る。物理メモリは、1つ以上の処理ユニットによって共有され得る。共有物理メモリは、処理ユニットに割り当てられる様々なメモリ空間へと分割され得る。メモリ及びメモリ空間なる用語は、本開示のいたる所で、相互に入れ換え可能に使用されることがある。例えば、コンピューティングシステムがグラフィック処理ユニットと中央演算処理ユニットとを含む場合、物理メモリ領域は、グラフィック処理ユニットに割り当てられる第1のメモリ空間と、中央演算処理ユニットに割り当てられる第2のメモリ空間とに分割され得る。
コンピューティングプラットフォームは、例えば中央演算処理ユニット、グラフィック処理ユニット、デジタル信号処理ユニット、及び/又はネットワーク処理ユニットなどの、複数の処理ユニットを含み得る。処理ユニットはプロセッサ回路を含み得る。中央演算処理ユニット及びネットワーク処理ユニットは、基本算術演算及び論理演算を行うことによって命令を実行する。グラフィック処理ユニットは、ディスプレイに出力されることが可能な画像の作成を加速するよう、メモリの操作及び改変を行う。デジタル信号処理ユニットは、フィルタリング及び圧縮により、アナログ情報信号を操作する。
処理ユニットは、例えばアプリケーション又はオペレーティングシステムなどの1つ以上のシステムエンティティを起動し得る。或るシステムエンティティが或る処理ユニット上で起動されるとき、そのシステムエンティティは、その処理ユニットに割り当てられた物理メモリ内のメモリ空間を使用し得る。現在、或るシステムユニットが、割り当てられた静的メモリ空間の全てを使用するとき、共有物理メモリをランタイム中に再配分することができないので、その処理ユニットは、より多くのメモリ空間を割り当てられることができない。
歴史的に見て、各処理ユニットは、別個のシリコンダイ上に位置するディスクリート(個別)物理ユニットであった。ディスクリート処理ユニットは、その処理ユニットに直接的に取り付けられることが多いそれ自身のメモリを含んでいた。結果として、処理ユニットは、別の処理ユニットのメモリへの電気的アクセスを有していなかった。従って、複数の処理ユニットがメモリ資源を共有するはずがなかった。
現在、しばしば、複数の処理ユニットが同一のシリコンダイ上に集積される。これらの処理ユニットは同じ物理空間内にあるので、これらの処理ユニットは同じ物理メモリへの電気的アクセスを有し、その物理メモリが共有される。しかしながら、処理ユニットが共有物理メモリへのアクセスを有するとはいえ、以下に限られないが例えば基本入出力システム、オペレーティングシステム、3次元ランタイムアプリケーション、及びアプリケーションインタフェースなどのシステムエンティティは依然として、共有物理メモリがあたかも別個の物理メモリであるかのように、処理ユニットに割り当てられたメモリを使用している。従って、システム始動時に、基本入出力システムが、各処理ユニットに対して特定量のメモリを定めており、現時において、共有物理メモリの割当てをランタイム中に動的に再配分する手法は存在しない。そこで、メモリを再配分するのではなく、処理ユニットは、現システムエンティティを実行し続けるために、仮想メモリを使用するか、その処理ユニットの割当てメモリ空間を使用するシステムエンティティを閉じるかしている。
仮想メモリを使用する現行手法は、コンピューティングシステムの性能低下を引き起こす。例えば処理ユニットを呼び出すなどのその他の手法も、システムの性能を低下させる。また、その処理ユニット上で実行されることができる同時アプリケーション数を減らすことなどの手法は非効率的である。というのは、異なる処理ユニットに割り当てられたメモリ空間が利用可能であり得るからである。
これら及びその他の問題を解決するため、実施形態は、共有物理メモリ内の静的メモリ空間を、第1の処理ユニットから第2の処理ユニットへとランタイム中に動的に再配分する。第2の処理ユニットに割り当て直すべき第1の処理ユニットに割り当てられた物理メモリ内のメモリ空間の量を決定するために、コンピューティングシステムにメモリ配分マネジャが含められ得る。メモリ配分マネジャは、第1の処理ユニット上で現在起動している如何なるシステムエンティティも、決定された量のメモリ空間を第2の処理ユニットに割り当て直すのに先立って完了されることを確実にするために、これらの処理ユニットと通信し得る。第1の処理ユニットに割り当てられたメモリ空間上でシステムエンティティが今や起動していないことを確実にするメモリ配分マネジャを使用しないと、静的メモリ空間の再配分はシステム障害を生じさせ得る。
どのシステムエンティティも今や起動していないことを第1の処理ユニットがメモリ配分マネジャと通信すると、メモリ配分マネジャは、決定された量の静的メモリ空間をランタイム中に整備し得る。この整備されたメモリ空間が、第2の処理ユニットに割り当てられ得る。より多くのメモリを第2の処理ユニットが必要とすることにランタイム中に動的に応えることにより、システムは共有物理メモリ内のメモリを効率的に使用し得る。
従って、様々な実施形態は、ランタイム中に共有物理メモリ内のメモリ空間の再配分及び再割り当てを行うことを記述する。メモリ配分マネジャを使用してメモリ空間を再配分することにより、処理ユニットへの共有物理メモリの割り当てが効率的になり得る。例えば、メモリ空間の現行割当ては静的であるため、第1の処理ユニットが利用可能な割当てメモリ空間を有しながら、第2の処理ユニットがアプリケーションを起動するためにもっと多くのメモリ空間を必要としていることがある。ここに記載される実施形態においては、共有物理メモリ内のメモリ空間が第1の処理ユニットから第2の処理ユニットへとランタイム中に割り当て直されることができ、これは非常に効率的に電力及び性能を保存する。
装置は、プロセッサ回路と、プロセッサ回路上で動作可能なメモリ配分マネジャとを含み得る。メモリ配分マネジャは、第1の処理ユニットに割り当てられる第1のメモリ空間と、第2の処理ユニットに割り当てられる第2のメモリ空間とを有する物理メモリを再配分し得る。メモリ配分マネジャは、第2の処理ユニットに割り当てるべき第1のメモリ空間の量を決定し、第1のメモリ空間をランタイム中に整備し得る。メモリ配分マネジャは、切れ目のない整備されたメモリ空間を第2の処理ユニットに割り当て得る。
メモリ配分マネジャは、メモリ配分マネジャ実行コンテキストのコンポーネントとし得る。一実施形態において、メモリ配分マネジャ実行コンテキストは仮想マシンモニタとし得る。仮想マシンモニタは、コンピューティング装置が複数の等しい実行環境をサポートすることを可能にする仮想マシン又はホストオペレーティングシステムを有し得る。他の一実施形態において、メモリ配分マネジャ実行コンテキストは、ソフトウェアコンポーネントとして中央演算処理ユニット上で動作してもよいし、オペレーティングシステム上で動作してもよいし、あるいはハードウェアユニットとして動作してもよい。メモリ配分マネジャは、より多くのメモリ空間が或る処理ユニットに割り当てられ得るように物理メモリを再配分し得る。例えば、メモリ配分マネジャは、検出されたシステムニーズに基づいて、メモリ割当てを変更するアクションを起こし得る。代わりに、あるいは加えて、メモリ配分マネジャは、例えばアプリケーション又はオペレーティングシステムなどのシステムエンティティからの要求に応答して、共有物理メモリ割当てを変更してもよい。
ここに記載される実施形態は、従来のメモリ割当て技術に対して幾つかの利点を提供し得る。第1の処理ユニットから第2の処理ユニットへとメモリ空間を割り当て直すことにより、共有物理メモリがいっそう効率的に使用される。より効率的なメモリ空間の使用は、個々のアプリケーション及び/又は集合的なアプリケーション群のスピードを高め得る。また、より効率的なメモリ空間の使用は、より多くのアプリケーションが同時に動作することを可能にし得る。例えば、或る処理ユニット上で同時に実行されてメモリ空間を使用するアプリケーションの数を、別のアプリケーションがその処理ユニット上で実行されてそのメモリ空間を使用するようにするために減らす必要をなくし得る。その代わりに、異なる処理ユニットに割り当てられた利用可能なメモリ空間を、ランタイム中に再割り当てし得る。システムが再始動するまで待つことに代えて、ランタイム中に処理ユニットにメモリを割り当て直すことにより、システム性能の低下を引き起こす現行手法を不要とし得る。例えば仮想メモリを用いたり、あるいはグラフィック処理ユニットメモリ資源を呼び出したりするなどの、システム性能を低下させる一部の現行手法を回避可能とし得る。さらに、ランタイム中にメモリ空間を割り当て直すことにより、システムが再始動することを待つ代わりに、ランタイム中に不要なメモリの電源を落とし得るので、電力を節約し得る。低減された電力消費は、システムが電池電力で動作するときに特に有利となり得る。何故なら、それにより電池の寿命を延長することができるからである。
以下、図面を参照するが、図面においては全体を通して、同様の要素は似通った参照符号を用いて参照する。以下の説明においては、説明の目的で、その完全なる理解を提供するために数多くの具体的詳細事項を明らかにする。しかしながら、明らかなように、これら新規の実施形態は、これらの具体的詳細事項を用いずにも実施され得るものである。また、周知の構造及び装置は、その記述を容易にするためにブロック図の形態で示す。特許請求に係る事項の精神及び範囲に入る全ての変更、均等及び代替に及ぶことが意図される。
図1は、例示的なコンピューティングプラットフォームを実装するシステム100を例示している。システム100は、複数のプロセッサ回路を含み得る。複数のプロセッサ回路は少なくとも第1の処理ユニットと第2の処理ユニットとを含み得る。複数のプロセッサ回路のことを、グラフィック処理ユニット110及び中央演算処理ユニット120として表記することがある。システム100は、共有物理メモリ125及びメモリ配分マネジャ実行コンテキスト135を含み得る。
グラフィック処理ユニット110は、ディスプレイへの出力に利用可能な画像の作成を加速するよう、メモリの操作及び改変を行う。グラフィック処理ユニット110は、計算集約的な計算を急速なスピードで実行することによって、コンピュータグラフィックスを効率的に操作する。グラフィック処理ユニット110は、データの大きいブロックを並列に速く処理する。中央演算処理ユニット120は、基本算術演算及び論理演算を行うことによって命令を実行し得る。図1には示していないが、システム100は、これらに加えて、あるいは代えて、以下に限られないが例えばデジタル信号処理ユニット及び/又はネットワーク処理ユニットなどの処理ユニットを含み得る。
共有物理メモリ125は、処理ユニットに割り当てられるメモリ空間を含み得る。例えば、図1において、共有物理メモリ125は、グラフィック処理ユニット部分126と中央演算処理ユニット部分127とに割り当てられるメモリ空間を含み得る。図示していないが、他の実施形態において、共有物理メモリ125は、例えばシステム100上のデジタル信号処理ユニット及び/又はネットワーク処理ユニットなどの、システム100によって実装されるその他の処理ユニットに割り当てられるメモリ空間を含み得る。
システム100は、メモリ配分マネジャ実行コンテキスト135を含み得る。メモリ配分マネジャ実行コンテキスト135は、多様は手法で実装され得る。一実施形態において、メモリ配分マネジャ実行コンテキスト135は、仮想マシンモニタとして実装され得る。仮想マシンモニタとして、メモリ配分マネジャ実行コンテキスト135は、システム100上で起動される様々な仮想マシンを連係させ得る。例えば、メモリ配分マネジャ実行コンテキスト135は、システム100上で起動されるオペレーティングシステムを変化させる仮想マシンと連携し得る。仮想マシンは、物理的なコンピューティング装置のようなプログラムを実行するコンピューティング装置のソフトウェア実装を有し得る。例えば、仮想マシンは、オペレーティングシステムの実行を支援し得る。他の一実施形態において、メモリ配分マネジャ実行コンテキスト135は、ソフトウェアコンポーネントとして中央演算処理ユニット120上で動作するように実装され得る。別の他の一実施形態において、メモリ配分マネジャ実行コンテキスト135は、例えば電力制御ユニット又はマネージャビリティエンジンなど、オペレーティングシステム、ドライバ又はマイクロコントローラ上で動作する実装されてもよい。更なる他の一実施形態において、メモリ配分マネジャ実行コンテキスト135は、ソフトウェア制御に晒されるレジスタインタフェースを有するハードウェアユニットとして動作してもよい。実施形態は、この点で限定されるものではない。
メモリ配分マネジャ実行コンテキスト135は、メモリ配分マネジャ137を含み得る。メモリ配分マネジャ137は、ランタイム中に処理ユニットに、より多くの、あるいはより少ない共有物理メモリ125が割り当てられるように、物理メモリを再配分することを担い得る。メモリ配分マネジャ137は、検出されたシステムニーズに基づいて、物理メモリのメモリ割当てをランタイム中に変更するアクションを起こし得る。メモリ配分マネジャ137は、以下に限られないが例えばアプリケーション又はオペレーティングシステムなどのシステムエンティティからの要求に応答して、共有物理メモリ125の割当てをランタイム中に変更してもよい。代わりに、あるいは加えて、メモリ配分マネジャ137は、より多くのメモリをランタイム中に取得するための処理ユニット110、120からの要求に応答してもよい。メモリ配分マネジャは、中央演算処理ユニット、グラフィックドライバ、論理回路、又はオペレーティングシステムのうちの1つ上で動作し得る。
システム100は、処理ユニット上で動作し、且つ該処理ユニットに割り当てられた共有物理メモリ125のメモリ空間を使用する、1つ以上のシステムエンティティ130を含み得る。システムエンティティ130は、以下に限られないが、アプリケーション、ドライバ、及び/又はオペレーティングシステムを含み得る。例えば、システムエンティティ130は、例えば3次元ゲーム及び/又はビデオなどのマルチメディアの作成又は更新に使用されるアプリケーションとし得る。アプリケーションは、以下に限られないが例えば、2次元質感アプリケーション、3次元質感アプリケーション、音響効果アプリケーション、及び陰影付けアプリケーションなど、タスク又は機能を含み得る。代わりに、システムエンティティ130は、例えばUnix(登録商標)又はWindows(登録商標)などのオペレーティングシステムを含んでいてもよい。
システム100はグラフィックドライバ140を含み得る。動作時、或るシステムエンティティ130が、ビデオコンテンツのフレーム155を提示するためにグラフィックドライバ140を呼び出し得る。グラフィックドライバ140は、ディスプレイ160へのフレームの提示を取り扱い得る。システム100はまた、デジタルディスプレイ160と通信可能に結合され得る。
図2は、共有物理メモリを動的に再配分することの一実施形態を例示している。図2は、当初の配分の共有物理メモリ201aと、後の配分の共有物理メモリ201bとを例示している。共有物理メモリ201a及び201bはブロックの組として描かれており、1つのブロックが1つの物理メモリページを表している。当初の配分の共有物理メモリ201aにおいて、第1の処理ユニット250に割り当てられた静的メモリが、第2の処理ユニット260に割り当てられた静的メモリの上に示されている。第1の処理ユニット250に割り当てられた静的メモリは、第2の処理ユニット260に割り当てられた静的メモリに連続し得る。例えば、第1の処理ユニット250は、0から500メガバイトのメモリ空間を含み得る。第2の処理ユニット260は、500から1000メガバイトのメモリ空間を含み得る。一実施形態において、第1の処理ユニット250は中央演算処理ユニット120を表し、第2の処理ユニット260はグラフィック処理ユニット110を表し得る。他の一実施形態において、第1のメモリ空間はグラフィック処理ユニット110を表し、第2のメモリ空間は中央演算処理ユニット120を表し得る。更なる他の一実施形態において、第1のメモリ空間はネットワーク処理ユニットを表し、第2のメモリ空間は中央演算処理ユニット120を表し得る。他の一実施形態において、他の処理ユニットに割り当てられた第3又は更なるメモリ空間が存在し得る。
共有物理メモリ201aは再配分され得る。第1の処理ユニット250がより多くのメモリを必要とするとき、共有物理メモリ201aは、201bに示されるように再配分され得る。共有物理メモリ201bは、共有物理メモリ201aとは別の状態であり、システムは、共有物理メモリ201aに示される状態又は共有物理メモリ201bに示される状態の何れかとすることができる。共有物理メモリ201bに示されるように、第1の処理ユニット250、又は第1の処理ユニット250上で起動されているシステムエンティティは、より多くのメモリ空間を要求し得る。メモリ配分マネジャ137が、第2の処理ユニット260に現在割り当てられている静的メモリ空間のうちの或る量が第1の処理ユニット250に割り当て直されることを要求し得る。
現在、静的メモリ空間は、ランタイム中に割り当て直されることができない。メモリ配分マネジャ137を使用しないと、静的メモリの再配分は、システム障害を生じさせることなしでは可能でないことがある。メモリ配分マネジャ137は、第1の処理ユニット250及び第2の処理ユニット260と通信し得る。この通信は、第2の処理ユニット260に現在割り当てられている静的メモリ空間のうちの要求量が、システム障害を生じさせることなく第1の処理ユニット250に割り当て直され得るように、第2の処理ユニット260上で現在起動しているシステムエンティティ130が完了されることを確実にし得る。
共有メモリ割当て201bは、第1の処理ユニット250及び第2の処理ユニット260に割り当てられるメモリ空間の、新たな望ましい配分を示している。第2の処理ユニット260から第1の処理ユニット250に割り当てられるメモリ空間は、連続的なメモリ空間である。例えば、第1のメモリ空間のうちの128MBが、第2の処理ユニット260から第1の処理ユニット250に再割り当てされることを要求され得る。第2の処理ユニット110のメモリ空間のうちのこの128MBは、そのメモリ空間のうちの、第1の処理ユニット120のメモリ空間に連続した128MBである。
図3は、より多くのメモリの要求を受信するメモリ配分マネジャ137の論理フロー300の一実施形態を例示している。ここには、開示のアーキテクチャの新規な態様を実行する例示的な方法を表す1つ以上のフローが含まれている。ここでは、説明の容易さの目的で、これら1つ以上の方法はフローチャート又はフロー図の形態で図示され且つ一連のアクト(活動)として図示及び説明されるが、理解及び認識されるべきことには、これらの方法はこのアクト順によって限定されるものではない。というのは、一部のアクトは、これらの方法に従って、ここに図示されて説明されるものとは異なる順序で行われてもよく、且つ/或いは他のアクトと同時に行われてもよいからである。例えば、当業者が理解及び認識するように、方法は代替的に、例えば状態図においてのように、一連の相互に関係のある状態又はイベントとして表現されることができる。また、或る新規な実装に関して、方法内に示される全てではないアクトのみ必要とされることがある。
論理フロー300は、ブロック305にて、或る処理ユニットのためのメモリ空間の要求を受信し得る。メモリ配分マネジャ実行コンテキスト135が、共有物理メモリを再配分することの要求を受信し得る。この要求は、以下に限られないが例えばオペレーティングシステム、ドライバ、又はアプリケーションなどの、システムエンティティ130から送信され得る。システムエンティティ130は、処理ユニット110、120を用いて動作し得る。システムエンティティ130は、処理ユニット110、120に割り当てられている共有物理メモリ125のメモリ空間を使用し得る。しかしながら、処理ユニット110、120に割り当てられている共有物理メモリ125内のメモリ空間がフル(いっぱい)になることがある。システムエンティティ130が処理ユニット110、120上で動作するようにため、システムエンティティ130は、より多くのメモリ空間が処理ユニット110に割り当てられることを要求し得る。
例えば、3次元アプリケーションが、グラフィック処理ユニット110が当該3次元アプリケーションを実行し且つ3次元画像のテクスチャを包含あるいは保持するために、より多くの物理メモリが必要なことを検出し得る。グラフィックドライバ140が、再配分要求を起こし得る。グラフィックドライバ140は、現在どれだけの物理メモリがグラフィック処理ユニット110に割り当てられているかを通知され得る。グラフィックドライバ140は、オペレーティングシステム、グラフィック処理ユニット110、又はメモリ配分マネジャ137の何れかから通知を受け得る。3次元アプリケーションが、資源を創出あるいは粉砕し、また、グラフィック処理ユニット110に割り当てられているメモリを消費する処理を実行するとき、グラフィックドライバ140は、これらの処理によってどれだけ多くのメモリがグラフィック処理ユニット110上で使用されているかを追跡し得る。グラフィック処理ユニット110上の3次元アプリケーションの創出資源及び処理によって必要とされるメモリの量が、グラフィック処理ユニット110に現在割り当てられている物理メモリの量を超えるとき、グラフィックドライバ140は、更なる物理メモリを要求するためにメモリ配分マネジャ137に信号伝達し得る。同様に、必要なメモリの量が、グラフィック処理ユニット110に対して現在割り当てられている物理メモリ閾量を下回るとき、グラフィックドライバ140は、グラフィック処理ユニット110がより少ない物理メモリを使用し得ることを、メモリ配分マネジャ137に通知することができる。
共有物理メモリ125のグラフィック処理ユニット部分126がフルであるとドライバが決定するとき、その時のコマンドバッファが、実行のためにグラフィック処理ユニット110にフラッシュされ得る。グラフィック処理ユニット110は、3次元アプリケーションが更なるメモリの要求をメモリ配分マネジャ137に送信するのに先立って、コマンドバッファを首尾よく実行し得る。
他の一実施形態において、アプリケーションが更なるメモリを要求することに代えて、オペレーティングシステムが更なるメモリを要求し得る。オペレーティングシステムは、物理メモリについてのアプリケーションの需要を監視することができ、オペレーティングシステムは、アプリケーションのニーズに基づいてメモリ配分マネジャ137が物理メモリを再配分することを要求し得る。
更なる他の一実施形態において、ユーザが共有物理メモリ125の再割り当てを要求してもよい。システム100は、ランタイム中の手動設定モードをサポートすることができ、それにより、ユーザは、システム100の共有物理メモリ125の好ましい配分を指定し得る。ユーザは、以下に限られないが例えば制御パネル、キーボード、ジョイスティック、及び/又はタッチスクリーンなどのインタフェースを介して、共有物理メモリ125の割当てを指定し得る。指定されると、メモリ配分マネジャ137は、ユーザ要求を守るように共有物理メモリを再割り当てすることの要求を受信し得る。結果として、ユーザは、システムを再始動する必要なく、既存のアプリケーションプロファイルの完全に外にあるアプリケーションを走らせ得る。
例えば、ユーザが、中央演算処理ユニット120よりも、グラフィック処理ユニット110の使用を好むことがある。ユーザは、入力装置を用いて、好ましいメモリ割当てをメモリ配分マネジャ137に提供し得る。ユーザは、好ましいメモリ割当てを、例えばシステム始動時又はランタイム中のどちらでもといった、何らかの時点で提供し得る。故に、グラフィック処理ユニット110が更なるメモリを必要とするとき、メモリ配分マネジャ137は、グラフィック処理ユニットに割り当てるべき利用可能なメモリ空間を作るように中央演算処理ユニット120に要求を送り得る。
他の一実施形態において、共有物理メモリ125を再割り当てすることの要求は、アプリケーション固有のプロファイルに基づいてもよい。システム100の動作中の何らかのときに、システムエンティティ130としてアプリケーションをロードすることができ、アプリケーションはアプリケーション固有プロファイルを含み得る。アプリケーション固有プロファイルは、ランタイム中に物理メモリの分配への変更を要求し得る。メモリ配分マネジャ137は、アプリケーション固有プロファイルから、共有物理メモリ125内のメモリ空間を割り当て直すことの要求を受信し得る。
論理フロー300は、ブロック310にて、共有物理メモリ125内に未割当てメモリ空間が存在するかを決定し得る。メモリ配分マネジャ137が要求を受信し得る。メモリ配分マネジャ137は、処理ユニット110、120に割り当てるのに利用可能なメモリ空間が存在するかを決定し得る。メモリ配分マネジャ137は、共有物理メモリ125内の割り当てられていないメモリ空間を特定することによって、更なるメモリ空間が利用可能であるかを決定し得る。
未割当てメモリが存在することをメモリ配分マネジャ137が決定したとき、論理フロー300は、ブロック315にて、未割当てメモリを処理ユニット110、120に割り当て得る。メモリ配分マネジャ137は、処理ユニット110、120に関連付けられたハードウェアレジスタを再プログラムすることによって、利用可能な未割当てメモリ空間を処理ユニット110、120に割り当て得る。例えば、処理ユニット110、120は、一組の利用可能なアドレス可能物理メモリを規定する一対のメモリアドレス範囲レジスタを維持管理し得る。処理ユニット110、120は、開始アドレス用の第1のレジスタと、終了アドレス用の第2のレジスタとを有し得る。物理メモリの割当てが変わるとき、メモリ配分マネジャ137は、影響される各処理ユニット110、120のこれらのレジスタに新たな値を書き込み得る。一実施形態において、新たな値が書き込まれたのち、処理ユニット110、120は、これらのレジスタへの変更の割込み通知を受信し得る。これは、処理ユニット110、120上で動作しているソフトウェアコンポーネントによって取り扱われる。ソフトウェアコンポーネントは、有効なアドレス可能メモリ空間について自身がローカルに維持管理している情報を更新し得る。他の一実施形態において、新たな値が書き込まれた後、メモリ配分マネジャ137が、レジスタを更新し、影響される処理ユニット110、120上のソフトウェアコンポーネントにソフトウェアメッセージを介して通知し得る。更なる他の一実施形態において、これらソフトウェアコンポーネントが、利用可能なメモリ空間を維持管理することを担ってもよく、ソフトウェアコンポーネントは、メモリ空間の割当てが変わったかを決定するために、周期的にハードウェアレジスタにポーリングし得る。
論理フロー300は、ブロック320にて、割り当てられるメモリ空間の量及び位置を応答し得る。メモリ配分マネジャ137が、処理ユニット110、120に割り当てられるメモリ空間の量を有する応答を要求元に送信し得る。一実施形態において、メモリ配分マネジャ137は、非同期応答を要求元に送信し得る。共有物理メモリが未割当てメモリ空間を含んでいるとメモリ配分マネジャ137が決定したとき、メモリ配分マネジャ137は、未割当てメモリ空間の全て又は一部を処理ユニット110、120に割り当て得る。例えば、メモリ配分マネジャ137は、システムエンティティを実行するために処理ユニット110、120によって必要とされる最小限の量のメモリ空間を割り当て得る。メモリ配分マネジャ137によって割り当てられる量は、ユーザによって要求された量に等しくてもよく、且つ/或いはそのシステムエンティティを動作させるのに十分なものであってもよい。
他の例では、メモリ配分マネジャ137によって割り当てられる量が、要求量より少なく、且つ/或いはそのシステムエンティティを動作させるのに不十分であることがある。メモリ配分マネジャ137は、他の処理ユニットからのメモリを要求し得る。例えば、メモリ配分マネジャ137は、割り当てられていない物理メモリ空間は存在しないと決定することがある。より多くのメモリが必要とされるとき、論理フロー300は、ブロック335にて、少なくとも1つの他の処理ユニットに、より少ないメモリを使用するように要求を送り得る。一実施形態において、メモリ配分マネジャ137は、非同期要求を送信し得る。
必要に応じての一実施形態において、論理フロー300は、ブロック325にて、少なくとも1つの他の処理ユニットが現在、その処理ユニットに関する閾量より多くを使用しているかを決定し得る。メモリ配分マネジャ137が、他の処理ユニットがその処理ユニットに関する閾量又は最小量より多くを使用しており且つ/或いは割り当てられているかを決定し得る。例えば、メモリ配分マネジャ137は、処理ユニットに割り当てられる共有物理メモリのメモリ空間の閾量を指定し得る。他の例では、閾量は、システム100のユーザによって指定されてもよい。更なる他の一例において、閾量は、オペレーティングシステム又はアプリケーション固有プロファイルによって指定されてもよい。閾量に基づき、メモリ配分マネジャ137は、例えばグラフィック処理メモリ110などの或る処理ユニットが閾量より多くのメモリ空間を現在割り当てられていることを決定し得る。結果として、メモリ配分マネジャ137は、グラフィック処理メモリ110がもっと少ないメモリを使用することを要求し得る。メモリ配分マネジャは、グラフィック処理ユニット110が割当てメモリ空間を或る特定量だけ削減することを要求し得る。実施形態は、以上の例に限定されるものではない。
論理フロー300は、ブロック330にて、利用可能なメモリ空間がないとの応答を送信し得る。例えば、或るシステムエンティティ130が、より多くのメモリ空間の要求を送信したとし得る。メモリ配分マネジャ137は、ブロック310で、未割当てのメモリ空間が存在しない且つ/或いは十分な量の未割当てメモリ空間が存在しないと決定し得る。メモリ配分マネジャ137は、ブロック325で、どの処理ユニットも閾量より多くを現在使用していないことを決定し得る。結果として、メモリ配分マネジャ137は、要求に対して、その処理ユニットに割り当てることに利用可能なメモリ空間がないことを応答し得る。
論理フロー300は、ブロック335にて、少なくとも1つの他の処理ユニットに、メモリ空間の量を削減するよう、非同期要求を送信し得る。メモリ配分マネジャ137が、ブロック310での共有物理メモリ125の全てが割り当て済みとの決定に基づいて、少なくとも1つの他の処理ユニットに、より少ないメモリ空間を使用するよう、非同期要求を送信し得る。場合により、メモリ配分マネジャ137は、或る処理ユニットに、その処理ユニットが閾量より多くを使用しているとの決定に基づき、より少ないメモリ空間を使用するよう、非同期要求を送信し得る。
論理フロー300は、ブロック340にて、どのメモリ空間も現在利用可能でないがメモリ空間が利用可能になり得るとの応答を送信し得る。メモリ配分マネジャ137が、メモリ空間を処理ユニット110、120に割り当てることができるかを決定するとき、要求元にコールバックを行い得る。例えば、メモリ配分マネジャ137は、その処理ユニットのための更なるメモリ空間の要求を起こしたシステムエンティティ130に応答を送信し得る。メモリ配分マネジャ137は、どのメモリ空間も現在利用可能でないが、メモリ空間が利用可能になる場合及び/又は時にはメモリ配分マネジャ137がそのシステムエンティティ130にメッセージを非同期的に送信することになる、と応答し得る。
論理フロー300は、ブロック345にて、少なくとも1つの他の処理ユニットが共有物理メモリ内に利用可能なメモリ空間を作り出すことができたかを決定し得る。他の処理ユニットが共有物理メモリ125内に利用可能なメモリ空間を作り出すことができた場合、論理フロー300は、ブロック320にて、割り当てられるメモリ空間の量を応答し得る。この応答は、要求元に、メモリ配分マネジャ137が利用可能なメモリ空間を処理ユニット110、120に割り当て得ることを通知し得る。新たに割り当てられたメモリの結果として、システムエンティティ130は処理ユニット110、120上で動作し得る。
そうではなく、どの処理ユニット110、120も共有物理メモリ内に利用可能なメモリ空間を作り出さなかった場合、論理フロー300は、ブロック330にて、どのメモリ空間も利用可能でないと応答し得る。例えば、どの処理ユニット110、120もその最小量の閾値より多くを使用していないことがある。その場合、1つ以上の処理ユニットが更なるメモリの恩恵を受け得ることにかかわらず、システムは、全てのメモリを完全に利用して最適に動作していることがある。
図4は、処理ユニット110、120に割り当てられたメモリの量が本発明の実施形態に従って削減される論理フロー400の一実施形態を例示している。論理フロー400は、利用可能なメモリ空間を処理ユニットが作り出すことを描いている。論理フロー400は、ここに記載される1つ以上の実施形態によって実行される処理の一部又は全てを代表し得る。
図4に示す例示実施形態において、論理フロー400は、ブロック405にて、割り当て直すべきメモリ空間の量を決定し得る。メモリ配分マネジャ137が、処理ユニットから受信した要求に基づいてメモリ空間の量を決定し得る。メモリ配分マネジャ137は、決定された量の割当てメモリを何時にどの処理ユニットが削減すべきかを特定し得る。例えば、メモリ配分マネジャ137は、いつ処理ユニットが最小閾量より多くの共有物理メモリ125割り当てられるかを特定し得る。他の一例において、メモリ配分マネジャ137は、より多くのメモリ空間の要求を受信し、アプリケーションプロファイル又はユーザ要求に基づいて、或る特定の処理ユニットに割り当てられたメモリ空間の量が減らされるべきであると決定し得る。
論理フロー400は、ブロック410にて、処理ユニットによって利用されているメモリ空間を削減するよう、要求を送信し得る。メモリ配分マネジャ137が、処理ユニットに要求を送信し得る。他の例では、メモリ配分マネジャ137は、処理ユニットを管理するエンティティに要求を送信してもよい。例えば、グラフィック処理ユニット110が共有物理メモリ125内のその割当てメモリ空間を削減することをメモリ配分マネジャ137が要求する場合、メモリ配分マネジャ137は、そのグラフィック処理ユニット110を管理するグラフィックドライバ又はオペレーティングシステムに要求を送信してもよい。他の例では、中央演算処理ユニット120が共有物理メモリ125内のその割当てメモリ空間を削減することをメモリ配分マネジャ137が要求する場合、メモリ配分マネジャ137は、中央演算処理ユニット120を管理するオペレーティングシステムに要求を送信してもよい。
メモリ配分マネジャ137から送信される要求は、処理ユニットに割り当てられているメモリ空間を削減すべき量を含み得る。一実施形態において、メモリ配分マネジャ137は、処理ユニット110、120がそのメモリ空間の利用を、図3でシステムエンティティによって必要とされる全体量だけ削減することを要求し得る。他の一実施形態において、メモリ配分マネジャ137は、図3で要求されるメモリ空間の総量より少なく要求し得る。例えば、メモリ配分マネジャ137は、一部のメモリ空間を未割当てメモリ空間から割り当て得る。他の例では、メモリ配分マネジャ137は、メモリ空間を別の処理ユニットから割り当て得る。
論理フロー400は、ブロック415にて、処理ユニット110、120に割り当てられたメモリ空間が削減されることになるとの応答を受信し得る。メモリ配分マネジャ137が、処理ユニット110、120を管理するエンティティが該処理ユニットに割り当てられている共有物理メモリ125内のメモリ空間の量を非同期的に削減することになるとの応答を受信し得る。処理ユニット110、120を管理するエンティティは、共有物理メモリ125のその処理ユニットの割当て部分内で、決定された量だけメモリ空間を非同期的に削減し得る。
物理メモリのその処理ユニットの部分内に、利用可能なメモリ空間が不十分にしか存在しない場合、図5にて更に説明するようにしてメモリ空間が利用可能にされ得る。共有物理メモリのその処理ユニットの部分126、127内に、利用可能なメモリ空間が存在するようになると、処理ユニット110、120は、メモリ配分マネジャ137に、共有物理メモリ125を整備するよう要求を送信し得る。
論理フロー400は、ブロック420にて、決定された量のメモリ空間を整備することの要求を受信し得る。メモリ配分マネジャ137が、処理ユニットを管理するエンティティが要求量のメモリ空間を利用可能にした後にメモリ空間を整備することの要求を受信し得る。メモリ配分マネジャ137は、共有物理メモリ125を再配分するように利用可能メモリ空間を整備することの整備要求を受信し得る。
論理フロー400は、ブロック425にて、決定された量のメモリ空間を整備し得る。メモリ配分マネジャ137が、第2の処理ユニットに割り当てられるべきメモリ空間内のメモリ資源を、第1の処理ユニットに割り当てられたままにされる利用可能なメモリ空間にコピーすることによって、決定された量のメモリ空間を整備し得る。メモリ資源は、メモリ空間内の情報及び/又はメモリアレイとし得る。第2の処理ユニットに割り当てられるべきメモリ空間は、メモリ配分マネジャによって要求された、第1の処理ユニットに割り当てられたメモリ空間のうちの上記決定された量とし得る。決定された量のメモリ空間内のメモリ資源は、第1の処理ユニットに割り当てられたままにされる利用可能メモリ空間にコピーされ得る。この再配置により、利用可能なメモリ空間を、第2の処理ユニットに割り当てられるべき決定された量のメモリ空間に置き得る。決定された量のメモリ空間内のメモリ資源は、第1の処理ユニットに割り当てられたままにされるメモリ空間にコピーされ得る。
例えば、システム始動時、メガバイト0から100が第1の処理ユニットに割り当てられ、メガバイト100から200が第2の処理ユニットに割り当てられ得る。メモリ配分マネジャ137が、第1の処理ユニットのメモリ空間のうちの20メガバイトを第2の処理ユニットに割り当て直すことの要求を送信し得る。第1の処理ユニットは、共有物理メモリ125の第1の処理ユニットの部分内に、利用可能なメモリを作り出し得る。第1の処理ユニットを管理するエンティティによって利用可能にされるメモリ空間は、その処理ユニットに割り当てられたメモリ空間の至る所に位置し得る。例えば、利用可能にされたメモリ空間の20利用可能メガバイトは、メモリの0メガバイトから100メガバイトまでの至る所に位置し得る。しかしながら、20メガバイトのメモリ空間を第1の処理ユニットから第2の処理ユニットに割り当て直すためには、第1の処理ユニット内のそのメモリ空間が、第2の処理ユニットのメモリ空間と連続的である必要がある。従って、第1の処理ユニットから第2の処理ユニットに20メガバイトを割り当てるには、メガバイト80−100が連続的である。メモリ配分マネジャ137は、メガバイト80−100内のメモリ資源をメガバイト0−80内の利用可能メモリ空間にコピーすることによって、第1の処理ユニットに割り当てられたメモリ空間を整備する。
他の一実施形態において、メモリ配分マネジャ137は、決定された量のメモリ空間を、物理ページを再マッピングすることによって整備してもよい。換言すれば、別の処理ユニットに割り当て直されるメモリ空間内の物理ページがマッピングされ直されてもよい。処理ユニットはしばしば、例えば仮想アドレスといった、ソフトウェアによって使用されるメモリアドレスを、実際のメモリコンテンツを置くためにハードウェアによって使用される物理アドレスにマッピングするページ付け構造を介して、仮想アドレス空間を使用しているので、仮想メモリにおける物理ページの再マッピングは、コピーすることを不要にし得る。例えば、0x50000なる仮想アドレスが、ページテーブルを介して、0xfe804200なる物理メモリアドレスに変換され得る。オペレーティングシステムを仮想マシンとして動作させてシステムが仮想化される場合、更なるレベルの変換が存在する。仮想マシンによって見られる物理アドレスは、ハードウェアによって使用される実際の物理アドレスと必ずしも一致しない。更なるレイヤの変換が仮想メモリマネジャによって維持管理され得る。メモリ配分マネジャ137が、仮想メモリマネジャ内で動作する場合、又は仮想メモリマネジャと通信することができる場合、メモリ配分マネジャ137は、0xfe804200なる仮想マシン物理メモリ参照に、0xfe804200とは異なる物理ページを指し示させることができる。故に、処理ユニットが、連続的なメモリ領域を有するために物理アドレス0xfe804200を必要とする場合、仮想メモリマネジャの一部としてのメモリ配分マネジャ137は、処理ユニットが、実際にはこのアドレスが何らかの他の利用可能物理ページに変換されるときに、物理アドレス0xfe804200が利用可能であるとして認識することを可能にし得る。
論理フロー400は、ブロック430にて、整備されたメモリ空間を再割り当てし得る。メモリ配分マネジャ137がメモリ空間を整備した後、共有物理メモリ125は動的に再配分され得る。メモリ配分マネジャ137は、ランタイム中に、決定されたメモリ空間を他の処理ユニットに動的に割り当て得る。一実施形態において、ハードウェア範囲レジスタが上述のように更新され得る。これらのレジスタは、処理ユニット間でのアクセス保護を強いるために使用され得る。上述の仮想メモリマネジャが再マッピングするケースにおいて、処理ユニットは、物理メモリ空間全体への完全な範囲でのアクセスを有することができ、仮想メモリマネジャ又はその他の機構を介してセキュリティ制御が強いられ得る。
図5は、メモリ配分マネジャと処理ユニットとの間での通信の一実施形態を例示している。図5において、メモリ配分マネジャ137は、グラフィック処理ユニット110に割り当てられたメモリを削減するためにグラフィックドライバ140と通信し得る。グラフィックドライバ140は、グラフィック処理ユニット110を管理し得る。ここに記載される実施形態は、この例に限定されるものではない。
メモリ配分マネジャ137が、グラフィック処理ユニット110によって利用されるメモリ空間を削減するよう、グラフィックドライバ140に要求510を送信し得る。グラフィックドライバ140が、共有物理メモリ125内の、グラフィック処理ユニット110に割り当てられたメモリ空間を削減することの要求510を受信し得る。この要求は、メモリ空間を削減すべき量を含み得る。
グラフィックドライバ140が、メモリ配分マネジャ137に応答して、グラフィック処理ユニット110に割り当てられたメモリ空間が削減されることになることを指し示す。グラフィックドライバ140が、いつグラフィック処理ユニット110がその現在タスクを完了するかを決定することの要求520を、グラフィック処理ユニット110に送信し得る。
グラフィック処理ユニット110は、解放される必要がある共有物理メモリ125のグラフィック処理ユニット部分126がもはやアクティブでない、例えば、もはや使用されていない、ようになるまで待機し得る。グラフィック処理ユニット110は、システム100が同期されたままであることを確実にするため、メモリ空間を削減する前に、タスクが完了するまで待機し得る。同期化を確保することにより、処理ユニット110、129に割り当てられたメモリ空間の削減が、シームレスなプロセスになり得る。結果として、障害なく、且つ/或いはシステム100がフリーズすることなく、全てのタスクが完了され得る。例えば、グラフィックドライバ140は、共有物理メモリ125のグラフィック処理ユニット部分126を削減するのに先立ち、グラフィック処理ユニット110によって受信された現在フレームが完了して全てのアクティブ描写コンテンツがレンダリングされるまで待機し得る。
グラフィック処理ユニット110がタスクを完了した後、グラフィック処理ユニット110は、グラフィックドライバ140に、現在タスクが完了したことの通知525を送信し得る。グラフィックドライバ140が、グラフィック処理ユニット110に現在割り当てられている共有物理メモリ125のグラフィック処理ユニット部分126内の、要求された量のメモリ空間を利用可能にし得る。メモリ空間は、メモリ資源を解放すること、メモリ資源をコピーすること、又は、以下に限られないが例えば磁気ディスク若しくはハードディスクなどの不揮発性の長期記憶装置にメモリ資源をページ付けすることによって利用可能にされ得る。メモリ資源は、メモリ空間内の情報及び/又はメモリアレイとし得る。例えば、グラフィック処理ユニット110は、もはや使用されておらず且つ/或いはもはや必要ない物理メモリ内のメモリ資源又はメモリアレイを消去することによって、利用可能なメモリ空間を作り出し得る。他の一例において、グラフィック処理ユニット110はメモリ資源を磁気ディスクにページ付けし得る。
メモリ空間が利用可能になると、グラフィックドライバ140が、グラフィックドライバ140によって利用可能にされたメモリ空間を整備するよう、メモリ配分マネジャ137に要求530を送信し得る。メモリ配分マネジャが、メモリ空間を整備し、故に共有物理メモリ125を再配分し得る。図4にて説明したように、メモリ配分マネジャは、要求されたメモリ空間を整備することができ、要求された量のメモリ空間が別の処理ユニットに割り当てられ得る。
再配分の後、グラフィックドライバ140が、利用可能なメモリ空間を作り出すために移動されたメモリ資源を再配置535し得る。グラフィックドライバ140は、既存の方法に従って、グラフィック処理ユニット110に割り当てられたメモリ空間にメモリ資源をコピーすることを管理し得る。
図6は、共有物理メモリを動的に再配分することの一実施形態を例示している。601での共有物理メモリの当初の配分において、第1の処理ユニットに割り当てられたメモリ空間を共有物理メモリ内の第1の組のキロバイト606とし、第2の処理ユニットに割り当てられたメモリを共有物理メモリの第2の組のキロバイト608とし得る。例えば、第1の処理ユニットは中央演算処理ユニット120であるとすることができ、第2の処理ユニットはグラフィック処理ユニット110であるとすることができる。ここに記載される実施形態は、この例に限定されるものではない。
共有物理メモリ602において、メモリ配分マネジャ137は、或る量のメモリ空間をグラフィック処理ユニット110に割り当てることを決定し得る。メモリ配分マネジャ137は、中央演算処理ユニット120に現在割り当てられている第1のメモリ空間606のうちの或る量をグラフィック処理ユニット110に割り当て直すことを要求し得る。共有物理メモリ602は、中央演算処理ユニット120に割り当てられるメモリ空間606の新たな望ましい配分を描いている。グラフィック処理ユニット110は、メモリ空間608とともに、新たに割り当てられたメモリ空間615を割り当てられ得る。共有物理メモリ602は、共有物理メモリの中央演算処理ユニット部分127から共有物理メモリ125のグラフィック処理ユニット部分126へと再配分されるメモリ615の量を例示している。例えば、第1のメモリ空間606のうちの128MBが、中央演算処理ユニット120からグラフィック処理ユニット110に割り当て直され得る。
共有物理メモリ603において、中央演算処理ユニット120によって必要とされるメモリ空間の量を削減するために、中央演算処理ユニット120に割り当てられたメモリ空間606からのメモリ資源が仮想メモリにコピーされ得る。一実施形態において、中央演算処理ユニット120に割り当てられたメモリ空間606からのメモリ資源は、メモリアレイ、メモリ情報、及び/又はメモリコンテンツを含み得る。共有物理メモリ125の中央演算処理ユニット部分127からのメモリ空間が、以下に限られないが例えばグラフィックドライバ140又はシステムエンティティ130(例えばオペレーティングシステムなど)など、中央演算処理ユニット120を管理するエンティティによって利用可能にされ得る。中央演算処理ユニット120を管理するエンティティは、グラフィック処理ユニット110に割り当て直すのに利用可能な十分なメモリ空間を中央演算処理ユニット部分127が有するようになるまで、中央演算処理ユニット部分127からのメモリ資源を、以下に限られないが例えば磁気ディスク若しくはハードディスクなどの不揮発性の長期記憶装置上のページ付けされたメモリにコピーし得る。一実施形態において、中央演算処理ユニット120を管理するエンティティは、中央演算処理ユニット部分127からのメモリ資源を、中央演算処理ユニット120にアクセス可能な何らかの種類のバックアップ記憶装置にコピーし得る。不揮発性の長期記憶装置又はバックアップ記憶装置は、共有物理メモリ125より大きいが、それより低い処理速度を有し得る。
処理ユニットが連続的なメモリ空間を使用するとき、中央演算処理ユニット120メモリ空間内の利用可能にされたメモリ空間が、グラフィック処理ユニット110に割り当てられたメモリ空間に連続したメモリ空間615内にされ得る。共有物理メモリ604において、メモリ配分マネジャ137は、グラフィック処理ユニット110に割り当てられるメモリ空間615からのメモリ資源を、中央演算処理ユニット120に割り当てられたままにされる利用可能なメモリ空間606にコピーし得る。例えば、グラフィック処理ユニット110に割り当て直されるメモリ空間615のメモリページ620からのメモリ資源が、中央演算処理ユニット120に割り当てられたままにされるメモリ空間606内の利用可能なメモリページ610にコピーされ得る。メモリ資源を、メモリページ620から、中央演算処理ユニット120に割り当てられたままにされる利用可能なメモリページ610にコピーすることにより、グラフィック処理ユニット部分126に連続したメモリ空間615が利用可能になり得る。メモリ空間615が利用可能なメモリ空間になると、それが、グラフィック処理ユニット部分126の一部となるように再配分され得る。
共有物理メモリ605において、グラフィック処理ユニット110のために要求されたメモリ空間615が、ランタイム中に、グラフィック処理ユニット110に動的に再割り当てされ得る。メモリ配分マネジャ137が、ランタイム中に動的に、メモリ空間615をグラフィック処理ユニット110に割り当て得る。グラフィック処理ユニット110、及び/又はグラフィック処理ユニット110を管理するエンティティは、要求したメモリ空間615を含めて、共有物理メモリのグラフィック処理ユニット部分126を制御し得る。
メモリ空間615がランタイム中に動的にグラフィック処理ユニット110に割り当て直された後、以下に限られないが例えば不揮発性の長期メモリ若しくは磁気ディスクなどの記憶装置上のページ付けられたメモリに格納された、中央演算処理ユニット120のメモリ資源が、共有物理メモリ125の中央演算処理ユニット部分127に移し戻され得る。一実施形態において、メモリ資源は、中央演算処理ユニット部分127のメモリ空間のうち、これらのメモリ資源が元々置かれていたところとは異なる部分又は領域に移し戻されてもよい。中央演算処理ユニット120を管理するエンティティは、現行手法によるオンデマンドページングにより、中央演算処理ユニット120に割り当てられたメモリ空間606内の様々なメモリページにメモリ資源をコピーし得る。一実施形態において、例えばオペレーティングシステムなどのシステムエンティティが、現行手法に従ってメモリ空間を管理し得る。現行手法は、以下に限られないが、プログラムが資源を要求する時点でオンデマンドでディスクの物理メモリにメモリ資源をコピーすることを含み得る。
図7は、本開示の図1のシステムを実装するのに好適であり得るシステム700の一実施形態を例示している。実施形態において、システム700は、パーソナルコンピュータ(PC)、ラップトップコンピュータ、ウルトララップトップコンピュータ、タブレット、タッチパッド、ポータブルコンピュータ、ハンドヘルドコンピュータ、パームトップコンピュータ、携帯情報端末(PDA)、携帯電話、結合携帯電話/PDA、テレビジョン、スマート装置(例えば、スマートフォン、スマートタブレット、又はスマートテレビジョン)モバイルインターネット装置(MID)、メッセージング装置、及びデータ通信装置などに組み込まれ得る。
様々な実施形態は、ハードウェア要素、ソフトウェア要素、又はこれら双方の組み合わせを用いて実装され得る。ハードウェア要素の例は、プロセッサ、マイクロプロセッサ、回路、回路素子(例えば、トランジスタ、抵抗、キャパシタ、及びインダクタなど)、集積回路、特定用途向け集積回路(ASIC)、プログラマブルロジックデバイス(PLD)、デジタル信号プロセッサ(DSP)、フィールドプログラマブルゲートアレイ(FPGA)、論理ゲート、レジスタ、半導体デバイス、チップ、マイクロチップ、及びチップセットなどを含み得る。ソフトウェアの例は、ソフトウェアコンポーネント、プログラム、アプリケーション、コンピュータプログラム、アプリケーションプログラム、システムプログラム、機械プログラム、オペレーティングシステムソフトウェア、ミドルウェア、ファームウェア、ソフトウェアモジュール、ルーチン、サブルーチン、ファンクション、メソッド、プロシージャ、ソフトウェアインタフェース、アプリケーションプログラムインタフェース、命令セット、コンピューティングコード、コンピュータコード、コードセグメント、コンピュータコードセグメント、ワード、バリュー、シンボル、又はこれらの何らかの組み合わせを含み得る。実施形態をハードウェア要素及び/又はソフトウェア要素の何れを用いて実装するかを決めることは、例えば、所望の計算レート、電力レベル、熱耐性、処理サイクルバジェット、入力データレート、出力データレート、メモリリソース、データバススピード、及びその他の設計上若しくは性能上の制約などの、多数の要因に従って変わり得る。
実施形態において、システム700は、ディスプレイ720に結合されたプラットフォーム702を有する。プラットフォーム702は、例えばコンテンツサービス装置730若しくはコンテンツ配信装置740又はその他同様なコンテンツ源などの、コンテンツ装置からコンテンツを受信し得る。例えばプラットフォーム702及び/又はディスプレイ720とインタラクトするために、1つ以上のナビゲーション機構を有するナビゲーションコントローラ750が使用され得る。これらのコンポーネントの各々を更に詳細に後述する。
実施形態において、プラットフォーム702は、チップセット705、プロセッサ710、メモリ712、ストレージ714、グラフィックスサブシステム715、アプリケーション716及び/又は無線装置718の組み合わせを有し得る。チップセット705は、プロセッサ710、メモリ712、ストレージ714、グラフィックスサブシステム715、アプリケーション716及び/又は無線装置718の間での相互通信を提供し得る。例えば、チップセット705は、ストレージ714との相互通信を提供することが可能なストレージアダプタ(図示せず)を含み得る。
プロセッサ710は、複数命令セットコンピュータ(CISC)プロセッサ若しくは縮小命令セットコンピュータ(RISC)プロセッサ、x86命令セット互換プロセッサ、マルチコア、又はその他のマイクロプロセッサ若しくは中央演算処理ユニットとして実装され得る。実施形態において、プロセッサ710は、デュアルコアプロセッサやデュアルコアモバイルプロセッサなどを有し得る。
メモリ712は、以下に限られないが例えばランダムアクセスメモリ(RAM)、ダイナミックランダムアクセスメモリ(DRAM)、又はスタティックRAM(SRAM)などの、揮発性メモリデバイスとして実装され得る。
ストレージ714は、以下に限られないが例えば磁気ディスクドライブ、光ディスクドライブ、テープドライブ、内部記憶装置、取付式記憶装置、フラッシュメモリ、電池バックアップ式SDRAM(同期式DRAM)、及び/又はネットワークアクセス可能記憶装置などの、不揮発性記憶装置として実装され得る。実施形態において、ストレージ714は、例えば複数のハードドライブが含められるとき、貴重なデジタルメディアの対する記憶性能強化保護を高めるための技術を有し得る。
グラフィックスサブシステム715は、静止画又は動画などの画像の表示のための処理を実行し得る。グラフィックスサブシステム715は、例えば、グラフィック処理ユニット(GPU)110又はビジュアル処理ユニット(VPU)とし得る。グラフィックスサブシステム715とディスプレイ720とを通信可能に結合するために、アナログ又はデジタルのインタフェースが使用され得る。例えば、このインタフェースは、HDMI(登録商標)(高精細度マルチメディアインタフェース)、DisplayPort、ワイヤレスHDMI、及び/又はワイヤレスHDに準拠した技術のうちの何れかとし得る。グラフィックスサブシステム715は、プロセッサ710又はチップセット705に統合されてもよい。グラフィックスサブシステム715は、チップセット705に通信可能に結合されたスタンドアローン型カードであってもよい。
ここに記載されるグラフィックス及び/又はビデオ処理技術は、様々なハードウェアアーキテクチャにて実装され得る。例えば、グラフィックス及び/又はビデオ機能は、チップセット内に統合されてもよい。他の例では、別個のグラフィックス及び/又はビデオプロセッサが使用されてもよい。更なる他の一実施形態として、グラフィックス及び/又はビデオ機能は、マルチコアプロセッサを含め汎用プロセッサによって実装されてもよい。更なる一実施形態において、これらの機能は消費者電子装置にて実装されてもよい。
無線装置718は、様々な好適な無線通信技術を用いて信号の送信及び受信を行うことが可能な1つ以上の無線装置を含み得る。例えば、無線装置は無線受信器を含み得る。このような技術は、1つ以上の無線ネットワークを横切っての通信を伴い得る。典型的な無線ネットワークは、(以下に限られないが)無線ローカルエリアネットワーク(WLAN)、無線パーソナルエリアネットワーク(WPAN)、無線メトロポリタンエリアネットワーク(WMAN)、携帯電話ワーク、及び衛星ネットワークを含む。このようなネットワークを横切って通信する際、無線装置718は、何らかのバージョンの1つ以上の適用可能な規格に従って動作し得る。
実施形態において、ディスプレイ720は、如何なるテレビジョンタイプのモニタ若しくはディスプレイを有していてもよい。ディスプレイ720は、例えば、コンピュータ表示スクリーン、タッチスクリーンディスプレイ、ビデオモニタ、テレビジョンのような装置、及び/又はテレビジョンを有し得る。ディスプレイ720は、デジタル及び/又はアナログとし得る。実施形態において、ディスプレイ720はホログラフィックディスプレイであってもよい。また、ディスプレイ720は、視覚投影を受け得る透明表面であってもよい。そのような投影は、様々な形態の情報、画像、及び/又はオブジェクトを伝達し得る。例えば、そのような投影は、モバイル拡張現実(MAR)アプリケーション用の視覚的オーバーレイとし得る。1つ以上のソフトウェアアプリケーション716の制御下で、プラットフォーム702はディスプレイ720上にユーザインタフェース722を表示し得る。
実施形態において、コンテンツサービス装置730は、何らかの国家サービス、国際サービス及び/又は独立系サービスをホストとすることができ、故に、例えばインターネットを介してプラットフォーム702にアクセス可能である。コンテンツサービス装置730は、プラットフォーム702及び/又はディスプレイ720に結合されてもよい。プラットフォーム702及び/又はコンテンツサービス装置730は、ネットワーク760に結合されて、ネットワーク760との間でメディア情報を通信(例えば送信及び/又は受信)してもよい。コンテンツ配信装置740もまた、プラットフォーム702及び/又はディスプレイ720に結合され得る。
実施形態において、コンテンツサービス装置730は、ケーブルテレビジョンボックス、パーソナルコンピュータ、ネットワーク、電話機、デジタル情報及び/又はコンテンツを配信することが可能なインターネット接続可能装置若しくは機器、及び、ネットワーク760を介して、あるいは直接的にコンテンツプロバイダとプラットフォーム702及び/又はディスプレイ720との間で単方向あるいは双方向にコンテンツを通信することが可能なその他の同様の装置を有し得る。認識されるように、コンテンツは、ネットワーク760を介して、システム700内のコンポーネントのうちの何れか1つとコンテンツプロバイダとの間で単方向及び/又は双方向に通信され得る。コンテンツの例は、例えばビデオ、音楽、医療情報、及びゲーム情報などを含む如何なるメディア情報をも含み得る。
コンテンツサービス装置730は、例えばメディア情報、デジタル情報及び/又はその他のコンテンツを含む例えばケーブルテレビジョン番組などのコンテンツを受信する。コンテンツプロバイダの例は、ケーブルテレビジョンプロバイダ、衛星テレビジョンプロバイダ、ラジオプロバイダ、又はインターネットコンテンツプロバイダを含み得る。提示した例は、本発明の実施形態を限定することを意図したものではない。
実施形態において、プラットフォーム702は、1つ以上のナビゲーション機構を有するナビゲーションコントローラ750から制御信号を受信し得る。コントローラ750のナビゲーション機構は、例えば、ユーザインタフェース722とインタラクト(対話)するために使用され得る。実施形態において、ナビゲーションコントローラ750は、ユーザが空間(連続的且つ多次元)データをコンピュータに入力することを可能にするコンピュータハードウェアコンポーネント(具体的には、ヒューマンインタフェース装置)であるポインティング装置とし得る。例えばグラフィカルユーザインタフェース(GUI)、テレビジョン及びモニタなどの数多くのシステムは、ユーザが身体的なジェスチャを用いてコンピュータ又はテレビジョンを制御したりそれにデータを提供したりすることを可能にしている。
コントローラ750のナビゲーション機構の動作は、ディスプレイ上に表示されるポインタ、カーソル、焦点リング又はその他の視覚的インジケータの動作によって、ディスプレイ(例えば、ディスプレイ720)上に反映され得る。例えば、ソフトウェアアプリケーション716の制御下で、ナビゲーションコントローラ750上に位置するナビゲーション機構が、例えば、ユーザインタフェース722上に表示される仮想ナビゲーション機構にマッピングされ得る。実施形態において、コントローラ750は、別個のコンポーネントではなくて、プラットフォーム702及び/又はディスプレイ720に統合されてもよい。実施形態は、しかしながら、ここに図示あるいは記載される要素又は状況に限定されるものではない。
実施形態において、テレビジョンのようなプラットフォームを、例えば使用可能にされるとき、システム始動後にボタンのタッチを用いて即座にターンオン/オフすることを可能にする技術をドライバ(図示せず)が有し得る。プラットフォーム702がターン“オフ”されるとき、プラットフォーム702がコンテンツをメディアアダプタ又はその他のコンテンツサービス装置730若しくはコンテンツ配信装置740にストリーミングすることを、プログラムロジックが可能にし得る。さらに、例えば、5.1チャンネルサラウンド音声オーディオ及び/又は高精細6.1チャンネルサラウンド音声オーディオ用のハードウェア及び/又はソフトウェアサポートを、チップセット705が有し得る。ドライバは、統合グラフィックスプラットフォーム用のグラフィックスドライバを含み得る。実施形態において、グラフィックスドライバは、PCI(ペリフェラルコンポーネントインターコネクト)Express(エクスプレス)グラフィックスカードを有し得る。
様々な実施形態において、システム700内に示したコンポーネントのうちの何れか1つ以上が統合されてもよい。例えば、プラットフォーム702とコンテンツサービス装置730とが一体にされてもよいし、プラットフォーム702とコンテンツ配信装置740とが一体にされてもよいし、プラットフォーム702とコンテンツサービス装置730とコンテンツ配信装置740とが一体にされてもよい。様々な実施形態において、プラットフォーム702及びディスプレイ720は、一体化されたユニットとし得る。例えば、ディスプレイ720とコンテンツサービス装置730とが一体にされてもよいし、ディスプレイ720とコンテンツ配信装置740とが一体にされてもよい。これらの例は、本発明を限定することを意図したものではない。
様々な実施形態において、システム700は、無線システム、有線システム、又はこれら双方の組み合わせとして実装され得る。無線システムとして実装されるとき、システム700は、例えば1つ以上のアンテナ、送信器、受信器、送受信器、増幅器、フィルタ、及び制御ロジックなどの、無線共有媒体上で通信を行うことに適したコンポーネント及びインタフェースを含み得る。無線共有媒体の一例は、例えばRFスペクトルなどの無線スペクトルの一部を含み得る。有線システムとして実装されるとき、システム700は、例えば入力/出力(I/O)アダプタ、I/Oアダプタを対応する有線通信媒体と接続する物理的なコネクタ、ネットワークインタフェースカード(NIC)、ディスクコントローラ、ビデオコントローラ、及びオーディオコントローラなどの、有線通信媒体上で通信を行うことに適したコンポーネント及びインタフェースを含み得る。有線通信媒体の例は、ワイヤ、ケーブル、金属リード、印刷回路基板(PCB)、バックプレーン、スイッチ構成、半導体材料、ツイストペアワイヤ、同軸ケーブル、及び光ファイバを含み得る。
プラットフォーム702は、情報を通信する1つ以上の論理チャネル又は物理チャネルを構築し得る。情報は、メディア情報と制御情報とを含み得る。メディア情報は、ユーザに向けられるコンテンツを表すデータを意味し得る。コンテンツの例は、例えば、音声会話からのデータ、ビデオ会議、ストリーミングビデオ、電子メール(“email”)メッセージ、音声メールメッセージ、英数字記号、グラフィックス、画像、ビデオ、及びテキストなどを含み得る。音声会話からのデータは、例えば、音声情報、沈黙器官、背景雑音、快適雑音、及びトーンなどとし得る。制御情報は、自動化システムに向けられるコマンド、命令又は指令語を表すデータを意味し得る。例えば、制御情報は、メディア情報をシステム内で経路付けるため、あるいは所定の手法でノードがメディア情報を処理するように命令するために使用され得る。実施形態は、しかしながら、図7に図示あるいは記載された要素又は状況に限定されるものではない。
図8は、先述の様々な実施形態を実装するのに好適な例示的な通信アーキテクチャ800のブロック図を示している。通信アーキテクチャ800は、例えば送信器、受信器、送受信器、無線装置、ネットワークインタフェース、ベースバンドプロセッサ、アンテナ、増幅器、及びフィルタなどの、様々な一般的な通信素子を含んでいる。しかしながら、実施形態は、通信アーキテクチャ800による実装に限定されるものではない。
図8に示されるように、通信アーキテクチャ800は、1つ以上のクライアント802及びサーバ804を有する。クライアント802及びサーバ804は、それぞれ1つ以上のクライアントデータストア808及びサーバデータストア810に動作的に接続され、これらのデータストアはそれぞれ、例えばクッキー及び/又は関連する文脈情報など、クライアント802及びサーバ804にローカルな情報を格納するために使用されることができる。
クライアント802及びサーバ804は、通信フレームワーク806を用いて相互間で情報を通信し得る。通信フレームワーク806は、よく知られた通信技術及びプロトコルを実装し得る。通信フレームワーク806は、パケット交換ネットワーク(例えば、インターネットなどの公衆ネットワーク、及び企業イントラネットなどの私的ネットワークなど)、回線交換ネットワーク(例えば、公衆交換電話網)、又はパケット交換ネットワークと回線交換ネットワークとの組み合わせ(好適なゲートウェイ及び変換装置を用いる)として実装され得る。
様々な実施形態は、ハードウェア要素、ソフトウェア要素、又はこれら双方の組み合わせを用いて実装され得る。ハードウェア要素の例は、プロセッサ、マイクロプロセッサ、回路、回路素子(例えば、トランジスタ、抵抗、キャパシタ、及びインダクタなど)、集積回路、特定用途向け集積回路(ASIC)、プログラマブルロジックデバイス(PLD)、デジタル信号プロセッサ(DSP)、フィールドプログラマブルゲートアレイ(FPGA)、論理ゲート、レジスタ、半導体デバイス、チップ、マイクロチップ、及びチップセットなどを含み得る。ソフトウェアの例は、ソフトウェアコンポーネント、プログラム、アプリケーション、コンピュータプログラム、アプリケーションプログラム、システムプログラム、機械プログラム、オペレーティングシステムソフトウェア、ミドルウェア、ファームウェア、ソフトウェアモジュール、ルーチン、サブルーチン、ファンクション、メソッド、プロシージャ、ソフトウェアインタフェース、アプリケーションプログラムインタフェース、命令セット、コンピューティングコード、コンピュータコード、コードセグメント、コンピュータコードセグメント、ワード、バリュー、シンボル、又はこれらの何らかの組み合わせを含み得る。実施形態をハードウェア要素及び/又はソフトウェア要素の何れを用いて実装するかを決めることは、例えば、所望の計算レート、電力レベル、熱耐性、処理サイクルバジェット、入力データレート、出力データレート、メモリリソース、データバススピード、及びその他の設計上若しくは性能上の制約などの、多数の要因に従って変わり得る。
一部の実施形態は、“一実施形態”又は“或る実施形態”なる表現並びにこれらの派生表現を用いて記述されることがある。これらの表現が意味することは、その実施形態との関連で記述される特定の機構、構造又は特徴が、少なくとも1つの実施形態に含まれるということである。明細書の様々な箇所で“一実施形態において”なる言い回しが現れることは、必ずしも全てが同じ実施形態を参照しているわけではない。また、一部の実施形態は、“結合され”又は“接続され”なる表現並びにこれらの派生表現を用いて記述されることがある。これらの表現は必ずしも相互に同義語であるようには意図されない。例えば、一部の実施形態は、2つ以上の要素が互いに直接的に物理的あるいは電気的に接触していることを指し示すために、“接続され”及び/又は“結合され”なる用語を用いて記述されることがある。しかしながら、“結合され”なる用語はまた、2つ以上の要素が互いに直接的に接触しないが、なおも互いに協働あるいは作用し合うことをも意味し得る。
強調しておくことには、本開示の要約は、読者が直ちに技術開示の特質を確かめることを可能にするために提供されている。これは、請求項の範囲又は意味を解釈あるいは限定することには要約は使用されないという理解の下でのことである。また、以上の詳細な説明においては、理解されるように、開示を効率化する目的で様々な機構が単一の実施形態にまとめられている。この開示方法は、特許請求される実施形態が各請求項に明示的に記載されるより多くの機構を必要とするという意図を映すものとして解釈されるべきではない。むしろ、以下の請求項が映すように、発明的事項は、単一の開示された実施形態の全ての機構よりも少ないものにある。故に、以下の請求項はここにて、各請求項が別個の実施形態として自立しているものとして詳細な説明に組み込まれる。添付の請求項において、“含む(including)”及び“それにおいて(in which)”なる用語は、それぞれ、“有する(comprising)”及び“において(wherein)”なる用語の平易な同義語として使用される。また、“第1の”、“第2の”及び“第3の”などの用語は、単にラベルとして使用されており、それらの対象物に数字的な要件を課すものではない。
一部の実施形態において、コンピュータによって実行されるコンピュータ実行方法は、システム始動中に、第1の処理ユニットに割り当てられる物理メモリ内のメモリ空間の量を決定することと、決定された量のメモリ空間を整備することと、ランタイム中に、整備されたメモリ空間を第2の処理ユニットに割り当て直すこととを含み得る。第2の処理ユニットにメモリ空間を割り当てることの要求が受信され得る。物理メモリが未割当てのメモリ空間を含んでいるかが決定され得る。利用可能なメモリ空間を第1の処理ユニットが含んでいるかが決定され得る。第1の処理ユニットに割り当てられたメモリ空間が閾値を超えているかが決定され得る。決定された量のメモリ空間からの物理ページが再マッピングされ得る。メモリ資源が不揮発性の長期記憶装置にコピーされて、第1の処理ユニット内に利用可能なメモリ空間が作り出され得る。決定された量のメモリ空間内のメモリ資源が、第1の処理ユニットに割り当てられている利用可能なメモリ空間にコピーされ得る。ランタイム中に物理メモリを割り当て直すことの要求が、物理メモリの割当てに関するユーザ作成プロファイル、アプリケーション固有プロファイル、又はシステムエンティティによる動的な決定に基づいて受信され得る。一実施形態において、システムエンティティはオペレーティングシステムとし得る。
一実施形態において、装置は、複数の処理ユニットと、第1の処理ユニットに割り当てられた第1のメモリ空間と第2の処理ユニットに割り当てられた第2のメモリ空間とを有する物理メモリを再配分するように前記複数の処理ユニットのうちの少なくとも1つ上で動作するメモリ配分マネジャとを含み得る。メモリ配分マネジャは、第2の処理ユニットに割り当て直すべき第1のメモリ空間の量を決定し、ランタイム中に、決定した量の第1のメモリ空間を第2の処理ユニットに割り当て直すよう動作し得る。メモリ配分マネジャは、決定した量の第1のメモリ空間を整備するよう動作し得る。メモリ配分マネジャは、第2の処理ユニットにメモリ空間を割り当てることの要求を受信するよう動作し得る。メモリ配分マネジャは、利用可能なメモリ空間を第1の処理ユニットが含んでいるかを決定するよう動作し得る。メモリ配分マネジャは仮想マシンモニタ上で動作し得る。メモリ配分マネジャは、中央演算処理ユニット、グラフィックドライバ、論理回路、又はオペレーティングシステムのうちの1つ上で動作し得る。メモリ配分マネジャは、第1の処理ユニットに割り当てられた第1のメモリ空間が閾値を超えているかを決定するよう動作し得る。メモリ配分マネジャは、決定した量のメモリ空間からの物理ページを再マッピングするよう動作し得る。装置は、前記複数の処理ユニットのうちの少なくとも1つに動作可能に結合されたデジタルディスプレイを含み得る。
様々な実施形態において、少なくとも1つの機械読み取り可能媒体は、コンピューティング装置上で実行されることに応答して該コンピューティング装置に、第1の処理ユニットに割り当てられた物理メモリ内の或る量のメモリ空間が第2の処理ユニットに割り当て直されることを要求させ、ランタイム中に、第1の処理ユニットに割り当てられた物理メモリ内の要求量のメモリ空間を整備させ、整備されたメモリ空間を第2の処理ユニットに割り当て直させる複数の命令を含み得る。上記少なくとも1つの機械読み取り可能媒体は、コンピューティング装置上で実行されることに応答して該コンピューティング装置に、物理メモリが未割当てのメモリ空間を含んでいるかを決定させる複数の命令を含み得る。上記少なくとも1つの機械読み取り可能媒体は、コンピューティング装置上で実行されることに応答して該コンピューティング装置に、第1の処理ユニットに割り当てられたメモリ空間が閾値を超えているかを決定させる複数の命令を含み得る。上記少なくとも1つの機械読み取り可能媒体は、コンピューティング装置上で実行されることに応答して該コンピューティング装置に、要求量のメモリ空間からの物理ページを再マッピングさせる複数の命令を含み得る。上記少なくとも1つの機械読み取り可能媒体は、コンピューティング装置上で実行されることに応答して該コンピューティング装置に、メモリ資源を不揮発性の長期メモリにコピーして第1の処理ユニット内に利用可能なメモリ空間を作り出させる複数の命令を含み得る。
一部の実施形態において、システムは、複数の処理ユニットと、前記複数の処理ユニットのうちの少なくとも1つに動作可能に結合されたデジタルディスプレイと、第1の処理ユニットに割り当てられた物理メモリ空間内の第1のメモリ空間、及び第2の処理ユニットに割り当てられた前記物理メモリ空間内の第2のメモリ空間を再割り当てする前記複数の処理ユニットのうちの少なくとも1つ上のメモリ配分マネジャとを含み得る。メモリ配分マネジャは、第2の処理ユニットに割り当てるべき第1のメモリ空間の量を決定し、決定した量の第1のメモリ空間を整備し、整備した第1のメモリ空間を第2の処理ユニットに割り当て直すよう動作し得る。システムは、前記複数の処理ユニットのうちの少なくとも1つに動作可能に結合された無線受信器を含み得る。メモリ配分マネジャは、メモリ資源を揮発性の長期メモリにコピーして、第1の処理ユニット内に利用可能なメモリ空間を作り出すよう動作し得る。メモリ配分マネジャは、決定した量の第1のメモリ空間内のメモリ資源を、第1の処理ユニットに割り当てられている利用可能なメモリ空間にコピーするよう動作し得る。システムは、前記物理メモリ空間内に第3のメモリ空間を含むことができ、メモリ配分マネジャは、第3の処理ユニットに割り当てるべき第3のメモリ空間の量を決定し、決定した量の第3のメモリ空間を整備し、整備した第3のメモリ空間を第3の処理ユニットに再割り当てするよう動作し得る。
上述したものは、開示したアーキテクチャの例を含んでいる。当然ながら、構成要素及び/又は手順の考え得る全ての組み合わせを記載することは可能でないが、当業者が認識し得るように、数多くの更なる組み合わせ及び変形が可能である。従って、新規なアーキテクチャは、添付の請求項の精神及び範囲に入る全てのそのような改変、変更及び変形を包含するものである。