由于闪存的可擦写次数是有限的,当某些数据被频繁修改时容易导致对应的块很快被耗尽使用寿命,从而导致整块盘无法使用,所以需要有一种技术来将这些块的擦写均摊一下,延长使用寿命。

首先看几个相关的基本概念:

因为闪存不能覆盖写,如果要修改已有的数据需要将原有的数据擦除再写入新的数据。

被频繁修改的数据很烫,叫做热数据

而写入以后就很少修改的数据无人问津就像打入了冷宫一样,叫做冷数据。

写入的最小单位叫做page,大小为 512 – 4,096 bytes

擦除(erase)的最小单位是block,包含多个page(一般为128个)

一次对磁盘完整的写入或擦除叫做一个PE cycle(Program/Erase Cycle),PE cycle表示了盘的寿命,是一个有限的值,比如3000. 注意,一个PE cycle是对整块盘的擦写来写来计算的,不是一个block的擦写。

已擦写次数较少的block,还很年轻,生命力强,所以叫做Young block。相对的 Old block就是已擦写次数较多的block,剩下的次数不多了。

NAND FLASH LAYOUT, 注意page和block就行了

闪存又贵还擦写次数那么有限的,这还怎么玩?于是有了Wear Leveling这样的技术通过磨损均衡来延长闪存的寿命。

无模糊均衡和有磨损均衡的对比

在没有wear leveling的情况下,某些block很可能会被频繁的反复擦写,最终报废,降低了闪存的寿命。Wear Leveling技术就是将擦写操作均摊到各个block,以防止某些block被提前耗尽使用寿命。

Wear Leveling技术按算法分为动态和静态,按作为域分为本地和全局:

  1. Dynamic Wear Leveling 动态磨损均衡

当需要覆盖写的时候,新的数据写到free的page上,而旧的数据被标记为invalid,等待垃圾回收擦除。

动态磨损均衡示意图

从上图中可以看出2nd WRITE失去改写LBA#6的数据,被写到了新分配的page并不是直接在原page上做修改。3rd WRITE也是同理,到Nth WRITE,数据已经被改写了N次,但是垃圾回收还没有发生,所以有很多的Invalid page。

对比上图垃圾回收的左右两个图,可以看到垃圾回收把Invalid的page都擦除了,而且数据LBA#6也被搬移到了新的block。这是因为就像开头说的,闪存擦除的最小单位是block,所以当block中有用户数据的时候是需要迁移的。

弊端:动态磨损均衡有一个明显的弊端是,当一个数据是冷数据,放在那里N久都没被修改的情况下,他所占用的block擦写次数很少,但是又不能拿来做磨损均衡。

2. Static Wear Leveling 静态磨损均衡

Static Wear Leveling 会把所有block包括没被写入和包含冷数据的block都纳入到磨损均衡中。如果冷数据是在擦写次数少的young block中,会把数据迁移到擦写次数较多的old block中。这样young block就可以放到free block池中接收新数据的写入。

静态磨损均衡示意图

动态和静态对比:

动态和静态模糊均衡对比表格

动态和静态磨损均衡作用范围对比

3. Global Wear Leveling 全局磨损均衡

动态和静态磨损均衡按照作用范围都可以分为本地和全局磨损均衡。本地(Local),只是在当前盘中均衡,而全局(Global)能够将系统中所有盘纳入均衡。

本地模糊均衡示意图

如上图,在local均衡的情况下,虽然右边的盘仍然有可用的block,但是左边的盘由于坏块太多已经进入了写保护。

全局模糊均衡示意图

同样的情况,在全局磨损均衡下,盘为统一管理,可以使用右盘的备用block替换,避免了左盘进入写保护。

静态+全局磨损均衡虽然设计更为复杂,系统开销更大,但是能对磁盘达到更好的保护,因此也是主流全闪存存储的实现方式。

NAND Flash 寿命算法——Wear leveling的更多相关文章

  1. NAND FLASH均衡算法笔记(转)

    转来一篇关于NAND FLASH均衡算法的文章,加上一点思考和笔记,认为这种思考有助于更深刻的理解,更好的记忆,所以也算半原创了吧,最起码笔记是原创的.有意思的是,帖子提起这个算法并不是因为嵌入式开发 ...

  2. NAND Flash中常用的纠错方式(ECC算法)

    Hanming,RS,BCH —— NAND Flash中常用的纠错方式 因为闪存中会有出错的可能,如果没有使用ECC模块,读出的数据和写入的数据会有不匹配的可能,也许一个文件中只有一两个bit不匹配 ...

  3. 全面理解SSD和NAND Flash

    Flash Memory又叫做闪存,是一种非易失性存储器.非易失性是指断电之后数据不会丢失,这里就涉及到断电保护(后面详细讲解). 总体思路 1.NAND Flash的用途. 2.NAND Flash ...

  4. nand flash详解及驱动编写

    https://www.crifan.com/files/doc/docbook/linux_nand_driver/release/html/linux_nand_driver.html#nand_ ...

  5. (转载)关于FLASH寿命的读写方法

    NOR(或非)和NAND(与非)是市场上两种主要的Flash闪存,sNORFLASH 和CPU之间不需要其他电路控制,NOR flash可以芯片内执行程序,而NAND FLASH 和CPU 的接口必须 ...

  6. Durable NAND flash memory management

    词条积累 1.NAND flash memory http://www.searchstorage.com.cn/whatis/word_6052.htm http://baike.baidu.com ...

  7. nor flash和nand flash的区别

    NOR和NAND是现在市场上两种主要的非易失闪存技术.Intel于1988年首先开发出NOR flash技术,彻底改变了原先由EPROM和EEPROM一统天下的局面.紧接着,1989年,东芝公司发表了 ...

  8. (三)NAND flash和NOR flash的区别详解

    我们使用的智能手机除了有一个可用的空间(如苹果8G.16G等),还有一个RAM容量,很多人都不是很清楚,为什么需要二个这样的芯片做存储呢,这就是我们下面要讲到的.这二种存储设备我们都统称为“FLASH ...

  9. NOR FLASH与NAND FLASH的区别

    NOR和NAND是现在市场上两种主要的非易失闪存技术.Intel于1988年首先开发出NOR flash技术,彻底改变了原先由EPROM和EEPROM一统天下的局面.紧接着,1989年,东芝公司发表了 ...

  10. NAND flash和NOR flash的区别详解

    我们使用的智能手机除了有一个可用的空间(如苹果8G.16G等),还有一个RAM容量,很多人都不是很清楚,为什么需要二个这样的芯片做存储呢,这就是我们下面要讲到的.这二种存储设备我们都统称为“FLASH ...

随机推荐

  1. 基于AHB_BUS的eflash控制器设计-02

    基于AHB-BUS的eflash控制器设计 1.Flash Spec 1.1 地址映射 XADR是10bit?因为一共有1024行 每一行128byte容量,每次读取的粒度就是一个double wor ...

  2. 2. 成功使用SQL Plus完成连接,但在使用Oracle SQL Developer连接时,发生报错ORA-12526: TNS:listener: all appropriate instances are in restricted mode

    经了解后得知,错误原因:ORA-12526: TNS: 监听程序: 所有适用例程都处于受限模式. 解决办法:使用系统管理员身份运行以下一段代码 ALTER SYSTEM DISABLE RESTRIC ...

  3. CSS 3D - rotate旋转90度看不到的原理 和 解决方法

    原理: 旋转元素的坐标有三个 :X(向右),   Y(向左) ,   Z(向电脑屏幕的你) 当没有位移旋转元素时,元素 Z 坐标也会同着一起旋转 ,当一个物品旋转到90度时,我们只能看到它的厚度,而d ...

  4. CSS - 工具类 tool.css

    /* flex */ .flex{     display: flex; } .f1{     flex:1 } .flex-center{     align-items: center;      ...

  5. 海思Hi35xx uboot启动分析总结

    前言 在嵌入式linux设备中,uboot的最终目的就是启动kernel.对于uboot而言,没有人把它引导起来,所以uboot首先需要把自己加载起来,然后再去引导kernel的启动,这也就可以大致的 ...

  6. [转帖]Web技术(四):TLS 握手过程与性能优化(TLS 1.2与TLS 1.3对比)

    https://blog.csdn.net/m0_37621078/article/details/106126033?ops_request_misc=%257B%2522request%255Fi ...

  7. [转帖]Linux cut命令

    https://www.runoob.com/linux/linux-comm-cut.html#:~:text=Linux%20cut%E5%91%BD%E4%BB%A4%201%20-b%20%E ...

  8. [转帖]9.2 TiFlash 架构与原理

    9.2 TiFlash 架构与原理 相比于行存,TiFlash 根据强 Schema 按列式存储结构化数据,借助 ClickHouse 的向量化计算引擎,带来读取和计算双重性能优势.相较于普通列存,T ...

  9. [转帖]python中对配置文件的读写操作

    https://juejin.cn/post/6844903586963390471 python内置的configparser模块能非常方便的对配置文件进行操作,常见的配置文件有*.ini和*.co ...

  10. [转帖]耗时几个月,终于找到了JVM停顿十几秒的原因

    https://www.cnblogs.com/codelogs/p/16060792.html   原创:打码日记(微信公众号ID:codelogs),欢迎分享,转载请保留出处. 简介# 最近我们系 ...