利用数据有限寿命提高闪存芯片写入速度的方法、系统及其控制器转让专利

申请号 : CN201210372573.8

文献号 : CN102880432B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 张彤邹粤林

申请人 : 邹粤林

摘要 :

本发明公开了一种利用数据有限寿命利用数据有限寿命提高闪存芯片写入速度的方法,其中闪存包括多个闪存芯片,每一闪存芯片包括多个闪存页面,该方法包括步骤:实时监测闪存的可用存储空间的大小;当监测到当前闪存的可用存储空间大于预设的阈值时,将接收到的新的有效数据写入互不相邻的闪存页面内;当监测到当前闪存的可用存储空间小于预设的阈值时,将接收到的新的有效数据写入存有无效数据的闪存页面的相邻的闪存页面内。本发明还公开了一种闪存存储系统及其控制器。采用本发明实施例,能够有效地利用实际应用中数据寿命期存在较大差异的特性而提高数据写入速度,且实现过程简单、易行。

权利要求 :

1.一种利用数据有限寿命提高闪存芯片写入速度的方法,其中闪存包括多个闪存芯片,每一闪存芯片包括多个闪存页面,其特征在于,该方法包括步骤:实时监测闪存的可用存储空间的大小,检测所述闪存页面的最差可能的噪音容限并根据所述最差可能的噪音容限设定当前的最大允许的数据写入速度;

当监测到当前闪存的可用存储空间大于预设的阈值时,将接收到的新的有效数据写入互不相邻的闪存页面内,且写入数据的闪存页面之间隔着一个闪存页面;

当监测到当前闪存的可用存储空间小于预设的阈值时,将接收到的新的有效数据写入存有无效数据的闪存页面的相邻的闪存页面内。

2.如权利要求1所述的利用数据有限寿命提高闪存芯片写入速度的方法,其特征在于,当监测到当前闪存的可用存储空间小于预设的阈值时,若发现某一闪存页面的相邻闪存页面存有的数据均无效时,将接收到的新的有效数据写入所述闪存页面内。

3.一种控制器,其特征在于,包括:

微处理单元;

闪存接口,耦接至所述微处理单元以及闪存,其中闪存包括多个闪存芯片,每一闪存芯片包括多个闪存页面;

闪存管理模块,耦接至所述微处理单元以通过微处理单元对所述闪存执行闪存管理程序,包括:可用存储空间监测单元,用于实时监测闪存的可用存储空间的大小,当监测到当前闪存的可用存储空间大于预设的阈值时,将接收到的新的有效数据写入互不相邻的闪存页面内,且写入数据的闪存页面之间隔着一个闪存页面;

过期数据无效地址记录单元,用于检测和记录存有的数据过期无效的闪存页面的物理地址,并且当可用存储空间监测单元监测到当前闪存的可用存储空间小于预设的阈值时,将接收到的新的有效数据写入存有无效数据的闪存页面的相邻的闪存页面内;

噪音容限检测单元,用于检测当前要写入的闪存页面的最差可能的噪音容限;

数据写入速度设定单元,用于根据所述最差可能的噪音容限设定当前的最大允许的数据写入速度。

4.如权利要求3所述的控制器,其特征在于,当可用存储空间监测单元监测到当前闪存的可用存储空间小于预设的阈值时,若过期数据无效地址记录单元记录的某一闪存页面的相邻闪存页面存有的数据均无效时,将接收到的新的有效数据写入所述闪存页面内。

5. 一种闪存存储系统,其特征在于, 包括:

闪存,包括多个闪存芯片,每一闪存芯片包括多个闪存页面;

控制器,耦接至所述闪存芯片以实时监测闪存的可用存储空间的大小,检测所述闪存页面的最差可能的噪音容限并根据所述最差可能的噪音容限设定当前的最大允许的数据写入速度;当监测到当前闪存的可用存储空间大于预设的阈值时,将接收到的新的有效数据写入互不相邻的闪存页面内,且写入数据的闪存页面之间隔着一个闪存页面;当监测到当前闪存的可用存储空间小于预设的阈值时,将接收到的新的有效数据写入存有无效数据的闪存页面的相邻的闪存页面内。

说明书 :

利用数据有限寿命提高闪存芯片写入速度的方法、系统及

其控制器

技术领域

[0001] 本发明涉及通信技术领域,尤其涉及一种利用数据有限寿命提高闪存芯片写入速度的方法、闪存存储系统及其控制器。

背景技术

[0002] 作为唯一主流的固态非挥发数据储存技术,闪存已经成为了全球半导体产业体系中发展最为迅速的一环。2010年市场研究报告显示,闪存产品的市场已突破200亿美元。基于闪存芯片的固态数据存储系统主要包含一个固态存储系统控制器和一个以上闪存芯片。
[0003] 闪存芯片的基本信息存储单元是浮栅金属氧化物半导体晶体管 (Floating-Gate Transistor)。浮栅金属氧化物半导体晶体管的阈值电压可以通过注射一定数量的电子进入浮栅而改变。因此,通过对浮栅内电子数目的精确控制,每个存储单元,即浮栅金属氧化物半导体晶体管,可储存多个比特信息。精确控制浮栅内电子数目的过程通常被称为编程。在每一个存储单元可以被编程之前,其浮栅内的所有电子必须被移走,从而使得其阈值电压被置为最低,这个过程被称为擦除。在对信息存储单元编程的过程中,业界使用一种渐进式的“编程-校验-再编程”的方法以实现对浮栅内电子数目的精确控制。重复的“编程/擦除”(program/erase) 的操作会逐渐在浮栅金属氧化物半导体晶体管内引入越来越多的电子陷阱(traps),以导致越来越低的浮栅金属氧化物半导体晶体管的噪音容限,从而使得闪存芯片只有一定的“编程/擦除”次数限度。
[0004] 闪存芯片数据读写操作以页面(page)作为基本单位,每一页面内所包含的用户数据通常为4096字节(byte)、8192字节或16384字节。一定数量(如256、512)的存储页面组成一个存储块,闪存芯片由大量同等大小的存储块以及必须的外围辅助电路构成。数据擦除操作必须以存储块为单位。
[0005] 在对一个页面内所有信息存储单元进行编程时,会对其紧相邻的页面所存储的信息带来干扰,带来相邻页面的数据存储稳定性的下降。这主要是由于相邻信息存储单元之间的寄生电容所引起的串扰(cell-to-cell interference)。随着闪存制造工艺的不断提高,相邻信息存储单元之间会越来越近,直接导致相邻信息存储单元之间的寄生电容及其所引发的相邻信息存储单元之间的串扰会越来越大。为了尽量克服信息存储单元之间的串扰对数据存储稳定性的影响,闪存芯片必须在渐进式“编程-校验-再编程”的过程中使用足够小的编程步长以提高信息存储单元的噪声容限,进而提高对相邻信息存储单元之间串扰的容忍度。但是,闪存芯片数据编程的速度直接正比于编程步长的大小。所以,当降低编程步长以提高信息存储单元的噪声容限时,闪存芯片数据编程的速度也会同时下降。
[0006] 可见,在现有实现中,为了实现对相邻信息存储单元之间串扰的足够的容忍性,闪存芯片的数据写入速度受到很大的限制,偏低的闪存芯片数据写入速度会直接影响整体固态数据存储系统的运行速度。减少闪存芯片的相邻信息存储单元之间的串扰对提高闪存芯片数据写入速度具有一定的意义,尤其在当前如何提升闪存写入数据的速度是本领域技术人员所致力的目标,能够有效的提高闪存芯片数据写入速度,从而提高整个存储系统的运行速度意义重大。
[0007] 在现有技术中,通过将用户数据不连续写入页面的方式来减少闪存芯片的相邻信息存储单元之间的串扰,例如,申请号为20091014313.6的中国申请专利公开了一种闪速存储设备的编程方法,其中通过对包括偶数页和奇数页的存储单元的奇数页进行预先编程来把阈值电压提高一定电平,并且随后执行偶数页编程操作和奇数页编程操作,使得可以防止由于单元间干扰效应所导致的不统一的阈值电压分布。虽然所公开的方法在一定程度能够防止由于单元间干扰效应所导致的不统一的阈值电压分布,但是仅仅通过区分奇偶数页来写入数据,容易造成存储空间的浪费,而且该方法涉及到对电压的判断和验证都是难以控制和操作的。
[0008] 另外,申请号为US2007,0849,992 的美国申请专利的说明书中公开了一种减少编程期间的干扰冲击的方法,其减少来自邻居的上举的干扰影响,包括:在第一时间,对非易失性存储元件的第一群组进行编程;在不同于第一时间的第二时间,对非非易失性存储元件的第二群组进行编程;以及一起验证所述非易失性存储元件的第一群组和所述非非易失性存储元件的第二群组。该方法能够有效减少编程期间相邻存储器单元之间的干扰冲击,但该方法实现过程比较复杂,要改变现有闪存存储系统的编程/擦除程序而实现,不利于普及使用。

发明内容

[0009] 本发明的实施例提供一种利用数据有限寿命提高闪存芯片写入速度的方法、闪存存储系统及其控制器,能够有效地利用实际应用中数据寿命期存在较大差异的特性而提高数据写入速度,且实现过程简单、易行。
[0010] 为达到上述目的,本发明的实施例采用如下技术方案:
[0011] 一种利用数据有限寿命利用数据有限寿命提高闪存芯片写入速度的方法,其中闪存包括多个闪存芯片,每一闪存芯片包括多个闪存页面,该方法包括步骤:
[0012] 实时监测闪存的可用存储空间的大小;
[0013] 当监测到当前闪存的可用存储空间大于预设的阈值时,将接收到的新的有效数据写入互不相邻的闪存页面内;
[0014] 当监测到当前闪存的可用存储空间小于预设的阈值时,将接收到的新的有效数据写入存有无效数据的闪存页面的相邻的闪存页面内。
[0015] 一种控制器,包括:
[0016] 微处理单元;
[0017] 闪存接口,耦接至所述微处理单元以及闪存,其中闪存包括多个闪存芯片,每一闪存芯片包括多个闪存页面;
[0018] 闪存管理模块,耦接至所述微处理单元以通过微处理单元对所述闪存执行闪存管理程序,包括:
[0019] 可用存储空间监测单元,用于实时监测闪存的可用存储空间的大小,当监测到当前闪存的可用存储空间大于预设的阈值时,将接收到的新的有效数据写入互不相邻的闪存页面内;
[0020] 过期数据无效地址记录单元,用于检测和记录存有的数据过期无效的闪存页面的物理地址,并且当可用存储空间监测单元监测到当前闪存的可用存储空间小于预设的阈值时,将接收到的新的有效数据写入存有无效数据的闪存页面的相邻的闪存页面内。一种闪存存储系统,包括:
[0021] 闪存,包括多个闪存芯片,每一闪存芯片包括多个闪存页面;
[0022] 控制器,耦接至所述闪存芯片以实时监测闪存的可用存储空间的大小,当监测到当前闪存的可用存储空间大于预设的阈值时,将接收到的新的有效数据写入互不相邻的闪存页面内;当监测到当前闪存的可用存储空间小于预设的阈值时,将接收到的新的有效数据写入存有无效数据的闪存页面的相邻的闪存页面内。
[0023] 本发明实施例提供的一种利用数据有限寿命提高闪存芯片写入速度的方法、闪存存储系统及其控制器通过监测闪存的可用存储空间的大小和检测、记录存有的数据过期无效的闪存页面的物理地址,当监测到当前闪存的可用存储空间大于预设的阈值时,将接收到的新的有效数据写入互不相邻的闪存页面内以大幅度降低编程过程中的串扰现象,这样就可相应加大数据写入时的编程步长以直接提高数据写入速度;当监测到当前闪存的可用存储空间小于预设的阈值时,将接收到的新的有效数据写入存有无效数据的闪存页面的相邻的闪存页面内,而不用顾及高速写操作所带来的串扰,因为被串扰所影响的页面内的数据已过期无效。因此,能够有效地利用实际应用中用户数据寿命期存在较大差异的特性来提高数据写操作速度,并且本发明实施例的实现与现有固态存储系统设计直接兼容,实现过程简单易行。

附图说明

[0024] 为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0025] 图1是本发明实施例1中一种闪存存储系统的组成框图;
[0026] 图2是本发明实施例1中闪存芯片的组成框图;
[0027] 图3a~3b是利用本发明实施例1中的闪存存储系统进行数据写入闪存页面的示意图;
[0028] 图4是本发明实施例2中一种控制器的组成框图;
[0029] 图5是本发明实施例3中一种控制器的组成框图;
[0030] 图6是本发明实施例4中一种利用数据有限寿命提高闪存芯片写入速度的方法流程图;
[0031] 图7是本发明实施例5中一种利用数据有限寿命提高闪存芯片写入速度的方法流程图。

具体实施方式

[0032] 下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0033] 实施例1
[0034] 本发明实施例提供一种闪存存储系统,如图1所示,闪存存储系统100包括控制器110和闪存120,通常闪存存储系统100会与主机140一起使用,并通过通信接口130连接,以使主机140可将数据写入至存储系统100或从存储系统100中读取数据。在本实施例中,主机140可以是计算机、数字相机、摄影机、通信装置、音频播放器或视频播放器等可存储数据的任意系统。通信接口130可以是USB接口、PCI Express 接口、SATA接口、MS接口、MMC接口、SD接口、CF接口、IDE接口或其他适合的数据传输接口。在本实施例中,所述闪存存储系统100为固态硬盘(Solid State Drive, SDD), 但可理解的,在其他实施例中该闪存存储系统100也可以是随身碟或存储卡。
[0035] 闪存120耦接控制器110并且用以存储数据。在本实施例中,闪存120包括多个闪存芯片122,如图2所示,每一闪存芯片122通常实质上分成多个实体存储块(physical block)124,一般而言,在闪存中储存块为擦除(erase)的最小单元。每一储存块含有最小数码的一并被擦除的存储单元(memory cell)。每一储存块通常会分割成数个闪存页面(page)126, 例如一个储存块124可以分割成个闪存页面126,其中一个闪存页面通常为编程/读取(program/read)的最小单元,但是针对不同的闪存设计,最小的编程/读取(program/read)单元也可为一个扇区(sector)大小,即一页中有多个扇区并以一扇区为编程/读取(program/read)的最小单元。在本实施例中,每一闪存芯片122以闪存页面126作为最小的存储单元,也就是说,闪存页面126为写入数据或读取数据的最小单元。通常每一闪存页面包括用户数据存放区和冗余区,而冗余区通常又包括系统管理区与错误更正区。其中,用户数据存放区用以存储用户的数据,系统管理区用以存储系统管理数据(例如每一储存块的逻辑-物理地址对应关系、储存块的起始分页…等),而错误更正区则用以存储经纠错码编码计算后的ECC的纠错码(parity) 。
[0036] 控制器110用于协调主机140与闪存120的整体运作,例如数据的写入、读取与擦除等。控制器110包括微处理单元110a、闪存接口110b以及闪存管理模块110c。
[0037] 微处理单元110a用于协调控制闪存接口110b与闪存管理模块110c,以及进行对闪存120的写入、读取与抹除等运作。
[0038] 闪存接口110b电性连接至微处理单元110a并且用以存取闪存120, 也就是,主机140欲写入至闪存120的数据会经由闪存接口110b转换为闪存120所能接受的格式。特别是,在本实施中,闪存管理模块110c对闪存120的信息获取以及发送控制命令等也是需要通过闪存接口110b。
[0039] 闪存管理模块110c电性连接至微处理单元110a以通过微处理单元110a对所述闪存120执行闪存管理程序。闪存管理模块110c用于管理闪存120,例如执行平均磨损(wear 1eve1i ng)方法、坏区块管理、维护对映表(mapping table)等。特别是,在本发明实施例中,闪存管理模块110c还用于检测闪存120的使用情况,以设定当前的数据写入速度。执行过程如下:实时监测闪存120的可用存储空间的大小;当监测到当前闪存120的可用存储空间大于预设的阈值时,将接收到的新的有效数据写入互不相邻的闪存页面内;当监测到当前闪存120的可用存储空间小于预设的阈值时,将接收到的新的有效数据写入存有无效数据的闪存页面的相邻的闪存页面内;并且还实时检测当前要写入的闪存页面的最差可能的噪音容限,并根据所述最差可能的噪音容限设定当前的最大允许的数据写入速度。
[0040] 下面,结合图3a~3b,进一步阐述本发明实施例的闪存存储系统100的运行过程。如图3a所示,在具体实施时,利用控制器110实时监测闪存120以获知当前闪存120的可用存储块个数即可用存储空间的大小,如果当前可用存储空间大于某一预定的阈值,便可只使用互相并不紧相邻的闪存页面存储新的有效数据。在本实施例中,该阈值为整个存储系统的总容量的一个百份量(如阈值可设为总容量的30%或20%),具体的取值取决于实际使用情况。另外,如果当前可用存储空间大于该预定的阈值时,将接收到的新的有效数据写入互不相邻的闪存页面内,且写入数据的闪存页面之间隔着一个闪存页面。例如,在将用户数据写入某一存储块124的闪存页面时,若将所有闪存页面编号为0, 1, 2, 3, …即相邻编号的闪存页面在芯片内距离最近、其间的串扰也最大。在将用户数据写入时,最开始只将数据写入编号为0, 2, 4, … 的页面内,这样会大幅度降低编程过程中的串扰现象。所以,就可以相应加大编程步长,以提高数据写入速度。
[0041] 当使用上述写入方式时,可提高数据写入速度,但许多闪存页面(如页面1, 3, 5, …)在最开始时没有被用来存储有效用户数据。在整个闪存存储系统100运行过程中,随着写入的次数越来越多,可用的存储空间将越来越少;同时,随着用户数据的不断改变与更新,最初写入闪存页面的数据会逐渐成为过期无效数据。对于存储着已过期无效数据的闪存页面,我们就可以将新的有效用户数据高速写入与其紧相邻的闪存页面内,而不用顾及高速写操作所带来的串扰,因为被串扰所影响的闪存页面内的数据已过期无效。因此,当监测到当前闪存的可用存储空间小于预设的阈值时,若发现某一闪存页面的相邻闪存页面存有的数据均无效时,将接收到的新的有效数据写入所述闪存页面内。例如,在将用户数据写入时,最开始只将数据写入编号为0, 2, 4, … 的页面内,随着系统的运行,当检测到闪存页面2与闪存页面4内的数据成为过期无效数据后,可将新的有效数据写入闪存页面2与闪存页面4之间的闪存页面3内。虽然在将新的有效数据写入闪存页面3的同时,会引起对闪存页面2与闪存页面4内的数据的串扰,使得闪存页面2与闪存页面4内的数据存储稳定性下降,但是由于闪存页面2与闪存页面4内的数据已经成为过期无效数据,这时的串扰并不会对系统运行带来任何问题。在本实施例中,可以通过多种方式检测判断闪存页面内的数据已过期无效,例如,在实际系统运行时,若用户将一新的数据写入某一逻辑地址时,若闪存中所储存的相对于此一逻辑地址的物理地址中原来的数据即可置为过期无效。另外,某些新的操作系统中加入了一个特殊命令:TRIM,用户可以利用此命令直接通知闪存存储系统将某些数据置为无效。
[0042] 在上述运行过程中,当某一闪存页面已经写入数据,在此存储块被整体擦除之前,此闪存页面不可再被写入新的数据。而且,在写入任一闪存页面前还包括实时检测当前要写入的闪存页面的最差可能的噪音容限,并根据所述最差可能的噪音容限设定当前的最大允许的数据写入速度(编程步长)。从而能够保证大步长编程以高速写入用户数据,而又不会引起闪存页面储存信息之间的串扰。
[0043] 此外,虽未绘示于本实施例,但控制器110可还包括一般闪存控制器常[0044] 见的功能模块,例如电源管理模块等。
[0045] 本发明实施例中,在闪存存储系统100的控制器110中设置闪存管理模块110c,且该闪存管理模块110c增设了实时监测闪存的可用存储空间的大小和检测、记录存有的数据过期无效的闪存页面的物理地址,并且根据检测结果将接收到的新的有效数据写入互不相邻的闪存页面内,或将接收到的新的有效数据写入存有无效数据的闪存页面的相邻的闪存页面内,以大幅度降低编程过程中的串扰现象,而不用顾及高速写操作所带来的串扰,进而保证闪存芯片当前的数据写入速度。因此,能够有效地利用实际应用中用户数据寿命期存在较大差异的特性来提高数据写操作速度,并且本发明实施例的实现与现有固态存储系统设计直接兼容,实现过程简单易行。
[0046] 实施例2
[0047] 本发明实施例提供一种控制器,适用于具有闪存的闪存存储系统上,其中,该闪存包括多个闪存芯片,每一闪存芯片分成多个实体存储块,每一储存块分割成数个闪存页面,在本实施例中,每一闪存芯片以闪存页面作为最小的存储单元,也就是说,闪存页面为写入数据或读取数据的最小单元。关于闪存芯片的具体结构请参考图2以及上述实施例1的相关描述。如图4所示,本发明实施例的控制器300包括微处理单元310、闪存接口320以及闪存管理模块330。
[0048] 微处理单元310用于协调控制闪存接口320与闪存管理模块330,以及进行对闪存的写入、读取与抹除等运作。
[0049] 闪存接口320电性连接至微处理单元310并且用以存取闪存, 也就是,控制器欲将写入至闪存的用户数据会经由闪存接口320转换为闪存120所能接受的格式。特别是,在本实施中,闪存管理模块330对闪存的信息获取以及发送控制命令等也是需要通过闪存接口320发送。
[0050] 闪存管理模块330电性连接至微处理单元310以通过微处理单元310对所述闪存执行闪存管理程序。闪存管理模块330用于管理闪存, 特别是,在本发明实施例中,闪存管理模块330用于检测闪存的闪存页面的使用情况,以保证当前的数据写入速度。具体包括可用存储空间监测单元332和过期数据无效地址记录单元334:
[0051] 可用存储空间监测单元332,用于实时监测闪存的可用存储空间的大小,当监测到当前闪存的可用存储空间大于预设的阈值时,将接收到的新的有效数据写入互不相邻的闪存页面内;
[0052] 过期数据无效地址记录单元334,用于检测和记录存有的数据过期无效的闪存页面的物理地址,并且当可用存储空间监测单元监测到当前闪存的可用存储空间小于预设的阈值时,将接收到的新的有效数据写入存有无效数据的闪存页面的相邻的闪存页面内。
[0053] 在具体实施时,利用可用存储空间监测单元332时监测闪存以获知当前闪存的可用存储块个数即可用存储空间的大小,如果当前可用存储空间大于某一预定的阈值,将接收到的新的有效数据写入互不相邻的闪存页面内,且写入数据的闪存页面之间隔着一个闪存页面。例如,在将用户数据写入某一存储块的闪存页面时,若将所有闪存页面编号为0,1, 2, 3, …即相邻编号的闪存页面在芯片内距离最近、其间的串扰也最大。在将用户数据写入时,最开始只将数据写入编号为0, 2, 4, … 的页面内,在此过程中,由于写操作对其他存有有效数据的页面所带来的串扰非常小,写操作可使用较大的编程步长以提高数据写入速度。
[0054] 在整个闪存存储系统运行过程中,随着写入的次数越来越多,可用的存储空间将越来越少;同时,随着用户数据的不断改变与更新,最初写入闪存页面的数据会逐渐成为过期无效数据。对于存储着已过期无效数据的闪存页面,我们就可以将新的有效用户数据高速写入与其紧相邻的闪存页面内,而不用顾及高速写操作所带来的串扰,因为被串扰所影响的闪存页面内的数据已过期无效。因此,在之后的系统运行过程中,当可用存储空间监测单元332监测到当前闪存的可用存储空间小于预设的阈值时,过期数据无效地址记录单元334一旦发现某些页面内的数据已过期无效,就可将新的有效数据写入与其紧相邻的存储页面内。特别地,若过期数据无效地址记录单元334记录某一闪存页面的相邻闪存页面存有的数据均无效时,将接收到的新的有效数据写入所述闪存页面内。例如,当检测到闪存页面2与闪存页面4内的数据成为过期无效数据后,可将新的有效数据写入闪存页面2与闪存页面4之间的闪存页面3内。虽然在将新的有效数据写入闪存页面3的同时,会引起对闪存页面2与闪存页面4内的数据的串扰,使得闪存页面2与闪存页面4内的数据存储稳定性下降,但是由于闪存页面2与闪存页面4内的数据已经成为过期无效数据,这时的串扰并不会对系统运行带来任何问题。
[0055] 实施例3
[0056] 本发明实施例提供了另一种控制器,适用于具有闪存的闪存存储系统上,其中,该闪存包括多个闪存芯片,每一闪存芯片分成多个实体存储块,每一储存块分割成数个闪存页面,在本实施例中,每一闪存芯片以闪存页面作为最小的存储单元,也就是说,闪存页面为写入数据或读取数据的最小单元。关于闪存芯片的具体结构请参考图2以及上述实施例1的相关描述。如图5所示,本发明实施例的控制器400包括微处理单元410、闪存接口420及闪存管理模块430
[0057] 微处理单元410用于协调控制闪存接口420、闪存管理模块430,以及进行对闪存的写入、读取与抹除等运作。
[0058] 闪存接口420电性连接至微处理单元410并且用以存取闪存, 也就是,控制器欲将写入至闪存的用户数据会经由闪存接口420转换为闪存所能接受的格式。特别是,在本实施中,闪存管理模块430对闪存的信息获取以及发送控制命令等也是需要通过闪存接口420发送。
[0059] 闪存管理模块430电性连接至微处理单元410以通过微处理单元410对所述闪存执行闪存管理程序。闪存管理模块430用于管理闪存, 特别是,在本发明实施例中,闪存管理模块430用于检测闪存的闪存页面的使用情况,以保证当前的数据写入速度。具体包括可用存储空间监测单元432和过期数据无效地址记录单元434、噪音容限检测单元436和数据写入速度设定单元438:
[0060] 可用存储空间监测单元432,用于实时监测闪存的可用存储空间的大小,当监测到当前闪存的可用存储空间大于预设的阈值时,将接收到的新的有效数据写入互不相邻的闪存页面内;
[0061] 过期数据无效地址记录单元434,用于检测和记录存有的数据过期无效的闪存页面的物理地址,并且当可用存储空间监测单元监测到当前闪存的可用存储空间小于预设的阈值时,将接收到的新的有效数据写入存有无效数据的闪存页面的相邻的闪存页面内;
[0062] 噪音容限检测单元436,用于检测当前要写入的闪存页面的最差可能的噪音容限;具体的,在编程/擦除闪存芯片的存储单元之前通过检测当前被读出的存储单元的数据中所含的错误比特数以估算所述存储单元的噪音容限;
[0063] 数据写入速度设定单元438,用于根据所述最差可能的噪音容限设定当前闪存页面的最大允许的数据写入速度。
[0064] 在具体实施时,利用可用存储空间监测单元432时监测闪存以获知当前闪存的可用存储块个数即可用存储空间的大小,如果当前可用存储空间大于某一预定的阈值,将接收到的新的有效数据写入互不相邻的闪存页面内,且写入数据的闪存页面之间隔着一个闪存页面。例如,在将用户数据写入某一存储块的闪存页面时,若将所有闪存页面编号为0,1, 2, 3, …即相邻编号的闪存页面在芯片内距离最近、其间的串扰也最大。在将用户数据写入时,最开始只将数据写入编号为0, 2, 4, … 的页面内,在此过程中,由于写操作对其他存有有效数据的页面所带来的串扰非常小,写操作可使用较大的编程步长以提高数据写入速度。
[0065] 在整个闪存存储系统运行过程中,随着写入的次数越来越多,可用的存储空间将越来越少;同时,随着用户数据的不断改变与更新,最初写入闪存页面的数据会逐渐成为过期无效数据。对于存储着已过期无效数据的闪存页面,我们就可以将新的有效用户数据高速写入与其紧相邻的闪存页面内,而不用顾及高速写操作所带来的串扰,因为被串扰所影响的闪存页面内的数据已过期无效。因此,在之后的系统运行过程中,当可用存储空间监测单元432监测到当前闪存的可用存储空间小于预设的阈值时,过期数据无效地址记录单元434一旦发现某些页面内的数据已过期无效,就可将新的有效数据写入与其紧相邻的存储页面内。特别低,若过期数据无效地址记录单元434记录某一闪存页面的相邻闪存页面存有的数据均无效时,将接收到的新的有效数据写入所述闪存页面内。例如,当检测到闪存页面2与闪存页面4内的数据成为过期无效数据后,可将新的有效数据写入闪存页面2与闪存页面4之间的闪存页面3内。虽然在将新的有效数据写入闪存页面3的同时,会引起对闪存页面2与闪存页面4内的数据的串扰,使得闪存页面2与闪存页面4内的数据存储稳定性下降,但是由于闪存页面2与闪存页面4内的数据已经成为过期无效数据,这时的串扰并不会对系统运行带来任何问题。
[0066] 而且,在写入任一闪存页面前还利用噪音容限检测单元436实时检测当前要写入的闪存页面的最差可能的噪音容限,然后利用数据写入速度设定单元438根据所述最差可能的噪音容限设定当前的最大允许的数据写入速度(编程步长)。从而能够保证大步长编程以高速写入用户数据,而又不会引起闪存页面储存信息之间的串扰。
[0067] 实施例4
[0068] 本发明实施例提供一种利用数据有限寿命提高闪存芯片写入速度的方法,适用于闪存存储系统的控制器对闪存的控制上,其中,该闪存包括多个闪存芯片,每一闪存芯片分成多个实体存储块,每一储存块分割成数个闪存页面,在本实施例中,每一闪存芯片以闪存页面作为最小的存储单元,也就是说,闪存页面为写入数据或读取数据的最小单元。关于闪存芯片的具体结构请参考图2以及上述实施例1的相关描述。如图6所示,该方法包括:
[0069] 步骤S101:实时监测闪存的可用存储空间的大小;
[0070] 具体的,在本实施例中,可以通过多种现有的方式来监测闪存的可用存储空间的大小以获知当前存储系统内的可用存储块个数即可用存储空间。
[0071] 步骤S102:当监测到当前闪存的可用存储空间大于预设的阈值时,将接收到的新的有效数据写入互不相邻的闪存页面内;
[0072] 具体的,如果监测到当前可用存储空间大于某一预定的阈值时,可将接收到的新的有效数据写入互不相邻的闪存页面内,且写入数据的闪存页面之间隔着一个闪存页面。例如,在将用户数据写入某一存储块的闪存页面时,若将所有闪存页面编号为0, 1, 2, 3, …即相邻编号的闪存页面在芯片内距离最近、其间的串扰也最大。在将用户数据写入时,最开始只将数据写入编号为0, 2, 4, … 的页面内,在此过程中,由于写操作对其他存有有效数据的页面所带来的串扰非常小,写操作可使用较大的编程步长以提高数据写入速度。
[0073] 步骤S103:当监测到当前闪存的可用存储空间小于预设的阈值时,将接收到的新的有效数据写入存有无效数据的闪存页面的相邻的闪存页面内。
[0074] 具体的,随着写入的次数越来越多,可用的存储空间将越来越少;同时,随着用户数据的不断改变与更新,最初写入闪存页面的数据会逐渐成为过期无效数据。对于存储着已过期无效数据的闪存页面,我们就可以将新的有效用户数据高速写入与其紧相邻的闪存页面内,而不用顾及高速写操作所带来的串扰,因为被串扰所影响的闪存页面内的数据已过期无效。因此,在之后的系统运行过程中,当监测到当前闪存的可用存储空间小于预设的阈值时,一旦发现某些页面内的数据已过期无效,就可将新的有效数据写入与其紧相邻的存储页面内。特别地若发现某一闪存页面的相邻闪存页面存有的数据均无效时,将接收到的新的有效数据写入所述闪存页面内。例如,当检测到闪存页面2与闪存页面4内的数据成为过期无效数据后,可将新的有效数据写入闪存页面2与闪存页面4之间的闪存页面3内。虽然在将新的有效数据写入闪存页面3的同时,会引起对闪存页面2与闪存页面4内的数据的串扰,使得闪存页面2与闪存页面4内的数据存储稳定性下降,但是由于闪存页面2与闪存页面4内的数据已经成为过期无效数据,这时的串扰并不会对系统运行带来任何问题。
[0075] 图6是根据本发明实施例示出的利用数据有限寿命提高闪存芯片写入速度的方法的流程图,其中这些步骤是闪存存储系统的控制器的微处理器执行闪存管理模块的机械指令所完成的。必须了解的是,本发明所提出的利用数据有限寿命提高闪存芯片写入速度的方法步骤并不限于图6所示的执行顺序,本领域技术人员可根据本发明的精神任意更动利用数据有限寿命提高闪存芯片写入速度的方法步骤。
[0076] 实施例5
[0077] 本发明实施例提供另一种利用数据有限寿命提高闪存芯片写入速度的方法,适用于闪存存储系统的控制器对闪存的控制上,
[0078] 其中,该闪存包括多个闪存芯片,每一闪存芯片分成多个实体存储块,每一储存块分割成数个闪存页面,在本实施例中,每一闪存芯片以闪存页面作为最小的存储单元,也就是说,闪存页面为写入数据或读取数据的最小单元。关于闪存芯片的具体结构请参考图2以及上述实施例1的相关描述。如图7所示,该方法包括:
[0079] 步骤S201:实时监测闪存的可用存储空间的大小;
[0080] 具体的,在本实施例中,可以通过多种现有的方式来监测闪存的可用存储空间的大小以获知当前存储系统内的可用存储块个数即可用存储空间。
[0081] 步骤S202:当监测到当前闪存的可用存储空间大于预设的阈值时,将接收到的新的有效数据写入互不相邻的闪存页面内,且写入数据的闪存页面之间隔着一个闪存页面;而且在写入闪存页面前检测所述闪存页面的最差可能的噪音容限,并根据所述最差可能的噪音容限设定当前的最大允许的数据写入速度;
[0082] 具体的,如果监测到当前可用存储空间大于某一预定的阈值时,可将接收到的新的有效数据写入互不相邻的闪存页面内,且写入数据的闪存页面之间隔着一个闪存页面。例如,在将用户数据写入某一存储块的闪存页面时,若将所有闪存页面编号为0, 1, 2, 3, …即相邻编号的闪存页面在芯片内距离最近、其间的串扰也最大。在将用户数据写入时,最开始只将数据写入编号为0, 2, 4, … 的页面内,在此过程中,由于写操作对其他存有有效数据的页面所带来的串扰非常小,写操作可使用较大的编程步长以提高数据写入速度。
而且在写入闪存页面前实时检测当前要写入的闪存页面的最差可能的噪音容限,然后根据所述最差可能的噪音容限设定当前的最大允许的数据写入速度(编程步长)。从而能够保证大步长编程以高速写入用户数据,而又不会引起闪存页面储存信息之间的串扰。
[0083] 步骤S203:当监测到当前闪存的可用存储空间小于预设的阈值时,将接收到的新的有效数据写入存有无效数据的闪存页面的相邻的闪存页面内。
[0084] 具体的,随着写入的次数越来越多,可用的存储空间将越来越少;同时,随着用户数据的不断改变与更新,最初写入闪存页面的数据会逐渐成为过期无效数据。对于存储着已过期无效数据的闪存页面,我们就可以将新的有效用户数据高速写入与其紧相邻的闪存页面内,而不用顾及高速写操作所带来的串扰,因为被串扰所影响的闪存页面内的数据已过期无效。因此,在之后的系统运行过程中,当监测到当前闪存的可用存储空间小于预设的阈值时,一旦发现某些页面内的数据已过期无效,就可将新的有效数据写入与其紧相邻的存储页面内。特别地若发现某一闪存页面的相邻闪存页面存有的数据均无效时,将接收到的新的有效数据写入所述闪存页面内。例如,当检测到闪存页面2与闪存页面4内的数据成为过期无效数据后,可将新的有效数据写入闪存页面2与闪存页面4之间的闪存页面3内。虽然在将新的有效数据写入闪存页面3的同时,会引起对闪存页面2与闪存页面4内的数据的串扰,使得闪存页面2与闪存页面4内的数据存储稳定性下降,但是由于闪存页面2与闪存页面4内的数据已经成为过期无效数据,这时的串扰并不会对系统运行带来任何问题。
[0085] 图7是根据本发明实施例示出的利用数据有限寿命提高闪存芯片写入速度的方法的流程图,其中这些步骤是闪存存储系统的控制器的微处理器执行闪存管理模块的机械指令所完成的。必须了解的是,本发明所提出的利用数据有限寿命提高闪存芯片写入速度的方法步骤并不限于图6所示的执行顺序,本领域技术人员可根据本发明的精神任意更动利用数据有限寿命提高闪存芯片写入速度的方法步骤。
[0086] 本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以借助软件加必须的通用硬件的方式来实现,当然也可以通过硬件来完成,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在可读取的存储介质中,如计算机的软盘、硬盘或光盘等,包括若干指令用以使得一台计算机设备(可以使个人计算机,服务器,或者网络设备等)来执行本发明哥哥实施例所述的方法。
[0087] 以上所述是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围。