存取闪存模块的方法及相关的闪存控制器与电子装置与流程

文档序号:17901092发布日期:2019-06-13 16:33阅读:178来源:国知局
存取闪存模块的方法及相关的闪存控制器与电子装置与流程

本发明涉及闪存,尤其涉及一种存取闪存模块的方法及相关的闪存控制器。



背景技术:

当闪存模块中的空间不足时,闪存控制器会进行垃圾收集(garbagecollection)操作以将多个区块中的有效数据页中的数据搬移到新的区块中,并将原本的区块内容抹除以释放更多的存储空间。然而,在上述的操作中,由于需要正确地判断出每一个区块中的有效数据页及无效数据页,因此会需要预先存储相关的地址信息以供进行比对判断。然而,随着区块的大小增加及所包括的数据页也跟着变多的情形下,上述地址信息的数据量也大幅增加,进而影响到闪存模块中的存储空间以及闪存控制器的处理效率。



技术实现要素:

因此,本发明的目的之一在于公开一种存取闪存模块的方法,其可以利用很小的数据量来存储每一个区块中的地址信息,且有效率地判断出每一个区块中的有效数据页及无效数据页,以解决现有技术中的问题。

在本发明的一个实施例中,公开一种存取一闪存模块的方法,其包括有:建立对应于所述闪存模块中一区块的一逻辑地址群组记录表,其中所述逻辑地址群组记录表标注了多个逻辑地址群组的状态,其中每一个逻辑地址群组的所述状态是用来表示所述区块中所写入的数据是否有具有位于所述逻辑地址群组之中的任一逻辑地址;当所述区块需要进行一垃圾收集操作时,参考所述逻辑地址群组记录表以自所述闪存模块读取至少一逻辑地址至实体地址对照表;以及根据所述至少一逻辑地址至实体地址对照表以决定出所述区块中的有效数据页及无效数据页,以供进行所述垃圾收集操作。

在本发明的另一个实施例中,公开了一种闪存控制器,其中所述闪存控制器是用来存取一闪存模块,且所述闪存控制器包括有一只读存储器、一微处理器以及一存储器。所述只读存储器是用来存储一程序代码;所述微处理器是用来执行所述程序代码以控制对所述闪存模块的存取;以及所述存储器是用以存储对应于所述闪存模块中一区块的一逻辑地址群组记录表,其中所述逻辑地址群组记录表标注了多个逻辑地址群组的状态,其中每一个逻辑地址群组的所述状态是用来表示所述区块中所写入的数据是否有具有位于所述逻辑地址群组之中的任一逻辑地址;其中当所述区块需要进行一垃圾收集操作时,所述微处理器参考所述逻辑地址群组记录表以自所述闪存模块读取至少一逻辑地址至实体地址对照表,并根据所述至少一逻辑地址至实体地址对照表以决定出所述区块中的有效数据页及无效数据页,以供进行所述垃圾收集操作。

在本发明的另一个实施例中,公开了一种电子装置,其包括有一闪存模块以及一闪存控制器。所述闪存控制器建立对应于所述闪存模块中一区块的一逻辑地址群组记录表,其中所述逻辑地址群组记录表标注了多个逻辑地址群组的状态,其中每一个逻辑地址群组的所述状态是用来表示所述区块中所写入的数据是否有具有位于所述逻辑地址群组之中的任一逻辑地址;以及当所述区块需要进行一垃圾收集操作时,闪存控制器参考所述逻辑地址群组记录表以自所述闪存模块读取至少一逻辑地址至实体地址对照表,并根据所述至少一逻辑地址至实体地址对照表以决定出所述区块中的有效数据页及无效数据页,以供进行所述垃圾收集操作。

附图说明

图1为依据本发明一实施例的一种记忆装置的示意图。

图2为根据本发明一实施例的存取闪存模块的流程图。

图3为实体地址至逻辑地址对照表的示意图。

图4为逻辑地址群组记录表的示意图。

图5为本发明一实施例的使用实体地址至逻辑地址对照表来更新逻辑地址至实体地址对照表的示意图。

图6为本发明一实施例的使用实体地址至逻辑地址对照表来再次更新逻辑地址至实体地址对照表的示意图。

图7所示为根据本发明一实施例的进行垃圾收集操作的流程图。

其中,附图标记说明如下:

100记忆装置

110闪存控制器

112微处理器

112c程序代码

112m只读存储器

114控制逻辑

116缓冲存储器

118接口逻辑

120闪存模块

130主装置

132编码器

134译码器

200~210、700~708步骤

300、600实体地址至逻辑地址对照表

310、320闪存芯片

400逻辑地址群组记录表

510、520逻辑地址至实体地址对照表

b_0~b_m区块

p0~pn数据页

lba_0~lba_1279逻辑地址

lbag1~lbag5逻辑地址群组

具体实施方式

参考图1,图1为依据本发明一实施例的一种记忆装置100的示意图。记忆装置100包括有一闪存(flashmemory)模块120以及一闪存控制器110,且闪存控制器110用来存取闪存模块120。依据本实施例,闪存控制器110包括一微处理器112、一只读存储器(readonlymemory,rom)112m、一控制逻辑114、一缓冲存储器116、与一接口逻辑118。只读存储器112m是用来存储一程序代码112c,而微处理器112则用来执行程序代码112c以控制对闪存模块120的存取(access)。控制逻辑114包括了一编码器132以及一译码器134,其中编码器132用来对写入到闪存模块120中的数据进行编码以产生对应的校验码(或称,错误更正码(errorcorrectioncode),ecc),而译码器134用来将从闪存模块120所读出的数据进行译码。

于典型状况下,闪存模块120包括了多个闪存芯片,而每一个闪存芯片包括多个区块(block),而所述控制器(例如:通过微处理器112执行程序代码112c的闪存控制器110)对闪存模块120进行抹除数据运作是以区块为单位来进行。另外,一区块可记录特定数量的数据页(page),其中所述控制器(例如:通过微处理器112执行程序代码112c的存储器控制器110)对闪存模块120进行写入数据的运作是以数据页为单位来进行写入。在本实施例中,闪存模块120为一立体nand型闪存(3dnand-typeflash)。

实作上,通过微处理器112执行程序代码112c的闪存控制器110可利用其本身内部的组件来进行诸多控制运作,例如:利用控制逻辑114来控制闪存模块120的存取运作(尤其是对至少一区块或至少一数据页的存取运作)、利用缓冲存储器116进行所需的缓冲处理、以及利用接口逻辑118来与一主装置(hostdevice)130沟通。缓冲存储器116是以随机存取存储器(randomaccessmemory,ram)来实施。例如,缓冲存储器116可以是静态随机存取存储器(staticram,sram),但本发明不限于此。

在一实施例中,记忆装置100可以是可携式记忆装置(例如:符合sd/mmc、cf、ms、xd标准的记忆卡),且主装置130为一可与记忆装置连接的电子装置,例如手机、笔记本电脑、桌面计算机…等等。而在另一实施例中,记忆装置100可以是固态硬盘或符合通用闪存存储(universalflashstorage,ufs)或嵌入式多媒体记忆卡(embeddedmultimediacard,emmc)规格的嵌入式存储装置,以设置在一电子装置中,例如设置在手机、笔记本电脑、桌面计算机之中,而此时主装置130可以是所述电子装置的一处理器。

参考图2,其为根据本发明一实施例的存取闪存模块120的流程图。在步骤200中,流程开始。在步骤200中,流程开始。在步骤202中,闪存控制器110接收来自主装置130的至少一写入命令,以将第一笔数据写入至闪存模块120的一区块中。在本实施例中,参考图3,闪存模块120包括了多个闪存芯片310、320,每一个闪存芯片包括了多个区块b_0~b_m,而每一个区块包括了n个数据页p0~pn。在以下的说明中,闪存控制器110是将数据循序写入到闪存芯片310的区块b_0,然而,需注意的是,上述的“区块”在实作上也可以是包括了多个芯片的位于不同平面(plane)的多个区块(一般称为“超级区块”),举例来说,假设闪存芯片310、320均包括了两个平面(plane),而区块b_0及b_m是位于不同的平面,则闪存芯片310的区块b_0、b_m以及闪存芯片320的区块b_0、b_m可以构成一个超级区块。

在数据写入至区块b_0之前,微处理器112会建立一实体地址至逻辑地址对照表(以下称p2l对照表)300,并存储在缓冲存储器116之中,其中p2l对照表300包括区块b_0中的连续的数据页的实体地址p0~pn,以及所对应的逻辑地址。详细来说,闪存控制器110首先将来自主装置130且具有逻辑地址lba_5的数据写入至数据页p0中,接着,依序将来自主装置130且具有逻辑地址lba_500、lba_350、lba_6、lba_7、lba_100的数据分别写入至数据页p1~p5。

另一方面,微处理器112另外记录了如图4所示的一逻辑地址群组记录表400,并存储在缓冲存储器116中,其中逻辑地址群组记录表400标注了多个逻辑地址群组的状态,其中每一个逻辑地址群组的所述状态是用来表示p2l对照表300中是否有记录位于所述逻辑地址群组之中的任一逻辑地址。在本实施例中,参考图4,逻辑地址群组记录表400至少包括了多个逻辑地址群组lbag1~lbag5,而每一个逻辑地址群组包括一逻辑地址范围,例如逻辑地址群组lbag1包括了逻辑地址lba_0~lba_255、逻辑地址群组lbag2包括了逻辑地址lba_256~lba_511、逻辑地址群组lbag3包括了逻辑地址lba_512~lba_767、逻辑地址群组lbag4包括了逻辑地址lba_768~lba_1023、逻辑地址群组lbag5包括了逻辑地址lba_1024~lba_1279;此外,逻辑地址群组记录表400是用一个位来表示每一个逻辑地址群组的状态,例如由于p2l对照表记录了lba_5~lba_7、lba_100、lba_350、lba_500,故逻辑地址群组lbag1及lbag2的状态被设为数字值“1”;而由于p2l对照表并未包括逻辑地址lba_512~lba_1279,故逻辑地址群组lbag3~lbag5的状态被设为数字值“0”。

需注意的是图4所示的逻辑地址群组记录表400仅是一个范例说明,而非是作为本发明的限制。只要逻辑地址群组记录表400可以用来表达p2l对照表300中是否有记录位于各个逻辑地址群组之中的任一逻辑地址,其细节内容可以有不同的变化,而这些设计上的变化均应隶属于本发明的范畴。

接着,在步骤204中,微处理器112判断区块b_0中的最后一个数据页pn是否已完成数据写入(也就是说,区块b_0已经写满),若否,则流程进入步骤202以继续将下一笔数据写入到区块b_0;若是,则流程进入步骤206。在步骤206中,微处理器112参考逻辑地址群组记录表400的内容以自闪存模块120中读取一部分的逻辑地址至实体地址对照表(以下称l2p对照表),并使用p2l对照表300来更新所读取的l2p对照表的内容。以图3和图4的实施例来做说明,由于逻辑地址群组记录表400只记录了逻辑地址群组lbag1、lbag2的状态为“1”,这代表了只有包括逻辑地址lba_0~lba_255以及lba_256~lba_511的两个l2p对照表需要更新(本实施例中,每一个逻辑地址群组对应到一个l2p对照表,其具有相同的逻辑地址范围),故微处理器112自闪存模块120中读取如图5所示的两个l2p对照表510、520。需注意的是,在本实施例中,逻辑地址的序号代表着其顺序,而连续的序号代表着连续的逻辑地址。接着,由于p2l对照表300中有4笔对应至逻辑地址范围lba_0~lba_255中的信息,故微处理器112将l2p对照表510中的逻辑地址lba_5更新为对应到区块b_0的数据页p0、逻辑地址lba_6更新为对应到区块b_0的数据页p3、逻辑地址lba_7更新为对应到区块b_0的数据页p4、且逻辑地址lba_100更新为对应到区块b_0的数据页p5;此外,由于p2l对照表300中有2笔对应至逻辑地址范围lba_256~lba_511中的信息,故微处理器112将l2p对照表520中的逻辑地址lba_350更新为对应到区块b_0的数据页p2、以及且逻辑地址lba_500更新为对应到区块b_0的数据页p1。

在步骤208中,微处理器112将更新过后的l2p对照表510、520存储至闪存模块120中,并将区块b_0所对应到的p2l对照表300自缓冲存储器116删除,且在一实施例中p2l对照表300不会被存储到闪存模块120中。此外,在一实施例中,微处理器112将逻辑地址群组记录表400存储至闪存模块120。

在步骤210中,闪存控制器110选择下一个区块(例如,区块b_1)以供后续的数据写入,且流程回到步骤202。在一实施例中,假设流程回到步骤202,且闪存控制器110接收到主装置130的写入命令以要求将具有逻辑地址lba_100的数据更新,则参考图6,微处理器112会另外针对区块b_1建立p2l对照表600,并将l2p对照表510自闪存模块120中读取并进行更新,以将逻辑地址lba_100更新为对应到区块b_1的数据页p0,之后再回存到闪存模块120中。

在以上的实施例中,在区块b_0的所有数据页完全写入之后,具有较大数据量的p2l对照表300可直接删除以节省空间,而对应到区块b_0的逻辑地址群组记录表400会被存储下来以供用于后续的垃圾收集操作。此外,由于逻辑地址群组记录表400的数据量很小,故可以大幅节省闪存模块120的存储空间。

图7所示为根据本发明一实施例的进行垃圾收集操作的流程图,其中在本实施例中是以对图3所示的区块b_0来进行垃圾收集操作,且相关的内容是以图3~6的实施例来做为范例说明,以方便理解。在步骤700,流程开始,且闪存控制器110准备对区块b_0进行垃圾收集操作。在步骤702,闪存控制器110自闪存模块120读取对应至区块b_0的逻辑地址群组记录表400,并暂存在缓冲存储器116中。在步骤704中,微处理器112参考逻辑地址群组记录表400的内容,以自闪存模块120中读取一或多个l2p对照表。在本实施例中,由于逻辑地址群组记录表400只记录了逻辑地址群组lbag1、lbag2的状态为“1”,故微处理器112只需要自闪存模块120中读取两个l2p对照表510、520,而不需要读取其他的l2p对照表。

接着,在步骤706中,微处理器112读取区块b_0的内容,并根据两个l2p对照表510、520以判断其中的数据页为有效数据页或是无效数据页。具体来说,针对区块b0与l2p对照表510、520所共同具有的一特定逻辑地址,微处理器112判断所述特定逻辑地址在l2p对照表510、520中所对应的实体地址是否与在区块b_0中所对应的实体地址相同,若判断结果指出两个实体地址相同,则区块b_0中具有所述实体地址的数据页为有效数据页;以及若判断结果指出两个实体地址不同,则决定区块b_0中具有所述实体地址的数据页为无效数据页。以图3~6的实施例来作为说明,由于区块b_0中对应到逻辑地址lba_5、lba_500、lba_350、lba_6、lba_7的数据页p0~p4与l2p对照表510、520所记录的一致,故微处理器112可以直接判断区块b_0中的数据页p0~p4是有效数据页;然而,由于区块b_0中对应到逻辑地址lba_100的实体地址为(b_0,p5),但与l2p对照表510所记录的确是图6所示的(b_1,p0),故微处理器112便判断区块b_0中的数据页p5是无效数据页。

在步骤708中,微处理器112只将区块b_0中的有效数据页,例如数据页p0~p4搬移到闪存模块120的另外一个区块中,并将区块b_0抹除以释放更多的存储空间。

简要归纳本发明,在本发明的存取闪存模块的方法中,是另外建立一具有很小数据量的逻辑地址群组记录表以供用于后续的垃圾收集操作,且当闪存控制器进行垃圾收集操作时,可以简单快速地参考所述逻辑地址群组记录表以读取正确的l2p对照表以供判断区块中的有效数据页及无效数据页。通过本发明,可以在节省存储空间的情形下兼顾闪存控制器的效能。

以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

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