CN116324744A - 具有多个命令子队列和对应的仲裁器的存储器控制器 - Google Patents
具有多个命令子队列和对应的仲裁器的存储器控制器 Download PDFInfo
- Publication number
- CN116324744A CN116324744A CN202180065325.6A CN202180065325A CN116324744A CN 116324744 A CN116324744 A CN 116324744A CN 202180065325 A CN202180065325 A CN 202180065325A CN 116324744 A CN116324744 A CN 116324744A
- Authority
- CN
- China
- Prior art keywords
- queue
- command
- sub
- command sub
- memory access
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
- G06F13/1673—Details of memory controller using buffers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1009—Address translation using page tables, e.g. page table structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1605—Handling requests for interconnection or transfer for access to memory bus based on arbitration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
- G06F13/1684—Details of memory controller using multiple buses
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30043—LOAD or STORE instructions; Clear instruction
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Memory System (AREA)
Abstract
本公开提供了一种存储器控制器,该存储器控制器包括存储器通道控制器,该存储器通道控制器使用命令队列和仲裁器对的多个组。每个仲裁器耦接到相应的命令队列,以根据预定标准从每个命令队列选择存储器访问命令。每个仲裁器基于该预定标准从每个命令队列中的存储器访问请求中独立地进行选择,并将所选择的存储器访问请求发送到用作第二级仲裁器的选择器,该第二级仲裁器将该请求发送到存储器子通道。
Description
相关申请的交叉引用
本申请要求2020年10月30日提交的美国申请号17/085,304的优先权,其要求2020年8月24日提交的美国临时申请号63/069,352的优先权,这些申请的全部公开内容明确地并入本文。
背景技术
计算机***通常使用廉价和高密度的动态随机存取存储器(DRAM)芯片作为主存储器。现今销售的大多数DRAM芯片与由联合电子设备工程委员会(JEDEC)发布的各种双倍数据速率(DDR)DRAM标准兼容。DDR DRAM通过提供各种低功率模式来提供高性能和低功率操作两者。
现代DDR存储器控制器维持队列以存储未决的存储器访问请求,从而允许这些控制器根据这些访问请求的生成或存储顺序来乱序地选取未决的存储器访问请求,以提高效率。例如,存储器控制器可从队列中检索对给定存储器存储列中的同一行的多个存储器访问请求,并基于检查页命中将这些访问请求连续地发出到存储器***,以避免预充电当前行和激活另一行的开销。一些DDR存储器控制器采用单个命令队列(诸如64条目命令队列)和仲裁器,该仲裁器在所有64个命令队列条目中进行仲裁,每个条目都包含存储器访问请求。采用高密度动态随机存取存储器(诸如云计算服务器、台式计算机、膝上型计算机、移动设备、打印机和其他设备)的数据处理***需要比以往任何时候都更高的性能能力。
附图说明
当结合以下附图时,鉴于以下描述,将更容易理解具体实施,其中相同的附图标记表示相同的元件,并且附图中:
图1示出了根据一些实施方案的数据处理***的框图;
图2示出了适合于在图1的数据处理***中使用的加速处理单元(APU)的框图;
图3示出了根据一些实施方案的适合于在图2的APU中使用的存储器控制器和相关联的物理接口(PHY)的框图;
图4示出了根据一些实施方案的适合于在图2的APU中使用的另一存储器控制器和相关联的PHY的框图;
图5示出了根据一些实施方案的存储器控制器的框图;
图6示出了根据一些实施方案的采用多个命令子队列的存储器控制器的一部分的框图;
图7示出了根据一些实施方案的采用单独的写命令子队列和单独的读命令子队列的存储器控制器的另一示例的框图;
图8是示出根据一些实施方案的采用不同组的读/写子队列的另一存储器控制器的框图;
图9示出了采用图7所示的存储器控制器架构的多个配置的另一存储器控制器的框图;并且
图10是示出根据一些实施方案的用于控制具有多个存储器通道的存储器***的方法的一个示例的流程图。
在以下描述中,在不同附图中使用相同的附图标号指示类似或相同的项。除非另有说明,否则字词“耦接”及其相关联的动词形式包括直接连接和通过本领域已知的方式的间接电连接两者,并且除非另有说明,否则对直接连接的任何描述也意味着使用合适形式的间接电连接的另选实施方案。
具体实施方式
已发现,常规DDR存储器控制器中的仲裁器可能花费太多的时间来评估关于优先级、JEDEC时序依赖性和页状态信息的所有64个条目。时序设定可能很困难,导致处理存储器读命令和写命令(在本文中也称为读访问、读请求、写访问和写请求)发生延迟。如下文将描述,在一些具体实施中,存储器控制器包括存储器通道控制器,该存储器通道控制器使用命令队列和仲裁器对的多个组,使得采用更多但更小的命令队列。多个命令子队列用作通道或子通道的命令队列。在一些具体实施中,每个仲裁器耦接到相应的命令队列,以根据预定标准(诸如DDR时序标准和其他标准)从每个命令队列选择存储器访问命令。仲裁器基于预定标准独立地从每个命令队列中的存储器访问请求中进行选择,并将所选择的存储器访问请求发送到用作第二级仲裁器的选择器,该第二级仲裁器将请求发送到子通道。在某些具体实施中,使用多个较小的命令队列和对应的专用仲裁器代替单个较大的命令队列和仲裁器提高了存储器控制器和对应的数据处理***的操作速度。
根据一些具体实施,一种用于控制具有多个存储器通道的存储器***的方法包括:选择第一命令子队列中的存储器访问请求;选择第二命令子队列中的存储器访问请求;从所述第一存储器访问请求和所述第二存储器访问请求中选择存储器访问请求;以及将所选择的存储器访问请求分派到存储器通道。
根据某些具体实施,一种用于控制具有多个存储器通道的存储器***的方法包括接收存储器访问请求。该方法包括解码存储器访问请求中的每个存储器访问请求。该方法还包括将解码的存储器访问请求存储在第一命令子队列或第二命令子队列中。该方法还包括使用预定标准从该第一命令子队列中的多个存储器访问请求中进行选择,以提供所选择的来自该第一命令子队列的第一存储器访问请求。该方法还包括使用预定标准从该第二命令子队列中的多个存储器访问请求中进行选择,以提供所选择的来自该第二命令子队列的第二存储器访问请求。该方法还包括从所提供的来自该第一命令子队列的第一存储器访问请求和来自该第二命令子队列中的第二存储器访问请求中选择优选的存储器访问请求。该方法还包括根据子通道将如此选择的优选选择的存储器访问请求分派到多个存储器通道中的一个存储器通道。
在一些示例中,该方法包括将存储器访问请求分类到不同的命令子队列中,使得该第一命令子队列仅包括读请求,并且该第二命令子队列仅包括写请求。在某些示例中,该方法包括将该存储器访问请求解码到该存储器***中的存储器设备的多个子通道的存储体、存储列和子通道中,并将该存储体、存储列和子通道存储在该多个命令子队列中的一个命令子队列中。在一些具体实施中,该方法包括通过从所提供的来自该第一命令子队列的第一存储器访问请求和来自该第二命令子队列的第二存储器访问请求中选择最早的存储器访问请求来选择该优选的存储器访问请求。
在某些具体实施中,存储器控制器包括存储器通道控制器,该存储器通道控制器包括被配置为存储存储器访问请求的第一命令子队列和耦接到该第一命令子排队以从该第一指令子队列选择存储器访问命令的对应的第一仲裁器。该存储器还包括被配置为存储存储器访问请求的第二命令子队列和耦接到该第二命令个子队列以从该第二命令队列选择存储器访问命令的对应的第二仲裁器。该存储器还包括命令队列条目逻辑,该命令队列条目逻辑将存储器访问请求放置到该第一命令子队列和该第二命令子队列中。该存储器还包括第一选择器,该第一选择器操作以从该第一命令子队列或该第二命令子队列中的任一者选择存储器请求,并将所选择的存储器访问请求发送到该多个子通道中的至少一个子通道。在一些具体实施中,仲裁器基于预定标准选择存储器访问命令。在一些具体实施中,该第一选择器耦接到该第一仲裁器和该第二仲裁器两者。
在一些示例中,该命令队列条目逻辑将存储器访问请求分类到不同的命令子队列中,使得该第一命令子队列仅包括读请求,并且该第二命令子队列仅包括写请求。在其他具体实施中,该命令队列条目逻辑将来自该第一命令子队列的条目传送到该第二命令子队列。
在某些示例中,该存储器控制器包括在该第一仲裁器和该第二仲裁器之间共享的共享时序逻辑和共享页表。
在一些示例中,该存储器控制逻辑包括用于存储存储器访问请求的第三命令子队列和耦接到该第三命令子队列以根据预定标准从该第三命令子队列选择存储器访问命令的对应的第三仲裁器。该存储器还包括用于存储存储器访问请求的第四命令子队列和耦接到该第四命令子队列以根据预定标准从该第四命令子队列选择存储器访问命令的对应的第四仲裁器。该存储器还包括第二选择器,该第二选择器耦接到该第三仲裁器和该第四仲裁器两者,该第二选择器操作以从该第三命令子队列或该第四命令子队列中的任一者选择存储器请求。该存储器还包括第三选择器,该第三选择器操作地耦接到该第一选择器和该第二选择器,并且操作以从该第一选择器或该第二选择器中的任一者选择存储器请求,并将所选择的存储器访问请求发送到多个子通道中的至少一个子通道。
在某些示例中,该存储器控制器包括命令队列条目逻辑,该命令队列条目逻辑操作地耦接到该第一命令子队列、该第二命令子队列、该第三命令子队列和该第四命令子队列,并且操作以将存储器访问请求分类到不同的命令队列中,使得该第一命令子队列和该第二命令队列仅包括读请求,并且该第三命令子队列和该第四命令队列仅包括写请求。
在一些示例中,该存储器控制逻辑包括用于存储存储器访问请求的第三命令子队列和耦接到该第三命令子队列以根据预定标准从该第三命令子队列选择存储器访问命令的对应的第三仲裁器。该存储器控制逻辑还包括用于存储存储器访问请求的第四命令子队列和耦接到该第四命令子队列以根据预定标准从该第四命令子队列选择存储器访问命令的对应的第四仲裁器。该存储器控制逻辑还包括第二选择器,该第二选择器耦接到该第三仲裁器和该第四仲裁器两者,该第二选择器操作以从该第三命令子队列或该第四命令子队列中的任一者选择存储器请求并将所选择的存储器访问请求发送到对应的子通道。
在某些具体实施中,数据处理***包括多个存储器访问代理,该多个存储器访问代理用于提供存储器访问请求。该数据处理***还包括多个存储器通道。该数据处理***还包括存储器控制器,该存储器控制器耦接到该多个存储器访问代理和该多个存储器通道并且具有存储器通道控制器,该存储器通道控制器包括用于存储存储器访问请求的第一命令子队列和耦接到该第一命令子队列以从该第一命令子队列选择存储器访问命令的对应的第一仲裁器。该存储器控制器还包括用于存储存储器访问请求的第二命令子队列和耦接到该第二命令个子队列以从该第二命令队列选择存储器访问命令的对应的第二仲裁器。在一些具体实施中,该仲裁器基于预定标准选择存储器访问命令。该存储器通道控制器还包括命令队列条目逻辑,该命令队列条目逻辑操作地耦接到该第一命令子队列和该第二命令子队列,并且操作以将存储器访问请求放置到该第一命令子队列和该第二命令子队列中。该存储器通道控制器还包括第一选择器,该第一选择器耦接到该第一仲裁器和该第二仲裁器两者,该第一选择器从该第一命令子队列或该第二命令子队列中的任一者选择存储器请求并将所选择的存储器访问请求发送到多个子通道中的至少一个子通道。
在一些示例中,该命令队列条目逻辑将存储器访问请求分类到不同的命令子队列中,使得该第一命令子队列仅包括读请求,并且该第二命令子队列仅包括写请求。在一些具体实施中,该命令队列条目逻辑将来自该第一命令子队列的条目传送到该第二命令子队列。
在某些示例中,该数据处理***包括在该第一仲裁器和该第二仲裁器之间共享的共享时序逻辑和共享页表。
在一些示例中,该数据处理***包括用于存储存储器访问请求的第三命令子队列和耦接到该第三命令子队列以根据预定标准从该第三命令子队列选择存储器访问命令的对应的第三仲裁器。该数据处理***还包括用于存储存储器访问请求的第四命令子队列和耦接到该第四命令子队列以根据预定标准从该第四命令子队列选择存储器访问命令的对应的第四仲裁器。该数据处理***还包括第二选择器,该第二选择器耦接到该第三仲裁器和该第四仲裁器两者,该第二选择器操作以从该第三命令子队列或该第四命令子队列中的任一者选择存储器请求。该数据处理***还包括第三选择器,该第三选择器操作地耦接到该第一选择器和该第二选择器,并且操作以从该第一选择器或该第二选择器中的任一者选择存储器请求,并将所选择的存储器访问请求发送到多个子通道中的至少一个子通道。
在某些示例中,该存储器控制器包括命令队列条目逻辑,该命令队列条目逻辑操作地耦接到该第一命令子队列、该第二命令子队列、该第三命令子队列和该第四命令子队列,将存储器访问请求分类到不同的命令队列中,使得该第一命令子队列和该第二命令队列仅包括读请求,并且该第三命令子队列和该第四命令队列仅包括写请求。
在一些示例中,该数据处理***包括用于存储存储器访问请求的第三命令子队列和耦接到该第三命令子队列以根据预定标准从该第三命令子队列选择存储器访问命令的对应的第三仲裁器。该数据处理***还包括用于存储存储器访问请求的第四命令子队列和耦接到该第四命令子队列以根据预定标准从该第四命令子队列选择存储器访问命令的对应的第四仲裁器。该数据处理***还包括第二选择器,该第二选择器耦接到该第三仲裁器和该第四仲裁器两者,该第二选择器操作以从该第三命令子队列或该第四命令子队列中的任一者选择存储器请求并将所选择的存储器访问请求发送到对应的子通道。
图1示出了示出根据一些实施方案的数据处理***100的非限制性示例性框图。数据处理***100通常包括加速处理单元(APU)形式的数据处理器110、存储器***120、***部件互连高速(PCIe)***150、通用串行总线(USB)***160和磁盘驱动器170。数据处理器110作为数据处理***100的中央处理单元(CPU)操作并且提供在现代计算机***可用的各种总线和接口。这些接口包括两个双数据速率(DDRx)存储器通道、用于连接到PCIe链路的PCIe根复合体、用于连接到USB网络的USB控制器以及到串行高级技术附件(SATA)大容量存储设备的接口。
存储器***120包括存储器通道130和存储器通道140。存储器通道130包括连接到DDRx总线132的一组双列直插存储器模块(DIMM),包括代表性的DIMM 134、136和138,它们在该示例中对应于单独的存储列。同样,存储器通道140包括连接到DDRx总线142的一组DIMM,包括代表性的DIMM 144、146和148。例如,DDR5双列直插存储器模块(DIMM)具有两个独立的32位通道,称为“子通道”。从DRAM控制器架构使用的角度来看,单个控制器独立地运行两个单独的32位通道,并且在这种情况下,从控制器的角度来看,两个通道也被称为子通道。
PCIe***150包括PCIe交换机152(该PCIe交换机连接到数据处理器110中的PCIe根复合体)、PCIe设备154、PCIe设备156和PCIe设备158。PCIe设备156继而连接到***基本输入/输出***(BIOS)存储器157。***BIOS存储器157可以是各种非易失性存储器类型中的任一种,诸如只读存储器(ROM)、闪存电可擦除可编程ROM(EEPROM)等。
USB***160包括连接到数据处理器110中的USB主机的USB集线器162,以及各自连接到USB集线器162的代表性USB设备164、166和168。USB设备164、166和168可以是诸如键盘、鼠标、闪存EEPROM端口等设备。
磁盘驱动器170通过SATA总线连接到数据处理器110,并为操作***、应用程序、应用文件等提供大容量存储。
通过提供存储器通道130和存储器通道140,数据处理***100适合于在现代计算应用程序中使用。存储器通道130和140中的每个存储器通道可连接到现有技术的DDR存储器(诸如DDR版本四(DDR4)、低功率DDR4(LPDDR4)、图形DDR版本五(gDDR5))和高带宽存储器(HBM),并且可适于未来存储器技术。这些存储器提供高总线带宽和高速操作。同时,它们还提供低功率模式以节省电池供电应用诸如膝上型计算机的功率,并且还提供内置热监测。
图2以框图形式示出了适合于在图1的数据处理***100中使用的APU 200。APU200通常包括中央处理单元(CPU)核心复合体210、图形核心220、一组显示引擎230、存储器管理集线器240、数据织构250、一组***控制器260、一组***总线控制器270、***管理单元(SMU)280以及一组存储器控制器290(存储器控制器292和存储器控制器294)。
CPU核心复合体210包括CPU核心212和CPU核心214。在该示例中,CPU核心复合体210包括两个CPU核心,但在其他实施方案中,CPU核心复合体可包括任意数量的CPU核心。CPU核心212和214中的每个核心双向连接到***管理网络(SMN)(该SMN形成控制织构)和数据织构250,并且能够将存储器访问请求提供到数据织构250。CPU核心212和214中的每个核心可以是一体式核心,或者可进一步是具有共享某些资源诸高速缓存的两个或更多个一体式核心的核心复合体。
图形核心220是高性能图形处理单元(GPU),该GPU能够以高度集成和并行方式执行图形操作诸如顶点处理、片段处理、着色、纹理混合等。图形核心220双向连接到SMN和数据织构250,并且能够将存储器访问请求提供到数据织构250。就此而言,APU 200可支持其中CPU核心复合体210和图形核心220共享相同存储空间的统一存储器架构,或其中CPU核心复合体210和图形核心220共享存储空间的一部分、同时图形核心220还使用CPU核心复合体210不能访问的私有图形存储器的存储器架构。
显示引擎230渲染并光栅化由图形核心220生成的对象以供在监测器上显示。图形内核220和显示引擎230双向连接到公共存储器管理集线器240以用于统一转换为存储器***120中的适当地址,并且存储器管理集线器240双向连接到数据织构250以用于生成此类存储器访问并且接收从存储器***返回的读数据。
数据织构250包括用于在任何存储器访问代理和存储器控制器290(存储器控制器292和存储器控制器294)之间路由存储器访问请求和存储器响应的纵横交换机。该数据织构还包括由BIOS定义的、用于基于***配置确定存储器访问的目的地的***存储器映射,以及用于每个虚拟连接的缓冲器。
***控制器260包括USB控制器262和SATA接口控制器264,它们中的每一者双向连接到***集线器266和SMN总线。这两个控制器仅仅是可用于APU 200的***控制器的示例。
***总线控制器270包括***控制器或“南桥”(SB)272以及PCIe控制器274,它们中的每一者双向连接到输入/输出(I/O)集线器276和SMN总线。I/O集线器276也双向连接到***集线器266和数据织构250。因此,例如,CPU核心可通过数据织构250通过I/O集线器276路由的访问对USB控制器262、SATA接口控制器264、SB 272或PCIe控制器274中的寄存器进行编程。
SMU 280是控制APU 200上的资源的操作并使这些资源之间的通信同步的本地控制器。SMU 280管理APU 200上的各种处理器的上电定序,并且经由复位、启用和其他信号控制多个芯片外设备。SMU 280包括一个或多个时钟源(图2中未示出),诸如锁相环路(PLL),以便为APU 200的每个部件提供时钟信号。SMU 280还管理各种处理器和其他功能块的功率,并且可从CPU核心212和214以及图形核心220接收测量功率消耗值以确定适当的功率状态。
APU 200还实现各种***监测和功率节省功能。具体地,一个***监测功能是热监测。例如,如果APU 200变热,则SMU 280可降低CPU核心212和214和/或图形核心220的频率和电压。如果APU 200变得过热,则可完全关断APU 200。SMU 280还可经由SMN总线从外部传感器接收热事件,并且作为响应,SMU 280可降低时钟频率和/或电源电压。
图3以框图形式示出根据一些实施方案的适合于在图2的APU 200中使用的存储器控制器300和相关联的物理接口(PHY)330。存储器控制器300包括存储器通道310和功率引擎320。存储器通道310包括主机接口312、存储器通道控制器314和物理接口316。主机接口312通过可缩放数据端口(SDP)将存储器通道控制器314双向连接到数据织构250。物理接口316通过符合DDR-PHY接口规范(DFI)的总线将存储器通道控制器314双向连接到PHY 330。功率引擎320通过SMN总线双向连接到SMU 280,通过高级***总线(APB)双向连接到PHY330,并且还双向连接到存储器通道控制器314。PHY 330具有到存储器通道(诸如图1的存储器通道130或存储器通道140)的双向连接。存储器控制器300是使用单个存储器通道控制器314的用于单个存储器通道的存储器控制器的实例,并且具有功率引擎320以将在下面进一步描述的方式控制存储器通道控制器314的操作。
图4以框图形式示出根据一些实施方案的适合于在图2的APU 200中使用的另一存储器控制器400以及相关联的PHY 440和450。存储器控制器400包括存储器通道410和420以及功率引擎430。存储器通道410包括主机接口412、存储器通道控制器414和物理接口416。主机接口412通过SDP将存储器通道控制器414双向连接到数据织构250。物理接口416将存储器通道控制器414双向连接到PHY 440,并且符合DFI规范。存储器通道420包括主机接口422、存储器通道控制器424和物理接口426。主机接口422通过另一SDP将存储器通道控制器424双向连接到数据织构250。物理接口426将存储器通道控制器424双向连接到PHY 450,并且符合DFI规范。功率引擎430通过SMN总线双向连接到SMU 280,通过APB连接到PHY 440和450,并且还双向连接到存储器通道控制器414和424。PHY 440具有到存储器通道(诸如图1的存储器通道130)的双向连接。PHY 450具有到存储器通道(诸如图1的存储器通道140)的双向连接。存储器控制器400是具有两个存储器通道控制器的存储器控制器的实例,并且使用功率引擎430以将在下面进一步描述的方式控制存储器通道控制器414和存储器通道控制器424两者的操作。
图5示出根据一些实施方案的存储器控制器500的框图的非限制性示例。存储器控制器500通常包括存储器通道控制器510和功率控制器550。存储器通道控制器510通常包括接口512、队列514、第一命令子队列520、地址生成器522、用于每个相应命令子队列/仲裁器对的内容可寻址存储器(CAM)524和529、重播队列530、刷新逻辑块532、时序块534、页表536、对应的仲裁器538、纠错码(ECC)校验块542、ECC生成块544和数据缓冲器(DB)546。在一些具体实施中,存储器控制器500还包括第二命令子队列521、对应的仲裁器539和选择器541,如下文进一步描述。每个命令子队列525和527包括对应的仲裁器,并且在本文中也被称为子队列/仲裁器对,或命令子队列/仲裁器组或命令子队列/仲裁器模块。在一些具体实施中,命令子队列/仲裁器模块525和527被复制以允许根据给定架构的需要进行深度扩展,并且经由选择器541的第二级仲裁被配置成处理来自扩展数量的模块的附加输出。在某些具体实施中,命令队列条目逻辑523将存储器访问请求放置(例如,在子队列之间分类和/或传送)到不同的命令子队列中。在一些示例中,这包括仅将读请求存储在一个命令子队列中以及仅将写请求存储在另一命令子队列中。在其他具体实施中,命令队列条目逻辑523将读请求和写请求两者组合到同一命令子队列中。在某些具体实施中,命令队列条目逻辑523将条目从一个命令子队列移动到另一命令子队列。
在一些具体实施中,每个命令子队列520和521存储32个条目,因此来自这两个命令子队列的条目的组合数量是64个条目。然而,可采用任何合适数量的命令子队列和命令子队列条目大小。在一些具体实施中,各个块中的功能可根据需要与其他块组合。在一些具体实施中,命令队列条目逻辑523作为地址生成器的一部分嵌入或与其他块组合。在一个示例中,命令队列条目逻辑被实现为一个或多个状态机。然而,可采用任何合适的逻辑。在一些具体实施中,命令队列条目逻辑523提供子队列控制,使得使用按序存储器访问请求并允许一个子队列将条目推送到另一子队列。例如,命令队列条目逻辑523包括指示条目可被传送的从一个子队列到另一子队列的反馈结构以及将条目放置到另一命令子队列中的结构。
接口512具有通过外部总线到数据织构250的第一双向连接,并且具有输出。在存储器控制器500中,该外部总线与由ARM Holdings,PLC of Cambridge,England规定的高级可扩展接口版本四(称为AXI4)兼容,但在其他实施方案中可以是其他类型的接口。接口512将存储器访问请求从称为FCLK(或MEMCLK)域的第一时钟域转换到存储器控制器500内部的称为UCLK域的第二时钟域。类似地,队列514提供从UCLK域到与DFI接口相关联的DFICLK域的存储器访问。
地址生成器522解码通过AXI4总线从数据织构250接收的存储器访问请求的地址。存储器访问请求包括物理地址空间中以归一化格式表示的访问地址。地址生成器522将归一化地址转换成可用于对存储器***120中的实际存储器设备进行寻址以及高效地调度相关访问的格式。该格式包括将存储器访问请求与特定存储列、行地址、列地址、存储体地址和存储体组相关联的区域标识符。在启动时,***BIOS查询存储器***120中的存储器设备以确定它们的大小和配置,并且对与地址生成器522相关联的一组配置寄存器进行编程。地址生成器522使用存储在配置寄存器中的配置来将归一化地址转换成适当格式。命令子队列520和命令子队列521各自为从数据处理***100中的存储器访问代理(诸如如由命令队列条目逻辑523提供的CPU核心212和214以及图形核心220)接收的存储器访问请求的队列。命令子队列520存储由地址生成器522解码的地址字段以及允许仲裁器538高效地选择存储器访问的其他地址信息,包括访问类型和服务质量(QoS)标识符。同样,命令子队列521存储由地址生成器522解码的地址字段以及允许对应的仲裁器539高效地选择存储器访问的其他地址信息,包括访问类型和服务质量(QoS)标识符。CAM 524和CAM 529各自包括用于实施排序规则诸如写后写(WAW)以及写后读(RAW)排序规则的信息。
重播队列530是用于存储由仲裁器538和仲裁器539选取的存储器访问的临时队列,这些存储器访问正在等待响应,诸如地址和命令奇偶校验响应、针对DDR4 DRAM的写循环冗余校验(CRC)响应或针对GDDR5DRAM的写和读CRC响应。在一些具体实施中,对于每个命令队列/仲裁器对,重播队列530访问ECC校验块542以确定所返回的ECC是正确的还是指示错误。重播队列530允许在这些循环中的一个循环的奇偶校验或CRC错误的情况下重播访问。在其他具体实施中,针对每个命令子队列/仲裁器对实例化重播机制。
刷新逻辑532包括用于各种掉电、刷新和终端电阻(ZQ)校准循环的状态机,这些循环与从存储器访问代理接收的正常读和写存储器访问请求分开生成。例如,如果存储器存储列处于预充电掉电,则必须周期性地唤醒该存储器存储列以运行刷新循环。刷新逻辑532周期性地生成刷新命令,以防止由于电荷从DRAM芯片中的存储器单元的存储电容器泄漏而引起的数据错误。此外,刷新逻辑532周期性地校准ZQ以防止由于***的热变化而导致的片上终端电阻的失配。刷新逻辑532还决定何时将DRAM设备置于不同的掉电模式。
仲裁器538双向连接到命令子队列520,并且仲裁器539双向连接到命令子队列521。与现有***相比,每个仲裁器通过智能调度来自较小命令队列的访问来提高效率,以提高存储器总线的使用率。每个仲裁器538和仲裁器539使用时序块534,通过基于DRAM时序参数确定命令子队列520和/或命令子队列521中的某些访问是否有资格发布来实施正确的时序关系。例如,每个DRAM在对同一存储体的激活命令之间具有最小规定时间,称为“tRC”。时序块534维持一组计数器,该组计数器基于该时序参数和JEDEC规范中规定的其他时序参数来确定合格性,并且时序块双向连接到重播队列530。例如,每个DRAM在激活命令(或行命令)和列命令之间具有最小规定时间,称为“tRCD”。仲裁器538和仲裁器539使用时序块534中的计数器来确定每个CMD的合格性。页表536维持关于仲裁器538和仲裁器539的存储器通道的每个存储体和存储列中的活动页的状态信息,并且双向连接到重播队列530。
响应于从接口512接收到写存储器访问请求,ECC生成块544根据写数据计算ECC。DB 546存储所接收的存储器访问请求的写数据和ECC。当选择器541基于由每个相应仲裁器538或仲裁器539选择的命令从命令子队列520或命令子队列521中的任一者中选取对应的写访问以分派到存储器通道时,该DB将组合的写数据/ECC输出到队列514,如下文进一步描述。
功率控制器550通常包括到高级可扩展接口版本一(AXI)的接口552、APB接口554和功率引擎560。接口552具有到SMN的第一双向连接,该第一双向连接包括用于接收图5中单独示出的标记为“EVENT_n”的事件信号的输入,以及输出。APB接口554具有连接到接口552的输出的输入,以及用于通过APB连接到PHY的输出。功率引擎560具有连接到接口552的输出的输入,以及连接到队列514的输入的输出。功率引擎560包括一组配置寄存器562、微控制器(μC)564、自刷新控制器(SLFREF/PE)566和可靠读/写训练引擎(RRW/TE)568(在一些具体实施中,该训练引擎被实现为微控制器)。配置寄存器562通过AXI总线编程,并且存储配置信息以控制存储器控制器500中各种块的操作。因此,配置寄存器562具有连接到这些块的输出,这些块在图5中未详细示出。自刷新控制器566是除由刷新逻辑532自动生成刷新之外还允许手动生成刷新的引擎。可靠读/写训练引擎568向存储器或I/O设备提供连续存储器访问流,用于诸如DDR接口读延迟训练和回送测试等目的。
存储器通道控制器510包括允许仲裁器选取存储器访问以供分派到相关联存储器通道的电路***。为了做出期望的仲裁决定,地址生成器522将地址信息解码成预解码信息,该预解码信息包括存储器***中的存储列、行地址、列地址、存储体地址和存储体组,并且命令子队列520和命令子队列521存储预解码信息。配置寄存器562存储配置信息以确定地址生成器522解码所接收的地址信息的方式。对于命令子队列520中的条目,仲裁器538使用解码的地址信息、由时序块534指示的时序合格性信息以及由页表536指示的活动页信息,以有效地向选择器541提供“获胜”存储器访问,同时遵守诸如QoS要求的其他标准。例如,仲裁器538实现对打开页面的访问的偏好,以避免改变存储页面所需的预充电和激活命令的开销,并且通过将对一个存储体的开销访问与对另一存储体的读和写访问交错来隐藏对一个存储体的开销访问。特别是在正常操作期间,仲裁器538可决定保持页面在不同存储体中打开,直到需要对这些页面进行预充电,然后选择不同的页面。仲裁器539以与仲裁器538相同的方式操作,并提供对选择器541的“获胜”存储器访问。选择器541从所提供的来自第一命令子队列520的存储器访问请求和来自命令子队列521的存储器访问请求中选择优选的存储器访问请求543。选择器541根据子通道将如此选择的优选选择的存储器访问请求分派到多个存储器通道中的一个存储器通道。在一个示例中,选择器541包括多路复用器电路。然而,可采用任何合适的逻辑。
地址生成器522向命令子队列520和子命令队列521发送包括解码的子通道号的解码的存储器访问请求。命令子队列520将解码的存储器访问请求存储在命令子队列520中的条目中,该条目具有用于存储解码的子通道号的第一字段和用于存储解码的存储器访问请求的剩余部分的第二字段,如上所述。类似地,命令子队列521将解码的存储器访问请求存储在命令子队列521中的条目中,该条目具有用于存储解码的子通道号的第一字段和用于存储解码的存储器访问请求的剩余部分的第二字段。
仲裁器538双向连接到命令子队列520,并使用时序块534通过基于DRAM时序参数确定命令队列520中的某些访问是否有资格发布来实施正确的时序关系。仲裁器538根据其使用的预定标准从命令子队列520中选取合格的存储器访问请求。类似地,仲裁器539双向连接到命令子队列521,并使用时序块534通过基于DRAM时序参数确定命令队列521中的某些访问是否有资格发布来实施正确的时序关系。仲裁器538根据其使用的预定标准从命令子队列521中选取合格的存储器访问请求。这些预定标准的示例在上面进行了描述并且可在实施方案之间变化。
图6至图9示出了命令子队列和对应的仲裁器配置的各种非限制性示例。然而,将认识到,这些仅为一些示例,并且可以设想其他配置。尽管并非始终示出,但如本文所述的仲裁器(包括图5中的仲裁器)获得优先级信息、PGT信息、时序信息和其他信息,诸如遵循JEDEC规范或任何其他合适的标准所需的信息。
图6示出了具有存储器通道控制器的存储器控制器的示例,其中存储器通道控制器包括命令子队列和对应仲裁器组。命令子队列和对应仲裁器组,示为命令子队列/仲裁器模块525和527。对应的仲裁器根据预定标准(诸如上文提及的标准)从相应的命令子队列选择存储器访问命令。命令队列条目逻辑523与命令子队列通信并将存储器访问请求放置到命令子队列520和命令子队列527中。在一个示例中,命令队列条目逻辑523被实现为一个或多个状态机。在一些示例中,命令队列条目逻辑包括可编程控制寄存器,该可编程控制寄存器由CPU或GPU编程,并设置命令队列条目逻辑523以按特定方式对命令子队列中的存储器访问请求(诸如读请求和写请求)进行分类。在一个示例中,命令队列条目逻辑523对一个命令子队列中的读请求和不同命令子队列的写请求进行分类。在其他具体实施中,在命令子队列内混合读和写。在一些具体实施中,在命令子队列之间传送条目。在一些具体实施中,还使用可编程控制寄存器来为各种级别的仲裁设置阈值,如下文进一步指出。
在一个示例中,每个仲裁器538和539基于JEDEC规范标准进行仲裁,并评估页表(PGT)信息600、时序信息602和优先级信息604(例如,低、中、高、紧急),以选择提供给选择器541的获胜存储器访问请求606和608。例如,PGT信息600表示DRAM页面是打开的(即,已被激活)还是处于关闭状态(即,意味着其被预充电),并且因此存储体上没有页面被打开。在一个示例中,时序信息602是指上文所提及的Trc、Trcd等。优先级信息604是请求进入的优先级级别,无论是低、中、高还是紧急。
页命中(PH)意味着所需的页面在DRAM设备的读出放大器中已“激活”,并且可直接读或写该行。这是最低延迟场景。页未命中(PM)意味着所需的页面在DRAM读出放大器中未打开,并且因此需要“激活”,然后等待Trcd,直到其成为访问页命中。这是中等延迟响应。页冲突(PC)意味着所需的页面不是该DRAM存储体中打开的当前页面,因此需要对退出页面进行预充电,等待Trp,然后需要激活新页面,等待Trcd,然后它成为页命中并可访问。-这是最高的延迟开销。
第一级仲裁由仲裁器538和539中的每一者执行以选择获胜条目以传递到第二级仲裁逻辑612。例如,仲裁器538和539选择每个子队列中满足指定标准的存储器访问命令,诸如基于相应命令子队列中所有条目的优先级信息604具有最高优先级的命令。如时序信息602(诸如时序OK信息)所指示,针对命令解决了时序依赖性,并且还必须存在针对该命令检测到并由页表信息600指示的页表命中。如果没有命令满足此标准,则使用其他标准来选择获胜命令,诸如子队列中最早的命令或任何其他合适的标准。
选择器541包括多路复用器610和第二级仲裁逻辑612。多路复用器610基于标准(诸如时序阈值和由第二级仲裁逻辑612确定的其他标准),从两个命令子队列中的一个命令子队列中选择获胜存储器访问请求中的一个获胜存储器访问请求。在一个示例中,第二级仲裁逻辑612被实现为一个或多个状态机,然而可采用任何合适的逻辑,包括编程的处理器或任何其他合适的逻辑。因此,在该示例中,第二级仲裁逻辑612基于生成的或预存储的标准(诸如时序信息、页命中信息和其他信息)从命令子队列和对应仲裁器组的每个实例的获胜者中选取一个获胜者。例如,页命中比页未命中更受青睐。在一些具体实施中,如果获胜的存储器访问请求606或608中的一个存储器访问请求是页命中,则如果例如另一存储器访问请求是针对需要激活和预充电存储器行(例如,页未命中)的存储器访问要求,则选择该存储器访问请求作为优选的存储器访问请求543。在一些具体实施中,如果两个存储器访问请求都具有页命中,则第二级仲裁逻辑612选择具有最高优先级的存储器访问请求。在一些具体实施中,如果两个存储器访问请求606和608都具有页命中并且都具有相同的优先级,则第二级仲裁逻辑612选择较早的存储器访问请求作为优选的存储器访问请求。这些是示例,并且将认识到可采用任何合适的选择标准。
在一些具体实施中,如虚线箭头(诸如箭头614)所示,在命令子队列之间传送条目。在一些具体实施中,以有序方式操作命令子队列,使得最早的条目位于每个子队列的末尾。在该示例中,命令队列条目逻辑523提供从一个命令子队列到另一命令子队列的反馈,以使另一命令子队列知道可将条目传送到具有开放条目的命令子队列。在其他具体实施中,提供无序操作。
图7示出了另一示例性具体实施701,其中多个命令子队列/仲裁器模块525和527被配置为写子队列,而附加命令子队列700和702(例如,命令子队列/仲裁器模块)被配置为读子队列。例如,具体实施701采用专用的写命令子队列和专用的读命令子队列。在该示例中,第二级仲裁逻辑612使用诸如时序标准的标准来确定选择了哪个写访问请求和选择了哪个读请求并输出到第三选择器704,该第三选择器在该示例中充当图1中的选择器541。因此,在该示例中,存在四个命令子队列和四个对应的仲裁器,两个第二级仲裁器逻辑区段、选择器706和708以及第三选择器704。选择器704从第一选择器706或选择器708中的任一者选择存储器请求,并将所选择的存储器访问请求作为优选选择的存储器访问请求发送到一个或多个子通道。在该示例中,选择器706和708。
在该示例中,选择器704使用存储在控制寄存器中的写阈值和读阈值来通过多路复用器710选择读请求还是写请求作为优选的存储器访问请求。在一些具体实施中,读请求比写请求更受青睐。设置写阈值和读阈值以避免在读操作和写操作之间切换总线时在数据总线上发生冲突。例如,读阈值是在总线切换到写操作之前要执行的连续读的次数,而写阈值是在总线切换到执行读操作之前可以发生的连续写的次数。同样在该示例中,命令队列条目逻辑523将从地址生成器522接收的存储器访问请求分类到不同的命令子队列525、527、700、702中,使得命令子队列525仅包括写请求,并且命令子队列700仅接收读请求。类似地,命令队列条目逻辑523将存储器访问请求分类,使得仅写请求存储在命令子队列527中并且仅读请求存储在命令子队列702中。在该示例中,仲裁器538和539被配置为是评估与写请求相关的时序信息以及如上所述的其他所需信息的相同类型的仲裁器,而仲裁器714和716被配置为出于读请求的目的进行仲裁并考虑正确处理存储器访问读请求所必需的时序信息。
图8示出了另一示例性存储器通道控制器配置,其中对于每个子通道,采用读队列和写队列,使得每个命令子队列800、802存储读存储器访问请求和写存储器访问请求两者,而不是仅存储读存储器访问请求或写存储器访问请求,并且命令子队列804和806中的每一者还存储读存储器访问请求和写存储器访问请求两者。
图9示出了另一示例性具体实施,其包括专用于存储器的每个子通道的图7所示结构的多个实例。因此,在该示例中,每个子通道都存在专用的读命令子队列和写命令子队列。例如,对于子通道0,存在多个写命令子队列900和902,并且对于子通道1,存在多个写命令子队列904和906。例如,对于子通道0,存在专用的多个读命令子队列908和910,并且对于子通道1,存在多个写命令子队列912和914。这些命令子队列中的每个命令子队列具有对应的专用仲裁器,如图所示。
图10示出了用于控制具有多个存储器通道的存储器***的示例性方法1000。在某些具体实施中,该方法由图5至图9中所示的结构执行。在某些具体实施中,该方法包括:诸如由地址生成器522接收存储器访问请求1002;以及例如由地址生成器522对存储器访问请求中的每个存储器访问请求进行解码。在其中采用DDRx存储器的具体实施中,该方法包括将地址解码到存储器***中的存储器设备的多个子通道的存储体、存储列和子通道中,如框1004所示。该方法包括将解码的地址存储在多个命令子队列中的一个命令子队列上。在其中使用DDRx存储器的具体实施中,该方法包括诸如由命令队列条目逻辑523将包括存储体、存储列和子通道的存储器访问请求存储1006在至少第一命令子队列或至少第二命令子队列中。在使用不使用存储体和存储列指定的存储器的情况下,不需要执行操作1004和1006。在某些具体实施中,存储包括将存储器访问请求分类到不同的命令子队列中,使得第一命令子队列仅包括读请求,并且第二命令子队列仅包括写请求,然而,在其他具体实施中使用其他分类标准。在一些具体实施中,存储包括在命令子队列之间传送条目。该方法包括:诸如由仲裁器538使用预定标准从第一命令子队列中的多个存储器访问请求中进行选择1008,以提供所选择的来自第一命令子队列中的第一存储器访问请求;以及诸如由仲裁器539使用预定标准从第二命令子队列中的多个存储器访问请求中进行选择1010,以提供所选择的来自第二命令子队列的第二存储器访问请求。该方法包括:诸如由选择器541从所提供的来自第一命令子队列的第一存储器访问请求和来自第二命令子队列的第二存储器访问请求中选择1012优选的存储器访问请求;以及根据子通道将如此选择的优选选择的存储器访问请求分派1014到多个存储器通道中的一个存储器通道。应当理解,本文提供的方法仅是一个示例,并且可组合这些操作,可改变它们的顺序,并且可根据期望的操作进行其他变化。
一个或多个具体实施利用比常规命令队列更小的专用命令子队列和对应的仲裁器。例如,在本文的一些具体实施中,采用多个32条目命令队列和专用于服务于较小命令队列中的每一者的对应仲裁器,而非较大64条目命令队列。以快得多的方式(例如,使用更高的时钟频率)做出仲裁和时序决定,并提高存储器控制器的操作速度,并提高包含存储器控制器的集成电路的数据吞吐量。
图5的存储器控制器500可用硬件和软件的各种组合来实现。该硬件电路可包括优先级编码器、有限状态机、可编程逻辑阵列(PLA)等。在一些实施方案中,其他功能块可由数据处理器在软件的控制下执行。软件部件中的一些软件部件可存储在计算机可读存储介质中以供至少一个处理器执行,并且可对应于存储在非暂态计算机存储器或计算机可读存储介质中的指令。在各种实施方案中,非暂态计算机可读存储介质包括磁盘或光盘存储设备、诸如闪存存储器的固态存储设备、或其他一个或多个非易失性存储器设备。存储在非暂态计算机可读存储介质上的计算机可读指令可以是源代码、汇编语言代码、目标代码、或者被一个或多个处理器解释或可由一个或多个处理器执行的其他指令格式。
图5的存储器控制器500或其任何部分可由呈数据库或可由程序读取并且直接或间接地用于制造集成电路的其他数据结构形式的计算机可访问数据结构描述或表示。例如,该数据结构可以是高级设计语言(HDL)诸如Verilog或VHDL中的硬件功能性的行为级描述或寄存器传送级(RTL)描述。描述可由合成工具读取,合成工具可合成描述以产生包括来自合成馆的门列表的网表。网表包括门集,门集也表示包括集成电路的硬件的功能性。然后可以放置和路由网表以产生描述待应用于掩模的几何形状的数据集。然后可以在各种半导体制造步骤中使用掩模以产生集成电路。另选地,计算机可访问存储介质上的数据库可以是网表(具有或不具有合成库)或数据集(根据需要)或图形数据***(GDS)II数据。
虽然已描述了特定实施方案,但是对这些实施方案的各种修改对于本领域技术人员将是显而易见的。例如,存储器控制器500可接口连接到除DDRx存储器之外的其他类型的存储器,诸如高带宽存储器(HBM)、RAMbus DRAM(RDRAM)等以及不同类型的DIMM。存储器控制器可集成在网络控制器、硬盘驱动器控制器和其他设备中。虽然所示实施方案描述了在DDR存储器中有用的存储器寻址和控制信号,但它们将根据所使用的存储器类型而变化。此外,图6的存储器访问控制可扩展到多于两个虚拟通道。
因此,所附权利要求书旨在覆盖所公开实施方案的落入所公开实施方案的范围内的所有修改。
尽管上述特征和元素在特定组合中进行了描述,但每个特征或元素可以在没有其他特征和元素的情况下单独使用,或者在有或没有其他特征或元素的各种组合中使用。本文在一些具体实施中描述的设备通过使用结合在非暂态计算机可读存储介质中的计算机程序、软件或固件来制造,以供通用计算机或处理器执行。计算机可读存储介质的示例包括只读存储器(ROM)、随机存取存储器(RAM)、寄存器、高速缓存存储器、半导体存储器设备、磁性介质(例如内部硬盘和可移动磁盘)、磁光介质和光学介质(例如CD-ROM磁盘)以及数字多功能磁盘(DVD)。
在前面对各种实施方案的详细描述中,已参考构成其一部分的附图,并且在附图中以示例的方式示出了可在其中实践本发明的特定优选实施方案。足够详细地描述了这些实施方案以使本领域的技术人员能够实践本发明,并且应当理解,可利用其他实施方案,并且可在不脱离本发明的范围的情况下做出逻辑、机械和电气改变。为了避免使本领域技术人员能够实践本发明所不必要的细节,该描述可省略本领域技术人员已知的某些信息。此外,本领域的技术人员可很容易构造结合本公开的教导的许多其他变化的实施方案。因此,本发明并非旨在限于本文所阐述的具体形式,相反,本发明旨在涵盖可合理地包括在本发明的范围内的此类替代方案、修改方案和等效方案。因此,前面的详细描述不应被视为限制性的,并且本发明的范围仅由所附权利要求限定。以上对实施方案和其中描述的示例的详细描述仅出于说明和描述的目的而非限制的目的给出。例如,所描述的操作以任何合适的顺序或方式完成。因此,可以预期,本发明涵盖落入上文公开和本文要求保护的基本基础原理范围内的任何和所有修改、变化或等效物。
以上详细描述和其中描述的示例仅出于说明和描述的目的而非限制的目的给出。
Claims (20)
1.一种用于控制具有多个存储器通道的存储器***的方法,包括:
选择第一命令子队列中的存储器访问请求;
选择第二命令子队列中的存储器访问请求;
从所述第一存储器访问请求和所述第二存储器访问请求中选择存储器访问请求;以及
将所选择的存储器访问请求分派到存储器通道。
2.根据权利要求1所述的方法,包括将存储器访问请求分类到不同的命令子队列中,使得所述第一命令子队列仅包括读请求,并且所述第二命令子队列仅包括写请求。
3.根据权利要求1所述的方法,包括:
将所接收的存储器访问请求中的每个存储器访问请求解码到所述存储器***中的存储器设备的多个子通道中的存储体、存储列和子通道中;以及
将包括所述存储体、所述存储列和所述子通道的所述存储器访问请求存储在所述第一命令子队列或所述至少第二命令子队列中的至少一者中。
4.根据权利要求1所述的方法,包括在所述第一命令子队列和所述第二命令子队列之间传送存储器访问请求,并且其中在所述第一命令子队列和所述第二命令子队列的每一者中选择所述存储器访问请求包括使用预定区段标准。
5.根据权利要求1所述的方法,其中选择优选存储器访问请求包括从所提供的来自所述第一命令子队列的第一存储器访问请求和来自所述第二命令子队列的第二存储器访问请求中选择最早的存储器访问请求。
6.一种具有存储器通道控制器的存储器控制器,所述存储器通道控制器包括:
第一命令子队列和耦接到所述第一命令子队列以从所述第一命令子队列选择存储器访问命令的第一仲裁器,
第二命令子队列和耦接到所述第二命令子队列以从所述第二命令子队列选择存储器访问命令的第二仲裁器,
命令队列条目逻辑,所述命令队列条目逻辑操作以将存储器访问请求放置到所述第一命令子队列和所述第二命令子队列中;
第一选择器,所述第一选择器操作以从所述第一命令子队列或所述第二命令子队列中的任一者选择存储器请求并将所选择的存储器访问请求发送到子通道。
7.根据权利要求6所述的存储器控制器,其中所述命令队列条目逻辑被配置为将存储器访问请求分类到不同的命令子队列中,使得所述第一命令子队列仅包括读请求,并且所述第二命令子队列仅包括写请求。
8.根据权利要求6所述的存储器控制器,其中所述命令队列条目逻辑被配置为将来自所述第一命令子队列的条目传送到所述第二命令子队列,并且其中所述命令队列条目逻辑操作地耦接到所述第一命令子队列和所述第二命令子队列,并且其中所述第一选择器操作地耦接到所述第一仲裁器和所述第二仲裁器两者。
9.根据权利要求6所述的存储器控制器,包括在所述第一仲裁器和所述第二仲裁器之间共享的共享时序逻辑和共享页表。
10.根据权利要求6所述的存储器控制逻辑,包括:
用于存储存储器访问请求的第三命令子队列和耦接到所述第三命令子队列以根据预定标准从所述第三命令子队列选择存储器访问命令的对应的第三仲裁器,
用于存储存储器访问请求的第四命令子队列和耦接到所述第四命令子队列以根据预定标准从所述第四命令子队列选择存储器访问命令的对应的第四仲裁器,
第二选择器,所述第二选择器耦接到所述第三仲裁器和所述第四仲裁器两者,所述第二选择器操作以从所述第三命令子队列或所述第四命令子队列中的任一者选择存储器请求;和
第三选择器,所述第三选择器操作地耦接到所述第一选择器和所述第二选择器,并且操作以从所述第一选择器或所述第二选择器中的任一者选择存储器请求,并将所选择的存储器访问请求发送到多个子通道中的至少一个子通道。
11.根据权利要求10所述的存储器控制器,包括命令队列条目逻辑,所述命令队列条目逻辑操作地耦接到所述第一命令子队列、所述第二命令子队列、所述第三命令子队列和所述第四命令子队列,并且操作以将存储器访问请求分类到不同的命令队列中,使得所述第一命令子队列和所述第二命令队列仅包括读请求,并且所述第三命令子队列和所述第四命令队列仅包括写请求。
12.根据权利要求6所述的存储器控制器,包括:
用于存储存储器访问请求的第三命令子队列和耦接到所述第三命令子队列以根据预定标准从所述第三命令子队列选择存储器访问命令的对应的第三仲裁器,
用于存储存储器访问请求的至少第四命令子队列和耦接到所述第四命令子队列以根据预定标准从所述第四命令子队列选择存储器访问命令的对应的第四仲裁器,和
第二选择器,所述第二选择器耦接到所述第三仲裁器和所述第四仲裁器两者,所述第二选择器操作以从所述第三命令子队列或所述第四命令子队列中的任一者选择存储器请求并将所选择的存储器访问请求发送到对应的子通道,
将所接收的存储器访问请求中的每个存储器访问请求解码到所述存储器***中的存储器设备的多个子通道中的存储体、存储列和子通道中;以及
将包括所述存储体、所述存储列和所述子通道的所述存储器访问请求存储在所述第一命令子队列或所述至少第二命令子队列中的至少一者中。
13.一种数据处理***,包括:
多个存储器访问代理,所述多个存储器访问代理用于提供存储器访问请求;
多个存储器通道;
存储器控制器,所述存储器控制器具有存储器通道控制器,所述存储器通道控制器包括:
用于存储存储器访问请求的第一命令子队列和操作地耦接到所述第一命令子队列以从所述第一命令子队列选择存储器访问命令的对应的第一仲裁器,
用于存储存储器访问请求的第二命令子队列和操作地耦接到所述第二命令子队列以从所述第二命令子队列选择存储器访问命令的对应的第二仲裁器,
命令队列条目逻辑,所述命令队列条目逻辑操作以将存储器访问请求放置到所述第一命令子队列和所述第二命令子队列中;和
第一选择器,所述第一选择器被配置为从所述第一命令子队列或所述第二命令子队列中的任一者选择存储器请求,并将所选择的存储器访问请求发送到子通道。
14.根据权利要求13所述的数据处理***,其中所述命令队列条目逻辑被配置为将存储器访问请求分类到不同的命令子队列中,使得所述第一命令子队列仅包括读请求,并且所述第二命令子队列仅包括写请求。
15.根据权利要求13所述的数据处理***,其中所述命令队列条目逻辑被配置为将来自所述第一命令子队列的条目传送到所述第二命令子队列。
16.根据权利要求13所述的数据处理***,包括在所述第一仲裁器和所述第二仲裁器之间共享的共享时序逻辑和共享页表。
17.根据权利要求13所述的数据处理***,包括:
用于存储存储器访问请求的第三命令子队列和耦接到所述第三命令子队列以根据预定标准从所述第三命令子队列选择存储器访问命令的对应的第三仲裁器,
用于存储存储器访问请求的第四命令子队列和耦接到所述第四命令子队列以根据预定标准从所述第四命令子队列选择存储器访问命令的对应的第四仲裁器,
第二选择器,所述第二选择器耦接到所述第三仲裁器和所述第四仲裁器两者,所述第二选择器操作以从所述第三命令子队列或所述第四命令子队列中的任一者选择存储器请求;和
第三选择器,所述第三选择器操作地耦接到所述第一选择器和所述第二选择器,并且操作以从所述第一选择器或所述第二选择器中的任一者选择存储器请求,并将所选择的存储器访问请求发送到多个子通道中的至少一个子通道。
18.根据权利要求17所述的数据处理***,包括命令队列条目逻辑,所述命令队列条目逻辑操作地耦接到所述第一命令子队列、所述第二命令子队列、所述第三命令子队列和所述第四命令子队列,并且操作以将存储器访问请求分类到不同的命令队列中,使得所述第一命令子队列和所述第二命令队列仅包括读请求,并且所述第三命令子队列和所述第四命令队列仅包括写请求。
19.根据权利要求13所述的数据处理***,包括:
用于存储存储器访问请求的第三命令子队列和耦接到所述第三命令子队列以根据预定标准从所述第三命令子队列选择存储器访问命令的对应的第三仲裁器,
用于存储存储器访问请求的第四命令子队列和耦接到所述第四命令子队列以根据预定标准从所述第四命令子队列选择存储器访问命令的对应的第四仲裁器,和
第二选择器,所述第二选择器耦接到所述第三仲裁器和所述第四仲裁器两者,所述第二选择器操作以从所述第三命令子队列或所述第四命令子队列中的任一者选择存储器请求并将所选择的存储器访问请求发送到对应的子通道,
20.根据权利要求13所述的数据处理***,包括地址生成器,所述地址生成器操作以将所接收的存储器访问请求中的每个存储器访问请求解码到所述存储器***中的存储器设备的多个子通道的存储体、存储列和子通道中;并且
其中所述命令队列条目逻辑操作以将包括所述存储体、所述存储列和所述子通道的所述存储器访问请求存储在所述第一命令子队列或所述至少第二命令子队列中的至少一者中。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US202063069352P | 2020-08-24 | 2020-08-24 | |
US63/069,352 | 2020-08-24 | ||
US17/085,304 US11494316B2 (en) | 2020-08-24 | 2020-10-30 | Memory controller with a plurality of command sub-queues and corresponding arbiters |
US17/085,304 | 2020-10-30 | ||
PCT/US2021/047274 WO2022046720A1 (en) | 2020-08-24 | 2021-08-24 | Memory controller with a plurality of command sub-queues and corresponding arbiters |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116324744A true CN116324744A (zh) | 2023-06-23 |
Family
ID=80269599
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202180065325.6A Pending CN116324744A (zh) | 2020-08-24 | 2021-08-24 | 具有多个命令子队列和对应的仲裁器的存储器控制器 |
Country Status (6)
Country | Link |
---|---|
US (2) | US11494316B2 (zh) |
EP (1) | EP4200713A1 (zh) |
JP (1) | JP2023539737A (zh) |
KR (1) | KR20230054844A (zh) |
CN (1) | CN116324744A (zh) |
WO (1) | WO2022046720A1 (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116521097A (zh) * | 2023-07-03 | 2023-08-01 | 摩尔线程智能科技(北京)有限责任公司 | 存储器访问电路及存储器访问方法、集成电路和电子设备 |
CN116578245A (zh) * | 2023-07-03 | 2023-08-11 | 摩尔线程智能科技(北京)有限责任公司 | 存储器访问电路及存储器访问方法、集成电路和电子设备 |
CN116860185A (zh) * | 2023-09-05 | 2023-10-10 | 深圳比特微电子科技有限公司 | Sram阵列的数据访问装置、***、方法、设备、芯片和介质 |
CN117891758A (zh) * | 2024-03-12 | 2024-04-16 | 成都登临科技有限公司 | 一种基于仲裁的存储访问***、处理器及计算设备 |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11494316B2 (en) | 2020-08-24 | 2022-11-08 | Advanced Micro Devices, Inc. | Memory controller with a plurality of command sub-queues and corresponding arbiters |
US20230409239A1 (en) * | 2022-06-21 | 2023-12-21 | Micron Technology, Inc. | Efficient command fetching in a memory sub-system |
US12039339B1 (en) * | 2022-06-28 | 2024-07-16 | Amazon Technologies, Inc. | System configuration control through locking of control registers |
US20240005971A1 (en) * | 2022-06-29 | 2024-01-04 | Advanced Micro Devices, Inc. | Channel and sub-channel throttling for memory controllers |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6092158A (en) * | 1997-06-13 | 2000-07-18 | Intel Corporation | Method and apparatus for arbitrating between command streams |
US5903776A (en) | 1997-09-05 | 1999-05-11 | Micron Electronics, Inc. | Multiple priority accelerated graphics port (AGP) request queue |
US6938133B2 (en) * | 2001-09-28 | 2005-08-30 | Hewlett-Packard Development Company, L.P. | Memory latency and bandwidth optimizations |
US7366854B2 (en) * | 2003-05-08 | 2008-04-29 | Hewlett-Packard Development Company, L.P. | Systems and methods for scheduling memory requests utilizing multi-level arbitration |
US7127574B2 (en) * | 2003-10-22 | 2006-10-24 | Intel Corporatioon | Method and apparatus for out of order memory scheduling |
JP5908416B2 (ja) * | 2013-01-23 | 2016-04-26 | 株式会社東芝 | インターフェース制御装置、データ記憶装置及びインターフェース制御方法 |
JP6142783B2 (ja) * | 2013-11-25 | 2017-06-07 | 富士通株式会社 | メモリコントローラ,情報処理装置及びメモリコントローラの制御方法 |
EP3270294B1 (en) | 2016-07-15 | 2018-09-26 | 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 |
US11422707B2 (en) * | 2017-12-21 | 2022-08-23 | Advanced Micro Devices, Inc. | Scheduling memory requests for a ganged memory device |
JP2020016954A (ja) * | 2018-07-23 | 2020-01-30 | キオクシア株式会社 | メモリシステム |
US10649922B2 (en) * | 2018-08-06 | 2020-05-12 | Apple Inc. | Systems and methods for scheduling different types of memory requests with varying data sizes |
US11494316B2 (en) | 2020-08-24 | 2022-11-08 | Advanced Micro Devices, Inc. | Memory controller with a plurality of command sub-queues and corresponding arbiters |
-
2020
- 2020-10-30 US US17/085,304 patent/US11494316B2/en active Active
-
2021
- 2021-08-24 KR KR1020237008725A patent/KR20230054844A/ko unknown
- 2021-08-24 EP EP21773924.2A patent/EP4200713A1/en active Pending
- 2021-08-24 WO PCT/US2021/047274 patent/WO2022046720A1/en active Application Filing
- 2021-08-24 CN CN202180065325.6A patent/CN116324744A/zh active Pending
- 2021-08-24 JP JP2023513429A patent/JP2023539737A/ja active Pending
-
2022
- 2022-10-07 US US17/961,613 patent/US12038856B2/en active Active
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116521097A (zh) * | 2023-07-03 | 2023-08-01 | 摩尔线程智能科技(北京)有限责任公司 | 存储器访问电路及存储器访问方法、集成电路和电子设备 |
CN116578245A (zh) * | 2023-07-03 | 2023-08-11 | 摩尔线程智能科技(北京)有限责任公司 | 存储器访问电路及存储器访问方法、集成电路和电子设备 |
CN116521097B (zh) * | 2023-07-03 | 2023-09-08 | 摩尔线程智能科技(北京)有限责任公司 | 存储器访问电路及存储器访问方法、集成电路和电子设备 |
CN116578245B (zh) * | 2023-07-03 | 2023-11-17 | 摩尔线程智能科技(北京)有限责任公司 | 存储器访问电路及存储器访问方法、集成电路和电子设备 |
CN116860185A (zh) * | 2023-09-05 | 2023-10-10 | 深圳比特微电子科技有限公司 | Sram阵列的数据访问装置、***、方法、设备、芯片和介质 |
CN116860185B (zh) * | 2023-09-05 | 2024-06-07 | 深圳比特微电子科技有限公司 | Sram阵列的数据访问装置、***、方法、设备、芯片和介质 |
CN117891758A (zh) * | 2024-03-12 | 2024-04-16 | 成都登临科技有限公司 | 一种基于仲裁的存储访问***、处理器及计算设备 |
CN117891758B (zh) * | 2024-03-12 | 2024-05-17 | 成都登临科技有限公司 | 一种基于仲裁的存储访问***、处理器及计算设备 |
Also Published As
Publication number | Publication date |
---|---|
EP4200713A1 (en) | 2023-06-28 |
US20230031595A1 (en) | 2023-02-02 |
US11494316B2 (en) | 2022-11-08 |
US12038856B2 (en) | 2024-07-16 |
KR20230054844A (ko) | 2023-04-25 |
WO2022046720A1 (en) | 2022-03-03 |
JP2023539737A (ja) | 2023-09-19 |
US20220058141A1 (en) | 2022-02-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109564556B (zh) | 具有条纹和读取/写入事务管理的存储器控制器仲裁器 | |
US11221772B2 (en) | Self refresh state machine mop array | |
CN109690508B (zh) | 带虚拟控制器模式的存储器控制器 | |
US12038856B2 (en) | Memory controller with a plurality of command sub-queues and corresponding arbiters | |
CN107924375B (zh) | 用于高速存储器接口的命令仲裁 | |
EP3436958B1 (en) | Low power memory throttling | |
CN114902198B (zh) | 用于异构存储器***的信令 | |
EP3270294B1 (en) | Command arbitration for high-speed memory interfaces | |
JP2024512623A (ja) | マルチキューメモリコントローラのためのクレジット方式 | |
EP3270295A1 (en) | Memory controller with virtual controller mode |
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 |