一种物理块写入方法及系统的制作方法

文档序号:6499643阅读:193来源:国知局
一种物理块写入方法及系统的制作方法
【专利摘要】本发明实施例提供一种物理块写入方法及系统,所述方法具体步骤如下:建立逻辑块与物理块的映射关系;顺次向缓冲块写入数据,并在写入数据的过程中按照预设的标记规则为缓冲块标记写计数;从各个物理块查找有效数据;将所述有效数据拷贝至新数据块;所述标记规则具体为;向第一缓冲块写入数据时,将原数据块的第一写计数递增并标记为第一缓冲块的第一写计数;向第n缓冲块写入数据时,相对于第n-1缓冲块保留第n写计数之前的所有写计数,将第n-1缓冲块的第n写计数的数值递增,将所述递增后的数值标记为第n缓冲块的第n写计数;n为大于1的正整数。
【专利说明】—种物理块写入方法及系统
【技术领域】
[0001]本发明涉及数据存储【技术领域】,特别涉及一种物理块写入方法及系统。
【背景技术】
[0002]NAND是目前阶段性能较出色的一种闪存方案,其特点是功耗低、重量轻、读写性能好;目前广泛的应用于闪存盘和存储卡。NAND芯片作为存储介质包含了多个物理块,每个物理块又包含多个物理页。因为NAND芯片的物理块与物理页的擦写次数都是有限的,由此而衍生的写平衡算法成为了延长NAND芯片使用寿命的重要技术手段。而写平衡算法通常都基于文件系统中虚拟层面的逻辑块或扇区与NAND芯片实际的物理块或物理页的映射关系来展开。
[0003]在申请号为201010229936.3的专利中,公开了一种NAND写平衡处理方法;大体思路如下:该方法中一个逻辑块对应两个物理块;所述的物理块中,一个与逻辑块一一映射,另一个与逻辑块随机映射。与逻辑块一一映射的物理块被称为数据块,与逻辑块随机映射的物理块被称为缓冲块;数据在写入时首先写入到缓冲块中,写入完成后通过一定的机制将旧数据块中各页数据及缓冲块中随机映射的各页数据按照一一映射的规则整合写入到一个新的数据块。
[0004]现阶段的写平衡算法在写入的过程中,为区分物理块或物理页被写入的顺序,会在写入的同时标记一个写计数;后被写入的物理块或物理页在写入时,标记的写计数会相比前次递增一个单位(加I )。并且一般认为仅写计数最大的物理块或物理页(即最后被写入的物理块或物理页)有效,其余均无效。现有技术中写计数的标记和递增是全局性的,也就是针对NAND中所有的物理页或物理块。
[0005]全局性的写计数存在的缺点主要是无法支持C0PYBACK硬件加速。C0PYBACK硬件加速实质上是一中硬件拷贝指令,能够实现快速的数据拷贝。但全局写计数当中,所有的写操作均需要递增标记写计数,即表示所有写操作的过程中数据均发生了改变。数据出现改变的写操作过程即与拷贝过程相违背,所以C0PYBACK硬件加速与全局性写计数两者存在本质上的矛盾,不能够共存。
[0006]全局性的写计数的另一个缺点是使用过程中写计数不断的累计递增,会导致数值越来越大,以至于使得NAND的运行占用了整个计算机系统中大量的内存和存储空间。

【发明内容】

[0007]有鉴于此,本发明的目的在于提供一种物理块写入方法及系统,所述方法及系统在写入过程中通过局部的层级标记写计数,实现了对于C0PYBACK硬件加速的支持,并且避免了写计数越来越大,占用了整个计算机系统中大量的内存和存储空间的问题。
[0008]为实现上述目的,本发明有如下技术方案:
[0009]一种物理块写入方法,所述方法中逻辑块与多个物理块之间存在映射关系,所述多个物理块中存在与逻辑块一一映射的数据块,所述数据块包括原数据块和新数据块;和至少一个与逻辑块随机映射的缓冲块;每个物理块中写计数的数量等于缓冲块的数量;所述方法具体步骤如下:
[0010] 建立逻辑块与物理块的映射关系;
[0011]顺次向缓冲块写入数据,并在写入数据的过程中按照预设的标记规则为缓冲块标记写计数;
[0012]从各个物理块查找有效数据;将所述有效数据拷贝至新数据块;
[0013]所述标记规则具体为;
[0014]向第一缓冲块写入数据时,将原数据块的第一写计数递增并标记为第一缓冲块的第一写计数;
[0015]向第η缓冲块写入数据时,相对于第η-1缓冲块保留第η写计数之前的所有写计数,将第η-1缓冲块的第η写计数的数值递增,将所述递增后的数值标记为第η缓冲块的第η写计数;η为大于I的正整数。
[0016]所述物理块包括多个物理页,所述逻辑块包括多个扇区,且一个物理块包括的物理页的数量等于一个逻辑块包括的扇区的数量,则所述建立逻辑块与物理块的映射关系具体为:
[0017]将物理块中的物理页对应到逻辑块中的扇区上。
[0018]所述从各个物理块中查找有效数据具体为:
[0019]将最后写入数据作为该扇区的有效数据。
[0020]所述从各个物理块中查找有效数据还包括:
[0021]在所述写入过程中断并重新开始时,根据预设的比较机制比较各个物理块的写计数,从而找到最后写入的数据,并将其作为有效数据。
[0022]所述预设的比较机制具体为:
[0023]将各个物理块的第一写计数进行比较,如果第一写计数相同则顺次比较后续写计数,直到出现写计数不同则停止比较;视写计数大的物理块中写入的数据作为最后写入的数据。
[0024]所述方法还包括:
[0025]当新数据块与原数据块或缓冲块的特征一致,则保留中特征一致的物理块中的任意一个作为暂定数据块,再根据预设的比较机制比较缓冲块及暂定数据块中标记的写计数,查找出缓冲块或暂定数据块数据块中的有效数据;所述物理块的特征包括每个物理页对应的扇区和写计数;
[0026]将一个空白物理块作为补充数据块,根据--映射的方式将有效数据拷贝至补充
数据块中。
[0027]所述缓冲块的数量为两个,则写计数的数量为两个,所述标记规则具体为:
[0028]当所述旧数据块的第一写计数为a,则向第一缓冲块写入数据时,标记第一缓冲块的第一写计数为a+Ι,第二写计数为b ;
[0029]向第二缓冲换写入数据时,标记第二缓冲块的第一写计数为a+Ι,第二写计数为b+Ι ;
[0030]a、b为小于4的非负整数,当a+Ι或b+Ι不小于4则令a+Ι或b+Ι等于O。
[0031]所述方法中随机选取物理块与逻辑块建立映射关系并写入。[0032]所述物理块包括多个物理页,则所述为缓冲块标记写计数具体为:
[0033]将写计数标记在每个物理页中,当同一物理块中不同物理页的写计数不同,则以该物理块中第O物理页的写计数为有效写计数。
[0034]一种物理块写入系统,所述方法中逻辑块与多个物理块之间存在映射关系,所述多个物理块中存在与逻辑块一一映射的数据块,所述数据块包括原数据块和新数据块;和至少一个与逻辑块随机映射的缓冲块;每个物理块中写计数的数量等于缓冲块的数量;所述系统包括:
[0035]映射模块,用于建立逻辑块与物理块的映射关系;
[0036]写入模块,用于顺次向缓冲块写入数据;
[0037]所述写入模块中包括标记单元,用于在写入数据的过程中按照预设的标记规则为缓冲块标记写计数;所述标记规则具体为;
[0038]向第一缓冲块写入数据时,将原数据块的第一写计数递增并标记为第一缓冲块的第一写计数;
[0039]向第η缓冲块写入数据时,相对于第η-1缓冲块保留第η写计数之前的所有写计数,将第η-1缓冲块的第η写计数的数值递增,将所述递增后的数值标记为第η缓冲块的第η写计数;η为大于I的正整数;
[0040]有效判断模块,用于从各个中查找有效数据;;
[0041]拷贝模块,用于将所述有效数据拷贝至新数据块。
[0042]根据以上技术方案可知,本发明存在的有益效果是:本发明中不同逻辑块对应的缓冲块各自独立进行写计数的标记,互不关联;并且所述的层级写计数标记方法仅在缓冲块写入的时候标记和递增写计数,而在有效数据整合的过程中有效数据不再发生任何改变;所以本发明所述方法实现了对于C0PYBACK硬件加速的支持,可以实现通过C0PYBACK硬件加速提高NAND的运行速度;另外,本发明中所述层级的写计数标记方法降低了写计数递增的速度,并在逻辑块重新与物理块建立映射关系时重新标记写计数,避免了写计数不断的累计递增,从而节省了整个计算机系统内存和存储空间。
【专利附图】

【附图说明】
[0043]为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0044]图1为现有技术中 映射关系不意图;
[0045]图2为现有技术中随机映射关系不意图;
[0046]图3为现有技术中物理块整合过程示意图;
[0047]图4为本发明实施例所述方法流程图;
[0048]图5为本发明实施例中有效数据整合过程示意图;
[0049]图6为本发明另一实施例所述方法流程图;
[0050]图7为本发明另一实施例中有效数据整合过程示意图;
[0051]图8为本发明另一实施例中有效数据整合中间状态不意图;[0052]图9-10为本发明另一实施例中所述容错恢复技术示意图;
[0053]图11为本发明实施例所述系统结构示意图。
【具体实施方式】
[0054]为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0055]本发明提供一种物理块的写入方法,主要应用于NAND芯片当中。本发明所述写入方法中,在现有的写入方法之上改变了写入过程中写计数的标记方法。为了便于对本发明所述方法进行解释和说明,此处首先简要的描述一种NAND芯片物理块的写入方法:
[0056]该方法涉及的写入过程中,逻辑块与多个物理块之间存在映射关系;一个逻辑块中包括多个扇区,而一个物理块中包括多个物理页;一般而言一个逻辑块中包括扇区数量等于一个物理块中包括物理页的数量。所述的逻辑块及扇区为文件系统在逻辑上虚拟构建的存储单元;而所述物理块及物理页为实际的存储介质,存储介质中保存的数据通过映射关系反映到虚拟的逻辑块或扇区上,而建立逻辑块与物理块的映射关系,也就是将物理块中的物理页对应到逻辑块中的扇区。
[0057]所述物理块在写入过程中根据用途的不同分为数据块和缓冲块;数据块中各个物理页保存的数据即是逻辑块各扇区呈现的数据,数据块中各物理页与逻辑块中各扇区一一映射。一般来说写入过程中与逻辑块对应的数据块有两个;一为原数据块,原数据块中数据也就是该逻辑块各扇区原本呈现的数据;另一为新数据块,即将写入过程新写入的数据乃至一部分原有数据重新整合后得到的数据块,新数据块中的数据就是该逻辑块各扇区在写入完成之后呈现的数据。另外,通常在非写入的过程中,逻辑块呈现的数据稳定不变时,逻辑块仅与一个数据块存在映射关系。
[0058]所述一一映射也就是数据块中各物理页按照顺序对应逻辑块中各个扇区。参见图1所示为一一映射的示意图,图1中假定一个物理块包括4个物理页,一个逻辑块包括4个扇区。图1中四个方框分别代表物理块中4个物理页,按照从左至右的顺序分别是第O页、第I页、第2页和第3页。图中每个物理页上的标号代表该物理页对应的扇区,图1中即第O页对应第4扇区,第I页对应第5扇区,依此类推。如图1所示每个物理页按照顺序对应一个扇区的映射即所谓的 映射。 映射一般意味着某个写入过程已经完结,也可以认为 映射是逻辑块稳定状态下的一种映射关系。
[0059]而缓冲块在写入过程中需存在至少一个。从物理层面上来讲,在写入过程中需写入逻辑块扇区中的数据均是直接写入缓冲块,当一个缓冲块被写满之后,可以再向其他的缓冲块写入。缓冲块与逻辑块的映射关系为随机映射,也就是缓冲块中各物理页随机的对应逻辑块中的扇区,既不一定按照顺序并且也有可能重复的对应,具体根据写入时的具体情况而定。
[0060]参见图2所示为随机映射的示意图,图2中同样假定一个物理块包括4个物理页,一个逻辑块包括4个扇区。图2中四个方框分别代表物理块中4个物理页,按照从左至右的顺序分别是第O页、第I页、第2页和第3页。图中每个物理页上的标号代表该物理页对应的扇区;可见第0、1、2三个物理页均对应第7扇区,而第3物理页对应第6扇区。这是由于先写入的三个物理页的数据是需写入第7扇区的,而后一页数据是需写入第6扇区的,物理页与扇区的对应关系视写入情况而定。缓冲块的存在表示写入过程正在进行,所以随机映射可以认为是逻辑块与物理块之间未稳定的一种映射关系。
[0061]参见图3所示为物理块整合过程的示意图,也就是将图1所示数据块作为原数据块与图2所示缓冲块中数据整合的具体步骤。完成了数据向缓冲块的写入之后,还需向一个空白的物理块整合原数据块和缓冲块中的数据,该空白物理块也就将作为新数据块。结合图3中所示的数据块与缓冲块来看,一个扇区对应的物理页可能不止一个,则在该扇区对应的所以物理页中,取最后进行写入的一个物理页中的数据为有效数据。将4个扇区对应的有效数据按照一一映射的方式整合到一个新数据块中,从而代替原数据块。
[0062]以上为一种与本发明所述方法相关的物理块写入方法。本发明所述的物理块写入方法在此基础上,增加了局部写计数的方法。以下为本发明所述方法的一个具体实施例,参见图4所示,本实施例所述方法中,逻辑块与多个物理块之间存在映射关系,所述多个物理块中存在与逻辑块一一映射的数据块,所述数据块包括原数据块和新数据块;和至少一个与逻辑块随机映射的缓冲块;本实施例中针对同一逻辑块对应的所有缓冲块,按照预设的规则为其标记写计数;每个缓冲块中写计数的数量等于逻辑块对应缓冲块的总数量;所述方法具体步骤如下:
[0063]步骤401、建立逻辑块与物理块的映射关系;
[0064]该步骤为写入的初始化步骤;
[0065]步骤402、顺次向缓冲块写入数据,并在写入数据的过程中按照预设的标记规则为缓冲块标记写计数;
[0066]本步骤中所述的对于缓冲块的写入与前述现有技术中物理块写入方法基本一致。需写入逻辑块扇区中的数据均是直接写入缓冲块,当一个缓冲块被写满之后,可以再向其他的缓冲块写入。本实施例中,当对一个缓冲块进行写入操作的同时,还按照预设的标记规则为缓冲块标记写计数。
[0067]本实施例中写计数的标记不同于现有技术中的全局性写计数,而是仅针对同一逻辑块对应的缓冲块来进行标记。不同逻辑块对应的缓冲块各自独立进行写计数的标记,互不关联。也就是说,本实施例中写计数的标记是以逻辑块为单位局部进行的。
[0068]本实施例中,对于写计数标记的规则如下:
[0069]向第一缓冲块写入数据时,将原数据块的第一写计数递增并标记为第一缓冲块的第一写计数;
[0070]向第η缓冲块写入数据时,相对于第η-1缓冲块保留第η写计数之前的所有写计数,将第η-1缓冲块的第η写计数的数值递增,将所述递增后的数值标记为第η缓冲块的第η写计数;η为大于I的正整数。
[0071]具体的,本实施例中以某一逻辑块对应三个缓冲块为例,具体的对于所述写计数的标记过程进行说明。
[0072]所述三个缓冲块按照写入的顺序分别为第一缓冲块、第二缓冲块和第三缓冲块;由于缓冲块的数量为三个,所以写计数的数量也是三个;三个写计数按照排列顺序分别为第一写计数、第二写计数和第三写计数。[0073]第一缓冲块的第一写计数相对于原数据块的第一写计数递增,本实施例中假定原数据块的第一写计数为0,则递增后的数值为0+1=1。所以在向第一缓冲块写入数据的同时,标记第一缓冲块的第一写计数为该递增后的数值1,第一缓冲块的第二写计数和第三写计数在此处不影响整体技术方案,可以为随机数值或默认数值,本实施例中均为O。也就是说第一缓冲块的写计数为100。
[0074]向第二缓冲块写入数据的同时,相对于第一缓冲块不递增第一写计数,仅递增下一层级的写计数,也就是第二写计数;即将第一缓冲块的第二写计数递增为0+1=1,所以标记第二缓冲块的第一写计数为I;标记第二缓冲块的第二写计数为I;第二缓冲块的第三写计数在此处不影响整体技术方案,可为随机数或默认值,本实施例中为O。也就是第二缓冲块的写计数为110。
[0075]在向第三缓冲块写入数据时,第三缓冲块相对于第二缓冲块不再递增第一写计数和第二写计数,而是将递增的写计数再降至下一层,也就是第三缓冲块相对于第二缓冲块仅递增第三写计数,第一写计数和第二写计数则与第二缓冲块相同。即第三缓冲块的第一写计数为I,第二写计数为I,第三写计数为0+1=1,第三缓冲块的写计数即111。
[0076]在本实施例之上延伸可以认为,如果存在第四缓冲块,则第四缓冲块相对于第三缓冲块仅递增第四写计数,第一写计数、第二写计数和第三写计数均与第三缓冲块相同。以上思路即为本实施例所述方法中层级递增写计数的基本思想。
[0077]步骤403、从各个物理块查找有效数据;
[0078]相对于层级的技术方法,所述比较机制中的比较方法同样为层级进行的。具体可描述为,将第一写计数进行比较,如果第一写计数相同则顺次比较后续写计数,直到出现写计数不同则停止比较;以写计数大的物理块中写入的数据作为有效数据。
[0079]步骤404、将所述有效数据拷贝至新数据块。
[0080]结合步骤403和步骤404,并参照图5所示,以下具体描述写计数的比较及有效数据拷贝的具体过程。
[0081]图5中,假定一个物理块包括4个物理页,一个逻辑块包括四个扇区。图5中四个方框组成的一个矩形代表一个物理块,每个方框分别代表物理块中物理页。每个物理页上的有两个标号,上方标号代表该物理页对应的扇区,下方标号代表写计数。
[0082]例如,原数据块的第O物理页上方的标号4代表该物理页对应第4扇区,下方的标号001代表该物理页的写计数为001。需要说明的是,原数据块中4个物理页的写计数不同,是因为在向原数据块写入整合的过程中,4个物理页的有效数据可能来自于不同的物理块。在这种情况下,认为数据块第O物理页的写计数为有效,或者说这种情况下认为数据块每个物理页的写计数都是第O物理页的写计数,即001。
[0083]缓冲块的写入完成以后,针对每个扇区查找出原数据块或缓冲块中对应该扇区的有效数据,再将有效数据根据一一映射的方式拷贝入新数据块中的一个物理页。
[0084]如果整个数据的写入及整合过程是正常进行,期间没有任何中断,则可在写入的同时自动留存针对各扇区最后写入的物理页,并将其中的有效数据进行整合。但如果写入及整合的过程出现中断又重新恢复,则查找有效数据需要根据预设的比较机制比较各个物理块的写计数,从而找到最后写入的数据,并将其作为有效数据;所述预设的写计数比较机制具体为,将各个物理块的第一写计数进行比较,如果第一写计数相同则顺次比较后续写计数,直到出现写计数不同则停止比较;视写计数大的物理块中写入的数据作为最后写入的数据。在同一缓冲块中所有物理页的写计数相同,但写入的顺序是按照物理页排列顺序进行的。针对图5来看,也就是同一个缓冲块中4个物理页从左至右依次写入。
[0085]本实施例中由于写计数的标记方式是层级进行的,所以相应的,写计数的比较方式也是层级进行。此处待整合的物理块供包括一个数据块和三个缓冲块,共4个物理块即16个物理页;所涉及的扇区即该逻辑块的四个扇区,具体包括第4扇区、第5扇区、第6扇区和第7扇区。
[0086]若按照一一映射的方式将四个扇区的有效数据整合到新数据块,则必须从第4扇区开始整合,将第4扇区的有效数据写入新数据块的第O物理页。4个待整合的物理块中,对应第4扇区的物理页共两个,即原数据块的第O物理页和第一缓冲块的第O物理页。下面则比较两个物理页的写计数。数据块的第O物理页的写计数为001,第一缓冲块的第O物理页的写计数为100 ;首先比较两个写计数的第一写计数得到O < 1,所以认为第一缓冲块的第O物理页是后写入数据的物理页,该物理页中数据为第4扇区的有效数据,将第一缓冲块的第O物理页中的数据写入新数据块的第O物理页。
[0087]对应第5扇区的物理页也是两个,同理经过比较后找到第二缓冲块第O物理页的数据为第5扇区的有效数据,将第5扇区的有效数据写入新数据块的第一物理页。
[0088]对应第6扇区的物理页共五个,所以必须整体比较所有五个物理页的写计数。同样,首先比较第一写计数(根据前述已知,此处认为原数据块第2物理页的写计数为001),比较结果为O < 1,保留第一写计数为I的四个物理页进行下一级比较;也就是比较四个第一写计数为I的物理页的第二写计数,得到O < I ;保留第二写计数为I的三个物理页再进行下一级的比较,也就是比较三个第二写计数为I的物理页的第三写计数,得到O < I ;所以认为第三缓冲块的第2物理页为中数据为第6扇区的有效数据,将该有效数据写入新数据块的第2物理页。
[0089]对应第7扇区的物理页共7个,写计数的比较方式与第6扇区类似,依次比较第一写计数、第二写计数和第三写计数之后,得到第三缓冲块中三个对应第7扇区的物理页,写计数完全相同。在这种情况下去第三缓冲块中最后一个对应第7扇区的物理页,即第三缓冲块的第3物理页中数据为有效数据;将该有效数据写入到新数据块的第3物理页。
[0090]本实施例中写计数的标记为局部写计数标记,也就是仅仅在向缓冲块写入数据的时候标记和递增写计数;上述将有效数据写入新数据块的过程中,由于写计数不发生改变。这也意味着,本实施例中所描述的写计数标记方式,不具有现有技术中全局性写计数任意写入均递增写计数的特点。将有效数据写入新数据块时,有效数据不发生任何改变,这一点上本实施例不再与C0PYBACK硬件加速向违背。所以将有效数据写入新数据块的过程可以通过C0PYBACK硬件加速直接拷贝。
[0091]由此,得到的新数据块的四个物理页按照一一映射的方式对应逻辑块的四个扇区。通常来讲,为节省内存和存储空间,新数据块写入完成之后立即取消原有的数据块和所有的缓冲块与该逻辑块的映射关系。
[0092]通过以上技术方案可见,本实施例存在的有益效果是:本实施例中不同逻辑块对应的缓冲块各自独立进行写计数的标记,互不关联;并且所述的层级写计数标记方法仅在缓冲块写入的时候标记和递增写计数,而在有效数据整合的过程中有效数据不再发生任何改变;所以本实施例所述方法实现了对于COPYBACK硬件加速的支持,可以实现通过C0PYBACK硬件加速提高NAND的运行速度;另外,本实施例中所述层级的写计数标记方法降低了写计数递增的速度,并在逻辑块重新与物理块建立映射关系时重新标记写计数,避免了写计数不断的累计递增导致的写计数数值越来越大,从而节省了整个计算机系统内存和存储空间。
[0093]参照图6所示,为本发明所述方法的另一个具体的实施例。本实施例中,在图4所示实施例的基础之上,具体的限定了缓冲块的数量为两个。当需要对逻辑块进行写入时,逻辑块必须与至少一个缓冲块存在映射关系;上述逻辑块与缓冲块存在映射关系的状态称为逻辑块的缓冲状态。实际上,在研究过程中发现,当缓冲块的数量从一个提高到两个的时候,NAND芯片的性能会有较大的提升;但如果继续增加缓冲块的数量,NAND芯片的性能提升幅度很低,但缓冲块数量越多占用内存越多;所以从性能的角度上来讲,缓冲块数量设定为两个是最优的方案。
[0094]所以本实施例中具体的限定了缓冲块的数量为两个,本实施例中所述方法的具体步骤如下:
[0095]步骤601、建立逻辑块与物理块的映射关系;
[0096]步骤602、当所述旧数据块的第一写计数为a,则向第一缓冲块写入数据时,标记第一缓冲块的第一写计数为a+Ι,第二写计数为b ;
[0097]步骤603、第一缓冲块中数据写满之后,向第二缓冲块写入数据,在向第二缓冲换写入数据时,标记第二缓 冲块的第一写计数为a+Ι,第二写计数为b+Ι ;
[0098]在步骤602和步骤603中,a、b为小于4的非负整数,当a+Ι或b+Ι不小于4则令a+1或b+Ι等于O。
[0099]上述两个步骤中,描述了图4所示实施例中,所述层级标记写计数方法,在缓冲块数量等于2时候的具体情况。并且,本实施例中引入符号整数减法原理,使标记的写计数仅可能出现0、1、2、3四个依次递增的数字。当写计数由3再继续递增时,则会出现写计数溢出的情况。所以这种情况下设定溢出的数字归零,也就是令O > 3。
[0100]上述符号整数减法原理的等效表达式可具体的表示为:
[0101 ] INTr=A.nffrCnt-B.nffrCnt;
[0102]return r>l r<-l?-r:r;
[0103]上述符号整数减法原理及其表达式均属于现有技术,在此不作赘述。
[0104]步骤604、在所述写入过程中断并重新开始时,根据预设的比较机制比较各物理块块中标记的写计数,查找出各物理块中的有效数据;
[0105]步骤605、将所述有效数据拷贝至新数据块。
[0106]步骤606、取消缓冲块和原数据块与逻辑块的映射关系。
[0107]在完成有效数据的拷贝之后,取消缓冲块和原数据块与逻辑块的映射关系,可以节省计算机系统的内存和存储空间,便于物理块的重新利用。
[0108]参见图7所示,为本实施例中写计数的比较及有效数据拷贝的具体过程。本实施例图7所示过程中,写计数比较及有效数据的获取和拷贝的原理与图4所示实施例一致,此处不做重复的叙述。
[0109]另外在写入过程中断并重新开始时,有一定的几率出现新数据块与原数据块特征一致,无法分辨的情况,甚至还可能出现新数据块与缓冲块特征一致无法分辨的情况;本实施例中在所述方法中,针对上述的特殊情况,用以下步骤予以解决:
[0110]步骤607、当新数据块与原数据块或缓冲块的特征一致,则保留中特征一致的物理块中的任意一个作为暂定数据块,再根据预设的比较机制比较缓冲块及暂定数据块中标记的写计数,查找出缓冲块或暂定数据块数据块中的有效数据;
[0111]所述物理块的特征包括每个物理页对应的扇区和写计数。
[0112]步骤608、将一个空白物理块作为补充数据块,根据一一映射的方式将有效数据拷贝至补充数据块中。
[0113]由于传统的全局性写计数能够通过比较写计数轻易的发现整个NAND芯片中最后写入数据的物理块,而且在所有写入过程中写计数都会递增,也就不会出现两个物理块写计数完全相同的情况。所以现有技术中当向新数据块整合数据时过程出现中断,也可简单的通过比较写计数找到新数据块,并继续进行整合。对于全局性写入来讲,写入过程的中断不影响NAND的工作。而在本实施例中所述的物理块写入方法中由于采用了局部的写计数方式,不同逻辑块对应的物理块的写计数互相独立,没有关联,所以不具备全局性写计数中能够轻易确定最后写入数据的物理块的特点。而且再向新数据块整合数据的过程中写计数不递增,这样新数据块也就有会与某一个其他的物理块写计数一致,若二者每个物理页对应的扇区也恰巧一致,则无法分辨二者究竟哪个是新数据块。针对可能出现的上述问题,本实施例中有步骤607和步骤608作为一种解决方案。
[0114]参见图8所示,为数据写入中断时中间状态的示意图。当向新数据块804整合有效数据过程中,写入到新数据块804的第二物理页时发生中断,此时各个物理块的中间状态即如图8所示。
[0115]由于本实施例中采用局部写计数,并且可见在此中间状态下,图8中原数据块801和新数据块804特征完全一致(图8所示原数据块801中第3物理页为空白,未写入数据),所以在写入过程得以恢复之后无法从两个一一映射的数据块中分辨出究竟哪个是之前被写入数据的新数据块804,哪个是原有的数据块801。
[0116]针对这种情况,删除两个数据块中的任意一个,保留另一个作为暂定数据块,再根据预设的比较机制重新比较缓冲块及暂定数据块中标记的写计数,查找出缓冲块或数据块中的有效数据;也就是删除任意一个数据块之后,将暂定数据块替代原数据块801重新进行步骤604-步骤606中有效数据的查找和整合,也就是在暂定数据块和缓冲块中按照同样的方式查找出有效数据。然后再选取一个空白物理块作为补充数据块,根据一一映射的方式将有效数据拷贝至补充数据块中。上述方式被称为容错恢复技术。按照上述方式得到的新数据块与通过正常的整合过程得到的新数据块是一致的;无论被删除的数据块在整合中断之前是作为新数据块还是原数据块,对于结果均不产生影响,具体的原理如下:
[0117]如果删除原数据块801,则保留下新数据块804作为暂定数据块,则如图9所示;按照写计数的比较机制,新数据块804中写入的数据必然掩盖原数据块801中原本的数据;所以重新整合后的补充数据块905与正常整合得到的新数据块704 —致。
[0118]如果删除新数据块804,则保留原数据块801作为暂定数据块,则如图10所示,完全等同于写入中断之前的状态;后续步骤相当于重新将原数据801和两个缓冲块中的有效数据写入新数据块804的常规过程;重新整合得到的补充数据块1005与正常整合得到的新数据块704 —致。
[0119]另外,缓冲块与逻辑块为随机映射,所以各物理页对应的扇区一般是无规则的,与新数据块发生混淆的概率很低,但缓冲换各物理页按顺序对应逻辑块的各扇区也是随机映射的一种结果,并非不可能出现,所以理论上也存在缓冲块与新数据块发生混淆的可能性。在这种情况下同样可以利用容错恢复技术予以解决,即删除两个混淆的物理块中任意一个,保留另一个作为暂定数据块,原理相同。
[0120]本实施例所述方法中,在选取物理块与逻辑块建立映射关系的时候,采用随机选取物理块与逻辑块建立映射关系,并开始后续写入的方法。按照上述方法得以实现从概率上达到所有物理块的写平衡,使得NAND芯片中所有物理块的擦写次数基本相等,延长了NAND芯片的使用寿命。
[0121]本实施例存在的有益效果是:在图4所示实施例的基础之上,设定了最优选的缓冲块数量;并且利用所述容错恢复技术解决了写入中断后无法找到最后被写入的数据块的问题;另外,通过随机的选取物理块与逻辑块建立映射关系,使得NAND芯片上的物理块从概率上达到写平衡,延长了 NAND芯片的使用寿命。
[0122]参见图11所示,为本发明所述物理块写入系统的一个具体实施例。本实施例中所述系统为对应图4所示方法实施例而设立的系统,所以具体的,本实施例所述系统如下:
[0123]所述系统中逻辑块与多个物理块之间存在映射关系,所述多个物理块中存在与逻辑块一一映射的数据块,所述数据块包括原数据块和新数据块;和至少一个与逻辑块随机映射的缓冲块;每个物理块中写计数的数量等于缓冲块的数量;所述系统包括:
[0124]映射模块,用于建立逻辑块与物理块的映射关系;
[0125]写入模块,用于顺次向缓冲块写入数据;
[0126]所述写入模块中包括标记单元,用于在写入数据的过程中按照预设的标记规则为缓冲块标记写计数;所述标记规则具体为;
[0127]向第一缓冲块写入数据时,将原数据块的第一写计数递增并标记为第一缓冲块的第一写计数;
[0128]向第η缓冲块写入数据时,相对于第η-1缓冲块保留第η写计数之前的所有写计数,将第η-1缓冲块的第η写计数的数值递增,将所述递增后的数值标记为第η缓冲块的第η写计数;η为大于I的正整数;
[0129]有效判断模块,用于从各个中查找有效数据;;
[0130]拷贝模块,用于将所述有效数据拷贝至新数据块。
[0131]本实施例所述系统存在的有益效果是:本实施例中不同逻辑块对应的缓冲块各自独立进行写计数的标记,互不关联;并且所述的层级写计数标记方法仅在缓冲块写入的时候标记和递增写计数,而在有效数据整合的过程中有效数据不再发生任何改变;所以本实施例所述系统实现了对于COPYBACK硬件加速的支持,可以实现通过COPYBACK硬件加速提高NAND的运行速度;另外,本实施例中所述层级的写计数标记方法降低了写计数递增的速度,并在逻辑块重新与物理块建立映射关系时重新标记写计数,避免了写计数不断的累计递增导致的写计数数值越来越大,从而节省了整个计算机系统内存和存储空间。
[0132]以上所述仅是本发明的优选实施方式,应当指出,对于本【技术领域】的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
【权利要求】
1.一种物理块写入方法,其特征在于,所述方法中逻辑块与多个物理块之间存在映射关系,所述多个物理块中存在与逻辑块一一映射的数据块,所述数据块包括原数据块和新数据块;和至少一个与逻辑块随机映射的缓冲块;每个物理块中写计数的数量等于缓冲块的数量;所述方法具体步骤如下: 建立逻辑块与物理块的映射关系; 顺次向缓冲块写入数据,并在写入数据的过程中按照预设的标记规则为缓冲块标记写计数; 从各个物理块查找有效数据;将所述有效数据拷贝至新数据块; 所述标记规则具体为; 向第一缓冲块写入数据时,将原数据块的第一写计数递增并标记为第一缓冲块的第一写计数; 向第η缓冲块写入数据时,相对于第η-1缓冲块保留第η写计数之前的所有写计数,将第η-1缓冲块的第η写计数的数值递增,将所述递增后的数值标记为第η缓冲块的第η写计数;η为大于I的正整数。
2.根据权利要求1所述方法,其特征在于,所述物理块包括多个物理页,所述逻辑块包括多个扇区,且一个物理块包括的物理页的数量等于一个逻辑块包括的扇区的数量,则所述建立逻辑块与物理块的映射关系具体为: 将物理块中的物理页对应到逻辑块中的扇区上。
3.根据权利要求1所述方法,其特征在于,所述从各个物理块中查找有效数据具体为: 将最后写入数据作为该扇区的有效数据。
4.根据权利要求3所述方法,其特征在于,所述从各个物理块中查找有效数据还包括: 在所述写入过程中断并重新开始时,根据预设的比较机制比较各个物理块的写计数,从而找到最后写入的数据,并将其作为有效数据。
5.根据权利要求4所述方法,其特征在于,所述预设的比较机制具体为: 将各个物理块的第一写计数进行比较,如果第一写计数相同则顺次比较后续写计数,直到出现写计数不同则停止比较;视写计数大的物理块中写入的数据作为最后写入的数据。
6.根据权利要求4所述方法,其特征在于,所述方法还包括: 当新数据块与原数据块或缓冲块的特征一致,则保留中特征一致的物理块中的任意一个作为暂定数据块,再根据预设的比较机制比较缓冲块及暂定数据块中标记的写计数,查找出缓冲块或暂定数据块数据块中的有效数据;所述物理块的特征包括每个物理页对应的扇区和写计数; 将一个空白物理块作为补充数据块,根据一一映射的方式将有效数据拷贝至补充数据块中。
7.根据权利要求1所述方法,其特征在于,所述缓冲块的数量为两个,则写计数的数量为两个,所述标记规则具体为: 当所述旧数据块的第一写计数为a,则向第一缓冲块写入数据时,标记第一缓冲块的第一写计数为a+Ι,第二写计数为b ; 向第二缓冲换写入数据时,标记第二缓冲块的第一写计数为a+Ι,第二写计数为b+Ι ;a、b为小于4的非负整数,当a+Ι或b+Ι不小于4则令a+Ι或b+Ι等于O。
8.根据权利要求1-7任意一项所述方法,其特征在于,所述方法中随机选取物理块与逻辑块建立映射关系并写入。
9.根据权利要求1-7任意一项所述方法,其特征在于,所述物理块包括多个物理页,则所述为缓冲块标记写计数具体为: 将写计数标记在每个物理页中,当同一物理块中不同物理页的写计数不同,则以该物理块中第O物理页的写计数为有效写计数。
10.一种物理块写入系统,其特征在于,所述方法中逻辑块与多个物理块之间存在映射关系,所述多个物理块中存在与逻辑块一一映射的数据块,所述数据块包括原数据块和新数据块;和至少一个与逻辑块随机映射的缓冲块;每个物理块中写计数的数量等于缓冲块的数量;所述系统包括: 映射模块,用于建立逻辑块与物理块的映射关系; 写入模块,用于顺次向缓冲块写入数据; 所述写入模块中包括标记单元,用于在写入数据的过程中按照预设的标记规则为缓冲块标记写计数;所述标记规则具体为; 向第一缓冲块写入数据时,将原数据块的第一写计数递增并标记为第一缓冲块的第一写计数; 向第η缓冲块写入数据时,相对于第η-1缓冲块保留第η写计数之前的所有写计数,将第η-1缓冲块的第η写计数的数值递增,将所述递增后的数值标记为第η缓冲块的第η写计数;η为大于I的正整数; 有效判断模块,用于从各个中查找有效数据;; 拷贝模块,用于将所述有效数据拷贝至新数据块。
【文档编号】G06F3/06GK103970483SQ201310037365
【公开日】2014年8月6日 申请日期:2013年1月30日 优先权日:2013年1月30日
【发明者】李晓辉, 胡胜发 申请人:安凯(广州)微电子技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1