数据储存装置与数据处理方法与流程

文档序号:18301294发布日期:2019-07-31 10:10阅读:229来源:国知局
数据储存装置与数据处理方法与流程

本发明有关于适用于一数据储存装置的一种数据处理方法,可有效解决为避免数据页所储存的数据因非预期断电被破坏而导致的快闪存储器利用率下降及耗时过久的问题。



背景技术:

随着数据储存装置的科技在近几年快速地成长,许多数据储存装置,如符合sd/mmc规格、cf规格、ms规格与xd规格的记忆卡、固态硬碟、嵌入式多媒体记忆卡(embeddedmultimediacard,缩写为emmc)以及通用快闪存储器储存(universalflashstorage,缩写为ufs)已经广泛地被应用在多种用途上。因此,在这些数据储存装置上,有效率的存取控制也变成一个重要的议题。

一般而言,若在编辑快闪存储器时遭遇非预期断电(suddenpoweroff,缩写为spo),正在写入的数据或已写入的数据可能会被破坏。举例来说,当快闪存储器在数据写入的过程时突然发生断电时,除了目前正在写入的数据页可能会发生毁损之外,与目前正在写入的数据页位在同一条字元线上的其他数据页(例如,其配对页)亦会同时产生毁损。为避免数据页所储存的数据因非预期断电被破坏,通常快闪存储器会实施一些保护机制,例如,于一些数据页中写入无效数据,或者将部分数据重新写入,以加强其稳定性。然而,随着快闪存储器容量的提升,配对页的距离越来越大,导致写入所需耗费的时间也越来越长。此外,写入无效数据或者将部分数据重新写入的操作,也会导致快闪存储器利用率大幅下降。

有鉴于此,本发明提出一种数据处理方法,可有效解决为避免数据页所储存的数据因非预期断电被破坏而导致的快闪存储器利用率下降及耗时过久的问题。



技术实现要素:

本发明揭示一种数据储存装置,包括一存储器装置以及一存储器控制器。存储器装置包括多个存储器区块,各存储器区块包括多个数据页。存储器控制器耦接存储器装置,用以存取存储器装置。存储器控制器于数据储存装置的一初始化过程中判断于先前执行用以将数据写入一第一存储器区块的一第一写入操作的过程中是否发生过非预期断电。若存储器控制器判断于先前执行一写入操作的过程中发生过非预期断电,存储器控制器选择不同于该第一存储器区块的一第二存储器区块,并且于尔后执行一第二写入操作时,将数据写入第二存储器区块。

本发明揭示一种数据处理方法,适用于一数据储存装置,数据储存装置包括一存储器装置以及一存储器控制器,存储器装置包括多个存储器区块,各存储器区块包括多个数据页,存储器控制器耦接存储器装置,用以存取存储器装置,该方法包括:由存储器控制器于数据储存装置的一初始化过程中判断于先前执行用以将数据写入一第一存储器区块的一第一写入操作的过程中是否发生过非预期断电;以及若存储器控制器判断于先前执行一写入操作的过程中发生过非预期断电,由存储器控制器选择不同于第一存储器区块的一第二存储器区块,并且于尔后执行一第二写入操作时,将数据写入第二存储器区块。

附图说明

图1是显示根据本发明的一实施例所述的存储器装置的示意图。

图2是显示根据本发明的一实施例所述的存储器装置的一存储器区块的示意图。

图3是显示根据本发明的一实施例所述的一数据页范例。

图4是显示根据本发明的一实施例所述的一种数据处理方法流程图。

图5是显示根据本发明的一实施例所述的一存储器区块示意图。

图6是显示根据本发明的另一实施例所述的数据处理方法流程图。

符号说明

100-数据储存装置;

110-存储器控制器;

112-微处理器;

112m-只读存储器;

112c-程序码;

114-控制逻辑;

116-缓冲存储器;

118-界面逻辑;

120-存储器装置;

130-主机装置;

132-编码器;

134-解码器;

200-存储器区块;

202-浮动闸极晶休管;

p0、p1、p2、p10、p11、p(3n-1)、p488、p500、p501、p516、p517-数据页;

wl0、wl1、wl2、wln-字元线。

具体实施方式

为让本发明的目的、特征和优点能更明显易懂,下文特举出本发明的具体实施例,并配合附图,作详细说明如下。目的在于说明本发明的精神而非用以限定本发明的保护范围,应理解下列实施例可经由软件、硬件、固件、或上述任意组合来实现。

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

于典型状况下,存储器装置120包含了多个快闪存储器芯片,而每一个快闪存储器芯片包含多个存储器区块(block),而该控制器(例如,透过微处理器112执行程序码112c的存储器控制器110)对存储器装置120进行抹除数据运作是以区块为单位来进行。另外,一存储器区块可记录(包含)特定数量的数据页(page),其中该控制器(例如,透过微处理器112执行程序码112c的存储器控制器110)对存储器装置120进行写入数据的运作是以数据页为单位来进行写入。

实作上,透过微处理器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可以是该电子装置的一处理器。

主机装置130可对数据储存装置100发出指令,例如,读取指令或写入指令,用以存取存储器装置120所储存的数据,或者进一步控制、管理数据储存装置100。

根据本发明的一实施例,存储器装置120所包含的多个存储器区块中至少包含了多层式储存(multiple-levelcell,mlc)存储器区块或是三层式储存(triple-levelcell,tlc)存储器区块,而在以下的实施例中,是以三层式储存存储器区块来作为说明。请参考图2,图2为根据本发明的一实施例所述的存储器装置120中一存储器区块200的示意图。如图2所示,存储器区块200为三层式储存架构,亦即存储器区块200具有n条字元线wl0~wln,其中n为一正整数。每一条字元线可构成三个数据页,故存储器区块200共包含有3*n个数据页(p0~p(3n-1))。图2中的每一个储存单元(亦即每一个浮动闸极晶休管202)可以储存三个位元,亦即包含最低有效位元(lsb)、中间有效位元(csb)与最高有效位元(msb)的三个位元。而每一条字元线wl0~wln上的多个储存单元所储存的最低有效位元构成了该字元线对应的第一个数据页(最低有效位元数据页(lsbpage),或称较低数据页(lowerpage,lp))、所储存的中间有效位元构成了该字元线对应的第二个数据页(中间有效位元数据页(csbpage),或称较高数据页(upperpage,up))、以及所储存的最高有效位元构成了该字元线对应的第三个数据页(最高有效位元数据页(msbpage),或称额外数据页(extrapage,xp))。

值得注意的是,于多层式储存(mlc)存储器区块的实施例中,每一个储存单元可以储存多个(多于一个)位元。

在一般的状况下,同一条字元线上的三个数据页不一定会具有连续的序号,举例来说,字元线wl1上的多个储存单元所储存的最低有效位元构成了数据页p1,字元线wl1上的多个储存单元所储存的中间有效位元构成了数据页p10,以及字元线wl1上的多个储存单元所储存的最高有效位元构成了数据页p11。

一般而言,若是字元线wl1上的最低有效位元数据页(亦即,图2中例示的数据页p1)在数据写入的过程中发生非预期断电(suddenpoweroff,缩写为spo)而毁损时,则字元线wl1上的中间有效位元数据页(亦即,图2中例示的数据页p10)及最高有效位元数据页(亦即,图2中例示的数据页p11)便无法再被使用。此外,若是字元线wl1上的中间有效位元数据页或最高有效位元数据页在数据写入的过程中发生非预期断电而毁损时,则字元线wl1上的最低有效位元数据页所储存的数据亦会发生毁损。

因此,于现今的设计中,为避免数据页所储存的数据因非预期断电被破坏,通常会实施一些保护机制。例如,当判断被非预期断电攻击的数据页为最低有效位元数据页(以下简称为lp)时,存储器控制器110会写入无效的数据直到此被攻击的最低有效位元数据页(lp)的配对页,即,同一条字元线上的中间有效位元数据页(以下简称为up)及最高有效位元数据页(以下简称为xp)。又例如,当判断被非预期断电攻击的数据页为中间有效位元数据页(up)或最高有效位元数据页(xp),则将一部分先前已被写入的数据重新写入于其他的空白页面,以加强其稳定性,需被重新写入的数据可自被攻击的数据页往回追朔直到被攻击的数据页的配对页,即,同一条字元线上的最低有效位元数据页(lp)。若无法确定被攻击的页面为哪一页,则可能依序实施上述两种保护机制,以确保数据页所储存的数据不会因非预期断电被破坏。

以图2为例,在上述的数据页p1发生毁损之后,若是后续仍然要将数据写入至存储器区块200的后续数据页时,为了避免将数据误写到字元线wl1上的数据页p10、p11,存储器控制器110可以从数据页p1开始一直写入无效的数据直到数据页p11为止,之后再从数据页p12开始写入有效数据。如上所述,虽然此方式可以避免数据写入错误,但数据页p2~p9也浪费掉了。特别是在存储器装置120为立体nand型快闪存储器(3dnand-typeflash)时,字元线的最低有效位元数据页、中间有效位元数据页及最高有效位元数据页的距离可能会更远(亦即,数据页序号的差异会较大),因此上述数据页浪费的情形会更严重。

图3是显示根据本发明的一实施例所述的一数据页范例,用以显示出数据页的序号编排范例,其中存储器装置于此实施例中为一立体nand型快闪存储器。以3dtlc为例,由图3所示的数据页序号编排范例中可看出,配对页的序号差异相当大,且一条字元线又包含了12个超级区块(superblock,缩写为sb),若发生非预期断电,则整条字元线上的12个超级区块都可能会受到伤害,所以要把整条字元线都写入无效的数据,方能于后续写入操作中从下一条字元线继续使用。举例而言,假设非预期断电发生在数据页206,则必须写入无效的数据直到数据页310,以确保整条字元线都没有继续使用。因此,于此范例中,非预期断电发生后,可能需要写104页无效的数据。若主机装置是处于不稳定的状态,例如,主机装置的电池电量已近乎耗尽,则极有可能连续发生非预期断电。若要实施上述保护措施,势必得大量放弃的数据页,进而导致存储器装置消耗的速度非常的快,可使用率大幅下降,使得存储器装置很容易因容量不足而必须执行垃圾回收(garbagecollection,缩写为gc)程序。此外,由于配对页的序号差距相当大,因此写入无效数据或重新写入数据也会耗费较多的时间。若写入无效数据及/或重新写入数据所需耗费的时间超过数据储存装置的开机程序所允许的初始化时间,则可能进一步导致存储器装置初始化失败。

有鉴于此,本发明提出一种数据处理方法,可有效解决为避免数据页所储存的数据因非预期断电被破坏而导致的快闪存储器利用率下降及耗时过久的问题。

图4是显示根据本发明的一实施例所述的一种数据处理方法流程图。所述的数据处理方法适用于包含一存储器控制器及一存储器装置的一数据储存装置,例如,数据储存装置100。该方法包括:判断于先前执行用以将数据写入存储器装置的一第一存储器区块的一写入操作的过程中是否发生过非预期断电(spo)(步骤s402)。若否,则无后续操作。亦即,于尔后执行一第二写入操作时,可继续将数据写入第一存储器区块。若是,则由存储器控制器选择不同于第一存储器区块的一第二存储器区块(步骤s404),并且于尔后执行一第二写入操作时,将数据写入第二存储器区块(步骤s406)。

值得注意的是,于步骤s404中,所选择的第二存储器区块更可用于对于先前已被写入的数据实施一些保护机制,以确保已被写入的数据不会因非预期断电被破坏。以下段落将有更详细的介绍。

根据本发明的一实施例,第一存储器区块及第二存储器区块系用以作为数据缓存器(buffer)使用。

根据本发明的一实施例,步骤s402的判断可于数据储存装置的一初始化过程中被执行。举例而言,于数据储存装置被供电时,存储器控制器110可于数据储存装置的一初始化过程中执行步骤s402的判断。存储器控制器110可先藉由逐页扫描目前作为数据缓存器的第一存储器区块的内容,找出第一存储器区块的第一个空白数据页。当第一存储器区块的第一个空白数据页被找出后,则可推断第一存储器区块中最后一个被写入数据的数据页序号。

根据本发明的一实施例,若无对应的旗标值或参数值可指示出先前一次关机是否为非预期断电,则为了确保已被写入的数据不会因非预期断电被破坏,存储器控制器110可预设先前一次关机为非预期断电,并且执行一既定保护机制。

图5是显示根据本发明的一实施例所述的一存储器区块示意图。如图所示,存储器控制器110可先藉由逐页扫描目前存储器区块(例如,第一存储器区块)的内容,找出第一个空白数据页,例如,数据页p501,再推断出最后一个被写入数据的数据页序号,例如,数据页p500。根据本发明的一实施例,若先前一次关机为非预期断电,则遭受非预期断电攻击的数据页可能是数据页p500或者次一页,即,数据页p501。例如,当数据页p500的写入操作完成后并且于数据被写入数据页p501之前发生了非预期断电,则遭受非预期断电攻击的数据页为数据页p501。

于执行既定保护机制时,若最后一个被写入数据的数据页p500或第一个空白数据页p501为最低有效位元数据页(lp),为了避免后续会将数据写到同一条字元线上的其他数据页,存储器控制器110可自第一个空白数据页p501开始往后(例如,以数据页序号递增的方向)一直写入无效的数据直到最后一个被写入数据的数据页的配对页或第一个空白数据页的配对页为止(当最后一个被写入数据的数据页p500或第一个空白数据页p501为最低有效位元数据页(lp)时)。例如,写入无效的数据直到数据页p516,此为虚拟编程(dummyprogramming)操作。接着,若最后一个被写入数据的数据页p500或第一个空白数据页p501为中间有效位元数据页(up)或最高有效位元数据页(xp),存储器控制器110可自最后一个被写入数据的数据页p500开始往前(例如,以数据页序号递减的方向)寻找一既定数量的数据页,直到最后一个被写入数据的数据页的配对页或第一个空白数据页的的配对页为止(当最后一个被写入数据的数据页p500或第一个空白数据页p501为中间有效位元数据页(up)或最高有效位元数据页(xp)时)。例如,自最后一个被写入数据的数据页p500开始往前直到数据页p488。存储器控制器110可将此既定数量的数据页所被写入的数据读出,并自虚拟编程过后的下一个空白页开始,例如,自数据页p517,将数据重新写入,此为重新编程操作(restoreprogramming)。上述操作为存储器控制器110为了确保已被写入的数据不会因非预期断电被破坏而执行的既定保护机制。

根据本发明的一实施例,于执行上述既定保护机制后,或者于执行上述既定保护机制的过程中(例如,于读出上述既定数量的数据页的数据时),存储器控制器110可进一步检测第一存储器区块中是否有任一数据页的一错误位元大于一既定临界值。例如,存储器控制器110可藉由利用错误更正码解码各数据页时所得的错误位元判断是否大于一既定临界值。当第一存储器区块在上述既定数量的数据页中有任一数据页的一错误位元大于该既定临界值时,则判断于先前执行一写入操作的过程中发生过非预期断电。接着,如上述,则由存储器控制器选择不同于第一存储器区块的一第二存储器区块(步骤s404),并且于尔后执行一第二写入操作时,将数据写入第二存储器区块(步骤s406)。

值得注意的是,根据本发明的另一实施例,存储器控制器110亦可于执行上述既定保护机制之前,先检测是否第一存储器区块中有任一数据页的一错误位元大于一既定临界值。

此外,值得注意的是,根据本发明的另一实施例,存储器控制器110亦可于所有已被写入数据的数据页中检测是否有任一数据页的一错误位元大于该既定临界值。

此外,值得注意的是,根据本发明的另一实施例,当存储器控制器110判断于先前执行用以将数据写入存储器装置的第一存储器区块的写入操作的过程中并未发生过非预期断电(步骤s402的否路径),亦可决定不执行上述既定保护机制。换言之,本发明并不限于是否必须执行上述既定保护机制。

根据本发明的一实施例,第一存储器区块与第二存储器区块可以为多层式储存架构。即,第一存储器区块与第二存储器区块为包含多个可以储存多个位元的储存单元的多层式储存(mlc)存储器区块。根据本发明的另一实施例,第一存储器区块与第二存储器区块可以为三层式储存架构。即,第一存储器区块与第二存储器区块为包含多个可以储存三个位元的储存单元的三层式储存(tlc)存储器区块。

根据本发明的一实施例,于步骤s406中,存储器控制器110将第二存储器区块作为单层式储存(single-levelcell,slc)存储器区块使用。例如,以第二存储器区块为三层式储存架构为例,于步骤s406中,对于各字元线所构成三个数据页,存储器控制器110仅编程其中一个数据页,例如,存储器控制器110仅将数据写入最低有效位元数据页(lp)。又例如,存储器控制器110可发出一控制指令至存储器装置120,使得第二存储器区块是以slc存储器区块的方式被存取,亦即,于尔后将数据编程至或读取自第二存储器区块时,存储器控制器110是以单层方式将数据编程至或读取自第二存储器区块。

此外,根据本发明的一实施例,于执行步骤s406前,存储器控制器110亦可将第一存储器区块内需重新编程的数据页所储存的数据读出并重新写入至第二存储器区块内,以加强其稳定性。如上述,存储器控制器110可自第一存储器区块内最后一个被写入数据的数据页开始往前(例如,以数据页序号递减的方向)直到最后一个被写入数据的数据页的配对页或第一个空白数据页的配对页为止,寻找一既定数量的数据页,将此既定数量的数据页所被写入的数据读出,并以单层编程方式将数据写入至第二存储器区块内(即,上所述的将第二存储器区块作为单层式储存(slc)存储器区块使用)。

根据本发明的一实施例,虽第二存储器区块所储存的数据容量变少(例如,变成原来可储存的1/3),但以将第二存储器区块的数据页编程为slc数据页的方式编程第二存储器区块,可有效解决上述为避免数据页所储存的数据因非预期断电被破坏而导致的快闪存储器利用率下降及耗时过久的问题。特别是,当主机装置是处于不稳定的状态,例如,主机装置的电池电量已近乎耗尽,则极有可能连续发生非预期断电,导致上述问题会更加恶化。藉由改变数据缓存器的编程方式,可有效避免必须放弃大量数据页的情况,亦可节省于初始化过程中因必须执行上述虚拟编程及/或重新编程所耗费的时间。

根据本发明的一实施例,可于每次存储器区块被写满后,决定是否继续将其他具有多/三层式储存架构的存储器区块作为单层式储存(slc)存储器区块使用。

图6是显示根据本发明的另一实施例所述的数据处理方法流程图。此流程适用于上述第二存储器被写满后,决定是否继续执行上述将具有多/三层式储存架构的存储器区块的数据页编程为slc数据页的操作。该方法包括:判断于先前执行用以将数据写入第二存储器区块的写入操作的过程中是否发生过非预期断电(步骤s602)。若将数据写入第二存储器区块的任一次写入操作过程中有发生过非预期断电,则存储器控制器110选择一第三存储器区块,并继续以单层编程方式将数据写入至第三存储器区块内(即,将第三存储器区块作为单层式储存(slc)存储器区块使用)(步骤s604),其中,第三存储器区块如同上述第一存储器区块与第二存储器区块,为多层式或三层式储存架构,包含多个可以储存多个/三个位元的储存单元。若将数据写入第二存储器区块的写入操作过程中均未发生过非预期断电,存储器控制器110选择一第三存储器区块,并以原始所对应的多层/三层编程方式将数据写入至第三存储器区块内(即,不将第三存储器区块作为单层式储存(slc)存储器区块使用)(步骤s606),换言之,第三存储器区块的多个数据页会依其原本所具有的储存架构来编程数据。

藉由上述数据处理方法的执行,可有效解决上述为避免数据页所储存的数据因非预期断电被破坏而导致的快闪存储器利用率下降及耗时过久的问题。特别是,当主机装置是处于不稳定的状态,例如,主机装置的电池电量已近乎耗尽,则极有可能连续发生非预期断电,上述问题会更加恶化。藉由改变数据缓存器的编程方式,可有效避免必须放弃大量数据页的情况,亦可节省于初始化过程中因必须执行上述虚拟编程及/或重新编程所耗费的时间。

权利要求书中用以修饰元件的"第一"、"第二"等序数词的使用本身未暗示任何优先权、优先次序、各元件之间的先后次序、或方法所执行的步骤的次序,而仅用作标识来区分具有相同名称(具有不同序数词)的不同元件。

虽然本发明已以较佳实施例揭示如上,然其并非用以限定本发明,任何熟悉本技术领域者,在不脱离本发明的精神和范围内,当可做些许更动与润饰,因此本发明的保护范围当由权利要书界定为准。

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