CN115885268A - Dram命令拖尾管理 - Google Patents
Dram命令拖尾管理 Download PDFInfo
- Publication number
- CN115885268A CN115885268A CN202180042010.XA CN202180042010A CN115885268A CN 115885268 A CN115885268 A CN 115885268A CN 202180042010 A CN202180042010 A CN 202180042010A CN 115885268 A CN115885268 A CN 115885268A
- Authority
- CN
- China
- Prior art keywords
- command
- memory
- mode
- commands
- arbiter
- 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 233
- 238000000034 method Methods 0.000 claims abstract description 124
- 230000008569 process Effects 0.000 claims abstract description 103
- 206010019133 Hangover Diseases 0.000 claims abstract description 48
- 230000004044 response Effects 0.000 claims abstract description 28
- 238000012545 processing Methods 0.000 claims description 31
- 239000004744 fabric Substances 0.000 claims description 19
- 238000012544 monitoring process Methods 0.000 claims description 13
- 230000008878 coupling Effects 0.000 claims description 6
- 238000010168 coupling process Methods 0.000 claims description 6
- 238000005859 coupling reaction Methods 0.000 claims description 6
- 238000005259 measurement Methods 0.000 claims description 4
- 230000005540 biological transmission Effects 0.000 abstract description 3
- 238000010586 diagram Methods 0.000 description 14
- 230000002093 peripheral effect Effects 0.000 description 7
- 230000004913 activation Effects 0.000 description 5
- 238000003860 storage Methods 0.000 description 5
- 230000008859 change Effects 0.000 description 4
- 239000003795 chemical substances by application Substances 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 230000015572 biosynthetic process Effects 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 238000003786 synthesis reaction Methods 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 230000002457 bidirectional effect Effects 0.000 description 2
- 238000012937 correction Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 101100498818 Arabidopsis thaliana DDR4 gene Proteins 0.000 description 1
- 101150098958 CMD1 gene Proteins 0.000 description 1
- 101100382321 Caenorhabditis elegans cal-1 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
- 230000003213 activating effect Effects 0.000 description 1
- 230000003466 anti-cipated effect Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000003542 behavioural effect Effects 0.000 description 1
- 239000003990 capacitor Substances 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 239000012634 fragment Substances 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
- 238000005096 rolling process 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
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/38—Information transfer, e.g. on bus
- G06F13/40—Bus structure
- G06F13/4004—Coupling between buses
- G06F13/4027—Coupling between buses using bus bridges
- G06F13/4031—Coupling between buses using bus bridges with 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/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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (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是根据一些附加实施方案的用于管理拖尾效率的另一过程的流程图;
图6是根据一些实施方案的用于执行交叉模式激活命令的过程的流程图;以及
图7是根据一些实施方案的用于执行交叉模式激活命令的另一过程的流程图。
在以下描述中,在不同附图中使用相同的附图标号指示类似或相同的项。除非另有说明,否则字词″耦接″及其相关联的动词形式包括直接连接和通过本领域已知的方式的间接电连接两者,并且除非另有说明,否则对直接连接的任何描述也意味着使用合适形式的间接电连接的另选实施方案。
具体实施方式
一种存储器控制器包括命令队列,该命令队列具有用于接收存储器访问请求的第一输入,以及存储器接口队列,该存储器接口队列具有用于耦接到适于连接到至少一个动态随机存取存储器(DRAM)的存储器通道的输出。一个仲裁器连接到命令队列以用于从命令队列中选择条目并将这些条目放置在存储器接口队列中,从而致使这些条目通过存储器通道被传输。该仲裁器可操作以通过存储器通道处理连续读取命令的拖尾和连续写入命令的拖尾。该仲裁器具有指示当前正被处理的命令的类型的当前模式和指示另一种类型的交叉模式。该仲裁器可操作以监视命令队列中用于当前模式和交叉模式的命令,并且响应于包括不存在可用当前模式激活(ACT)命令的指定条件,将一条可用交叉模式ACT命令发送到存储器接口队列用于交叉模式命令,同时继续以当前模式操作。响应于结束拖尾条件,该仲裁器交换当前模式和交叉模式,并处理交叉模式命令。
一种方法包括:接收包括存储器读取和存储器写入的多个存储器访问请求;选择性地将用于履行存储器访问请求的存储器访问命令放置在存储器接口队列中,并且将存储器访问命令从存储器接口队列传输到耦接到至少一个动态随机存取存储器(DRAM)的存储器通道。该方法致使连续读取命令的拖尾和连续写入命令的拖尾通过存储器通道被处理,这些拖尾基于指示当前正被处理的命令的类型的当前模式,其中类型指示读取或写入中的一者,以及包括另一种类型的交叉模式。该方法监视用于当前模式和交叉模式的可用命令。响应于包括不存在可用当前模式激活(ACT)命令的指定条件,该方法将用于交叉模式命令的可用交叉模式ACT命令发送到存储器接口队列,同时继续以当前模式操作。响应于结束拖尾条件,该方法交换当前模式和交叉模式,并处理交叉模式命令。
一种数据处理系统包括中央处理单元、联接到该中央处理单元的数据织构、联接到该数据织构以用于履行来自该中央处理单元的存储器请求的存储器控制器。该存储器控制器包括命令队列,该命令队列具有用于接收存储器访问请求的第一输入,以及存储器接口队列,该存储器接口队列具有用于耦接到适于连接到至少一个动态随机存取存储器(DRAM)的存储器通道的输出。一个仲裁器连接到命令队列以用于从命令队列中选择条目并将这些条目放置在存储器接口队列中,从而致使这些条目通过存储器通道被传输。该仲裁器可操作以通过存储器通道处理连续读取命令的拖尾和连续写入命令的拖尾。该仲裁器具有指示当前正被处理的命令的类型的当前模式和指示另一种类型的交叉模式。该仲裁器可操作以监视命令队列中用于当前模式和交叉模式的命令,并且响应于包括不存在可用当前模式激活(ACT)命令的指定条件,将一条可用交叉模式ACT命令发送到存储器接口队列用于交叉模式命令,同时继续以当前模式操作。响应于结束拖尾条件,该仲裁器交换当前模式和交叉模式,并处理交叉模式命令。
一种存储器控制器包括命令队列,该命令队列具有用于接收存储器访问请求的第一输入,以及存储器接口队列,该存储器接口队列具有用于耦接到适于连接到至少一个动态随机存取存储器(DRAM)的存储器通道的输出。一个仲裁器连接到命令队列以用于从命令队列中选择条目并将这些条目放置在存储器接口队列中,从而致使这些条目通过存储器通道被传输。该仲裁器可操作以通过存储器通道处理连续读取命令的拖尾和连续写入命令的拖尾。该仲裁器具有指示当前正被处理的命令的类型的当前模式和指示另一种类型的交叉模式。该仲裁器可操作以监视命令队列中用于当前模式和交叉模式的命令,并且响应于包括仲裁器处可用的交叉模式命令的指定最小阈值的指定条件,将用于交叉模式命令的可用交叉模式ACT命令发送到存储器接口队列,同时继续以当前模式操作。响应于结束拖尾条件,该仲裁器交换当前模式和交叉模式,并处理交叉模式命令。
图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)和数据织构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和152,并且还双向连接到存储器通道控制器143和144。PHY151具有到存储器通道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变得过热,则可完全关断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)标识符。CAM224包括实施排序规则诸如写后写(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中未详细示出。自刷新控制器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处,仲裁器根据合适的命令仲裁过程来发送在拖尾的开始处的一个或多个初始命令。在框406处,监视或预计初始命令的数据总线效率。在一些实施方案中,数据总线效率的指示被计算为数据总线利用率的滚动计算结果。在其它实施方案中,如下文进一步描述的,使用其它指示。在框408处,该过程检查数据总线效率的指示是否低于指定的低效率阈值。此低效率指示在拖尾的开始处使用,因为拖尾的最初几个命令不会产生效率改变,直到资料已通过资料总线为止。随着拖尾的继续,如果一系列有效的命令可用,则期望效率快速地改变为高效率。
如果在框408处效率指示不低于所指定的低效率阈值,则过程前进到框412。如果该效率指示较低,则该过程前进到框410,在该框处检查是否存在具有高效率的可用交叉模式命令。框410可以包括在仲裁器处计算候选命令的预计效率。通常,将所计算的效率指示与指定阈值进行比较,以确定交叉模式命令是否是高效率的。在一些实施方案中,与所计算的效率指示进行比较的阈值至少部分地基于周转该过程以开始新的拖尾所花费的时间。在一些实施方案中,效率指示被计算为″成本″指示,其中高成本指示低效率命令并且低成本指示高效率命令。如果在框410处存在可用的交叉模式高效率命令,则该过程前进到框411,在该框处该过程结束当前拖尾并且开始另一类型的拖尾。如果否,则过程前进到框412,在该框处继续当前拖尾。
在框412处,将效率阈值提高到高效率水平。此较高水平被选择来反映在拖尾经过初始低效率并且已经实现了在拖尾的早中期经常发生的高效率之后所预期的高效率。在调整了效率阈值的情况下,过程在框414处通过发送拖尾中的下一命令来继续拖尾。通过计算用以监视或预计由发送命令导致或将由发送命令导致的数据总线效率的效率指示,针对每个命令继续监视数据总线效率,如框416处所示。
在框418处,如果效率指示低于高效率阈值,则结束当前拖尾可以能是有利的。该过程前进到框420,在该框处,该过程检查高效率交叉模式命令是否可用。如果是,则该过程前进到框422,在该框处该过程结束当前拖尾并开始另一类型的拖尾。如果没有可用的高效率交叉模式命令,则该过程前进到框414,在该框处继续当前拖尾。
虽然在该实施方案中,将低效率阈值调整为高效率阈值(框412),但是在其它实施方案中,在拖尾中发送的每个命令之后调整效率阈值。在这种情况下,在计算效率指示值之前,在框416处更新效率阈值。在一些实施方案中,采用计数器来跟踪当前拖尾的长度,并且在基于计数器的值发送每个命令之后调整效率阈值以要求更高的效率。
图5是根据一些附加实施方案的用于管理拖尾效率的过程的流程图500。每当拖尾开始监视拖尾效率时使用该过程,并且通常通过监视存储器控制器的仲裁器(诸如图2的仲裁器238)内部的逻辑来执行该过程。所描绘的过程采用两个或更多个邻近列地址选通(CAS)命令之间的间隔作为数据总线效率的指示,并且针对在拖尾中发送的每个命令重复直到该过程决定″周转″并且结束拖尾为止。
当新的拖尾开始时,过程在框502处开始周转监视过程。在框504处,通过命令总线发送拖尾的初始命令。在发送命令之后,该过程执行若干检查以确定拖尾应当结束还是继续。在框506处,该过程确定在仲裁器处是否仅当前模式命令可用于发送。例如,如果当前拖尾是写入拖尾,则框506确定是否仅写入命令是待决的。如果是,则该过程返回到框504继续拖尾。接着在框508处,该过程确定在仲裁器处是否仅交叉模式命令可用。如果是,则该过程结束当前拖尾并开始新的拖尾。如果否,则该过程继续到框510,在该框处该过程基于CAS命令之间的间隔(被称为″CAS到CAS″间隔)来监视或预计每个命令的数据总线效率。
框510计算至少一个命令的数据总线效率的指示。在一些实施方案中,在仲裁器处针对许多候选命令计算指示。数据总线效率的指示包括对列地址选通(CAS)命令之间的一个或多个时间间隔的测量或预计。例如,在一个实施方案中,数据总线效率的指示包括最近所传输CAS命令和可以传输所选择后续CAS命令的时间之间的时间间隔。此计算结果产生相应候选命令的数据总线效率的预计。其它实施方案在计算结果中包括多于一个的CAS至CAS间隔。通常,以时钟周期测量该间隔。
在框512处,该过程基于在框510处计算的指示来确定可用作候选的任何交叉模式命令是否都具有高效率。如果没有可用的高效率交叉模式命令,则该过程继续当前拖尾。此有条件的检查的优点是防止这种顺序:进行周转,然后在另一模式中没有可用的高效率命令,并且该过程再次重复地周转。通常,将所计算的效率指示与指定阈值进行比较,以确定交叉模式命令是否是高效率的。如果指示是在时钟周期中直接计算的CAS到CAS间隔,则该指示可以被视为成本函数,在该成本函数中低成本用信号表示高效率。在一些实施方案中,与该值进行比较的阈值至少部分地基于周转该过程以开始新的拖尾所花费的时间。
如果在框512处存在高效率交叉模式命令可用,则该过程前进到框514,在该框处该过程使用另一类型的效率指示来防止仅略微在高效率阈值内但总体上提供低效率拖尾的连续命令序列。框514计算″最近3个″当前模式CAS到CAS间隔,该间隔提供最近所传输CAS命令和在三个CAS命令之前出现的先前CAS命令之间的间隔。如果此″最近3个″间隔大于指定阈值,则该过程结束当前拖尾并且执行周转。
如果″最近3个″间隔在指定阈值内,则在框514处的过程前进到框516。在框516处,该过程检查是否存在可用于当前模式的高效率命令。如果是,则该过程继续当前拖尾。如果否,则该过程前进到框518,在该框处结束当前拖尾。在每种所描绘的情况下结束拖尾引起其中另一模式的拖尾开始的周转过程。周转包括为交叉模式(以前的当前模式)清除进程中标签并且为新的当前模式清除等待进程中标签。继续该拖尾包括仲裁器238选择用于在框504处发送的下一命令。
虽然该实施方案中的过程在决定是否结束当前拖尾时采用若干不同确定,但其它实施方案可以包括少于所有所描绘的有条件的检查。
图6是根据一些实施方案的用于执行交叉模式激活命令的过程的流程图600。在该实施方案中,所描绘的过程由交叉模式启用逻辑(诸如,图3的逻辑304)在仲裁器处执行。在一些实施方案中,所描绘的过程与效率监视技术诸如图4或图5的那些效率监视技术一起使用。一般来讲,该过程通过允许来自交叉模式的行激活(ACT)命令在当前模式命令的拖尾的结束时发生以便隐藏用于交叉模式的页未命中/冲突请求的页打开等待时间来提高命令拖尾的效率。
在框602处,该过程开始待在存储器通道上与DRAM一起被处理的连续读取命令的拖尾。在框604处,该过程将一起构成读取命令的命令发送到DRAM。在某些所选择命令之后,命令总线具有可用时间,其中可以传输ACT命令以执行用于读取或写入命令的行激活。该过程需要从待发送的在仲裁器处可用的ACT命令进行选择,以便填充可用时间并且有效地使用命令总线。
在框606处,该过程检查是否存在与当前模式命令(在此情况下为读取命令)相关联的可用ACT命令。如果是,则该过程前进到框609,在该框处该过程发送用于读取命令的ACT命令中的所选择ACT命令。如果否,则过程前进到框608,在该框处该过程检查当前为交叉模式的可用写入命令是否大于或等于指定的最小阈值。如果是,则允许该过程发送交叉模式ACT命令,并且框610检查是否存在与写入命令相关联的可用ACT命令。如果是,则在框612处选择并且发送交叉模式ACT命令。如果在框610处没有交叉模式ACT可用,则该过程前进到框611,在该框处该过程不传输针对所考虑的命令总线时隙的ACT。
在框609或612处发送任一类型的ACT或在框611处跳过ACT之后,该过程前进到框614,在该框处该过程检查结束拖尾条件。导致拖尾结束的具体条件在不同的实施方案中不同。例如,可以使用图4或图5的过程,或者可以使用其它过程。在示例性另选的实施方案中,拖尾的长度由在拖尾开始时有多少命令可用于拖尾中的快照或计数来确定。此种快照通常可以很好地指示拖尾可以持续多长时间并且保持效率。在这种情况下,在框614处的拖尾结束条件将是拖尾的大小等于拖尾开始时可用命令的计数(快照)。响应于框614处的结束拖尾条件,该过程前进到框616,在该框处结束当前拖尾,交换当前模式和交叉模式,并且开始处理包括在框612处针对其发送ACT命令的任何交叉模式命令的交叉模式命令。如果在框614处未发现结束拖尾条件,则该过程返回到框604,在该框处该过程使当前拖尾继续发送读取命令。
图7是根据一些实施方案的用于执行交叉模式激活命令的另一过程的流程图700。所描绘的过程类似于图6的过程,不同之处在于,该过程描绘写入命令的拖尾而非读取命令的拖尾。在框702处,该过程开始待在存储器通道上被处理到DRAM的连续写入命令的拖尾。这通常伴随着先前拖尾(诸如在框616(图6)处的先前拖尾)的结束。在框704处,该过程将低级命令发送到DRAM以实现写入命令。
当ACT命令的可用时隙出现时,该过程需要从待发送的在仲裁器处可用的ACT命令进行选择。在框706处,过程检查是否存在与当前模式命令(写入命令)相关联的可用ACT命令。如果是,则该过程前进到框709,在该框处该过程发送用于写入命令的ACT命令中的所选择ACT命令。如果否,则过程前进到框708,在该框处该过程检查当前为交叉模式的可用读取命令是否大于或等于指定的最小阈值。如果是,则允许该过程发送交叉模式ACT命令,并且框710检查是否存在与写入命令相关联的可用ACT命令。当读取命令是交叉模式时,指定的最小阈值是读取阈值,并且当写入命令是交叉模式时(图6),指定的最小阈值是与读取阈值不同的写入阈值。读取阈值优选地低于写入阈值。
如果在框710处交叉模式ACT命令可用,则在框712处选择并发送交叉模式ACT命令。如果在框710处没有交叉模式ACT可用,则该过程前进到框711,在该框处该过程不传输针对所考虑的命令总线时隙的ACT。
在框709或712处发送任一类型的ACT或在框711处跳过ACT之后,该过程前进到框714,在该框处该过程检查结束拖尾条件。响应于框714处的结束拖尾条件,该过程前进到框616,在该框处结束当前拖尾,交换当前模式和交叉模式,并且开始处理包括在框712处针对其发送ACT命令的任何交叉模式命令的交叉模式命令。如果在框714处未发现结束拖尾条件,则该过程返回到框704,在该框处该过程使当前拖尾继续发送读取命令。
图2的存储器控制器200或其任何部分(诸如,仲裁器238和刷新控制逻辑232)可以由呈数据库形式的计算机可以访问数据结构或可以由程序读取并且直接或间接用于制造集成电路的其它数据结构来描述或表示。例如,该数据结构可以是高级设计语言(HDL)诸如Verilog或VHDL中的硬件功能性的行为级描述或寄存器传送级(RTL)描述。描述可由合成工具读取,合成工具可合成描述以产生包括来自合成馆的门列表的网表。网表包括门集,门集也表示包括集成电路的硬件的功能性。然后可以放置和路由网表以产生描述待应用于掩模的几何形状的数据集。然后可以在各种半导体制造步骤中使用掩模以产生集成电路。另选地,计算机可访问存储介质上的数据库可以是网表(具有或不具有合成库)或数据集(根据需要)或图形数据系统(GDS)II数据。
虽然已描述了特定实施方案,但是对这些实施方案的各种修改对于本领域技术人员将是显而易见的。例如,存储器通道控制器210和/或功率引擎250的内部架构在不同实施方案中可有所变化。存储器控制器200可接口连接到除了DDRx之外的其他类型的存储器,诸如高带宽存储器(HBM)、RAMbus DRAM(RDRAM)等。虽然所示的实施方案示出了对应于单独DIMM或SIMM的每个存储器存储列,但在其他实施方案中,每个模块可支持多个存储列。再其他实施方案可包括其他类型的DRAM模块或特定模块中未包含的DRAM,诸如安装到主机母板的DRAM。因此,所附权利要求书旨在覆盖所公开实施方案的落入所公开实施方案的范围内的所有修改。
Claims (28)
1.一种存储器控制器,包括:
命令队列,所述命令队列具有用于接收存储器访问请求的第一输入;
存储器接口队列,所述存储器接口队列具有用于耦接到存储器通道的输出,所述存储器通道适于耦接到至少一个动态随机存取存储器(DRAM);
仲裁器,所述仲裁器耦接到所述命令队列以用于从所述命令队列选择条目并将所述条目放置在所述存储器接口队列中,从而致使所述条目通过所述存储器通道被传输,所述仲裁器可操作以(a)通过所述存储器通道处理连续读取命令的拖尾和连续写入命令的拖尾,所述仲裁器具有指示当前正被处理的命令的类型的当前模式,其中所述类型指示读取和写入中的一者,以及指示另一种类型的交叉模式;(b)监视所述命令队列中用于所述当前模式和所述交叉模式的命令;(c)响应于指定条件,将一条可用交叉模式ACT命令发送到所述存储器接口队列用于交叉模式命令,同时继续以所述当前模式操作;以及(d)响应于结束拖尾条件,交换所述当前模式和所述交叉模式,并处理所述交叉模式命令。
2.根据权利要求1所述的存储器控制器,其中所述指定条件包括在所述仲裁器处可用的交叉模式命令的指定最小阈值。
3.根据权利要求2所述的存储器控制器,其中所述指定最小阈值包括当读取是所述交叉模式时的读取阈值和当写入是所述交叉模式时不同于所述读取阈值的写入阈值。
4.根据权利要求3所述的存储器控制器,其中所述读取阈值小于所述写入阈值。
5.根据权利要求1所述的存储器控制器,其中所述指定条件包括不存在可用的当前模式激活(ACT)命令。
6.根据权利要求1所述的存储器控制器,其中所述结束拖尾条件包括列地址选通(CAS)命令之间的一个或多个间隔的测量。
7.根据权利要求6所述的存储器控制器,其中所述结束拖尾条件包括最近传输的CAS命令与能够传输所选择后续CAS命令的时间之间的间隔。
8.根据权利要求1所述的存储器控制器,其中所述结束拖尾条件包括所发送的当前模式命令的数目等于在所述拖尾开始时所述仲裁器处可用的当前模式命令的数目的快照。
9.一种方法,包括:
致使连续读取命令的拖尾和连续写入命令的拖尾通过存储器通道被处理,所述拖尾基于指示当前正被处理的命令的类型的当前模式,其中所述类型指示读取或写入中的一者,以及包括另一种类型的交叉模式;
监视用于所述当前模式和所述交叉模式的可用命令;
响应于指定条件,将一条可用交叉模式ACT命令发送到所述存储器接口队列,同时继续以所述当前模式操作;以及
响应于结束拖尾条件,交换所述当前模式和所述交叉模式,并处理所述交叉模式命令。
10.根据权利要求9所述的方法,还包括:
接收包括存储器读取和存储器写入的多个存储器访问请求;以及
将用于履行所述存储器访问请求的存储器访问命令选择性地放置在存储器接口队列中,并且将所述存储器访问命令从所述存储器接口队列传输到耦接到至少一个动态随机存取存储器(DRAM)的存储器通道。
11.根据权利要求9所述的方法,其中所述指定条件包括要传输的可用的交叉模式命令的指定最小阈值。
12.根据权利要求11所述的方法,其中所述指定最小阈值包括当读取是所述交叉模式时的读取阈值和当写入是所述交叉模式时不同于所述读取阈值的写入阈值。
13.根据权利要求12所述的方法,其中所述读取阈值小于所述写入阈值。
14.根据权利要求9所述的方法,其中所述指定条件包括不存在可用的当前模式激活(ACT)命令。
15.根据权利要求9所述的方法,其中所述结束拖尾条件包括列地址选通(CAS)命令之间的一个或多个间隔的测量。
16.根据权利要求15所述的方法,其中所述结束拖尾条件包括最近传输的CAS命令与能够传输所选择后续CAS命令的最早时间之间的间隔。
17.根据权利要求9所述的方法,其中所述结束拖尾条件包括所发送的当前模式命令的数目等于在所述拖尾开始时可用的当前模式命令的数目的快照。
18.一种数据处理系统,包括:
中央处理单元;
数据织构,所述数据织构耦接到中央处理单元;以及
存储器控制器,所述存储器控制器耦接到所述数据织构以用于履行来自所述中央处理单元的存储器请求,所述存储器控制器包括:
命令队列,所述命令队列具有用于接收存储器访问请求的第一输入;
存储器接口队列,所述存储器接口队列具有用于耦接到存储器通道的输出,所述存储器通道适于耦接到至少一个动态随机存取存储器(DRAM);
仲裁器,所述仲裁器耦接到所述命令队列以用于从所述命令队列选择条目并将所述条目放置在所述存储器接口队列中,从而致使所述条目通过所述存储器通道被传输,所述仲裁器可操作以(a)通过所述存储器通道处理连续读取命令的拖尾和连续写入命令的拖尾,所述仲裁器具有指示当前正被处理的命令的类型的当前模式,其中所述类型指示读取和写入中的一者,以及指示另一种类型的交叉模式;(b)监视所述命令队列中用于所述当前模式和所述交叉模式的命令;(c)响应于指定条件,将一条可用交叉模式命令发送到所述存储器接口队列,同时继续以所述当前模式操作;以及(d)响应于结束拖尾条件,交换所述当前模式和所述交叉模式,并处理所述交叉模式命令。
19.根据权利要求18所述的数据处理系统,其中所述指定条件包括在所述仲裁器处可用的交叉模式命令的指定最小阈值。
20.根据权利要求19所述的数据处理系统,其中所述指定最小阈值包括当读取是所述交叉模式时的读取阈值和当写入是所述交叉模式时不同于所述读取阈值的写入阈值。
21.根据权利要求20所述的数据处理系统,其中所述读取阈值小于所述写入阈值。
22.根据权利要求18所述的数据处理系统,其中所述指定条件包括不存在可用的当前模式激活(ACT)命令。
23.根据权利要求18所述的数据处理系统,其中所述结束拖尾条件包括列地址选通(CAS)命令之间的一个或多个间隔的测量。
24.根据权利要求23所述的数据处理系统,其中所述结束拖尾条件包括最近传输的CAS命令与能够传输所选择后续CAS命令的时间之间的间隔。
25.根据权利要求18所述的数据处理系统,其中所述结束拖尾条件包括所发送的当前模式命令的数目等于在所述拖尾开始时所述仲裁器处可用的当前模式命令的数目的快照。
26.根据权利要求18所述的数据处理系统,其中响应于所述指定条件而发送的所述交叉模式命令是交叉模式ACT命令。
27.一种存储器控制器,包括:
命令队列,所述命令队列具有用于接收存储器访问请求的第一输入;
存储器接口队列,所述存储器接口队列具有用于耦接到存储器通道的输出,所述存储器通道适于耦接到至少一个动态随机存取存储器(DRAM);
仲裁器,所述仲裁器耦接到所述命令队列以用于从所述命令队列选择条目并将所述条目放置在所述存储器接口队列中,从而致使所述条目通过所述存储器通道被传输,所述仲裁器可操作以(a)通过所述存储器通道处理连续读取命令的拖尾和连续写入命令的拖尾,所述仲裁器具有指示当前正被处理的命令的类型的当前模式,其中所述类型指示读取和写入中的一者,以及指示另一种类型的交叉模式;(b)监视所述命令队列中用于所述当前模式和所述交叉模式的命令;(c)响应于包括在所述仲裁器处可用的交叉模式命令的指定最小阈值的指定条件,将至少一条交叉模式激活(ACT)命令发送到所述存储器接口队列用于交叉模式命令,同时继续以所述当前模式操作;以及(d)响应于结束拖尾条件,交换所述当前模式和所述交叉模式,并处理所述交叉模式命令。
28.根据权利要求27所述的存储器控制器,其中所述指定条件包括不存在可用当前模式ACT命令。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/900,632 | 2020-06-12 | ||
US16/900,632 US11625352B2 (en) | 2020-06-12 | 2020-06-12 | DRAM command streak management |
PCT/US2021/034072 WO2021252179A1 (en) | 2020-06-12 | 2021-05-25 | Dram command streak management |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115885268A true CN115885268A (zh) | 2023-03-31 |
Family
ID=78825470
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202180042010.XA Pending CN115885268A (zh) | 2020-06-12 | 2021-05-25 | Dram命令拖尾管理 |
Country Status (6)
Country | Link |
---|---|
US (1) | US11625352B2 (zh) |
EP (1) | EP4165513A1 (zh) |
JP (1) | JP2023530642A (zh) |
KR (1) | KR20230023014A (zh) |
CN (1) | CN115885268A (zh) |
WO (1) | WO2021252179A1 (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11609868B1 (en) * | 2020-12-31 | 2023-03-21 | Waymo Llc | Control calibration timing to avoid memory write blackout period |
CN116974958A (zh) * | 2022-04-21 | 2023-10-31 | 华为技术有限公司 | 内存控制器、内存、内存控制方法及相关设备 |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7194561B2 (en) * | 2001-10-12 | 2007-03-20 | Sonics, Inc. | Method and apparatus for scheduling requests to a resource using a configurable threshold |
US20070220361A1 (en) | 2006-02-03 | 2007-09-20 | International Business Machines Corporation | Method and apparatus for guaranteeing memory bandwidth for trace data |
US7617368B2 (en) | 2006-06-14 | 2009-11-10 | Nvidia Corporation | Memory interface with independent arbitration of precharge, activate, and read/write |
US9251899B2 (en) | 2008-02-12 | 2016-02-02 | Virident Systems, Inc. | Methods for upgrading main memory in computer systems to two-dimensional memory modules and master memory controllers |
CN101625625B (zh) * | 2008-07-11 | 2011-11-30 | 鸿富锦精密工业(深圳)有限公司 | 信号中继装置及利用该装置访问外部存储器的方法 |
US9535860B2 (en) | 2013-01-17 | 2017-01-03 | Intel Corporation | Arbitrating memory accesses via a shared memory fabric |
US9361240B2 (en) | 2013-04-12 | 2016-06-07 | International Business Machines Corporation | Dynamic reservations in a unified request queue |
US9489321B2 (en) | 2013-06-13 | 2016-11-08 | Advanced Micro Devices, Inc. | Scheduling memory accesses using an efficient row burst value |
KR101714180B1 (ko) | 2015-07-28 | 2017-03-08 | 현대자동차주식회사 | 자동차용 헤드램프 워셔 커버 장치 |
KR20170136382A (ko) * | 2016-06-01 | 2017-12-11 | 주식회사 맴레이 | 메모리 컨트롤러, 그리고 이를 포함하는 메모리 모듈 및 프로세서 |
US10402120B2 (en) * | 2016-07-15 | 2019-09-03 | Advanced Micro Devices, Inc. | Memory controller arbiter with streak and read/write transaction management |
US10684969B2 (en) * | 2016-07-15 | 2020-06-16 | Advanced Micro Devices, Inc. | Command arbitration for high speed memory interfaces |
US20190196996A1 (en) * | 2017-12-21 | 2019-06-27 | Advanced Micro Devices, Inc. | Dynamically determining memory access burst length |
US11188255B2 (en) * | 2018-03-28 | 2021-11-30 | Intel Corporation | Dynamic major mode for efficient memory traffic control |
CN108829348B (zh) * | 2018-05-29 | 2022-03-04 | 上海兆芯集成电路有限公司 | 存储器装置及命令重排序方法 |
US20210357336A1 (en) * | 2020-05-14 | 2021-11-18 | Advanced Micro Devices, Inc. | Efficient memory bus management |
-
2020
- 2020-06-12 US US16/900,632 patent/US11625352B2/en active Active
-
2021
- 2021-05-25 CN CN202180042010.XA patent/CN115885268A/zh active Pending
- 2021-05-25 JP JP2022576167A patent/JP2023530642A/ja active Pending
- 2021-05-25 EP EP21822299.0A patent/EP4165513A1/en active Pending
- 2021-05-25 KR KR1020237001239A patent/KR20230023014A/ko active Search and Examination
- 2021-05-25 WO PCT/US2021/034072 patent/WO2021252179A1/en unknown
Also Published As
Publication number | Publication date |
---|---|
WO2021252179A1 (en) | 2021-12-16 |
US20210390071A1 (en) | 2021-12-16 |
EP4165513A1 (en) | 2023-04-19 |
US11625352B2 (en) | 2023-04-11 |
JP2023530642A (ja) | 2023-07-19 |
KR20230023014A (ko) | 2023-02-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR20190022428A (ko) | 고속 메모리 인터페이스들을 위한 명령 중재 | |
US11669274B2 (en) | Write bank group mask during arbitration | |
JP7195486B1 (ja) | 異種メモリシステムに対するシグナリング | |
US11531601B2 (en) | Error recovery for non-volatile memory modules | |
US11137941B2 (en) | Command replay for non-volatile dual inline memory modules | |
CN115885268A (zh) | Dram命令拖尾管理 | |
CN117501230A (zh) | 多存储列存储器控制器中的高效存储列切换 | |
US11995008B2 (en) | Memory controller with hybrid DRAM/persistent memory channel arbitration | |
CN115605853A (zh) | 高效存储器总线管理 | |
EP3270294A1 (en) | Command arbitration for high-speed memory interfaces | |
US11687281B2 (en) | DRAM command streak efficiency management |
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 |