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微博手机客户端软件的设计与实现

国产加密算法的研究与实现

基于深度学习的目标识别算法研究

智能算法的海上应急救援基地选址优化设计

基于启发式算法的智能路径规划研究

SOM神经网络多机器人任务分配算法研究

Lukasiewicz模糊算子的图像融合算法研究+源代码

SIFT算法图像匹配研究+程序

基于Joomla平台的计算机学院网站设计与开发

压疮高危人群的标准化中...

AES算法GPU协处理下分组加...

提高教育质量,构建大學生...

STC89C52单片机NRF24L01的无线病房呼叫系统设计

浅论职工思想政治工作茬...

浅谈高校行政管理人员的...

上海居民的社会参与研究

酵母菌发酵生产天然香料...

从政策角度谈黑龙江對俄...