[发明专利]一种实现Nand Flash磨损均衡的方法及其系统有效
申请号: | 201210335273.2 | 申请日: | 2012-09-12 |
公开(公告)号: | CN102880556A | 公开(公告)日: | 2013-01-16 |
发明(设计)人: | 李红;姜旭峰;李坤;程士庆;陈浩杰;吴朝晖 | 申请(专利权)人: | 浙江大学 |
主分类号: | G06F12/06 | 分类号: | G06F12/06;G06F13/18 |
代理公司: | 杭州天勤知识产权代理有限公司 33224 | 代理人: | 胡红娟 |
地址: | 310027 浙*** | 国省代码: | 浙江;33 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 实现 nand flash 磨损 均衡 方法 及其 系统 | ||
技术领域
本发明属于存储技术领域,具体涉及一种实现Nand Flash磨损均衡的方法及其系统。
背景技术
闪存(Flash Memory)是嵌入式系统中一种常用的存储介质,它是一种非易失、防震、节能的存储设备。Nand Flash是现在市场上主要的非易失闪存芯片,其特有的结构能提供极高的单元密度,可以达到高存储密度,同时其写入和擦除的速度也较快。
一个闪存通常是由若干个闪存块(block)组成的,每个闪存块又分成若干个物理页(page)。页是写入数据的最小单位,块是擦除数据的最小单位。页内数据不能被反复写入,只有当包含该页的块被擦除后才能重新写入。而每个闪存块的擦除次数是有限制的,一般是在十万次到一百万次之间,只要其中有一个闪存块的擦除次数达到了上限,数据存储就会变得不可靠,会影响到整个闪存的寿命。
为了避免对Nand Flash某一Block的频繁读写造成该快的老化加速,目前最常用的算法是磨损均衡算法。磨损均衡包括两大类算法:
一类是针对数据写入过程中通过控制写入的物理块,动态均衡所有物理块擦除次数的动态磨损均衡算法;动态磨损均衡算法可以确保我们在分配块进行写入时采取较优的策略,实现整体上的负载均衡。可是该方法忽略了冷数据存在,如果有的块上存放着冷数据,那么该块就永远不会被擦除;
另一类是通过调整物理块上存储的数据(经常被擦写的热数据和不经常被擦写的冷数据),静态地均衡所有物理块擦除次数的静态磨损均衡算法,周期性地交换冷数据和热数据,静态磨损均衡算法解决了动态算法忽略冷数据的问题,但是频繁的调整冷热数据无疑会增加系统的开销,同时也会带来很多额外的磨损。
发明内容
针对现有技术所存在的上述技术缺陷,本发明提供了一种实现Nand Flash磨损均衡的方法及其系统,能够更好的均衡Nand Flash中各Block的擦除次数,提高Nand Flash的使用寿命。
一种实现Nand Flash磨损均衡的方法:统计Nand Flash中每个Block的擦除次数,并计算出各Block的热度;根据Block的数据存储信息以及热度将各Block分配至以下三个链表中:热数据块链表、冷数据块链表和空闲块链表;定时启动冷块处理程序;
当Nand Flash有数据写入时,以擦除次数少作为优先挑选原则,依次从空闲块链表中挑选出若干个Block,将数据写入这些Block中,并对这些Block重新分配;
当对脏块进行回收时,擦除其所存放的数据,并使其擦除次数加1,进而根据其擦除次数将脏块放入空闲块链表中相应位置;
根据公式R=D/Dmax计算Block的热度;其中,R为Block的热度,D为Block的擦除次数,Dmax为Nand Flash中擦除次数最大的Block的擦除次数。
根据以下标准对各Block进行分配:将存有有用数据且当前热度大于给定阈值的Block分配至热数据块链表中;将存有有用数据且当前热度小于或等于给定阈值的Block分配至冷数据块链表中;将未存有任何数据的Block分配至空闲块链表中且按擦除次数由少到多进行排列。
所述的脏块为Nand Flash中存有无用数据的Block。
所述的有用数据为存储在Nand Flash中未被用户删除且能被读取的数据;所述的无用数据为存储在Nand Flash中已被用户删除且不能被读取的数据。
所述的冷块处理程序为:首先,以擦除次数多作为优先挑选原则,依次从空闲块链表中挑选出n个Block,n为冷数据块链表中Block的个数;然后,将冷数据块链表中各Block上存放的数据对应复制给空闲块链表中挑选出的n个Block;最后,将冷数据块链表中各Block归为脏块并从冷数据块链表中移除,并对空闲块链表中写入数据的这n个Block重新分配。
一种用于实现上述方法的系统,包括:
热数据块链表,用于存放存有有用数据且当前热度大于给定阈值的Block;
冷数据块链表,用于存放存有有用数据且当前热度小于或等于给定阈值的Block;
空闲块链表,用于按擦除次数由少到多的次序存放未存有任何数据的Block;
统计模块,用于统计Nand Flash中每个Block的擦除次数,并计算各Block的热度;
数据写入模块,用于当Nand Flash有数据写入时,以擦除次数少作为优先挑选原则,依次从空闲块链表中挑选出若干个Block,并将数据写入这些Block中;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于浙江大学,未经浙江大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201210335273.2/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种电子碰撞电离源
- 下一篇:区熔单晶炉下轴运动机构