CN104575604B - 快闪存储器的抹除方法 - Google Patents
快闪存储器的抹除方法 Download PDFInfo
- Publication number
- CN104575604B CN104575604B CN201310513652.0A CN201310513652A CN104575604B CN 104575604 B CN104575604 B CN 104575604B CN 201310513652 A CN201310513652 A CN 201310513652A CN 104575604 B CN104575604 B CN 104575604B
- Authority
- CN
- China
- Prior art keywords
- memory cell
- address
- programmed
- logic level
- memory
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Landscapes
- Read Only Memory (AREA)
Abstract
本发明为一种快闪存储器的抹除方法,包括:预编程快闪存储器的多个第一存储单元,其中第一存储单元设置于由多个列线与多个行线所组成的一存储器阵列。抹除已编程的第一存储单元。后编程已抹除的第一存储单元,以修复已过度抹除的第一存储单元。在后编程已抹除的第一存储单元之后,编程多个第二存储单元。第二存储单元设置在存储器阵列的一第一特定列线,且第一特定列线安排在对应于一最后有效列地址的一最后列线之后。在本发明中,藉由使用设置在额外列线上的存储单元来记录存储器阵行中所对应的行线上存储单元的使用状态,可快速地判断出所选用的区段是否为空白区段。
Description
技术领域
本发明涉及一种快闪存储器的抹除方法,特别是有关于能快速判断空白区段的一种快闪存储器的抹除方法。
背景技术
快闪存储器在储存数据时,是通过编程(program)与抹除(erase)的机制将特定数据写入。一般而言,根据不同的指令行(command sheet)执行的写入与抹除演算法,个别会引发出不同的问题,例如过度抹除(over erase)。以一般抹除程序为例,主要包含预编程(pre-program)、抹除与后编程(post-program)步骤,藉以确保每个存储单元(memorycell)经过抹除程序后均在逻辑位准“1”的状态。当存储器反复执行抹除及编程程序时,随着写入次数的增加,抹除程序的执行时间也会逐渐增加,其中用以修复过度抹除之后编程步骤于整个抹除程序中所占的执行时间最久。当突发状况发生时,例如突然发生关机状况时,则有可能会中断后编程步骤,而导致快闪存储器的后编程步骤没有完整被执行。于是,需要花费较多时间来验证(verify)快闪存储器,以找寻出空白区段(blank sector),以避免任何过度抹除的存储单元存在区段中,造成读取误判。
发明内容
本发明的主要目的为提供一种快闪存储器的涂抹方法,用于快速判断空白区段,以避免任何过度抹除的存储单元存在区段中。
本发明提供一种快闪存储器的抹除方法,包括:预编程快闪存储器的多个第一存储单元,其中第一存储单元设置于由多个列线与多个行线所组成的一存储器阵列。抹除已编程的第一存储单元。后编程已抹除的第一存储单元,以修复已过度抹除的第一存储单元。在后编程已抹除的第一存储单元之后,编程多个第二存储单元,其中第二存储单元设置在存储器阵列的一第一特定列线,其中第一特定列线安排在对应于一最后有效列地址的一最后列线之后。存储器阵列还包括设置在存储器阵列的一第二特定列线的多个第三存储单元,其中第二特定列线安排在最后列线之后并相邻于第一特定列线。
在本发明中,藉由读取设置在额外列线上的存储单元的状态,控制器可确认所选用的区段是否完整地执行了抹除程序并进一步判断所选用的区段是否为空白区段,而不需要对所选用的区段执行抹除验证以及过度抹除验证。因此,可加快判断是否为空白区段的时间,并降低耗电量。
附图说明
图1为显示根据本发明一实施例所述的快闪存储器;
图2为显示图1的存储器阵列的示意图;
图3为显示根据本发明一实施例所述的抹除方法,适用于图1的快闪存储器;
图4A为根据本发明一实施例所述的快闪存储器的预编程程序的流程图;
图4B为根据本发明另一实施例所述的快闪存储器的预编程程序的流程图;
图5A为根据本发明一实施例所述的快闪存储器的抹除程序的流程图;
图5B为根据本发明另一实施例所述的快闪存储器的抹除程序的流程图;
图6A为根据本发明一实施例所述的快闪存储器的后编程程序的流程图;
图6B为根据本发明另一实施例所述的快闪存储器的后编程程序的流程图;
图7为根据本发明一实施例所述的快闪存储器的标记程序的流程图;
图8A为根据本发明另一实施例所述的快闪存储器的标记程序的流程图;以及
图8B为根据本发明另一实施例所述的快闪存储器的标记程序的流程图。
符号说明:
100~快闪存储器;
110~控制器;
120~感测放大器;
130~地址解码电路;
200~存储器阵列;
210、220、230~存储单元;
C0-Cm、CF1、CF2~列线;
R0-Rn~行线;以及
S310-S340、S410-S484、S510-S584、S610-S684、S710-S750~步骤。
具体实施方式
为让本发明的上述和其他目的、特征、和优点能更明显易懂,下文特举出较佳实施例,并配合所附图式,作详细说明如下:
图1为显示根据本发明一实施例所述的快闪存储器100。快闪存储器100包括控制器110、感测放大器120、地址解码电路130以及存储器阵列200。图2为显示图1的存储器阵列200的示意图。存储器阵列200包括多个存储单元210、220与230,其中存储单元210、220与230设置于由多个行线(row)R0-Rn与多个列线(column)C0-Cm、CF1与CF2所组成的阵列上。在此实施例中,行线R0-Rn为字元线,而列线C0-Cm、CF1与CF2为位元线。此外,在存储器阵列200,每一行线R0-Rn分别表示一有效行地址,而每一列线C0-Cm分别表示一有效列地址。换言之,控制器(例如图1的控制器110)经由地址解码电路130而通过行线R0-Rn与列线C0-Cm对存储单元210进行存取,以便提供储存在存储单元210内的数据给其他装置或对储存在存储单元210内的数据进行更新。相较于传统的存储器阵列,存储器阵列200的列线CF1与CF2为额外的位元线或额外列,其中耦接于列线CF1的存储单元220与耦接于列线CF2的存储单元230作为旗标(flag)存储单元,用以指示所对应的行线上的存储单元210的状态。举例来说,设置在行线R0上的存储单元220与230用以指示行线R0上多个存储单元210的状态,而设置在行线Rn上的存储单元220与230用以指示行线Rn上多个存储单元210的状态。于是,控制器可根据每一区段(sector)内的存储单元220与230的逻辑位准而判断出该区段是否抹除完整、该区段是否储存有效数据等信息。值得注意的是,存储单元220与230的位置只是个例子,并非用以限定本发明。在一实施例中,存储单元230设置在列线CF1而存储单元220设置在列线CF2。
图3为显示根据本发明一实施例所述的抹除方法,适用于图1的快闪存储器。同时参考图1与图3,首先,在步骤S310,控制器110会对存储器阵列200执行预编程程序,以便将存储器阵列200内的全部存储单元编程为逻辑位准“0”。接着,在步骤S320,控制器110会对存储器阵列200执行抹除程序,以便将存储器阵列200内的全部存储单元编程抹除为逻辑位准“1”。接着,在步骤S330,控制器110会对存储器阵列200执行后编程程序,以便对过度抹除的存储单元执行修复。接着,在步骤S340,控制器110会对存储器阵列200内的特定存储单元(例如图2的存储单元220或230)执行标记程序,以记录抹除程序的结果。预编程程序、抹除程序、后编程程序以及标记程序将详细描述于后。
图4A为根据本发明一实施例所述的快闪存储器的预编程程序的流程图。执行预编程程序的目的在于使存储器阵列200中的每个存储单元在执行抹除程序之前具有相近的电压位准,以避免需要执行多次抹除程序来降低过渡抹除存储单元的产生。同时参考图2与图4A,在此实施例中,快闪存储器的感测放大器(例如图1的感测放大器120)是使用额外的读取/写入单元来对额外的存储单元220与230执行读取与写入操作。首先,在步骤S410,控制器会根据地址Addr(例如Addr=0,即起始地址)对对应于地址Addr的位元组或字元组内的多个存储单元210执行预编程验证(verify)。接着,在步骤S420,控制器会判断预编程验证是否成功,即判断对应于地址Addr的每一存储单元210是否为逻辑位准“0”。若预编程验证的结果为失败(例如对应于地址Addr的至少一存储单元210为逻辑位准“1”),则控制器会执行预编程写入操作,以便将对应于地址Addr的全部存储单元210编程为逻辑位准“0”(步骤S440)。接着,回到步骤S410,控制器会重新对对应于地址Addr的存储单元210执行预编程验证(步骤S410),直到控制器判定预编程验证为成功(步骤S420)。接着,在步骤450,控制器会判断地址Addr是否大于最后区段地址Addr_last_Sector。若地址Addr已超过最后区段地址Addr_last_Sector,则完成预编程程序。反之,若地址Addr不是大于最后区段地址Addr_last_Sector,则进行步骤S430。在步骤S430,控制器会将地址Addr的位置值加一(例如Addr=Addr+1,即指向下一个地址),以更新地址Addr。接着,控制器会判断更新过的地址Addr是否为最后有效列地址Cm(步骤S460)。若更新过的地址Addr不是最后有效列地址Cm,则回到步骤S410。于是,控制器会对对应于更新过的地址Addr的存储单元210执行预编程验证,并进行后续流程。若更新过的地址Addr为最后有效列地址Cm(即Addr=Cm),则控制器会将额外位元线CF1与CF2加入(步骤S470),以便能同时地对地址Addr以及对应相同行的额外列CF1与CF2的存储单元进行验证。于是,在步骤S410,控制器会对对应于最后有效列地址Cm的存储单元210、对应于相同行地址的额外列CF1的存储单元220以及对应于相同行地址的额外列CF2的存储单元230执行预编程验证。如先前所描述,若预编程验证的结果为失败,则执行预编程写入操作,以便将对应于地址Addr的存储单元210、对应于地址Addr的额外列CF1的存储单元220以及对应于地址Addr的额外列CF2的存储单元230编程为逻辑位准“0”(步骤S440),并进行后续流程。
图4B为根据本发明另一实施例所述的快闪存储器的预编程程序的流程图。同时参考图2与图4B,在此实施例中,快闪存储器的感测放大器(例如图1的感测放大器120)是使用原有的读取/写入单元来对额外的存储单元220与230执行读取与写入操作。首先,在步骤S410,控制器会根据地址Addr(例如Addr=0,即起始地址)对对应于地址Addr的位元组或字元组内的多个存储单元210执行预编程验证。接着,在步骤S420,控制器会判断预编程验证是否成功,例如判断对应于地址Addr的每一存储单元210是否为逻辑位准“0”。若预编程验证的结果为失败(例如对应于地址Addr的至少一存储单元210为逻辑位准“1”),则控制器会执行预编程写入操作,以便将对应于地址Addr的全部存储单元210编程为逻辑位准“0”(步骤S440)。接着,回到步骤S410。于是,控制器会重新对对应于地址Addr的存储单元210执行预编程验证,直到控制器会判定预编程验证为成功(步骤S420)。接着,控制器会判断地址Addr是否为最后有效列地址Cm(步骤S460)。若地址Addr不是最后有效列地址Cm,则进行步骤S450。接着,在步骤450,控制器会判断地址Addr是否已超过最后区段地址Addr_last_Sector。若地址Addr已超过最后区段地址Addr_last_Sector,则完成预编程程序。反之,若地址Addr未超过最后区段地址Addr_last_Sector,则控制器会将地址Addr的位置值加一(例如Addr=Addr+1,即指向下一个地址),以更新地址Addr。于是,控制器会对对应于更新过的地址Addr的存储单元210执行预编程验证(步骤S410),并进行后续流程。在步骤S460中,若地址Addr为最后有效列地址Cm(即Addr=Rn+Cm),则控制器会针对额外的位元线CF1与CF2而对对应于同一行地址的额外列CF1的存储单元220与对应于同一行地址的额外列CF2的存储单元230执行预编程验证(步骤S480)。接着,在步骤S482,控制器会判断预编程验证是否成功,例如判断存储单元220与230是否为逻辑位准“0”。若预编程验证的结果为失败(例如存储单元220或存储单元230为逻辑位准“1”),则控制器会执行预编程写入操作,以便将对应于额外地址Addr的相同行地址的额外列CF1的存储单元220与额外列CF2的存储单元230编程为逻辑位准“0”(步骤S484),并回到步骤S480。于是,控制器会重新对存储单元220与230执行预编程验证(步骤S480)。接着,回到步骤S482,直到控制器判定预编程验证为成功,于是进行步骤S450,并进行后续流程。
图5A为根据本发明一实施例所述的快闪存储器的抹除程序的流程图。同时参考图2与图5A,在此实施例中,快闪存储器的感测放大器(例如图1的感测放大器120)是使用额外的读取/写入单元来对额外的存储单元220与230执行读取与写入操作。首先,在步骤S510,控制器会将一区段内的存储单元210、220与230进行抹除。接着,在步骤S520,控制器会根据地址Addr(例如Addr=0,即起始地址)而对对应于地址Addr的位元组或字元组内的多个存储单元210执行抹除验证。接着,在步骤S530,控制器会判断抹除验证是否成功,例如判断对应于地址Addr的每一存储单元210是否为逻辑位准“1”。若抹除验证的结果为失败(例如对应于地址Addr的至少一存储单元210为逻辑位准“0”),则回到步骤S510,以重新抹除该区段内的存储单元210、220与230。反之,若抹除验证的结果为成功,控制器会判断地址Addr是否大于最后区段地址Addr_last_Sector(步骤S540)。若地址Addr已超过最后区段地址Addr_last_Sector,则完成抹除程序。反之,若地址Addr小于或等于最后区段地址Addr_last_Sector,则控制器会将地址Addr的位置值加一(例如Addr=Addr+1,即指向下一个地址)(步骤S550),以更新地址Addr。接着,在步骤S560,控制器会判断更新过的地址Addr是否为最后有效列地址Cm。若更新过的地址Addr不是最后有效列地址Cm,则回到步骤S520。于是,控制器会对对应于更新过的地址Addr的存储单元210执行抹除验证,并进行后续流程。若更新过的地址Addr为最后有效列地址Cm(即Addr=Cm),则控制器会将额外的位元线CF1与CF2加入(步骤S570),以便能同时地对地址Addr以及对应于相同行地址上的额外列CF1与CF2上的存储单元进行验证。于是,控制器会对对应于最后有效列地址Cm的存储单元210、对应于相同行地址的额外列CF1的存储单元220以及对应于相同行地址的额外列CF2的存储单元230执行抹除验证(步骤S520)并确认认证的结果(步骤S530)。如先前所描述,若抹除验证的结果为失败,例如对应于地址Addr上的最后有效列地址Cm的存储单元210、对应于相同行地址的额外列CF1的存储单元220以及额外列CF2的存储单元230的任一者为逻辑位准“0”,则回到步骤S510,以重新对该区段内的存储单元210、220与230进行抹除。
图5B为根据本发明另一实施例所述的快闪存储器的抹除程序的流程图。同时参考图2与图5B,在此实施例中,快闪存储器的感测放大器(例如图1的感测放大器120)是使用原有的读取/写入单元来对额外的存储单元220与230执行读取与写入操作。首先,在步骤S510,控制器会将一区段内的存储单元210、220与230进行抹除。接着,在步骤S520,控制器会根据地址Addr(例如Addr=0,即起始地址)而对对应于地址Addr的位元组或字元组内的多个存储单元210执行抹除验证。接着,在步骤S530,控制器会判断抹除验证是否成功,例如判断对应于地址Addr的每一存储单元210是否为逻辑位准“1”。若抹除验证的结果为失败(例如对应于地址Addr的至少一存储单元210为逻辑位准“0”),则回到步骤S510,以重新抹除将该区段内的存储单元210、220与230。反之,若抹除验证的结果为成功,控制器会判断地址Addr是否为最后有效列地址Cm(步骤S560)。若地址Addr不是最后有效列地址Cm,则控制器会判断地址Addr是否大于最后区段地址Addr_last_Sector(步骤S540)。若地址Addr已超过最后区段地址Addr_last_Sector,则完成抹除程序。反之,若地址Addr小于或等于最后区段地址Addr_last_Sector,则控制器会将地址Addr的位置值加一(例如Addr=Addr+1,即指向下一个地址)(步骤S550),以更新地址Addr,并回到步骤S520。于是,控制器会对对应于更新过的地址Addr的存储单元210执行抹除验证,并进行后续流程。在步骤S560中,若地址Addr为最后有效列地址Cm(即Addr=Cm),则控制器会针对额外位元线CF1与CF2而对对应于相同行地址上的额外列CF1的存储单元220与额外列CF2的存储单元230执行抹除验证(步骤S580)。接着,在步骤S582,控制器会判断抹除验证是否成功,例如判断存储单元220与230是否为逻辑位准“1”。若抹除验证的结果为失败(例如存储单元220或是存储单元230为逻辑位准“0”),则控制器会重新抹除将该区段内的存储单元210、220与230(步骤S584)。接着,控制器会对存储单元220与230重新执行抹除验证(步骤S580)。接着,重复执行抹除验证(步骤S582)以及重新执行抹除(步骤S584),直到控制器会判定抹除验证为成功,于是进行步骤S540,并进行后续流程。
图6A为根据本发明一实施例所述的快闪存储器的后编程程序的流程图。执行后编程程序的目的在于修复过度抹除的存储单元。一般而言,当经过抹除程序之后,快闪存储器的存储单元的临界电压值可能会降低。当临界电压值太低时(例如小于0),存储单元会发生过度抹除现象,其所引起的漏电流将会导致控制器会无法正确地识别该存储单元以及该列其他存储单元所储存的数据。同时参考图2与图6A,在此实施例中,快闪存储器的感测放大器(例如图1的感测放大器120)是使用额外的读取/写入单元来对额外的存储单元220与230执行读取与写入操作。首先,在步骤S610,根据列地址Addr_Col(例如Addr_Col=0,即起始地址),控制器会以列线(column)为单位而对对应于列地址Addr_Col的多个存储单元210执行过度抹除验证。接着,在步骤S620,控制器会判断过度抹除验证是否成功,例如判断对应于列地址Addr_Col的全部存储单元210均未选取时,验证该列线上是否有漏电流存在。若过度抹除验证的结果为失败(例如对应于列地址Addr_Col的至少一存储单元210有漏电流存在),则以列线为单位而对对应于列地址Addr_Col的全部存储单元210执行后编程写入操作(或软编程(soft-program))(步骤S640),以调整存储单元210的临界电压值。接着,回到步骤S610,控制器会对对应于列地址Addr_Col的多个存储单元210执行过度抹除验证(步骤S620),直到过度抹除验证成功。当过度抹除验证成功时,控制器会判断列地址Addr_Col是否已超过最后有效列地址Cm(步骤S650)。若列地址Addr_Col已超过最后有效列地址Cm,则完成后编程程序。反之,若列地址Addr_Col小于或等于最后有效列地址Cm,则控制器会将列地址Addr_Col的位置值加一(例如Addr_Col=Addr_Col+1,即指向下一个列地址),以更新列地址Addr_Col(步骤S630)。接着,控制器会判断更新过的列地址Addr_Col是否为最后有效列地址Cm(步骤S660)。若更新过的列地址Addr_Col不是最后有效列地址Cm,则回到步骤S610。于是,控制器会对对应于更新过的列地址Addr_Col的存储单元210执行过度抹除验证,并进行后续流程。若更新过的列地址Addr_Col为最后有效列地址Cm(即Addr_Col=Cm),则控制器会将额外位元线CF1与CF2加入(步骤S670),以便能同时地对最后有效列地址Addr_Col以及额外列CF1与CF2的存储单元进行验证。于是,在步骤S610,控制器会对对应于最后有效列地址Cm的存储单元210、额外列CF1的存储单元220以及额外列CF2的存储单元230执行过度抹除验证。如先前所描述,若过度抹除验证的结果为失败,则调整对应于列地址Addr_Col的存储单元210以对应于额外列CF1的存储单元220以及额外列CF2的存储单元230的临界电压值,并进行后续流程。
图6B为根据本发明另一实施例所述的快闪存储器的后编程程序的流程图。同时参考图2与图6B,在此实施例中,快闪存储器的感测放大器(例如图1的感测放大器120)是使用原有的读取/写入单元来对额外的存储单元220与230执行读取与写入操作。首先,在步骤S610,根据列地址Addr_Col(例如Addr_Col=0,即起始地址),控制器会以列线(column)为单位而对对应于列地址Addr_Col的多个存储单元210执行过度抹除验证。接着,在步骤S620,控制器会判断过度抹除验证是否成功,例如判断对应于列地址Addr_Col的全部存储单元210是否有漏电流存在。若过度抹除验证的结果为失败(例如对应于列地址Addr_Col的至少一存储单元210有漏电流存在),则以列线为单位而对对应于列地址Addr_Col的全部存储单元210执行后编程写入操作(或软编程(soft-program))(步骤S640),以调整存储单元210的临界电压值。接着,回到步骤S610,控制器会对对应于列地址Addr_Col的多个存储单元210执行过度抹除验证(步骤S620),直到过度抹除验证成功。当过度抹除验证成功时,控制器会将列地址Addr_Col的位置值加一(例如Addr_Col=Addr_Col+1,即指向下一个列地址),以更新列地址Addr_Col(步骤S630)。接着,在步骤650,控制器会判断列地址Addr_Col是否已超过最后有效列地址Cm。若列地址Addr_Col小于或等于最后有效列地址Cm,则回到步骤S610。于是,控制器会对对应于更新过的列Addr_Col的存储单元210执行过度抹除验证(步骤S610),并进行后续流程。在步骤S650中,若列地址Addr_Col已超过最后有效列地址Cm(即Addr_Col=Cm),则控制器会针对额外的位元线CF1与CF2而对对应于额外列CF1的存储单元220以及对应于额外列CF2的存储单元230执行过度抹除验证(步骤S680)。接着,在步骤S682,控制器会判断过度抹除验证是否成功,即判断存储单元220与230是否有漏电流。若过度抹除验证的结果为失败(例如存储单元220或存储单元230有漏电流),则以列线为单位而对对应于额外列CF1的全部存储单元220以及对应于额外列CF2的全部存储单元230执行后编程写入操作(S684),以调整对应于额外列CF1的存储单元220以及对应于额外列CF2的存储单元230的临界电压值,并回到步骤S680。于是,控制器会对存储单元220与230重新执行过度抹除验证(步骤S680)并进行后续程序,直到在步骤S682,控制器会判定过度抹除验证为成功,于是进行步骤S650,并进行后续流程。
图7为根据本发明一实施例所述的快闪存储器的标记程序的流程图。同时参考图2与图7,在此实施例中,存储单元230是用来表示所对应的列线上的存储单元是否已经完整地完成了抹除程序。值得注意的是,使用存储单元230来记录抹除程序的结果仅是个例子,并非用以限定本发明。在一实施例中,可使用存储单元220来记录抹除程序的结果。在另一实施例中,更可使用多个存储单元230或存储单元220来记录抹除程序的结果。首先,在步骤S710,根据行地址Addr_Row(例如Addr_Row=R0,即行起始地址),控制器会将对应于行地址Addr_Row的存储单元230编程为逻辑位准“0”。接着,在步骤S720,控制器会对存储单元230执行编程验证。接着,在步骤S730,控制器会判断编程验证是否成功,例如存储单元230是否为逻辑位准“0”。若编程验证的结果为失败(例如存储单元230为逻辑位准“1”),则回到步骤S710,以重新对存储单元230进行编程。反之,若编程验证的结果为成功,控制器会判断行地址Addr_Row是否已超过最后有效行地址Rn(步骤S740)。若行地址Addr_Row已超过最后有效行地址Rn,则完成标记程序。反之,若行地址Addr_Row小于或是等于最后有效行地址Rn,控制器会将行地址Addr_Row的位置值加一(例如Addr_Row=Addr_Row+1,即指向下一个行地址)(步骤S750),并回到步骤S710。接着,控制器会将对应于更新过的行地址Addr_Row的存储单元230编程为逻辑位准“0”,并进行后续程序。
图8A为根据本发明另一实施例所述的快闪存储器的标记程序的流程图。同时参考图2与图8A,在此实施例中,存储单元220是用来表示所对应的行线上的存储单元是否曾经执行编程程序。此外,快闪存储器的感测放大器(例如图1的感测放大器120)是使用额外的读取/写入单元来对额外的存储单元220执行读取与写入操作。值得注意的是,使用存储单元220来记录编程程序的结果仅是个例子,并非用以限定本发明。在一实施例中,可使用存储单元230来记录编程程序的结果,而存储单元220则用来记录区段是否完整完成抹除流程的标记。在另一实施例中,更可使用多个存储单元230或存储单元220来记录是否曾经执行编程程序及完成抹除流程的结果。在此实施例中,控制器会根据编程指令而以位元组或字元组为单位来对所选取的区段内的存储单元210进行编程。首先,在步骤S810,当欲编程的数据为最后位元组数据时,控制器会根据地址Addr,而将最后位元组数据编程至所对应的存储单元210,并将位于同一行的存储单元220编程为逻辑位准“0”。接着,在步骤S820,控制器会对对应地址Addr所编程的存储单元210与220执行编程验证。接着,在步骤S830,控制器会判断编程验证是否成功,例如存储单元210是否符合编程数据及存储单元220是否为逻辑位准“0”。若编程验证的结果为失败(例如存储单元220为逻辑位准“1”或是存储单元210的逻辑位准有误),则回到步骤S810,以重新对存储单元210与220进行编程。反之,若编程验证的结果为成功,则完成标记程序。
图8B为根据本发明另一实施例所述的快闪存储器的标记程序的流程图。同时参考图2与图8B,在此实施例中,存储单元220是用来表示所对应的行线上的存储单元是否曾经执行编程程序。此外,快闪存储器的感测放大器(例如图1的感测放大器120)是使用原有的读取/写入单元来对额外的存储单元220与230执行读取与写入操作。值得注意的是,使用存储单元220来记录编程程序的结果仅是个例子,并非用以限定本发明。在一实施例中,可使用存储单元230来记录是否曾经执行编程程序以及存储单元220用来记录区段是否完整完成抹除流程的标记的结果。在另一实施例中,更可使用多个存储单元230或存储单元220来记录编程程序的结果。在此实施例中,控制器会根据编程指令而以位元组或字元组为单位来对所选取的区段内的存储单元210进行编程。在此实施例中,控制器会根据编程指令而以位元组或字元组为单位来对所选取的区段内的存储单元210进行编程。首先,在步骤S840,当欲编程的数据为最后位元组数据时,控制器会根据地址Addr,而将最后位元组数据编程至所对应的存储单元210。接着,在步骤S850,控制器会对所编程的存储单元210执行编程验证。接着,在步骤S860,控制器会判断编程验证是否成功。若编程验证的结果为失败(例如存储单元210的逻辑位准有误),则回到步骤S840,以重新对存储单元210进行编程。反之,若存储单元210的编程验证的结果为成功,则将位在同一行的存储单元220编程为逻辑位准“0”(步骤S870)。接着,在步骤S880,控制器会对所编程的存储单元220执行编程验证。接着,在步骤S890,控制器会判断编程验证是否成功,例如存储单元220是否为逻辑位准“0”。若存储单元220的编程验证的结果为失败(例如存储单元220为逻辑位准“1”),则回到步骤S870,以重新对存储单元220进行编程。反之,若编程验证的结果为成功,则完成标记程序。
一般而言,在对存储器阵列进行数据编程之前,控制器必须先确认所选用的区段是空白区段,才能将数据编程至该空白区段。一般而言,当有中断情况发生在传统的快闪存储器的抹除过程中,则抹除程序不会被完整地执行。因此,在传统的快闪存储器中,控制器有时需要先对所选用的区段中的全部存储单元进行抹除验证,并执行过度抹除验证,以便确认所选用的区段中没有过度抹除的存储单元存在,而完成整区段存储单元的抹除验证以及过度抹除验证需要花费较多的时间。此外,对设置在可携式电子装置的快闪存储器而言,为了加速执行抹除验证以及过度抹除验证,常藉由增加读取单元以增加验证速率,但亦会增加耗电。在本发明实施例中,藉由读取设置在额外列线(例如图2的列线CF1与CF2)上的存储单元(例如图2的存储单元220与230)的状态,控制器可确认所选用的区段是否完整地执行了抹除程序并进一步判断所选用的区段是否为空白区段,而不需要对所选用的区段执行抹除验证以及过度抹除验证。因此,可加快判断是否为空白区段的时间,并降低耗电量。举例来说,在一实施例中,存储单元220与存储单元230是用来表示所对应的列线上的存储单元是否已经完整地完成了抹除程序。若所选用的区段内的全部存储单元230为逻辑位准“0”且全部存储单元220为逻辑位准“1”,则控制器可判定该区段已完整地抹除,如下行表1所显示。接着,控制器将数据编程至该区段内。在完成数据编程之后,控制器可使用先前所描述的标记程序来对该区段的存储单元220进行编程。在此实施例中,存储单元220是用来表示所对应的列线上的存储单元是否已被编程。举例来说,在执行一页数据编程的过程中,当最后位元组被编程之后,控制器可将相同行线上的存储单元220编程为逻辑位准“0”。因此,若所选用的区段内的部分存储单元220为逻辑位准“0”且全部存储单元230为逻辑位准“0”,则控制器可判定该区段已被使用,并非空白区段。此外,若所选用的区段内的部分存储单元230为逻辑位准“1”,则控制器可判定该区段未被完整地抹除。尤其是全部存储单元220为逻辑位准“1”且全部存储单元230亦为逻辑位准“1”,其表示该区段发生过抹除中断的情况,而有可能存在着过度抹除的存储单元。因此,可根据图3的方法来重新对该区段的存储单元进行抹除,以避免过度抹除的存储单元存在,而造成数据完整性的误判。
表1
如先前所描述,藉由使用额外列线上的存储单元来记录存储器阵列中所对应的行线上存储单元的使用状态,控制器可快速地判断出所选用的区段是否空白。再者,藉由对整列的存储单元进行标记,可有效分散旗标存储单元的编程及抹除次数,而能达成与数据存储单元相等的写入次数(cycling time)。此外,存储单元220与230的排行顺序以及数量可根据实际应用而决定。
虽然本发明已以较佳实施例揭露如上,然其并非用以限定本发明,任何所属技术领域中具有通常知识者,在不脱离本发明的精神和范围内,当可作些许的更动与润饰,因此本发明的保护范围当视所附的权利要求书所界定的为准。
Claims (12)
1.一种快闪存储器的抹除方法,其特征在于,所述方法包括:
预编程该快闪存储器的多个第一存储单元,其中所述第一存储单元设置于由多个列线与多个行线所组成的一存储器阵列;
抹除已编程的所述第一存储单元;
后编程已抹除的所述第一存储单元,以修复已过度抹除的所述第一存储单元;以及
在后编程已抹除的所述第一存储单元之后,编程该存储器阵列的多个第二存储单元,其中所述第二存储单元设置在该存储器阵列的一第一特定列线,以及该第一特定列线安排在对应于一最后有效列地址的一最后列线之后;
其中该存储器阵列还包括多个第三存储单元,其中所述第三存储单元设置在该存储器阵列的一第二特定列线,其中该第二特定列线安排在该最后列线之后并相邻于该第一特定列线。
2.如权利要求1所述的快闪存储器的抹除方法,其特征在于,上述预编程该快闪存储器的所述第一存储单元的步骤还包括:
根据一第一地址,对对应于该第一地址的所述第一存储单元执行一预编程验证,以判断对应于该第一地址的所述第一存储单元是否为低逻辑位准;
当对应于该第一地址的所述第一存储单元的至少一者为高逻辑位准时,对对应于该第一地址的所述第一存储单元进行编程;以及
当所述第一存储单元被编程且该第一地址超过一最后地址时,完成该预编程程序。
3.如权利要求2所述的快闪存储器的抹除方法,其特征在于,上述预编程该快闪存储器的所述第一存储单元的步骤还包括:
当所述第一存储单元被编程且该第一地址未超过该最后地址时,将该第一地址更新为一第二地址;
当该第二地址为该最后有效列地址时,根据该第二地址,对对应于该第二地址的所述第一存储单元以及所述第二与第三存储单元执行该预编程验证,以判断对应于该第二地址的所述第一、第二与第三存储单元是否为低逻辑位准;
当对应于该第二地址的所述第一、第二与第三存储单元的至少一者为高逻辑位准时,对对应于该第二地址的所述第一、第二与第三存储单元进行编程;以及
当对应于该第二地址的所述第一、第二与第三存储单元被编程且该第二地址超过该最后地址时,完成该预编程程序。
4.如权利要求1所述的快闪存储器的抹除方法,其特征在于,上述抹除已编程的所述第一存储单元的步骤还包括:
抹除一区段内的所述第一、第二与第三存储单元;
根据一第一地址,对对应于该第一地址的已抹除的所述第一存储单元执行一抹除验证,以判断对应于该第一地址的已抹除的所述第一存储单元是否为高逻辑位准;
当对应于该第一地址的已抹除的所述第一存储单元的一者为低逻辑位准时,重新抹除该区段内的所述第一、第二与第三存储单元;以及
当对应于该第一地址的已抹除的所述第一存储单元为高逻辑位准且该第一地址超过一最后地址时,完成该抹除程序。
5.如权利要求4所述的快闪存储器的抹除方法,其特征在于,上述抹除已编程的所述第一存储单元的步骤还包括:
当对应于该第一地址的已抹除的所述第一存储单元为高逻辑位准且该第一地址未超过该最后地址时,将该第一地址更新为一第二地址;
当该第二地址为该最后有效列地址时,根据该第二地址,对对应于该第二地址的已抹除的所述第一存储单元以及所述第二与第三存储单元执行该抹除验证,以判断对应于该第二地址的已抹除的所述第一、第二与第三存储单元是否为高逻辑位准;
当对应于该第二地址的已抹除的所述第一、第二与第三存储单元的一者为低逻辑位准时,重新抹除该区段内的所述第一、第二与第三存储单元;以及
当对应于该第二地址的已抹除的所述第一、第二与第三存储单元为高逻辑位准且该第二地址超过该最后地址时,完成该抹除程序。
6.如权利要求1所述的快闪存储器的抹除方法,其特征在于,上述后编程已抹除的所述第一存储单元的步骤还包括:
根据一第一地址,对对应于该第一地址的所述第一存储单元执行一过度抹除验证,以判断对应于该第一地址的已抹除的所述第一存储单元是否为过度抹除;
当已抹除的所述第一存储单元的一者为过度抹除时,对已过度抹除的所述第一存储单元执行后编程;以及
当所述第一存储单元无过度抹除时,将该第一地址更新为一第二地址。
7.如权利要求6所述的快闪存储器的抹除方法,其特征在于,上述后编程已抹除的所述第一存储单元的步骤还包括:
当该第二地址超过该最后有效列地址时,根据该第二地址,对对应于该第二地址的所述第一存储单元以及所述第二与第三存储单元执行该过度抹除验证,以判断对应于该第二地址的已抹除的所述第一、第二与第三存储单元是否为过度抹除;以及
当所述第二与第三存储单元无过度抹除时,完成该后编程程序。
8.如权利要求1所述的快闪存储器的抹除方法,其特征在于,上述编程所述第二存储单元的步骤还包括:
根据一第一地址,对对应于该第一地址的该第二存储单元进行编程;
对对应于该第一地址的已编程的该第二存储单元执行一编程验证,以判断对应于该第一地址的该第二存储单元是否为低逻辑位准;以及
当对应于该第一地址的已编程的该第二存储单元为高逻辑位准时,重新对对应于该第一地址的该第二存储单元进行编程。
9.如权利要求8所述的快闪存储器的抹除方法,其特征在于,上述编程所述第二存储单元的步骤还包括:
当对应于该第一地址的已编程的该第二存储单元为低逻辑位准且该第一地址超过一最后有效行地址时,该快闪存储器已完成抹除;
当已编程的该第二存储单元为低逻辑位准且该第一地址未超过该最后有效行地址时,将该第一地址更新为一第二地址;
根据该第二地址,对对应于该第二地址的该第二存储单元进行编程;
对对应于该第二地址的已编程的该第二存储单元执行该编程验证,以判断对应于该第二地址的该第二存储单元是否为低逻辑位准;
当对应于该第二地址的已编程的该第二存储单元为高逻辑位准时,重新对对应于该第二地址的该第二存储单元进行编程;以及
当对应于该第二地址的已编程的该第二存储单元为低逻辑位准且该第二地址超过最后有效行地址时,该快闪存储器已完成抹除。
10.如权利要求1所述的快闪存储器的抹除方法,其特征在于,所述抹除方法还包括:
在快闪存储器完成抹除之后,根据欲编程的数据,编程对应于一写入地址的所述第一存储单元;以及
编程对应于该写入地址的该第三存储单元,以指示对应于该写入地址的该行线的所述第一存储单元已被编程。
11.如权利要求1所述的快闪存储器的抹除方法,其特征在于,所述抹除方法还包括:
根据该快闪存储器的一区段内的所述第二与第三存储单元的逻辑位准,判断该区段是否为空白区段;
其中当所述第二存储单元为低逻辑位准以及所述第三存储单元为高逻辑位准时,该区段为空白区段。
12.如权利要求11所述的快闪存储器的抹除方法,其特征在于,当所述第二存储单元为低逻辑位准以及至少一该第三存储单元为低逻辑位准时,该区段不是空白区段,以及当至少一该第二存储单元为高逻辑位准时,该区段不是空白区段。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310513652.0A CN104575604B (zh) | 2013-10-25 | 2013-10-25 | 快闪存储器的抹除方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310513652.0A CN104575604B (zh) | 2013-10-25 | 2013-10-25 | 快闪存储器的抹除方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104575604A CN104575604A (zh) | 2015-04-29 |
CN104575604B true CN104575604B (zh) | 2018-01-19 |
Family
ID=53091478
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310513652.0A Active CN104575604B (zh) | 2013-10-25 | 2013-10-25 | 快闪存储器的抹除方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104575604B (zh) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1518000A (zh) * | 2003-01-26 | 2004-08-04 | 深圳市朗科科技有限公司 | 闪存介质中的数据管理方法 |
CN1941205A (zh) * | 2005-08-17 | 2007-04-04 | 赛芬半导体有限公司 | 擦除非易失性存储器单元的方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7299314B2 (en) * | 2003-12-31 | 2007-11-20 | Sandisk Corporation | Flash storage system with write/erase abort detection mechanism |
-
2013
- 2013-10-25 CN CN201310513652.0A patent/CN104575604B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1518000A (zh) * | 2003-01-26 | 2004-08-04 | 深圳市朗科科技有限公司 | 闪存介质中的数据管理方法 |
CN1941205A (zh) * | 2005-08-17 | 2007-04-04 | 赛芬半导体有限公司 | 擦除非易失性存储器单元的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN104575604A (zh) | 2015-04-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8769232B2 (en) | Non-volatile semiconductor memory module enabling out of order host command chunk media access | |
CN103853582B (zh) | 闪存更新方法 | |
CN105786411B (zh) | 非易失性存储器装置的操作方法 | |
CN107977161A (zh) | 数据储存装置及其数据写入方法 | |
CN101599305B (zh) | 具有数据修复功能的储存系统及其数据修复方法 | |
US8806301B2 (en) | Data writing method for a flash memory, and controller and storage system using the same | |
CN107918588A (zh) | 数据储存装置及其数据写入方法 | |
US7870328B2 (en) | Memory controller and flash memory system | |
TWI343001B (en) | Data preserving method and data accessing method for non-volatile memory | |
CN103578565B (zh) | 一种NAND Flash存储芯片的校验方法及装置 | |
CN104115231B (zh) | 用于确定对存储器阵列的访问的方法、装置和系统 | |
CN101308703B (zh) | 非易失性存储器阵列字线重试擦除及阈值电压恢复的方法 | |
TW201303588A (zh) | 區塊管理方法、記憶體控制器與記憶體儲存裝置 | |
CN103425589A (zh) | 控制装置、存储装置以及存储控制方法 | |
TW201241831A (en) | Method and apparatus for leakage suppression in flash memory in response to external commands | |
US11803223B2 (en) | Open channel solid state drive, nonvolatile memory system including the same and method of power loss protection of open channel solid state drive | |
US20170154689A1 (en) | Method and Apparatus for Logically Removing Defective Pages in Non-Volatile Memory Storage Device | |
CN101796498A (zh) | 存储器系统 | |
EP3176789A1 (en) | Memory control method and apparatus | |
CN104103318A (zh) | 操作存储控制器的方法和包括存储控制器的数据存储设备 | |
CN116880782A (zh) | 一种内嵌式存储器及其测试方法 | |
CN114758689A (zh) | 用于非易失性存储器的擦除方法和上电修复方法 | |
CN103106148B (zh) | 区块管理方法、存储器控制器与存储器存储装置 | |
KR20200120159A (ko) | 데이터 저장 장치 및 이의 동작 방법 | |
CN104575604B (zh) | 快闪存储器的抹除方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |