CN108509151B - 一种基于dram内存控制器的行缓存方法和系统 - Google Patents
一种基于dram内存控制器的行缓存方法和系统 Download PDFInfo
- Publication number
- CN108509151B CN108509151B CN201810203265.XA CN201810203265A CN108509151B CN 108509151 B CN108509151 B CN 108509151B CN 201810203265 A CN201810203265 A CN 201810203265A CN 108509151 B CN108509151 B CN 108509151B
- Authority
- CN
- China
- Prior art keywords
- line
- cache system
- dram
- memory controller
- dram 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Dram (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明公开了一种基于DRAM内存控制器的行缓存方法,其首先接收来自于用户的访存请求,并在该访存请求对应的行已经被缓存在行缓存系统中时直接在行缓存系统中对该访存请求对应的数据进行处理;其中行缓存系统是设置于DRAM内存控制器中,用于缓存DRAM中一个或多个整行的数据,行缓存系统的大小为DRAM内存控制器能够支持的DRAM行的宽度与DRAM内存控制器能够支持的最大存储阵列集合的数量之积的整数倍。本发明能够解决现有行缓存方法存在的行缓冲不能被多个访存请求同时访问、由于行缓冲命中率受到空间局部性和多进程之间干扰的影响而不能降低DRAM平均访问延时、以及由于进程或线程本身存在循环或跳转的分支指令导致破坏进程或线程的局部性的技术问题。
Description
技术领域
本发明属于计算机系统设计领域,更具体地,涉及一种基于DRAM内存控制器的行缓存方法和系统。
背景技术
随着动态随机存取存储器(Dynamic Random Access Memory,简称DRAM)标准的更新换代,DRAM容量越来越大,但DRAM的访问延时并没有得到相应下降,原因在于,每个访存请求首先需要根据其访问的行地址将数据从指定行移动到行缓冲(Row buffer),然后从行缓冲中访问数据;若当前访存请求所需要访问的数据已经暂存在行缓冲中,则该访存请求可以直接从行缓冲中对数据进行访问;而当访存请求所需访问的行与暂存在行缓冲中的行不一致(即行缓冲未能命中)时,则需要首先将行缓冲中的数据通过预充电操作写回到其行中,再将访存请求所需访问的行通过行激活操作传输到行缓冲中,由此导致访存请求需要等待较长的延时才能开始访问数据。有鉴于此,目前研究人员展开了大量研究,试图找到一种行缓存方法,其通过提高行缓冲命中率来降低DRAM平均访问延时。
然而,上述基于行缓冲命中率的行缓存方法存在一些不可避免的问题:首先,由于行缓冲在DRAM中是数据操作与访存操作之间重要的中间介质,其访问存在独占性,因此行缓冲不能被多个访存请求同时访问;其次,随着云计算和大数据的发展,进程或线程规模快速增加,且复杂程度日益加深,这都使得产生的访存请求在空间局部性上存在较大差异,这会导致该方法中行缓冲命中率不仅受到空间局部性的影响,同时也会受到多进程之间干扰的影响,从而并不能保证DRAM平均访问延时得以降低;最后,由于进程或线程本身存在循环或跳转的分支指令,这会造成超出整行的寻址范围,破坏进程或线程的局部性。
发明内容
针对现有技术的以上缺陷或改进需求,本发明提供了一种基于DRAM内存控制器的行缓存系统(Row cache)方法和系统,其目的在于,解决现有基于行缓冲命中率的行缓存方法存在的行缓冲不能被多个访存请求同时访问、由于行缓冲命中率受到空间局部性和多进程之间干扰的影响而不能降低DRAM平均访问延时、以及由于进程或线程本身存在循环或跳转的分支指令导致破坏进程或线程的局部性的技术问题。
为实现上述目的,按照本发明的一个方面,提供了一种基于DRAM内存控制器的行缓存方法,其是应用在DRAM内存控制器中,所述行缓存方法具体为,接收来自于用户的访存请求,并在该访存请求对应的行已经被缓存在行缓存系统中时直接在行缓存系统中对该访存请求对应的数据进行处理;其中行缓存系统是设置于DRAM内存控制器中,用于缓存DRAM中一个或多个整行的数据,行缓存系统的大小为DRAM内存控制器能够支持的DRAM行的宽度与DRAM内存控制器能够支持的最大存储阵列集合的数量之积的整数倍。
优选地,在行缓存系统中对该访存请求对应的数据进行处理具体为,首先,判断该访存请求的类型是读请求还是写请求,如果是读请求,则将行缓存系统中该访存请求对应的数据传输到数据总线,如果是写请求,则对行缓存系统中该访存请求对应的数据进行更改,并将行缓存系统中与该访存请求对应的行所对应的修改标志位设置为1。
按照本发明的另一方面,提供了一种基于DRAM内存控制器的行缓存系统,行缓存系统是设置于DRAM内存控制器中,用于缓存DRAM中一个或多个整行的数据,行缓存系统包括局部性预测模块,用于识别每个进程当前正在访问的整行,并通知DRAM内存控制器将整行上的数据从行缓冲传输到行缓存系统,行缓存系统的大小为DRAM内存控制器能够支持的DRAM行的宽度与DRAM内存控制器能够支持的最大存储阵列集合的数量之积的整数倍。
优选地,局部性预测模块还用于通知DRAM内存控制器将每个进程的当前正在访问的整行的下一整行上的数据也从行缓冲传输到行缓存系统。
优选地,局部性预测模块还用于对观察窗口内的所有访存请求所访问的行地址进行计数,将计数结果中行地址数量最多的前P个行地址上的数据从行缓冲传输到行缓存系统中除了第二活跃区域以外的区域,其中第二活跃区域用于存放活跃进程的当前行的下一行,观察窗口大小为400至1200个访存请求,P值小于(行缓存系统的最大行数-活跃进程总数*2)。
按照本发明的另一方面,提供了一种基于DRAM内存控制器的行缓存系统,行缓存系统是设置于DRAM内存控制器中,用于缓存DRAM中一个或多个整行的数据,行缓存系统的大小为DRAM内存控制器能够支持的DRAM行的宽度与DRAM内存控制器能够支持的最大存储阵列集合的数量之积的整数倍,行缓存系统包括局部性预测模块,局部性预测模块用于对观察窗口内的所有访存请求所访问的行地址进行计数,将计数结果中行地址数量最多的前M个行地址上的数据从行缓冲传输到行缓存系统中;其中局部性预测模块的观察窗口大小为400到1200个,M值小于行缓存系统的最大行数。
按照本发明的另一方面,提供了一种基于DRAM内存控制器的行缓存系统,行缓存系统是设置于DRAM内存控制器中,用于缓存DRAM中一个或多个整行的数据;行缓存系统的大小为DRAM内存控制器能够支持的DRAM行的宽度与DRAM内存控制器能够支持的最大存储阵列集合的数量之积的整数倍;行缓存系统包括局部性预测模块,用于缓存DRAM中一个或多个整行的数据;局部性预测模块还用于对观察窗口内的所有访存请求所访问的行地址进行计数,将计数结果中行地址数量最多的前N个行地址上的数据从行缓冲传输到行缓存系统中除了第一活跃区域以外的区域,其中第一活跃区域用于存放活跃进程的当前行,活跃进程是最近发起过访存请求的进程,局部性预测模块的观察窗口大小为400至1200个访存请求,N值小于或等于行缓存系统的最大行数与活跃进程总数之差。
按照本发明的另一方面,提供了一种基于DRAM内存控制器的行缓存系统,行缓存系统是设置于DRAM内存控制器中,用于缓存DRAM中一个或多个整行的数据,行缓存系统的大小为DRAM内存控制器能够支持的DRAM行的宽度与DRAM内存控制器能够支持的最大存储阵列集合的数量之积的整数倍;行缓存系统包括行缓冲干扰识别模块、公平仲裁模块、以及局部性预测模块;行缓冲干扰识别模块用于周期性地根据当前运行的进程或线程的访存特性将其分类为干扰敏感型和非干扰敏感型;局部性预测模块用于在每个存储阵列集合中的每个干扰敏感型进程或线程中建立一个观察窗口,该观察窗口的大小为100至600个访问请求;公平仲裁模块用于将每一个存储阵列集合对应的行缓存系统平均分配给每一个干扰敏感型进程或线程,用于存储该进程或线程中命中率最高的1到2行数据。
优选地,当前运行的进程或线程进行分类具体为,判断当前运行的所有进程或线程发起的n个访存请求中单个进程或线程发起的所有访存请求的行缓冲命中率是否超过所有n个访存请求的行缓冲命中率,若超过则该进程或线程为干扰敏感型,若未超过则该进程或线程为非干扰敏感型,其中n的取值范围是250至750,行缓冲命中率是通过统计行地址相同的访存请求在访存请求序列中所占百分比来实现。
优选地,公平仲裁模块还用于将平均分配了行缓存系统以后,行缓存系统中剩下的空间按照循环轮转的方式分配给每个干扰敏感型进程或线程。
总体而言,通过本发明所构思的以上技术方案与现有技术相比,能够取得下列有益效果:
1、本发明能够解决现有基于行缓冲命中率的行缓存方法行缓冲不能被多个访存请求同时访问的技术问题,本发明中的行缓存系统是可以被来自不同进程或线程的访存请求同时访问的,且能够利用这些进程或线程的访存请求的空间局部性降低访存平均延时。
2、本发明通过筛选干扰敏感型的进程,并对干扰敏感型的进程进行局部性分析,将这些类型进程中局部性较好的行从行缓冲传输到行缓存系统中,可以防止在多个进程同时访问同一Bank中的不同行时,发生干扰敏感型进程访存性能下降的问题。
3、本发明通过将局部性较好的行数据缓存到行缓存系统中,即通过将每个进程的当前正在访问的整行的下一整行上的数据从行缓冲传输到行缓存系统,使得这些行数据在行缓存系统中获得了更低的访问延迟,并减弱了循环、跳转等分支指令对进程或线程局部性的破坏效果。
附图说明
图1是本发明基于DRAM内存控制器的行缓存方法的流程图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
本发明的基本思路在于,提出一种基于DRAM内存控制器的行缓存方法和系统,其能够将行缓冲中的数据在内存控制器中进行缓存,以隔离进程间的行缓冲干扰,并保护空间局部性好的访存请求。
如图1所示,本发明基于DRAM内存控制器(DRAM memory control unit)的行缓存方法,其是应用在DRAM内存控制器中,该行缓存方法具体为,接收来自于用户的访存请求,并在该访存请求对应的行已经被缓存在行缓存系统(Row cache)中时直接在行缓存系统中对该访存请求对应的数据进行处理。
行缓存系统是设置于DRAM内存控制器中,用于缓存DRAM中一个或多个整行(Entire Row)的数据,行缓存系统的大小为DRAM内存控制器能够支持的DRAM行的宽度(单位为字节)与DRAM内存控制器能够支持的最大存储阵列集合(Bank)的数量之积的整数倍,具体为2倍、4倍或以上。
存储阵列集合为DRAM颗粒中的存储阵列集合,每个存储阵列集合内部包括行地址解码器、列地址解码器、传感放大器、DRAM内存阵列、以及行缓冲。
虽然较大的行缓存系统使得进程或线程可以将其工作集中的大多数数据都以较低的延时访问,但当行缓存系统大小已经大于进程或线程工作集大小,使得行缓存系统带来的性能和能耗效率难以得到进一步提升。采用大于4倍的行缓存系统尺寸,性能将不会明显提升,而且增多的用于构建行缓存系统的SRAM电路将会带来大量电能消耗。工作集(或驻留集)是指在某段时间间隔内,进程要访问的页面集合,经常被使用的页面需要存在于工作集中,而长期不被使用的页面要从工作集中被丢弃,为了防止系统出现抖动现象,需要选择合适的工作集大小。
在本步骤中,在行缓存系统中对该访存请求对应的数据进行处理具体为,首先,判断该访存请求的类型是读请求还是写请求,如果是读请求,则将行缓存系统中该访存请求对应的数据传输到数据总线,如果是写请求,则对行缓存系统中该访存请求对应的数据进行更改,并将行缓存系统中与该访存请求对应的行所对应的修改标志位设置为1;当行缓存系统中的数据需要被更新时,标志位被修改为1的行需要使用预充电操作来写回DRAM中以保存更改。
根据本发明的第一种实施方式,还提供了一种基于DRAM内存控制器的行缓存系统,行缓存系统是设置于DRAM内存控制器中,用于缓存DRAM中一个或多个整行(EntireRow)的数据,行缓存系统包括局部性预测模块。
局部性预测模块用于识别每个进程当前正在访问的整行(Entire Row),并通知DRAM内存控制器将整行上的数据从行缓冲传输到行缓存系统。
行缓存系统的大小为DRAM内存控制器能够支持的DRAM行的宽度(单位为字节)与DRAM内存控制器能够支持的最大存储阵列集合(Bank)的数量之积的整数倍,具体为2倍、4倍或以上。这样的优点在于,较大的行缓冲使得进程或线程可以将其工作集中的大多数数据都以较低的延时访问。
具体而言,局部性预测模块可以是由DRAM内存控制器中的硬布线逻辑实现,也可以是由DRAM内存控制器中的一个软件模块构建。
设置局部性预测模块的优点在于,此时DRAM内存控制器内的行缓存系统与DRAM芯片内的存储阵列集合没有对应关系,行缓存系统被统一管理并动态分配给每一个活跃的进程使用。当这些进程提出在新的一行的访存请求,DRAM内存控制器就将正准备访问的新的一行数据从行缓冲传输到行缓存系统。这样,不同的进程对同一个存储阵列集合的不同行访问,可以借助这些进程当前行所在的行缓存系统隔离开来,就不会造成对行缓存系统局部性能优化的干扰。
进一步优选地,局部性预测模块还用于通知DRAM内存控制器将每个进程的当前正在访问的整行(Entire Row)的下一整行上的数据也从行缓冲传输到行缓存系统。
这样实现的优点在于,行激活操作将行上的数据通过位线(Bitline)传输到行缓冲中,而预充电操作将行缓冲中暂存的数据传输回其所在行,这一类操作将数据在行单元(Cell)和行缓冲之间移动,以从DRAM芯片中取出或写回访存请求对应的数据,这一过程一般会造成超过20个时钟周期以上的延迟。对于进程发出的行与行连续的访存请求,如果可以在处理器执行指令时或行缓存命中时,利用DRAM的空闲提前将下一行的整行数据也传输到行缓存,将会节省行与行连续访存请求时的数据在行单元和行缓冲间移动所花费的访存延迟。
进一步优选地,局部性预测模块还用于对观察窗口内的所有访存请求所访问的行地址进行计数,将计数结果中行地址数量最多的前P个行地址上的数据从行缓冲传输到行缓存系统中除了第二活跃区域以外的区域,即热行区,其中第二活跃区域用于存放活跃进程的当前行的下一行。
局部性预测模块的观察窗口大小为400至1200个访存请求,优选为800个,P值小于(行缓存系统的最大行数-活跃进程总数*2)。
这样实现的优点在于,由于后续在行缓冲干扰识别模块中识别出的干扰敏感型进程或线程具有较高的空间局部性,表现在当前观察窗口中被访问较多的行上的数据很有可能再次被访问,将计数结果中行地址数量最多的前P个行地址上的数据从行缓冲传输到行缓存系统中除了第二活跃区域以外的区域,既可以降低不同进程在同一存储阵列集合中的行缓冲竞争,也可以将所有进程中微指令局部性最好的行都存放在行缓存中;另外,也兼顾了行与行之间连续访存请求的情形。
根据本发明的第二种实施方式,还提供了一种基于DRAM内存控制器的行缓存系统,行缓存系统是设置于DRAM内存控制器中,用于缓存DRAM中一个或多个整行(EntireRow)的数据,行缓存系统包括局部性预测模块,局部性预测模块用于对观察窗口内的所有访存请求所访问的行地址进行计数,将计数结果中行地址数量最多的前M个行地址上的数据从行缓冲传输到行缓存系统中。
在本实施方式中,局部性预测模块的观察窗口大小为400到1200个,优选为800个,M值小于行缓存系统的最大行数。
这样实现的优点在于,由于在后续行缓冲干扰识别模块中识别出的干扰敏感型进程或线程具有较高的空间局部性,表现在当前观察窗口中被访问较多的行上的数据很有可能再次被访问。将当前观察窗口的访问次数最多的M行DRAM数据传输到缓存系统中,可以将所有进程中微指令局部性最好的行都存放在行缓存中。
根据本发明的第三种实施方式,还提供了一种基于DRAM内存控制器的行缓存系统,行缓存系统是设置于DRAM内存控制器中,行缓存系统包括局部性预测模块,用于缓存DRAM中一个或多个整行(Entire Row)的数据,局部性预测模块还用于对观察窗口内的所有访存请求所访问的行地址进行计数,将计数结果中行地址数量最多的前N个行地址上的数据从行缓冲传输到行缓存系统中除了第一活跃区域以外的区域,即热行区(Hot rowarea),其中第一活跃区域用于存放活跃进程的当前行,活跃进程指的是最近发起过访存请求的进程,
在本实施方式中,局部性预测模块的观察窗口大小为400至1200个访存请求,优选为800个;N值小于或等于行缓存系统的最大行数与活跃进程总数之差。
这样实现的优点在于,由于在行缓冲干扰识别模块中识别出的干扰敏感型进程或线程具有较高的空间局部性,表现在当前观察窗口中被访问较多的行上的数据很有可能再次被访问,将行地址数量最多的前N个行地址上的数据从行缓冲传输到行缓存系统中除了第一活跃区域以外的区域,既可以降低不同进程在同一存储阵列集合中的行缓冲竞争,也可以将所有进程中微指令局部性最好的行都存放在行缓存中。
根据本发明的第四种实施方式,还提供了一种基于DRAM内存控制器的行缓存系统,行缓存系统是设置于DRAM内存控制器中,行缓存系统包括行缓冲干扰识别模块、公平仲裁模块、以及局部性预测模块。
行缓存系统的大小为DRAM内存控制器能够支持的DRAM行的宽度与DRAM内存控制器能够支持的最大存储阵列集合的数量之积的整数倍,具体为4倍或以上。这样的优点在于,较大的行缓冲使得进程或线程可以将其工作集中的大多数数据都以较低的延时访问。
行缓冲干扰识别模块用于周期性地根据当前运行的进程或线程的访存特性将其进行分类,具体分为干扰敏感型和非干扰敏感型。分类的方法为判断当前运行的所有进程或线程发起的n个访存请求中单个进程或线程发起的所有访存请求(称为访存请求序列)的行缓冲命中率是否超过所有n个访存请求的行缓冲命中率,若超过则该进程或线程为干扰敏感型,若未超过则该进程或线程为非干扰敏感型。
在本实施方式中,n的取值范围是250至750,优选为500,行缓冲命中率是通过统计行地址相同的访存请求在访存请求序列中所占百分比来实现。
局部性预测模块用于在每个存储阵列集合中的每个干扰敏感型进程或线程中建立一个观察窗口,该观察窗口的大小为100至600个访问请求,优选为200个。
公平仲裁模块用于将每一个存储阵列集合对应的行缓存系统平均分配给每一个干扰敏感型进程或线程,用于存储该进程或线程中命中率最高的1到2行数据,优选1行。
进一步优选地,公平仲裁模块还用于将平均分配了行缓存系统以后,行缓存系统中剩下的空间按照循环轮转的方式分配给每个干扰敏感型进程或线程。这么实现的优点在于,提高行缓存系统中剩余空间的利用率,使得访存性能得到进一步提高。
本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (7)
1.一种基于DRAM内存控制器的行缓存方法,其是应用在DRAM内存控制器中,其特征在于,所述行缓存方法具体为,接收来自于用户的访存请求,并在该访存请求对应的行已经被缓存在行缓存系统中时直接在行缓存系统中对该访存请求对应的数据进行处理;其中行缓存系统是设置于DRAM内存控制器中,用于缓存DRAM中一个或多个整行的数据,行缓存系统的大小为DRAM内存控制器能够支持的DRAM行的宽度与DRAM内存控制器能够支持的最大存储阵列集合的数量之积的整数倍;在行缓存系统中对该访存请求对应的数据进行处理具体为,首先,判断该访存请求的类型是读请求还是写请求,如果是读请求,则将行缓存系统中该访存请求对应的数据传输到数据总线,如果是写请求,则对行缓存系统中该访存请求对应的数据进行更改,并将行缓存系统中与该访存请求对应的行所对应的修改标志位设置为1。
2.一种基于DRAM内存控制器的行缓存系统,其特征在于,
行缓存系统是设置于DRAM内存控制器中,用于缓存DRAM中一个或多个整行的数据;
行缓存系统包括局部性预测模块,用于识别每个进程当前正在访问的整行,并通知DRAM内存控制器将整行上的数据从行缓冲传输到行缓存系统;
行缓存系统的大小为DRAM内存控制器能够支持的DRAM行的宽度与DRAM内存控制器能够支持的最大存储阵列集合的数量之积的整数倍;
局部性预测模块还用于通知DRAM内存控制器将每个进程的当前正在访问的整行的下一整行上的数据也从行缓冲传输到行缓存系统;
局部性预测模块还用于对观察窗口内的所有访存请求所访问的行地址进行计数,将计数结果中行地址数量最多的前P个行地址上的数据从行缓冲传输到行缓存系统中除了第二活跃区域以外的区域,其中第二活跃区域用于存放活跃进程的当前行的下一行,观察窗口大小为400至1200个访存请求,P值小于(行缓存系统的最大行数-活跃进程总数*2)。
3.一种基于DRAM内存控制器的行缓存系统,其特征在于,
行缓存系统是设置于DRAM内存控制器中,用于缓存DRAM中一个或多个整行的数据;
行缓存系统的大小为DRAM内存控制器能够支持的DRAM行的宽度与DRAM内存控制器能够支持的最大存储阵列集合的数量之积的整数倍;
行缓存系统包括局部性预测模块,局部性预测模块用于对观察窗口内的所有访存请求所访问的行地址进行计数,将计数结果中行地址数量最多的前M个行地址上的数据从行缓冲传输到行缓存系统中;其中局部性预测模块的观察窗口大小为400到1200个,M值小于行缓存系统的最大行数。
4.一种基于DRAM内存控制器的行缓存系统,其特征在于,
行缓存系统是设置于DRAM内存控制器中,用于缓存DRAM中一个或多个整行的数据;
行缓存系统的大小为DRAM内存控制器能够支持的DRAM行的宽度与DRAM内存控制器能够支持的最大存储阵列集合的数量之积的整数倍;
行缓存系统包括局部性预测模块,用于缓存DRAM中一个或多个整行的数据;
局部性预测模块还用于对观察窗口内的所有访存请求所访问的行地址进行计数,将计数结果中行地址数量最多的前N个行地址上的数据从行缓冲传输到行缓存系统中除了第一活跃区域以外的区域,其中第一活跃区域用于存放活跃进程的当前行,活跃进程是最近发起过访存请求的进程,局部性预测模块的观察窗口大小为400至1200个访存请求,N值小于或等于行缓存系统的最大行数与活跃进程总数之差。
5.一种基于DRAM内存控制器的行缓存系统,其特征在于,
行缓存系统是设置于DRAM内存控制器中,用于缓存DRAM中一个或多个整行的数据;
行缓存系统的大小为DRAM内存控制器能够支持的DRAM行的宽度与DRAM内存控制器能够支持的最大存储阵列集合的数量之积的整数倍;
行缓存系统包括行缓冲干扰识别模块、公平仲裁模块、以及局部性预测模块;
行缓冲干扰识别模块用于周期性地根据当前运行的进程或线程的访存特性将其分类为干扰敏感型和非干扰敏感型;
局部性预测模块用于在每个存储阵列集合中的每个干扰敏感型进程或线程中建立一个观察窗口,该观察窗口的大小为100至600个访问请求;
公平仲裁模块用于将每一个存储阵列集合对应的行缓存系统平均分配给每一个干扰敏感型进程或线程,用于存储该进程或线程中命中率最高的1到2行数据。
6.根据权利要求5所述的行缓存系统,其特征在于,当前运行的进程或线程进行分类具体为,判断当前运行的所有进程或线程发起的n个访存请求中单个进程或线程发起的所有访存请求的行缓冲命中率是否超过所有n个访存请求的行缓冲命中率,若超过则该进程或线程为干扰敏感型,若未超过则该进程或线程为非干扰敏感型,其中n的取值范围是250至750,行缓冲命中率是通过统计行地址相同的访存请求在访存请求序列中所占百分比来实现。
7.根据权利要求5所述的行缓存系统,其特征在于,公平仲裁模块还用于将平均分配了行缓存系统以后,行缓存系统中剩下的空间按照循环轮转的方式分配给每个干扰敏感型进程或线程。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810203265.XA CN108509151B (zh) | 2018-03-13 | 2018-03-13 | 一种基于dram内存控制器的行缓存方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810203265.XA CN108509151B (zh) | 2018-03-13 | 2018-03-13 | 一种基于dram内存控制器的行缓存方法和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108509151A CN108509151A (zh) | 2018-09-07 |
CN108509151B true CN108509151B (zh) | 2020-04-14 |
Family
ID=63377542
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810203265.XA Active CN108509151B (zh) | 2018-03-13 | 2018-03-13 | 一种基于dram内存控制器的行缓存方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108509151B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112905111A (zh) * | 2021-02-05 | 2021-06-04 | 三星(中国)半导体有限公司 | 数据缓存的方法和数据缓存的装置 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104657461A (zh) * | 2015-02-10 | 2015-05-27 | 北京航空航天大学 | 基于内存与ssd协作式的文件系统元数据搜索缓存方法 |
CN105068940A (zh) * | 2015-07-28 | 2015-11-18 | 北京工业大学 | 一种基于Bank划分的自适应页策略确定方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7551505B1 (en) * | 2007-12-05 | 2009-06-23 | Qimonda North America Corp. | Memory refresh method and apparatus |
-
2018
- 2018-03-13 CN CN201810203265.XA patent/CN108509151B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104657461A (zh) * | 2015-02-10 | 2015-05-27 | 北京航空航天大学 | 基于内存与ssd协作式的文件系统元数据搜索缓存方法 |
CN105068940A (zh) * | 2015-07-28 | 2015-11-18 | 北京工业大学 | 一种基于Bank划分的自适应页策略确定方法 |
Also Published As
Publication number | Publication date |
---|---|
CN108509151A (zh) | 2018-09-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9361236B2 (en) | Handling write requests for a data array | |
Jevdjic et al. | Unison cache: A scalable and effective die-stacked DRAM cache | |
US10387315B2 (en) | Region migration cache | |
TWI536258B (zh) | 用於適應性粒度列緩衝器快取之方法和裝置、及記憶體裝置 | |
EP0470734B1 (en) | Cache memory management system | |
US6327642B1 (en) | Parallel access virtual channel memory system | |
US6427188B1 (en) | Method and system for early tag accesses for lower-level caches in parallel with first-level cache | |
US6321296B1 (en) | SDRAM L3 cache using speculative loads with command aborts to lower latency | |
CN105068940B (zh) | 一种基于Bank划分的自适应页策略确定方法 | |
US20120059983A1 (en) | Predictor-based management of dram row-buffers | |
US6708254B2 (en) | Parallel access virtual channel memory system | |
WO2017052764A1 (en) | Memory controller for multi-level system memory having sectored cache | |
US20060143400A1 (en) | Replacement in non-uniform access cache structure | |
US20170329710A1 (en) | Logical memory buffers for a media controller | |
US7293141B1 (en) | Cache word of interest latency organization | |
US6801982B2 (en) | Read prediction algorithm to provide low latency reads with SDRAM cache | |
CN108509151B (zh) | 一种基于dram内存控制器的行缓存方法和系统 | |
WO2024045586A1 (zh) | 支持simt架构的高速缓冲存储器及相应处理器 | |
EP0470736B1 (en) | Cache memory system | |
US6493814B2 (en) | Reducing resource collisions associated with memory units in a multi-level hierarchy memory system | |
US20010034808A1 (en) | Cache memory device and information processing system | |
US11520706B2 (en) | Dram-aware caching | |
KR102343550B1 (ko) | 스몰 액티브 커맨드를 이용한 메모리 시스템 | |
US20240070073A1 (en) | Page cache and prefetch engine for external memory | |
US20240054073A1 (en) | Circuitry and Method |
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 |