闪存及闪存的地址转换方法

文档序号:6400031阅读:255来源:国知局
专利名称:闪存及闪存的地址转换方法
技术领域
本发明涉及计算机及电子信息技术领域,尤其涉及一种闪存及闪存的地址转换方法。
背景技术
闪存,NAND Flash具有非易失性、功耗低、性能高和抗震性能强等特点,有着广泛的应用。NAND flash具有以下特点:1)、读写最小单位是页;2)、擦除最小单位是块;3)、不能复写,必须先擦除后写;4)、有的块在出厂时或使用过程中会变成坏块,不能继续使用。NAND的页有主(main)区和备用(spare)区构成,主区存放用户数据,备用区一般存放ECC纠错码、部分映射信息和其他管理信息等。闪存转换层(FTL)负责逻辑地址到物理地址的映射,坏块管理等信息,将NAND抽象成一个标准块设备,对主机隐藏NAND底层信息。闪存的映射方式一般分为块映射、页映射和混合映射三种。块映射对内存资源占用少,但效率低;页映射效率高,但是对内存资源占用大;混合映射根据需求在前述二者之间做折中。申请号为201010133944.8的中国发明专利申请“闪存FTL的地址转换方法”提出了一种三级映射的原理,但是未指明在实际运用中,各级映射表是如何存储和构建的,并且效率低。

发明内容
有鉴于此,有必要提供一种闪存及闪存的地址转换方法。本发明提供的闪存,闪存与SRAM通信连接,由物理块组成,其中所述物理块由多个物理页组成,逻辑页与物理页一一对应,所述物理页内包括第二级映射表以及第三级映射表,所述多个物理块组成一个超级块,还包括:获取模块、记录模块、建立模块、判断模块以及输出模块,其中:获取模块用于将逻辑页划分为三段,分别对应超级块块号、组号和组内偏移;记录模块用于将每一个超级块所包含的物理块块号记录到超级块分配表中;建立模块用于根据所述超级块分配表在SRAM中建立第一级映射表,并以所述超级块块号作为所述第一级映射表的索引;判断模块用于通过所述超级块块号判断所述第二级映射表在SRAM的缓存是否被命中,且在所述第二级映射表在SRAM的缓存被命中时通过所述组号判断所述第三级映射表在SRAM的缓存是否被命中,在所述第三级映射表在SRAM的缓存被命中时判断所述超级块分配表在SRAM的缓存是否被命中;输出模块,用于在所述超级块分配表在SRAM的缓存被命中时根据所述第二级映射表的缓存、所述第三级映射表的缓存以及所述超级块分配表的缓存联合得到所述物理块的块号,以获得所述逻辑页的物理地址。本发明提供的闪存的地址转换方法,其中,闪存与SRAM通信连接,由物理块组成,其中所述物理块由多个物理页组成,逻辑页与物理页一一对应,所述物理页内包括第二级映射表以及第三级映射表,所述多个物理块组成一个超级块,所述方法包括以下步骤:将逻辑页划分为三段,分别对应超级块块号、组号和组内偏移;将每一个超级块所分配的物理块块号记录到超级块分配表中;根据所述超级块分配表在SRAM中建立第一级映射表,并以所述超级块块号作为所述第一级映射表的索引;通过所述超级块块号判断所述第二级映射表在SRAM的缓存是否被命中;若是,则通过所述组号判断所述第二级映射表在SRAM的缓存是否被命中;若是,则判断所述超级块分配表在SRAM的缓存是否被命中;若是,则根据所述第二级映射表的缓存、所述第三级映射表的缓存以及所述超级块分配表的缓存联合得到所述物理块的块号,以获得所述逻辑页的物理地址。本发明提供的闪存及闪存的地址转换方法,通过利用超级块分配表在SRAM上建立第一级映射表,并在SRAM上根据第一级映射表建立第二级映射表的缓存,根据第二级映射表的缓存建立第三级映射表的缓存,并根据第二级映射表的缓存、第三级映射表的缓存以及超级块分配表的缓存联合得到所述物理块的块号,以获得所述逻辑页的物理地,有效的提高了地址转换的效率。


图1为本发明一实施方式中逻辑块、物理块、逻辑页以及物理页的关系图;图2为本发明一实施方式逻辑页的结构图;图3为本发明一实施方式物理页的结构图;图4为本发明一实施方式中闪存的模块图;图5为本发明一实施方式中超级块分配表的结构图;图6为本发明一实施方式中闪存的地址转换方法的流程图;图7为图6所示流程图中步骤S20的具体流程图。
具体实施例方式下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能理解为对本发明的限制。在本发明的描述中,术语“内”、“外”、“纵向”、“横向”、“上”、“下”、“顶”、“底”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明而不是要求本发明必须以特定的方位构造和操作,因此不能理解为对本发明的限制。请参阅图1,图1所示为本发明一实施方式中逻辑块、物理块、逻辑页以及物理页的关系图。在本实施方式中,闪存与SRAM (图未示)通信连接,由物理块组成,其中所述物理块由多个物理页组成,逻辑页与物理页一一对应,所述物理页内包括第二级映射表以及第三级映射表,所述多个物理块组成一个超级块,物理块由多个物理页组成。在本实施方式中,闪存有8个物理块,每个物理块有8个物理页,一共有8x8=64个物理页,如果一个物理页大小为8KB,那么物理块的容量为64x8=512KB。主机可以使用的空间一般小于该值,例如256KB (这个完全由设计者自己划分),相当于只有4个物理块的有效空间(4*6=32个物理页),超级块是逻辑概念,超级块一般大于物理块,如果超级块的大小为2个物理块的大小,那么主机认为一共有4/2=2个超级块,每个超级块有8*2=16个逻辑页,一共刚好也是32个逻辑页,逻辑页和物理页大小相等。
逻辑页、超级块是逻辑地址,也就是主机使用的地址;物理页、物理块是物理地址,指的是NAND上的地址。逻辑页O 15属于超级块0,逻辑页16 31属于超级块I (按顺序划分),主机读写数据时给出的是逻辑地址,它不关心数据具体存放在NAND上的物理地址,比如主机读逻辑页O时,逻辑页O就属于超级块0,那么通过三级映射关系,最终发现该逻辑页O存储在NAND的物理块3的物理页I上,那么读取该页就得到数据。请参阅图2,图2为本发明一实施方式逻辑页的结构图。在本实施方式中,逻辑页包括超级块块号、组号以及组内偏移三部分。请参阅图3,图3为本发明一实施方式物理页的结构图。在本实施方式中,物理页的内容包括用户数据、第二级映射表、第三级映射表以及其他内容。在本实施方式中,第二级映射表与第三级映射表分散存储在多个物理页中。请参阅图4,图4为闪存10的模块图。在本实施方式中,闪存10包括获取模块102、记录模块104、建立模块106、判断模块108、输出模块110、存储模块112以及处理器114,其中,存储模块112用于存储获取模块102、记录模块104、建立模块106、判断模块108以及输出模块110,处理器114用于执行存储模块112中的各个功能模块。在本实施方式中,闪存10与SRAM (图未示)通信连接,由物理块组成,其中所述物理块由多个物理页组成,逻辑页与物理页一一对应,所述物理页内包括第二级映射表以及第三级映射表,所述多个物理块组成一个超级块,逻辑页与物理页一一对应,所述物理页内包括第二级映射表以及第三级映射表,所述多个物理页组成一个物理块,所述多个物理块组成一个超级块。在本实施方式中,在超级块大小固定的情况下,分组越小,第二级映射表越小,第三级映射表越大。在本实施方式中,获取模块102用于将逻辑页划分为三段,分别对应超级块块号、组号和组内偏移。在本实施方式中,组号用来索弓丨第二级映射表(又称组映射表),组内偏移用来索引第三级映射表(又称组内映射表)。记录模块104用于将每一个超级块所包含的物理块的块号记录到超级块分配表中。在本实施方式中,超级块分配表存储在闪存10的特定的物理块内,而特定的物理块存储在其他非易失性存储设备(如NOR Flash)上。请参阅图5,图5所示为超级块分配表的结构图。在本实施方式中,物理页包括有效(invalid)页、无效(valid)页以及空(empty)页。在本实施方式中,超级块分配表存储在闪存的特定块内,可能需要占用多个页,当超级分配表更新时,写入到下一个空页中。请继续参阅图4,建立模块106用于根据所述超级块分配表在SRAM中建立第一级映射表,并以所述超级块块号作为所述第一级映射表的索引。在本实施方式中,所述建立模块106包括获取子模块1062、查找子模块1064、读取子模块1066以及判断子模块1068。
在本实施方式中,获取子模块1062用于获取所述超级块分配表在闪存上的物理块的块号。查找子模块1064用于通过利用二分查找法查找所述物理块上最后写入的物理页页号。读取子模块1066用于读取所述最新的超级块分配表,并记录相应的物理页页号,其中,所述查找子模块1064还用于查询所述超级块分配表得到每一个超级块最后写入的物理块块号,并利用二分查找法查找所述最后写入的物理块上最后写入的页号。判断子模块1068用于判断是否为最后一个超级块,若是为最后一个超级块,则所述第一级映射表完成建立。所述查找子模块1064还用于在所述超级块若不是最后一个超级块,则继续查询所述超级块分配表找到下一个超级块最后写入的物理块的块号。请继续参阅图4,判断模块108用于通过所述超级块块号判断所述第二级映射表在SRAM的缓存是否被命中,且在所述第二级映射表在SRAM的缓存被命中时通过所述组号判断所述第三级映射表在SRAM的缓存是否被命中,在所述第三级映射表在SRAM的缓存被命中时判断所述超级块分配表在SRAM的缓存是否被命中。在本实施方式中,SRAM中的缓存维持少量的第三级映射表的缓存和尽量多的第二级映射表的缓存,这样,使闪存10有最优的顺序读写性能和随机读写性能。在本实施方式中,第二级映射表与第三级映射表的缓存包括块号查询码、物理页的页号以及缓存标记。块号查询码是为了查询超级块分配表获得物理块的块号。因为闪存10的物理块很多,而每个超级块落在的物理块个数是有限的。例如,一个超级块最多会写入到4个物理块上(这个可以由设计者自己定义),那么块号查询码只需要2bit就可以,有效的节省闪存物理页备用区空间的使用。输出模块110用于在所述超级块分配表在SRAM的缓存被命中时根据所述第二级映射表的缓存、所述第三级映射表的缓存以及所述超级块分配表的缓存联合得到所述物理块的块号,以获得所述逻辑页的物理地址。具体的,在本实施方式中,输出模块110根据第二级映射表缓存,第三级映射表缓存和超级块分配表缓存联合得到物理块号,根据第二级映射表缓存和第三级映射表缓存得到物理块内页号,由此得到一个逻辑页的物理地址,即物理地址即物理块块号及物理块内的物理页号。在本实施方式中,所述建立模块106还用于在所述第二级映射表在SRAM的缓存没有被命中时,通过所述超级块块号查询所述第一级映射表,并根据所述第一级映射表在SRAM建立第二级映射表的缓存。在本实施方式中,所述建立模块106还用于在所述第三级映射表在SRAM的缓存没有被命中时,通过所述组号查询所述第二级映射表的缓存,并根据所述第二级映射表的缓存在SRAM建立第三级映射表的缓存。在本实施方式中,所述建立模块106还用于在所述超级块分配表在SRAM的缓存没有被命中时,将所述超级块分配表写回,并替换所述超级块分配表的缓存。请参阅图6,图6所示为本发明一实施方式中闪存10的地址转换方法的流程图。在本实施方式中,闪存10与SRAM (图未示)通信连接,由物理块组成,其中所述物理块由多个物理页组成,逻辑页与物理页一一对应,所述物理页内包括第二级映射表以及第三级映射表,所述多个物理块组成一个超级块,所述方法包括以下步骤:在步骤S00,获取模块102将逻辑页划分为三段,分别对应超级块块号、组号和组内偏移。在本实施方式中,组号用来索引第二级映射表(又称组映射表),组内偏移用来索引第三级映射表(又称组内映射表)。在步骤S10,记录模块104将每一个超级块所分配的物理块块号记录到超级块分配表中。在步骤S20,建立模块106根据所述超级块分配表在SRAM中建立第一级映射表,并以所述超级块块号作为所述第一级映射表的索引。在步骤S30,判断模块108通过所述超级块块号判断所述第二级映射表在SRAM的缓存是否被命中。在本实施方式中,第二级映射表与第三级映射表的缓存包括块号查询码、物理页的页号以及缓存标记。在本实施方式中,块号查询码是为了查询超级块分配表获得物理块的块号。因为闪存10的物理块很多,而每个超级块落在的物理块个数是有限的。例如,一个超级块最多会写入到4个物理块上(这个可以由设计者自己定义),那么块号查询码只需要2bit就可以,有效的节省闪存物理页备用区空间的使用。若所述第二级映射表在SRAM的缓存被命中,则在步骤S40,判断模块108通过所述组号判断所述第二级映射表在SRAM的缓存是否被命中;若所述第三级映射表在SRAM的缓存被命中,则在步骤S50,判断模块108判断所述超级块分配表在SRAM的缓存是否被命中。 若所述超级块分配表在SRAM的缓存被命中,则在步骤S60,输出模块110跟据所述第二级映射表的缓存、所述第三级映射表的缓存以及所述超级块分配表的缓存联合得到所述物理块的块号,以获得所述逻辑页的物理地址。在本实施方式中,输出模块110根据第二级映射表缓存,第三级映射表缓存和超级块分配表缓存联合得到物理块号,根据第二级映射表缓存和第三级映射表缓存得到物理块内页号,由此得到一个逻辑页的物理地址,即物理地址即物理块块号及物理块内的物理页号。若所述第二级映射表在SRAM的缓存没有被命中,则在步骤S70,建立模块106通过所述超级块块号查询所述第一级映射表,并根据所述第一级映射表在SRAM建立第二级映射表的缓存。若所述第三级映射表在SRAM的缓存没有被命中,则在步骤S80,建立模块106通过所述组号查询所述第二级映射表的缓存,并根据所述第二级映射表的缓存在SRAM建立第三级映射表的缓存。若所述超级块分配表在SRAM的缓存没有被命中,则在步骤S90,建立模块106将所述超级块分配表写回,并替换所述超级块分配表的缓存。请参阅图7,图7所示为图6中S20的具体流程图。在本实施方式中,步骤S20包括以下步骤:在步骤S202,获取子模块1062获取所述超级块分配表在闪存上的物理块的块号。在步骤S204,查找子模块1064利用二分查找法查找所述物理块上最后写入的物理页页号。在步骤S206,读取子模块1066读取最新的超级块分配表,并记录相应的物理页页号。在本实施方式中,读取子模块1066读取最后写入的物理页,并往回读取每个物理页,直到将最新的超级块分配表全部读取到,并记下对应的物理页号和超级块分配表的对应关系在步骤S208,查找子模块1064查询所述超级块分配表得到每一个超级块最后写入的物理块块号。在步骤S210,查找子模块1066利用二分查找法查找所述最后写入的物理块上最后写入的页号。在步骤S212,判断子模块1068判断所述超级块是否为最后一个超级块。若所述超级块为最后一个超级块,则在步骤S214,建立模块106完成所述第一级映射表的建立。若所述超级块不是最后一个超级块,则继续返回步骤S208,查找子模块1064查询所述超级块分配表找到下一个超级块最后写入的物理块的块号。本发明提供的闪存10及闪存的地址转换方法,通过利用超级块分配表在SRAM上建立第一级映射表,并在SRAM上根据第一级映射表建立第二级映射表的缓存,根据第二级映射表的缓存建立第三级映射表的缓存,并跟据所述第二级映射表的缓存、所述第三级映射表的缓存以及所述超级块分配表的缓存联合得到所述物理块的块号,以获得所述逻辑页的物理地址,有效的提高了地址转换的效率。虽然本发明参照当前的较佳实施方式进行了描述,但本领域的技术人员应能理解,上述较佳实施方式仅用来说明本发明,并非用来限定本发明的保护范围,任何在本发明的精神和原则范围之内,所做的任何修饰、等效替换、改进等,均应包含在本发明的权利保护范围之内。
权利要求
1.一种闪存,与SRAM通信连接,由物理块组成,其中所述物理块由多个物理页组成,逻辑页与物理页一一对应,所述物理页内包括第二级映射表以及第三级映射表,所述多个物理块组成一个超级块,还包括: 获取模块,用于将逻辑页划分为三段,分别对应超级块块号、组号和组内偏移; 记录模块,用于将每一个超级块所包含的物理块块号记录到超级块分配表中; 建立模块,用于根据所述超级块分配表在SRAM中建立第一级映射表,并以所述超级块块号作为所述第一级映射表的索引; 判断模块,用于通过所述超级块块号判断所述第二级映射表在SRAM的缓存是否被命中,且在所述第二级映射表在SRAM的缓存被命中时通过所述组号判断所述第三级映射表在SRAM的缓存是否被命中,在所述第三级映射表在SRAM的缓存被命中时判断所述超级块分配表在SRAM的缓存是否被命中; 输出模块,用于在所述超级块分配表在SRAM的缓存被命中时根据所述第二级映射表的缓存、所述第三级映射表的缓存以及所述超级块分配表的缓存联合得到所述物理块的块号,以获得所述逻辑页的物理地址。
2.如权利要求1所述的闪存,其特征在于,所述建立模块还用于在所述第二级映射表在SRAM的缓存没有被命中时通过所述超级块块号查询所述第一级映射表,并根据所述第一级映射表在SRAM建立第二级映射表的缓存。
3.如权利要求1所述的闪存,其特征在于,所述建立模块还用于在所述第三级映射表在SRAM的缓存没有被命中时通过所述组号查询所述第二级映射表的缓存,并根据所述第二级映射表的缓存在SRAM建立第三级映射表的缓存。
4.如权利要求1所 述的闪存,其特征在于,所述建立模块还用于在所述超级块分配表在SRAM的缓存没有被命中时将所述超级块分配表写回,并替换所述超级块分配表的缓存。
5.如权利要求1所述的闪存,其特征在于,所述建立模块包括: 获取子模块,用于获取所述超级块分配表在闪存上的物理块的块号; 查找子模块,用于利用二分查找法查找所述物理块上最后写入的物理页页号; 读取子模块,用于读取最新的超级块分配表,并记录相应的物理页页号,其中,所述查找子模块还用于查询所述最新超级块分配表得到每一个超级块最后写入的物理块块号,并利用二分查找法查找所述最后写入的物理块上最后写入的页号; 判断子模块,用于判断是否为最后一个超级块,若是最后一个超级块,则所述第一级映射表完成建立。
6.如权利要求5所述的闪存,其特征在于,所述查找子模块还用于在所述超级块不是最后一个超级块时,继续查询所述超级块分配表找到下一个超级块最后写入的物理块的块号。
7.—种闪存的地址转换方法,其中,闪存与SRAM通信连接,由物理块组成,其中所述物理块由多个物理页组成,逻辑页与物理页一一对应,所述物理页内包括第二级映射表以及第三级映射表,所述多个物理块组成一个超级块,所述方法包括以下步骤: 将逻辑页划分为三段,分别对应超级块块号、组号和组内偏移; 将每一个超级块所分配的物理块的块号记录到超级块分配表中; 根据所述超级块分配表在SRAM中建立第一级映射表,并以所述超级块块号作为所述第一级映射表的索引; 通过所述超级块块号判断所述第二级映射表在SRAM的缓存是否被命中; 若是,则通过所述组号判断所述第三级映射表在SRAM的缓存是否被命中; 若是,则判断所述超级块分配表在SRAM的缓存是否被命中; 若是,则根据所述第二级映射表的缓存、所述第三级映射表的缓存以及所述超级块分配表的缓存联合得到所述物理块的块号,以获得所述逻辑页的物理地址。
8.如权利要求7所述的闪存的地址转换方法,其特征在于,若所述第二级映射表在SRAM的缓存没有被命中,则通过所述超级块块号查询所述第一级映射表,并根据所述第一级映射表在SRAM建立第二级映射表的缓存。
9.如权利要求7所述的闪存的地址转换方法,其特征在于,若所述第三级映射表在SRAM的缓存没有被命中,则通过所述组号查询所述第二级映射表的缓存,并根据所述第二级映射表的缓存在SRAM建立第三级映射表的缓存。
10.如权利要求7所述的闪存的地址转换方法,其特征在于,若所述超级块分配表在SRAM的缓存没有被命中,则将所述超级块分配表写回,并替换所述超级块分配表的缓存。
11.如权利要求7所述的闪存的地址转换方法,其特征在于,所述“根据所述超级块分配表在SRAM中建立第一级映射表”的步骤中包括以下步骤: 获取所述超级块分配表在闪存上的物理块的块号; 利用二分查找法查找 所述物理块上最后写入的物理页页号; 读取所述最新的超级块分配表,并记录相应的物理页页号; 查询所述超级块分配表得到每一个超级块最后写入的物理块块号; 利用二分查找法查找所述最后写入的物理块上最后写入的页号; 判断所述超级块是否为最后一个超级块; 若是,则所述第一级映射表完成建立。
12.如权利要求11所述的闪存的地址转换方法,其特征在于,若所述超级块不是最后一个超级块,则继续查询所述超级块分配表找到下一个超级块最后写入的物理块的块号。
全文摘要
一种闪存,与SRAM通信连接,由物理块组成,其中物理块由多个物理页组成,逻辑页与物理页一一对应,物理页内包括第二级映射表以及第三级映射表,多个物理块组成一个超级块,还包括获取模块、记录模块、建立模块、判断模块以及输出模块,本发明通过利用超级块分配表在SRAM上建立第一级映射表,并判断第二级映射表、第三级映射表以及超级块分配表的缓存来得到物理页的地址,在SRAM上根据第一级映射表建立第二级映射表的缓存,根据第二级映射表的缓存建立第三级映射表的缓存,并根据第二级映射表的缓存、第三级映射表的缓存以及超级块分配表的缓存联合得到所述物理块的块号,以获得所述逻辑页的物理地,有效的提高了地址转换的效率。
文档编号G06F12/10GK103176916SQ20131007196
公开日2013年6月26日 申请日期2013年3月7日 优先权日2013年3月7日
发明者郁志平, 张耀辉 申请人:中国科学院苏州纳米技术与纳米仿生研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1