CN117099076A - Dram命令拖尾效率管理 - Google Patents
Dram命令拖尾效率管理 Download PDFInfo
- Publication number
- CN117099076A CN117099076A CN202280026514.7A CN202280026514A CN117099076A CN 117099076 A CN117099076 A CN 117099076A CN 202280026514 A CN202280026514 A CN 202280026514A CN 117099076 A CN117099076 A CN 117099076A
- Authority
- CN
- China
- Prior art keywords
- command
- cas
- memory
- arbiter
- tail
- 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
- 230000015654 memory Effects 0.000 claims abstract description 198
- 238000000034 method Methods 0.000 claims abstract description 68
- 238000012545 processing Methods 0.000 claims description 29
- 239000004744 fabric Substances 0.000 claims description 18
- 230000008878 coupling Effects 0.000 claims description 4
- 238000010168 coupling process Methods 0.000 claims description 4
- 238000005859 coupling reaction Methods 0.000 claims description 4
- 238000005259 measurement Methods 0.000 claims description 4
- 230000008569 process Effects 0.000 abstract description 51
- 238000012546 transfer Methods 0.000 abstract description 3
- 238000007726 management method Methods 0.000 description 16
- 238000012544 monitoring process Methods 0.000 description 12
- 230000002093 peripheral effect Effects 0.000 description 7
- 238000012797 qualification Methods 0.000 description 7
- 230000004044 response Effects 0.000 description 7
- 230000004913 activation Effects 0.000 description 6
- 238000010586 diagram Methods 0.000 description 6
- 239000003795 chemical substances by application Substances 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 230000003044 adaptive effect Effects 0.000 description 3
- 230000008901 benefit Effects 0.000 description 3
- 230000015572 biosynthetic process Effects 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 238000003786 synthesis reaction Methods 0.000 description 3
- 230000007306 turnover Effects 0.000 description 3
- 230000001133 acceleration Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 238000012937 correction Methods 0.000 description 2
- 230000009977 dual effect Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 101100498818 Arabidopsis thaliana DDR4 gene Proteins 0.000 description 1
- 102100035964 Gastrokine-2 Human genes 0.000 description 1
- 101001075215 Homo sapiens Gastrokine-2 Proteins 0.000 description 1
- 101000711846 Homo sapiens Transcription factor SOX-9 Proteins 0.000 description 1
- 101100232371 Hordeum vulgare IAT3 gene Proteins 0.000 description 1
- 102100034204 Transcription factor SOX-9 Human genes 0.000 description 1
- 230000003213 activating effect Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000003542 behavioural effect Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 239000003990 capacitor Substances 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 239000012634 fragment Substances 0.000 description 1
- 238000010438 heat treatment Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000002156 mixing Methods 0.000 description 1
- 238000012913 prioritisation Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000012163 sequencing technique Methods 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 238000012549 training Methods 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- 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/0284—Multiple user address space allocation, e.g. using different base addresses
-
- 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
- G06F13/161—Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement
- G06F13/1626—Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement by reordering requests
-
- 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
- G06F13/1642—Handling requests for interconnection or transfer for access to memory bus based on arbitration with request queuing
-
- 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/1689—Synchronisation and timing concerns
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
-
- 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/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0877—Cache access modes
- G06F12/0879—Burst mode
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
- G06F2212/1024—Latency reduction
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C7/00—Arrangements for writing information into, or reading information out from, a digital store
- G11C7/10—Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
- G11C7/1015—Read-write modes for single port memories, i.e. having either a random port or a serial port
- G11C7/1042—Read-write modes for single port memories, i.e. having either a random port or a serial port using interleaving techniques, i.e. read-write of one part of the memory while preparing another part
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Dram (AREA)
- Bus Control (AREA)
- Memory System (AREA)
Abstract
本发明提供了一种包括命令队列和仲裁器的存储器控制器,该仲裁器用于从命令队列中选择条目以传输到DRAM。该仲裁器处理连续读取命令的拖尾和连续写入命令的拖尾。该仲裁器基于可用于由该仲裁器选择的指定类型的多个命令,处理至少最小突发长度的拖尾。在该最小突发长度之后,该仲裁器基于指示突发内效率的第一组一个或多个条件决定开始不同类型的新的命令拖尾。
Description
背景技术
计算机***通常使用廉价且高密度的动态随机存取存储器(DRAM)芯片作为主存储器。现今销售的大多数DRAM芯片与由联合电子设备工程委员会(JEDEC)发布的各种双倍数据速率(DDR)DRAM标准兼容。DDR DRAM使用具有高速存取电路的常规DRAM存储器单元阵列以实现高传送率并且提高存储器总线的利用率。
典型的DDR存储器控制器维持队列以存储待决的读取和写入请求,以允许存储器控制器无序地拾取这些待决的请求且由此提高效率。例如,存储器控制器可以从队列无序地检索对给定存储列中的同一行的多个存储器访问请求(称为“页命中”),并且将该多个存储器访问请求连续地发出到存储器***以避免重复地预充电当前行和激活另一行的开销。但是,在利用现代存储器技术(诸如DDR5)提供的总线带宽的同时,从深度队列中扫描和拾取访问变得难以使用已知的存储器控制器来实现。存储器控制器可以采用诸如产生读取命令或写入命令的拖尾的技术来提高总线效率。然而,此类技术伴随着性能折衷,诸如因延迟并非当前拖尾的一部分的命令而引起的等待时间问题,以及与将命令总线从读取拖尾“周转”到写入拖尾(且反之亦然)相关联的附加性能开销。
附图说明
图1以框图形式示出了现有技术中已知的加速处理单元(APU)和存储器***;
图2以框图形式示出了根据一些实施方案的适合于在类似图1的APU的APU中使用的存储器控制器;
图3示出了根据一些实施方案的图2的存储器控制器的一部分的框图;
图4是根据一些实施方案的用于管理拖尾效率的过程的流程图;以及
图5是根据一些附加实施方案的用于管理拖尾效率的另一过程的流程图。
在以下描述中,在不同的附图中使用相同的附图标号指示类似或相同的项。除非另有说明,否则字词“耦接”及其相关联的动词形式包括直接连接和通过本领域已知的方式的间接电连接两者,并且除非另有说明,否则对直接连接的任何描述也意味着使用合适形式的间接电连接的另选实施方案。
具体实施方式
一种存储器控制器包括命令队列,该命令队列具有用于接收存储器访问请求的第一输入,以及存储器接口队列,该存储器接口队列具有用于耦接到适于连接到至少一个动态随机存取存储器(DRAM)的存储器通道的输出。一个仲裁器连接到命令队列以用于从命令队列中选择条目并将这些条目放置在存储器接口队列中,从而使这些条目通过存储器通道被传输。该仲裁器可操作以通过存储器通道处理连续读取命令的拖尾和连续写入命令的拖尾。该仲裁器可操作以基于可用于由该仲裁器选择的指定类型的多个命令处理至少最小突发长度的拖尾。在该最小突发长度之后,该仲裁器可操作以基于指示突发内效率的第一组一个或多个条件决定开始不同类型的新的命令拖尾。
方法包括引起待通过存储器通道处理的连续读取命令的拖尾和连续写入命令的拖尾。该方法包括该仲裁器基于可用于由该仲裁器选择的指定类型的多个命令处理至少最小突发长度的拖尾。在该最小突发长度之后,该方法包括基于指示突发内效率的第一组一个或多个条件决定开始不同类型的新的命令拖尾。
一种数据处理***包括中央处理单元、连接到该中央处理单元的数据织构、和连接到该数据织构以用于履行来自该中央处理单元的存储器请求的存储器控制器。该存储器控制器包括:命令队列,该命令队列具有用于接收存储器访问请求的第一输入;以及存储器接口队列,该存储器接口队列具有用于耦接到存储器通道的输出,该存储器通道适于连接到至少一个DRAM。一个仲裁器连接到命令队列以用于从命令队列中选择条目并将这些条目放置在存储器接口队列中,从而使这些条目通过存储器通道被传输。该仲裁器可操作以通过存储器通道处理连续读取命令的拖尾和连续写入命令的拖尾。该仲裁器可操作以基于可用于由该仲裁器选择的指定类型的多个命令处理至少最小突发长度的拖尾。在该最小突发长度之后,该仲裁器可操作以基于指示突发内效率的第一组一个或多个条件决定开始不同类型的新的命令拖尾。
图1以框图形式示出了现有技术中已知的加速处理单元(APU)100和存储器***130。APU 100是适合于用作主机数据处理***中的处理器的集成电路,并且通常包括中央处理单元(CPU)核心复合体110、图形核心120、一组显示引擎122、存储器管理集线器140、数据织构125、一组***控制器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双向连接到公共存储器管理集线器140以用于统一转换为存储器***130中的适当地址,并且存储器管理集线器140双向连接到数据织构125以用于生成此类存储器访问并且接收从存储器***返回的读取数据。
数据织构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双向连接至PHY 152,并且符合DFI规范。功率引擎149通过SMN总线双向连接到SMU180,通过APB连接到PHY 151和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中使用的存储器控制器200。存储器控制器200通常包括存储器通道控制器210和功率控制器250。存储器通道控制器210通常包括接口212、存储器接口队列214、命令队列220、地址生成器222、内容可寻址存储器(CAM)224、包括重放队列230的重放控制逻辑231、刷新控制逻辑块232、定时块234、页表236、仲裁器238、纠错码(ECC)检查电路242、ECC生成块244、数据缓冲器246和刷新逻辑247。
接口212具有通过外部总线到数据织构125的第一双向连接,并且具有输出。在存储器控制器200中,该外部总线与由ARM Holdings,PLC of Cambridge,England规定的高级可扩展接口版本四(称为AXI4)兼容,但在其他实施方案中可以是其他类型的接口。接口212将存储器访问请求从称为FCLK(或MEMCLK)域的第一时钟域转换到存储器控制器200内部的称为UCLK域的第二时钟域。类似地,存储器接口队列214提供从UCLK域到与DFI接口相关联的DFICLK域的存储器访问。
地址生成器222解码通过AXI4总线从数据织构125接收的存储器访问请求的地址。存储器访问请求包括物理地址空间中以归一化格式表示的访问地址。地址生成器222将归一化地址转换成可用于对存储器***130中的实际存储器设备进行寻址以及高效地调度相关访问的格式。该格式包括将存储器访问请求与特定存储列、行地址、列地址、存储体地址和存储体组相关联的区域标识。在启动时,***BIOS查询存储器***130中的存储器设备以确定它们的大小和配置,并且对与地址生成器222相关联的一组配置寄存器进行编程。地址生成器222使用存储在配置寄存器中的配置来将归一化地址转换成适当格式。命令队列220是从APU 100中的存储器访问代理诸如CPU核心112和114以及图形核心120接收的存储器访问请求的队列。命令队列220存储由地址生成器222解码的地址字段以及允许仲裁器238高效地选择存储器访问的其他地址信息,包括访问类型和服务质量(QoS)标识。CAM 224包括实施排序规则诸如写后写(WAW)以及写后读(RAW)排序规则的信息。
纠错码(ECC)生成块244确定要发送到存储器的写入数据的ECC。ECC检查电路242针对传入ECC检查所接收的ECC。
重放队列230是用于存储由仲裁器238选取的所选择的存储器访问的临时队列,所选择的存储器访问正在等待响应,诸如地址和命令奇偶校验响应。重放控制逻辑231访问ECC检查电路242以确定所返回的ECC是正确的还是指示错误。重放控制逻辑231发起并控制重放序列,在该重放序列中,在这些周期中的一个周期出现奇偶校验错误或ECC错误的情况下重放访问。所重放的命令放置在存储器接口队列214中。
刷新控制逻辑232包括用于各种下电、刷新和终端电阻(ZQ)校准循环的状态机,这些校准循环与从存储器访问代理接收的正常读取和写入存储器访问请求分开生成。例如,如果存储器存储列处于预充电下电,则必须周期性地唤醒该存储器存储列以运行刷新循环。刷新控制逻辑232周期性地且响应于指定条件而生成刷新命令,以防止由于电荷从DRAM芯片中的存储器单元的存储电容器泄漏而引起的数据错误。刷新控制逻辑232包括激活计数器248,该激活计数器在该实施方案中具有用于每一存储器区域的计数器,该计数器对通过存储器通道发送到存储器区域的激活命令的滚动数目进行计数。存储区域在一些实施方案中是存储器存储体,并且在其他实施方案中是存储器子存储体,如下文进一步讨论。此外,刷新控制逻辑232周期性地校准ZQ以防止由于***的热变化而导致的片上终端电阻的失配。
仲裁器238双向连接到命令队列220并且是存储器通道控制器210的心脏,并且通过智能调度访问来提高效率以改进存储器总线的使用。仲裁器238使用定时块234通过基于DRAM定时参数确定命令队列220中的某些访问是否有资格获得发出来强制正确的定时关系。例如,每个DRAM在激活命令之间具有最小规定时间,称为“tRC”。定时块234维持一组计数器,该组计数器基于该定时参数和JEDEC规范中规定的其他定时参数来确定合格性,并且该定时块双向连接至重放队列230。页表236维持关于仲裁器238的存储器通道的每个存储体和存储列中的活动页面的状态信息,并且双向连接至重放队列230。
响应于从接口212接收到写入存储器访问请求,ECC生成块244根据写入数据计算ECC。数据缓冲器246存储用于所接收的存储器访问请求的写入数据和ECC。当仲裁器238选取对应写入访问以用于调度到存储器通道时,数据缓冲器将组合写入数据/ECC输出到存储器接口队列214。
功率控制器250通常包括到高级可扩展接口版本一(AXI)的接口252、高级***总线(APB)接口254和功率引擎260。接口252具有到SMN的第一双向连接,该第一双向连接包括用于接收图2中单独示出的标记为“EVENT_n”的事件信号的输入,以及输出。APB接口254具有连接到接口252的输出的输入,以及用于通过APB连接到PHY的输出。功率引擎260具有连接到接口252的输出的输入,以及连接到存储器接口队列214的输入的输出。功率引擎260包括一组配置寄存器262、微控制器(μC)264、自刷新控制器(SLFREF/PE)266和可靠读/写定时引擎(RRW/TE)268。配置寄存器262通过AXI总线编程,并且存储配置信息以控制存储器控制器200中各种块的操作。因此,配置寄存器262具有连接到这些块的输出,这些块在图2中未详细示出。SLFREF/PE 266是除了由刷新控制逻辑232自动生成刷新之外还允许手动生成刷新的引擎。可靠读/写定时引擎268向存储器或I/O设备提供连续存储器访问流,用于诸如DDR接口最大读取延迟(MRL)训练和回送测试等目的。
存储器通道控制器210包括允许其选取存储器访问以用于调度到相关联的存储器通道的电路***。为了做出期望的仲裁决定,地址生成器222将地址信息解码成预解码信息,预解码信息包括存储器***中的存储列、行地址、列地址、存储体地址和存储体组,并且命令队列220存储预解码信息。配置寄存器262存储配置信息以确定地址生成器222解码所接收的地址信息的方式。仲裁器238使用所解码的地址信息、由定时块234指示的定时资格信息以及由页表236指示的活动页面信息来高效地调度存储器访问,同时遵守诸如服务质量(QoS)要求等其他标准。例如,仲裁器238实现对访问打开页面的优先,以避免改变存储器页面所需的预充电和激活命令的开销,并且通过将对一个存储体的开销访问与对另一个存储体的读和写访问交错来隐藏对一个存储体的开销访问。特别是在正常操作期间,仲裁器238通常保持页面在不同的存储体中打开,直到需要对这些页面进行预充电,然后选择不同的页面。在一些实施方案中,仲裁器238至少基于相应命令的针对目标存储器区域的激活计数器248的相应值来确定命令选择的资格。
图3示出根据一些实施方案的图2的存储器控制器200的部分300的框图。部分300包括仲裁器238和与仲裁器238的操作相关联的一组控制电路360。仲裁器238包括一组子仲裁器305和最终仲裁器350。子仲裁器305包括子仲裁器310、子仲裁器320和子仲裁器330。子仲裁器310包括标记为“PH ARB”的页命中仲裁器312以及输出寄存器314。页命中仲裁器312具有连接到命令队列220的第一输入、第二输入和输出。寄存器314具有连接到页命中仲裁器312的输出的数据输入、用于接收UCLK信号的时钟输入和输出。子仲裁器320包括标记为“PC ARB”的页冲突仲裁器322以及输出寄存器324。页冲突仲裁器322具有连接到命令队列220的第一输入、第二输入和输出。寄存器324具有连接到页冲突仲裁器322的输出的数据输入、用于接收UCLK信号的时钟输入以及输出。子仲裁器330包括标记为“PM ARB”的页未命中仲裁器332以及输出寄存器334。页未命中仲裁器332具有连接到命令队列220的第一输入、第二输入和输出。寄存器334具有连接到页未命中仲裁器332的输出的数据输入、用于接收UCLK信号的时钟输入以及输出。最终仲裁器350具有连接到刷新控制逻辑232的输出的第一输入、来自页关闭预测器362的第二输入、连接到输出寄存器314的输出的第三输入、连接到输出寄存器324的输出的第四输入、连接到输出寄存器334的输出的第五输入、用于向队列214提供标记为“CMD1”的第一仲裁获胜者的第一输出、以及用于向队列214提供标记为“CMD2”的第二仲裁获胜者的第二输出。
控制电路360包括如先前关于图2所描述的定时块234和页表236、页关闭预测器362、当前模式寄存器302和交叉模式启用逻辑304。定时块234具有连接到交叉模式启用逻辑304的输出、连接到页命中仲裁器312、页冲突仲裁器322和页未命中仲裁器332的输入和输出。页表234具有连接到重放队列230的输出的输入、连接到重放队列230的输入的输出、连接到命令队列220的输入的输出、连接到定时块234的输入的输出和连接到页关闭预测器362的输入的输出。页关闭预测器362具有连接到页表236的一个输出的输入、连接到输出寄存器314的输出的输入以及连接到最终仲裁器350的第二输入的输出。交叉模式启用逻辑304具有连接到当前模式寄存器302的输入和连接到命令队列220的输入、以及连接到最终仲裁器350的输入和输出、以及连接到页命中仲裁器310、页冲突仲裁器320和页未命中仲裁器330的输入和输出。
在操作中,仲裁器238通过考虑当前模式(指示读取拖尾还是写入拖尾在进行中)、每个条目的页状态、每个存储器访问请求的优先级和这些请求之间的相关性而从命令队列220和刷新控制逻辑232选择存储器访问命令。优先级与从AXI4总线接收且存储在命令队列220中的请求的服务质量或QoS相关,但是可以基于存储器访问的类型和仲裁器238的动态操作来更改。仲裁器238包括三个子仲裁器,这三个子仲裁器并行操作以用于解决现有集成电路技术的处理和传输限制之间的失配。相应子仲裁的获胜者被呈现给最终仲裁器350。最终仲裁器350在这三个子仲裁获胜者之间进行选择以及选择来自刷新控制逻辑232的刷新操作,并且可以进一步将读取或写入命令修改为具有如由页关闭预测器362确定的自动预充电命令的读取或写入。
交叉模式启用逻辑304操作以引起存储器通道上读取命令的拖尾和写入命令的拖尾。在任一类型的命令的当前拖尾期间,交叉模式启用逻辑304监视存储器通道的数据总线效率的指示,如下文关于图4和图5进一步描述的。响应于数据总线效率的指示指示数据总线效率低于指定阈值,交叉模式启用逻辑304停止当前拖尾,开始另一类型的拖尾,并且改变当前模式寄存器302中的当前模式。
页命中仲裁器312、页冲突仲裁器322和页未命中仲裁器332中的每一者都具有连接到定时块234的输出以确定命令队列220中落入这些相应类别中的命令的定时资格的输入。定时块234包括二进制计数器的阵列,该阵列对与针对每个存储列中的每个存储体的特定操作相关的持续时间进行计数。确定状态所需的定时器的数目取决于定时参数、给定存储器类型的存储体的数量以及***在给定存储器通道上支持的存储列的数量。所实现的定时参数的数目进而取决于***中所实现的存储器的类型。例如,与其它DDRx存储器类型相比,GDDR5存储器需要更多的定时器来遵守更多的定时参数。通过包括被实现为二进制计数器的通用定时器的阵列,定时块234可以被缩放并且重新用于不同的存储器类型。来自交叉模式启用逻辑304的输入向子仲裁器发信号通知提供哪种类型的命令(读取或写入)作为最终仲裁器350的候选。
页命中是对打开页的读取或写入周期。页命中仲裁器312在命令队列220中的访问之间仲裁以打开页。由定时块234中的定时器跟踪并且由页命中仲裁器312检查的定时资格参数包括例如行地址选通(RAS)到列地址选通(CAS)延迟时间(tRCD)和CAS等待时间(tCL)。例如,tRCD指定在RAS周期中已经打开页之后在对该页的读取或写入访问之前必须经过的最小时间量。页命中仲裁器312基于所指派的访问优先级来选择子仲裁获胜者。在一个实施方案中,优先级是4位、独热值,因此指示四个值中的优先级,然而,应当显而易见的是,此四级别优先级方案仅为一个示例。如果页命中仲裁器312检测到相同优先级级别的两个或更多个请求,则最老的条目获胜。
页冲突是当存储体中的一行当前被激活时对该存储体中的另一行的访问。页冲突仲裁器322在命令队列220中对与当前在对应的存储体和存储列中打开的页冲突的页的访问之间进行仲裁。页冲突仲裁器322选择导致发出预充电命令的子仲裁获胜者。由定时块234中的定时器跟踪并且由页冲突仲裁器322检查的定时资格参数包括例如活动以预充电命令周期(tRAS)。页冲突仲裁器322基于所分配的访问优先级来选择子仲裁获胜者。如果页冲突仲裁器322检测到相同优先级级别的两个或更多个请求,则最老的条目获胜。
页未命中是对处于预充电状态的存储体的访问。页未命中仲裁器332在命令队列220中对预充电的存储体的访问之间进行仲裁。由定时块234中的定时器跟踪且由页未命中仲裁器332检查的定时资格参数包括例如预充电命令周期(tRP)。如果存在在相同优先级级别是页未命中的两个或更多个请求,则最老的条目获胜。
每个子仲裁器为它们各自的子仲裁获胜者输出优先级值。最终仲裁器350比较来自页命中仲裁器312、页冲突仲裁器322和页未命中仲裁器332中的每一者的子仲裁获胜者的优先级值。最终仲裁器350通过执行一次考虑两个子仲裁获胜者的一组相对优先级比较来确定子仲裁获胜者之间的相对优先级。子仲裁器可以包括一组逻辑,该组逻辑用于仲裁针对每个模式读取和写入的命令,使得当当前模式改变时,一组可用的候选命令作为子仲裁获胜者是可快速获得的。
在确定这三个子仲裁获胜者之间的相对优先级之后,最终仲裁器350然后确定这些子仲裁获胜者是否冲突(即,它们是否指向相同存储体和存储列)。当不存在此类冲突时,则最终仲裁器350选择最多两个具有最高优先级的子仲裁获胜者。当存在冲突时,则最终仲裁器350遵循以下规则。当页命中仲裁器312的子仲裁获胜者的优先级值高于页冲突仲裁器322的子仲裁获胜者的优先级值并且两者均指向相同存储体和存储列时,则最终仲裁器350选择由页命中仲裁器312指示的访问。当页冲突仲裁器322的子仲裁获胜者的优先级值高于页命中仲裁器312的子仲裁获胜者的优先级值时并且两者均指向相同存储体和存储列时,则最终仲裁器350基于若干附加因素选择获胜者。在一些情况下,页关闭预测器362通过设定自动预充电属性而致使页在由页命中仲裁器312指示的访问结束时关闭。
在页命中仲裁器312内,优先级最初由来自存储器访问代理的请求优先级设定,但基于访问类型(读取或写入)和访问序列而动态地调整。一般来讲,页命中仲裁器312将较高隐式优先级指派给读取,但实现优先级提升机制以确保写入在完成方面取得进展。
每当页命中仲裁器312选择读取或写入命令时,页关闭预测器362就确定是否发送具有自动预充电(AP)属性的命令。在读取或写入周期期间,自动预充电属性用预定义地址位来设定,并且自动预充电属性致使DDR设备在读取或写入周期完成之后关闭页,这避免了存储器控制器稍后发送用于该存储体的单独预充电命令的需要。页关闭预测器362考虑命令队列220中已经存在的访问与所选择命令访问的存储体相同的存储体的其它请求。如果页关闭预测器362将存储器访问转换成AP命令,则对该页的下一次访问将是页未命中。
通过针对不同存储器访问类型使用不同子仲裁器,每个仲裁器可以用比需要在所有访问类型(页命中、页未命中和页冲突)之间进行仲裁的情况更简单的逻辑来实现。因此,可以简化仲裁逻辑并且可以使仲裁器238的大小保持相对较小。
在其它实施方案中,仲裁器238可以包括不同数量的子仲裁器。在又一实施方案中,仲裁器238可以包括特定类型的两个或更多个子仲裁器。例如,仲裁器238可以包括两个或更多个页命中仲裁器、两个或更多个页冲突仲裁器和/或两个或更多个页未命中仲裁器。
图4是根据一些实施方案的用于管理拖尾效率的过程的流程图400。在一些版本中,该过程体现在存储器控制器的仲裁器(诸如图2的仲裁器238)内部的监视逻辑电路中。在其它版本中,该过程可以由具有类似功能的数字逻辑或控制器执行,同时使用与上述子仲裁器305和最终仲裁器350所使用的不同的仲裁方法。该过程通常用于决定何时执行命令拖尾的周转,从而将当前模式从写入改变为读取或从读取改变为写入,以提高数据总线利用效率。该过程可以与确定读取或写入命令的拖尾的长度的其它技术组合使用。
在每个命令拖尾开始时,该过程在框402处开始,并且针对将在拖尾中突发的命令的模式(读取或写入)来确定当前在命令队列中的命令的快照或计数。在一些实施方案中,该快照计数由拖尾周转流程跟踪,并在新的拖尾开始时可用。在一些实施方案中,该过程更新快照计数,以考虑在做出结束前一拖尾的决定之后进入命令队列的任何新命令。
在框404处,该过程基于来自框402的命令的数量快照确定最小突发长度,即在拖尾中要发送的命令的最小数量。因此,最小突发长度能适应内存控制器处的当前条件。在该实施方案中,最小突发长度是通过将快照按比例放大或乘以提供给仲裁器的预定系数来计算的。第一系数“READ eCoefficiency”用于读取数据拖尾,并且第二系数“WRITEeCoefficiency”用于写入数据流,如在框404处所示。在一些实施方案中,对快照进行调整,以考虑到可用于由仲裁器选择的新的当前模式的命令,这些命令不会被“阻塞”,即不会因交叉模式激活而产生页面冲突。该调整是通过设置最小突发长度进行的,该最小突发长度等于按比例缩放的快照数量和未被交叉模式激活阻塞的新的当前模式请求的总数中的较小值。由于在拖尾周转时交叉模式请求变成了页命中,而同一存储体的当前模式请求变成了页冲突的场景而进行该调整。该过程不会将这些与交叉模式命中相冲突的当前模式页冲突包括到可针对新拖尾进行调度的命令计数中,否则最小拖尾长度将抵消由于交叉模式激活带来的交叉模式ACT的益处。
在框406中,该过程开始为拖尾发送命令,并且监测拖尾的大小(在拖尾中发送的命令的数量),直到达到在框404处设置的最小突发长度。
在达到最小突发长度后,针对所发送的每个命令执行框408和框410。在框408处,在最小突发长度之后,该过程监测指示突发内效率的第一组一个或多个条件,如下文进一步描述的。在该实施方案中,在框408处还监测指示突发间效率的第二组条件。在一些其他实施方案中,在最小突发长度之后,仅针对突发内效率监测效率条件。在一些实施方案中,监测一组或多组条件包括计算一个或多个指示,诸如总线使用效率或CAS延迟。监测效率条件还可包括监测内存控制器处的条件,诸如可用的当前模式或交叉模式命令。下面将结合图5描述使用多个CAS延迟条件的示例性实施方案。
在框410处,该过程基于所监测的条件是否指示结束拖尾并开始另一模式的新拖尾将更有效来决定是否结束拖尾。在一些实施方案中,至少采用第一组条件(突发内效率)来在框410处做出决定。在其他实施方案中,采用第一组条件和第二组条件的组合。在不同的实施方案中,第一组条件和第二组条件可各自包括一个或多个条件。如果该过程未在框410处决定结束拖尾,则返回到框408,以在发送新命令时继续监测该拖尾。如果该过程在框410处决定结束拖尾,则前进到框412,在该框处更改当前模式并开始在前一拖尾中作为交叉模式命令的命令类型的新的命令拖尾。为了确定一组或多组条件是否指示拖尾结束,将一个或多个条件与阈值进行比较,或者可以将这些一个或多个条件相互比较。在一些实施方案中,将与突发间效率相关的第二组条件与阈值进行比较,该阈值至少部分基于周转该过程以开始新拖尾所需的时间。
一般来说,所描绘的过程与其他已知的拖尾管理过程相比具有若干优势,这些优势使该过程适合于管理各种存储器访问工作负载。它还解决了各种拖尾管理技术趋于出现的若干个问题。例如,单独使用突发内效率管理趋于导致过高的拖尾周转率,因为当交叉模式拖尾没有有效的一组突发命令时,突发内管理将经常决定结束拖尾。特别是对于具有差的存储体级别并行性的工作负载,这种过高的周转率会损害整体效率。虽然使用最小阈值似乎可以缓解这种问题,但最小阈值也具有相关问题。如果最小阈值过大,突发甚至可能在达到最小阈值之前就变得效率低下。如果最小突发长度过低,则将存在更多的周转。最小突发阈值还取决于工作负载,这意味着针对一种类型的工作负载选择的阈值可能不适合于另一种类型的工作负载。
虽然仅使用自适应最小突发长度趋于提高突发间效率,但却无法充分管理突发内效率可能受到影响的多种不同情况和工作负载。例如,突发可能持续的时间不够长,无法针对特定工作负载实现高效率。所描绘的过程通过将突发内效率管理与自适应最小突发长度组合解决了该问题。
图5是根据一些附加实施方案的用于管理拖尾效率的过程的流程图500。该过程通常通过监测内存控制器的仲裁器(诸如图2中的仲裁器238)内部的逻辑,以处理发送到***存储器的连续读取命令拖尾和连续写入命令拖尾来执行。所描述的过程是图4的过程的示例性具体实施,并且通常采用两个或多个相邻CAS命令之间的间隔作为突发内效率指示,并且还采用其他CAS间隔作为突发间效率指示。
当新的拖尾开始时,框502开始周转监测过程。如上文关于图4所述,确定自适应最小突发长度。在框504处,通过命令总线发送初始的拖尾命令,直到满足最小突发长度。
在满足最小突发长度之后,该过程针对拖尾中发送的每个命令执行若干次检查,以确定该拖尾应该结束还是继续。在框506处,发送当前命令。在框508处,该过程确定是否仅当前模式命令可用于在仲裁器处发送。例如,如果当前拖尾是写入拖尾,则框508确定是否仅写入命令是待决的。如果是,则该过程继续拖尾,返回到框506以发送下一个命令。如果不是,则该过程前进到框510,在该框处确定在仲裁器处是否仅交叉模式命令可用。如果是,则该过程结束当前拖尾并开始新的拖尾。
在框510处,如果仍有当前模式命令可用,则该过程继续框512,在该框处该过程基于CAS命令之间的间隔(被称为“CAS到CAS”间隔)来监测每个命令的突发内效率。在一些实施方案中,该间隔是针对仲裁器处的多个候选命令确定的。该间隔是对列地址选通(CAS)命令之间的一个或多个时间间隔的测量或预测。该间隔包括最近传输的CAS命令与能够传输所选择后续CAS命令的时间之间的时间间隔。该计算结果产生相应候选命令的突发内数据总线效率的预测。在该实施方案中,将以时钟周期为单位的间隔与预定阈值进行比较,以确定是否将该间隔视为高效率命令。
在框514处,该过程确定可用作候选的任何交叉模式命令是否都具有高效率。如果没有可用的高效率交叉模式命令,则该过程继续当前拖尾。框514采用指示突发间效率的一个或多个效率条件,在该示例中,这些效率条件是基于交叉模式命令的潜在CAS到CAS阈值的效率指示。一般来说,在框514处,针对可在仲裁器处选择的交叉模式命令计算效率指示,并将该效率指示与阈值526或528中的一个阈值进行比较,以确定交叉模式命令是否高效。如果指示是在时钟周期中直接计算的CAS到CAS间隔,则该指示可以被视为成本函数,在该成本函数中低成本用信号表示高效率。该检查的优点是防止这种顺序:进行周转,然后在另一模式中没有可用的高效率命令,并且该过程再次重复地周转。用于交叉模式命令的阈值是用于读取命令为当前模式时的比较的“交叉模式写入CAS间隙阈值”526和用于写入命令为当前模式时的比较的“交叉模式读取CAS间隙阈值”528。在该实施方案中,阈值526和528是基于可调配置寄存器值设置的,该可调配置寄存器值被选择为考虑针对命令的相应命令类型的最小CAS到CAS定时、执行拖尾周转所需的时间、所采用的突发长度(针对每个CAS命令发送或拉取的数据节拍的数量)以及其他考虑因素,诸如存储列切换和存储体组切换的可能性。
如果在框514处存在高效率交叉模式命令可用,则该过程前进到框516,在该框处该过程使用另一类型的突发内效率指示来防止仅略微在高效率阈值内但总体上提供低效率拖尾的连续命令序列。框516计算“最近3个”当前模式CAS到CAS间隔,该间隔提供最近所传输CAS命令和在三个CAS命令之前出现的先前CAS命令之间的间隔。如果此“最近3个”间隔大于指定阈值,则该过程结束当前拖尾并且执行周转。
如果“最近3个”间隔在指定阈值内,则在框516处的过程前进到框518。在框518处,通过将候选命令的CAS到CAS间隔与阈值522或524中的一个阈值进行比较,该过程检查当前模式是否存在可用的高效电流模式命令。如果存在可用的高效率当前模式命令,则该过程继续当前拖尾。如果否,则该过程前进到框520,在该框处结束当前拖尾。在每种所描绘的情况下结束拖尾引起其中另一模式的拖尾开始的周转过程。
如输入到框518的阈值所描绘,根据当前模式是读取还是写入,在框518处使用两个不同的阈值522和524来监测命令的效率。用于当前模式命令的阈值是用于写入命令为当前模式时的比较的“当前模式写入CAS间隙阈值”522和用于读取命令为当前模式时的比较的“当前模式读取CAS间隙阈值”524。在该实施方案中,阈值522和524是基于可调配置寄存器值设置的,该可调配置寄存器值被选择为考虑针对命令的相应命令类型的最小CAS到CAS定时、所采用的突发长度(针对每个CAS命令发送或拉取的数据节拍的数量)以及其他考虑因素,诸如例如存储列切换和存储体组切换的可能性。由于已经实现了期望的最小突发长度,与还需要考虑与突发内效率管理相关的过高的拖尾周转的方案相比,所描绘的过程允许在管理突发内效率方面具有更大的灵活性。在该实施方案中,在框516和518处采用在框512处监测到的突发内效率条件,以确定是否结束拖尾。在其他实施方案中,不使用框516。在不同的实施方案中,还采用了其他过程决策流来实现类似的结果。
虽然该实施方案中的过程在决定是否结束当前拖尾时采用若干不同确定,但其他实施方案可以包括少于所有所描绘的有条件的确定。此外,虽然流程图500中的各种确定是以特定顺序描绘的,但这并不是限制性的,并且各种实施方案可以使用以不同顺序进行或同时进行所选择的框的电路来实现类似的功能。
图2的存储器控制器200或其任何部分(诸如,仲裁器238和刷新控制逻辑232)可以由呈数据库形式的计算机可以访问数据结构或可以由程序读取并且直接或间接用于制造集成电路的其它数据结构来描述或表示。例如,该数据结构可以是高级设计语言(HDL)诸如Verilog或VHDL中的硬件功能性的行为级描述或寄存器传送级(RTL)描述。描述可由合成工具读取,合成工具可合成描述以产生包括来自合成库的门列表的网表。网表包括门集,门集也表示包括集成电路的硬件的功能性。然后可以放置和路由网表以产生描述待应用于掩码的几何形状的数据集。然后可以在各种半导体制造步骤中使用掩模以产生集成电路。另选地,计算机可访问存储介质上的数据库可以是网表(具有或不具有合成库)或数据集(根据需要)或图形数据***(GDS)II数据。
虽然已描述了特定实施方案,但是对这些实施方案的各种修改对于本领域技术人员将是显而易见的。例如,存储器通道控制器210和/或功率引擎250的内部架构在不同的实施方案中可有所变化。存储器控制器200可接口连接到除了DDRx之外的其他类型的存储器诸如高带宽存储器(HBM)等。虽然所示的实施方案示出了对应于单独DIMM或SIMM的每个存储器存储列,但在其他实施方案中,每个模块可支持多个存储列。再其他实施方案可包括其他类型的DRAM模块或特定模块中未包含的DRAM,诸如安装到主机母板的DRAM。因此,所附权利要求书旨在覆盖所公开实施方案的落入所公开实施方案的范围内的所有修改。
Claims (20)
1.一种存储器控制器,包括:
命令队列,所述命令队列具有用于接收存储器访问请求的第一输入;
存储器接口队列,所述存储器接口队列具有用于耦接到存储器通道的输出,所述存储器通道适于耦接到至少一个动态随机存取存储器(DRAM);以及
仲裁器,所述仲裁器耦接到所述命令队列以用于从所述命令队列选择条目并将所述条目放置在所述存储器接口队列中,从而使所述条目通过所述存储器通道被传输,所述仲裁器能够***作以:
通过所述存储器通道处理连续读取命令的拖尾和连续写入命令的拖尾;
基于可用于由所述仲裁器选择的指定类型的多个命令,处理至少最小突发长度的拖尾;以及
在所述最小突发长度之后,基于指示突发内效率的第一组一个或多个条件决定开始不同类型的新的命令拖尾。
2.根据权利要求1所述的存储器控制器,其中所述最小突发长度被计算为针对所述拖尾的可用命令的数量乘以所选择的比率。
3.根据权利要求1所述的存储器控制器,其中所述仲裁器进一步能够操作以在所述最小突发长度之后监测指示突发间效率的第二组一个或多个条件,并且其中决定开始新的命令拖尾是基于所述第一组条件和所述第二组条件的。
4.根据权利要求3所述的存储器控制器,其中所述仲裁器具有:当前正被处理的命令类型的当前模式,其中所述类型是读取和写入中的一者;以及另一类型的交叉模式,并且其中所述第二组条件包括交叉模式命令可用的指示,对于所述交叉模式命令,在定义的列地址选通(CAS)到CAS间隔内能够将CAS命令发送到在所述拖尾中发送的前一命令。
5.根据权利要求4所述的存储器控制器,其中当读取命令是所述交叉模式时,对于所定义的CAS到CAS间隔使用第一间隔,并且当写入命令是所述交叉模式时,对于所定义的CAS到CAS间隔使用不同于所述第一间隔的第二间隔。
6.根据权利要求1所述的存储器控制器,其中所述第一组条件包括对于CAS命令之间的一个或多个间隔的测量。
7.根据权利要求6所述的存储器控制器,其中第一组条件包括最近传输的CAS命令与能够传输所选择后续CAS命令的时间之间的间隔。
8.一种方法,包括:
引起待通过存储器通道处理的连续读取命令的拖尾和连续写入命令的拖尾;
基于可用于由所述仲裁器选择的指定类型的多个命令,处理至少最小突发长度的拖尾;
在所述最小突发长度之后,基于指示突发内效率的第一组一个或多个条件决定开始不同类型的新的命令拖尾。
9.根据权利要求8所述的方法,其中所述最小突发长度被计算为针对所述拖尾的可用命令的数量乘以所选择的比率。
10.根据权利要求8所述的方法,所述方法还包括:在所述最小突发长度之后监测指示突发间效率的第二组一个或多个条件,并且其中决定开始新的命令拖尾是基于所述第一组条件和所述第二组条件的。
11.根据权利要求10所述的方法,其中所述仲裁器具有:当前正被处理的命令类型的当前模式,其中所述类型是读取和写入中的一者;以及另一类型的交叉模式,并且其中所述第二组条件包括交叉模式命令可用的指示,对于所述交叉模式命令,在定义的列地址选通(CAS)到CAS间隔内能够将CAS命令发送到在所述拖尾中发送的前一命令。
12.根据权利要求11所述的方法,其中当读取命令是所述交叉模式时,对于所定义的CAS到CAS间隔使用第一间隔,并且当写入命令是所述交叉模式时,对于所定义的CAS到CAS间隔使用不同于所述第一间隔的第二间隔。
13.根据权利要求8所述的方法,其中所述第一组条件包括对于CAS命令之间的一个或多个间隔的测量。
14.根据权利要求13所述的方法,其中第一组条件包括最近传输的CAS命令与能够传输所选择后续CAS命令的时间之间的间隔。
15.一种数据处理***,包括:
中央处理单元;
数据织构,所述数据织构耦接到中央处理单元;以及
存储器控制器,所述存储器控制器耦接到所述数据织构以用于履行来自所述中央处理单元的存储器请求,所述存储器控制器包括:
命令队列,所述命令队列具有用于接收存储器访问请求的第一输入;
存储器接口队列,所述存储器接口队列具有用于耦接到存储器通道的输出,所述存储器通道适于耦接到至少一个动态随机存取存储器(DRAM);
仲裁器,所述仲裁器耦接到所述命令队列以用于从所述命令队列选择条目并将所述条目放置在所述存储器接口队列中,从而使所述条目通过所述存储器通道被传输,所述仲裁器能够***作以:
通过所述存储器通道处理连续读取命令的拖尾和连续写入命令的拖尾;
基于可用于由所述仲裁器选择的指定类型的多个命令,处理至少最小突发长度的拖尾;以及
在所述最小突发长度之后,基于指示突发内效率的第一组一个或多个条件决定开始不同类型的新的命令拖尾。
16.根据权利要求15所述的数据处理***,其中所述最小突发长度被计算为针对可用拖尾的可用命令的数量乘以所选择的比率。
17.根据权利要求15所述的数据处理***,其中所述仲裁器进一步能够操作以在所述最小突发长度之后监测指示突发间效率的第二组一个或多个条件,并且其中决定开始新的命令拖尾是基于所述第一组条件和所述第二组条件的。
18.根据权利要求17所述的数据处理***,其中所述仲裁器具有:当前正被处理的命令类型的当前模式,其中所述类型是读取和写入中的一者;以及另一类型的交叉模式,并且其中所述第二组条件包括交叉模式命令可用的指示,对于所述交叉模式命令,在定义的列地址选通(CAS)到CAS间隔内能够将CAS命令发送到在所述拖尾中发送的前一命令。
19.根据权利要求18所述的数据处理***,其中当读取命令是所述交叉模式时,对于所定义的CAS到CAS间隔使用第一间隔,并且当写入命令是所述交叉模式时,对于所定义的CAS到CAS间隔使用不同于所述第一间隔的第二间隔。
20.根据权利要求15所述的数据处理***,其中所述第一组条件包括对于CAS命令之间的一个或多个间隔的测量。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/219,535 | 2021-03-31 | ||
US17/219,535 US11687281B2 (en) | 2021-03-31 | 2021-03-31 | DRAM command streak efficiency management |
PCT/US2022/020388 WO2022212036A1 (en) | 2021-03-31 | 2022-03-15 | Dram command streak efficiency management |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117099076A true CN117099076A (zh) | 2023-11-21 |
Family
ID=83449086
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202280026514.7A Pending CN117099076A (zh) | 2021-03-31 | 2022-03-15 | Dram命令拖尾效率管理 |
Country Status (6)
Country | Link |
---|---|
US (1) | US11687281B2 (zh) |
EP (1) | EP4315013A4 (zh) |
JP (1) | JP7521133B2 (zh) |
KR (1) | KR20230158128A (zh) |
CN (1) | CN117099076A (zh) |
WO (1) | WO2022212036A1 (zh) |
Citations (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6154419A (en) * | 2000-03-13 | 2000-11-28 | Ati Technologies, Inc. | Method and apparatus for providing compatibility with synchronous dynamic random access memory (SDRAM) and double data rate (DDR) memory |
US6332206B1 (en) * | 1998-02-25 | 2001-12-18 | Matsushita Electrical Industrial Co., Ltd. | High-speed error correcting apparatus with efficient data transfer |
US20030026138A1 (en) * | 2001-08-01 | 2003-02-06 | Samsung Electronics, Co., Ltd. | Semiconductor memory device having write latency operation and method thereof |
US6957308B1 (en) * | 2002-07-11 | 2005-10-18 | Advanced Micro Devices, Inc. | DRAM supporting different burst-length accesses without changing the burst length setting in the mode register |
US20090248994A1 (en) * | 2008-03-27 | 2009-10-01 | Hongzhong Zheng | Memory rank burst scheduling |
US20110099341A1 (en) * | 2007-11-15 | 2011-04-28 | Micron Technology, Inc. | System, apparatus, and method for modifying the order of memory accesses |
US20120131246A1 (en) * | 2010-10-19 | 2012-05-24 | Samsung Electronics Co., Ltd. | System-on-chip and data arbitration method thereof |
JP2012113819A (ja) * | 2005-11-19 | 2012-06-14 | Samsung Electronics Co Ltd | 自動プリチャージ制御回路と半導体メモリ装置とプリチャージング動作制御方法 |
JP2012181906A (ja) * | 2011-02-28 | 2012-09-20 | Sk Hynix Inc | 集積回路 |
US20130086309A1 (en) * | 2007-06-01 | 2013-04-04 | Netlist, Inc. | Flash-dram hybrid memory module |
EP2851802A1 (en) * | 2012-05-14 | 2015-03-25 | Huawei Technologies Co., Ltd. | Memory scheduling method and memory controller |
US20170140800A1 (en) * | 2007-06-25 | 2017-05-18 | Sonics, Inc. | Various methods and apparatus for configurable mapping of address regions onto one or more aggregate targets |
WO2017196142A2 (en) * | 2016-05-12 | 2017-11-16 | Lg Electronics Inc. | System and method for optimizing dram bus switching using llc |
US20180018133A1 (en) * | 2016-07-15 | 2018-01-18 | Advanced Micro Devices, Inc. | Memory controller arbiter with streak and read/write transaction management |
CN107924375A (zh) * | 2016-07-15 | 2018-04-17 | 超威半导体公司 | 用于高速存储器接口的命令仲裁 |
US20190196996A1 (en) * | 2017-12-21 | 2019-06-27 | Advanced Micro Devices, Inc. | Dynamically determining memory access burst length |
US20190196995A1 (en) * | 2017-12-21 | 2019-06-27 | Advanced Micro Devices, Inc. | Dynamic page state aware scheduling of read/write burst transactions |
JP2021039447A (ja) * | 2019-08-30 | 2021-03-11 | キヤノン株式会社 | メモリコントローラおよびメモリコントローラで実施される方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2010262668A (ja) | 2010-07-07 | 2010-11-18 | Panasonic Corp | シンクロナスdramアクセス装置 |
-
2021
- 2021-03-31 US US17/219,535 patent/US11687281B2/en active Active
-
2022
- 2022-03-15 CN CN202280026514.7A patent/CN117099076A/zh active Pending
- 2022-03-15 EP EP22781854.9A patent/EP4315013A4/en active Pending
- 2022-03-15 JP JP2023560438A patent/JP7521133B2/ja active Active
- 2022-03-15 KR KR1020237037632A patent/KR20230158128A/ko active IP Right Grant
- 2022-03-15 WO PCT/US2022/020388 patent/WO2022212036A1/en active Application Filing
Patent Citations (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6332206B1 (en) * | 1998-02-25 | 2001-12-18 | Matsushita Electrical Industrial Co., Ltd. | High-speed error correcting apparatus with efficient data transfer |
US6154419A (en) * | 2000-03-13 | 2000-11-28 | Ati Technologies, Inc. | Method and apparatus for providing compatibility with synchronous dynamic random access memory (SDRAM) and double data rate (DDR) memory |
US20030026138A1 (en) * | 2001-08-01 | 2003-02-06 | Samsung Electronics, Co., Ltd. | Semiconductor memory device having write latency operation and method thereof |
US6957308B1 (en) * | 2002-07-11 | 2005-10-18 | Advanced Micro Devices, Inc. | DRAM supporting different burst-length accesses without changing the burst length setting in the mode register |
JP2012113819A (ja) * | 2005-11-19 | 2012-06-14 | Samsung Electronics Co Ltd | 自動プリチャージ制御回路と半導体メモリ装置とプリチャージング動作制御方法 |
US20130086309A1 (en) * | 2007-06-01 | 2013-04-04 | Netlist, Inc. | Flash-dram hybrid memory module |
US20170140800A1 (en) * | 2007-06-25 | 2017-05-18 | Sonics, Inc. | Various methods and apparatus for configurable mapping of address regions onto one or more aggregate targets |
US20110099341A1 (en) * | 2007-11-15 | 2011-04-28 | Micron Technology, Inc. | System, apparatus, and method for modifying the order of memory accesses |
US20090248994A1 (en) * | 2008-03-27 | 2009-10-01 | Hongzhong Zheng | Memory rank burst scheduling |
US20120131246A1 (en) * | 2010-10-19 | 2012-05-24 | Samsung Electronics Co., Ltd. | System-on-chip and data arbitration method thereof |
JP2012181906A (ja) * | 2011-02-28 | 2012-09-20 | Sk Hynix Inc | 集積回路 |
EP2851802A1 (en) * | 2012-05-14 | 2015-03-25 | Huawei Technologies Co., Ltd. | Memory scheduling method and memory controller |
WO2017196142A2 (en) * | 2016-05-12 | 2017-11-16 | Lg Electronics Inc. | System and method for optimizing dram bus switching using llc |
US20180018133A1 (en) * | 2016-07-15 | 2018-01-18 | Advanced Micro Devices, Inc. | Memory controller arbiter with streak and read/write transaction management |
CN107924375A (zh) * | 2016-07-15 | 2018-04-17 | 超威半导体公司 | 用于高速存储器接口的命令仲裁 |
KR20190019215A (ko) * | 2016-07-15 | 2019-02-26 | 어드밴스드 마이크로 디바이시즈, 인코포레이티드 | 스트릭 및 판독/기입 트랜잭션 관리 기능을 갖는 메모리 제어기 아비터 |
CN109564556A (zh) * | 2016-07-15 | 2019-04-02 | 超威半导体公司 | 具有条纹和读取/写入事务管理的存储器控制器仲裁器 |
US20190196996A1 (en) * | 2017-12-21 | 2019-06-27 | Advanced Micro Devices, Inc. | Dynamically determining memory access burst length |
US20190196995A1 (en) * | 2017-12-21 | 2019-06-27 | Advanced Micro Devices, Inc. | Dynamic page state aware scheduling of read/write burst transactions |
JP2021039447A (ja) * | 2019-08-30 | 2021-03-11 | キヤノン株式会社 | メモリコントローラおよびメモリコントローラで実施される方法 |
Also Published As
Publication number | Publication date |
---|---|
WO2022212036A1 (en) | 2022-10-06 |
EP4315013A1 (en) | 2024-02-07 |
US20220317928A1 (en) | 2022-10-06 |
EP4315013A4 (en) | 2024-06-05 |
US11687281B2 (en) | 2023-06-27 |
JP2024514503A (ja) | 2024-04-02 |
KR20230158128A (ko) | 2023-11-17 |
JP7521133B2 (ja) | 2024-07-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107924375B (zh) | 用于高速存储器接口的命令仲裁 | |
JP7521132B2 (ja) | アービトレーション中の書き込みバンクグループのマスク | |
US11789655B2 (en) | Efficient and low latency memory access scheduling | |
US20240069811A1 (en) | Efficient rank switching in multi-rank memory controller | |
JP2024528403A (ja) | マルチランクメモリコントローラにおける効率的なランク切り替え | |
US11782640B2 (en) | Efficient and low latency memory access scheduling | |
CN115885268A (zh) | Dram命令拖尾管理 | |
US11995008B2 (en) | Memory controller with hybrid DRAM/persistent memory channel arbitration | |
US20210357336A1 (en) | Efficient memory bus management | |
JP7521133B2 (ja) | Dramコマンドストリーク効率管理 | |
US20240211173A1 (en) | Performance of bank refresh | |
JP2024528414A (ja) | ハイブリッド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 |