CN105786722A - 基于异构混合内存的nvm内存擦写控制方法和系统 - Google Patents
基于异构混合内存的nvm内存擦写控制方法和系统 Download PDFInfo
- Publication number
- CN105786722A CN105786722A CN201410830327.1A CN201410830327A CN105786722A CN 105786722 A CN105786722 A CN 105786722A CN 201410830327 A CN201410830327 A CN 201410830327A CN 105786722 A CN105786722 A CN 105786722A
- Authority
- CN
- China
- Prior art keywords
- page
- nvm
- internal memory
- erasable
- sequence number
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 27
- 238000013507 mapping Methods 0.000 claims description 19
- 238000010586 diagram Methods 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 239000008187 granular material Substances 0.000 description 2
- 208000032170 Congenital Abnormalities Diseases 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 230000007698 birth defect Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
Landscapes
- Techniques For Improving Reliability Of Storages (AREA)
- Read Only Memory (AREA)
Abstract
本发明提供了一种基于异构混合内存的NVM内存擦写控制方法,该方法包括:获取NVM页面擦写次数记录表,所述NVM页面擦写次数记录表中记录了NVM内存的页面序号和所对应的擦写次数;根据NVM页面擦写次数记录表,采用均衡算法对所述NVM内存的页面序号对应的擦写次数进行运算,得到擦写次数的运算值;根据所述页面序号为所述运算值的NVM内存的页面,将数据写入NVM内存中。由于均衡算法可以保证NVM的所有页面被选择的次数相对随机平均,从而控制了NVM不同存储单元之间的擦写次数,使各个存储单元的寿命比较平均。此外,还提供了一种基于异构混合内存的NVM内存擦写控制系统。
Description
技术领域
本发明涉及计算机技术领域,特别是涉及一种基于异构混合内存的NVM内存擦写控制方法和系统。
背景技术
随着电阻存储器、铁电存储器、相变存储器等为代表的新兴非易失性随机存储介质(Non-VolatileMemory,NVM)技术的发展,推进了存储技术的发展,为新型的内存与存储体系结构的产生打下了良好的基础。通过把新型的NVM和动态随机访问存储器(DynamicRandomAccessMemory,DRAM)相结合,搭建混合内存架构,形成异构混合内存。异构混合内存同时具有NVM和DRAM的特点,不仅仅具备常规内存的功能,存储在DRAM中的数据在断电后会立即消失,是易失性的;同时还能发挥NVM在断电后还能保存数据的优势,充分发挥NVM非易失性的特点,是一种混合使用的新型内存。
异构混合内存满足现有工业控制设备的常规内存接口,无需引进新的工业控制设备或添加新的辅助设备,成为了一个研究热点。
异构混合内存中的NVM与DRAM特性不同,NVM存在擦写总次数有限制的先天缺陷,达到一定擦写次数后NVM将会失效,所以NVM的使用寿命是有限的,使用寿命由最大可擦写次数决定,超过了最大可擦写次数,这个可擦写单元就成为坏块,不能正常使用了。常规的擦写控制方法是针对DRAM内存的,由于DRAM没有擦写总次数的限制,所以常规的擦写控制方法不适用于异构混合内存中的NVM内存。
发明内容
基于此,有必要针对上述问题,提供一种基于异构混合内存的NVM内存擦写控制方法和系统,能控制NVM不同存储单元之间的擦写次数,使之比较均衡,使各个存储单元的寿命比较平均。
一种基于异构混合内存的NVM内存擦写控制方法,所述方法包括:
获取NVM页面擦写次数记录表,所述NVM页面擦写次数记录表中记录了NVM内存的页面序号和所对应的擦写次数;
根据NVM页面擦写次数记录表,采用均衡算法对所述NVM内存的页面序号对应的擦写次数进行运算,得到所述擦写次数的运算值;
根据所述页面序号为所述运算值的NVM内存的页面,将数据写入NVM内存中。
在其中一个实施例中,所述方法还包括:
在开机上电时,将NVM内存中的所述NVM页面擦写次数记录表拷贝到DRAM缓冲区;
每当有数据写入NVM内存中后,将所述DRAM缓冲区的NVM页面擦写次数记录表更新;
在关机或掉电前,将所述更新的NVM页面擦写次数记录表保存到NVM内存中。
在其中一个实施例中,在所述将NVM内存中的NVM页面擦写次数记录表拷贝到DRAM缓冲区的步骤之后,还包括:
将DRAM缓冲区中的NVM页面擦写次数记录表拷贝到DRAM内存中。
在其中一个实施例中,所述获取NVM页面擦写次数记录表的步骤包括:
获取NVM页面擦写次数记录表的地址映射关系;
根据所述地址映射关系得到NVM页面擦写次数记录表的存储位置;
从所述存储位置读取所述NVM页面擦写次数记录表。
在其中一个实施例中,所述根据NVM页面擦写次数记录表,采用均衡算法对所述NVM内存的页面序号对应的擦写次数进行运算,得到所述擦写次数的运算值的步骤为:
将所述NVM内存的页面序号对应的擦写次数进行加权后进行哈希运算,得到哈希值;
获取NVM内存的可用存储容量对应的页面数;
将所述哈希值与所述对应的页面数进行取余运算,得到所述擦写次数的运算值。
在其中一个实施例中,所述根据所述页面序号为所述运算值的NVM内存的页面,将数据写入NVM内存中的步骤包括:
判断页面序号为所述运算值的NVM内存的页面中是否存在可用空间,如果是,则将数据写入所述可用空间,否则将所述运算值与预设数值相加,得到中间值;
S1:判断页面序号为所述中间值的NVM内存的页面是否存在可用空间,如果是,则将数据写入所述可用空间;否则,进一步判断所述中间值是否超过最大页面序号,若没有,则将所述中间值继续与所述预设数值相加,重复执行步骤S1;
S2:如果所述中间值超过最大页面序号,则判断所述最大页面序号对应的页面是否存在可用空间,如果存在,则将数据写入所述最大页面序号对应的页面的可用空间,否则获取NVM内存中存在可用空间的页面,将数据写入所述页面中。
一种基于异构混合内存的NVM内存擦写控制系统,所述系统包括:
获取模块,用于获取NVM页面擦写次数记录表,所述NVM页面擦写次数记录表中记录了NVM内存的页面序号和所对应的擦写次数;
运算模块,用于根据NVM页面擦写次数记录表,采用均衡算法对所述NVM内存的页面序号对应的擦写次数进行运算,得到所述擦写次数的运算值;
写入模块,用于根据所述页面序号为所述运算值的NVM内存的页面,将数据写入NVM内存中。
在其中一个实施例中,所述系统还包括:
第一拷贝模块,用于在开机上电时,将NVM内存中的所述NVM页面擦写次数记录表拷贝到DRAM缓冲区;
更新模块,用于每当有数据写入NVM内存中后,将所述DRAM缓冲区的NVM页面擦写次数记录表更新;
保存模块,用于在关机或掉电前,将所述更新的NVM页面擦写次数记录表保存到NVM内存中。
在其中一个实施例中,所述系统还包括:
第二拷贝模块,用于将DRAM缓冲区中的NVM页面擦写次数记录表拷贝到DRAM内存中。
在其中一个实施例中,所述获取模块还用于获取NVM页面擦写次数记录表的地址映射关系;根据所述地址映射关系得到NVM页面擦写次数记录表的存储位置;从所述存储位置读取所述NVM页面擦写次数记录表。
在其中一个实施例中,所述运算模块包括:
哈希运算单元,用于将所述NVM内存的页面序号对应的擦写次数进行加权后进行哈希运算,得到哈希值;
获取单元,用于获取NVM内存的可用存储容量对应的页面数;
取余运算单元,用于将所述哈希值与所述对应的页面数进行取余运算,得到所述擦写次数的运算值。
在其中一个实施例中,所述写入模块还用于判断页面序号为所述运算值的NVM内存的页面中是否存在可用空间,如果是,则将数据写入所述可用空间,否则将所述运算值与预设数值相加,得到中间值;并执行:
S1:判断页面序号为所述中间值的NVM内存的页面是否存在可用空间,如果是,则将数据写入所述可用空间;否则,进一步判断所述中间值是否超过最大页面序号,若没有,则将所述中间值继续与所述预设数值相加,重复执行S1;
S2:如果所述中间值超过最大页面序号,则判断所述最大页面序号对应的页面是否存在可用空间,如果存在,则将数据写入所述最大页面序号对应的页面的可用空间,否则获取NVM内存中存在可用空间的页面,将数据写入所述页面中。
上述基于异构混合内存的NVM内存擦写控制方法和系统,通过获取NVM页面擦写次数记录表,所述记录表中记录了NVM内存的页面序号和所对应的擦写次数;根据NVM页面擦写次数记录表和采用均衡算法对NVM内存的页面序号对应的擦写次数进行运算,得到擦写次数的运算值;根据所述页面序号为所述运算值的NVM内存的页面,将数据写入NVM内存中。由于均衡算法可以保证NVM的所有页面被选择的次数相对随机平均,从而控制了NVM不同存储单元之间的擦写次数,使之比较均衡,使各个存储单元的寿命比较平均。
附图说明
图1为一个实施例中基于异构混合内存的NVM内存擦写控制方法的流程图;
图2为一个实施例中NVM页面擦写次数记录表的示意图;
图3为另一个实施例中保存NVM页面擦写次数记录表的流程图;
图4为一个实施例中异构混合内存的结构示意图;
图5为一个实施例中更新的NVM页面擦写次数记录表的示意图;
图6为一个实施例中获取NVM页面擦写次数记录表的流程图;
图7为一个实施例中对擦写次数进行运算的流程图;
图8为另一个实施例中NVM页面擦写次数记录表的示意图;
图9为一个实施例中将数据写入NVM内存的流程图;
图10为一个实施例中基于异构混合内存的NVM内存擦写控制系统的结构框图;
图11为另一个实施例中基于异构混合内存的NVM内存擦写控制系统的结构框图;
图12为再一个实施例中基于异构混合内存的NVM内存擦写控制系统的结构框图;
图13为一个实施例中运算模块的结构框图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
在一个实施例中,如图1所示,提供了一种基于异构混合内存的NVM内存擦写控制方法,该方法包括:
步骤S110,获取NVM页面擦写次数记录表,该NVM页面擦写次数记录表中记录了NVM内存的页面序号和所对应的擦写次数。
本实施例中,将NVM内存按照预设的物理页面为单位进行分页,为分页后的每个页面分配一个页面序号,页面序号对应的页面有数据写入,则将页面序号对应的擦写次数更新,NVM页面擦写次数记录表中记录了NVM内存的所有页面序号和所对应的擦写次数。如每个物理页面的大小默认为4KB,NVM内存总容量为1M,则分页后有256个页面,为每个页面分配一个页面序号0-255,并记录每个页面序号对应的擦写次数,未使用过的NVM内存的页面擦写次数标记为0,每写一次NVM内存的页面,对应擦写次数加1。如图2所示,为一个NVM页面擦写次数记录表。
步骤S120,根据NVM页面擦写次数记录表,采用均衡算法对NVM内存的页面序号对应的擦写次数进行运算,得到所述擦写次数的运算值。
本实施例中,均衡算法是指能使计算结果尽可能随机平均分布的算法,可以根据需要选择合适的均衡算法,然后将NVM内存的页面序号对应的擦写次数基于均衡算法进行运算。如可以采用Roundrobin(轮询调度)算法、Hash(哈希)算法、CARP(CommonAccessRedundancyProtocol、共用地址冗余协议)算法、Consistenthash(一致性哈希)算法等或几种算法的组合形式来实现均衡算法。可以理解的是,可以在进行运算前,先将NVM页面擦写次数记录表按照擦写次数从小到大或从大到小排序,方便查找最大擦写次数和最小擦写次数以及其对应的页面序号。
具体的,采用Roundrobin算法时,找到最小擦写次数对应的页面序号作为擦写次数的运算值。采用Hash算法时,可以对NVM页面擦写次数记录表中全部或部分擦写次数进行哈希运算,得到哈希值,然后将哈希值与页面总数取余,将取余后得到的值作为擦写次数的运算值。采用CARP算法时,将NVM内存的页面序号对应的擦写次数及同一个页面序号对应的页面的数据写入标志相加,将相加后的值进行MD5(信息摘要算法)运算,得到运算后的值。如果需要进行运算的NVM内存的页面序号对应的擦写次数有多个,则分别进行上述运算得到多个运算结果,将运算结果中最大的值对应的NVM内存的页面序号作为擦写次数的运算值。可以理解的是,其中数据写入标志可以自定义,如用“0”表示无数据写入,用“1”表示有数据写入。采用Consistenthash算法时,可以先求出每个NVM内存的页面序号对应的擦写次数的哈希值,并将其配置到0~2^32的圆上。然后用同样的方法求出每个NVM内存的页面序号对应的可用存储容量的哈希值,并映射到圆上,然后从数据映射到的位置开始顺时针查找,将找到的第一个擦写次数对应的页面序号作为擦写次数的运算值,如果超过2^32仍然找不到擦写次数,则将最小的NVM内存的页面序号作为擦写次数的运算值。
步骤S130,根据页面序号为所述运算值的NVM内存的页面,将数据写入NVM内存中。
本实施例中,根据页面序号为运算值的NVM内存的页面的实际存储情况,将数据优先写入页面序号为运算值的NVM内存的页面,当页面序号为运算值的NVM内存的页面不存在可用空间时,则按照页面序号的顺序逐个检测与该页面相邻的其它页面是否存在可用空间,并将数据写入到存在可用空间的页面中。可以理解的是,在写入数据前,对NVM内存的剩余容量进行了统计,只有NVM内存中存在可用空间的情况下才会发出相应的数据写入请求。
本实施例中,通过获取NVM页面擦写次数记录表,所述记录表中记录了NVM内存的页面序号和所对应的擦写次数;根据NVM页面擦写次数记录表和采用均衡算法对NVM内存的页面序号对应的擦写次数进行运算,得到擦写次数的运算值;根据页面序号为运算值的NVM内存的页面,将数据写入NVM内存中。由于均衡算法可以保证NVM的所有页面被选择的次数相对随机平均,从而控制了NVM不同存储单元之间的擦写次数,使之比较均衡,使各个存储单元的寿命比较平均。
在一个实施例中,如图3所示,所述方法还包括:
步骤S210,在开机上电时,将NVM内存中的NVM页面擦写次数记录表拷贝到DRAM缓冲区。
本实施例中,异构混合内存可以由如图4所示的结构组成,包括NVM-DRAM混合模块410与DRAM内存420,其中NVM-DRAM混合模块410包括NVM内存411和DRAM缓冲区412。其中DRAM缓冲区412的读写速度比NVM内存411的读写速度快,在开机上电时,将NVM内存411中的NVM页面擦写次数记录表拷贝到DRAM缓冲区412,一方面可以提高读写效率,另一方面不会过多地损耗NVM内存411的擦写次数。
步骤S220,每当有数据写入NVM内存中后,将DRAM缓冲区的NVM页面擦写次数记录表更新。
本实施例中,所有的擦写次数修改动作都由控制器在DRAM缓冲区412执行,每写一次NVM指定的页面区域,页面序号为对应页面区域的对应的擦写次数进行更新。控制器是NVM-DRAM混合模块410内部的一个控制单元,可以控制NVM-DRAM混合模块410,以及和外部其它模块进行通信。如更新前NVM页面擦写次数记录表如图2所示,数据写入了页面序号为1的页面,则对应的擦写次数加1,更新后的NVM页面擦写次数记录表如图5所示。
步骤S230,在关机或掉电前,将更新的NVM页面擦写次数记录表保存到NVM内存中。
本实施例中,由于DRAM缓冲区412是DRAM介质的内存,存储在DRAM中的数据在断电后会立即消失,是易失性的,而NVM内存是非易失性的,在断电后还能保存数据。所以在关机或掉电前,NVM控制器将DRAM缓冲区中更新的NVM页面擦写次数记录表回写到NVM内存中,数据不会丢失,以便下一次开机后可以使用更新的NVM页面擦写次数记录表。
在一个实施例中,在将NVM内存中的NVM页面擦写次数记录表拷贝到DRAM缓冲区的步骤之后,还包括:将DRAM缓冲区中的NVM页面擦写次数记录表拷贝到DRAM内存中。
本实施例中,虽然DRAM缓冲区和DRAM内存都是属于DRAM颗粒,同一类DRAM颗粒读写速度是一样的或者是相近的,但是由于外部逻辑设计不同导致了某一主控器对它们的访问速度、延迟时间有区别。比如DRAM缓冲区工作时被分为两个时间片,其中一个时间片与CPU端的DDR3接口交换数据,另一个时间片与NVM之间交换数据;而DRAM内存全部时间都可与CPU交换数据,而且CPU访问NVM-DRAM混合模块中的DRAM缓冲区还需要经过控制器单元间接访问(不能直接访问),因此CPU访问DRAM内存的速度比访问DRAM缓冲区更快。为了提高工作效率,系统驱动层在管理时会定时下指令给CPU,CPU将DRAM缓冲区中的NVM页面擦写次数记录表拷贝到DRAM内存中。定时的时间可以自定义,如10分钟拷贝一次。其中系统驱动层是指系统驱动代码,是操作系统映像的一部分,CPU调用系统驱动层对异构混合内存进行管理。当系统驱动层把NVM页面擦写次数记录表拷贝到DRAM内存中后,其它的程序如果需要用到NVM页面擦写次数记录表就可以直接从DRAM内存中读取。系统驱动层和其它程序只有读取DRAM内存中的NVM页面擦写次数记录表的权限,而没有改写的权限。
在一个实施例中,如图6所示,步骤S110包括:
步骤S111,获取NVM页面擦写次数记录表的地址映射关系。
本实施例中,地址映射关系作为控制器的信息存储在异构混合内存中,如异构混合内存结构为如图4所示时,可以存储在NVM-DRAM混合模块410的首个4K地址空间中。当系统驱动层读写对应异构混合内存条的首个4K地址空间时,控制器会将首个4K地址空间映射到控制命令区域,这样以后就可以直接从控制命令区域获得控制器的信息。其中控制命令区域是虚拟地址空间中的一块区域,控制器的信息是指NVM-DRAM混合模块410的工作状态信息,包括控制器是否繁忙、是否允许读取数据、是否允许写入数据、NVM页面擦写次数记录表的地址映射关系等。地址映射关系是指虚拟地址空间和物理地址空间的映射关系,可以根据地址映射关系找到NVM页面擦写次数记录表的实际存储位置。
步骤S112,根据所述地址映射关系得到NVM页面擦写次数记录表的存储位置。
本实施例中,当CPU调用系统驱动层对异构混合内存进行管理或其它程序需要使用NVM页面擦写次数记录表时,先获取NVM页面擦写次数记录表的地址映射关系,然后根据地址映射关系找到和虚拟地址空间对应的物理地址空间,从而找到NVM页面擦写次数记录表的实际存储位置。
步骤S113,从所述存储位置读取NVM页面擦写次数记录表。
本实施例中,找到了NVM页面擦写次数记录表的实际存储位置,就可以直接从所述存储位置读取NVM页面擦写次数记录表。在一个实施例中,如图7所示,以哈希算法来详细说明对擦写次数进行运算的过程,则步骤S120包括:
步骤S121,将NVM内存的页面序号对应的擦写次数进行加权后进行哈希运算,得到哈希值。
本实施例中,可以将全部的或部分NVM内存的页面序号对应的擦写次数进行运算,加权的系数可以根据需要自定义,哈希运算的算法也可以根据需要自选。优选的,加权系数定义为所有页面序号对应的擦写次数总和与所有页面最大擦写次数和的比值。加权方法即每个页面实际擦写次数乘以加权系数。如NVM页面擦写次数记录表如图8所示,NVM内存一共有3个页面,页面序号分别为0、1、2,对应的擦写次数为8、2、5,假设每个页面最大擦写次数为20。则加权系数为(8+2+5)/(20+20+20)=1/4。将每个页面实际擦写次数乘以加权系数,即8×1/4=2、2×1/4=1、5×1/4=1.25。将2、1、1.25作为输入,进行哈希运算得到哈希值。优选的,可以使用随机数哈希算法。
步骤S122,获取NVM内存的可用存储容量对应的页面数。
本实施例中,NVM内存的可用存储容量就是NVM内存中剩余的可以存储数据的总容量,如NVM内存总容量为1G(1048576K),使用了128M(131702K),那么NVM内存的可用存储容量就是896M(917504K)。假设每4K为单位作为一个页面,则NVM内存的可用存储容量对应的页面数为917504K/4K=229376。因为所述对应的页面数是NVM内存的可用存储容量对应的页面数,所以不会超过NVM内存的总的页面数。
步骤S123,将哈希值与所述对应的页面数进行取余运算,得到所述擦写次数的运算值。
本实施例中,将哈希值与所述对应的页面数进行取余运算,因为所述对应的页面数不会超过NVM内存的总的页面数,进行取余运算后,运算值将会是NVM内存的总的页面数的其中一个,这样就通过哈希算法为数据写入选择了一个页面,由于哈希算法的运算结果有很强的随机分布性,保证了选择页面的均衡性。
在一个实施例中,如图9所示,步骤S130包括:
步骤S131,判断页面序号为运算值的NVM内存的页面中是否存在可用空间,如果是则进入步骤S132,否则进入步骤S133。
本实施例中,如果页面序号为运算值的NVM内存的页面的剩余容量不足以写入数据,则判断为不存在可用空间,否则判断为存在可用空间。可以理解的是,可用空间可能连续或不连续,只要能足够保存待写入数据即可。
步骤S132,将数据写入所述可用空间。
本实施例中,可以将数据一次性写入连续的可用空间,也可以当可用空间不连续时,分几次写入可用空间。
步骤S133,将所述运算值与预设数值相加,得到中间值。
本实施例中,当页面序号为所述运算值的NVM内存的页面中不存在可用空间时,在对应的页面序号在所述运算值之后的页面中寻找可用空间。具体的,预设数值可自定义,优先的可定义为1。如运算值为2,则与预设数值1相加得到中间值为3。
步骤S134,判断页面序号为中间值的NVM内存的页面是否存在可用空间,如果是,则进入步骤S135,否则进入步骤S136。
本实施例中,将页面序号为上一步中得到的中间值所对应的页面作为需要写入数据的页面,但是否可写入数据,要先判断它是否存在可用空间。如果所述页面的剩余容量不足以写入数据,则判断为不存在可用空间,否则判断为存在可用空间。可以理解的是,可用空间可能连续或不连续,只要能足够保存待写入数据即可。
步骤S135,将数据写入所述可用空间。
本实施例中,可以将数据一次性写入连续的可用空间,也可以当可用空间不连续时,分几次写入可用空间。
步骤S136,判断所述中间值是否超过最大页面序号,若没有,进入步骤S137,否则进入步骤S138。
本实施例中,如果页面序号为中间值的NVM内存的页面也没有可用空间,则需要进一步的在对应的页面序号在上述中间值之后的页面中寻找可用空间。在寻找前,要先判断是否己到达了最后一个页面,也就是判断所述中间值是否超过最大页面序号,若没有,进入步骤S137,否则进入步骤S138。
步骤S137,将中间值继续与预设数值相加,从步骤S134开始重复执行。
本实施例中,将中间值继续与预设数值相加,从步骤S134开始重复执行,进一步的寻找存在可用空间的页面。
步骤S138,判断最大页面序号对应的页面是否存在可用空间,如果存在,则进入步骤S139,否则进入步骤S140。
本实施例中,判断最大页面序号对应的页面是否存在可用空间,如果所述页面的剩余容量不足以写入数据,则判断为不存在可用空间,否则判断为存在可用空间。可以理解的是,可用空间可能连续或不连续,只要能足够保存待写入数据即可。
步骤S139,将数据写入所述最大页面序号对应的页面的可用空间。
本实施例中,可以将数据一次性写入连续的可用空间,也可以当可用空间不连续时,分几次写入可用空间。
步骤S140,获取NVM内存中存在可用空间的页面,将数据写入页面中。
本实施例中,如果一直到最大页面序号对应的页面也没有可用空间,则逐个检测页面序号在上述运算值之前的页面是否存在可用空间,并将数据写入存在可用空间的页面中。
本实施例中,通过将运算值与预设数值相加,在页面序号为运算值的NVM内存的页面的后面的页面不断的寻找可用空间,直到找到可用空间,可以在第一次选择的页面中不存在可用空间时,进一步的选择其它页面的可用空间,从而写入数据。
在一个实施例中,如图10所示,提供了一种基于异构混合内存的NVM内存擦写控制系统,包括:
获取模块510,用于获取NVM页面擦写次数记录表,该NVM页面擦写次数记录表中记录了NVM内存的页面序号和所对应的擦写次数。
运算模块520,用于根据NVM页面擦写次数记录表,采用均衡算法对NVM内存的页面序号对应的擦写次数进行运算,得到所述擦写次数的运算值。
写入模块530,用于根据所述页面序号为所述运算值的NVM内存的页面,将数据写入NVM内存中。
在另一个实施例中,如图11所示,在上述实施例的基础上,所述系统还包括:
第一拷贝模块540,用于在开机上电时,将NVM内存中的NVM页面擦写次数记录表拷贝到DRAM缓冲区。
更新模块550,用于每当有数据写入NVM内存中后,将DRAM缓冲区的NVM页面擦写次数记录表更新。
保存模块560,用于在关机或掉电前,将更新的NVM页面擦写次数记录表保存到NVM内存中。
在又一个实施例中,如图12所示,在上述实施例的基础上,所述系统还包括:
第二拷贝模块570,用于将DRAM缓冲区中的NVM页面擦写次数记录表拷贝到DRAM内存中。
在一个实施例中,所述获取模块510还用于获取NVM页面擦写次数记录表的地址映射关系;根据地址映射关系得到NVM页面擦写次数记录表的存储位置;从存储位置读取NVM页面擦写次数记录表。
在一个实施例中,如图13所示,所述运算模块520包括:
哈希运算单元521,用于将NVM内存的页面序号对应的擦写次数进行加权后进行哈希运算,得到哈希值。
获取单元522,用于获取NVM内存的可用存储容量对应的页面数。
取余运算单元523,用于将哈希值与所述对应的页面数进行取余运算,得到擦写次数的运算值。
在一个实施例中,写入模块530还用于判断页面序号为所述运算值的NVM内存的页面中是否存在可用空间,如果是,则将数据写入所述可用空间,否则将所述运算值与预设数值相加,得到中间值,并执行:
S1:判断页面序号为中间值的NVM内存的页面是否存在可用空间,如果是,则将数据写入所述可用空间;否则,进一步判断中间值是否超过最大页面序号,若没有,则将中间值继续与预设数值相加,重复执行S1;
S2:如果中间值超过最大页面序号,则判断最大页面序号对应的页面是否存在可用空间,如果存在,则将数据写入最大页面序号对应的页面的可用空间,否则获取NVM内存中存在可用空间的页面,将数据写入所述页面中。
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。
Claims (12)
1.一种基于异构混合内存的NVM内存擦写控制方法,所述方法包括:
获取NVM页面擦写次数记录表,所述NVM页面擦写次数记录表中记录了NVM内存的页面序号和所对应的擦写次数;
根据NVM页面擦写次数记录表,采用均衡算法对所述NVM内存的页面序号对应的擦写次数进行运算,得到所述擦写次数的运算值;
根据所述页面序号为所述运算值的NVM内存的页面,将数据写入NVM内存中。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在开机上电时,将NVM内存中的所述NVM页面擦写次数记录表拷贝到DRAM缓冲区;
每当有数据写入NVM内存中后,将所述DRAM缓冲区的NVM页面擦写次数记录表更新;
在关机或掉电前,将所述更新的NVM页面擦写次数记录表保存到NVM内存中。
3.根据权利要求2所述的方法,其特征在于,在所述将NVM内存中的NVM页面擦写次数记录表拷贝到DRAM缓冲区的步骤之后,还包括:
将DRAM缓冲区中的NVM页面擦写次数记录表拷贝到DRAM内存中。
4.根据权利要求1所述的方法,其特征在于,所述获取NVM页面擦写次数记录表的步骤包括:
获取NVM页面擦写次数记录表的地址映射关系;
根据所述地址映射关系得到NVM页面擦写次数记录表的存储位置;
从所述存储位置读取所述NVM页面擦写次数记录表。
5.根据权利要求1所述的方法,其特征在于,所述根据NVM页面擦写次数记录表,采用均衡算法对所述NVM内存的页面序号对应的擦写次数进行运算,得到所述擦写次数的运算值的步骤为:
将所述NVM内存的页面序号对应的擦写次数进行加权后进行哈希运算,得到哈希值;
获取NVM内存的可用存储容量对应的页面数;
将所述哈希值与所述对应的页面数进行取余运算,得到所述擦写次数的运算值。
6.根据权利要求1所述的方法,其特征在于,所述根据所述页面序号为所述运算值的NVM内存的页面,将数据写入NVM内存中的步骤包括:
判断页面序号为所述运算值的NVM内存的页面中是否存在可用空间,如果是,则将数据写入所述可用空间,否则将所述运算值与预设数值相加,得到中间值;
S1:判断页面序号为所述中间值的NVM内存的页面是否存在可用空间,如果是,则将数据写入所述可用空间;否则,进一步判断所述中间值是否超过最大页面序号,若没有,则将所述中间值继续与所述预设数值相加,重复执行步骤S1;
S2:如果所述中间值超过最大页面序号,则判断所述最大页面序号对应的页面是否存在可用空间,如果存在,则将数据写入所述最大页面序号对应的页面的可用空间,否则获取NVM内存中存在可用空间的页面,将数据写入所述页面中。
7.一种基于异构混合内存的NVM内存擦写控制系统,其特征在于,所述系统包括:
获取模块,用于获取NVM页面擦写次数记录表,所述NVM页面擦写次数记录表中记录了NVM内存的页面序号和所对应的擦写次数;
运算模块,用于根据NVM页面擦写次数记录表,采用均衡算法对所述NVM内存的页面序号对应的擦写次数进行运算,得到所述擦写次数的运算值;
写入模块,用于根据所述页面序号为所述运算值的NVM内存的页面,将数据写入NVM内存中。
8.根据权利要求7所述的系统,其特征在于,所述系统还包括:
第一拷贝模块,用于在开机上电时,将NVM内存中的所述NVM页面擦写次数记录表拷贝到DRAM缓冲区;
更新模块,用于每当有数据写入NVM内存中后,将所述DRAM缓冲区的NVM页面擦写次数记录表更新;
保存模块,用于在关机或掉电前,将所述更新的NVM页面擦写次数记录表保存到NVM内存中。
9.根据权利要求8所述的系统,其特征在于,所述系统还包括:
第二拷贝模块,用于将DRAM缓冲区中的NVM页面擦写次数记录表拷贝到DRAM内存中。
10.根据权利要求7所述的系统,其特征在于,所述获取模块还用于获取NVM页面擦写次数记录表的地址映射关系;根据所述地址映射关系得到NVM页面擦写次数记录表的存储位置;从所述存储位置读取所述NVM页面擦写次数记录表。
11.根据权利要求7所述的系统,其特征在于,所述运算模块包括:
哈希运算单元,用于将所述NVM内存的页面序号对应的擦写次数进行加权后进行哈希运算,得到哈希值;
获取单元,用于获取NVM内存的可用存储容量对应的页面数;
取余运算单元,用于将所述哈希值与所述对应的页面数进行取余运算,得到所述擦写次数的运算值。
12.根据权利要求7所述的系统,其特征在于,所述写入模块还用于判断页面序号为所述运算值的NVM内存的页面中是否存在可用空间,如果是,则将数据写入所述可用空间,否则将所述运算值与预设数值相加,得到中间值;并执行:
S1:判断页面序号为所述中间值的NVM内存的页面是否存在可用空间,如果是,则将数据写入所述可用空间;否则,进一步判断所述中间值是否超过最大页面序号,若没有,则将所述中间值继续与所述预设数值相加,重复执行S1;
S2:如果所述中间值超过最大页面序号,则判断所述最大页面序号对应的页面是否存在可用空间,如果存在,则将数据写入所述最大页面序号对应的页面的可用空间,否则获取NVM内存中存在可用空间的页面,将数据写入所述页面中。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CN201410830327.1A CN105786722B (zh) | 2014-12-25 | 2014-12-25 | 基于异构混合内存的nvm内存擦写控制方法和系统 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CN201410830327.1A CN105786722B (zh) | 2014-12-25 | 2014-12-25 | 基于异构混合内存的nvm内存擦写控制方法和系统 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| CN105786722A true CN105786722A (zh) | 2016-07-20 |
| CN105786722B CN105786722B (zh) | 2020-10-27 |
Family
ID=56389568
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| CN201410830327.1A Active CN105786722B (zh) | 2014-12-25 | 2014-12-25 | 基于异构混合内存的nvm内存擦写控制方法和系统 |
Country Status (1)
| Country | Link |
|---|---|
| CN (1) | CN105786722B (zh) |
Cited By (6)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| WO2017107161A1 (zh) * | 2015-12-25 | 2017-06-29 | 研祥智能科技股份有限公司 | 基于异构混合内存的nvm内存擦写控制方法和系统 |
| WO2018119773A1 (zh) * | 2016-12-28 | 2018-07-05 | 华为技术有限公司 | 非易失内存访问方法、装置和系统 |
| CN108268220A (zh) * | 2018-02-08 | 2018-07-10 | 重庆邮电大学 | 实时嵌入式系统中基于非易失性混合式内存的软件优化方法 |
| CN113434092A (zh) * | 2021-07-07 | 2021-09-24 | 中国人民解放军国防科技大学 | 一种基于混合dram-nvm内存的指纹识别方法 |
| CN113903393A (zh) * | 2021-08-19 | 2022-01-07 | 北京中电华大电子设计有限责任公司 | 一种提升nor flash可靠性的方法 |
| CN117389482A (zh) * | 2023-12-11 | 2024-01-12 | 芯天下技术股份有限公司 | 一种用于spi nand的寿命记录方法、芯片及设备 |
Citations (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20090091978A1 (en) * | 2007-10-09 | 2009-04-09 | Phison Electronics Corp. | Wear leveling method and controller using the same |
| CN102169727A (zh) * | 2010-12-07 | 2011-08-31 | 清华大学 | 基于随机游走的固态硬盘磨损均衡方法 |
| CN102447636A (zh) * | 2012-01-06 | 2012-05-09 | 中兴通讯股份有限公司 | 一种数据中心通讯设备的负载分担方法和装置 |
| CN102880570A (zh) * | 2012-09-05 | 2013-01-16 | 记忆科技(深圳)有限公司 | 固态硬盘的加权磨损均衡方法及系统 |
| CN102981971A (zh) * | 2012-12-25 | 2013-03-20 | 重庆大学 | 一种快速响应的相变存储器损耗均衡方法 |
-
2014
- 2014-12-25 CN CN201410830327.1A patent/CN105786722B/zh active Active
Patent Citations (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20090091978A1 (en) * | 2007-10-09 | 2009-04-09 | Phison Electronics Corp. | Wear leveling method and controller using the same |
| CN102169727A (zh) * | 2010-12-07 | 2011-08-31 | 清华大学 | 基于随机游走的固态硬盘磨损均衡方法 |
| CN102447636A (zh) * | 2012-01-06 | 2012-05-09 | 中兴通讯股份有限公司 | 一种数据中心通讯设备的负载分担方法和装置 |
| CN102880570A (zh) * | 2012-09-05 | 2013-01-16 | 记忆科技(深圳)有限公司 | 固态硬盘的加权磨损均衡方法及系统 |
| CN102981971A (zh) * | 2012-12-25 | 2013-03-20 | 重庆大学 | 一种快速响应的相变存储器损耗均衡方法 |
Non-Patent Citations (1)
| Title |
|---|
| DHIMAN等: "PDRAM: A Hybrid PRAM and DRAM Main Memory System", 《DAC "09 PROCEEDINGS OF THE 46TH ANNUAL DESIGN AUTOMATION CONFERENCE》 * |
Cited By (10)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| WO2017107161A1 (zh) * | 2015-12-25 | 2017-06-29 | 研祥智能科技股份有限公司 | 基于异构混合内存的nvm内存擦写控制方法和系统 |
| WO2018119773A1 (zh) * | 2016-12-28 | 2018-07-05 | 华为技术有限公司 | 非易失内存访问方法、装置和系统 |
| US10997078B2 (en) | 2016-12-28 | 2021-05-04 | Huawei Technologies Co., Ltd. | Method, apparatus, and non-transitory readable medium for accessing non-volatile memory |
| CN108268220A (zh) * | 2018-02-08 | 2018-07-10 | 重庆邮电大学 | 实时嵌入式系统中基于非易失性混合式内存的软件优化方法 |
| CN108268220B (zh) * | 2018-02-08 | 2020-12-18 | 重庆邮电大学 | 实时嵌入式系统中非易失性混合式内存的软件优化方法 |
| CN113434092A (zh) * | 2021-07-07 | 2021-09-24 | 中国人民解放军国防科技大学 | 一种基于混合dram-nvm内存的指纹识别方法 |
| CN113434092B (zh) * | 2021-07-07 | 2022-04-01 | 中国人民解放军国防科技大学 | 一种基于混合dram-nvm内存的指纹识别方法 |
| CN113903393A (zh) * | 2021-08-19 | 2022-01-07 | 北京中电华大电子设计有限责任公司 | 一种提升nor flash可靠性的方法 |
| CN117389482A (zh) * | 2023-12-11 | 2024-01-12 | 芯天下技术股份有限公司 | 一种用于spi nand的寿命记录方法、芯片及设备 |
| CN117389482B (zh) * | 2023-12-11 | 2024-06-11 | 芯天下技术股份有限公司 | 一种用于spi nand的寿命记录方法、芯片及设备 |
Also Published As
| Publication number | Publication date |
|---|---|
| CN105786722B (zh) | 2020-10-27 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US12475039B2 (en) | Computing system and method for controlling storage device | |
| US11467955B2 (en) | Memory system and method for controlling nonvolatile memory | |
| US8255614B2 (en) | Information processing device that accesses memory, processor and memory management method | |
| TWI470426B (zh) | Memory management device and memory management method | |
| US20100312955A1 (en) | Memory system and method of managing the same | |
| CN105786722A (zh) | 基于异构混合内存的nvm内存擦写控制方法和系统 | |
| US20170010812A1 (en) | Cache decice and memory system | |
| CN107908571B (zh) | 一种数据写入方法、闪存装置及存储设备 | |
| JP2009525555A (ja) | 装置の非アクティブな期間の間、dramの未使用部分のリフレッシュを動作不能にすることによって電力消費量を低減すること | |
| US10635356B2 (en) | Data management method and storage controller using the same | |
| CN113722131A (zh) | 用于促进存储设备中的快速崩溃恢复的方法和系统 | |
| WO2019156965A1 (en) | Partial save of memory | |
| US11372774B2 (en) | Method and system for a solid state drive with on-chip memory integration | |
| JP2018160189A (ja) | メモリシステム | |
| JP5858081B2 (ja) | メモリコントローラ、メモリシステム及びメモリ制御方法 | |
| JP2011242833A (ja) | メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 | |
| US20170371800A1 (en) | Memory system, and address mapping method and access method thereof | |
| US20250199685A1 (en) | Memory system, host device and method for controlling nonvolatile memory | |
| WO2017107161A1 (zh) | 基于异构混合内存的nvm内存擦写控制方法和系统 | |
| CN114238158A (zh) | 数据存储管理方法和存储装置 | |
| CN115599592A (zh) | 内存镜像方法及计算设备 | |
| TW202213103A (zh) | 非對稱型平面管理方法以及資料儲存裝置及其控制器 | |
| US12229408B2 (en) | Memory system and read method | |
| US20250208785A1 (en) | Storage device and operating method thereof | |
| KR101618999B1 (ko) | 네트워크 부트 시스템 |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| C06 | Publication | ||
| PB01 | Publication | ||
| SE01 | Entry into force of request for substantive examination | ||
| SE01 | Entry into force of request for substantive examination | ||
| GR01 | Patent grant | ||
| GR01 | Patent grant | ||
| TR01 | Transfer of patent right |
Effective date of registration: 20230707 Address after: 518000 1701, Yanxiang Science and Technology Building, No. 31, High-tech Middle 4th Road, Maling Community, Yuehai Street, Nanshan District, Shenzhen, Guangdong Province Patentee after: Yanxiang smart IOT Technology Co.,Ltd. Address before: 518057 Guangdong city of Shenzhen province Nanshan District high in the four EVOC Technology Building No. 31 Patentee before: EVOC INTELLIGENT TECHNOLOGY Co.,Ltd. |
|
| TR01 | Transfer of patent right |