Yaffs2文件系统中对NAND Flash磨损均衡的改进

合集下载

基于NAND Flash存储器的磨损均衡DP算法优化

基于NAND Flash存储器的磨损均衡DP算法优化

限的(根据不同颗粒类型如 TLC/MLC/SLC等,一般几 千次到 100万次之间),如果出现块的擦除次数达到了 上限,NANDFlash的性能将大幅下降[2]。
经常使用读写的数据称为热数据,很少被读写到 的数据称 为 冷 数 据,冷 数 据 和 热 数 据 将 导 致 存 储 在 NAND介质上的数据块的读写擦除计数出现严重不平 衡。为了保持 NANDFlash性能的稳定,必须提出一种 方法使每个块的擦除操作尽可能均衡,这种方法就是 磨损均衡算法。
Chang[3]提出的双池算法是目前众多磨损均衡算 法中较为主流的算法。相比其他算法而言,该算法主 要解决了“冷 块 ”几 乎 不 被 处 理 和 磨 损 控 制 水 平 较 低
收稿日期:2018-12-16。薛镭,工程师,主研领域:嵌入式系统,电子信息。
第 6期
薛镭:基于 NANDFlash存储器的磨损均衡 DP算法优化
比如 NANDFlash一共有 1024个块,系统初始化 时,给“冷池”分 配 序 号 为 奇 数 的 块,给 “热 池 ”分 配 序 号为偶数的块如图 1所示。“冷池”NANDFlash块表 A和“热池”NANDFlash块表 B分别包含 512条表项, 每个表现有 32个字节,包含:块序号(4Bytes)+擦除 次数(4Bytes)+有效页比例(4Bytes)+修改时间(16 Bytes)+回收权值(4Bytes),则表 A和表 B大小分别 为 16KB,一共 32KB。
OPTIMIZATION OFWEAR EQUALIZATION DPALGORITHM BASEDONNANDFLASH MEMORIZER
XueLei
(715ResearchInstitute,ChinaShipbuildingHeavyIndustryGroupCorporation,Hangzhou310023,Zhejiang,China)

nand flash 磨损平衡

nand flash 磨损平衡

nand flash 磨损平衡
NAND闪存是一种常见的闪存存储器技术,用于存储数据。

由于闪存的特性,例如有限的擦写次数和擦写操作的不均匀性,会导致闪存的磨损和寿命的降低。

为了解决这个问题,NAND闪存通常采用磨损平衡技术。


损平衡是一种将数据在闪存芯片的不同区域均匀分布的技术,以避免因频繁写入某个特定块而导致该块磨损过快,而其他块使用很少。

磨损平衡的实现可以通过下述方法之一:
1. 均匀写入:将写入的数据均匀地分布在不同的闪存块中,以确保所有块平均地进行擦写和写入操作。

2. 数据迁移:定期检查闪存芯片中的数据使用情况,并将很少使用的块中的数据迁移到其他块中,以确保所有块都能均匀地使用。

通过这些磨损平衡技术,可以延长NAND闪存的使用寿命,
并提高其可靠性和性能。

磨损均衡算法在NAND Flash管理中的改进

磨损均衡算法在NAND Flash管理中的改进

磨损均衡算法在NAND Flash管理中的改进
潘沁;周新志;魏刚
【期刊名称】《微计算机信息》
【年(卷),期】2007(000)03S
【摘要】由于Flash具有擦除次数有限、先擦后写的特点,会带来使用寿命有限的缺陷。

为延长其预期使用寿命,普遍采用磨损均衡算法对各存储单元进行管理。

该算法核心在每次写操作时将新数据写入到最少被使用的物理块中。

本文对该算法在垃圾回收策略和对静态文件管理方式做出改进。

垃圾回收时在遵照磨损均衡原则的前提下提高写入数据效率,同时增强该算法对不同类型的文件存储单元管理能力,从而达到更加有效的磨损均衡。

【总页数】3页(P301-302,292)
【作者】潘沁;周新志;魏刚
【作者单位】四川大学电子信息学院,四川成都610061;中电科技集团第三十研究所,四川成都610041
【正文语种】中文
【中图分类】TP311
【相关文献】
1.Yaffs2文件系统中对NAND Flash磨损均衡的改进 [J], 温朝建;严华
2.基于区域地址映射的NAND Flash静态磨损均衡算法 [J], 王冬;杨琼;徐晓光
3.基于贪婪策略的NAND FLASH存储器的磨损均衡算法研究 [J], 贾鑫;张少平
4.磨损均衡算法在NAND Flash管理中的改进 [J], 潘沁;周新志;魏刚
5.基于NAND Flash存储器的磨损均衡DP算法优化 [J], 薛镭
因版权原因,仅展示原文概要,查看原文内容请购买。

深入理解yaffs2文件系统(一)

深入理解yaffs2文件系统(一)

深⼊理解yaffs2⽂件系统(⼀)深⼊理解yaffs2⽂件系统(⼀)1、Flash⽂件系统1.1、背景已经有多种flash⽂件系统(FFSs)或flash块驱动(在之上运⾏⼀个常规的FS),同时都有优点或缺点。

Flash存储器有⾮常多的限制,这⾥就不⼀⼀列举了。

已经有各种⽅法解决这些限制,以提供⼀个⽂件系统。

必须认识到,“flash”,包括NOR和NAND,各⾃有不同的限制。

很容易被专业术语“flash”误导,误以为⽤于NorFlash的⽅法也⽴即适⽤于NandFlash。

Nand块驱动⼀般采⽤FAT16作为⽂件系统,但不够健壮,也不够贴近Flash的特性。

这些块驱动通过⼀个“本地--物理”的映射层来仿真可写的、类似于磁盘扇区的块。

当使⽤FAT16时,这些⽂件系统⼯作的相当好,它们内存消耗⼩,代码尺⼨也很⼩。

但就像所有基于FAT 的系统⼀样,它们很容易损坏(如,丢失簇)。

其他的途径则是设计整个⽂件系统,不是基于块驱动,⽽且是flash友好的,这允许更多的余地来解决上述所提到的问题。

当前有两个linux⽂件系统能⾮常好的⽀持NorFLash,那就是JFFS以及它的升级版本JFFS2。

这两者都提供⽇志机制,⼤⼤的提升了健壮性,这也是嵌⼊式系统特别重要的⼀个特性。

不幸的是,它们在RAM消耗和启动时间⽅⾯都不是很好。

JFFS在flash中的每⼀个journalling⽇志节点,需要⼀个基于RAM的jffs_node结构,每⼀个节点为48字节。

JFFS2做了⼀个⼤改进,通过剪裁相关的结构体(jffs2_raw_node_ref)⽽减少到16字节。

即使如此,在512字节页⼤⼩128M的NandFlash,按平均节点⼤⼩来算,也需要250000字节约4M⼤⼩。

JFFS和JFFS2在启动时,需要扫描整个flash阵列来查找journaling节点,并决定⽂件结构。

由于NAND容量⼤、慢、连续访问、需要ECC校验,这些特性将导致不可接受的、很长的启动时间。

基于嵌入式Linux的YAFFS2文件系统研究与改进

基于嵌入式Linux的YAFFS2文件系统研究与改进

义都 是不 同 的。这 样改 进方 法的好 处在 于数 据 区的页码 更加
分 明,用户 可 以根 据文 件名 头进 行搜索 ,并通 过信 息 的拷 贝
二 、YAF F S 2文 件 系 统 分 析
( 一) N A N D存 储器 管理 。N A N D存 储器 管理是 Y A F F S 2 文 件系统 中的一部 分 ,也体 现了结构规划 的整体 过程。首 先 , 在L i n u x 嵌人 模块 中通 常会有存储 器的放置空 间。系统会根据 现 有 的操作 流程 规划信 息 的存 放位 置 ,并在 文件 的 “ 只读 ”
研 究 和 改进 。
关键 词 :L i n u x 嵌入 式 ;YA F F S 2 文件 ;系统研 究 ;改进


Y AF F S2文 件 系 统概 述
令将 创 建者 姓名 、访 问次数 、利用权 限 、数据地 址 、存储 容
想 要对 系统进行研究和 改进 , 就要充分 了解 其基本 内容 。
参考文 献
f 1 ] 查启 鹏 姚 国 良 , 张萌 . 嵌入式 L i n u x下 大容 量 Na n d F L A S H 的 Y AF F S 2文件 系统 构 建 卟 现 代 电 子技 术 , 2 0 0 7 ( 1 8 ) .
模 式 ,系统会 从加 载 区 中挑 选一部 分 文件 ,并设定 结构 扩充 模 型 ,使 文件 名与作 。系统也 会根 据文 件 的名字 来来创 建产 品 目录 ,将 用户 的信 息进行 解读 。其次 ,N A N D存储器 是 F 1 a s h文件 中心 的一 部 分。存储 区一般 以扇 形进 行分布 ,管 理平 台会将 文件 内容
按 照页 码和 容量来 规划 ,并 在数据 读取 完成后 对每 一部 分做 好标 记 ,以清 空 的方法擦 掉 无用 的信息 ,以达到合 理分 配 的 目的。为 了使信 息得 到 良好 的疏通 ,保证 数据 的安 全性 。在 每次 文件 的读 取时 ,操作 人员 都要 输入 验证 码 ,来 根据存 储

FAT文件系统在NANDFlash存储器上的改进设计

FAT文件系统在NANDFlash存储器上的改进设计

paper @ (投稿专用) 2006年第11期Microcontrollers &Embedded Systems 27 F A T文件系统在N A N D F l a s h存储器上的改进设计※■北京交通大学 阎航 摘 要嵌入式系统的大量数据都存储在其Flash 芯片上。

根据Flash 器件的固有特性,构建一个适合管理NAND Flash 存储器的FA T 文件系统,并阐述具体的设计思想。

该系统改进了FA T 表和FR T 表的存储方式,延长了存储器的使用寿命,提高了稳定性。

 关键词NAND Flash 存储器 FA T16文件系统 FA T 表 FRT 表 NAND Flash 存储器是一种数据正确性非理想的器件,容易出现位反转现象,同时在使用中可能会有坏损单元。

数据写入必须在空白的区块或者擦除后的区块中进行,其底层技术要求以块为单位进行擦除(将“0xff ”写入到要擦除的存储块中),再按页写入。

Flash 存储器的擦除次数是有限的,一般是1000000次。

当某块执行过度的擦除操作后,这一块的存储空间将会变为“只读”状态,不能再写入数据。

根据以上特点,为了避免某些块的过度操作,而导致存储卡使用寿命降低,设计专门针对Flash 存储器的文件系统是必要的[1]。

1 NAND Flash 存储器的特点NAND Flash 存储器的读取操作与普通SRAM 存储器类似,可以随机读取,读出的速度也很快。

芯片生产厂商规定存储空间的第1块必须是有效块,装载了出厂标识、系统配置等信息;而其他块可能在使用前就是坏块,需要在初次使用时进行坏块检测并标记,禁止数据写入。

由于存储器每一块的内部结构都是相互独立的,坏块并不影响系统的操作[2]。

在设计NAND Flash 文件系统前,首先要了解其内部结构。

目前市面上的NAND Flash 芯片单片容量已高达1G B ,存储器容量最高达4G B (由4片1G B 的芯片封装而成)。

yaffs2文件系统工具mkyaffs2image

yaffs2文件系统工具mkyaffs2image

yaffs2⽂件系统⼯具mkyaffs2imageyaffs2⽂件系统是针对nandflash的⽂件系统,其制作⼯具为mkyaffs2image。

⼀、差异不同nand容量,⼯具不⼀样。

⾸先使⽤的是mkyaffs2image,编译⽣成根⽂件系统的镜像之后,下载到板⼦上,启动的时候报错,错误代码这⾥没有上传。

问题出在⼯具使⽤的不正确,查看⼯具⽬录下,发现有mkyaffs2image-128M⼯具,于是在⽹上查阅了⾸先采⽤的mkyaffs2image和mkyaffs2image-128M的区别,发现这对不同的板载nand flash容量,使⽤不同的⼯具制作根⽂件系统。

查看了⾃⼰使⽤的友善之臂板⼦上使⽤的nand flash是256M的,于是果断使⽤mkyaffs2image-128M⼯具制作根⽂件系统。

因为mkyaffs2image-128M针对128M或者更⼤的容量。

⼆、编译If you want to use GIT directly from the command line then public read-only access is available, using the (bash) command:git clone git:///yaffs2mkyaffs2image是在yaffs⽂件系统的utils⽬录下,只把其中的chunkSize spareSize 与 pagesPerBlock⼏个变量,按照nand_flash中的改⼀下就可以⽤。

// Adjust these to match your NAND LAYOUT://#define chunkSize 8192//#define spareSize 232#define chunkSize 4096//#define spareSize 218#define spareSize 128#define pagesPerBlock 128三、使⽤1、验证是否成功可直接在终端下输⼊:mkyaffs2imagemkyaffs2image: image building tool for YAFFS2 built Jul 92009usage: mkyaffs2image dir image_file [convert]dir the directory tree to be convertedimage_file the output file to hold the image'convert' produce a big-endian image from a little-endian machine注意核对convert的⼤⼩端。

Yaffs2文件系统中NAND Flash块选择策略的改进

Yaffs2文件系统中NAND Flash块选择策略的改进

Yaffs2文件系统中NAND Flash块选择策略的改进杨智;严华【摘要】针对Yaffs2文件系统中块选择策略引起的Nand Flash磨损均衡方面的缺陷,引入文件更新和块回收热度计算,将不同热度的文件分离到对应热度的物理块中,来改进空闲块选择策略.同时引入分散度和磨损度判断机制,通过在不同情况下选择最有效的回收块选择策略进行垃圾回收,以提高磨损均衡效果.实验使用QEMU 搭建嵌入式Linux仿真环境,从垃圾回收页拷贝次数、块总擦除次数、块最大擦除次数、块擦除次数最大差值、块擦除次数标准差等方面进行性能比较,仿真实验结果表明,改进策略能大大提高Yaffs2垃圾回收效率,并能有效提升磨损均衡效果,延长Nand Flash设备的使用寿命.【期刊名称】《四川大学学报(自然科学版)》【年(卷),期】2016(053)006【总页数】5页(P1278-1282)【关键词】Yaffs2文件系统;NAND Flash;块选择;垃圾回收;磨损均衡【作者】杨智;严华【作者单位】四川大学电子信息学院,成都610065;四川大学电子信息学院,成都610065【正文语种】中文【中图分类】TP316Nand闪存设备正成为一个最有前途的存储介质[1],其具有很多优良的特性,比如数据访问速度快、存储密度高、耐冲击性强、功耗低、噪音小、价格低等,使之广泛应用于笔记本电脑、智能手机和平板电脑等消费类电子产品[2].基于Nand Flash的固态硬盘在移动终端的应用也越来越广,其不仅可以部分或全部替换硬盘的数据存储功能,还可以替换一些主存和缓存功能模块[3].Nand闪存设备具有一定的存储空间,这些空间是由有限个物理块组成[1],每个块包含一定数量的数据页,且Nand Flash的擦除操作是以块为单位,数据读写操作是以页为单位.物理块按照块中数据存储状态可分为三种[4]:(1) 有空闲空间可供数据写入的块,称为空闲块;(2) 块空间已满且各个物理页数据均有效的块,称为满块;(3) 块空间已满但包含若干无效物理页的块,称为脏块.为保证数据可靠性,Nand Flash设备采用异地更新策略[5],即当某物理页数据需要更新时,系统将该物理页数据读取到内存中,在内存中修改完毕之后将更新后的数据写入到新分配的物理页中,而原物理页被软删除.YAFFS2文件系统的Nand Flash存储体系主要包括虚拟文件系统(Virtual File System)、Yaffs2文件系统、MTD驱动和Nand Flash存储设备.其中,VFS向上为用户应用程序提供标准的操作接口,向下整合不同文件系统的物理接口.MTD为底层存储设备提供统一的读写操作接口,使Yaffs2文件操作作用于Nand Flash设备上.Nand Flash存储系统体系结构如图1所示.目前针对Yaffs2文件系统中闪存设备应用的改进主要集中于NAND Flash物理层面的垃圾回收策略改进,比如文献[6]中通过引入温度概念对垃圾回收策略进行改进,但并没有考虑用户实际操作的数据源的逻辑热度.而本文通过引入新的热度计算方法,对Yaffs2文件系统中的文件更新热度和物理块回收热度进行计算,并将热度计算结果应用于文件系统中空闲块选择和垃圾块选择,不仅考虑数据源更新热度,还考虑物理设备读写热度,实现文件系统中数据逻辑热度和物理热度的结合.Yaffs2文件系统中,Nand Flash闪存设备磨损均衡效果的不足,主要是由两种应用机制引起的,一是空闲块选择机制,另一个是回收块选择机制.Yaffs2中空闲块选择策略是通过顺序遍历Nand Flash中的物理块,选取其中有剩余空闲页的块作为将要写入的数据的存储载体.当系统在更新文件或者回收某个块时,需要将有效数据写入到一个有剩余空闲页的块中,直到该块的存储空间填满为止.但是若剩余有效数据不足以填满物理块时,物理块剩余存储空间将由下一次需要操作的数据填充,这就会造成一个块中存在不同更新频率的数据.由于更新频率高的数据快速更新时会导致更新频率低的数据被迫更新,在这种空闲块选择策略下可能再次将不同更新频率的数据存放到同一物理块中,随着这种更新方式不断进行,将导致一系列不必要的数据读、写以及块的擦除操作[6].Yaffs2中回收块选择主要是通过贪心策略(GR)来选取脏块中有效页最少的物理块作为垃圾回收块.贪心策略在均匀访问时效果较好,但是在有较高访问局部性时性能很差,尤其在空间负载较高且数据更新较频繁的情况下,剩余的空闲块将反复的被选中写入和擦除,造成物理块擦除次数急剧增加,垃圾回收性能急剧下降进而影响写入速率[7].垃圾回收的直接目的是释放尽可能多的存储空间,所以Yaffs2中优先选择无效页最多的块作为垃圾回收,但这样会影响Nand Flash设备整体的磨损均衡.从提高损耗均衡性能的角度看,垃圾回收应首先选择擦除次数最小的块,但这样可能会增加擦除次数,增大系统消耗,降低写入数据的速度[8],所以需要在Yaffs2中采用高效的空闲块选择策略和垃圾回收策略,在保证回收效能的情况下,尽可能提升磨损均衡效果.3.1 文件和回收块热度计算Yaffs2文件系统进行数据更新时,采用的是异地更新的策略[5],文件被当做系统读写操作的整体,其操作过程隐含了文件更新的频繁程度信息,因此可以选择将文件作为热度计算的对象,根据其更新时间间隔来表示文件更新操作的热度.另外,系统进行垃圾回收时,是直接以物理块为对象进行回收,每个块被回收的时间间隔和次数在不同系统负载情况下的表现均不同,为统一定量物理块更新频繁度,这里选择将物理块作为热度计算的对象,通过物理块被回收时的时间间隔计算块回收操作的热度,来体现块被回收的频繁度.下面结合操作的时间局部性[4],对系统中文件更新和块回收操作引入热度的概念T.3.2 空闲块选择策略改进当系统中有文件执行更新操作时,需要从Nand Flash存储空间中找寻合适的空闲块,将新文件写入.对于Yaffs2文件系统中空闲块选择的缺陷,可以通过选取热度对应的块来解决.改进的空闲块选择策略:根据修改或更新的文件的热度,选择热度最小或者热度最大的空闲块作为新文件将要写入的物理存储空间.即如果文件本次更新,通过热度计算公式所得热度值大于Tfreq,则选择热度最小的空闲块作为写入对象,反之,选择热度最大的空闲块,保证热数据存放到冷操作块中,冷数据存储到热操作块中,以提高物理块擦写的磨损均衡效果.3.3 回收块选择策略改进针对Yaffs2回收块选择策略的改进,是通过引入分散度和磨损度判别机制[1]来提高Nand Flash的空间利用率和磨损均衡效果.分散度,定义为Flash存储空间中,所有空块包含的空闲页占所有空闲页的比重,公式如下.定义物理块的最大最小擦除次数之差为磨损度,公式如下.由于最小更新频率的块被选中作为回收块的可能性很小,会造成不好的均衡效果,所以再引入一个有效的回收块选择策略:选择擦除次数最小且同等擦除次数下有效页最少的块.当最近一段时间内块的擦除次数超过Te时,启用该策略.Te的值在每次启用该策略时更新,以供下次使用.当上述两种判别机制其中一种满足时,按照其对应的垃圾回收策略选择回收块.当两种判别机制均满足时,优先选择磨损度回收策略,否则暂不进行垃圾回收.4.1 实验设置本文主要对Yaffs2文件系统原策略和改进策略进行实验比较,实验环境是在Linux 12.04 LTS下使用QEMU建立的嵌入式Linux仿真环境,测试使用一系列随机生成的大小在16~1024 KB的文件,在Nand Flash 90%的空间利用率下,更新其中15%的数据.仿真实验各项参数和改进策略各项阈值设置如表1所示.性能度量采用的指标主要是垃圾回收页拷贝次数、块总擦除次数、块最大擦除次数、块擦除次数最大差值、块擦除次数标准差.4.2 实验结果图2和图3显示Yaffs2文件系统Nand Flash块选择策略改进前和改进后垃圾回收页拷贝次数和块总擦除次数的测试结果,展示垃圾回收机制的回收性能,可以发现改进后的回收效能优于改进前一倍左右.图4~图6分别展示块最大擦除次数、块擦除次数最大最小差值和块擦除次数标准差,反映闪存块磨损均衡效果.可以发现改进前Nand Flash中数据更新是在少部分块中进行的,造成闪存设备磨损均衡效果很差,而改进后的策略中,Nand Flash数据更新是在大部分块中进行的,使得各个物理块的擦除次数十分接近,均衡效果优良.并且从图6实验结果中可以发现,随着擦除次数的增加,改进后的方法对应的块擦除次数标准差基本保持在一个较小的常量,远低于改进前的擦除次数标准差.本文提出的对Yaffs2文件系统的改进策略具有很好的磨损均衡效果,是因为改进策略结合文件更新热度与空闲块热度进行判断,并将更新频繁的文件写入到回收操作不频繁的物理块中,将更新频率较低的文件保存到经常被回收的块中,通过将不同热度的文件分离到对应热度的物理块中,有效地阻止热块继续被擦除,并使冷块得到及时的更新.另外,改进策略还引入分散度和磨损度判断机制,在不同情况下选择最有效的回收块选择机制进行垃圾回收,保证良好的磨损均衡效果.由于闪存设备擦除寿命有限,且当一个物理块损坏后,将不能继续使用,导致设备可用空间逐渐减少.在闪存设备操作中,理想情况下的页写入操作次数theo_writes 等于总的页写入次数(n_page_writes)减去总的页读取次数(n_page_reads),而实际情况下,每次写入数据都将带来额外的操作代价,这里引入theo_writes/n_page_writes表示闪存存储操作中理想写操作占据的比重,构建Nand Flash设备使用寿命计算公式:本文针对Yaffs2文件系统中Nand Flash的操作特性,从三个方面对Yaffs2文件系统进行改进:一是引入文件更新和块回收热度计算,二是空闲块选择策略改进,三是使用分散度和磨损度双重判别选择适合的垃圾回收策略,实现文件系统中逻辑热度和物理热度的结合.仿真实验表明,在改进后的Yaffs2文件系统中,Nand Flash块擦除次数大大减少,磨损均衡效果得到明显的提升,并且有效的延长Nand Flash设备的使用寿命.【相关文献】[1] Yan H, Yao Q. An efficient file-aware garbage collection algorithm for NAND flash-based consumer electronics[J]. IEEE Trans Consumer Electron, 2014, 60 (4): 623.[2] Li H L, Yang C L, Tseng H W. Energy-aware flash memory management in virtual memory system [J]. IEEE Trans VLSI Syst, 2008, 16 (8): 952.[3] Sun C, Arakawa A, Takeuchi K. SEA-SSD: a storage engine assisted SSD with application-coupled simulation platform [J]. IEEE Trans Circuits and System, 2015, 62 (1): 120.[4] 胡志刚, 蒋湘涛, 贺建飚. 考虑操作时间局部性的NAND闪存脏块回收算法 [J]. 小型微型计算机系统, 2008, 29 (10): 1925.[5] 黄德才, 邢春波, 吕莲.闪存磨损均衡算法综述[J]. 浙江工业大学学报, 2009, 37 (1): 73.[6] 温朝建, 严华. Yaffs2文件系统中对NAND Flash磨损均衡的改进 [J]. 电子技术应用, 2015, 41(6): 16.[7] 时正, 纪金松, 陈春兰. 一种基于差分进化的Flash文件系统垃圾回收算法 [J]. 电子学报, 2011, 39 (2): 280.[8] 朱念好, 周玉洁. Flash文件系统及存储管理技术研究与实现 [J]. 计算机工程与设计, 2010, 31 (3): 511.。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Yaffs2文件系统中对NAND Flash磨损均衡的改进摘要:针对以NAND Flash为存储介质时Yaffs2文件系统存在磨损均衡的缺陷,通过改进回收块选择机制,并在数据更新中引入冷热数据分离策略,从而改善NAND Flash的磨损均衡性能。

实验借助Qemu软件建立Linux嵌入式仿真平台,从总擦除次数、最大最小擦除次数差值和块擦除次数标准差等方面进行对比。

实验结果表明,在改进后的Yaffs2文件系统下NAND Flash的磨损均衡效果有明显提升,这有益于延长NAND Flash的使用寿命。

关键词: Yaffs2文件系统;NAND Flash;垃圾回收;冷热数据0 引言NAND Flash存储设备与传统机械磁盘相比,具有体积小、存储密度高、随机存储和读写能力强、抗震抗摔、功耗低等特点[1]。

它被广泛用于智能手机、车载智能中心、平板电脑等智能终端中。

近年来,以NAND Flash为存储介质的固态硬盘也得到越来越多的应用。

目前Yaffs2文件系统(Yet Another Flash File System Two,Yaffs2)[1]是使用最多、可移植性最好的专用文件系统,在安卓、阿里云OS、Linux等嵌入式系统中都有使用。

在Yaffs2文件系统下以NAND Flash为存储介质时存在磨损均衡的缺陷,可通过对回收块选择机制作改进和引入冷热数据分离策略来提高磨损均衡的效果。

1 Yaffs2和Nand Flash关系这里以使用最多的Linux操作系统为实践,将Yaffs2文件系统移植到Linux操作系统中。

Linux系统通常可以分为3层:应用层、内核层和设备层,其中支持NAND Flash设备的Yaffs2文件系统属于内核层,。

最上层用户应用程序通过VFS(Virtual File System)提供的统一接口,将数据更新等文件操作传递给Yaffs2。

VFS代表虚拟文件系统,它为上层应用提供统一的接口。

有了这些接口,应用程序只用遵循抽象后的访问规则,而不必理会底层文件系统和物理构成上的差异。

然后Yaffs2通过MTD(Memory Technology Device)提供的统一访问接口对NAND Flash进行读、写和擦除操作,从而完成数据的更新或者存储操作。

MTD代表内存技术设备,它为存储设备提供统一访问的接口。

最终,在NAND Flash上以怎样的格式组织和存储数据由Yaffs2文件系统决定。

NAND Flash由若干块(block)组成,每个块又是由若干页(page)组成,页中含有数据区和附加区。

NAND Flash的页根据状态不同,可以分为有效页、脏页、空闲页。

有效页中存放有效数据,脏页中存放无效数据,空闲页是经过擦除后可以直接用于写入数据的页。

NAND Flash在写入数据前需要执行擦除操作,因此数据不能直接在相同的位置更新。

当一个页中数据需要更新时,必须将该页中有效数据拷贝到其他空闲页上再更新,并将原来页上的数据置为无效。

随着时间的推移,许多无效页累积在存储器中使得空闲页逐渐减少。

当存储器中的空闲空间不足时,启动垃圾回收操作,利用回收块选择机制从待回收块中选取满足要求的块来擦除,从而得到足够的空闲空间。

NAND Flash中块的擦除次数有限,通常为10 000次~100 000次[2]。

当某个块的擦除次数超过使用寿命时,该块将无法正常用于数据存储。

因此,垃圾回收应利用合理的回收块选择机制,从待回收块中找到回收后能产生良好磨损均衡效果且付出较少额外代价的块来回收,从而获得足够的空闲空间用于数据更新操作。

2 Yaffs2在磨损均衡方面的缺陷Yaffs2中回收块的选择机制[3]是从待回收块中找到有效数据最少的块来回收。

回收过程中,Yaffs2能够减少有效数据的额外读和写操作。

当数据更新处于均匀分布的情况下,Yaffs2表现出较好的磨损均衡效果。

但是,通常情况下数据的更新频率不同,有些数据经常更新,而有些数据很少更新。

经常更新的数据称为热数据,很少更新的数据称为冷数据[1]。

如果某个块上总有热数据不断更新,那么该块上有效数据会变少,Yaffs2容易选中这样的块来更新。

而当某个块中含大量有效冷数据时,冷数据少更新的特点使得Yaffs2难以选中这类块来更新。

更新后的块会用于存放新写入的数据,而新写入的数据通常是热数据,由此可知热数所在块会经常被更新。

最终热数据所在的块成为擦除次数多的块,冷数据所在的块成为擦除次数少的块。

因此Yaffs2的回收块选择机制会造成NAND Flash设备中块的擦除次数呈两级分化,即块的最大、最小擦除次数差值不断变大。

所以Yaffs2中不应只考虑数据更新所产生的额外读写代价,还应考虑块的存在年龄对磨损均衡效果的影响,这才能解决磨损均衡中两级分化的问题。

Yaffs2文件系统中更新某个块时,需将该块上的剩余有效数据拷贝到其他空闲块上。

而剩余有效数据不能占满整个块,系统会将新写入的数据继续存放到该块上,直到它的存储空间用完为止。

更新过程中保留下来的数据通常是冷数据,而新写入的数据通常是热数据,因此Yaffs2的更新策略会造成冷数据和热数据同时存储在一个块中。

由于热数据的更新速度快,当热数据更新时会导致冷数据被迫更新。

但更新后剩下的数据同样不能占满一个整块,系统会再次将冷数据和热数据存放到同一个块中。

随着以上的更新方式不断进行,将导致一系列不必要的数据读、写以及块的擦除操作。

因此Yaffs2的更新策略会使冷热数据共存的块易被多次更新,而冷数据占据的块很少更新,最终使得块擦除次数标准差过大,导致磨损不均衡。

由于Yaffs2的更新策略中没有做冷热数分离,这使得磨损不均衡问题难以解决。

3 Yaffs2的改进方法3.1 回收块选择机制的改进对于Yaffs2回收块选择机制的缺陷,可以通过加入块的年龄(age)参数[4]解决。

增加age参数后的回收块选择机制遵循式(1),这可以将一些长期不更新的块选中更新。

其中,age指块从分配开始到当前垃圾回收时刻为止的年龄,u表示单个块中有效数据的占有比率。

新的回收块选择机制选取当前时刻年龄最大且有效数据占有最少(即benefit/cost比值最大)的块作为回收对象。

当一个块上存储的是冷数据时,一定时间后该块没有被更新,那么它的age参数会变得很大。

尽管该块上有效数据很多(即(1-u)/2u的比值较小),但age参数很大使得benefit/cost的比值足够大,最终会选中被冷数据占据的块来更新。

由此可知引入age参数后,能解决Yaffs2文件系统下NAND Flash中最大、最小擦除次数差值过大的磨损均衡问题。

3.2 增加冷热数据分离策略对于Yaffs2中数据更新的缺陷,可以引入冷热数据分离策略[5]来解决。

冷热数据分离策略能够收集冷数据,解决同一个块中存放不同温度数据时,由于热数据更新而强制更新冷数据的问题。

在系统运行过程中检测到块的最大、最小擦除次数差值过大时,将收集到的冷数据用数据交换操作放置到擦除次数多的块上。

当冷池中块被热数据占据或者热池中块被冷数据占据时,冷热数据分离策略也能处理这类块反转问题。

数据的冷热程度对块的擦除次数会产生直接影响,因此冷热数据分离策略通过块擦除次数来判断数据温度。

改进步骤如下: (1)初始化:将NAND Flash中的所有块平均分为两个部分,一部分块放到热池中,另一部分块放到冷池中。

(2)数据交换:找出热池中擦除次数最多(Hottesthp)的块,冷池中擦除次数最少(Coldestcp)的块。

当Hottesthp减去Coldestcp之差大于一个阈值时(如式(2)),则需要做数据交换操作。

数据交换操作是将擦除次数为Coldestcp的块中收集的冷数据拷贝到擦除次数为Hottesthp的块中,将擦除次数为Hottesthp的块上原来的热数据存放到任意其他空闲块上。

数据交换操作的目的是将冷数据放到擦除次数最多的块上,利用冷数据不易更新的特点来减少块的继续擦除;而将新写入的数据存放到擦除次数少的块上,最终达到磨损均衡的目的。

(3)块反转:当热池中某个块被冷数据突然占据时,导致该块中的冷数据无法用于数据交换操作。

这需要找到热池中擦除次数最多(Hottesthp)的块和热池中擦除最少(Coldesthp)的块,二者擦除次数之差小于一个阈值时(如式(3))则进行热块反转操作。

热块反转操作,将热池中擦除次数最少的块放到冷池中去。

另外当冷池中的某个块数据突然变热时,导致该块不能被数据交换操作降温。

这需要用该块的eec参数来判别,eec表示有效擦除周期(块改变所属池后的擦除次数)。

因此满足式(4)时,进行冷块反转操作。

冷块反转操作是将冷池中擦除次数为Hottesteec的块放到热池中,并把该块的eec参数清零。

4 仿真实验4.1 实验环境实验环境是通过Vmware工具安装Linux虚拟机,然后在Linux下安装Qemu工具来搭建仿真实验开发板,并移植Yaffs2文件系统。

为了公平测试,关闭Yaffs2自带的缓存功能。

用于测试的文件大小是从16 KB~1 024 KB随机生成,测试数据占据整个Flash设备容量的90%,其中仅有15%的数据更新,这样的更新操作满足齐夫分布(Zif)[6]。

实验中NAND Flash总容量是64 MB,共有512个块,每个块含64个页,每个页大小是2 048 B。

试验中Th阈值选定为8。

4.2 实验结果实验对比数据包含:总擦除次数、最大与最小擦除次数差值和块擦除次数标准差。

总擦除次数的差异表示额外付出的擦除代价,最大与最小擦除次数差值的差异表示磨损均衡中两级分化情况。

块擦除次数标准差随擦除次数增长越快,则表示闪存设备中的数据更新是在少部分块中完成(表示磨损均衡效果差);块擦除次数标准差随擦除次数增长缓慢,则表示数据更新是在大部分块间交替完成(表示磨损均衡效果好)。

因此,块擦除次数标准差随擦除次数的变化情况能直接反应磨损均衡的效果。

改进前后总的擦除次数对比图,可以看到改进后相较于改进前额外付出了 4.05%的擦除代价。

额外增加擦除代价足够小,这样的开销可以接受。

改进前后最大、最小擦除次数差值对比图,可以看到改进后的磨损均衡情况更好。

改进前后块擦除次数标准差对比图,可以看到随着擦除次数的增加,改进后块擦除次数标准差增长的速度远小于改进前。

在改进后的Yaffs2文件系统下,块的最大、最小擦除次数差值减少为改进前的1/4,。

这表明在回收块选择机制中加入块的年龄参数后,被冷数据占据的块能够及时得到更新,使得NAND Flash设备中的块可以更加均匀地参与擦除操作。

另外引入冷热数据分离策略后,随着擦除次数增加,块擦除次数标准差增加得更缓慢,。

这说明将冷数据拷贝到擦除次数多的块上,这样的数据交换方法能有效阻止块继续擦除。

相关文档
最新文档