一种闪存管理系统、方法及闪存芯片与流程

文档序号:11620498阅读:351来源:国知局
一种闪存管理系统、方法及闪存芯片与流程

本发明属于存储技术领域,尤其涉及一种闪存管理系统、方法及闪存芯片。



背景技术:

闪存的管理控制技术通常包括输出/输入指令(i/ocommand)、数据管理(datashaping)、平均磨耗技术(wearleveling)、有效块回收(garbagecollection)、电源断电供电处理(powercycle)和好坏块管理(blockmanagement)以上这些,对闪存控制芯片都是很重要的工作。由于闪存工艺和算法越来越先进,而消费者也非常重视随机读写(randomaccess)效能,所以有效块回收(garbagecollection)算法就变成是一个很重要的部份。

闪存转换层flashtranslationlayer(ftl)算法,可以大致区分为块映射(blockmapping)、页映射(pagemapping)及扇映射(sectormapping)这三种,而过去在块映射(blockmapping)的算法部份比较重视数据缓冲存储器的空间节省,故有效块回收算法部份并没有太多的发挥,所以随机读写(randomaccess)效能一直是块映射(blockmapping)的问题,直到页映射(pagemapping)算法的出现才改善此问题。

比起块映射(blockmapping),页映射(pagemapping)所使用的数据缓冲存储器的空间比较大,基于商业的考虑,对于每个有效块的有效页(validpage)数都会是记录有效页数的值,如果要去找寻有效页(validpage)出来,则必需要找出该块(block)的所有页才可以知道那一个页是真正的有效页,导致不能快速的找出有效页,增加了有效块回收的成本。



技术实现要素:

本发明实施例提供了一种闪存管理系统、方法及闪存芯片,旨在解决现有的问题。

在本发明实施例中,提供一种闪存管理系统,所述系统包括闪存和闪存控制器,所述闪存包括若干个由若干个依序排列的页组成的块,所述页包括用户数据区、ecc校验区和冗余区,所述闪存控制器在向所述页写入数据时,根据所述冗余区的容量向所述冗余区中依次写入当前页和当前页的前面多个页的逻辑地址。

在本发明实施例中,所述冗余区存储的页逻辑地址数量

n=冗余区空间大小/logical_page_size,小数点无条件进位,

其中,logical_page_size为所述页的逻辑地址需使用的空间,且

logical_page_size=log256(闪存总容量/页大小),小数点无条件进位。

在本发明实施例中,所述闪存控制器对所述闪存进行有效块回收时,采用下述步骤进行:

找寻出有效页数值最少的块;

根据所述冗余区中的逻辑地址遍历所述块中的页,建立所述块中有效页的bitmap;

通过所述bitmap找出有效页并搬至新块中;

释放原块。

在本发明实施例中,建立有效页的bitmap的过程包括下述步骤:

读取最后一个页的冗余区中存储的多个页的逻辑地址;

根据读取的多个页的逻辑地址,间隔n个页依次读取页的冗余区中存储的多个逻辑地址,并根据读取到的逻辑地址找到相应的页;

判断所述页是否有效并记录。

在本发明实施例中,所述最后一个页为有效页。

在本发明实施例中,还提供一种闪存管理方法,所述方法中,闪存控制器在向所述闪存的页写入数据时,根据所述页的冗余区的容量向所述冗余区中写入当前页和当前页的前面多个页的逻辑地址。

所述闪存管理方法中,所述冗余区存储的页逻辑地址数量

n=冗余区空间大小/logical_page_size,小数点无条件进位,

其中,logical_page_size为所述页的逻辑地址需使用的空间,且

logical_page_size=log256(闪存总容量/页大小),小数点无条件进位。

所述闪存管理方法中,所述闪存控制器对所述闪存进行有效块回收时,采用下述步骤进行:

找寻出有效页数值最少的块;

根据所述冗余区中的逻辑地址遍历所述块中的页,建立所述块中有效页的bitmap;

通过所述bitmap找出有效页并搬至新块中;

释放原块。

所述闪存管理方法中,所述闪存管理方法中,建立有效页的bitmap的过程包括下述步骤:

读取最后一个页的冗余区中存储的多个页的逻辑地址;

根据读取的多个页的逻辑地址,间隔n个页依次读取页的冗余区中存储的多个逻辑地址,并根据读取到的逻辑地址找到相应的页;

判断所述页是否有效并记录。

所述闪存管理方法中,所述最后一个页为有效页。

在本发明实施例中,还提供一种闪存芯片,所述闪存芯片包括至少一处理器、存储器及接口,所述至少一处理器、存储器及接口均通过总线连接;

所述存储器存储计算机执行指令;

所述至少一个处理器执行所述存储器存储的计算机执行指令,使得所述闪存芯片执行上述的闪存管理方法。

与现有技术相比较,本发明的技术方案中,在闪存写入数据时,在每一页的冗余区中都写入当前页及当前页前面多个页的逻辑地址,在进行块回收时,可以根据所述冗余区中的多个页的逻辑地址快速的建立所述块的bitmap,进一步地,根据所述bitmap,可以快速的实现所述块的回收。

附图说明

图1是本发明实施例一提供的闪存管理系统的结构示意图;

图2是本发明实施例一提供的闪存管理系统中页的数据空间分配图;

图3是本发明实施例一提供的闪存管理系统中闪存页的逻辑地址需要的内存空间对照表;

图4是本发明实施例一提供的闪存管理方法对闪存冗余区存储数据的示意图;

图5是本发明实施例一提供的闪存有效块回收方法的流程图;

图6是本发明实施例一提供的闪存管理方法中采用bitmap来进行有效块回收的示意图;

图7是本发明实施例二提供的闪存芯片的结构示意图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

以下结合具体实施例对本发明的实现进行详细描述:

实施例一

本实施例中,描述了一种闪存管理系统和在该系统中对内存进行管理的方法。

图1示出了本发明实施例一提供的闪存管理系统的结构示意图,所述系统包括闪存控制器10和闪存20,所述闪存20包括多个块b0-b9。每一个块都由多个依序排列的页p0-p5组成,其中,有些页为无效页,有些页为有效页,还有些页为空白页。

为了便于说明,本实施例将以总容量(capacity)32gbyte、满页密度(fullpagesize)为18336byte(16kpage)、总页数为384及ecc较正能力为6xbits/perkbyte的闪存为例,进行说明。

由上述闪存参数可知,每个扇(sector)可以分得1146byte,其中用户数据区(userarea)有1024byte,而ecc校验区每1k约占120byte,故还有2byte的冗余区(metadata),可以整理出一个页的18336byte空间的状态分配。

如图2所示,一个页的存储空间可以被划分为16384byte的用户数据区、1920byte的ecc校验区和32byte的冗余区。

本实施例提供的闪存管理方法,在进行块的回收时,需要首先对所述块的页建立bitmap,以便于后续进行所述块中有效页的数据回收。本实施例中,采用所述冗余区中存储页的逻辑地址进行bitmap的建立。

使用所述冗余区来存储页的逻辑地址之前,首先就是要先考虑用户的总使用容量(capacity)的空间并以页的逻辑地址(logicalpageaddress,lpa)来表示,计算公式如下:

所述冗余区存储的页逻辑地址数量

n=冗余区空间大小/logical_page_size,小数点无条件进位,

其中,logical_page_size为所述页的逻辑地址需使用的空间,

逻辑地址需使用的空间

logical_page_size=log256(总容量/页大小),小数点无条件进位。

如图3所示,根据上述公式,对于总容量为32gbyte的闪存来说,每个容量为16k的页的逻辑地址所需要的空间为3byte,一个页的冗余区可以存储10个逻辑地址。

如图4所示,根据本实施例的闪存管理方法,所述闪存控制器10在向所述页写入数据时,根据所述冗余区的容量向所述冗余区中写入当前页和当前页的前面多个页的逻辑地址。从第一个逻辑地址lpa0开始,每间隔10个页,页中的冗余区中都存储当前页和前面的多个页的逻辑地址,其中,ppa(physicalpageaddress)表示的是页的物理地址。可选地,除了最开始的9个页,后面的每一个页的冗余区都存储了10个逻辑地址,所述10个逻辑地址包括当前页的逻辑地址和当前页前面的9个页的逻辑地址。

如图5所示,所述闪存控制器20对所述闪存10进行有效块回收时,采用步骤s1至步骤s4来实现。下面进行详细说明。

步骤s1:找寻出有效页数值最少的块。

进行有效块回收时,首先是要回收有效页最少的块,也就是无效页最多的块,从而实现存储空间的有效利用。

步骤s2:根据冗余区中的逻辑地址遍历所述块中的页,建立所述块中有效页的bitmap。

需要说明的是,bitmap为通过一个bit数组来存储特定数据的一种数据结构;由于bit是数据的最小单位,所以这种数据结构往往是非常节省存储空间。如图6所示,本实施例中,通过需要回收的块中页的逻辑地址和页的状态的对应关系来建立bitmap,从而指示块中有效页的位置。其中,有效页(validpage)用“1”表示,无效页(invalidpage)用“0”表示,有效页总数(validpagecountnumber)为4个。根据所述冗余区的逻辑地址存储规则,块中最后一个页通常是有效页,一个冗余区中都存储了包括当前页逻辑地址在内的10个逻辑地址,因此,只需根据最后一个页中存储的逻辑地址,间隔10个页进行冗余区的逻辑地址的查找,即可遍历所述块中的页,然后读取每页的状态即可建立所述块中有效页的bitmap。具体的,建立有效页的bitmap的过程包括下述步骤:

读取最后一个页的冗余区中存储的多个页的逻辑地址;

根据读取的多个页的逻辑地址,间隔10个页依次读取页的冗余区中存储的多个逻辑地址,并根据读取到的逻辑地址找到相应的页;

判断所述页是否有效并记录,从而形成所述块中有效页的bitmap。

步骤s3:通过所述bitmap找出有效页并搬至新块中。如图6所示,通过所述bitmap可以快速的找出有效页,并将有效页中的数据移到新块(newblock)中去。

步骤s4:释放原块,将原块中的数据清除。

经过上述步骤,即可完成原块中有效数据的转移和原块空间的回收。

在本发明实施例中,在闪存写入数据时,在每一页的冗余区中都写入当前页及当前页前面多个页的逻辑地址,在进行块回收时,可以根据所述冗余区中的多个页的逻辑地址快速的建立所述块的bitmap,进一步地,根据所述bitmap,可以快速的实现所述块的回收。

实施例二

如图7所示,本发明实施例三提供在本发明实施例中,提供一种闪存芯片,其包括至少一处理器310、存储器320及接口330,所述至少一处理器310、存储器320及接口330均通过总线连接;

所述存储器320存储计算机执行指令;

所述至少一个处理器310执行所述存储器320存储的计算机执行指令,使得所述闪存芯片执行实施例1所述的闪存管理方法。

综上所述,采用本发明的闪存管理系统、方法及闪存芯片,在闪存写入数据时,在每一页的冗余区中都写入当前页及当前页前面多个页的逻辑地址,在进行块回收时,可以根据所述冗余区中的多个页的逻辑地址快速的建立所述块的bitmap,进一步地,根据所述bitmap,可以快速的实现所述块的回收。

值得注意的是,本领域普通技术人员可以理解:实现上述方法实施例的步骤或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤,而前述的存储介质包括:rom、ram、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

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