一种STT-RAM缓存的动态数据擦洗方法与流程

文档序号:20268359发布日期:2020-04-03 18:41阅读:224来源:国知局
一种STT-RAM缓存的动态数据擦洗方法与流程

本发明涉及一种stt-ram缓存的动态数据擦洗方法。



背景技术:

相比于传统的sram存储器,spintransfertorqueram(stt-ram)作为一种新型存储器具有静态能耗低、存储密度高、读速度快以及与cmos技术兼容性好等优点,因此stt-ram被认为是嵌入式计算机的下一代片上缓存。因为缓存中的数据只是暂存,而数据的读写速度和容量更加重要,所以作为缓存,stt-ram存储技术会优化读写速度和存储密度,牺牲数据的非易失性。由此,导致stt-ram缓存的非易失性能降低而更容易出现数据错误。

stt-ram存储单元通过磁隧道结(mtj)存储数据,其数据的保留时间长短取决于mtj的稳定性。mtj越稳定,存储单元中的数据保留时间越长。而mtj的稳定性取决于存储单元面积及温度。随着stt-ram存储密度的不断提升,单位面积越来越小,易受到温度干扰,mtj的稳定性变差,意味着存储单元中的数据保留时间变短,结果是stt-ram存储单元中的数据容易出现保留错误,即数据位从0变为1,或者相反。

为了纠正随机出现的保留错误,stt-ram缓存中的每个缓存块对应有自己的纠错码(ecc),ecc可以检测/纠正stt-ram缓存块中出现的保留错误。常用的ecc可以检测发现n+1个数据位错误的话,就可以纠正n个数据位。采用ecc纠正stt-ram缓存块中保留错误的主要方法是周期性地读取每个缓存块以及其ecc,根据ecc检测是否出现保留错误;如果是,则纠正出现的保留错误数据位,并且将正确的数据写回缓存;如果否,则继续处理下一缓存块。上述过程简称为数据擦洗。

数据擦洗虽然可以防止缓存块出现保留错误,保障应用程序的正确执行,但也会带来性能和能耗的代价。缓存块的数据擦洗包括读取、检测/纠错、写回三个步骤,每个步骤都要消耗时钟周期数。即使写回步骤实际很少发生,考虑缓存中缓存块数量级,累计的读取和检测操作必然影响性能,并且产生额外的能耗。stt-ram存储单元中的mtj越不稳定,保留错误越容易出现。为了消除持续出现的保留错误数据位,保证数据的正确性,则数据擦洗的周期要更短,数据擦洗次数的次数更多,导致的代价也将越大。



技术实现要素:

本发明的目的在于克服现有技术中存在的上述不足,而提供一种设计合理的stt-ram缓存的动态数据擦洗方法,对不同的stt-ram缓存块采用不同的数据擦洗周期,从而保障数据正确的前提下,减少数据擦洗次数,降低数据擦洗的代价。

本发明解决上述问题所采用的技术方案是:一种stt-ram缓存的动态数据擦洗方法,其特征在于,包括如下步骤:

s1、保证数据正确性的前提下,动态设定缓存块的数据擦洗周期,根据不同缓存块的保留错误数据位数以及纠错码的纠错能力,将缓存块的数据擦洗周期设定为高频、中频和低频,高频以时间为t的周期进行数据擦洗,中频以时间为2t的周期进行数据擦洗,低频以时间为3t的周期进行数据擦洗;

此步骤中,纠错码最多能同时纠正缓存块出现的n个保留错误数据位,将这n个保留错误数据位数按小于等于1、大于1且小于等于n/2、大于n/2分成三段,当缓存块的保留错误数据位数小于等于1,则采用低频数据擦洗,当保留错误数据位数在大于1且小于等于n/2,则采用中频数据擦洗,当保留错误数据位数大于n/2时,则采用高频数据擦洗;

s2、每个缓存块配备两位数据的bincounter来标识自身的擦洗周期;

此步骤中,bincounter可取的值分别为01、10和11,如果值为01,则标识该缓存块采用时间为t的数据擦洗周期,如果值为10,则标识该缓存块采用时间为2t的数据擦洗周期,如果值为11,则标识该缓存块采用时间为3t的数据擦洗周期;

s3、缓存控制器按时间为t的周期依次扫描缓存块,并且根据每个缓存块的两位数据容量的currentcounter来判定是否进行数据擦洗;

此步骤中,因为不同缓存块的数据擦洗周期不同,每次缓存控制器扫描到某缓存块时,根据currentcounter来标示当前缓存块是否进行数据擦洗操作。

本发明bincounter的值由缓存块的保留错误数据位数和纠错码的纠错能力共同决定,每次缓存块进行数据擦洗时,根据纠错码获得的保留错误数据位数,再结合纠错码的纠错能力,调整bincounter在下一周期的值。

本发明根据currentcounter来标示当前缓存块是否进行数据擦洗操作的步骤如下:首先,读取缓存块中的一个currentcounter,然后对该currentcounter减1,表示当前缓存块距离数据擦洗操作又少了一个周期t;比较更新后的currentcounter是否等于零,如果不为零,当前缓存块还不能进行数据擦洗操作,跳过当前缓存块,处理下一个缓存块的currentcounter;如果值为零,表示已经达到数据擦洗周期,则发起对当前缓存块的数据擦洗操作;数据擦洗操作完成后,再重置当前缓存块的currentcounter值。

本发明数据擦洗操作的步骤为:

读取缓存块数据及纠错码,根据纠错码检测当前缓存块数据中的保留错误位数enum,enum值为零,说明当前缓存块没有出现保留错误,读取下一个缓存块数据及纠错码,enum值大于零,表示当前缓存块中存在保留错误数据位,需要根据纠错码纠正出现的保留错误,并将纠正后的正确数据写回到缓存块。

本发明除了纠正缓存块中的保留错误,数据擦洗还要对缓存块的擦洗周期进行动态设置,具体通过调整bincounter的值达到,步骤如下:

step1、当enum小于等于1,如果bincounter的值等于11,不作处理;否则,bincounter的值递增1;

step2、当enum大于1且小于等于n/2时,如果currentcounter的值等于01,则bincounter递增1,否则不处理;

step3、当enum大于n/2时,如果bincounter不等于01,则bincounter递减1,否则,减小缓存块的扫描周期。

本发明扫描周期的大小由系统所允许的性能代价决定,系统能够容忍的系统代价越低,扫描周期的值就需要设定得更长,但上限以保留错误的数据位数的最大值不超过纠错码的纠错能力为限。

本发明步骤s3中,每个缓存块的两位数据的currentcounter,其初始值就是对应的bincounter的值。

本发明将bincounter和currentcounter作为数据存储在特定地址的缓存块中,这类缓存块称为计数器缓存块,在根据currentcounter来标示当前缓存块是否进行数据擦洗操作的步骤中,首先,读取的即是计数器缓存块中的一个currentcounter。

本发明与现有技术相比,具有以下优点和效果:本发明设计合理,根据不同的缓存块出现保留错误的概率上的差异,提出一种动态的数据擦洗方法,对不同的stt-ram缓存块采用不同的数据擦洗周期,从而保障数据正确的前提下,减少数据擦洗次数,降低数据擦洗的代价。

附图说明

图1是本发明实施例根据currentcounter来标示当前缓存块是否进行数据擦洗操作的步骤流程图。

图2是本发明实施例数据擦洗操作的步骤流程图。

具体实施方式

下面结合附图并通过实施例对本发明作进一步的详细说明,以下实施例是对本发明的解释而本发明并不局限于以下实施例。

本实施例中的stt-ram缓存的动态数据擦洗方法,包括如下步骤:

s1、保证数据正确性的前提下,动态设定缓存块的数据擦洗周期,根据不同缓存块的保留错误数据位数以及纠错码的纠错能力,将缓存块的数据擦洗周期设定为高频、中频和低频,高频以时间为t的周期进行数据擦洗,中频以时间为2t的周期进行数据擦洗,低频以时间为3t的周期进行数据擦洗;

此步骤中,纠错码的纠错能力包括n+1位的数据检错能力以及n位的数据纠正能力,即纠错码最多能同时纠正缓存块出现的n个保留错误数据位;将这n个保留错误数据位数按小于等于1、大于1且小于等于n/2、大于n/2分成三段,当缓存块的保留错误数据位数小于等于1,则采用低频数据擦洗,当保留错误数据位数在大于1且小于等于n/2,则采用中频数据擦洗,当保留错误数据位数大于n/2时,则采用高频数据擦洗;

s2、每个缓存块配备两位数据的bincounter来标识自身的擦洗周期,bincounter即为段计数器;

此步骤中,每个缓存块的bincounter包含两位数据,bincounter可取的值分别为01、10和11,如果值为01,则标识该缓存块采用时间为t的数据擦洗周期,如果值为10,则标识该缓存块采用时间为2t的数据擦洗周期,如果值为11,则标识该缓存块采用时间为3t的数据擦洗周期;bincounter的值由缓存块的保留错误数据位数和纠错码的纠错能力共同决定,每次缓存块进行数据擦洗时,根据纠错码获得保留错误的数据位数,再结合纠错码的纠错能力,调整bincounter在下一周期的值;

s3、缓存控制器按时间为t的周期依次扫描缓存块,并且根据每个缓存块的两位数据容量的currentcounter来判定是否进行数据擦洗,currentcounter即为当前周期计数器;

此步骤中,每个缓存块的两位数据的currentcounter,其初始值就是对应的bincounter的值。currentcounter用于标示当前缓存块距离下一次数据擦洗的时间,因为不同缓存块的数据擦洗周期不同,每次缓存控制器扫描到某缓存块时,根据currentcounter来标示当前缓存块是否进行数据擦洗操作,如果currentcounter的值为零,则缓存块需要进行数据擦洗操作。

参见图1,根据currentcounter来标示当前缓存块是否进行数据擦洗操作的步骤如下:首先,读取计数器缓存块中的一个currentcounter,然后对该currentcounter减1,表示当前缓存块距离数据擦洗操作又少了一个周期t;比较更新后的currentcounter是否等于零,如果不为零,当前缓存块还不能进行数据擦洗操作,跳过当前缓存块,处理下一个缓存块的currentcounter;如果值为零,表示已经达到数据擦洗周期,则发起对当前缓存块的数据擦洗操作;数据擦洗操作完成后,再重置当前缓存块的currentcounter值。

上述步骤中,每个缓存块需要共4位数据来存储bincounter和currentcounter,按缓存块的大小为64个字节计算,导致存储代价仅为0.78%。将bincounter和currentcounter作为数据存储在特定地址的缓存块中,为了与正常的数据缓存块作区分,这类缓存块称为计数器缓存块。每个计数器缓存块可容纳128个数据缓存块的bincounter和currentcounter。扫描数据缓存块的基本过程就是周期性地读取计数器缓存块的数据,并且依次查看bincounter和currentcounter来决定是否对数据缓存块进行数据擦洗操作。当一个计数器缓存块处理完后,还要将修改后的计数器缓存块的数据写回到缓存。

数据擦洗操作的步骤为:

读取缓存块数据及纠错码,根据纠错码检测当前缓存块数据中的保留错误位数enum,enum值为零,说明当前缓存块没有出现保留错误,读取下一个缓存块数据及纠错码,enum值大于零,表示当前缓存块中存在保留错误数据位,需要根据纠错码纠正出现的保留错误,并将纠正后的正确数据写回到缓存块;除了纠正缓存块中的保留错误,数据擦洗还要对缓存块的擦洗周期进行动态设置,具体通过调整bincounter的值达到,步骤如下:

step1、当enum小于等于1,如果bincounter的值等于11,不作处理;否则,bincounter的值递增1;

step2、当enum大于1且小于等于n/2时,如果bincounter的值等于01,则bincounter递增1,否则不处理;

step3、当enum大于n/2时,如果bincounter不等于01,则bincounter递减1,否则,减小缓存块的扫描周期t。

扫描周期t的大小由系统所允许的性能代价决定,系统能够容忍的系统代价越低,扫描周期t的值就需要设定得更长,但上限以保留错误的数据位数的最大值不超过纠错码的纠错能力为限。缓存块的数据擦洗频率与缓存块出现的保留错误数据位数成正比。

此外,需要说明的是,本说明书中所描述的具体实施例,其零、部件的形状、所取名称等可以不同,本说明书中所描述的以上内容仅仅是对本发明结构所作的举例说明。凡依据本发明专利构思所述的构造、特征及原理所做的等效变化或者简单变化,均包括于本发明专利的保护范围内。本发明所属技术领域的技术人员可以对所描述的具体实施例做各种各样的修改或补充或采用类似的方式替代,只要不偏离本发明的结构或者超越本权利要求书所定义的范围,均应属于本发明的保护范围。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1