首页> 中国专利> 一种新的面向刷新的内存预取控制器及方法

一种新的面向刷新的内存预取控制器及方法

摘要

本发明公开了一种新的面向刷新的内存预取控制器及方法,所述内存预取控制器包括刷新管理器和请求调度器、模式识别器、预取器、SRAM缓存;刷新管理器:用于周期性地发出刷新请求;请求调度器:用于根据刷新管理器的刷新时序信息调度内存请求;模式识别器:用于收集一段时间内内存访问的统计信息,并输出发生概率值T和不发生概率值F,并预测缓存行,预取器:用于根据模式识别器输出的发生概率值T和不发生概率值F决定是否将预测的缓存行放入全相联的SRAM缓冲器;SRAM缓冲器:用于保存预取的缓存行。本发明通过预测刷新周期内可能被访问的数据块提前预取至指定内存空间,使得在刷新周期内,内存仍然可以服务内存请求,这样可以有效降低内存刷新开销。

著录项

  • 公开/公告号CN108319556A

    专利类型发明专利

  • 公开/公告日2018-07-24

    原文格式PDF

  • 申请/专利权人 湖北经济学院;

    申请/专利号CN201711454661.1

  • 申请日2017-12-28

  • 分类号G06F12/0862(20160101);G06F12/0804(20160101);G06F12/0842(20160101);

  • 代理机构42104 武汉开元知识产权代理有限公司;

  • 代理人胡镇西;刘琳

  • 地址 430205 湖北省武汉市江夏藏龙岛开发区杨桥湖大道8号

  • 入库时间 2023-06-19 06:00:45

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2019-01-18

    授权

    授权

  • 2018-08-17

    实质审查的生效 IPC(主分类):G06F12/0862 申请日:20171228

    实质审查的生效

  • 2018-07-24

    公开

    公开

说明书

技术领域

本发明涉及计算机系统结构技术领域,具体地指一种新的面向刷新的内存预取控制器及方法。

背景技术

DRAM内存一直被用作主要的主存储器部件。随着DRAM密度的急剧增加,它的成本变得更加低廉,DRAM不仅在台式电脑内存系统中使用,也用来部署构建大型高性能的DRAM存储系统。DRAM(Dynamic Random Access Memory),即动态随机存取存储器是最为常见的内存系统。DRAM只能保存数据很短时间,DRAM使用电容器存储信息,因此必须每隔一段时间进行刷新操作。如果存储单元没有被及时刷新,存储的信息就会丢失。然而,周期性地执行刷新操作会带来两个负面影响:(1)刷新操作会阻碍正常访存的执行,造成性能上的开销;(2)刷新操作会消耗额外的能耗,带来能耗上的开销。大量的研究工作一直致力于解决“内存墙”问题,特别是随着内存容量增加和3D堆叠技术的出现,解决该问题已越来越具有挑战性。

发明内容

基于背景技术存在的技术问题,本发明提出了一种新的面向刷新的内存预取控制器及方法,通过预测刷新周期内可能被访问的数据块并提前预取出被锁住的内存空间,使得在刷新周期内,内存仍然可以服务内存请求,这样可以有效降低内存刷新开销。

为达到上述目的,本发明提及的一种新的面向刷新的内存预取的内存控制器,包括刷新管理器和请求调度器,其特殊之处在于,还包括模式识别器、预取器、SRAM缓存;

所述刷新管理器:用于周期性地发出刷新请求;

所述请求调度器:用于根据刷新管理器的刷新时序信息调度内存请求;

所述模式识别器:用于根据刷新管理器的刷新时序信息收集一段时间内每次刷新操作开始前后发生的内存访问的统计信息,并输出发生概率值T和不发生概率值F用以进行后续的预取决策,并预测缓存行,所述发生概率值T表示指定周期内发生内存访问请求并且继续发生内存访问请求的概率值,所述不发生概率值F为指定周期内未发生内存访问请求并且继续不发生内存访问请求的概率值;

所述预取器:用于根据模式识别器输出的发生概率值T和不发生概率值F决定是否将预测的缓存行放入全相联的SRAM缓冲器;

所述SRAM缓冲器:用于保存预取的缓存行。

进一步地,所述内存预取控制器还包括基于RANK的映射模块,所述基于RANK的映射模块用于将不同应用程序映射到不同的rank以尽可能地减少并发运行应用程序的交错访问。

更进一步地,所述预取器通过模式识别器构建的预测表来确定预取指定的缓存行,所述预测表在rank刷新时被更新。

更进一步地,所述预测表中的条目包含以下字段:bankid,lastaddr,A1、b1、A2、b2、A3、b3;其中bankid是被观察存取模式的bank的标识符,lastaddr是上次访问的bank地址,A1、A2、A3分别表示第一、第二、第三连续缓存行访问状态的地址差,b1、b2、b3分别表示第一、第二、第三连续缓存行访问状态的访问请求频率。

更进一步地,所述预测表中的条目数与bank数相等。

本发明还提出一种新的面向刷新的内存预取方法,其特殊之处在于,所述方法包括如下步骤:

1)训练:收集指定周期内每次刷新操作开始前后发生的内存访问的统计信息,输出发生概率值T和不发生概率值F,所述发生概率值T表示指定周期内发生内存访问请求并且继续发生内存访问请求的概率值,所述不发生概率值F为指定周期内未发生内存访问请求并且继续不发生内存访问请求的概率值;

2)观察:观察指定周期内,在每个刷新操作前,一个观察窗口内的内存请求,然后基于发生概率值T和不发生概率值F是否执行预取,如果观察窗口内出现过请求,则以发生概率值T执行预取,构建预测表,预测最新被访问的地址,转步骤3);如果没有请求,则以不发生概率值F不执行预取,重复本步骤;

3)预取:内存转换到预取状态,在刷新开始之前,根据预测的最新被访问的地址将预测的缓存行预取入SRAM缓冲区;

4)缓存:产生内存请求以将这些缓存行预取到缓冲区内。

优选地,所述发生概率值T和不发生概率值F的计算方法为T=P{x>0/y>0}、F=P{x=0/y=0},其中x、y分别表示在刷新之前和之后在观察窗口中观察到的请求量。

优选地,所述步骤2)中,构建预测表的过程包括:

a1)当一个缓存行被访问时,计算新地址newaddr1与存储的最新被访问的地址lastaddr之间的地址差D1,将D1与第一连续缓存行访问状态的地址差A1相比较,如果D1与A1相等,则该访问为第一连续缓存行访问状态,令第一连续缓存行访问频率b1递增1,前往下一步;否则,令第一连续缓存行访问状态的地址差A1=D1,循环本步骤;

a2)当两个缓存行被访问时,计算两个新地址newaddr1、newaddr2与存储的前两个最新被访问的地址lastaddr1、lastaddr2之间的地址差D1=newaddr1-lastaddr2,D2=newaddr2-lastaddr1,如果D1与A1相等且D2与第二连续缓存行访问状态的地址差A2相等,则该访问为第二连续缓存行访问状态,令第二连续缓存行访问频率b2递增1,前往下一步;否则,令第一连续缓存行访问状态的地址差A1=D1,第二连续缓存行访问状态的地址差A2=D2,循环本步骤;

a3)当三个缓存行被访问时,计算三个新地址newaddr1、newaddr2、newaddr3与存储的前三个最新被访问的地址lastaddr1、lastaddr2、lastaddr3之间的地址差D1=newaddr1-lastaddr3,D2=newaddr2-lastaddr2,D1=newaddr3-lastaddr1,如果D1与A1相等且D2与A2相等且D3与第三连续缓存行访问状态的地址差A3相等,则该访问为第三连续缓存行访问状态,令第三连续缓存行访问频率b3递增1,前往下一步;否则,令第一连续缓存行访问状态的地址差A1=D1,A2=D2,A3=D3循环本步骤。

优选地,所述当第一、第二、第三连续缓存行访问频率b1、b2、b3的任何一个溢出时,所有的频率都降低一半,此时,输出lastaddr为最新被访问的地址。

优选地,所述步骤3)中当SRAM缓冲区的缓存行被访问的命中率低于阈值时,则返回步骤1)。

本发明的优点在于:通过提出一种面向刷新的预取控制器及方法来降低内存刷新开销。每次开始刷新操作前,内存控制器从要刷新的列(rank)中将某些行预取到一个新增的SRAM缓冲区。这样,当一个rank正在刷新时,内存请求仍然可以进行,而不被阻塞。与自动刷新的内存系统相比,采用该方法的的内存性能可以提高9.2%(平均3.3%),同时减少高达6.7%的整体存储能耗(平均3.6%)。此外,通过对四核多程序模拟实验,采用该方法的内存系统性能提高了2.22倍(1.32倍平均),同时减少了48.8%的能耗(平均24.4%)。

附图说明

图1为本发明一种新的面向刷新的内存预取控制器的流程图。

图2为预测表条目的数据字段。

具体实施方式

下面结合附图及实施例对本发明作进一步的详细描述,但该实施例不应理解为对本发明的限制。

如图1所示,本发明提出的一种新的面向刷新的内存预取控制器,包括刷新管理器1、请求调度器2、模式识别器3、预取器4、SRAM缓存5、基于RANK的映射模块6。

其中,刷新管理器1:用于周期性地发出刷新请求。

请求调度器2:用于根据刷新管理器的刷新时序信息调度内存请求。

模式识别器3:用于根据刷新管理器的刷新时序信息收集一段时间内每次刷新操作开始前后发生的内存访问的统计信息,并输出发生概率值T和不发生概率值F用以进行后续的预取决策,并预测缓存行,发生概率值T表示指定周期内发生内存访问请求并且继续发生内存访问请求的概率值,不发生概率值F为指定周期内未发生内存访问请求并且继续不发生内存访问请求的概率值。

预取器4:用于根据模式识别器输出的发生概率值T和不发生概率值F决定是否将预测的缓存行放入全相联的SRAM缓冲器。

SRAM缓冲器5:用于保存预取的缓存行。

基于RANK的映射模块6:用于将不同应用程序映射到不同的rank以尽可能地减少并发运行应用程序的交错访问。

本发明提出一种面向刷新的预取控制器及方法来降低内存刷新开销。每次开始刷新操作前,从要刷新的列(rank)中将某些行预取到一个新增的SRAM缓冲区。这样,当一个rank正在刷新时,内存请求仍然可以进行,而不被阻塞。模式识别器收集在一段时间内每次刷新操作开始前后发生的内存访问的统计信息,并输出两个条件概率用以进行后续的预取决策。预取器通过一张预测表来确定出现在刷新操作前后的访问模式。预测表在每次要访问的是下一个要刷新的rank时被更新,并作为参考来决定预取哪些缓存行。

系统结构:在内存控制器中增加了四个新模块来实现面向刷新的预取:模式识别器3、预取器4、SRAM缓存5和基于Rank的映射6。模式识别器3的功能是观察刷新操作前后发生的应用程序内存行为。作为模式分析的结果,它输出多个概率值从而帮助预取器4以概率模式进行预取决策。预取器4用预取算法根据在下一个刷新期间到达rank的请求预测哪些缓存行将被用到,基于访问模式进行预测。最后,当刷新要启动时,预取器4根据模式识别器3的概率值决定是否将预测的缓存行放入全相联的SRAM缓冲器5。模式识别器3和预取器4都依赖刷新管理器中的刷新时序信息。所有rank在内存系统中共享同一刷新电路(如在同一存储器通道中的rank),轮流利用SRAM缓冲区5来保存预取的缓存行。将不同应用程序映射到不同的rank则尽可能地减少并发运行应用程序的交错访问。它通过将应用程序分配到不同的rank来避免干扰,这样对相同rank的内存访问将呈现出更可预测的模式。

概率预取模型:模式识别器3根据概率预取模型是决定哪些缓存行是在刷新周期内最有可能被访问。首先,由于需要预测的是在内存rank范围内访问的缓存行,而不是在同一页中访问的缓存行,因此需要记录每个单独rank的访问历史。其次,只使用一个预测表来记录内存访问历史。每个表条目将观察到的访问模式记录到rank的一个bank中。预测表中的条目数与bank数相等。许多应用程序都有bank的局部性特征,这样的表格组织可以提高预测精度。每个条目包含以下字段:bankid,lastaddr,A1、b1、A2、b2、A3、b3,如图2所示。

bankid指被观察存取模式的bank的标识符。lastaddr是上次访问的bank地址。A1、A2、A3分别被定义为三种状态下两个连续缓存行访问的地址差。三个A字段和相关的频率b被用来记住三种不同的状态及各状态出现的次数。观测期间,当一个缓存行被访问时,模式识别器3计算新地址newaddr1和存储的lastaddr之间的地址差(记为D1)。如果D1等于(上一次计算出的)第一连续缓存行访问状态的地址差A1,那么第一连续缓存行访问状态的频率b1递增1;否则,A1被D1取代,b1重置为零。当两个缓存行被访问时,生成两个地址差、频率的元组。模式识别器3将新的两个地址差变量D1、D2与以前的A1、A2进行比较。如果都相同,表示观察到的是第二连续缓存行访问状态,则b2递增1。否则,D1、D2替换A1、A2,f2重置为零。同样,当三个缓存行被访问时,生成三个地址差、频率元祖,A1、A2、A3和b3都以类似的方式每三个访问更新一次。当三个频率中的任何一个溢出时,所有的频率都降低一半。最后,更新lastaddr为最新被访问的地址。如图2所示,每个表项需要204个比特位。因此,对于包含8个bank的rank,预取算法只需要204B的存储开销。

当目标rank即将进行刷新时,预取器4根据预测表确定的模式读取缓存行到SRAM缓冲器5。假设SRAM缓冲器5的容量为C(缓存行),bank i中的三个频率值分别是b1i,b2i和b3i。从banki中预取的缓存行(Hi)由公式3(N为一个rank中包含的bank数)给出。在banki中,三种模式下相对于LastAddr,缓存行的数量分别是

其中

基于上述新的面向刷新的内存预取控制器,本发明提出的面向刷新的内存预取方法,包括训练、观察、预取、缓存四个步骤:

1)训练:收集指定周期内每次刷新操作开始前后发生的内存访问的统计信息,输出发生概率值T和不发生概率值F,所述发生概率值T表示指定周期内发生内存访问请求并且继续发生内存访问请求的概率值,所述不发生概率值F为指定周期内未发生内存访问请求并且继续不发生内存访问请求的概率值。所述发生概率值T和不发生概率值F的计算方法为T=P{x>0/y>0}、F=P{x=0/y=0},其中x、y分别表示在刷新之前和之后在观察窗口中观察到的请求量。

2)观察:观察指定周期内,在每个刷新操作前,一个观察窗口内的内存请求,然后基于发生概率值T和不发生概率值F是否执行预取,如果观察窗口内出现过请求,则以发生概率值T执行预取,构建预测表,预测最新被访问的地址,转步骤3);如果没有请求,则以不发生概率值F不执行预取,重复本步骤。

构建预测表的过程包括:

a1)当一个缓存行被访问时,计算新地址newaddr1与存储的最新被访问的地址lastaddr之间的地址差D1,将D1与第一连续缓存行访问状态的地址差A1相比较,如果D1与A1相等,则该访问为第一连续缓存行访问状态,令第一连续缓存行访问频率b1递增1,前往下一步;否则,令第一连续缓存行访问状态的地址差A1=D1,循环本步骤;

a2)当两个缓存行被访问时,计算两个新地址newaddr1、newaddr2与存储的前两个最新被访问的地址lastaddr1、lastaddr2之间的地址差D1=newaddr1-lastaddr2,D2=newaddr2-lastaddr1,如果D1与A1相等且D2与第二连续缓存行访问状态的地址差A2相等,则该访问为第二连续缓存行访问状态,令第二连续缓存行访问频率b2递增1,前往下一步;否则,令第一连续缓存行访问状态的地址差A1=D1,第二连续缓存行访问状态的地址差A2=D2,循环本步骤;

a3)当三个缓存行被访问时,计算三个新地址newaddr1、newaddr2、newaddr3与存储的前三个最新被访问的地址lastaddr1、lastaddr2、lastaddr3之间的地址差D1=newaddr1-lastaddr3,D2=newaddr2-lastaddr2,D1=newaddr3-lastaddr1,如果D1与A1相等且D2与A2相等且D3与第三连续缓存行访问状态的地址差A3相等,则该访问为第三连续缓存行访问状态,令第三连续缓存行访问频率b3递增1,前往下一步;否则,令第一连续缓存行访问状态的地址差A1=D1,A2=D2,A3=D3循环本步骤。

3)预取:内存转换到预取状态,在刷新开始之前,根据预测的最新被访问的地址将预测的缓存行预取入SRAM缓冲区;

4)缓存:产生内存请求以将这些缓存行预取到缓冲区内。

总之,在任何特定的时间,内存处于三个状态之一,即训练,观察和预取。训练状态,模式分析器3分析每次刷新操作前后出现的内存请求,并在训练期结束时输出发生概率值T和不发生概率值F,内存转到观察状态。训练状态的持续时间可以由训练期间应包括的刷新操作数量表示。在观察状态,预取器4观察在每个刷新操作前一个观察窗口内的内存请求,然后基于观测和发生概率值T和不发生概率值F决定是否执行预取。具体来说,如果观察窗口内出现过请求,则以概率T执行预取;如果没有请求,则以概率F不执行预取。如果决定预取,内存转换到预取状态,在刷新开始之前将预测的缓存行预取入SRAM缓冲区5。否则继续处于观察状态。最后,如果SRAM缓冲区5的命中率低于一个阈值,内存状态再回到训练状态。

当预取器4决定将预测的缓存行预取到缓冲区后,将产生内存请求以将这些缓存行预取到缓冲区内。然而,盲目地发出预取请求可能导致性能退化,为了尽量减少冲突,做了以下两个优化。首先,内存请求在下一个被刷新的rank被刷新锁定之前寻址到,由于刷新需要一段较长的连续时间,所以在刷新操作之前清空队列中的内存请求可以避免请求内务资源占用整个刷新周期。其次,预取请求放在一个专用的队列,如果他们访问的是同一行,则与内存耗尽的请求一起发出。这样做,因为行缓冲命中访问可以更快地完成使得预取开销最小化。剩余的请求在刷新开始之前下发到内存中。

面向刷新的预取方法的预取器在处理器端不同于传统的处理器。首先,预取器位于内存控制器,目的是减轻刷新开销,而其他预取位于处理器中从而隐藏访问底层内存结构的延迟(例如,L2、LLC或DRAM)。甚至可能这些预取器的预取请求不幸被内存刷新阻塞,浪费处理器和片外存储器的内存带宽。第二,传统的预取器不断执行预取,而面向刷新的预取方法只在刷新前短暂时间预取。最后,面向刷新的预取方法可以进一步减轻刷新开销提高内存性能。与自动刷新的内存系统相比,采用该方法的的内存性能可以提高9.2%(平均3.3%),同时减少高达6.7%的整体存储能耗(平均3.6%)。此外,通过对四核多程序模拟实验,采用该方法的内存系统性能提高了2.22倍(1.32倍平均),同时减少了48.8%的能耗(平均24.4%)。

尽管上面结合附图对本发明的优选实施例进行了描述,但是本发明并不局限于上述的具体实方式,上述的具体实施方式仅仅是示意性的,并不是限制性的,本领域的普通技术人员在本发明的启示下,在不脱离本发明宗旨和权利要求所保护的范围情况下,还可以作出很多形式的具体变换,这些均属于本发明的保护范围内。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号