专利名称:一种Nand Flash擦除均衡的方法及装置的制作方法
技术领域:
本发明涉及存储器技术领域,特别是涉及一种Nand Flash擦除均衡的方法及装置。
背景技术:
Nand Flash具有成本低,容量大,稳定性较好的特点,在嵌入式领域得到广泛应 用。 Nand Flash的物理结构由页结构和块结构组成, 一个页的大小为512Bytes,每个 页有16Bytes的附加区Spare Area,这个区域不是数据区,可以用来存放与该页相关的一 些信息,如校验码等;一个块由相邻的32个页(或者64个页)组成,也就是16KB(或者 32KB)。页为读操作的基本单位,块为擦除操作的基本单位。在写某一区域之前,如果该区 域以前被写过,则需要先擦除包含该区域的整个块(先擦后写)。Nand Flash在写之前需 要对它所在块进行擦除,如果不对Nand Flash的写操作进行处理,则当每次写的数据量不 大时,就需要擦除整个块,同时还要将一个块的其他区域的数据同时保存,严重影响效率; 同时,由于Nand Flash实现技术,使得它的寿命有限(块的擦除次数有限),而在文件系统 中,存储器的某些块具有非常高的读写频率,如果让文件系统直接操作Nand Flash的物理 块,则其中使用频率高的块就会超过擦除次数,从而使得Nand Flash的存储空间减少,影响 Nand Flash的寿命。
发明内容
本发明要解决的技术问题是提供一种Nand Flash擦除均衡的的方法及装置,用以
解决现有技术中由于部分物理块擦除次数过多影响Nand Flash寿命的问题。 为解决上述技术问题,本发明提出了一种实现擦除均衡的方法,所述方法包括以
下步骤 至少设置第一擦除次数阈值,以及小于或等于所述第一擦除次数阈值的第二擦除 次数阈值;至少设置第一使用频率阈值,以及大于或等于第一使用频率阈值的第二使用频 率阈值; 根据所述第一擦除次数阈值、第二擦除次数阈值、第一使用频率阈值和第二使用 频率阈值,将Nand Flash的物理块划入不同的物理块区间内; 根据逻辑块的使用频率和原有映射关系,将逻辑块分别映射到相应物理块区间内 的物理块上。 进一步,将Nand Flash的物理块划入不同的物理块区间内,具体包括以下步骤
将擦除次数高于所述第一擦除次数阈值的空闲物理块划入空闲物理块第一区间 内; 将擦除次数低于所述第二擦除次数阈值的空闲物理块划入空闲物理块第二区间 内;
5
进一步,将Nand Flash的物理块划入不同的物理块区间内,具体包括以下步骤
将擦除次数高于第一擦除次数阈值、且被映射逻辑块的使用频率低于所述第一使 用频率阈值的使用物理块划入到使用物理块第一区间; 将擦除次数低于第二擦除次数阀值、且被映射逻辑块的使用频率低于所述第一使 用频率阀值的使用物理块划入到使用物理块第二区间; 将擦除次数低于第二擦除次数阈值、且被映射逻辑块的使用频率高于所述第二使 用频率阈值的使用物理块划入到使用物理块第三区间内; 将擦除次数高于第一擦除次数阀值、且被映射逻辑块的使用频率高于所述第二使 用频率阀值的使用物理块划入到使用物理块第四区间。 进一步,将逻辑块分别映射到相应物理块区间内的物理块上,具体包括以下步骤 当所述逻辑块没有映射物理块、且所述逻辑块的使用频率高于所述第二使用频率时
判断所述空闲物理块第二区间是否为空,不为空,则该逻辑块映射空闲物理块第 二区间内的物理块A,并将物理块A放入到所述使用物理块的第三区间;如果为空,则判断 所述使用物理块第二区间是否为空,如果否,则从所述使用物理块第二区间内取出其中的 一个物理块B,同时取出所述空闲物理块第一区间的物理块C,将该逻辑块映射到物理块B, 同时将物理块B放入到使用物理块的第三区间,将物理块B原来映射的逻辑块映射到物理 块C上,并将物理块C放入到所述使用物理块第一区间;如果所述使用物理块的第二区间为 空,则将该逻辑块映射到所述空闲物理块第一区间内的物理块D上,并将物理块D放入到所 述使用物理块第四区间内。
进一步,将逻辑块分别映射到相应物理块区间内的物理块上,具体包括以下步骤
当所述逻辑块没有映射物理块、且所述逻辑块的使用频率低于第一使用频率时 判断所述空闲物理块第一区间是否为空,如果不为空,则该逻辑块映射到所述空
闲物理块第一区间的物理块E,并将物理块E放入到所述使用物理块第一区间内;如果为
空,则判断所述使用物理块第四区间是否为空,如果不为空,则从所述使用物理块第四区间
内取出物理块F,并从所述空闲物理块第二区间的取出物理块G,将该逻辑块映射到物理块
F,将物理块F放入到所述使用物理块第一区间,将物理块F原先被映射的逻辑块映射到物
理块G,并将逻辑块G放入到使用物理块第三区间;如果所述使用物理块第四区间为空,则
将该逻辑块映射到空闲物理块第二区间的物理块H,并将物理块H放入到使用物理块的第
二区间。 进一步,将逻辑块分别映射到相应物理块区间内的物理块上,具体包括以下步骤 当所述逻辑块映射有物理块、且被映射的物理块在使用物理块第一区间或第三区间内,则 不进行重新映射,直接擦写被映射的物理块,再根据逻辑块的使用频率与被映射的物理块 的擦除次数,将该物理块划分到使用物理块的相应物理块区间内。 进一步,将逻辑块分别映射到相应物理块区间内的物理块上,具体包括以下步骤 当所述逻辑块映射有物理块、且被映射的物理块J在使用物理块第二区间内,则对所述逻 辑块进行重新映射,包括以下步骤 判断所述使用物理块第四区间是否为空,如果不为空,则取出该区间的物理块K, 将所述物理块J和物理块K的映射关系互换,完成后,再根据使用频率和擦除次数,将所述 物理块J和物理块K放入到相应的物理块区间内;如果所述使用物理块第四区间为空,则判
6断所述空闲物理块第一区间是否为空,如果不为空,则从所述空闲物理块第一区间取出物 理块L,将所述逻辑块映射到物理块L上,同时将物理块J放入到空闲物理块第二区间,再根 据物理块L的使用频率和擦除次数,放入到相应的物理块区间内;如果所述空闲物理块第 一区间为空,则不进行重新映射,直接擦写原来物理块J。 进一步,将逻辑块分别映射到相应物理块区间内的物理块上,具体包括以下步骤 当所述逻辑块映射有物理块、且被映射的物理块I在使用物理块第四区间,则对所述逻辑 块进行重新映射,包括以下步骤 判断所述使用物理块第二区间是否为空,如果不为空,则从所述使用物理块第二 区间中取出物理块M,将物理块I和物理块M的映射关系进行互换,完成后再根据使用频率 和擦除次数,将物理块I和M放入到相应的物理块区间内;如果所述使用物理块第二区间为 空,则判断所述空闲物理块第二区间是否为空,如果不为空,则从所述空闲物理块第二区间 取出的物理块N,将所述逻辑块重新映射到物理块N,同时将物理块I放入到空闲物理块第 一区间,根据使用频率和擦除次数,将物理块N放入到使用物理块的相应区间内;如果所述 空闲物理块第二区间为空,则不进行重新映射,直接擦写物理块I,并根据使用频率和擦除 次数,将物理块I放入到使用相应的物理块区间内。 进一步,在将所述逻辑块映射到相应物理块区间内的物理块上之后,进行写操作 时,包括以下步骤 判断需要写的逻辑块是否映射有物理块,如果否,则根据该逻辑块的使用频率,以 及所述第一使用频率阈值和第二使用频率阈值,对该逻辑块进行映射;如果是,则进一步判 断该物理块要写入的页是否已经被写入,如果是,则根据该逻辑块的使用频率,以及所述第 一使用频率阈值和第二使用频率阈值,对该逻辑块进行重新映射,如果否,则对该物理块进 行写操作。 进一步,当完成写操作后,当所述第一使用频率阈值、第二使用频率阈值、第一擦 除次数阈值和第二擦除次数阈值中的任何一个发生改变,则重新遍历Nand Flash的所有物 理块,将物理块重新划入不同的物理块区间内。 进一步,在判断需要写的逻辑块是否映射有物理块之前,还包括
当被识别的文件系统释放有物理块时,断开所述被释放物理块的映射关系。
进一步,在进行写操作之前,还包括以下步骤对所述物理块的每一页设置标志 位,用于表示该页是否已经被写入。 另一方面,本发明还提供一种Nand Flash擦除均衡的装置,所述装置包括
擦除次数阈值设置单元,用于设置第一擦除次数阈值,以及小于或等于所述第一 擦除次数阈值的第二擦除次数阈值; 使用频率阈值设置单元,用于设置第一使用频率阈值,以及大于或等于第一使用 频率阈值的第二使用频率阈值; 物理块区间划分单元,用于根据所述第一擦除次数阈值、第二擦除次数阈值、第一 使用频率阈值和第二使用频率阈值,将Nand Flash的物理块划入不同的物理块区间内;
地址映射单元,用于根据逻辑块的使用频率和原有映射关系,将逻辑块分别映射 到相应物理块区间内的物理块上。
进一步,所述装置还包括
映射关系判断单元,用于判断需要写的逻辑块是否映射有物理块; 页写入判断单元,用于判断物理块要写入的页是否已经被写入; 当所述映射关系判断单元判定需要写的逻辑块没有映射有物理块时,则根据该逻
辑块的使用频率,以及所述第一使用频率阈值和第二使用频率阈值,通过所述地址映射单
元对该逻辑块进行重新映射; 当映射关系判断单元判定需要写的逻辑块映射有物理块时,则页写入判断单元进 一步判断该物理块要写入的页是否已经被写入,如果是,则根据该逻辑块的使用频率,以及 所述第一使用频率阈值和第二使用频率阈值,通过所述地址映射单元对该逻辑块进行重新 映射;如果否,则对该物理块进行写操作。 进一步,所述装置还包括映射关系调整单元,用于当被识别的文件系统释放有物 理块时,断开所述被释放物理块的映射关系。 进一步,所述装置还包括标志位设置单元,用于对所述物理块的每一页设置用于 表示该页是否已经被写入的标志位。
本发明有益效果如下 通过将擦除次数较高的物理块映射到使用频率较低的逻辑块上,限制擦除次数较 高的物理块增加的擦除次数,将使用频率高的逻辑块映射到擦除次数低的物理块上,增加 擦除次数低的物理块的擦除次数,对Nand Flash的各个物理块的擦除次数进行均衡,避免 了因为部分物理块的擦除次数超过Nand Flash物理块的设置(额定)擦除次数,而造成 Nand Flash的存储空间减少,最终达到提高Nand Flash寿命的目的。另外,通过对物理块 的每一页设置标志位,对没有写的页直接进行写入,大大提高了 Nand Flash写的速度。
图1是本发明实施例1 一种Nand Flash擦除均衡的方法的流程图;
图2是本发明实施例2 —种Nand Flash擦除均衡的方法的流程图;
图3是本发明实施例2中一种逻辑块与物理块映射关系的对应图;
图4是本发明实施例3 —种Nand Flash擦除均衡的装置的结构示意图;
图5是本发明实施例4 一种Nand Flash擦除均衡的装置的结构示意图。
具体实施例方式
为了解决现有技术由于部分物理块擦除次数过多影响Nand Flash寿命的问题,本 发明提供了一种Nand Flash擦除均衡的方法及装置,以下结合附图以及实施例,对本发明 进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不限定 本发明。 Nand Flash的擦写,要求各个物理块的擦除次数均衡,因此,物理块的擦除次数, 对于提高Nand Flash的寿命,是非常重要的参考依据。同时,由于文件系统的性质,使得逻 辑块的使用频率各不相同,如果只考虑物理块的擦除次数,而不考虑逻辑块得使用频率,就 得不到好的均衡效果。本发明针对上述特点,提出了一种按块地址映射来实现Nand Flash 擦除均衡的方法,即根据逻辑块使用频率和物理块擦除次数来确定映射关系。为了实现上 述目的,需要将文件系统的操作地址和Nand Flash的实际地址分开,这里将文件系统操作的地址称为逻辑地址,Nand Flash的实际地址称为物理地址。 如图1所示,本发明实施例1涉及一种Nand Flash擦除均衡的方法,包括以下步 骤 S101,设置第一擦除次数阈值,以及小于或等于所述第一擦除次数阈值的第二擦 除次数阈值;设置第一使用频率阈值,以及大于或等于第一使用频率阈值的第二使用频率 阈值; 第一擦除次数阈值,主要是用于筛选擦除次数较高、且如果继续频繁进行擦除会 超过设定(额定)擦除次数、影响Nand Flash寿命的物理块。第一擦除次数阈值可以根据 经验进行设置,例如,取所有物理块的平均擦除次数(各个物理块的擦除次数求和后再除 以物理块的个数)为第一擦除次数阈值。也可以根据设定(额定)擦除次数进行设置,例 如,第一擦除次数阈值为设定(额定)擦除次数的百分之八十或百分之六十,具体比例可以 自由确定。例如,根据Nand Flash所有物理块的平均擦除次数确定,如果Nand Flash所有 物理块的平均擦除次数较低,则该比例也较低,设置第一擦除次数阈值为设定(额定)擦除 次数的百分之六十;如果Nand Flash所有物理块的平均擦除次数较高,则该比例也较高, 设置第一擦除次数阈值为设定(额定)擦除次数的百分之八十。另外,第一擦除次数阈值 也可以为动态变化的数值,例如,将第一擦除次数阈值与Nand Flash所有物理块的平均擦 除次数的进行关联,比如,设置第一擦除次数阈值为Nand Flash所有物理块的平均擦除次 数的1.2倍,具体倍数,可以根据具体的情况进行设置。当Nand Flash所有物理块的平均 擦除次数变化时,第一擦除次数阈值也会动态变化,进而调整第一物理块区间内包括不同 的物理块。第二擦除次数阈值主要是用于筛选擦除次数较低的物理块。第二擦除次数阈值 的设置与第一擦除次数阈值的设置相似,可以根据经验进行设置,也可以根据所有物理块 的平均擦除次数进行设置,或者根据设定(额定)擦除次数进行设置。
由于物理块的擦除次数与映射的逻辑块的使用频率有关,为了达到NandFlash内 各个物理块擦除次数的均衡,需要对物理块的擦除次数进行限制。因此,不能将使用频率 高的逻辑块映射到擦除次数高的物理块上,而需要将使用频率较低的逻辑块映射到擦除次 数高的物理块上。由上述分析可知,需要设置判断逻辑块使用频率的阈值,即设置第一使用 频率阈值和第二使用频率阈值。第一使用频率阈值主要是用于筛选使用频率较低的逻辑 块,第一使用频率阈值的设置,可以根据经验设置,也可以根据所有逻辑块的平均使用频率 (各个逻辑块的使用频率求和后除以逻辑块的个数)进行设置。例如,设置第一使用频率阈 值为Nand Flash所有逻辑块的平均使用频率的百分之二十或百分之三十。第二使用频率 阈值主要是用于筛选使用频率较高的逻辑块,第二使用频率阈值的设置与第一使用频率阈 值的设置也相似,可以根据经验设置,也可以根据所有逻辑块的平均使用频率(各个逻辑 块的使用频率求和后除以逻辑块的个数)进行设置。 S102,根据所述第一擦除次数阈值、第二擦除次数阈值、第一使用频率阈值和第二 使用频率阈值,将Nand Flash的物理块划入不同的物理块区间内;具体包括以下步骤
将擦除次数高于所述第一擦除次数阈值的空闲物理块划入空闲物理块第一区间 内; 将擦除次数低于所述第二擦除次数阈值的空闲物理块划入空闲物理块第二区间 内;
当使用物理块映射有逻辑块时,该使用物理块的擦除次数高于第一擦除次数阈 值、且被映射逻辑块的使用频率低于所述第一使用频率阈值,将该使用物理块划入到使用 物理块第一区间; 当使用物理块映射有逻辑块时,该使用物理块的擦除次数低于第二擦除次数阀 值、且被映射逻辑块的使用频率低于所述第一使用频率阀值,将该使用物理块划入到使用 物理块第二区间; 当使用物理块映射有逻辑块时,该使用物理块的擦除次数低于第二擦除次数阈 值、且被映射逻辑块的使用频率高于所述第二使用频率阈值,将该使用物理块划入到使用 物理块第三区间内; 当使用物理块映射有逻辑块时,该使用物理块的擦除次数高于第一擦除次数阀 值、且被映射逻辑块的使用频率高于所述第二使用频率阀值,将该使用物理块划入到使用 物理块第四区间。 其中,擦除次数是指物理块被擦除的次数;使用频率是指在设定的时间内逻辑块 被写的次数。使用频率可以通过计数器记录在设定时间内逻辑块被写的次数得到。另外, 根据物理块的映射关系,物理块分为空闲物理块和使用物理块,空闲物理块为没有被逻辑 块映射的物理块;使用物理块为被逻辑块映射的物理块。 S103,根据逻辑块的使用频率和原有映射关系,将逻辑块分别映射到相应物理块 区间内的物理块上。逻辑块的原有映射关系包括逻辑块是否映射有物理块,以及当逻辑块 映射有物理块时,被映射的物理块所属的物理块的区间。本步骤是对没有映射关系的逻辑 块进行映射,对已有映射关系的逻辑块进行重性映射。 将逻辑块分别映射到相应物理块区间内的物理块上,具体包括以下步骤 当所述逻辑块没有映射物理块、且所述逻辑块的使用频率高于所述第二使用频率
时 判断所述空闲物理块第二区间是否为空,不为空,则该逻辑块映射空闲物理块第 二区间内的物理块A,并将物理块A放入到所述使用物理块的第三区间;如果为空,则判断 所述使用物理块第二区间是否为空,如果否,则从所述使用物理块第二区间内取出其中的 一个物理块B,同时取出所述空闲物理块第一区间的物理块C,将该逻辑块映射到物理块B, 同时将物理块B放入到使用物理块的第三区间,将物理块B原来映射的逻辑块映射到物理 块C上,并将物理块C放入到所述使用物理块第一区间;如果所述使用物理块的第二区间为 空,则将该逻辑块映射到所述空闲物理块第一区间内的物理块D上,并将物理块D放入到所 述使用物理块第四区间内。 当所述逻辑块没有映射物理块、且所述逻辑块的使用频率低于第一使用频率时
判断所述空闲物理块第一区间是否为空,如果不为空,则该逻辑块映射到所述空 闲物理块第一区间的物理块E,并将物理块E放入到所述使用物理块第一区间内;如果为 空,则判断所述使用物理块第四区间是否为空,如果不为空,则从所述使用物理块第四区间 内取出物理块F,并从所述空闲物理块第二区间的取出物理块G,将该逻辑块映射到物理块 F,将物理块F放入到所述使用物理块第一区间,将物理块F原先被映射的逻辑块映射到物 理块G,并将逻辑块G放入到使用物理块第三区间;如果所述使用物理块第四区间为空,则 将该逻辑块映射到空闲物理块第二区间的物理块H,并将物理块H放入到使用物理块的第
10二区间。 当所述逻辑块映射有物理块、且被映射的物理块在使用物理块第一区间或第三区 间内,则不进行重新映射,直接擦写被映射的物理块,再根据逻辑块的使用频率与被映射的 物理块的擦除次数,将该物理块划分到使用物理块的相应物理块区间内。
当所述逻辑块映射有物理块、且被映射的物理块J在使用物理块第二区间内,则 对所述逻辑块进行重新映射,包括以下步骤 判断所述使用物理块第四区间是否为空,如果不为空,则取出该区间的物理块K, 将所述物理块J和物理块K的映射关系互换,完成后,再根据使用频率和擦除次数,将所述 物理块J和物理块K放入到相应的物理块区间内;如果所述使用物理块第四区间为空,则判 断所述空闲物理块第一区间是否为空,如果不为空,则从所述空闲物理块第一区间取出物 理块L,将所述逻辑块映射到物理块L上,同时将物理块J放入到空闲物理块第二区间,再根 据物理块L的使用频率和擦除次数,放入到相应的物理块区间内;如果所述空闲物理块第 一区间为空,则不进行重新映射,直接擦写原来物理块J。 当所述逻辑块映射有物理块、且被映射的物理块I在使用物理块第四区间,则对 所述逻辑块进行重新映射,包括以下步骤 判断所述使用物理块第二区间是否为空,如果不为空,则从所述使用物理块第二 区间中取出物理块M,将物理块I和物理块M的映射关系进行互换,完成后再根据使用频率 和擦除次数,将物理块I和M放入到相应的物理块区间内;如果所述使用物理块第二区间为 空,则判断所述空闲物理块第二区间是否为空,如果不为空,则从所述空闲物理块第二区间 取出的物理块N,将所述逻辑块重新映射到物理块N,同时将物理块I放入到空闲物理块第 一区间,根据使用频率和擦除次数,将物理块N放入到使用物理块的相应区间内;如果所述 空闲物理块第二区间为空,则不进行重新映射,直接擦写物理块I,并根据使用频率和擦除 次数,将物理块I放入到使用相应的物理块区间内。 上述步骤中,在逻辑块重新映射物理块时,如果新的物理块原先被映射有逻辑块, 则需要保存该物理块上所记录的信息。 另外,当完成逻辑地址写操作时,判断使用频率阀值或者擦除次数阀值是否已经 改变,如果其中任何一个阀值改变,则需要重新遍历所有物理块,根据上述方法,将物理块 重新划入到空闲物理块或使用物理块的相应区间内。 对于擦除次数介于第一擦除次数阈值和第二擦除次数阈值之间的物理块,以及使 用频率介于第一使用频率阈值和第二使用频率阈值之间的逻辑块,由于这些物理块的擦除 次数,及逻辑块的使用频率,相对于Nand Flash来说,就相对均衡,因此,这部分物理块与逻 辑块的映射关系可以为任意一种逻辑块与物理块的映射方法,例如随机映射,或将使用频 率由高到低的逻辑块依次映射到擦除次数由低到高的物理块上。无论采取哪种映射方式, 由于这些逻辑块的使用频率都相对于与使用频率低于第一使用频率阈值的逻辑块较高,而 相对于使用频率高于第二使用频率阈值的逻辑块较低,因此,与这些逻辑块有映射关系的 物理块的擦除次数的较多,相对于其它物理块,都相对均衡。这样,就达到了均衡擦除的目 的,也避免了因对擦除次数相对较高的物理块频繁进行擦除,造成影响Nand Flash寿命的 问题。 需要说明的是,如果为了获得更好的均衡结果,还可以设置介于第一擦除次数阈
11值和第二擦除次数阈值之间由低到高的第三擦除次数阈值、第四擦除次数阈值......第M
擦除次数阈值,其中,M为大于等于3的整数。设置介于第一使用频率阈值和第二使用频率
阈值之间由高到低的第三使用频率阈值、第四使用频率阈值......第N使用频率阈值,其
中,N为大于等于3的整数。然后根据上述擦除次数阈值和使用频率阈值,将Nand Flash的 物理块划入不同的物理块区间,按照将使用频率高的逻辑块映射到擦除次数低的物理块, 将使用频率低的逻辑块映射到擦除次数高的物理块的规则,进行地址映射。设置的擦除次 数阈值和使用频率阈值越多,也就能更好的达到物理块擦除次数的均衡,不过,实现的步骤 也就越复杂。 如图2所示,本发明实施例2涉及一种Nand Flash擦除均衡的方法,包括以下步 骤 步骤S201,设置第一擦除次数阈值,以及小于或等于所述第一擦除次数阈值的第 二擦除次数阈值;设置第一使用频率阈值,以及大于或等于第一使用频率阈值的第二使用 频率阈值; 步骤S202,根据所述第一擦除次数阈值、第二擦除次数阈值、第一使用频率阈值和
第二使用频率阈值,将Nand Flash的物理块划入不同的物理块区间内; 步骤S203,根据逻辑块的使用频率和映射关系,将所述逻辑块映射到相应物理块
区间内的物理块上。 步骤S201、 S202、 S203与实施例1相同,本实施例不再详细叙述。 由于Nand Flash具有按页写,按块擦除的特点,因此,在对Nand Flash进行写操
作时,还存在地址重新映射的可能。地址重新映射的条件是需要写的逻辑地址空间已经对
应有物理地址,且所对应物理块的相应空间已经被写过(相当于映射关系改写操作);或,
需要写的逻辑地址空间没有和物理地址进行映射(相当于映射关系追加操作)。在逻辑地
址和物理地址重新映射时,根据低使用频率映射高擦除次数,高使用频率映射低擦除次数
的原则进行映射。 在逻辑地址的重新映射过程中,当要被重新映射的物理块本身有逻辑块进行映射 时,会涉及到两个物理块之间的替换,这样会大大降低效率。而文件系统的文件删除操作, 只是更新目录和块分配表,没有真正的去删除文件,这样就会出现这样的情况,当所有逻辑 地址都被操作一次过后,所有的物理地址都会有对应的逻辑地址进行映射,进行任何一次 的重新映射都需要两块物理块间进行替换,极大减慢了写速度。为了解决这种情况,本发明 还包括以下步骤 步骤S204,当被识别的文件系统释放有物理块时,断开被释放物理块的映射关系。 以FAT文件系统为例,FAT文件系统以簇为单位进行存储空间的分配,它使用了 FAT表来分 配所需要的存储空间,当删除文件时,就会更新FAT表(置标志位),将删除文件所对应的簇 空间释放。通过检测FAT表的更新,当发现有物理块被释放时,就将与该物理块有映射关系 的逻辑块和该物理块间的映射关系断开。通过上述操作,可以极大提高Nand Flash的写效 率。当有不被识别的文件系统时,该步骤则不起作用,直接进行下述的写操作,虽然可能会 降低Nand Flash的访问效率,但不影响Nand Flash进行正常操作。
在对Nand Flash进行写操作时,还包括以下步骤 步骤S205,对物理块的每一页设置标志位,用于表示该页是否已经被写入。S卩,已经写入的页标志位置O,未写入的页标志位置1。 步骤S206,判断需要写的逻辑块是否映射有物理块,如果否,则需要对该逻辑块进 行追加映射操作,将需要写的数据拷贝到写缓冲区的相应缓存内,转步骤S209;如果是,则 转步骤S207。 步骤S207,由于Nand Flash是按页写,按块擦除,因此,在写入时,需要进一步判 断该物理块要写入的页是否已经被写入,即判断该页的标志位是否为l,如果是,则无法在 该页进行写操作,因此,需要对映射关系进行改写操作,则将所映射物理块内的有效数据读 出缓存,将要写的数据拷贝到该缓存的相应地址内,转骤S209 ;如果否,则将要写的数据写 入缓存中,转步骤S208。 步骤S208,从缓存中,将要写的数据写入到物理块相应的页中。 步骤S209,根据该逻辑块的使用频率,以及所述第一使用频率阈值和第二使用频
率阈值,对该逻辑块进行映射。映射的方法为步骤S201 S204,然后转步骤S206,直至所
有写操作结束。重新映射时,将需要写的逻辑块的使用次数加1,重新求平均使用频率,如果
平均使用频率改变,则更新物理块的各个链表。根据高使用频率逻辑块映射低擦除次数物
理块,低使用频率逻辑块映射高擦除次数物理块的原则找到需要映射的物理块。 在本实施例中,当第一擦除次数阈值等于第二擦除次数阈值,第一使用频率阈值
等于第二使用频率阈值时,即为最简单的二分区地址映射法,将逻辑块使用频率分为高、低
两种状态,使用频率大于平均使用频率的逻辑块为高使用频率逻辑块,小于或等于平均使
用频率的逻辑地址为低使用频率逻辑块;物理块也分为高低两种状态,高于平均擦除次数
的物理块划分为高擦除次数物理块,小于或等于平均擦除次数的物理块划为低擦除次数物
理块。这样逻辑块和使用物理块的映射关系就可以分为四种情况低使用频率低擦除次数;
低使用频率高擦除次数;高使用频率低擦除次数;高使用频率低擦除次数。如图3所示,图
中的黑点表示逻辑块和物理块的一对映射关系,坐标分别为逻辑块的使用频率和使用物理
块的擦除次数,中间的虚线分别表示平均擦除次数和平均使用频率。要获得好的均衡效果,
映射对要能尽可能的落入高使用频率低擦除次数、低使用频率高擦除次数的空间内。 为了实现上述操作,可以为物理块实现一个简单的数据结构 struct {
:0098] :0099] :0100]
:0101] :0102] :0103] :0104] :0105] :0106] :0107] :0108]
映射的逻辑块号;/*物理块所对应的逻辑块*/
块内可用page标识;/*指示块内哪些page是可用的(没有被写过)*
逻辑块的数据结构定义如下
映射的物理块号;/*逻辑块所对应的物理块*
13
}; 使用该方法,不用实现非常复杂的数据结构,就能获得非常好的均衡效果。
然后根据物理块的状态建立下面六个双向链表,即低使用频率低擦除次数链表; 低使用频率高擦除次数链表;高使用频率低擦除次数链表;高使用频率高擦除次数链表; 低擦除次数空闲链表;高擦除次数空闲链表。只有当平均使用频率或平均擦写次数改变 时,才重新遍历物理块重新构建链表,重新构建链表的概率为(1*100/(block总数))% (3*100/(block总数))%,以128MB的Nand Flash为例,Block总数为128*1024/(16)= 8192,重新构建链表的概率0. 01 % 0. 04%,因此对整体性能不会有影响。使用上述数据 结构,所占用的内存空间为(4*5+4*2)*8192/1024 = 224KB,使用的内存空间非常少。
初始化时根据各个物理块的参数分别将它们加入到不同的链表中。初始化流程如 下 步骤1、初始化物理参数,逻辑块参数;置物理块链表为空;开辟一块Block大小的 写缓冲区。 步骤2、判断Nand Flash中是否设置过物理块参数(擦除次数,映射的逻辑块号, 页使用标志位)和逻辑块参数(映射的物理块号,使用频率),如果没有设置上述参数,则表 明该Nand Flash是初次使用本实施例的方法,则转步骤3,如果设置过上述参数,则转步骤 4。 步骤3、将Nand Flash物理块全部擦除,更新物理块的擦除次数为1,映射关系为 空,页的标志位为未被使用;更新逻辑块的映射关系为空,使用次数为0 ;更新各个物理块 的相应Spare区域,将擦除次数置为1。转步骤5。 步骤4、读取物理块的参数,更新物理块参数;根据物理块与逻辑块的映射关系, 更新逻辑块参数中的映射物理块号;计算平均擦除次数,遍历物理块,根据物理块擦除次 数,更新被映射的逻辑块的使用次数。 步骤5、判断文件系统是否能识别,如果是,则检测文件分配表,转步骤6,否则转 步骤7。 步骤6、根据分配表中的空闲物理块(断开映射关系的物理块),重新更新物理块 和逻辑块参数。 步骤7、创建物理块链表遍历物理块,根据映射关系、擦除次数、映射的逻辑块的
使用频率,将物理块加入到不同的链表中。
步骤8、初始化完成。 物理块的参数(擦除次数,映射的逻辑块号,页使用标识)非常重要,必须要进行 保存;对于逻辑块的参数(映射的物理块号,使用频率)、映射关系可以由物理块获得。使 用频率在每次掉电重新启动后被重新设置,设置原则是空闲逻辑块的初始使用次数为1, 映射到高擦除次数的物理块的逻辑块的初始使用次数为0,映射到低擦除次数物理块的逻 辑块的初始使用次数为1。这样的初始化依据是使用均衡擦除方法,物理块基本都集中在 低使用频率高擦除次数和高使用频率低擦除次数的空间,在初始化时将物理块映射到这两 个空间与实际情况接近;空闲逻辑块的使用频率相对来说使用频率也较低。本发明将物理 块的参数保存在每一个物理块的最后一个页的Spare区域中,在每次将物理块重新分配后 都需要更新该Spare区域,由于Spare区域很小,与写数据区相比操作时机可以忽略。使用该方式可以在Nand Flash访问的过程中动态更新这些重要的参数,也不会影响访问效率。 经过上述步骤后的Nand Flash,进行读的流程包括以下步骤 Sl,将读地址按页进行划分,以页为单位进行读操作;有多个也则反复调用步骤
S2-S5。 S2、判断需要读的页所对应的逻辑块是否映射有物理块,没有则转S3 ;如果有映 射关系,转S4。 S3、将缓冲区所有字节置为0XFF,转S5。 S4、将逻辑块地址转换为物理块地址,再在该物理地址上加上访问页地址在块内 的偏移,调用Nand Flash的读函数进行读操作。完成后转S5.
S5、读完成。 如图4所示,本发明实施例3涉及一种Nand Flash擦除均衡的装置,包括
擦除次数阈值设置单元401,用于设置第一擦除次数阈值,以及小于或等于所述第 一擦除次数阈值的第二擦除次数阈值; 使用频率阈值设置单元402,用于设置第一使用频率阈值,以及大于或等于第一使 用频率阈值的第二使用频率阈值; 物理块区间划分单元403,分别与所述擦除次数阈值设置单元401和使用频率阈
值设置单元402连接,用于根据所述第一擦除次数阈值、第二擦除次数阈值、第一使用频率
阈值和第二使用频率阈值,将Nand Flash的物理块划入不同的物理块区间内; 地址映射单元404,分别与所述擦除次数阈值设置单元401、使用频率阈值设置单
元402和物理块区间划分单元403连接,用于根据逻辑块的使用频率和原有映射关系,将逻
辑块分别映射到相应物理块区间内的物理块上。 如图5所示,本发明实施例4涉及一种Nand Flash擦除均衡的装置,包括
擦除次数阈值设置单元501,用于设置第一擦除次数阈值,以及小于或等于所述第 一擦除次数阈值的第二擦除次数阈值; 使用频率阈值设置单元502,用于设置第一使用频率阈值,以及大于或等于第一使 用频率阈值的第二使用频率阈值; 物理块区间划分单元503,分别与所述擦除次数阈值设置单元501和使用频率阈 值设置单元502连接,用于根据所述第一擦除次数阈值、第二擦除次数阈值、第一使用频率 阈值和第二使用频率阈值,将Nand Flash的物理块划入不同的物理块区间内;
地址映射单元504,分别与所述擦除次数阈值设置单元501、使用频率阈值设置单 元502和物理块区间划分单元503连接,用于根据逻辑块的使用频率和原有映射关系,将逻 辑块分别映射到相应物理块区间内的物理块上。 映射关系调整单元505,与地址映射单元504连接,用于当被识别的文件系统释放 有物理块时,断开被释放物理块的映射关系。 映射关系判断单元506,与映射关系调整单元505连接,用于判断需要写的逻辑块 是否映射有物理块; 页写入判断单元507,与映射关系判断单元506连接,用于判断物理块要写入的页 是否已经被写入; 当映射关系判断单元506判定需要写的逻辑块没有映射有物理块时,则根据该逻
15辑块的使用频率,以及第一使用频率阈值和第二使用频率阈值,通过地址映射单元504对 该逻辑块进行映射; 当映射关系判断单元506判定需要写的逻辑块映射有物理块时,则页写入判断单 元507进一步判断该物理块要写入的页是否已经被写入,如果是,则根据该逻辑块的使用 频率,以及第一使用频率阈值和第二使用频率阈值,通过地址映射单元504对该逻辑块进 行映射;如果否,则对该物理块进行写操作。 标志位设置单元508,与页写入判断单元507连接,用于对物理块的每一页设置用 于表示该页是否已经被写入的标志位。 由上述实施例可以看出,通过将擦除次数较高的物理块映射到使用频率较低的逻 辑块上,限制擦除次数较高的物理块增加的擦除次数,将擦除次数低的物理块映射到使用 频率高的逻辑块上,增加擦除次数低的物理块的擦除次数,对Nand Flash的各个物理块的 擦除次数进行均衡,避免了因为部分物理块的擦除次数超过Nand Flash物理块的设置(额 定)擦除次数,而造成Nand Flash的存储空间减少,最终达到提高Nand Flash寿命的目的。 另外,通过对物理块的每一页设置标志位,对没有写的页直接进行写入,大大提高了Nand Flash写的速度。 尽管为示例目的,已经公开了本发明的优选实施例,本领域的技术人员将意识到 各种改进、增加和取代也是可能的,因此,本发明的范围应当不限于上述实施例。
权利要求
一种Nand Flash擦除均衡的方法,其特征在于,所述方法包括以下步骤至少设置第一擦除次数阈值,以及小于或等于所述第一擦除次数阈值的第二擦除次数阈值;至少设置第一使用频率阈值,以及大于或等于第一使用频率阈值的第二使用频率阈值;根据所述第一擦除次数阈值、第二擦除次数阈值、第一使用频率阈值和第二使用频率阈值,将Nand Flash的物理块划入不同的物理块区间内;根据逻辑块的使用频率和原有的映射关系,将逻辑块分别映射到相应物理块区间内的物理块上。
2. 如权利要求1所述的Nand Flash擦除均衡的方法,其特征在于,将NandFlash的物 理块划入不同的物理块区间内,具体包括以下步骤将擦除次数高于所述第一擦除次数阈值的空闲物理块划入空闲物理块第一区间内; 将擦除次数低于所述第二擦除次数阈值的空闲物理块划入空闲物理块第二区间内。
3. 如权利要求2所述的Nand Flash擦除均衡的方法,其特征在于,将NandFlash的物 理块划入不同的物理块区间内,具体包括以下步骤将擦除次数高于第一擦除次数阈值、且被映射逻辑块的使用频率低于所述第一使用频 率阈值的使用物理块划入到使用物理块第一区间;将擦除次数低于第二擦除次数阀值、且被映射逻辑块的使用频率低于所述第一使用频 率阀值的使用物理块划入到使用物理块第二区间;将擦除次数低于第二擦除次数阈值、且被映射逻辑块的使用频率高于所述第二使用频 率阈值的使用物理块划入到使用物理块第三区间内;将擦除次数高于第一擦除次数阀值、且被映射逻辑块的使用频率高于所述第二使用频 率阀值的使用物理块划入到使用物理块第四区间。
4. 如权利要求3所述的Nand Flash擦除均衡的方法,其特征在于,将逻辑块分别映射 到相应物理块区间内的物理块上,具体包括以下步骤当所述逻辑块没有映射物理块、且所述逻辑块的使用频率高于所述第二使用频率时 判断所述空闲物理块第二区间是否为空,不为空,则该逻辑块映射空闲物理块第二区 间内的物理块A,并将物理块A放入到所述使用物理块的第三区间;如果为空,则判断所述 使用物理块第二区间是否为空,如果否,则从所述使用物理块第二区间内取出其中的一个 物理块B,同时取出所述空闲物理块第一区间的物理块C,将该逻辑块映射到物理块B,同时 将物理块B放入到使用物理块的第三区间,将物理块B原来映射的逻辑块映射到物理块C 上,并将物理块C放入到所述使用物理块第一区间;如果所述使用物理块的第二区间为空, 则将该逻辑块映射到所述空闲物理块第一区间内的物理块D上,并将物理块D放入到所述 使用物理块第四区间内。
5. 如权利要求3所述的Nand Flash擦除均衡的方法,其特征在于,将逻辑块分别映射 到相应物理块区间内的物理块上,具体包括以下步骤当所述逻辑块没有映射物理块、且所述逻辑块的使用频率低于第一使用频率时 判断所述空闲物理块第一区间是否为空,如果不为空,则该逻辑块映射到所述空闲物 理块第一区间的物理块E,并将物理块E放入到所述使用物理块第一区间内;如果为空,则 判断所述使用物理块第四区间是否为空,如果不为空,则从所述使用物理块第四区间内取出物理块F,并从所述空闲物理块第二区间的取出物理块G,将该逻辑块映射到物理块F,将 物理块F放入到所述使用物理块第一区间,将物理块F原先被映射的逻辑块映射到物理块 G,并将逻辑块G放入到使用物理块第三区间;如果所述使用物理块第四区间为空,则将该 逻辑块映射到空闲物理块第二区间的物理块H,并将物理块H放入到使用物理块的第二区 间。
6. 如权利要求3所述的Nand Flash擦除均衡的方法,其特征在于,将逻辑块分别映射 到相应物理块区间内的物理块上,具体包括以下步骤当所述逻辑块映射有物理块、且被映射的物理块在使用物理块第一区间或第三区间 内,则不进行重新映射,直接擦写被映射的物理块,再根据逻辑块的使用频率与被映射的物 理块的擦除次数,将该物理块划分到使用物理块的相应物理块区间内。
7. 如权利要求3所述的Nand Flash擦除均衡的方法,其特征在于,将逻辑块分别映射 到相应物理块区间内的物理块上,具体包括以下步骤当所述逻辑块映射有物理块、且被映射的物理块J在使用物理块第二区间内,则对所 述逻辑块进行重新映射,包括以下步骤判断所述使用物理块第四区间是否为空,如果不为空,则取出该区间的物理块K,将所 述物理块J和物理块K的映射关系互换,完成后,再根据使用频率和擦除次数,将所述物理 块J和物理块K放入到相应的物理块区间内;如果所述使用物理块第四区间为空,则判断所 述空闲物理块第一区间是否为空,如果不为空,则从所述空闲物理块第一区间取出物理块 L,将所述逻辑块映射到物理块L上,同时将物理块J放入到空闲物理块第二区间,再根据物 理块L的使用频率和擦除次数,放入到相应的物理块区间内;如果所述空闲物理块第一区 间为空,则不进行重新映射,直接擦写原来物理块J。
8. 如权利要求3所述的Nand Flash擦除均衡的方法,其特征在于,将逻辑块分别映射 到相应物理块区间内的物理块上,具体包括以下步骤当所述逻辑块映射有物理块、且被映射的物理块I在使用物理块第四区间,则对所述 逻辑块进行重新映射,包括以下步骤判断所述使用物理块第二区间是否为空,如果不为空,则从所述使用物理块第二区间 中取出物理块M,将物理块I和物理块M的映射关系进行互换,完成后再根据使用频率和擦 除次数,将物理块I和M放入到相应的物理块区间内;如果所述使用物理块第二区间为空, 则判断所述空闲物理块第二区间是否为空,如果不为空,则从所述空闲物理块第二区间取 出的物理块N,将所述逻辑块重新映射到物理块N,同时将物理块I放入到空闲物理块第一 区间,根据使用频率和擦除次数,将物理块N放入到使用物理块的相应区间内;如果所述空 闲物理块第二区间为空,则不进行重新映射,直接擦写物理块I,并根据使用频率和擦除次 数,将物理块I放入到使用相应的物理块区间内。
9. 如权利要求1所述的Nand Flash擦除均衡的方法,其特征在于,在将所述逻辑块映 射到相应物理块区间内的物理块上之后,进行写操作时,包括以下步骤判断需要写的逻辑块是否映射有物理块,如果否,则根据该逻辑块的使用频率,以及所 述第一使用频率阈值和第二使用频率阈值,对该逻辑块进行映射;如果是,则进一步判断该 物理块要写入的页是否已经被写入,如果是,则根据该逻辑块的使用频率,以及所述第一使 用频率阈值和第二使用频率阈值,对该逻辑块进行重新映射,如果否,则对该物理块进行写操作。
10. 如权利要求9所述的Nand Flash擦除均衡的方法,其特征在于,当完成写操作后, 当所述第一使用频率阈值、第二使用频率阈值、第一擦除次数阈值和第二擦除次数阈值中 的任何一个发生改变,则重新遍历Nand Flash的所有物理块,将物理块重新划入不同的物 理块区间内。
11. 如权利要求9所述的Nand Flash擦除均衡的方法,其特征在于,在判断需要写的逻 辑块是否映射有物理块之前,还包括当被识别的文件系统释放有物理块时,断开被释放物理块的映射关系。
12. 如权利要求9所述的Nand Flash擦除均衡的方法,其特征在于,在进行写操作之 前,还包括以下步骤对所述物理块的每一页设置标志位,用于表示该页是否已经被写入。
13. —种Nand Flash擦除均衡的装置,其特征在于,所述装置包括 擦除次数阈值设置单元,用于设置第一擦除次数阈值,以及小于或等于所述第一擦除次数阈值的第二擦除次数阈值;使用频率阈值设置单元,用于设置第一使用频率阈值,以及大于或等于第一使用频率 阈值的第二使用频率阈值;物理块区间划分单元,用于根据所述第一擦除次数阈值、第二擦除次数阈值、第一使用 频率阈值和第二使用频率阈值,将Nand Flash的物理块划入不同的物理块区间内;地址映射单元,用于根据逻辑块的使用频率和原有映射关系,将逻辑块分别映射到相 应物理块区间内的物理块上。
14. 如权利要求13所述的Nand Flash擦除均衡的装置,其特征在于,所述装置还包括映射关系判断单元,用于判断需要写的逻辑块是否映射有物理块; 页写入判断单元,用于判断物理块要写入的页是否已经被写入;当所述映射关系判断单元判定需要写的逻辑块没有映射有物理块时,则根据该逻辑块 的使用频率,以及所述第一使用频率阈值和第二使用频率阈值,通过所述地址映射单元对 该逻辑块进行重新映射;当映射关系判断单元判定需要写的逻辑块映射有物理块时,则页写入判断单元进一 步判断该物理块要写入的页是否已经被写入,如果是,则根据该逻辑块的使用频率,以及所 述第一使用频率阈值和第二使用频率阈值,通过所述地址映射单元对该逻辑块进行重新映 射;如果否,则对该物理块进行写操作。
15. 如权利要求14所述的Nand Flash擦除均衡的装置,其特征在于,所述装置还包括映射关系调整单元,用于当被识别的文件系统释放有物理块时,断开所述被释放物理 块的映射关系。
16. 如权利要求14所述的Nand Flash擦除均衡的装置,其特征在于,所述装置还包括标志位设置单元,用于对所述物理块的每一页设置用于表示该页是否已经被写入的标 志位。
全文摘要
本发明公开了一种实现擦除均衡的方法及装置,方法包括至少设置第一擦除次数阈值和小于或等于第一擦除次数阈值的第二擦除次数阈值;至少设置第一使用频率阈值和大于或等于第一使用频率阈值的第二使用频率阈值;根据第一擦除次数阈值、第二擦除次数阈值、第一使用频率阈值和第二使用频率阈值,将Nand Flash的物理块划入不同的物理块区间内;根据逻辑块的使用频率和原有映射关系,将逻辑块分别映射到相应物理块区间内的物理块上。本发明通过将擦除次数较高的物理块映射到使用频率较低的逻辑块上,限制擦除次数较高的物理块增加的擦除次数,对Nand Flash的各个物理块的擦除次数进行均衡,避免了因为部分物理块的擦除次数过高造成存储空间减少,提高了NandFlash寿命。
文档编号G11C7/20GK101740110SQ200910260369
公开日2010年6月16日 申请日期2009年12月17日 优先权日2009年12月17日
发明者熊泉 申请人:中兴通讯股份有限公司