Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /home/zhenxiangba/zhenxiangba.com/public_html/phproxy-improved-master/index.php on line 456
JP7657963B2 - Credit Scheme for Multi-Queue Memory Controllers - Patent application - Google Patents
[go: Go Back, main page]

JP7657963B2 - Credit Scheme for Multi-Queue Memory Controllers - Patent application - Google Patents

Credit Scheme for Multi-Queue Memory Controllers - Patent application Download PDF

Info

Publication number
JP7657963B2
JP7657963B2 JP2023559128A JP2023559128A JP7657963B2 JP 7657963 B2 JP7657963 B2 JP 7657963B2 JP 2023559128 A JP2023559128 A JP 2023559128A JP 2023559128 A JP2023559128 A JP 2023559128A JP 7657963 B2 JP7657963 B2 JP 7657963B2
Authority
JP
Japan
Prior art keywords
command queue
memory
request
memory access
queue
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
JP2023559128A
Other languages
Japanese (ja)
Other versions
JP2024512623A (en
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 JP2024512623A publication Critical patent/JP2024512623A/en
Application granted granted Critical
Publication of JP7657963B2 publication Critical patent/JP7657963B2/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/1642Handling requests for interconnection or transfer for access to memory bus based on arbitration with request queuing
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Dram (AREA)
  • Memory System (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Description

コンピュータシステムは、一般に、メインメモリ用の安価で高密度のダイナミックランダムアクセスメモリ(dynamic random access memory、DRAM)チップを使用する。今日販売されている殆どのDRAMチップは、Joint Electron Devices Engineering Council(JEDEC)によって広められた様々なダブルデータ速度(double data rate、DDR)DRAM規格と適合する。DDR DRAMは、高速アクセス回路を有する従来のDRAMメモリセルアレイを使用して、高い転送レートを達成し、メモリバスの利用を改善する。DDRメモリコントローラは、より多くのDRAMモジュールを収容し、単一のチャネルを使用するよりも速くデータをメモリと交換するために、複数のDDRチャネルとインターフェースし得る。例えば、いくつかのメモリコントローラは、2つ又は4つのDDRメモリチャネルを含む。 Computer systems commonly use inexpensive, high-density dynamic random access memory (DRAM) chips for main memory. Most DRAM chips sold today conform to various double data rate (DDR) DRAM standards promulgated by the Joint Electron Devices Engineering Council (JEDEC). DDR DRAM uses conventional DRAM memory cell arrays with high-speed access circuits to achieve high transfer rates and improve memory bus utilization. A DDR memory controller may interface with multiple DDR channels to accommodate more DRAM modules and exchange data with the memory faster than using a single channel. For example, some memory controllers include two or four DDR memory channels.

現代のDDRメモリコントローラは、待ち状態のメモリアクセス要求を格納するためのキューを維持し、効率を高めるために待ち状態のメモリアクセス要求を、それらが生成又は格納された順序に関連して順不同で選択することを可能にする。特定のキューが満杯であるためにメモリアクセス要求が拒否されることを防止するために、メモリコントローラのデータインターフェースは、クレジット制御方式を使用してメモリアクセス要求のフローを制御し、このクレジット制御方式では、要求クレジットは、ホストシステムの様々な部分、例えば、そのデータインターフェースファブリックに提供され、ホストシステムは、コマンドキューに入るためのメモリ要求を送信することが可能になる。また、メモリコントローラは、異なるメモリタイプ、密度及びメモリチャネルトポロジのために構成され得るが、これらの異なるモードをサポートするためにチップコストを増加させ得る大量の追加の回路面積を必要としないように、十分に柔軟である必要がある。 Modern DDR memory controllers maintain queues for storing pending memory access requests, allowing them to be selected out of order relative to the order in which they were generated or stored to increase efficiency. To prevent memory access requests from being rejected because a particular queue is full, the memory controller's data interface controls the flow of memory access requests using a credit control scheme in which request credits are provided to various parts of the host system, such as its data interface fabric, allowing the host system to submit memory requests for entry into the command queue. The memory controller also needs to be flexible enough that it can be configured for different memory types, densities and memory channel topologies, but does not require a large amount of additional circuit area that can increase chip costs to support these different modes.

先行技術で知られている加速処理ユニット(accelerated processing unit、APU)及びメモリシステムのブロック図である。1 is a block diagram of an accelerated processing unit (APU) and memory system known in the prior art; いくつかの実施形態による、図1と同様のAPUで用いるのに適したデュアルチャネルメモリコントローラを含む部分的なデータ処理システムのブロック図である。2 is a block diagram of a partial data processing system including a dual channel memory controller suitable for use in an APU similar to FIG. 1 , according to some embodiments. いくつかの実施形態による、図2のクレジット制御回路を実装するのに適したクレジット制御回路のブロック図である。FIG. 3 is a block diagram of a credit control circuit suitable for implementing the credit control circuit of FIG. 2 according to some embodiments. いくつかの実施形態による、要求クレジットを管理するためのプロセスのフロー図である。FIG. 11 is a flow diagram of a process for managing request credits, according to some embodiments. デュアルチャネルメモリコントローラにおいて要求クレジットを管理するための別のプロセスのフロー図である。FIG. 11 is a flow diagram of another process for managing request credits in a dual channel memory controller.

以下の説明において、異なる図面における同一の符号の使用は、同様の又は同一のアイテムを示す。別段言及されなければ、「結合される」という単語及びその関連する動詞形は、当技術分野で知られている手段による直接接続及び間接電気接続の両方を含み、また、別段言及されなければ、直接接続の任意の記述は、好適な形態の間接電気接続を使用する代替の実施形態も意味する。 In the following description, the use of the same reference numbers in different figures indicates similar or identical items. Unless otherwise noted, the word "coupled" and its related verb forms include both direct and indirect electrical connections by means known in the art, and unless otherwise noted, any description of a direct connection also refers to an alternative embodiment using a suitable form of indirect electrical connection.

メモリコントローラは、アドレスデコーダと、第1のコマンドキューと、第2のコマンドキューと、要求クレジット制御回路と、を含む。アドレスデコーダは、メモリアクセス要求を受信するための第1の入力と、第1の出力と、第2の出力と、を有する。第1のコマンドキューは、第1のメモリチャネルに対するメモリアクセス要求を受信するためにアドレスデコーダの第1の出力に接続された入力と、メモリアクセス要求を保持するためのいくつかのエントリと、を有する。第2のコマンドキューは、第2のメモリチャネルに対するメモリアクセス要求を受信するためにアドレスデコーダの第2の出力に接続された入力と、メモリアクセス要求を保持するためのいくつかのエントリと、を有する。要求クレジット制御回路は、第1のコマンドキューと、第2のコマンドキューと、に接続される。要求クレジット制御回路は、未処理の要求クレジットの数を追跡し、第1のコマンドキュー及び第2のコマンドキューの利用可能なエントリの数に基づいて要求クレジットを発行するように動作可能である。 The memory controller includes an address decoder, a first command queue, a second command queue, and a request credit control circuit. The address decoder has a first input for receiving memory access requests, a first output, and a second output. The first command queue has an input connected to the first output of the address decoder for receiving memory access requests for the first memory channel, and a number of entries for holding the memory access requests. The second command queue has an input connected to the second output of the address decoder for receiving memory access requests for the second memory channel, and a number of entries for holding the memory access requests. The request credit control circuit is connected to the first command queue and the second command queue. The request credit control circuit is operable to track the number of outstanding request credits and issue request credits based on the number of available entries in the first command queue and the second command queue.

方法は、メモリコントローラにおいて複数のメモリアクセス要求を受信することを含む。メモリアクセス要求のアドレスが復号され、第1のメモリチャネル及び第2のメモリチャネルのうち何れかが、メモリアクセス要求の各々を受信するために選択される。アドレスを復号した後、本方法は、各メモリアクセス要求を、第1のメモリチャネルに関連付けられた第1のコマンドキュー及び第2のメモリチャネルに関連付けられた第2のコマンドキューのうち何れかに送信することを含む。指定されたイベントに応じて、本方法は、第1のコマンドキュー及び第2のコマンドキューの利用可能なエントリの数に基づいて要求クレジットを発行することを含む。 The method includes receiving a plurality of memory access requests at a memory controller. Addresses of the memory access requests are decoded, and one of a first memory channel and a second memory channel is selected to receive each of the memory access requests. After decoding the addresses, the method includes sending each memory access request to one of a first command queue associated with the first memory channel and a second command queue associated with the second memory channel. In response to a specified event, the method includes issuing request credits based on the number of available entries in the first command queue and the second command queue.

データ処理システムは、データファブリックと、第1及び第2のメモリチャネルと、少なくとも1つのメモリアクセスエンジンからデータファブリックを介して受信されたメモリアクセス要求を遂行するためにデータファブリック並びに第1及び第2のメモリチャネルに接続されたメモリコントローラと、を含む。メモリコントローラは、アドレスデコーダと、第1のコマンドキューと、第2のコマンドキューと、要求クレジット制御回路と、を含む。アドレスデコーダは、メモリアクセス要求を受信するための第1の入力と、第1の出力と、第2の出力と、を有する。第1のコマンドキューは、第1のメモリチャネルに対するメモリアクセス要求を受信するためにアドレスデコーダの第1の出力に接続された入力と、メモリアクセス要求を保持するためのいくつかのエントリと、を有する。第2のコマンドキューは、第2のメモリチャネルに対するメモリアクセス要求を受信するためにアドレスデコーダの第2の出力に接続された入力と、メモリアクセス要求を保持するためのいくつかのエントリと、を有する。要求クレジット制御回路は、第1のコマンドキューと、第2のコマンドキューと、に接続される。要求クレジット制御回路は、未処理の要求クレジットの数を追跡し、第1のコマンドキュー及び第2のコマンドキューの利用可能なエントリの数に基づいて要求クレジットを発行するように動作可能である。 The data processing system includes a data fabric, a first and a second memory channel, and a memory controller connected to the data fabric and the first and second memory channels to fulfill memory access requests received over the data fabric from at least one memory access engine. The memory controller includes an address decoder, a first command queue, a second command queue, and a request credit control circuit. The address decoder has a first input for receiving memory access requests, a first output, and a second output. The first command queue has an input connected to a first output of the address decoder for receiving memory access requests for the first memory channel, and a number of entries for holding memory access requests. The second command queue has an input connected to a second output of the address decoder for receiving memory access requests for the second memory channel, and a number of entries for holding memory access requests. The request credit control circuit is connected to the first command queue and the second command queue. The request credit control circuit is operable to track a number of outstanding request credits and issue request credits based on the number of available entries in the first command queue and the second command queue.

図1は、従来技術において知られている加速処理ユニット(APU)100及びメモリシステム130のブロック図である。APU100は、ホストデータ処理システムにおけるプロセッサとして用いるのに適した集積回路であり、概して、中央処理ユニット(central processing unit、CPU)コア複合体110と、グラフィックスコア120と、ディスプレイエンジン122のセットと、データファブリック125と、メモリ管理ハブ140と、周辺コントローラ160のセットと、周辺バスコントローラ170のセットと、システム管理ユニット(system management unit、SMU)180と、を含む。 1 is a block diagram of an accelerated processing unit (APU) 100 and memory system 130 known in the prior art. The APU 100 is an integrated circuit suitable for use as a processor in a host data processing system and generally includes a central processing unit (CPU) core complex 110, a graphics core 120, a set of display engines 122, a data fabric 125, a memory management hub 140, a set of peripheral controllers 160, a set of peripheral bus controllers 170, and a system management unit (SMU) 180.

CPUコア複合体110は、CPUコア112及びCPUコア114を含む。この例では、CPUコア複合体110が2つのCPUコアを含むが、他の実施形態では、CPUコア複合体110が任意の数のCPUコアを含むことができる。CPUコア112及び114の各々は、制御ファブリックを形成するシステム管理ネットワーク(system management network、SMN)及びデータファブリック125に双方向に接続され、データファブリック125にメモリアクセス要求を提供することができる。CPUコア112及び114の各々は、単体のコアであってもよく、又は、更にキャッシュ等の特定のリソースを共有する2つ以上の単体のコアを有するコア複合体であってもよい。 The CPU core complex 110 includes a CPU core 112 and a CPU core 114. In this example, the CPU core complex 110 includes two CPU cores, but in other embodiments, the CPU core complex 110 can include any number of CPU cores. Each of the CPU cores 112 and 114 is bidirectionally connected to a system management network (SMN) that forms a control fabric and a data fabric 125, and can provide memory access requests to the data fabric 125. Each of the CPU cores 112 and 114 may be a single core, or may be a core complex having two or more single cores that further share certain resources such as caches.

グラフィックスコア120は、頂点処理、フラグメント処理、シェーディング、テクスチャブレンディング等のグラフィックス処理を高度に統合された並列方式で実行することができる高性能グラフィックス処理ユニット(graphics processing unit、GPU)である。グラフィックスコア120は、SMN及びデータファブリック125に双方向に接続され、メモリアクセス要求をデータファブリック125に提供することができる。これに関して、APU100は、CPUコア複合体110とグラフィックスコア120とが同じメモリ空間を共有する統合メモリアーキテクチャ、又は、CPUコア複合体110とグラフィックスコア120とがメモリ空間の一部を共有する一方でグラフィックスコア120がCPUコア複合体110によりアクセスできないプライベートグラフィックスメモリも使用するメモリアーキテクチャの何れかをサポートすることができる。 The graphics core 120 is a high-performance graphics processing unit (GPU) capable of performing graphics processing such as vertex processing, fragment processing, shading, and texture blending in a highly integrated and parallel manner. The graphics core 120 is bidirectionally connected to the SMN and to the data fabric 125 and can provide memory access requests to the data fabric 125. In this regard, the APU 100 can support either a unified memory architecture in which the CPU core complex 110 and the graphics core 120 share the same memory space, or a memory architecture in which the CPU core complex 110 and the graphics core 120 share a portion of the memory space, but the graphics core 120 also uses a private graphics memory that is not accessible by the CPU core complex 110.

ディスプレイエンジン122は、モニタ上に表示するためにグラフィックスコア120によって生成されたオブジェクトをレンダリングしてラスタライズする。グラフィックスコア120及びディスプレイエンジン122は、メモリシステム130内の適切なアドレスへの一様な変換のために、データファブリック125を介して共通メモリ管理ハブ140に双方向に接続される。 The display engine 122 renders and rasterizes objects generated by the graphics core 120 for display on a monitor. The graphics core 120 and the display engine 122 are bidirectionally connected to a common memory management hub 140 via the data fabric 125 for uniform translation to appropriate addresses in the memory system 130.

データファブリック125は、任意のメモリアクセスエージェントとメモリ管理ハブ140との間でメモリアクセス要求及びメモリ応答をルーティングするためのクロスバースイッチを含む。また、データファブリックは、システム構成に基づいてメモリアクセスの送信先を判定するために、基本入力/出力システム(basic input/output system、BIOS)によって規定されるシステムメモリマップ、並びに、各仮想接続のためのバッファも含む。 The data fabric 125 includes a crossbar switch for routing memory access requests and responses between any memory access agent and the memory management hub 140. The data fabric also includes a system memory map defined by the basic input/output system (BIOS) to determine where to send memory accesses based on the system configuration, as well as buffers for each virtual connection.

周辺コントローラ160は、ユニバーサルシリアルバス(universal serial bus、USB)コントローラ162及びシリアルアドバンストテクノロジーアタッチメント(Serial Advanced Technology Attachment、SATA)インターフェースコントローラ164を含み、これらのそれぞれは、システムハブ166及びSMNバスに対して双方向で接続される。これらの2つのコントローラは、APU100で使用され得る周辺コントローラの単なる典型例である。 The peripheral controllers 160 include a universal serial bus (USB) controller 162 and a Serial Advanced Technology Attachment (SATA) interface controller 164, each of which is bidirectionally connected to a system hub 166 and an SMN bus. These two controllers are merely exemplary of peripheral controllers that may be used in the APU 100.

周辺バスコントローラ170は、システムコントローラ又は「サウスブリッジ」(Southbridge、SB)172と、周辺構成要素相互接続エクスプレス(Peripheral Component Interconnect Express、PCIe)コントローラ174と、を含み、これらのそれぞれは、入力/出力(input/output、I/O)ハブ176及びSMNバスに対して双方向で接続される。また、I/Oハブ176は、システムハブ166及びデータファブリック125に対して双方向で接続される。したがって、例えば、CPUコアは、データファブリック125がI/Oハブ176を介してルーティングするアクセスにより、USBコントローラ162、SATAインターフェースコントローラ164、SB172、又は、PCIeコントローラ174内のレジスタをプログラムすることができる。APU100のためのソフトウェア及びファームウェアは、リードオンリーメモリ(read-only memory、ROM)、フラッシュ電気的消去可能プログラマブルROM(electrically erasable programmable ROM、EEPROM)等の様々な不揮発性メモリタイプの何れかであり得るシステムデータドライブ又はシステムBIOSメモリ(図示せず)に記憶される。一般に、BIOSメモリはPCIeバスを介してアクセスされ、システムデータドライブはSATAインターフェースを介してアクセスされる。 The peripheral bus controllers 170 include a system controller or "Southbridge" (SB) 172 and a Peripheral Component Interconnect Express (PCIe) controller 174, each of which is bidirectionally connected to an input/output (I/O) hub 176 and the SMN bus. The I/O hub 176 is also bidirectionally connected to the system hub 166 and the data fabric 125. Thus, for example, a CPU core can program registers in the USB controller 162, the SATA interface controller 164, the SB 172, or the PCIe controller 174, with accesses routed by the data fabric 125 through the I/O hub 176. Software and firmware for APU 100 is stored in a system data drive or system BIOS memory (not shown), which may be any of a variety of non-volatile memory types, such as read-only memory (ROM), flash, electrically erasable programmable ROM (EEPROM), etc. Typically, the BIOS memory is accessed via a PCIe bus and the system data drive is accessed via a SATA interface.

SMU180は、APU100上のリソースの動作を制御してそれらの間の通信を同期させるローカルコントローラである。SMU180は、APU100上の様々なプロセッサのパワーアップシーケンシングを管理し、リセット、イネーブル及び他の信号を介して複数のオフチップデバイスを制御する。SMU180は、APU100の構成要素のそれぞれにクロック信号を与えるために、位相ロックループ(phase locked loop、PLL)等の1つ以上のクロックソース(図示せず)を含む。また、SMU180は、様々なプロセッサ及び他の機能ブロックのための電力を管理し、適切な電力状態を判定するためにCPUコア112及び114並びにグラフィックスコア120から測定された電力消費値を受信することができる。 SMU 180 is a local controller that controls the operation of resources on APU 100 and synchronizes communication between them. SMU 180 manages the power-up sequencing of the various processors on APU 100 and controls multiple off-chip devices via reset, enable, and other signals. SMU 180 includes one or more clock sources (not shown), such as a phase locked loop (PLL), to provide clock signals to each of the components of APU 100. SMU 180 also manages power for the various processors and other functional blocks and can receive measured power consumption values from CPU cores 112 and 114 and graphics core 120 to determine appropriate power states.

メモリ管理ハブ140並びにその関連する物理インターフェース(physical interface、PHY)151及び152は、この実施形態ではAPU100と統合される。メモリ管理ハブ140は、メモリチャネル141及び142とパワーエンジン149とを含む。メモリチャネル141は、ホストインターフェース145、メモリチャネルコントローラ143及び物理インターフェース147を含む。ホストインターフェース145は、メモリチャネルコントローラ143を、シリアル存在検出リンク(serial presence detect、SDP)を介してデータファブリック125に対して双方向で接続する。物理インターフェース147は、メモリチャネルコントローラ143をPHY151に対して双方向で接続し、DDR PHYインターフェース(DDR PHY Interface、DFI)仕様に準拠する。メモリチャネル142は、ホストインターフェース146、メモリチャネルコントローラ144及び物理インターフェース148を含む。ホストインターフェース146は、別のSDPを介してメモリチャネルコントローラ144をデータファブリック125に対して双方向で接続する。物理インターフェース148は、メモリチャネルコントローラ144をPHY152に対して双方向で接続し、DFI仕様に準拠する。パワーエンジン149は、SMNバスを介してSMU180に対して、APBを介してPHY151及び152に対して双方向で接続されるとともに、メモリチャネルコントローラ143及び144に対して双方向で接続される。PHY151は、メモリチャネル131への双方向接続を有する。PHY152は双方向接続メモリチャネル133を有する。 The memory management hub 140 and its associated physical interfaces (PHYs) 151 and 152 are integrated with the APU 100 in this embodiment. The memory management hub 140 includes memory channels 141 and 142 and a power engine 149. The memory channel 141 includes a host interface 145, a memory channel controller 143, and a physical interface 147. The host interface 145 bidirectionally connects the memory channel controller 143 to the data fabric 125 via a serial presence detect link (SDP). The physical interface 147 bidirectionally connects the memory channel controller 143 to the PHY 151 and conforms to the DDR PHY Interface (DFI) specification. The memory channel 142 includes a host interface 146, a memory channel controller 144, and a physical interface 148. Host interface 146 bidirectionally connects memory channel controller 144 to data fabric 125 via another SDP. Physical interface 148 bidirectionally connects memory channel controller 144 to PHY 152 and conforms to the DFI specification. Power engine 149 is bidirectionally connected to SMU 180 via the SMN bus, to PHYs 151 and 152 via the APB, and to memory channel controllers 143 and 144. PHY 151 has a bidirectional connection to memory channel 131. PHY 152 has a bidirectionally connected memory channel 133.

メモリ管理ハブ140は、2つのメモリチャネルコントローラを有するメモリコントローラのインスタンス化であり、共有パワーエンジン149を使用して、以下で更に説明する態様でメモリチャネルコントローラ143及びメモリチャネルコントローラ144の両方の動作を制御する。メモリチャネル141及び142のそれぞれは、DDRバージョン5(DDR version five、DDR5)、DDRバージョン4(DDR version four、DDR4)、低電力DDR4(low power DDR4、LPDDR4)、グラフィックスDDRバージョン5(graphics DDR version five、GDDR5)、及び、高帯域幅メモリ(high bandwidth memory、HBM)等の最先端DDRメモリに接続することができ、将来のメモリ技術に適合され得る。これらのメモリは、高いバス帯域幅及び高速動作をもたらす。同時に、それらのメモリは、ラップトップコンピュータ等のバッテリ駆動用途のための電力を節約するための低電力モードを与えるとともに、内蔵熱監視も行う。 Memory management hub 140 is an instantiation of a memory controller with two memory channel controllers and uses a shared power engine 149 to control the operation of both memory channel controller 143 and memory channel controller 144 in a manner further described below. Each of memory channels 141 and 142 can connect to state-of-the-art DDR memories such as DDR version five (DDR5), DDR version four (DDR4), low power DDR4 (LPDDR4), graphics DDR version five (GDDR5), and high bandwidth memory (HBM), and can be adapted for future memory technologies. These memories provide high bus bandwidth and high speed operation. At the same time, they provide low power modes to conserve power for battery-powered applications such as laptop computers, as well as built-in thermal monitoring.

メモリシステム130は、メモリチャネル131及びメモリチャネル133を含む。メモリチャネル131は、DDRxバス132に接続されるデュアルインラインメモリモジュール(dual inline memory module、DIMM)のセットを含み、これには、本実施例では個別のランクに対応する代表的なDIMM134、136、138が含まれる。同様に、メモリチャネル133は、代表的なDIMM135、137、139を含む、DDRxバス129に接続されるDIMMのセットを含む。 Memory system 130 includes memory channel 131 and memory channel 133. Memory channel 131 includes a set of dual inline memory modules (DIMMs) connected to DDRx bus 132, including representative DIMMs 134, 136, and 138 that, in this example, correspond to separate ranks. Similarly, memory channel 133 includes a set of DIMMs connected to DDRx bus 129, including representative DIMMs 135, 137, and 139.

APU100は、ホストデータ処理システムの中央処理ユニット(CPU)として動作し、最新のコンピュータシステムにおいて有用な様々なバス及びインターフェースを与える。これらのインターフェースは、2つのダブルデータレート(double data rate、DDRx)メモリチャネル、PCIeリンクへの接続のためのPCIeルート複合体、USBネットワークへの接続のためのUSBコントローラ、及び、SATA大容量記憶デバイスへのインターフェースを含む。 The APU 100 acts as the central processing unit (CPU) of the host data processing system and provides the various buses and interfaces useful in modern computer systems. These interfaces include two double data rate (DDRx) memory channels, a PCIe root complex for connection to a PCIe link, a USB controller for connection to a USB network, and an interface to a SATA mass storage device.

また、APU100は、様々なシステム監視機能及び節電機能も実装する。特に、1つのシステム監視機能は熱監視である。例えば、APU100が高温になる場合、SMU180は、CPUコア112、114及び/又はグラフィックスコア120の周波数及び電圧を低減することができる。APU100が高温になりすぎる場合、SMUを完全にシャットダウンすることができる。SMNバスを介してSMU180によって外部センサから熱事象を受けることもでき、SMU180は、それに応じてクロック周波数及び/又は電源電圧を低減することができる。 APU 100 also implements various system monitoring and power saving functions. One system monitoring function in particular is thermal monitoring. For example, if APU 100 becomes too hot, SMU 180 can reduce the frequency and voltage of CPU cores 112, 114 and/or graphics core 120. If APU 100 becomes too hot, the SMU can be shut down completely. Thermal events can also be received from external sensors by SMU 180 via the SMN bus, and SMU 180 can reduce the clock frequency and/or power supply voltage accordingly.

図2は、図1のようなAPUで用いるのに適したデュアルチャネルメモリコントローラ210を含む部分的なデータ処理システム200のブロック図である。データファブリック125に接続されたデュアルチャネルメモリコントローラ210が示されており、コヒーレントスレーブエージェント250及びコヒーレントマスタエージェント260を含むデータ処理システム200内に存在するいくつかのメモリエージェントと通信することができる。デュアルチャネルメモリコントローラ210は、2つの個別のメモリチャネルコントローラ143及び144(図1)を置換し、データファブリック125及びデータ処理システム200内の様々なメモリアドレス指定エージェントに透過的な方法で2つのDDRxチャネルを一緒に制御することができ、その結果、単一のメモリコントローラインターフェース212を使用してメモリアクセスコマンドを送信し、結果を受信することができる。また、デュアルチャネルメモリコントローラ210は、例えば、DDR5 DRAMとともに使用するためのDDR5仕様において定義されるような2つのサブチャネル、又は、高帯域幅メモリ2(High Bandwidth Memory 2、HBM2)及びHBM3規格において定義されるそれらのサブチャネルを制御することができる。デュアルチャネルメモリコントローラ210は、概して、インターフェース212と、クレジット制御回路221と、アドレスデコーダ222と、異なるメモリチャネルにそれぞれ割り当てられたメモリチャネル制御回路223の2つのインスタンスと、を含む。メモリチャネル制御回路223の各インスタンスは、メモリインターフェースキュー214と、コマンドキュー220と、コンテントアドレッサブルメモリ(content addressable memory、CAM)224と、リプレイキュー230を含むリプレイ制御ロジック231と、タイミングブロック234と、ページテーブル236と、アービタ238と、エラー訂正符号(error correction code、ECC)チェック回路242と、ECC生成ブロック244と、データバッファ246と、アクティブ化カウンタ248を含むリフレッシュ制御ロジック232と、を含む。他の実施形態では、コマンドキュー230、アービタ238及びメモリインターフェースキュー214のみが、使用される各メモリチャネル又はサブチャネルに対して複製され、残りの図示された回路は、2つのチャネルとともに使用するように適合される。更に、図示されたデュアルチャネルメモリコントローラは、2つのメモリチャネル又はサブチャネルを制御するために、アービタ238、コマンドキュー220、及び、メモリインターフェースキュー214の2つのインスタンスを含むが、他の実施形態は、本明細書のクレジット管理技術に従って3つ又は4つのチャネル又はサブチャネル上でDRAMと通信するために使用される、3つ又は4つ以上等のより多くのインスタンスを含み得る。 FIG. 2 is a block diagram of a partial data processing system 200 including a dual channel memory controller 210 suitable for use in an APU such as FIG. 1. The dual channel memory controller 210 is shown connected to the data fabric 125 and can communicate with several memory agents present in the data processing system 200, including a coherent slave agent 250 and a coherent master agent 260. The dual channel memory controller 210 replaces two separate memory channel controllers 143 and 144 (FIG. 1) and can control two DDRx channels together in a manner that is transparent to the various memory addressing agents in the data fabric 125 and the data processing system 200, so that a single memory controller interface 212 can be used to send memory access commands and receive results. The dual channel memory controller 210 can also control two sub-channels, such as those defined in the DDR5 specification for use with DDR5 DRAMs, or those sub-channels defined in the High Bandwidth Memory 2 (HBM2) and HBM3 standards. Dual channel memory controller 210 generally includes an interface 212, a credit control circuit 221, an address decoder 222, and two instances of memory channel control circuitry 223, each assigned to a different memory channel. Each instance of memory channel control circuitry 223 includes a memory interface queue 214, a command queue 220, a content addressable memory (CAM) 224, a replay control logic 231 including a replay queue 230, a timing block 234, a page table 236, an arbiter 238, an error correction code (ECC) check circuit 242, an ECC generation block 244, a data buffer 246, and a refresh control logic 232 including an activation counter 248. In other embodiments, only the command queue 230, the arbiter 238, and the memory interface queue 214 are duplicated for each memory channel or sub-channel used, and the remaining illustrated circuitry is adapted for use with two channels. Additionally, although the illustrated dual channel memory controller includes two instances of arbiter 238, command queue 220, and memory interface queue 214 to control two memory channels or sub-channels, other embodiments may include more instances, such as three or four or more, used to communicate with DRAM over three or four channels or sub-channels in accordance with the credit management techniques herein.

インターフェース212は、通信バスを介したデータファブリック125への第1の双方向接続と、クレジット制御回路221への第2の双方向接続と、を有する。この実施形態では、インターフェース212は、データファブリック125と通信するためのいくつかのチャネルを確立するためにスケーラブルデータポート(SDP)リンクを使用するが、他のインターフェースリンク規格も使用に適している。例えば、別の実施形態では、通信バスは、「AXI4」として知られている英国ケンブリッジのARM Holdings,PLCによって指定された高度拡張可能インターフェースバージョン4と適合するが、他の実施形態では他のタイプのインターフェースとなり得る。インターフェース212は、メモリアクセス要求を、「FCLK」(又は「MEMCLK」)ドメインとして知られている第1のクロックドメインから、「UCLK」ドメインとして知られているデュアルチャネルメモリコントローラ210の内部の第2のクロックドメインに変換する。同様に、メモリインターフェースキュー214は、UCLKドメインからDFIインターフェースに関連付けられる「DFICLK」ドメインへのメモリアクセスを与える。 Interface 212 has a first bidirectional connection to data fabric 125 via a communication bus and a second bidirectional connection to credit control circuit 221. In this embodiment, interface 212 uses a Scalable Data Port (SDP) link to establish several channels for communicating with data fabric 125, although other interface link standards are suitable for use. For example, in another embodiment, the communication bus conforms to the Advanced Scalable Interface Version 4 specified by ARM Holdings, PLC of Cambridge, UK, known as "AXI4", although other types of interfaces may be used in other embodiments. Interface 212 translates memory access requests from a first clock domain known as the "FCLK" (or "MEMCLK") domain to a second clock domain internal to dual channel memory controller 210, known as the "UCLK" domain. Similarly, memory interface queue 214 provides memory access from the UCLK domain to the "DFICLK" domain associated with the DFI interface.

クレジット制御回路221は、インターフェース212への双方向通信リンクを含み、これは、アドレスデコーダ222と共有され得るか又は要求クレジットを管理するための専用SDPチャネルを含み得る。また、クレジット制御回路221は、両方のコマンドキュー220に接続された入力を有し、図では、アドレスデコーダ222と共有されるものとして示されている。クレジット制御回路221は、概して、両方のメモリチャネルのためのデータファブリックに割り当てられた要求クレジットを制御する。以下で更に説明するように、クレジット制御回路221によって実行される制御プロセスは、未処理の要求クレジットの数を追跡することと、未処理の要求クレジットの数が第1及び第2のコマンドキュー220の利用可能なエントリの最小数より小さい場合、第1及び第2のコマンドキュー220のうち何れかからメモリアクセス要求が割り当て解除されることに応じて要求クレジットを発行することと、そうでない場合、メモリアクセス要求が割り当て解除されることに応じて要求クレジットを発行しないことと、を含む。また、クレジット制御回路221は、最大数の利用可能なエントリを有する第1及び第2のコマンドキュー220のうち何れかに割り当てられたメモリアクセス要求が受信された場合、第1又は第2のコマンドキュー220からの対応する割り当て解除なしに要求クレジットを発行するように動作する。 The credit control circuit 221 includes a bidirectional communication link to the interface 212, which may be shared with the address decoder 222 or may include a dedicated SDP channel for managing request credits. The credit control circuit 221 also has inputs connected to both command queues 220, and is shown in the figure as being shared with the address decoder 222. The credit control circuit 221 generally controls the request credits allocated to the data fabric for both memory channels. As described further below, the control process performed by the credit control circuit 221 includes tracking the number of outstanding request credits, issuing a request credit in response to a memory access request being deallocated from either the first or second command queue 220 if the number of outstanding request credits is less than the minimum number of available entries in the first and second command queues 220, and not issuing a request credit in response to a memory access request being deallocated otherwise. The credit control circuit 221 also operates to issue a request credit without a corresponding deallocation from the first or second command queue 220 when a memory access request is received that is allocated to either the first or second command queue 220 that has the maximum number of available entries.

アドレスデコーダ222は、クレジット制御回路221への双方向リンクと、第1のコマンドキュー220(「コマンドキュー0」とラベル付けされている)に接続された第1の出力と、第2のコマンドキュー220(「コマンドキュー1」とラベル付けされている)に接続された第2の出力と、を有する。アドレスデコーダ222は、インターフェース212を介してデータファブリック125上で受信されたメモリアクセス要求のアドレスを復号する。メモリアクセス要求は、正規化フォーマットで表された物理アドレス空間内のアクセスアドレスを含む。アクセスアドレスに基づいて、アドレスデコーダ222は、要求を処理するために、コマンドキュー220のうち関連付けられた1つを有するメモリチャネルのうち1つを選択する。選択されたチャネルは、クレジット発行決定を行うことができるように、要求ごとにクレジット制御回路221に対して識別される。アドレスデコーダ222は、正規化されたアドレスを、メモリシステム130内の実際のメモリデバイスをアドレス指定するために及び関連するアクセスを効率的にスケジュールするために使用され得るフォーマットに変換する。このフォーマットは、メモリアクセス要求を特定のランク、行アドレス、列アドレス、バンクアドレス、及び、バンクグループと関連付ける領域識別子を含む。起動時に、システムBIOSは、メモリシステム130内のメモリデバイスに問い合わせてそれらのサイズ及び構成を判定し、アドレスデコーダ222に関連付けられた構成レジスタのセットをプログラムする。アドレスデコーダ222は、構成レジスタに記憶された構成を使用して、正規化されたアドレスを適切なフォーマットに変換する。各メモリアクセス要求は、アドレスデコーダ222によって選択されたメモリチャネルに対するコマンドキュー220にロードされる。 Address decoder 222 has a bidirectional link to credit control circuit 221 and a first output connected to a first command queue 220 (labeled "Command Queue 0") and a second output connected to a second command queue 220 (labeled "Command Queue 1"). Address decoder 222 decodes the addresses of memory access requests received on data fabric 125 via interface 212. The memory access request includes an access address in a physical address space represented in a normalized format. Based on the access address, address decoder 222 selects one of the memory channels with an associated one of command queues 220 to process the request. The selected channel is identified to credit control circuit 221 for each request so that a credit issuance decision can be made. Address decoder 222 converts the normalized address into a format that can be used to address the actual memory devices in memory system 130 and to efficiently schedule the associated accesses. This format includes a region identifier that associates the memory access request with a particular rank, row address, column address, bank address, and bank group. At power-up, the system BIOS interrogates the memory devices in memory system 130 to determine their size and configuration, and programs a set of configuration registers associated with address decoder 222. Address decoder 222 uses the configuration stored in the configuration registers to convert normalized addresses into the appropriate format. Each memory access request is loaded into command queue 220 for the memory channel selected by address decoder 222.

各コマンドキュー220は、CPUコア112及び114並びにグラフィックスコア120等のAPU100内の様々なメモリアクセスエンジンから受信されるメモリアクセス要求のキューである。各コマンドキュー220は、関連付けられたメモリチャネルを介して発行されるメモリアクセス要求をコマンドキュー220から選択するために、それぞれのアービタ238に双方向に接続される。各コマンドキュー220は、アドレスデコーダ222によって復号されたアドレスフィールド、並びに、それぞれのアービタ238がアクセスタイプ及びサービス品質(quality of service、QoS)識別子を含むメモリアクセスを効率的に選択できるようにする他のアドレス情報を記憶する。各CAM224は、書き込み後の書き込み(write after write、WAW)及び書き込み後の読み取り(read after write、RAW)順序規則等の順序規則を実施するための情報を含む。 Each command queue 220 is a queue of memory access requests received from various memory access engines in APU 100, such as CPU cores 112 and 114 and graphics core 120. Each command queue 220 is bidirectionally connected to a respective arbiter 238 for selecting memory access requests from command queue 220 to be issued through the associated memory channel. Each command queue 220 stores address fields decoded by address decoder 222, as well as other address information that allows the respective arbiter 238 to efficiently select memory accesses, including access type and quality of service (QoS) identifiers. Each CAM 224 contains information for implementing ordering rules, such as write after write (WAW) and read after write (RAW) ordering rules.

アービタ238は、それぞれ、適切なコマンドで実行されるメモリアクセス要求を選択するために、それぞれのコマンドキュー220に双方向に接続される。アービタ238は、概して、メモリチャネルのメモリバスの使用を改善するために、アクセスのインテリジェントスケジューリングによって、そのそれぞれのメモリチャネルの効率を改善する。各アービタ238は、それぞれのタイミングブロック234を使用して、それぞれのコマンドキュー220内の特定のアクセスがDRAMタイミングパラメータに基づいて発行に適格であるかどうかを判定することによって、適切なタイミング関係を実施する。例えば、各DRAMは、「tRC」として知られるアクティブ化コマンド間の最小指定時間を有する。各タイミングブロック234は、JEDEC仕様で定められたこのタイミングパラメータ及び他のタイミングパラメータに基づいて適格性を判定するカウンタのセットを維持し、リプレイキュー230に対して双方向で接続される。各ページテーブル236は、アービタ238のためのそれぞれのメモリチャネルの各バンク及びランクにおけるアクティブページに関する状態情報を維持し、そのそれぞれのリプレイキュー230に対して双方向で接続される。アービタ238は、復号されたアドレス情報、タイミングブロック234によって示されるタイミング適格性情報、及び、ページテーブル236によって示されるアクティブページ情報を使用して、サービス品質(QoS)要件等の他の基準を遵守しながら、メモリアクセスを効率的にスケジュールする。例えば、アービタ238は、メモリページを変更するために必要なプリチャージコマンド及びアクティブ化コマンドのオーバーヘッドを回避するために、オープンページへのアクセスの優先度を実装し、あるバンクへのオーバーヘッドアクセスを別のバンクへの読み取り及び書き込みアクセスとインターリーブすることによって隠す。特に、通常動作中、アービタ238は、通常、ページを、これらのページが異なるページを選択する前にプリチャージされる必要があるまで、異なるバンクで開いたままにする。アービタ238は、いくつかの実施形態では、それぞれのコマンドのターゲットメモリ領域に関するアクティブ化カウンタ248の少なくともそれぞれの値に基づいてコマンド選択の適格性を判定する。 Each arbiter 238 is bidirectionally connected to a respective command queue 220 to select memory access requests to be executed with the appropriate command. The arbiters 238 generally improve the efficiency of their respective memory channels by intelligent scheduling of accesses to improve usage of the memory channel's memory bus. Each arbiter 238 uses its respective timing block 234 to enforce the appropriate timing relationships by determining whether a particular access in its respective command queue 220 is eligible for issue based on DRAM timing parameters. For example, each DRAM has a minimum specified time between activation commands known as " tRC ". Each timing block 234 maintains a set of counters that determine eligibility based on this and other timing parameters defined in the JEDEC specifications, and is bidirectionally connected to the replay queue 230. Each page table 236 maintains state information regarding active pages in each bank and rank of its respective memory channel for the arbiter 238, and is bidirectionally connected to its respective replay queue 230. The arbiter 238 uses the decoded address information, the timing eligibility information indicated by the timing block 234, and the active page information indicated by the page table 236 to efficiently schedule memory accesses while adhering to other criteria such as quality of service (QoS) requirements. For example, the arbiter 238 implements prioritization of accesses to open pages and hides overhead accesses to one bank by interleaving them with read and write accesses to another bank to avoid the overhead of precharge and activate commands required to change memory pages. In particular, during normal operation, the arbiter 238 typically keeps pages open in different banks until these pages need to be precharged before selecting a different page. The arbiter 238, in some embodiments, determines the eligibility of a command selection based on at least the respective values of the activation counters 248 for the target memory regions of the respective commands.

各エラー訂正コード(ECC)生成ブロック244は、メモリに送られる書き込みデータのECCを判定する。ECCチェック回路242は、受信されたECCを着信ECCと照合してチェックする。 Each error correction code (ECC) generation block 244 determines the ECC of the write data sent to the memory. The ECC check circuit 242 checks the received ECC against the incoming ECC.

各リプレイキュー230は、アドレス及びコマンドパリティ応答等の応答を待っているアービタ238によって選択されたメモリアクセスを記憶するための一時的なキューである。リプレイ制御ロジック231は、ECCチェック回路242にアクセスして、戻されたECCが正しいか又はエラーを示すかを判定する。リプレイ制御ロジック231は、これらのサイクルのうち1つのパリティ又はECCエラーの場合にアクセスがリプレイされるリプレイシーケンスを開始して制御する。リプレイされたコマンドは、メモリインターフェースキュー214に配置される。 Each replay queue 230 is a temporary queue for storing a memory access selected by arbiter 238 awaiting a response, such as an address and command parity response. Replay control logic 231 accesses ECC check circuitry 242 to determine whether the returned ECC is correct or indicates an error. Replay control logic 231 initiates and controls a replay sequence in which an access is replayed in the event of a parity or ECC error in one of these cycles. The replayed command is placed in memory interface queue 214.

リフレッシュ制御ロジック232の各インスタンスは、メモリアクセスエージェントから受信した通常の読み取り及び書き込みメモリアクセス要求とは別に生成される様々な電源断、リフレッシュ及び終端抵抗(ZQ)較正サイクルのためのステートマシンを含む。例えば、メモリランクがプリチャージパワーダウンにある場合、リフレッシュ制御ロジックは、リフレッシュサイクルを実行するために定期的に起動されなければならない。リフレッシュ制御ロジック232は、DRAMチップ内のメモリセルの蓄積キャパシタからの電荷の漏れによって引き起こされるデータエラーを防止するために、定期的に、定められた条件に応じて、リフレッシュコマンドを生成する。リフレッシュ制御ロジック232の各インスタンスはアクティブ化カウンタ248を含み、この実施形態では、アクティブ化カウンタ248は、メモリチャネルを介してメモリ領域に送信されるアクティブ化コマンドのローリング数をカウントするカウンタをメモリ領域ごとに有する。メモリ領域は、いくつかの実施形態ではメモリバンクであり、他の実施形態ではメモリサブバンクである。更に、リフレッシュ制御ロジック232は、システム内の熱変化に起因するオンダイ終端抵抗の不一致を防止するためにZQを定期的に較正する。 Each instance of the refresh control logic 232 includes state machines for various power-down, refresh, and termination resistor (ZQ) calibration cycles that are generated separately from normal read and write memory access requests received from memory access agents. For example, when a memory rank is in precharge power-down, the refresh control logic must be periodically awakened to perform refresh cycles. The refresh control logic 232 periodically generates refresh commands in response to defined conditions to prevent data errors caused by charge leakage from storage capacitors of memory cells in the DRAM chip. Each instance of the refresh control logic 232 includes an activation counter 248, which in this embodiment has a counter for each memory region that counts the rolling number of activation commands sent to the memory region over the memory channel. The memory region is a memory bank in some embodiments and a memory sub-bank in other embodiments. Additionally, the refresh control logic 232 periodically calibrates the ZQ to prevent on-die termination resistor mismatches due to thermal changes in the system.

ECC生成ブロック244は、インターフェース212から受信した書き込みメモリアクセス要求に応じて、書き込みデータに従ってECCを計算する。データバッファ246は、受信したメモリアクセス要求に関する書き込みデータ及びECCを記憶する。データバッファ246は、それぞれのアービタ238がメモリチャネルへのディスパッチのために対応する書き込みアクセスを選択すると、組み合わされた書き込みデータ/ECCをそれぞれのメモリインターフェースキュー214に出力する。 The ECC generation block 244 calculates the ECC according to the write data in response to a write memory access request received from the interface 212. The data buffer 246 stores the write data and ECC for the received memory access request. The data buffer 246 outputs the combined write data/ECC to the respective memory interface queue 214 when the respective arbiter 238 selects the corresponding write access for dispatch to the memory channel.

3つ以上のメモリチャネル又はサブチャネルを有する実施形態では、追加のコマンドキュー、アービタ及びメモリインターフェースキューは、単一のアドレスデコーダ222及びクレジット制御回路221を使用して、図示されたものと並列に追加される。このような設計により、以下に説明するクレジット制御方式を3つ以上のチャネル又はサブチャネルとともに使用することが可能となり、キュー容量及びチャネル容量を使用する際に対応する効率が得られる。説明したように、メモリチャネル制御回路223のグループ全体は、各チャネル又はサブチャネルに対して再現されてもよく、あるいは、同じロジックブロックは、追加されたコマンドキュー、アービタ及びメモリインターフェースキューを追跡するために、追加された追加容量とともに使用されてもよい。 In embodiments having more than two memory channels or sub-channels, additional command queues, arbiters, and memory interface queues are added in parallel to those shown, using a single address decoder 222 and credit control circuitry 221. Such a design allows the credit control scheme described below to be used with more than two channels or sub-channels, with corresponding efficiencies in using queue and channel capacity. As described, the entire group of memory channel control circuits 223 may be duplicated for each channel or sub-channel, or the same logic blocks may be used with the additional capacity added to track the added command queues, arbiters, and memory interface queues.

図3は、いくつかの実施形態による、図2のクレジット制御回路221を実装するのに適したクレジット制御回路300のブロック図を示す。クレジット制御回路300は、未処理クレジット追跡ロジック302と、キュー0占有ロジック304と、キュー1占有ロジック306と、インターフェースロジック308と、クレジット発行ロジック310と、要求モニタ312と、コマンドキューモニタ314と、先入れ先出し(first-in-first-out、FIFO)クレジットキュー316(FIFOキュー316)と、を含む。未処理クレジット追跡ロジック302は、概して、発行された要求クレジットのカウントを維持し、新しい要求クレジットを発行し、関連するメモリアクセス要求がメモリコントローラ210において受信された場合に有効化される要求クレジットを追跡する。要求クレジットは、データファブリック上の1つ以上の要求エージェントに発行される。この実施形態では、要求クレジットは、初期クレジットと、2つのコマンドキュー及び2つのチャネル又はサブチャネルの使用によって提供されるより高い容量のために発行される追加クレジットと、の2つのタイプのうち何れかである。追加クレジットを使用することにより、クレジット制御回路300は、両方のコマンドキューの容量をより完全且つ効率的に利用するために、特定の条件下で初期クレジットの数を超える更なるクレジットを発行することができる。追加クレジットは、初期クレジットと同じ方法で未処理クレジット追跡ロジックによって追跡され、総未処理クレジットに向かってカウントされる。 3 illustrates a block diagram of a credit control circuit 300 suitable for implementing the credit control circuit 221 of FIG. 2, according to some embodiments. The credit control circuit 300 includes outstanding credit tracking logic 302, queue 0 occupancy logic 304, queue 1 occupancy logic 306, interface logic 308, credit issuing logic 310, request monitor 312, command queue monitor 314, and a first-in-first-out (FIFO) credit queue 316 (FIFO queue 316). The outstanding credit tracking logic 302 generally maintains a count of issued request credits, issues new request credits, and tracks request credits that are enabled when an associated memory access request is received at the memory controller 210. The request credits are issued to one or more request agents on the data fabric. In this embodiment, the request credits are one of two types: initial credits and additional credits that are issued due to the higher capacity provided by the use of two command queues and two channels or sub-channels. The use of additional credits allows the credit control circuitry 300 to issue more credits beyond the initial number of credits under certain conditions in order to more fully and efficiently utilize the capacity of both command queues. The additional credits are tracked by the outstanding credits tracking logic in the same manner as the initial credits and are counted toward the total outstanding credits.

キュー0占有ロジック304及びキュー1占有ロジック306は、それぞれのコマンドキュー内の割り当てられていないエントリの数のカウントを維持する。いくつかの実施形態では、カウントは、コマンドキューサイズから各コマンドキューの占有されたエントリの現在の数を減算することによって生成される。他の実施形態では、占有されていないエントリは、コマンドキューから直接的に追跡されるか、又は、各コマンドキューにロードされるエントリ及び各コマンドキューから割り当て解除されるエントリの追跡に基づいて間接的に追跡される。 Queue 0 occupancy logic 304 and queue 1 occupancy logic 306 maintain a count of the number of unallocated entries in their respective command queues. In some embodiments, the count is generated by subtracting the current number of occupied entries in each command queue from the command queue size. In other embodiments, the unallocated entries are tracked directly from the command queues, or indirectly based on tracking the entries loaded into and deallocated from each command queue.

要求モニタ312は、何れのキューが各要求を受信するかを含めて、それぞれのコマンドキューにアドレスデコーダ222によって割り当てられた着信要求を監視する。この情報は、新しい要求クレジットが発行される場合及び発行されるかどうかを判定する際に、クレジット発行ロジック310によって使用される。コマンドキューモニタ314は、両方のコマンドキューを監視して、いつ要求がコマンドキューから割り当て解除されるかを判定する。FIFOキュー316は、図5に関して説明するように、特定の条件下でコマンドが各コマンドキューから割り当て解除された場合に発行される追加の要求クレジットを保持する。これらのクレジットは、以下で更に説明するように、クレジット発行ロジック300が、これが許可されていると判定するとすぐに、ファブリックに解放される。クレジット発行ロジック310は、図4及び図5に関して以下で更に説明するように、未処理クレジットの数、各キューのキュー占有率、並びに、要求モニタ312及びコマンドキューモニタ314からの監視された情報を使用して、要求クレジットをいつ発行するかを決定する。いくつかのバージョンでは、クレジット制御機能は、メモリコントローラのアービタ(例えば、アービタ238、図2)内のロジック回路を監視することで具現化される。他のバージョンでは、プロセスは、前述のサブアービタ305及び最終アービタ350において使用されるものとは異なるアービトレーション方法を使用しながら、同様の機能を有するデジタルロジック又はコントローラによって実行されてもよい。 The request monitor 312 monitors incoming requests assigned by the address decoder 222 to each command queue, including which queue receives each request. This information is used by the credit issuing logic 310 in determining if and whether new request credits are issued. The command queue monitor 314 monitors both command queues to determine when requests are deallocated from the command queues. The FIFO queue 316 holds additional request credits that are issued when commands are deallocated from each command queue under certain conditions, as described with respect to FIG. 5. These credits are released to the fabric as soon as the credit issuing logic 300 determines that this is permitted, as described further below. The credit issuing logic 310 uses the number of outstanding credits, the queue occupancy of each queue, and monitored information from the request monitor 312 and the command queue monitor 314 to determine when to issue request credits, as described further below with respect to FIGS. 4 and 5. In some versions, the credit control function is implemented by monitoring logic circuitry within the memory controller's arbiter (e.g., arbiter 238, FIG. 2). In other versions, the process may be performed by digital logic or a controller having similar functionality, while using a different arbitration method than that used in the sub-arbiter 305 and final arbiter 350 discussed above.

図4は、いくつかの実施形態による、要求クレジットを管理するためのプロセスのフロー図400である。図示されたプロセスは、デュアルチャネルメモリコントローラ、2つ以上のメモリチャネル若しくはサブチャネルに結合されたメモリコントローラ、又は、未処理の要求クレジットを追跡し、デュアルチャネルメモリコントローラのために2つ以上のコマンドキューを監視する別の好適なデジタル制御回路において具現化された図3のクレジット制御回路300等のクレジット制御回路によって実行されるのに適している。プロセスは、概して、コマンドキュー0及びコマンドキュー1に関連付けられた両方のメモリチャネルに対するメモリアクセス要求に対する要求クレジットを管理するように機能する。要求クレジットは、関連付けられたアクセス要求を受信するために何れのコマンドキュー及びメモリチャネルが最終的に選択され得るかとは無関係に、データファブリックによって使用される。すなわち、メモリコントローラによって管理される2つのメモリチャネル又はサブチャネルの存在は、データファブリック及びデータファブリックにアクセスする様々なメモリエージェントに対して透過的である。 4 is a flow diagram 400 of a process for managing request credits, according to some embodiments. The illustrated process is suitable for execution by a credit control circuit, such as the credit control circuit 300 of FIG. 3 embodied in a dual channel memory controller, a memory controller coupled to two or more memory channels or sub-channels, or another suitable digital control circuit that tracks outstanding request credits and monitors two or more command queues for a dual channel memory controller. The process generally functions to manage request credits for memory access requests for both memory channels associated with command queue 0 and command queue 1. The request credits are used by the data fabric regardless of which command queue and memory channel may ultimately be selected to receive the associated access request. That is, the existence of two memory channels or sub-channels managed by the memory controller is transparent to the data fabric and the various memory agents accessing the data fabric.

ブロック402において2つのメモリチャネルが初期化されたことに応じて、ブロック404におけるプロセスは、初期要求クレジットをデータファブリックに発行し、初期要求クレジットは、着信読み取り又は書き込みコマンドのために有効化される。また、書き込みコマンドは、データバッファ246(図2)を管理するためにデータクレジットの使用を必要とする。データクレジットは、本明細書で説明する初期クレジット及び追加クレジットとは別に管理される。初期要求クレジットの数は、コマンドキュー220のサイズによって判定される。好ましくは、各コマンドキュー220内のエントリの半分を満たすのに十分な初期要求クレジットが解放され、単一のキュー内にコマンドを配置するために全てのクレジットが有効化された場合にオーバーフローしないことを保証する。2つのコマンドキューのサイズが等しい場合、解放されるクレジットの数は、通常、1つのコマンドキューのサイズである。2つのコマンドキューのサイズが等しくない場合、小さい方のコマンドキューのサイズを使用して初期クレジット数を判定し、最小のコマンドキューより大きくないクレジット量でクレジットプロセスが初期化されることを保証する。この時点で、データファブリックは、メモリコントローラ210に要求を送信するためにデータファブリックに接続された1つ以上のメモリアクセスエージェントによって使用され得る要求クレジットを所有する。 In response to the two memory channels being initialized in block 402, the process in block 404 issues initial request credits to the data fabric, which are enabled for incoming read or write commands. Write commands also require the use of data credits to manage the data buffer 246 (FIG. 2). The data credits are managed separately from the initial and additional credits described herein. The number of initial request credits is determined by the size of the command queues 220. Preferably, enough initial request credits are released to fill half of the entries in each command queue 220, ensuring that there will be no overflow if all credits are enabled to place commands in a single queue. If the two command queues are equal in size, the number of credits released is typically the size of one command queue. If the two command queues are unequal in size, the size of the smaller command queue is used to determine the initial number of credits, ensuring that the credit process is initialized with an amount of credits no greater than the smallest command queue. At this point, the data fabric owns request credits that can be used by one or more memory access agents connected to the data fabric to send requests to the memory controller 210.

ブロック406において、プロセスは、関連付けられた要求クレジットをそれぞれ有する読み取り及び書き込みメモリアクセス要求を受信し始める。受信されたアクセス要求ごとに、ブロック408において、クレジット制御回路は、例えば、未処理クレジット追跡ロジック302(図3)において、未処理の要求クレジットを有効化する。また、アクセス要求は、アドレスデコーダ222によって処理されて、関連付けられたアドレスが復号され、このアドレスに基づいて、メモリアクセス要求を受信するためのメモリチャネルのうち何れかが選択される。ブロック410において、要求は、アドレスデコーダ222の制御下で選択されたメモリチャネルのコマンドキューにロードすることによって、メモリチャネルに割り当てられる。クレジット制御回路300は、ブロック410において各コマンドキューにロードされるアクセス要求を監視する。 At block 406, the process begins receiving read and write memory access requests, each having an associated request credit. For each received access request, at block 408, the credit control circuitry activates the outstanding request credit, for example in the outstanding credit tracking logic 302 (FIG. 3). The access request is also processed by the address decoder 222 to decode the associated address and select one of the memory channels for receiving the memory access request based on the address. At block 410, the request is assigned to a memory channel by loading the command queue of the selected memory channel under the control of the address decoder 222. The credit control circuitry 300 monitors the access requests that are loaded into each command queue at block 410.

ブロック412において、プロセスは、1つ以上の追加の要求クレジットが既に発行されており、クレジット制御回路FIFOキュー316(図3)において解放の保留中であるかどうかを判定する。追加の要求クレジットの解放は、図5に関して更に説明される。追加の要求クレジットが解放の保留中である場合、プロセスはブロック420に進み、現在の着信要求に対して要求クレジットは解放されない。そうでない場合、プロセスはブロック414に進み、両方のコマンドキューが最大占有率にあるかどうかを判定する。そうである場合、プロセスはブロック420に進む。そうでない場合、プロセスはブロック416に進み、そこでプロセスは、未処理の要求クレジットが最大値であるかどうかを判定する。最大値は構成可能であり、典型的には、両方のコマンドキューの最大占有率の合計に設定される。ブロック416において未処理の要求クレジットが最大値である場合、プロセスはブロック420に進む。そうでない場合、プロセスはブロック418に進む。 At block 412, the process determines whether one or more additional request credits have already been issued and are pending release in the credit control circuit FIFO queue 316 (FIG. 3). The release of additional request credits is further described with respect to FIG. 5. If additional request credits are pending release, the process proceeds to block 420, where no request credits are released for the current incoming request. If not, the process proceeds to block 414, where the process determines whether both command queues are at maximum occupancy. If so, the process proceeds to block 420. If not, the process proceeds to block 416, where the process determines whether the outstanding request credits are at a maximum value. The maximum value is configurable and is typically set to the sum of the maximum occupancy of both command queues. If the outstanding request credits are at a maximum value at block 416, the process proceeds to block 420. If not, the process proceeds to block 418.

ブロック418において、プロセスは、最大数の利用可能なエントリを有するコマンドキューに要求が割り当てられたかどうかを判定する。そうである場合、プロセスはブロック422に進み、要求クレジットをデータファブリックに発行させる。クレジット発行ロジック310(図3)又は他の好適なデジタルロジック若しくは制御回路は、要求クレジット発行を実行し、未処理のクレジットを更新する。ブロック422における要求クレジット発行は、コマンドキューのうち何れかからのコマンドの対応する割り当て解除なしに行われ、これは、2つのコマンドキューのより効率的な使用を可能にするので、図示されたプロセスにおいて有益である。ブロック418において、アクセス要求が、最も多い利用可能なエントリを有するコマンドキューに割り当てられていない場合、プロセスはブロック420に進み、この特定のアクセス要求が割り当てられていることに応じて、要求クレジットを発行しない。 At block 418, the process determines whether the request has been assigned to the command queue with the most available entries. If so, the process proceeds to block 422, where the request credit is issued to the data fabric. The credit issuance logic 310 (FIG. 3) or other suitable digital or control circuitry performs the request credit issuance and updates the outstanding credits. The request credit issuance at block 422 is performed without a corresponding deallocation of commands from either of the command queues, which is beneficial in the illustrated process because it allows for more efficient use of the two command queues. At block 418, if the access request has not been assigned to the command queue with the most available entries, the process proceeds to block 420, where the request credit is not issued in response to this particular access request being assigned.

図示されたプロセスを使用すると、コマンドがあまり占有されていないコマンドキューに割り当てられる場合に「余分な」又は追加の要求クレジットが発行されることを可能にすることによって、各コマンドキューがより高い容量まで利用されるので、性能上の利点が達成される。図示されたプロセスを、図2に示したようなデュアルアービタメモリコントローラアーキテクチャと組み合わせて使用すると、図4及び図5に示したキュー容量チェックなしでより悲観的な手法を使用する場合よりも、アービタが選択するためにコマンドキュー内で利用可能な多数のコマンドで概して動作しながら、各メモリチャネルを別々に調停することができるので、更なる性能上の利点が達成される。 Using the illustrated process, a performance advantage is achieved since each command queue is utilized to a higher capacity by allowing "extra" or additional request credits to be issued if a command is assigned to a less occupied command queue. When the illustrated process is used in combination with a dual arbiter memory controller architecture such as that shown in FIG. 2, a further performance advantage is achieved since each memory channel can be arbitrated separately while generally operating with a larger number of commands available in the command queue for the arbiter to select from than would be the case if a more pessimistic approach without queue capacity checks were used as shown in FIGS. 4 and 5.

フローチャート400は、順番に発生するブロック410、412、414、416、及び418を示しているが、実際の実装形態では、これらの決定は、デジタルロジックによって行われ、様々な実施形態では、任意の好適な順番で、又は示された条件の一部若しくは全てを同時にチェックするロジック回路と並行して行われる。 Although flowchart 400 shows blocks 410, 412, 414, 416, and 418 occurring in sequence, in an actual implementation, these decisions are made by digital logic and in various embodiments in any suitable order or in parallel with logic circuitry that checks some or all of the conditions shown simultaneously.

図5は、デュアルチャネルメモリコントローラにおいて要求クレジットを管理するための別のプロセスのフロー図500である。この実施形態では、プロセスは、図4のプロセスとともにクレジット制御回路300によって実行されて、要求クレジットがデュアルチャネルメモリコントローラ、又は、2つ以上のメモリチャネル若しくはサブチャネルのためのメモリコントローラに発行される2つの異なる方法が提供される。 FIG. 5 is a flow diagram 500 of another process for managing request credits in a dual channel memory controller. In this embodiment, the process is performed by the credit control circuitry 300 in conjunction with the process of FIG. 4 to provide two different ways in which request credits may be issued to a dual channel memory controller, or a memory controller for two or more memory channels or sub-channels.

ブロック502において、プロセスは、メモリアクセス要求が2つのコマンドキューのうち何れかから割り当て解除されることに応じて開始する。ブロック504において、プロセスは、各コマンドキューにおいて利用可能なエントリの数を取得する。この情報は、クレジット制御回路、例えば、キュー0占有ロジック304及びキュー1占有ロジック306(図3)において維持されることが好ましい。いくつかの実施形態では、プロセスは、ブロック504においてコマンドキューに直接アクセスして、各コマンドキュー内の利用可能なエントリの数を取得又は計算することができる。関連する数は、ブロック502における割り当て解除された要求を考慮した後の数である。 At block 502, the process begins in response to a memory access request being deallocated from one of two command queues. At block 504, the process obtains the number of available entries in each command queue. This information is preferably maintained in the credit control circuitry, e.g., queue 0 occupancy logic 304 and queue 1 occupancy logic 306 (FIG. 3). In some embodiments, the process may directly access the command queues at block 504 to obtain or calculate the number of available entries in each command queue. The relevant number is the number after taking into account the deallocated request at block 502.

ブロック506において、プロセスは、未処理の要求クレジットの数が、2つのコマンドキューの利用可能なエントリの最小数よりも少ないかどうかをチェックし、そうである場合、ブロック508において追加の要求クレジットを発行する。この要求クレジットは、FIFOキュー316(図3)にロードされ、できるだけ早くデータファブリックに解放されることが好ましい。2つのコマンドキューの利用可能なエントリの数が等しい場合に、このプロセスは、未処理の要求クレジットの数が当該等しい数の利用可能なエントリよりも少ない場合に要求クレジットを発行し、そうでない場合(少なくない場合)に、メモリアクセス要求が割り当て解除されることに応じて要求クレジットを発行しない。未処理クレジット追跡ロジック302は、追加の要求クレジットがFIFOキュー316を出て、データファブリック上の受信側メモリエージェントによって受信されたことが確認された場合に、追加の要求クレジットを未処理としてカウントすることが好ましい。ブロック506において、未処理の要求クレジットの数が、2つのコマンドキューの利用可能なエントリの最小数よりも少なくない場合、プロセスはブロック510に進み、ブロック502においてメモリアクセス要求が割り当て解除されることに応じて、要求クレジットを発行しない。 At block 506, the process checks whether the number of outstanding request credits is less than the minimum number of available entries in the two command queues, and if so, issues additional request credits at block 508. The request credits are preferably loaded into the FIFO queue 316 (FIG. 3) and released to the data fabric as soon as possible. If the number of available entries in the two command queues is equal, the process issues request credits if the number of outstanding request credits is less than the equal number of available entries, and if not (not less), does not issue request credits in response to the memory access request being deallocated. The outstanding credit tracking logic 302 preferably counts additional request credits as outstanding when it is determined that the additional request credits have left the FIFO queue 316 and been received by a receiving memory agent on the data fabric. If at block 506, the number of outstanding request credits is not less than the minimum number of available entries in the two command queues, the process proceeds to block 510 and does not issue request credits in response to the memory access request being deallocated at block 502.

このクレジット発行プロセスは、2つのコマンドキューのより効率的な使用を可能にするという利点を有する一方で、未処理のクレジットの数が、最も占有されたキューの利用可能なエントリより高くならないことを保証する。データファブリック及びそれにアタッチされた要求側メモリエージェントは、好ましくは、特定の要求クレジットが初期クレジットであるか追加クレジットであるかに関する情報を有さず、クレジット追跡プロセスはデータファブリックに対して透過的になる。データファブリックは、デュアルチャネルメモリコントローラを、単一チャネルのスループット容量より高いスループット容量を有する単一コントローラであるかのように扱うことができる。2つのコマンドキュー及び2つのメモリチャネルの容量は、データファブリックに対して透過的な方法で組み合わされ、一方で、単一コマンドキューのための典型的なクレジット管理プロセスが使用された場合より積極的に要求クレジットが発行されることが可能になる。 This credit issuance process has the advantage of allowing more efficient use of the two command queues while ensuring that the number of outstanding credits never gets higher than the available entries of the most occupied queue. The data fabric and the requesting memory agents attached to it preferably have no information about whether a particular requested credit is an initial credit or an additional credit, making the credit tracking process transparent to the data fabric. The data fabric can treat a dual channel memory controller as if it were a single controller with a higher throughput capacity than that of a single channel. The capacity of the two command queues and two memory channels is combined in a manner that is transparent to the data fabric while allowing requested credits to be issued more aggressively than if a typical credit management process for a single command queue were used.

図2のデュアルチャネルメモリコントローラ210、又は、クレジット管理回路221及びアドレスデコーダ222等のその任意の部分は、プログラムによって読み取られ、集積回路を製造するために直接的又は間接的に使用され得るデータベース又は他のデータ構造の形態のコンピュータアクセス可能データ構造によって記述又は表現され得る。例えば、このデータ構造は、Verilog又はVHDL等の高レベル設計言語(high level design language、HDL)におけるハードウェア機能の挙動レベル記述又はレジスタ転送レベル(register-transfer level、RTL)記述であってもよい。記述は、合成ライブラリからゲートのリストを含むネットリストを生成するために記述を合成することができる合成ツールによって読み取られることができる。ネットリストは、集積回路を含むハードウェアの機能も表すゲートのセットを含む。ネットリストは、次いで、マスクに適用される幾何学的形状を記述するデータセットを生成するために配置され、ルーティングされ得る。次いで、マスクを様々な半導体製造工程で使用して、集積回路を製造することができる。代替的に、コンピュータアクセス可能格納媒体上のデータベースは、所望に応じて、ネットリスト(合成ライブラリの有無にかかわらず)若しくはデータセット、又は、グラフィックスデータシステム(Graphic Data System、GDS)IIデータであり得る。 The dual channel memory controller 210 of FIG. 2, or any portion thereof, such as the credit management circuit 221 and the address decoder 222, may be described or represented by a computer-accessible data structure in the form of a database or other data structure that may be read by a program and used directly or indirectly to manufacture an integrated circuit. For example, this data structure may be a behavioral or register-transfer level (RTL) description of the hardware functionality in a high level design language (HDL) such as Verilog or VHDL. The description may be read by a synthesis tool that may synthesize the description to generate a netlist that includes a list of gates from a synthesis library. The netlist includes a set of gates that also represent the functionality of the hardware that comprises the integrated circuit. The netlist may then be placed and routed to generate a data set that describes the geometric shapes that are applied to a mask. The mask may then be used in various semiconductor manufacturing processes to manufacture the integrated circuit. Alternatively, the database on the computer-accessible storage medium may be a netlist (with or without a synthesis library) or a data set, or Graphics Data System (GDS) II data, as desired.

特定の実施形態を説明してきたが、これらの実施形態に対する様々な修正が当業者には明らかである。例えば、デュアルチャネルメモリコントローラが例として使用されているが、本明細書の技術は、データファブリック及びホストデータ処理システムに透過的な方法でそれらの容量を組み合わせるために、3つ以上のメモリチャネルに適用されてもよい。例えば、3つ又は4つのメモリチャネルは、各チャネルに対して個別のコマンドキュー及びメモリチャネル制御回路を提供する一方で、単一のインターフェースと、アドレスデコーダと、個々のメモリチャネルから独立した要求クレジットをデータファブリックに発行するクレジット制御回路と、を提供することによって、本明細書の技術を使用して制御され得る。更に、デュアルチャネルメモリコントローラ210の内部アーキテクチャは、異なる実施形態では変化し得る。デュアルチャネルメモリコントローラ210は、高帯域幅メモリ(HBM)、RAMbus DRAM(RAMbus DRAM、RDRAM)等のような、DDRx以外の他のタイプのメモリとインターフェースすることができる。図示した実施形態は、個別のDIMM又はSIMMに対応するメモリの各ランクを示したが、他の実施形態では、各モジュールは複数のランクをサポートすることができる。更に他の実施形態は、ホストマザーボードに取り付けられたDRAM等のように、特定のモジュールに含まれていない他のタイプのDRAMモジュール又はDRAMを含むことができる。したがって、添付の特許請求の範囲は、開示された実施形態の範囲に含まれる、開示された実施形態の全ての変更を網羅することを意図している。 While specific embodiments have been described, various modifications to these embodiments will be apparent to those skilled in the art. For example, while a dual channel memory controller is used as an example, the techniques herein may be applied to three or more memory channels to combine their capacities in a manner that is transparent to the data fabric and the host data processing system. For example, three or four memory channels may be controlled using the techniques herein by providing separate command queues and memory channel control circuits for each channel while providing a single interface, address decoder, and credit control circuitry that issues request credits to the data fabric independent of the individual memory channels. Additionally, the internal architecture of the dual channel memory controller 210 may vary in different embodiments. The dual channel memory controller 210 may interface with other types of memory other than DDRx, such as high bandwidth memory (HBM), RAMbus DRAM (RAMbus DRAM, RDRAM), etc. Although the illustrated embodiment shows each rank of memory corresponding to a separate DIMM or SIMM, in other embodiments, each module may support multiple ranks. Still other embodiments may include other types of DRAM modules or DRAM not contained in a specific module, such as DRAM attached to a host motherboard. Accordingly, the appended claims are intended to cover all modifications of the disclosed embodiments that fall within the scope of the disclosed embodiments.

Claims (23)

メモリコントローラであって、
メモリアクセス要求を受信するための第1の入力と、第1の出力と、第2の出力と、を有するアドレスデコーダと、
第1のメモリチャネルに対するメモリアクセス要求を受信するために前記アドレスデコーダの前記第1の出力に結合された入力と、メモリアクセス要求を保持するためのいくつかのエントリと、を有する第1のコマンドキューと、
第2のメモリチャネルに対するメモリアクセス要求を受信するために前記アドレスデコーダの前記第2の出力に結合された入力と、メモリアクセス要求を保持するためのいくつかのエントリと、を有する第2のコマンドキューと、
前記第1のコマンドキュー及び前記第2のコマンドキューに結合された要求クレジット制御回路であって、未処理の要求クレジットの数を追跡し、前記第1のコマンドキュー及び前記第2のコマンドキューの利用可能なエントリの数に基づいて、データファブリックに対する要求クレジットを発行するように動作可能な要求クレジット制御回路と、を備える、
メモリコントローラ。
1. A memory controller, comprising:
an address decoder having a first input for receiving a memory access request, a first output, and a second output;
a first command queue having an input coupled to the first output of the address decoder for receiving memory access requests for a first memory channel, and a number of entries for holding memory access requests;
a second command queue having an input coupled to the second output of the address decoder for receiving memory access requests for a second memory channel, and a number of entries for holding memory access requests;
a request credit control circuit coupled to the first command queue and the second command queue, the request credit control circuit operable to track a number of outstanding request credits and to issue request credits to a data fabric based on a number of available entries in the first command queue and the second command queue.
Memory controller.
前記第1のコマンドキュー及び前記第2のコマンドキューの利用可能なエントリの数に基づいてクレジット要求を発行することは、未処理の要求クレジットの数が前記第1のコマンドキュー及び前記第2のコマンドキューの利用可能なエントリの最小数よりも少ない場合に、クレジット要求を発行することを含む、
請求項1のメモリコントローラ。
issuance of a credit request based on a number of available entries in the first command queue and the second command queue includes issuing a credit request when a number of outstanding request credits is less than a minimum number of available entries in the first command queue and the second command queue.
The memory controller of claim 1 .
前記要求クレジット制御回路は、データ処理ユニットのデータファブリックに結合されており、前記データファブリックを介してメモリアクセスエージェントに要求クレジットを発行するように動作可能である、
請求項1のメモリコントローラ。
the request credit control circuitry is coupled to a data fabric of the data processing unit and is operable to issue request credits to memory accessing agents via the data fabric;
The memory controller of claim 1 .
前記要求クレジット制御回路は、前記第1のコマンドキュー及び前記第2のコマンドキューのうち最大数の利用可能なエントリを有するコマンドキューに割り当てられたメモリアクセス要求が受信された場合に、前記第1のコマンドキュー又は前記第2のコマンドキューからの対応する割り当て解除なしに要求クレジットを発行するように動作可能である、
請求項1のメモリコントローラ。
the request credit control circuitry is operable to issue a request credit without a corresponding deallocation from the first command queue or the second command queue when a memory access request is received that is assigned to a command queue among the first command queue and the second command queue that has a maximum number of available entries.
The memory controller of claim 1 .
前記第1のコマンドキューからエントリを選択し、前記エントリを第1のメモリインターフェースキューに配置して、前記エントリを、前記第1のメモリチャネルを介して送信するために、前記第1のコマンドキューに結合された第1のアービタと、
前記第2のコマンドキューからエントリを選択し、前記エントリを第2のメモリインターフェースキューに配置して、前記エントリを、前記第2のメモリチャネルを介して送信するために、前記第2のコマンドキューに結合された第2のアービタと、を更に備える、
請求項1のメモリコントローラ。
a first arbiter coupled to the first command queue to select an entry from the first command queue, place the entry in a first memory interface queue, and transmit the entry over the first memory channel;
a second arbiter coupled to the second command queue to select an entry from the second command queue, place the entry in a second memory interface queue, and transmit the entry over the second memory channel.
The memory controller of claim 1 .
前記アドレスデコーダは、前記メモリアクセス要求のターゲットアドレスに基づいて、各メモリアクセス要求を前記第1のコマンドキュー又は前記第2のコマンドキューに向けるように動作可能である、
請求項1のメモリコントローラ。
the address decoder is operable to direct each memory access request to either the first command queue or the second command queue based on a target address of the memory access request.
The memory controller of claim 1 .
前記第1のコマンドキューは、前記第2のコマンドキューとは異なるサイズを有する、
請求項1のメモリコントローラ。
the first command queue has a different size than the second command queue.
The memory controller of claim 1 .
少なくとも1つの追加のコマンドキューと、前記追加のコマンドキューに結合された少なくとも1つの追加のアービタと、を更に備え、
前記要求クレジット制御回路は、未処理の要求クレジットの数が、全てのコマンドキューの中で利用可能なエントリの最小数よりも少ない場合に、前記コマンドキューの何れかからメモリアクセス要求が割り当て解除されることに応じて要求クレジットを発行し、そうでない場合に、前記メモリアクセス要求が割り当て解除されることに応じて要求クレジットを発行しないように動作可能である、
請求項1のメモリコントローラ。
at least one additional command queue; and at least one additional arbiter coupled to the additional command queue;
the request credit control circuitry is operable to issue request credits in response to a memory access request being deallocated from any of the command queues if a number of outstanding request credits is less than a minimum number of entries available among all command queues, and to not issue request credits in response to the memory access request being deallocated otherwise.
The memory controller of claim 1 .
方法であって、
メモリコントローラにおいて複数のメモリアクセス要求を受信することと、
前記メモリアクセス要求のアドレスを復号し、前記メモリアクセス要求の各々を受信するために第1のメモリチャネル及び第2のメモリチャネルのうち何れかを選択することと、
前記アドレスを復号した後に、各メモリアクセス要求を、前記第1のメモリチャネルに関連付けられた第1のコマンドキュー、及び、前記第2のメモリチャネルに関連付けられた第2のコマンドキューのうち何れかに送信することと、
指定されたイベントに応じて、前記第1のコマンドキュー及び前記第2のコマンドキューの利用可能なエントリの数に基づいて、データファブリックに対する要求クレジットを発行することと、を含む、
方法。
1. A method comprising:
receiving a plurality of memory access requests at a memory controller;
decoding addresses of the memory access requests and selecting one of a first memory channel and a second memory channel for receiving each of the memory access requests;
sending each memory access request after decoding the address to one of a first command queue associated with the first memory channel and a second command queue associated with the second memory channel;
and issuing request credits to a data fabric based on a number of available entries in the first command queue and the second command queue in response to a specified event.
method.
前記第1のコマンドキュー及び前記第2のコマンドキューの利用可能なエントリの数に基づいてクレジット要求を発行することは、未処理の要求クレジットの数が前記第1のコマンドキュー及び前記第2のコマンドキューの利用可能なエントリの最小数よりも少ない場合に、クレジット要求を発行することを含む、
請求項の方法。
issuance of a credit request based on a number of available entries in the first command queue and the second command queue includes issuing a credit request when a number of outstanding request credits is less than a minimum number of available entries in the first command queue and the second command queue.
10. The method of claim 9 .
前記第1のコマンドキュー及び前記第2のコマンドキューのうち最大数の利用可能なエントリを有するコマンドキューに割り当てられたメモリアクセス要求が受信された場合に、前記第1のコマンドキュー又は前記第2のコマンドキューからの対応する割り当て解除なしに要求クレジットを発行することを含む、
請求項10の方法。
issuing a request credit without a corresponding deallocation from the first command queue or the second command queue when a memory access request is received that is assigned to a command queue among the first command queue and the second command queue that has a maximum number of available entries.
The method of claim 10 .
前記指定されたイベントは、メモリアクセス要求が前記第1のコマンドキュー及び前記第2のコマンドキューのうち何れかから割り当て解除されることである、
請求項の方法。
the specified event is a memory access request being deallocated from either the first command queue or the second command queue;
10. The method of claim 9 .
第1のアービタを用いて、前記第1のコマンドキューからエントリを選択し、前記エントリを第1のメモリインターフェースキューに配置して、前記エントリを、前記第1のメモリチャネルを介して送信することと、
第2のアービタを用いて、前記第2のコマンドキューからエントリを選択し、前記エントリを第2のメモリインターフェースキューに配置して、前記エントリを、前記第2のメモリチャネルを介して送信することと、を含む、
請求項の方法。
selecting an entry from the first command queue using a first arbiter, placing the entry in a first memory interface queue, and transmitting the entry over the first memory channel;
selecting an entry from the second command queue with a second arbiter, placing the entry in a second memory interface queue, and transmitting the entry over the second memory channel.
10. The method of claim 9 .
前記メモリアクセス要求のターゲットアドレスに基づいて、各メモリアクセス要求を前記第1のコマンドキュー又は前記第2のコマンドキューに向けることを含む、
請求項の方法。
directing each memory access request to either the first command queue or the second command queue based on a target address of the memory access request.
10. The method of claim 9 .
データ処理システムであって、
データファブリックと、
第1のメモリチャネル及び第2のメモリチャネルと、
少なくとも1つのメモリアクセスエンジンから前記データファブリックを介して受信されたメモリアクセス要求を遂行するために、前記データファブリックと前記第1のメモリチャネル及び前記第2のメモリチャネルとに結合されたメモリコントローラと、を備え、
前記メモリコントローラは、
メモリアクセス要求を受信するための第1の入力と、第1の出力と、第2の出力と、を有するアドレスデコーダと、
第1のメモリチャネルに対するメモリアクセス要求を受信するために前記アドレスデコーダの前記第1の出力に結合された入力と、メモリアクセス要求を保持するためのいくつかのエントリと、を有する第1のコマンドキューと、
第2のメモリチャネルに対するメモリアクセス要求を受信するために前記アドレスデコーダの前記第2の出力に結合された入力と、メモリアクセス要求を保持するためのいくつかのエントリと、を有する第2のコマンドキューと、
前記第1のコマンドキュー及び前記第2のコマンドキューに結合された要求クレジット制御回路であって、未処理の要求クレジットの数を追跡し、前記第1のコマンドキュー及び前記第2のコマンドキューの利用可能なエントリの数に基づいて、前記データファブリックに対する要求クレジットを発行するように動作可能な要求クレジット制御回路と、を備える、
データ処理システム。
1. A data processing system comprising:
Data Fabric and
a first memory channel and a second memory channel;
a memory controller coupled to the data fabric and to the first and second memory channels to fulfill memory access requests received via the data fabric from at least one memory access engine;
The memory controller includes:
an address decoder having a first input for receiving a memory access request, a first output, and a second output;
a first command queue having an input coupled to the first output of the address decoder for receiving memory access requests for a first memory channel, and a number of entries for holding memory access requests;
a second command queue having an input coupled to the second output of the address decoder for receiving memory access requests for a second memory channel, and a number of entries for holding memory access requests;
a request credit control circuit coupled to the first command queue and the second command queue, the request credit control circuit operable to track a number of outstanding request credits and to issue request credits to the data fabric based on a number of available entries in the first command queue and the second command queue.
Data processing system.
前記第1のコマンドキュー及び前記第2のコマンドキューの利用可能なエントリの数に基づいてクレジット要求を発行することは、未処理の要求クレジットの数が前記第1のコマンドキュー及び前記第2のコマンドキューの利用可能なエントリの最小数よりも少ない場合に、クレジット要求を発行することを含む、
請求項15のデータ処理システム。
issuance of a credit request based on a number of available entries in the first command queue and the second command queue includes issuing a credit request when a number of outstanding request credits is less than a minimum number of available entries in the first command queue and the second command queue.
16. The data processing system of claim 15 .
前記要求クレジット制御回路は、前記データファブリックに結合されており、前記データファブリックを介してメモリアクセスエージェントに要求クレジットを発行するように動作可能である、
請求項15のデータ処理システム。
the request credit control circuitry is coupled to the data fabric and is operable to issue request credits to memory accessing agents via the data fabric.
16. The data processing system of claim 15 .
前記要求クレジット制御回路は、前記第1のコマンドキュー及び前記第2のコマンドキューのうち最大数の利用可能なエントリを有するコマンドキューに割り当てられたメモリアクセス要求が受信された場合に、前記第1のコマンドキュー又は前記第2のコマンドキューからの対応する割り当て解除なしに要求クレジットを発行するように動作可能である、
請求項15のデータ処理システム。
the request credit control circuitry is operable to issue a request credit without a corresponding deallocation from the first command queue or the second command queue when a memory access request is received that is assigned to a command queue among the first command queue and the second command queue that has a maximum number of available entries.
16. The data processing system of claim 15 .
前記要求クレジット制御回路のための各コマンドキュー内の利用可能なコマンドエントリの現在の数を計算するように動作可能なキュー占有回路を備える、
請求項15のデータ処理システム。
a queue occupancy circuit operable to calculate a current number of available command entries in each command queue for said request credit control circuit;
16. The data processing system of claim 15 .
前記第1のコマンドキューからエントリを選択し、前記エントリを第1のメモリインターフェースキューに配置して、前記エントリを、前記第1のメモリチャネルを介して送信するために、前記第1のコマンドキューに結合された第1のアービタと、
前記第2のコマンドキューからエントリを選択し、前記エントリを第2のメモリインターフェースキューに配置して、前記エントリを、前記第2のメモリチャネルを介して送信するために、前記第2のコマンドキューに結合された第2のアービタと、を備える、
請求項15のデータ処理システム。
a first arbiter coupled to the first command queue to select an entry from the first command queue, place the entry in a first memory interface queue, and transmit the entry over the first memory channel;
a second arbiter coupled to the second command queue to select an entry from the second command queue, place the entry in a second memory interface queue, and transmit the entry over the second memory channel.
16. The data processing system of claim 15 .
前記アドレスデコーダは、前記メモリアクセス要求のターゲットアドレスに基づいて、各メモリアクセス要求を前記第1のコマンドキュー又は前記第2のコマンドキューに向けるように動作可能である、
請求項15のデータ処理システム。
the address decoder is operable to direct each memory access request to either the first command queue or the second command queue based on a target address of the memory access request.
16. The data processing system of claim 15 .
前記メモリアクセスエンジンは、少なくとも1つのデータ処理ユニットからのメモリアクセス要求を実行するために前記データファブリックに結合されたコヒーレントメモリスレーブコントローラである、
請求項15のデータ処理システム。
the memory access engine is a coherent memory slave controller coupled to the data fabric for executing memory access requests from at least one data processing unit;
16. The data processing system of claim 15 .
前記メモリアクセスエンジンは、少なくとも1つのデータ処理ユニットからのメモリアクセス要求を実行するために前記データファブリックに結合されたコヒーレントメモリマスタコントローラである、
請求項15のデータ処理システム。
the memory access engine is a coherent memory master controller coupled to the data fabric for executing memory access requests from at least one data processing unit;
16. The data processing system of claim 15 .
JP2023559128A 2021-03-31 2022-03-21 Credit Scheme for Multi-Queue Memory Controllers - Patent application Active JP7657963B2 (en)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US17/218,650 2021-03-31
US17/218,650 US11379388B1 (en) 2021-03-31 2021-03-31 Credit scheme for multi-queue memory controllers
PCT/US2022/021148 WO2022212100A1 (en) 2021-03-31 2022-03-21 Credit scheme for multi-queue memory controllers

Publications (2)

Publication Number Publication Date
JP2024512623A JP2024512623A (en) 2024-03-19
JP7657963B2 true JP7657963B2 (en) 2025-04-07

Family

ID=82261340

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2023559128A Active JP7657963B2 (en) 2021-03-31 2022-03-21 Credit Scheme for Multi-Queue Memory Controllers - Patent application

Country Status (6)

Country Link
US (1) US11379388B1 (en)
EP (1) EP4315085B1 (en)
JP (1) JP7657963B2 (en)
KR (1) KR102729694B1 (en)
CN (1) CN117120992A (en)
WO (1) WO2022212100A1 (en)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11836096B2 (en) * 2021-12-22 2023-12-05 Micron Technology, Inc. Memory-flow control register
US12154657B2 (en) 2022-06-29 2024-11-26 Advanced Micro Devices, Inc. Channel and sub-channel throttling for memory controllers
US12216594B2 (en) 2022-09-19 2025-02-04 Apple Inc. Read arbiter circuit with dual memory rank support
US20250103520A1 (en) * 2023-09-22 2025-03-27 Apple Inc. Memory Controller Reservation of Retry Queue
CN118900251B (en) * 2024-07-17 2026-03-31 无锡众星微系统技术有限公司 Packet sending optimization method, apparatus, equipment and storage medium based on pre-allocated credit dynamic flow control

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050257022A1 (en) 2004-05-17 2005-11-17 Hughes Brian W Storage device flow control
JP2013137624A (en) 2011-12-28 2013-07-11 Toshiba Corp Data storage device, memory control device and method
US20140317360A1 (en) 2013-04-23 2014-10-23 Arm Limited Memory access control
JP2019520660A (en) 2016-07-15 2019-07-18 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッドAdvanced Micro Devices Incorporated Memory controller with flexible address decoding
US20200004700A1 (en) 2018-06-29 2020-01-02 Apple Inc. System and Method for Communication Link Management in a Credit-Based System

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8314807B2 (en) * 2010-09-16 2012-11-20 Apple Inc. Memory controller with QoS-aware scheduling
US20120072677A1 (en) * 2010-09-16 2012-03-22 Sukalpa Biswas Multi-Ported Memory Controller with Ports Associated with Traffic Classes
US8255618B1 (en) * 2011-10-06 2012-08-28 Google Inc. Performance isolation in a shared memory device
US9524261B2 (en) * 2012-12-21 2016-12-20 Apple Inc. Credit lookahead mechanism
US9178832B2 (en) * 2013-07-11 2015-11-03 International Business Machines Corporation Queue credit management
US9830086B2 (en) 2016-03-03 2017-11-28 Samsung Electronics Co., Ltd. Hybrid memory controller for arbitrating access to volatile and non-volatile memories in a hybrid memory group
US10684969B2 (en) * 2016-07-15 2020-06-16 Advanced Micro Devices, Inc. Command arbitration for high speed memory interfaces
US10037150B2 (en) * 2016-07-15 2018-07-31 Advanced Micro Devices, Inc. Memory controller with virtual controller mode
KR102367359B1 (en) * 2017-04-17 2022-02-25 에스케이하이닉스 주식회사 Electronic system having serial system bus interface and direct memory access controller and method of operating the same
US10303384B1 (en) * 2017-11-28 2019-05-28 Western Digital Technologies, Inc. Task readiness for queued storage tasks
KR20190130831A (en) * 2018-05-15 2019-11-25 에스케이하이닉스 주식회사 Controller and memory system including the same
US11126375B2 (en) * 2019-07-18 2021-09-21 Micron Technology, Inc. Arbiter circuit for commands from multiple physical functions in a memory sub-system
US11137941B2 (en) * 2019-12-30 2021-10-05 Advanced Micro Devices, Inc. Command replay for non-volatile dual inline memory modules

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050257022A1 (en) 2004-05-17 2005-11-17 Hughes Brian W Storage device flow control
JP2013137624A (en) 2011-12-28 2013-07-11 Toshiba Corp Data storage device, memory control device and method
US20140317360A1 (en) 2013-04-23 2014-10-23 Arm Limited Memory access control
JP2019520660A (en) 2016-07-15 2019-07-18 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッドAdvanced Micro Devices Incorporated Memory controller with flexible address decoding
US20200004700A1 (en) 2018-06-29 2020-01-02 Apple Inc. System and Method for Communication Link Management in a Credit-Based System

Also Published As

Publication number Publication date
KR102729694B1 (en) 2024-11-14
US11379388B1 (en) 2022-07-05
JP2024512623A (en) 2024-03-19
EP4315085A4 (en) 2024-06-19
WO2022212100A1 (en) 2022-10-06
CN117120992A (en) 2023-11-24
KR20230158571A (en) 2023-11-20
EP4315085B1 (en) 2025-06-18
EP4315085A1 (en) 2024-02-07

Similar Documents

Publication Publication Date Title
JP7357169B2 (en) DRAM refresh management
US10684969B2 (en) Command arbitration for high speed memory interfaces
JP7657963B2 (en) Credit Scheme for Multi-Queue Memory Controllers - Patent application
US10037150B2 (en) Memory controller with virtual controller mode
EP3436958B1 (en) Low power memory throttling
JP7521132B2 (en) Write bank group mask during arbitration
JP7195486B1 (en) Signaling for heterogeneous memory systems
US11995008B2 (en) Memory controller with hybrid DRAM/persistent memory channel arbitration
JP7649804B2 (en) DRAM Command Streak Management
EP3270294B1 (en) Command arbitration for high-speed memory interfaces
JP7696069B1 (en) Channel and sub-channel throttling for a memory controller - Patents.com
EP3270295A1 (en) Memory controller with virtual controller mode

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20231107

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20231107

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20240507

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20240716

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20241015

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20250213

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20250326

R150 Certificate of patent or registration of utility model

Ref document number: 7657963

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150