首页 > 编程语言 >NAND Flash 寿命算法——Wear leveling

NAND Flash 寿命算法——Wear leveling

时间:2023-03-24 13:56:09浏览次数:39  
标签:磨损 leveling 擦写 Flash NAND Wear 均衡 page block

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

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

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

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

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

写入的最小单位叫做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替换,避免了左盘进入写保护。

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

 

 

标签:磨损,leveling,擦写,Flash,NAND,Wear,均衡,page,block
From: https://www.cnblogs.com/FireLife-Cheng/p/17251323.html

相关文章

  • Ubuntu 15 安装Chromium浏览器并添加Flash插件Pepper Flash Player
    Chromium谷歌的开源浏览器将不再支持Netscape浏览器插件API,Adobe公司的Flash将无法正常工作了。然而用户可以使用PepperFlashPlayer,这是谷歌浏览器上一款替代AdobeFlash......
  • nand flash驱动
     编写NandFlash驱动由于MTD设备驱动已经帮我实现了MTD块设备、以及MTD字符设备驱动的编写。而我们要做的主要就是:分配nand_chip内存;根据SOCNand控制器初......
  • CoFlash V1.5.1,含STLINK,CMSIS-DAP等
    CoFlashV1.5.1链接:https://pan.baidu.com/s/14K3n7OseiTFgKMn5sYZ_XA?pwd=5656提取码:5656hex2bin.exe:将hex文件直接拖放到图标上即可生成bin文件链接:https://pan.baid......
  • mtk flash配置
    在mtk的flashexcel配置表中有些专业名称,在如下的文档中有详细的描写,对配置新的flash都是有帮助的一、对clock的基本认识   第七部分是“clock&powermanagement”,......
  • 2.使用flash 备份系统
    一、前言至少从solairs9开始,就已经支持系统自带的flash(闪存)来备份系统。使用flash来备份系统有以下几个好处:1、无需额外的设备,如磁带机。尤其是克服了受硬件条件的限制......
  • flashfxp文件和文件名中文乱码怎么办?【转】
    flashfxp软件集成了其它好的FTP软件的优点,支持文件夹的传输,并且能够实时记录站点密码,便于管理,但是有的用户在使用过程中发现自己的flashfxp文件显示了中文乱码,那应该怎么办......
  • vscode - create、build、flash工程
    1.创建工程CTR+SHIFT+P打开命令面板,输入ESP-IDF:ShowExamplesProjects命令创建实例工程,或者输入ESP-IDF:CreateESP-IDFproject命令创建一个模板工程。2.......
  • Nand flash基本原理
    Nandflash基本原理   Flash全名叫做FlashMemory,属于非易失性存储设备(Non-volatileMemoryDevice),与此相对应的是易失性存储设备(VolatileMemoryDevice)。......
  • KingbaseES V8R6 运维案例 --flashback drop table
    一、KingbaseESV8R6flashbackdroptable介绍使用FLASHBACK删除和恢复表删除表时,数据库不会立即删除与该表关联的空间。数据库重命名表,并将其和任何关联的对象放在回......
  • SPINAND UBI 离线烧录 开发指南
    SPINANDUBI离线烧录开发指南1概述编写目的:介绍SunxiSPINand烧写时的数据布局2名词解释词义UBIunsortedblockimagePEBphysicaleraseblock......