CN115185866A - 一种内存控制器、访问内存的控制方法及存储设备 - Google Patents
一种内存控制器、访问内存的控制方法及存储设备 Download PDFInfo
- Publication number
- CN115185866A CN115185866A CN202210880321.XA CN202210880321A CN115185866A CN 115185866 A CN115185866 A CN 115185866A CN 202210880321 A CN202210880321 A CN 202210880321A CN 115185866 A CN115185866 A CN 115185866A
- Authority
- CN
- China
- Prior art keywords
- instruction
- data
- rank
- arbitration
- memory
- 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/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
-
- 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
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Abstract
提供了一种内存控制器、访问内存的控制方法及存储设备,内存控制器用于访问动态随机存储器,动态随机存储器包括多个rank,内存控制器包括:第一缓存,用于存储针对动态随机存储器的数据读取指令;第二缓存,用于存储针对动态随机存储器的数据写入指令;仲裁模块,基于仲裁规则对数据读取指令和/或数据写入指令进行仲裁;其中,仲裁规则包括基于多个rank指令跳转的时序需求的仲裁规则。本申请实施例通过在内存访问指令的仲裁规则中增加基于多个rank指令跳转时序需求的仲裁规则,有助于提高内存控制器访问动态随机存储器的效率。
Description
技术领域
本申请涉及内存访问控制技术领域,更为具体的,涉及一种内存控制器、访问内存的控制方法及存储设备。
背景技术
动态随机存储器广泛应用于手机、手表、计算机等电子设备中。通过内存控制器可以控制动态随机存储器的数据读取以及数据写入的操作。当接收到多条动态随机存储器的访问指令时,内存控制器通常会基于仲裁规则对访问指令进行仲裁,以确定多条访问指令的执行顺序。例如,内存控制器可以基于读写的连续性的仲裁规则对访问指令进行仲裁。但是,现有仲裁规则下,内存控制器访问动态随机存储器的效率有待提升。
发明内容
本申请提供一种内存控制器、访问内存的控制方法及存储设备。下面对本申请实施例涉及的各个方面进行介绍。
第一方面,提供一种内存控制器。内存控制器用于访问动态随机存储器,动态随机存储器包括多个rank,内存控制器包括:第一缓存,用于存储针对动态随机存储器的数据读取指令;第二缓存,用于存储针对动态随机存储器的数据写入指令;仲裁模块,基于仲裁规则对数据读取指令和/或数据写入指令进行仲裁;其中,仲裁规则包括基于多个rank指令跳转的时序需求的仲裁规则。
第二方面,提供一种访问内存的控制方法。访问内存的控制方法用于控制动态随机存储器的访问,动态随机存储器包括多个rank,访问内存的控制方法包括:基于仲裁规则对针对动态随机存储器的数据读取指令和/或数据写入指令进行仲裁;其中,仲裁规则包括基于多个rank指令跳转的时序需求的仲裁规则。
第三方面,提供一种存储设备。存储设备包括动态随机存储器以及如第一方面所述的内存控制器。
本申请实施例通过在内存访问指令的仲裁规则中增加基于多个rank指令跳转时序需求的仲裁规则,有助于提高内存控制器访问动态随机存储器的效率。
附图说明
图1所示为一种内存控制器的结构示意图。
图2所示为一种DDR内存控制器的内部结构示意图。
图3所示为一种读模式切换到写模式的地址仲裁的流程示意图.
图4所示为一种写模式切换到读模式的地址仲裁的流程示意图。
图5所示为一种读模式切换到写模式的存储单元仲裁的流程示意图。
图6所示为一种写模式切换到读模式的存储单元仲裁的流程示意图。
图7所示为一种存储设备的结构示意图。
图8所示为一种访问内存的控制方法的流程示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。
动态随机存取存储器(dynamic random access memory,DRAM)是一种半导体存储器,主要原理是利用电容内存储电荷的多寡来代表一个二进制比特(bit)是1还是0。动态随机存储器因成本低、传输速度快、随时读写等优点,广泛应用于手机、手表、计算机等电子设备中。例如,动态随机存储器可以作为与处理器直接进行数据交换的内部存储器。又如,动态随机存储器可以作为操作系统或者正在运行中的程序的临时数据存储媒介。
内存控制器可以作为处理器与动态随机存储器之间数据交换的桥梁。例如,内存控制器可以控制动态随机存储器数据读取以及数据写入的操作。同时,内存控制器也可以决定系统的内存性能。例如,内存控制器可以决定处理器能够使用的最大内存容量、访问速度等重要参数。
当接收到多条动态随机存储器的访问指令时,内存控制器通常会基于仲裁规则对访问指令进行仲裁,以确定多条访问指令的执行顺序。在一些实现方式中,首先可以将多条访问指令存储在缓存中;其次,内存控制器可以基于仲裁规则对缓存中存储的指令进行仲裁。例如,内存控制器可以基于读写的连续性的仲裁规则对访问指令进行仲裁。也就是说,在仲裁规则中,将读指令尽可能地连接起来或者将写指令尽可能地连接起来。如果上一笔传输是读指令对应的操作,那么下一笔仲裁过程中,读指令的优先级会变高。如果上一笔传输是写指令对应的操作,那么下一笔仲裁过程中,写指令的优先级会变高。
双倍数据速率同步动态随机存储器(double data rate synchronous dynamicrandom access memory,DDR SDRAM)作为动态随机存储器的一种,广泛用于高性能计算、注重功耗及面积的移动应用中。以动态随机存储器为四通道单晶圆DDR为例,对内存控制器对访问指令进行仲裁的过程进行描述。
四通道(channel)单晶圆(die)DDR由四个内存单元集合(rank)组成,而每个内存单元集合中包括多个内存单元(bank)。其中,每个rank中包括的bank的数量可以由处理器的总线的位宽和bank的位宽确定。例如,处理器的接口位宽为64bit。也就是说,在一个时钟周期内处理器会向DDR发送或从DDR读取64bit的数据。bank的位宽为8bit,则rank通过将8个bank并联,以便于与处理器互联。作为一个示例,上一笔传输是DDR读指令对应的操作,下一笔仲裁结果为执行该DDR的读指令。如果该DDR的读指令包括多条,则随机执行该DDR的多条读指令中的任意一条。但是,该DDR的多条读指令中可能包括针对不同的rank的指令,由于rank属性的不同,跳转到多条读指令中针对不同的rank的指令的开销不同。例如,开销可以是时序需求。而目前的仲裁规则中没有考虑rank属性的规则。
为了解决上述问题,本申请实施例提供了一种内存控制器。本申请实施例通过在内存访问指令的仲裁规则中增加基于多个rank指令跳转时序需求的仲裁规则,有助于提高内存控制器访问动态随机存储器的效率。
图1为本申请实施例提供的一种内存控制器的结构示意图。内存控制器100可以用于访问动态随机存储器。在动态随机存储器的访问过程中,内存控制器100的功能可以包括以下中的一种或多种:对访问指令进行存储、仲裁、分解及转化等。在一些实现方式中,动态随机存储器中包括多个rank。
参见图1,内存控制器100包括第一缓存110、第二缓存120和仲裁模块130,下文结合图1对本申请的装置实施例进行详细介绍。
第一缓存110可以用于存储针对动态随机存储器的数据读取指令。数据读取指令的发送方可以包括多种。例如,数据读取指令可以由处理器发送,也可以由操作系统或者正在执行的应用发送。数据读取指令对应的目标数据可以位于动态随机存储器的任意位置。例如,目标数据可以位于动态随机存储器的一个bank。又如,目标数据可以位于动态随机存储器的一个rank。作为一个示例,对于双die的DDR,目标数据可以位于die1中的一个rank,也可以位于die0中的一个rank。
第一缓存110可以包括一个缓存(buffer),也可以包括多个buffer。作为一种实现方式,第一缓存110可以按照数据读取指令的发送方的不同分成多个buffer,每个buffer对应一个发送方。作为另一种实现方式,第一缓存110可以按照目标数据位置的不同分成多个buffer。例如,对于双die的DDR,第一缓存110可以分为两个buffer。其中,一个buffer用于存储目标数据位于die0的数据读取指令,另一个buffer用于存储目标数据位于die1的数据读取指令。
数据读取指令可以以多种方式存储在第一缓存110中。作为一个示例,数据读取指令可以以目标数据的地址范围存储在第一缓存110中。
第二缓存120可以用于存储针对动态随机存储器的数据写入指令。数据写入指令的发送方可以包括多种。例如,数据写入指令可以由处理器发送,也可以由操作系统或者正在执行的应用发送。数据写入指令对应的目标数据可以位于动态随机存储器的任意位置。例如,目标数据可以位于动态随机存储器的一个bank。又如,目标数据可以位于动态随机存储器的一个rank。作为一个示例,对于双die的DDR,目标数据可以位于die1中的一个rank,也可以位于die0中的一个rank。
第二缓存120可以包括一个buffer,也可以包括多个buffer。作为一种实现方式,第二缓存120可以按照数据写入指令的发送方的不同包括多个buffer,每个buffer对应一个发送方。作为另一种实现方式,第二缓存120可以按照目标数据位置的不同包括多个buffer。例如,对于双die的DDR,第二缓存120可以包括两个buffer。其中,一个buffer用于存储目标数据位于die0的数据写入指令,另一个buffer用于存储目标数据位于die1的数据写入指令。
在一些实现方式中,数据写入指令可以包括数据写入位置和待写入的目标数据。例如,数据写入指令中包括片选信号(CS)0为有效电平,则待写入数据的位置为die0。第二缓存120可以存储待写入的目标数据。而目标数据的写入地址可以由内存控制器在die0中随机进行分配。又如,数据写入指令中包括数据写入地址以及待写入数据。第二缓存120可以包括数据地址缓存以及待写入数据缓存。在另一些实现方式中,数据写入指令可以包括待写入的目标数据。目标数据的写入地址由内存控制器随机进行分配。
第一缓存110中的数据读取指令以及第二缓存120中的数据写入指令的执行顺序可以由仲裁模块130确定。作为一种实现方式,仲裁模块130可以基于仲裁规则对数据读取指令、数据写入指令进行仲裁,以确定上述指令的优先级。
仲裁模块130中的仲裁规则可以包括多种。例如,仲裁规则包括基于多个rank指令跳转的时序需求的仲裁规则。在一些实施例中,动态随机存储器包括rank1和rank2,由当前指令切换到针对rank1的指令的时序需求小于切换到针对rank2的指令的时序需求。也就是说,由当前指令切换到针对rank1的指令需要的时间小于切换到rank2的指令的时间。作为一个示例,由当前指令切换到针对rank1的指令需要1个时钟周期,由当前指令切换到针对rank2的指令需要16个时钟周期。仲裁模块130的仲裁结果可以为针对rank1的指令的优先级高于针对rank2的指令。
基于多个rank指令跳转的时序需求的仲裁规则,能够节省指令切换过程中的延迟开销,提高指令切换效率。进一步地,该仲裁规则能够带来动态随机存储器利用率的收益。
在一些实现方式中,仲裁模块130可以在数据读取指令和数据写入指令之间切换时,对待执行的指令进行仲裁。数据读取指令和数据写入指令之间的切换包括多种情况。例如,数据读取指令和数据写入指令之间的切换可以包括由数据读取指令切换至数据写入指令。也就是说,上一笔执行的指令为数据读取指令,下一笔待执行的指令为数据写入指令。换句话说,仲裁模块130对待执行的数据写入指令进行仲裁,以确定数据写入指令的优先级。又如,数据读取指令和数据写入指令之间的切换可以包括由数据写入指令切换至数据读取指令。也就是说,上一笔执行的指令为数据写入指令,下一笔待执行的指令为数据读取指令。再如,数据读取指令和数据写入指令之间的切换可以包括由数据读取指令切换至数据读取指令,也可以包括由数据写入指令切换至数据写入指令。
仲裁模块130中基于多个rank指令跳转的时序需求的仲裁规则可以单独使用,也可以结合其他仲裁规则一起使用。
在一些实现方式中,其他仲裁规则可以为基于读写连续性的仲裁规则。也就是说,如果上一笔执行的指令为数据读取指令,则对下一笔的指令进行仲裁时,数据读取指令的优先级更高。反之亦然。
在另一些实现方式中,其他仲裁规则可以为基于定时器超时的仲裁规则。作为一个示例,当前处于数据读取模式,数据写入定时器开启。当数据写入定时器超时的时候,若还处于数据读取模式,则系统可以从数据读取模式切换为数据写入模式。也就是说,当数据写入定时器超时的时候,下一笔仲裁过程中,数据写入指令的优先级更高。反之亦然。该规则仲裁可以避免系统长期处于其中一个模式,另一个模式的指令无法执行。
还有一些实施例中,其他仲裁规则可以为基于缓存队列空满情况的仲裁规则。作为一个示例,数据读取指令可以存储在读缓存队列,数据写入指令可以存储在写缓存队列。当前系统处于数据读取模式,如果写缓存队列中的数据写入指令超过预设阈值时,系统由数据读取模式切换至数据写入模式。反之亦然。缓存队列的预设阈值可以根据使用情况进行设置。例如,预设阈值可以为缓存队列存储空间的90%。缓存队列的预设阈值可以包括一个,也可以包括多个。该仲裁规则可以避免访问量过大时,访问指令超出缓存队列存储范围而造成的指令丢失。
以结合基于多个rank指令跳转的时序需求和基于定时器超时的仲裁规则为例,对基于多个rank指令跳转的时序需求的仲裁规则与其他仲裁规则结合使用进行介绍。例如,当前处于数据读取模式,数据写入定时器超时的时候,下一笔仲裁过程中,数据写入指令的优先级更高。而在待执行的数据写入指令中,切换到针对rank3的数据写入指令的时序需求最小,则切换到针对rank3的数据写入指令的优先级最高。
下文以处理器访问DDR为例,结合图2至图6对内存控制器的工作过程进行介绍。图2为一种DDR内存控制器的内部结构示意图。图3为一种读模式切换到写模式的地址仲裁的流程示意图。图4为一种写模式切换到读模式的地址仲裁的流程示意图。图5为一种读模式切换到写模式的存储单元仲裁的流程示意图。图6为一种写模式切换到读模式的存储单元仲裁的流程示意图。
参见图2,存储控制器200包括读地址缓存210、写地址缓存220、读/写模式仲裁230、写数据缓存240、存储单元队列及控制250。其中,读地址缓存210、写地址缓存220、写数据缓存240与处理器250相连。存储单元队列及控制250、写数据缓存240与DDR(260)相连。读地址缓存210可以为前文所述的第一缓存110,写地址缓存220可以为前文所述的第二缓存120,读写仲裁模块可以为前文所述的仲裁模块130。
存储控制器200可以将处理器250发送的数据读取指令、数据写入指令对应的地址分别存入读地址缓存210、写地址缓存220。存储控制器200也可以将处理器250发送的数据写入指令中对应的待写入数据存入写数据缓存240。
读/写模式仲裁230可以基于仲裁规则对读地址缓存210、写地址缓存220中地址对的指令进行仲裁。读/写模式仲裁230还可以结合存储单元队列当前的情况对上述仲裁结果进行二次仲裁。在一些实现方式中,存储单元队列及控制250可以将二次仲裁结果分解、处理成DDR(260)可执行的指令,并发送至DDR(260)。
根据读/写模式仲裁230的仲裁结果,写数据缓存240可以将数据发送至DDR(260)。例如,仲裁结果为执行写指令,写数据缓存240可以将该写指令对应的数据发送至DDR(260)。
在一些实现方式中,读/写模式仲裁230的仲裁规则包括基于读写连续性的仲裁规则、基于定时器超时的仲裁规则、基于缓存队列空满情况的仲裁规则以及基于多个rank指令跳转的时序需求的仲裁规则。其中,基于多个rank指令跳转的时序需求的仲裁规则应用于数据读取指令与数据写入指令的切换过程中。
参见图3,读模式切换到写模式的地址仲裁的流程示意图300包括S301至S316。
在步骤S301,系统处于数据读取模式N,也就是说,系统正在执行针对rank N的数据读取指令。
在步骤S302,判断写计时器是否超时,如果写计时器超时则跳转至步骤S303;如果写计时器未超时则跳转至步骤S304。
在步骤S303,基于定时器超时的仲裁规则,系统从读模式跳转至写模式。同时基于多个rank指令跳转的时序需求的仲裁规则,系统从读模式N跳转至写模式N+1。也就是说,系统从针对rank N的数据读取指令跳转至针对rank N+1的数据写入指令。
在步骤S304,继续执行数据读取指令。
在步骤S305,判断读地址缓存210的水位是否大于第二预设阈值(level 2)以及存储单元队列(bank queen,BQ)是否处于写模式。如果读地址缓存210的水位大于level 2,且BQ处于写模式,则跳转至步骤S308。如果读地址缓存210的水位不大于level 2且BQ不处于写模式,以及读地址缓存210的水位大于level 2或BQ处于写模式则跳转至步骤S306。
在步骤S306,判断写地址缓存220的水位是否大于level 2以及BQ是否处于写模式。如果写地址缓存220的水位大于level 2,且BQ处于读模式,则跳转至步骤S307。如果写地址缓存220的水位不大于level 2且BQ不处于读模式,以及写地址缓存220的水位大于level 2或BQ处于读模式则跳转至步骤S308。
在步骤S307,系统跳转至写模式N+1。
在步骤S308,继续执行数据读取指令。
在步骤S309,判断读地址缓存210的水位是否大于第一预设阈值(level 1)。如果读地址缓存210的水位大于level 1,则跳转至步骤S312。如果读地址缓存210的水位不大于level 1,则跳转至步骤S310。
在步骤S310,判断写地址缓存220的水位是否大于level 1。如果写地址缓存220的水位大于level 1,则跳转至步骤S311。如果写地址缓存220的水位不大于第一预设阈值level 1,则跳转至步骤S312。
在步骤S311,系统跳转至写模式N+1。
在步骤S312,继续执行数据读取指令。
在步骤S313,判断读地址缓存210中是否还有待处理指令。如果读地址缓存210还有待处理指令,则跳转至步骤S315。如果读地址缓存210中没有待处理指令,则跳转至步骤S314。
在步骤S314,判断写地址缓存220中是否还有待处理指令。如果写地址缓存220中还有待处理指令,则跳转至步骤S316。
在步骤S315,继续执行数据读取指令。
在步骤S316,系统跳转至写模式N+1。
参见图4,写模式切换到读模式的地址仲裁的流程示意图400包括S401至S412。
在步骤S401,系统处于数据写入模式N,也就是说,系统正在执行针对rank N的数据写入指令。
在步骤S402,判断读计时器是否超时,如果读计时器超时则跳转至步骤S403;如果读计时器未超时则跳转至步骤S404。
在步骤S403,基于定时器超时的仲裁规则,系统从写模式跳转至读模式。同时基于多个rank指令跳转的时序需求的仲裁规则,系统从写模式N跳转至读模式N+1。也就是说,系统从针对rank N的数据写入指令跳转至针对rank N+1的数据读取指令。
在步骤S404,继续执行数据写入指令。
在步骤S405,判断写地址缓存220的水位是否大于level 2以及BQ是否处于读模式。如果写地址缓存220的水位大于level 2,且BQ处于读模式,则跳转至步骤S408。如果写地址缓存220的水位不大于level 2且BQ不处于读模式,以及写地址缓存220的水位大于level 2或BQ处于读模式则跳转至步骤S406。
在步骤S406,判断读地址缓存210的水位是否大于level 2以及BQ是否处于写模式。如果读地址缓存210的水位大于level 2,且BQ处于写模式,则跳转至步骤S407。如果读地址缓存210的水位不大于level 2且BQ不处于写模式,以及读地址缓存210的水位大于level 2或BQ处于写模式则跳转至步骤S408。
在步骤S407,系统跳转至读模式N+1。
在步骤S408,继续执行数据写入指令。
在步骤S409,判断写地址缓存220中是否还有待处理指令。如果写地址缓存220中还有待处理指令,则跳转至步骤S412。如果写地址缓存220中没有待处理指令,则跳转至步骤S410。
在步骤S410,判断读地址缓存210中是否还有待处理指令。如果读地址缓存210还有待处理指令,则跳转至步骤S411。
在步骤S411,系统跳转至读模式N+1。
在步骤S412,继续执行数据写入指令。
需要说明的是,图3和图4中的流程图可以为LPDDR5中针对一个die的缓存队列中指令的切换流程图。作为一种实现方式,当前die的缓存队列中的指令已执行完成,可以切换到另一个die的缓存队列。
参见图5,读模式切换到写模式的存储队列仲裁的流程示意图500包括S501至S512。
在步骤S501,系统处于数据读取模式N。
在步骤S502,判断写计时器是否超时,如果写计时器超时则跳转至步骤S503;如果写计时器未超时则跳转至步骤S504。
在步骤S503,系统从针对rank N的数据读取指令跳转至针对rank N+1的数据写入指令。
在步骤S504,继续执行数据读取指令。
在步骤S505,判断存储单元队列及控制250中读地址的水位是否大于最低阈值。如果存储单元队列及控制250中读地址的水位大于最低阈值,则跳转至步骤S507。如果存储单元队列及控制250中读地址的水位不大于最低阈值,则跳转至步骤S506。
在步骤S506,判断存储单元队列及控制250中写地址的水位是否大于最高阈值。如果存储单元队列及控制250中写地址的水位大于最高阈值,则跳转至步骤S510。如果存储单元队列及控制250中写地址的水位不大于最高阈值,则跳转至步骤S507。
在步骤S507,继续执行数据读取指令。
在步骤S508,判断存储单元队列及控制250中是否还有待处理的数据读取指令。如果存储单元队列及控制250中还有待处理的数据读取指令,则跳转至步骤S509。如果存储单元队列及控制250中没有待处理的数据读取指令,则跳转至步骤S511。
在步骤S509,继续执行数据读取指令。
在步骤S510,系统跳转至写模式N+1。
在步骤S511,判断存储单元队列及控制250中是否还有待处理的数据写入指令。如果存储单元队列及控制250中还有待处理的数据写入指令,则跳转至步骤S512。
在步骤S512,系统跳转至写模式N+1。
参见图6,写模式切换到读模式的存储队列仲裁的流程示意图600包括S601至S612。
在步骤S601,系统处于数据写入模式N。
在步骤S602,判断读计时器是否超时,如果读计时器超时则跳转至步骤S603;如果读计时器未超时则跳转至步骤S604。
在步骤S603,系统从针对rank N的数据写入指令跳转至针对rank N+1的数据读取指令。
在步骤S604,继续执行数据写入指令。
在步骤S605,判断存储单元队列及控制260中写地址的水位是否大于最低阈值。如果存储单元队列及控制260中写地址的水位大于最低阈值,则跳转至步骤S607。如果存储单元队列及控制260中写地址的水位不大于最低阈值,则跳转至步骤S606。
在步骤S606,判断存储单元队列及控制260中读地址的水位是否大于最高阈值。如果存储单元队列及控制260中读地址的水位大于最高阈值,则跳转至步骤S610。如果存储单元队列及控制260中读地址的水位不大于最高阈值,则跳转至步骤S607。
在步骤S607,继续执行数据写入指令。
在步骤S608,判断存储单元队列及控制260中是否还有待处理的数据写入指令。如果存储单元队列及控制260中还有待处理的数据写入指令,则跳转至步骤S609。如果存储单元队列及控制260中没有待处理的数据写入指令,则跳转至步骤S611。
在步骤S609,继续执行数据写入指令。
在步骤S610,系统跳转至读模式N+1。
在步骤S611,判断存储单元队列及控制260中是否还有待处理的数据读取指令。如果存储单元队列及控制260中还有待处理的数据读取指令,则跳转至步骤S612。
在步骤S612,系统跳转至读模式N+1。
本申请实施例在数据读取和数据写入之间切换时,时序需求小的指令优先级更高,能够节省指令切换过程中的延迟开销,提高指令切换效率。
下文以动态随机存储器为低功耗双倍数据速率同步动态随机存储器(low powerdouble data rate synchronous dynamic random access memory,LPDDR)5为例,结合表1至表3对本申请实施例节约的延迟开销进行说明。
表1为不同的rank之间命令切换的时序需求表。该时序需求表对应的设置信息包括DQ ODT ON、NT-ODT ON、CAS-WS_FS Broadcast ON、Link ECC OFF。其中,上述设置信息可以参见第五代LPDDR协议。例如,DQ ODT ON为数据输入输出引脚打开终端电阻。
表1不同的rank之间命令切换的时序需求表
表2为相同的rank之间命令切换的一种时序需求表。该时序需求表对应的设置信息包括数据输入输出引脚的终端电阻已使能(DQ ODT is enabled)。
表2相同的rank之间命令切换的一种时序需求表
表3为相同的rank之间命令切换的另一种时序需求表。该时序需求表对应的设置信息包括数据输入输出引脚的终端电阻未使能(DQ ODT is disabled)。
表3为相同的rank之间命令切换的另一种时序需求表
表1至表3给出了切换到针对不同的rank的指令以及切换到针对相同的rank的指令的时序需求。表中时序需求与DDR的设置有关。例如,OTDLon、OTDLoff、tOTDLoff(max)、tODTon(min)均与终端电阻的设置相关。又如,RL为读取延迟,BL为突发长度。
参见表1,从数据读取指令切换至数据写入指令,同时数据读取指令和数据写入指令对应不同的rank,则需要的延迟T1为23个时钟周期,计算过程如下。
T1=RL(19)+BL/n_min(6)+tWCK2DQO(max)(1.6ns)-ODTLon(WL-3)
-tODTmin(1.5ns)+1+tRPST
=23(cycle)
同理,从数据写入指令切换到不同rank的数据读取指令的延迟T2为1个时钟周期,计算过程如下。
T2=ODTLoff(WL+7)+RU(tODToff(max)/tCK(3.5ns)-RL)+tRPRE
=1(cycle)
参见表2,从数据读取指令切换至数据写入指令,同时数据读取指令和数据写入指令对应相同的rank,则需要的延迟T3为23个时钟周期,计算过程如下。
T3=RL(19)+BL/n_min(6)+tWCK2DQO(max)(1.6ns)-ODTLon(RL+9)-tODTmin(1.5ns)+1
=23(cycle)
参见表3,从数据写入指令切换到相同rank的数据读取指令的延迟T4为16个时钟周期,计算过程如下。
T4=WL(9)+BL/n_min(2)+tWTR(6.25ns)=16(cycle)
综上所述,数据写入指令切换到针对不同rank的数据读取指令的时序需求为1个时钟周期,而数据写入指令切换到针对相同rank的数据读取指令的时序需求为16个时钟周期。因此,内存控制器中仲裁模块的仲裁规则可以包括由数据写入指令切换至数据读取指令,与数据写入指令对应不同的rank指令的优先级高于对应相同的rank的指令,能够大幅减少读写切换的延迟。在一些随机的模式中,最大可以得到20%的收益。
图7为本申请实施例提供的一种存储设备的结构示意图。存储设备700可以为计算机或电子设备中的主存。
参见图7,存储设备700包括动态随机存储器710和如前文所述的内存控制器720。
上文结合图1至图7详细描述了本申请的装置实施例,下面结合图8,详细描述本申请的方法实施例。应理解,方法实施例的描述与装置实施例的描述相互对应,因此,未详细描述的部分可以参见前面装置实施例。
图8为本申请实施例提供的访问内存的控制方法的流程示意图。访问内存的控制方法800用于控制动态随机存储器的访问。其中,动态随机存储器包括多个rank。
参见图8,访问内存的控制方法800包括步骤S810。
在步骤S810,基于仲裁规则对针对动态随机存储器的数据读取指令和/或数据写入指令进行仲裁;其中,仲裁规则包括基于多个rank指令跳转的时序需求的仲裁规则。
可选地,多个rank包括第一rank和第二rank,控制方法包括:响应于数据读取指令和数据写入指令之间的切换,针对第一rank的指令的优先级高于针对第二rank的指令;其中,切换至针对第一rank的指令的时序需求小于切换至针对第二rank的指令的时序需求。
可选地,仲裁规则还包括以下中的一种或多种:基于读写连续性的仲裁规则、基于定时器超时的仲裁规则、基于缓存队列空满情况的仲裁规则。
可选地,动态随机存储器为第五代低功耗双倍数据速率存储器,控制方法包括:响应于由数据写入指令切换至数据读取指令,在数据读取指令中,与数据写入指令对应不同的rank的指令的优先级高于对应相同的rank的指令。
需要说明的是,本申请实施例提供的每个时序需求表仅对应一个设置状态下的时序需求,并不代表本申请实施例的适用范围。
需要说明的是,本申请实施例中的时序需求信息摘自第五代LPDDR协议。
应理解,在本申请实施例中,“与A相应的B”表示B与A相关联,根据A可以确定B。但还应理解,根据A确定B并不意味着仅仅根据A确定B,还可以根据A和/或其它信息确定B。
应理解,本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
应理解,在本申请的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(digital subscriber Line,DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够读取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,数字通用光盘(digital video disc,DVD))或者半导体介质(例如,固态硬盘(solid state disk,SSD))等。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。
Claims (10)
1.一种内存控制器,其特征在于,所述内存控制器用于访问动态随机存储器,所述动态随机存储器包括多个rank,所述内存控制器包括:
第一缓存,用于存储针对所述动态随机存储器的数据读取指令;
第二缓存,用于存储针对所述动态随机存储器的数据写入指令;
仲裁模块,基于仲裁规则对所述数据读取指令和/或所述数据写入指令进行仲裁;
其中,所述仲裁规则包括基于所述多个rank指令跳转的时序需求的仲裁规则。
2.根据权利要求1所述的内存控制器,其特征在于,所述多个rank包括第一rank和第二rank,所述仲裁模块具体用于:
响应于所述数据读取指令和所述数据写入指令之间的切换,针对所述第一rank的指令的优先级高于针对所述第二rank的指令;
其中,切换至针对所述第一rank的指令的时序需求小于切换至针对所述第二rank的指令的时序需求。
3.根据权利要求1所述的内存控制器,其特征在于,所述仲裁规则还包括以下中的一种或多种:基于读写连续性的仲裁规则、基于定时器超时的仲裁规则、基于缓存队列空满情况的仲裁规则。
4.根据权利要求1所述的内存控制器,其特征在于,所述第一缓存还可以用于存储所述数据读取指令对应的数据地址,所述第二缓存还可以用于存储所述数据写入指令对应的数据地址。
5.根据权利要求2所述的内存控制器,其特征在于,所述动态随机存储器为第五代低功耗双倍数据速率存储器,所述仲裁模块具体用于:
响应于由所述数据写入指令切换至所述数据读取指令,在所述数据读取指令中,与所述数据写入指令对应不同的rank的指令的优先级高于对应相同的rank的指令。
6.一种访问内存的控制方法,其特征在于,所述访问内存的控制方法用于控制动态随机存储器的访问,所述动态随机存储器包括多个rank,所述控制方法包括:
基于仲裁规则对针对所述动态随机存储器的数据读取指令和/或数据写入指令进行仲裁;
其中,所述仲裁规则包括基于所述多个rank指令跳转的时序需求的仲裁规则。
7.根据权利要求6所述的访问内存的控制方法,其特征在于,所述多个rank包括第一rank和第二rank,所述控制方法包括:
响应于所述数据读取指令和所述数据写入指令之间的切换,针对所述第一rank的指令的优先级高于针对所述第二rank的指令;
其中,切换至针对所述第一rank的指令的时序需求小于切换至针对所述第二rank的指令的时序需求。
8.根据权利要求6所述的访问内存的控制方法,其特征在于,所述仲裁规则还包括以下中的一种或多种:基于读写连续性的仲裁规则、基于定时器超时的仲裁规则、基于缓存队列空满情况的仲裁规则。
9.根据权利要求7所述的访问内存的控制方法,其特征在于,所述动态随机存储器为第五代低功耗双倍数据速率存储器,所述控制方法包括:
响应于由所述数据写入指令切换至所述数据读取指令,在所述数据读取指令中,与所述数据写入指令对应不同的rank的指令的优先级高于对应相同的rank的指令。
10.一种存储设备,其特征在于,所述存储设备包括动态随机存储器以及如权利要求1-5所述的内存控制器。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210880321.XA CN115185866A (zh) | 2022-07-25 | 2022-07-25 | 一种内存控制器、访问内存的控制方法及存储设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210880321.XA CN115185866A (zh) | 2022-07-25 | 2022-07-25 | 一种内存控制器、访问内存的控制方法及存储设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115185866A true CN115185866A (zh) | 2022-10-14 |
Family
ID=83521211
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210880321.XA Pending CN115185866A (zh) | 2022-07-25 | 2022-07-25 | 一种内存控制器、访问内存的控制方法及存储设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115185866A (zh) |
-
2022
- 2022-07-25 CN CN202210880321.XA patent/CN115185866A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR20230153986A (ko) | 행 해머 완화의 호스트 지원을 위한 리프레시 커맨드 제어 | |
US9477617B2 (en) | Memory buffering system that improves read/write performance and provides low latency for mobile systems | |
US11036412B2 (en) | Dynamically changing between latency-focused read operation and bandwidth-focused read operation | |
CN111209232B (zh) | 访问静态随机存取存储器的方法、装置、设备和存储介质 | |
EP3470971B1 (en) | Method, apparatus, and system for accessing memory device | |
CN106856098B (zh) | 一种用于DRAM或eDRAM刷新的装置及其方法 | |
CN110520929B (zh) | 内存刷新方法、装置及计算机系统 | |
US10908846B2 (en) | Memory system and operation method thereof | |
KR20210091647A (ko) | 비휘발성 메모리에 대한 자동 증분 기입 카운트 | |
JP2014154119A (ja) | メモリ制御装置及び半導体記憶装置 | |
WO2019141050A1 (zh) | 一种刷新处理方法、装置、系统及内存控制器 | |
CN116257191B (zh) | 存储器的控制器、组件、电子设备及命令调度方法 | |
US10031884B2 (en) | Storage apparatus and method for processing plurality of pieces of client data | |
CN100536021C (zh) | 大容量高速缓冲存储器 | |
JP2016218635A (ja) | 情報処理装置、メモリ制御装置、および情報処理装置の制御方法 | |
WO2015158264A1 (zh) | 控制内存芯片的方法、芯片控制器和内存控制器 | |
CN115185866A (zh) | 一种内存控制器、访问内存的控制方法及存储设备 | |
US9122565B2 (en) | Memory controller and memory control method | |
US11308010B2 (en) | Memory system having memories of different capacities | |
US9766821B2 (en) | Access controlling method of dual port memory system | |
US20230152977A1 (en) | Memory Management Technology and Computer System | |
KR102335798B1 (ko) | 다수의 클라이언트 데이터를 처리하는 저장 장치 및 방법 | |
US20230343381A1 (en) | Bank-Level Self-Refresh | |
US20240070093A1 (en) | Asymmetric Read-Write Sequence for Interconnected Dies | |
US20240070096A1 (en) | Erroneous Select Die Access (SDA) Detection |
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 |