一种Nand-Flash存储系统的管理方法

文档序号:6458736阅读:119来源:国知局
专利名称:一种Nand-Flash存储系统的管理方法
技术领域
本发明涉及计算机存储系统的管理方法,尤其涉及计算机Nand-Flash (非 易失闪存)存储系统的管理方法。
技术背景Nand-Flash存储系统是一种非易失闪存存储系统,Nand-Flash存储系统具 有很快的写入和擦除速度,主要功能是存储资料,其在U-盘、数码相机、MP3、 MP4、手机、GPS接收装置等手持移动装置中得到了广泛的应用。传统的Nand-Flash存储系统是主要基于单层单元(SLC,即Single Layer Cell) Flash器件的存储系统,但是近两年随着Flash器件工艺的改进,不但原 有的基于单层单元(SLC) Flash器件的Nand-Flash存储系统在访问控制上有 了变化,还出现了新型的基于多层单元(MLC,即Multiple Layer Cell) Flash 器件的Nand-Flash存储系统,并且由于后者在相同成本下有两倍的容量优势, 将替代基于单层单元(SLC) Flash器件的Nand-Flash存储系统。传统单层单 元Flash器件与基于多层单元(MLC) Flash器件在物理接口和内部特性上都有 很大不同,因此传统Flash器件存储系统的存储管理方法在速度和稳定性上都 已不能与新型Flash器件相适应。例如,现有技术关于对基于单层单元(SLC) Flash器件的Nand-Flash存储系统的管理方法中,使用了前向链表和页替换写 入的技术,来实现闪存的逻辑物理地址转换,该技术的不足之处在于其中使 用前向链表就必须发生物理页面的局部写入和再次写入,不能使物理页面一次 性写入;而其中使用的页替换写入的技术会导致同一物理块内的页面非顺序写 入。在新型的基于多层单元(MLC) Flash器件的Nand-Flash存储管理方法中, 上述页面的局部写入和再次写入以及同一物理块内的页面非顺序写入这样的访 问是受到严格限制的,因为其无法保证数据的完整性。发明内容本发明针对现有技术中的不足,提供一种基于多层单元(MIX) Flash器件 的Nand-Flash存储系统的管理方法,其既能满足物理页面一次性写入的要求,又能保证同一物理块内的页面按顺序写入,从而在实现闪存的逻辑物理地址转 换时,能保证数据的完整性。
本发明是通过以下技术方案实现的
一种Nand-Flash存储系统的管理方法,动态的将多个物理块对应到一个逻 辑块,形成一个由各物理块构成的逻辑块链;在每个物理块的第一物理页的扩 展区域,分别存放该物理块所对应的逻辑块号信息和在逻辑块链中它的前一个 物理块的块号信息,在系统初始化时,通过存放的上述信息,重建出与所述逻 辑块链对应的双向链表,在模块正常工作时,依据所述双向链表进行数据的读 写操作。
进一步,依据所述双向链表进行数据的写操作时,具体步骤如下
(1) 、使每个逻辑页写入的物理页号与逻辑页号一致;
(2) 、在逻辑块链中的每个物理块可以全写满,也可以局部被写入,但必须满
足每个物理块最后一个被写入的页前面的所有页也被写入过,它后面的所有页 都是空闲页。
(3) 、依据所述双向链表进行数据的写操作时,在所述双向链表对应的逻辑块 链中从前往后搜索,只要找到该逻辑块链上已使用物理页数小于所请求写入逻 辑页号的第一个物理块,就直接将数据写入该物理块的所请求写入逻辑页;如 果请求写入的逻辑页号小于该逻辑块链的最后一个物理块的已使用物理页号,
则在逻辑块链上新添加一个空闲物理块,将所请求写入逻辑页之前的所有有效 页数据复制到当前新空闲物理块中,再在所请求写入的逻辑页上写入数据。
更具体地说,依据所述双向链表进行数据的写操作时,在所述双向链表对 应的逻辑块链中从前往后正向搜索,当在该逻辑块链上找到已使用物理页号小 于所请求写入逻辑页号的第一个物理块,按下述方法直接将数据写入该物理块:
在该物理块上所述已使用物理页号与所请求写入逻辑页号之间的所有页面空 间,复制填入该物理块的前向物理块中相应页面空间的物理页上的数据,然后 再在所请求写入逻辑页号上写入数据;或者,依据所述双向链表进行数据的写 操作时,在所述双向链表对应的逻辑块链中从前往后搜索,如果所有的物理块 已使用物理页号都大于所请求写入的逻辑页号,则在逻辑块链上新添加一个空 闲物理块,按下述方法将数据写入该空闲物理块在所请求写入逻辑页之前的 所有页面空间,复制填入该空闲物理块的前向物理块中相应页面空间的物理页上的数据,然后再在所请求写入逻辑页号上写入数据。
进一步,依据所述双向链表迸行数据的读操作时,具体步骤如下 在所述双向链表对应的逻辑块链中自后往前反向搜索,找到第一个写入页
数不小于当前请求的读操作逻辑页号的物理块,即为有效的读取目标物理块,
在该目标物理块上读取和当前请求的读操作逻辑页号相同的物理页号,即得到
所需数据。
当一个逻辑的长度超过设定的门限值或者系统需要更多可用的空闲物理块 时,执行回收操作,具体步骤如下
从该逻辑块链中的最后一个物理块开始自后往前反向搜索,假设最后一个 物理块使用到第N页,则由倒数第二个物理块的第N+1页开始复制,复制到该 物理块的第一个空闲页为止;然后依次寻找前一个使用过的页数大于当前已复 制页数的物理块,再继续在该物理块的相应页复制它的数据,复制到该物理块 的第一个空闲页为止,直到最后一个物理块的最后一页被填满为止,最后,释 放掉原逻辑块链的除最后一块的所有物理块。
上述技术方案中-
所述逻辑块号是指该模块面像上层调用所虚拟出来的块号,其中模块是指 整个Nand-Flash管理系统在上层系统看来只是一个标准的块设备(即以块为单 位,每个单位可以单独读写的存储设备);
物理块号,是指该模块所管理的Nand-Flash物理设备的块号(属于 Nand-Flash管理系统的存储区中用于寻址的编号);
逻辑块链,是指同一逻辑块由多个物理块与之对应,这些物理块从前往后 虚拟连接成的一条链式结构;
所述的双向链表,是指在内存中存放的物理块号对应关系表,该表是由储 存在Nand-Flash每一页的扩展区域的逻辑块号和前向替换物理块号信息重建得
出的;
所述的逻辑页号,是指逻辑地址对应在逻辑块内的页号;比如,需要访问 的逻辑地址为0x00201000,假设该Nand-Flash的物理块大小为256KB,页大小 为2KB,则逻辑地址0x00201000对应的是第8块的第2页(0x00201000 = 256K * 8 + 2K * 2),那我们称该逻辑地址对应的逻辑块号为8,逻辑页号为2。该 逻辑块号8,但在读写时可能对应到不同的物理块,所谓逻辑页号和物理页号一
6致是指,无论该逻辑地址对应到那个物理块,其对应的物理页号始终为2,和逻 辑页号一致。
所述的物理页号,是指Nand-Flash存储器物理块内的页号(属于 Nand-Flash管理系统的存储区中用于寻址的编号);
所述的第一物理页是指每个Nand—Hash管理系统的存储区域分为N物 理块,每个块又分为X页,每一页分为两部分区域, 一部分为普通的数据区, 另一部分为的信息区,两个区域都可存放数据。第一物理页就是指的每一物理 块的第一页。
所述的有效的读取目标物理块,是指在一个逻辑块链中,某目标逻辑页有 效数据所存放的那个物理块;目标逻辑页号是指上层发出读写请求的页号,也 就是整个向上层虚拟出来的逻辑页号,而非底层真正的物理页号,由于本算法 在逻辑页和物理页映射上使用的一一映射,所以逻辑页号和物理页号相等;
所述的空闲物理块,是指没有参与到某个逻辑块链中的可用的物理块;
所述的有效页数据,是指这些逻辑页在读取时对应的那个物理页内的数据。本发明的优点在于
用本发明进行写操作时,其既能满足物理页面一次性写入的要求,又能保 证了同一物理块内的页面按顺序写入,从而在实现闪存的物理地址转换时,能 保证数据的完整性。
用本发明进行读操作时,由于搜索读取位置都在内存中完成,所以大大减 少了搜索的时间,减小了读取的时间延迟。对于MLC—Flash器件芯片,在Limix 操作系统下加入RS-ECC算法(里德所罗门算法)后,在应用层读取文件速度 可达3MB/s 5MB/s。本发明虽然对随机的写入看起来效率不髙,但对于通常 情况下的顺序写入能有较快的速度,同样在应用层加入了 RS-ECC算法的文件 写入速度可达0.8MB/s 1.5MB/s。
利用上述双向链表及"双向搜索"技术的优点在于能够满足物理页面一次 性写入的要求,如果只用前向指针搜索,要发生2次写入同一个物理页面。之 所以采用"直接复制技术",是因为只有这样才能既不影响速度,同时保证在同 一块中满足页的顺序写入。上述两种技术结合起来才能满足数据完整性的要求。


图1为本发明构建内存反向链表实施例1的示意图;图2为由实施例1构建的内存双向链表的示意图; 图3为本发明构建内存反向链表实施例2的示意图; 图4为由实施例2构建的内存双向链表的示意图 图5为本发明的写操作实施例1的示意图; 图6为本发明写操作实施例2的示意图; 图7为本发明读操作实施例示意图8为本发明中页回收操作的示意图。
具体实施例方式
以下结合

本发明的具体实施方式
。 (一)、构建双向链表
图1为本发明构建反向链表实施例1的示意图。见图1,本发明方法动态的 将物理块7及物理块9共同对应表示一个逻辑块号M,形成一个由物理块7及物 理块9虚拟连接构成的逻辑块链(LBC) —M。图1中物理块7由竖线分成左右两 区,左区为数据的正常存放区,右区为扩展区域;图1中物理块7由横线分成 上下两区,上区为物理块7中第一物理页的存放区,下区为其余物理页的存放 区,白色区为空闲存放区。物理块9的图示相同。在物理块9的第一物理页的 扩展区域10分别存放该物理块所对应的逻辑块号M和在逻辑块链中它的前一个 物理块(又称前向替换物理块)的块号7,作为物理块9的反向链附加信息(M, 7);在物理块7的第一物理页的扩展区域10也存放了它所对应表示的逻辑块号 M,由于物理块7是逻辑块M的第一块,所以他的前向替换物理块号为一个特殊 标记HEAD,以表示该块是逻辑块M上的第一块,由此物理块7的反向链附加信 息为(M, HEAD)。图1至图8中,物理块之间上方的弧形箭头表示前向替换物 理块的方位。
之所以要在Nand-Flash存储系统中每个物理块的第一物理页的扩展区域 10,分别存放前向替换物理块号,是因为只有使用前向替换物理块号,才能满 足基于新型多层单元(MLC) Flash器件的Nand-Flash存储系统的物理页面一 次性写入的要求,如果使用后向替换物理块号,则在写入数据的时候并不确切 知道当前块的后向替换物理块究竟是哪一块,必须等到下一块分配的时候才写 入后向替换物理块的信息,因此就免不了发生再次写入的情况,这对保证 Nand-Flash的数据完整性带来了较大的风险。本发明方法完全避免了这样的风险。
在系统初始化时,完整的搜索Nand-Flash存储器中物理块9及物理块7上 存放的上述反向链附加信息(M, 7)以及(M, HEAD),可以重建出完整的与所 述逻辑块链(LBC)—M对应的反向链表。
实施例l,见图l,在系统初始化时,首先搜索到物理块9,得到它所表示 的逻辑块号为M,它的前向物理块号为7,读取物理块7的前向替换物理块号时, 发现为HEAD标记,则对逻辑M块链的搜索结束,得到逻辑M块链(LBC)—M的 内存反向链表9->7,再根据该内存反向链表构建出逻辑M块链(LBC)—M的内 存正向链表7->9,进而构成一个完整的逻辑M块链(LBC) —M的内存双向链表 7<->9,如图2所示,图2为由上述实施例1构建的内存双向链表的示意图。
实施例2,图3为本发明构建内存反向链表实施例2的示意图。见图3,在 系统初始化时,首先搜索到物理块4,得到它所表示的逻辑块号为K,它的前向 替换物理块号为8,接着在对物理块8进行搜索,得到它的前向替换物理块号为 5,再读取5的前向替换物理块号时发现为HEAD标记,则对逻辑K块链的搜索 结束,得到逻辑K块链(LBC)—K的内存反向链表4->8-〉5,再根据反向链表 构建出逻辑K块链(LBC)—K的内存正向链表[K]: 5->8->4,进而构成一个完整 的逻辑K块链(LBC)—K的内存双向链表[幻5<->8<->4,如图4所示,图4 为由上述实施例2构建的内存双向链表的示意图。
(二)、依据所述内存双向链表进行数据的读写操作
在模块正常工作时,依据内存双向链表进行数据的读写操作。
1、写操作
按双向链表进行数据的写操作时,具体步骤如下 (1)、每个逻辑页写入的物理页号与逻辑页号一致。图5为本发明页映射的 写操作实施例1的示意图,图5中示出由物理块7、物理块5以及物理块13组成 的虚拟逻辑块链(LBC)所对应的双向链表为7〈-〉5〈-〉13。图5中的斜线区为已 使用或已写入的物理页,空白区为未使用或未写入的物理页,斜线区中的竖向 分界线为普通存储区(左部)与扩展存储区(右部)的分界线,图5中物理块 7下方的UsedPage71 = 128表示辑物理块7的第一空闲页,页号为128, UsedPage5-lll及UsedPage13-46类同。见图5,逻辑页号为110,则在相 应的物理块5中写入第110页物理页号(黑色区)的位置。每个逻辑页写入的物理页号与逻辑页号一致,是使读取速度达到最快的一种直接映射的设计方式, 这样能够省去搜索页位置的时间。
(2)、图5中的逻辑块链中,每个物理块可以全写满,也可以局部被写入, 但必须满足每个物理块最后一个被写入的页的前面所有页被写入过,其后面的 所有页都是空闲页,如图5中物理块7的第127页、物理块5的70页以及物理 块13的45页的前面所有页被写入过,其后面的所有页都是空闲页,这是新型 的基于多层单元MLC—Flash器件的Nand-Flash存储系统对写入的规定,某一 块内必须按照顺序写入,否则写入数据时会出错。 (3)、写操作(正向搜索)
在发生一次写请求时,包括请求写入的逻辑块号(图5中示出逻辑块号为2, 物理块7、物理块5以及物理块13共同对应于逻辑块号2)、请求写入的逻辑页 号(图5中为110)以及请求写入的数据,根据请求写入的逻辑块号2的逻辑块 链以及请求写入的逻辑页号110,在与双向链表7<->5<->13对应的逻辑块链上, 依次按照7-〉5->13的顺序从前往后正向搜索每个物理块(例如图5中的逻辑物 理块7、逻辑物理块5以及逻辑物理块13)所使用的物理页数,找到已使用物 理页数小于所请求写入逻辑页数110的第一个物理块为物理块5,便按下述方法 直接将数据写入该物理块5的所请求写入逻辑页110:在该物理块5上所述已使 用物理页号70与所请求写入逻辑页号110之间的所有页面空间71 — 109页号, 复制填入该物理块的前向物理块7中相应页面空间71 — 109页号的物理页上的 数据,然后再在所请求写入逻辑页号110上写入当前请求的数据。
如果请求写入的逻辑页号小于该逻辑块链的最后一个物理块的已使用物理 页号,则再新建一个替换物理块,在新建替换物理块上0至该请求写入的逻辑 页号之间的所有页面空间,复制填入该新建替换物理块的前向物理块中相应页 的有效数据,然后在请求写入的页号写入当前请求的数据;图6为本发明写操 作实施例2的示意图,见图6,所请求写入的页号为31 (黑色区),它小于该逻 辑块链的最后一个物理块13的已使用页数45,则新建一个替换物理块l,加入 该逻辑块链(LBC)中,在新建替换物理块1上0至该请求写入的页号31之间的 所有页面空间0—30页,复制填入其前向物理块13中0-30页的数据,如图6 中的空白箭头及替换物理块1上的黑点区所示。最后再在请求写入的页号31写 入当前请求写入的数据。物理块1的32页起为空闲区。2、读操作(反向搜索)按双向链表进行数据的读操作时,具体步骤如下在所述双向链表对应的逻辑块链中从后往前反向搜索每个物理块所使用的 物理页数,找到第一个(因为除了倒数第一个里的数据是有效数据外,以前的 都是无效数据)已写入页数不小于当前请求读操作逻辑页号的物理块,即为有 效的读取目标物理块,在目标物理块上读取的物理页号和当前请求读操作的逻 辑页号相同(因为是采用的页内直接复制的技术,所以物理页号和逻辑页号是 相同的、 一一对应的)。图7为本发明的读操作实施例示意图,见图7实施例,所请求的读操作逻 辑页号为第52页时,首先找到与逻辑块2双向链表对应的逻辑块链2: 7<->5<->13<->1,从后往前反向搜索每个物理块(例如图7中的物理块1、物理 块13、物理块5以及物理块7)所使用的逻辑页数,找到第一个已写入页数为 61 (62表示空闲页)、不小于当前请求读操作逻辑页号52页(第二根箭头线所 示)的物理块13,其即为有效的读取目标物理块,读取物理块13的第52物理 页(与当前请求读操作逻辑页号52相同),即得到所需读取数据。同理,从图7 可见,第一个已写入页数45、不小于当前请求读操作逻辑页号30的物理块1, 其即为有效的读取目标物理块,读取物理块1的第30物理页,即得到所需读取 数据;第一个已写入页数70、不小于当前请求读操作逻辑页号70的物理块5, 其即为有效的读取目标物理块,读取物理块5的第70物理页,即得到所需读取 数据;第一个已写入页数127、不小于当前请求读操作逻辑页号120的物理块7, 其即为有效的读取目标物理块,读取物理块7的第120物理页,即得到所需读 取数据。3、回收操作(反向搜索)当一个逻辑块链(LBC)太长,超过设定的门限值,或者系统需要更多可用的 空闲逻辑块时,执行回收操作,具体步骤如下图8为本发明中页回收操作的示意图,见图8,首先在双向链表中査找到逻 辑块链(LBC)上的最后一个物理块l,假定物理块1上已有18页物理页写入数 据,再从该逻辑块链(LBC)上的倒数第二个物理块开始,自后往前逐块反向搜 索,并按如下复制数据:由倒数第二个物理块13的19页开始复制至物理块1, 复制到该物理块的第一个空闲页(UsedPage)为止(即页45为止,因为页46为ii空闲页);然后寻找前一个使用过的页数大于当前已复制页数的物理块,找到了 前一个物理块5,它的已使用页数为70,大于当前已复制页数45,所以从物理 块5的第46页开始继续复制数据至物理块1,到物理块5的第一个空闲页71 前为止,即复制到页70,直到最后一块的所有页都已经被填满(即到某一物理 块复制到了最后一页一例如前面的物理块复制到了最后一页127),如图8中 物理块1上的箭头及各区域写入的数据所示,此时才算完成了回收的复制工作。 最后,释放掉(擦除)原逻辑块链(LBC)除了最后一物理块1以外的所有物理 块,即图8中的物理块7、物理块5、物理块13。本发明方法既满足了新型的基于多层单元(MLC) Flash器件的Nand-Flash 存储管理方法对所有物理块的页必须顺序写入的要求,又在最大限度上减小了 Flash器件的损耗,因为在这种结构下,复制数据的次数达到了最少,每一次 的复制都仅是受到物理器件的限制,而不存在人为的浪费,同时还保证了最快 的读取速度和较快的写入速度,在实现闪存的逻辑物理地址转换时,能保证数 据的完整性。
权利要求
1、一种Nand-Flash存储系统的管理方法,其特征在于动态的将多个物理块对应到一个逻辑块,形成一个由各物理块构成的逻辑块链;在每个物理块的第一物理页的扩展区域,分别存放该物理块所对应的逻辑块号信息和在逻辑块链中它的前一个物理块的块号信息,在系统初始化时,通过存放的上述信息,重建出与所述逻辑块链对应的双向链表,在模块正常工作时,依据所述双向链表进行数据的读写操作。
2、 依据权利要求1所述的Nand-Flash存储系统的管理方法,其特征在于 依据所述双向链表进行数据的写操作时,具体步骤如下(1) 、使每个逻辑页写入的物理页号与逻辑页号一致;(2) 、在逻辑块链中的每个物理块可以全写满,也可以局部被写入,但必须满 足每个物理块最后一个被写入的页前面的所有页也被写入过,它后面的所有页 都是空闲页。(3) 、依据所述双向链表进行数据的写操作时,在所述双向链表对应的逻辑块 链中从前往后搜索,只要找到该逻辑块链上已使用物理页数小于所请求写入逻 辑页数的第一个物理块,就直接将数据写入该物理块的所请求写入逻辑页;如果请求写入的页号小于该逻辑块链的最后一个物理块的已使用页号,则在逻辑块链上新添加一个空闲物理块,将所请求写入逻辑页之前的所有有效页数据复 制到当前新空闲物理块中,再在所请求写入的逻辑页上写入数据。
3、 依据权利要求1所述的Nand-Flash存储系统的管理方法,其特征在于 依据所述双向链表进行数据的读操作时,具体步骤如下在所述双向链表对应的逻辑块链中自后往前搜索,找到第一个写入页数不 小于当前请求的读操作逻辑页号的物理块,即为有效的读取目标物理块,在该 目标物理块上读取和当前请求的读操作逻辑页号相同的物理页号,即得到所需 数据。
4、 依据权利要求1中所述的Nand-Flash存储系统的管理方法,其特征在 于当一个逻辑块链的长度超过设定的门限值或者系统需要更多可用的空闲物理 块时,执行回收操作,具体步骤如下首先在双向链表中査找到逻辑块链上的最后一个物理块,再从该逻辑块链上的倒数第二个物理块开始自后往前逐块反向搜索,并按如下复制数据假设 最后一个物理块使用到第N页,则由倒数第二个物理块的第N+l页开始复制数 据至最后一个物理块的相应页,复制到该物理块的第一个空闲页为止;然后依 次寻找前一个使用过的页数大于当前已复制页数的物理块,再继续按上述方法 在该物理块的相应页复制它的数据至最后一个物理块的相应页,复制到该物理 块的第一个空闲页为止;照此类推,直到最后一个物理块的最后一页被写入为 止,最后,释放掉原逻辑块链的除最后一块的所有物理块。
5、 依据权利要求2所述的Nand-Flash存储系统的管理方法,其特征在于 依据所述双向链表进行数据的写操作时,在所述双向链表对应的逻辑块链中从 前往后搜索,当在该逻辑块链上找到已使用物理页号小于所请求写入逻辑页号 的第一个物理块,按下述方法直接将数据写入该物理块在该物理块上所述已 使用物理页号与所请求写入逻辑页号之间的所有页面空间,复制填入该物理块 的前向物理块中相应页面空间的物理页上的数据,然后再在所请求写入逻辑页 号上写入数据。
6、 依据权利要求3所述的Nand-Flash存储系统的管理方法,其特征在于 依据所述双向链表进行数据的写操作时,在所述双向链表对应的逻辑块链中从 前往后搜索,如果所有的物理块已使用物理页号都大于所请求写入逻辑页号, 则在逻辑块链上新添加一个空闲物理块,按下述方法将数据写入该空闲物理块: 在所请求写入逻辑页之前的所有页面空间,复制填入该空闲物理块的前向物理块中相应页面空间的物理页上的数据,然后再在所请求写入逻辑页号上写入数
全文摘要
本发明涉及计算机Nand-Flash存储系统的管理方法。将多个物理块形成逻辑块链;在各物理块第一物理页的扩展区域,存放物理块的块号及其前向物理块块号信息,系统初始化时,通过存放的上述信息,重建出逻辑块链的双向链表。读操作时,利用双向链表从后往前搜索,读取目标物理块,读取的物理页号和逻辑页号相同。写操作时,利用双向链表从前往后搜索,只要找到该逻辑块链上已使用页数小于所请求写入逻辑页号的第一个物理块,就直接将数据写入该物理块所请求写入的逻辑页;如果所有的物理块已使用页数都大于所请求写入的逻辑页号,则在逻辑块链上添加一个空闲物理块,将有效页数据复制到当前新空闲物理块中,再写入当前页的数据。
文档编号G06F12/08GK101329656SQ200810025488
公开日2008年12月24日 申请日期2008年5月6日 优先权日2008年5月6日
发明者咏 何, 赵海源 申请人:无锡紫芯集成电路系统有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1