CN104714894B - 一种分层的基于随机映射的相变内存磨损均衡方法及系统 - Google Patents
一种分层的基于随机映射的相变内存磨损均衡方法及系统 Download PDFInfo
- Publication number
- CN104714894B CN104714894B CN201510119973.1A CN201510119973A CN104714894B CN 104714894 B CN104714894 B CN 104714894B CN 201510119973 A CN201510119973 A CN 201510119973A CN 104714894 B CN104714894 B CN 104714894B
- Authority
- CN
- China
- Prior art keywords
- internal memory
- rank
- random maps
- bank
- 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
Landscapes
- Semiconductor Memories (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本发明提供了一种分层的基于随机映射的相变内存磨损均衡方法,包括:S1.将相变内存地址空间划分为RANK、BANK、REGION三个层次,并设置每个层次的内存写次数计数器;S2.初始化每个层次的内存随机映射表集;如果某一层次的内存写次数计数器大于或等于该层次预设的写次数阈值,则更新其内存随机映射表集;S3.针对内存写操作,分别从RANK层、BANK层和REGION层进行内存逻辑地址到内存物理地址的转换。本发明所述的分层的基于随机映射的相变内存磨损均衡方法可改进相变内存磨损均衡效果,达到提升相变内存寿命的目的,同时对性能的影响降到最低。
Description
技术领域
本发明涉及计算机技术领域,具体涉及一种分层的基于随机映射的相变内存磨损均衡方法及系统。
背景技术
由于相变内存存在写次数有限的缺点,因此,提升相变内存的寿命就成为其能否实际应用的关键技术。磨损均衡技术是提升相变内存寿命的主要方法之一。
现有的磨损均衡技术主要问题是,或者是跟踪每个内存单元的写次数,造成大量的存储空间和性能开销,或者是内存调整方式存在信息泄露,无法抵御恶意磨损程序的攻击。
发明内容
针对现有技术中的缺陷,本发明提供一种分层的基于随机映射的相变内存磨损均衡方法及系统,可改进相变内存磨损均衡效果,达到提升相变内存寿命的目的,同时对性能的影响降到最低。
本发明提供以下技术方案:
第一方面,本发明提供一种分层的基于随机映射的相变内存磨损均衡方法,包括:
S1.将相变内存地址空间划分为RANK、BANK、REGION三个层次,并设置每个层次的内存写次数计数器;
S2.初始化每个层次的内存随机映射表集;如果某一层次的内存写次数计数器大于或等于该层次预设的写次数阈值,则更新其内存随机映射表集;
S3.针对内存写操作,分别从RANK层、BANK层和REGION层进行内存逻辑地址到内存物理地址的转换。
其中,所述步骤S3具体包括:
S31:从内存逻辑地址,获取逻辑rank编号,查询RANK层当前内存映射表;如果RANK层当前内存随机映射表中相应表项的调整标志位已被设置,则使用RANK层当前内存映射表相应表项的逻辑rank编号和物理rank编号的映射关系进行rank编号转换;如果RANK层当前内存随机映射表中相应表项的调整标志位未被设置,则使用上次RANK层内存随机映射表的逻辑rank编号和物理rank编号的映射关系进行rank编号转换;
S32:从内存逻辑地址,获取逻辑bank编号,查询BANK层相应的当前内存映射表;如果BANK层当前内存随机映射表中相应表项的调整标志位已被设置,则使用BANK层当前内存映射表相应表项的逻辑bank编号和物理bank编号的映射关系进行bank编号转换;如果BANK层当前内存随机映射表中相应表项的调整标志位未被设置,则使用BANK层上次内存随机映射表的逻辑bank编号和物理bank编号的映射关系进行bank编号转换;
S33:从内存逻辑地址,获取逻辑region编号,查询REGION层相应的当前内存映射表;如果REGION层当前内存随机映射表中相应表项的调整标志位已被设置,则使用REGION层当前地址映射表相应表项的逻辑region编号和物理region编号的映射关系进行region编号转换;如果REGION层当前内存随机映射表中相应表项的调整标志位未被设置,则使用REGION层上次内存随机映射表的逻辑region编号和物理region编号的映射关系进行region编号转换。
其中,所述步骤S1进一步包括:
S11:划分RANK层:相变内存包含4个rank,若相变内存的大小为s字节,则每个rank的大小为s/4个字节,RANK层包含4个rank,RANK层的基本处理单元是rank;
S12:划分BANK层:相变内存每个rank包含4个bank,根据S11,每个bank的大小为s/4/4个字节,则BANK层包含16个bank,BANK层的基本处理单元是bank;
S13:划分REGION层:1个相变内存行row大小为4096字节,n个row为1个region,其中,n≥1;根据S11和S12,每个bank包含s/4/4/(n*4096)个region;
S14:每个region设置一个REGION写次数计数器,记录该region内的写次数;每个bank设置一个BANK写次数计数器,记录该bank内的写次数;每个RANK设置一个RANK写次数计数器,记录该rank内的写次数;设置一个全局写次数计数器,记录相变内存的全部写次数;写次数计数器的类型为整型,每次对内存进行写操作时,根据写操作的地址,相对应的REGION写次数计数器、BANK写次数计数器和RANK写次数计数器均递增1。
其中,所述步骤S2进一步包括:
S21:每个层次的内存映射表集都包含该层次的当前内存随机映射表、上次内存随机映射表及其反向映射表;相变内存包含1个rank映射表集,每个rank包含4个bank映射表集,每个bank包含s/4/4/(n*4096)个region映射表集,其中,s表示相变内存大小,n表示1个region包含的row数量;
S22:初始化时,依据洗牌算法,生成当前内存随机映射表,上次内存随机映射表及其反向映射表的元素值为空;
S23:在更新内存映射表集时,将当前内存随机映射表拷贝到上次内存随机映射表的存储位置;生成上次内存随机映射表的反向映射表;依据洗牌算法,生成新的内存随机映射表,并拷贝到当前内存随机映射表的存储位置;
S24:更新某个层次的内存映射表集后,该层次的内存写操作计数器清零。
其中,所述当前内存随机映射表,用于将逻辑内存地址转变为物理内存地址,索引值表示逻辑内存的行号,表元素包括物理内存的行号和调整标志位两个表项;当前内存随机映射表用于本次随机映射周期内的地址映射;
所述上次内存随机映射表,用于本次内存地址随机映射周期的上一个周期使用的地址映射表,不包含调整标志位表项;
所述上次内存随机映射表的反向映射表是上次映射表索引值和物理内存行号表项的互换之后形成的映射表,即反向映射表的索引是上次映射表的物理内存行号,反向映射表的元素值是上次映射表的索引值。
进一步地,所述的分层的基于随机映射的相变内存磨损均衡方法,还包括步骤S4,针对内存读操作包括:
S41:如果RANK层写次数计数器达到RANK层写次数阈值,则执行更新RANK层内存随机映射表集过程;
从内存逻辑地址获取逻辑rank编号,查询RANK层内存随机映射表,如果RANK层当前内存随机映射表中相应表项的调整标志位已被设置,则使用RANK层当前内存随机映射表的逻辑rank编号和物理rank编号的映射关系进行rank编号转换,否则,则进行rank调整过程,并修改RANK层当前内存随机映射表中相应表项的物理rank编号和调整标志位,使用调整后的RANK层当前内存随机映射表的逻辑rank编号和物理rank编号的映射关系进行rank编号转换;
将RANK层写次数计数器递增1;
S42:从内存逻辑地址获取逻辑bank编号,如果对应的BANK层写次数计数器达到BANK层写次数阈值,则执行更新对应的BANK层内存随机映射表集过程;
查询对应的BANK层内存随机映射表,如果对应的BANK层当前内存随机映射表中相应表项的调整标志位已被设置,则使用对应的BANK层当前内存随机映射表的逻辑bank编号和物理bank编号的映射关系进行bank编号转换,否则,则进行对应的bank调整过程,并修改对应的BANK层当前内存随机映射表中相应表项的物理bank编号和调整标志位,使用调整后的BANK层当前内存随机映射表的逻辑bank编号和物理bank编号的映射关系进行bank编号转换;
将对应的BANK层写次数计数器递增1;
S43:从内存逻辑地址获取逻辑region编号,如果对应的REGION层写次数计数器达到REGION层写次数阈值,则执行更新对应的REGION层内存随机映射表集过程;
查询对应的REGION层内存随机映射表,如果对应的REGION层当前内存随机映射表中相应表项的调整标志位已被设置,则使用对应的REGION层当前内存随机映射表的逻辑region编号和物理region编号的映射关系进行region编号转换,否则,则进行对应的region调整过程,并修改对应的REGION层当前内存随机映射表中相应表项的物理region编号和调整标志位,使用调整后的REGION层当前内存随机映射表的逻辑region编号和物理region编号的映射关系进行region编号转换;
将对应的REGION层写次数计数器递增1。
进一步地,所述步骤S4还包括:
S44:查询当前内存随机映射表和上次内存随机映射表,得到映射的当前物理地址和上次物理地址;交换当前物理地址和上次物理地址中的内存内容,并修改当前内存随机映射表中的相应两个物理地址值,设置相应的两个调整标志位;在上次内存随机映射表的反向映射表中查询上次物理对应的逻辑地址;如果该逻辑地址与交换后上次物理地址对应的逻辑地址一致,则完成本次调整过程;否则,以调整后逻辑地址与物理地址不一致的内存行作为开端,循环对物理内存进行调整,并修改当前内存随机映射表的相应元素值和调整标志位,直到逻辑地址与物理地址的映射一致为止。
其中,所述预设的写次数阈值的大小由各个内存层次所包含的row个数所决定,为row个数的20倍以上。
第二方面,本发明还提供一种分层的基于随机映射的相变内存磨损均衡系统,包括:内存地址随机映射控制器和内存映射表存储器;所述内存地址随机映射控制器用于将相变内存地址空间划分为RANK、BANK、REGION三个层次,并设置每个层次的内存写次数计数器;
所述内存地址随机映射控制器,还用于初始化每个层次的内存随机映射表集;
所述内存地址随机映射控制器,还用于在某一层次的内存写次数计数器大于或等于该层次预设的写次数阈值时,更新其内存随机映射表集;
所述内存地址随机映射控制器,还用于分别从RANK层、BANK层和REGION层进行内存逻辑地址到内存物理地址的转换;
所述内存映射表存储器,用于存储当前内存随机映射表、上次内存随机映射表和上次内存随机映射表的反向地址映射表。
其中,所述内存映射表存储器为SDRAM。
由上述技术方案可知,本发明所述的分层的基于随机映射的相变内存磨损均衡方法及系统,至少具有以下有益效果:
将写操作频繁的内存块均匀分布到整个相变内存空间,达到磨损均衡的目的,从而提高相变内存的寿命,同时,采用整个内存空间地址随机映射机制,消除了磨损均衡技术的信息泄露,从而可抵御恶意磨损程序的攻击。
另外,本发明所述的分层的基于随机映射的相变内存磨损均衡方法特别适用于容量较大的相变内存,如16GB或更大的内存,因为本发明实施例所述的方法基于分层处理,而分层可将一个大的相变内存分成多个区域,分布进行地址转换,从而相对于不进行分层处理的方法,大大提高了处理效率和处理能力。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例一提供的一种分层的基于随机映射的相变内存磨损均衡方法的流程图;
图2是本发明实施例二提供的一种分层的基于随机映射的相变内存磨损均衡系统的结构示意图;
图3是本发明实施例二提供的一种分层的基于随机映射的相变内存磨损均衡系统的具体结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整的描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1示出了实施例一提供的分层的基于随机映射的相变内存磨损均衡方法流程图,如图1所示,本实施例一提供的分层的基于随机映射的相变内存磨损均衡方法基于内存地址随机映射机制,具体包括:
步骤101:将相变内存地址空间划分为RANK、BANK、REGION三个层次,并设置每个层次的内存写次数计数器。
在本步骤中,具体步骤为:
(1)划分RANK层:相变内存包含4个rank,若相变内存的大小为s字节,则每个rank的大小为s/4个字节,RANK层包含4个rank,RANK层的基本处理单元是rank;
(2)划分BANK层:相变内存每个rank包含4个bank,根据S11,每个bank的大小为s/4/4个字节,则BANK层包含16个bank,BANK层的基本处理单元是bank;
(3)划分REGION层:1个相变内存行row大小为4096字节,n个row为1个region,其中,n≥1;根据S11和S12,每个bank包含s/4/4/(n*4096)个region;
(4)每个region设置一个REGION写次数计数器,记录该region内的写次数;每个bank设置一个BANK写次数计数器,记录该bank内的写次数;每个RANK设置一个RANK写次数计数器,记录该rank内的写次数;设置一个全局写次数计数器,记录相变内存的全部写次数;写次数计数器的类型为整型,每次对内存进行写操作时,根据写操作的地址,相对应的REGION写次数计数器、BANK写次数计数器和RANK写次数计数器均递增1。
步骤102:初始化每个层次的内存随机映射表集;如果某一层次的内存写次数计数器大于或等于该层次预设的写次数阈值,则更新其内存随机映射表集。
在本步骤中,具体步骤为:
(1)每个层次的内存映射表集都包含该层次的当前内存随机映射表、上次内存随机映射表及其反向映射表;相变内存包含1个rank映射表集,每个rank包含4个bank映射表集,每个bank包含s/4/4/(n*4096)个region映射表集,其中,s表示相变内存大小,n表示1个region包含的row数量;
所述当前内存随机映射表,用于将逻辑内存地址转变为物理内存地址,索引值表示逻辑内存的行号,表元素包括物理内存的行号和调整标志位两个表项;当前内存随机映射表用于本次随机映射周期内的地址映射;
所述上次内存随机映射表,用于本次内存地址随机映射周期的上一个周期使用的地址映射表,不包含调整标志位表项;
所述上次内存随机映射表的反向映射表是上次映射表索引值和物理内存行号表项的互换之后形成的映射表,即反向映射表的索引是上次映射表的物理内存行号,反向映射表的元素值是上次映射表的索引值。
(2)初始化时,依据现代洗牌算法,生成当前内存随机映射表,上次内存随机映射表及其反向映射表的元素值为空;
(3)在更新内存映射表集时,将当前内存随机映射表拷贝到上次内存随机映射表的存储位置;生成上次内存随机映射表的反向映射表;依据现代洗牌算法,生成新的内存随机映射表,并拷贝到当前内存随机映射表的存储位置;
(4)更新某个层次的内存映射表集后,该层次的内存写操作计数器清零。
步骤103:针对内存写操作,分别从RANK层、BANK层和REGION层进行内存逻辑地址到内存物理地址的转换。
在本步骤中,具体执行如下操作:
(1)从内存逻辑地址,获取逻辑rank编号,查询RANK层当前内存映射表;如果RANK层当前内存随机映射表中相应表项的调整标志位已被设置,则使用RANK层当前内存映射表相应表项的逻辑rank编号和物理rank编号的映射关系进行rank编号转换;如果RANK层当前内存随机映射表中相应表项的调整标志位未被设置,则使用上次RANK层内存随机映射表的逻辑rank编号和物理rank编号的映射关系进行rank编号转换;
(2)从内存逻辑地址,获取逻辑bank编号,查询BANK层相应的当前内存映射表;如果BANK层当前内存随机映射表中相应表项的调整标志位已被设置,则使用BANK层当前内存映射表相应表项的逻辑bank编号和物理bank编号的映射关系进行bank编号转换;如果BANK层当前内存随机映射表中相应表项的调整标志位未被设置,则使用BANK层上次内存随机映射表的逻辑bank编号和物理bank编号的映射关系进行bank编号转换;
(3)从内存逻辑地址,获取逻辑region编号,查询REGION层相应的当前内存映射表;如果REGION层当前内存随机映射表中相应表项的调整标志位已被设置,则使用REGION层当前地址映射表相应表项的逻辑region编号和物理region编号的映射关系进行region编号转换;如果REGION层当前内存随机映射表中相应表项的调整标志位未被设置,则使用REGION层上次内存随机映射表的逻辑region编号和物理region编号的映射关系进行region编号转换。
上面(1)~(3)中提到了获取逻辑rank编号、逻辑bank编号、逻辑region编号,具体地,所述逻辑rank、bank、region编号和内存地址空间的划分相关,不同的划分情况,决定了从内存逻辑地址哪些部分获取相应的逻辑编号。
由于一个相变内存包含4个rank,因此,rank的逻辑编号和物理编号都是0~3,只不过逻辑编号是从内存的逻辑地址获得的。例如,如果一个row大小为32KB、一个region大小为32MB、内存为64bit寻址,则0~14为row内offset,15~24为row编号、25~29为region编号,依次类推。
在本发明的一个优选实施例中,所述分层的基于随机映射的相变内存磨损均衡方法,还包括步骤104:针对内存读操作具体包括:
(1)如果RANK层写次数计数器达到RANK层写次数阈值,则执行更新RANK层内存随机映射表集过程;
从内存逻辑地址获取逻辑rank编号,查询RANK层内存随机映射表,如果RANK层当前内存随机映射表中相应表项的调整标志位已被设置,则使用RANK层当前内存随机映射表的逻辑rank编号和物理rank编号的映射关系进行rank编号转换,否则,则进行rank调整过程,并修改RANK层当前内存随机映射表中相应表项的物理rank编号和调整标志位,使用调整后的RANK层当前内存随机映射表的逻辑rank编号和物理rank编号的映射关系进行rank编号转换;
将RANK层写次数计数器递增1;
(2)从内存逻辑地址获取逻辑bank编号,如果对应的BANK层写次数计数器达到BANK层写次数阈值,则执行更新对应的BANK层内存随机映射表集过程;
查询对应的BANK层内存随机映射表,如果对应的BANK层当前内存随机映射表中相应表项的调整标志位已被设置,则使用对应的BANK层当前内存随机映射表的逻辑bank编号和物理bank编号的映射关系进行bank编号转换,否则,则进行对应的bank调整过程,并修改对应的BANK层当前内存随机映射表中相应表项的物理bank编号和调整标志位,使用调整后的BANK层当前内存随机映射表的逻辑bank编号和物理bank编号的映射关系进行bank编号转换;
将对应的BANK层写次数计数器递增1;
(3)从内存逻辑地址获取逻辑region编号,如果对应的REGION层写次数计数器达到REGION层写次数阈值,则执行更新对应的REGION层内存随机映射表集过程;
查询对应的REGION层内存随机映射表,如果对应的REGION层当前内存随机映射表中相应表项的调整标志位已被设置,则使用对应的REGION层当前内存随机映射表的逻辑region编号和物理region编号的映射关系进行region编号转换,否则,则进行对应的region调整过程,并修改对应的REGION层当前内存随机映射表中相应表项的物理region编号和调整标志位,使用调整后的REGION层当前内存随机映射表的逻辑region编号和物理region编号的映射关系进行region编号转换;
将对应的REGION层写次数计数器递增1;
(4)查询当前内存随机映射表和上次内存随机映射表,得到映射的当前物理地址和上次物理地址;交换当前物理地址和上次物理地址中的内存内容,并修改当前内存随机映射表中的相应两个物理地址值,设置相应的两个调整标志位;在上次内存随机映射表的反向映射表中查询上次物理对应的逻辑地址;如果该逻辑地址与交换后上次物理地址对应的逻辑地址一致,则完成本次调整过程;否则,以调整后逻辑地址与物理地址不一致的内存行作为开端,循环对物理内存进行调整,并修改当前内存随机映射表的相应元素值和调整标志位,直到逻辑地址与物理地址的映射一致为止。
一般地,所述预设的写次数阈值的大小由各个内存层次所包含的row个数所决定,为row个数的20倍以上。例如,写次数阈值为20,则增加的内存写操作开销占所有写操作的n/(n+20*n),小于4%。
本实施例提供的分层的基于随机映射的相变内存磨损均衡方法,至少具有以下有益效果:将写操作频繁的内存块均匀分布到整个相变内存空间,达到磨损均衡的目的,从而提高相变内存的寿命,同时,采用整个内存空间地址随机映射机制,消除了磨损均衡技术的信息泄露,从而可抵御恶意磨损程序的攻击。
另外,本实施例所述的分层的基于随机映射的相变内存磨损均衡方法特别适用于容量较大的相变内存,如16GB或更大的内存,因为本发明实施例所述的方法基于分层处理,而分层可将一个大的相变内存分成多个区域,分布进行地址转换,从而相对于不进行分层处理的方法,大大提高了处理效率和处理能力。
图2和图3示出了实施例二提供的分层的基于随机映射的相变内存磨损均衡系统的结构示意图,如图2或图3所示,本实施例二提供的分层的基于随机映射的相变内存磨损均衡系统包括:内存地址随机映射控制器10和内存映射表存储器20;所述内存地址随机映射控制器10用于将相变内存地址空间划分为RANK、BANK、REGION三个层次,并设置每个层次的内存写次数计数器;
所述内存地址随机映射控制器10,还用于初始化每个层次的内存随机映射表集;
所述内存地址随机映射控制器10,还用于在某一层次的内存写次数计数器大于或等于该层次预设的写次数阈值时,更新其内存随机映射表集;
所述内存地址随机映射控制器10,还用于分别从RANK层、BANK层和REGION层进行内存逻辑地址到内存物理地址的转换;
所述内存映射表存储器20,用于存储当前内存随机映射表、上次内存随机映射表和上次内存随机映射表的反向地址映射表。
所述内存映射表存储器为同步动态随机存储器SDRAM。
其中,内存映射表存储器采用访问速度更快的存储器SDRAM等,以减少访问地址映射表的时间开销。
所述内存地址随机映射控制器,具体用于查询内存映射表,记录内存写操作次数,以及对内存映射表进行更新;所述内存映射表存储器,用于存储各个层次的当前内存随机映射表、上次内存随机映射表和上次内存随机映射表的反向映射表。在所述内存地址映射控制器接收到内存逻辑地址后,查询内存映射表存储器中的相应映射表,得到内存物理地址。在所述内存地址映射控制器判断内存写次数达到某一阈值时,更新内存映射表存储器中存储的各个映射表。在所述内存地址映射控制器判断出一个内存物理地址是上次地址映射的结果时,须按照当前地址映射表的映射关系进行物理内存的调整,包括内容的调整以及相关表和表项的调整。
根据本实施例提供的分层是基于随机映射的相变内存磨损均衡系统,可用于执行或实现上述实施例一所述的分层的基于随机映射的相变内存磨损均衡方法,其实现原理和有益效果类似,此处不再赘述。
以上实施例仅用于说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (9)
1.一种分层的基于随机映射的相变内存磨损均衡方法,其特征在于,包括:
S1.将相变内存地址空间划分为RANK、BANK、REGION三个层次,并设置每个层次的内存写次数计数器;
S2.初始化每个层次的内存随机映射表集;如果某一层次的内存写次数计数器大于或等于该层次预设的写次数阈值,则更新其内存随机映射表集;
S3.针对内存写操作,分别从RANK层、BANK层和REGION层进行内存逻辑地址到内存物理地址的转换;
其中,所述S3具体包括:
S31:从内存逻辑地址,获取逻辑rank编号,查询RANK层当前内存映射表;如果RANK层当前内存随机映射表中相应表项的调整标志位已被设置,则使用RANK层当前内存映射表相应表项的逻辑rank编号和物理rank编号的映射关系进行rank编号转换;如果RANK层当前内存随机映射表中相应表项的调整标志位未被设置,则使用上次RANK层内存随机映射表的逻辑rank编号和物理rank编号的映射关系进行rank编号转换;
S32:从内存逻辑地址,获取逻辑bank编号,查询BANK层相应的当前内存映射表;如果BANK层当前内存随机映射表中相应表项的调整标志位已被设置,则使用BANK层当前内存映射表相应表项的逻辑bank编号和物理bank编号的映射关系进行bank编号转换;如果BANK层当前内存随机映射表中相应表项的调整标志位未被设置,则使用BANK层上次内存随机映射表的逻辑bank编号和物理bank编号的映射关系进行bank编号转换;
S33:从内存逻辑地址,获取逻辑region编号,查询REGION层相应的当前内存映射表;如果REGION层当前内存随机映射表中相应表项的调整标志位已被设置,则使用REGION层当前地址映射表相应表项的逻辑region编号和物理region编号的映射关系进行region编号转换;如果REGION层当前内存随机映射表中相应表项的调整标志位未被设置,则使用REGION层上次内存随机映射表的逻辑region编号和物理region编号的映射关系进行region编号转换。
2.根据权利要求1所述的分层的基于随机映射的相变内存磨损均衡方法,其特征在于,所述S1进一步包括:
S11:划分RANK层:相变内存包含4个rank,若相变内存的大小为s字节,则每个rank的大小为s/4个字节,RANK层包含4个rank,RANK层的基本处理单元是rank;
S12:划分BANK层:相变内存每个rank包含4个bank,根据S11,每个bank的大小为s/4/4个字节,则BANK层包含16个bank,BANK层的基本处理单元是bank;
S13:划分REGION层:1个相变内存行row大小为4096字节,n个row为1个region,其中,n≥1;根据S11和S12,每个bank包含s/4/4/(n*4096)个region;
S14:每个region设置一个REGION写次数计数器,记录该region内的写次数;每个bank设置一个BANK写次数计数器,记录该bank内的写次数;每个RANK设置一个RANK写次数计数器,记录该rank内的写次数;设置一个全局写次数计数器,记录相变内存的全部写次数;写次数计数器的类型为整型,每次对内存进行写操作时,根据写操作的地址,相对应的REGION写次数计数器、BANK写次数计数器和RANK写次数计数器均递增1。
3.根据权利要求1所述的分层的基于随机映射的相变内存磨损均衡方法,其特征在于,所述S2进一步包括:
S21:每个层次的内存映射表集都包含该层次的当前内存随机映射表、上次内存随机映射表及其反向映射表;相变内存包含1个rank映射表集,每个rank包含4个bank映射表集,每个bank包含s/4/4/(n*4096)个region映射表集,其中,s表示相变内存大小,n表示1个region包含的row数量;
S22:初始化时,依据洗牌算法,生成当前内存随机映射表,上次内存随机映射表及其反向映射表的元素值为空;
S23:在更新内存映射表集时,将当前内存随机映射表拷贝到上次内存随机映射表的存储位置;生成上次内存随机映射表的反向映射表;依据洗牌算法,生成新的内存随机映射表,并拷贝到当前内存随机映射表的存储位置;
S24:更新某个层次的内存映射表集后,该层次的内存写操作计数器清零。
4.根据权利要求3所述的分层的基于随机映射的相变内存磨损均衡方法,其特征在于,所述当前内存随机映射表,用于将逻辑内存地址转变为物理内存地址,索引值表示逻辑内存的行号,表元素包括物理内存的行号和调整标志位两个表项;当前内存随机映射表用于本次随机映射周期内的地址映射;
所述上次内存随机映射表,用于本次内存地址随机映射周期的上一个周期使用的地址映射表,不包含调整标志位表项;
所述上次内存随机映射表的反向映射表是上次映射表索引值和物理内存行号表项的互换之后形成的映射表,即反向映射表的索引是上次映射表的物理内存行号,反向映射表的元素值是上次映射表的索引值。
5.根据权利要求1所述的分层的基于随机映射的相变内存磨损均衡方法,其特征在于,还包括步骤S4,针对内存读操作具体包括:
S41:如果RANK层写次数计数器达到RANK层写次数阈值,则执行更新RANK层内存随机映射表集过程;
从内存逻辑地址获取逻辑rank编号,查询RANK层内存随机映射表,如果RANK层当前内存随机映射表中相应表项的调整标志位已被设置,则使用RANK层当前内存随机映射表的逻辑rank编号和物理rank编号的映射关系进行rank编号转换,否则,则进行rank调整过程,并修改RANK层当前内存随机映射表中相应表项的物理rank编号和调整标志位,使用调整后的RANK层当前内存随机映射表的逻辑rank编号和物理rank编号的映射关系进行rank编号转换;
将RANK层写次数计数器递增1;
S42:从内存逻辑地址获取逻辑bank编号,如果对应的BANK层写次数计数器达到BANK层写次数阈值,则执行更新对应的BANK层内存随机映射表集过程;
查询对应的BANK层内存随机映射表,如果对应的BANK层当前内存随机映射表中相应表项的调整标志位已被设置,则使用对应的BANK层当前内存随机映射表的逻辑bank编号和物理bank编号的映射关系进行bank编号转换,否则,则进行对应的bank调整过程,并修改对应的BANK层当前内存随机映射表中相应表项的物理bank编号和调整标志位,使用调整后的BANK层当前内存随机映射表的逻辑bank编号和物理bank编号的映射关系进行bank编号转换;
将对应的BANK层写次数计数器递增1;
S43:从内存逻辑地址获取逻辑region编号,如果对应的REGION层写次数计数器达到REGION层写次数阈值,则执行更新对应的REGION层内存随机映射表集过程;
查询对应的REGION层内存随机映射表,如果对应的REGION层当前内存随机映射表中相应表项的调整标志位已被设置,则使用对应的REGION层当前内存随机映射表的逻辑region编号和物理region编号的映射关系进行region编号转换,否则,则进行对应的region调整过程,并修改对应的REGION层当前内存随机映射表中相应表项的物理region编号和调整标志位,使用调整后的REGION层当前内存随机映射表的逻辑region编号和物理region编号的映射关系进行region编号转换;
将对应的REGION层写次数计数器递增1。
6.根据权利要求5所述的分层的基于随机映射的相变内存磨损均衡方法,其特征在于,所述S4还包括:
S44:查询当前内存随机映射表和上次内存随机映射表,得到映射的当前物理地址和上次物理地址;交换当前物理地址和上次物理地址中的内存内容,并修改当前内存随机映射表中的相应两个物理地址值,设置相应的两个调整标志位;在上次内存随机映射表的反向映射表中查询上次物理对应的逻辑地址;如果该逻辑地址与交换后上次物理地址对应的逻辑地址一致,则完成本次调整过程;否则,以调整后逻辑地址与物理地址不一致的内存行作为开端,循环对物理内存进行调整,并修改当前内存随机映射表的相应元素值和调整标志位,直到逻辑地址与物理地址的映射一致为止。
7.根据权利要求1-6任一所述的分层的基于随机映射的相变内存磨损均衡方法,其特征在于,所述预设的写次数阈值的大小由各个内存层次所包含的row个数所决定,为row个数的20倍以上。
8.一种分层的基于随机映射的相变内存磨损均衡系统,其特征在于,包括:内存地址随机映射控制器和内存映射表存储器;所述内存地址随机映射控制器用于将相变内存地址空间划分为RANK、BANK、REGION三个层次,并设置每个层次的内存写次数计数器;
所述内存地址随机映射控制器,还用于初始化每个层次的内存随机映射表集;
所述内存地址随机映射控制器,还用于在某一层次的内存写次数计数器大于或等于该层次预设的写次数阈值时,更新其内存随机映射表集;
所述内存地址随机映射控制器,还用于分别从RANK层、BANK层和REGION层进行内存逻辑地址到内存物理地址的转换;
所述内存映射表存储器,用于存储当前内存随机映射表、上次内存随机映射表和上次内存随机映射表的反向地址映射表。
9.根据权利要求8所述的分层的基于随机映射的相变内存磨损均衡系统,其特征在于,所述内存映射表存储器为SDRAM。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510119973.1A CN104714894B (zh) | 2015-03-18 | 2015-03-18 | 一种分层的基于随机映射的相变内存磨损均衡方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510119973.1A CN104714894B (zh) | 2015-03-18 | 2015-03-18 | 一种分层的基于随机映射的相变内存磨损均衡方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104714894A CN104714894A (zh) | 2015-06-17 |
CN104714894B true CN104714894B (zh) | 2017-08-11 |
Family
ID=53414250
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510119973.1A Active CN104714894B (zh) | 2015-03-18 | 2015-03-18 | 一种分层的基于随机映射的相变内存磨损均衡方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104714894B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20230207015A1 (en) * | 2020-04-23 | 2023-06-29 | Yangtze Memory Technologies Co., Ltd. | Memory device and programming method thereof |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105389266B (zh) * | 2015-10-16 | 2019-03-01 | 北京联想核芯科技有限公司 | 一种数据管理方法及装置 |
CN105678196B (zh) * | 2015-12-31 | 2018-12-25 | 上海交通大学 | 一种面向非易失性存储器的恶意读写程序监控装置及方法 |
CN107229571B (zh) * | 2017-06-08 | 2020-07-28 | 中国电子信息产业集团有限公司第六研究所 | EtherCAT从站中FMMU的控制方法及系统 |
US10705953B2 (en) * | 2018-03-01 | 2020-07-07 | Futurewei Technologies, Inc. | Application defined multi-tiered wear-leveling for storage class memory systems |
CN111475429B (zh) * | 2019-01-24 | 2023-08-29 | 爱思开海力士有限公司 | 存储器访问方法 |
CN110543434B (zh) * | 2019-09-05 | 2022-07-01 | 北京兆易创新科技股份有限公司 | Nand快闪器件、存储表管理方法、设备和存储介质 |
CN116755638B (zh) * | 2023-08-17 | 2023-10-13 | 北京大学 | 一种低资源消耗的面向忆阻器耐久性的磨损均衡方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102222046A (zh) * | 2011-06-09 | 2011-10-19 | 清华大学 | 一种磨损均衡方法及装置 |
CN102495806A (zh) * | 2011-11-25 | 2012-06-13 | 清华大学 | 相变内存周期性磨损均衡方法及其内存管理方法 |
CN102567213A (zh) * | 2011-11-30 | 2012-07-11 | 华中科技大学 | 相变存储器的写均衡方法 |
CN102841852A (zh) * | 2011-06-24 | 2012-12-26 | 华为技术有限公司 | 磨损均衡方法、存储装置及信息系统 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090271562A1 (en) * | 2008-04-25 | 2009-10-29 | Sinclair Alan W | Method and system for storage address re-mapping for a multi-bank memory device |
-
2015
- 2015-03-18 CN CN201510119973.1A patent/CN104714894B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102222046A (zh) * | 2011-06-09 | 2011-10-19 | 清华大学 | 一种磨损均衡方法及装置 |
CN102841852A (zh) * | 2011-06-24 | 2012-12-26 | 华为技术有限公司 | 磨损均衡方法、存储装置及信息系统 |
CN102495806A (zh) * | 2011-11-25 | 2012-06-13 | 清华大学 | 相变内存周期性磨损均衡方法及其内存管理方法 |
CN102567213A (zh) * | 2011-11-30 | 2012-07-11 | 华中科技大学 | 相变存储器的写均衡方法 |
Non-Patent Citations (1)
Title |
---|
一种基于代数映射的相变内存矩阵磨损均衡方法;杜雨阳 等;《计算机研究与发展》;20130121;第49卷(第12期);第2713-2720页 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20230207015A1 (en) * | 2020-04-23 | 2023-06-29 | Yangtze Memory Technologies Co., Ltd. | Memory device and programming method thereof |
Also Published As
Publication number | Publication date |
---|---|
CN104714894A (zh) | 2015-06-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104714894B (zh) | 一种分层的基于随机映射的相变内存磨损均衡方法及系统 | |
CN104731713B (zh) | 基于随机映射的相变内存磨损均衡方法及系统 | |
CN102981963B (zh) | 一种固态盘的闪存转换层的实现方法 | |
CN105205009B (zh) | 一种基于大容量固态存储的地址映射方法及装置 | |
CN102789427B (zh) | 数据储存装置与其操作方法 | |
CN104268094B (zh) | 一种优化的闪存地址映射方法 | |
US20120179853A1 (en) | Memory address translation | |
CN105354246B (zh) | 一种基于分布式内存计算的数据去重方法 | |
CN107066393A (zh) | 提高地址映射表中映射信息密度的方法 | |
CN106708751A (zh) | 包括用于多模操作的多分区的存储装置及其操作方法 | |
CN101645043B (zh) | 写数据的方法、读数据的方法及存储设备 | |
CN104115134A (zh) | 复合非易失性存储设备的数据迁移 | |
CN107391391A (zh) | 在固态硬盘的ftl实现数据拷贝的方法、系统及固态硬盘 | |
US20180210832A1 (en) | Hybrid drive translation layer | |
CN103942161B (zh) | 只读缓存的去冗余系统及方法以及缓存的去冗余方法 | |
CN105095113B (zh) | 一种缓存管理方法和系统 | |
CN108255415A (zh) | 建立多重命名空间方法与存取多重命名空间的数据的方法 | |
CN107818052A (zh) | 内存访问方法及装置 | |
CN108228471A (zh) | 管理存储器装置中存储器单元的实体信息的方法及系统 | |
US11615030B2 (en) | Cache memory system and cache memory control method | |
CN110018971A (zh) | 缓存替换技术 | |
CN104991743B (zh) | 应用于固态硬盘阻变存储器缓存的损耗均衡方法 | |
CN101930345B (zh) | 一种基于块访问的闪存读写方法 | |
CN106557428A (zh) | 数据存储设备的映射系统选择 | |
CN104111896B (zh) | 大数据处理中的虚拟内存管理方法及其装置 |
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 |