JP2021507399A - 不均一なレイテンシを有するメモリ要求のスケジューリング - Google Patents

不均一なレイテンシを有するメモリ要求のスケジューリング Download PDF

Info

Publication number
JP2021507399A
JP2021507399A JP2020534175A JP2020534175A JP2021507399A JP 2021507399 A JP2021507399 A JP 2021507399A JP 2020534175 A JP2020534175 A JP 2020534175A JP 2020534175 A JP2020534175 A JP 2020534175A JP 2021507399 A JP2021507399 A JP 2021507399A
Authority
JP
Japan
Prior art keywords
memory
command
memory access
time
access command
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.)
Granted
Application number
JP2020534175A
Other languages
English (en)
Other versions
JP7063999B2 (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 JP2021507399A publication Critical patent/JP2021507399A/ja
Application granted granted Critical
Publication of JP7063999B2 publication Critical patent/JP7063999B2/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
    • 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/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/161Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement
    • 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/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/161Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement
    • G06F13/1626Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement by reordering requests
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0653Monitoring storage devices or systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0658Controller construction arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0685Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/22Read-write [R-W] timing or clocking circuits; Read-write [R-W] control signal generators or management 

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Dram (AREA)
  • Communication Control (AREA)
  • Memory System (AREA)

Abstract

2つの異なるメモリタイプへの発行に対するメモリ要求を予定することを実行するためのシステム、装置、方法が開示される。コンピューティングシステムは、アプリケーションを処理するための1つ以上のクライアントを含む。メモリコントローラ内の異種メモリチャネルは、メモリコントローラと、第1のメモリ及び第1のメモリとは異なる第2のメモリのそれぞれに接続されたメモリバスとの間でメモリトラフィックを転送する。メモリコントローラは、メモリバス上で駆動される予定である読み取り応答データをすでに有していない次の所与の時点を決定する。メモリコントローラは、第1のメモリにアクセスするための第1のメモリアクセスコマンド、及び第2のメモリにアクセスするための第2のメモリアクセスコマンドを予定するための時間があるかどうかを判断する。それぞれに十分な時間がある場合、次いでアクセスコマンドの1つが、重み付けされた基準に基づいて選択される。【選択図】図9

Description

関連技術の説明
さまざまなコンピューティングデバイスが、システムの機能を提供するために複数のタイプのICを統合する異種統合を利用する。複数の機能が処理ノードに入れられ、複数の機能は、視聴覚(A/V)データ処理、医学及びビジネス分野向けのその他の高データ並列アプリケーション、汎用インストラクションセットアーキテクチャ(ISA)の処理命令、デジタル、アナログ、混合信号及び無線周波数(RF)機能などを含む。複数のタイプのICを統合するために、処理ノードをシステムパッケージングに入れるためのさまざまな選択肢が存在する。いくつかの例は、システムオンチップ(SOC)、マルチチップモジュール(MCM)、及びシステムインパッケージ(SiP)である。
システムパッケージングの選択肢とは関係なく、いくつかの用途では、1つ以上のコンピューティングシステムの性能は処理ノードによって決まる場合がある。一例では、処理ノードは、マルチソケットサーバのソケットの中の複数の処理ノードの1つである。サーバは、サーバ内のコンピュータプログラムだけではなく、リモートコンピューティングデバイスの中の他のコンピュータプログラムにもサービスを提供するために使用される。別の例では、処理ノードは、いくつかの異なるタイプのアプリケーションを実行し、おそらく複数のユーザー(ローカルとリモートの両方)に情報を一度に中継するモバイルコンピューティングデバイス内で使用される。
通常、相対的に高レベルで性能を維持するには、格納されているデータへの迅速なアクセスが必要になる。いくつかのタイプのデータ集約型アプリケーションは、いくつかのローカルプログラムとリモートプログラム、及びそのユーザーに信頼できる高性能を提供するためにデータストレージへの迅速なアクセスに依存する。メモリ階層は、プロセッサダイ上のレジスタ、及びプロセッサダイ上に位置するか、またはプロセッサダイに接続されるかのどちらかのキャッシュなどの相対的に高速な揮発性メモリから、不揮発性の相対的に低速のメモリに移行する。異なるタイプのメモリのためのインタフェース及びアクセス機構も変化する。したがって、階層の中で2つの異なるタイプのメモリを結合するためのあらゆるハイブリッドな提案が、実行中のコンピュータプログラムによる迅速なアクセス要求のために高性能を維持するという課題を提供する。
上記を考慮して、2つの異なるメモリタイプへの発行に対するメモリ要求を予定するための効率的な方法及びシステムが所望される。
添付図面と共に以下の説明を参照することによって、本明細書で説明される方法及び機構の利点をより良好に理解することができる。
コンピューティングシステムの一実施形態のブロック図である。 タイミング図の一実施形態のブロック図である。 タイミング図の別の実施形態のブロック図である。 タイミング図の別の実施形態のブロック図である。 タイミング図の別の実施形態のブロック図である。 コンピューティングシステムの別の実施形態のブロック図である。 メモリコントローラの一実施形態のブロック図である。 2つの異なるメモリタイプへの発行に対するメモリ要求を予定するための方法の一実施形態の流れ図である。 2つの異なるメモリタイプへの発行に対するメモリ要求を予定するための方法の別の実施形態の流れ図である。 2つの異なるメモリタイプへの発行に対するメモリ要求を予定するための方法の別の実施形態の流れ図である。 2つの異なるメモリタイプへの発行に対するメモリ要求を予定するための方法の別の実施形態の流れ図である。 2つの異なるメモリタイプへの発行に対するメモリ要求を予定するための方法の別の実施形態の流れ図である。
本発明は、多様な修正及び代替形態の影響を受けやすいが、具体的な実施形態は図面中の例として示され、本明細書で詳細に説明される。しかしながら、図面及びそれに対する詳細な説明は、開示された特定の形態に本発明を限定するものではなく、反対に、本発明は、添付の特許請求の範囲によって定義される本発明の範囲内に収まる全ての修正、均等物、及び代替物を包含するものであることが理解されるべきである。
以下の説明では、本明細書に提示する方法及び機構の完全な理解を提供するために、多くの具体的な詳細が述べられている。しかしながら、当業者は、それらの特定の詳細なしに様々な実施形態を実施することができることを認識するべきである。いくつかの例では、本明細書で説明されるアプローチを曖昧にすることを回避するために、公知の構造、コンポーネント、信号、コンピュータプログラム命令、及び技術が詳細には示されていない。例示の簡潔性及び明確さのために、図に示される要素は、必ずしも縮尺通りに描かれていないことが認識されよう。例えば、要素のいくつかの寸法は、他の要素に対して拡張される場合がある。
2つの異なるメモリタイプから順不同で到着する応答データを識別するための多様なシステム、装置、方法、及びコンピュータ可読媒体が開示される。多様な実施形態では、コンピューティングシステムは、アプリケーションを処理するための1つ以上のクライアントを含む。クライアントの例は、汎用中央演算処理装置(CPU)、グラフィックスプロセッシングユニット(GPU)、アクセラレーテッドプロセッシングユニット(APU)、入出力デバイス(I/O)デバイスなどを含む。メモリコントローラ内の異種メモリチャネルは、メモリコントローラと、第1のメモリ及び第2のメモリのそれぞれに接続されたメモリバスとの間でメモリトラフィックを転送する。
多様な実施形態では、第1のメモリ及び第2のメモリは、異なるデータストレージ技術を利用し、異なるアクセスレイテンシを有する。例えば、第1のメモリ及び第2のメモリのそれぞれは、様々なダイナミックランダムアクセスメモリ(DRAM)などの様々なランダムアクセスメモリ(RAM)の1つ、NVDIMM−Pなどの様々な不揮発性(NV)デュアルインラインメモリ(DIMM)の1つ、相変化メモリ(PCM)、強誘電体メモリ(FeRAM)、磁気抵抗メモリ(MRAM)、抵抗メモリ(ReRAMまたはRRAM)、3次元(3D)クロスポイント(XPoint)メモリなどの別のタイプのデータストレージ技術の1つを含む場合がある。したがって、第1のメモリの1つ以上のアクセスレイテンシと、第2のメモリの1つ以上のアクセスレイテンシとの差は、閾値を超える場合がある。一部の実施形態では、読み取りコマンドの発行から有効なデータを含む受け取られた応答まで測定された第1のメモリのアクセスレイテンシは、数十ナノ秒の規模である。多様な実施形態では、メモリアクセスコマンドの発行から受け取られた応答まで測定された第2のメモリのアクセスレイテンシは、数百ナノ秒の規模である。したがって、レイテンシ間の差は数百ナノ秒を超え、これは所与の閾値時間量を超える場合がある。
多様な実施形態では、コマンドプロセッサまたは他のロジックが受け取った各メモリ要求を1つ以上のコマンドに変換する。メモリコントローラ内のスケジューラは、第1のメモリタイプのための第1のコマンド及び第2のメモリタイプのための第2のコマンドなどの2つの保留中のメモリアクセスコマンドがあるかどうかを判断する。スケジューラは、共有メモリデータバス上でデータ衝突を引き起こさずに、第1のコマンド及び第2のコマンドのそれぞれを発行できるかどうかを判断する。例えば、メモリコントローラは、第1のメモリ及び第2のメモリのそれぞれのアクセスレイテンシに加えて、選択したコマンドを発行するための時点に基づいて、読み取り応答データが共有メモリデータバスに到着する予定である時点を追跡する。一部の実施形態では、時点はクロックサイクルで測定される。第1のコマンド及び第2のコマンドのどちらかを選択しても、共有メモリデータバス上でデータ衝突が予定されないであろう場合、次いで第1のコマンド及び第2のコマンドのそれぞれは、発行の候補のままである。このような場合、スケジューラは、アービトレーションロジックに基づいて第1のコマンド及び第2のコマンドからコマンドを選択する。
他の実施形態では、共有メモリデータバス上でデータ衝突を回避するために、メモリコントローラの中のスケジューラは、メモリデータバス上で駆動される予定である読み取り応答データをすでに有していない次の所与の時点を決定する。スケジューラは、所与の時点で応答データを提供するために第1のメモリにアクセスするための第1のメモリアクセスコマンドを予定する時間があるかどうかを判断する。また、スケジューラは、所与の時点で応答データを提供するために第2のメモリにアクセスするための第2のメモリアクセスコマンドを予定する時間があるかどうかも判断する。
第1のアクセスコマンド及び第2のアクセスコマンドのうちの少なくとも一方が所与の時点で応答データを提供するための十分な時間がある場合、次いでスケジューラは、アービトレーションロジックに基づいて第1のメモリアクセスコマンド及び第2のメモリアクセスコマンドのうちの1つを選択する。一実施形態では、アービトレーションロジックは重み付けされた基準を使用する。基準には、少なくとも優先度レベル、年齢などが含まれる。その後、スケジューラは、異種メモリチャネルを介して第1のメモリ及び第2のメモリの1つに選択したアクセスコマンドを発行する。
一部の実施形態では、スケジューラが、発行するための所与のコマンドを予定すると、スケジューラは、要求された読み取りデータが共有メモリデータバス上に到着する予定である所与の時点を決定する。一実施形態では、スケジューラは、所与のコマンドのレイテンシを、スケジューラが所与のコマンドを発行することを予定する時点に加える。他の実施形態では、スケジューラは、所与のコマンドに対応する情報を格納する要求待ち行列の中のエントリの表示として識別子を生成する。他の実施形態では、識別子は、スレッド識別子及び所与のコマンドに対応するメモリ要求のターゲットアドレスの一部分の1つ以上の組み合わせに基づいて識別子を生成する。スケジューラは、識別子の、所与の時点との関連付けを格納する。一実施形態では、表が使用される。したがって、スケジューラは、所与のコマンドに挿入されたタグに基づいてまたは到着する要求された読み取りデータと関連付けられたパケットで、よりもむしろ、所与の時点に基づいて共有メモリデータバス上に到着する要求された読み取りデータで、所与のコマンドを識別できる。
図1を参照すると、コンピューティングシステム100の一実施形態の一般化されたブロック図が示される。示されるように、クライアント110及び112は、メモリコントローラ120にメモリ要求を送信する。メモリコントローラ120内の異種メモリチャネル124は、メモリコントローラ120とメモリバス130との間でメモリトラフィックを転送する。メモリ140及びメモリ150のそれぞれは、クライアント110及び112によってアクセスされるデータを格納する。多様な実施形態では、メモリ140及びメモリ150は異なるデータストレージ技術を使用し、したがって異なるアクセスレイテンシを有する。多様な実施形態では、メモリ140及びメモリ150の1つ以上は、クライアント110及び112によってシステムメモリとして使用される。
通信ファブリック、I/Oデバイス用の入出力(I/O)インタフェース、及びネットワーク接続のためのあらゆるリンク及びインタフェースは、説明を容易にするためにコンピューティングシステム100の中に示されていない。一部の実施形態では、コンピューティングシステム100の構成要素は、システムオンチップ(SOC)などの集積回路(IC)上の個々のダイである。他の実施形態では、構成要素は、システムインパッケージ(SiP)またはマルチチップモジュール(MCM)の中の個々のダイである。一部の実施形態では、クライアント110及び112は、中央演算処理装置(CPU)、グラフィックス処理装置(GPU)、マルチメディアエンジン用のハブなどの1つ以上を含む。クライアント110及び112のそれぞれは、アプリケーションを処理し、メモリ要求を生成することができるさまざまなコンピューティングリソースの1つである。
単一のメモリコントローラ120が示されているが、他の実施形態では、別の数のメモリコントローラがコンピューティングシステム100で使用される。多様な実施形態では、メモリコントローラ120は、クライアント110及び112からメモリ要求を受け取り、スケジューラ122はメモリ要求を予定し、予定したメモリ要求を、異種メモリチャネル124を介してメモリ140及び150の1つに送信する。一部の実施形態では、メモリコントローラ120内のスケジューラ122は、メモリ150の中のメモリ場所をターゲットとするメモリ要求を予定することとは別に、メモリ140の中のメモリ場所をターゲットとするメモリ要求を予定する制御ロジックを含む。その後、スケジューラ122は、メモリ140をターゲットとするメモリ要求とメモリ150をターゲットとするメモリ要求との間で選択する。一実施形態では、スケジューラ122は、メモリ140及びメモリ150をターゲットとするアクセスを混合する。
メモリ要求を予定するためのスケジューラ122の中の制御ロジックは、サービスの質(QoS)またはメモリ要求の他の優先度レベル、メモリ要求のプロセスのまたはソフトウェアスレッドの識別子(ID)、メモリ要求の経過時間、メモリ要求がメモリ140に発行されてからの時間量、メモリ要求がメモリ150に発行されてからの時間量などの情報を使用する。したがって、スケジューラ122は、メモリ要求の順不同の発行をサポートする。スケジューラ122が、メモリ140及びメモリ150の1つに送信するメモリ要求を選択すると、スケジューラ122は、選択したメモリ要求を転送のために異種メモリチャネル120に送信する。
異種メモリチャネル124は、メモリ140及びメモリ150のそれぞれとインタフェースをとる。異種メモリチャネル124は、メモリ140とインタフェースをとるために使用されるプロトコルをサポートし、メモリ150とインタフェースをとるために使用される別のプロトコルをサポートする。プロトコルは、クロックサイクルごとのデータ転送の数、信号電圧レベル、信号タイミング、信号位相及びクロック位相、ならびにクロック周波数などの情報転送のために使用される値を決定する。
多様な実施形態では、メモリバス130は、読み取りモード及び書き込みモードの所与のモード中などの所与の時間量、単一の方向でデータトラフィックを送信することをサポートし、次いで読み取りモード及び書き込みモードの他のモード中などの別の所与の時間量、反対方向でデータトラフィックを送信する。一実施形態では、メモリバス130は、単一のコマンドバス及び単一のデータバスを利用する。したがって、メモリ140及びメモリ150に対するメモリ要求の発行を予定することは、メモリバス130上でデータ衝突を回避するように実行される。
上述のように、メモリ140及びメモリ150は異なるデータストレージ技術を使用し、したがって異なるアクセスレイテンシを有する。示されるように、メモリ140は、メモリ150のアクセスレイテンシ134とは少なくとも閾値時間量分、異なるアクセスレイテンシ132を有する。メモリ140及びメモリ150のそれぞれについて単一のアクセスレイテンシが示されているが、他の実施形態では、メモリ140及びメモリ150の1つ以上が複数のアクセスレイテンシを有する。しかしながら、メモリ140の複数のアクセスレイテンシのそれぞれ1つは、少なくとも閾値時間量分、メモリ150の複数のアクセスレイテンシのそれぞれ1つとは異なる。
一実施形態では、メモリ140及びメモリ150の一方は、さまざまなダイナミックランダムアクセスメモリ(DRAM)の1つを含む。一方、メモリ140及びメモリ150の他方のメモリは、NVDIMM−Pなどのさまざまな不揮発性(NV)デュアルインラインメモリモジュール(DIMM)の1つを含む。他の実施形態では、異なるアクセスレイテンシを有する他のメモリタイプが、メモリ140及びメモリ150に使用される。例えば、ランダムアクセスメモリ(RAM)技術及びNVDIMM技術のタイプを使用することの他に、一部の実施形態では、メモリ140及びメモリ150のそれぞれは、相変化メモリ(PCM)、強誘電体メモリ(FeRAM)、磁気抵抗メモリ(MRAM)、抵抗メモリ(ReRAMまたはRRAM)、3次元(3D)クロスポイント(XPoint)メモリなどのデータストレージ技術の他の例を含む。多様な実施形態では、メモリ140のアクセスレイテンシとメモリ150のアクセスレイテンシの差は、閾値を超える。したがって、スケジューラ122は、メモリ140及びメモリ150の中の場所をターゲットとするメモリアクセスコマンドを混合して発行するために制御ロジック及び順次要素を含む。
一部の実施形態では、メモリコントローラ120は、それぞれの受け取ったメモリ要求を1つ以上のコマンドに変換するためのコマンドプロセッサを含む。一実施形態では、スケジューラ122は、メモリ140のための第1のコマンド及びメモリ150のための第2のコマンドなどの2つの保留中のメモリアクセスコマンドがあるかどうかを判断する。スケジューラ122は、共有メモリデータバス130上でデータ衝突を引き起こさずに、第1のコマンド及び第2のコマンドのそれぞれを発行できるかどうかを判断する。例えば、メモリコントローラ120は、選択したコマンドを発行するための時点、アクセスレイテンシ132及びアクセスレイテンシ134に基づいて、データが共有メモリデータバス130に到着する予定である時点を追跡する。保留中の第1のコマンド及び第2のコマンドは、読み取りアクセスまたは書き込みアクセスである場合がある。一部の実施形態では、時点はクロックサイクルで測定される。第1のコマンド及び第2のコマンドのどちらかを選択しても、共有メモリデータバス130上でデータ衝突が予定されないであろう場合、次いで第1のコマンド及び第2のコマンドのそれぞれは、発行の候補のままである。このような場合、スケジューラ122は、アービトレーションロジックに基づいて第1のコマンド及び第2のコマンドからコマンドを選択する。一実施形態では、アービトレーションロジックは重み付けされた基準を使用する。
他の実施形態では、アクセスレイテンシ132とアクセスレイテンシ134との間のかなりの差にも関わらずメモリバス130上でデータ衝突を回避するために、スケジューラ122は、メモリバス130が利用可能となる予定である次の所与の時点を決定する。言い換えると、スケジューラ122は、メモリバス130上で駆動される予定である読み取り応答データまたは書き込みデータをすでに有していない次の所与の時点を決定する。一部の実施形態では、時点はクロックサイクルで測定される。また、スケジューラ122は、所与の時点でデータを提供するためにメモリ140にアクセスするための第1のコマンド及びメモリ150にアクセスするための第2のコマンドを予定するための時間があるかどうかも判断する。上述のように、コマンドプロセッサは、受け取ったメモリ要求をコマンドに変換する。一実施形態では、第1のコマンド及び第2のコマンドの1つ以上は、1つ以上の先行するコマンド及び/または1つ以上の後続のコマンドを有し、このことが、第1のコマンド及び第2のコマンドが発行され得るときにレイテンシ及び遅延を加える。
第1のアクセスコマンド及び第2のアクセスコマンドのうちの少なくとも1つが、メモリバス130が利用可能である所与の時点でデータを提供するための十分な時間がある場合、スケジューラ122は、第1のメモリアクセスコマンド及び第2のメモリアクセスコマンドの1つを選択する。優先度レベル、経過時間などの上述した基準が、スケジューラ122によって使用できる。その後、スケジューラ122は、異種メモリチャネル124を介してメモリ140及びメモリ150の1つに選択したアクセスコマンドを送信する。
図2を参照すると、タイミング図200の一実施形態の一般化されたブロック図が示される。示される実施形態では、メモリアクセスコマンドは、タイムライン上の異なるときに発行されると示されている。メモリアクセスコマンドは、異なるアクセスレイテンシを有する2つの異なるタイプのメモリの1つに発行される。多様な実施形態では、第1のタイプのメモリ(メモリタイプ1)は、第2のタイプのメモリ(メモリタイプ2)とは異なるデータストレージ技術を使用し、したがってメモリタイプ1は、少なくとも閾値時間量分、メモリタイプ2のアクセスレイテンシとは異なるアクセスレイテンシを有する。
示されるように、A、B、及びCとラベルが付けられた3つのメモリアクセスコマンドが、マークt1、t2、及びt3によって表示される時間に発行される。これらのメモリアクセスコマンドは、メモリタイプ1に発行される。これらのメモリアクセスコマンドに対する応答は、マークt4、t5、及びt6によって表示される時間に到着すると示されている。一部の実施形態では、タイムライン上のマークは、クロックサイクルと同等である。他の実施形態では、タイムライン上のマークは、所与の時点を表示する他の時間の測定と同等である。応答は、タイムライン上の3つのマークの決定的なアクセスレイテンシを有することに加えて、メモリアクセスコマンドA、B、及びCを発行する順序に対して順序正しく到着すると示されている。
さらに、別のメモリアクセスコマンドDが、マークt7によって表示される時間に発行されることが示されている。メモリアクセスコマンドDは、メモリタイプ2に対して発行される。応答は、マークt12によって表示される時間に受け取られると示されている。アクセスレイテンシは、メモリタイプ1に対して発行されたメモリアクセスコマンドA、B、及びCの場合よりもメモリタイプ2に対して発行されたメモリアクセスコマンドDの場合により大きくなる。一部の実施形態では、メモリタイプ2のアクセスレイテンシは、タイムライン上の5つのマークである。
示される実施形態では、メモリタイプ2は、第2のアクセスレイテンシを有する。例えば、メモリアクセスコマンドEは、タイムライン上のマークt13によって表示される時間にメモリタイプ2に発行される。一部の実施形態では、メモリタイプ2の第2のアクセスレイテンシは、タイムライン上の6つのマークである。示されるように、メモリアクセスコマンドEに対する応答は、マークt19によって表示される時間に到着すると示されている。一部の実施形態では、読み取りアクセスレイテンシは、メモリタイプ1及びメモリタイプ2の書き込みアクセスレイテンシに等しい。他の実施形態では、読み取りアクセスレイテンシは、メモリタイプ1及びメモリタイプ2の1つ以上の書き込みアクセスレイテンシとは異なる。示される実施形態では、アクセスコマンドA〜Eは、異なるアクセスレイテンシ210及び220を有し、コマンドA〜Eは、互いとは別々に発行されると示されている。ただし、このような発行方式は非効率である。
図3を参照すると、タイミング図300の別の実施形態の一般化されたブロック図が示される。示される実施形態では、メモリアクセスコマンドはタイムライン上の異なる時間に発行されると示されている。メモリアクセスコマンドは、少なくとも閾値時間量分異なるなど、かなり異なるアクセスレイテンシを有する2つの異なるタイプのメモリの1つに発行される。示されるように、メモリタイプ1に発行されたアクセスコマンドのレイテンシ310は、メモリタイプ2に発行されたアクセスコマンドのレイテンシ320に満たない。
タイミング図200と同様に、一部の実施形態では、タイムライン上のマークは、クロックサイクルと同等である。他の実施形態では、タイムライン上のマークは時点を表示する他の時間の測定と同等である。示されるように、A、B、及びCとラベルが付けられた3つのメモリアクセスコマンドが、マークt1、t2、及びt3によって表示される時間に発行される。これらのメモリアクセスコマンドは、メモリタイプ1に発行される。これらのメモリアクセスコマンドに対する応答は、マークt4、t5、及びt6によって表示される時間に到着するとして示されており、タイムライン上の3つのマークの決定的なレイテンシを有することに加えて、メモリアクセスコマンドA、B、及びCを発行する順序に対して順序正しい。
メモリアクセスコマンドDは、マークt7によって表示される時間にメモリタイプ2に発行される。応答が受け取られる前に、別のメモリアクセスコマンドEが、マークt8によって表示される時間にメモリタイプ1に発行される。マークt9によって表示される時間では、データ衝突なしにメモリタイプ1に別のメモリアクセスコマンドを発行することは不可能である。本例では、メモリタイプ1に発行されるメモリアクセスコマンドのアクセスレイテンシが、タイムライン上の3つのマークであり、メモリタイプ2に発行されるメモリアクセスコマンドのアクセスレイテンシが、タイムライン上で少なくとも5つのマークであることが知られている。したがって、メモリデータバスが、メモリアクセスコマンドDのスケジューリングのため、マークt12によって表示される時間には利用不可であることが知られている。メモリアクセスコマンドがマークt9によって表示される時間にメモリタイプ1に発行される場合、次いでデータ衝突はt12で発生するであろう。
t13にメモリタイプ2に発行されたメモリアクセスコマンドF、及び時間t14及びt15にメモリタイプ1に発行されたメモリアクセスコマンドG及びHなどの他のアクセスコマンドが発行されると示されている。メモリアクセスコマンドFのこの例でのアクセスレイテンシは、タイムライン上の6つのマークである。したがって、メモリデータバスが、メモリアクセスコマンドFのスケジューリングのためにマークt19によって表示される時間に利用できないことが知られている。メモリアクセスコマンドがマークt16によって表示される時間にメモリタイプ1に発行される場合、次いでデータ衝突はt19で発生するであろう。したがって、異種メモリチャネルを介して2つのタイプのメモリにメモリアクセスコマンドを発行するスケジューラは、メモリデータバス上でデータ衝突を回避するために、いつメモリデータバスがコマンドのレイテンシのために利用できないのかを考慮に入れる。
図4を参照すると、タイミング図400の別の実施形態の一般化されたブロック図が示される。示される実施形態では、メモリアクセスコマンド420及び430は、クロック410に基づいて異なる時間に発行されると示されている。示される実施形態では、クロック410のクロックサイクルは、時点を識別するために時間の測定を提供するために使用される。メモリアクセスコマンドは、少なくとも閾値時間量分、互いと異なるアクセスレイテンシを有する2つの異なるタイプのメモリの1つに発行される。一実施形態では、コマンド420は、第1のタイプのメモリ(メモリタイプ1)に発行され、コマンド430は、第2のタイプのメモリ(メモリタイプ2)に発行される。
示されるように、アクセスコマンド420のレイテンシは、アクセスコマンド430のレイテンシに満たない。レイテンシは、説明を容易にするために、縮尺通りに描かれていない。一部の実施形態では、読み取りコマンドの発行から有効なデータを含む受け取られた応答まで測定されたメモリタイプ1のアクセスレイテンシは、数十ナノ秒の規模である。示されている例では、レイテンシは2クロックサイクルとして示されている。多様な実施形態では、メモリアクセスコマンドの発行から有効なデータを含む場合もあれば、含まない場合もある受け取られた応答まで測定されたメモリタイプ2のアクセスレイテンシは、数百ナノ秒の規模である。説明を容易にするために、レイテンシは、縮尺通りに描かれるよりむしろ5クロックサイクルとして示される。
多様な実施形態では、メモリ読み取り要求またはメモリ書き込み要求などのメモリ要求は、アクセスされているメモリに基づいて1つ以上のコマンドに変換される。例えば、DRAM内の制御ロジックは、活性化(開放)トランザクション、ならびに一度は識別された行にアクセスするため、及び一度は行バッファに格納された修正されたコンテンツを閉鎖トランザクション中に識別された行に入れ直すためのDRAM内でのデータライン及び制御ラインのプリチャージなどの複雑なトランザクションを実行する。活性化/開放、列アクセス、読み取りアクセス、書き込みアクセス及びプリチャージ/閉鎖などの異なるDRAMトランザクションのそれぞれは、異なるそれぞれのレイテンシを有する。多くの場合、活性化トランザクション及びプリチャージトランザクションは、読み取りアクセス及び書き込みアクセスのトランザクションよりも著しく高いレイテンシを有する。
示されている例に示すコマンドの破線は、メモリアクセスコマンドとともに発行される可能性のある追加のコマンドを表す。例えば、DRAM用の活性化/開放コマンド及びプリチャージ/閉鎖コマンドは使用できるが、タイミング図400には示されていない。同様に、NVDIMM−Pの場合、トランザクション読み取り(X−READ)コマンド、送信読み取り(SREAD)コマンド、及び推測ステータス読み取りコマンドのそれぞれの後には、通常、大きな線形アドレスのためにアドレスを拡張することを可能にする拡張アドレス(XADR)コマンドが続く。これらの追加のコマンドは明確に示されていないが、コマンド420及び430の間に配置される可能性のために破線によって示される。したがって、通常、バックツーバックアクセスコマンドは、バックツーバッククロックサイクルでは発行されない。異種メモリチャネルを有するメモリコントローラのためのスケジューラは、発行のためにメモリアクセスコマンドを予定するときに考えられる追加のコマンドを考慮に入れる。
応答は応答440として示され、応答は、単一の共有メモリデータバス上で受け取られる。示されるように、メモリタイプ1のためのメモリアクセスコマンド「READ A」は、クロックサイクル(CC)1で発行される。この例の2クロックサイクルのアクセスレイテンシにより、有効な応答データはCC3で到着する。例に示されるように、有効なデータは、CC3及びCC4などの2つのクロックサイクルを消費する。各クロックサイクル中、データバス幅に等しいデータ量がメモリコントローラに返される。データバスのサポートされるサイズは、設計選択肢に基づく。
一実施形態では、メモリコントローラの中のスケジューラまたは他の制御ロジックは、メモリデータバスが利用可能となる予定である次の所与の時点がCC4の後であり、それはCC5であると判断する。スケジューラは、メモリタイプ1のためのメモリアクセスコマンド及びメモリタイプ2のためのメモリアクセスコマンドを予定する時間があると判断する。メモリタイプ1のメモリアクセスコマンドのための応答データ量は、メモリタイプ2のより早いメモリアクセスコマンドのために到着する応答データと衝突しないであろう。したがって、スケジューラは、CC2でメモリタイプ2のために読み取りコマンド「READ B」を、及びCC3でメモリタイプ1のためにメモリアクセスコマンド「READ C」を発行する。例の2クロックサイクルのアクセスレイテンシにより、「READ C」の有効な応答データはCC5及びCC6で到着する。例の5クロックサイクルのアクセスレイテンシにより、有効な応答データは、「READ B」のためにCC7及びCC8で到着する予定である。しかしながら、示されるように、要求されたデータは、まだメモリタイプ2から取り出される準備ができていなかった。要求されたデータがまだ利用できないことを記述する表示が、メモリコントローラによって受け取られ、後で再試行するためにスケジューラによって使用される。
スケジューラは、メモリデータバス上で駆動される予定である読み取り応答データをすでに有していない次の所与の時点がCC9であると判断する。スケジューラは、メモリタイプ1のためのメモリアクセスコマンド及びメモリタイプ2のためのメモリアクセスコマンドを予定する時間があると判断する。スケジューラは、発行するための次のメモリアクセスコマンドを選択するために、サービスの質(QoS)または他のメモリ要求の他の優先度レベル、メモリ要求のプロセスのまたはソフトウェアのスレッドの識別子(ID)、メモリ要求の経過時間、メモリアクセスコマンドがメモリタイプ1に発行されてからの時間量、メモリアクセスコマンドがメモリタイプ2に発行されてからの時間量などの情報を使用する。示された例では、スケジューラは、CC4でメモリタイプ2のために読み取りアクセスコマンド「READ D」を発行する。例の5クロックサイクルのアクセスレイテンシにより、有効な応答データはCC9及びCC10で到着する予定である。
スケジューラは、メモリデータバスが利用可能である次の所与の時点がCC11であると判断する。スケジューラは、メモリタイプ1のためのメモリアクセスコマンド及びメモリタイプ2のためのメモリアクセスコマンドを予定する時間があると判断する。スケジューラは、優先度レベル、経過時間などの上記の基準に基づいて、発行するための次のメモリアクセスコマンドを選択する。一部の実施形態では、スケジューラは、基準のそれぞれに所与の重みを割り当て、加重和を実行する。最大の和を有するメモリアクセスコマンドが、発行のために選択される。
一実施形態では、メモリコントローラは、「READ B」に対する応答データがいまメモリタイプ2から利用可用である旨の表示を別のチャネルまたはリンクインタフェースで受け取る。メモリアクセスコマンド「READ E」は、上記の読み取りコマンド「READ B」に対応する送信読み取りコマンド「SREAD B」よりも高い加重和を有するが、スケジューラは、メモリアクセスコマンド「READ E」のための応答データの量が、より早い読み取りコマンド「READ D」のために到着する応答データと衝突するであろうと判断する。したがって、スケジューラは、CC8で送信読み取りコマンド「SREAD B」を、CC9でメモリアクセスコマンド「READ E」を発行する。例の2クロックサイクルのアクセスレイテンシにより、「READ E」のための有効な応答データはC11及びCC12で到着する。この例の「SREAD B」の5クロックサイクルのアクセスレイテンシにより、有効な応答データはCC13及びCC14(図示せず)で到着する予定である。タイミング図400が読み取りアクセスコマンドに関して説明されるが、他の実施形態では、類似するタイミング図が、書き込みデータが共有メモリデータバス上に配置され、読み取り応答データまたは他の書き込みアクセスコマンドの他の書き込みデータのどちらかとのデータ衝突が発生する場合がある書き込みアクセスコマンドのために使用される。
一部の実施形態では、受け取られた応答データは、どのコマンドが応答データと関連付けられているのかを識別するタグまたは他の識別子を含む。他の実施形態では、要求データの到着のタイミングが、どのコマンドが応答データと関連付けられているのかを識別するために使用される。したがって、要求データはコマンドの発行に対応して順不同で到着するが、メモリコントローラの中のスケジューラは、受け取ったどのデータがどのコマンドに属するのかを追跡できる。
図5を参照すると、タイミング500の別の実施形態の一般化されたブロック図が示される。示される実施形態では、メモリアクセスコマンド520及び530は、クロック510に基づいて異なる時間に発行されると示されている。示される実施形態では、クロック510のクロックサイクルは、時点を識別するために時間の測定を提供するために使用される。メモリアクセスコマンドは、異なるアクセスレイテンシを有する2つの異なるタイプのメモリの1つに発行される。一実施形態では、コマンド520は、従来のDRAMである第1のタイプのメモリに発行され、コマンド530は、NVDIMM−Pである第2のタイプのメモリに発行される。しかしながら異なるアクセスレイテンシを有する他のタイプのメモリが考えられ、意図される。
コマンドレイテンシは、説明を容易にするために縮尺通りに描かれていない。一部の実施形態では、従来のDRAMのコマンドレイテンシは、数十ナノ秒の規模である。示されている例では、レイテンシは2クロックサイクルとして示されている。多様な実施形態では、NVDIMM−Pのアクセスレイテンシは、数百ナノ秒の規模である。示されている例では、レイテンシは7クロックサイクルとして示されている。多様な実施形態では、メモリ読み取り要求などのメモリ要求は、アクセスされているメモリに基づいて1つ以上のコマンドに変換される。上述のように、DRAM内の制御ロジックは、活性化トランザクション及び閉鎖トランザクションのような複雑なトランザクションを実行する。さらに、行アドレスのためのストローブ及び列アドレスのためのストローブ560など、他の信号も生成される。
以前のタイミング図400と同様に、タイミング図500は、読み取りアクセスコマンドに関して説明される。しかしながら、他の実施形態では、類似するタイミング図が、書き込みコマンドが共有メモリデータバス上に配置され、読み取り応答データまたは他の書き込みアクセスコマンドの他の書き込みデータのどちらかとのデータ衝突が発生する場合がある書き込みアクセスコマンドのために使用される。応答は応答540として示され、応答は単一メモリデータバス上で受け取られる。スケジューラは、優先順位レベル、経過時間などの上記の基準に基づいて、発行するための次のメモリアクセスコマンドを選択する。一部の実施形態では、スケジューラは、基準のそれぞれに所与の重みを割り当て、発行するための次のコマンドを選択するときに使用するための加重和を実行する。
示されるように、スケジューラは、CC2でメモリタイプ2のためにトランザクション読み取りコマンド「X−READ A」を発行する。大きな線形アドレスのためにアドレスの拡張を可能にする拡張アドレスコマンド「XADR A」は、CC3でただちに続く。例の7クロックサイクルのアクセスレイテンシにより、有効な応答データはCC9で到着する予定である。一部の実施形態では、レイテンシは、コマンド「X−READ A」からよりむしろコマンド「XADR A」から測定される。多様な実施形態では、要求されたデータは複数のクロックサイクルを消費する。しかしながら、説明を容易にするために、コマンド「X−READ A」に対して要求されたデータは、単一のクロックサイクルを消費する。
スケジューラは、CC3でメモリタイプ1のためにメモリアクセスコマンド「READ B」を発行する。例の2クロックサイクルのアクセスレイテンシにより、有効な応答データはCC5で到着する。示されるように、活性化コマンド「ACTIVATE」は、CC3でコマンド「READ B」を発行することに備えるためにCC1で発行される。ストローブ560上の列アドレスストローブ(CAS)は、CC3で論理低値でアサートされる。行アドレスと列アドレスとは、対応するストローブのアサーションと整合したポインタ570としてマークされたアドレスライン上に設けられる。示されるように、コマンド「READ B」のために要求されたデータは、CC5、CC6、CC7、及びCC8などの4つのクロックサイクルを消費する。スケジューラは、メモリデータバスが利用可能である次の所与の時点を決定するとき、受け取った要求されたデータによって消費されるクロックサイクル数を考慮に入れる。
一実施形態では、スケジューラは、メモリデータバスが利用可能である次の所与の時点がCC10であると判断する。スケジューラは、メモリタイプ1のためのメモリアクセスコマンドを予定する時間があるが、メモリタイプ2のためのメモリアクセスコマンドを予定する時間はないと判断する。示されるように、メモリタイプ2のための次のメモリアクセスコマンドを発行する最も早い時点は、コマンド「XADR A」の後であり、それはCC4である。7クロックサイクルのアクセスレイテンシにより、要求されたデータは、CC10よりむしろCC11で到着する予定である。したがって、スケジューラは、CC8でメモリタイプ1のためのメモリアクセスコマンド「READ C」を発行する。例の2クロックサイクルのアクセスレイテンシにより、有効な応答データはCC10で到着する。
示されるように、CC8でコマンド「READ C」を発行することに備えるために、プリチャージコマンド「PRECHARGE」及び活性化コマンド「ACTIVATE」がそれぞれCC4及びCC6で発行される。閉じるバンクは、ポインタ570としてマークされたアドレスライン上の「BANK」データの中で指定される。一部の実施形態では、受け取られた応答データは、どのコマンドが応答データと関連付けられているのかを識別するタグまたは他の識別子を含む。他の実施形態では、要求データの到着のタイミングが、どのコマンドが応答データと関連付けられているのかを識別するために使用される。したがって、要求データはコマンドの発行に対応して順不同で到着するが、メモリコントローラの中のスケジューラは、受け取ったどのデータがどのコマンドに属するのかを追跡できる。
図6を参照すると、コンピューティングシステム600の別の実施形態のブロック図が示される。示されるように、コンピューティングシステム600は、クライアント610のそれぞれとメモリコントローラ630との間に通信ファブリック620を含む。メモリコントローラ630は、メモリバス650を介してメモリコントローラ630とメモリ670とメモリ680との間でメモリトラフィックを転送するための異種メモリチャネル638を含む。メモリ670及びメモリ680のそれぞれは、クライアント610によってアクセスされるデータを格納する。一部の実施形態では、システム600の構成要素は、システムオンチップ(SOC)などの集積回路(IC)上の個々のダイである。他の実施形態では、構成要素は、システムインパッケージ(SiP)またはマルチチップモジュール(MCM)の中の個々のダイである。電源コントローラ、割り込みコントローラ、ネットワークリンクインタフェースなどは、説明を容易にするために示されていない。
多様な実施形態では、メモリバス650は、双方向共有バス構造を利用する。多様な実施形態では、メモリ670及びメモリ680は異なるデータストレージ技術を使用し、したがってメモリ670は、少なくとも閾値時間量分、メモリ680のアクセスレイテンシとは異なるアクセスレイテンシを有する。多様な実施形態では、メモリ670及びメモリ680の1つ以上は、クライアント610によってシステムメモリとして使用される。
一実施形態では、メモリ670及びメモリ680の一方がさまざまなタイプのDRAMの1つであるとき、異種メモリチャネル638とメモリコントローラ630との間のそれぞれのインタフェースのためのプロトコルの一例は、ダブルデータレート(DDR)タイプのプロトコルである。プロトコルは、クロックサイクルあたりのデータ転送の数、信号電圧レベル、信号タイミング、信号位相及びクロック位相、ならびにクロック周波数など、情報転送のために使用される値を決定する。プロトコルの例は、DDR2 SDRAM、DDR3 SDRAM、GDDR4(グラフィックスダブルデータレート、バージョン4)、SDRAM、GDDR5、SDRAM、GDDR6、HBM2などを含む。メモリコントローラ630は、異種メモリチャネル638及び他のメモリチャネル(図示せず)にインタフェースし、対応するプログラムに従うための制御回路を含む。
単一のメモリコントローラ630が示されているが、他の実施形態では、別の数のメモリコントローラがコンピューティングシステム600で使用される。示されるように、メモリコントローラ630は、通信ファブリック620を介してクライアント610から受け取られたメモリアクセス要求を待ち行列に入れるための要求待ち行列632を含む。また、メモリコントローラ630は、メモリ670及びメモリ680から受け取った応答を格納するための応答待ち行列634も有する。一実施形態では、要求待ち行列632は、メモリ読み取り要求を格納するためにメモリ670及びメモリ680のそれぞれに別個の読み取り待ち行列を含む。さらに、要求待ち行列632は、メモリ書き込み要求を格納するためにメモリ670及びメモリ680のそれぞれに別個の書き込み待ち行列を含む。一部の実施形態では、メモリコントローラ630は、メモリ670及びメモリ680の1つ以上が、アクセスに対する応答として失敗ステータスを提供するデータストレージ技術を含むとき、失敗待ち行列639も含む。一実施形態では、メモリ670及びメモリ680のうちの1つは、失敗ステータス応答を提供するNVDIMM−Pである。
一部の実施形態では、要求待ち行列632は、受け取ったメモリアクセス要求を格納するための1つ以上の待ち行列と、受け取った要求から変換され、1つ以上の待ち行列から選択された、予定されたメモリアクセスコマンドとを格納するための別個の待ち行列を含む。スケジューラ636は、メモリ670及びメモリ680への順不同の発行のために要求待ち行列632に格納されたメモリアクセスコマンドを選択するための制御ロジックを含む。したがって、メモリコントローラ630は、メモリ670及びメモリ680へのメモリアクセス要求の順不同の発行をサポートする。
多様な実施形態では、メモリコントローラ130の中のスケジューラ636は、サービスの質(QoS)または他の優先度情報、経過時間、プロセスのまたはスレッドの識別子(ID)、メモリアクセスコマンドがメモリ670に発行されてからの時間量、メモリアクセスコマンドがメモリ680に発行されてからの時間量、及び同じメモリチャネルをターゲットとする、同じランクをターゲットとする、同じバンクをターゲットとする、及び/または同じページをターゲットとするなどの他の格納されている要求との関係性に基づいて、格納されているメモリアクセスコマンドの発行を予定する。一部の実施形態では、スケジューラ636は、基準のそれぞれに所与の重みを割り当て、加重和を実行する。最大の和を有するメモリアクセスコマンドまたはステータスアクセスコマンドが、発行のために選択される。
多様な実施形態では、通信ファブリック620は、クライアント610とメモリコントローラ630との間でトラフィックを前後に転送し、それぞれの通信プロトコルをサポートするインタフェースを含む。一部の実施形態では、通信ファブリック620は、少なくとも要求及び応答を格納するための待ち行列と、内部ネットワーク全体で要求を送信する前に受け取った要求間でアービトレーションするための選択ロジックと、パケットを構築し、復号するためのロジックと、パケットのためのルートを選択するためのロジックとを含む。
示される実施形態では、クライアント610は、中央演算処理装置(CPU)612、グラフィックスプロセッシングユニット(GPU)614、及びハブ616を含む。ハブ616は、マルチメディアエンジン618と通信するために使用される。CPU612、GPU614、及びマルチメディアエンジン618は、アプリケーションを処理できるコンピューティングリソースの例である。示されていないが、他の実施形態では、他のタイプのコンピューティングリソースがクライアント610に含まれる。一部の実施形態では、CPU612の中の1つ以上のプロセッサコアのそれぞれが、所与の選択されたインストラクションセットアーキテクチャ(ISA)に従って命令を実行するための回路を含む。多様な実施形態では、CPU612の中のプロセッサコアのそれぞれは、所与のISAの命令を処理するために使用されるスーパースカラ、マルチスレッドマイクロアーキテクチャを含む。
一実施形態では、GPU 614は、相当数の並列実行レーンを備えた高並行データマイクロアーキテクチャを含む。一実施形態では、マイクロアーキテクチャは、並列実行レーンのために単一命令複数データ(SIMD)パイプラインを使用する。マルチメディアエンジン618は、マルチメディアアプリケーションのために音声データ及び視覚データを処理するためのプロセッサを含む。一部の実施形態では、コンピューティングシステム600のアドレス空間は、少なくともCPU612、GPU614及びハブ616、ならびに入出力(I/O)周辺デバイス(図示せず)及び他のタイプのコンピューティングリソースなどの1つ以上の他の構成要素との間で分割される。メモリマップは、どのアドレスがどの構成要素にマッピングされるのか、したがって特定のアドレスに対するメモリ要求がCPU612、GPU614、及びハブ616のどの1つにルーティングされるべきなのかを決定するために維持される。
多様な実施形態では、メモリ670及びメモリ680の1つ以上は、I/Oコントローラ及びバス660及びメモリバス650を通してディスクメモリ662からのデータで充填される。要求されたブロックを含む対応するキャッシュフィルラインは、元のメモリアクセス要求を完了するために、メモリ670及びメモリ680の1つ以上から、クライアント610の中のキャッシュメモリサブシステムの対応する1つに伝達される。キャッシュフィルラインは、キャッシュの1つ以上のレベルに配置される。一実施形態では、ディスクメモリ662は、データの不揮発性の二次ストレージを提供する。一実施形態では、ディスクメモリ662は、1つ以上のハードディスクドライブ(HDD)を含む。他の実施形態では、ディスクメモリ662は、ソリッドステートディスク(SSD)を含む。
図7を参照すると、メモリコントローラ700の一実施形態の一般化された図が示される。示される実施形態では、メモリコントローラ700は、通信ファブリックを介するクライアントへのインタフェース710、受け取ったメモリアクセス要求及び受け取った応答を格納するための待ち行列720、制御ユニット750、ならびにメモリデータバス及び異種メモリチャネルを介する、それぞれが異なるメモリ技術を使用する複数のメモリデバイスへのインタフェース780を含む。インタフェース710、780、及び782のそれぞれは、それぞれの通信プロトコルをサポートする。一実施形態では、インタフェース780は、インタフェース710を介して受け取ったメモリ要求に対応するメモリアクセスコマンドを、第1のメモリタイプのデータストレージ技術を含むメモリデバイスに送信するためのメモリコマンドバスへのインタフェースである。一実施形態では、インタフェース782は、メモリコントローラ700と、第1のメモリタイプとは異なる第2のメモリタイプのデータストレージ技術を含む別のメモリデバイスとの間でデータを転送するためのメモリデータバスへのインタフェースである。多様な実施形態では、第1のメモリタイプのアクセスレイテンシは、少なくとも閾値時間量分、第2のメモリタイプのアクセスレイテンシとは異なる。
示される実施形態では、待ち行列720は、要求待ち行列730、応答待ち行列740、及び失敗待ち行列742を含む。一実施形態では、待ち行列720は、第1のメモリタイプをターゲットとする、受け取った読み取り要求を格納するための第1の読み取り待ち行列732、及び第2のメモリタイプをターゲットとする、受け取った読み取り要求を格納するための第2の読み取り待ち行列734を含む。2つの読み取り待ち行列が、2つの異なるメモリタイプをターゲットとする読み取り要求を受け取るために示されているが、他の実施形態では、別の数の読み取り待ち行列が、別の数の異なるメモリタイプをターゲットとする読み取り要求を受け取るために使用される。さらに、待ち行列720は、第1のメモリタイプをターゲットとする、受け取った書き込み要求を格納するための第1の書き込み待ち行列736、及び第2のメモリタイプをターゲットとする、受け取った書き込み要求を格納するための第2の書き込み待ち行列738を含む。一部の実施形態では、待ち行列720は、第1のメモリタイプ及び第2のメモリタイプの1つ以上がアクセスに対する応答として失敗ステータスを提供するデータストレージ技術を含むとき、失敗待ち行列742も含む。一実施形態では、第1のメモリタイプ及び第2のメモリタイプの1つは、失敗ステータス応答を提供するNVDIMM−Pである。一実施形態では、待ち行列720は、待ち行列732〜738の1つ以上、または1つが使用される場合には一元化された待ち行列から選択された、予定されたメモリアクセス要求を格納するための待ち行列739を含む。
一部の実施形態では、読み取りスケジューラ752は、第2の読み取り待ち行列734から順不同で読み取り要求を選択するためだけではなく、第1の読み取り待ち行列732から順不同で読み取り要求を選択するためのアービトレーションロジックも含む。一実施形態では、読み取りスケジューラ752は、それぞれの要求が第1の読み取り待ち行列732または第2の読み取り待ち行列734のどちらかから所与のクロックサイクルで予定するために利用可能であるとき、第1の読み取り待ち行列732または第2の読み取り待ち行列734のどちらかから要求を選択する。一部の実施形態では、読み取りスケジューラ752は、サービスの質(QoS)または他の優先度情報、経過時間、プロセスのまたはスレッドの識別子(ID)、及び同じメモリチャネルをターゲットとする、同じランクをターゲットとする、同じバンクをターゲットとする、及び/または同じページをターゲットとするなどの他の格納された要求との関係性に基づいた第1のメモリタイプ及び第2のメモリタイプの1つに対する順不同の発行に対する読み取り要求を予定する。
第1のメモリタイプ及び第2のメモリタイプの複数の決定的なアクセスレイテンシにも関わらずメモリデータバス上でデータ衝突を回避するために、一実施形態では、読み取りスケジューラ752は、メモリデータバスが利用可能である次の所与の時点を決定する。一部の実施形態では、時点はクロックサイクルで測定される。読み取りスケジューラ752は、所与の時点で応答データを提供するために、第1の読み取り待ち行列732に格納された、選択された読み取り要求に対応する第1のメモリアクセスコマンドを予定するための十分な時間があるかどうかを判断する。さらに、読み取りスケジューラ752は、所与の時点で応答データを提供するために、第2の読み取り待ち行列734に格納された、選択された読み取り要求に対応する第2のメモリアクセスコマンドを予定するための十分な時間があるかどうかも判断する。言い換えると、読み取りスケジューラ752は、第1の読み取り待ち行列732または第2の読み取り待ち行列734のどちらかによって受け取られた新しいメモリアクセスコマンドを、新しいメモリアクセスコマンドに対する応答が、所与の時点でメモリデータバス上で受け取られるように、第1のメモリデバイスまたは第2のメモリデバイスのどちらかへの発行のために予定できるかどうかを判断する。多様な実施形態では、所与の時点は、メモリデータバスが、メモリデータバス上で駆動されるデータを有する予定ではなく、まだスケジューリングのために検討されていない次に利用可能な時点である。
一部の実施形態では、第1のメモリタイプ及び第2のメモリタイプの1つ以上のアクセスレイテンシは非決定的であるが、応答は決定的なレイテンシを有する。応答は、有効なデータが応答に含まれているかどうかを記述する表示とともに決定的なレイテンシの後に返される。有効なデータが応答に含まれていない場合、再試行が後で試される。したがって、メモリアクセスコマンドは、後の再試行のために失敗待ち行列742に格納される。上述のように、他のコマンドが、ときおりメモリアクセスコマンドとともに追加で使用される。これらの他のコマンドも、メモリアクセスコマンドのレイテンシにレイテンシを加える。
所与の時点でメモリデータバス上で応答データを提供するために、第1のアクセスコマンド及び第2のアクセスコマンドのうちの少なくとも1つを発行するための十分な時間がある場合、読み取りスケジューラ752は、第1のメモリアクセスコマンド及び第2のメモリアクセスコマンドの1つを選択する。優先度レベル、経過時間などの上述した基準がスケジューラ752によって使用できる。さらに、加重値が使用できる。一実施形態では、読み取りスケジューラ752は、選択したアクセスコマンドを異種メモリチャネルを介して対応するメモリタイプに送信する前に、選択したアクセスコマンドを待ち行列739に入れる。第1の読み取り待ち行列732または第2の読み取り待ち行列734のどちらかに格納された保留中の新しいメモリアクセスコマンドを、所与の時点での発行のために予定できるかどうかを判断するために、一実施形態で、読み取りスケジューラ752は、新しいメモリアクセスコマンドの応答レイテンシがNクロックサイクルであると判断し、Nは整数である。読み取りスケジューラ752は、所与の時点のNクロックサイクル前に相当するより早い時点を識別し、メモリコマンドバスがそのより早い時点で利用可能であるかどうかを判断する。
読み取りスケジューラ752が、上記の新しいメモリアクセスコマンドが予定されるほど十分な時間があると判断する場合、次いで読み取りスケジューラ752は、より早い時点での発行のために新しいメモリアクセスコマンドを予定し、メモリデータバスが所与の時点で利用不可である旨の表示を格納する。一部の実施形態では、どの時点でメモリデータバスが利用可能であるのか、及びどの時点でメモリデータバスが利用不可であるのかを示すために、ビットのベクトルがレジスタに格納される。一実施形態では、レジスタは、どの時点がスケジューリングにまだ検討されていないのか、及びどの時点がスケジューリングに検討されたのかを記述する表示を格納するために使用される。多様な実施形態では、これらの格納された表示は、発行のためのコマンドの将来のスケジューリングのために他の所与の時点を決定するために使用できる。
一部の実施形態では、第1のメモリタイプ及び第2のメモリタイプの複数の決定的なアクセスレイテンシにも関わらずメモリバス上でのデータ衝突を回避するために、読み取りスケジューラ752は、メモリデータバスが利用可能である次の所与の時点を初期に決定するのと対照的に、メモリコマンドバスが利用可能である次の時点を決定する。再び、一部の実施形態では、時点はクロックサイクルで測定される。一部の実施形態では、読み取りスケジューラ752は、メモリコマンドバスが利用可能である次の時点にそれぞれのレイテンシを加えることによって、第1の読み取り待ち行列732及び第2の読み取り待ち行列734に格納されたそれぞれ異なるタイプの保留中のメモリアクセスコマンドのためのそれぞれの所与の時点を決定する。
第1の読み取り待ち行列732または第2の読み取り待ち行列734のどちらかに格納された新しい保留中のメモリアクセスコマンドを、メモリコマンドバスが利用可能である次の時点での発行のために予定できるかどうかを判断するために、一実施形態では、読み取りスケジューラ752は、新しいメモリアクセスコマンドの応答レイテンシがNクロックサイクルであると判断し、Nは整数である。読み取りスケジューラ752は、メモリコマンドバスが利用可能であるNクロックサイクル後の時点に相当する所与の時点を識別する。その後、読み取りスケジューラ752は、メモリデータバスが、その後の所与の時点で利用可能であるかどうかを判断する。
一部の実施形態では、読み取りスケジューラ752は、第1の読み取り待ち行列732及び第2の読み取り待ち行列734に格納された1つ以上の保留中のメモリアクセスコマンドのそれぞれについて、それぞれ1つ以上の所与の時点ごとにメモリデータバスが利用可能であるかどうかを判断するために、上述のように格納されたビットのベクトルを使用する。メモリデータバスが、単一の保留中のメモリアクセスコマンドのためだけにそれぞれの所与の時点の間に利用可能である場合、次いで読み取りスケジューラ752は、その単一の保留中のメモリアクセスコマンドを、メモリコマンドバスが利用可能である次の所与の時点に予定する。メモリデータバスが複数の保留中のメモリアクセスコマンドのためにそれぞれの所与の時点の間に利用可能である場合、次いで読み取りスケジューラ752は、優先度レベル、経過時間などの上述の基準に基づいて、発行するための保留中のメモリアクセスコマンドの1つを選択する。読み取りスケジューラ752は、メモリコマンドバスが利用可能である次の時点に、選択した保留中のメモリアクセスコマンドを予定する。
書き込みスケジューラ754は、読み取りスケジューラ752によって使用されるのと同様の選択ロジックを、第1の書き込み待ち行列736及び第2の書き込み待ち行列738のために含む。多様な実施形態では、書き込みスケジューラ754も、共有メモリデータバス上で駆動されるデータによって引き起こされるデータ衝突を検討する。スケジューラ752によって使用される決定アルゴリズムを実装する制御ロジックも、書き込みスケジューラ754によって使用される。一実施形態では、応答スケジューラ756は、優先度に基づいて応答を順不同でクライアントに発行するための類似するロジックを含む。一部の実施形態では、受け取った応答データは、応答スケジューラ756が、第1の読み取り待ち行列732または第2の読み取り待ち行列734のどちらかに格納されたどのコマンドが、応答データと関連付けられているのかを識別するために使用するタグまたは他の識別子を含む。他の実施形態では、メモリデータバス上の要求データの到着のタイミングは、どのコマンドが応答データと関連付けられているのかを識別するために、応答スケジューラ756によって使用される。したがって、要求データはコマンドの発行に対応して順不同で到着するが、応答スケジューラ756は、受け取ったどのデータがどのコマンドに属するのかを追跡できる。
一部の実施形態では、読み取りスケジューラ752が発行するための所与のコマンドを予定すると、応答スケジューラ756は、要求された読み取りデータが共有メモリデータバス上に到着する予定である所与の時点を決定する。一実施形態では、応答スケジューラ756は、所与のコマンドのレイテンシを、読み取りスケジューラ752が所与のコマンドを発行することを予定する時点に加える。一部の実施形態では、応答スケジューラ756は、識別子を生成する。一部の実施形態では、識別子は、所与のコマンドに対応する情報を格納する要求待ち行列の中のエントリの表示である。他の実施形態では、識別子は、スレッド識別子、及び所与のコマンドに対応するメモリ要求のターゲットアドレスの一部分の1つ以上の組み合わせである。応答スケジューラ756は、識別子の、所与の時点との関連付けを格納する。一実施形態では、表が使用される。したがって、応答スケジューラ756は、所与のコマンドに挿入されたタグに基づいてまたは到着する要求された読み取りデータと関連付けられたパケットで、よりもむしろ、所与の時点に基づいて共有メモリデータバス上に到着する要求された読み取りデータで、所与のコマンドを識別できる。
一部の実施形態では、制御レジスタ770は、カレントモードの表示を格納する。例えば、オフチップメモリデータバス及びメモリデバイスは、所与のときに読み取りモードまたは書き込みモードのどちらかをサポートする。したがって、トラフィックは、カレントモード中に所与の単一の方向でルーティングされ、データバスターンアラウンドレイテンシの後にカレントモードが変更されると、方向を変更する。多様な実施形態では、制御レジスタ770は、読み取りモード中に送信する読み取り要求の閾値数(読み取りバースト長)を格納する。一部の実施形態では、制御レジスタ770は、発行するために待ち行列732〜738に格納された要求を選択するための、読み取りスケジューラ752及び書き込みスケジューラ754の中の選択アルゴリズムによって使用される基準の重みを格納する。
ここで図8を参照すると、2つの異なるメモリタイプへの発行に対するメモリ要求を予定するための方法800の一実施形態が示される。説明のために、(図9〜図12においてだけではなく)本実施形態のステップも順番に示される。しかしながら、説明する方法の多様な実施形態では、説明する要素の1つ以上が、示されているのとは異なる順序で同時に実行される、または完全に省略されることに留意されたい。他の追加の要素も、所望されるように実行される。本明細書に説明される多様なシステムまたは装置のいずれも、方法800を実装するように構成される。
ノード内の1つ以上のクライアントは、コンピュータプログラム、つまりソフトウェアアプリケーションを実行する。コンピューティングリソースは、所与のメモリアクセス要求が、1つ以上のクライアントの所与のクライアント内のキャッシュメモリサブシステム内で失敗すると判断する。クライアントは、2つの異なるメモリのそれぞれに接続された異種メモリチャネルを有するメモリコントローラを介して、その2つの異なるメモリによって実装されるシステムメモリにメモリアクセス要求を送信する。第1のタイプのメモリの1つ以上のアクセスレイテンシと、第2のタイプのメモリの1つ以上のアクセスレイテンシとの差は、閾値時間量を超える。所与のメモリチャネルに接続された第1のタイプのメモリに対するメモリ要求は、それらが受け取られると格納される(ブロック802)。所与のメモリチャネルに接続された第2のタイプのメモリに対するメモリ要求は、それらが受け取られると格納される(ブロック804)。
第1のタイプのメモリに対するメモリ要求は、少なくとも優先度及びメモリ要求のターゲットに基づいて、順不同の発行についてマークされる(ブロック806)。第2のタイプのメモリに対するメモリ要求は、少なくとも優先度及びメモリ要求のターゲットに基づいて順不同の発行についてマークされる(ブロック808)。したがって、メモリコントローラは、第1のメモリ及び第2のメモリのそれぞれについて順不同の発行をサポートする。メモリ要求は、所与の時点で応答データを提供するように発行のために予定される(ブロック810)。例えば、メモリ要求は、異なるアクセスレイテンシに関わらず、共有メモリデータバス上でデータ衝突なしに、混在して予定される。
多様な実施形態では、スケジューラまたはメモリコントローラの中の他の制御ロジックは、第1のメモリタイプのための第1のコマンド及び第2のメモリタイプのための第2のコマンドなどの2つの保留中のメモリアクセスコマンドがあるかどうかを判断する。スケジューラは、共有メモリデータバス上でデータ衝突を引き起こさずに、第1のコマンド及び第2のコマンドのそれぞれを発行できるかどうかを判断する。例えば、第1のタイプのメモリ及び第2のタイプのメモリのそれぞれのアクセスレイテンシに加えて、第1のコマンド及び第2のコマンドの選択したコマンドを発行するための時点に基づいて、メモリコントローラは、読み取り応答データまたは書き込みデータが共有メモリデータバスに到着する予定である時点を追跡する。一部の実施形態では、時点はクロックサイクルで測定される。
第1のコマンド及び第2のコマンドのどちらかを選択しても共有メモリデータバスでデータ衝突が予定されないであろう場合、次いで第1のコマンド及び第2のコマンドのそれぞれは発行の候補のままである。このような場合、スケジューラは、アービトレーションロジックに基づいて第1のコマンド及び第2のコマンドからコマンドを選択する。他の実施形態では、第1のコマンドを発行するのか、それとも第2のコマンドを発行するのかを判断することは、読み取り応答データまたは書き込みデータが共有メモリデータバスで駆動される特定の所与の時点を選択することで開始する。
ここで図9を参照すると、2つの異なるメモリタイプへの発行に対するメモリ要求を予定するための方法900の一実施形態が示される。読み取り応答データがメモリデータバス上で駆動される次の所与の時点が識別される(ブロック902)。例えば、アクセスレイテンシと、各発行済みのメモリアクセスコマンド及びステータスアクセスコマンドごとに返す要求されたデータの予定量の両方とも、次の所与の時点を決定するときに検討される。一部の実施形態では、時点はクロックサイクルで測定される。
読み取り応答データが、すでに所与の時点に到達する予定である場合(条件ブロック904の「yes」分岐)、次いで方法900の制御フローは、次の所与の時点が識別されるブロック902に戻る。例えば、現在選択されているクロックサイクル後の次のクロックサイクルが検討される。代わりに、2つの異なるメモリの1つから到着する予定である要求された読み取りデータのために消費される所与のクロックサイクル数に等しいカウントが、現在のクロックサイクルに追加される。読み取り応答データが所与の時点のために到着する予定ではない場合(条件ブロック904の「no」分岐)、次いで所与の時点で応答データを提供するために、第1のメモリタイプのためのメモリアクセスコマンドを予定するための十分な時間があるかどうかが判断される(ブロック906)。続いて、所与の時点で応答データを提供するために、第1のメモリタイプとは異なる第2のメモリタイプのためのメモリアクセスコマンドを予定するための十分な時間があるかどうかが判断される(ブロック908)。
一部の実施形態では、所与の時点でデータを提供するために、第2のメモリタイプのためのステータスアクセスコマンドを予定するための十分な時間があるかどうかも判断される(ブロック910)。一部の実施形態では、ステータスアクセスコマンドのアクセスレイテンシは、第2のメモリタイプのためのメモリアクセスコマンドのアクセスレイテンシとは異なる。コマンドは、所与の時点で応答データを提供できる候補コマンドから選択される(ブロック912)。多様な実施形態では、スケジューラは、優先度レベル、経過時間などの上述の基準に基づいて発行するための次のメモリアクセスコマンドまたはステータスアクセスコマンドを選択する。選択したコマンドは、選択したコマンドが所与の時点で応答データを提供できるようにする時点での発行のために予定される(ブロック914)。例えば、異種メモリチャネルを有するメモリコントローラのためのスケジューラは、発行するために選択したコマンドを準備するために使用される考えられる追加のコマンド、ならびにメモリアクセスコマンド及びステータスアクセスコマンドを発行のために予定するときのそのそれぞれのレイテンシを考慮に入れる。
上述のように、方法900は、第1のメモリタイプ及び第2のメモリタイプの複数の決定的なアクセスレイテンシにも関わらず、メモリデータバス上でデータ衝突を回避するためのステップを説明する。しかしながら、上述のように、他の実施形態では、異種メモリチャネルを有するメモリコントローラのためのスケジューラは、メモリデータバスが利用可能である次の所与の時点を初期に決定することと対照的に、メモリコマンドバスが利用可能である次の時点を決定する。一部の実施形態では、時点はクロックサイクルで測定される。一部の実施形態では、スケジューラは、メモリコマンドバスが利用可能である次の時点にそれぞれのレイテンシを加えることによって、それぞれ異なるタイプの保留中のメモリアクセスコマンドのためのそれぞれの所与の時点を決定する。
新しい保留中のメモリアクセスコマンドを、メモリコマンドバスが利用可能である次の時点での発行のために予定できるかどうかを判断するために、一実施形態では、スケジューラは、新規メモリアクセスコマンドの応答レイテンシがNクロックサイクルであると判断し、Nは整数である。スケジューラは、メモリコマンドバスが利用可能であるNクロックサイクル後の時点に相当する後の所与の時点を識別する。その後、スケジューラは、メモリデータバスが後の所与の時点で利用可能であるかどうかを判断する。
メモリデータバスが、単一の保留中のメモリアクセスコマンドのためだけにそれぞれの所与の時点の間に利用可能である場合、次いでスケジューラは、その単一の保留中のメモリアクセスコマンドを、メモリコマンドバスが利用可能である次の時点に予定する。メモリデータバスが複数の保留中のメモリアクセスコマンドのためにそれぞれの所与の時点の間に利用可能である場合、次いでスケジューラは、優先度レベル、経過時間などの上述の基準に基づいて、発行するための保留中のメモリアクセスコマンドの1つを選択する。スケジューラは、メモリコマンドバスが利用可能である次の時点に、選択した保留中のメモリアクセスコマンドを予定する。
方法1000〜1200のための以下の説明は、メモリデータバスが利用可能である次の所与の時点を最初に決定し、続いてメモリコマンドバス上で発行されるメモリアクセスコマンドを予定するためにより早い時点を決定するためのステップを説明する。しかしながら、多様な他の実施形態では、上述のように、スケジューラは、メモリコマンドバスが利用可能である次の時点を決定し、続いて読み取り応答データが、衝突なしにメモリデータバス上に到着する予定である後の時点を決定する。方法900〜1200のステップは、読み取りアクセスコマンドに関して説明されるが、他の実施形態では、類似するロジック及びステップが、書き込みデータは共有メモリデータバスに配置され、読み取り応答データまたは共有メモリデータバス上で駆動される他の書き込みアクセスコマンドの他の書き込みデータのどちらかとのデータ衝突が発生する場合がある書き込みアクセスコマンドのために使用される。
ここで図10を参照すると、2つの異なるメモリタイプへの発行に対するメモリ要求を予定するための方法1000の一実施形態が示される。アクセスコマンドを選択し、選択したアクセスコマンドがターゲットとされる所与の時点で応答データを提供できるようにする時点での発行のためにアクセスコマンドを予定するために、特定のタイミング値が評価される。一部の実施形態では、以下のステップは、(図9の)方法900のブロック914の後に実行される。第1の時間量は、コマンド発行のための所与の時点と、第1のメモリタイプのために予定された第1のアクセスコマンドのための直近の時点との間で決定される(ブロック1002)。第1のメモリタイプのアクセスコマンドの起こり得る次の発行に備えるための任意の必要な追加のコマンドのレイテンシは、第1のメモリタイプのためのアクセスコマンドの第1のレイテンシに加えられる(ブロック1004)。類似するステップは、第2のメモリタイプのためのアクセスコマンドについて実行される。例えば、第2の時間量は、所与の時点と、第2のメモリタイプのために予定された第2のアクセスコマンドのための直近の時点との間で決定される(ブロック1006)。第2のメモリタイプのためのアクセスコマンドの起こり得る次の発行に備えるための任意の必要な追加のコマンドのレイテンシは、第2のメモリタイプのためのアクセスコマンドの第2のレイテンシに加えられる(ブロック1008)。
第3の時間量は、所与の時点と、第2のメモリタイプの予定された第3のアクセスコマンドのための直近の時点との間で決定される(ブロック1010)。第2のメモリタイプのための第3のアクセスコマンドの起こり得る次の発行に備えるための任意の必要な追加のコマンドのレイテンシは、第2のメモリタイプのための第3のアクセスコマンドの第3のレイテンシに加えられる(ブロック1012)。第1の時間量、第2の時間量、及び第3の時間量のそれぞれは、第1のレイテンシ、第2のレイテンシ、及び第3のレイテンシのそれぞれ1つに比較される(ブロック1014)。
ここで図11を参照すると、2つの異なるメモリタイプへの発行に対するメモリ要求を予定するための方法1100の一実施形態が示される。アクセスコマンドを選択し、選択したアクセスコマンドがターゲットとされた所与の時点で応答データを提供できるようにする時点での発行のためにアクセスコマンドを予定するために、タイミング値の特定の比較が行われる。一部の実施形態では、以下のステップは、(図10の)方法1000のブロック1014の後に実行される。
第1のレイテンシが、第1の時間量よりも大きくない場合(条件ブロック1102の「no」分岐)、次いで第1のメモリタイプの第1のメモリアクセスコマンドは、発行のために候補コマンドの集合に挿入される(ブロック1104)。言い換えると、第1のメモリタイプのためのメモリアクセスコマンド及び発行のためにメモリアクセスコマンドを準備するために使用される任意の追加のコマンドの蓄積されたレイテンシが、第1のメモリタイプのための任意のコマンドの最後の発行と、所与の時点との間の時間量以下である場合、次いで第1のメモリタイプのためのメモリアクセスコマンドを発行するための十分な時間がある。例えば、再び(図5の)タイミング図500を参照すると、CC8での「READ C」の発行と、CC4による「READ B」の発行の完了との間には少なくとも4クロックサイクルがある必要がある。
第1のレイテンシが、第1の時間量よりも大きい場合(条件ブロック1102の「yes」分岐)、次いで第1のメモリタイプのための第1のメモリアクセスコマンドは、発行のための候補コマンドとしての検討から外される(ブロック1106)。類似するステップは、第2のメモリタイプのための第2のメモリアクセスコマンドについて実行される。例えば、第2のレイテンシが、第2の時間量よりも大きくない場合(条件ブロック1108の「no」分岐)、次いで第2のメモリタイプの第2のメモリアクセスコマンドは、発行のため2の候補コマンドの集合に挿入される(ブロック1110)。それ以外の場合、第2のレイテンシが、第2の時間量よりも大きい場合(条件ブロック1108の「yes」分岐)、次いで第2のメモリタイプのための第2のメモリアクセスコマンドは、発行のための候補コマンドの集合から削除される(ブロック1112)。
類似するステップは、第2のメモリタイプのための第3のメモリアクセスコマンドについて実行される。しかしながら、一部の実施形態では、要求された読み取りデータが、対応する元のメモリアクセスコマンドに対してすでに返されたかどうかに関してチェックが行われる。(図4の)タイミング図400を再び簡略に参照すると、要求された読み取りデータが元のトランザクション読み取りコマンド「READ B」に対して返されなかったので、読み取りコマンド「SREAD B」が発行される。CC7で、要求された読み取りデータは到着する予定であるが、それは第2のメモリタイプから返されなかった。しかしながら、要求された読み取りデータは、CC9で予定された所与の時点で返されたので、読み取りコマンド「READ D」に対して後続の読み取りコマンドは発行されない。一部の実施形態では、メモリコントローラは、読み取りアクセスコマンドの応答データが現在第1のメモリタイプ及び第2のメモリタイプの特定のメモリタイプに利用可能であるかどうかを記述する別のチャネルまたはリンクインタフェース上の表示を受け取る。他の実施形態では、メモリコントローラは、応答データが準備完了しているかどうかを判断するために推測読み取りコマンドを発行する。
第3のレイテンシが第3の時間量よりも大きくなく(条件ブロック1114の「no」分岐)、対応する応答データがまだ返ってこなかったと判断される場合(条件ブロック1116の「no」分岐)、次いで第2のメモリタイプのための第3のメモリアクセスコマンドは、発行のための候補コマンドの集合に挿入される(ブロック1118)。第3のレイテンシが第3の時間量よりも大きくなく(条件ブロック1114の「no」分岐)、対応する応答データが返ってきたと判断される場合(条件ブロック1116の「yes」分岐)、次いで第2のメモリタイプのための第3のメモリアクセスコマンドは、発行のための候補コマンドの集合から削除される(ブロック1120)。同様に、第3のレイテンシが第3の時間量より大きい場合(条件ブロック1114の「yes」分岐)、次いで第2のメモリタイプのための第3のメモリアクセスコマンドは、発行のための候補コマンドの集合から削除される(ブロック1120)。
ここで図12を参照すると、2つの異なるメモリタイプへの発行に対するメモリ要求を予定するための方法1200の一実施形態が示される。アクセスコマンドを選択し、選択したアクセスコマンドがターゲットとされる所与の時点で応答データを提供できるようにする時点で発行のためのアクセスコマンドを予定するために、認定された候補コマンドの集合の中でアービトレーションが行われる。一部の実施形態では、以下のステップは、(図11の)方法1100のステップの後に実行される。重みは、発行のための候補コマンドの集合からコマンドを選択するために使用される基準に割り当てられる(ブロック1202)。
上述のように、基準は、QoSまたは他の優先度情報、経過時間、プロセスのまたはスレッドの識別子(ID)、メモリアクセスコマンドが第1のメモリタイプに発行されてからの時間量、及びメモリアクセスコマンドまたはステータスアクセスコマンドが第2のメモリタイプに発行されてからの時間量の1つ以上を含む。一部の実施形態では、プログラム可能な制御レジスタ及びステータスレジスタが、選択した基準に割り当てられた重みを格納する。候補コマンドの集合が発行のために決定される(ブロック1204)。一実施形態では、コマンドは、以前の方法900〜1100のステップの後に認定される。集合が単一のコマンドを含む場合(条件ブロック1206の「yes」分岐)、次いで単一のコマンドが発行のために選択される(ブロック1208)。
集合が複数のコマンドを含む場合(条件ブロック1206の「no」分岐)、次いで単一のコマンドが、重み付けされた基準に基づいて複数の候補の中から選択される(ブロック1210)。上述のように、一部の実施形態では、スケジューラは、基準のそれぞれに所与の重みを割り当て、加重和を実行する。最大の和を有するメモリアクセスコマンドまたはステータスアクセスコマンドが、発行のために選択される。選択したコマンドの発行に備えるための任意の必要な追加のコマンドを含む選択したコマンドの総レイテンシは、読み取り応答データが到着する予定である時点から差し引かれる(ブロック1212)。追加のコマンド及び選択されたアクセスコマンドは、減算を実行することによって見つけられる決定された時点で発行される予定である(ブロック1214)。
多様な実施形態では、ソフトウェアアプリケーションのプログラム命令は、上述の方法及び/または機構を実装するために使用される。プログラム命令は、Cなどの高水準プログラミング言語でハードウェアの動作を記述する。代わりに、Verilogなどのハードウェア設計言語(HDL)が使用される。プログラム命令は、非一時的コンピュータ可読記憶媒体に格納される。多数のタイプの記憶媒体が利用可能である。記憶媒体は、プログラム実行のためにプログラム命令及び付随するデータをコンピューティングシステムに提供するために、使用中、コンピューティングシステムによってアクセス可能である。コンピューティングシステムは、少なくとも1つ以上のメモリ及びプログラム命令を実行するように構成された1つ以上のプロセッサを含む。
上述の実施形態が、実装態様の非限定的な例にすぎないことが強調されるべきである。上記の開示を十分に理解したとき、多くの変形形態及び修正形態が、当業者に明らかになるであろう。以下の特許請求の範囲は、全てのそのような変形及び修正を包含すると解釈されることが意図される。

Claims (20)

  1. メモリコントローラであって、
    メモリ要求を受け取るための第1のインタフェースと、
    前記メモリ要求に対応するメモリアクセスコマンドを、第1のメモリデバイスまたは前記第1のメモリデバイスとは異なる第2のメモリデバイスのどちらかにに送信するためのコマンドバスと、
    前記メモリコントローラと、前記第1のメモリデバイスと前記第2のメモリデバイスの両方との間でデータを転送するためのデータバスと、
    を備える第2のインタフェースと、
    制御ロジックであって、前記データバスが所与の時点で利用可能となる予定であると判断することに応えて、前記制御ロジックが、新しいメモリアクセスコマンドを、前記新しいメモリアクセスコマンドに対する応答が前記所与の時点で前記データバス上で受け取られるように、前記第1のメモリデバイスまたは前記第2のメモリデバイスのどちらかへの発行のために予定できるかどうかを判断するように構成される、制御ロジックと、を備える、前記メモリコントローラ。
  2. 前記所与の時点が、前記データバスが、前記データバス上で駆動されるデータを有する予定ではなく、まだスケジューリングについて検討されていない次に利用可能な時点である、請求項1に記載のメモリコントローラ。
  3. 前記新しいメモリアクセスコマンドが、前記所与の時点での発行のために予定できるかどうかを判断するために、前記制御ロジックが、
    前記新しいメモリアクセスコマンドの応答レイテンシがNクロックサイクルであると判断し、Nが整数であり、
    前記所与の時点よりもNクロックサイクル前に相当する、より早期の時点を識別し、
    前記コマンドバスが前記より早期の時点で利用可能であるかどうかを判断するように構成される、請求項1に記載のメモリコントローラ。
  4. 前記応答レイテンシを有する2つ以上の保留中のメモリアクセスコマンドがあるかどうかを判断することに応えて、前記制御ロジックが、前記2つ以上の保留中のメモリアクセスコマンドの1つを前記より早期の時点での発行のために予定するように構成される、請求項3に記載のメモリコントローラ。
  5. 前記新しいメモリアクセスコマンドが予定されるために十分な時間があると判断することに応えて、前記制御ロジックが、
    前記より早期の時点での発行のために前記新しいメモリアクセスコマンドを予定し、
    前記データバスが前記所与の時点で利用可能ではない旨の表示を格納するように構成される、請求項3に記載のメモリコントローラ。
  6. 前記応答レイテンシを有する2つ以上の保留中のメモリアクセスコマンドがあると判断することに応えて、前記制御ロジックが、
    前記所与の時点と、メモリアクセスコマンドが前記第1のメモリデバイスに発行された直近の時点との間の第1の時間量と、
    前記所与の時点と、メモリアクセスコマンドが前記第2のメモリデバイスに発行された直近の時点との間の第2の時間量と、
    の1つ以上に基づいて、前記より早期の時点で前記2つ以上の保留中のメモリアクセスコマンドの1つを予定するように構成される、請求項1に記載のメモリコントローラ。
  7. 前記制御ロジックが、
    前記第1のメモリアクセスコマンド及び前記第2のメモリアクセスコマンドの優先度レベルと、
    前記第1のメモリアクセスコマンド及び前記第2のメモリアクセスコマンドの経過時間と、
    の1つ以上に基づいて、発行のために前記2つ以上の保留中のメモリアクセスコマンドの前記1つの1つを選択するようにさらに構成される、請求項6に記載のメモリコントローラ。
  8. 前記応答レイテンシを有する所与のメモリアクセスコマンドが保留中であると判断することに応えて、前記制御ロジックが、
    前記所与のメモリアクセスコマンドが、前記第2のメモリデバイスにアクセスする、より早期に発行されたメモリアクセスコマンドと同じアドレスをターゲットとするステータスアクセスコマンドであると判断し、
    読み取り応答データが、前記より早期に発行されたメモリアクセスコマンド対して到着しなかったと判断するように構成される、請求項6に記載のメモリコントローラ。
  9. 第1のインタフェースによってメモリ要求を受け取ることと、
    第2のインタフェースによって、前記メモリ要求に対応するメモリアクセスコマンドを、コマンドバスを介して、第1のメモリデバイスまたは前記第1のメモリデバイスとは異なる第2のメモリデバイスのどちらかに送信することと、
    前記第2のインタフェースによって、データバスを介して、メモリコントローラと、前記第1のメモリデバイス及び前記第2のメモリデバイスの両方との間でデータを転送することと、
    前記データバスが所与の時点で利用可能となると予定であると判断することに応えて、新しいメモリアクセスコマンドを、前記新しいメモリアクセスコマンドに対する応答が前記所与の時点で前記データバス上で受け取られるように、前記第1のメモリデバイスまたは前記第2のメモリデバイスのどちらかへの発行のために予定できるかどうかを判断することと、を含む、方法。
  10. 前記所与の時点が、前記データバスが、前記データバス上で駆動されるデータを有する予定ではなく、まだスケジューリングについて検討されていない次に利用可能な時点である、請求項9に記載の方法。
  11. 前記新しいメモリアクセスコマンドが、前記所与の時点での発行のために予定できるかどうかを判断するために、前記方法が、
    前記新しいメモリアクセスコマンドの応答レイテンシがNクロックサイクルであると判断し、Nが整数であることと、
    前記所与の時点よりもNクロックサイクル前に相当する、より早期の時点を識別することと、
    前記コマンドバスが前記より早期の時点で利用可能であるかどうかを判断することと、
    をさらに含む、請求項9に記載の方法。
  12. 前記応答レイテンシを有する2つ以上の保留中のメモリアクセスコマンドがあるかどうかを判断することに応えて、前記方法が、前記2つ以上の保留中のメモリアクセスコマンドの1つを前記より早期の時点での発行のために予定することをさらに含む、請求項11に記載の方法。
  13. 前記新しいメモリアクセスコマンドが予定されるために十分な時間があると判断することに応えて、前記方法が、
    前記より早期の時点での発行のために前記新しいメモリアクセスコマンドを予定することと、
    前記データバスが前記所与の時点で利用可能ではない旨の表示を格納することと、
    をさらに含む、請求項11に記載の方法。
  14. 前記応答レイテンシを有する2つ以上の保留中のメモリアクセスコマンドがあると判断することに応えて、前記方法が、
    前記所与の時点と、メモリアクセスコマンドが前記第1のメモリデバイスに発行された直近の時点との間の第1の時間量と、
    前記所与の時点と、メモリアクセスコマンドが前記第2のメモリデバイスに発行された直近の時点との間の第2の時間量と、
    の1つ以上に基づいて、前記より早期の時点で前記2つ以上の保留中のメモリアクセスコマンドの1つを予定することと、をさらに含む、請求項9に記載の方法。
  15. 前記方法が、
    前記第1のメモリアクセスコマンド及び前記第2のメモリアクセスコマンドの優先度レベルと、
    前記第1のメモリアクセスコマンド及び前記第2のメモリアクセスコマンドの経過時間と、
    の1つ以上に基づいて、発行のために前記2つ以上の保留中のメモリアクセスコマンドの前記1つの1つを選択することをさらに含む、請求項14に記載の方法。
  16. 前記応答レイテンシを有する所与のメモリアクセスコマンドが保留中であると判断することに応えて、前記方法が、
    前記所与のメモリアクセスコマンドが、前記第2のメモリデバイスにアクセスする、より早期に発行されたメモリアクセスコマンドと同じアドレスをターゲットとするステータスアクセスコマンドであると判断することと、
    読み取り応答データが、前記より早期に発行されたメモリアクセスコマンドに対して到着しなかったと判断することと、
    をさらに含む、請求項14に記載の方法。
  17. 第1のメモリデバイスまたは前記第1のメモリデバイスとは異なる第2のメモリデバイスに格納されたデータに対するメモリアクセス要求を生成するように構成されたプロセッサと、
    コマンドバスを介して、前記メモリ要求に対応するメモリアクセスコマンドを、第1のメモリデバイスまたは前記第1のメモリデバイスとは異なる第2のメモリデバイスのどちらかに送信し、
    データバスを介して、前記メモリコントローラと、前記第1のメモリデバイス及び前記第2のメモリデバイスの両方との間でデータを転送し、
    前記データバスが所与の時点で利用可能となる予定であると判断することに応えて、新しいメモリアクセスコマンドを、前記新しいメモリアクセスコマンドに対する応答が前記所与の時点で前記データバス上で受け取られるように、前記第1のメモリデバイスまたは前記第2のメモリデバイスのどちらかへの発行のために予定できるかどうかを判断するように構成された、前記第1のメモリデバイス及び前記第2のメモリデバイスのそれぞれに結合されたメモリコントローラと、
    を備える、コンピューティングシステム。
  18. 前記所与の時点が、前記データバスが、前記データバス上で駆動されるデータを有する予定ではなく、まだスケジューリングについて検討されていない次に利用可能な時点である、請求項17に記載のコンピューティングシステム。
  19. 前記新しいメモリアクセスコマンドが、前記所与の時点での発行のために予定できるかどうかを判断するために、前記メモリコントローラが、
    前記新しいメモリアクセスコマンドの応答レイテンシがNクロックサイクルであると判断し、Nが整数であり、
    前記所与の時点よりもNクロックサイクル前に相当する、より早期の時点を識別し、
    前記コマンドバスが前記より早期の時点で利用可能であるかどうかを判断するように構成される、請求項17に記載のコンピューティングシステム。
  20. 前記新しいメモリアクセスコマンドが予定されるために十分な時間があると判断することに応えて、前記メモリコントローラが、
    前記より早期の時点での発行のために前記新しいメモリアクセスコマンドを予定し、
    前記データバスが前記所与の時点で利用可能ではない旨の表示を格納するように構成される、請求項17に記載のコンピューティングシステム。
JP2020534175A 2017-12-22 2018-09-20 不均一なレイテンシを有するメモリ要求のスケジューリング Active JP7063999B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/853,090 2017-12-22
US15/853,090 US10296230B1 (en) 2017-12-22 2017-12-22 Scheduling memory requests with non-uniform latencies
PCT/US2018/051858 WO2019125564A1 (en) 2017-12-22 2018-09-20 Scheduling memory requests with non-uniform latencies

Publications (2)

Publication Number Publication Date
JP2021507399A true JP2021507399A (ja) 2021-02-22
JP7063999B2 JP7063999B2 (ja) 2022-05-09

Family

ID=63794709

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020534175A Active JP7063999B2 (ja) 2017-12-22 2018-09-20 不均一なレイテンシを有するメモリ要求のスケジューリング

Country Status (6)

Country Link
US (2) US10296230B1 (ja)
EP (1) EP3729281B1 (ja)
JP (1) JP7063999B2 (ja)
KR (1) KR102442081B1 (ja)
CN (1) CN111742305A (ja)
WO (1) WO2019125564A1 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7195484B1 (ja) 2019-12-30 2022-12-23 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド 不揮発性デュアルインラインメモリモジュールのコマンドリプレイ
JP7195486B1 (ja) 2019-12-30 2022-12-23 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド 異種メモリシステムに対するシグナリング

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11422707B2 (en) 2017-12-21 2022-08-23 Advanced Micro Devices, Inc. Scheduling memory requests for a ganged memory device
US10545701B1 (en) * 2018-08-17 2020-01-28 Apple Inc. Memory arbitration techniques based on latency tolerance
US11048437B2 (en) * 2019-02-28 2021-06-29 Micron Technology, Inc. Double threshold controlled scheduling of memory access commands
US11537521B2 (en) 2019-06-05 2022-12-27 Samsung Electronics Co., Ltd. Non-volatile dual inline memory module (NVDIMM) for supporting dram cache mode and operation method of NVDIMM
US11687244B2 (en) 2019-10-24 2023-06-27 Micron Technology, Inc. Quality of service for memory devices using weighted memory access operation types
US11620053B2 (en) * 2019-10-24 2023-04-04 Micron Technology, Inc. Quality of service for the multiple functions in memory devices
US11237731B2 (en) 2019-10-24 2022-02-01 Micron Technology, Inc. Quality of service for memory devices using suspend and resume of program and erase operations
US11262946B2 (en) * 2019-11-25 2022-03-01 Micron Technology, Inc. Cache-based memory read commands
CN115427925A (zh) * 2019-12-26 2022-12-02 美光科技公司 用于堆叠存储器系统的主机技术
KR20220110295A (ko) 2019-12-26 2022-08-05 마이크론 테크놀로지, 인크. 적층 메모리 시스템을 위한 진리표 확장
US11531601B2 (en) 2019-12-30 2022-12-20 Advanced Micro Devices, Inc. Error recovery for non-volatile memory modules
CN115698971A (zh) * 2020-06-10 2023-02-03 Arm有限公司 用于处理存储器访问请求的装置和方法
JP2022168913A (ja) * 2021-04-27 2022-11-09 富士通株式会社 制御装置及び制御方法
US20220357889A1 (en) * 2021-05-05 2022-11-10 Micron Technology, Inc. Quality-of-service information for a multi-memory system
US11556472B1 (en) 2021-08-04 2023-01-17 International Business Machines Corporation Data processing system having masters that adapt to agents with differing retry behaviors
KR20230046356A (ko) * 2021-09-29 2023-04-06 삼성전자주식회사 메모리 장치, 메모리 장치의 동작 방법, 그리고 메모리 장치를 포함하는 전자 장치

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6526484B1 (en) * 1998-11-16 2003-02-25 Infineon Technologies Ag Methods and apparatus for reordering of the memory requests to achieve higher average utilization of the command and data bus
US20060179213A1 (en) * 2005-02-09 2006-08-10 International Business Machines Corporation Executing background writes to idle DIMMs
JP2010501098A (ja) * 2006-08-14 2010-01-14 クゥアルコム・インコーポレイテッド マルチランクメモリサブシステムにおいて共用バス割込みの共同シグナリングを可能にする方法および装置

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6457078B1 (en) * 1999-06-17 2002-09-24 Advanced Micro Devices, Inc. Multi-purpose bi-directional control bus for carrying tokens between initiator devices and target devices
US7418540B2 (en) * 2004-04-28 2008-08-26 Intel Corporation Memory controller with command queue look-ahead
US7660952B2 (en) * 2007-03-01 2010-02-09 International Business Machines Corporation Data bus bandwidth scheduling in an FBDIMM memory system operating in variable latency mode
US9569393B2 (en) 2012-08-10 2017-02-14 Rambus Inc. Memory module threading with staggered data transfers
US20140052906A1 (en) 2012-08-17 2014-02-20 Rambus Inc. Memory controller responsive to latency-sensitive applications and mixed-granularity access requests
US9563369B2 (en) * 2014-04-14 2017-02-07 Microsoft Technology Licensing, Llc Fine-grained bandwidth provisioning in a memory controller
US10810144B2 (en) * 2016-06-08 2020-10-20 Samsung Electronics Co., Ltd. System and method for operating a DRR-compatible asynchronous memory module

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6526484B1 (en) * 1998-11-16 2003-02-25 Infineon Technologies Ag Methods and apparatus for reordering of the memory requests to achieve higher average utilization of the command and data bus
US20060179213A1 (en) * 2005-02-09 2006-08-10 International Business Machines Corporation Executing background writes to idle DIMMs
JP2010501098A (ja) * 2006-08-14 2010-01-14 クゥアルコム・インコーポレイテッド マルチランクメモリサブシステムにおいて共用バス割込みの共同シグナリングを可能にする方法および装置

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7195484B1 (ja) 2019-12-30 2022-12-23 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド 不揮発性デュアルインラインメモリモジュールのコマンドリプレイ
JP7195486B1 (ja) 2019-12-30 2022-12-23 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド 異種メモリシステムに対するシグナリング
JP2023500741A (ja) * 2019-12-30 2023-01-10 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド 異種メモリシステムに対するシグナリング
JP2023502546A (ja) * 2019-12-30 2023-01-24 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド 不揮発性デュアルインラインメモリモジュールのコマンドリプレイ

Also Published As

Publication number Publication date
WO2019125564A1 (en) 2019-06-27
KR20200099586A (ko) 2020-08-24
CN111742305A (zh) 2020-10-02
EP3729281A1 (en) 2020-10-28
EP3729281B1 (en) 2022-04-27
US20210096750A1 (en) 2021-04-01
US10296230B1 (en) 2019-05-21
JP7063999B2 (ja) 2022-05-09
KR102442081B1 (ko) 2022-09-08

Similar Documents

Publication Publication Date Title
JP7063999B2 (ja) 不均一なレイテンシを有するメモリ要求のスケジューリング
US11474942B2 (en) Supporting responses for memory types with non-uniform latencies on same channel
US20210073152A1 (en) Dynamic page state aware scheduling of read/write burst transactions
CN112088368B (zh) 动态的每存储体和全存储体刷新
JP2019521448A (ja) ストリーク及び読出し/書込みトランザクション管理を有するメモリコントローラアービタ
KR20210021302A (ko) 메모리 제어기에서의 리프레시 방식
JP7036925B2 (ja) キャッシュ制御を考慮したメモリコントローラ
JP7384806B2 (ja) 連動メモリデバイスに対するメモリ要求のスケジューリング
US11429281B2 (en) Speculative hint-triggered activation of pages in memory
JP7195486B1 (ja) 異種メモリシステムに対するシグナリング

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20210917

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20211004

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20211026

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20220126

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220307

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: 20220322

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20220421

R150 Certificate of patent or registration of utility model

Ref document number: 7063999

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150