CN110546707B - 内存刷新技术及计算机系统 - Google Patents

内存刷新技术及计算机系统 Download PDF

Info

Publication number
CN110546707B
CN110546707B CN201780089579.5A CN201780089579A CN110546707B CN 110546707 B CN110546707 B CN 110546707B CN 201780089579 A CN201780089579 A CN 201780089579A CN 110546707 B CN110546707 B CN 110546707B
Authority
CN
China
Prior art keywords
rank
refresh
memory
threshold
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.)
Active
Application number
CN201780089579.5A
Other languages
English (en)
Other versions
CN110546707A (zh
Inventor
胡杏
梁传增
肖世海
王侃文
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Publication of CN110546707A publication Critical patent/CN110546707A/zh
Application granted granted Critical
Publication of CN110546707B publication Critical patent/CN110546707B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/21Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
    • G11C11/34Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
    • G11C11/40Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
    • G11C11/401Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming cells needing refreshing or charge regeneration, i.e. dynamic cells
    • G11C11/406Management or control of the refreshing or charge-regeneration cycles
    • G11C11/40618Refresh operations over multiple banks or interleaving
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/21Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
    • G11C11/34Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
    • G11C11/40Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
    • G11C11/401Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming cells needing refreshing or charge regeneration, i.e. dynamic cells
    • G11C11/406Management or control of the refreshing or charge-regeneration cycles
    • G11C11/40611External triggering or timing of internal or partially internal refresh operations, e.g. auto-refresh or CAS-before-RAS triggered refresh
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/161Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement
    • G06F13/1636Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement using refresh
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/21Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
    • G11C11/34Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
    • G11C11/40Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
    • G11C11/401Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming cells needing refreshing or charge regeneration, i.e. dynamic cells
    • G11C11/406Management or control of the refreshing or charge-regeneration cycles

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Computer Hardware Design (AREA)
  • Human Computer Interaction (AREA)
  • Dram (AREA)
  • Memory System (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

一种内存刷新技术及计算机系统,所述内存刷新技术应用于包括内存控制器以及动态随机存取存储器DRAM的计算机系统中,根据所述内存刷新技术,所述内存控制器接收访存请求,当接收的访存请求中访问所述DRAM中的第一rank的访存请求的数量大于0且小于第二阈值时,所述内存控制器对所述第一rank进行刷新。该方法使得即使第一rank无法处于空闲状态,也能够及时得到刷新。从而降低了因为延迟刷新而产生的被动刷新次数的增加对计算机系统性能的影响,提高内存刷新的灵活性,减少了刷新开销。

Description

内存刷新技术及计算机系统
技术领域
本申请涉及计算机技术领域,尤其涉及一种内存刷新技术及计算机系统。
背景技术
传统的系统主存通常由动态随机存取存储器(Dynamic Random Access Memory,DRAM)组成。DRAM的结构简单并且读取速度快。DRAM的最基本存储单元为DRAM cell,每个DRAM cell包括一个晶体管和一个电容。DRAM cell利用电容存储电量的多寡来代表0和1。根据这种方式,一个DRAM cell可以存储一个比特(bit)。由于电容存在漏电现象,如果电容中的电荷不足,会导致存储的数据出错,因此,实际应用中,需要对电容进行周期性的充电才能保持存储在电容中的信息不丢失。这种给DRAM内部电容充电的动作叫做刷新。
DRAM中的DRAM cell被排列分布成一个矩阵,这个矩阵我们称之为DRAM bank,通过相应的行列解码器可以定位到DRAM bank中的任意一个bit。多个DRAM bank可以组成一个DRAM chip,多个DRAM chip可以组成一个DRAM rank,多个DRAM rank又可以被集成为一个双列直插式存储模块(Dual-Inline-Memory-Modules,DIMM)。DRAM cell的刷新由检测放大器(Sense Amp)按行进行,在刷新过程中,可以根据一个刷新命令刷新一个或者多个bank中的行。实际应用中,一般以rank为单位进行刷新。具体的,在保持时间(retention time)内,该rank内的所有bank的行需要至少刷新一次,其中,保持时间是指DRAM cell中的数据在无刷新操作的情况下能保持数据不丢失的时间。
本领域技术人员可以知道,内存控制器每隔tREFI的时间检查是否需要对Rank进行刷新,每次刷新需要消耗tRFC段时间。其中,tREFI用于指示平均刷新时间间隔(averagerefresh interval);tRFC用于指示行刷新周期时间(Refresh Cycle Time)。换一种表达方式,tREFI用于指示内存控制器发送刷新命令的平均时间间隔,tRFC用于指示在DRAM rank中执行一次刷新命令所需的时间。在现有技术的刷新方案中,当该rank空闲时,内存控制器对rank进行刷新,否则内存控制器将推迟对rank刷新。当推迟时间超过阈值时,内存控制器会强制对该rank进行刷新,并且会将延迟的刷新进行补刷新,从而造成在需要进行补刷的时间段内刷新的次数较多。由于在刷新过程中,在这个大小为tRFC的时间窗内,被刷新的rank不能响应其他的操作请求。因此,在这种强制补刷的情况下可能造成系统较大的刷新开销。
发明内容
本申请提供的一种内存刷新技术及计算机系统,能够减少系统刷新损耗,在刷新过程中提升计算机系统的性能。
第一方面,本发明实施例提供了一种内存刷新方法,所述方法应用于包括内存控制器以及动态随机存取存储器DRAM的计算机系统中。在所述方法中,所述内存控制器接收访存请求。当接收的访存请求中访问所述DRAM中的第一rank的访存请求的数量大于0且小于第二阈值时,所述内存控制器对所述第一rank进行刷新。
本发明实施例所述的内存刷新方法中,为了减少内存刷新过程中对计算机系统的性能的影响,综合考虑了接收的访存请求的情况以及访问的目标rank的情况来确定是否需要对目标rank进行刷新。具体的,当接收的访存请求中访问DRAM中的第一rank中的访存请求的数量大于0且小于第二阈值时,所述内存控制器可以对所述第一rank进行刷新。根据这种方式,即使第一rank没有处于空闲状态,也能够主动对第一rank进行刷新。从而,在访存流量较大的情况下,即使第一rank无法处于空闲状态,也能够及时得到刷新。降低了因为延迟刷新而产生的被动刷新对计算机系统性能的影响,提高内存刷新的灵活性。从而能够提高系统性能,减少刷新开销。
在第一种可能的实现方式中,所述内存控制器对所述第一rank进行刷新包括:当所述接收的访存请求的目标rank的数量小于设置的第四阈值,并且,所述访存请求中读请求的比例或写请求的比例大于设置的第五阈值时,所述内存控制器按照T/N的时间间隔对所述第一rank进行刷新,其中,T用于指示标准的平均刷新时间间隔,N为大于1的整数。
在本发明实施例中,在刷新内存过程中,还可以根据访存请求待访问的目标rank的分布情况以及访存请求中的读写比例选择刷新模式。具体的,当访问的目标rank较为集中,且访存请求中读请求的比例或写请求的比例较大时,可以减少单次刷新的时间间隔,或者说,以更快的刷新频率对所述第一rank进行刷新。因为平均刷新时间间隔较短,单次刷新时间也较短,从而在单次刷新过程中,系统受tFAW限制的影响较小,系统的整体性能下降较少。根据这种方式可以减少系统在刷新过程中受DDR协议中的tFAW限制的影响,提高系统性能。
结合第一方面及第一方面的第一种可能的实现方式,在第二种可能的实现方式中,在所述内存控制器对所述第一rank进行刷新的过程中,所述内存控制器接收访问所述第一rank的第一访存请求之后,所述内存控制器将所述第一访存请求缓存在设置的缓存队列中。其中,所述内存控制器中至少包括缓存队列和调度队列,所述缓存队列用于缓存正在被执行刷新操作的rank的访存请求,所述调度队列用于缓存待发送给未被执行刷新操作的RANK的访存请求。根据这种方式,能够防止在第一rank刷新的过程中接收的所述第一rank的访存请求堵塞调度队列,影响内存控制器对其他rank的访存请求的处理。进一步提高整计算机系统的处理效率。
结合第一方面的第二种可能的实现方式,在第三种可能的实现方式中,所述内存控制器还接收访问所述DRAM中的第二rank的第二访存请求。在当所述第二rank没有被刷新时,所述内存控制器将所述第二访存请求缓存在所述调度队列中。
结合第一方面以及第一方面的第一种至第三种任意一种可能的实现方式,在第四种可能的实现方式中,所述方法还包括当所述接收的访存请求中访问所述DRAM中的第二rank的访存请求的数量不小于所述第二阈值,且所述第二rank的延迟刷新次数大于设置的第三阈值时,所述内存控制器对所述第二RANK进行刷新。其中,所述第三阈值不小于1且小于设置的预警值,所述预警值用于指示需要立即对所述第二rank执行刷新操作。
结合第一方面以及第一方面的第一种至第四种任意一种可能的实现方式,在第五种可能的实现方式中,所述方法还包括当所述接收的访存请求中访问所述DRAM中的第三rank的访存请求的数量不小于所述第二阈值,并且所述第三rank的延迟刷新次数不大于设置的第三阈值时,所述内存控制器不对所述第三rank执行刷新操作。其中,所述第三阈值不小于1且小于设置的预警值,所述预警值用于指示需要立即对所述第三rank执行刷新操作。
结合第一方面,在第六种可能的实现方式中,所述内存控制器对所述第一rank进行刷新包括:当所述接收的访存请求的目标rank的数量不小于设置的第四阈值,并且,所述访存请求中读请求的比例或写请求的比例不大于设置的第五阈值时,所述内存控制器按照T的时间间隔对所述第一rank进行刷新。其中,T用于指示标准的平均刷新时间间隔。
结合第一方面以及第一方面的第一种至第六种任意一种可能的实现方式,在第七种可能的实现方式中,所述方法还包括:当所述内存控制器确定在另一时间段接收的访存请求的数量不大于第一阈值,且访问所述DRAM中的第三rank的访问请求的数量大于0时,若所述第三rank的延迟刷新次数大于设置的所述第三阈值,则所述内存控制器对所述第三rank进行刷新。其中,所述第三阈值小于设置的预警值,所述预警值用于指示需要立即对所述第三rank进行刷新。
结合第一方面以及第一方面的第一种至第七种任意一种可能的实现方式,在第八种可能的实现方式中,所述方法还包括:当所述内存控制器确定在另一时间段接收的访存请求的数量不大于第一阈值,且访问所述DRAM中的第二rank的访问请求的数量大于0时,若所述第二rank的延迟刷新次数不大于设置的第三阈值,则所述内存控制器不对所述第二rank进行刷新。其中,所述第三阈值小于设置的预警值,所述预警值用于指示需要立即对所述第二rank进行刷新。
第二方面,本申请提供了一种计算机系统。所述计算机系统包括内存控制器以及与所述内存控制器连接的动态随机存取存储器DRAM。其中,所述内存控制器用于执行上述第一方面以及第一方面的任意一种可能的实现方式中的方法。
第三方面,本申请提供了一种内存控制器,所述内存控制器用于对计算机系统中的动态随机存取存储器DRAM进行刷新。所述内存控制器包括通信接口和刷新电路。所述通信接口用于接收所述计算机系统中的处理器发送的访存请求。所述刷新电路用于当接收的访存请求中访问所述计算机系统中的动态随机存取存储器DRAM中的第一rank的访存请求的数量大于0且小于第二阈值时,对所述第一rank进行刷新。
结合第三方面,在第一种可能的实现方式中,所述刷新电路具体用于:当所述接收的访存请求的目标RANK的数量小于设置的第四阈值,并且,所述访存请求中读请求的比例或写请求的比例大于设置的第五阈值时,按照T/N的时间间隔对所述第一rank进行刷新,其中,T用于指示标准的平均刷新时间间隔,N为大于1的整数。
结合第三方面以及第三方面的第一种可能的实现方式,在第二种可能的实现方式中,所述通信接口还用于接收在所述刷新电路对所述第一rank进行刷新的过程中,接收访问所述第一rank的第一访存请求。所述内存控制器还包括缓存,所述缓存用于将所述第一访存请求缓存在设置的缓存队列中。其中,所述内存控制器中至少包括缓存队列和调度队列,所述缓存队列用于缓存正在被执行刷新操作的rank的访存请求,所述调度队列用于缓存待发送给未被执行刷新操作的RANK的访存请求。
结合第三方面的第二种可能的实现方式,在第三种可能的实现方式中,所述通信接口还用于接收访问所述DRAM中的第二rank的第二访存请求。所述缓存还用于当所述第二rank没有被刷新时,将所述第二访存请求缓存在所述调度队列中。
结合第三方面以及第三方面的第一种至第三种中任意一种可能的实现方式,在第四种可能的实现方式中,所述刷新电路还用于:当所述接收的访存请求中访问所述DRAM中的第二rank的访存请求的数量不小于所述第二阈值,且所述第二rank的延迟刷新次数大于设置的第三阈值时,对所述第二RANK进行刷新。其中,所述第三阈值不小于1且小于设置的预警值,所述预警值用于指示需要立即对所述第二rank执行刷新操作。
结合第三方面以及第三方面的第一种至第四种中任意一种可能的实现方式,在第五种可能的实现方式中,所述刷新电路还用于:当所述接收的访存请求中访问所述DRAM中的第三rank的访存请求的数量不小于所述第二阈值,并且所述第三rank的延迟刷新次数不大于设置的第三阈值时,不对所述第三rank执行刷新操作,其中,所述第三阈值不小于1且小于设置的预警值,所述预警值用于指示需要立即对所述第三rank执行刷新操作。
结合第三方面,在第六种可能的实现方式中,所述刷新电路具体用于:当所述接收的访存请求的目标rank的数量不小于设置的第四阈值,并且,所述访存请求中读请求的比例或写请求的比例不大于设置的第五阈值时,按照T的时间间隔对所述第一rank进行刷新,其中,所述T用于指示标准的平均刷新时间间隔。
第四方面,本申请还提供了一种内存刷新装置。所述内存刷新装置用于对计算机系统中的动态随机存取存储器DRAM进行刷新。所述内存刷新装置包括用于执行上述第一方面以及第一方面的任意一种可能的实现方式中的方法的功能模块。
第五方面,本申请还提供了一种计算机程序产品,包括程序代码,所述程序代码包括的指令被计算机所执行,以实现所述第一方面以及所述第一方面的任意一种可能的实现方式中所述的方法。
第六方面,本申请还提供了一种计算机可读存储介质,所述计算机可读存储介质用于存储程序代码,所述程序代码包括的指令被计算机所执行,以实现前述第一方面以及所述第一方面的任意一种可能的实现方式中所述的方法。
附图说明
为了更清楚的说明本发明实施例或现有技术中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例。
图1为本发明实施例提供的一种计算机系统架构示意图;
图2为本发明实施例提供的一种内存控制器的结构示意图;
图3为本发明实施例提供的一种内存刷新方法的流程示意图;
图4为本发明实施例提供的一种内存刷新装置的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚的描述。显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。
图1为本发明实施例提供的计算机系统架构示意图。如图1所示,计算机系统100至少可以包括处理器102、内存控制器106以及内存108。通常,内存控制器106可以集成在处理器102中。需要说明的是,本发明实施例提供的计算机系统中,除了图1所示的器件外,计算机系统100还可以包括通信接口以及作为外存的磁盘等其他器件,在此不做限制。
处理器(Processor)102是计算机系统100的运算核心和控制核心(ControlUnit)。处理器102中可以包括多个处理器核(core)104。处理器102可以是一块超大规模的集成电路。在处理器102中安装有操作系统和其他软件程序,从而处理器102能够实现对内存108、缓存及磁盘的访问。可以理解的是,在本发明实施例中,处理器102中的Core 104例如可以是中央处理器(Central Processing unit,CPU),还可以是其他特定集成电路(Application Specific Integrated Circuit,ASIC)。
内存控制器(Memory Controller)106是计算机系统100内部控制内存108并用于管理与规划从内存108到Core 104间的数据传输的总线电路控制器。通过内存控制器106,内存108与Core 104之间可以交换数据。内存控制器106可以是一个单独的芯片,并通过系统总线与Core 104连接。本领域技术人员可以知道,内存控制器106也可以被集成到处理器102中(如图1所示)也可以被内置于北桥中。本发明实施例不对内存控制器20的具体位置进行限定。实际应用中,内存控制器106可以控制必要的逻辑以将数据写入内存108或从内存108中读取数据。
内存108是计算机系统100的主存。内存108通过双倍速率(double data rate,DDR)总线和内存108相连。内存108通常用来存放操作系统中各种正在运行的软件、输入和输出数据以及与外存交换的信息等。为了提高处理器102的访问速度,内存108需要具备访问速度快的优点。在传统的计算机系统架构中,通常采用动态随机存取存储器(DynamicRandom Access Memory,DRAM)作为内存108。处理器102能够通过内存控制器106高速访问内存108,对内存1080中的任意一个存储单元进行读操作和写操作。
在本发明实施例中,以内存108为DRAM为例进行描述,因此,内存108也可以被称为DRAM 108。数据存储于DRAM 108的存储单元(又可以被称为DRAM cell)中,在本发明实施例中,存储单元是指用于存储数据的最小存储单元(cell)。通常,一个存储单元可以存储1位(bit)数据。当然,有的存储单元也可以实现多值存储。如前所述,DRAM是利用电容存储电量的多寡来代表数据0和1。由于电容存在漏电现象,如果电容中的电荷不足,会导致存储的数据出错。因此,每隔一段时间,内存控制器106会刷新DRAM108中的数据,以防止DRAM 108丢失数据。并且,DRAM 108是易失性的,当计算机系统100关闭电源后,DRAM 108中的信息将不再保存。
实际应用中,DRAM 108中的DRAM cell被排列分布成一个矩阵,这个矩阵我们称之为DRAM bank,内存控制器106通过相应的行列解码器可以定位到DRAM bank中的任意一个bit。多个DRAM bank可以组成一个DRAM chip(又可被称为内存芯片),多个DRAM chip可以组成一个DRAM rank。多个DRAM rank又可以被集成为一个双列直插式存储模块(Dual-Inline-Memory-Modules,DIMM)。例如,如图1所示,DRAM 108可以包括多个通道(channel)110。每个通道110中可以包括至少一个rank,每个rank中可以包括至少一个bank。每个bank都包括多个用于存储数据的存储单元。本领域技术人员可以知道,rank指的是连接到同一个片选(chip select)信号的内存颗粒(chip)。内存控制器能够对同一个rank中的chip进行写操作,而在同一个rank的chip也共享同样的控制信号。内存控制器106可以通过内存总线分别访问DRAM 108中各个通道内的存储单元中的数据。
本领域技术人员可以知道,DRAM芯片的刷新周期与DRAM芯片中的每个存储单元的保持时间(retention time)有关。目前常见的DRAM芯片的标准刷新周期都是固定的。通常,标准刷新周期为64ms。现有技术的刷新方案中,内存控制器每隔tREFI的时间检查是否需要对rank进行刷新,每次刷新需要消耗tRFC段时间。其中,tREFI是指内存平均刷新时间间隔(average refresh interval)。换一种表达方式,tREFI用于指示内存控制器发送刷新命令的平均时间间隔。tREFI可以根据刷新周期及刷新周期内要发送的刷新命令的数量来确定。例如:tREFI可以为64ms/8192=7.8us,其中,64ms为刷新周期,8192为刷新周期内发送的刷新命令的数量。tRFC是指行刷新周期时间(Row Refresh Cycle Time)。换一种描述方式,tRFC用于指示在DRAM rank中执行一次刷新命令所需的时间。通常,tREFI越长,tRFC越大;tREFI越短,tRFC较小。由于,在刷新过程中的tRFC段时间内,被刷新的rank不能响应对该rank的请求。因此,可以通过调整刷新频率减少刷新对系统性能造成的影响。
本领域技术人员可以知道,不同的刷新模式具有不同的刷新频率。双倍速率(double data rate,DDR)协议中规定了三种刷新模式:1X模式、2X模式以及4X模式。在1X模式下,内存芯片以DDR协议规定的tREFI(base)为时间间隔执行刷新操作,一次刷新请求执行的时间为tRFC1。在2X模式下,内存芯片以tREFI(base)/2为时间间隔执行刷新操作,一次刷新请求执行的时间为tRFC2。在4X模式下,内存芯片以tREFI(base)/4为时间间隔执行刷新操作,一次刷新请求执行的时间为tRFC3。其中,tRFC1>tRFC2>tFRC3,tREFI(base)用于指示所述计算机系统所遵从的DDR协议定义的标准的平均刷新时间间隔。通常,tREFI(base)用于指示在1x模式下,DRAM芯片表面温度在正常温度范围(0℃-85℃)条件下的tREFI。按照DDR4标准,tREFI和tRFC的大小可以根据实际情况进行设置。例如,对于容量为8Gb的DRAM颗粒,在1X配置下,tREFI可以为7.8us,tRFC可以为350ns。而在4X配置下,tREFI可以为1.95us,tRFC可以为160ns。DDR4协议中支持动态刷新模式的调整。根据DDR4协议,在内存刷新过程中,内存的刷新模式可以在1X模式、2X模式及4X模式之间相互转化。
如前所述,现有技术中,内存控制器每隔tREFI的时间检查是否需要对rank进行刷新。若该rank处于空闲状态,则对该rank进行刷新,若该rank没有处于空闲状态,则内存控制器会推迟对该rank的刷新。当推迟时间超过阈值时,内存控制器会强制对该rank进行刷新。然而,在内存流量较大的情况下,rank处于空闲状态的情况较少,有可能rank无法处于空闲状态。如果一直等到rank空闲后再对该rank进行刷新,则需要不断的推迟的刷新。到最后为避免数据丢失而必须刷新时,不仅需要执行当前时间段内应该进行的刷新,还需要将前面延迟的刷新进行补刷新,从而造成在需要进行补刷的时间段内刷新的次数较多。在这种情况下,即使没有达到平均刷新时间间隔tREFI,也需要执行刷新。换一种表达方式,在需要进行补刷新的情况下,会造成被动刷新的次数增多。由于在刷新时访问这个rank的请求无法及时得到响应,因此,在被动刷新次数较多的情况下,访问业务中断的时间变长,可能引起处理器停滞或效率下降。在这种情况下,更加影响系统性能,造成较大的刷新开销。
本领域技术人员可以知道,内存108中各个rank的刷新操作是独立的。发明人在研究过程中发现,在对DRAM进行刷新过中,除了在刷新过程中,被刷新的rank不能响应请求会造成系统的刷新开销之外,在刷新过程中,由于被刷新的rank的请求阻塞调度队列,导致其他rank的请求无法及时进入调度队列并被发送到其他rank,也是影响系统整体性能的一个原因。并且,刷新过程中,由于在不同的刷新模式下刷新频率不同,而不同的刷新频率使得总线的利用率也不同,因此在刷新过程中,刷新模式的选择也会对系统性能造成影响。
为了减少计算机系统的刷新开销,提高计算机系统在刷新过程中的整体性能,本发明实施例提供了一种内存刷新方法,能够改善内存调度策略,避免因为刷新操作阻塞调度队列而造成其他rank的请求无法被执行。并且还可以通过动态调整刷新频率提高系统的总线利用率。下面将结合图1对本发明实施例提供的计算机系统中的内存刷新方案进行详细介绍。
图2为本发明实施例提供的内存控制器106中的结构示意图。为了描述清楚,图2中也示出了内存控制器106与处理器核104以及内存108的连接示意。其中,内存108中可以包括rank 0、rank 1以及rank 2等多个RANK。如图2所示,内存控制器106中可以包括通信接口1061、统计模块1062、刷新电路1064、缓存队列1066、调度队列1068以及调度器1069。
在本发明实施例中,内存控制器106中的通信接口1061可以包括与计算机中的处理器102连接的前端接口,也可以包括与内存108连接的后端接口。具体的,内存控制器106可以通过通信接口1061接收计算机系统中的处理器(例如图1中的core104)发送的访存请求。内存控制器106可以通过通信接口1061向内存108中存储数据或者将从内存108中读取数据。
统计模块1062可以包括两个方面的统计功能。第一,统计模块1062可以用于统计内存控制器106接收的访存请求中的目标rank的分布情况以及访存请求的操作类型。其中,目标rank为访存请求待访问的rank。访存请求的操作类型可以包括读操作、写操作等类型。具体的,统计模块1062可以统计各访存请求的目标rank,请获取各访存请中的操作类型。第二,统计模块1062还可以统计内存控制器106接收的访存请求的数量。具体的,统计模块1062可以统计待访问每个rank的访存请求的数量以及内存控制器106接收的访存请求的总数量。统计模块1062可以根据缓存队列1066以及调度队列1068中缓存的访存请求进行统计。实际应用中,统计模块1062可以采用计数器来实现。换一种表达方式,统计模块1062可以包括一个或多个计数器。在本发明实施例中,访存请求是指处理器访问内存的请求。访存请求可以包括读请求及写请求等。换一种表达方式,处理器可以根据访存请求从内存中读取数据或将数据写入内存。
刷新电路1064,用于每隔tREFI的时间根据统计模块1062的统计结果判断是否生成刷新请求,并将生成的刷新请求放入调度队列。例如,当统计模块1062统计的某个rank的访存请求的数量小于设置的阈值时,则刷新电路1064可以生成该rank的刷新请求,并将该刷新请求放入调度队列108。可以理解的是,实际应用中,刷新电路1064生成的刷新请求也可以直接发送给调度器1069,以供调度器1069将生成的刷新请求发送给内存108,使得内存108按照生成的刷新请求对相应的rank执行刷新操作。需要说明的是,tREFI用于指示平均的刷新时间间隔。实际应用中,刷新电路1064也可以以小于tREFI的时间间隔生成刷新请求。例如,在需要进行补刷新时,刷新电路1064可以以小于tREFI的时间间隔生成刷新请求。此外,本领域技术人员可以知道,tREFI也随着刷新模式的不同而不同。
缓存队列1066,用于在某个rank被执行刷新操作过程中,缓存core104发送对该rank的访存请求。例如,以内存108中的rank0为例。若在对rank0执行刷新操作的过程中,内存控制器106接收到core 104对rank0的读请求,则可以将该读请求缓存在缓存队列1066中,而不会将该读请求缓存送入调度队列1068。实际应用中,还可以对缓存队列1066中的访存请求设置调度的优先级。例如,可以将部分访存请求设置为优先调度或普通调度。
调度队列1068用于缓存Core 104发送的访存请求以及刷新电路1064发送的刷新请求等操作请求。调度器1069用于将调度队列1068中的操作请求(至少包括访存请求和刷新请求)发送给内存108,从而能够实现对内存108的访问或刷新等操作。在本发明实施例中,缓存队列1066为调度队列1068的前置缓存。根据这种方式,缓存队列1066可以用于缓存待进入调度队列1068访存请求。在本发明实施例中,为了描述方便,本发明实施例以设置缓存队列1066和调度队列1068两级缓存为例,实际应用中,还可以根据需要设置更多级的缓存。例如,在调度队列1068前可以设置多级缓存队列1066。
下面将结合图2对本发明实施例提供的内存刷新方法进行详细介绍。图3为本发明实施例提供的内存刷新方法的流程图。图3所示的内存刷新方法可以由图1及图2中所示的内存控制器106来执行。如图3所示,该方法可以包括下述步骤。
在步骤301中,内存控制器106接收core 104发送的访存请求。在本发明实施例中,访存请求是指用于访问内存108的请求。内存控制器106可以根据访存请求从内存108中读取数据,或者将数据写入内存108中。访存请求的操作类型可以包括读操作、写操作等类型。实际应用中,内存控制器106能够通过内存控制器106与core 104之间的通信接口1061接收core 104发送的访存请求。
在步骤302中,内存控制器106判断接收的访存请求的数量是否大于第一阈值。如前所述,为了防止内存中的数据丢失,内存控制器106会每隔tREFI的时间检查是否需要对rank进行刷新。本发明实施例中,为了描述方便,将内存控制器106检查是否需要对rank进行刷新的过程称为一个刷新轮询过程。将一个tREFI的时间称为一个时间段。换一种表达方式,内存控制器106每隔tREFI的时间就会执行一次刷新轮询。具体的,一种情况下,在一个刷新轮询过程中,内存控制器106可以根据统计模块1062中统计的内存控制器106中缓存的待处理的访存请求的数量来判断访存请求的数量是否大于第一阈值。另一种情况下,内存控制器106可以根据统计模块1062统计的在一个设置的时间段内所述内存控制器106接收的访存请求的数量判断访存请求的数量是否大于第一阈值。所述设置的时间段可以为不大于tREFI的时间段。其中,第一阈值大于0。所述第一阈值可以根据实际应用中流量的大小预先设定。例如,第一阈值可以设置为100。当内存控制器106接收的访存请求的数量大于所述第一阈值时,说明访存请求的数量较多,该方法进入步骤304。当内存控制器106接收访存请求的数量不大于所述第一阈值时,该方法进入步骤306。
在步骤304中,内存控制器106判断待访问第一rank的访存请求的数量是否小于第二阈值。其中,第一rank可以为内存108中的任意一个rank。在本发明实施例中,内存控制器106可以根据统计模块1062中统计的第一rank的访存请求的数量是否小于第二阈值。其中,第二阈值可以根据应用场景具体设置,第二阈值大于1。例如,第二阈值可以设置为20。当访问所述第一rank的访存请求的数量小于所述第二阈值时,该方法进入步骤310。当访问所述第一RANK的访存请求的数量大于所述第二阈值时,该方法进入步骤308。需要说明的是,所述第一rank的访存请求的数量可以是步骤302中设置的时间段内内存控制器106接收的第一rank的访存请求的数量。也可以是内存控制器106中缓存的待处理的第一rank的访存请求的数量。
在步骤306中,内存控制器106判断第一rank是否处于空闲状态。具体的,当在步骤302中,在内存控制器106确定接收的访存请求的数量大于所述第一阈值时,说明整个内存的访问流量较大,在这种情况下,内存控制器106需要进一步确定是否需要对第一rank进行刷新。如果所述第一rank处于空闲状态,换一种表达方式,如果内存控制器的调度队列中访问第一rank的访存请求的数量为0,则该方法进入步骤310。如果所述第一rank没有处于空闲状态,换一种表达方式,内存控制器的所述调度队列中访问所述第一rank的访存请求的数量不为0,则该方法进入步骤308。
在步骤308中,内存控制器106判断所述第一rank的延迟刷新次数是否大于设置的第三阈值。当内存控制器106确定所述第一rank的延迟刷新次数大于所述第三阈值时,所述方法进入步骤310。当内存控制器106确定所述第一rank的延迟刷新次数没有大于所述第三阈值时,该方法进入步骤312。在本发明实施例中,第三阈值不小于1,且小于设置的预警值。所述预警值可以根据所述rank能够推迟的最大刷新命令(postponing refresh commands)的数量来确定。例如,根据DDR4协议,rank最多能推迟8个刷新命令,换一种表达方式,预警值为8,则所述第三阈值必须小于8。例如,第三阈值可以设置为6。
在本发明实施例中,可以在刷新电路1064中设置延迟寄存器(图2中未图示),所述延迟寄存器可以用于统计所述第一rank的延迟刷新次数。实际应用中,延迟寄存器也可以独立于刷新电路1064设置。在另一种情况下,也可以不设置延迟计数器,而通过软件来统计所述第一rank的延迟刷新次数。在本发明实施例中,不对具体如何统计所述第一rank的延迟刷新次数的方式进行限定。
在步骤310中,内存控制器106对所述第一rank进行刷新。具体的,一种情况下,内存控制器106中的刷新电路1064可以根据默认的刷新模式生成刷新请求。在另一种情况下,内存控制器106中的刷新电路1064可以根据统计模块1062统计的访存请求的数量、目标rank的分布情况以及访存请求的类型确定刷新模式。并根据确定的刷新模式生成刷新请求,以按照生成的刷新请求对所述第一rank进行刷新。
如前所述双倍速率(double data rate,DDR)协议中规定了三种刷新模式:1X模式、2X模式以及4X模式。在本发明实施例中,刷新模式至少可以包括第一刷新模式和第二刷新模式。其中,在所述第一刷新模式下,所述内存控制器以tREFI(base)/N的时间间隔进行刷新。在所述第二刷新模式下,所述内存控制器按照tREFI(base)的时间间隔进行刷新。例如,第一刷新类型可以为4X模式或2X,第二刷新类型可以包括1X模式。其中,tREFI(base)用于指示DDR协议定义的标准的平均刷新时间间隔,N为大于1的整数。通常,tREFI(base)用于指示在1x模式下,DRAM芯片表面温度在正常温度范围(0℃-85℃)条件下的tREFI。为了描述方便,在本发明实施例中,也可以将tREFI(base)表示为T。
对于内存系统来说,减少刷新频率比减少刷新的延迟对系统性能的提升更重要。因此在通常情况下,采用4X模式刷新时系统的性能会比采用1X模式刷新时的系统的性能更低。并且,当访存请求中的读请求占比或写请求占比较高的情况下,由于读写切换相对较少,内存108的带宽利用率会比较高。然而,在实现本发明的过程中,发明人发现,由于DDR协议规定了四激活时间窗口(Four Active Window,tFAW),当多个访存请求待访问的目标rank的数量比较少,换一种表达方式,当多个访存请求集中对所述内存108中的少量rank进行访问时,在tFAW的时间窗口内,同一rank能够同时操作的行数会受到限制,因此系统的整体性能反而会下降。其中,tFAW是指在tFAW的时间窗口内,同一rank最多允许发送4个行激活命令。例如,若内存108中有两个rank,当读请求的占比或写请求的占比较高的情况下,若访存请求集中访问其中一个rank,则在另一rank刷新的情况下,刷新的时间越长,单rank访问持续的时间就越长,系统整体性能下降越多。
在实现本发明的过程中,发明人发现,4X模式和1X模式相比,由于采用4X模式刷新时的单次刷新时间tRFC3较短,在单次刷新过程中,系统受tFAW限制的影响较小,系统的整体性能下降较少。因此,在本发明实施例中,为了提高系统的整体性能,减少tFAW对系统的限制,本发明实施例对刷新方式也进行了动态调整。具体的,在一种情况下,当刷新电路1064根据统计模块1062统计结果确定访存请求待访问的目标rank的数量小于设置的第四阈值,并且访存请求中读请求的占比或写请求的占比大于设置的第五阈值时,刷新电路1064可以确定采用4X模式对所述第一rank进行刷新。换一种表达方式,当内存控制器106接收的访存请求待访问的目标rank的数量比较集中,且读请求的比例或写请求的比例较高时,可以采用4X模式对所述第一rank进行刷新。实际应用中,第四阈值可以根据内存108中的rank的总数量来确定,例如,当内存108中包含有4个rank时,所述第四阈值可以设置为2。第五阈值可以为60%。可以理解的是,在本发明实施例中,目标rank是指访存请求待访问的rank。目标rank的数量是指访存请求待访问的rank的数量。
在另一种情况下,若内存控制器106接收的访存请求待访问的目标rank比较分散,或内存控制器106接收的访存请求中读请求的占比或写请求的占比不大于所述第五阈值时,则刷新电路1064可以使用1X模式对所述第一rank进行刷新。可以理解的是,在本发明实施例中,第四阈值大于0,且第四阈值小于所述内存108中的rank的总数。实际应用中,第四阈值可以根据内存108中的rank的总数量来确定。例如,第四阈值可以设置为DRAM中所有rank的总数的一半。第五阈值的比例可以设置的较高,例如当以读请求与接收的访存请求的总数量的比例来衡量读请求的占比时,第五阈值可以为60%。
在本发明实施例中,读请求的占比用于指示读请求在接收的访存请求中的比例。写请求的占比用于指示写请求在接收的访存请求中的比例。例如,读请求的占比可以采用读请求数量与访存请求的总数量的比例来表示。写请求的占比可以采用写请求与访存请求的总数量的比例来表示。实际应用中,读请求的占比还可以采用读请求的数量与写请求数量的比例来表示。写请求的占比也可以采用写请求与读请求的数量的比例来表示。在此不做限定,只要能够确定出读请求的占比或写请求的占比即可。
在步骤310中,当刷新电路1064确定刷新模式后,刷新电路1064会根据确定的刷新模式(例如,1X模式或4X模式)生成相应的刷新请求。并将生成的刷新请求放入调度队列1068(如图2所示),以便调度器1069可以将该刷新请求发送给内存108,从而内存108可以根据内存控制器106生成的刷新请求执行对所述第一rank的刷新操作。实际应用中,在生成刷新请求后,刷新电路1064还可以将生成的刷新请求直接发送给调度器1069,由调度器1069发送给所述第一rank。
可以理解的是,当内存控制器106确定需要对所述第一rank执行刷新操作时,若所述内存控制器106正在执行所述第一rank的访存请求,或者所述调度队列中还有所述第一rank的访存请求,则内存控制器106可以等待第一rank当前执行的访存请求以及所述调度队列中的所述第一RANK的访存请求均处理完之后再发送刷新请求,以免影响系统性能。
在步骤312中,内存控制器106推迟对所述第一rank的刷新操作。具体的,当在步骤308中,内存控制器106判断所述第一rank的延迟操作次数未大于所述第三阈值时,内存控制器将延迟对所述第一rank的刷新操作,并将所述延迟计数器的值加1。换一种表达方式,当内存控制器106通过步骤306确定所述第一rank未处于空闲状态时,即当前还在处理所述第一rank的访存请求或调度队列中还包含有所述第一rank的访存请求的情况下,若所述第一rank的延迟次数未达到第三阈值,则可以认为第一rank的访存请求较多。为了不影响性能,不对所述第一rank执行刷新操作,以便在后续轮询过程中再对所述第一rank进行刷新操作。其中,如前所述,所述第三阈值小于设置的预警值。所述预警值可以根据所述第一rank能够推迟的最大刷新命令的数量来确定。所述预警值用于指示需要立即对所述第一rank执行刷新操作。换一种表达方式,所述预警值用于指示内存控制器106对所述第一rank进行强制刷新操作。
可以理解的是,当对所述第一rank执行强制刷新操作时,还需要将前面延迟的刷新进行补刷。从而造成在需要进行补刷的时间段内刷新的次数较多。而在补刷的特定时间段内,一方面可能使得已经在所述调度队列中的所述第一rank的访存请求无法得到执行,从而较长时间的占用调度队列1068的空间,使得其他rank的访存请求无法进入调度队列,进而影响整个计算机系统的性能。另一方面还可能因为短时间内刷新次数增多,造成系统业务中断。总而言之,对所述第一rank进行强制刷新会增加计算机系统100的刷新功耗,影响系统性能。
综上所述,在本发明实施例提供的刷新方法中,在一次tREFI的轮询过程中,对所述第一rank的刷新操作可以存在下述几种情况。
第一种情况,当内存控制器106接收的访存请求的数量大于第一阈值且访问所述第一rank的访存请求的数量小于第二阈值时,内存控制器106直接对所述第一rank执行刷新操作。换一种表达方式,在计算机系统100的访存流量较大的情况下,只要访问第一rank的访存请求的数量较小,则内存控制器106可以主动对所述第一rank执行刷新操作,而不需要等待第一rank处于空闲状态时再对所述第一rank执行刷新操作。因为在计算机系统100的访存流量较大的情况下,第一rank很难有机会处于空闲状态,如果不断推迟刷新,到后期为避免数据丢失而必须刷新时,会造成特定时间内被动刷新的次数增多。本发明实施例提供的这种主动刷新的方式能够降低因为延迟刷新而产生的被动刷新增多对计算机系统性能的影响,提高内存刷新的灵活性。从而能够提高计算机系统的性能,减少刷新开销。当然可以理解的是,在本发明实施例中,访问第一rank的访存请求的数量小于设置的第二阈值也包括第一rank处于空闲的情形。
第二种情况,当内存控制器106接收的访存请求的数量大于第一阈值,访问所述第一rank的访存请求的数量不小于第二阈值,并且所述第一rank的延迟刷新次数大于第三阈值时,内存控制器106直接对所述第一rank执行刷新操作。换一种表达方式,当计算机系统100中的内存访问流量较大,且第一rank的访存请求的数量也较大的情况下,如果所述第一rank的延迟次数大于所述第三阈值,则需要立即对所述第一rank执行刷新操作,从而也可以避免因为第一rank的延迟刷新次数到达预警值需要执行强制刷新的可能性,减少被动刷新的次数较多对计算机系统性能的影响,提高了内存刷新的灵活性。可以理解的是,所述第三阈值是根据实际应用中结合预警值设置的一个门限值,能够使得计算机系统在不影响性能的情况下在一定范围内推迟刷新,提高内存刷新的灵活性。
第三种情况,当内存控制器106接收的访存请求的数量大于第一阈值,访问所述第一rank的访存请求的数量不小于第二阈值,并且所述第一rank的延迟刷新次数不大于所述第三阈值时,可以延迟对所述第一rank的刷新操作。换一种表达方式,在本发明实施例中,当计算机系统100中的内存访问流量较大,且第一rank的访存请求的数量也较大的情况下,只要所述第一rank的延迟刷新次数尚未到达预设的所述第三阈值,为了不影响对调度队列108中所述第一rank的访存请求的处理,可以暂缓对所述第一rank的刷新操作。
第四种情况,当内存控制器106接收的访存请求的数量不大于所述第一阈值,且所述第一rank处于空闲状态时,内存控制器106可以直接对所述第一rank执行刷新操作。换一种表达方式,当所述计算机系统100的内存流量较小且所述第一rank处于空闲状态时,所述第一rank的刷新操作对计算机系统的性能的影响较小,因此可以直接对所述第一rank执行刷新操作。
第五种情况,当所述内存控制器106接收的访存请求的数量不大于所述第一阈值,所述第一rank未处于空闲状态,并且,所述第一rank的延迟刷新次数大于所述第三阈值时,所述内存控制器106需要主动对所述第一rank执行刷新操作。换一种表达方式,当所述计算机系统100的内存流量较小但所述第一rank较忙的情况下,为了避免对所述第一rank进行强制刷新,需要在本次轮询过程中对所述第一rank执行刷新操作。从而能够避免系统因为延迟刷新次数到达预警值而增加被动刷新的次数,减少被动刷新对计算机系统性能的影响。
第六种情况下,当所述内存控制器106接收的访存请求的数量不大于所述第一阈值,所述第一rank未处于空闲状态,并且,所述第一rank的延迟刷新次数不大于所述第三阈值时,所述内存控制器106可以延迟对所述第一rank的刷新操作。换一种表达方式,当所述计算机系统100的内存流量较小但所述第一rank较忙的情况下,为了尽可能多的处理所述第一rank的访存请求,在所述第一rank的延迟次数尚未大于所述第三阈值时,可以延迟对所述第一rank的刷新操作。
可以理解的是,上述对本发明实施例提供的内存刷新方法的描述均是以在一次刷新轮询过程中,对内存108中的第一rank的刷新操作为例进行描述。实际应用中,在每一次刷新轮询过程中,内存控制器均可以根据上述提供的方法确定是否需要对不同rank进行刷新。例如,在第一刷新轮询过程中,内存控制器106可能确定按照上述第一种情况对所述第一rank进行刷新,按照上述第二种情况第内存108中的第二rank进行刷新,并按照上述第三种情况延迟对内存108中的第三rank的刷新操作。在第二刷新轮询过程中,内存控制器106可以案子上述第六种情况延迟对所述第一rank进行刷新,并按照上述第五种情况对所述第二rank进行刷新。
进一步的,由于在对第所述第一rank执行刷新操作的tRFC的时间段内,内存控制器106也无法响应所述第一rank的访存请求,为了避免第一rank的访存请求堵塞调度队列1068,而造成其他rank(例如,第二rank)的访存请求不能进入调度队列1068,影响系统性能。在本发明实施例中,当对所述第一rank进行刷新操作时,若内存控制器106接收到对所述第一rank的访存请求时,内存控制器106可以将所述第一rank的访存请求放入缓存队列1066。当内存控制器1068对所述第一rank执行完刷新操作后,再将缓存队列1066中对所述第一rank的访存请求从缓存队列1066放入所述调度队列1068。并且,在本发明实施例中,当对所述第一rank执行完刷新操作后,内存控制器106可以将后续新接收的对所述第一rank的访存请求直接放入调度队列108,而不必再放入缓存队列1066。
可以理解的是,在本发明实施例中,当对所述第一rank进行刷新操作时,若内存108中的第二rank未执行刷新操作,则内存控制器106可以将接收的对所述第二rank的访存请求直接放入调度队列1068。根据这种调度方式,可以使得调度队列中的访存请求的目标rank分散分布,使得内存控制器106在对所述第一rank执行刷新操作的过程中,也能尽可能多的处理不同rank的访存请求,从而能够减小计算机系统100在刷新操作过程中的系统开销,提高计算机系统100的执行效率。
从本发明实施例提供的上述刷新方法可以看出,本发明实施例为了减少内存刷新过程中对计算机系统的性能的影响,综合考虑了系统接收的访存请求的情况以及访问的目标rank的情况来确定是否需要对目标rank进行刷新。从而通过对内存控制器的刷新时间的管理,在兼容现有的DDR协议的基础上,降低了因推迟刷新而引起的被动强制刷新次数增多对计算机系统性能的影响,提高内存刷新的灵活性,减少了刷新开销。并且,在本发明实施例中,在需要对第一rank执行刷新操作的过程中,还可以根据目标rank的分布情况以及访存请求的类型分布选择不同的刷新模式,以提高内存控制器的刷新效率,提高计算机系统的性能。
进一步的,在本发明实施例中,为了提高访存请求的并发度,使得第一rank的刷新操作不影响其他rank的访存请求的处理,在内存控制器中可以设置多级缓存,例如,可以分别设置调度队列以及缓存队列。从而,可以将在对所述第一rank执行刷新操作的tRFC的时间段内接收的所述第一rank的访存请求缓存在缓存队列中,从而能够防止在所述tRFC的时间段内接收的所述第一rank的访存请求堵塞调度队列,影响内存控制器对其他rank的访存请求的处理。进一步提高整计算机系统的处理效率。
需要说明的是,实际应用中,图3所示实施例中的每一个步骤并不是必须执行的。例如,在图3所示的实施例中结合整个系统中的访存流量的大小对内存刷新方法进行了描述,例如,在轮询过程中,可以先进入步骤302,判断内存控制器106接收的访存请求的数量是否大于第一阈值。然而,在实际应用中,也可以不区分整个系统的访存流量的大小,而直接按照待刷新rank的访存流量的情况进行处理。在这种情况下,图3实施例中的步骤302并不是必须的。换一种表达方式,本发明实施例提供的刷新方法无论是在系统的访存流量大的情况下或是在系统的访存流量小的情况下均可以使用。在此不做限定。
图4为本发明实施例提供的一种内存刷新装置的结构示意图。所述内存刷新装置400用于对图1所示的内存108进行刷新。如图4所示,内存刷新装置400可以包括接收模块402、统计模块404、判断模块406以及刷新模块408。
接收模块402,用于接收访存请求。具体的,接收模块402可以接收计算机系统100中一个或多个core 104发送的访存请求。可以理解的是,接收模块402还可以用于接收内存108返回的数据。接收模块402具体包括内存控制器106与core 104的通信接口,以及内存控制器102与内存108的通信接口。
统计模块404,用于统计接收模块402接收的访存请求的数量。实际应用中,统计模块404还可以分别统计访问各个rank的访存请求的数量。
判断模块406,用于判断接收的访存请求中访问第一rank的访存请求是否大于0且小于第二阈值。其中,所述第一rank为内存中的任意一个rank。实际应用中,判断模块406可以根据统计模块404统计的结果进行判断。
刷新模块408,用于当接收的访存请求中访问第一rank的访存请求大于0且小于第二阈值时,对所述第一rank进行刷新。如前所述,实际应用中,一种情况下,刷新模块408可以根据设置的刷新模式生成刷新请求,并根据生成的刷新请求对所述第一rank进行刷新。另一种情况下,刷新模块408还可以根据统计模块406统计的访存请求的数量及待访问的目标rank的分布情况动态确定刷新模式,并根据确定的刷新模式生成刷新请求,以根据生成的刷新请求对所述第一rank进行刷新。具体的,刷新模块408可以将生成的刷新请求发送给内存108,以使内存108能够根据该刷新请求对所述第一rank进行刷新。
在可能的情况下,所述判断模块406,还用于判断所述接收的访存请求的目标rank的数量是否小于设置的第四阈值,并且,所述访存请求中读请求的比例或写请求的比例是否大于设置的第五阈值。所述刷新模块408,用于当所述接收的访存请求的目标rank的数量小于设置的第四阈值,并且,所述访存请求中读请求的比例或写请求的比例大于设置的第五阈值时,按照T/N的时间间隔对对所述第一rank进行刷新。其中,T用于指示标准的平均刷新时间间隔,N为大于1的整数。具体的,刷新模块408可以按照第一刷新模式生成第一刷新请求,并按照生成的第一刷新请求对所述第一rank进行刷新。其中,在所述第一刷新模式下,所述内存控制器以所述T/N的时间间隔对对所述第一rank进行刷新。实际应用中,T可以为DDR协议设置的tREFI(base)。
在可能的情况下,内存刷新装置400还可以包括缓存模块410。缓存模块410用于将接收模块402接收的访存请求缓存在缓存队列或调度队列中。实际应用中,所述缓存模块406可以包括缓存队列以及调度队列。其中,缓存队列为调度队列的前置队列。
在一种可能的情况下,所述接收模块402还用于在对所述第一rank进行刷新过程中,接收访问所述第一rank的第一访存请求。所述缓存模块406用于将所述第一访存请求缓存在设置的缓存队列中。其中,所述缓存模块406包含有所述缓存队列以及调度队列,所述缓存队列用于缓存新接收的正在被执行刷新操作的rank的访存请求,所述调度队列用于缓存待发送给未被执行刷新操作的rank的访存请求。
在又一种可能的情况下,所述接收模块402还用于接收访问所述DRAM中的第二rank的第二访存请求。所述缓存模块406还用于当所述第二rank没有执行刷新操作时,将所述第二访存请求缓存在设置的调度队列中。
可选的,所述判断模块406还用于判断所述接收的访存请求中访问所述DRAM中的第二rank的访存请求是否小于所述第二阈值。所述刷新模块408,还用于当所述接收的访存请求中访问所述DRAM中的第二rank的访存请求不小于所述第二阈值,且所述第二rank的延迟刷新次数大于设置的第三阈值时,对所述第二rank进行刷新。其中,所述第三阈值小于设置的预警值,所述预警值用于指示需要立即对所述第二rank执行刷新操作。
在又一种可能的情况下,所述判断模块406还用于判断所述接收的访存请求中访问所述DRAM中的第三rank的访存请求是否小于所述第二阈值。所述刷新模块408还用于当所述接收的访存请求中访问所述DRAM中的第三rank的访存请求不小于所述第二阈值,且所述第三rank的延迟刷新次数不大于设置的第三阈值时,不对所述第三rank执行刷新操作,其中,所述第三阈值不小于1且小于设置的预警值,所述预警值用于指示需要立即对所述第三rank执行刷新操作。
在又一种可能的情况下,所述判断模块406,还用于判断所述接收的访存请求的目标rank的数量是否小于设置的第四阈值,并且,所述访存请求中读请求的比例或写请求的比例是否大于设置的第五阈值。所述刷新模块408,还用于当所述接收的访存请求的目标rank的数量不小于设置的第四阈值,并且,所述访存请求中读请求的比例或写请求的比例不大于设置的第五阈值时,对所述第一rank进行刷新进具体包括以T的时间间隔对所述第一rank进行刷新,其中,T用于指示标准的平均刷新时间间隔。
在又一种可能的情况下,所述刷新模块408还用于当所述接收的访存请求中访问所述DRAM中的第二rank的访存请求的数量大于0且小于设置的第二阈值,且所述第二rank的延迟刷新次数不大于设置的第三阈值时,不对所述第二rank执行刷新操作,其中,所述第三阈值不小于1且小于设置的预警值,所述预警值用于指示需要立即对所述第二rank执行刷新操作。
在又一种可能的情况下,所述刷新模块408还用于当所述接收的访存请求中访问所述DRAM中的第三rank的访存请求的数量大于0,且所述rank的延迟刷新次数大于设置的第三阈值时,对所述第三rank进行刷新,其中,所述第三阈值小于1且小于设置的预警值,所述预警值用于指示需要立即对所述第三RANK执行刷新操作。
可以理解的是,图4所示的内存刷新装置400中各模块可以分别位于图2所示的内存控制器中的一个或多个器件中。在本发明实施例中,可以根据实际的需要选择图4所示的实施例中的部分或者全部模块来实现本实施例方案的目的。图4实施例中没有详细描述的地方可以参考图3所示方法实施例中的相关描述。
可以理解的是,以上所描述的装置实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。例如,多个模块或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,上述实施例所讨论的模块相互之间的连接可以是电性、机械或其他形式。所述作为分离部件说明的模块可以是物理上分开的,也可以不是物理上分开的。作为模块显示的部件可以是物理模块或者也可以不是物理模块。另外,在申请实施例各个实施例中的各功能模块可以独立存在,也可以集成在一个处理模块中。例如,图4所示的各功能模块可以集成在图2所示的内存控制器中。
本发明实施例还提供一种数据处理的计算机程序产品,包括存储了程序代码的计算机可读存储介质,所述程序代码包括的指令用于执行前述任意一个方法实施例所述的方法流程。本领域普通技术人员可以理解,前述的存储介质包括:U盘、移动硬盘、磁碟、光盘、随机存储器(Random-Access Memory,RAM)、固态硬盘(Solid State Disk,SSD)或者非易失性存储器(non-volatile memory)等各种可以存储程序代码的非短暂性的(non-transitory)机器可读介质。
需要说明的是,本申请所提供的实施例仅仅是示意性的。所属领域的技术人员可以清楚的了解到,为了描述的方便和简洁,在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。在本发明实施例、权利要求以及附图中揭示的特征可以独立存在也可以组合存在。在本发明实施例中以硬件形式描述的特征可以通过软件来执行,反之亦然。在此不做限定。

Claims (28)

1.一种内存刷新方法,所述方法应用于包括内存控制器以及动态随机存取存储器DRAM的计算机系统中,所述方法包括:
所述内存控制器接收访存请求;
当接收的访存请求的数量大于第一阈值,且所述接收的访存请求中访问所述DRAM中的第一rank的访存请求的数量大于0且小于第二阈值时,所述内存控制器对所述第一rank进行刷新。
2.根据权利要求1所述的内存刷新方法,其特征在于,所述内存控制器对所述第一rank进行刷新包括:
当所述接收的访存请求的目标rank的数量小于设置的第四阈值,并且,所述访存请求中读请求的比例或写请求的比例大于设置的第五阈值时,所述内存控制器按照T/N的时间间隔对所述第一rank进行刷新,其中,T用于指示标准的平均刷新时间间隔,N为大于1的整数。
3.根据权利要求1所述的方法,其特征在于,还包括:
在所述内存控制器对所述第一rank进行刷新的过程中,所述内存控制器接收访问所述第一rank的第一访存请求;
所述内存控制器将所述第一访存请求缓存在设置的缓存队列中,其中,所述内存控制器中至少包括缓存队列和调度队列,所述缓存队列用于缓存正在被执行刷新操作的rank的访存请求,所述调度队列用于缓存待发送给未被执行刷新操作的rank的访存请求。
4.根据权利要求3所述的方法,其特征在于,还包括:
所述内存控制器接收访问所述DRAM中的第二rank的第二访存请求;
当所述第二rank没有被刷新时,所述内存控制器将所述第二访存请求缓存在所述调度队列中。
5.根据权利要求1-4任意一项所述的方法,其特征在于,还包括:
当所述接收的访存请求中访问所述DRAM中的第二rank的访存请求的数量不小于所述第二阈值,且所述第二rank的延迟刷新次数大于设置的第三阈值时,所述内存控制器对所述第二rank进行刷新,其中,所述第三阈值不小于1且小于设置的预警值,所述预警值用于指示需要立即对所述第二rank执行刷新操作。
6.根据权利要求1-4任意一项所述的方法,其特征在于,还包括:
当所述接收的访存请求中访问所述DRAM中的第三rank的访存请求的数量不小于所述第二阈值,并且所述第三rank的延迟刷新次数不大于设置的第三阈值时,所述内存控制器不对所述第三rank执行刷新操作,其中,所述第三阈值不小于1且小于设置的预警值,所述预警值用于指示需要立即对所述第三rank执行刷新操作。
7.根据权利要求1所述的内存刷新方法,其特征在于,所述内存控制器对所述第一rank进行刷新包括:
当所述接收的访存请求的目标rank的数量不小于设置的第四阈值,并且,所述访存请求中读请求的比例或写请求的比例不大于设置的第五阈值时,所述内存控制器按照T的时间间隔对所述第一rank进行刷新,其中,所述T用于指示标准的平均刷新时间间隔。
8.一种计算机系统,包括内存控制器以及与所述内存控制器连接的动态随机存取存储器DRAM,所述内存控制器用于:
接收访存请求;
当接收的访存请求的数量大于第一阈值,且所述接收的访存请求中访问所述DRAM中的第一rank的访存请求的数量大于0且小于第二阈值时,对所述第一rank进行刷新。
9.根据权利要求8所述的计算机系统,其特征在于,在所述对所述第一rank进行刷新的步骤中,所述内存控制器具体用于:
当所述接收的访存请求的目标rank的数量小于设置的第四阈值,并且,所述访存请求中读请求的比例或写请求的比例大于设置的第五阈值时,按照T/N的时间间隔对所述第一rank进行刷新,其中,所述T用于指示标准的平均刷新时间间隔,N为大于1的整数。
10.根据权利要求9所述的计算机系统,其特征在于,所述内存控制器还用于:
在对所述第一rank进行刷新的过程中,接收访问所述第一rank的第一访存请求;
将所述第一访存请求缓存在设置的缓存队列中,其中,所述内存控制器中至少包括缓存队列和调度队列,所述缓存队列用于缓存正在被执行刷新操作的rank的访存请求,所述调度队列用于缓存待发送给未被执行刷新操作的rank的访存请求。
11.根据权利要求10所述的计算机系统,其特征在于,所述内存控制器还用于:
接收访问所述DRAM中的第二rank的第二访存请求;
当所述第二rank没有被刷新时,将所述第二访存请求缓存在所述调度队列中。
12.根据权利要求8-11任意一项所述的计算机系统,其特征在于,所述内存控制器还用于:
当所述接收的访存请求中访问所述DRAM中的第二rank的访存请求的数量不小于所述第二阈值,且所述第二rank的延迟刷新次数大于设置的第三阈值时,对所述第二rank进行刷新,其中,所述第三阈值小于设置的预警值,所述预警值用于指示需要立即对所述第二rank执行刷新操作。
13.根据权利要求8-11任意一项所述的计算机系统,其特征在于,所述内存控制器还用于:
当所述接收的访存请求中访问所述DRAM中的第三rank的访存请求的数量不小于所述第二阈值,且所述第三rank的延迟刷新次数不大于设置的第三阈值时,不对所述第三rank执行刷新操作,其中,所述第三阈值不小于1且小于设置的预警值,所述预警值用于指示需要立即对所述第三rank执行刷新操作。
14.根据权利要求8所述的计算机系统,其特征在于,
在对所述第一rank进行刷新的步骤中,所述内存控制器具体用于:
当所述接收的访存请求的目标rank的数量不小于设置的第四阈值,并且,所述访存请求中读请求的比例或写请求的比例不大于设置的第五阈值时,按照T的时间间隔进行刷新,其中,所述T用于指示标准的平均刷新时间间隔。
15.一种内存控制器,其特征在于,包括:
通信接口,用于接收计算机系统中的处理器发送的访存请求;
刷新电路,用于当接收的访存请求的数量大于第一阈值,且所述接收的访存请求中访问所述计算机系统中的动态随机存取存储器DRAM中的第一rank的访存请求的数量大于0且小于第二阈值时,对所述第一rank进行刷新。
16.根据权利要求15所述的内存控制器,其特征在于,所述刷新电路具体用于:
当所述接收的访存请求的目标rank的数量小于设置的第四阈值,并且,所述访存请求中读请求的比例或写请求的比例大于设置的第五阈值时,按照T/N的时间间隔对所述第一rank进行刷新,其中,T用于指示标准的平均刷新时间间隔,N为大于1的整数。
17.根据权利要求15所述的内存控制器,其特征在于:
所述通信接口,还用于接收在所述刷新电路对所述第一rank进行刷新的过程中,接收访问所述第一rank的第一访存请求;
所述内存控制器还包括:
缓存,用于将所述第一访存请求缓存在设置的缓存队列中,其中,所述缓存至少包括缓存队列和调度队列,所述缓存队列用于缓存正在被执行刷新操作的rank的访存请求,所述调度队列用于缓存待发送给未被执行刷新操作的rank的访存请求。
18.根据权利要求17所述的内存控制器,其特征在于:
所述通信接口,还用于接收访问所述DRAM中的第二rank的第二访存请求;
所述缓存,还用于当所述第二rank没有被刷新时,将所述第二访存请求缓存在所述调度队列中。
19.根据权利要求15-18任意一项所述的内存控制器,其特征在于,所述刷新电路还用于:
当所述接收的访存请求中访问所述DRAM中的第二rank的访存请求的数量不小于所述第二阈值,且所述第二rank的延迟刷新次数大于设置的第三阈值时,对所述第二rank进行刷新,其中,所述第三阈值不小于1且小于设置的预警值,所述预警值用于指示需要立即对所述第二rank执行刷新操作。
20.根据权利要求15-18任意一项所述的内存控制器,其特征在于,所述刷新电路还用于:
当所述接收的访存请求中访问所述DRAM中的第三rank的访存请求的数量不小于所述第二阈值,并且所述第三rank的延迟刷新次数不大于设置的第三阈值时,不对所述第三rank执行刷新操作,其中,所述第三阈值不小于1且小于设置的预警值,所述预警值用于指示需要立即对所述第三rank执行刷新操作。
21.根据权利要求15所述的内存控制器,其特征在于,所述刷新电路具体用于:
当所述接收的访存请求的目标rank的数量不小于设置的第四阈值,并且,所述访存请求中读请求的比例或写请求的比例不大于设置的第五阈值时,按照T的时间间隔对所述第一rank进行刷新,其中,所述T用于指示标准的平均刷新时间间隔。
22.一种内存刷新装置,所述内存刷新装置用于对计算机系统中的动态随机存取存储器DRAM进行刷新,包括:
接收模块,用于接收访存请求;
刷新模块,用于当接收的访存请求的数量大于第一阈值,且所述接收的访存请求中访问所述DRAM中的第一rank的访存请求的数量大于0且小于第二阈值时,对所述第一rank进行刷新。
23.根据权利要求22所述的内存刷新装置,其特征在于:
所述刷新模块,具体用于当所述接收的访存请求的目标rank的数量小于设置的第四阈值,并且,所述访存请求中读请求的比例或写请求的比例大于设置的第五阈值时,按照T/N的时间间隔对所述第一rank进行刷新,其中,T用于指示标准的平均刷新时间间隔,N为大于1的整数。
24.根据权利要求22所述的内存刷新装置,其特征在于:
所述接收模块,还用于在对所述第一rank进行刷新的过程中,接收访问所述第一rank的第一访存请求;
所述内存刷新装置还包括:
缓存模块,用于将所述第一访存请求缓存在设置的缓存队列中,其中,所述缓存模块中至少包括缓存队列和调度队列,所述缓存队列用于缓存正在被执行刷新操作的rank的访存请求,所述调度队列用于缓存待发送给未被执行刷新操作的rank的访存请求。
25.根据权利要求24所述的内存刷新装置,其特征在于:
所述接收模块,还用于接收访问所述DRAM中的第二rank的第二访存请求;
所述缓存模块,还用于当所述第二rank没有被刷新时,所述内存控制器将所述第二访存请求缓存在所述调度队列中。
26.根据权利要求22-25任意一项所述的内存刷新装置,其特征在于:
所述刷新模块,还用于当所述接收的访存请求中访问所述DRAM中的第二rank的访存请求的数量不小于所述第二阈值,且所述第二rank的延迟刷新次数大于设置的第三阈值时,对所述第二rank进行刷新,其中,所述第三阈值不小于1且小于设置的预警值,所述预警值用于指示需要立即对所述第二rank执行刷新操作。
27.根据权利要求22-25任意一项所述的内存刷新装置,其特征在于:
所述刷新模块,还用于当所述接收的访存请求中访问所述DRAM中的第三rank的访存请求的数量不小于所述第二阈值,且所述第三rank的延迟刷新次数不大于设置的第三阈值时,不对所述第三rank进行刷新,其中,所述第三阈值不小于1且小于设置的预警值,所述预警值用于指示需要立即对所述第三rank执行刷新操作。
28.根据权利要求22所述的内存刷新装置,其特征在于:
所述刷新模块,具体用于当所述接收的访存请求的目标rank的数量不小于设置的第四阈值,并且,所述访存请求中读请求的比例或写请求的比例不大于设置的第五阈值时,按照T的时间间隔对所述第一rank进行刷新,其中,T用于指示标准的平均刷新时间间隔。
CN201780089579.5A 2017-04-14 2017-04-14 内存刷新技术及计算机系统 Active CN110546707B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2017/080640 WO2018188085A1 (zh) 2017-04-14 2017-04-14 内存刷新技术及计算机系统

Publications (2)

Publication Number Publication Date
CN110546707A CN110546707A (zh) 2019-12-06
CN110546707B true CN110546707B (zh) 2021-10-19

Family

ID=63792104

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201780089579.5A Active CN110546707B (zh) 2017-04-14 2017-04-14 内存刷新技术及计算机系统

Country Status (10)

Country Link
US (1) US20200066330A1 (zh)
EP (1) EP3605542B1 (zh)
JP (1) JP7043515B2 (zh)
KR (1) KR102258360B1 (zh)
CN (1) CN110546707B (zh)
AU (1) AU2017409368B2 (zh)
BR (1) BR112019021554B1 (zh)
CA (1) CA3058778C (zh)
SG (1) SG11201908892TA (zh)
WO (1) WO2018188085A1 (zh)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11244717B2 (en) 2019-12-02 2022-02-08 Micron Technology, Inc. Write operation techniques for memory systems
KR20220031793A (ko) 2020-09-03 2022-03-14 삼성전자주식회사 메모리 장치, 그것을 포함하는 메모리 시스템, 그것을 제어하는 제어기 및 그것의 동작 방법
US11798604B2 (en) * 2021-09-01 2023-10-24 Dell Products L.P. Memory architecture having ranks with variable data widths
CN113741820B (zh) * 2021-09-18 2023-10-03 青岛海信传媒网络技术有限公司 一种数据从内存刷新到eMMC存储器的方法及显示设备
US20230236653A1 (en) * 2022-01-26 2023-07-27 Samsung Electronics Co.,Ltd. Power reduction for systems having multiple ranks of memory
JP2023133729A (ja) 2022-03-14 2023-09-27 株式会社デンソー メモリコントローラ
US20230359373A1 (en) * 2022-05-03 2023-11-09 Qualcomm Incorporated Selective refresh for memory devices
CN115148248B (zh) * 2022-09-06 2022-11-08 北京奎芯集成电路设计有限公司 基于深度学习的dram刷新方法和装置

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010211864A (ja) * 2009-03-11 2010-09-24 Renesas Electronics Corp メモリ制御装置
US8909874B2 (en) * 2012-02-13 2014-12-09 International Business Machines Corporation Memory reorder queue biasing preceding high latency operations
JP2015501999A (ja) * 2011-11-28 2015-01-19 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation リフレッシュ動作を実行するための方法、コンピュータ可読媒体、および装置
US9966129B1 (en) * 2017-02-16 2018-05-08 Via Alliance Semiconductor Co., Ltd. Controller and control method for dynamic random access memory
US10236035B1 (en) * 2017-12-04 2019-03-19 Nanya Technology Corporation DRAM memory device adjustable refresh rate method to alleviate effects of row hammer events

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0349094A (ja) * 1989-07-18 1991-03-01 Toshiba Corp メモリ制御装置
JPH10149311A (ja) * 1996-11-20 1998-06-02 Ricoh Co Ltd メモリ制御装置
JP4154010B2 (ja) * 1997-07-17 2008-09-24 キヤノン株式会社 メモリ制御装置およびメモリ制御方法
CN101000798B (zh) * 2007-01-12 2010-05-19 威盛电子股份有限公司 存储器刷新方法及存储器刷新系统
JPWO2009139109A1 (ja) * 2008-05-13 2011-09-15 パナソニック株式会社 メモリ制御装置、およびこれを備えた情報処理装置
US8639874B2 (en) * 2008-12-22 2014-01-28 International Business Machines Corporation Power management of a spare DRAM on a buffered DIMM by issuing a power on/off command to the DRAM device
US8489807B2 (en) * 2010-12-03 2013-07-16 International Business Machines Corporation Techniques for performing refresh operations in high-density memories
US8775725B2 (en) * 2010-12-06 2014-07-08 Intel Corporation Memory device refresh commands on the fly
US9269418B2 (en) * 2012-02-06 2016-02-23 Arm Limited Apparatus and method for controlling refreshing of data in a DRAM
US9196347B2 (en) * 2013-03-14 2015-11-24 International Business Machines Corporation DRAM controller for variable refresh operation timing
CN104143355B (zh) * 2013-05-09 2018-01-23 华为技术有限公司 一种刷新动态随机存取存储器的方法和装置
CN105280215B (zh) * 2014-06-09 2018-01-23 华为技术有限公司 动态随机存取存储器dram的刷新方法、设备以及系统
US9685219B2 (en) * 2015-05-13 2017-06-20 Samsung Electronics Co., Ltd. Semiconductor memory device for deconcentrating refresh commands and system including the same
US9576637B1 (en) * 2016-05-25 2017-02-21 Advanced Micro Devices, Inc. Fine granularity refresh
SG11201908904TA (en) 2017-04-14 2019-10-30 Huawei Tech Co Ltd Memory refresh technology and computer system
US10969997B2 (en) * 2018-11-07 2021-04-06 Intel Corporation Memory controller that filters a count of row activate commands collectively sent to a set of memory banks

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010211864A (ja) * 2009-03-11 2010-09-24 Renesas Electronics Corp メモリ制御装置
JP2015501999A (ja) * 2011-11-28 2015-01-19 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation リフレッシュ動作を実行するための方法、コンピュータ可読媒体、および装置
US8909874B2 (en) * 2012-02-13 2014-12-09 International Business Machines Corporation Memory reorder queue biasing preceding high latency operations
US9966129B1 (en) * 2017-02-16 2018-05-08 Via Alliance Semiconductor Co., Ltd. Controller and control method for dynamic random access memory
US10236035B1 (en) * 2017-12-04 2019-03-19 Nanya Technology Corporation DRAM memory device adjustable refresh rate method to alleviate effects of row hammer events

Also Published As

Publication number Publication date
JP2020517024A (ja) 2020-06-11
BR112019021554A2 (pt) 2020-05-12
SG11201908892TA (en) 2019-11-28
EP3605542A1 (en) 2020-02-05
AU2017409368B2 (en) 2022-07-07
JP7043515B2 (ja) 2022-03-29
US20200066330A1 (en) 2020-02-27
BR112019021554B1 (pt) 2024-02-27
CA3058778C (en) 2023-02-21
CN110546707A (zh) 2019-12-06
KR102258360B1 (ko) 2021-05-31
WO2018188085A1 (zh) 2018-10-18
KR20190126888A (ko) 2019-11-12
CA3058778A1 (en) 2018-10-18
AU2017409368A1 (en) 2019-10-24
EP3605542A4 (en) 2020-05-20
EP3605542B1 (en) 2021-07-21

Similar Documents

Publication Publication Date Title
CN110546707B (zh) 内存刷新技术及计算机系统
CN110520929B (zh) 内存刷新方法、装置及计算机系统
US8539146B2 (en) Apparatus for scheduling memory refresh operations including power states
US8489807B2 (en) Techniques for performing refresh operations in high-density memories
WO2022155970A1 (zh) 一种内存控制方法及内存控制装置
CN110556139B (zh) 用以控制存储器的电路及相关的方法
WO2019022837A1 (en) MINIMAL REDUCTION IN PERFORMANCE DEGRADATION DUE TO REFRESH OPERATIONS IN MEMORY SUBSYSTEMS
CN115686383A (zh) 存储器的控制方法和控制器以及芯片系统
CN111158585B (zh) 一种内存控制器刷新优化方法、装置、设备和存储介质
WO2022178772A1 (zh) 一种存储器的刷新方法、存储器、控制器及存储系统
CN113946435A (zh) 内存管理技术及计算机系统
US20230152977A1 (en) Memory Management Technology and Computer System
CN115221080A (zh) 存储装置、数据处理的方法及系统

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
GR01 Patent grant
GR01 Patent grant