JP2013545201A - マルチクライアントコンピューティングシステムに対するメモリデバイスの分割 - Google Patents
マルチクライアントコンピューティングシステムに対するメモリデバイスの分割 Download PDFInfo
- Publication number
- JP2013545201A JP2013545201A JP2013542099A JP2013542099A JP2013545201A JP 2013545201 A JP2013545201 A JP 2013545201A JP 2013542099 A JP2013542099 A JP 2013542099A JP 2013542099 A JP2013542099 A JP 2013542099A JP 2013545201 A JP2013545201 A JP 2013545201A
- Authority
- JP
- Japan
- Prior art keywords
- memory
- client device
- banks
- data bus
- memory banks
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1605—Handling requests for interconnection or transfer for access to memory bus based on arbitration
- G06F13/1647—Handling requests for interconnection or transfer for access to memory bus based on arbitration with interleaved bank access
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0646—Configuration or reconfiguration
- G06F12/0653—Configuration or reconfiguration with centralised address assignment
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1605—Handling requests for interconnection or transfer for access to memory bus based on arbitration
- G06F13/161—Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement
- G06F13/1626—Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement by reordering requests
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
Abstract
メモリデバイスにアクセスするための方法、コンピュータプログラム製品およびシステムを提供する。例えば、方法は、メモリデバイスの1つ以上のメモリバンクを、メモリバンクの第1および第2のセットに分割するステップを含むことができる。方法は、メモリバンクの第1のセット内の第1の複数のメモリセルを、第1のクライアントデバイスの第1のメモリ動作に割り当て、メモリバンクの第2セット内の第2の複数のメモリセルを、第2のクライアントデバイスの第2のメモリ動作に割り当てることができる。このメモリ割り当ては、第1および第2のメモリ動作が、第1および第2のクライアントデバイスのそれぞれによって要求される場合に、メモリバンクの第1および第2のセットへのアクセスを可能にすることができる。さらに、第1のクライアントデバイスまたは第2のクライアントデバイスと、メモリデバイスとの間のデータバスへのアクセスは、第1のメモリアドレスまたは第2のメモリアドレスが、第1または第2のメモリ動作を実行するためにアクセスされているか否かに基づき、制御され得る。
【選択図】図1
【選択図】図1
Description
本発明の実施形態は、概して、マルチクライアントコンピューティングシステムに対するメモリデバイスの分割に関する。
多くのコンピューティングシステムは、処理速度および処理量の増加が要求されるため、中央処理装置(CPU)、グラフィックスプロセッシングユニット(GPU)またはそれらの組み合わせ等の複数のクライアントデバイス(本明細書において「コンピューティングデバイス」とも称される)を採用する。複数のクライアントデバイス(本明細書において「マルチクライアントコンピューティングシステム」とも称される)および統合メモリアーキテクチャ(UMA)を有するコンピュータシステムにおいて、クライアントデバイスのそれぞれは、UMA中の1つ以上のメモリデバイスへのアクセスを共有する。このアクセスは、メモリコントローラからメモリデバイスのそれぞれに経由されるデータバスや、メモリコントローラから複数のクライアントデバイスに経由される共通システムバスを介して行われ得る。
マルチクライアントコンピューティングシステムに対して、UMAは、典型的には、代替メモリアーキテクチャと対比して、より低いシステム費用および電力をもたらす。費用は、メモリチップ(例えば、ダイナミックランダムアクセスメモリ(DRAM)デバイス)がより少ないために、またはコンピューティングデバイスおよびメモリチップに接続する入力/出力(I/O)インターフェースの数がより少ないために、低減される。これらの要因はまた、メモリチップおよびI/Oインターフェースと関連付けられる電力オーバーヘッドが低減されるために、UMA用の電力の低減をもたらす。加えて、メモリインターフェース間の電力を消費するデータコピー動作が、UMAでは排除される一方で、他のメモリアーキテクチャでは、これらの電力を消費する動作を必要とする場合がある。
しかしながら、メモリデバイスのリカバリタイムに関する非効率性の原因が存在する。この場合、このリカバリタイムは、UMAを有するマルチクライアントコンピューティングシステムにおいて増加する可能性がある。リカバリタイム期間は、1つ以上のクライアントデバイスが同一のメモリデバイスのメモリバンクから連続的にデータ転送を要求するときに生じる(本明細書において「メモリバンクコンテンション」とも称される)。リカバリタイム期間は、メモリデバイスへの第1のアクセスと、すぐ後の第2のアクセスとの間における、メモリデバイスによって示される遅延時間を指す。つまり、メモリデバイスがデータにアクセスする一方で、リカバリタイム期間中にデータまたはシステムバス上に転送され得るデータは存在せず、したがって、マルチクライアントコンピューティングシステムにおける非効率性をもたらす。さらに、マルチクライアントコンピューティングシステムでは、時間が経つにつれて処理速度が増加するため、一般的なメモリデバイスに対するリカバリタイム期間は、ペースを保たず、メモリ性能ギャップのさらなる増加をもたらす。
したがって、マルチクライアントコンピューティングシステムにおけるメモリバンクコンテンションに関する非効率性を低減または排除する方法およびシステムが必要とされる。
本発明の実施形態は、複数のクライアントデバイスを有するコンピュータシステムのメモリデバイスにアクセスするための方法を含む。方法は、以下のステップを含むことができる。メモリデバイスの1つ以上のメモリバンクを、メモリバンクの第1のセットと、メモリバンクの第2のセットとに分割するステップ;メモリバンクの第1のセット内の第1の複数のメモリセルを、第1のクライアントデバイスと関連付けられる第1のメモリ動作に割り当てるステップ;メモリバンクの第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のセットとに分割することを可能にする第1のコンピュータ可読プログラムコード;プロセッサが、メモリバンクの第1のセット内の第1の複数のメモリセルを、第1のクライアントデバイスと関連付けられる第1のメモリ動作に割り当てることを可能にする第2のコンピュータ可読プログラムコード;プロセッサが、メモリバンクの第2のセット内の第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のコンピュータ可読プログラムコード。
本発明の実施形態は、コンピュータシステムを含む。コンピュータシステムは、第1のクライアントデバイス、第2のクライアントデバイス、メモリデバイスおよびメモリコントローラを含むことができる。メモリデバイスは、メモリバンクの第1のセットと、メモリバンクの第2のセットとに分割された、1つ以上のメモリバンクを含むことができる。メモリバンクの第1のセット内の第1の複数のメモリセルは、第1のクライアントデバイスと関連付けられる第1のメモリ動作に割り当てられ得る。同様に、メモリバンクの第2のセット内の第2の複数のメモリセルは、第2のクライアントデバイスと関連付けられる第2のメモリ動作に割り当てられ得る。さらに、メモリコントローラは、以下の機能を実施するように構成され得る:第1のメモリ動作が第1のクライアントデバイスによって要求される場合に、第1および第2のクライアントデバイスをメモリデバイスに連結するデータバスを介して、第1のクライアントデバイスとメモリバンクの第1のセットとの間のアクセスを制御することであって、メモリバンクの第1のセットからの第1のメモリアドレスは、第1のメモリ動作と関連付けられている、第1のクライアントデバイスとメモリバンクの第1のセットとの間のアクセスを制御すること;第2のメモリ動作が第2のクライアントデバイスによって要求される場合に、データバスを介して、第2のクライアントデバイスとメモリバンクの第2のセットとの間のアクセスを制御することであって、メモリバンクの第2のセットからの第2のメモリアドレスは、第2のメモリ動作と関連付けられている、第2のクライアントデバイスとメモリバンクの第2のセットとの間のアクセスを制御すること;および、第1のメモリアドレスまたは第2のメモリアドレスが、第1または第2のメモリ動作を実行するためにアクセスされているか否かに基づいて、第1のメモリ動作中または第2のメモリ動作中に、データバスの制御を第1のクライアントデバイスまたは第2のクライアントデバイスに提供すること。
本発明のさらなる特徴および利点、ならびに本発明の種々の実施形態の構造および動作は、添付の図面を参照して以下に詳細に記載される。本発明が、本明細書に記載される特定の実施形態に限定されないことに留意されたい。かかる実施形態は、例示目的のみで本明細書に示される。さらなる実施形態は、本明細書に含まれる教示に基づき、当業者に明らかとなるであろう。
本明細書に組み込まれ、本明細書の一部を成す添付の図面は、本発明の実施形態を例示し、さらに、発明を実施するための形態と共に、本発明の原理を説明し、当業者が本発明を作製および使用することを可能にするのに役立つ。
以下の発明を実施するための形態は、本発明と一致する例示的な実施形態を示す、添付の図面を参照する。他の実施形態が可能であり、本発明の精神および範囲内で、実施形態が修正され得る。したがって、発明を実施するための形態は、本発明を制限するように意図されていない。むしろ、本発明の範囲は、添付の特許請求の範囲によって定義される。
以下に記載するように、本発明は、図に示されるソフトウェア、ハードウェア、ファームウェアおよび/またはエンティティの多くの異なる実施形態で実施され得ることが、当業者に明らかとなるであろう。したがって、本発明の実施形態の動作挙動は、本明細書に示される詳細の程度を考えると、実施形態の修正および変化が可能であるという理解のもとに記載される。
図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++等)、例えば、Verilog HDL、VHDL、Altera HDL(AHDL)等のハードウェア記述言語(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つ以上のデータ処理デバイスで実行されると、当該データ処理デバイスを本明細書に記載されるように動作させる。本発明の実施形態は、現時点で既知または将来の媒体であって、任意のコンピュータで使用可能または可読な媒体を採用する。コンピュータ使用可能な媒体の実施例としては、一次記憶デバイス(例えば、任意の種類のランダムアクセスメモリ)、二次記憶デバイス(例えば、ハードドライブ、フロッピー(登録商標)ディスク、CD ROM、ZIPディスク、テープ、磁気記憶デバイス、光記憶デバイス、MEMS、ナノ技術記憶デバイス等)ならびに通信媒体(例えば、有線および無線通信ネットワーク、ローカルエリアネットワーク、ワイドエリアネットワーク、イントラネット等)が挙げられるが、これらに限定されない。
本発明の種々の実施形態が上記に記載されてきたが、それらは、制限目的ではなく、例示目的のみで示されていることを理解されたい。添付の特許請求の範囲によって定義されるような、本発明の精神および範囲から逸脱することなく、その中で形態および詳細に種々の変更が行われ得ることは、当業者によって理解されるであろう。本発明が、これらの実施例に限定されないことを理解されたい。本発明は、本明細書に記載されるように動作する任意の要素に適用できる。したがって、本発明の広さおよび範囲は、上記の例示的な実施形態のいずれによっても制限されるべきではなく、以下の特許請求の範囲およびそれらの均等物に従ってのみ定義されるべきである。
Claims (28)
- マルチクライアントコンピューティングシステムのメモリデバイスにアクセスするための方法であって、
前記メモリデバイスの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に記載のコンピューティングシステム。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/958,748 | 2010-12-02 | ||
US12/958,748 US20120144104A1 (en) | 2010-12-02 | 2010-12-02 | Partitioning of Memory Device for Multi-Client Computing System |
PCT/US2011/062385 WO2012074998A1 (en) | 2010-12-02 | 2011-11-29 | Partitioning of memory device for multi-client computing system |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2013545201A true JP2013545201A (ja) | 2013-12-19 |
Family
ID=45418776
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2013542099A Pending JP2013545201A (ja) | 2010-12-02 | 2011-11-29 | マルチクライアントコンピューティングシステムに対するメモリデバイスの分割 |
Country Status (6)
Country | Link |
---|---|
US (1) | US20120144104A1 (ja) |
EP (1) | EP2646925A1 (ja) |
JP (1) | JP2013545201A (ja) |
KR (1) | KR20140071270A (ja) |
CN (1) | CN103229157A (ja) |
WO (1) | WO2012074998A1 (ja) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9558247B2 (en) * | 2010-08-31 | 2017-01-31 | Samsung Electronics Co., Ltd. | Storage device and stream filtering method thereof |
WO2013178245A1 (en) * | 2012-05-29 | 2013-12-05 | Qatar Foundation | A graphics processing unit controller, host system, and methods |
US9563562B2 (en) | 2012-11-27 | 2017-02-07 | Nvidia Corporation | Page crossing prefetches |
US9639471B2 (en) * | 2012-11-27 | 2017-05-02 | Nvidia Corporation | Prefetching according to attributes of access requests |
US9262328B2 (en) | 2012-11-27 | 2016-02-16 | Nvidia Corporation | Using cache hit information to manage prefetches |
US9811453B1 (en) * | 2013-07-31 | 2017-11-07 | Juniper Networks, Inc. | Methods and apparatus for a scheduler for memory access |
CN104636275B (zh) * | 2014-12-30 | 2018-02-23 | 北京兆易创新科技股份有限公司 | 一种mcu芯片的信息保护方法和装置 |
US10996959B2 (en) * | 2015-01-08 | 2021-05-04 | Technion Research And Development Foundation Ltd. | Hybrid processor |
CN106919516B (zh) * | 2015-12-24 | 2020-06-16 | 辰芯科技有限公司 | Ddr地址映射系统和方法 |
US11803471B2 (en) | 2021-08-23 | 2023-10-31 | Apple Inc. | Scalable system on a chip |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6665777B2 (en) * | 2000-07-26 | 2003-12-16 | Tns Holdings, Inc. | Method, apparatus, network, and kit for multiple block sequential memory management |
US6918019B2 (en) * | 2001-10-01 | 2005-07-12 | Britestream Networks, Inc. | Network and networking system for small discontiguous accesses to high-density memory devices |
US7380085B2 (en) * | 2001-11-14 | 2008-05-27 | Intel Corporation | Memory adapted to provide dedicated and or shared memory to multiple processors and method therefor |
JP3950831B2 (ja) * | 2003-09-16 | 2007-08-01 | エヌイーシーコンピュータテクノ株式会社 | メモリインタリーブ方式 |
JP4477928B2 (ja) * | 2004-04-06 | 2010-06-09 | 株式会社エヌ・ティ・ティ・ドコモ | メモリマッピング制御装置、情報記憶制御装置、データ移行方法及びデータ移行プログラム |
KR100634566B1 (ko) * | 2005-10-06 | 2006-10-16 | 엠텍비젼 주식회사 | 공유 메모리 제어 방법 및 공유 메모리 동작 제어를수행하는 사용자 단말기 |
KR20090092371A (ko) * | 2008-02-27 | 2009-09-01 | 삼성전자주식회사 | 래치타입 메모리 셀들로 이루어진 공유 메모리 영역을 갖는멀티포트 반도체 메모리 장치 및 그를 채용한 멀티프로세서 시스템과 멀티포트 반도체 메모리 장치의구동방법 |
KR20100032504A (ko) * | 2008-09-18 | 2010-03-26 | 삼성전자주식회사 | 공유 버스를 갖는 불휘발성 메모리와 멀티포트 반도체 메모리 장치를 채용한 멀티 프로세서 시스템 |
-
2010
- 2010-12-02 US US12/958,748 patent/US20120144104A1/en not_active Abandoned
-
2011
- 2011-11-29 WO PCT/US2011/062385 patent/WO2012074998A1/en active Application Filing
- 2011-11-29 CN CN2011800569835A patent/CN103229157A/zh active Pending
- 2011-11-29 KR KR1020137013681A patent/KR20140071270A/ko not_active Application Discontinuation
- 2011-11-29 EP EP11802207.8A patent/EP2646925A1/en not_active Withdrawn
- 2011-11-29 JP JP2013542099A patent/JP2013545201A/ja active Pending
Also Published As
Publication number | Publication date |
---|---|
KR20140071270A (ko) | 2014-06-11 |
EP2646925A1 (en) | 2013-10-09 |
US20120144104A1 (en) | 2012-06-07 |
CN103229157A (zh) | 2013-07-31 |
WO2012074998A1 (en) | 2012-06-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2013545201A (ja) | マルチクライアントコンピューティングシステムに対するメモリデバイスの分割 | |
US10795837B2 (en) | Allocation of memory buffers in computing system with multiple memory channels | |
US10824341B2 (en) | Flash-based accelerator and computing device including the same | |
EP3149595B1 (en) | Systems and methods for segmenting data structures in a memory system | |
JP6097444B2 (ja) | メモリシステムの温度情報に基づくメモリシステム管理のためのシステム及び方法 | |
EP2737383B1 (en) | Flash-dram hybrid memory module | |
US10379766B2 (en) | Access processor | |
US20210073152A1 (en) | Dynamic page state aware scheduling of read/write burst transactions | |
US11837319B2 (en) | Multi-port memory device and a method of using the same | |
US8854387B2 (en) | Bundle-based CPU/GPU memory controller coordination mechanism | |
EP2911065B1 (en) | Distributed procedure execution and file systems on a memory interface | |
JP2021506033A (ja) | キャッシュ制御を考慮したメモリコントローラ | |
JP2002500395A (ja) | 最適な多チャネル記憶制御システム | |
US20180253391A1 (en) | Multiple channel memory controller using virtual channel | |
JP5911548B1 (ja) | 共有メモリへのアクセス要求をスケジューリングするための装置、方法およびコンピュータプログラム | |
Liu et al. | LAMS: A latency-aware memory scheduling policy for modern DRAM systems | |
EP1513071A2 (en) | Memory bandwidth control device | |
US20120066471A1 (en) | Allocation of memory buffers based on preferred memory performance | |
US10684965B2 (en) | Method to reduce write responses to improve bandwidth and efficiency | |
CN116414725A (zh) | 用于计算装置主存储器的分区命名空间 | |
JP2024512623A (ja) | マルチキューメモリコントローラのためのクレジット方式 | |
US11086534B2 (en) | Memory data distribution based on communication channel utilization | |
US20230050808A1 (en) | Systems, methods, and apparatus for memory access in storage devices | |
WO2021242608A1 (en) | Inference in memory | |
Jang | Architecture and physical design for advanced networks-on-chip |