CN103811048B - 一种混合存储器结构的低功耗刷新方法 - Google Patents
一种混合存储器结构的低功耗刷新方法 Download PDFInfo
- Publication number
- CN103811048B CN103811048B CN201410067838.2A CN201410067838A CN103811048B CN 103811048 B CN103811048 B CN 103811048B CN 201410067838 A CN201410067838 A CN 201410067838A CN 103811048 B CN103811048 B CN 103811048B
- Authority
- CN
- China
- Prior art keywords
- dram
- refresh
- temperature
- power consumption
- worst
- 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
Landscapes
- Dram (AREA)
Abstract
本发明提供了一种混合存储器结构的低功耗刷新方法,当DRAM处于非繁忙状态,运行在温度敏感模式下,非易失性存储器中的存储单元替代当前温度范围内中检测到的最差存储单元,重新配置所述DRAM刷新周期;如果在某一时刻检测到当前温度变化到另一温度范围,那么更新最差存储单元信息,更新刷新周期;如果DRAM运行在温度不敏感模式,非易失性存储器中的存储单元替代检测到的最差存储单元,重新配置DRAM的刷新周期;如果在某一时刻DRAM运行温度超过规定值时,DRAM会由低功耗刷新模式切换回常规刷新模式。本发明的技术方案实现了刷新周期的提高,节省了刷新功耗,并且基本不影响原DRAM的存储与读取性能。
Description
技术领域
本发明属于计算机硬件领域,涉及一种内存条刷新方法,尤其涉及一种混合存储器结构的低功耗刷新方法。
背景技术
在过去几十年,动态随机访问存储器(DRAM)成本随着摩尔定律不断降低。但随着特征尺寸越来越小,芯片对功耗的要求越来越高,由于DRAM存储电容漏电因此每隔一段时间就必须刷新一次,随着DRAM容量越来越大,刷新功耗也越来越大,如图1所示。刷新操作不仅耗电,而且由于干涉到存储器存取因此DRAM性能也会下降。目前DRAM刷新频率是由最差存储单元(tail bit)所决定的,例如64ms,存储单元保持时间分布如图2所示,图中可以看出绝大数单元的保持数据的能力是远比刷新周期要长的。并且随着温度升高,刷新频率也会上升。因此如何降低刷新功耗、降低刷新频率是提高DRAM性能亟需解决的问题。
目前DRAM有两种基本的刷新方式,集中式刷新(burst refresh)和分布式刷新(distributed refresh)。集中式刷新方式中将刷新周期分成两部分:在一个时间段内,刷新存储器所有行,此时CPU停止访问内存;另一个时间段内,CPU可以访问内存,刷新电路不工作。这种刷新模式存在读写死区时间,适用于高速存储器。分布式刷新电路是CPU与刷新电路交替访问内存,在一个刷新周期内,所有的行都被刷新一次,且同一行被刷新的时间间隔等于存储芯片的刷新周期,两种刷新方式如图3所示。例如对一个4K行的DRAM存储器阵列来说,刷新周期为64ms,一个刷新周期内有4096个刷新次数,对每一行刷新需要的时间为130ns。对集中式刷新方式来说,需要对4096行集中刷新,时间为:
4096×130ns=532480ns≈0.532ms;
64ms-0.532ms=63.468ms;
也就是说在一个刷新周期内,有0.532ms的时间耗费在刷新上,此时CPU无法访问DRAM,剩余63.468ms提供给CPU对DRAM进行读或者写操作。对分布式刷新方式来说,64ms分配到每一行是:
64ms÷4096=15.6us;
15.6us-0.13us=15.47us;
也就是说在一个刷新周期内,DRAM中的每一行有0.13us耗费在刷新上,剩余15.47us可供CPU对该行进行读写操作。
自动温度补偿自刷新技术(Auto Temperature Compensated Self Refresh)是一种低功耗的DRAM刷新技术。当温度升高,刷新频率必须提高以免数据丢失,刷新功耗也随之上升;相反,当温度降低,数据保持能力也会上升,刷新频率可随之降低,如图4所示。其实现结构图如图5所示。自动温度补偿自刷新模块利用一个内建温度传感器去感应周围温度,然后自动调整刷新间隔,从而显著降低功耗。传统的温度补偿自刷新模块可以从外部来改变温度寄存器的值从而调整刷新频率。这种技术虽然能够降低刷新频率,但是在一定的温度范围内,所设定的刷新频率是固定的,并没有考虑到最差存储单元的分布。而且随着技术发展DRAM离CPU越来越近,温度也会越来越高,这种降低功耗的方法也越来越局限。
一种基于数据保持时间的DRAM智能刷新技术是将DRAM行根据保持时间的不同分成不同的组,对每一个组以不同的刷新频率进行刷新。那些包含最差存储单元的组以正常刷新频率刷新,而绝大部分的行刷新频率大大降低,无需对DRAM阵列进行修正,只需对DRAM控制器进行最小限度的修正。资料显示在32GB DRAM的八核系统中,刷新频率能够降低74.6%,平均DRAM功耗可降低16.1%。虽然这种方法考虑了最差存储单元,但是不论DRAM是否繁忙,包含最差存储单元的行仍需要以正常刷新频率进行刷新。
近来,一些新型的DRAM结构或者存储材料被提出来以解决当前DRAM技术的缺陷。IBM公司主张用非易失性存储器相变存储器(PCM)与DRAM结合形成一种混合存储器。其结构如图6所示。DRAM只作为高速缓存器,缓存最近使用的信息,只有在需要时才将数据存储到PCM中。由于DRAM只是作为缓存,容量不需要很大,PCM作为主存储介质在存储数据时无需定时刷新,因此这种结构能够大大降低数据存储的功耗,但是由于PCM存储与存取速度较慢,因此这种结构在整体性能上明显下降。另一种混合存储结构如图7所示,其中5为非易失性存储器,7为逻辑检测模块。利用非易失性存储器5中的存储单元替代原DRAM主存储器2中位于尾端分布区的存储单元,从而可以大大提高刷新周期,降低刷新频率,极大地降低了原DRAM刷新功耗。
发明内容
有鉴于此,本发明基于混合存储器结构,在考虑最差存储单元的前提下实现刷新频率的降低,节省刷新功耗,并且基本不影响原DRAM的存取性能。
为达到上述目的,具体技术方案如下:
一种混合存储器结构的低功耗刷新方法,所述混合存储器结构包括DRAM、非易失性存储器和逻辑检测模块,以及可在所述混合存储器上配置的温度传感器,包括以下步骤:
步骤1,检测所述DRAM内部最差存储单元信息,并将最差存储单元信息存储在所述非易失性存储器中;
步骤2,如果所述DRAM处于繁忙状态,所述DRAM以常规刷新模式工作,此时所述DRAM的刷新周期为常规刷新周期;
步骤3,如果所述DRAM处于非繁忙状态,那么所述DRAM进入低功耗刷新模式,所述低功耗刷新模式包括温度敏感模式和温度不敏感模式,如果选择温度敏感模式,那么进入步骤4,如果选择温度不敏感模式,则进入步骤5;
步骤4,如果所述DRAM运行在温度敏感模式下,所述非易失性存储器中的存储单元替代当前温度范围内在步骤1中检测到的最差存储单元,重新配置所述DRAM刷新周期;如果在某一时刻检测到当前温度变化到另一温度范围,那么更新最差存储单元信息,更新刷新周期;
步骤5,如果所述DRAM运行在温度不敏感模式,所述非易失性存储器中的存储单元替代在步骤1中检测到的最差存储单元,重新配置所述DRAM的刷新周期;如果在某一时刻所述DRAM运行温度超过规定值时,所述DRAM会由低功耗刷新模式切换回常规刷新模式。
优选的,还包括步骤6:当检测在低功耗刷新模式下运行的所述DRAM处于繁忙状态,那么将所述非易失性存储单元中的数据写回至所述DRAM中,所述DRAM切换至常规刷新模式。
优选的,所述步骤1中的最差存储单元信息包括基于温度变化的最差存储单元信息或不基于温度变化的最差存储单元信息。
优选的,当对所述DRAM存取功耗接近或小于所述DRAM自身刷新功耗,那么所述DRAM处于非繁忙状态。
优选的,步骤2中所述温度感应器感应所述DRAM当前工作温度,所述DRAM以最短刷新周期T_refresh_spec周期刷新,并检测所述DRAM是否处于繁忙状态。
优选的,所述步骤1中的检测方法包括:
步骤1.1,所述DRAM在初始测试温度Temp下第一次进行刷新检测,刷新周期为T_refresh_spec,所述刷新周期为最短刷新周期;
步骤1.2,记录检测在当前刷新周期T_refresh下的最差存储单元信息;
步骤1.3,对可工作在温度敏感模式下的DRAM,需要检测在不同温度下的最差存储单元信息;先判断当前测试温度是否达到检测上限温度Temp_max,未达到则在当前检测后将当前温度提高△T,将此新的测试温度覆盖成Temp,再返回步骤1.1重新检测;否则,将此测试温度设置回第一次初始测试温度Temp,再进行步骤1.4;若所述DRAM仅工作在温度不敏感模式下,那么直接进入步骤1.4;
步骤1.4,判断当前测试刷新周期是否达到上限检测刷新周期T_refresh_max,若达到,则停止检测进入步骤1.5;若未达到,通过延迟时间提高△t来提高刷新周期,将此时新刷新周期覆盖成T_refresh_spec,再返回步骤1.1;
步骤1.5,分析检测结果,并将最优方案结果保存至非易失性存储器中。
优选的,所述步骤1.5中,对于可工作在温度敏感模式下的所述DRAM,需要记录在不同温度范围下的最优方案;对于仅工作在温度不敏感模式下的所述DRAM,只需要记录在当前温度范围内的最优方案。
优选的,所述步骤1.1中的刷新检测为分布式刷新检测或者集中式刷新检测。
优选的,所述步骤1.2中的最差存储单元信息即在当前温度范围内,数据保持时间小于当前所述DRAM刷新周期的所述DRAM存储单元的物理地址信息。
相对于现有技术,本发明的技术方案的优点有:
本发明的技术方案在考虑最差存储单元的前提下实现刷新频率的降低,节省刷新功耗,并且基本不影响原DRAM的存取性能。
附图说明
构成本发明的一部分的附图用来提供对本发明的进一步理解,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是刷新功耗随DRAM容量变化示意图;
图2是DRAM中存储单元保持能力分布图;
图3是DRAM中两种刷新模式时序示意图;
图4是DRAM中存储单元保持能力随温度变化示意图;
图5是自动温度补偿自刷新技术的结构示意图;
图6是IBM混合DRAM结构示意图;
图7是基于最差存储单元的混合DRAM结构示意图;
图8是本发明实施例混合DRAM低功耗刷新的实现方法流程示意图;
图9是本发明实施例检测DRAM中最差存储单元信息流程示意图;
图10是本发明实施例DRAM块阵列示意图;
图11是本发明实施例分布式检测最差存储单元时序图;
图12是本发明实施例DRAM块阵列分成m个子单元示意图;
图13是本发明实例1时序图;
图14是本发明实施例集中式检测最差存储单元时序图;
图15是本发明实例2时序图;
图16是本发明最差存储单元地址示例图;
图17是本发明实施例最差存储单元数随温度变化示意图;
图18是本发明实施例最差存储单元数随刷新周期提高变化示意图;
图19是本发明实施例DRAM结构分块和分层结构示意图;
图20是本发明实施例操作系统改善混合DRAM性能示例图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
需要说明的是,在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。
以下将结合附图对本发明的实施例做具体阐释。
在DRAM繁忙时,DRAM主要功耗为存取功耗,而DRAM非繁忙时,DRAM主要功耗为刷新功耗。本发明的实施例基于最差存储单元为基础的,结构如图7所示,其中2为DRAM存储阵列,5为非易失性存储器,7为逻辑检测模块,8为温度传感器,其可以是混合DRAM芯片内置的,也可以是系统中的。若温度检测器是DRAM外部系统中的,一旦温度范围发生变化,那么外部系统需发送指令至DRAM芯片以便进行调整;若是存在于该DRAM内部,那么无需外部系统发送指令DRAM可自动进行调整。
本发明实施例的实现方法流程如图8所示:
步骤1,混合DRAM芯片首先检测内部最差存储单元信息,检测包括基于温度变化的最差存储单元信息或不基于温度变化的最差存储单元信息,并将最差存储单元信息存储在非易失性存储器5中。
步骤2,在DRAM正常运行时,逻辑检测模块检测DRAM运行状态,如果工作在繁忙状态,此时对DRAM的刷新功耗非主要功耗,此时DRAM以常规刷新模式工作。
步骤3,如果需工作在非繁忙状态,那么DRAM将进入低功耗刷新模式,如果是“温度敏感模式”,那么进入步骤4,如果是“温度不敏感模式”,则进入步骤5。
步骤4,如果DRAM运行在温度敏感模式下,用非易失性存储器中的存储单元替代当前温度范围内在步骤1中检测到的最差存储单元,配置DRAM新的刷新周期,DRAM以新的刷新周期运行在低功耗刷新模式下。如果在某一时刻检测到当前温度变化到另一温度范围,那么更新最差存储单元信息,更新刷新周期。如果在某一时刻检测到DRAM工作状态转换为繁忙,那么进入步骤6。
步骤5,如果DRAM运行在温度不敏感模式,同样用非易失性存储器中的存储单元替代在步骤1中检测到的最差存储单元,配置DRAM新的刷新周期。如果在某一时刻DRAM运行温度超过规定值时(比如85℃),DRAM会由低功耗刷新模式切换回常规刷新模式,进入步骤6。
步骤6,在低功耗刷新模式下运行的DRAM不论以温度敏感模式或者温度不敏感模式运行,一旦检测到运行状态为繁忙,那么会立即将非易失性存储单元中的数据写回至DRAM中的指定单元,配置DRAM回到常规刷新周期,然后切换至常规刷新模式。
本发明的实施例根据运行状态在低功耗刷新模式和常规刷新模式下进行切换。
首先本发明实施例的步骤1是要检测DRAM中最差存储单元的位置以及数据保持时间。
本发明实施例的DRAM刷新检测方法如图9所示:
步骤1.1:DRAM在初始测试温度Temp下第一次进行刷新检测,刷新周期为T_refresh_spec,该刷新周期应等于DRAM数据手册上规定的最短刷新周期,例如64ms,方式可以是分布式刷新检测或者集中式刷新检测。
步骤1.2:记录检测在当前刷新周期T_refresh下的最差存储单元信息。
步骤1.3:对可工作在温度敏感模式下的DRAM,需要检测在不同温度下的最差存储单元信息。先判断当前测试温度是否达到检测上限温度Temp_max,未达到则在当前检测后将当前温度提高△T,将此新的测试温度覆盖成Temp,再返回步骤1.1重新检测;否则,将此测试温度设置回第一次初始测试温度Temp,再进行步骤1.4;若DRAM仅工作在温度不敏感模式下,那么直接进入步骤1.4。
步骤1.4:判断当前测试刷新周期是否达到上限检测刷新周期T_refresh_max,若达到,则停止检测进入步骤1.5;若未达到,通过延迟时间提高△t来提高刷新周期,将此时新刷新周期覆盖成T_refresh_spec,再返回步骤1.1。
步骤1.5:分析检测结果,并将最优方案结果保存至非易失性存储器5中。对于可工作在温度敏感模式下的DRAM来说,需要记录在不同温度范围下的最优方案;对于仅工作在温度不敏感模式下的DRAM来说,只需要记录在当前温度范围内的最优方案。
对于步骤1.1,假设一个DRAM块阵列如图10所示,字线有n行,位线有l列。每个字线与位线交点即为一个基本的存储单元,总共就有n×l个存储单元。在一定温度下,为了能够得到每个存储单元的数据保持能力信息,需要先向每个存储单元中写入数据,写入的数据可以是全0或者全1,亦或者55(101101)序列,亦或者AA(10101010)序列等。写入数据紧接着过一段时间后就是读数据,如果读出数据与写入数据一致,那么表明该存储单元的数据保持时间至少等于(亦或大于)所述这段时间。写入数据或者存取数据方法有两种,即分布式和集中式。
分布式刷新的时序图如图11所示,若k为所述DRAM数据输入输出端口数,即DRAM输入输出数据位宽,也就是一次访问DRAM的最大数据位宽,如图7所示。对k个存储单元来说,写操作需要的时间为写脉冲时间t_write_dis和延迟t_delay1_dis,读操作需要的时间为读脉冲时间t_read_dis和延迟t_delay2_dis,其中t_write_dis大于等于DRAM所允许的一个基本单元k个数据的最短写入时间,t_read_dis大于等于DRAM所允许的一个基本单元k个数据的最短输出时间。在一个刷新周期下对所有单元进行写操作后紧接对所有的存储单元进行读操作,检测在该刷新周期下数据是否保存完好。一个写脉冲或者读脉冲可以写或者读k个存储单元,那么对n×l个存储单元来说需要读或者写次,一个测试周期内读周期和写周期分别为:
T_test_dis=T_write_dis+T_read_dis (3)
一个测试周期时间T_test_dis包括写周期T_write_dis和读周期T_read_dis。第一个写脉冲写k个存储单元和与之对应的第一个读脉冲之间的测试时间T_test0_dis为:
第二个写脉冲和与之对应的第二个读脉冲之间的测试时间T_test1_dis为:
以此类推,直至最后一个写脉冲和最后一个读脉冲之间的测试时间为
为保证对所有存储单元的测试时间相同,需保证对k个存储单元的写脉冲t_write_dis加上等待时间t_delay1_dis等于对其读脉冲t_read_dis加上等待时间t_delay2_dis,并记为单位操作时间T_unit_dis,即
T_unit_dis=t_write_dis+t_delay1_dis=t_read_dis+t_delay2_dis(7)
这样就能保证对所有存储单元来说,测试时间均相同,即
为了方便测试,可以使读脉冲和写脉冲时间一样,即
由上述描述可以知道,在一个测试周期T_test_dis内,单元的刷新时间T_refresh为测试周期T_test_dis的一半,即
如果在该测试周期内,对每个存储单元来说,如果写入数据和读出数据保持一致,那么说明该存储单元的保持时间大于或者等于该刷新周期;如果写入数据与读出数据不一致,那么说明该存储单元在该刷新周期下不能保持数据完整,为最差存储单元。
如果由于DRAM容量太大,即使T_delay1_dis和T_delay2_dis为0,也无法在一半的测试周期内(为DRAM产品手册中定义的常规刷新时间,例如64ms,128ms)对所有存储单元进行一次写操作或读操作,即
那么可考虑对DRAM存储块分成m个子单元,如图12所示。一个测试周期只对一个子单元进行写入数据和读出数据测试,在下一个测试周期再对下一个子单元进行测试。那么一个测试周期内测试的存储单元数为n×l/m,对每个存储单元来说,刷新时间为:
那么读写n×l个存储单元需要m个测试周期。
下面举一具体实例1进一步阐述。
假设一个DRAM块阵列为1Mbit=1K*1K=1024*1024,数据输入输出带宽为32,即k=32。假设一个测试周期T_test_dis=128ms,即对每个存储单元来说,刷新时间T_refresh=64ms。为方便测试,写入数据为全1序列,读操作脉冲和写操作脉冲均需要t_read_dis=t_write_dis=200ns,即对每32个存储单元来说写数据或者读数据所需时间为200ns。需要的写脉冲或者读脉冲数N为:
单位操作时间T_unit为:
那么在每个读脉冲或者写脉冲后的延迟时间为:
t_delay1_dis=t_delay2_dis=T_unit_dis-t_ead_dis=1953-200=1753ns
显然对该DRAM块无需分成多个子单元。数据整理如表1所示,在该测试周期下对DRAM的测试时序图如图13所示。
表1
集中式刷新时序如图14所示。与分布式刷新方式不同的是,在一个测试周期下对所有单元进行集中式写操作经过一段延迟后再对所有的存储单元进行集中式读操作,检测在该测试周期下数据是否保存完好。若k为所述DRAM数据输入输出端口数,也就是一次访问DRAM的最大数据位宽。对每k个存储单元来说,写操作需要的时间为写脉冲时间t_write_burst,对n×l个存储单元来说需要读或者写次,在测试周期内的写周期中N个集中写脉冲后经过延迟t_delay_burst,紧接着就是读周期中N个集中读脉冲,读操作需要的时间为读脉冲时间t_read_burst。一个测试周期内读周期和写周期分别为:
T_test_burst=T_write_burst+T_read_burst(15)
一个测试周期时间T_test_burst包括写周期T_write_burst和读周期T_read_burst。第一个写脉冲写k个存储单元和与之对应的第一个读脉冲之间的测试时间T_test0_burst为:
第二个写脉冲和与之对应的第二个读脉冲之间的测试时间T_test=1_burst为:
以此类推,直至最后一个写脉冲和最后一个读脉冲之间的测试时间为
为保证对所有存储单元的测试时间相同,需保证对每k个存储单元的写脉冲时间t_write_burst等于对其读脉冲时间t_read_burst,即
t_write_burst=t_read_burst (19)
这样就能保证对所有存储单元来说,刷新时间T_refresh相同,假定N个集中写脉冲的时间记作T_total_burst,那么
那么在一个测试周期T_test内,单元的刷新时间T_refresh为:
如果在该测试周期内,对每个存储单元来说,如果写入数据和读出数据保持一致,那么说明该存储单元的保持时间大于或者等于该刷新周期;如果写入数据与读出数据不一致,那么说明该存储单元在该刷新周期下不能保持数据完整,为最差存储单元。
如果由于DRAM容量太大,即使T_delay_burst为0,也无法在一个T_total_burst时间内(即为DRAM产品手册中定义的的常规刷新时间,例如64ms,128ms等)对所有存储单元进行一次写操作,即
那么可考虑对DRAM存储块分成m个子单元,也如图12所示。一个测试周期只对一个子单元进行写入数据和读出数据测试,在下一个测试周期再对下一个子单元进行测试。那么一个测试周期内测试的存储单元数为n×l/m,对每个存储单元来说,刷新时间为:
那么读写n×l个存储单元需要m个测试周期。
下面举一具体实例2进一步阐述。
假设一个DRAM块阵列为256Mbit=32K×8K=32768×8192,数据输入输出带宽为32,即k=32。假设刷新时间T_refresh=64ms。为方便测试,写入数据为全1序列,读操作脉冲和写操作脉冲均需要t_read_burst=t_write_burst=200ns,即对每32个存储单元来说写数据或者读数据所需时间为200ns。需要的写脉冲或者读脉冲数N为:
集中写脉冲时间T_total_burst为:
T_total_burst=N×t_write_brust=8388608×200n=1677.7216ms>64ms
显然对该DRAM块需分成多个子单元,可以分为32个子单元,那么对于每个子单元中来说,一个测试周期内写脉冲或者读脉冲数为:
集中写脉冲时间T_total_burst为:
t_total_burst=N_m×t_write_burst=262144×200n≈52.4288ms
每个写脉冲后的延迟时间为:
t_delay_burst=T_refresh-t_total_burst=64-52.4288=11.5712ms
数据整理如表2所示,在该测试周期下对DRAM的测试时序图如图15所示。
表2:
对于步骤1.2来说是要记录检测到的最差存储单元信息,所谓最差存储单元信息即在当前温度范围内,数据保持时间小于当前DRAM刷新周期的那些DRAM存储单元的物理地址信息。例如检测到最差存储单元可如图16所示,我们知道DRAM刷新是以行为单位进行刷新的,在一个刷新周期内(比如64ms,128ms等),DRAM中的每一行都会被依次全部刷新一次,以分布式刷新为例,若一个DRAM块有8k行,刷新周期为128ms,则每过15.6us,一行上的所有DRAM单元都会被刷新一次。若DRAM容量上升,一个DRAM块中有16k行,那么在15.6us的时间窗口内就会有两行先后被刷新,上述在一定时间间隔内需要被刷新的行数称之为刷新组(refresh bundles)。图16(a)中是以一行为刷新组,黑点代表最差存储单元所在位置,(b)以两行为刷新组。最差存储单元信息可以是一个单个的最差存储单元所对应地址,包括字线地址,位线地址等,也可以仅仅是该最差单元所在行所在地址,即字线地址,也可以是刷新组的地址(这里仅考虑刷新组大于1行)。对于三者的对比,如表3所示。如果仅记录单个最差存储单元地址,优点是在低功耗模式下向非易失性存储器中写入的单元很少,从而对DRAM性能影响最小,缺点是记录的字线、位线地址信息量多,且该最差存储单元所在行仍需刷新。如果记录信息为最差存储单元所在行地址,优点是在低功耗模式下,该行无需刷新,记录的信息量较少,缺点是在低功耗模式下需要将该行所有单元均转存至非易失性存储器中,写入量多,对DRAM性能影响较大。如果记录的信息为一个刷新组地址,优点是该刷新组在低功耗模式下均无需刷新,记录的信息最少,缺点是在低功耗模式该刷新组下所有行均需要转存至非易失性存储器中,对DRAM性能影响最大。
表3:
在上述两种刷新方式的基础上,考虑DRAM工作在温度敏感模式和温度不敏感模式分别对DRAM进行检测。对于步骤1.3,DRAM可工作在温度敏感模式下,在初始检测周期T_refresh_spec和初始温度Temp下检测完后,需将当前温度提高△T重新进行检测,例如检测的温度范围可以设定为Temp+△T,Temp+2△T,Temp+3△T,Temp+4△T,……Temp_max。直到检测温度达到最高检测温度Temp_max,例如为90℃,停止检测。随着温度升高,DRAM块中的最差存储单元数也会逐渐升高,如图17所示。在步骤1.4下通过提高延迟时间(t_delay1_dis或者t_delay2_dis,T_delay_burst)来提高刷新周期为T_refresh1,同样可在不同温度范围下检测最差存储单元信息。如此循环,直到步骤1.4中检测刷新周期达到最大检测周期T_refresh_max。
对于步骤1.4,通过提高延迟时间(如果是分布式刷新,延迟时间为t_delay1_dis,如果是集中式刷新,延迟时间为T_delay_burst)来提高刷新周期,并在新的刷新周期下重新检测,直至检测到的最差存储单元数超过非易失性存储器的容量上限,即达到最大刷新检测时间T_refresh_max停止检测。随着刷新周期提高,最差存储单元也不断累积,如图18所示。随着刷新周期不断提高,虽然刷新功耗不断降低,但是被替换的存储单元也随之增多,替换功耗也会增多,由于对非易失性存储器的存取性能不及对原DRAM块的存取性能,原DRAM中被替换的存储单元增多也会导致混合DRAM存取性能有所下降,所以在刷新功耗降低和性能降低之间有一个折中。
对于步骤1.5,对可工作在温度敏感模式下的DRAM,检测的最差存储单元信息可如表4所示,分别检测在不同温度范围下和不同刷新周期下的最差存储单元信息,并记录在不同温度范围内最优刷新周期下的最差存储单元信息,所谓最优刷新周期下的最差存储单元信息即在该刷新周期下刷新功耗既能大幅度下降,又不会大量影响混合DRAM在低功耗模式下的性能。对于不需要工作在温度敏感模式下的DRAM,只检测在某个特定温度范围内(比如室温温度下)的最差存储单元信息,比如室温测试时DRAM刚从系统上电运行,记录在该温度下最优刷新周期下的最差存储单元信息,记录信息如表5所示。
表4:
表5:
步骤1检测完最差存储单元的信息后,步骤2就在DRAM正常运行时开始检测DRAM运行状态,首先温度感应器感应DRAM当前工作温度,DRAM刚开始上电,DRAM以最短刷新周期T_refresh_spec周期刷新,并检测DRAM是否处于繁忙状态。如果工作在繁忙状态,此时对DRAM的刷新功耗非主要功耗,此时DRAM以常规刷新模式工作。该状态可由以下信息判断:我们假设对DRAM的读和写功耗与刷新功耗大致相当,即
Pread≈Pwrite≈Prefresh (25)
如果对DRAM存取功耗远远大于对DRAM的刷新功耗,
Pread+Pwrite>>Prefresh (26)
那么DRAM工作状态就为繁忙状态。一个刷新周期内平均至少对每行操作两次,读或者写,那么DRAM就处于繁忙状态。繁忙状态下DRAM以最短刷新周期T_refresh_spec刷新;若相反,对DRAM存取功耗接近甚至小于对DRAM刷新功耗,那么判断DRAM处于非繁忙状态。步骤3即DRAM由常规刷新模式进入低功耗刷新模式。
步骤4为DRAM运行在温度敏感模式下。由于在运行过程中对温度敏感,因此对最差存储单元的检测必须在DRAM芯片测试时进行,在DRAM运行过程中可根据温度变化调整刷新周期,最大限度降低DRAM刷新功耗,应用更广泛。此时逻辑检测模块选择当前温度下的最优替换方案,刷新周期提高,读取在该温度范围下该刷新周期下的最差存储单元的数据,并将这些单元中的数据存储至非易失性存储器中的指定单元,完成存储单元的替换。完成替换后配置刷新周期,刷新周期由原先的T_refresh_spec提高至新的刷新周期。在新的刷新周期下,系统请求存取DRAM中被替换的存储单元中的数据时,这些数据会直接从非易失性存储器中的指定单元中读入至读缓冲器(read buffer)中再被存取,若下次再读取相同地址上的数据时并且读入缓冲器中相应数据没有被覆盖,可直接从读缓冲器中直接读取,而无需从非易失性存储器中读取,DRAM读性能不受影响;若系统请求向DRAM中被替换的存储单元写入数据时,数据会先被写入至对应的写缓冲器(write buffer)中特定地址,且只有当该地址上的数据将要被覆盖时数据才会写入至非易失性存储器中的指定单元,不然只要数据不会被覆盖,那么对DRAM写性能也不受影响。由于DRAM在运行时温度会发生变化,如果一旦超过或者低于上述刷新周期所在温度范围,那么重新获得在新温度范围下的最差存储单元的信息,并重复完成上述转换,替换在新温度范围下的最差存储单元,配置新的刷新周期。
步骤5为DRAM运行在温度不敏感模式下,此模式下不必考虑在指定温度范围(比如低于85℃)的温度变化,所以对DRAM中最差存储单元的检测可在DRAM芯片测试时进行,也可在系统上电或下电定期进行,例如可以定期在系统上电过程或者系统下电时进行步骤1即检测DRAM中的最差存储单元信息,并保存到非易失性存储器中,定期的目的是为了在DRAM被长时间读写操作后数据保持性能下降时可通过重新检测来更新最差存储单元信息。低功耗模式下将这些单元中的数据存储至非易失性存储器中的指定单元,完成存储单元的替换。完成替换后配置刷新周期,刷新周期由原先的T_refresh_spec提高至新的刷新周期。如果由于环境温度超过指定值(例如85℃),系统认为DRAM运行繁忙,那么DRAM就会进入常规刷新模式。但是温度提高到85℃以上,此时DRAM不一定工作在繁忙状态下,温度升高可能是周围部件工作繁忙所致,但DRAM本身还处于非繁忙状态,所以温度不敏感模式并不能最大程度降低DRAM刷新功耗。
逻辑检测模块实时对系统进行状态检测,若在某一时刻检测到若DRAM工作状态回到常规刷新模式式(26)再次成立,即在常规模式下对DRAM的读取功耗大于对DRAM的刷新功耗,那么DRAM处于繁忙状态。步骤6即DRAM从低功耗刷新模式重新转换到常规刷新模式。此时用来替换DRAM中最差存储单元的非易失性存储器中的数据要写回至DRAM中指定的存储单元,重新配置刷新周期为原始刷新周期,DRAM以常规刷新模式下运行,以原始刷新周期T_refresh周期刷新。
在以上转换后,DRAM在不繁忙状态下就能够以较高的刷新周期进行刷新操作,从而大大降低刷新功耗。以上配置过程即完成了DRAM从常规刷新模式至低功耗刷新模式的转换,以及低功耗刷新模式返回至常规模式。
图19所示为一内存条(DIMM),通常包含若干个DRAM芯片,而每一个芯片又会有若干DRAM层堆叠封装而成。对于每一DRAM层来说,由于最差存储单元分布不一样,因而刷新周期T_refresh也可以不一样。也就是说,对于每一个DRAM芯片中,刷新周期可以不同;而在不同的温度下对于每一个DRAM层也可以工作在不同的刷新周期下。
在低功耗刷新模式下,最差存储单元保存在非易失性存储器中,当系统访问这些资源时,DRAM性能会有所下降。解决办法之一就是调整非易失性存储器的存取性能。例如非易失性存储器为相变存储器(PCM),我们可以调整相变材料的组分,降低相变存储器的保持时间(retention)(例如降低到3天),从而提高其读取速度,达到DRAM的读取速度。这样的混合DRAM性能几乎不受影响,只是需要每隔相变存储器的数据保持时间对相变存储器刷新一次,这样的刷新功耗是可以忽略不计的。解决方法之二就是在进入低功耗刷新模式之前将检测到的最差存储单元信息告知操作系统,这样操作系统可以尽可能重新映射查找表(LUT),将含有最差存储单元的刷新组上的内容尽可能存至其他不含有最差存储单元的刷新组地址上,并将此刷新组失效,那么能够在低功耗刷新模式下不去使用这些刷新组,从而避免了替换操作,进一步降低功耗。如图20-A所示,假设一个LUT页表对应DRAM中一行即字线。一般情况下LUT对应页表不关注所在字线是否有最差存储单元。如果操作系统能够清楚最差存储单元分布情况,那么在进入低功耗刷新模式之前页表重新更新,页表对应就会优先对应那些没有最差存储单元的字线,然后使含有最差存储单元的字线失效,如图20-B所示。
下面举实例进一步阐述。
在大型服务器或者数据中心中,DRAM芯片数量巨大,且每个DRAM芯片容量大,刷新功耗非常高。在晚上或者节假日时,由于大量服务器会处于非繁忙状态,但是对DRAM来说却不得不进行周期刷新,造成功耗浪费。利用本发明基于混合DRAM结构(图7)提出一种新型的实现方法可大大降低刷新功耗。目前大多数DRAM芯片刷新周期为64ms,在非繁忙状态下,将DRAM中的最差存储单元替换到非易失性存储器中的指定单元中,刷新周期就可以大大提高,例如提高到5s,足足提高了近80倍!假设刷新一次需要功耗为10mW,那么对于原DRAM刷新来说,节假日两天内的刷新功耗为
如果采用本发明低功耗刷新模式,5s内只需刷新一次,节假日两天内的刷新功耗为
二者对比如表6所示,可见刷新功耗大大降低。
表6:
刷新周期 | 两天内功耗 | ||
常规刷新 | 64ms | 27kW | 刷新功耗高 |
低功耗刷新 | 5s | 345.6W | 刷新功耗非常低 |
基于以上分析,本发明基于混合存储器结构提出一种新型的实现方法,在考虑最差存储单元的前提下实现刷新周期的提高,节省刷新功耗,并且基本不影响原DRAM的存储性能。
以上对本发明的具体实施例进行了详细描述,但其只作为范例,本发明并不限制于以上描述的具体实施例。对于本领域技术人员而言,任何对该实用进行的等同修改和替代也都在本发明的范畴之中。因此,在不脱离本发明的精神和范围下所作的均等变换和修改,都应涵盖在本发明的范围内。
Claims (13)
1.一种混合存储器结构的低功耗刷新方法,所述混合存储器结构包括DRAM、非易失性存储器和逻辑检测模块,以及可在所述混合存储器上配置的温度传感器,其特征在于,包括以下步骤:
步骤1,检测所述DRAM内部最差存储单元信息,并将最差存储单元信息存储在所述非易失性存储器中;
步骤2,如果所述DRAM处于繁忙状态,所述 DRAM以常规刷新模式工作,此时所述 DRAM的刷新周期为常规刷新周期;
步骤3,如果所述DRAM处于非繁忙状态,那么所述DRAM进入低功耗刷新模式,所述低功耗刷新模式包括温度敏感模式和温度不敏感模式,如果选择温度敏感模式,那么进入步骤4,如果选择温度不敏感模式,则进入步骤5;
步骤4,如果所述DRAM运行在温度敏感模式下,所述非易失性存储器中的存储单元替代当前温度范围内在步骤1中检测到的最差存储单元,重新配置所述DRAM刷新周期;如果在某一时刻检测到当前温度变化到另一温度范围,那么更新最差存储单元信息,更新刷新周期;
步骤5,如果所述DRAM运行在温度不敏感模式,所述非易失性存储器中的存储单元替代在步骤1中检测到的最差存储单元,重新配置所述DRAM的刷新周期;如果在某一时刻所述DRAM运行温度超过规定值时,所述DRAM会由低功耗刷新模式切换回常规刷新模式。
2.如权利要求1所述的混合存储器结构的低功耗刷新方法,其特征在于,还包括步骤6:当检测在低功耗刷新模式下运行的所述DRAM处于繁忙状态,那么将所述非易失性存储单元中的数据写回至所述DRAM中,所述DRAM切换至常规刷新模式。
3.如权利要求2所述的混合存储器结构的低功耗刷新方法,其特征在于,所述步骤1中的最差存储单元信息包括基于温度变化的最差存储单元信息或不基于温度变化的最差存储单元信息。
4.如权利要求3所述的混合存储器结构的低功耗刷新方法,其特征在于,当对所述DRAM存取功耗接近或小于所述DRAM自身刷新功耗,那么所述DRAM处于非繁忙状态。
5.如权利要求4所述的混合存储器结构的低功耗刷新方法,其特征在于,步骤2中所述温度传感器感应所述DRAM当前工作温度,所述DRAM以最短刷新周期T_refresh_spec周期刷新,并检测所述DRAM是否处于繁忙状态。
6.如权利要求1所述的混合存储器结构的低功耗刷新方法,其特征在于,所述步骤1中的检测方法包括:
步骤1.1,所述DRAM在初始测试温度Temp下第一次进行刷新检测,刷新周期为T_refresh_spec,所述刷新周期为最短刷新周期;
步骤1.2,记录检测在当前刷新周期T_refresh下的最差存储单元信息;
步骤1.3,对可工作在温度敏感模式下的DRAM,需要检测在不同温度下的最差存储单元信息;先判断当前测试温度是否达到检测上限温度Temp_max,未达到则在当前检测后将当前温度提高△T,将此新的测试温度覆盖成Temp,再返回步骤1.1重新检测;否则,将此测试温度设置回第一次初始测试温度Temp,再进行步骤1.4;若所述DRAM仅工作在温度不敏感模式下,那么直接进入步骤1.4;
步骤1.4,判断当前测试刷新周期是否达到上限检测刷新周期T_refresh_max,若达到,则停止检测进入步骤1.5;若未达到,通过延迟时间提高△t来提高刷新周期,将此时新刷新周期覆盖成T_refresh_spec,再返回步骤1.1;
步骤1.5,分析检测结果,并将最优方案结果保存至非易失性存储器中。
7.如权利要求6所述的混合存储器结构的低功耗刷新方法,其特征在于,所述步骤1.5中,对于可工作在温度敏感模式下的所述DRAM,需要记录在不同温度范围下的最优方案;对于仅工作在温度不敏感模式下的所述DRAM,只需要记录在当前温度范围内的最优方案。
8.如权利要求7所述的混合存储器结构的低功耗刷新方法,其特征在于,所述步骤1.1中的刷新检测为分布式刷新检测或者集中式刷新检测。
9.如权利要求8所述的混合存储器结构的低功耗刷新方法,其特征在于,所述步骤1.2中的最差存储单元信息即在当前温度范围内,数据保持时间小于当前所述DRAM刷新周期的所述DRAM存储单元的物理地址信息。
10.如权利要求1所述的混合存储器结构的低功耗刷新方法,其特征在于,所述温度敏感模式下,对所述最差存储单元的检测在DRAM芯片测试时进行。
11.如权利要求1所述的混合存储器结构的低功耗刷新方法,其特征在于,所述温度不敏感模式下,对DRAM中最差存储单元的检测在DRAM芯片测试时进行;或在系统上电或下电定期进行,以在DRAM被长时间读写操作后数据保持性能下降时可通过重新检测来更新最差存储单元信息。
12.如权利要求9所述的混合存储器结构的低功耗刷新方法,其特征在于,所述步骤1.2中的最差存储单元信息是一个单个的最差存储单元所对应地址,包括字线地址,位线地址;或是该最差存储单元所在行所在地址,即字线地址;或是在一定时间间隔内需要被刷新的行数,即刷新组的地址。
13.如权利要求12所述的混合存储器结构的低功耗刷新方法,其特征在于,还包括在进入低功耗刷新模式之前将检测到的最差存储单元信息告知操作系统,操作系统重新映射查找表LUT,将含有最差存储单元的第一刷新组上的内容存至其他不含有最差存储单元的第二刷新组地址上,并将第一刷新组失效。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410067838.2A CN103811048B (zh) | 2014-02-26 | 2014-02-26 | 一种混合存储器结构的低功耗刷新方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410067838.2A CN103811048B (zh) | 2014-02-26 | 2014-02-26 | 一种混合存储器结构的低功耗刷新方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103811048A CN103811048A (zh) | 2014-05-21 |
CN103811048B true CN103811048B (zh) | 2017-01-11 |
Family
ID=50707712
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410067838.2A Active CN103811048B (zh) | 2014-02-26 | 2014-02-26 | 一种混合存储器结构的低功耗刷新方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103811048B (zh) |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105280215B (zh) * | 2014-06-09 | 2018-01-23 | 华为技术有限公司 | 动态随机存取存储器dram的刷新方法、设备以及系统 |
CN105808455B (zh) | 2014-12-31 | 2020-04-28 | 华为技术有限公司 | 访问内存的方法、存储级内存及计算机系统 |
US10394719B2 (en) | 2017-01-25 | 2019-08-27 | Samsung Electronics Co., Ltd. | Refresh aware replacement policy for volatile memory cache |
CN107526688B (zh) * | 2017-09-12 | 2020-05-29 | 上海兆芯集成电路有限公司 | 储存装置以及配置方法 |
CN107995678A (zh) * | 2018-01-29 | 2018-05-04 | 深圳禾苗通信科技有限公司 | 一种智能手机的省电方法 |
US10928870B2 (en) * | 2018-05-29 | 2021-02-23 | Marvell Asia Pte, Ltd. | Apparatus and methods for temperature-based memory management |
US20190378564A1 (en) * | 2018-06-11 | 2019-12-12 | Nanya Technology Corporation | Memory device and operating method thereof |
CN110739013B (zh) * | 2018-07-18 | 2021-08-10 | 华邦电子股份有限公司 | 动态随机存取存储器 |
CN114121074B (zh) * | 2020-08-31 | 2023-09-01 | 长鑫存储技术有限公司 | 存储阵列自刷新频率测试方法与存储阵列测试设备 |
EP4002368A4 (en) | 2020-09-22 | 2022-05-25 | Changxin Memory Technologies, Inc. | MEMORY DATA REFRESHMENT PROCEDURES AND CONTROL THEREOF AND STORAGE |
CN114255799B (zh) * | 2020-09-22 | 2023-10-17 | 长鑫存储技术有限公司 | 存储器数据刷新方法及其控制器、存储器 |
CN112365910A (zh) * | 2020-11-03 | 2021-02-12 | 北京灵汐科技有限公司 | 一种存储器及神经形态芯片 |
CN117766008A (zh) * | 2022-09-19 | 2024-03-26 | 长鑫存储技术有限公司 | 内建自测试方法、内建自测试装置及半导体存储器 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1945736A (zh) * | 2005-07-06 | 2007-04-11 | 奇梦达股份公司 | 用于存储装置的与温度相关的自刷新模块 |
CN101183559A (zh) * | 2006-11-14 | 2008-05-21 | 茂德科技股份有限公司(新加坡子公司) | 调整动态随机存取存储器更新周期的方法 |
WO2008131058A2 (en) * | 2007-04-17 | 2008-10-30 | Rambus Inc. | Hybrid volatile and non-volatile memory device |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20130032772A (ko) * | 2011-09-23 | 2013-04-02 | 삼성전자주식회사 | 하이브리드 메모리 장치, 이를 포함하는 컴퓨터 시스템, 및 하이브리드 메모리장치의 데이터 기입 및 독출 방법 |
-
2014
- 2014-02-26 CN CN201410067838.2A patent/CN103811048B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1945736A (zh) * | 2005-07-06 | 2007-04-11 | 奇梦达股份公司 | 用于存储装置的与温度相关的自刷新模块 |
CN101183559A (zh) * | 2006-11-14 | 2008-05-21 | 茂德科技股份有限公司(新加坡子公司) | 调整动态随机存取存储器更新周期的方法 |
WO2008131058A2 (en) * | 2007-04-17 | 2008-10-30 | Rambus Inc. | Hybrid volatile and non-volatile memory device |
Also Published As
Publication number | Publication date |
---|---|
CN103811048A (zh) | 2014-05-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103811048B (zh) | 一种混合存储器结构的低功耗刷新方法 | |
US10600470B2 (en) | Memory device and memory system performing a hammer refresh operation and associated operations | |
EP3433860B1 (en) | Fine granularity refresh | |
CN103915110B (zh) | 一种易失存储器的刷新方法及相关的易失存储器的控制器 | |
US7613060B2 (en) | Methods, circuits, and systems to select memory regions | |
EP3364298B1 (en) | Memory circuit system and method | |
US6920523B2 (en) | Bank address mapping according to bank retention time in dynamic random access memories | |
JP6211186B2 (ja) | Dramサブアレイレベル自律リフレッシュメモリコントローラの最適化 | |
US6167484A (en) | Method and apparatus for leveraging history bits to optimize memory refresh performance | |
Luo et al. | CLR-DRAM: A low-cost DRAM architecture enabling dynamic capacity-latency trade-off | |
US7590021B2 (en) | System and method to reduce dynamic RAM power consumption via the use of valid data indicators | |
CN107203336A (zh) | 管理存储器功耗的方法及其系统 | |
CN105808455B (zh) | 访问内存的方法、存储级内存及计算机系统 | |
WO2008144609A1 (en) | Methods, circuits, and systems to select memory regions | |
JP7244999B2 (ja) | ディスターブ・ロウをケアするメモリ装置及びその動作方法 | |
CN115516563B (zh) | 用于dram的刷新管理 | |
US11809743B2 (en) | Refresh management list for DRAM | |
CN104505117A (zh) | 一种动态存储器刷新方法与刷新控制器 | |
US9514800B1 (en) | DRAM and self-refresh method | |
US9069717B1 (en) | Memory parametric improvements | |
CN114138175A (zh) | 用于半导体存储器装置的行复制操作的保留行及相关联方法及系统 | |
CN103811047B (zh) | 一种基于分块dram的低功耗刷新方法 | |
KR20190102580A (ko) | 결함 정보 저장 테이블을 이용한 리페어 분석 시스템 및 그의 리페어 분석 방법 | |
CN103823762A (zh) | 存储器随机查表方法、装置和系统 | |
Zürich | CLR-DRAM: A Low-Cost DRAM Architecture Enabling Dynamic Capacity-Latency Trade-Off |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |