极小嵌入式系统中闪存转换层的设计与实现

合集下载

一种可定制模块化的闪存转换层的设计与实现

一种可定制模块化的闪存转换层的设计与实现

http:∥www.jdxb.cn第44卷 第8期2010年8月西 安 交 通 大 学 学 报JOURNAL OF XI′AN JIAOTONG UNIVERSITYVol.44 №8Aug.2010收稿日期:2010-02-09. 作者简介:杜溢墨(1986-),男,硕士生;肖侬(联系人),男,教授,博士生导师. 基金项目:国家自然科学基金重点资助项目(60736013);国家自然科学基金资助项目(60903040);国家高技术研究发展计划资助项目(2006AA01A106);新世纪优秀人才支持计划资助项目(NCET-08-0145).一种可定制模块化的闪存转换层的设计与实现杜溢墨,肖侬,刘芳,陈志广(国防科学技术大学计算机学院,410073,长沙)摘要:针对闪存转换层(FTL)的具体设计和实现细节不公开问题,提出了一种模块化的FTL设计,将地址映射、垃圾回收、损耗均衡等几个重要部分设计成不同的模块,并提供可定制接口,在每个模块上都可以针对不同的应用定制不同的算法.用文件系统模拟了一个Flash Memory的存储芯片阵列,并将FTL设计部署在该模拟器上,这样就构成了一个完整的SSD模拟器,为研究FTL中的各种算法和机制以及开发基于SSD的各种应用提供了一个实验平台.通过实验测试了FTL设计的性能,并进行了分析.关键词:闪存转换层;固态盘;地址映射;垃圾回收;损耗均衡中图分类号:TP333 文献标志码:A 文章编号:0253-987X(2010)08-0042-06A Customizable and Modular Flash Translation Layer(FTL)Design and ImplementationDU Yimo,XIAO Nong,LIU Fang,CHEN Zhiguang(School of Computer,National University of Defense Technology,Changsha 410073,China)Abstract:Flash translation layer(FTL)is the key technique of flash-based SSD.There are manyproductions of SSD,but their detailed design and implementation are kept as a secret.A customi-zable and modular FTL design is presented in detail which divides the FTL design into several dif-ferent parts and supplies an interface to make modification for special applications.A file systemis employed to simulate a flash memory array,and the FTL design is implemented on the simula-tor to form a complete simulator of SSD,which provides a platform for users who make resear-ches on algorithms and mechanisms of FTL and on applications based on SSD.The properties ofthe FTL design are evaluated through experiments and analyzing.Keywords:flash translation layer;solid state disk;address mapping;garbage reclamation;wearleveling 固态盘(Solid State Disk,简称SSD)提供了类似磁盘的块级接口,存储实体是闪存阵列.在接口与存储实体之间是SSD控制器,用来管理SSD上的RAM和通过Flash控制器访问Flash Memory上的存储单元.与硬盘相比,Flash Memory有以下三个问题:①修改数据不能直接在原数据上重写,导致非定点更新;②数据读写的基本单位是页,而擦除的基本单位是块;③由于寿命问题,每个擦除块只能被擦除有限的次数.闪存转换层(Flash TranslationLayer,简称FTL)的引入就是为了解决这几个问题,它主要包括地址映射、垃圾回收、损耗均衡等部分.当然,这几个部分并不是独立的,例如,损耗均衡可以在地址映射时利用数据布局算法来实现,也可以在垃圾回收时通过合理地选择擦除块来实现.目前,SSD已经引起了国内外工业界和学术界的广泛关注.在工业界,各种SSD的产品层出不穷,但是在他们提供的产品说明书中,FTL的设计与实现细节作为SSD的核心技术则很难被找到,而且各厂商为了宣传自己的产品难免会有些片面.在学术界,关于FTL的论文也有很多,从地址映射、垃圾回收到损耗均衡都有专门的研究,但却很少有完整的实现和实验测试.本文提出了一种模块化的FTL设计,将地址映射、垃圾回收、损耗均衡等几个重要部分设计成不同的模块,并提供可定制接口,然后通过模拟实验测试了FTL的设计并进行了分析.1 SSD和FTL的相关研究工作Agrawal等[1]基于模拟实验比较分析了SSD的各种设计策略,并根据它们对性能的影响做了权衡,包括并行度、页大小、条带化程度等.Dirik和Ja-cob[2]在模拟器上进行了大量的实验,指出了SSD的性能瓶颈,并测试了从设备级到系统级之间的各个级别增大并行度所带来的性能改善.Chen等[3]用实验比较了几种SSD产品的性能以及其他特点,展示了许多厂商在说明书中没有提到或者与说明书不太符合的一些特征.Gal和Toledo[4]总结了2005年以前关于FlashMemory的各种典型算法和数据结构,其中也涉及到了FTL设计,包括地址映射、垃圾回收和损耗均衡,但是这篇论文属于报告性质,只是分门别类的介绍,并没有给出完整的FTL设计.地址映射作为FTL的核心部分,是垃圾回收和损耗均衡的基础,包含许多重要的数据结构和算法,例如Gupta等[5]提出的DFTL是在页级映射上做的改进,其他地址映射方法则主要针对页级和块级的混合映射结构,包括BAST、FAST、LAST等[6-8].Birrell等[9]针对高性能SSD提出一种基于页映射的FTL设计策略,并给出了部分数据结构,对上电逻辑进行了详细的描述,但是其他部分提到的不多,而且没有实现和测试部分.2 FTL的设计与实现本文提出的FTL设计的软件体系结构如图1所示.软件采用模块化设计,主要模块的功能描述如下.由于本文的FTL设计针对的是高性能SSD,因此地址映射完全采用了页映射方式[9],在RAM中保存有完整的页映射表,通过查找映射表可以直http:∥www.jdxb.cnhttp:∥www.jdxb.cn表1 RAM上的主要数据结构名称功能描述类型LBATable地址映射表,保存逻辑地址到物理地址的映射数组,元素个数为存储阵列的总页数FreeBlocks空闲块标记表,标记每块是否为空闲数组,元素个数为存储阵列的总块数BlockUsage有效页个数表,记录每块上有效页的个数数组,元素个数为存储阵列的总块数ActivePage当前可以写入的页结构体,标识FlashMemory中的一个地址表2 Spare data区域的格式设计字节号(1-64)功能描述 备注1坏块标识每块的第一页中2封装标识每块的第一页中3-6块序号每块的第一页中7-10块的擦除次数每块的第一页中11该页是否有效的标识每块的所有页上12-15该页对应的逻辑地址每块的所有页上16-35EDC(Error Detect Code)每块的所有页上36-64ECC(Error Correct Code)每块的所有页上2.2 块访问接口模块FTL层的块访问接口模块为上层文件系统提供读和写2个接口.读操作与以硬盘为存储介质的操作区别不大,主要还是定位和读取.但是,由于Flash Memory的非定点更新以及写之前需要擦除整个块,导致写操作与以硬盘为存储介质的写有很大不同.下面对写接口的逻辑进行描述.步骤1 当FTL层接到写命令后,直接将所要写入的数据和生成的元数据信息写入ActivePage中,如果ActivePage是块中的第一页,则还需要根据表2生成那些只在第一页中包含的元数据信息.步骤2 根据写命令中需要访问的逻辑地址查找LBATable,记录当前LBATable中该逻辑地址上对应的物理页地址.如果记录的该页地址为0,转到步骤3;否则,将该页置为无效的元数据信息写入该页,并将该页所对应块的BlockUsage个数减一.步骤3 在步骤2中查找到的LBATable位置上记录新写入页的地址,并将新写入页对应块的Block-Usage个数加一.http:∥www.jdxb.cn表3 RAM管理模块中的主要函数及其功能描述函数名称描述struct path getPath(intblockposition,int pageposi-tion);根据blockposition和pageposition这个二维地址生成所需要可以访问的包含array号,chip号,plane号,block号和page号的五维的可以访问的地址.void AddFreeBlocks(intblockposition)将块blockposition对应的FreeBlocks置为空闲void ModifyLBATable(intblockposition,int pageposi-tion)根据页上的元数据信息修改LBATablevoid AbandonBlock(intblockposition)作废块blockposition,即将坏块标识写入该块的第一页上void RecordActivePage(intblockposition,int pageposi-tion)将ActivePage指向参数中所给的页void InitiateBlockUsage()初始化BlockUsage数组void Invalid(Struct pathOriginalPath)将OriginalPath指向的页置为无效页的个数占总页数的比例来衡量,比例越高,擦除时需要迁移的页越少,效率越高.损耗均衡一般由所选块的擦除次数和损耗最严重块的擦除次数之差来衡量,差值越大,说明该块越应该被擦除来使总体损耗趋于均衡.在选择需要擦除的块时,为了综合两方面的考虑,用式(1)(其中i、j均表示块号,Score(j)表示第j块的得分,ρ为调整因子,obsolete(j)表示第j块上无效页的个数,total(j)表示第j块上的总页数,erasure(j)表示第j块的擦除次数)给每一个候选擦除块打分,按照得分由高到低排序作为擦除的顺序.通过调整公式中的参数ρ,可以动态调整效率与损耗均衡的侧重点.Score(j)=ρobsolete(j)totalj+(1-ρ)(maxi≥1{erasure(i)}-erasure(j))(1) 采用主程序根据存储状况调用垃圾回收模块的方法,当空闲块数小于总块数的5%时调用该模块,每次垃圾回收时将所有的垃圾块(块上没有空闲页且存在无效页)都回收,其逻辑描述如图3所示.除了在垃圾回收中考虑损耗因素以达到损耗均衡的目的外,还可以在数据写入时考虑损耗均衡,将http:∥www.jdxb.cn图4 Flash Memory存储阵列的文件系统模拟图内核版本号为2.6.27,文件系统为Ext3.3.3 实验结果通过调整参数测试不同规模SSD的上电扫描时间,结果如图5所示.对每种规模下的SSD分别测试出厂扫描时间、经过出厂扫描后的空块扫描时间、SSD中写入部分数据后的扫描时间以及SSD中写满数据后的扫描时间.如图5所示,不同规模下的SSD出厂扫描时间差别很大,而后扫描时间相差并不太大.这是因为出厂扫描时需要将所有的页都扫描一遍,而后的扫描通过每块首页的元数据信息或者每块最后一页的元数据信息就可以得到整个Flash Memory存储阵列的状态,并在RAM中构建起所需的数据结构,所以扫描时间要比出厂首次扫描短很多.用trace[10]测试FTL的读写响应时间,结果见图6.横坐标用Flash Memory存储阵列的总页数来表示SSD的规模,纵坐标表示每个I/O的响应时间.从图中可以看出,无论在哪种规模下,读延迟都大大小于写延迟,而不同规模下的延迟差别不大.这与SSD非对称的读写性能很吻合.在trace运行完后,通过查看每块上记录的擦除次数,列出了各块的损耗情况,见图7.从图中我们可以看出,在经常被使用的块之间的损耗基本能 (a)51 200页 (b)512 000页 (c)2 097 152页图7 不同存储阵列规模下的损耗分布图64西 安 交 通 大 学 学 报 第44卷 的算法,通过配置参数可以调整Flash Memory阵列的存储规模和组织结构.最后,本文验证了FTL的设计,并用trace测试了各种Flash Memory存储阵列规模下FTL设计的性能.下阶段的工作有两个方向:一是把本文中FTL的设计实现到硬件上,做成一个SSD产品,再测试它的性能;二是研究基于Flash Memory的I/O调度,因为以往的I/O调度策略都是针对磁盘的,并没有利用Flash Memory随机读性能好的优点,我们可以用本文的SSD模拟器进行实验,设计一个专门用于Flash Memory的I/O调度算法,以提高系统的整体性能.参考文献:[1] AGRAWAL N,PRABHAKARAN V,WOBBER T,et al.Design tradeoffs for SSD performance[C]∥Proceedings of the 2008USENIX Technical Confer-ence.Berkeley,USA:USENIX,2008:57-70.[2] DIRIK C,JACOB B.The performance of PC solid-state disks(SSDs)as a function of bandwidth,concur-rency,device architecture,and system organization[C]∥Proceedings of ISCA’09.New York,USA:ACM,2009:279-289.[3] CHEN Feng,DAVID A K,ZHANG Xiaodong.Un-derstanding intrinsic characteristics and system impli-cations of flash memory based solid state drives[C]∥Proceedings of 2009ACM SIGMETRICS conferenceon Measurement and Modeling of computer systems.New York,USA:ACM,2009:181-192.[4] GAL E,TOLEDO S.Algorithms and data structuresfor flash memories[J].ACM Computing Survey,2005,37(2):138-163.[5] GUPTA A,KIM Y,URGAONKAR B.DFTL:aflash translation layer employing demand-based selec-tive caching of page-level address mappings[C]∥Pro-ceedings of ASPLOS’09.New York,USA:ACM,2009:229-240.[6] KIM J,KIM J M,NOH S H,et al.A space-efficientflash translation layer for CompactFlash systems[J].IEEE Transactions on Consumer Electronics,2002,48(2):366-375.[7] LEE S W,PARK D J,CHUNG T S,et al.A logbuffer-based flash translation layer using fully-associa-tive sector translation.[J/OL]∥Transactions on Em-bedded Computing Systems,2007,6(3).[2010-01-09].http:∥portal.acm.org/citation.cfm?id=1275986.1275990.[8] LEE S,SHIN D,KIM Y J,et al.Last:locality-aware sector translation for NAND flash memory-based storage systems[J].SIGOPS Oper Syst Rev,2008,42(6):36-42.[9] BIRRELL A,ISARD M,THACKER C,et al.A de-sign for high-performance flash disks[J].SIGOPS O-per Syst Rev,2007,41(2):88-93.[10]CHANG Lipin,KUO Teiwei.An adaptive strippingarchitecture for flash memory storage systems of em-bedded systems[C]∥Proceedings of the Eighth IEEEReal-Time and Embedded Technology and ApplicationsSymposium.Piscataway,NJ,USA:IEEE,2002:187-196.[本刊相关文献链接]应用变量因果序分析的符号有向图建模方法.西安交通大学学报,2010,44(5):85-90.一种面向写穿透Cache的写合并设计及验证.西安交通大学学报,2010,44(4):1-4.利用互易定理的混响声场数值模拟.西安交通大学学报,2010,44(3):110-114.一种分段测量保证QoS约束的任播通信模型.西安交通大学学报,2010,44(2):44-49.用属性单值表示的决策表简化算法及属性核计算.西安交通大学学报,2010,44(1):87-90.一种支持负载均衡的存储调度算法.西安交通大学学报,2009,43(10):61-65.CorsairFS:一种面向校园网的分布式文件系统.西安交通大学学报,2009,43(8):43-47.面向存储资源管理的多协议存储系统.西安交通大学学报,2009,43(6):10-14.利用角度测量估计机动目标运动参数的方法.西安交通大学学报,2009,43(6):67-71.面向Cell宽带引擎架构的异构多核访存技术.西安交通大学学报,2009,43(2):1-5.一种基于网关的网格数据互操作框架.西安交通大学学报,2009,43(2):20-24.利用最大似然准则的双向联想网络研究.西安交通大学学报,2008,42(8):963-966.一种基于角度测量估计飞行目标运动参数的新方法.西安交通大学学报,2008,42(8):986-990.一种电子设备电磁敏感性的仿真建模与优化设计方法.西安交通大学学报,2008,42(6):688-692.一种Log-Gabor滤波结合特征融合的虹膜识别方法.西安交通大学学报,2007,41(8):889-893.(编辑 武红江)74 第8期 杜溢墨,等:一种可定制模块化的闪存转换层的设计与实现http:∥www.jdxb.cn。

嵌入式设备NANDFlash存储系统的设计与实现

嵌入式设备NANDFlash存储系统的设计与实现

0引言嵌入式系统主要由微处理器、存储设备、总线标准、I/O 外设等几大部分构成。

随着制造工艺的成熟和体系结构的不断优化,如今无论面向低端应用还是高端应用,从8位到64位,都有很大的选择范围,能够很好的完成复杂的数据信息处理。

现在需要的更多的是如何有效的存储和管理越来越多的数据,随着对大容量存储需求的日益迫切,NAND Flash 因为其自身的特点成为了嵌入式设备,特别是消费类手持嵌入式设备的最主要存储解决方案。

目前针对NAND Flash 的研究主要集中在硬件和软件两大块,硬件方面的研究主要希望尽一步加大存储容量,提高读写速度及数据可靠性,降低制造成本,统一各厂家的标准等;软件方面的研究主要集中在如何实现一个更优秀NAND Flash 的驱动程序。

NAND Flash 的驱动程序中牵涉到很多问题,比如如何更好的进行垃圾收集,负载均衡,坏块管理等等。

本文主要介绍我们的NAND Flash 存储系统的驱动程序设计,主要是基于Linux 操作系统。

1NAND Flash 存储系统的总体设计NAND Flash 存储系统的分层结构如图1所示。

它由用户层、内核层与硬件层组成:用户层就是直接与用户联系,实际对存储器提出读写请求的应用程序,比如cp 、rm 等命令,比如对存储器有读写请求的应用程序;内核层主要包括文件系统,比如EXT3、EXT2、FAT32等文件系统,由于我们在接下来的块设备层中实现了闪存翻译层(FTL ),所以文件系统可以采用任何通用的文件系统,而不需要采用特殊的针对NAND Flash 的文件系统,比如JFFS2等,块设备驱动层,主要实现统一的Linux 块设备驱动,主要完成块设备注册、定义块设备操作、请求处理等工作,NAND Flash 设备驱动层,在这里NAND Flash 设备驱动又分为FTL (flash translation layer )层与LLD (low level driver )层,由于NAND Flash 是一个特殊的存储设备,具有自身的特点,不同于一般的块设备,所以需要FTL 层来进行一个转换和翻译的功能,使得上层可以像对一般块设备进行操作那样来对NAND Flash 进行操作,使得NAND Flash 的特殊性对于FTL 层以上是透明的不可见的,LLD 层主要用来直接驱动控制器来完成底层的具体操作,例如最基本的页读、页写、块擦除等操作;硬件层由NAND Flash 控制器和具体的NAND Flash 芯片构成。

基于闪存的嵌入式储存系统设计与实现

基于闪存的嵌入式储存系统设计与实现

基于闪存的嵌入式储存系统设计与实现闪存技术是一种非常先进的存储技术,它不仅拥有良好的性能和可靠性,还可以实现高密度存储。

因此,嵌入式设备中普遍采用闪存技术作为储存介质,这也催生了基于闪存的嵌入式储存系统的设计与实现。

一、嵌入式储存系统的需求嵌入式储存系统是指在嵌入式设备中用于存储数据的系统,通常包括储存介质和控制器两部分。

这种系统对于嵌入式设备来说非常重要,因为它决定了嵌入式设备的数据储存能力和可靠性。

随着嵌入式设备应用领域的不断扩大,储存系统的需求也越来越强烈。

具体来说,嵌入式储存系统需要满足以下几个方面的需求:1.高速数据读写:嵌入式设备通常执行实时操作,所以需要快速地访问储存介质。

2.容量大、密度高:嵌入式设备需要处理的数据的数量越来越大,因此需要具备越来越高的存储容量和密度。

3.数据可靠性:嵌入式设备通常部署在非常恶劣的环境中,因此储存在其中的数据需要具备良好的可靠性,在断电或者其他突发情况下也需要能够保护好数据。

4.低功耗、低成本:嵌入式设备通常是工业和军事等领域的特定应用,要求功耗和成本都非常低。

二、闪存介质的特点闪存介质是一种非常优秀的储存介质,它有以下几个主要特点:1.相比于硬盘或者光盘等传统的储存介质,闪存介质具有更快的读写速度和更小的体积尺寸。

2.闪存介质可以实现高密度存储,单个芯片可以储存数十GB的数据,这对于嵌入式设备来说是非常有利的。

3.闪存介质具有较长的寿命,可以支持成千上万次的擦写操作,能够满足嵌入式设备的需求。

4.闪存介质不需要任何电源维持数据的存储,可以在断电的情况下持久化数据。

三、基于闪存的嵌入式储存系统的设计基于闪存的嵌入式储存系统通常包括闪存芯片、控制器和主机之间的接口三个部分。

1.闪存芯片的选型在进行闪存芯片的选型时,需要考虑数据容量、单次读写速度、耐用次数、价格等因素。

根据具体的需求,可以灵活调整选择不同的闪存芯片。

2.控制器的设计控制器是储存系统的重要组成部分,它起到连接主机和储存介质的角色。

嵌入式设备NAND Flash存储系统的设计与实现

嵌入式设备NAND Flash存储系统的设计与实现

比如E T 、 X 2 F T 2等文件系统, X 3 E T 、A 3 由于我 们在接下来 的块
设 备 层 中 实 现 了 闪存 翻 译 层 (T )所 以文 件 系 统 可 以采 用 任 F L, 何 通 用 的 文 件 系 统 , 不 需 要 采 用 特 殊 的针 对 N N l h 而 A DFa 的 s 文件 系 统 , 比如 J F 2等 ,块 设 备 驱 动 层 , 主 要 实 现 统 一 的 FS Lnx 设 备 驱 动 , 要 完 成 块 设 备 注册 、 义 块 设 备 操 作 、 i 块 u 主 定 请
Ab t a t T e eo o a es se i mb d e e ie t e sr c : od v lp a tr g tm e e d dd v c , h s y n NAND l s a d l s dlr e c p ct o a ed v c u i d F a ht t wi eyu e g - a a i s r g e i e s t d e . h a a yt is A e in o NAND ls o a es se f r mb d e e i e t d c d n s u c in n o si t r r p s d h a t u a d s f g F a hs r g y tm t o e e d dd v c s s n r u e ,a d i n t s dc n t e ep o o e .T e ri lr ii o tf o a u t a p c d sg x li e i rr hc l . T e s e il l c rv r F L d sg n eo t z t n o r e i ai ai n a e li ea l e i i e p an d h e ac ia l n s y h p c a o k d i e , T e in a d t p i a i f i ri t l t r d i d t i b h mi o d v n i z o a n . A t o f e l i gNAND ls tr g y t m e i ed i e si p o i e . F n l , t e e c l n fe t si u n t d me h do r ai n z F a h so a es se d v c rv r r v d d s i al y h x el t e e c lmi a e . i l

嵌入式系统中闪存设备I/O软件的设计与实现

嵌入式系统中闪存设备I/O软件的设计与实现

嵌入式系统中闪存设备I/O软件的设计与实现
程全洲;张丽;冯翔
【期刊名称】《微计算机信息》
【年(卷),期】2005(21)09Z
【摘要】闪存作为最常用的嵌入式存储设备,其管理和访问技术对整个系统的性能有着较大的影响。

目前嵌入式系统中广泛采用的闪存管理软件在可移植性、灵活性方面都存在不足。

因此本文在分析了这些管理软件现存问题的基础上提出了一种比较合理的闪存I/O软件分层结构,并通过对软件的模块化设计与实现证明了该分层结构在移植性、通用性方面的优势。

【总页数】4页(P46-48,42)
【作者】程全洲;张丽;冯翔
【作者单位】南阳师范学院计算机科学系,河南南阳473000;长沙湖南大学计算机与通讯学院,410082
【正文语种】中文
【中图分类】TP385
【相关文献】
1.极小嵌入式系统中闪存转换层的设计与实现 [J], 任小平;万瑞罡;罗正华;黄建刚
2.组态软件中数据采集模块设备无关性的设计与实现 [J], 陈姝
3.嵌入式系统中闪存设备I/O软件的设计与实现 [J], 程全洲;张丽;冯翔
4.控制软件中设备无关性的设计与实现 [J], 张营建;臧珠萍;曾培峰
5.移动监控系统中设备端视频软件的设计与实现 [J], 杨云龙;孟利民
因版权原因,仅展示原文概要,查看原文内容请购买。

一种混合映射闪存转换层的设计与实现

一种混合映射闪存转换层的设计与实现

一种混合映射闪存转换层的设计与实现郁志平;刘伟;彭虎;张耀辉【期刊名称】《计算机工程》【年(卷),期】2014(40)2【摘要】使用 NAND Flash 作为存储媒介的存储设备常需要闪存转换层(FTL)对NAND 进行管理。

页映射是一种常见的映射方式,但需要很大的内存存放页映射表,在嵌入式环境下这一条件往往无法满足。

针对该问题,提出一种基于超级块的混合映射 FTL,包括坏块管理、地址翻译、垃圾回收、上电恢复,使用的 SRAM 空间不到128 KB,远小于页映射,同时不需要存储映射表,程序在固态硬盘开发板上成功运行,实现固态硬盘基本读写功能。

测试结果表明,该混合映射 FTL 方案具有较好的顺序读写性能。

%Flash Translation Layer(FTL) is always needed when NAND Flash is used in a memory device. Page level translation is the most popular, but needs a large RAM to store mapping table. This pager employs a superblock based hybrid mapping, and realizes a basic FTL on the Solid State Disk(SSD) development board. The test result shows that the hybrid FTL has good sequential read and write performance, and only needs 128 KB SRAM, which is far less than page level mapping. It also does not need to store mapping table. The program runs successfully in solid state disk development board, to achieve the basic functions of solid state disk read and write. Test results show that, the hybrid mapping FTL scheme has better sequential read and write performance.【总页数】4页(P300-302,307)【作者】郁志平;刘伟;彭虎;张耀辉【作者单位】中国科学院苏州纳米技术与纳米仿生研究所系统集成部,江苏苏州215123; 中国科学院大学,北京 100049;中国科学院苏州纳米技术与纳米仿生研究所系统集成部,江苏苏州 215123; 中国科学院大学,北京 100049;记忆科技研究院,江苏苏州215123;中国科学院苏州纳米技术与纳米仿生研究所系统集成部,江苏苏州 215123; 中国科学院大学,北京 100049【正文语种】中文【中图分类】TP316【相关文献】1.基于需求的三级映射管理的闪存转换层算法 [J], 韩晓军;王举利;张南;高会娟2.一种可定制模块化的闪存转换层的设计与实现 [J], 杜溢墨;肖侬;刘芳;陈志广3.GFTL:一种基于页组映射的低能耗闪存转换层 [J], 白石;赵鹏4.一种优化的闪存转换层的设计与实现 [J], 王志奇;何欣霖5.Dual-FTL:一种基于MLC/SLC双模闪存芯片的闪存转换层 [J], 刘洋;王峰因版权原因,仅展示原文概要,查看原文内容请购买。

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

第3 6卷第2期2017年 6月成都大学学报(自然科学版)Journal of Chengdu University (Natural Science Edition)V ol .36 No .2Jun . 2017文章编号:1004 - 5422(2017)02 - 0168 - 04极小嵌入式系统中闪存转换层的设计与实现任小平,万瑞里,罗正华,黄建刚(成都大学信息科学与工程学院,四川成都610106)摘要:为解决极小嵌入式系统中大数据量的存储问题,在对嵌入式设备广泛采用的N A N D Flash 的特点进行深入研究的基础上,设计了 一种极小嵌入式设备N A N D Flash 存储系统的解决方案.说明了其系统分层结构和 功能用途,详细阐述了闪存转换层中地址映射、糾错、坏块管理、磨损均衡及垃圾收集等算法的设计与实现,并 在S T M 32微控制器上实现了 N A N D Flash 的驱动和管理,验证了设计的可行性和有效性.关键词:极小嵌入式系统;闪存转换;磨损均衡;地址映射;坏块管理 中图分类号:TR333文献标志码:A0引言嵌入式系统主要由微控制器、存储设备、系统总线及I /O 外设等结构组成[1].嵌入式系统的存储能 力决定了系统的可定制性、模块化程度和可编程能力.NAND Flash因其存储容量大、相对成本低、对机 械振动耐受程度高等特点,成为嵌入式设备的主要 存储解决方案[1].随着智能互联的发展,在极小嵌入 式系统中引入N A N D Flash存储设备已经成为趋势. 由于极小嵌入式系统的资源严重受限(R A M < 20 K B ,R 0M < 128 K B ),因此,系统在弓|入 N A N D Flash 时需要设计高效的管理算法,并提高N A N D Flash的 纠错能力,增强系统的可靠性和掉电恢复能力.目前,N A N D Flash的管理算法[2]分为2种:一种 是设计专用的Flash文件系统,这样具有开销小、吞 吐量大且对Flash友好的特点,但此种方式无法兼容 广泛流行的传统磁盘文件系统,并且移植困难;另一 种是通过设计N A N D Flash和传统磁盘文件系统之 间的转换层(f l a s h t r a n s l a t i o n layer,FTL )来解决上述 专用Flash文件系统存在的问题.第2种方式虽然开 销相对较大,但其可兼容磁盘文件系统,方便文件交 流,并且对系统改动较小,移植方便,因而得到了广 泛的认可和应用.本研究基于STM32F103C8T6微控 制器和 G D 5F1G Q4UAYIG N A N D Flash(规格为 1 024 块,每块64页,每页2 112 Byte)的硬件平台,设计了 FTL层,实现了在极小嵌入式系统中N A N D Flash存 储系统的有效管理.1 NAND Flash 存储系统结构NAND Flash 存储系统总体框图如图1所示.硬件部分由NAND Flash 器件及其辅助电路组成;软件 部分分为用户层、文件系统层、F I L 层与存储技术设备(memory technology device ,MTD)层.图1存储系统框图系统的用户层主要为用户提供文件访问服务.文件系统层由通用的文件系统实现(如FAT16/ FAT32等),主要完成文件管理和为用户层提供服务 接口 .FTL层主要实现逻辑的数据读取与地址管理 等功能,对上层提供类似磁盘的固定512 Byte的扇 区式操作接口 .另外,由于N A N D Flash的存储原理 和制造工艺,在设计F T L 层时,还需要考虑坏块的 检测、管理与维护、碎片回收、磨损均衡及异常恢复 等情况[3] . M T D 层实现对Flash类设备的抽象化管 理,对上层提供读、写、擦除及拷贝页等功能接口,对收稿日期:2017-05-02.作者简介:任小平(1990 —),男,硕士,从事嵌入式系统与无线自组织网络研究.第2期任小平,等:极小嵌入式系统中闪存转换层的设计与实现•169 •下层实现硬件的操作,是系统内最底层的驱动程序.2 NAND Flash FTL的实现从功能上划分,F T L层主要完成地址映射、纠错、坏块管理、磨损均衡及垃圾收集等.2.1地址映射地址映射方式有多种,大体上可以分为3类:页 映射、块映射及混合映射[4].综合考虑R A M开销与 系统I/O开销,可以采用以下几种方法实现地址映 射:使用树状页映射,如M-F I L等;使用缓存映射表 算法,如D F I L等;使用混合映射算法,如BAST、LAST、FAST、KAST 及 Super Block 等[5].在极小嵌入式系统中,受限于系统资源,选择 BAST算法较为合适,同时,也可以通过对B A S T算 法进行针对化的优化,使其效率得到有效提高.本设计中,保留5%的物理空间,以3%的数据 块作为日志块(即32块).在初始无坏块的情况下,N A N D Flash的用户空间容量为120 M B.块地址映射 表将包含972个条目,一共2 K B.映射表数据结构如 表1所示.表1映射表数据结构类型意义u in tl6_tL B N逻辑块号u in tl6_ tPBN日志块物理块号uint8_ t Table [64]逻辑页一物理页映射表单个日志块的映射表大小为64 Byte,则32个日 志块的映射表大小为2 K B.米用二叉查找树(binary search tree,BST)构建查找表,地址映射部分仅占用4 K B内存,很好地平衡了内存开销和I/O调用,满足 了设计要求.2.2纠错算法N A N D Flash由于工艺上的限制,位翻转的问题 较N O R Flash和EEPR0M严重.因此,设计FT L层时 必须考虑纠错算法.本设计采用G D5F1GQ4UAYIG 数据手册中建议的E C C码,通过使用芯片本身内置 的Hamming E C C引擎来实现数据的纠错.其数据结 构如表2所示.表2每页数据结构用途大小/Byte起始地址扇区0200H0H扇区1200H200H扇区2200H400H扇区3200H600H页内偏移1H804H逻辑块号2H805H擦除次数3H807H(仅0页)块类型1H80AH块序号1H80BH 2.3坏块管理与保留块在初始化N A N D Flash时,由于N A N D Flash厂商 保证第0块为好块,因此F T L将选择第0块及后续 完好的一块作为保留块,写入坏块表和擦写次数等 信息,并在系统初始化时载入内存.每块占用2 bit,块状态定义如表3所示.表3块状态表编码意义00坏块11空块10数据块/日志块01系统块作为嵌入式系统,稳定性和可靠性应为系统的 最基本要求.若系统在运行过程中出现坏块率大于 阈值(2%)或平均擦除次数接近N A N D Flash理论擦 写总次数的5/6时,系统将自动进行写保护,并将出 现的不稳定情况通知上层文件系统N A N D Flash.2.4磨损均衡G D5F1G Q4UAYIG N A N D Flash 为 SLC 结构,单块仅10 000次的擦写寿命,因此需要对其实现动态 磨损均衡功能,避免对常用块的频繁擦写而出现坏 块.常用的磨损均衡算法可参见文献[6]所述.与其 他算法相比,H W L算法在内存较低的情况下拥有更 好的磨损均衡效果,故本研究选择H W L算法来实现 磨损均衡管理.H W L算法本身是不确定性算法,所 以在实现该算法时,本研究通过使用在擦除块/重写 块时统计每个块的擦除次数并写入该块的方法来统 计Flash的预期寿命,进而实现磨损均衡管理.2.5垃圾回收算法根据实际情况,本设计在实现垃圾回收时设定 垃圾回收的阈值为系统日志块的1/2.当日志数量大 于日志块容量的1/2时,系统监视进程将依据H W L 算法的计算结果选取相对最“冷”的日志块与其数据 块进行合并.当系统的日志块数量接近用完时,程序 设计为在写扇区过程中自动进行日志块的整理.被动垃圾回收操作由文件系统实现.文件系统在 删除文件后调用FIL层的删除扇区命令,然后FIL层 将计算扇区范围和删除扇区的开销,若满足含有1个 或多个连续块的情况,则会启动垃圾回收算法.2.6读写操作在读操作时,依次对块映射表和页映射表的内 容进行判断.如果逻辑地址不存在于块映射表中,则 返回空数据,否则对页映射表进行判断.如果逻辑基 站不存于页映射表中,则返回块映射表内容,否则返 回页映射表中对应内容.其流程图如图2所示.•170 •成都大学学报(自然科学版)第36卷图2读操作流程图在写操作时,由于应用层以512 Byte作为扇区的大小,而N A N D Flash每页的容量为2 048 Byte,所以程序先将数据写入缓冲区,在下列情况之一发生时,执行写入操作:系统刷新周期;应用层要求回读;向其他扇区写数据,会破坏缓冲区原本数据内容.具体在写操作时,先读取块映射表,若块映射表无此逻辑块的映射信息,则由H W L算法选择一个空块,在指定偏移处写入数据并修改映射表.若块映射表中有此逻辑块的映射信息,则判断此偏移页是否为空.如果逻辑地址偏移页为空,则写入数据,否则,判断此逻辑块的映射信息是否存在于页映射表中.如果逻辑块的映射信息存在于页映射表中,则判断日志块是否有空页,否则,以H W L算法分配空块,并新建页映射条目.若日志块的映射状态为完全连续的状态,则擦除数据块,并将原映射块标记为数据块.若出现日志块满的情况,则启动垃圾回收.其流程图如图3所示.2.7 F T L接口实现根据系统工作原理,本研究针对不同的功能,软件分模块实现为不同的函数.各函数接口名称和功能如表4所示.表4 F IL函数定义及功能说明函数定义函数功能ftl_ read(ftl_ t * ftl, sector, t sector,size _ t size, void * buffer),读扇区ftl_ write(ftl_ t * ftl, sector, t sector,size _ t size, void * buffer)’写扇区ftl _ init( ftl _ t * ftl,mtd _ t dev)FIL层初始化F IL的空闲函数,在系统空闲时调用,完成系统的垃圾回收和页刷新等任务ftl _ sync( ftl _ t * ftl)刷新FIL的缓冲区,保证M已同步ftl_ ioctl(ftl_ t* ftl,int cmd,*"*)F IL的控制函数,完成如被动垃圾 回收、安全擦除、获取平均擦除次 数及完全垃圾回收等用户手动调 用的任务ftl _ deinit( ftl _ t * ftl)卸载FIL层,写回数据已缓冲的写操作图3写操作流程图3 MTD子系统的实现M T D子系统实现对Flash的实际操作,具体函 数定义及功能说明如表5所示.表5 f f l D函数定义及功能说明__________________函数定义__________________mtd _ init( mtd _ t * dev)mtd _ info( mtd _ t * dev, info _ t * info)mtd_ write (mtd_ t * dev, page, t page, size, tsize, void * buffer)mtd_ read (mtd_ t * dev, page, t page, size, tsize,offset _ t offset,void * buffer)mtd _ erase(mtd _ t * dev,block _ t block)mtd_ deinit(mtd_ t*dev)mtd _ init( mtd _ t * dev)函数功能初始化存储设备获取存储设备的规格和容量向存储设备写入1页读出存储设备1页擦除存储设备1块关闭存储设备初始化存储设备4测试与结果测试在 STM32F103C8T6 与 G D5F1G Q4UAYIG 组 合的硬件平台上完成,设置通信速率为18 Mibit/s,以保证不影响N A N D Flash的读写性能,其硬件实物 如图4所示.图4硬件实物图第2期任小平,等:极小嵌入式系统中闪存转换层的设计与实现•171 •在硬件平台上运行整个软件系统,共占用8 KB S R A M与20 KB R O M(包括调试符号),实现了在极 小嵌入式系统中大容量存储系统的高效访问.同时,对存储系统进行大块数据访问的情况下进行测试,其测试结果如图5所示.1.8 r1.61- 霸_f__欄曝1.4丨.圖 圓圓1.2i图5大块数据访问测试结果由图5可知,随着Flash剩余存储容量的减少,对Flash访问速度并未受到影响,系统工作正常.最后,对系统进行掉电测试,其测试条件为系统 正在写入日志/数据或垃圾回收时,关断系统电源. 测试结果表明,在循环进行1 000次后,系统可顺利 回滚到上一状态,没有出现数据破坏或数据结构损 坏的情况.5结论在资源极度受限的极小嵌入式系统中,本研究 通过合理设计F T L层实现了大容量存储器的访问,为设备的智能互联提供了可能.后续的研究可进一 步从主动垃圾回收和应用新的页/日志搜索树的方式等方面来进一步提升系统的吞吐量和实时性能,实现在极小嵌入式系统中以较低的资源消耗达到类 似N A N D Flash专用文件系统的效果.参考文献:[1] 秦晓康,徐惠民.嵌入式设备N A N D Flash存储系统的设计与实现[J].计算机工程与设计,2010,31(3) :514-517. [2] Park G, Gheon W,Kang J, e t al. A reconfigurable FTL {flashtranslation layer) architecture fo r NAND flash-based applications[J] .A C M Trans E m b Comp Sys,2008,7(4) :202- 208.[3 ]Chung T S,Park D J,Park S,e t al. A survey o f Flash TranslationL a y e r U].J Syst Arch,2009,55(5 - 6) :332 - 343.[4] Gupta A, Kim Y, Urgaonkar B. D FTL:a flash translation layeremploying demand-based selective caching o f page-level address mappings[ C]//Proceedings o f the \A th Intematioanl Conference on Architectural Support fo r Programming Languages and Operat­ing System s. Washington, DC, U S A: A C M Press, 2009: 229 -240.[5] Lee Y G,Jung D,Kang D,et al. j u l-F T L:a memory-efficient flashtranslation layer supporting multiple mapping granularities[G]// ACM International Conference on Embedded Software,EMSOFT 2008. Atlanta,G A,U S A:A C M Press,2008 :21 - 30.[6] Chang L P. On efficient wear leveling fo r large-scale flash-memo­ry storage sy stem s[C]ff SA C f 01 Proceedings o f the 2007 ACM Symposium on Applied Computing. Seoul, Korea: A C M Press, 2007:1126- 1130.Design and Implementation of Flash Translation Layerin Small Embedded SystemREN Xiaoping,WAN Ruigang,LUO Zhenghua,HUANG Jiangang(School of Information Science and Engineering, Chengdu University, Chengdu 610106, China)Abstract:In order t o meet the demands of i n t e l l i g e n t interconnection development and t o deal with the problems of big data s t or a g e i n small embedded system,the paper’based on a thorough study of the f e a t u r e s of the widely used N A N D Flash i n embedded device,designs a s o l u t i o n t o deal with the problems i n N A N D f l a s h s to r a g e system i n small device system.The paper a l s o introduces the hiera rch ical s t r u c t u r e of the sys­tem and i t s functions,giving d eta iled account of the design and implementation of the address mapping,er­r o r correction,bad block management,wear leveling,and garbage c o l l e c t i o n i n f l a s h t r a n s l a t i o n layer.Mean-while,the driving and management of N A N D Flash are r e a l i z e d on a STM32F103 board.Furthermore,the study v e r i f i e s the e f f i c i e n c y and f e a s i b i l i t y of t h i s design.Key words: small embedded system;f l a s h t r a n s l a t i o n layer;wear leveling;address mapping;bad blockmanagement。

相关文档
最新文档