CN117120992A - 用于多队列存储器控制器的信用方案 - Google Patents

用于多队列存储器控制器的信用方案 Download PDF

Info

Publication number
CN117120992A
CN117120992A CN202280025133.7A CN202280025133A CN117120992A CN 117120992 A CN117120992 A CN 117120992A CN 202280025133 A CN202280025133 A CN 202280025133A CN 117120992 A CN117120992 A CN 117120992A
Authority
CN
China
Prior art keywords
command queue
request
memory
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.)
Pending
Application number
CN202280025133.7A
Other languages
English (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 CN117120992A publication Critical patent/CN117120992A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/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; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1673Details of memory controller using buffers

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)

Abstract

本发明公开了一种存储器控制器,该存储器控制器包括地址解码器、耦接到该地址解码器的第一输出用于接收针对第一存储器通道的存储器访问请求的第一命令队列以及耦接到该地址解码器的第二输出用于接收针对第二存储器通道的存储器访问请求的第二命令队列。请求信用控制电路耦接到该第一命令队列和该第二命令队列,并且操作以跟踪未完成的请求信用的数量。该请求信用控制电路响应于指定事件,基于该第一命令队列和该第二命令队列的可用条目的数量来发出请求信用。

Description

用于多队列存储器控制器的信用方案
背景技术
计算机系统通常使用廉价且高密度的动态随机存取存储器(DRAM)芯片作为主存储器。现今销售的大多数DRAM芯片与由联合电子设备工程委员会(JEDEC)发布的各种双倍数据速率(DDR)DRAM标准兼容。DDR DRAM使用具有高速访问电路的常规DRAM存储器单元阵列来实现高传输率并且提高存储器总线的利用。DDR存储器控制器可以与多个DDR通道介接以便容纳更多DRAM模块,并且比使用单个通道更快地与存储器交换数据。例如,一些存储器控制器包括两个或四个DDR存储器通道。
现代DDR存储器控制器维持队列以存储未决的存储器访问请求,从而允许这些控制器根据这些访问请求的生成或存储顺序来乱序地选取未决的存储器访问请求,以提高效率。为了防止存储器访问请求由于特定队列已满而被拒绝,存储器控制器的数据接口使用信用控制方案来控制存储器访问请求的流,在该信用控制方案中,将请求信用提供到主机系统的各个部分(诸如其数据接口织构),从而允许其发送用于进入命令队列中的存储器请求。存储器控制器还需要足够灵活,使得其可被配置用于不同存储器类型、密度和存储器通道拓扑,但这样做不需要为了支持这些不同模式而将增加芯片成本的大量附加电路面积。
附图说明
图1以框图形式示出了现有技术中已知的加速处理单元(APU)和存储器系统;
图2以框图形式示出了根据一些实施方案的包括适用于与图1的APU类似的APU的双通道存储器控制器的部分数据处理系统;
图3示出了根据一些实施方案的适用于实现图2的信用控制电路的信用控制电路的框图;
图4是根据一些实施方案的用于管理请求信用的过程的流程图;并且
图5是用于在双通道存储器控制器处管理请求信用的另一过程的流程图。
在以下描述中,在不同的附图中使用相同的附图标号指示类似或相同的项。除非另有说明,否则字词“耦接”及其相关联的动词形式包括直接连接和通过本领域已知的方式的间接电连接两者,并且除非另有说明,否则对直接连接的任何描述也意味着使用合适形式的间接电连接的另选实施方案。
具体实施方式
一种存储器控制器包括地址解码器、第一命令队列、第二命令队列和请求信用控制电路。地址解码器具有用于接收存储器访问请求的第一输入、第一输出和第二输出。第一命令队列具有用于接收针对第一存储器通道的存储器访问请求的输入以及用于保持存储器访问请求的多个条目,该输入连接至地址解码器的第一输出。第二命令队列具有用于接收针对第二存储器通道的存储器访问请求的输入以及用于保持存储器访问请求的多个条目,该输入连接至地址解码器的第二输出。请求信用控制电路连接至第一命令队列和第二命令队列。请求信用控制电路可操作以跟踪未完成的请求信用的数量,并且基于第一命令队列和第二命令队列的可用条目的数量来发出请求信用。
一种方法包括在存储器控制器处接收多个存储器访问请求。解码存储器访问请求的地址,并且选择第一存储器通道和第二存储器通道中的一者来接收存储器访问请求中的每个存储器访问请求。在解码地址之后,该方法包括将每个存储器访问请求发送到与第一存储器通道相关联的第一命令队列和与第二存储器通道相关联的第二命令队列中的一者。响应于指定事件,该方法包括基于第一命令队列和第二命令队列的可用条目的数量来发出请求信用。
数据处理系统包括数据织构、第一存储器通道和第二存储器通道以及存储器控制器,该存储器控制器连接至数据织构以及第一存储器通道和第二存储器通道以用于实现通过数据织构从至少一个存储器访问引擎接收的存储器访问请求。存储器控制器包括地址解码器、第一命令队列、第二命令队列和请求信用控制电路。地址解码器具有用于接收存储器访问请求的第一输入、第一输出和第二输出。第一命令队列具有用于接收针对第一存储器通道的存储器访问请求的输入以及用于保持存储器访问请求的多个条目,该输入连接至地址解码器的第一输出。第二命令队列具有用于接收针对第二存储器通道的存储器访问请求的输入以及用于保持存储器访问请求的多个条目,该输入连接至地址解码器的第二输出。请求信用控制电路连接至第一命令队列和第二命令队列。请求信用控制电路可操作以跟踪未完成的请求信用的数量,并且基于第一命令队列和第二命令队列的可用条目的数量来发出请求信用。
图1以框图形式示出了现有技术中已知的加速处理单元(APU)100和存储器系统130。APU 100是适合于用作主机数据处理系统中的处理器的集成电路,并且通常包括中央处理单元(CPU)核心复合体110、图形核心120、一组显示引擎122、数据织构125、存储器管理集线器140、一组外围控制器160、一组外围总线控制器170和系统管理单元(SMU)180。
CPU核心复合体110包括CPU核心112和CPU核心114。在该示例中,CPU核心复合体110包括两个CPU核心,但是在其他实施方案中,CPU核心复合体110可包括任意数量的CPU核心。CPU核心112和114中的每个核心双向连接至系统管理网络(SMN)(该SMN形成控制织构)和数据织构125,并且能够将存储器访问请求提供到数据织构125。CPU核心112和114中的每个核心可以是一体式核心,或者还可以是具有共享某些资源诸如高速缓存的两个或更多个一体式核心的核心复合体。
图形核心120是高性能图形处理单元(GPU),该GPU能够以高度集成和并行方式执行图形操作诸如顶点处理、片段处理、着色、纹理混合等。图形核心120双向连接至SMN和数据织构125,并且能够将存储器访问请求提供到数据织构125。就此而言,APU 100可支持其中CPU核心复合体110和图形核心120共享相同存储空间的统一存储器架构,或其中CPU核心复合体110和图形核心120共享存储空间的一部分、同时图形核心120还使用CPU核心复合体110不能访问的私有图形存储器的存储器架构。
显示引擎122渲染并光栅化由图形核心120生成的对象以用于在监测器上显示。图形核心120和显示引擎122通过数据织构125双向连接至公共存储器管理集线器140,以统一转换成存储器系统130中的适当地址。
数据织构125包括用于在任何存储器访问代理和存储器管理集线器140之间路由存储器访问请求和存储器响应的横杆开关。数据织构还包括由基本输入/输出系统(BIOS)定义的、用于基于系统配置确定存储器访问的目的地的系统存储器映射,以及用于每个虚拟连接的缓冲器。
外围控制器160包括通用串行总线(USB)控制器162和串行高级技术附件(SATA)接口控制器164,它们中的每一者双向连接至系统集线器166和SMN总线。这两个控制器仅仅是可用于APU 100的外围控制器的示例。
外围总线控制器170包括系统控制器或“南桥”(SB)172以及外围部件互连高速(PCIe)控制器174,它们中的每一者双向连接至输入/输出(I/O)集线器176和SMN总线。I/O集线器176也双向连接至系统集线器166和数据织构125。因此,例如,CPU核心可通过数据织构125通过I/O集线器176路由的访问对USB控制器162、SATA接口控制器164、SB 172或PCIe控制器174中的寄存器进行编程。APU 100的软件和固件存储在系统数据驱动器或系统BIOS存储器(未示出)中,系统数据驱动器或系统BIOS存储器可以是多种非易失性存储器类型中的任一种,诸如只读存储器(ROM)、闪存电可擦除可编程ROM(EEPROM)等。通常,BIOS存储器通过PCIe总线访问,并且系统数据驱动器通过SATA接口。
SMU 180是控制APU 100上的资源的操作并使这些资源之间的通信同步的本地控制器。SMU 180管理APU 100上的各种处理器的上电定序,并且经由复位、启用和其他信号控制多个芯片外设备。SMU 180包括一个或多个时钟源(未示出),诸如锁相环路(PLL),以为APU 100的每个部件提供时钟信号。SMU 180还管理各种处理器和其它功能块的功率,并且可从CPU核心112和114以及图形核心120接收测量功率消耗值以确定适当的功率状态。
在该实施方案中,存储器管理集线器140及其相关联的物理接口(PHY)151和152与APU 100集成。存储器管理集线器140包括存储器通道141和142以及功率引擎149。存储器通道141包括主机接口145、存储器通道控制器143和物理接口147。主机接口145通过串行存在检测链路(SDP)将存储器通道控制器143双向连接至数据织构125。物理接口147将存储器通道控制器143双向连接至PHY 151,并且符合DDR PHY接口(DFI)规范。存储器通道142包括主机接口146、存储器通道控制器144和物理接口148。主机接口146通过另一SDP将存储器通道控制器144双向连接至数据织构125。物理接口148将存储器通道控制器144双向连接至PHY152,并且符合DFI规范。功率引擎149通过SMN总线双向连接到SMU 180,通过APB连接到PHY151和PHY 152,并且还双向连接到存储器通道控制器143和144。PHY 151具有到存储器通道131的双向连接。PHY 152具有双向连接存储器通道133。
存储器管理集线器140是具有两个存储器通道控制器的存储器控制器的实例化,并且使用共享功率引擎149以将在下面进一步描述的方式控制存储器通道控制器143和存储器通道控制器144两者的操作。存储器通道141和142中的每一者都可以连接至现有技术DDR存储器,诸如第五代DDR(DDR5)、第四代DDR(DDR4)、低功率DDR4(LPDDR4)、第五代图形DDR(GDDR5)和高带宽存储器(HBM),并且可以适于未来存储器技术。这些存储器提供高总线带宽和高速操作。同时,它们还提供低功率模式以节省用于电池供电应用诸如膝上型计算机的功率,并且还提供内置热监控。
存储器系统130包括存储器通道131和存储器通道133。存储器通道131包括连接至DDRx总线132的一组双列直插存储器模块(DIMM),包括代表性的DIMM 134、136和138,它们在该示例中对应于单独的存储列。同样,存储器通道133包括连接至DDRx总线129的一组DIMM,包括代表性的DIMM 135、137和139。
APU 100作为主机数据处理系统的中央处理单元(CPU)操作并且提供在现代计算机系统可用的各种总线和接口。这些接口包括两个双数据速率(DDRx)存储器通道、用于连接至PCIe链路的PCIe根复合体、用于连接至USB网络的USB控制器以及到SATA大容量存储设备的接口。
APU 100还实现各种系统监视和功率节省功能。具体地,一个系统监测功能是热监测。例如,如果APU 100变热,则SMU 180可降低CPU核心112和114和/或图形核心120的频率和电压。如果APU 100变得过热,则可将其完全关断。SMU 180还可经由SMN总线从外部传感器接收热事件,并且作为响应,SMU 180可降低时钟频率和/或电源电压。
图2以框图形式示出了包括适用于与图1的APU类似的APU的双通道存储器控制器210的部分数据处理系统200。所示出的是连接至数据织构125的双通道存储器控制器210,至该数据织构,其可以与数据处理系统200中存在的多个存储器代理(包括相干性从代理250和相干性主代理260)通信。双通道存储器控制器210能够替换两个独立的存储器通道控制器143和144(图1)并且以对数据织构125和数据处理系统200中的各种存储器地址代理透明的方式一起控制两个DDRx通道,使得可采用单个存储器控制器接口212来发送存储器访问命令和接收结果。此外,双通道存储器控制器210能够控制例如在DDR5规范中定义的两个子通道以与DDR5 DRAMS使用,或者控制在高带宽存储器2(HBM2)和HBM3标准中定义的那些子通道。双通道存储器控制器210通常包括接口212、信用控制电路221、地址解码器222,以及存储器通道控制电路223的两个实例,每个实例被分配到不同的存储器通道。存储器通道控制电路223的每个实例包括存储器接口队列214、命令队列220、内容可寻址存储器(CAM)224、包括重放队列230的重放控制逻辑231、定时块234、页面表236、仲裁器238、纠错码(ECC)检查电路242、ECC生成块244、数据缓冲器246和包括激活计数器248的刷新控制逻辑232。在其它实施方案中,针对所使用的每个存储器通道或子通道复制仅命令队列230、仲裁器238和存储器接口队列214,其中其余所示出的电路适于与两个通道一起使用。此外,虽然所示出的双通道存储器控制器包括用于控制两个存储器通道或子通道的仲裁器238、命令队列220和存储器接口队列214的两个实例,但其它实施方案可包括更多实例,诸如三个或四个或更多个实例,其用于根据本文的信用管理技术在三个或四个通道或子通道上与DRAM通信。
接口212具有通过通信总线到数据织构125的第一双向连接,以及到信用控制电路221的第二双向连接。在该实施方案中,接口212采用可缩放数据端口(SDP)链路来建立若干个通道以与数据织构125通信,但是其他接口链路标准也适用。例如,在另一个实施方案中,通信总线与由ARM Holdings,PLC of Cambridge,England规定的高级可扩展接口版本四(称为AXI4)兼容,但在其他实施方案中可以是其他类型的接口。接口212将存储器访问请求从称为“FCLK”(或“MEMCLK”)域的第一时钟域转换到双通道存储器控制器210内部的称为“UCLK”域的第二时钟域。类似地,存储器接口队列214提供从UCLK域到与DFI接口相关联的“DFICLK”域的存储器访问。
信用控制电路221包括到接口212的双向通信链路,其可以与地址解码器222共享或者可包括用于管理请求信用的专用SDP通道。信用控制电路221还具有连接至两个命令队列220的输入,在附图中示出为与地址解码器222共享的那些。信用控制电路221通常控制分配到两个存储器通道的数据织构的请求信用。如下文进一步描述的,由信用控制电路221执行的控制过程包括跟踪未完成的请求信用的数量,并且响应于存储器访问请求从第一命令队列和第二命令队列220中的一者解除分配,在未完成的请求信用的数量低于第一命令队列和第二命令队列220的可用条目的最小数量的情形下,则发出请求信用,并且在不低于的情形下,不响应于存储器访问请求被解除分配而发出请求信用。在接收到被分配到第一命令队列和第二命令队列220中具有最高数量的可用条目的一者的存储器访问请求的情形下,信用控制电路221还操作以发出请求信用,而不从第一命令队列或第二命令队列220进行对应的解除分配。
地址解码器222具有到信用控制电路221的双向链路、连接至第一命令队列220(标记为“命令队列0”)的第一输出,以及连接至第二命令队列220(标记为“命令队列1”)的第二输出。地址解码器222解码通过接口212在数据织构125上接收的存储器访问请求的地址。存储器访问请求包括以归一化格式表示的物理地址空间中的访问地址。基于访问地址,地址解码器222选择存储器通道中的一个存储器通道以及命令队列220中的相关联的一个命令队列来处理请求。向信用控制电路221标识针对每个请求所选择的通道,使得可做出信用发出决定。地址解码器222将归一化地址转换成可用于对存储器系统130中的实际存储器设备进行寻址以及有效地调度相关访问的格式。该格式包括将存储器访问请求与特定存储列、行地址、列地址、存储体地址和存储体组相关联的区域标识。在启动时,系统BIOS查询存储器系统130中的存储器设备以确定它们的大小和配置,并且对与地址解码器222相关联的一组配置寄存器进行编程。地址解码器222使用存储在配置寄存器中的配置来将归一化地址转换成适当格式。针对由地址解码器222选择的存储器通道,将每个存储器访问请求加载到命令队列220中。
每个命令队列220是从APU 100中的各个存储器访问引擎(诸如CPU核心112和114以及图形核心120)接收的存储器访问请求的队列。每个命令队列220双向连接至相应仲裁器238以用于从命令队列220选择要通过相关联的存储器通道发出的存储器访问请求。每个命令队列220存储由地址解码器222解码的地址字段以及允许相应仲裁器238有效地选择存储器访问的其他地址信息,包括访问类型和服务质量(QoS)标识。每个CAM 224包括实施排序规则诸如写后写(WAW)以及写后读(RAW)排序规则的信息。
仲裁器238各自双向连接至相应命令队列220以用于选择要用适当命令实现的存储器访问请求。仲裁器238通常通过智能访问调度来改进存储器通道的存储器总线的使用,以改进其相应存储器通道的效率。每个仲裁器238使用相应定时块234通过基于DRAM定时参数来确定相应命令队列220中的某些访问是否有资格发布来实施正确的定时关系。例如,每个DRAM在激活命令之间具有最小规定时间,称为“tRC”。每个定时块234维持一组计数器,该组计数器基于该定时参数和JEDEC规范中规定的其它定时参数来确定合格性,并且该定时块双向连接至重放队列230。每个页面表236维持关于仲裁器238的相应存储器通道的每个存储体和存储列中的活动页面的状态信息,并且双向连接至其相应重放队列230。仲裁器238使用所解码的地址信息、由定时块234指示的定时资格信息以及由页面表236指示的活动页面信息来高效地调度存储器访问,同时遵守诸如服务质量(QoS)要求等其他标准。例如,仲裁器238实现对访问打开页面的优先,以避免改变存储器页面所需的预充电和激活命令的开销,并且通过将对一个存储体的开销访问与对另一个存储体的读和写访问交错来隐藏对一个存储体的开销访问。特别是在正常操作期间,仲裁器238通常保持页面在不同的存储体中打开,直到需要对这些页面进行预充电,然后选择不同的页面。在一些实施方案中,仲裁器238至少基于相应命令的针对目标存储器区域的激活计数器248的相应值来确定命令选择的资格。
每个纠错码(ECC)生成块244确定要发送到存储器的写入数据的ECC。ECC检查电路242针对传入ECC检查所接收的ECC。
每个重放队列230是用于存储由仲裁器238选取的所选择的存储器访问的临时队列,所选择的存储器访问正在等待响应,诸如地址和命令奇偶校验响应。重放控制逻辑231访问ECC检查电路242以确定所返回的ECC是正确的还是指示错误。重放控制逻辑231发起并控制重放序列,在该重放序列中,在这些周期中的一个周期出现奇偶校验错误或ECC错误的情况下重放访问。所重放的命令放置在存储器接口队列214中。
刷新控制逻辑232的每个实例包括用于各种下电、刷新和终端电阻(ZQ)校准循环的状态机,这些校准循环与从存储器访问代理接收的正常读取和写入存储器访问请求分开生成。例如,如果存储器存储列处于预充电下电,则必须周期性地唤醒该存储器存储列以运行刷新循环。刷新控制逻辑232周期性地且响应于指定条件而生成刷新命令,以防止由于电荷从DRAM芯片中的存储器单元的存储电容器泄漏而引起的数据错误。刷新控制逻辑232的每个实例包括激活计数器248,该激活计数器在该实施方案中具有用于每个存储器区域的计数器,该计数器对通过存储器通道发送到存储器区域的激活命令的滚动数量进行计数。存储区域在一些实施方案中是存储器存储体,并且在其它实施方案中是存储器子存储体。此外,刷新控制逻辑232周期性地校准ZQ以防止由于系统的热变化而导致的片上终端电阻的失配。
响应于从接口212接收到写入存储器访问请求,ECC生成块244根据写入数据计算ECC。数据缓冲器246存储用于所接收的存储器访问请求的写入数据和ECC。当相应仲裁器238选取对应写入访问以用于调度到存储器通道时,数据缓冲器246将组合写入数据/ECC输出到相应存储器接口队列214。
针对具有超过两个存储器通道或子通道的实施方案,使用单个地址解码器222和信用控制电路221,将附加的命令队列、仲裁器和存储器接口队列并行添加到所示出的那些。此类设计允许下文讨论的信用控制方案被用于超过两个通道或子通道,在使用队列容量和通道容量时对应地增进效率。如所讨论,还可针对每个通道或子通道复制存储器通道控制电路223的整个组,或可采用相同逻辑块,其中添加附加的容量以跟踪所添加的命令队列、仲裁器和存储器接口队列。
图3示出了根据一些实施方案的适用于实现图2的信用控制电路221的信用控制电路300的框图。信用控制电路300包括未完成的信用跟踪逻辑302、队列0占用逻辑304、队列1占用逻辑306、接口逻辑308、信用发出逻辑310、请求监视器312、命令队列监视器314和先进先出(FIFO)信用队列316(“FIFO队列316”)。当在存储器控制器210处接收到相关联的存储器访问请求时,未完成的信用跟踪逻辑302通常维持已经发出的请求信用的计数、发出新的请求信用并且跟踪被赎回的请求信用。向数据织构上的一个或多个请求代理发出请求信用,在该实施方案中,请求信用是以下两种类型中的一种:初始信用和由于通过使用两个命令队列和两个通道或子通道所提供的更高的容量而发出的附加信用。附加信用的使用允许信用控制电路300在某些条件下发出超过初始信用数量的更多信用,以便更充分且有效地利用两个命令队列的容量。附加信用由未完成的信用跟踪逻辑以与初始信用相同的方式来跟踪,并且朝着总未完成的信用计数。
队列0占用逻辑304和队列1占用逻辑306维持相应命令队列中的未分配的条目的数量的计数。在一些实施方案中,通过从命令队列大小减去每个命令队列的被占用的条目的当前数量来产生计数。在其它实施方案中,从命令队列直接跟踪未被占用的条目,或者基于跟踪被加载到每个命令队列的条目以及从每个命令队列解除分配的条目来间接跟踪未被占用的条目。
请求监视器312监视由地址解码器222分配到相应命令队列的传入请求,包括哪个队列接收每个请求。信用发出逻辑310使用该信息来确定何时以及是否发出新的请求信用。命令队列监视器314监视两个命令队列以确定请求何时从命令队列解除分配。FIFO队列316保持当在特定条件下命令从每个命令队列解除分配时发出的附加请求信用,如相对于图5描述的。只要信用发出逻辑300确定这是允许的,这些信用就被释放到织构,如下文进一步描述的。信用发出逻辑310采用未完成的信用的数量、每个队列的队列占用以及来自请求监视器312和命令队列监视器314的监视信息来决定何时发出请求信用,如下文相对于图4和图5进一步描述的。在一些版本中,信用控制功能具体体现在存储器控制器的仲裁器(诸如图2的仲裁器238)内部的监视逻辑电路中。在其它版本中,该过程可以由具有类似功能的数字逻辑或控制器执行,同时使用与上述子仲裁器305和最终仲裁器350中采用的那些方法不同的仲裁方法。
图4是根据一些实施方案的用于管理请求信用的过程的流程图400。所示出的过程适用于由信用控制电路执行,诸如具体体现在双通道存储器控制器、耦接到两个或更多个存储器通道或子通道的存储器控制器中的图3的信用控制电路300,或跟踪未完成的请求信用并且监视双通道存储器控制器的两个或更多个命令队列的另一合适的数字控制电路。该过程通常用于管理针对与命令队列0和命令队列1相关联的存储器通道两者的存储器访问请求的请求信用。请求信用被数据织构采用,而与哪个命令队列和存储器通道最终可以被选择用于接收相关联的访问请求无关。即,由存储器控制器管理的两个存储器通道或子通道的存在对于数据织构和访问该数据织构的各种存储器代理是透明的。针对实施方案
响应于这两个存储器通道在框402处被初始化,该过程在框404处向数据织构发出初始请求信用,该初始请求信用被赎回以用于传入的读取或写入命令。写入命令还需要使用数据信用来管理数据缓冲器246(图2)。数据信用与本文讨论的初始信用和附加信用分开管理。初始请求信用的数量由命令队列220的大小确定。优选地,足够多的初始请求信用被释放以填充每个命令队列220中的条目的一半,从而确保在碰巧所有信用被赎回以将命令放置在单个队列中的情形下,该队列不会溢出。如果两个命令队列大小相等,则所释放的信用的数量通常是一个命令队列的大小。如果两个命令队列大小不相等,则使用较小命令队列的大小来确定初始信用的数量,从而确保用不大于最小命令队列的量的信用来初始化信用过程。此时,数据织构拥有可被连接至数据织构的一个或多个存储器访问代理采用以将请求发送到存储器控制器210的请求信用。
在框406处,该过程开始接收读取和写入存储器访问请求,每个请求具有相关联的请求信用。针对每个所接收的访问请求,在框408处,信用控制电路例如在未完成的信用跟踪逻辑302(图3)处赎回未完成的请求信用。访问请求还由地址解码器222处理以解码相关联的地址并且基于该地址来选择存储器通道中的一个存储器通道来接收存储器访问请求。在框410处,通过在地址解码器222的控制下将请求加载到针对所选择的存储器通道的命令队列中,将请求分配到存储器通道。信用控制电路300监视在框410处加载到每个命令队列中的访问请求。
在框412处,该过程确定是否一个或多个附加请求信用已经被发出并且在信用控制电路FIFO队列316(图3)处等待释放。相对于图5进一步描述了附加请求信用的释放。如果附加请求信用等待释放,则该过程进行到框420,其中针对当前传入请求不释放请求信用。如果否,则该过程继续到框414,其中该过程确定是否两个命令队列都处于其最大占用。如果是,则该过程进行到框420。如果否,则该过程进行到框416,其中该过程确定未完成的请求信用是否处于最大值。最大值是可配置的,并且通常被设定为两个命令队列的最大占用的和。如果在框416处未完成的请求信用处于最大值,则该过程进行到框420。如果否,则该过程进行到框418。
在框418处,该过程确定是否将请求分配到具有最高数量的可用条目的命令队列。如果是,则该过程进行到框422,其中该过程使得向数据织构发出请求信用。信用发出逻辑310(图3)或其它合适的数字逻辑或控制电路执行请求信用发出并且更新未完成的信用。完成框422处的请求信用发出,而不从命令队列中的一个命令队列进行对应的解除分配,这在所示出的过程中是有益的,因为其允许更有效地使用两个命令队列。如果在框418处访问请求未被分配到具有最多可用条目的命令队列,则该过程进行到框420,其中不响应于该特定访问请求被分配而发出请求信用。
使用所示出的过程,实现了性能优势,因为通过在将命令分配到被占用较少的命令队列时允许发出“额外的”或附加的请求信用,每个命令队列被用于更高的容量。当结合诸如图2中所示出的双仲裁器存储器控制器架构,采用所示出的过程时,实现另外的性能优点,从而允许单独地仲裁每个存储器通道,同时与在没有图4和图5中所示的队列容量检查而使用更保守的方法的情形相比,通常以命令队列中可供仲裁器选择的更大数量的命令来操作。
虽然流程图400示出了框410、412、414、416和418按次序发生,但是在实际具体实施中,这些决定是由数字逻辑作出的,并且在各种实施方案中,这些决定是按任何合适的次序作出的或者随着逻辑电路同时检查所示出的条件中的一些或全部条件而并行地作出的。
图5是用于在双通道存储器控制器处管理请求信用的另一过程的流程图500。在该实施方案中,该过程与图4的过程一起由信用控制电路300执行,以提供针对双通道存储器控制器或者用于两个或更多个存储器通道或子通道的存储器控制器发出两种不同方式的请求信用。
在框502处,该过程响应于存储器访问请求从两个命令队列中的任一个命令队列解除分配而开始。在框504处,该过程获得每个命令队列处的可用条目的数量。该信息优选地维持在信用控制电路中,诸如维持在队列0占用逻辑304和队列1占用逻辑306(图3)中。在一些实施方案中,该过程可在框504处直接访问命令队列以获得或计算每个命令队列中的可用条目的数量。相关数量是在框502处考虑解除分配请求之后的数量。
在框506处,该过程检查未完成的请求信用的数量是否低于两个命令队列的可用条目的最小数量,并且如果是,则在框508处发出附加请求信用。该请求信用优选地被加载到FIFO队列316(图3),并且尽可能快地被释放到数据织构。未完成的信用跟踪逻辑302优选地将离开FIFO队列316并且被数据织构上的接收方存储器代理确认接收的附加请求信用计数为未完成的。如果在框506处未完成的请求信用的数量不低于两个命令队列的可用条目的最小数量,则过程进行到框510,其中不响应于在框502处存储器访问请求被解除分配而发出请求信用。
该信用发出过程具有以下优点:允许更有效地使用两个命令队列,同时确保未完成的信用的数量不会变得高于被占用最多的队列的可用条目。数据织构和附到其上的请求存储器代理优选地不具有关于特定请求信用是初始信用还是附加信用的信息,从而使得信用跟踪过程对数据织构透明。数据织构能够将双通道存储器控制器看作是具有比单通道的吞吐量更高的吞吐量的单个控制器。两个命令队列和两个存储器通道的容量以对数据织构透明的方式组合,同时使得能够比在采用用于单个命令队列的典型信用管理过程的情形下更积极地发出请求信用。
图2的双通道存储器控制器210或其任何部分(诸如信用控制电路221和地址解码器222)可由呈数据库或可由程序读取并且直接或间接地用于制造集成电路的其它数据结构形式的计算机可访问数据结构描述或表示。例如,该数据结构可以是高级设计语言(HDL)诸如Verilog或VHDL中的硬件功能性的行为级描述或寄存器传送级(RTL)描述。描述可由合成工具读取,合成工具可合成描述以产生包括来自合成库的门列表的网表。网表包括门集,门集也表示包括集成电路的硬件的功能性。然后可以放置和路由网表以产生描述待应用于掩码的几何形状的数据集。然后可以在各种半导体制造步骤中使用掩模以产生集成电路。另选地,计算机可访问存储介质上的数据库可以是网表(具有或不具有合成库)或数据集(根据需要)或图形数据系统(GDS)II数据。
虽然已描述了特定实施方案,但是对这些实施方案的各种修改对于本领域技术人员将是显而易见的。例如,虽然使用双通道存储器控制器作为示例,但是本文的技术还可应用于超过两个存储器通道以将其容量以对数据织构和主机数据处理系统透明的方式组合。例如,通过针对每个通道提供独立的命令队列和存储器通道控制电路,同时提供独立于各个存储器通道的单个接口、地址解码器和向数据织构发出请求信用的信用控制电路,可使用本文的技术来控制三个或四个存储器通道。此外,双通道存储器控制器210的内部架构可在不同实施方案中改变。双通道存储器控制器210可接口连接至除了DDRx之外的其它类型的存储器,诸如高带宽存储器(HBM)、RAMbus DRAM(RDRAM)等。虽然所示的实施方案示出了对应于单独DIMM或SIMM的每个存储器存储列,但在其他实施方案中,每个模块可支持多个存储列。再其他实施方案可包括其他类型的DRAM模块或特定模块中未包含的DRAM,诸如安装到主机母板的DRAM。因此,所附权利要求书旨在覆盖所公开实施方案的落入所公开实施方案的范围内的所有修改。

Claims (28)

1.一种存储器控制器,包括:
地址解码器,所述地址解码器具有用于接收存储器访问请求的第一输入、第一输出和第二输出;
第一命令队列,所述第一命令队列具有:耦接到所述地址解码器的所述第一输出的用于接收针对第一存储器通道的存储器访问请求的输入,以及用于保持存储器访问请求的多个条目;
第二命令队列,所述第二命令队列具有:耦接到所述地址解码器的所述第二输出的用于接收针对第二存储器通道的存储器访问请求的输入,以及用于保持存储器访问请求的多个条目;和
请求信用控制电路,所述请求信用控制电路耦接到所述第一命令队列和所述第二命令队列,所述请求信用控制电路可操作以跟踪未完成的请求信用的数量,并且基于所述第一命令队列和所述第二命令队列的可用条目的数量来发出请求信用。
2.根据权利要求1所述的存储器控制器,其中基于所述第一命令队列和所述第二命令队列的可用条目的数量来发出信用请求还包括:在未完成的请求信用的数量低于所述第一命令队列和所述第二命令队列的可用条目的最小数量的情形下,发出信用请求。
3.根据权利要求1所述的存储器控制器,其中所述请求信用控制电路耦接到数据处理单元的数据织构,并且可操作以通过所述数据织构向存储器访问代理发出请求信用。
4.根据权利要求1所述的存储器控制器,其中在接收到被分配到所述第一命令队列和所述第二命令队列中具有最高数量的可用条目的一者的存储器访问请求的情形下,所述请求信用控制电路可操作以发出请求信用,而不从所述第一命令队列或所述第二命令队列进行对应的解除分配。
5.根据权利要求1所述的存储器控制器,其中所述请求信用控制电路可操作以:响应于存储器访问请求从所述第一命令队列和所述第二命令队列中的一者解除分配,所述解除分配导致所述第一命令队列和所述第二命令队列具有相等数量的可用条目,在未完成的请求信用的所述数量低于所述相等数量的可用条目的情形下,则发出请求信用,并且在不低于的情形下,不响应于所述存储器访问请求被解除分配而发出请求信用。
6.根据权利要求1所述的存储器控制器,其中指定事件是存储器访问请求从所述第一命令队列和所述第二命令队列中的一者解除分配。
7.根据权利要求1所述的存储器控制器,还包括:
第一仲裁器,所述第一仲裁器耦接到所述第一命令队列以用于从所述第一命令队列选择条目并且将所述条目放置在第一存储器接口队列中,从而使得所述条目通过所述第一存储器通道被传输;和
第二仲裁器,所述第二仲裁器耦接到所述第二命令队列以用于从所述第二命令队列选择条目并且将所述条目放置在第二存储器接口队列中,从而使得所述条目通过所述第二存储器通道被传输。
8.根据权利要求1所述的存储器控制器,其中所述地址解码器可操作以基于所述存储器访问请求的目标地址来将每个存储器访问请求引导到所述第一命令队列或所述第二命令队列。
9.根据权利要求1所述的存储器控制器,其中所述第一命令队列具有与所述第二命令队列不同的大小。
10.根据权利要求1所述的存储器控制器,还包括至少一个附加命令队列和耦接到所述附加命令队列的至少一个附加仲裁器,其中所述请求信用控制电路可操作以:响应于存储器访问请求从所述命令队列中的任何命令队列解除分配,在未完成的请求信用的数量低于所有所述命令队列当中的可用条目的最小数量的情形下,则发出请求信用,并且在不低于的情形下,不响应于所述存储器访问请求被解除分配而发出请求信用。
11.一种方法,包括:
在存储器控制器处接收多个存储器访问请求;
解码所述存储器访问请求的地址并且选择第一存储器通道和第二存储器通道中的一者来接收所述存储器访问请求中的每个存储器访问请求;
在解码所述地址之后,将每个存储器访问请求发送到与所述第一存储器通道相关联的第一命令队列和与所述第二存储器通道相关联的第二命令队列中的一者;以及
响应于指定事件,基于所述第一命令队列和所述第二命令队列的可用条目的数量来发出请求信用。
12.根据权利要求11所述的方法,其中基于所述第一命令队列和所述第二命令队列的可用条目的数量来发出信用请求还包括:在未完成的请求信用的数量低于所述第一命令队列和所述第二命令队列的可用条目的最小数量的情形下,发出信用请求。
13.根据权利要求12所述的方法,还包括:在接收到被分配到所述第一命令队列和所述第二命令队列中具有最高数量的可用条目的一者的存储器访问请求的情形下,使得请求信用被发出,而不从所述第一命令队列或所述第二命令队列进行对应的解除分配。
14.根据权利要求12所述的方法,还包括:响应于存储器访问请求从所述第一命令队列和所述第二命令队列中的一者解除分配,所述解除分配导致所述第一命令队列和所述第二命令队列具有相等数量的可用条目,在未完成的请求信用的所述数量低于所述相等数量的可用条目的情形下,则使得存储器访问信用被发出,并且在不低于的情形下,不响应于所述存储器访问请求被解除分配而发出请求信用。
15.根据权利要求11所述的方法,其中所述指定事件是存储器访问请求从所述第一命令队列和所述第二命令队列中的一者解除分配。
16.根据权利要求11所述的方法,还包括:
利用第一仲裁器从所述第一命令队列选择条目并且将所述条目放置在第一存储器接口队列中,从而使得所述条目通过所述第一存储器通道被传输;以及
利用第二仲裁器从所述第二命令队列选择条目并且将所述条目放置在第二存储器接口队列中,从而使得所述条目通过所述第二存储器通道被传输。
17.根据权利要求11所述的方法,还包括基于所述存储器访问请求的目标地址来将每个存储器访问请求引导到所述第一命令队列或所述第二命令队列。
18.一种数据处理系统,包括:
数据织构;
第一存储器通道和第二存储器通道;和
存储器控制器,所述存储器控制器耦接到所述数据织构以及所述第一存储器通道和所述第二存储器通道以用于实现通过所述数据织构从至少一个存储器访问引擎接收的存储器访问请求,所述存储器控制器包括:
地址解码器,所述地址解码器具有用于接收存储器访问请求的第一输入、第一输出和第二输出;
第一命令队列,所述第一命令队列具有:耦接到所述地址解码器的所述第一输出的用于接收针对第一存储器通道的存储器访问请求的输入,以及用于保持存储器访问请求的多个条目;
第二命令队列,所述第二命令队列具有:耦接到所述地址解码器的所述第二输出的用于接收针对第二存储器通道的存储器访问请求的输入,以及用于保持存储器访问请求的多个条目;和
请求信用控制电路,所述请求信用控制电路耦接到所述第一命令队列和所述第二命令队列,所述请求信用控制电路可操作以跟踪未完成的请求信用的数量,并且基于所述第一命令队列和所述第二命令队列的可用条目的数量来发出请求信用。
19.根据权利要求18所述的数据处理系统,其中基于所述第一命令队列和所述第二命令队列的可用条目的数量来发出信用请求还包括:在未完成的请求信用的数量低于所述第一命令队列和所述第二命令队列的可用条目的最小数量的情形下,发出信用请求。
20.根据权利要求18所述的数据处理系统,其中基于所述第一命令队列和所述第二命令队列的可用条目的数量来发出信用请求还包括:在未完成的请求信用的数量低于所述第一命令队列和所述第二命令队列的可用条目的最小数量的情形下,发出信用请求。
21.根据权利要求18所述的数据处理系统,其中所述请求信用控制电路耦接到所述数据织构,并且可操作以通过所述数据织构向存储器访问代理发出请求信用。
22.根据权利要求18所述的数据处理系统,其中在接收到被分配到所述第一命令队列和所述第二命令队列中具有最高数量的可用条目的一者的存储器访问请求的情形下,所述请求信用控制电路可操作以发出请求信用,而不从所述第一命令队列或所述第二命令队列进行对应的解除分配。
23.根据权利要求18所述的数据处理系统,其中所述请求信用控制电路可操作以:响应于存储器访问请求从所述第一命令队列和所述第二命令队列中的一者解除分配,所述解除分配导致所述第一命令队列和所述第二命令队列具有相等数量的可用条目,在未完成的请求信用的所述数量低于所述相等数量的可用条目的情形下,则发出请求信用。
24.根据权利要求18所述的数据处理系统,还包括队列占用电路,所述队列占用电路可操作以计算所述请求信用控制电路的每个命令队列中的可用命令条目的当前数量。
25.根据权利要求18所述的数据处理系统,还包括:
第一仲裁器,所述第一仲裁器耦接到所述第一命令队列以用于从所述第一命令队列选择条目并且将所述条目放置在第一存储器接口队列中,从而使得所述条目通过所述第一存储器通道被传输;和
第二仲裁器,所述第二仲裁器耦接到所述第二命令队列以用于从所述第二命令队列选择条目并且将所述条目放置在第二存储器接口队列中,从而使得所述条目通过所述第二存储器通道被传输。
26.根据权利要求18所述的数据处理系统,其中所述地址解码器可操作以基于所述存储器访问请求的目标地址来将每个存储器访问请求引导到所述第一命令队列或所述第二命令队列。
27.根据权利要求18所述的数据处理系统,其中所述存储器访问引擎是耦接到所述数据织构的相干性存储器从控制器,以用于实现来自至少一个数据处理单元的存储器访问请求。
28.根据权利要求18所述的数据处理系统,其中所述存储器访问引擎是耦接到所述数据织构的相干性存储器主控制器,以用于实现来自至少一个数据处理单元的存储器访问请求。
CN202280025133.7A 2021-03-31 2022-03-21 用于多队列存储器控制器的信用方案 Pending CN117120992A (zh)

Applications Claiming Priority (3)

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

Publications (1)

Publication Number Publication Date
CN117120992A true CN117120992A (zh) 2023-11-24

Family

ID=82261340

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202280025133.7A Pending CN117120992A (zh) 2021-03-31 2022-03-21 用于多队列存储器控制器的信用方案

Country Status (6)

Country Link
US (1) US11379388B1 (zh)
EP (1) EP4315085A4 (zh)
JP (1) JP2024512623A (zh)
KR (1) KR20230158571A (zh)
CN (1) CN117120992A (zh)
WO (1) WO2022212100A1 (zh)

Families Citing this family (1)

* 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

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105144128A (zh) * 2013-04-23 2015-12-09 Arm有限公司 存储器访问控制
US20180018291A1 (en) * 2016-07-15 2018-01-18 Advanced Micro Devices, Inc. Command arbitration for high speed memory interfaces
CN108733600A (zh) * 2017-04-17 2018-11-02 爱思开海力士有限公司 具有直接存储器访问控制器的电子系统及其操作方法
CN109478169A (zh) * 2016-07-15 2019-03-15 超威半导体公司 具有灵活地址解码的存储器控制器
CN109690508A (zh) * 2016-07-15 2019-04-26 超威半导体公司 带虚拟控制器模式的存储器控制器

Family Cites Families (10)

* 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
US10303384B1 (en) * 2017-11-28 2019-05-28 Western Digital Technologies, Inc. Task readiness for queued storage tasks
KR20190130831A (ko) * 2018-05-15 2019-11-25 에스케이하이닉스 주식회사 컨트롤러 및 이를 포함하는 메모리 시스템
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
CN105144128A (zh) * 2013-04-23 2015-12-09 Arm有限公司 存储器访问控制
US20180018291A1 (en) * 2016-07-15 2018-01-18 Advanced Micro Devices, Inc. Command arbitration for high speed memory interfaces
CN109478169A (zh) * 2016-07-15 2019-03-15 超威半导体公司 具有灵活地址解码的存储器控制器
CN109690508A (zh) * 2016-07-15 2019-04-26 超威半导体公司 带虚拟控制器模式的存储器控制器
CN108733600A (zh) * 2017-04-17 2018-11-02 爱思开海力士有限公司 具有直接存储器访问控制器的电子系统及其操作方法

Also Published As

Publication number Publication date
WO2022212100A1 (en) 2022-10-06
US11379388B1 (en) 2022-07-05
KR20230158571A (ko) 2023-11-20
JP2024512623A (ja) 2024-03-19
EP4315085A4 (en) 2024-06-19
EP4315085A1 (en) 2024-02-07

Similar Documents

Publication Publication Date Title
CN109564556B (zh) 具有条纹和读取/写入事务管理的存储器控制器仲裁器
CN109154918B (zh) 自刷新状态机mop阵列
CN109690508B (zh) 带虚拟控制器模式的存储器控制器
CN107924375B (zh) 用于高速存储器接口的命令仲裁
EP3436958B1 (en) Low power memory throttling
JP7195486B1 (ja) 異種メモリシステムに対するシグナリング
CN115516563B (zh) 用于dram的刷新管理
CN116324744A (zh) 具有多个命令子队列和对应的仲裁器的存储器控制器
JP7521132B2 (ja) アービトレーション中の書き込みバンクグループのマスク
CN117501230A (zh) 多存储列存储器控制器中的高效存储列切换
CN115885268A (zh) Dram命令拖尾管理
CN115605853A (zh) 高效存储器总线管理
CN117120992A (zh) 用于多队列存储器控制器的信用方案
US11995008B2 (en) Memory controller with hybrid DRAM/persistent memory channel arbitration
CN117099071A (zh) 存储器控制器功率状态
CN117136351A (zh) 数据织构时钟切换
EP3270295A1 (en) Memory controller with virtual controller mode
CN117099076A (zh) Dram命令拖尾效率管理

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination