闪存ftl的地址转换方法

文档序号:6375249阅读:295来源:国知局
专利名称:闪存ftl的地址转换方法
技术领域
本发明涉及数据存储与NAND闪存技术领域,特别涉及一种闪存FTL (闪存转换层)的地址转换方法。
背景技术
随着移动通信的发展和便携式设备的普及,Flash存储器的非易失、高密度、高存取速度,低功耗,低价格等特性,使其在很多领域有广泛的应用。如常用的便携式播放器、数码相机、掌上电脑、移动电话等。但是,NAND FLASH设备由于工艺的关系,在使用中存在以下特点1)擦除操作单元比写操作单元大。2)与传统硬盘不同,不能直接在数据上进行覆盖,而是必须先擦后写。3) NAND FLASH存储限制了写和擦的次数。数据并不是顺序的写入存储地址中,因此一些特定的块可能会比其他块更多地使用,从而导致磨损,最终使整个存储不能使用。4)NAND FLASH会在出厂时存在坏块,同时在操作过程中也会产生坏块。5)NAND FLASH会在读取数据时产生错误或读取失败。因此必须存在一个特殊的系统层来使得可以像操作HDD —样操作NAND Flash。闪存转换层FTL的主要功能实现系统直接对闪存进行读、写、擦除操作。当操作系统发出对某个逻辑地址进行操作的指令后,FTL分析指令,通过转译在与该逻辑地址相对应的物理地址上进行操作,其功能的核心就在于地址映射。根据闪存的物理结构,映射通常分为块映射和页映射两种,一般映射信息是记录在闪存的冗余区中的。若采用页映射,虽然映射速度快,空间利用率高,但存储映射表所需的空间大,浪费了过多的系统资源,并且映射表的更新也相当频繁。若采用块映射,存储映射表所需空间相对较小,同时也降低了垃圾回收时的复制和擦除操作,但空间利用率低,并且当对某逻辑地址进行多次操作时,垃圾回收代价大,并加快了磨损速度,运行效率也较低。中国发明专利申请“闪存FTL的地址转换方法”(申请号201010133944. 8)中提出了一种闪存FTL的地址转换方法,该方案采用三次映射,并将物理块固定分为63组,地址转换效率较低,运算复杂,不适于实际应用。

发明内容
本发明的目的在于提供另一种闪存FTL的地址转换方法,旨在解决上述现有技术的缺陷,特别是解决目前FTL地址转换速度慢和运算复杂的缺点。本发明的技术方案如下一种闪存FTL的地址转换方法,包括以下步骤根据逻辑地址得到相应的逻辑块号和块内逻辑簇号;根据所述逻辑块号查找逻辑块地址空间到超级块组的映射表,得到物理块号和物理页号;根据所述物理块号和块内逻辑簇号查找逻辑簇到物理页的映射表,得到逻辑块中所有逻辑簇相应的物理页号;所述超级块用于对所有物理块进行分组,每个超级块包括8个物理块,所有超级块的物理号不重复,每个逻辑块对应一个超级块组。其进一步的技术方案为所述根据逻辑块号查找逻辑块地址空间到超级块组的映射表,得到物理块号和物理页号,包括根据所述逻辑块号查找逻辑块地址空间到超级块组的映射表找到该逻辑块地址空间最后一次映射到的物理块号。其进一步的技术方案为构建逻辑块地址空间到超级块组的映射表,所述逻辑块地址空间到超级块组的映射表用来记录每个逻辑块最后一次映射到的超级块的物理号。其进一步的技术方案为构建逻辑簇到物理页的映射表,所述逻辑簇到物理页的映射表用来保存逻辑簇到当前打开的超级块的物理页的映射关系。其进一步的技术方案为构建逻辑簇到物理页的映射表,所述逻辑簇到物理页的 映射表保存在每个超级块的最后4页,当逻辑块映射到该超级块时,首先从该超级块中读出该逻辑簇到物理页的映射表,查找该映射表得到相应的物理页地址。本发明的有益技术效果是本发明提出的方案相比中国发明专利申请“闪存FTL的地址转换方法”(申请号201010133944. 8)所提出的方案(以下简称“方案A”),不同之处在于I、本发明只需要进行两次映射,相比采用三次映射的方案A而言,地址转换效率更闻;2、本发明采用了超级块的组织形式,将8个物理块组成了一个超级块进行地址映射,减少了地址转换次数,并且方便后续进行适用于NAND Flash的并行高速数据传输机制。综上所述,与现有FTL地址转换的方法相比较,本发明具有以下优点I、本发明对于每一个逻辑块查找逻辑块地址空间到超级块组(LBA_SB)的映射表和逻辑簇到物理页的映射表就可以找到逻辑块中所有逻辑簇对应的物理页地址,因此本发明能够有效的提高FTL地址转换速度,并且还可降低运算的复杂度。2、本发明对物理块的分组,引进超级块的概念,可以方便在NAND Flash中采用Multi-plane, Multi-LUN, Multi-device等高级命令来加速传输速度。3、本发明采用两级映射表来查找地址,将块映射和页映射有效结合起来,显著提高FTL地址转换速度,占用的硬件资源少,对于连续数据以及随机数据的读写具有很好的执行效率,具有较强的灵活性。本发明附加的方面和优点将在下面具体实施方式
部分的描述中给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。


图I是本发明实施例的Super Block的内部结构。图2是本发明实施例的LBA Space到SB Group的链表。图3是本发明实施例的LBA_SB映射表。图4是本发明实施例的逻辑簇到物理页的映射表。
具体实施例方式下面结合附图对本发明的具体实施方式
做进一步说明。本发明以32GB容量的U盘作为例子,采用4个逻辑单元(LUN)来构建NAND Flash阵列,选择4个设备(device),每个设备含有一个逻辑单元的形式来构成存储阵列。为了加速数据的传输,本发明将4个逻辑单元(LUN1 LUN4)组织在一起形成超级块(Super Block,简称SB)。每个逻辑单元中包含两个层(Plane),每个层中有2048个块。本发明将4个逻辑单元共计8个层中的具有相同编号的块绑定在一起形成一个超级块,这个超级块具有相同的编号。由于每个超级块的容量为16MB,则对于32GB容量的U盘,本发明一共可以得到2048个超级块,每个超级块中包含8个物理块。图I显示了一个超级块的内部结构。对于32GB的U盘,就有32GB的逻辑数据空间。本发明将这个逻辑空间划分为若干个小空间,这些小空间称之为逻辑块地址空间(LBA Space)。数据从逻辑空间转移到物理空间时必须要存在一个映射关系来反映哪些超级块对应于哪个逻辑块地址空间。一个逻辑块地址空间的容量为128MB-4MB,一个超级块的容量为16MB-32KB,因此一个逻辑块地址空间可以对应于8个超级块。为每个逻辑块地址空间建立一个超级块组(SB group)来表示哪些超级块对应于这个逻辑块地址空间。图2显示了超级块组的构成方式。从图2中可以 看到,逻辑块地址空间m (LBA Space m)对应于一个超级块组,在这个超级块组中有若干个超级块,这些超级块在超级块组中按顺序排列,但是超级块的物理号是任意的,是由系统运行时根据状态按照一定算法进行分配的,系统会在一个表中记录每个逻辑块地址空间对应的超级块组中的最后一个分配的超级块的物理号,然后超级块组中每个超级块的最后一个物理页中都会标记在该超级块组中当前这个超级块之前被分配的那个超级块的物理号。为了找到一个组中的所有超级块,必须记录下下一个超级块的物理号。这样只要找个一个逻辑块地址空间所对应的超级块组中的最后一个超级块,就能反向追踪出该超级块组中所有的超级块的物理号。在内存中划出一块区域用来记录每个逻辑块地址空间最后一次映射到的超级块的物理号。32GB容量的系统中共有214个有效的逻辑块地址空间,因此本发明设置一个214X32bit的空间用来存放映射关系。入口 O存放逻辑块地址空间O的最后一次打开的超级块的物理号以及映射到的物理页号。同理,入口 213存放逻辑块地址空间213的相应信息。图3给出了这个LBA SB映射表(二级映射表),即逻辑块地址空间到其最后一次打开的超级块的物理号及物理页号的映射表的结构。一个物理页为8KB,而一个逻辑簇为4KB,因此一个物理页可以映射到两个逻辑簇。对于一个超级块来说,其中包含8个物理块,每个物理块包含256个物理页(如图I中PageO page255),因此每个超级块包含2048个物理页。逻辑簇到物理页的映射表保存在每个超级块的最后4页。本发明准备4096个映射入口(entry)来保存逻辑簇到当前打开的超级块的物理页的映射关系。图4给出了这个逻辑簇到物理页的映射表(二级映射表)的组成形式。当主机要将数据写进NAND Flash中时,FTL首先完成逻辑地址到物理地址的寻址,此时根据逻辑地址可以得到逻辑块地址空间号和块内逻辑簇号,然后查找LBA_SB映射表,可以知道逻辑块地址空间最后映射到哪个超级块,从该超级块的最后4页中读出逻辑簇到物理页的映射表。如果该映射表还未满的话,将为当前逻辑簇分配一个空余的物理页,完成地址转换;如果该映射表满的话,则表示当前超级块中已经没有空余物理页了,那么系统重新为当前逻辑块分配一个超级块,将当前超级块的第一页分配给当前逻辑簇。
当主机要从NAND Flash中读出数据时,FTL首先完成逻辑地址到物理地址的转换。根据主机发来的逻辑地址得到相应的逻辑块地址空间号和块内逻辑簇号,然后查找LBA_SB表,找到该逻辑块地址空间最后映射到哪个超级块,然后从该超级块的最后4页读出逻辑簇到物理页的映射表,在映射表中查找该逻辑簇对应的物理页地址。如果该映射表中没有该逻辑簇号,那么再打开前一个超级块的逻辑簇到物理页的映射表继续查找,直到找到为止。通过本发明,对于每一个逻辑块,只要记录其最后一次映射到的物理块号和物理页号,就可以找到该逻辑块中所有逻辑簇对应的物理页的地址。因此本发明实施例能够显著提高FTL的地址转换速度,占用的硬件资源少,对于连续数据以及随机数据的读写具有很好的执行效率,具有较强的灵活性。以上所述的仅是本发明的优选实施方式,本发明不限于以上实施例。可以理解,本 领域技术人员在不脱离本发明的基本构思的前提下直接导出或联想到的其他改进和变化,均应认为包含在本发明的保护范围之内。
权利要求
1.一种闪存FTL的地址转换方法,其特征在于包括以下步骤 根据逻辑地址得到相应的逻辑块号和块内逻辑簇号; 根据所述逻辑块号查找逻辑块地址空间到超级块组的映射表,得到物理块号和物理页号; 根据所述物理块号和块内逻辑簇号查找逻辑簇到物理页的映射表,得到逻辑块中所有逻辑簇相应的物理页号; 所述超级块用于对所有物理块进行分组,每个超级块包括8个物理块,所有超级块的物理号不重复,每个逻辑块对应一个超级块组。
2.根据权利要求I所述闪存FTL的地址转换方法,其特征在于所述根据逻辑块号查找逻辑块地址空间到超级块组的映射表,得到物理块号和物理页号,包括根据所述逻辑块号查找逻辑块地址空间到超级块组的映射表找到该逻辑块地址空间最后一次映射到的物理块号。
3.根据权利要求2所述闪存FTL的地址转换方法,其特征在于构建逻辑块地址空间到超级块组的映射表,所述逻辑块地址空间到超级块组的映射表用来记录每个逻辑块最后一次映射到的超级块的物理号。
4.根据权利要求I所述闪存FTL的地址转换方法,其特征在于构建逻辑簇到物理页的映射表,所述逻辑簇到物理页的映射表用来保存逻辑簇到当前打开的超级块的物理页的映射关系。
5.根据权利要求4所述闪存FTL的地址转换方法,其特征在于构建逻辑簇到物理页的映射表,所述逻辑簇到物理页的映射表保存在每个超级块的最后4页,当逻辑块映射到该超级块时,首先从该超级块中读出该逻辑簇到物理页的映射表,查找该映射表得到相应的物理页地址。
全文摘要
本发明公开一种闪存FTL的地址转换方法,包括以下步骤根据逻辑地址得到相应的逻辑块号和块内逻辑簇号;根据所述逻辑块号查找逻辑块地址空间到超级块组的映射表得到相应的物理块号和物理页号;根据物理块号和块内逻辑簇号查找逻辑簇到物理页的映射表得到相应的物理地址。根据本发明,对于每一个逻辑块,只要记录其最后一次映射到的物理块号和物理页号,就可以找到该逻辑块中所有逻辑簇对应的物理页的地址。因此本发明能够显著提高FTL的地址转换速度,占用的硬件资源少,对于连续数据以及随机数据的读写具有很好的执行效率,具有较强的灵活性。
文档编号G06F12/02GK102819496SQ20121029259
公开日2012年12月12日 申请日期2012年8月16日 优先权日2012年8月16日
发明者黄益人, 董春雷, 周毅, 奚谷枫 申请人:无锡紫芯集成电路系统有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1