将数据写入闪存模块的方法及相关闪存控制器与电子装置与流程

文档序号:17047960发布日期:2019-03-05 19:45阅读:257来源:国知局
将数据写入闪存模块的方法及相关闪存控制器与电子装置与流程

本发明涉及快闪存储器,特别关于一种将数据写入快闪存储器模块的方法及相关的闪存控制器与相关电子装置。



背景技术:

当快闪存储器在数据写入的过程中突然发生断电时,除了目前正在写入的数据页可能会发生毁损以外,与目前正在写入的数据页位在同一条字线上的其他数据页也会同时产生毁损。举例来说,假设上述的快闪存储器为三阶式存储(triple-levelcell,tlc)快闪存储器芯片,且所述快闪存储器中每一条字线构成一最低有效位(leastsignificantbit,lsb)数据页、中间有效位(centralsignificantbit,csb)数据页与最高有效位(mostsignificantbit,msb)数据页,则若是一字线上的最低有效位数据页在数据写入的过程中发生非预期断电(suddenpoweroff)而毁损时,则所述字线上的中间有效位数据页及最高有效位数据页亦会发生毁损。因此,非预期断电修复(suddenpower-offrecovery,spor)程序对于维护快闪存储器的数据可靠度显得相当重要。



技术实现要素:

因此,本发明的一个目的在于提供一种将数据写入至快闪存储器模块的方法,其可以在有数据页毁损的情形下有效地继续完成后续的非预期断电修复程序以及数据写入,以解决先前技术中的问题。

本发明的一个实施例公开一种将一数据写入至一快闪存储器模块的方法,其中所述快闪存储器模块包含多个快闪存储器芯片,每一个快闪存储器芯片包含多个区块,每一个区块包含多个数据页,所述快闪存储器芯片中每一条字线构成了多个数据页。所述方法包含有:建立一数据页状态记录表,其中所述数据页状态记录表记录一特定区块中至少一部分数据页是否毁损;当所述数据需要被写入至所述特定区块时,参考所述数据页状态记录表以判断目前欲写入的一特定数据页是否毁损;当所述数据页状态记录表指出所述特定数据页没有毁损时,将所述数据写入至所述特定数据页;以及当所述数据页状态记录表指出所述特定数据页毁损时,不将所述数据写入至所述特定数据页。

本发明的另一个实施例公开一种闪存控制器,其中所述闪存控制器用来访问一快闪存储器模块,所述快闪存储器模块包含多个快闪存储器芯片,每一个快闪存储器芯片包含多个区块,每一个区块包含了多个数据页,所述快闪存储器芯片中每一条字线构成了多个数据页,且所述闪存控制器包含一只读存储器、一微处理器以及一存储器,其中所述只读存储器用来存储一程序代码;所述微处理器用来执行所述程序代码以控制对所述快闪存储器模块的访问;以及所述存储器用以存储一数据页状态记录表,其中所述数据页状态记录表记录一特定区块中至少一部分数据页中的数据是否毁损。此外,当一数据需要被写入至所述特定区块时,所述微处理器参考所述数据页状态记录表以判断目前欲写入的一特定数据页是否毁损,并当所述数据页状态记录表指出所述特定数据页没有毁损时,所述微处理器将所述数据写入至所述特定数据页;以及当所述数据页状态记录表指出所述特定数据页毁损时,所述微处理器不将所述数据写入至所述特定数据页。

本发明的另一个实施例公开一种电子装置。所述电子装置包含有一快闪存储器模块以及一闪存控制器。所述快闪存储器模块包含多个快闪存储器芯片,每一个快闪存储器芯片包含多个区块,每一个区块包含了多个数据页。所述快闪存储器芯片中每一条字线构成了多个数据页;所述闪存控制器用来访问所述快闪存储器模块,并建立一数据页状态记录表。所述数据页状态记录表记录一特定区块中至少一部分数据页是否毁损;其中当来自一主控装置的一数据需要被写入至所述特定区块时,所述闪存控制器参考所述数据页状态记录表以判断目前欲写入的一特定数据页是否毁损,并当所述数据页状态记录表指出所述特定数据页没有毁损时,所述闪存控制器将所述数据写入至所述特定数据页;以及当所述数据页状态记录表指出所述特定数据页毁损时,所述闪存控制器不将所述数据写入至所述特定数据页。

附图说明

图1是本发明实施例的存储装置的示范图。

图2是具有三阶式存储单元结构的区块的示范图。

图3是根据本发明实施例将数据写入到区块的流程图。

图4是本发明实施例的数据页状态记录表的示范图。

图5为根据本发明实施例因为断电而重建后的数据页状态记录表的示范图。

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

100存储装置

110闪存控制器

112微处理器

112c程序代码

112m只读存储器

114控制逻辑

116缓存器

118接口逻辑

120快闪存储器模块

130主控装置

132编码器

134译码器

200区块

202浮动闸极晶体管

300~314步骤

b0~b(3n-1)比特

p0~p(3n-1)数据页

wl1~wln字线

具体实施方式

请参考图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可以是静态随机访问存储器(staticram,sram),但本发明不限于此。

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

在本实施例中,快闪存储器模块120所包含的多个个区块中至少包含多阶存储单元(multiple-levelcell,mlc)区块或是三阶存储单元(triple-levelcell,tlc))区块,而在以下的实施例中,以三阶存储单元存储区块来作为说明。请参考图2,图2为本发明实施例的快闪存储器模块120中一区块200的示范图。如图2所示,区块200是三阶存储单元结构,所以区块200具有n条字线wl0~wln,每一条字线可构成三个数据页,所以区块200共包含有3*n个数据页(p0~p(3n-1))。图2中的每一个存储单元(亦即每一个浮动闸极晶体管202)可以存储三个比特,亦即包含最低有效位(lsb)、中间有效位(csb)与最高有效位(msb)的三个比特;而每一条字线wl0~wln上的多个存储单元所存储的最低有效位构成了字线对应的第一个数据页(最低有效位数据页(lsbpage))、所存储的中间有效位构成了字线对应的第二个数据页(中间有效位数据页(csbpage))、以及所存储的最高有效位构成了字线对应的第三个数据页(最高有效位数据页(msbpage))。在一般的状况下,同一条字线上的三个数据页不一定会具有连续的序号,举例来说,字线wl1上的多个存储单元所存储的最低有效位构成了数据页p1,字线wl1上的多个存储单元所存储的中间有效位构成了数据页p10,以及字线wl1上的多个存储单元所存储的最高有效位构成了数据页p11。

一般而言,如果字线wl1上的最低有效位数据页(也就是p1)在数据写入的过程中发生非预期断电而毁损,那么字线wl1上的中间有效位数据页(也就是p10)及最高有效位数据页(也就是p11)也会发生毁损。所以,在一实施例中,在上述的数据页p1发生毁损以后,如果后续仍然要将数据写入至区块200的后续数据页,为了避免将数据误写到字线wl1上的数据页p10、p11,闪存控制器110可以从数据页p1开始一直写入无效的数据直到写入到数据页p11为止。之后,再从数据页p12开始写入有效数据。如以上所述,虽然这个方式可以避免数据写入错误,但也导致数据页p2~p9的浪费。特别是在快闪存储器模块120为立体nand型快闪存储器时,字线的最低有效位数据页、中间有效位数据页及最高有效位数据页的距离可能会更远(亦即,数据页序号的差异会较大),因此上述数据页浪费的情形会更严重。

为了解决上述因为非预期断电而导致后续数据页浪费的问题,本发明提出了以下的实施例,从而在非预期断电的修复程序后,更有效率地利用区块200中的数据页。请参考图3,其为根据本发明实施例将数据写入到区块中的流程图。在以下的实施例中,以区块200来作为说明。首先,在步骤300中,流程开始,闪存控制器110规画区块200为目前准备进行数据写入的区块。在步骤302中,闪存控制器110建立一个数据页状态记录表,用于记录区块200中的数据页是否毁损,并且将数据页状态记录表暂时存储在缓存器116内。举例来说,参考图4,数据页状态记录表可以包含多个比特b0~b(3n-1),分别用来记录数据页p0~p(3n-1)是否毁损,例如,当比特b0具有数值“0”的时候代表数据页p0没有毁损,而当比特b0具有数值“1”的时候代表数据页p0已毁损;当比特b1具有数值“0”的时候代表数据页p1没有毁损,而当比特b1具有数值“1”的时候代表数据页p1已毁损,…,以此类推。而在步骤302中,由于区块200本身还没有数据进行写入,所以数据页状态记录表中的每一个比特b0~b(3n-1)的数值均为预设值“0”,也就是代表数据页p0~p(3n-1)并未毁损。

需注意的是图4的数据页状态记录表只是一个示范说明,而不是本发明的限制。只要数据页状态记录表可以用来表达数据页p0~p(3n-1)是否毁损,其在细节内容上可以有不同的变化,而这些设计上的变化都属于本发明的范围。在本发明的另一个实施例中,数据页状态记录表可以只记录有毁损的数据页,也就是在一开始区块200本身尚未有数据进行写入时,数据页状态记录表并未记录任何相关的数据页毁损资讯,而是等到后续有数据页被判断毁损以后才需要记录。

在步骤304中,闪存控制器110收到来自主控装置130的写入命令,此时,闪存控制器110根据所述写入命令以将数据从数据页p0开始循序写入。此时,假设闪存控制器110在将数据写入到数据页p1的时候存储装置100突然发生断电,则此时数据页p1中的数据可能会发生错误,且存储在缓存器116中的数据页状态记录表也因此遗失。

在步骤306中,存储装置100重新通电,且闪存控制器110与快闪存储器模块120进行通电后的初始化操作。在步骤308中,闪存控制器110重新建立对应区块200的数据页状态记录表。在重新建立数据页状态记录表的过程中,首先,闪存控制器110会依序读取区块200中有数据写入的数据页中的数据,并判断这些数据页的数据品质,以及针对这些已经有数据写入的数据页中的任一个数据页,当判断数据页的数据品质不符合一标准时,在数据页状态记录表中记录所述数据页毁损,并直接将与所述数据页位在同一条字线上的其他数据页也记录为毁损。举例来说,闪存控制器110首先会读取数据页p0中的数据,并使用译码器134对读取的数据进行译码(亦即,进行错误纠正操作),而若是译码成功,则判断数据页p0的数据品质符合标准;而若是译码失败,则判断数据页p0的数据品质不符合标准。在本实施例中,假设数据页p0的数据品质符合标准,所以在重新建立的数据页状态记录表中的比特b0的数值为“0”。接着,闪存控制器110会读取数据页p1中的数据,并使用译码器134对所读取的数据进行译码,并根据译码的失败与否来判断数据页p1的数据品质是否符合标准,在本实施例中,假设数据页p1的数据品质因为先前的断电而不符合标准,所以在重新建立的数据页状态记录表中的比特b1的数值为被设定为“1”。此时,由于数据页p1所对应的比特b1被标记为“1”(数据页毁损),则与数据页p1具有同一条字线wl1的另外两个数据页p10、p11所对应到的比特b10、b11也同样被标记为“1”(数据页毁损);另一方面,由于数据页p2~p9、p12~p(3n-1)还没有数据写入,所以相应的比特b2~b9、b12~b(3n-1)维持预设值“0”。图5为本实施例重新建立的数据页状态记录表的示范图。

在步骤310中,闪存控制器110参考数据页状态记录表,从而将数据写入到区块200中。更进一步地说,闪存控制器110先参考数据页状态记录表中的比特b2,而由于比特b2的数值为“0”,亦即数据页p2并未毁损,所以闪存控制器110便直接将数据写入到数据页p2内。接着,闪存控制器110先参考数据页状态记录表中的比特b3~b9,并将直接将数据写入到数据页p3~p9内。接着,当闪存控制器110打算将数据写入到下一个数据页p10之前,闪存控制器110参考数据页状态记录表中的比特b10,而由于比特b11的数值为“1”,代表数据页p10已经毁损,所以闪存控制器110便将数据页p10写入冗余数据(dummydata)。接着,闪存控制器110参考数据页状态记录表中的比特b11,而由于比特b11的数值为“1”,也就是数据页p11已经毁损,所以闪存控制器110也将数据页p11写入冗余数据。接着,闪存控制器110参考数据页状态记录表中的比特b12,而由于比特b12的数值为“0”,代表数据页p12并未毁损,所以闪存控制器110便直接将数据写入到数据页p12内。

在步骤312中,闪存控制器110判断区块200中是否所有可允许写入的数据页都完成数据写入,也就是最后一个有效的数据页(例如,数据页p(3n-1))已完成数据写入,若否,则流程回到步骤310继续在区块200进行数据写入;若是,则流程进入步骤314。

在步骤314中,闪存控制器110将对应到区块200的数据页状态记录表从缓存器116中删除。

在完成区块200的写入操作之后,若是后续闪存控制器110需要再将数据写入到另一个区块,则可以重复图3的流程,建立另一个对应于所述另一个区块的数据页状态记录表,以供参考来进行数据写入操作。

需注意的是,由于闪存控制器110不一定会连续地将区块200中的所有数据页写完,因此,在区块200暂时不需要写入,及/或缓存器116中的空间因为其他因素而需要释放时,闪存控制器110可以将对应到区块200的数据页状态记录表存储至快闪存储器模块120中的一个区块(例如,区块200或是芯片中的单阶存储单元(single-levelcell,slc)区块)内。而后续需要将数据再次写入至区块200时,闪存控制器110可以再次将数据页状态记录表自快闪存储器模块120中读取出来,并再根据数据页状态记录表来对区块200进行数据写入。

简要归纳本发明,在本发明的将数据写入至快闪存储器模块的方法中,如以上图3~5的实施例所示范的,当闪存控制器110准备将数据写入至一特定数据页时(例如,此特定数据页为目前状况下区块200中具有最小序号的空白数据页),会先参考数据页状态记录中所记录的所述特定数据页的状态(也就是,毁损或是没有毁损),从而判断所述特定数据页是否可供写入。因此,区块200中只有被标记为毁损的数据页不会有有效数据写入,而其余的数据页都可以用来存储数据(亦即,图3~5的实施例中只有数据页p1、p10、p11不会写入有效数据),所以区块200中数据页可以被充分的利用,从而提升数据页的使用率。

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

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