"マルチクライアントコンピューティングシステムのメモリデバイスにアクセスするための方法であって、前記メモリデバイスの1つ以上のメモリバンクを、メモリバンクの第1のセットと、メモリバンクの第2のセットとに分割するステップと、メモリバンクの前記第1のセット内の第1の複数のメモリセルへのアクセスを構成するステップであって、前記第1の複数のメモリセルは、第1のクライアントデバイスの第1のメモリ動作と関連付けられているステップと、メモリバンクの前記第2のセット内の第2の複数のメモリセルへのアクセスを構成するステップであって、前記第2の複数のメモリセルは、第2のクライアントデバイスの第2のメモリ動作と関連付けられているステップと、を含む、方法。前記第1のメモリ動作が前記第1のクライアントデバイスによって要求される場合に、前記第1および第2のクライアントデバイスを前記メモリデバイスに連結するデータバスを介して、メモリバンクの前記第1のセットにアクセスするステップであって、メモリバンクの前記第1のセットからの第1のメモリアドレスは、前記第1のメモリ動作と関連付けられているステップと、前記第2のメモリ動作が前記第2のクライアントデバイスによって要求される場合に、前記データバスを介して、メモリバンクの前記第2のセットにアクセスするステップであって、メモリバンクの前記第2のセットからの第2のメモリアドレスは、前記第2のメモリ動作と関連付けられているステップと、前記第1のメモリアドレスまたは前記第2のメモリアドレスが、前記第1または第2のメモリ動作を実行するためにアクセスされているか否かに基づいて、前記第1のメモリ動作中または第2のメモリ動作中に、前記データバスの制御を前記第1のクライアントデバイスまたは前記第2のクライアントデバイスに提供するステップと、を含む、請求項1に記載の方法。前記データバスは、所定のバス幅を有し、前記データバスの制御を提供するステップは、前記データバスの全てのバス幅を使用して、前記第1のクライアントデバイスまたは前記第2のクライアントデバイスと、前記メモリデバイスとの間でデータを転送するステップを含む、請求項2に記載の方法。前記データバスの制御を提供するステップは、前記第1のメモリアドレスが前記第1のメモリ動作を実行するためにアクセスされる必要がある場合に、前記データバスの制御を、前記第2のクライアントデバイスの前に前記第1のクライアントデバイスへ提供するステップを含む、請求項2に記載の方法。前記データバスの制御を提供するステップは、前記第1のメモリ動作の要求が前記第2のメモリ動作の要求の後に生じる場合、および前記第1のメモリアドレスが前記第1のメモリ動作を実行するためにアクセスされる必要がある場合に、前記データバスの制御を、前記第2のクライアントデバイスから前記第1のクライアントデバイスに移すステップを含む、請求項2に記載の方法。前記データバスの制御を移すステップは、前記第1のメモリ動作が完了した後に、前記第2のクライアントデバイスへの前記データバスの制御を再構築するステップを含む、請求項5に記載の方法。前記メモリデバイスは、上半分の複数のメモリバンクと、下半分の複数のメモリバンクとを有するダイナミックランダムアクセスメモリDRAMデバイスを備え、前記1つ以上のバンクを分割するステップは、メモリバンクの前記第1のセットを、前記DRAMデバイス内の前記上半分の複数のメモリバンクと関連付けるステップと、メモリバンクの前記第2のセットを、前記DRAMデバイス内の前記下半分の複数のメモリバンクと関連付けるステップと、を含む、請求項1に記載の方法。前記第1の複数のメモリセルへのアクセスを構成するステップは、メモリバンクの前記第1のセット内の1つ以上の物理アドレス空間を、前記第1のクライアントデバイスと関連付けられる1つ以上のメモリバッファのそれぞれにマッピングするステップを含む、請求項1に記載の方法。前記第2の複数のメモリセルへのアクセスを構成するステップは、メモリバンクの前記第2のセット内の1つ以上の物理アドレス空間を、前記第2のクライアントデバイスと関連付けられる1つ以上のメモリバッファのそれぞれにマッピングするステップを含む、請求項1に記載の方法。1つ以上のプロセッサによって実行される場合に、複数のクライアントデバイスを有するコンピュータシステムのメモリデバイスにアクセスするコンピュータプログラム論理が記録されたコンピュータ使用可能な媒体を備える、コンピュータプログラム製品であって、前記コンピュータプログラム論理は、プロセッサが、前記メモリデバイスの1つ以上のメモリバンクを、メモリバンクの第1のセットと、メモリバンクの第2のセットとに分割することを可能にする第1のコンピュータ可読プログラムコードと、プロセッサが、メモリバンクの前記第1のセット内の第1の複数のメモリセルへのアクセスを構成することを可能にする第2のコンピュータ可読プログラムコードであって、前記第1の複数のメモリセルは、第1のクライアントデバイスの第1のメモリ動作と関連付けられている第2のコンピュータ可読プログラムコードと、プロセッサが、メモリバンクの前記第2のセット内の第2の複数のメモリセルへのアクセスを構成することを可能にする第3のコンピュータ可読プログラムコードであって、前記第2の複数のメモリセルは、第2のクライアントデバイスの第2のメモリ動作と関連付けられている第3のコンピュータ可読プログラムコードと、を備える、コンピュータプログラム製品。前記コンピュータプログラム論理は、プロセッサが、前記第1のメモリ動作が前記第1のクライアントデバイスによって要求される場合に、前記第1および第2のクライアントデバイスを前記メモリデバイスに連結するデータバスを介して、メモリバンクの前記第1のセットにアクセスすることを可能にする第4のコンピュータ可読プログラムコードであって、メモリバンクの前記第1のセットからの第1のメモリアドレスは、前記第1のメモリ動作と関連付けられている第4のコンピュータ可読プログラムコードと、プロセッサが、前記第2のメモリ動作が前記第2のクライアントデバイスによって要求される場合に、前記データバスを介して、メモリバンクの前記第2のセットにアクセスすることを可能にする第5のコンピュータ可読プログラムコードであって、メモリバンクの前記第2のセットからの第2のメモリアドレスは、前記第2のメモリ動作と関連付けられている第5のコンピュータ可読プログラムコードと、プロセッサが、前記第1のメモリアドレスまたは前記第2のメモリアドレスが、前記第1または第2のメモリ動作を実行するためにアクセスされているか否かに基づいて、前記第1のメモリ動作中または第2のメモリ動作中に、前記データバスの制御を前記第1のクライアントデバイスまたは前記第2のクライアントデバイスに提供することを可能にする第6のコンピュータ可読プログラムコードと、を備える、請求項10に記載のコンピュータプログラム製品。前記データバスは、所定のバス幅を有し、前記第6のコンピュータ可読プログラムコードは、プロセッサが、前記データバスの全てのバス幅を使用して、前記第1のクライアントデバイスまたは前記第2のクライアントデバイスと、前記メモリデバイスとの間でデータを転送することを可能にする第7のコンピュータ可読プログラムコードを備える、請求項11に記載のコンピュータプログラム製品。前記第6のコンピュータ可読プログラムコードは、プロセッサが、前記第1のメモリアドレスが前記第1のメモリ動作を実行するためにアクセスされる必要がある場合に、前記データバスの制御を、前記第2のクライアントデバイスの前に前記第1のクライアントデバイスへ提供することを可能にする第7のコンピュータ可読プログラムコードを備える、請求項12に記載のコンピュータプログラム製品。前記第6のコンピュータ可読プログラムコードは、プロセッサが、前記第1のメモリ動作の要求が前記第2のメモリ動作の要求の後に生じる場合、および前記第1のメモリアドレスが前記第1のメモリ動作を実行するためにアクセスされる必要がある場合に、前記データバスの制御を、前記第2のクライアントデバイスから前記第1のクライアントデバイスに移すことを可能にする第7のコンピュータ可読プログラムコードを備える、請求項12に記載のコンピュータプログラム製品。前記第7のコンピュータ可読プログラムコードは、プロセッサが、前記第1のメモリ動作が完了した後に、前記第2のクライアントデバイスへの前記データバスの制御を再構築することを可能にする第8のコンピュータ可読プログラムコードを備える、請求項14に記載のコンピュータプログラム製品。前記メモリデバイスは、上半分の複数のメモリバンクと、下半分の複数のメモリバンクとを有するダイナミックランダムアクセスメモリDRAMデバイスを備え、前記第1のコンピュータ可読プログラムコードは、プロセッサが、メモリバンクの前記第1のセットを、前記DRAMデバイス内の前記上半分の複数のメモリバンクと関連付けることと、メモリバンクの前記第2のセットを、前記DRAMデバイス内の前記下半分の複数のメモリバンクと関連付けることとを可能にする第7のコンピュータ可読プログラムコードを備える、請求項10に記載のコンピュータプログラム製品。前記第2のコンピュータ可読プログラムコードは、プロセッサが、メモリバンクの前記第1のセット内の1つ以上の物理アドレス空間を、前記第1のクライアントデバイスと関連付けられる1つ以上のメモリバッファのそれぞれにマッピングすることを可能にする第7のコンピュータ可読プログラムコードを備える、請求項10に記載のコンピュータプログラム製品。前記第3のコンピュータ可読プログラムコードは、プロセッサが、メモリバンクの前記第2のセット内の1つ以上の物理アドレス空間を、前記第2のクライアントデバイスと関連付けられる1つ以上のメモリバッファのそれぞれにマッピングすることを可能にする第7のコンピュータ可読プログラムコードを備える、請求項10に記載のコンピュータプログラム製品。第1のクライアントデバイスと、第2のクライアントデバイスと、メモリバンクの第1のセットと、メモリバンクの第2のセットとに分割される1つ以上のメモリバンクを有するメモリデバイスと、メモリコントローラとを備え、メモリバンクの前記第1のセット内の第1の複数のメモリセルは、前記第1のクライアントデバイスと関連付けられた第1のメモリ動作によってアクセスされるように構成されており、メモリバンクの前記第2のセット内の第2の複数のメモリセルは、前記第2のクライアントデバイスと関連付けられた第2のメモリ動作によってアクセスされるように構成されており、前記メモリコントローラは、前記第1のクライアントデバイスと前記第1の複数のメモリセルとの間のアクセスを制御するように、かつ、前記第2のクライアントデバイスと前記第2の複数のメモリセルとの間のアクセスを制御するように構成されている、コンピューティングシステム。前記第1および第2のクライアントデバイスは、中央処理装置、グラフィックスプロセッシングユニットおよび特定用途向け集積回路のうち少なくとも1つを備える、請求項19に記載のコンピューティングシステム。前記メモリデバイスは、上半分の複数のメモリバンクと、下半分の複数のメモリバンクとを有するダイナミックランダムアクセスメモリDRAMデバイスを備え、メモリバンクの前記第1のセットは、前記DRAMデバイス内の前記上半分の複数のメモリバンクと関連付けられており、メモリバンクの前記第2のセットは、前記DRAMデバイス内の前記下半分の複数のメモリバンクと関連付けられている、請求項19に記載のコンピューティングシステム。前記メモリデバイスは、メモリバンクの前記第1のセット内の1つ以上の物理アドレス空間を備え、前記物理アドレス空間は、前記第1のクライアントデバイスと関連付けられる1つ以上のメモリ動作のそれぞれにマッピングされている、請求項19に記載のコンピューティングシステム。前記メモリデバイスは、メモリバンクの前記第2のセット内の1つ以上の物理アドレス空間を備え、前記物理アドレス空間は、前記第2のクライアントデバイスと関連付けられる1つ以上のメモリ動作のそれぞれにマッピングされている、請求項19に記載のコンピューティングシステム。前記メモリコントローラは、前記第1のメモリ動作が前記第1のクライアントデバイスによって要求される場合に、前記第1および第2のクライアントデバイスを前記メモリデバイスに連結するデータバスを介して、メモリバンクの前記第1のセットにアクセスすることであって、メモリバンクの前記第1のセットからの第1のメモリアドレスは、前記第1のメモリ動作と関連付けられていることと、前記第2のメモリ動作が前記第2のクライアントデバイスによって要求される場合に、前記データバスを介して、メモリバンクの前記第2のセットにアクセスすることであって、メモリバンクの前記第2のセットからの第2のメモリアドレスは、前記第2のメモリ動作と関連付けられていることと、前記第1のメモリアドレスまたは前記第2のメモリアドレスが、前記第1または第2のメモリ動作を実行するためにアクセスされているか否かに基づいて、前記第1のメモリ動作中または第2のメモリ動作中に、前記データバスの制御を前記第1のクライアントデバイスまたは前記第2のクライアントデバイスに提供することと、を行うように構成されている、請求項19に記載のコンピューティングシステム。前記データバスは、所定のバス幅を有し、前記メモリコントローラは、前記データバスの全てのバス幅を使用して、前記第1のクライアントデバイスまたは前記第2のクライアントデバイスと、前記メモリデバイスとの間のデータの転送を制御するように構成されている、請求項24に記載のコンピューティングシステム。前記メモリコントローラは、前記第1のメモリアドレスが前記第1のメモリ動作を実行するためにアクセスされる必要がある場合に、前記データバスの制御を、前記第2のクライアントデバイスの前に前記第1のクライアントデバイスへ提供するように構成されている、請求項24に記載のコンピューティングシステム。前記メモリコントローラは、前記第1のメモリ動作の要求が前記第2のメモリ動作の要求の後に生じる場合、および前記第1のメモリアドレスが前記第1のメモリ動作を実行するためにアクセスされる必要がある場合に、前記データバスの制御を、前記第2のクライアントデバイスから前記第1のクライアントデバイスに移すように構成されている、請求項24に記載のコンピューティングシステム。前記メモリコントローラは、前記第1のメモリ動作が完了した後に、前記第2のクライアントデバイスへの前記データバスの制御を再構築するように構成されている、請求項27に記載のコンピューティングシステム。以下の発明を実施するための形態は、本発明と一致する例示的な実施形態を示す、添付の図面を参照する。他の実施形態が可能であり、本発明の精神および範囲内で、実施形態が修正され得る。したがって、発明を実施するための形態は、本発明を制限するように意図されていない。むしろ、本発明の範囲は、添付の特許請求の範囲によって定義される。以下に記載するように、本発明は、図に示されるソフトウェア、ハードウェア、ファームウェアおよび/またはエンティティの多くの異なる実施形態で実施され得ることが、当業者に明らかとなるであろう。したがって、本発明の実施形態の動作挙動は、本明細書に示される詳細の程度を考えると、実施形態の修正および変化が可能であるという理解のもとに記載される。図1は、統合メモリアーキテクチャUMAを有するマルチクライアントコンピューティングシステム100の一実施形態の図である。マルチクライアントコンピューティングシステム100は、第1のコンピューティングデバイス110、第2のコンピューティングデバイス120、メモリコントローラ130およびメモリデバイス140を含む。第1および第2のコンピューティングデバイス110,120は、システムバス150を介して、メモリコントローラ130に通信可能に連結されている。また、メモリコントローラ130は、データバス160を介して、メモリデバイス140に通信可能に連結されている。当業者は、UMAを有するマルチクライアントコンピューティングシステム100が、当該システムに含まれるデバイスの抽象的な図を示すことを認識するであろう。例えば、当業者は、メモリデバイス140に関して、UMAがシングルランク構成として配置され得るとともに、メモリデバイス140が、1列のメモリデバイス例えば、DRAMデバイスを表すことができることを認識するであろう。さらに、当業者は、メモリデバイス140に関して、UMAがマルチランク構成として配置され得るとともに、メモリデバイス140が、データバス160に取り付けられた複数の列のメモリデバイスを表すことができることを認識するであろう。シングルランクおよびマルチランク構成において、メモリコントローラ130は、メモリデバイスのメモリバンクへのアクセスを制御するように構成され得る。シングルランクおよびマルチランク構成の利点は、数ある中でも、コンピューティングデバイス110,120の間でメモリバンクを分割することの柔軟性が達成され得る点にある。本明細書の説明に基づき、当業者は、マルチクライアントコンピューティングシステム100が、3つ以上のコンピューティングデバイス、2つ以上のメモリコントローラ、2つ以上のメモリデバイスおよびそれらの組み合わせを含むことができることを認識するであろう。これらのマルチクライアントコンピューティングシステム100の異なる構成は、本明細書に記載される実施形態の範囲および精神内にある。しかしながら、説明を簡単にするために、本明細書に含有される実施形態は、図1に示されるシステムアーキテクチャとの関連で説明される。一実施形態において、コンピューティングデバイス110,120のそれぞれは、これに限定されるものではないが、例えば、中央処理装置CPU、グラフィックスプロセッシングユニットGPU、特定用途向け集積回路ASICコントローラ、他の同様の種類の処理装置またはこれらの組み合わせであってもよい。コンピューティングデバイス110,120は、マルチクライアントコンピューティングシステム100と関連付けられる命令を実行するように、かつ動作を実行するように構成されている。例えば、マルチクライアントコンピューティングシステム100は、グラフィックをレンダリングし、表示するように構成され得る。マルチクライアントコンピューティングシステム100は、CPU例えば、コンピューティングデバイス110およびGPU例えば、コンピューティングデバイス120を含むことができ、GPUは、2次元および3次元グラフィックをレンダリングするように構成され得る。CPUは、レンダリングされたグラフィックの表示デバイス図1に図示せず上での表示を調整するように構成され得る。コンピューティングデバイス110,120は、マルチクライアントコンピューティングシステム100と関連付けられる命令、動作を実行する場合に、メモリコントローラ130を介して、メモリデバイス140に記憶された情報にアクセスすることができる。図2は、メモリコントローラ130の一実施形態の図である。メモリコントローラ130は、第1のメモリバンクアービタ2100と、第2のメモリバンクアービタ2101と、メモリスケジューラ220とを含む。一実施形態において、第1のメモリバンクアービタ2100は、メモリデバイス例えば、図1のメモリデバイス140のメモリバンクの第1のセットに、要求をソートするように構成されている。同様の方法で、第2のメモリバンクアービタ2101は、メモリデバイス例えば、図1のメモリデバイス140のメモリバンクの第2のセットに、要求をソートするように構成されている。当業者によって理解されるように、第1および第2のメモリバンクアービタ2100,2101は、コンピューティングデバイス例えば、コンピューティングデバイス110,120からのメモリ要求例えば、読み書き動作の優先順位を付けるように構成されている。コンピューティングデバイス110からのメモリアドレスのセットは、メモリバンクの第1のセットに割り当てられ、結果として、第1のメモリバンクアービタ2100によって処理される。同様に、コンピューティングデバイス120からのメモリアドレスのセットは、メモリバンクの第2のセットに割り当てられ、結果として、第2のメモリバンクアービタ2101によって処理される。図2を参照すると、メモリスケジューラ220は、第1および第2のメモリバンクアービタ2100,2101からのソートされたメモリ要求を処理するように構成されている。一実施形態において、メモリスケジューラ220は、読み書き効率を最適化し、図1のデータバス160上の帯域幅を最大化する方法で、ソートされたメモリ要求をラウンド処理する。一実施形態において、データバス160は、所定のバス幅を有し、メモリデバイス140とコンピューティングデバイス110,120との間のデータの転送は、データバス160の全バス幅を使用する。図2のメモリスケジューラ220は、同一メモリバンク内の異なる行のバックトゥバック要求を回避するために、メモリ要求をソート、並べ替えおよびクラスタリングすることによって、メモリデバイス140内のメモリバンクとのコンフリクトを最小限に抑えてもよい。一実施形態において、メモリスケジューラ220は、要求を作製するコンピューティングデバイスに基づき、ソートされたメモリ要求の処理の優先順位を付けることができる。例えば、メモリスケジューラ220は、ソートされたメモリ要求例えば、コンピューティングデバイス120からのアドレス要求のセットに対応するを処理する前に、第1のメモリバンクアービタ2100からのソートされたメモリ要求例えば、コンピューティングデバイス110からのアドレス要求のセットに対応するを処理してもよく、逆もまた同様である。当業者によって理解されるように、メモリスケジューラ220の出力は、図1のデータバス160を介して、メモリデバイス140に読み書き要求を送信するために必要なアドレス、コマンドおよび制御信号を生成するように処理される。読み書きメモリ要求に対応するアドレス、コマンドおよび制御信号の生成は、当業者には既知である。図1を参照すると、メモリデバイス140は、本発明の一実施形態に従ったダイナミックランダムアクセスメモリDRAMデバイスである。メモリデバイス140は、メモリバンクの第1のセットと、メモリバンクの第2のセットとに分割される。メモリバンクの第1のセット内の1つ以上のメモリセルは、コンピューティングデバイス110の動作と関連付けられる第1の複数のメモリバッファに割り当てられる。同様に、メモリバンクの第2のセット内の1つ以上のメモリセルは、コンピューティングデバイス120の動作と関連付けられる第2の複数のメモリバッファに割り当てられる。説明を簡単にするために、以下の解説では、メモリデバイス140が、メモリバンクの2つのセット、すなわちメモリバンクの第1のセットとメモリバンクの第2のセットとに分割されると仮定する。しかしながら、本明細書の説明に基づき、当業者は、メモリデバイス140が、メモリバンクの3つ以上のセット例えば、メモリバンクの3つのセット、メモリバンクの4つのセット、メモリバンクの5つのセット等に分割され、メモリバンクのセットのそれぞれが、特定のコンピューティングデバイスに割り当てられ得ることを認識するであろう。例えば、メモリデバイス140がメモリバンクの3つのセットに分割される場合、1つのメモリバンク第1のメモリバンクは、コンピューティングデバイス110に割り当てられ、1つのメモリバンク第2のメモリバンクは、コンピューティングデバイス120に割り当てられ、第3のメモリバンクは、第3のコンピューティングデバイス図1のマルチクライアントコンピューティングシステム100では図示せずに割り当てられ得る。図3は、メモリバンクの第1のセット310とメモリバンクの第2のセット320とを有するメモリデバイス140の一実施形態の図である。図3に示すように、メモリデバイス140は、8つのメモリバンクを有し、4つのメモリバンクは、メモリバンクの第1のセット310に割り当てられており例えば、メモリバンク0~3、他の4つのメモリバンクは、メモリバンクの第2のセット320に割り当てられている例えば、メモリバンク4~7。本明細書の説明に基づき、当業者は、メモリデバイス140が、8つよりも多いまたは少ないメモリバンク例えば、4つ、あるいは16個のメモリバンクを有し得ることを認識するであろう。また、当業者は、メモリデバイス140のメモリバンクが、限定されることではないが例えば、6つのメモリバンクがメモリバンクの第1のセット310に割り当てられており、2つのメモリバンクがメモリバンクの第2のセット320に割り当てられるように、異なる配置に分割され得ることを認識するであろう。メモリバンクの第1のセット310は、アドレスの下位セットに対応し、メモリバンクの第2のセット320は、アドレスの上位セットに対応する。例えば、メモリデバイス140が、8つのバンクを有する2ギガバイトGBメモリデバイスである場合に、0~1GB目に対応するメモリアドレスは、メモリバンクの第1のセット310に割り当てられており、1~2GB目に対応するメモリアドレスは、メモリバンクの第2のセット320に割り当てられている。本明細書の説明に基づき、当業者は、メモリデバイス140が、2GBよりも小さいまたは大きいメモリ容量を有することができることを認識するであろう。メモリデバイス140におけるこれらの他のメモリ容量は、本明細書に記載される実施形態の精神および範囲内である。メモリバンクの第1のセット310は、コンピューティングデバイス110の動作と関連付けられている。同様に、メモリバンクの第2のセット320は、コンピューティングデバイス320の動作と関連付けられている。例えば、当業者によって理解され得るように、メモリバッファは、典型的には、コンピューティングデバイス例えば、コンピューティングデバイス110,120によって実行される動作または処理の間でデータを移動させる際に使用される。上記のように、コンピューティングデバイス110は、CPUであってもよく、メモリバンクの第1のセット310は、CPUコンピューティングデバイス110による動作の実行で使用されるメモリバッファに割り当てられる。遅れに敏感なCPU命令コードを実行するために必要とされるメモリバッファは、メモリバンクの第1のセット310内の1つ以上のメモリセルにマッピングされ得る。遅れに敏感なCPU命令コードをメモリバンクの第1のセット310にマッピングすることの利点は、数ある中でも、コンピューティングデバイス110,120の間で、メモリバンクコンテンションの問題が低減または回避され得る点にある。コンピューティングデバイス120は、GPUであってもよく、メモリバンクの第2のセット320は、GPUコンピューティングデバイス120による動作の実行に使用されるメモリバッファに割り当てられる。グラフィック動作を実行するために必要とされるフレームメモリバッファは、メモリバンクの第2のセット320内の1つ以上のメモリセルにマッピングされ得る。メモリデバイス140の1つ以上のメモリ領域がGPU動作専用であることから、メモリバンクの第2のセット320の利点は、数ある中でも、コンピューティングデバイス110,120の間で、メモリバンクコンテンションの問題が低減または回避され得る点にある。図2に関して上記のように、第1のメモリバンクアービタ2100は、コンピューティングデバイス110によって割り当てられ、図3のメモリバンクの第1のセット310に向けられるアドレスを有することができる。コンピューティングデバイス110がCPUである上記の実施例において、コンピューティングデバイス110に対するアービトレーションは、本発明の一実施形態に従って、遅れに敏感なCPU命令コードを効率的に実行するために、限定されることではないが例えば、予測ページオープンポリシーおよびアドレス先読み等の技術を使用して最適化され得る。同様に、第2のメモリバンクアービタ2101は、コンピューティングデバイス120によって割り当てられ、図3のメモリバンクの第2のセット320に向けられるアドレスを有することができる。コンピューティングデバイス120がGPUである上記の実施例において、コンピューティングデバイス120に対するスレッドは、本発明の一実施形態に従って、最大帯域幅に対して最適化され得る。第1のメモリバンクアービタ2100が、コンピューティングデバイス110,120からのメモリ要求に対して、アービトレーションのスレッドのそれぞれを一旦ソートすると、図2のメモリスケジューラ220は、ソートされたメモリ要求を処理する。コンピューティングデバイス110がCPUであり、コンピューティングデバイス120がGPUである上記の実施例に関して、スケジューラ220は、GPU関連メモリ要求の前に、CPU関連メモリ要求を処理することによって最適化され得る。本発明の一実施形態によると、一般的には、CPU性能は、GPU性能よりもメモリ遅延に敏感であるため、このプロセスが可能である。ここで、メモリスケジューラ220は、CPU関連メモリ要求と関連付けられるデータ転送が、GPU関連メモリ要求と関連付けられるデータ転送よりも優先されるように、コンピューティングデバイス110へのデータバス160の制御を提供する。別の実施形態において、例えば、図1のコンピューティングデバイス120からのGPU関連メモリ要求は、例えば、コンピューティングデバイス110からのCPU関連メモリ要求の前および/または後にインターリーブされ得る。図4は、メモリスケジューラ220によって実施されるCPUおよびGPU関連メモリ要求の例示的なインターリーブ配置400の図である。インターリーブ配置400において、GPU関連メモリ要求例えば、メモリ要求シーケンス410が処理されている一方で、CPU関連メモリ要求例えば、メモリ要求シーケンス420が送信された場合には、メモリスケジューラ220は、データバス160上のCPU関連メモリ要求に関係するデータ転送を選択して、GPU関連メモリ要求に関係するデータ転送を中断するように構成され得る。メモリスケジューラ220は、CPU関連メモリ要求が発行された直後に、データバス160上でGPU関連メモリ要求に関係するデータ転送を継続するように構成され得る。CPUおよびGPU関連メモリ要求の両方の得られたインターリーブ配置は、図4のインターリーブされたシーケンス430に示される。図4のインターリーブされたシーケンス430を参照すると、これは、CPU関連メモリ要求がGPU関連メモリ要求ストリームにインターリーブされるという意味において、CPUおよびGPU関連メモリ要求がどのように最適化され得るのかを表す一実施例である。結果として、CPU関連メモリ要求は、最小の待ち時間で処理され、GPU関連メモリ要求ストリームは、CPU関連メモリ要求を提供するのに必要な最小の時間、中断される。CPUおよびGPU関連メモリ要求ストリームは、相互にコンフリクトしないと保証されているため、メモリバンクコンフリクトによるオーバーヘッドはない。コンピューティングデバイス110がCPUであり、コンピューティングデバイス120がGPUである実施例に関して、コンピューティングデバイス110と関連付けられる全てのCPU動作に対するメモリバッファは、メモリバンクの第1のセット310内の1つ以上のメモリセルに割り当てられ得る。同様に、コンピューティングデバイス120と関連付けられる全てのGPU動作に対するメモリバッファは、メモリバンクの第2のセット320内の1つ以上のメモリセルに割り当てられ得る。あるいは、CPU動作に対するメモリバッファと、GPU動作に対するメモリバッファとは、本発明の一実施形態に従って、メモリバンクの第1および第2のセット310,320のそれぞれにおける1つ以上のメモリセルに割り当てられ得る。例えば、遅れに敏感なCPU命令コードに対するメモリバッファは、メモリバンクの第1のセット310内の1つ以上のメモリセルに割り当てられ、遅れに敏感ではないCPU動作に対するメモリバッファは、メモリバンクの第2のセット320内の1つ以上のメモリセルに割り当てられ得る。コンピューティングデバイス例えば、コンピューティングデバイス110およびコンピューティングデバイス120間で共有されるデータに対して、共有されたメモリアドレスは、メモリバンクの第1のセット310およびメモリバンクの第2のセット320の何れか一方における1つ以上のメモリセルに割り当てられ得る。この場合、両方のコンピューティングデバイスからのメモリ要求は、単一メモリバンクアービタ例えば、第1のメモリバンクアービタ2100または第2のメモリバンクアービタ2101内にアービトレーションされる。単一メモリバンクアービタによるアービトレーションは、コンピューティングデバイスの各々に対して実施される独立したアービトレーションと比較して、パフォーマンスインパクトをもたらし得る。一方で、共有されたデータの全メモリトラフィックにおける割合が低い限り、共有されたデータを割り当てることは、コンピューティングデバイスの各々に対する別々のメモリバンクアービタ例えば、コンピューティングデバイス110と関連付けられる第1のメモリバンクアービタ2100と、コンピューティングデバイス120と関連付けられる第2のメモリバンクアービタ2101によって達成される全体の性能向上の低減を抑制することができる。図1のUMAを有するマルチクライアントコンピューティングシステム100の上記の実施形態を考慮して、マルチクライアントコンピューティングシステム100内のクライアントデバイスのそれぞれに割り当てられる専用のメモリ分割例えば、メモリバンクの第1および第2のセット310,320によって、多くの利点が実現される。例えば、メモリデバイス140のメモリバンクが分離され、コンピューティングデバイス110,120に対する別々のメモリバンクが割り当てられ得る。このようにして、バンクページポリシーの集中的なチューニングは、コンピューティングデバイス110,120のそれぞれの必要性を満たすために達成され得る。これは、結果的に、1つのメモリ要求当たりのメモリバンクコンフリクトをより少なくする。そして、このことは、マルチクライアントコンピューティングシステム100における性能向上および/または節電をもたらし得る。別の実施例において、コンピューティングデバイス110,120の間のバンクコンテンションが低減されるか、全くないことの結果として、待ち時間レイテンシが、よりよく予測され得る。別のコンピューティングデバイスによって開かれることが求められるメモリバンクを早期に閉じてしまうことによる、マルチクライアントコンピューティングシステム100内の有意な帯域幅性能のペナルティを受けることなく、この強化された予測を達成し得る。つまり、マルチクライアントコンピューティングシステムは、典型的には、全システム帯域幅を使って、優先度が高く待ち時間の短いコンピューティングデバイス例えば、CPUを提供するために、優先度の低いコンピューティングデバイス例えば、GPUのメモリバンクを閉じる。上記の実施形態において、コンピューティングデバイス110に対するメモリバッファに割り当てられるメモリバンクは、コンピューティングデバイス120に対するメモリバッファに割り当てられるメモリバンクを干渉しない。さらに別の実施例において、マルチクライアントコンピューティングシステムの上記の実施形態の別の利点は、スケーラビリティにある。マルチクライアントコンピューティングシステム100内のコンピューティングデバイスの数と、メモリデバイス140内のメモリバンクの数とが増加するにつれて、マルチクライアントコンピューティングシステム100は、単純にスケーリングされ得る。スケーリングは、メモリデバイス140を、コンピューティングデバイスのそれぞれに割り当てられる1つ以上のメモリバンクのセットに適切に分割することによって達成され得る。例えば、当業者によって理解されるように、DRAMメモリバンクの増大は、4つのメモリバンクから、8つのメモリバンク、16個のメモリバンクへと増大し続ける。これらのメモリバンクは、クライアントデバイスの数が増加するにつれて、適切に分割され、マルチクライアントコンピューティングシステム100内のコンピューティングデバイスのそれぞれに割り当てられ得る。図5は、マルチクライアントコンピューティングシステム内のメモリデバイスにアクセスするための方法500の一実施形態の図である。方法500は、限定されることではないが例えば、図1のマルチクライアントコンピューティングシステム100を使用して行うことができる。ステップ510において、メモリデバイスの1つ以上のメモリバンクは、メモリバンクの第1のセットと、メモリバンクの第2のセットとに分割される。一実施形態において、メモリデバイスは、上半分の複数のメモリバンク例えば、図3のメモリバンク0~3および下半分の複数のメモリバンク例えば、図3のメモリバンク4~7を有するDRAMデバイスである。メモリデバイスの1つ以上のバンクの分割は、メモリバンクの第1のセットをDRAMデバイス内の上半分の複数のメモリバンクと関連付ける例えば、マッピングすること、およびメモリバンクの第2のセットをDRAMデバイス内のメモリバンクの下半分と関連付ける例えば、マッピングすることを含むことができる。ステップ520において、メモリバンクの第1のセット内の第1の複数のメモリセルは、第1のクライアントデバイス例えば、図1のコンピューティングデバイス110と関連付けられるメモリ動作に割り当てられる。第1の複数のメモリセルの割り当ては、メモリバンクの第1のセット内の1つ以上の物理アドレス空間を、第1のクライアントデバイスと関連付けられるそれぞれのメモリ動作にマッピングすることを含む例えば、図3のメモリバンクの第1のセット310。例えば、メモリデバイスが、8つのメモリバンクを有する2GBのDRAMデバイスである場合には、4つのメモリバンクが、メモリバンクの第1のセットに割り当てられ、0~1GB目に対応するメモリアドレスが、当該4つのメモリバンクと関連付けられ得る例えば、マッピングされ得る。ステップ530において、メモリバンクの第2のセット内の第2の複数のメモリセルは、第2のクライアントデバイス例えば、図1のコンピューティングデバイス120と関連付けられるメモリ動作に割り当てられる。第2の複数のメモリセルの割り当ては、メモリバンクの第2のセット内の1つ以上の物理アドレス空間を、第2のクライアントデバイスと関連付けられるそれぞれのメモリ動作にマッピングすることを含む例えば、図3のメモリバンクの第2のセット320。例えば、メモリデバイスが8つのメモリバンクを有する2GBのDRAMデバイスである実施例について、他の4つのメモリバンクが、メモリバンクの第2のセットに割り当てられ得る例えば、マッピングされ得る。ここで、1~2GB目に対応するメモリアドレスは、前記他の4つのメモリバンクと関連付けられ得る例えば、マッピングされ得る。ステップ540において、メモリバンクの第1のセットは、第1のメモリ動作が第1のクライアントデバイスによって要求される際にアクセスされ、メモリバンクの第1のセットからの第1のメモリアドレスは、第1のメモリ動作と関連付けられる。メモリバンクの第1のセットは、第1および第2のクライアントデバイスをメモリデバイスに連結するデータバス例えば、図1のデータバス160を介して、アクセスされ得る。データバスは、所定のバス幅を有し、第1のクライアントデバイスまたは第2のクライアントデバイスとメモリデバイスとの間のデータ転送は、データバスの全バス幅を使用して行われる。ステップ550において、メモリバンクの第2のセットは、第2のメモリ動作が第2のクライアントデバイスによって要求される際にアクセスされ、メモリバンクの第2のセットからの第2のメモリアドレスは、第2のメモリ動作と関連付けられる。ステップ540と同様に、メモリバンクの第2のセットは、データバスを介してアクセスされ得る。ステップ560において、第1のメモリアドレスまたは第2のメモリアドレスが、第1または第2のメモリ動作を実行するためにアクセスされているか否かに基づき、第1のメモリ動作または第2のメモリ動作中のそれぞれにおいて、データバスの制御が第1のクライアントデバイスまたは第2のクライアントデバイスに提供される。第1のメモリ動作の要求が第2のメモリ動作の要求の後に生じる場合、および第1のメモリアドレスが第1のメモリ動作を実行するためにアクセスされる必要がある場合には、第1のクライアントデバイスへのデータバスの制御を選択して、データバスの制御が第2のクライアントデバイスから移される。第2のクライアントデバイスへのデータバスの制御は、本発明の一実施形態に従って、第1のメモリ動作が完了した後に、再構築され得る。本発明の種々の態様は、ソフトウェア、ファームウェア、ハードウェアまたはこれらの組み合わせで実施されてもよい。図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は、フロッピー登録商標ディスク、磁気テープ、光ディスク等を含むことができ、これらは、リムーバブル記憶ドライブ614によって読み出され、および/または書き込まれる。当業者には理解されるように、リムーバブル記憶装置618は、コンピュータソフトウェアおよび/またはデータを内部に記憶した、コンピュータ使用可能な記憶媒体を含む。代替の実施において、二次メモリ610は、コンピュータプログラムまたは他の命令がコンピュータシステム600にロードされることを可能にするための、他の同様のデバイスを含むことができる。かかるデバイスとしては、例えば、リムーバブル記憶装置622およびインターフェース620が挙げられ得る。かかるデバイスの実施例としては、プログラムカートリッジおよびカートリッジインターフェースビデオゲームデバイスで見られるようなもの等、リムーバブルメモリチップ例えば、EPROMまたはPROMおよび関連ソケット、ならびにソフトウェアおよびデータが、リムーバブル記憶装置622からコンピュータシステム600に転送されることを可能にする、他のリムーバブル記憶装置622およびインターフェース620が挙げられ得る。コンピュータシステム600は、通信インターフェース624を含むことができる。通信インターフェース624は、ソフトウェアおよびデータが、コンピュータシステム600と外部デバイスとの間で転送されることを可能にする。通信インターフェース624は、モデム、ネットワークインターフェースイーサネット登録商標カード等、通信ポート、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つ以上のデータ処理デバイスで実行されると、当該データ処理デバイスを本明細書に記載されるように動作させる。本発明の実施形態は、現時点で既知または将来の媒体であって、任意のコンピュータで使用可能または可読な媒体を採用する。コンピュータ使用可能な媒体の実施例としては、一次記憶デバイス例えば、任意の種類のランダムアクセスメモリ、二次記憶デバイス例えば、ハードドライブ、フロッピー登録商標ディスク、CDROM、ZIPディスク、テープ、磁気記憶デバイス、光記憶デバイス、MEMS、ナノ技術記憶デバイス等ならびに通信媒体例えば、有線および無線通信ネットワーク、ローカルエリアネットワーク、ワイドエリアネットワーク、イントラネット等が挙げられるが、これらに限定されない。本発明の種々の実施形態が上記に記載されてきたが、それらは、制限目的ではなく、例示目的のみで示されていることを理解されたい。添付の特許請求の範囲によって定義されるような、本発明の精神および範囲から逸脱することなく、その中で形態および詳細に種々の変更が行われ得ることは、当業者によって理解されるであろう。本発明が、これらの実施例に限定されないことを理解されたい。本発明は、本明細書に記載されるように動作する任意の要素に適用できる。したがって、本発明の広さおよび範囲は、上記の例示的な実施形態のいずれによっても制限されるべきではなく、以下の特許請求の範囲およびそれらの均等物に従ってのみ定義されるべきである。"