JP5947302B2 - 複数のメモリチャネルを有するコンピューティングシステムにおけるメモリバッファの割り当て - Google Patents

複数のメモリチャネルを有するコンピューティングシステムにおけるメモリバッファの割り当て Download PDF

Info

Publication number
JP5947302B2
JP5947302B2 JP2013529213A JP2013529213A JP5947302B2 JP 5947302 B2 JP5947302 B2 JP 5947302B2 JP 2013529213 A JP2013529213 A JP 2013529213A JP 2013529213 A JP2013529213 A JP 2013529213A JP 5947302 B2 JP5947302 B2 JP 5947302B2
Authority
JP
Japan
Prior art keywords
memory
buffer
memory buffer
banks
computing device
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.)
Active
Application number
JP2013529213A
Other languages
English (en)
Other versions
JP2013542493A (ja
Inventor
サドウスキー グレッグ
サドウスキー グレッグ
ジェイ. ロジャーズ フィリップ
ジェイ. ロジャーズ フィリップ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Advanced Micro Devices Inc
Original Assignee
Advanced Micro Devices Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Advanced Micro Devices Inc filed Critical Advanced Micro Devices Inc
Publication of JP2013542493A publication Critical patent/JP2013542493A/ja
Application granted granted Critical
Publication of JP5947302B2 publication Critical patent/JP5947302B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1673Details of memory controller using buffers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1684Details of memory controller using multiple buses
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Description

本発明の実施形態は、概して複数のメモリチャネルを有するコンピューティングシステムにおける1つ以上のメモリバッファの割り当てに関する。
処理速度と処理量の増加の需要によって、多くのコンピュータシステムでは複数のクライアントデバイス(例、コンピューティングデバイス)を採用している。複数のクライアントデバイスを有する通常のコンピュータシステムでは、各クライアントデバイスが、システムバス経由で複数のメモリデバイスと通信することができる。こうしたシステムバスが非効率になる原因は、クライアントデバイスがメモリデバイスの同じメモリバンクから連続してデータ転送を要求する際の(本明細書では「メモリバンクのコンテンション」ともいう)メモリデバイスのリカバリ時間にある。このリカバリ時間は、当該メモリデバイスに対する最初のアクセスとその直後の2回目のアクセスとの間のメモリデバイスによる遅延時間を意味する。メモリデバイスはデータにアクセスするが、リカバリ時間中にはシステムバス上でデータが転送できない。その結果、システムバスが非効率的になる。
このシステムバスは、一度に1つのクライアントデバイスのみ使用可能なため、バスの効率を上げる方法のひとつとして、システムバス上の複数のメモリデバイス内でメモリアドレスをインターリーブすることが考えられる。メモリアドレスがシステムバス上でインターリーブされる場合、連続するメモリの記憶場所(例、連続するアドレスを持つ記憶場所)は、別個のメモリデバイスに配置される。連続する記憶場所を別個のメモリデバイスに配置することにより、所与のメモリデバイスに対するリカバリ時間の影響を減らすことができ、ひいてはメモリバンクのコンテンションを削減することができる。
しかし、複数のクライアントデバイスを有するコンピュータシステムでは、複数のメモリデバイス内でメモリアドレスをインターリーブすることは、システムバスの最適使用にはつながらないかもしれない。特に、システムバスは通常、どのクライアントデバイスがシステムバス、および複数のメモリデバイス内でインターリーブされたメモリアドレスにアクセスできるかを判断する調停状態になる。たとえば、この調停状態では、第2のクライアントデバイスよりも先に、第1のクライアントデバイスがシステムバスおよび複数のメモリデバイス内の連続する記憶場所にアクセスできるようにする。しかし、この調停状態では、第2のクライアントデバイスが、第1のクライアントデバイスと同じ連続する記憶場所にただちにアクセスすることは保証できない。したがって、インターリーブされたメモリアーキテクチャの利点(例、メモリバンクのコンテンションの削減)が損なわれてしまう。
複数のクライアントデバイスを有するコンピュータシステムでメモリバンクのコンテンションを低減または排除する方法およびシステムが必要である。
本発明の実施形態には、複数のメモリチャネルを有するコンピューティングシステムにおいて1以上のメモリバッファを割り当てる方法を含む。この方法には、以下が含まれる。即ち、第1のメモリバッファを第1の複数のメモリバンクに割り当てるステップであって、第1の複数のメモリバンクは、1以上のメモリチャネルの第1のセットにわたって広がっているステップと、第2のメモリバッファを第2の複数のメモリバンクに割り当てるステップであって、第2の複数のメモリバンクは、1以上のメモリチャネルの第2のセットにわたって広がっているステップと、第1のシーケンス識別子を第1のメモリバッファに、第2のシーケンス識別子を第2のメモリバッファにそれぞれ関連付けるステップと、第1および第2のシーケンス識別子に基づき第1および第2のメモリバッファにアクセスするステップとが含まれる。この方法は、第1の動作周波数で、第1のメモリバッファに関連する第1のメモリオペレーションを実行するステップも含み得る。同様に、この方法は、第2の動作周波数で、第2のメモリバッファに関連する第2のメモリオペレーションを実行するステップを含むことができ、この場合、第1の動作周波数は第2の動作周波数とは異なる。
本発明の実施形態は、さらにコンピュータプログラム製品を含み、このコンピュータプログラム製品は、プロセッサが、複数のメモリチャネルを有するコンピューティングシステムにおいて1以上のメモリバッファを割り当てることを可能にするコンピュータプログラム論理を記録した、コンピュータで使用可能な媒体を含む。このコンピュータプログラム論理は、以下のものを含むことができる。即ち、第1のコンピュータで読み取り可能なプログラムコードであって、プロセッサが第1の複数のメモリバンクに第1のメモリバッファを割り当てることができるようし、第1の複数のメモリバンクは1以上のメモリチャネルの第1のセットにわたって広がる、プログラムコードと、第2のコンピュータで読み取り可能なプログラムコードであって、プロセッサが第2の複数のメモリバンクに第2のメモリバッファを割り当てることができるようにし、第2の複数のメモリバンクは1以上のメモリチャネルの第2のセットにわたって広がる、プログラムコードと、第3のコンピュータで読み取り可能なプログラムコードであって、プロセッサが、第1のシーケンス識別子と第1のメモリバッファとを、第2のシーケンス識別子と第2のメモリバッファとに関連付けできるようにする、プログラムコードと、第4のコンピュータで読み取り可能なプログラムコードであって、プロセッサが第1および第2のシーケンス識別子に基づき、第1および第2のメモリバッファにアクセスできるようにする、プログラムコードと、を含む。コンピュータプログラム論理は、以下のものも含むことができる。即ち、第5のコンピュータで読み取り可能なプログラムコードであって、プロセッサが第1の動作周波数で、第1のメモリバッファに関連する第1のメモリオペレーションを実行することができるようにする、プログラムコードと、第6のコンピュータで読み取り可能なプログラムコードであって、プロセッサが第2の動作周波数で、第2のメモリバッファに関連する第2のメモリオペレーションを実行できるようにし、第1の動作周波数は第2の動作周波数とは異なる、プログラムコードと、を含む。
本発明の実施形態は、さらにコンピューティングシステムを含む。このコンピューティングシステムは、第1のクライアントデバイスと、第2のクライアントデバイスと、複数のメモリチャネルと、メモリコントローラとを含むことができる。複数のメモリチャネルは複数のメモリデバイスを含むことができる(例えば、DRAM(ダイナミックランダムアクセスメモリ)など)。メモリコントローラは、第1のクライアントデバイスと第2のクライアントデバイスとを、複数のメモリチャネルに通信可能に接続するように構成される。メモリコントローラは、以下の機能を行うようにも構成され得る。即ち、メモリコントローラは、第1のメモリバッファを、1以上のメモリチャネルの第1のセットにわたって広がる第1の複数のメモリバンクに割り当てる機能と、第2のメモリバッファを、1以上のメモリチャネルの第2のセットにわたって広がる第2の複数のメモリバンクに割り当てる機能と、第1のシーケンス識別子を第1のメモリバッファに、第2のシーケンス識別子を第2のメモリバッファに、それぞれ関連付ける機能と、第1および第2のシーケンス識別子に基づき、第1および第2のメモリバッファにアクセスする機能とを行うように構成され得る。さらに、メモリコントローラは、第1の動作周波数で、第1のメモリバッファに関連する第1のメモリオペレーションを実行し、第2の動作周波数で、第2のメモリバッファに関連する第2のメモリオペレーションを実行するようにも構成され、この場合、第1の動作周波数は第2の動作周波数とは異なる。
本発明のさらなる特徴および利点、ならびに本発明の様々な実施形態の構造およびオペレーションは、添付図面を参照して以下に詳細に説明する。本発明は、本明細書で説明する特定の実施形態に限定されないことに注意されたい。こうした実施形態は、例示目的のみに限って示されたものである。さらなる実施形態は、本明細書に含まれる教示に基づき、当業者にとって明らかであろう。
本明細書に含まれ、本明細書の一部を構成する添付図面は、本発明の実施形態を図示し、その記述と合わせて、さらに本発明の原理を説明するように機能し、当業者が本発明を実施し、利用できるようにする。
本発明の実施形態を実現可能な複数のクライアントデバイスを有する例示的なシステムを示す図である。 複数のメモリチャネルにわたって広がる複数のメモリバッファの実施形態を示す図である。 メモリコントローラの実施形態を示す図である。 コンピューティングデバイスから要求されたメモリバッファよりも利用可能なメモリ空間が少ない場合のシナリオ例を示す図である。 複数のメモリチャネルを有するコンピューティングシステム内で1以上のメモリバッファを割り当てる方法の実施形態を示す図である。 本発明の実施形態を実現可能なコンピュータシステム例を示す図である。
以下の発明を実施するための形態では、本発明と一貫性がある例示的な実施例を表す添付図面を参照する。その他の実施形態も可能であり、本発明の精神と範囲内で実施形態を改良することが可能である。したがって、この詳細な説明は、本発明を制限するものではない。むしろ、本発明の範囲は、添付の特許請求の範囲によって定義される。
本発明は以下に記述するように、ソフトウェア、ハードウェア、ファームウェア、および/または図に示されているエンティティの多くの異なる実施形態によって実現可能なことは当業者にとって明らかであろう。したがって、本発明の実施形態の動作の挙動は、本明細書で示す詳細度を考慮に入れると、実施形態の改良および変更が可能であるという理解に基づき説明される。
図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のシーケンス識別子は、特定シーケンスのパラメータとして使用できる。例えば、特定のシーケンスが「1」「2」および「4」の場合、最初にメモリバッファ250がアドレス/アクセスされ、次にメモリバッファ240がアドレス/アクセスされ、最後にメモリバッファ220がアドレス/アクセスされる。他の例では、特定のシーケンスが「1」「3」および「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++など)、例えば、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に対する書き込みを行う。リムーバブル記憶装置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、ナノ技術記憶装置など)、および通信媒体(例、有線および無線の通信ネットワーク、ローカルエリアネットワーク、広域ネットワークなど)が含まれるが、これらに制限されるものではない。
上記で本発明の様々な実施形態を説明してきたが、これらは例示目的のみのものであり、制限目的ではないことを理解するべきである。添付の請求項によって定義される発明の範囲および精神に従って、様々な形態および詳細の変更を施すことが可能であることを当業者は理解するであろう。本発明はこうした例に制限されるものではないことを理解するべきである。本発明は、本明細書に記載されているように動作するあらゆる要素に適用可能である。したがって、本発明の広さと範囲は、上記で説明した例示的実施形態のいずれによっても制限されるものではなく、以下の請求項および均等物によってのみ定義されるべきである。

Claims (22)

  1. 1のメモリバッファを、第1の複数のメモリバンクと、第1のシーケンス識別子とに関連付けるステップであって前記第1のメモリバッファは、メモリチャネルの第1のセットの複数のメモリバンクにわたっており、メモリチャネルは複数のメモリデバイスを備える、ステップと、
    第2のメモリバッファを、第2の複数のメモリバンクと、第2のシーケンス識別子とに関連付けるステップであって前記第2のメモリバッファは、メモリチャネルの第2のセットの複数のメモリバンクにわたる、ステップと、
    第1のコンピューティングデバイスおよび第2のコンピューティングデバイスを用いて、前記第1のシーケンス識別子および前記第2のシーケンス識別子に基づいて、前記第1のメモリバッファおよび前記第2のメモリバッファのうち対応するメモリバッファにアクセスするステップであって、前記第1のシーケンス識別子および前記第2のシーケンス識別子は、前記第1のメモリバッファおよび前記第2のメモリバッファに対するアクセスのシーケンスを示す、ステップと、を含む、
    方法。
  2. 前記第1のメモリバッファに関連する第1のメモリオペレーションを第1の動作周波数で実行するステップと、
    前記第1の動作周波数とは異なる第2の動作周波数で前記第2のメモリバッファに関連した第2のメモリオペレーションを実行するステップと、
    前記第1のメモリオペレーションの実行後に前記第1の複数のメモリバンクから前記第1のメモリバッファの割り当てを解除し、前記第2のメモリオペレーションの実行後に前記第2の複数のメモリバンクから前記第2のメモリバッファの割り当てを解除するステップと、
    をさらに含む請求項1の方法。
  3. 前記第2の複数のメモリバンクは、前記第1の複数のメモリバンクと異なっている、請求項1の方法。
  4. 前記第2の複数のメモリバンクは、前記第1の複数のメモリバンクと同じである、請求項1の方法。
  5. 前記第1のコンピューティングデバイスおよび第2のコンピューティングデバイスを用いて、前記第1のメモリバッファおよび前記第2のメモリバッファのうち対応するメモリバッファにアクセスするステップは、メモリバンクのコンテンションを回避し、前記複数のメモリチャネルの全帯域幅を利用するために、前記第1のメモリバッファおよび前記第2のメモリバッファに順番にアクセスするステップを含む、請求項1の方法。
  6. 1のメモリバッファを、第1の複数のメモリバンクと、第1のシーケンス識別子とに関連付ける手段であって前記第1のメモリバッファは、メモリチャネルの第1のセットの複数のメモリバンクにわたっており、メモリチャネルは複数のメモリデバイスを備える、手段と、
    第2のメモリバッファを、第2の複数のメモリバンクと、第2のシーケンス識別子とに関連付ける手段であって前記第2のメモリバッファは、メモリチャネルの第2のセットの複数のメモリバンクにわたる、手段と、
    第1のコンピューティングデバイスおよび第2のコンピューティングデバイスを用いて、前記第1のシーケンス識別子および前記第2のシーケンス識別子に基づいて、前記第1のメモリバッファおよび前記第2のメモリバッファのうち対応するメモリバッファにアクセスする手段であって、前記第1のシーケンス識別子および前記第2のシーケンス識別子は、前記第1のメモリバッファおよび前記第2のメモリバッファに対するアクセスのシーケンスを示す、手段と、を備える、
    コンピューティング装置
  7. 記第1のメモリバッファに関連した第1のメモリオペレーションを第1の動作周波数で実行する手段と、
    記第2のメモリバッファに関連した第2のメモリオペレーションを、前記第1の動作周波数とは異なる第2の動作周波数で実行する手段と、
    記第1のメモリオペレーションおよび前記第2のメモリオペレーションの実行後、前記第1の複数のメモリバンクから前記第1のメモリバッファを、前記第2の複数のメモリバンクから前記第2のメモリバッファの割り当てをそれぞれ解除する手段と、をさらに含む、
    請求項コンピューティング装置
  8. 前記第2の複数のメモリバンクは、前記第1の複数のメモリバンクと異なっている、請求項コンピューティング装置
  9. 前記第2の複数のメモリバンクは、前記第1の複数のメモリバンクと同じである、請求項コンピューティング装置
  10. 前記第1のコンピューティングデバイスおよび第2のコンピューティングデバイスを用いて、前記第1のメモリバッファおよび前記第2のメモリバッファのうち対応するメモリバッファにアクセスすることは、メモリバンクのコンテンションを回避し、前記複数のメモリチャネルの全帯域幅を利用するために、前記第1のメモリバッファおよび前記第2のメモリバッファに順番にアクセスすることを含む、請求項コンピューティング装置
  11. 1のコンピューティングデバイスと、
    第2のコンピューティングデバイスと、
    複数のメモリデバイスをそれぞれ備える複数のメモリチャネルと、
    メモリコントローラとを備え、
    前記メモリコントローラは、
    前記第1のコンピューティングデバイスおよび前記第2のコンピューティングデバイスを、前記複数のメモリチャネルに通信可能に接続し、
    1のシーケンス識別子および第1の複数のメモリバンクをモリチャネルの第1のセットの複数のメモリバンクにわたる第1のメモリバッファに割り当て、
    2のシーケンス識別子および第2の複数のメモリバンクをモリチャネルの第2のセットの複数のメモリバンクにわたる第2のメモリバッファに割り当て、
    前記第1のコンピューティングデバイスおよび前記第2のコンピューティングデバイスを用いて、前記第1のシーケンス識別子および前記第2のシーケンス識別子に基づき、前記第1のメモリバッファおよび前記第2のメモリバッファにアクセスする、ように構成されており
    前記第1のシーケンス識別子および前記第2のシーケンス識別子は、前記第1のメモリバッファおよび前記第2のメモリバッファに対するアクセスのシーケンスを示す、
    コンピューティングシステム。
  12. 複数のメモリデバイスに対応する複数のデータバスであって、前記メモリコントローラと前記複数のメモリデバイスとの間でデータを転送するように構成された複数のデータバスをさらに備える、
    請求項11コンピューティングシステム。
  13. 前記メモリコントローラは、前記複数のデータバスの全帯域幅を使用して、前記第1のコンピューティングデバイスまたは前記第2のコンピューティングデバイスと、前記複数のメモリデバイスとの間のデータ転送を制御するように構成されている、
    請求項12のコンピューティングシステム。
  14. 前記第1のコンピューティングデバイスおよび前記第2のコンピューティングデバイスは、中央処理装置、グラフィック処理装置、および特定用途向け集積回路のうち少なくとも1つを備える、
    請求項11のコンピューティングシステム。
  15. 前記複数のメモリデバイスのそれぞれは、ダイナミックランダムアクセスメモリ(DRAM)デバイスを備える、
    請求項11のコンピューティングシステム。
  16. 前記メモリコントローラは、
    第1の動作周波数で、前記第1のメモリバッファに関連する第1のメモリオペレーションを実行し、
    前記第1の動作周波数とは異なる第2の動作周波数で、前記第2のメモリバッファに関連する第2のメモリオペレーションを実行し、
    前記第1のメモリオペレーションの実行後に前記第1のメモリバッファの割り当てを前記第1の複数のメモリバンクから解除し、前記第2のメモリオペレーションの実行後に、前記第2のメモリバッファの割り当てを前記第2の複数のメモリバンクから解除するように構成されている、
    請求項11のコンピューティングシステム。
  17. 前記第2の複数のメモリバンクは、前記第1の複数のメモリバンクと異なっている、請求項11のコンピューティングシステム。
  18. 前記第2の複数のメモリバンクは、前記第1の複数のメモリバンクと同じである、請求項11のコンピューティングシステム。
  19. 前記メモリコントローラは、メモリバンクのコンテンションを回避し、前記複数のメモリチャネルの全帯域幅を利用するために、前記第1のメモリバッファおよび前記第2のメモリバッファに順番にアクセスするように構成されている、
    請求項11のコンピューティングシステム。
  20. 前記メモリコントローラは、メモリ空間の穴の発生を抑えるために、メモリバッファごとに追跡情報を維持するように構成されている、
    請求項11のコンピューティングシステム。
  21. 前記追跡情報は、
    メモリバッファが使用中、解放またはリザーブされているという指標、
    割り当てられたメモリバッファに関連するメモリチャネルおよびメモリバンク、
    前記割り当てられたメモリバッファに関連するシーケンス識別子、および
    前記割り当てられたメモリバッファのパフォーマンスパラメータ、
    のうち少なくとも1つを含む、
    請求項20のコンピューティングシステム。
  22. 前記パフォーマンスパラメータは、前記割り当てられたメモリバッファに関連するメモリチャネルに対する所定のクロック周波数を含む、
    請求項21のコンピューティングシステム。
JP2013529213A 2010-09-14 2011-09-12 複数のメモリチャネルを有するコンピューティングシステムにおけるメモリバッファの割り当て Active JP5947302B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/881,663 2010-09-14
US12/881,663 US20120066444A1 (en) 2010-09-14 2010-09-14 Resolution Enhancement of Video Stream Based on Spatial and Temporal Correlation
PCT/US2011/051156 WO2012037002A1 (en) 2010-09-14 2011-09-12 Allocation of memory buffers in computing system with multiple memory channels

Publications (2)

Publication Number Publication Date
JP2013542493A JP2013542493A (ja) 2013-11-21
JP5947302B2 true JP5947302B2 (ja) 2016-07-06

Family

ID=44658881

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013529213A Active JP5947302B2 (ja) 2010-09-14 2011-09-12 複数のメモリチャネルを有するコンピューティングシステムにおけるメモリバッファの割り当て

Country Status (6)

Country Link
US (2) US20120066444A1 (ja)
EP (1) EP2616945B1 (ja)
JP (1) JP5947302B2 (ja)
KR (1) KR101812300B1 (ja)
CN (1) CN103109283B (ja)
WO (1) WO2012037002A1 (ja)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
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
US9418109B2 (en) * 2011-03-18 2016-08-16 Emc Corporation Memory quota
US9652006B2 (en) * 2011-12-21 2017-05-16 Intel Corporation Power management in a discrete memory portion
US9092327B2 (en) 2012-12-10 2015-07-28 Qualcomm Incorporated System and method for allocating memory to dissimilar memory devices using quality of service
CN110177279B (zh) * 2014-03-28 2021-10-08 联咏科技股份有限公司 视频处理装置与其视频处理电路
US9842428B2 (en) * 2014-06-27 2017-12-12 Samsung Electronics Co., Ltd. Dynamically optimized deferred rendering pipeline
US9916274B2 (en) * 2015-07-23 2018-03-13 Cavium, Inc. Apparatus and method for on-chip crossbar design in a network switch using benes network
US10082963B2 (en) * 2016-04-18 2018-09-25 Super Micro Computer, Inc. Low capacity latency storage enclosure with expander
US10481816B2 (en) * 2017-10-18 2019-11-19 Western Digital Technologies, Inc. Dynamically assigning data latches
FR3085075A1 (fr) * 2018-08-17 2020-02-21 Stmicroelectronics (Grenoble 2) Sas Controleur memoire
US11030127B2 (en) 2019-10-22 2021-06-08 Nxp Usa, Inc. Multi-threaded architecture for memory controller data paths

Family Cites Families (69)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4530090A (en) * 1983-07-29 1985-07-16 International Standard Electric Corporation Telecommunications systems with user programmable features
US4912698A (en) * 1983-09-26 1990-03-27 Siemens Aktiengesellschaft Multi-processor central control unit of a telephone exchange system and its operation
JPS61150059A (ja) * 1984-12-24 1986-07-08 Sony Corp デ−タ処理装置
US4970666A (en) * 1988-03-30 1990-11-13 Land Development Laboratory, Inc. Computerized video imaging system for creating a realistic depiction of a simulated object in an actual environment
US6070003A (en) * 1989-11-17 2000-05-30 Texas Instruments Incorporated System and method of memory access in apparatus having plural processors and plural memories
US5392443A (en) * 1991-03-19 1995-02-21 Hitachi, Ltd. Vector processor with a memory assigned with skewed addresses adapted for concurrent fetching of a number of vector elements belonging to the same vector data
US5526507A (en) * 1992-01-06 1996-06-11 Hill; Andrew J. W. Computer memory array control for accessing different memory banks simullaneously
US6278645B1 (en) * 1997-04-11 2001-08-21 3Dlabs Inc., Ltd. High speed video frame buffer
US6032219A (en) * 1997-08-01 2000-02-29 Garmin Corporation System and method for buffering data
US6401176B1 (en) * 1997-11-14 2002-06-04 Agere Systems Guardian Corp. Multiple agent use of a multi-ported shared memory
US6965974B1 (en) * 1997-11-14 2005-11-15 Agere Systems Inc. Dynamic partitioning of memory banks among multiple agents
US6460125B2 (en) * 1998-08-07 2002-10-01 Ati Technologies, Inc. Dynamic memory clock control system and method
US6370073B2 (en) * 1998-10-01 2002-04-09 Monlithic System Technology, Inc. Single-port multi-bank memory system having read and write buffers and method of operating same
US6347344B1 (en) * 1998-10-14 2002-02-12 Hitachi, Ltd. Integrated multimedia system with local processor, data transfer switch, processing modules, fixed functional unit, data streamer, interface unit and multiplexer, all integrated on multimedia processor
US6347366B1 (en) * 1998-12-10 2002-02-12 Genuity Inc. System and method for automatically optimizing software performance
US6377268B1 (en) * 1999-01-29 2002-04-23 Micron Technology, Inc. Programmable graphics memory apparatus
US6961084B1 (en) * 1999-10-07 2005-11-01 Ess Technology, Inc. Programmable image transform processor
US6678813B1 (en) * 1999-10-28 2004-01-13 Hewlett-Packard Development Company, L.P. Dynamically adaptive buffer mechanism
TW504694B (en) * 2000-01-12 2002-10-01 Hitachi Ltd Non-volatile semiconductor memory device and semiconductor disk device
US6567091B2 (en) * 2000-02-01 2003-05-20 Interactive Silicon, Inc. Video controller system with object display lists
US6449701B1 (en) * 2000-09-20 2002-09-10 Broadcom Corporation Out of order associative queue in two clock domains
US6658546B2 (en) * 2001-02-23 2003-12-02 International Business Machines Corporation Storing frame modification information in a bank in memory
JP2002342266A (ja) * 2001-05-14 2002-11-29 Hitachi Ltd データプロセッサ
US6598132B2 (en) * 2001-07-18 2003-07-22 Zettacom, Inc. Buffer manager for network switch port
DE10134985B4 (de) * 2001-07-18 2012-09-13 Qimonda Ag Test eines Halbleiterspeichers mit mehreren Speicherbänken
US6918019B2 (en) * 2001-10-01 2005-07-12 Britestream Networks, Inc. Network and networking system for small discontiguous accesses to high-density memory devices
JP3878508B2 (ja) * 2001-11-08 2007-02-07 松下電器産業株式会社 回路群制御システム
US6769047B2 (en) * 2002-03-21 2004-07-27 Intel Corporation Method and system for maximizing DRAM memory bandwidth through storing memory bank indexes in associated buffers
US6836831B2 (en) * 2002-08-08 2004-12-28 International Business Machines Corporation Independent sequencers in a DRAM control structure
US7747989B1 (en) * 2002-08-12 2010-06-29 Mips Technologies, Inc. Virtual machine coprocessor facilitating dynamic compilation
US6948030B1 (en) * 2002-09-04 2005-09-20 Cypress Semiconductor Corporation FIFO memory system and method
US6851030B2 (en) * 2002-10-16 2005-02-01 International Business Machines Corporation System and method for dynamically allocating associative resources
US7003628B1 (en) * 2002-12-27 2006-02-21 Unisys Corporation Buffered transfer of data blocks between memory and processors independent of the order of allocation of locations in the buffer
JP2004265162A (ja) * 2003-03-03 2004-09-24 Renesas Technology Corp 記憶装置およびアドレス管理方法
JP5089167B2 (ja) * 2003-04-22 2012-12-05 アギア システムズ インコーポレーテッド 共用マルチバンク・メモリのための方法および装置
US7240143B1 (en) * 2003-06-06 2007-07-03 Broadbus Technologies, Inc. Data access and address translation for retrieval of data amongst multiple interconnected access nodes
JP2005084907A (ja) * 2003-09-08 2005-03-31 Sony Corp メモリ帯域制御装置
JP4291664B2 (ja) * 2003-10-14 2009-07-08 株式会社日立製作所 通信バッファ予約機能を備えるストレージ装置およびシステム
US20050253858A1 (en) * 2004-05-14 2005-11-17 Takahide Ohkami Memory control system and method in which prefetch buffers are assigned uniquely to multiple burst streams
US7339592B2 (en) * 2004-07-13 2008-03-04 Nvidia Corporation Simulating multiported memories using lower port count memories
US7360035B2 (en) * 2004-09-01 2008-04-15 International Business Machines Corporation Atomic read/write support in a multi-module memory configuration
JP2006331008A (ja) * 2005-05-25 2006-12-07 Matsushita Electric Ind Co Ltd メモリインタフェース
US8065493B2 (en) * 2005-06-09 2011-11-22 Nxp B.V. Memory controller and method for coupling a network and a memory
WO2006134550A2 (en) * 2005-06-13 2006-12-21 Nxp B.V. Memory controller
US9171585B2 (en) * 2005-06-24 2015-10-27 Google Inc. Configurable memory circuit system and method
US8244971B2 (en) * 2006-07-31 2012-08-14 Google Inc. Memory circuit system and method
US7738451B2 (en) * 2005-07-01 2010-06-15 Faraday Technology Corp. Method and device for flexible buffering in networking system
EP1911278A2 (en) * 2005-08-04 2008-04-16 Nds Limited Advanced digital tv system
US20070147115A1 (en) * 2005-12-28 2007-06-28 Fong-Long Lin Unified memory and controller
US8572349B2 (en) * 2006-01-31 2013-10-29 Agere Systems Llc Processor with programmable configuration of logical-to-physical address translation on a per-client basis
US7769942B2 (en) * 2006-07-27 2010-08-03 Rambus, Inc. Cross-threaded memory system
JP2008060700A (ja) * 2006-08-29 2008-03-13 Oki Electric Ind Co Ltd バッファ制御装置及びバッファ制御方法
US20080147915A1 (en) * 2006-09-29 2008-06-19 Alexander Kleymenov Management of memory buffers for computer programs
US8270295B2 (en) * 2007-05-21 2012-09-18 International Business Machines Corporation Reassigning virtual lane buffer allocation during initialization to maximize IO performance
US8001338B2 (en) * 2007-08-21 2011-08-16 Microsoft Corporation Multi-level DRAM controller to manage access to DRAM
JP4497184B2 (ja) * 2007-09-13 2010-07-07 ソニー株式会社 集積装置およびそのレイアウト方法、並びにプログラム
US8195907B2 (en) * 2007-12-21 2012-06-05 Rambus Inc. Timing adjustment in a reconfigurable system
US8751755B2 (en) * 2007-12-27 2014-06-10 Sandisk Enterprise Ip Llc Mass storage controller volatile memory containing metadata related to flash memory storage
KR20110005788A (ko) * 2008-02-19 2011-01-19 램버스 인코포레이티드 할당 가능 자원을 갖는 멀티-뱅크 플래시 메모리 구조
TW200948088A (en) * 2008-02-27 2009-11-16 Ncomputing Inc System and method for virtual 3D graphics acceleration and streaming multiple different video streams
US7991921B2 (en) * 2008-03-11 2011-08-02 Freescale Semiconductor, Inc. System and method for reducing power consumption of memory in an I/O controller
JP5040773B2 (ja) * 2008-03-31 2012-10-03 富士通株式会社 メモリバッファ割当装置およびプログラム
US8060692B2 (en) * 2008-06-27 2011-11-15 Intel Corporation Memory controller using time-staggered lockstep sub-channels with buffered memory
US20100169519A1 (en) * 2008-12-30 2010-07-01 Yong Zhang Reconfigurable buffer manager
US9442846B2 (en) * 2009-03-17 2016-09-13 Cisco Technology, Inc. High speed memory systems and methods for designing hierarchical memory systems
US8510496B1 (en) * 2009-04-27 2013-08-13 Netapp, Inc. Scheduling access requests for a multi-bank low-latency random read memory device
US8527993B2 (en) * 2010-06-01 2013-09-03 Qualcomm Incorporated Tasking system interface methods and apparatuses for use in wireless devices
US8725915B2 (en) * 2010-06-01 2014-05-13 Qualcomm Incorporated Virtual buffer interface methods and apparatuses for use in wireless devices
US8959291B2 (en) * 2010-06-04 2015-02-17 Lsi Corporation Two-port memory capable of simultaneous read and write

Also Published As

Publication number Publication date
EP2616945B1 (en) 2017-08-16
US20120066444A1 (en) 2012-03-15
CN103109283B (zh) 2018-12-18
EP2616945A1 (en) 2013-07-24
KR101812300B1 (ko) 2017-12-26
US10795837B2 (en) 2020-10-06
US20180239722A1 (en) 2018-08-23
WO2012037002A1 (en) 2012-03-22
JP2013542493A (ja) 2013-11-21
KR20130106392A (ko) 2013-09-27
CN103109283A (zh) 2013-05-15

Similar Documents

Publication Publication Date Title
JP5947302B2 (ja) 複数のメモリチャネルを有するコンピューティングシステムにおけるメモリバッファの割り当て
KR102380670B1 (ko) 메모리 제어기에서의 세분화된 대역폭 프로비저닝
JP4926963B2 (ja) 多重メモリアクセスレイテンシ時間をサポートするコンピュータメモリシステムにおける性能を改善するためのシステムおよび方法
US10203878B2 (en) Near memory accelerator
JP4805351B2 (ja) Dramの並列処理を向上するシステム及び方法
US10209922B2 (en) Communication via a memory interface
JP2013545201A (ja) マルチクライアントコンピューティングシステムに対するメモリデバイスの分割
WO2010023355A1 (en) Method, apparatus and software product for multi-channel memory sandbox
EP2911065B1 (en) Distributed procedure execution and file systems on a memory interface
JP2021506033A (ja) キャッシュ制御を考慮したメモリコントローラ
US20180253391A1 (en) Multiple channel memory controller using virtual channel
WO2023125016A1 (zh) 平面编程方法及其闪存设备
US20120066471A1 (en) Allocation of memory buffers based on preferred memory performance
US20090119429A1 (en) Semiconductor integrated circuit
US8244929B2 (en) Data processing apparatus
US20150212759A1 (en) Storage device with multiple processing units and data processing method
CN102073604B (zh) 一种同步动态存储器读写控制方法、装置和系统
US20200004444A1 (en) Memory data distribution based on communication channel utilization
JP7161032B2 (ja) リンク層データパッキング及びパケットフロー制御スキーム
CN116594710A (zh) 一种处理器在片内存储器和fpga内核中运行程序的方法
CN112397112A (zh) 存储器、存储器芯片以及存储器数据存取方法
JP2011013909A (ja) メモリ制御回路
JP2015014872A (ja) データ処理装置、データ処理方法およびプログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20140911

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20150624

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150804

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20151104

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20160510

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160602

R150 Certificate of patent or registration of utility model

Ref document number: 5947302

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250