提高地址映射表中映射信息密度的方法与流程

文档序号:11519531阅读:267来源:国知局
提高地址映射表中映射信息密度的方法与流程

本发明涉及数据存储技术领域,尤其涉及一种提高地址映射表中映射信息密度的方法。



背景技术:

nandflash是一种具有非易失性的半导体存储器,不会因断电而造成丢失存储在上面的数据丢失,由于nandflash存储器的内部不存在机械部件,因此具有功耗低、发热小、重量轻、尺寸小、抗震好等传统的机械磁盘存储器不具有的优点,其随机读写性能更是远高于传统的机械磁盘存储器。随着闪存存储容量瓶颈的突破,性能的优化以及成本的下降,nandflash存储器已经变成非常重要的数字存储介质。

nandflash由许多块(block)组成,每个块又由若干页(page)组成,其中页是读数据和写数据的最小单位,块是擦除的最小单位。在对nandflash进行写操作的时候,首先要将该页所在的块进行擦除,否则无法对该页进行写入操作。因此闪存有三种基本操作:读、写、擦除。

nandflash的三种操作有着不一样的性能,读的性能最好,写性能次之,擦除性能最差。读操作的速度最快,读取一个页大约需要几十微秒左右的时间,写操作速度慢于读操作,写入一个页大约需要几百微秒左右的时间,而擦除操作则非常耗时,擦除一个块大约需要几个毫秒时间。

nandflash的块的擦除次数都是有限的,一旦超过了其最大的擦除次数,存储在上面的数据就可能变得不可靠。

更新nandflash的某个页中存储的数据时,必须要先使用擦除操作将该页所在的块进行擦除,擦除是毫秒级的操作,相对于微秒级的写操作是一个极为耗时的操作,因此如果同样采用本地更新(in-placeupdate)的方式,会严重降低闪存的写速度。此外,如果某块上的数据被频繁地本地更新会导致该块因被不断擦除而迅速达到其使用极限。因此,在实际使用中,nandflash更新数据时采用异地更新(out-placeupdate)的方式,所有的更新数据不会被写入到原来页中,而是重新写入到其他被擦除的页(空闲页)中去。nandflash的存储资源是按照页编号为物理地址的方式分配管理的,随着有效数据在nandflash上存储位置发生变化,逻辑到物理的映射关系不可能通过建立表达式计算获得,需要通过建立映射表来提供文件系统对数据的寻址。因此,引入闪存转换层映(flashtranslationlayer,ftl)、通过ftl来实现地址映射机制来记录逻辑地址和数据实际存储的物理地址之间的映射关系成为目前主流的闪存管理方案。

为了实现快速寻址,映射表一般被部分或全部缓存在内存之中称为缓存映射表,如何既能减少缓存映射表对内存的占用又能让请求可以通过缓存映射表完成直接寻址是闪存转换层需要解决的问题。

根据地址映射粒度的不同,可以将建立缓存映射表方法分成四种:页映射(pagemapping)、块映射(blockingmapping)、混合映射(hybridmapping)、基于缓存部分映射信息的页映射(cachedpagemapping)。

页映射是以页为单位进行地址映射,在内存中保存基于页的映射表,每一个逻辑页都有一项与之对应的物理页,需要在映射表中用一条映射记录来保持,一条映射记录在映射表中占用一条映射表项,页映射方法灵活性高,但由于需要为每个逻辑页面建立地址映射表项,导致映射表占用内存大。

块映射则是以块为单位进行地址映射,逻辑块内的地址偏移与物理块内偏移保持一致。较之页映射表,映射表占用内存很小,但其缺点是在处理小数据更新时性能较差,一小块数据的更新会引起对整个块内容的复制。

综合页映射与块映射的优缺点产生混合映射机制,混合映射将nandflash上的块在功能上分成数据块和日志块,日志块较少。当要对某个数据块中的数据进行更新时,新数据会写入日志块,当所有日志块的数量低于一定值时,需要将日志块和数据块中的数据进行合并,这种操作会导致性能明显下降。

基于在内存中缓存部分映射信息的页映射方案是对页映射的改进,这种映射方式在nandflash上使用多个页存储完整映射表,这种页称为映射表存储页,在内存中缓存经常被请求的映射记录,缓存大小固定,即缓存映射表内的映射表项的数量设置有上限,可存储的映射记录数量和映射表项的数量相同,保证了缓存映射表内存占用不会过大。当读写请求来到,如果对应的映射记录不在缓存内,即没有命中缓存映射表,则从nandflash中读取映射记录,当缓存映射表中的映射记录的数量当达到上限时,将最久没有使用访问的映射记录从缓存中换出,如果被剔除的映射记录为脏就记录,即该映射记录存储的逻辑到物理页的映射关系在缓存中已经发生了变化,则需要回写到nandflash中的映射表中。映射记录的读取和换出导致了对nandflash的附加读写。

综上所述,页映射灵活且性能最好,而混合映射较差,而块映射性能最差。而基于缓存部分映射信息的页映射方案不会产生合并操作,因此其性能高于混合映射,和页映射方式的性能相近。但是由于缓存映射表只能存储有限的映射记录,导致部分请求无法命中缓存映射表无法完成直接寻址而需要和nandflash中的映射表进行映射记录交换,从而产生了非请求导致读取nandflash上映射表的附加读操作和将映射记录写入到nandflash上的附加写操作,映射记录写入nandflash还会产生因空闲块不足而产生的附加垃圾回收操作。这些附加擦着最终导致其性能比页映射低,命中率越低,性能越差。因此如何在不增加内存占用的前提下,在缓存映射表中缓存更多的映射表项,即提高缓存映射表存储密度以提高命中率是基于缓存部分映射信息的页映射方案需要重点解决的难点。



技术实现要素:

本发明的目的是提供一种提高地址映射表中映射信息密度的方法,可以提高缓存映射表内映射记录密度,达到提高ftl的读写性能的目的。

本发明的目的是通过以下技术方案实现的:

一种提高地址映射表中映射信息密度的方法,包括:

在写入数据时,将数据按页为单位进行分割,再按逻辑地址从低到高的顺序将数据依次写入存储器中具有多个连续空闲页的块内,存储后的每一页数据均对应一条映射记录,则根据这些映射记录生成一到多条映射条目;

在读数据时,将读请求地址按页为单位进行分割,并逐一检索内存中的缓存映射表,如果某一页的逻辑地址没有命中内存中的缓存映射表,则读取存储器中用于存储映射表的映射表存储页,从映射表存储页中获得所需的目标映射记录;并且同时,还在该映射表存储页中检索目标映射记录周边的映射记录,将符合条件的周边映射记录通过合并生成一条映射条目,检索过程如下:读取映射表存储页内容,即映射表片段,再以目标映射记录为起点向前后两个方向检索映射表片段,如果在某个方向中发现相邻的映射记录b与目标映射记录的逻辑地址值与物理地址值都相差1,则以相邻的映射记录b为起点向同样的方向继续检索映射表,直至两个相邻的映射记录不再连续,或者虽然连续但已经存在于缓存映射表为止,或者检索到映射表存储页中的第一条或最后一条映射记录;

将写入数据与读数据时,所生成的映射条目插入所述内存中的缓存映射表。

在写入数据时,如果写入数据的页数为n,存储器中具有多个连续空闲页的块中的连续空闲页数量为m,且n>m时,则需要跨块存储,即需要剩余的数据页按逻辑地址从低到高的顺序将数据依次写入其他具有多个连续空闲页的块内,直至所有数据页均被写入存储器中;

如果写入数据页时产生了s次跨块存储,则共生成了s个映射条目,每一映射条目中包含的映射记录的数据即为相应块中所存储数据页的数量。

所述映射条目存储了若干个连续的映射记录;如果一条逻辑地址lba为l的映射记录mprec1,其物理地址pba为p,如果另外一条逻辑地址lba为l+1映射记录mprec2,其物理地址pba为p+1,则映射记录mprec1和mprec2是连续的,如果另外一条逻辑地址lba为l+2映射记录mprec3,其物理地址pba为p+2,则映射记录mprec1、mprec2和mprec3是连续的,以此类推,有n条映射记录,其逻辑地址lba的值从低到高是按照l、l+1、l+2、…、l+n-1连续增长的,相邻映射记录中记录的逻辑地址的值相差1,而其物理地址pba的值也是从低到高是按照p、p+1、p+2、…、p+n-1连续增长的,相邻映射记录中记录的物理地址的值相差1,这样的n条映射记录即为连续的映射记录。

映射条目由该连续的n条映射记录中,具有最小逻辑地址那条映射记录中的逻辑地址和物理地址以及一个长度值n和一个脏标志位组成;

其中映射条目的逻辑地址和物理地址所占的字节数,和相应映射记录中的逻辑地址和物理地址所占的字节数相同,在使用另外用一个字节来存储长度值n和脏标志位,脏标志位占用该字节的最高位,用来标识映射条目在缓存映射表的生存周期内是否被更改,如果发生了更改则赋值为1,否则值为0;条目的长度值保存在该字节的0到7位中。

将映射条目插入所述内存中的缓存映射表包括:

如果映射条目和缓存映射表中的既有条目产生因在逻辑地址上有交集而发生的冲突,则需要对相关映射条目进行分解并重新组合;

如果映射条目和缓存映射表中的既有条目是连续的,则需要对相关映射条目进行再次合并。

当映射条目插入所述内存中的缓存映射表后,如果接收到的读请求命中映射条目,则直接计算出相应的物理地址,其步骤包括:

检索缓存映射表,比对读请求中的逻辑地址lba和各映射条目所表示的逻辑地址范围来判断该lba是否落在某条映射记录所表示的逻辑地址范围内;

对于某个长度为n的映射条目,其中存储的逻辑地址为lba1,物理地址为pba1,当lba>=lba1,且lba<=lba1+n-1,则表示请求中的包含的逻辑地址命中了缓存映射表中的映射条目,读请求中的逻辑地址lba对应的物理地址pba的计算方法为:pba=pba1+lba-lba1,通过计算即可完成对物理地址的寻址。

由上述本发明提供的技术方案可以看出,根据读写操作生成相应的映射记录并插入缓存映射表,可以在不占用更多内存资源的前提下,提高缓存映射表内映射记录密度,从而增加缓存映射表内映射记录数量、提高缓存映射表命中率。

附图说明

为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他附图。

图1为本发明实施例提供的一种提高地址映射表中映射信息密度的方法的流程图;

图2为本发明实施例提供的产生的映射条目插入内存中的缓存映射表时对相关映射条目进行分解并重新组合的示意图;

图3为本发明实施例提供的产生的映射条目插入内存中的缓存映射表时对相关映射条目进行合并的示意图;

图4为本发明实施例提供的产生的映射条目插入内存中的缓存映射表时对相关映射条目进行合并的示意图。

具体实施方式

下面结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明的保护范围。

本发明实施例提供一种提高地址映射表中映射信息密度的方法,如图1所示,其主要包括:

1、判断多个逻辑地址上相邻的映射记录是否可合并成映射条目的条件

本发明实施例中,在写入数据与读数据时,都可以将符合条件的多个映射记录合并成映射条目,生成的映射条目中存储了若干个连续的映射记录;具体来说,如果一条逻辑地址lba为l的映射记录mprec1,其物理地址pba为p,如果另外一条逻辑地址lba为l+1映射记录mprec2,其物理地址pba为p+1,则映射记录mprec1和mprec2是连续的,如果另外一条逻辑地址lba为l+2映射记录mprec3,其物理地址pba为p+2,则映射记录mprec1、mprec2和mprec3是连续的,以此类推,有n条映射记录,其逻辑地址lba的值从低到高是按照l、l+1、l+2、…、l+n-1连续增长的,相邻映射记录中记录的逻辑地址的值相差1,而其物理地址pba的值也是从低到高是按照p、p+1、p+2、…、p+n-1连续增长的,相邻映射记录中记录的物理地址的值相差1,这样的n条映射记录即为连续的映射记录,这样的n条映射记录可合并成一条映射条目。

对于连续的n条映射记录,可合并成映射条目:每条映射条目由该连续的n条映射记录中具有最小逻辑地址那条映射记录、长度值n以及脏标志位等三个部分组成;其中长度值n和脏标志位被存储在同一个字节内,脏标志位占用该字节的最高位,用来标识该映射条目在缓存映射表的生存周期内是否被更改,如果发生了更改则赋值为“1”,否则值为“0”,条目的长度值n保存在该字节的0到7位中。

2、在写入数据时,将数据按页为单位进行分割,再按逻辑地址从低到高的顺序将数据依次写入存储器(nandflash)中具有多个连续空闲页的块内,存储后的每一页数据均对应一条映射记录,可将这些连续的映射记录生成一到多条映射条目。

在写入数据时,如果写入数据的页数为n,存储器中具有多个连续空闲页的块中的连续空闲页数量为m,且n>m时,则需要跨块存储,即需要剩余的数据页按逻辑地址从低到高的顺序将数据依次写入其他具有多个连续空闲页的块内,直至所有数据页均被写入存储器中。

本领域技术人员可以理解,在写入数据时,同样是以页为单位写入块中,块内页的写入顺序只能从低地址页向高地址页顺序写入而不能随机写入,因此逻辑地址低的数据被写入物理地址低的页,产生一条逻辑地址到物理地址的映射记录,逻辑地址次低的数据被写入物理地址次低的页,产生一条逻辑地址到物理地址的映射记录,直到本请求的数据被全部写入完成;如果在写入过程中本空闲块内的空闲页全部被写满而此请求仍然有部分页数据没有被写入nandflash则需要跨块写入数据,即分配一个新空闲块用于写入写请求中的数据,同样的,数据写入的顺序依然是低逻辑地址的数据写入低物理地址的页,产生一条逻辑地址到物理地址的映射记录,逻辑地址次低的数据被写入物理地址次低的页,产生一条逻辑地址到物理地址的映射记录。如此反复,直到写请求中所有数据被写入nandflash中。

因此写请求产生了n条映射记录,如果写入时没有产生跨块写入,则此n条映射记录是连续的。因此这n条映射记录可以合并成1条映射条目,条目长度为n。

如果写入时产生了跨块写入,则存储在同一个块内的数据对应的m条映射记录是连续的,因此这m条映射记录可以合并成1条映射条目,条目长度为m。如果写入数据页时产生了s次跨块存储,则共生成了s条映射条目,每一映射条目中包含的映射记录的数据即为相应块中所因本次请求而写入数据的页的数量。

3、在读数据时,将读请求地址范围按页为单位进行分割,并逐一检索内存中的缓存映射表,如果某一页的逻辑地址没有命中内存中的缓存映射表,则读取存储器中的映射表,用来保存映射表的闪存页称为映射表存储页。通过读取映射表存储页来获得所需数据的逻辑地址与物理地址的映射关系,即目标映射记录;在读取映射表存储页的内容后,在该内容中中检索目标映射记录周边的映射记录,将周边连续的映射记录合并成映射条目,检索过程如下:首先读取出映射表存储页的内容,即映射表片段,然后,以目标映射记录为起点向前后两个方向检索该映射表片段,如果在某个方向中发现相邻的映射记录b与映射记录的逻辑地址值与物理地址值都相差1,则以相邻的映射记录b为起点向同样的方向继续检索映射表。检索中止的条件为:a)两个相邻的映射记录不再连续(即逻辑地址值和物理地址值上不再都是相差1);b)已经检索到了该映射表片段中的第一个映射记录;c)已经检索到该映射表片段中的最后一个映射记录;d)遇到虽然连续但已经存在于缓存映射表的映射记录。

4、将写入数据与读数据时所生成的映射条目插入所述内存中的缓存映射表。

本发明实施例中,还将产生的映射条目插入内存中的缓存映射表,以充分利用请求的空间局部性和时间局部性,提高ftl的读写效率。映射条目插入缓存映射表时还根据具体情况采用如下两种不同处理方式:

如果待插入的映射条目和缓存映射表中既有的一到多个条目产生因在逻辑地址空间上有交集,则需要对相关映射条目进行分解并重新组合,两逻辑地址空间重合方式有多种,需要根据不同情况进行分别处理。示例性的,图2所示是其中的一种分解并重新组合的方法:当逻辑首地址为1136的映射条目插入缓存映射表时该条目和缓存映射表中的逻辑首地址为1135的映射条目在逻辑地址空间上有交集,需要进行重新组合,组合后产生3个新映射条目,其中逻辑首地址为1135的条目原位存储于缓存映射表,而其他两个条目此时处于游离状态,如果此时缓存映射表中有超过两个空表项,则可以将游离状态的两个映射条目直接插入缓存映射表。如果缓存映射表中空表项小于两个,则需要首先换出最久没有访问过的映射条目,然后将游离状态的新条目插入缓存映射表。

如果映射条目和缓存映射表中的既有条目是连续的,则需要对相关映射条目进行再次合并。示例性的,如图3,逻辑首地址为1132、长度为3的映射条目插入缓存时,可以与缓存中逻辑首地址为1135的条目进行合并,合并产生新的映射条目,新映射条目逻辑首地址和物理首地址分别为1132和517,映射条目长度变为7。如图4所示,逻辑首地址为1139、长度为3的映射条目插入缓存时,会与缓存中的首地址为1135长度为4的映射条目合并,合并后的映射条目依然原位保存在缓存中。

本发明实施例中,还提供了通过映射条目来计算目标映射记录的方法:

如果请求命中缓存映射表的某个映射条目,则可直接计算出相应的物理地址,其步骤包括:检索缓存映射表,比对读请求中的逻辑地址lba和各映射条目所表示的逻辑地址范围来判断该lba是否落在某条映射记录所表示的逻辑地址范围内;对于某个长度为n的映射条目,其中存储的逻辑地址为lba1,物理地址为pba1,当lba>=lba1,且lba<=lba1+n-1,则表示请求中的包含的逻辑地址命中了缓存映射表中的映射条目,读请求中的逻辑地址lba对应的物理地址pba的计算方法为:pba=pba1+lba-lba1,通过计算即可完成对物理地址的寻址。

本发明实施例的上述方案,可以提高缓存映射表的命中率,提高ftl的读写性能,本发明在不增加位于内存中的缓存映射表里表项数量的前提下,将连续的映射记录进行合并产生映射条目,这样每个映射条目可以表示多个逻辑地址到物理地址之间的映射关系,缓存映射表内的每个表项内存储的是一条条映射条目而不再是一条条只能表示一个逻辑地址到物理地址之间映射关系的映射记录,以此来增加缓存映射表中存储的映射记录数量,能显著增加缓存映射表的命中率,同时,由于映射条目能表达多个逻辑地址上连续的映射记录,可以有效利用请求的空间局部性,提高ftl的读写的效率,可广泛应用于各种系统的nandflash存储器的管理。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例可以通过软件实现,也可以借助软件加必要的通用硬件平台的方式来实现。基于这样的理解,上述实施例的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是cd-rom,u盘,移动硬盘等)中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。

以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明披露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求书的保护范围为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1