Yaffs2文件系统中对NAND Flash磨损均衡的改进
- 格式:doc
- 大小:12.76 KB
- 文档页数:4
nand flash 磨损平衡
NAND闪存是一种常见的闪存存储器技术,用于存储数据。
由于闪存的特性,例如有限的擦写次数和擦写操作的不均匀性,会导致闪存的磨损和寿命的降低。
为了解决这个问题,NAND闪存通常采用磨损平衡技术。
磨
损平衡是一种将数据在闪存芯片的不同区域均匀分布的技术,以避免因频繁写入某个特定块而导致该块磨损过快,而其他块使用很少。
磨损平衡的实现可以通过下述方法之一:
1. 均匀写入:将写入的数据均匀地分布在不同的闪存块中,以确保所有块平均地进行擦写和写入操作。
2. 数据迁移:定期检查闪存芯片中的数据使用情况,并将很少使用的块中的数据迁移到其他块中,以确保所有块都能均匀地使用。
通过这些磨损平衡技术,可以延长NAND闪存的使用寿命,
并提高其可靠性和性能。
磨损均衡算法在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⽂件系统(⼀)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校验,这些特性将导致不可接受的、很长的启动时间。
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⽂件系统⼯具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磨损均衡方面的缺陷,引入文件更新和块回收热度计算,将不同热度的文件分离到对应热度的物理块中,来改进空闲块选择策略.同时引入分散度和磨损度判断机制,通过在不同情况下选择最有效的回收块选择策略进行垃圾回收,以提高磨损均衡效果.实验使用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.。
基于NAND闪存的YAFFS2文件恢复技术研究作者:范道睿李平安来源:《电子技术与软件工程》2016年第04期摘要随着经济及技术的迅猛发展,智能移动终端应用逐步普及,NAND闪存技术取得了长足的发展,基于NAND闪存的YAFFS2数据恢复技术显得日益重要。
本文主要从YAFFS2简介入手,重点对文件恢复技术进行了分析和阐述,并有针对性地进行模拟实验分析,以供同行参考。
【关键词】NAND 闪存 YAFFS2 文件恢复1 引言NAND闪存与以往磁存储器比较,其在硬件上具有耐擦写次数低且不支持异地存储等特点;在软件上则具有磨损均衡、按块擦写以及垃圾回收等特殊性能。
就目前而言,普遍使用的Android智能手机,其内核存储器采用的就是基于NAND闪存的YAFFS2数据恢复技术。
2 YAFFS2简介2.1 NAND闪存2.1.1 物理特性NAND拥有质量轻、功耗低、存储成本低等优势,常被用于手机、数码相机等移动设备领域。
同时,NAND闪存具有未被擦除和擦除两个状态,且属于非易失性存储器,即便是掉电后仍能够对内部存储数据加以保存。
2.1.2 逻辑结构由小到大,NAND闪存的逻辑结构依次排列为页、块、可擦除区域。
一般来说,块是可擦除的最小单位(由32或者64个页组成),多个可擦除块可以组成一个可擦除区域(256或者1024个块组成)。
每个NAND闪存的存储能力决定了其包含块的数目。
2.1.3 操作特性通常情况下,可在NAND闪存中分别进行对块擦除操作、写操作以及对单页面进行读操作等三种操作方式,其中以单页面读的操作速度最快。
同时,为有效延长NAND闪存的使用寿命,通常会使用磨损均衡机制。
2.2 YAFFS2文件系统就目前而言,1KB或者2KB页面大小的闪存为YAFFS2的主要服务对象。
加上当前NAND对一次性写入有着较高的要求,因此YAFFS2中已删除标志位已经被淘汰。
与传统的YAFFS1比较,YAFFS2具有较大的容量,且具有较为先进的文件存储方式。
第31卷第3期2017年9月南华大学学报(自然科学版)J o u r n a l o fU n i v e r s i t y o f S o u t hC h i n a (S c i e n c e a n dT e c h n o l o g y)V o l .31N o .3S e p.2017收稿日期:2017-09-16基金项目:安徽省重点研究与开发计划面上科技攻关项目(1704a 0902033)作者简介:赵 峰(1977-),男,副教授,博士,主要从事于数据挖掘的研究.E -m a i l :1779236178@q q.c o m 文章编号:1673-0062(2017)03-0086-06关于N A N D 闪存损耗均衡算法的优化赵 峰,刘博妍,朱 戈(安徽工业大学管理科学与工程学院,安徽马鞍山243032)摘 要:为了改善N A N D 闪存不耐擦写的特性,本文对传统的损耗均衡算法(HW L 算法)进行优化,主要包括触发机制的优化和将现有的静态损耗均衡与动态损耗均衡策略相结合的优化策略.最后根据需求设计了评估损耗均衡算法效果的测试实验.结果表明:与当前算法相比,本优化算法展现了良好的磨损均衡效果,解决了N A N D 闪存不耐擦写的缺陷.关键词:N A N D 闪存;损耗均衡;算法优化中图分类号:T P 333 文献标志码:AO p t i m i z a t i o no fN A N DF l a s h M e m o r y L o s sE q u a l i z a t i o nA l go r i t h m Z H A OF e n g ,L I UB o -ya n ,Z H UG e (S c h o o l o fM a n a g e m e n t S c i e n c e a n dE n g i n e e r i n g ,A n h u iU n i v e r s i t y of T e c h n o l og y,M a a n s h a n ,A n h u i 243032,C h i n a )A b s t r a c t :T o i m pr o v e t h e c h a r a c t e r i s t i c s o f n o r e s i s t a n c e t o e r a s eN A N D f l a s hm e m -o r y .I n t h i s p a p e r ,t h et r a d i t i o n a l l o s se q u a l i z a t i o na l g o r i t h m (HW La l go r i t h m )i s o p t i m i z e d .I tm a i n l y i n c l u d e s t h eo p t i m i z a t i o no f t h e t r i g g e r i n g me c h a n i s ma n dt h e c o m b i n a t i o nof t h e e x i s t i ng s t a t i c l o s s b a l a n c i n g s t r a t e g y a n d th ed yn a m i c l o s sb a l -a n c i n g s t r a t e g y .A t l a s t ,a t e s t e x p e r i m e n t i sd e s i gn e dt oe v a l u a t e t h ee f f e c to f t h e l o s s e q u a l i z a t i o na l g o r i t h m.T h e r e s u l t s s h o wt h a t c o m p a r e dw i t ht h e c u r r e n t a l go -r i t h m ,a g o o dw e a r a n db a l a n c ee f f e c t i sa c h i e v e d ,w h i c hs o l v e s t h ed e f e c to fb e i n g n o t r e s i s t a n t t o e r a s eN A N Df l a s hm e m o r y.k e y wo r d s :N A N Df l a s hm e m o r y ;l o s s e q u a l i z a t i o n ;a l g o r i t h mo p t i m i z a t i o n南华大学学报(自然科学版)2017年9月0引言现在越来越多的笔记本电脑㊁智能手机㊁固态硬盘等新型电子设备开始装备N A N D闪存,凭借特有的存储方式和超高的稳定性㊁可靠性,N A N D 闪存得到越来越多厂商的青睐.配备N A N D闪存的固态硬盘也凭借诸多优势逐渐取代传统机械硬盘[1].采用N A N D闪存作为存储装置的固态硬盘没有采用像机械硬盘那样的复杂精密结构,读取数据不需要寻道时间,并且也有独特的写入方式,所以能够获得比较快的读取和写入速度.并且由于N A N D 闪存体积小,接口应用广泛,适应各种结构形式,所以可以被手机㊁笔记本电脑等精密设备采用[2].然而N A N D闪存存储器使用电子管来存储,重复写入擦除数据极易导致损坏,其物理块仅能承受几千次的擦写操作.要想广泛的应用N A N D闪存就需要采用合适的平均每个物理块磨损的机制,也就是损耗均衡机制,以此才能延长闪存的使用寿命.在1994年,P C M C I A(个人计算机内存卡国际协会)提出了F l a s h转换层(F T L)的概念,F A T文件系统用于N A N DF l a s h时,是由控制器通过管理N A N DF l a s h建立一个逻辑的F A T文件系统,供上层应用调用,同时它也可以高效的执行损耗均衡[3].实现闪存损耗均衡的算法按照类型分为:动态损耗均衡和静态损耗均衡[4].B a n等[3]针对静态均衡算法的触发机制进行了研究,并提出两种触发机制:确定性触发机制和随机性触发机制.Y a r e d H a i l uG u d e t a等[5]提出了基于概率的静态损耗平均算法.在每个状态下,磨损平均分布使用标准偏差来计算,以确定其是否超过阈.如果它超过阈值,则在所有块中维持损耗平衡通过将热块与冷块交换在闪存中.L e e等[6]在静态损耗均衡算法上进行了研究,该算法会在系统初始化时将闪存存储空间划分成若干组,从开始第一次更新之后就记录每一个组的擦写次数.到达损耗均衡的触发条件时统计高于平均擦写次数的组及组内的物理块,然后将这些块的数据搬运至空块,再更新地址映像表.邢春波[7]提出一种混合损耗均衡算法(HW L),该法也是在系统初始化时将闪存空间分块,每块的擦写次数由单独分配的一个字节的存储空间记录擦写情况,并采用一个数组来维护所有的块的擦写情况.该算法统计每一个系统更新周期内的各块擦写情况,HW L算法是目前应用最广发的算法之一,本文也是建立在该算法的基础上进行改进而来.本文根据闪存的物理块在使用过程中擦写的次数,对闪存数据块进行分类并给出相应的判断标准,同时引入与损耗均衡算法密切相关的阀值的概念;针对损耗均衡算法不能随着存储需求作调整的缺陷,给出根据数据块擦写次数的标准差动态调整阀值的算法;结合传统的动态损耗均衡算法和静态损耗均衡算法,给出损耗均衡算法的评价标准,将静态损耗均衡算法和动态损耗均衡算法两者结合设计出新的均衡损耗算法;根据需求设计了评估损耗均衡算法效果的测试实验,对损耗均衡算法的效果进行了实验测试.实验结果表明本文提出的改进算法对减小闪存存储器擦写的不均衡性有很好的效果.1 N A N D闪存损耗均衡机制及策略1.1 N A N D闪存的工作原理N A N D是一种计算机闪存设备.随着人们持续不断追求功耗更低㊁重量更轻和性能更佳的产品,这证明了N A N D极具吸引力.闪存存储器按照存储单元的存储控制方式可分为单层单元S L C 和多层单元M L C控制方式.单层单元S L C控制方式是依靠MO S管叠栅上不同的电荷量来区分0与1两种状态,多个MO S管组成叠栅成为一个存储单元.相对应的多层单元M L C控制方式由单层单元S L C控制方式改进而来,它的一个叠栅可以识别四种存储状态:00㊁01㊁10㊁11.但同时由于该种MO S管需要去识别多种电荷量,然而这会造成物理性能不稳定,导致这种闪存的寿命较少.正是因为这种问题,损耗均衡机制的重要性被进一步提高,为了保证多层单元M L C控制方式闪存的使用寿命,必须在文件系统中使用损耗均衡和机制.1.2损耗均衡评价指标损耗均衡(w e a r l e v e l i n g)[8]是指用来延长固态存储设备使用寿命的过程.闪存损耗均衡技术的设计目标是:在尽可能减少闪存中所有块的总擦除次数的前提下,尽可能使闪存中的每个块擦除次数趋向一致或在一定范围内.根据统计学的知识我们可以知道平均值描述了一个样本的平均水平,标准差能反映一个数据集的离散程度.根据这个设计目标提出衡量闪存损耗均衡度的两个指标:平均擦除次数E㊁擦除次数标准偏差D e v i a t i o n,简写为D e v.E=1nðn i=0E(i)(1)88第31卷第3期赵 峰等:关于N A N D 闪存损耗均衡算法的优化D e v =ðni =0(E i ()-E )2n -1(2) 公式(1)㊁(2)中E (i )表示第i 块的擦除次数,n 为闪存的总块数.综合以上因素可以知道,一个较好的闪存系统损耗均衡策略可以使热数据和冷数据的迁移次数尽可能多,同时总的物理块擦除次数的平均值越小,这样闪存的使用寿命大大延长.另外物理块的擦除次数的标准差越小,表明每一个物理块的擦出次数偏离平均擦除次数较少,损耗均衡机制的执行效果较好.相反,损耗均衡机制的执行效果较差.1.3 损耗均衡策略1)动态损耗均衡策略动态损耗均衡算法[9]主要原理是:先将所有的闪存物理块链接到一个动态维护的表格,在表格中将各物理块的擦除次数从大到小进行排序.当数据更新时,要求数据写入到表格最后的物理块,也就是擦除次数最小的物理块,然后再按照擦写次数进行排序.按照这样的方法数据永远都是写入到擦除次数最小的物理块,使得闪存的各块均得到同样的磨损状况.2)静态损耗均衡策略静态损耗均衡算法在动态损耗均衡算法的基础上改进而来,考虑到动态损耗均衡算法中一直优先将数据写入到擦出次数较少的物理块中,原先储备的更新较少的冷数据就会一直占据该物理块,得不到释放.所以静态损耗均衡算法考虑了冷数据的搬运,使得整个闪存存储空间都在不断的进行均衡磨损.静态损耗均衡算法将焦点放在冷数据上,预先设置擦写次数的阀值,采用遍历各块的方法统计得出更新频率低于阀值的方法,筛选出冷数据块,然后将数据搬迁至擦出次数较多的物理块中.用同样的方法筛选出热数据块,将热数据块搬迁至擦除次数较少的物理块中.通过这种方法,闪存中的各物理块的擦除次数比较均衡,并且随着静态均衡机制的不断触发,热数据块的擦出次数增长十分缓慢,冷数据块的擦出次数有一定的提高,从而是十分有效的损耗均衡算法.2 静态均衡算法设计本文的静态损耗均衡算法是将现有的动态均衡算法与静态算法相结合,设计出一种更加完善的算法流程.静态损耗均衡算法的设计基本原理在前文介绍过,为此定义擦除次数最多为Nm a x,擦除次数最少为Nm i n,两者差值为T h ,则需要研究的问题[10]的表述为:m i n E =1nðn i =0E (i )æèçöø÷或m i n D e v =ðni =0E i ()-E ()2n -1(3)s .t .(N m a x -N m i n )<T h (4)这里式(4)中的T h 就是本文所研究的静态损耗均衡算法的核心,即要选择恰当的阀值T h ,使得物理块的擦除次数上下限相差不会太大.同时又要满足尽可能小的平均值和标准差.2.1 触发条件的优化确定性触发的难点在于难以找到合适的系统更新次数,随机性触发只是用于系统更新频率较高的情况[11].为此本文设计了一种可以动态选择触发机制的算法,将确定性触发和随机性触发相结合,该算法会统计系统的更新频率.如果更新频率较高则选择随机触发条件,如果更新频率较低则选择确定性触发条件.参考损耗均衡机制的评价标准,选择系统更新次数的均值当做判别条件.流程图如图1所示.图1 优化的触发条件流程图98南华大学学报(自然科学版)2017年9月2.2 阀值确定数据块的状态数据块的磨损状态由该块的擦写次数在数据擦写中所占的比例决定,即w i =e ia 0ˑ100%(5)式中w i 表示该块的磨损程度,e i 表示该块在本次系统更新中的擦写次数,a 0是本次系统更新总的擦写次数.在磨损均衡过程中维护了一个磨损信息表,表中为每个物理块分配一个字节的空间记录磨损状态w i .如果w i 达到阀值w h i g h 就将该块定义为热数据块,同理低于阀值w l o w 就将该块定义为冷数据块.2.3 算法流程由以上结论可知,要想解决损耗均衡的问题,就必须在尽可能小的影响性能的条件下使擦写任务均匀的分布在每个数据块[12].本文在解决这个问题时候,通过对以往动态和静态算法的研究下,就此设计了动态静态算法相结合的N A N DF L A S H 闪存损耗均衡的算法.一个完整的静态损耗均衡流程为:在系统更新操作每过一定的擦写次数n 时启动静态损耗均衡机制,首先遍历所有参与擦写的数据块,计算得出数据块的磨损状态.按照磨损状态从低到高排序,达到阀值w h i gh 就将该块定义为热数据块,低于阀值w l o w 就定义为冷数据块.然后将热数据块中的有效数据搬迁至新的空块或者磨损状态w i 最低块,将冷数据块搬迁到原先的最热数据块,重排后依次进行,将搬迁后的数据块重新链接到文件系统.本次损耗均衡结束后计算没有超出阀值的数据块的擦除次数标准偏差,如果过高则标记超出平均擦除次数一定值的块为热数据块,并参与下一次系统更新.这样热数据块就会不断被搬迁新的物理块,不会只在部分块内擦写,有效降低了闪存数据块的磨损.算法流程如图2,图3所示.图2 完整的均衡损耗流程图一F i g .2 C o m p l e t e b a l a n c e d l o s s f l o wd i a gr amⅠ图3 完整的均衡损耗流程图二F i g .3 C o m p l e t e b a l a n c e d l o s s f l o wd i a gr a mⅡ09第31卷第3期赵峰等:关于N A N D闪存损耗均衡算法的优化3仿真测试3.1实验平台搭建为了测试本文设计的损耗均衡算法的效果,借助S S DS i m搭建测试平台.它可以在普通的计算机平台上模拟N A N D闪存的存储状况,用户可以在S S DS i m软件中设置存储容量㊁存储信道㊁闪存块大小等参数,根据用户需求可以在没有闪存硬件的支持下模拟N A N D闪存的使用情况.为了直观的对比损耗均衡算法的效果,本文设计了两个N A N D闪存,每个闪存分配4个闪存芯片,它们之间以并行方式连接,其中闪存1采用传统的静态损耗均衡算法[13](HW L算法);闪存2采用本文改进后的损耗均衡算法,两个闪存都写入同样的1ˑ106次数据量写入请求.两个闪存的其他详细配置如表1所示.表1闪存配置表T a b l e1F l a s h c o n f i g u r a t i o n t a b l e性能N A N D闪存容量/G16块容量/M B2页容量/K B8写入热数据比例/%203.2测试内容及结果分析本节比较了分别采用改进前和改进后的损耗均衡算法的效果.主要通过对比两种磨损状态阀值w,系统更新次数n和静态损耗周期M三个因素对闪存存储的磨损均衡性能的影响,评价的指标用一个周期内的擦除次数标准偏差来描述.1)为研究磨损状态阀值上限对闪存存储的磨损均衡性能的影响,设置HW L算法下w=1.2%和w=0.8%两种情况下记录随着写入请求的增加,物理块擦除次数标准差的变化情况.从图4㊁图5可以看出相比HW L算法,改进后的静态损耗均衡算法的损耗均衡效果更好一些.随着写入请求不断增加,两者的标准差都是稳定增长.这说明随着写入请求的不断增多在静态损耗均衡机制的控制下标准差的增长趋于稳定,趋于稳定时改进后的擦写次数的标准差比HW L 算法小约16.4%,这说明改进后的阀值使得损耗均衡效果更好.2)通过物理块擦写次数的标准差变化曲线,比较改进之前和改进之后的静态损耗均衡的周期对静态损耗均衡效果的影响.HW L算法是采用固定周期,改进后的算法采用变周期.从图中可以明显看出改进后的静态损耗均衡算法效果显著:从写入请求达到2.2ˑ105次时,两者的擦写次数标准差均达到最大.但是随后HW L算法的擦写次数标准差继续增长,直到写入请求达到7.4ˑ105时才有下降的趋势;然而改进后的擦写次数标准差开始下降,并最终稳定到10ˑ105左右.由于改进后的算法采用了动态的周期选择的方法,相比HW L的固定周期能更好地适应闪存静态损耗均衡的需求.图4磨损状态阀值上限对闪存存储的磨损均衡性能的影响F i g.4E f f e c t o fw e a r s t a t e t h r e s h o l do nw e a re q u a l i z a t i o n p e rf o r m a n c e o f f l a sh图5静态损耗均衡的周期对静态损耗均衡效果影响的对比分析图F i g.5C o m p a r i s o na n da n a l y s i s o f t h ei n f l u e n c e o f s t a t i c l o s s e q u a l i z a t i o n c y c l eo n s t a t i c l o s s e q u a l i z a t i o n同时本文选取了另外一个M=10的变化曲线对比观察,发现即使是将静态损耗及均衡周期设置的比较短,损耗均衡的效果仍然不理想.19南华大学学报(自然科学版)2017年9月4结论对目前较流行的HW L损耗均衡算法进行优化.重新定义了数据块的冷热属性,并以高低阀值作为热数据和冷数据的判定条件;对触发机制进行优化和将现有的静态损耗均衡策略与动态损耗均衡策略相结合的优化策略.通过S S DS i m软件完成了对比测试,实验证明改进后的损耗均衡算法有效的降低了物理块擦除次数的标准差,使得损耗均衡效果得到提高.参考文献:[1]温朝建,严华,文超建,等.Y a f f s2文件系统中对N A N DF l a s h磨损均衡的改进[J].电子技术应用, 2015,41(6):16-19.[2]江超,周传华,赵伟,等.基于混合云存储多频道视频直播系统方案设计[J].南华大学学报(自然科学版), 2017,31(2):62-66.[3]B A N A.W e a r l e v e l i n g o f s t a t i c a r e a s i n f l a s hm e m o r y:U S6732221[P].2004-05-04.[4]刘虎生.一种固态硬盘混合损耗均衡算法研究[D].长沙:国防科学技术大学,2012.[5]G U D E T A Y H,KWO NS J,C HOES,e t a l.P r o b a b i l-i t y-b a s e ds t a t i cw e a r-l e v e l i n g a l g o r i t h mf o r b l o c ka n d h y b r i d-m a p p i n g N A N Df l a s hm e m o r y[J].D e s i g nA u-t o m a t i o nf o r E m b e d d e d S y s t e m s,2012,16(4): 241-264.[6]L E E C C,C H E N B W,C HO U S K.S y s t e m a n d m e t h o d f o r m a n a g i n g b l o c k s i n f l a s h m e m o r y: U S20050204187[P].2005-09-15.[7]邢春波.闪存磨损均衡算法研究[D].杭州:浙江工业大学,2008.[8]刘智朋,罗洪元,阳小珊.闪存循环位图的损耗均衡机制研究[J].计算机工程与设计,2013,34(2):523-528.[9]赵鹏,白石.基于随机游走的大容量固态硬盘磨损均衡算法[J].计算机学报,2012,35(5):972-978. [10]罗桂娥,康霞.固态硬盘性能优化研究与实现[J].计算机工程与应用,2015,51(1):43-48. [11]丁万霞.高速大容量N A N DF L A S H存储系统[J].数字技术与应用,2016(7):158-158.[12]汤瑞.一种基于N A D A F l a s h固态硬盘的坏块管理方法[J].电子科技,2014,27(8):40-42. [13]陈金忠,姚念民,蔡绍滨.基于N A D A闪存的高性能和可靠的P R A I D-6[J].电子学报,2015,43(6): 1211-1217.29。
YAFFS文件系统在嵌入式Linux系统中的构建与改进在嵌入式Linux 的开发工作中,常用的存储设备有NorFlash 和NandFlash,其中价格低廉并适用于高密度和大容量存储的NandFlash 运用更为广泛[1]。
YAFFS(Yet Another Flash File System)文件系统是专门针对NandFlash 的特殊构造设计的,是一种日志结构的文件系统,性能超越了原有的JFFS 系列文件系统。
但随着嵌入式技术的发展,在NandFlash 介质上的嵌入式Linux中构造YAFFS 时,YAFFS 存在挂载时间过长和损耗均衡性不足两方面的缺点,需要进一步改进和优化。
1 YAFFS 文件系统在嵌入式所用的NandFlash 中,基本的读写单位是页(page),YAFFS 的存储位也是页(一般称为Chunk),分为附加区(OOB)和数据区。
32 页组成块(block)是基本的擦除单位[2]。
由于YAFFS 的文件偏移地址和闪存的物理地址不一致而建立了一张文件与物理页的映射表。
闪存的页序号作为表内容,以每页描述的文件偏移量作为表索引,再把这张大的映射表分为若干小表,组织成树结构,以提高文件数据块的查找速度。
这种在内存中建立的层次索引目录称之为节点树(TnodeTree),是YAFFS 的核心模型,如图1 所示。
在节点树中按照逻辑索引(Logical chunk index)找到物理地址索引(Physical chunk index)。
当文件变大时,所需的叶子节点也会增加,此时节点树就会“拔高”和“增肥”。
当文件进行删除操作时,用递归的方法从叶节点向上收缩,释放已被删除节点对应的物理页。
2 构建YAFFS 文件系统2.1 实验平台开发过程中运用的是目标板与宿主机的交叉编译模式。
宿主机即PC 机,采用的是虚拟机+Linux RedHat9.0 系统;目标板的硬件是ARM 板,采用的是一块S3C2440 的ARM9 微处理器,带有一块256 MB 的NandFlash、64 MB 的SDRAM 内存。
深入理解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校验,这些特性将导致不可接受的、很长的启动时间。
基于多阈值的闪存磨损均衡算法
拓晶;唐磊
【期刊名称】《微电子学与计算机》
【年(卷),期】2018(35)1
【摘要】NAND Flash专用文件系统Yaffs2在磨损均衡算法方面仍存在缺陷,通过详细分析Yaffs2中磨损均衡算法的实现原理,综合考虑磨损均衡与垃圾回收的矛盾关系,提出了一种基于多阈值的磨损均衡机制(属于静态磨损均衡算法),利用三个关键技术:(1)改进回收块选择机制,选择公式(1)的计算结果落入目标区间中的所有块中擦除次数最大的块进行回收;(2)利用有序双向链表管理空闲块,分配当前链表中擦除次数最小的块给新写入的数据,而将擦除擦除次数最大的块分配给静态数据;(3)针对磨损均衡的两级分化引入冷热数据分离策略.实验结果表明,在仅付出4.05%的额外擦除代价下,将NAND Flash的寿命延长了近4倍.
【总页数】4页(P6-9)
【关键词】Yaffs2文件系统;磨损均衡;回收块选择机制;冷热数据分离
【作者】拓晶;唐磊
【作者单位】西安微电子技术研究所
【正文语种】中文
【中图分类】TP302
【相关文献】
1.基于逻辑页冷热分离的NAND闪存磨损均衡算法 [J], 王晋阳;严华
2.基于分组—循环擦写的闪存磨损均衡算法 [J], 王浩;邵高平;胡泽明
3.考虑物理块年龄和逻辑页热度的NAND闪存磨损均衡算法 [J], 石乐健;严华
4.闪存数据库磨损均衡数据流流量控制算法优化研究 [J], 胡萍
5.基于擦除上限的动态阈值磨损均衡算法 [J], 朱增昌
因版权原因,仅展示原文概要,查看原文内容请购买。
FAT文件系统在NAND Flash存储器上的改进设计
阎航
【期刊名称】《单片机与嵌入式系统应用》
【年(卷),期】2006(000)011
【摘要】嵌入式系统的大量数据都存储在其Flash芯片上.根据Flash器件的固有特性,构建一个适合管理NAND Flash存储器的FAT文件系统,并阐述具体的设计思想.该系统改进了FAT表和FRT表的存储方式,延长了存储器的使用寿命,提高了稳定性.
【总页数】3页(P27-29)
【作者】阎航
【作者单位】北京交通大学
【正文语种】中文
【中图分类】TP3
【相关文献】
1.FAT文件系统在NAND FLASH上的改进 [J], 牛炳麟
2.一种适用于NAND型Flash存储器译码故障检测的改进对角线算法 [J], 刘远飞;李鹏程;刘海涛
3.嵌入式系统大容量NAND Flash存储器分区管理设计 [J], 李远哲;贺海文;万丽;李妍;赵峰
4.FAT文件系统在NAND FLASH上的磨损均衡研究 [J], 谢琦;胡俊;王磊
5.提高FAT文件系统在NAND存储器上可靠性的研究 [J], 姚堃;张俊涛
因版权原因,仅展示原文概要,查看原文内容请购买。
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设备中的块可以更加均匀地参与擦除操作。
另外引入冷热数据分离策略后,随着擦除次数增加,块擦除次数标准差增加得更缓慢,。
这说明将冷数据拷贝到擦除次数多的块上,这样的数据交换方法能有效阻止块继续擦除。