一种分层的基于随机映射的相变内存磨损均衡方法及系统的制作方法

文档序号:8395814阅读:203来源:国知局
一种分层的基于随机映射的相变内存磨损均衡方法及系统的制作方法
【技术领域】
[0001]本发明涉及计算机技术领域,具体涉及一种分层的基于随机映射的相变内存磨损均衡方法及系统。
【背景技术】
[0002]由于相变内存存在写次数有限的缺点,因此,提升相变内存的寿命就成为其能否实际应用的关键技术。磨损均衡技术是提升相变内存寿命的主要方法之一。
[0003]现有的磨损均衡技术主要问题是,或者是跟踪每个内存单元的写次数,造成大量的存储空间和性能开销,或者是内存调整方式存在信息泄露,无法抵御恶意磨损程序的攻击。

【发明内容】

[0004]针对现有技术中的缺陷,本发明提供一种分层的基于随机映射的相变内存磨损均衡方法及系统,可改进相变内存磨损均衡效果,达到提升相变内存寿命的目的,同时对性能的影响降到最低。
[0005]本发明提供以下技术方案:
[0006]第一方面,本发明提供一种分层的基于随机映射的相变内存磨损均衡方法,包括:
[0007]S1.将相变内存地址空间划分为RANK、BANK、REG1N三个层次,并设置每个层次的内存写次数计数器;
[0008]S2.初始化每个层次的内存随机映射表集;如果某一层次的内存写次数计数器大于或等于该层次预设的写次数阈值,则更新其内存随机映射表集;
[0009]S3.针对内存写操作,分别从RANK层、BANK层和REG1N层进行内存逻辑地址到内存物理地址的转换。
[0010]其中,所述步骤S3具体包括:
[0011]S31:从内存逻辑地址,获取逻辑rank编号,查询RANK层当前内存映射表;如果RANK层当前内存随机映射表中相应表项的调整标志位已被设置,则使用RANK层当前内存映射表相应表项的逻辑rank编号和物理rank编号的映射关系进行rank编号转换;如果RANK层当前内存随机映射表中相应表项的调整标志位未被设置,则使用上次RANK层内存随机映射表的逻辑rank编号和物理rank编号的映射关系进行rank编号转换;
[0012]S32:从内存逻辑地址,获取逻辑bank编号,查询BANK层相应的当前内存映射表;如果BANK层当前内存随机映射表中相应表项的调整标志位已被设置,则使用BANK层当前内存映射表相应表项的逻辑bank编号和物理bank编号的映射关系进行bank编号转换;如果BANK层当前内存随机映射表中相应表项的调整标志位未被设置,则使用BANK层上次内存随机映射表的逻辑bank编号和物理bank编号的映射关系进行bank编号转换;
[0013]S33:从内存逻辑地址,获取逻辑reg1n编号,查询REG1N层相应的当前内存映射表;如果REG1N层当前内存随机映射表中相应表项的调整标志位已被设置,则使用REG1N层当前地址映射表相应表项的逻辑reg1n编号和物理reg1n编号的映射关系进行reg1n编号转换;如果REG1N层当前内存随机映射表中相应表项的调整标志位未被设置,则使用REG1N层上次内存随机映射表的逻辑reg1n编号和物理reg1n编号的映射关系进行reg1n编号转换。
[0014]其中,所述步骤SI进一步包括:
[0015]Sll:划分RANK层:相变内存包含4个rank,若相变内存的大小为s字节,则每个rank的大小为s/4个字节,RANK层包含4个rank,RANK层的基本处理单元是rank ;
[0016]S12:划分BANK层:相变内存每个rank包含4个bank,根据Sll,每个bank的大小为s/4/4个字节,则BANK层包含16个bank,BANK层的基本处理单元是bank ;
[0017]S13:划分REG1N层个相变内存行row大小为4096字节,η个row为I个reg1n,其中,n ^ I ;根据 Sll 和 S12,每个 bank 包含 s/4/4/ (n*4096)个 reg1n ;
[0018]S14:每个reg1n设置一个REG1N写次数计数器,记录该reg1n内的写次数;每个bank设置一个BANK写次数计数器,记录该bank内的写次数;每个RANK设置一个RANK写次数计数器,记录该rank内的写次数;设置一个全局写次数计数器,记录相变内存的全部写次数;写次数计数器的类型为整型,每次对内存进行写操作时,根据写操作的地址,相对应的REG1N写次数计数器、BANK写次数计数器和RANK写次数计数器均递增I。
[0019]其中,所述步骤S2进一步包括:
[0020]S21:每个层次的内存映射表集都包含该层次的当前内存随机映射表、上次内存随机映射表及其反向映射表;相变内存包含I个rank映射表集,每个rank包含4个bank映射表集,每个bank包含s/4/4/ (n*4096)个reg1n映射表集,其中,s表示相变内存大小,η表示I个reg1n包含的row数量;
[0021]S22:初始化时,依据现代洗牌算法,生成当前内存随机映射表,上次内存随机映射表及其反向映射表的元素值为空;
[0022]S23:在更新内存映射表集时,将当前内存随机映射表拷贝到上次内存随机映射表的存储位置;生成上次内存随机映射表的反向映射表;依据现代洗牌算法,生成新的内存随机映射表,并拷贝到当前内存随机映射表的存储位置;
[0023]S24:更新某个层次的内存映射表集后,该层次的内存写操作计数器清零。
[0024]其中,所述当前内存随机映射表,用于将逻辑内存地址转变为物理内存地址,索引值表示逻辑内存的行号,表元素包括物理内存的行号和调整标志位两个表项;当前内存随机映射表用于本次随机映射周期内的地址映射;
[0025]所述上次内存随机映射表,用于本次内存地址随机映射周期的上一个周期使用的地址映射表,不包含调整标志位表项;
[0026]所述上次内存随机映射表的反向映射表是上次映射表索引值和物理内存行号表项的互换之后形成的映射表,即反向映射表的索引是上次映射表的物理内存行号,反向映射表的元素值是上次映射表的索引值。
[0027]进一步地,所述的分层的基于随机映射的相变内存磨损均衡方法,还包括步骤S4,针对内存读操作包括:
[0028]S41:如果RANK层写次数计数器达到RANK层写次数阈值,则执行更新RANK层内存随机映射表集过程;
[0029]从内存逻辑地址获取逻辑rank编号,查询RANK层内存随机映射表,如果RANK层当前内存随机映射表中相应表项的调整标志位已被设置,则使用RANK层当前内存随机映射表的逻辑rank编号和物理rank编号的映射关系进行rank编号转换,否则,则进行rank调整过程,并修改RANK层当前内存随机映射表中相应表项的物理rank编号和调整标志位,使用调整后的RANK层当前内存随机映射表的逻辑rank编号和物理rank编号的映射关系进行rank编号转换;
[0030]将RANK层写次数计数器递增I ;
[0031]S42:从内存逻辑地址获取逻辑bank编号,如果对应的BANK层写次数计数器达到BANK层写次数阈值,则执行更新对应的RANK层内存随机映射表集过程;
[0032]查询对应的BANK层内存随机映射表,如果对应的BANK层当前内存随机映射表中相应表项的调整标志位已被设置,则使用对应的RANK层当前内存随机映射表的逻辑bank编号和物理bank编号的映射关系进行bank编号转换,否则,则进行对应的bank调整过程,并修改对应的BANK层当前内存随机映射表中相应表项的物理bank编号和调整标志位,使用调整后的BANK层当前内存随机映射表的逻辑bank编号和物理bank编号的映射关系进行bank编号转换;
[0033]将对应的BANK层写次数计数器递增I ;
[0034]S43:从内存逻辑地址获取逻辑reg1n编号,如果对应的REG1N层写次数计数器达到REG1N层写次数阈值,则执行更新对应的REG1N层内存随机映射表集过程;
[0035]查询对应的REG1N层内存随机映射表,如果对应的REG1N层当前内存随机映射表中相应表项的调整标志位已被设置,则使用对应的REG1N层当前内存随机映射表的逻辑reg1n编号和物理reg1n编号的映射关系进行reg1n编号转换,否则,则进行对应的reg1n调整过程,并修改对应的REG1N层当前内存随机映射表中相应表项的物理reg1n编号和调整标志位,使用调整后的REG1N层当前内存随机映射表的逻辑reg1n编号和物理reg1n编号的映射关系进行reg1n编号转换;
[0036]将对应的REG1N层写次数计数器递增I。
[0037]进一步地,所述步骤S4还包括:
[0038]S44:查询当前内存随机映射表和上次内存随机映射表,得到映射的当
当前第1页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1