11

2.7.1  NF_ReadSector 11

2.7.2 NF_WriteSector 14

2.7.3  两个基本扇区读写函数中调用到的函数概述 17

2.8  逻辑读写的实现 18

2.8.1  缓存块时间戳 18 

2.8.2  LDT_UpdateEarlyOneBlock 18

2.8.3  LDT_SuperUpdate 18

2.8.4  LDT_WritePage 20

2.8.5 LDT_ReadPage 25

3 简单评估所分析的源代码 25

3.1 假设模拟写操作,分析负载均衡效果 26

3.2 简单做比较 28

结  论 29

致  谢 30

参考文献 31

 1  绪论

闪存( flash memory)已经成为当今最为流行的存储介质之一,大有要超越硬盘的趋势。它具有许多有非易失、防震、节能、体积小、容量大等等有点,但也有其局限性。闪存块的读写单位是页,擦除单位是块,一个块包含很多页,要写一个页,就必须先擦除该页所在的块。而闪存的瓶颈就在块擦除操作上,不仅耗时长,更重要的是擦除次数有限。

因此闪存多采用异地更新策略,需要维护物理地址和逻辑地址的映射表关系,并且尽可有分散擦除操作到每个块上,以延长使用寿命。作者主要查看各种相关资料,然后对导师给的一个u盘固件代码中的flash管理模块进行剖析,并分析使用的负载均衡方法,简单与资料中的方法进行比较。

1.1  背景

U盘的存储体主要使用NAND Flash memory(闪存),它具有许多优点,存储容量大、体积小、掉电数据不易丢失以及可多次擦写等,但也有其自身的限制。

闪存由若干个闪存块(block)组成,每个闪存块又分为若干个物理页(page)。闪存块是擦除操作的最小单位,而读和写都是以页为单位的。

闪存采取异地更新的策略,更新的数据会被放到别的物理页上,而不是覆盖原来的数据。包含新版本数据的页被称为有效页,新版本数据被称为有效数据。包含旧版本数据的页被称为无效页,或称为脏页,脏页经过擦除操作后成为空闲页,才可以重新写入数据。因为闪存是以块为单位执行擦除的,因此需要将脏页所在块上的所有的物理页都擦除, 在擦除之前需要检查此块上是否存在有效页,如果存在就必须先转移到其他块上。因为每个闪存块的擦除次数有限,一般是在10万次到100万次之间,只要有块的擦除次数达到了上限,闪存数据存储就会变得不可靠。

由于闪存采用异地更新的缘故,逻辑页与物理页的对应关系一直在改变,所以要正确存取数据就必须建立一个物理页和逻辑页的映射表。这样,数据更新后只需改变映射表中物理页的地址,并将原版本数据所在的物理页标示为无效。

综上说述,就需要用一个算法来维护映射表,并使得擦除操作均匀地发生在每个块上。

这一类算法叫做磨损均衡(wear-leveling)算法,用字来实现闪存页面置换,和块擦除维护工作。

2  算法综述

磨损均衡算法按照处理过程中是否带有随机性可以分成两类。

2.1  随机性磨损均衡算法

这类算法在以下几个策略中体现随机性:均衡处理触发条件,处理块的选择,转移有

上一篇:基于组合导航系统的地图创建技术
下一篇:Android微博手机客户端软件的设计与实现

基于Apriori算法的电影推荐

基于PageRank算法的网络数据分析

基于神经网络的验证码识别算法

python基于决策树算法的球赛预测

Linux内核的键盘模拟实现【1538字】

加密与解密算法的研究【1931字】

一種删除准则的NOMA资源联...

张洁小说《无字》中的女性意识

LiMn1-xFexPO4正极材料合成及充放电性能研究

互联网教育”变革路径研究进展【7972字】

网络语言“XX体”研究

我国风险投资的发展现状问题及对策分析

新課改下小學语文洧效阅...

ASP.net+sqlserver企业设备管理系统设计与开发

麦秸秆还田和沼液灌溉对...

老年2型糖尿病患者运动疗...

安康汉江网讯