(57)【要約】メモリデバイスにアクセスするための方法、コンピュータプログラム製品およびシステムを提供する。例えば、方法は、メモリデバイスの１つ以上のメモリバンクを、メモリバンクの第１および第２のセットに分割するステップを含むことができる。方法は、メモリバンクの第１のセット内の第１の複数のメモリセルを、第１のクライアントデバイスの第１のメモリ動作に割り当て、メモリバンクの第２セット内の第２の複数のメモリセルを、第２のクライアントデバイスの第２のメモリ動作に割り当てることができる。このメモリ割り当ては、第１および第２のメモリ動作が、第１および第２のクライアントデバイスのそれぞれによって要求される場合に、メモリバンクの第１および第２のセットへのアクセスを可能にすることができる。さらに、第１のクライアントデバイスまたは第２のクライアントデバイスと、メモリデバイスとの間のデータバスへのアクセスは、第１のメモリアドレスまたは第２のメモリアドレスが、第１または第２のメモリ動作を実行するためにアクセスされているか否かに基づき、制御され得る。【選択図】図１
2013545201.tif 000002
【特許請求の範囲】
【請求項１】
マルチクライアントコンピューティングシステムのメモリデバイスにアクセスするための方法であって、
前記メモリデバイスの１つ以上のメモリバンクを、メモリバンクの第１のセットと、メモリバンクの第２のセットとに分割するステップと、
メモリバンクの前記第１のセット内の第１の複数のメモリセルへのアクセスを構成するステップであって、前記第１の複数のメモリセルは、第１のクライアントデバイスの第１のメモリ動作と関連付けられているステップと、
メモリバンクの前記第２のセット内の第２の複数のメモリセルへのアクセスを構成するステップであって、前記第２の複数のメモリセルは、第２のクライアントデバイスの第２のメモリ動作と関連付けられているステップと、
を含む、方法。
【請求項２】
前記第１のメモリ動作が前記第１のクライアントデバイスによって要求される場合に、前記第１および第２のクライアントデバイスを前記メモリデバイスに連結するデータバスを介して、メモリバンクの前記第１のセットにアクセスするステップであって、メモリバンクの前記第１のセットからの第１のメモリアドレスは、前記第１のメモリ動作と関連付けられているステップと、
前記第２のメモリ動作が前記第２のクライアントデバイスによって要求される場合に、前記データバスを介して、メモリバンクの前記第２のセットにアクセスするステップであって、メモリバンクの前記第２のセットからの第２のメモリアドレスは、前記第２のメモリ動作と関連付けられているステップと、
前記第１のメモリアドレスまたは前記第２のメモリアドレスが、前記第１または第２のメモリ動作を実行するためにアクセスされているか否かに基づいて、前記第１のメモリ動作中または第２のメモリ動作中に、前記データバスの制御を前記第１のクライアントデバイスまたは前記第２のクライアントデバイスに提供するステップと、
を含む、請求項１に記載の方法。
【請求項３】
前記データバスは、所定のバス幅を有し、
前記データバスの制御を提供するステップは、前記データバスの全てのバス幅を使用して、前記第１のクライアントデバイスまたは前記第２のクライアントデバイスと、前記メモリデバイスとの間でデータを転送するステップを含む、請求項２に記載の方法。
【請求項４】
前記データバスの制御を提供するステップは、前記第１のメモリアドレスが前記第１のメモリ動作を実行するためにアクセスされる必要がある場合に、前記データバスの制御を、前記第２のクライアントデバイスの前に前記第１のクライアントデバイスへ提供するステップを含む、請求項２に記載の方法。
【請求項５】
前記データバスの制御を提供するステップは、前記第１のメモリ動作の要求が前記第２のメモリ動作の要求の後に生じる場合、および前記第１のメモリアドレスが前記第１のメモリ動作を実行するためにアクセスされる必要がある場合に、前記データバスの制御を、前記第２のクライアントデバイスから前記第１のクライアントデバイスに移すステップを含む、請求項２に記載の方法。
【請求項６】
前記データバスの制御を移すステップは、前記第１のメモリ動作が完了した後に、前記第２のクライアントデバイスへの前記データバスの制御を再構築するステップを含む、請求項５に記載の方法。
【請求項７】
前記メモリデバイスは、上半分の複数のメモリバンクと、下半分の複数のメモリバンクとを有するダイナミックランダムアクセスメモリ（ＤＲＡＭ）デバイスを備え、
前記１つ以上のバンクを分割するステップは、メモリバンクの前記第１のセットを、前記ＤＲＡＭデバイス内の前記上半分の複数のメモリバンクと関連付けるステップと、メモリバンクの前記第２のセットを、前記ＤＲＡＭデバイス内の前記下半分の複数のメモリバンクと関連付けるステップと、を含む、請求項１に記載の方法。
【請求項８】
前記第１の複数のメモリセルへのアクセスを構成するステップは、メモリバンクの前記第１のセット内の１つ以上の物理アドレス空間を、前記第１のクライアントデバイスと関連付けられる１つ以上のメモリバッファのそれぞれにマッピングするステップを含む、請求項１に記載の方法。
【請求項９】
前記第２の複数のメモリセルへのアクセスを構成するステップは、メモリバンクの前記第２のセット内の１つ以上の物理アドレス空間を、前記第２のクライアントデバイスと関連付けられる１つ以上のメモリバッファのそれぞれにマッピングするステップを含む、請求項１に記載の方法。
【請求項１０】
１つ以上のプロセッサによって実行される場合に、複数のクライアントデバイスを有するコンピュータシステムのメモリデバイスにアクセスするコンピュータプログラム論理が記録されたコンピュータ使用可能な媒体を備える、コンピュータプログラム製品であって、前記コンピュータプログラム論理は、
プロセッサが、前記メモリデバイスの１つ以上のメモリバンクを、メモリバンクの第１のセットと、メモリバンクの第２のセットとに分割することを可能にする第１のコンピュータ可読プログラムコードと、
プロセッサが、メモリバンクの前記第１のセット内の第１の複数のメモリセルへのアクセスを構成することを可能にする第２のコンピュータ可読プログラムコードであって、前記第１の複数のメモリセルは、第１のクライアントデバイスの第１のメモリ動作と関連付けられている第２のコンピュータ可読プログラムコードと、
プロセッサが、メモリバンクの前記第２のセット内の第２の複数のメモリセルへのアクセスを構成することを可能にする第３のコンピュータ可読プログラムコードであって、前記第２の複数のメモリセルは、第２のクライアントデバイスの第２のメモリ動作と関連付けられている第３のコンピュータ可読プログラムコードと、
を備える、コンピュータプログラム製品。
【請求項１１】
前記コンピュータプログラム論理は、
プロセッサが、前記第１のメモリ動作が前記第１のクライアントデバイスによって要求される場合に、前記第１および第２のクライアントデバイスを前記メモリデバイスに連結するデータバスを介して、メモリバンクの前記第１のセットにアクセスすることを可能にする第４のコンピュータ可読プログラムコードであって、メモリバンクの前記第１のセットからの第１のメモリアドレスは、前記第１のメモリ動作と関連付けられている第４のコンピュータ可読プログラムコードと、
プロセッサが、前記第２のメモリ動作が前記第２のクライアントデバイスによって要求される場合に、前記データバスを介して、メモリバンクの前記第２のセットにアクセスすることを可能にする第５のコンピュータ可読プログラムコードであって、メモリバンクの前記第２のセットからの第２のメモリアドレスは、前記第２のメモリ動作と関連付けられている第５のコンピュータ可読プログラムコードと、
プロセッサが、前記第１のメモリアドレスまたは前記第２のメモリアドレスが、前記第１または第２のメモリ動作を実行するためにアクセスされているか否かに基づいて、前記第１のメモリ動作中または第２のメモリ動作中に、前記データバスの制御を前記第１のクライアントデバイスまたは前記第２のクライアントデバイスに提供することを可能にする第６のコンピュータ可読プログラムコードと、
を備える、請求項１０に記載のコンピュータプログラム製品。
【請求項１２】
前記データバスは、所定のバス幅を有し、
前記第６のコンピュータ可読プログラムコードは、
プロセッサが、前記データバスの全てのバス幅を使用して、前記第１のクライアントデバイスまたは前記第２のクライアントデバイスと、前記メモリデバイスとの間でデータを転送することを可能にする第７のコンピュータ可読プログラムコードを備える、
請求項１１に記載のコンピュータプログラム製品。
【請求項１３】
前記第６のコンピュータ可読プログラムコードは、
プロセッサが、前記第１のメモリアドレスが前記第１のメモリ動作を実行するためにアクセスされる必要がある場合に、前記データバスの制御を、前記第２のクライアントデバイスの前に前記第１のクライアントデバイスへ提供することを可能にする第７のコンピュータ可読プログラムコードを備える、
請求項１２に記載のコンピュータプログラム製品。
【請求項１４】
前記第６のコンピュータ可読プログラムコードは、
プロセッサが、前記第１のメモリ動作の要求が前記第２のメモリ動作の要求の後に生じる場合、および前記第１のメモリアドレスが前記第１のメモリ動作を実行するためにアクセスされる必要がある場合に、前記データバスの制御を、前記第２のクライアントデバイスから前記第１のクライアントデバイスに移すことを可能にする第７のコンピュータ可読プログラムコードを備える、
請求項１２に記載のコンピュータプログラム製品。
【請求項１５】
前記第７のコンピュータ可読プログラムコードは、
プロセッサが、前記第１のメモリ動作が完了した後に、前記第２のクライアントデバイスへの前記データバスの制御を再構築することを可能にする第８のコンピュータ可読プログラムコードを備える、
請求項１４に記載のコンピュータプログラム製品。
【請求項１６】
前記メモリデバイスは、上半分の複数のメモリバンクと、下半分の複数のメモリバンクとを有するダイナミックランダムアクセスメモリ（ＤＲＡＭ）デバイスを備え、
前記第１のコンピュータ可読プログラムコードは、
プロセッサが、メモリバンクの前記第１のセットを、前記ＤＲＡＭデバイス内の前記上半分の複数のメモリバンクと関連付けることと、メモリバンクの前記第２のセットを、前記ＤＲＡＭデバイス内の前記下半分の複数のメモリバンクと関連付けることとを可能にする第７のコンピュータ可読プログラムコードを備える、
請求項１０に記載のコンピュータプログラム製品。
【請求項１７】
前記第２のコンピュータ可読プログラムコードは、
プロセッサが、メモリバンクの前記第１のセット内の１つ以上の物理アドレス空間を、前記第１のクライアントデバイスと関連付けられる１つ以上のメモリバッファのそれぞれにマッピングすることを可能にする第７のコンピュータ可読プログラムコードを備える、
請求項１０に記載のコンピュータプログラム製品。
【請求項１８】
前記第３のコンピュータ可読プログラムコードは、
プロセッサが、メモリバンクの前記第２のセット内の１つ以上の物理アドレス空間を、前記第２のクライアントデバイスと関連付けられる１つ以上のメモリバッファのそれぞれにマッピングすることを可能にする第７のコンピュータ可読プログラムコードを備える、
請求項１０に記載のコンピュータプログラム製品。
【請求項１９】
第１のクライアントデバイスと、
第２のクライアントデバイスと、
メモリバンクの第１のセットと、メモリバンクの第２のセットとに分割される１つ以上のメモリバンクを有するメモリデバイスと、
メモリコントローラとを備え、
メモリバンクの前記第１のセット内の第１の複数のメモリセルは、前記第１のクライアントデバイスと関連付けられた第１のメモリ動作によってアクセスされるように構成されており、
メモリバンクの前記第２のセット内の第２の複数のメモリセルは、前記第２のクライアントデバイスと関連付けられた第２のメモリ動作によってアクセスされるように構成されており、
前記メモリコントローラは、前記第１のクライアントデバイスと前記第１の複数のメモリセルとの間のアクセスを制御するように、かつ、前記第２のクライアントデバイスと前記第２の複数のメモリセルとの間のアクセスを制御するように構成されている、
コンピューティングシステム。
【請求項２０】
前記第１および第２のクライアントデバイスは、中央処理装置、グラフィックスプロセッシングユニットおよび特定用途向け集積回路のうち少なくとも１つを備える、請求項１９に記載のコンピューティングシステム。
【請求項２１】
前記メモリデバイスは、上半分の複数のメモリバンクと、下半分の複数のメモリバンクとを有するダイナミックランダムアクセスメモリ（ＤＲＡＭ）デバイスを備え、
メモリバンクの前記第１のセットは、前記ＤＲＡＭデバイス内の前記上半分の複数のメモリバンクと関連付けられており、メモリバンクの前記第２のセットは、前記ＤＲＡＭデバイス内の前記下半分の複数のメモリバンクと関連付けられている、請求項１９に記載のコンピューティングシステム。
【請求項２２】
前記メモリデバイスは、メモリバンクの前記第１のセット内の１つ以上の物理アドレス空間を備え、前記物理アドレス空間は、前記第１のクライアントデバイスと関連付けられる１つ以上のメモリ動作のそれぞれにマッピングされている、請求項１９に記載のコンピューティングシステム。
【請求項２３】
前記メモリデバイスは、メモリバンクの前記第２のセット内の１つ以上の物理アドレス空間を備え、前記物理アドレス空間は、前記第２のクライアントデバイスと関連付けられる１つ以上のメモリ動作のそれぞれにマッピングされている、請求項１９に記載のコンピューティングシステム。
【請求項２４】
前記メモリコントローラは、
前記第１のメモリ動作が前記第１のクライアントデバイスによって要求される場合に、前記第１および第２のクライアントデバイスを前記メモリデバイスに連結するデータバスを介して、メモリバンクの前記第１のセットにアクセスすることであって、メモリバンクの前記第１のセットからの第１のメモリアドレスは、前記第１のメモリ動作と関連付けられていることと、
前記第２のメモリ動作が前記第２のクライアントデバイスによって要求される場合に、前記データバスを介して、メモリバンクの前記第２のセットにアクセスすることであって、メモリバンクの前記第２のセットからの第２のメモリアドレスは、前記第２のメモリ動作と関連付けられていることと、
前記第１のメモリアドレスまたは前記第２のメモリアドレスが、前記第１または第２のメモリ動作を実行するためにアクセスされているか否かに基づいて、前記第１のメモリ動作中または第２のメモリ動作中に、前記データバスの制御を前記第１のクライアントデバイスまたは前記第２のクライアントデバイスに提供することと、
を行うように構成されている、
請求項１９に記載のコンピューティングシステム。
【請求項２５】
前記データバスは、所定のバス幅を有し、
前記メモリコントローラは、前記データバスの全てのバス幅を使用して、前記第１のクライアントデバイスまたは前記第２のクライアントデバイスと、前記メモリデバイスとの間のデータの転送を制御するように構成されている、請求項２４に記載のコンピューティングシステム。
【請求項２６】
前記メモリコントローラは、前記第１のメモリアドレスが前記第１のメモリ動作を実行するためにアクセスされる必要がある場合に、前記データバスの制御を、前記第２のクライアントデバイスの前に前記第１のクライアントデバイスへ提供するように構成されている、請求項２４に記載のコンピューティングシステム。
【請求項２７】
前記メモリコントローラは、前記第１のメモリ動作の要求が前記第２のメモリ動作の要求の後に生じる場合、および前記第１のメモリアドレスが前記第１のメモリ動作を実行するためにアクセスされる必要がある場合に、前記データバスの制御を、前記第２のクライアントデバイスから前記第１のクライアントデバイスに移すように構成されている、請求項２４に記載のコンピューティングシステム。
【請求項２８】
前記メモリコントローラは、前記第１のメモリ動作が完了した後に、前記第２のクライアントデバイスへの前記データバスの制御を再構築するように構成されている、請求項２７に記載のコンピューティングシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、概して、マルチクライアントコンピューティングシステムに対するメモリデバイスの分割に関する。
【背景技術】
【０００２】
多くのコンピューティングシステムは、処理速度および処理量の増加が要求されるため、中央処理装置（ＣＰＵ）、グラフィックスプロセッシングユニット（ＧＰＵ）またはそれらの組み合わせ等の複数のクライアントデバイス（本明細書において「コンピューティングデバイス」とも称される）を採用する。複数のクライアントデバイス（本明細書において「マルチクライアントコンピューティングシステム」とも称される）および統合メモリアーキテクチャ（ＵＭＡ）を有するコンピュータシステムにおいて、クライアントデバイスのそれぞれは、ＵＭＡ中の１つ以上のメモリデバイスへのアクセスを共有する。このアクセスは、メモリコントローラからメモリデバイスのそれぞれに経由されるデータバスや、メモリコントローラから複数のクライアントデバイスに経由される共通システムバスを介して行われ得る。
【０００３】
マルチクライアントコンピューティングシステムに対して、ＵＭＡは、典型的には、代替メモリアーキテクチャと対比して、より低いシステム費用および電力をもたらす。費用は、メモリチップ（例えば、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）デバイス）がより少ないために、またはコンピューティングデバイスおよびメモリチップに接続する入力／出力（Ｉ／Ｏ）インターフェースの数がより少ないために、低減される。これらの要因はまた、メモリチップおよびＩ／Ｏインターフェースと関連付けられる電力オーバーヘッドが低減されるために、ＵＭＡ用の電力の低減をもたらす。加えて、メモリインターフェース間の電力を消費するデータコピー動作が、ＵＭＡでは排除される一方で、他のメモリアーキテクチャでは、これらの電力を消費する動作を必要とする場合がある。
【０００４】
しかしながら、メモリデバイスのリカバリタイムに関する非効率性の原因が存在する。この場合、このリカバリタイムは、ＵＭＡを有するマルチクライアントコンピューティングシステムにおいて増加する可能性がある。リカバリタイム期間は、１つ以上のクライアントデバイスが同一のメモリデバイスのメモリバンクから連続的にデータ転送を要求するときに生じる（本明細書において「メモリバンクコンテンション」とも称される）。リカバリタイム期間は、メモリデバイスへの第１のアクセスと、すぐ後の第２のアクセスとの間における、メモリデバイスによって示される遅延時間を指す。つまり、メモリデバイスがデータにアクセスする一方で、リカバリタイム期間中にデータまたはシステムバス上に転送され得るデータは存在せず、したがって、マルチクライアントコンピューティングシステムにおける非効率性をもたらす。さらに、マルチクライアントコンピューティングシステムでは、時間が経つにつれて処理速度が増加するため、一般的なメモリデバイスに対するリカバリタイム期間は、ペースを保たず、メモリ性能ギャップのさらなる増加をもたらす。
【０００５】
したがって、マルチクライアントコンピューティングシステムにおけるメモリバンクコンテンションに関する非効率性を低減または排除する方法およびシステムが必要とされる。
【発明の概要】
【０００６】
本発明の実施形態は、複数のクライアントデバイスを有するコンピュータシステムのメモリデバイスにアクセスするための方法を含む。方法は、以下のステップを含むことができる。メモリデバイスの１つ以上のメモリバンクを、メモリバンクの第１のセットと、メモリバンクの第２のセットとに分割するステップ；メモリバンクの第１のセット内の第１の複数のメモリセルを、第１のクライアントデバイスと関連付けられる第１のメモリ動作に割り当てるステップ；メモリバンクの第２のセット内の第２の複数のメモリセルを、第２のクライアントデバイスと関連付けられる第２のメモリ動作に割り当てるステップ；第１のクライアントデバイスによって第１のメモリ動作が要求される場合に、第１および第２のクライアントデバイスをメモリデバイスに連結するデータバスを介して、メモリバンクの第１のセットにアクセスするステップであって、メモリバンクの第１のセットからの第１のメモリアドレスは、第１のメモリ動作と関連付けられているステップ；第２のクライアントデバイスによって第２のメモリ動作が要求される場合に、データバスを介して、メモリバンクの第２のセットにアクセスするステップであって、メモリバンクの第２のセットからの第２のメモリアドレスは、第２のメモリ動作と関連付けられているステップ；および、第１のメモリアドレスまたは第２のメモリアドレスが、第１または第２のメモリ動作を実行するためにアクセスされているか否かに基づいて、第１のメモリ動作中または第２のメモリ動作中に、データバスの制御を第１のクライアントデバイスまたは第２のクライアントデバイスに提供するステップ。
【０００７】
本発明の実施形態は、さらに、コンピュータプログラム製品を含む。コンピュータプログラム製品は、複数のクライアントデバイスを有するコンピュータシステム内のメモリデバイスに対してプロセッサがアクセスすることを可能にするためのコンピュータプログラム論理が記録されたコンピュータ使用可能な媒体を含む。コンピュータプログラム論理は、以下のプログラムコードを含むことができる：プロセッサが、メモリデバイスの１つ以上のメモリバンクを、メモリバンクの第１のセットとメモリバンクの第２のセットとに分割することを可能にする第１のコンピュータ可読プログラムコード；プロセッサが、メモリバンクの第１のセット内の第１の複数のメモリセルを、第１のクライアントデバイスと関連付けられる第１のメモリ動作に割り当てることを可能にする第２のコンピュータ可読プログラムコード；プロセッサが、メモリバンクの第２のセット内の第２の複数のメモリセルを、第２のクライアントデバイスと関連付けられる第２のメモリ動作に割り当てることを可能にする第３のコンピュータ可読プログラムコード；第１のメモリ動作が第１のクライアントデバイスによって要求される場合に、プロセッサが、第１および第２のクライアントデバイスをメモリデバイスに連結するデータバスを介して、メモリバンクの第１のセットにアクセスすることを可能にする第４のコンピュータ可読プログラムコードであって、メモリバンクの第１のセットからの第１のメモリアドレスは第１のメモリ動作と関連付けられている、第４のコンピュータ可読プログラムコード；第２のメモリ動作が第２のクライアントデバイスによって要求される場合に、プロセッサが、データバスを介して、メモリバンクの第２のセットにアクセスすることを可能にする、第５のコンピュータ可読プログラムコードであって、メモリバンクの第２のセットからの第２のメモリアドレスは第２のメモリ動作と関連付けられている、第５のコンピュータ可読プログラムコード；および、第１のメモリアドレスまたは第２のメモリアドレスが、第１または第２のメモリ動作を実行するためにアクセスされているか否かに基づいて、プロセッサが、第１のメモリ動作中または第２のメモリ動作中に、データバスの制御を第１のクライアントデバイスまたは第２のクライアントデバイスに提供することを可能にする、第６のコンピュータ可読プログラムコード。
【０００８】
本発明の実施形態は、コンピュータシステムを含む。コンピュータシステムは、第１のクライアントデバイス、第２のクライアントデバイス、メモリデバイスおよびメモリコントローラを含むことができる。メモリデバイスは、メモリバンクの第１のセットと、メモリバンクの第２のセットとに分割された、１つ以上のメモリバンクを含むことができる。メモリバンクの第１のセット内の第１の複数のメモリセルは、第１のクライアントデバイスと関連付けられる第１のメモリ動作に割り当てられ得る。同様に、メモリバンクの第２のセット内の第２の複数のメモリセルは、第２のクライアントデバイスと関連付けられる第２のメモリ動作に割り当てられ得る。さらに、メモリコントローラは、以下の機能を実施するように構成され得る：第１のメモリ動作が第１のクライアントデバイスによって要求される場合に、第１および第２のクライアントデバイスをメモリデバイスに連結するデータバスを介して、第１のクライアントデバイスとメモリバンクの第１のセットとの間のアクセスを制御することであって、メモリバンクの第１のセットからの第１のメモリアドレスは、第１のメモリ動作と関連付けられている、第１のクライアントデバイスとメモリバンクの第１のセットとの間のアクセスを制御すること；第２のメモリ動作が第２のクライアントデバイスによって要求される場合に、データバスを介して、第２のクライアントデバイスとメモリバンクの第２のセットとの間のアクセスを制御することであって、メモリバンクの第２のセットからの第２のメモリアドレスは、第２のメモリ動作と関連付けられている、第２のクライアントデバイスとメモリバンクの第２のセットとの間のアクセスを制御すること；および、第１のメモリアドレスまたは第２のメモリアドレスが、第１または第２のメモリ動作を実行するためにアクセスされているか否かに基づいて、第１のメモリ動作中または第２のメモリ動作中に、データバスの制御を第１のクライアントデバイスまたは第２のクライアントデバイスに提供すること。
【０００９】
本発明のさらなる特徴および利点、ならびに本発明の種々の実施形態の構造および動作は、添付の図面を参照して以下に詳細に記載される。本発明が、本明細書に記載される特定の実施形態に限定されないことに留意されたい。かかる実施形態は、例示目的のみで本明細書に示される。さらなる実施形態は、本明細書に含まれる教示に基づき、当業者に明らかとなるであろう。
【００１０】
本明細書に組み込まれ、本明細書の一部を成す添付の図面は、本発明の実施形態を例示し、さらに、発明を実施するための形態と共に、本発明の原理を説明し、当業者が本発明を作製および使用することを可能にするのに役立つ。
【図面の簡単な説明】
【００１１】
【図１】統合メモリアーキテクチャ（ＵＭＡ）を有するマルチクライアントコンピューティングシステムの一実施形態の図である。
【図２】メモリコントローラの一実施形態の図である。
【図３】分割されたメモリバンクを有するメモリデバイスの一実施形態の図である。
【図４】メモリスケジューラによって実施されるＣＰＵおよびＧＰＵ関連メモリ要求の例示的なインターリーブ配置の図である。
【図５】マルチクライアントコンピューティングシステム内のメモリデバイスにアクセスするための方法の一実施形態の図である。
【図６】本発明の実施形態が実施され得る、例示的なコンピュータシステムの図である。
【発明を実施するための形態】
【００１２】
以下の発明を実施するための形態は、本発明と一致する例示的な実施形態を示す、添付の図面を参照する。他の実施形態が可能であり、本発明の精神および範囲内で、実施形態が修正され得る。したがって、発明を実施するための形態は、本発明を制限するように意図されていない。むしろ、本発明の範囲は、添付の特許請求の範囲によって定義される。
【００１３】
以下に記載するように、本発明は、図に示されるソフトウェア、ハードウェア、ファームウェアおよび／またはエンティティの多くの異なる実施形態で実施され得ることが、当業者に明らかとなるであろう。したがって、本発明の実施形態の動作挙動は、本明細書に示される詳細の程度を考えると、実施形態の修正および変化が可能であるという理解のもとに記載される。
【００１４】
図１は、統合メモリアーキテクチャ（ＵＭＡ）を有するマルチクライアントコンピューティングシステム１００の一実施形態の図である。マルチクライアントコンピューティングシステム１００は、第１のコンピューティングデバイス１１０、第２のコンピューティングデバイス１２０、メモリコントローラ１３０およびメモリデバイス１４０を含む。第１および第２のコンピューティングデバイス１１０，１２０は、システムバス１５０を介して、メモリコントローラ１３０に通信可能に連結されている。また、メモリコントローラ１３０は、データバス１６０を介して、メモリデバイス１４０に通信可能に連結されている。
【００１５】
当業者は、ＵＭＡを有するマルチクライアントコンピューティングシステム１００が、当該システムに含まれるデバイスの抽象的な図を示すことを認識するであろう。例えば、当業者は、メモリデバイス１４０に関して、ＵＭＡが「シングルランク」構成として配置され得るとともに、メモリデバイス１４０が、１列のメモリデバイス（例えば、ＤＲＡＭデバイス）を表すことができることを認識するであろう。さらに、当業者は、メモリデバイス１４０に関して、ＵＭＡが「マルチランク」構成として配置され得るとともに、メモリデバイス１４０が、データバス１６０に取り付けられた複数の列のメモリデバイスを表すことができることを認識するであろう。シングルランクおよびマルチランク構成において、メモリコントローラ１３０は、メモリデバイスのメモリバンクへのアクセスを制御するように構成され得る。シングルランクおよびマルチランク構成の利点は、数ある中でも、コンピューティングデバイス１１０，１２０の間でメモリバンクを分割することの柔軟性が達成され得る点にある。
【００１６】
本明細書の説明に基づき、当業者は、マルチクライアントコンピューティングシステム１００が、３つ以上のコンピューティングデバイス、２つ以上のメモリコントローラ、２つ以上のメモリデバイスおよびそれらの組み合わせを含むことができることを認識するであろう。これらのマルチクライアントコンピューティングシステム１００の異なる構成は、本明細書に記載される実施形態の範囲および精神内にある。しかしながら、説明を簡単にするために、本明細書に含有される実施形態は、図１に示されるシステムアーキテクチャとの関連で説明される。
【００１７】
一実施形態において、コンピューティングデバイス１１０，１２０のそれぞれは、これに限定されるものではないが、例えば、中央処理装置（ＣＰＵ）、グラフィックスプロセッシングユニット（ＧＰＵ）、特定用途向け集積回路（ＡＳＩＣ）コントローラ、他の同様の種類の処理装置またはこれらの組み合わせであってもよい。コンピューティングデバイス１１０，１２０は、マルチクライアントコンピューティングシステム１００と関連付けられる命令を実行するように、かつ動作を実行するように構成されている。例えば、マルチクライアントコンピューティングシステム１００は、グラフィックをレンダリングし、表示するように構成され得る。マルチクライアントコンピューティングシステム１００は、ＣＰＵ（例えば、コンピューティングデバイス１１０）およびＧＰＵ（例えば、コンピューティングデバイス１２０）を含むことができ、ＧＰＵは、２次元および３次元グラフィックをレンダリングするように構成され得る。ＣＰＵは、レンダリングされたグラフィックの表示デバイス（図１に図示せず）上での表示を調整するように構成され得る。
【００１８】
コンピューティングデバイス１１０，１２０は、マルチクライアントコンピューティングシステム１００と関連付けられる命令、動作を実行する場合に、メモリコントローラ１３０を介して、メモリデバイス１４０に記憶された情報にアクセスすることができる。図２は、メモリコントローラ１３０の一実施形態の図である。メモリコントローラ１３０は、第１のメモリバンクアービタ２１００と、第２のメモリバンクアービタ２１０１と、メモリスケジューラ２２０とを含む。
【００１９】
一実施形態において、第１のメモリバンクアービタ２１００は、メモリデバイス（例えば、図１のメモリデバイス１４０）のメモリバンクの第１のセットに、要求をソートするように構成されている。同様の方法で、第２のメモリバンクアービタ２１０１は、メモリデバイス（例えば、図１のメモリデバイス１４０）のメモリバンクの第２のセットに、要求をソートするように構成されている。当業者によって理解されるように、第１および第２のメモリバンクアービタ２１００，２１０１は、コンピューティングデバイス（例えば、コンピューティングデバイス１１０，１２０）からのメモリ要求（例えば、読み書き動作）の優先順位を付けるように構成されている。コンピューティングデバイス１１０からのメモリアドレスのセットは、メモリバンクの第１のセットに割り当てられ、結果として、第１のメモリバンクアービタ２１００によって処理される。同様に、コンピューティングデバイス１２０からのメモリアドレスのセットは、メモリバンクの第２のセットに割り当てられ、結果として、第２のメモリバンクアービタ２１０１によって処理される。
【００２０】
図２を参照すると、メモリスケジューラ２２０は、第１および第２のメモリバンクアービタ２１００，２１０１からのソートされたメモリ要求を処理するように構成されている。一実施形態において、メモリスケジューラ２２０は、読み書き効率を最適化し、図１のデータバス１６０上の帯域幅を最大化する方法で、ソートされたメモリ要求をラウンド処理する。一実施形態において、データバス１６０は、所定のバス幅を有し、メモリデバイス１４０とコンピューティングデバイス１１０，１２０との間のデータの転送は、データバス１６０の全バス幅を使用する。
【００２１】
図２のメモリスケジューラ２２０は、同一メモリバンク内の異なる行のバックトゥバック要求を回避するために、メモリ要求をソート、並べ替えおよびクラスタリングすることによって、メモリデバイス１４０内のメモリバンクとのコンフリクトを最小限に抑えてもよい。一実施形態において、メモリスケジューラ２２０は、要求を作製するコンピューティングデバイスに基づき、ソートされたメモリ要求の処理の優先順位を付けることができる。例えば、メモリスケジューラ２２０は、ソートされたメモリ要求（例えば、コンピューティングデバイス１２０からのアドレス要求のセットに対応する）を処理する前に、第１のメモリバンクアービタ２１００からのソートされたメモリ要求（例えば、コンピューティングデバイス１１０からのアドレス要求のセットに対応する）を処理してもよく、逆もまた同様である。当業者によって理解されるように、メモリスケジューラ２２０の出力は、図１のデータバス１６０を介して、メモリデバイス１４０に読み書き要求を送信するために必要なアドレス、コマンドおよび制御信号を生成するように処理される。読み書きメモリ要求に対応するアドレス、コマンドおよび制御信号の生成は、当業者には既知である。
【００２２】
図１を参照すると、メモリデバイス１４０は、本発明の一実施形態に従ったダイナミックランダムアクセスメモリ（ＤＲＡＭ）デバイスである。メモリデバイス１４０は、メモリバンクの第１のセットと、メモリバンクの第２のセットとに分割される。メモリバンクの第１のセット内の１つ以上のメモリセルは、コンピューティングデバイス１１０の動作と関連付けられる第１の複数のメモリバッファに割り当てられる。同様に、メモリバンクの第２のセット内の１つ以上のメモリセルは、コンピューティングデバイス１２０の動作と関連付けられる第２の複数のメモリバッファに割り当てられる。
【００２３】
説明を簡単にするために、以下の解説では、メモリデバイス１４０が、メモリバンクの２つのセット、すなわちメモリバンクの第１のセットとメモリバンクの第２のセットとに分割されると仮定する。しかしながら、本明細書の説明に基づき、当業者は、メモリデバイス１４０が、メモリバンクの３つ以上のセット（例えば、メモリバンクの３つのセット、メモリバンクの４つのセット、メモリバンクの５つのセット等）に分割され、メモリバンクのセットのそれぞれが、特定のコンピューティングデバイスに割り当てられ得ることを認識するであろう。例えば、メモリデバイス１４０がメモリバンクの３つのセットに分割される場合、１つのメモリバンク（第１のメモリバンク）は、コンピューティングデバイス１１０に割り当てられ、１つのメモリバンク（第２のメモリバンク）は、コンピューティングデバイス１２０に割り当てられ、第３のメモリバンクは、第３のコンピューティングデバイス（図１のマルチクライアントコンピューティングシステム１００では図示せず）に割り当てられ得る。
【００２４】
図３は、メモリバンクの第１のセット３１０とメモリバンクの第２のセット３２０とを有するメモリデバイス１４０の一実施形態の図である。図３に示すように、メモリデバイス１４０は、８つのメモリバンクを有し、４つのメモリバンクは、メモリバンクの第１のセット３１０に割り当てられており（例えば、メモリバンク０〜３）、他の４つのメモリバンクは、メモリバンクの第２のセット３２０に割り当てられている（例えば、メモリバンク４〜７）。本明細書の説明に基づき、当業者は、メモリデバイス１４０が、８つよりも多いまたは少ないメモリバンク（例えば、４つ、あるいは１６個のメモリバンク）を有し得ることを認識するであろう。また、当業者は、メモリデバイス１４０のメモリバンクが、限定されることではないが例えば、６つのメモリバンクがメモリバンクの第１のセット３１０に割り当てられており、２つのメモリバンクがメモリバンクの第２のセット３２０に割り当てられるように、異なる配置に分割され得ることを認識するであろう。
【００２５】
メモリバンクの第１のセット３１０は、アドレスの下位セットに対応し、メモリバンクの第２のセット３２０は、アドレスの上位セットに対応する。例えば、メモリデバイス１４０が、８つのバンクを有する２ギガバイト（ＧＢ）メモリデバイスである場合に、０〜１ＧＢ目に対応するメモリアドレスは、メモリバンクの第１のセット３１０に割り当てられており、１〜２ＧＢ目に対応するメモリアドレスは、メモリバンクの第２のセット３２０に割り当てられている。本明細書の説明に基づき、当業者は、メモリデバイス１４０が、２ＧＢよりも小さいまたは大きいメモリ容量を有することができることを認識するであろう。メモリデバイス１４０におけるこれらの他のメモリ容量は、本明細書に記載される実施形態の精神および範囲内である。
【００２６】
メモリバンクの第１のセット３１０は、コンピューティングデバイス１１０の動作と関連付けられている。同様に、メモリバンクの第２のセット３２０は、コンピューティングデバイス３２０の動作と関連付けられている。例えば、当業者によって理解され得るように、メモリバッファは、典型的には、コンピューティングデバイス（例えば、コンピューティングデバイス１１０，１２０）によって実行される動作または処理の間でデータを移動させる際に使用される。
【００２７】
上記のように、コンピューティングデバイス１１０は、ＣＰＵであってもよく、メモリバンクの第１のセット３１０は、ＣＰＵコンピューティングデバイス１１０による動作の実行で使用されるメモリバッファに割り当てられる。遅れに敏感なＣＰＵ命令コードを実行するために必要とされるメモリバッファは、メモリバンクの第１のセット３１０内の１つ以上のメモリセルにマッピングされ得る。遅れに敏感なＣＰＵ命令コードをメモリバンクの第１のセット３１０にマッピングすることの利点は、数ある中でも、コンピューティングデバイス１１０，１２０の間で、メモリバンクコンテンションの問題が低減または回避され得る点にある。
【００２８】
コンピューティングデバイス１２０は、ＧＰＵであってもよく、メモリバンクの第２のセット３２０は、ＧＰＵコンピューティングデバイス１２０による動作の実行に使用されるメモリバッファに割り当てられる。グラフィック動作を実行するために必要とされるフレームメモリバッファは、メモリバンクの第２のセット３２０内の１つ以上のメモリセルにマッピングされ得る。メモリデバイス１４０の１つ以上のメモリ領域がＧＰＵ動作専用であることから、メモリバンクの第２のセット３２０の利点は、数ある中でも、コンピューティングデバイス１１０，１２０の間で、メモリバンクコンテンションの問題が低減または回避され得る点にある。
【００２９】
図２に関して上記のように、第１のメモリバンクアービタ２１００は、コンピューティングデバイス１１０によって割り当てられ、図３のメモリバンクの第１のセット３１０に向けられるアドレスを有することができる。コンピューティングデバイス１１０がＣＰＵである上記の実施例において、コンピューティングデバイス１１０に対するアービトレーションは、本発明の一実施形態に従って、遅れに敏感なＣＰＵ命令コードを効率的に実行するために、限定されることではないが例えば、予測ページオープンポリシーおよびアドレス先読み等の技術を使用して最適化され得る。
【００３０】
同様に、第２のメモリバンクアービタ２１０１は、コンピューティングデバイス１２０によって割り当てられ、図３のメモリバンクの第２のセット３２０に向けられるアドレスを有することができる。コンピューティングデバイス１２０がＧＰＵである上記の実施例において、コンピューティングデバイス１２０に対するスレッドは、本発明の一実施形態に従って、最大帯域幅に対して最適化され得る。
【００３１】
第１のメモリバンクアービタ２１００が、コンピューティングデバイス１１０，１２０からのメモリ要求に対して、アービトレーションのスレッドのそれぞれを一旦ソートすると、図２のメモリスケジューラ２２０は、ソートされたメモリ要求を処理する。コンピューティングデバイス１１０がＣＰＵであり、コンピューティングデバイス１２０がＧＰＵである上記の実施例に関して、スケジューラ２２０は、ＧＰＵ関連メモリ要求の前に、ＣＰＵ関連メモリ要求を処理することによって最適化され得る。本発明の一実施形態によると、一般的には、ＣＰＵ性能は、ＧＰＵ性能よりもメモリ遅延に敏感であるため、このプロセスが可能である。ここで、メモリスケジューラ２２０は、ＣＰＵ関連メモリ要求と関連付けられるデータ転送が、ＧＰＵ関連メモリ要求と関連付けられるデータ転送よりも優先されるように、コンピューティングデバイス１１０へのデータバス１６０の制御を提供する。
【００３２】
別の実施形態において、（例えば、図１のコンピューティングデバイス１２０からの）ＧＰＵ関連メモリ要求は、（例えば、コンピューティングデバイス１１０からの）ＣＰＵ関連メモリ要求の前および／または後にインターリーブされ得る。図４は、メモリスケジューラ２２０によって実施されるＣＰＵおよびＧＰＵ関連メモリ要求の例示的なインターリーブ配置４００の図である。インターリーブ配置４００において、ＧＰＵ関連メモリ要求（例えば、メモリ要求シーケンス４１０）が処理されている一方で、ＣＰＵ関連メモリ要求（例えば、メモリ要求シーケンス４２０）が送信された場合には、メモリスケジューラ２２０は、データバス１６０上のＣＰＵ関連メモリ要求に関係するデータ転送を選択して、ＧＰＵ関連メモリ要求に関係するデータ転送を中断するように構成され得る。メモリスケジューラ２２０は、ＣＰＵ関連メモリ要求が発行された直後に、データバス１６０上でＧＰＵ関連メモリ要求に関係するデータ転送を継続するように構成され得る。ＣＰＵおよびＧＰＵ関連メモリ要求の両方の得られたインターリーブ配置は、図４のインターリーブされたシーケンス４３０に示される。
【００３３】
図４のインターリーブされたシーケンス４３０を参照すると、これは、ＣＰＵ関連メモリ要求がＧＰＵ関連メモリ要求ストリームにインターリーブされるという意味において、ＣＰＵおよびＧＰＵ関連メモリ要求がどのように最適化され得るのかを表す一実施例である。結果として、ＣＰＵ関連メモリ要求は、最小の待ち時間で処理され、ＧＰＵ関連メモリ要求ストリームは、ＣＰＵ関連メモリ要求を提供するのに必要な最小の時間、中断される。ＣＰＵおよびＧＰＵ関連メモリ要求ストリームは、相互にコンフリクトしないと保証されているため、メモリバンクコンフリクトによるオーバーヘッドはない。
【００３４】
コンピューティングデバイス１１０がＣＰＵであり、コンピューティングデバイス１２０がＧＰＵである実施例に関して、コンピューティングデバイス１１０と関連付けられる全てのＣＰＵ動作に対するメモリバッファは、メモリバンクの第１のセット３１０内の１つ以上のメモリセルに割り当てられ得る。同様に、コンピューティングデバイス１２０と関連付けられる全てのＧＰＵ動作に対するメモリバッファは、メモリバンクの第２のセット３２０内の１つ以上のメモリセルに割り当てられ得る。
【００３５】
あるいは、ＣＰＵ動作に対するメモリバッファと、ＧＰＵ動作に対するメモリバッファとは、本発明の一実施形態に従って、メモリバンクの第１および第２のセット３１０，３２０のそれぞれにおける１つ以上のメモリセルに割り当てられ得る。例えば、遅れに敏感なＣＰＵ命令コードに対するメモリバッファは、メモリバンクの第１のセット３１０内の１つ以上のメモリセルに割り当てられ、遅れに敏感ではないＣＰＵ動作に対するメモリバッファは、メモリバンクの第２のセット３２０内の１つ以上のメモリセルに割り当てられ得る。
【００３６】
コンピューティングデバイス（例えば、コンピューティングデバイス１１０およびコンピューティングデバイス１２０）間で共有されるデータに対して、共有されたメモリアドレスは、メモリバンクの第１のセット３１０およびメモリバンクの第２のセット３２０の何れか一方における１つ以上のメモリセルに割り当てられ得る。この場合、両方のコンピューティングデバイスからのメモリ要求は、単一メモリバンクアービタ（例えば、第１のメモリバンクアービタ２１００または第２のメモリバンクアービタ２１０１）内にアービトレーションされる。単一メモリバンクアービタによるアービトレーションは、コンピューティングデバイスの各々に対して実施される独立したアービトレーションと比較して、パフォーマンスインパクトをもたらし得る。一方で、共有されたデータの全メモリトラフィックにおける割合が低い限り、共有されたデータを割り当てることは、コンピューティングデバイスの各々に対する別々のメモリバンクアービタ（例えば、コンピューティングデバイス１１０と関連付けられる第１のメモリバンクアービタ２１００と、コンピューティングデバイス１２０と関連付けられる第２のメモリバンクアービタ２１０１）によって達成される全体の性能向上の低減を抑制することができる。
【００３７】
図１のＵＭＡを有するマルチクライアントコンピューティングシステム１００の上記の実施形態を考慮して、マルチクライアントコンピューティングシステム１００内のクライアントデバイスのそれぞれに割り当てられる専用のメモリ分割（例えば、メモリバンクの第１および第２のセット３１０，３２０）によって、多くの利点が実現される。例えば、メモリデバイス１４０のメモリバンクが分離され、コンピューティングデバイス１１０，１２０に対する別々のメモリバンクが割り当てられ得る。このようにして、バンクページポリシーの集中的なチューニングは、コンピューティングデバイス１１０，１２０のそれぞれの必要性を満たすために達成され得る。これは、結果的に、１つのメモリ要求当たりのメモリバンクコンフリクトをより少なくする。そして、このことは、マルチクライアントコンピューティングシステム１００における性能向上および／または節電をもたらし得る。
【００３８】
別の実施例において、コンピューティングデバイス１１０，１２０の間のバンクコンテンションが低減されるか、全くないことの結果として、待ち時間（レイテンシ）が、よりよく予測され得る。別のコンピューティングデバイスによって開かれることが求められるメモリバンクを早期に閉じてしまうことによる、マルチクライアントコンピューティングシステム１００内の有意な帯域幅性能のペナルティを受けることなく、この強化された予測を達成し得る。つまり、マルチクライアントコンピューティングシステムは、典型的には、全システム帯域幅を使って、優先度が高く待ち時間の短いコンピューティングデバイス（例えば、ＣＰＵ）を提供するために、優先度の低いコンピューティングデバイス（例えば、ＧＰＵ）のメモリバンクを閉じる。上記の実施形態において、コンピューティングデバイス１１０に対するメモリバッファに割り当てられるメモリバンクは、コンピューティングデバイス１２０に対するメモリバッファに割り当てられるメモリバンクを干渉しない。
【００３９】
さらに別の実施例において、マルチクライアントコンピューティングシステムの上記の実施形態の別の利点は、スケーラビリティにある。マルチクライアントコンピューティングシステム１００内のコンピューティングデバイスの数と、メモリデバイス１４０内のメモリバンクの数とが増加するにつれて、マルチクライアントコンピューティングシステム１００は、単純にスケーリングされ得る。スケーリングは、メモリデバイス１４０を、コンピューティングデバイスのそれぞれに割り当てられる１つ以上のメモリバンクのセットに適切に分割することによって達成され得る。例えば、当業者によって理解されるように、ＤＲＡＭメモリバンクの増大は、４つのメモリバンクから、８つのメモリバンク、１６個のメモリバンクへと増大し続ける。これらのメモリバンクは、クライアントデバイスの数が増加するにつれて、適切に分割され、マルチクライアントコンピューティングシステム１００内のコンピューティングデバイスのそれぞれに割り当てられ得る。
【００４０】
図５は、マルチクライアントコンピューティングシステム内のメモリデバイスにアクセスするための方法５００の一実施形態の図である。方法５００は、限定されることではないが例えば、図１のマルチクライアントコンピューティングシステム１００を使用して行うことができる。
【００４１】
ステップ５１０において、メモリデバイスの１つ以上のメモリバンクは、メモリバンクの第１のセットと、メモリバンクの第２のセットとに分割される。一実施形態において、メモリデバイスは、上半分の複数のメモリバンク（例えば、図３のメモリバンク０〜３）および下半分の複数のメモリバンク（例えば、図３のメモリバンク４〜７）を有するＤＲＡＭデバイスである。メモリデバイスの１つ以上のバンクの分割は、メモリバンクの第１のセットをＤＲＡＭデバイス内の上半分の複数のメモリバンクと関連付ける（例えば、マッピングする）こと、およびメモリバンクの第２のセットをＤＲＡＭデバイス内のメモリバンクの下半分と関連付ける（例えば、マッピングする）ことを含むことができる。
【００４２】
ステップ５２０において、メモリバンクの第１のセット内の第１の複数のメモリセルは、第１のクライアントデバイス（例えば、図１のコンピューティングデバイス１１０）と関連付けられるメモリ動作に割り当てられる。第１の複数のメモリセルの割り当ては、メモリバンクの第１のセット内の１つ以上の物理アドレス空間を、第１のクライアントデバイスと関連付けられるそれぞれのメモリ動作にマッピングすることを含む（例えば、図３のメモリバンクの第１のセット３１０）。例えば、メモリデバイスが、８つのメモリバンクを有する２ＧＢのＤＲＡＭデバイスである場合には、４つのメモリバンクが、メモリバンクの第１のセットに割り当てられ、０〜１ＧＢ目に対応するメモリアドレスが、当該４つのメモリバンクと関連付けられ得る（例えば、マッピングされ得る）。
【００４３】
ステップ５３０において、メモリバンクの第２のセット内の第２の複数のメモリセルは、第２のクライアントデバイス（例えば、図１のコンピューティングデバイス１２０）と関連付けられるメモリ動作に割り当てられる。第２の複数のメモリセルの割り当ては、メモリバンクの第２のセット内の１つ以上の物理アドレス空間を、第２のクライアントデバイスと関連付けられるそれぞれのメモリ動作にマッピングすることを含む（例えば、図３のメモリバンクの第２のセット３２０）。例えば、メモリデバイスが８つのメモリバンクを有する２ＧＢのＤＲＡＭデバイスである実施例について、他の４つのメモリバンクが、メモリバンクの第２のセットに割り当てられ得る（例えば、マッピングされ得る）。ここで、１〜２ＧＢ目に対応するメモリアドレスは、前記他の４つのメモリバンクと関連付けられ得る（例えば、マッピングされ得る）。
【００４４】
ステップ５４０において、メモリバンクの第１のセットは、第１のメモリ動作が第１のクライアントデバイスによって要求される際にアクセスされ、メモリバンクの第１のセットからの第１のメモリアドレスは、第１のメモリ動作と関連付けられる。メモリバンクの第１のセットは、第１および第２のクライアントデバイスをメモリデバイスに連結するデータバス（例えば、図１のデータバス１６０）を介して、アクセスされ得る。データバスは、所定のバス幅を有し、第１のクライアントデバイスまたは第２のクライアントデバイスとメモリデバイスとの間のデータ転送は、データバスの全バス幅を使用して行われる。
【００４５】
ステップ５５０において、メモリバンクの第２のセットは、第２のメモリ動作が第２のクライアントデバイスによって要求される際にアクセスされ、メモリバンクの第２のセットからの第２のメモリアドレスは、第２のメモリ動作と関連付けられる。ステップ５４０と同様に、メモリバンクの第２のセットは、データバスを介してアクセスされ得る。
【００４６】
ステップ５６０において、第１のメモリアドレスまたは第２のメモリアドレスが、第１または第２のメモリ動作を実行するためにアクセスされているか否かに基づき、第１のメモリ動作または第２のメモリ動作中のそれぞれにおいて、データバスの制御が第１のクライアントデバイスまたは第２のクライアントデバイスに提供される。第１のメモリ動作の要求が第２のメモリ動作の要求の後に生じる場合、および第１のメモリアドレスが第１のメモリ動作を実行するためにアクセスされる必要がある場合には、第１のクライアントデバイスへのデータバスの制御を選択して、データバスの制御が第２のクライアントデバイスから移される。第２のクライアントデバイスへのデータバスの制御は、本発明の一実施形態に従って、第１のメモリ動作が完了した後に、再構築され得る。
【００４７】
本発明の種々の態様は、ソフトウェア、ファームウェア、ハードウェアまたはこれらの組み合わせで実施されてもよい。図６は、本発明の実施形態またはその部分が、コンピュータ可読コードとして実施され得る、例示的なコンピュータシステム６００の図である。例えば、図５のフローチャート５００によって示される方法は、システム６００で実施され得る。本発明の種々の実施形態は、この例示的なコンピュータシステム６００の観点から記載される。本明細書を読んだ後、他のコンピュータシステムおよび／またはコンピュータアーキテクチャを使用して、本発明の実施形態をどのように実施するか、当業者には明らかとなるであろう。
【００４８】
本発明の種々の実施形態のシミュレーション、合成および／または製造が、部分的に、汎用プログラミング言語（ＣまたはＣ＋＋等）、例えば、Ｖｅｒｉｌｏｇ  ＨＤＬ、ＶＨＤＬ、Ａｌｔｅｒａ  ＨＤＬ（ＡＨＤＬ）等のハードウェア記述言語（ＨＤＬ）または他の利用可能なプログラミングおよび／もしくは図式キャプチャツール（回路図キャプチャツール等）を含むコンピュータ可読コードを使用して達成されてもよいことに留意されたい。このコンピュータ可読コードは、半導体、磁気ディスク、光ディスク（ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ等）を含む、任意の既知のコンピュータ使用可能な媒体中に配置され得る。したがって、コンピュータ可読コードは、インターネットを含む通信ネットワークを通じて伝送され得る。上記のシステムおよび技術によって達成される機能および／または提供される構造が、プログラムコードに統合され、かつ集積回路の生成の一部として、ハードウェアに変換され得るコア（ＧＰＵコア等）で表され得ることを理解されたい。
【００４９】
コンピュータシステム６００は、プロセッサ６０４等の１つ以上のプロセッサを含む。プロセッサ６０４は、専用または汎用プロセッサであってもよい。プロセッサ６０４は、通信インフラストラクチャ６０６（例えば、バスまたはネットワーク）に接続される。
【００５０】
コンピュータシステム６００は、メインメモリ６０８、好ましくはランダムアクセスメモリ（ＲＡＭ）を含み、あるいは二次メモリ６１０を含んでもよい。二次メモリ６１０は、例えば、ハードディスクドライブ６１２、リムーバブル記憶ドライブ６１４および／またはメモリスティックを含むことができる。リムーバブル記憶ドライブ６１４は、フロッピー（登録商標）ディスクドライブ、磁気テープドライブ、光ディスクドライブ、フラッシュメモリ等を含むことができる。リムーバブル記憶ドライブ６１４は、よく知られている方法で、リムーバブル記憶装置６１８との間で読み出しおよび／または書き込みを行う。リムーバブル記憶装置６１８は、フロッピー（登録商標）ディスク、磁気テープ、光ディスク等を含むことができ、これらは、リムーバブル記憶ドライブ６１４によって読み出され、および／または書き込まれる。当業者には理解されるように、リムーバブル記憶装置６１８は、コンピュータソフトウェアおよび／またはデータを内部に記憶した、コンピュータ使用可能な記憶媒体を含む。
【００５１】
代替の実施において、二次メモリ６１０は、コンピュータプログラムまたは他の命令がコンピュータシステム６００にロードされることを可能にするための、他の同様のデバイスを含むことができる。かかるデバイスとしては、例えば、リムーバブル記憶装置６２２およびインターフェース６２０が挙げられ得る。かかるデバイスの実施例としては、プログラムカートリッジおよびカートリッジインターフェース（ビデオゲームデバイスで見られるようなもの等）、リムーバブルメモリチップ（例えば、ＥＰＲＯＭまたはＰＲＯＭ）および関連ソケット、ならびにソフトウェアおよびデータが、リムーバブル記憶装置６２２からコンピュータシステム６００に転送されることを可能にする、他のリムーバブル記憶装置６２２およびインターフェース６２０が挙げられ得る。
【００５２】
コンピュータシステム６００は、通信インターフェース６２４を含むことができる。通信インターフェース６２４は、ソフトウェアおよびデータが、コンピュータシステム６００と外部デバイスとの間で転送されることを可能にする。通信インターフェース６２４は、モデム、ネットワークインターフェース（イーサネット（登録商標）カード等）、通信ポート、ＰＣＭＣＩＡスロットおよびカード等を含むことができる。通信インターフェース６２４を介して転送されるソフトウェアおよびデータは、通信インターフェース６２４によって受信されることが可能な電子、電磁、光または他の信号等の信号の形態である。これらの信号は、通信路６２６を介して、通信インターフェース６２４に提供される。通信路６２６は、信号を伝達し、ワイヤもしくはケーブル、光ファイバ、電話回線、携帯電話リンク、ＲＦリンクまたは他の通信チャネルを使用して実施され得る。
【００５３】
本文書において、「コンピュータプログラム媒体」および「コンピュータ使用可能な媒体」という用語は、概して、リムーバブル記憶装置６１８、リムーバブル記憶装置６２２およびハードディスクドライブ６１２内にインストールされるハードディスク等の媒体を指すために使用される。コンピュータプログラム媒体およびコンピュータ使用可能な媒体は、メインメモリ６０８および二次メモリ６１０等のメモリ（例えばメモリ半導体（例えば、ＤＲＡＭ等）であってもよい）を指し得る。これらのコンピュータプログラム製品は、コンピュータシステム６００にソフトウェアを提供する。
【００５４】
コンピュータプログラム（コンピュータ制御論理とも呼ばれる）は、メインメモリ６０８および／または二次メモリ６１０に記憶されている。コンピュータプログラムは、通信インターフェース６２４を介して受信されてもよい。かかるコンピュータプログラムは、実行されると、コンピュータシステム６００が本明細書に考察されるような本発明の実施形態を実施することを可能にする。具体的に説明すると、コンピュータプログラムは、実行されると、プロセッサ６０４が、上記の図５のフローチャート５００によって示される方法におけるステップ等の、本発明の実施形態のプロセスを実施することを可能にする。したがって、かかるコンピュータプログラムは、コンピュータシステム６００のコントローラを表す。本発明の実施形態がソフトウェアを使用して実施される場合には、ソフトウェアは、コンピュータプログラム製品に記憶され、リムーバブル記憶ドライブ６１４、インターフェース６２０、ハードドライブ６１２または通信インターフェース６２４を使用して、コンピュータシステム６００にロードされ得る。
【００５５】
本発明の実施形態は、任意のコンピュータ使用可能な媒体に記憶されるソフトウェアを含むコンピュータプログラム製品に関する。かかるソフトウェアは、１つ以上のデータ処理デバイスで実行されると、当該データ処理デバイスを本明細書に記載されるように動作させる。本発明の実施形態は、現時点で既知または将来の媒体であって、任意のコンピュータで使用可能または可読な媒体を採用する。コンピュータ使用可能な媒体の実施例としては、一次記憶デバイス（例えば、任意の種類のランダムアクセスメモリ）、二次記憶デバイス（例えば、ハードドライブ、フロッピー（登録商標）ディスク、ＣＤ  ＲＯＭ、ＺＩＰディスク、テープ、磁気記憶デバイス、光記憶デバイス、ＭＥＭＳ、ナノ技術記憶デバイス等）ならびに通信媒体（例えば、有線および無線通信ネットワーク、ローカルエリアネットワーク、ワイドエリアネットワーク、イントラネット等）が挙げられるが、これらに限定されない。
【００５６】
本発明の種々の実施形態が上記に記載されてきたが、それらは、制限目的ではなく、例示目的のみで示されていることを理解されたい。添付の特許請求の範囲によって定義されるような、本発明の精神および範囲から逸脱することなく、その中で形態および詳細に種々の変更が行われ得ることは、当業者によって理解されるであろう。本発明が、これらの実施例に限定されないことを理解されたい。本発明は、本明細書に記載されるように動作する任意の要素に適用できる。したがって、本発明の広さおよび範囲は、上記の例示的な実施形態のいずれによっても制限されるべきではなく、以下の特許請求の範囲およびそれらの均等物に従ってのみ定義されるべきである。
【図１】
2013545201.tif 000003
【図２】
2013545201.tif 000004
【図３】
2013545201.tif 000005
【図４】
2013545201.tif 000006
【図５】
2013545201.tif 000007
【図６】
2013545201.tif 000008
【国際調査報告】
2013545201.tif 000009
2013545201.tif 000010