一种防止电源中断影响的将数据写入闪存模块的方法与流程

文档序号:19424167发布日期:2019-12-17 14:57阅读:960来源:国知局
一种防止电源中断影响的将数据写入闪存模块的方法与流程

本发明属于闪存,更具体地说,一种将数据写入存储模块的方法。



背景技术:

最近几十年人类存储数据的方法日新月异,追求高可靠性,永久性的存储非常重要,其中闪存(nandflash)保存数据时间长,可靠性高,密度大且价格便宜,因此在存储市场占有很大的空间。在闪存架构中,存储单元以每32个或者64个进行串联来进行组织的。每个存储单元串都有位线(bitline)用来与其他串进行连接。控制门用于连接字线(wordlines,wls)。页(page)是闪存芯片读取的最小单位,块(block)为闪存芯片写入的最小单位,每64个页为一个块。

当在写入操作期间闪存的电源突然中断时,不仅当前正在写入的页面可能被损坏,与页面位于相同字线上的其他页面也将被损坏。例如,假设上述闪存是三级单元(tlc)闪存芯片,并且tlc闪存中的每个字线形成最低有效位(lsb)页,中央有效位(csb)页面和最高位(msb)页。如果字线上的lsb页在写入操作期间突然断电,则字线上的csb页面和msb页面也将被损坏。因此,突然断电恢复(spor)程序对于维持闪存的数据可靠性至关重要。



技术实现要素:

本发明的一个目的是提供一种将数据写入存储模块的方法,该方法可以在写入页损坏时有效地继续后续的spor程序和数据写入。技术方案如下:

一种防止电源中断影响的将数据写入闪存模块的方法,包括下列步骤:

1)启动存储模块;

2)构建页状态表:在写过程中,页状态表与写入页每一位相对应,如果正常写入数据时,页状态表中对应位的值为0,即存储模块不备份数据;当出现写入异常时,页状态表中对应位的值为1,在存储模块的缓冲器中将分配空间来备份写入损坏的页的数据,通过页状态表确定数据要写入的特定页面是否已损坏;

3)将数据写入存储模块;存储模块包括多个闪存芯片,每个闪存芯片包括多个块,每个块包括多个页,写操作是以页为单位进行的;

4)若在写入过程中断电,则重启存储模块,如果字线上的lsb页在写入操作期间突然断电,则字线上的csb页面和msb页面也将被损坏;

5)重启之后,存储模块从已写入数据的页中读取数据来重新建立页状态表;

6)根据页状态表将数据写入页,通过页状态表中的值为0还是1来确定数据要写入的页是否已损坏:当页没有损坏时,直接将数据写入该页;当页已损坏时,将备份在缓冲器中的数据写入该页;

7)判断存储模块中的所有可写页的写操作是否都完成;如果已完成所有可写页的写操作,删除页状态表;如果没有,重复步骤6一直到写操作都完成,然后进行步骤7,删除页状态表;

8)如果已完成存储模块所有可写页的写操作,则删除页状态表;将数据写入存储模块的过程结束。

附图说明

图1为本发明实施例的存储模块的内部结构。

图2为本发明所使用的具有tlc结构的块a。

图3为本发明方法的流程图(过程b)。

具体实施方式

图1为本发明实施例存储器件的示图。存储器件包括闪存模块和闪存控制器。闪存控制器被布置为访问闪存模块。闪存控制器包括微处理器,只读存储器(rom),控制逻辑,缓冲器和接口逻辑。rom用于存储程序代码,微处理器用于执行程序代码并控制访问闪存控制器。控制逻辑包括编码器和解码器。编码器用于编码写入闪存模块的数据,从而产生相应的校验代码(ecc),而解码器用于解码从中读取的数据。

图2块a包括n个字线wl0-wln,并且每个字线形成三个页。存储在字线上的多个单元中的lsb位形成字线的第一页(lsb页),存储在字线上的多个单元中的csb位形成字线的第二页(csb页)和存储在其中的msb位字线上的多个单元形成字线的第三页(msb页)。图2块a存储在字线wl1上的多个单元中的lsb位形成页p1,存储在字线wl1上的多个单元中的csb位形成页p24,并且存储在字线wl1上的多个单元中的msb位形成页p25。如果页p1由于在写入操作期间发生突然断电而被损坏,则页p24和页p25也将被损坏。因此,在页面p1已经被损坏之后,如果仍然希望将数据写入后续页面,则闪存控制器可操作来写入。从页p1到页p25的伪数据和从页p26写入有效数据,使得数据不会被写入字线wl1上的页p24和p25,这种方法可以避免数据写入错误,但是页面p2-p23也被浪费了。特别是当闪存模块是3dnand时,lsb页面,csb页面和msb页面之间的距离较大(页面序列数之间的差异也较大)。因此,3dnand型闪存中会浪费更多页面。为了解决上述由于突然断电导致页面浪费的问题,通过下面的方法,从而在spor之后以更有效的方式使用块中的页面。

以图2的块a为例图3为本发明的流程图,包括以下步骤:

步骤1,流程开始,其中闪存控制器将块分配为准备写入数据的目标块。

步骤2:闪存控制器建立页面状态表,其记录块内的页是否被损坏并临时将页状态表存储到缓冲器中。页状态表只能记录损坏的页,即当在开始没有数据写入块时,页状态表不会记录有关任何页的损坏信息。相反,页状态表仅在页被确定为已损坏时记录信息。

步骤3:闪存控制器从主机设备接收写命令。闪存控制器根据写入命令开始在页上顺序地写入数据。如果在闪存控制器将数据写入页时发生突然断电,则页中的数据可能有错误,并且存储在缓冲器中的页状态表也会丢失。

步骤4:重新给存储器设备供电,并且闪存控制器和闪存模块在通电之后执行初始化。

步骤5:闪存控制器重建对应块的页状态表。在重建页状态表期间,闪存控制器首先从页中读取数据,并确定这些页的数据质量。对于已写入数据的任何一个页,如果确定页的数据质量不符合标准,则将其记录在页状态表中页面被损坏,它也是记录与页共享相同字线的其他页也被损坏。

步骤6:闪存控制器参考页状态表将数据写入块。如图2,闪存控制器首先参考页状态表中的对应位,由于对应位的值是“o”,因此页p2没有被损坏。所以,闪存控制器直接将数据写入页p2。然后,闪存控制器参考页状态表中p3-p23的对应位,并直接将数据写入页p3-p23。因此,在闪存控制器将数据写入下一页p24之前,闪存控制器参考页状态表中对应位的值。当p24状态表对应位的值为“1”,就意味着页p24已被损坏。闪存控制器将伪数据写入页p24。然后,闪存控制器参考页状态表中p25的对应位。由于页状态表对应的是“1”,这意味着页p25已经被损坏,所以闪存控制器还将伪数据写入页p25。因此,闪存控制器参考页状态表中p26对应位的值是“o”,这意味着页p26没有被损坏,所以闪存控制器直接将数据写入页p26。

步骤7,闪存控制器确定是否已完成对块中的可写页的所有写操作。也就是说,确定数据是否已写入最后有效页。如果否,则流程进入步骤,继续在块a上写入数据。否则,流程进入步骤8。

在步骤8,闪存控制器从缓冲器中删除与块相对应的页面状态表。在块a上的写入器操作已经完成之后,如果闪存控制器需要在下面将数据写入另一个块,接下来的流程可以包括:可以重复过程b以构建与另一个块相对应的页面状态表,作为写入操作的参考。

当需要再次将数据写入块时,闪存控制器可以从中读取页状态表并根据页状态表将数据写入块。在图3中,只有在块a中标记为已损坏的页面才会被写入有效数据,并且其他页面仍可用于存储数据(即,在图2仅有页面p1,p24,p25将不用有效数据写入),使得可以充分利用块a中的页,从而增强页的使用。

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