"コンピューティングシステム内の1以上のメモリバッファを複数のメモリチャネルに関連付ける方法であって、第1のメモリバッファと第1のシーケンス識別子とを、1以上のメモリチャネルの第1のセットにわたって広がる第1の複数のメモリバンクに関連付けるステップと、第2のメモリバッファと第2のシーケンス識別子とを、1以上のメモリチャネルの第2のセットにわたって広がる第2の複数のメモリバンクに関連付けるステップと、前記第1のシーケンス識別子および前記第2のシーケンス識別子に基づいて、前記第1のメモリバッファおよび前記第2のメモリバッファにアクセスするステップと、を含む、方法。前記第1のメモリバッファに関連する第1のメモリオペレーションを第1の動作周波数で実行するステップと、前記第1の動作周波数とは異なる第2の動作周波数で前記第2のメモリバッファに関連した第2のメモリオペレーションを実行するステップと、前記第1のメモリオペレーションの実行後に前記第1の複数のメモリバンクから前記第1のメモリバッファの割り当てを解除し、前記第2のメモリオペレーションの実行後に前記第2の複数のメモリバンクから前記第2のメモリバッファの割り当てを解除するステップと、をさらに含む請求項1の方法。前記第1のメモリバッファを関連付けるステップは、前記第1のメモリバッファを前記第1の複数のメモリバンクに割り当てるステップを含む、請求項1の方法。前記第2のメモリバッファを関連付けるステップは、前記第2のメモリバッファを、前記第1の複数のメモリバンクとは異なる第2の複数のメモリバンクに割り当てるステップを含む、請求項1の方法。前記第2のメモリバッファを関連付けるステップは、前記第2のメモリバッファを、前記第1の複数のメモリバンクと同じである第2の複数のメモリバンクに割り当てるステップを含む、請求項1の方法。前記第1のメモリバッファおよび前記第2のメモリバッファにアクセスするステップは、メモリバンクのコンテンションを回避し、前記複数のメモリチャネルの全帯域幅を利用するために、前記第1のメモリバッファおよび前記第2のメモリバッファに順番にアクセスするステップを含む、請求項1の方法。1以上のプロセッサによって実行されると、コンピューティングシステム内の1以上のメモリバッファを複数のメモリチャネルに関連付けるコンピュータプログラム論理を記録した、コンピュータで使用可能な媒体を含むコンピュータプログラム製品であって、前記コンピュータプログラム論理は、プロセッサが、第1のメモリバッファと第1のシーケンス識別子とを、1以上のメモリチャネルの第1のセットにわたって広がる第1の複数のメモリバンクに関連付けることができるようにする、第1のコンピュータで読み出し可能なプログラムコードと、プロセッサが、第2のメモリバッファと第2のシーケンス識別子とを、1以上のメモリチャネルの第2のセットにわたって広がる第2の複数のメモリバンクに関連付けることができるようにする、第2のコンピュータで読み出し可能なプログラムコードと、プロセッサが、前記第1のシーケンス識別子および前記第2のシーケンス識別子に基づいて、前記第1のメモリバッファおよび前記第2のメモリバッファにアクセスできるようにする、第3のコンピュータで読み出し可能なプログラムコードと、を含む、コンピュータプログラム製品。前記コンピュータプログラム論理は、プロセッサが、前記第1のメモリバッファに関連した第1のメモリオペレーションを第1の動作周波数で実行できるようにする、第4のコンピュータで読み出し可能なプログラムコードと、プロセッサが、前記第2のメモリバッファに関連した第2のメモリオペレーションを、前記第1の動作周波数とは異なる第2の動作周波数で実行できるようにする、第5のコンピュータで読み出し可能なプログラムコードと、プロセッサが、前記第1のメモリオペレーションおよび前記第2のメモリオペレーションの実行後、前記第1の複数のメモリバンクから前記第1のメモリバッファを、前記第2の複数のメモリバンクから前記第2のメモリバッファの割り当てをそれぞれ解除できるようにする、第6のコンピュータで読み出し可能なプログラムコードと、をさらに含む、請求項7のコンピュータプログラム製品。前記第1のコンピュータで読み出し可能なプログラムコードは、プロセッサが、前記第1のメモリバッファを前記第1の複数のメモリバンクに割り当てることができるようにする、第4のコンピュータで読み出し可能なプログラムコードを含む、請求項7のコンピュータプログラム製品。前記第2のコンピュータで読み出し可能なプログラムコードは、プロセッサが、前記第2のメモリバッファを、前記第1の複数のメモリバンクとは異なる第2の複数のメモリバンクに割り当てることができるようにする、第4のコンピュータで読み出し可能なプログラムコードを含む、請求項7のコンピュータプログラム製品。前記第2のコンピュータで読み出し可能なプログラムコードは、プロセッサが、前記第2のメモリバッファを、前記第1の複数のメモリバンクと同じである第2の複数のメモリバンクに割り当てることができるようにする、第4のコンピュータで読み出し可能なプログラムコードを含む、請求項7に記載のコンピュータプログラム製品。前記第3のコンピュータで読み出し可能なプログラムコードは、プロセッサが、メモリバンクのコンテンションを回避し、前記複数のメモリチャネルの全帯域幅を利用するために、前記第1のメモリバッファと前記第2のメモリバッファに順番にアクセスできるようにする、第4のコンピュータで読み出し可能なプログラムコードを含む、請求項7のコンピュータプログラム製品。コンピューティングシステムであって、第1のクライアントデバイスと、第2のクライアントデバイスと、複数のメモリデバイスをそれぞれ備える複数のメモリチャネルと、メモリコントローラとを備え、前記メモリコントローラは、前記第1のクライアントデバイスおよび前記第2のクライアントデバイスを、前記複数のメモリチャネルに通信可能に接続し、第1のメモリバッファおよび第1のシーケンス識別子を、1以上のメモリチャネルの第1のセットにわたって広がる第1の複数のメモリバンクに割り当て、第2のメモリバッファおよび第2のシーケンス識別子を、1以上のメモリチャネルの第2のセットにわたって広がる第2の複数のメモリバンクに割り当て、前記第1のシーケンス識別子および前記第2のシーケンス識別子に基づき、前記第1のメモリバッファおよび前記第2のメモリバッファにアクセスする、ように構成されている、コンピューティングシステム。複数のメモリデバイスに対応する複数のデータバスであって、前記メモリコントローラと前記複数のメモリデバイスとの間でデータを転送するように構成された複数のデータバスをさらに備える、請求項13のコンピューティングシステム。前記メモリコントローラは、前記複数のデータバスの全帯域幅を使用して、前記第1のクライアントデバイスまたは前記第2のクライアントデバイスと、前記複数のメモリデバイスとの間のデータ転送を制御するように構成されている、請求項14のコンピューティングシステム。前記第1のクライアントデバイスおよび前記第2のクライアントデバイスは、中央処理装置、グラフィック処理装置、および特定用途向け集積回路のうち少なくとも1つを備える、請求項13のコンピューティングシステム。前記複数のメモリデバイスのそれぞれは、ダイナミックランダムアクセスメモリDRAMデバイスを備える、請求項13のコンピューティングシステム。前記メモリコントローラは、第1の動作周波数で、前記第1のメモリバッファに関連する第1のメモリオペレーションを実行し、前記第1の動作周波数とは異なる第2の動作周波数で、前記第2のメモリバッファに関連する第2のメモリオペレーションを実行し、前記第1のメモリオペレーションの実行後に前記第1のメモリバッファの割り当てを前記第1の複数のメモリバンクから解除し、前記第2のメモリオペレーションの実行後に前記第2のメモリバッファの割り当てを前記第2の複数のメモリバンクから解除するように構成されている、請求項13のコンピューティングシステム。前記メモリコントローラは、前記第2のメモリバッファを、前記第1の複数のメモリバンクとは異なる第2の複数のメモリバンクに割り当てるように構成されている、請求項13のコンピューティングシステム。前記メモリコントローラは、前記第2のメモリバッファを、前記第1の複数のメモリバンクと同じである第2の複数のメモリバンクに割り当てるように構成されている、請求項13のコンピューティングシステム。前記メモリコントローラは、メモリバンクのコンテンションを回避し、前記複数のメモリチャネルの全帯域幅を利用するために、前記第1のメモリバッファおよび前記第2のメモリバッファに順番にアクセスするように構成されている、請求項13のコンピューティングシステム。前記メモリコントローラは、前記第1のメモリバッファを前記第1の複数のメモリバンクに、前記第2のメモリバッファを前記第2の複数のメモリバンクに関連付けるように構成されている、請求項13のコンピューティングシステム。以下の発明を実施するための形態では、本発明と一貫性がある例示的な実施例を表す添付図面を参照する。その他の実施形態も可能であり、本発明の精神と範囲内で実施形態を改良することが可能である。したがって、この詳細な説明は、本発明を制限するものではない。むしろ、本発明の範囲は、添付の特許請求の範囲によって定義される。本発明は以下に記述するように、ソフトウェア、ハードウェア、ファームウェア、および/または図に示されているエンティティの多くの異なる実施形態によって実現可能なことは当業者にとって明らかであろう。したがって、本発明の実施形態の動作の挙動は、本明細書で示す詳細度を考慮に入れると、実施形態の改良および変更が可能であるという理解に基づき説明される。図1は、マルチクライアントコンピューティングシステム100の一実施形態を示す図である。マルチクライアントコンピューティングシステム100には、第1のコンピューティングデバイス110と、第2のコンピューティングデバイス120と、メモリコントローラ130と、メモリデバイス140,150,160,170とが含まれる。第1のコンピューティングデバイス110と、第2のコンピューティングデバイス120とは、システムバス180を介してメモリコントローラ130に通信可能に接続されている。また、メモリコントローラ130は、データバス141,151,161,171を介してそれぞれメモリデバイス140,150,160,170に通信可能に接続されている。メモリデバイス140,150,160,170は、本明細書ではメモリチャネル140,150,160,170ともいう。本明細書の記述に基づき、当業者はマルチクライアントコンピューティングシステム100には、2つより多いまたは少ないコンピューティングデバイス、複数のメモリコントローラ、4つより多いまたは少ないメモリデバイス、またはそれらの組み合わせを含み得ることを認識するであろう。こうしたマルチクライアントコンピューティングシステム100の異なる構成は、本明細書に記載する実施形態の範囲、精神に沿ったものである。しかし、わかりやすく説明するために、本明細書の実施形態では、図1記載のシステムアーキテクチャに沿って説明する。一実施形態では、コンピューティングデバイス110および120の各々は、たとえば、また限定されるものではないが、中央処理装置CPUと、グラフィック処理ユニットGPUと、特定用途向け集積回路ASICコントローラと、その他の類似タイプの処理ユニット、またはそれらの組み合わせを含む。コンピューティングデバイス110,120は、マルチクライアントコンピューティングシステム100に関連する命令を実行し、オペレーションを行うように構成されている。たとえば、マルチクライアントコンピューティングシステム100は、グラフィックスをレンダリングし、表示するように構成することができる。マルチクライアントコンピューティングシステム100は、CPUコンピューティングデバイス110の一例と、GPUコンピューティングデバイス120の一例とを含むことができ、この場合GPUは、二次元および三次元のグラフィックスをレンダリングするように構成可能であり、CPUはレンダリングしたグラフィックスを表示デバイス図1に図示せずに表示する調整を行うように構成することができる。コンピューティングデバイス110,120は、別個のデバイス例えば、別個の半導体集積回路または別個のチップ、同じパッケージ内の別個のデバイス、単独のデバイス上でデバイスを組み合わせたもの例えば、単独の半導体デバイス上の素子、またはその変形したものでも構成可能である。図1を参照すると、本発明の実施形態によれば、メモリデバイス140,150,160,170の各々は、4つのメモリバンク例えば、後述する図2におけるメモリバンク0~3を有するダイナミックランダムアクセスメモリDRAMデバイスである。本明細書の記述に基づき、メモリデバイス140,150,160,170は、例えば、限定されるものではないが、スタティックランダムアクセスメモリSRAM、スタティックダイナミックランダムアクセスメモリSDRAM、フラッシュメモリデバイス、またはそれらの組み合わせなど、他のタイプのメモリデバイスになり得ることを当業者は認識するであろう。一実施形態では、1以上のメモリバッファが複数のメモリバンクに割り当てられ、または関連付けられるが、この複数のメモリバンクは1以上のメモリチャネルにわたって広がり得る。図2は、複数のメモリチャネル140,150,160,170にわたって広がる複数のメモリバッファ210,220,230,240,250の実施形態を表したものである。たとえば、メモリバッファ210は、メモリチャネル140,150,160,170のメモリバンク0~3にわたって広がり、メモリバッファ220は、メモリチャネル170のメモリバンク0~3にわたって広がり、メモリバッファ230,240は、メモリチャネル160のメモリバンク0~3にわたって広がり、メモリバッファ250は、メモリチャネル140,150のメモリバンク0~3にわたって広がる。本発明の実施形態によれば、複数のメモリバッファ210~250は、メモリチャネル140~170内の1以上のメモリバンクにわたってインターリーブされている。複数のメモリバンク上でメモリアドレスをインターリーブする方法と技術は、当業者に知られている。図1を参照すると、マルチクライアントコンピューティングシステム100に関連する命令を実行し、オペレーションを行う場合、コンピューティングデバイス110,120は、メモリデバイス140,150,160,170に保存されている情報に対してメモリコントローラ130経由でアクセスすることができる。図3は、メモリコントローラ130の実施形態を図示したものである。メモリコントローラ130には、メモリ管理ユニット310およびスケジューラ320が含まれる。メモリ管理ユニット310の数ある中の1つの機能は、1以上のメモリバッファをコンピューティングデバイス110,120に関連するオペレーションに割り当て、または関連付けることである。一実施形態では、メモリ管理ユニット310は、メモリチャネル/メモリバンクの詳細度でメモリバッファを割り当てる関連付ける。この詳細度は、1以上のメモリバッファに割り当てられるメモリチャネルの数、およびメモリバンクの数メモリチャネル内のを意味する。一実施形態では、この詳細度は、以下でさらに詳細に説明するように、コンピューティングデバイス110,120によって決まる。一実施形態では、メモリ管理ユニット310は、第1のメモリバッファを第1の複数のメモリバンクに割り当て、または関連付けるように構成されるが、この場合、第1の複数のメモリバンクは、1以上のメモリチャネルの第1のセットにわたって広がる。第1のメモリバッファの一例は、図2におけるメモリバッファ220である。本発明の実施形態によれば、メモリ管理ユニット310はまた、第2のメモリバッファを第2の複数のメモリバンクに割り当て、または関連付けるようにも構成されるが、この場合、第2の複数のメモリバンクは、1以上のメモリチャネルの第2のセットにわたって広がる。第2のメモリバッファの一例は、図2におけるメモリバッファ250である。一実施形態では、第2の複数のメモリバンクは、第1の複数のメモリバンクとは異なる。例えば、メモリバッファ220は、メモリバッファ250とは別の複数のメモリバンクを占有する。別の実施形態では、第2の複数のメモリバンクは、第1の複数のメモリバンクと同じである。例えば、メモリバッファ230は、図2におけるメモリバッファ240と同一の複数のメモリバンクを占有する。当業者が理解するように、コンピューティングシステム例えば、マルチクライアントコンピューティングシステム100のメモリバッファは通常、コンピューティングデバイス例えば、図1におけるコンピューティングデバイス110,120が実行するオペレーションまたはプロセスの間でデータを移動するときに用いられる。一実施形態では、コンピューティングデバイス110はCPUであり、第1の複数のメモリバンクは第1のメモリバッファに割り当てられる例えば、図2におけるメモリバッファ220。本発明の実施形態によれば、レイテンシセンシティブなCPUの命令コードを実行する必要があるメモリバッファは、第1のメモリバッファにマッピングすることができる。レイテンシセンシティブなCPUの命令コードを第1のメモリバッファにマッピングすることについての数ある中の1つの利点は、コンピューティングデバイス110,120の間のメモリバンクのコンテンション問題を低減することができる、または回避することができる点である。一実施形態では、コンピューティングデバイス120はGPUであり、第2のメモリバッファ例えば、図2におけるメモリバッファ250は、コンピューティングデバイス120によるオペレーションの実行に使用可能である。例えば、グラフィックスのオペレーション実行のために必要なフレームメモリバッファは、第2のメモリバッファにマッピングされ得る。1以上のメモリバンクはGPUオペレーション専用であるため、第2のメモリバッファの数ある中の1つの利点は、コンピューティングデバイス110,120間のメモリバンクのコンテンション問題を低減することができる、または回避することができるという点である。他の実施形態では、第1および第2のメモリバッファは、コンピューティングデバイス110またはコンピューティングデバイス120によるオペレーションの実行に使用できる。一実施形態では、コンピューティングデバイス110はGPUであり、第1および第2のメモリバッファは、コンピューティングデバイス110によるオペレーションの実行に使用できる。例えば、図2におけるメモリバッファ210は、フレームのバッファリングに関連するGPUオペレーションに割り当て可能であり、メモリバッファ220,230,240は、ビデオのデコーディングに関連するGPUオペレーションに割り当て可能であり、メモリバッファ250は、静的画面状態に関連するGPUオペレーションの実行に割り当て可能である。本明細書の記載に基づき、図2におけるメモリバッファ210~250は、他のGPUオペレーションに割り当て可能であり、それは本明細書に記載された実施形態の範囲と精神に沿っていることを当業者は認識するであろう。また、本明細書の記載に基づき、メモリバッファ210~250は、他のタイプのコンピューティングデバイスに関連付けられたオペレーション例えば、CPUおよびASICコントローラに割り当て可能であり、それは本明細書に記載された実施形態の範囲と精神に沿っていることを当業者は認識するであろう。メモリバッファ210~250を図1のマルチクライアントコンピューティングシステム100例えば、図2のメモリチャネル140~170の全てのメモリチャネルにわたって割り当てることについての数ある中の1つの利点は、特に、メモリバンクのコンテンション問題を低減する、または回避することができるだけでなく、メモリチャネルの全帯域幅を使用できるということである。マルチコンピューティングシステム100でメモリチャネルの全帯域幅を使用することで、その電力と効率の両方が向上する。図3を参照すると、メモリ管理ユニット310は、図1のコンピューティングデバイス110,120に関連するオペレーションに対して、メモリ空間の穴を最小限に抑えるような方法で1以上のメモリバッファを割り当てるように構成されている。穴とは、利用可能なメモリバッファが、コンピューティングデバイス110または120が要求したものよりも少なく、要求されたメモリバッファがより高位のアドレス空間に割り当てられる状況を表している。これは、結果として利用可能なメモリバッファ空間が未使用のまま残されることを意味する。一実施形態では、メモリ管理ユニット310は、メモリ空間における穴の発生を最小限に抑える、または回避するために、メモリバッファのアカウンティングとステータスを維持するように構成されている。このアカウンティングとステータスの情報は、本明細書では追跡情報ともいう。一実施形態では、この追跡情報は、以下の情報を提供する。即ち、1割り当てられたメモリバッファが使用中、解放、またはリザーブされているか、2割り当てられたメモリバッファのメモリチャネル/メモリバンクの詳細度、3割り当てられたメモリバッファに関連するシーケンス識別子、および4割り当てられたメモリバッファのパフォーマンスパラメータ、である。この割り当てられたメモリバッファに関連するシーケンス識別子およびパフォーマンスパラメータについては、以下でさらに詳細に説明する。図4は、利用可能なメモリ空間410が、コンピューティングデバイス110または120が要求したメモリバッファ420よりも小さい場合のシナリオ例を図示したものである。一実施形態では、すべてのメモリチャネル例えば、メモリチャネル140~170の帯域幅全体を利用するために、メモリバッファ420を、利用可能なメモリ空間410に割り当てることが望ましく、かつ最適である。本発明の一実施形態によれば、図3のメモリ管理ユニット310は、図1のコンピューティングデバイス110,120のオペレーションに関連するメモリバッファへのメモリ空間の割り当てを追跡するように構成されており、これは将来のオペレーションでメモリ空間の割り当てにこの追跡情報を使用できるように行われている。例えば、図4のシナリオ例では、メモリ管理ユニット310が維持する追跡情報は、コンピューティングデバイスの将来のオペレーションのために、メモリバッファ420がメモリチャネル170のメモリバンク0~3全体に割り当てできるように、メモリバッファ210,230,240,250のメモリ空間の割り当てを調整するために使用できる例えば、図2のメモリバッファの配列と同様に。その結果、図1のマルチクライアントコンピューティングシステム100でメモリチャネルの帯域幅全体を利用可能になり、したがってマルチクライアントコンピューティングシステム100の電力と効率の改善がもたらされる。図3を参照すると、メモリ管理ユニット310は、図1のコンピューティングデバイス110,120の作業負荷予測に基づき、コンピューティングデバイス110,120に関連するオペレーションに対して1以上のメモリバッファを割り当てるようにも構成される。一実施形態では、コンピューティングデバイス110は、GPUであり、特定の帯域幅または速度で、1以上のメモリバッファに対して1以上のGPUオペレーションを実行するように要求する。コンピューティングデバイス110例えば、GPUが要求するGPUオペレーションのタイプに基づき、メモリ管理ユニット310は、適切量のメモリ空間およびメモリバッファをGPUオペレーションに割り当てることができる。例えば、図2を参照すると、メモリバッファ220,230,240,250を使用してビデオデコードパイプラインオペレーションを行うことができる。例えば、メモリバッファ250は、ビデオデコードパイプラインの静的画面状態で使用できる。メモリバッファ230,240は、そのパイプラインのビデオデコーダによる内部使用の用途で使うことができる。さらに、メモリバッファ220は、例えば、ビデオデコードパイプラインで、ビデオデコーダによる書き込みオペレーション、および1以上のグラフィックスブロックからの読み出しオペレーションに使用できる。本発明の実施形態によれば、メモリバッファ220,230,240,250のそれぞれに、シーケンス識別子を割り当てることができる。一実施形態では、シーケンス識別子は、図1のメモリコントローラ130およびメモリデバイス140,150,160,170に対して、割り当てられたメモリバッファのアドレス/アクセスのシーケンスのインジケータとなるリファレンスを与える。例えば、上記のビデオデコードパイプラインの例に戻ると、シーケンス識別子1は、ビデオデコードパイプラインのメモリバッファ250および静的画面状態のオペレーションに割り当てられる。シーケンス識別子2は、メモリバッファ240およびビデオデコーダの内部オペレーションに割り当てられる。シーケンス識別子3は、メモリバッファ230およびビデオデコーダによる書き込みオペレーションと、1以上のグラフィックスブロックからの読み出しオペレーションとに割り当てられる。さらに、シーケンス識別子4は、メモリバッファ220およびビデオデコーダの内部オペレーションに割り当てられる。本発明の実施形態によれば、ビデオデコードパイプラインオペレーションの一部について、メモリコントローラ130およびメモリデバイス140~170は、特定のシーケンスで、メモリバッファ220,230,240,250にアドレス/アクセスしてもよい。このメモリバッファ220,230,240,250のシーケンス識別子は、特定シーケンスのパラメータとして使用できる。例えば、特定のシーケンスが12および4の場合、最初にメモリバッファ250がアドレス/アクセスされ、次にメモリバッファ240がアドレス/アクセスされ、最後にメモリバッファ220がアドレス/アクセスされる。他の例では、特定のシーケンスが13および4の場合、最初にメモリバッファ250がアドレス/アクセスされ、次にメモリバッファ230がアドレス/アクセスされ、最後にメモリバッファ220がアドレス/アクセスされる。この両方の例において、特定のシーケンスでは、2と3は続けて起こらない。その結果、メモリチャネル160におけるメモリバンクのコンテンション問題が低減される、または回避されるだけでなく、マルチクライアントコンピューティングシステム100でメモリチャネルの全帯域幅を利用することもできる。本発明の実施形態によれば、メモリ管理ユニット310が、コンピューティングデバイス110,120の作業負荷予測の情報を有しない場合、コンピューティングデバイス110,120に関連するオペレーションに対してデフォルトのメモリバッファ配列を使用することができる。一実施形態では、このデフォルトのメモリバッファ配列は、すべてのメモリチャネルの、およびすべてのメモリチャネルにわたるメモリバンク全体に広がっている。このメモリバッファ配列の一例が図2のメモリバッファ210として示されており、メモリバッファ210はすべてのメモリチャネル140~170のメモリバンク0~3全体に広がっている。コンピューティングデバイス110,120の作業負荷予測を評価することに加えて、メモリ管理ユニット310は、メモリチャネル140,150,160,170のそれぞれを特定の動作周波数で動作させるように構成される。その結果、メモリチャネル毎の帯域幅を、1以上のメモリチャネル全体に割り当てられたメモリバッファに基づき評価することができる。例えば、メモリチャネル140,150,160,170全体のメモリバッファ例えば、図2のメモリバッファ210,220,230,240,250の特定配列に基づき、図1のマルチクライアントコンピュータシステム100のパフォーマンス例えば、スループットがメモリバッファの配列に基づいて向上するかどうかを評価するために、メモリチャネルそれぞれのクロック周波数を増やす、または減らすことができる。この情報に基づき、コンピューティングデバイスに関連するメモリオペレーションが最適化できるように、1以上のメモリバッファに関連する1以上のメモリチャネルに対して最適なクロック周波数を使用できる。一実施形態では、上述した追跡情報のパフォーマンスパラメータ部分には、メモリチャネル140,150,160,170のそれぞれに対する最適なクロック周波数が含まれる。図3を参照すると、スケジューラ320は、メモリ管理ユニット310からのメモリ要求を処理するように構成される。一実施形態では、スケジューラ320は、メモリ管理ユニット310が提供する追跡情報に基づき、メモリ要求を処理する。上述したように、一実施形態では、この追跡情報は以下の情報を提供することができる。即ち、1割り当てられたメモリバッファが使用中、解放、またはリザーブされているか、2割り当てられたメモリバッファのメモリチャネル/メモリバンクの詳細度、3割り当てられたメモリバッファに関連するシーケンス識別子、および4割り当てられたメモリバッファのパフォーマンスパラメータ、である。こうした追跡情報に基づき、スケジューラ320は、図1のデータバス141,151,161,171のそれぞれを介してメモリチャネル140,150,160,170への読み出しオペレーションおよび書き込みオペレーションを送るために必要なアドレス、コマンド、および制御信号を生成する。図1のコンピューティングデバイス110,120からの読み出し、および書き込みのメモリ要求に対応するアドレス、コマンド、および制御信号の生成は、当業者にとって既知である。一実施形態では、スケジューラ320は、メモリ管理ユニット310と共に動作し、図1のコンピューティングデバイス110,120間のアービトレーション調停のスレッドをソートする。一実施形態では、図1のメモリコントローラ130は、アービトレーションの2つのスレッドを管理できる。この2つのスレッドの1つは、コンピューティングデバイス110からのメモリ要求に割り当てられたアービトレーションのスレッド、もう1つはコンピューティングデバイス120からのメモリ要求に割り当てられたアービトレーションのスレッドである。スケジューラ320は、一方のコンピューティングデバイスのメモリ要求を先に処理してから、他方のコンピューティングデバイスのメモリ要求を処理することで最適化できる。例えば、コンピューティングデバイス110がCPUであり、コンピューティングデバイス120がGPUの場合、通常、CPUのパフォーマンスは、GPUのパフォーマンスよりもメモリ遅延の影響を受けやすいため、スケジューラ320は、CPU関連のメモリ要求をGPU関連のメモリ要求よりも先に処理することができる。ここで、本発明の実施形態によれば、スケジューラ220は、CPU関連のメモリ要求に関連するデータ転送がGPU関連のメモリ要求に関連するデータ転送よりも優先されるように、図1のシステムバス180の制御をコンピューティングデバイス110に提供する。一実施形態では、図1のコンピューティングデバイス110,120に関連するオペレーションが例えば、図2のメモリバッファ210~250を使用して実行された後、図3のメモリ管理ユニット310は、メモリ空間からのオペレーションに関連する1以上のメモリバッファの割り当てを解除する。この時点で、メモリ管理ユニット310は、その解放されたメモリ空間を、コンピューティングデバイス110,120のオペレーションに関連する他のメモリバッファに割り当てることができる。メモリ管理ユニット310は、その解放されたメモリ空間を前のオペレーションと同じ配列の他のメモリバッファに割り当てる例えば、前のオペレーションに関連するメモリバッファに割り当てられた同じ番号のバンクとチャネルに割り当てることができ、または、前のオペレーションとは異なる配列に割り当てる例えば、前のオペレーションに関連するもう1つのメモリバッファに割り当てられた異なる番号のバンクとチャネルに割り当てることができる。メモリ管理ユニット310は、図3に関して上記で説明したのと同じ方法で、コンピューティングデバイス110,120のオペレーションに対してもう1つのメモリバッファを割り当てるように構成される。図5は、複数のメモリチャネルを有するコンピューティングシステムにおいて1以上のメモリバッファを割り当てるための方法500の実施形態を示している。方法500は、たとえば、図1のマルチクライアントコンピューティングシステム100を使用して行うことができるが、これに制限されるものではない。ステップ510では、第1のメモリバッファが第1の複数のメモリバンクに割り当て、または関連付けられており、第1の複数のメモリバンクは、1以上のメモリチャネルの第1のセットにわたって広がっている。図3のメモリ管理ユニット310は、例えば、ステップ510を実行するために使用できる。ステップ520では、第2のメモリバッファが、第2の複数のメモリバンクに割り当て、または関連付けられており、第2の複数のメモリバンクは、1以上のメモリチャネルの第2のセットにわたって広がっている。一実施形態では、第2の複数のメモリバンクはステップ510の第1の複数のメモリバンクとは異なる。他の実施形態では、第2の複数のメモリバンクは、第1の複数のメモリバンクと同じである。例えば、図3のメモリ管理ユニット310を使用して、ステップ520を実行することができる。ステップ530では、第1のシーケンス識別子は第1のメモリバッファに、第2のシーケンス識別子は第2のメモリバッファにそれぞれ関連付けられる。例えば、図3のメモリ管理ユニット310を使用して、ステップ530を実行することができる。ステップ540では、第1および第2のシーケンス識別子に基づき、第1および第2のメモリバッファがアクセスされる。一実施形態では、メモリバンクのコンテンションを回避し、複数のメモリチャネルの全帯域幅を利用するために、第1および第2のメモリバッファは、順番にアクセスされる。例えば、図3のメモリ管理ユニット310とスケジューラ320とを使用して、ステップ540を実行することができる。さらに、一実施形態では、第1のメモリバッファに関連する第1のメモリオペレーション、および第2のメモリバッファに関連する第2のメモリオペレーションを実行する場合、第1のメモリオペレーションは第1の動作周波数で、第2のメモリオペレーションは第2の動作周波数でそれぞれ実行される。本発明の一実施形態によれば、第1および第2の動作周波数は互いに異なる。ステップ550では、第1のメモリバッファに関連する第1のメモリオペレーション、および第2のメモリバッファに関連する第2のメモリオペレーションのそれぞれを実行後、各メモリ空間から第1および第2のメモリバッファの割り当てが解除される。第1および第2のメモリバッファの割り当てが解除されると、他のメモリオペレーションに関連するメモリバッファをその解放されたメモリ空間に割り当てることができる。本発明の様々な態様は、ソフトウェア、ファームウェア、ハードウェア、またはそれらの組み合わせで実施してもよい。図6は、本発明またはその一部の実施形態をコンピュータで読み取り可能なコードで実施可能なコンピュータシステム600の一例を図示したものである。例えば、図5のフローチャート500に示されている方法は、システム600で実施できる。本発明の様々な実施形態は、このコンピュータシステム600の例に関して説明されている。本明細書を読めば、他のコンピュータシステムおよび/またはコンピュータアーキテクチャを使用した本発明の実施形態の実施方法は、当業者にとって明らかであろう。本発明の様々な実施形態のシミュレーション、合成、および/または製造は、一部には、汎用プログラミング言語例えば、C、Cなど、例えば、VerilogHDL、VHDL、AlteraHDLAHDLなどのハードウェア記述言語HDL、またはその他の利用可能なプログラミングおよび/またはスキマティックキャプチャツール例えば、回路キャプチャツールなどを含むコンピュータで読み取り可能なコードを用いて達成されてもよいことに留意すべきである。こうしたコンピュータで読み取り可能なコードは、半導体、磁気ディスク、光ディスク例えば、CD-ROM、DVD-ROMなどを含む任意の既知のコンピュータで使用可能な媒体に記憶することができる。そのため、このコードは、インターネットを含む通信ネットワーク上で送信することができる。上記で説明したシステムおよび技術によって達成される機能および/または提供される構造は、プログラムコードで実現し、集積回路の製造の一部としてハードウェアに変換することができるコア例えば、GPUコアなどで表すことができる、ということが理解される。コンピュータシステム600には、プロセッサ604などの1以上のプロセッサが含まれる。プロセッサ604は、特殊用途または汎用のプロセッサの場合がある。プロセッサ604は、通信インフラストラクチャ606例えば、バスまたはネットワークに接続されている。コンピュータシステム600には、主記憶装置608、好適にはランダムアクセスメモリRAMも含まれ、さらに補助記憶装置610が含まれる場合もある。補助記憶装置610には、例えば、ハードディスクドライブ612、リムーバブル記憶装置ドライブ614、および/またはメモリスティックを含むことができる。リムーバブル記憶装置ドライブ614には、フロッピディスクドライブ、磁気テープドライブ、光ディスクドライブ、フラッシュメモリなどが含まれる。リムーバブル記憶装置ドライブ614は、よく知られている方式で、リムーバブル記憶装置618からの読み出し、および/またはリムーバブル記憶装置618に対する書き込みを行う。リムーバブル記憶装置618は、リムーバブル記憶装置ドライブ614によって読み書きされるフロッピディスク、磁気テープ、光ディスクなどを含む。当業者が理解するように、リムーバブル記憶装置618には、コンピュータソフトウェアおよび/またはデータが保存されたコンピュータで使用可能な記憶媒体が含まれる。代替の実装では、補助記憶装置610には、コンピュータプログラムやその他の命令をコンピュータシステム600にロードできるようにするための他の類似デバイスを含むことができる。こうしたデバイスには、例えば、リムーバブル記憶装置622およびインタフェース620を含むことができる。こうしたデバイスの例としては、プログラムカートリッジおよびカートリッジインタフェース例えば、ビデオゲームデバイスで使用されているようなもの、リムーバブルメモリチップ例えば、EPROMまたはPROMおよび関連ソケット、ならびにリムーバブル記憶装置622からコンピュータシステム600にソフトウェアとデータを転送できるようにするその他のリムーバブル記憶装置622およびインタフェース620を含むことができる。コンピュータシステム600には、通信インタフェース624も含むことができる。通信インタフェース624は、コンピュータシステム600と外部デバイスとの間でソフトウェアとデータを転送できるようにする。通信インタフェース624には、モデム、ネットワークインタフェース例えばEthernet登録商標カードなど、通信ポート、PCMCIAスロットおよびカードなどを含むことができる。通信インタフェース624経由で転送されるソフトウェアやデータは、信号形式であり、通信インタフェース624が受信可能な電子、電磁気、光、またはその他の信号であってもよい。こうした信号は、通信経路626経由で通信インタフェース624に提供される。通信経路626は、信号を伝搬するものであり、電線すなわちケーブル、光ファイバ、電話回線、携帯電話網、RFリンク、またはその他の通信チャネルによって実装され得る。本明細書では、コンピュータプログラム媒体およびコンピュータで使用可能な媒体という用語は、一般的にリムーバブル記憶装置618、リムーバブル記憶装置622、およびハードディスクドライブ612に設けられているハードディスクのことをいうために用いられる。コンピュータプログラム媒体およびコンピュータで使用可能な媒体は、主記憶装置608および補助記憶装置610などの記憶装置のことを言うこともでき、半導体記憶装置DRAMなどのことをいうこともできる。こうしたコンピュータプログラム製品は、コンピュータシステム600に対してソフトウェアを提供する。コンピュータプログラムコンピュータ制御論理ともいうは、主記憶装置608および/または補助記憶装置610に記憶される。コンピュータプログラムは、通信インタフェース624経由で受信されてもよい。こうしたコンピュータプログラムが実行されると、コンピュータシステム600は、本明細書で説明したように本発明の実施形態を実施できるようになる。特に、コンピュータプログラムが実行されると、プロセッサ604は、上記で説明した図5のフローチャート500によって図示される方法のステップなどの本発明の実施形態のプロセスを実行できる。従って、こうしたコンピュータプログラムは、コンピュータシステム600のコントローラを表す。本発明の実施形態がソフトウェアを使用して実施される場合、このソフトウェアはコンピュータプログラム製品に記憶され、リムーバブル記憶装置ドライブ614、インタフェース620、ハードディスクドライブ612、または通信インタフェース624を使用してコンピュータシステム600にロードされることが可能である。本発明の実施形態は、任意のコンピュータで使用可能な媒体に記憶されているソフトウェアを含むコンピュータプログラム製品も対象である。こうしたソフトウェアが1以上のデータ処理デバイスで実行されると、本明細書で説明したようにデータ処理デバイスが動作する。本発明の実施形態では、現在知られている、または将来的に知られるであろう、任意のコンピュータで使用可能または読み出し可能な媒体を採用する。コンピュータで使用可能な媒体には、主記憶装置例えば、任意のタイプのランダムアクセスメモリおよび補助記憶装置例えば、ハードドライブ、フロッピディスク、CD-ROM、ZIPディスク、テープ、磁気記憶装置、光記憶装置、MEMS、ナノ技術記憶装置など、および通信媒体例、有線および無線の通信ネットワーク、ローカルエリアネットワーク、広域ネットワークなどが含まれるが、これらに制限されるものではない。上記で本発明の様々な実施形態を説明してきたが、これらは例示目的のみのものであり、制限目的ではないことを理解するべきである。添付の請求項によって定義される発明の範囲および精神に従って、様々な形態および詳細の変更を施すことが可能であることを当業者は理解するであろう。本発明はこうした例に制限されるものではないことを理解するべきである。本発明は、本明細書に記載されているように動作するあらゆる要素に適用可能である。したがって、本発明の広さと範囲は、上記で説明した例示的実施形態のいずれによっても制限されるものではなく、以下の請求項および均等物によってのみ定義されるべきである。"