半导体存储器装置、控制器以及两者的操作方法与流程

文档序号:21681211发布日期:2020-07-31 21:53阅读:351来源:国知局
半导体存储器装置、控制器以及两者的操作方法与流程

相关申请的交叉引用

本申请文件要求于2019年1月23日提交的申请号为10-2019-0008848的韩国专利申请的优先权,该韩国专利申请通过引用整体并入本文以用于所有目的。

本公开技术总体涉及一种电子装置,并且更特别地,涉及一种半导体存储器装置、控制器以及两者的操作方法。



背景技术:

一些半导体存储器装置以二维结构集成。作为示例,二维nand闪速存储器装置可以被实施为水平布置在半导体衬底上的存储器单元串。一些半导体存储器装置可以以三维结构集成。作为示例,三维nand闪速存储器装置可以被实施为垂直布置在半导体衬底上的存储器单元串。这种半导体存储器装置的操作由存储器控制器或处理器控制。半导体存储器装置以及存储器控制器和/或处理器可以构成存储装置。



技术实现要素:

除了其它特征和益处之外,本公开技术的实施例提供一种具有提高的可靠性的半导体存储器装置、控制器以及两者的操作方法。

在本公开技术的一方面,提供一种半导体存储器装置,该半导体存储器装置包括:存储器单元阵列,包括多个存储器单元;外围电路,被配置成对存储器单元阵列执行编程操作;以及控制逻辑,被配置成控制外围电路对存储器单元阵列执行编程操作,其中控制逻辑响应于编程命令来控制外围电路对多个存储器单元之中的选择的物理页面中包括的存储器单元执行编程操作,并且基于编程操作是否已经通过来控制外围电路对选择的物理页面中包括的存储器单元之中的至少一个存储器单元执行附加编程操作。

在本公开技术的另一方面,提供一种用于操作控制器的方法,该控制器用于控制半导体存储器装置,该方法包括:感测半导体存储器装置的突然断电(spo);对应于spo的感测,将针对被最后编程的物理页面的读取命令传送至半导体存储器装置;接收对应于读取命令的读取数据;以及基于读取数据,根据在最终编程操作期间是否已经执行附加编程操作来确定最终编程操作是否已经通过。

在本公开技术的另一方面,提供一种用于控制半导体存储器装置的控制器,该控制器包括:突然断电(spo)传感器,被配置成通过感测半导体存储器装置的spo来生成spo感测信号;编程通过确定器,被配置成响应于spo感测信号而生成用于读取被最后编程的物理页面的控制信号;以及命令生成器,被配置成基于控制信号来生成用于读取物理页面的读取命令并且将读取命令传送至半导体存储器装置,其中编程通过确定器基于接收的对应于读取命令的读取数据来确定最终编程操作是否已经通过。

在本公开技术的另一方面,提供一种半导体存储器装置,该半导体存储器装置包括:存储器单元阵列,包括多个存储器单元和一个或多个标志存储器单元,每个标志存储器单元经由字线联接到存储器单元组;以及控制器,与存储器单元阵列通信,并且控制器被配置成:从与多个存储器单元联接的字线中选择与来自多个存储器单元的、用于编程的目标存储器单元集联接的字线;将幅值递增的一系列编程脉冲和编程验证脉冲施加到所选择的字线,编程脉冲升高目标存储器单元集的阈值电压,编程验证脉冲验证目标存储器单元集的阈值电压是否已经升高到目标阈值电压电平以上;将控制电压施加到目标存储器单元集以使目标存储器单元集处于施加编程脉冲的状况中;并且当确定对目标存储器单元集的编程操作的状态时,将控制电压施加到一个或多个标志存储器单元以使一个或多个标志存储器单元处于以下状况中:施加编程脉冲中的至少一个以对一个或多个标志存储器单元进行编程,一个或多个标志存储器单元指示对目标存储器单元集的编程操作的状态。

在本公开技术的另一方面,提供一种半导体存储器装置,该半导体存储器装置包括:存储器单元阵列,包括多个存储器单元和一个或多个标志存储器单元,多个存储器单元存储数据,一个或多个标志存储器单元指示对多个存储器单元的编程操作的状态;以及控制器,与存储器单元阵列通信,并且控制器被配置成:确定对多个存储器单元的编程操作的状态是否存储在与多个存储器单元相关联的一个或多个标志存储器单元中;读取多个存储器单元以确定通过错误校正引擎是否成功读取了数据;并且基于关于对多个存储器单元的编程操作的状态是否存储在一个或多个标志存储器单元中的确定以及关于通过错误校正引擎是否成功读取了数据的确定,确定对多个存储器单元的编程操作是否已经被验证为完成以及是否将多个存储器单元指定为失败的存储器单元。

附图说明

现在在下文中将参照附图更全面地描述示例实施例;然而,示例实施例可以以不同的形式实现,并且不应该被解释为限于本文阐述的实施例。而是,这些实施例被提供使得本公开将彻底且完整,并且将向本领域技术人员充分传达示例实施例的范围。

在附图中,为了清楚说明,可能夸大尺寸。

图1是示出基于本公开技术的实施例的存储装置的示例的框图。

图2是示出图1中所示的半导体存储器装置的示例的框图。

图3是示出图2中所示的存储器单元阵列的示例的示图。

图4是示出图3中所示的存储块之中的示例存储块的电路图。

图5是示出图3中所示的存储块之中的另一示例存储块的电路图。

图6是示出图2中所示的存储器单元阵列中包括的多个存储块之中的示例存储块的电路图。

图7是示出基于本公开技术的实施例的包括标志存储器单元的物理页面的示图。

图8是示出基于本公开技术的实施例的半导体存储器装置的操作方法的示例的流程图。

图9是示出基于本公开技术的实施例的半导体存储器装置的操作方法的示例的流程图。

图10是示出在目标存储器单元已经被验证为正确编程(编程验证通过)的情况下,图9中示出的编程-验证方法的编程电压脉冲和编程验证电压脉冲的示图。

图11是示出在如图10所示编程-验证方法的编程电压脉冲和编程验证电压脉冲被施加到目标存储器单元并且目标存储器单元已经被验证为正确编程(编程验证通过)的情况下,对标志存储器单元的编程的示图。

图12是示出在目标存储器单元尚未被验证为正确编程(编程验证失败)的情况下,图9中示出的编程-验证方法的编程电压脉冲和编程验证电压脉冲的示图。

图13a是示出基于本公开技术的实施例的控制器的示例的框图。

图13b是示出基于本公开技术的实施例的控制器的操作方法的示例的流程图。

图14是示出基于本公开技术的另一实施例的半导体存储器装置的操作方法的示例的流程图。

图15是示出在目标存储器单元尚未被验证为正确编程(编程验证失败)的情况下,图14中示出的编程-验证方法的编程电压脉冲和编程验证电压脉冲的示图。

图16是示出在目标存储器单元已经被验证为正确编程(编程验证通过)的情况下,图14中示出的编程-验证方法的编程电压脉冲和编程验证电压脉冲的示图。

图17是示出基于本公开技术的另一实施例的半导体存储器装置的操作方法的示例的流程图。

图18是示出在执行编程循环直到阈值循环次数的情况下,图17中示出的编程-验证方法的编程电压脉冲和编程验证电压脉冲的示图。

图19是示出在目标存储器单元在阈值循环次数内已经被验证为正确编程的情况下,图17中示出的编程-验证方法的编程电压脉冲和编程验证电压脉冲的示图。

图20是示出基于本公开技术的实施例的控制器的操作方法的示例的流程图。

图21是示出在目标存储器单元尚未被验证为正确编程(编程验证失败)的情况下,基于本公开技术的另一实施例的用于施加虚设编程脉冲的示例方法的示图。

图22是示出基于本公开技术的另一实施例的不包括标志存储器单元的物理页面的示例的示图。

图23是示出基于图21和图22中示出的方法的示例方法的流程图。

图24是示出基于本公开技术的实施例的控制器的操作方法的示例的流程图。

图25是示出包括图2中所示的半导体存储器装置的存储装置的示例的框图。

图26是示出图25中所示的存储装置的应用示例的框图。

图27是示出包括参照图26描述的存储装置的计算系统的框图。

具体实施方式

在本申请文件中,当元件被称为在两个元件“之间”时,该元件可以是两个元件之间仅有的元件,或者也可以存在一个或多个中间元件。本申请文件中公开的技术可以在提供一种包括存储器单元阵列的存储装置的实施例中实施,该存储器单元阵列包括存储存储器单元阵列的编程状态的标志存储器单元。

图1是示出基于本公开技术的实施例的存储装置的示例的框图。

参照图1,存储装置1000包括半导体存储器装置100和控制器200。而且,存储装置1000联接到作为用户装置的主机host。

半导体存储器装置100是被配置成在控制器200的控制下操作的装置。半导体存储器装置100可以被设置为至少一个芯片中的集成电路,并且可以在控制器200的控制下执行特定操作。例如,半导体存储器装置100可以被设置为非易失性存储器装置或易失性存储器装置。半导体存储器装置100可以利用固态硬盘、固态驱动器(ssd)、pc卡(个人计算机存储卡国际协会(pcmcia))、紧凑型闪存卡(cfc)、智能媒体卡(smc)、记忆棒、多媒体卡(mmc、rs-mmc或微型mmc)、sd卡(sd、迷你sd、微型sd或sdhc)、通用闪存(ufs)等来配置。

半导体存储器装置100可以包括存储器单元阵列(未示出)和外围电路(未示出)。稍后将参照图2描述半导体存储器装置100中包括的存储器单元阵列和外围电路。同时,半导体存储器装置100包括状态存储装置101。

存储器单元阵列包括多个存储器单元。外围电路响应于来自控制器200的命令对存储器单元阵列110执行编程操作、读取操作、擦除操作等。在编程操作中,外围电路可以从控制器200接收数据,并且将接收到的数据存储在存储器单元阵列中的选择的存储器单元中。在读取操作中,外围电路可以读取存储在存储器单元阵列中的选择的存储器单元中的数据,并且将读取数据输出至控制器200。在擦除操作中,外围电路可以擦除存储在存储器单元阵列中的选择的存储器单元中的数据。虽然图1中未示出,但是半导体存储器装置100进一步包括控制逻辑,该控制逻辑被配置成控制外围电路对存储器单元阵列执行数据编程操作、数据读取操作和数据擦除操作。状态存储装置101从控制器200接收状态读取请求srr,并且响应于状态读取请求srr将状态读取数据srd传送至控制器200。更具体地,状态存储装置101可以存储表示半导体存储器装置100是对应于就绪状态还是对应于忙碌状态的状态读取数据srd。状态读取数据srd可以响应于从控制器200接收到的状态读取请求srr而被输出。

半导体存储器装置100对应于就绪状态可以表示半导体存储器装置100已经完成内部操作并且正在等待。例如,半导体存储器装置100对应于就绪状态可以表示半导体存储器装置100已经完成对应于命令的编程操作、读取操作或擦除操作。

半导体存储器装置100对应于忙碌状态可以表示半导体存储器装置100仍在执行内部操作。例如,半导体存储器装置100对应于忙碌状态可以表示半导体存储器装置100仍在执行对应于命令的编程操作、读取操作或擦除操作。

控制器200联接在主机host和半导体存储器装置100之间。控制器200可以响应于来自主机host的请求,将命令传送至半导体存储器装置100。半导体存储器装置100可以执行与接收到的命令对应的操作。主机host可以利用诸如下列的装置来配置:个人计算机或便携式计算机、个人数字助理(pda)、便携式媒体播放器(pmp)或mp3播放器。主机host和存储装置1000可以通过诸如usb、scsi、esdi、sata、sas、高速pci或ide接口的标准化接口彼此联接。

在实施例中,控制器200可以响应于来自主机host的请求,控制半导体存储器装置100执行编程操作、读取操作或擦除操作。在编程操作中,控制器200可以向半导体存储器装置100提供与编程操作对应的命令(在下文中称为编程命令)、地址和数据。半导体存储器装置100可以将数据编程在由地址指示的存储器单元中。在读取操作中,控制器200可以向半导体存储器装置100提供与读取操作对应的命令(在下文中称为读取命令)和地址。半导体存储器装置100可以从由地址指示的存储器单元读取数据,并且将读取数据输出至控制器200。在擦除操作中,控制器200可以向半导体存储器装置100提供与擦除操作对应的命令(在下文中称为擦除命令)和地址。半导体存储器装置100可以擦除存储在由地址指示的存储器单元中的数据。

控制器200将命令传送至半导体存储器装置100,然后检查与相应命令对应的操作的执行是否已经完成。而且,控制器200可以检查与相应命令对应的操作的执行是已经成功还是已经失败。为了检查与相应命令对应的操作的执行是已经成功还是已经失败,控制器200可以传送编程命令、读取命令或擦除命令,然后对半导体存储器装置100执行状态读取。当控制器200将状态读取请求srr传送至半导体存储器装置100时,半导体存储器装置100可以将状态读取数据srd提供至控制器200。半导体存储器装置100可以通过状态读取数据srd将对应于命令的操作是否已经完成、对应于命令的操作是否正在执行或对应于命令的操作是否已经失败传送至控制器200。更具体地,从控制器200接收到的状态读取请求srr被传送至半导体存储器装置100的状态存储装置101。半导体存储器装置100对应于状态读取请求srr,将存储在状态存储装置101中的状态读取数据srd传送至控制器200。

因此,控制器200可以根据存储在半导体存储器装置100的状态存储装置101中的状态读取数据srd来确定半导体存储器装置的操作是否已经成功。例如,当半导体存储器装置100执行编程操作时,在编程操作完成之后,表示编程操作是否已经成功的数据可以作为状态读取数据srd存储在状态存储装置101中。控制器200可以基于从半导体存储器装置100提供的状态读取数据srd来确定是否已经成功执行半导体存储器装置100的编程操作。在示例中,当半导体存储器装置100的编程操作失败时,半导体存储器装置100将表示编程失败的状态读取数据srd存储在状态存储装置101中。控制器200可以将状态读取请求srr传送至半导体存储器装置100。表示编程失败的状态读取数据srd响应于状态读取请求srr而被传送至控制器200。控制器200可以基于表示编程失败的状态读取数据srd来执行后续操作。例如,用于允许相应编程数据存储在半导体存储器装置100的另一区域中的编程命令可以被重新传送至半导体存储器装置100。半导体存储器装置100可以对相应编程数据重新执行编程操作。

然而,当对存储装置1000的电力供应在控制器200识别出半导体存储器装置100的编程操作已经失败之前被中断时,或者当对存储装置1000的电力供应在控制器200识别出半导体存储器装置100的编程操作已经失败之后执行后续操作之前被中断时,可能会出现问题。存储在半导体存储器装置100的状态存储装置101中的状态读取数据srd丢失。当在上述情况下向存储装置1000重新供应电力时,控制器200无法确定先前编程操作的状态-目标存储器单元集是已经被验证为正确编程(“编程通过”)还是尚未被验证为正确编程(“编程失败”)。在基于页面执行编程操作的实施例中,目标存储器单元集可以指示一个或多个页面。此处,“目标存储器单元”可以指示旨在通过当前编程操作被编程的存储器单元。

基于本公开技术的实施例而实施的半导体存储器装置100将表示目标存储器单元在编程操作中是否已经被验证为正确编程的数据存储在标志存储器单元中。因此,即使在存储器控制器由于电力突然中断而未能将先前编程操作的状态存储在其自身的存储器中的情况下,半导体存储器装置也可以确定目标存储器单元在先前编程操作中是否已经被验证为正确编程。

图2是示出图1中所示的半导体存储器装置的示例的框图。

参照图2,半导体存储器装置100可以包括存储器单元阵列110、外围电路120和控制逻辑130,该存储器单元阵列110被配置成存储数据,该外围电路120被配置成对存储器单元阵列110执行擦除操作、编程操作、读取操作等,该控制逻辑130被配置成控制外围电路120。基于本公开技术的实施例而实施的半导体存储器装置100可以进一步包括状态存储装置140。状态存储装置140存储作为状态读取数据srd的存储器单元阵列110的操作状态。图2中所示的状态存储装置140可以是与图1中所示的状态存储装置101相同的组件。状态读取数据srd可以通过输入/输出接口124被传送至控制器200。

存储器单元阵列110包括多个存储块(未示出),并且存储块包括多个单元串(未示出)。例如,单元串包括漏极选择晶体管、存储器单元和源极选择晶体管,并且联接到位线bl。漏极选择晶体管的栅极联接到漏极选择线dsl,存储器单元的栅极联接到字线wl,并且源极选择晶体管的栅极联接到源极选择线。

外围电路120包括电压生成器122、地址解码器121、读取/写入电路123和输入/输出接口124。电压生成器122在控制逻辑130的控制下生成各种操作所必需的操作电压。例如,电压生成器122可以生成在数据读取操作中需要的读取电压vread和通过电压vpass。而且,电压生成器122生成包括多个编程脉冲的编程电压、编程通过电压、验证电压、擦除电压等作为操作电压。

响应于从控制逻辑130接收到的地址,地址解码器121将操作电压传送至与存储器单元阵列110中包括的多个存储块之中的选择的存储块联接的漏极选择线dsl、字线wl和源极选择线ssl。

读取/写入电路123响应于列地址cadd与存储器单元阵列110交换数据。而且,读取/写入电路123包括分别与存储器单元阵列110的位线bl1至blm联接的多个页面缓冲器pb1至pbm。

输入/输出接口124从外部接收命令cmd、数据data和地址add。而且,输入/输出接口124接收状态读取请求srr。在状态检查操作中,输入/输出接口124从状态存储装置140接收状态读取数据srd,并且将状态读取数据srd输出至外部。

控制逻辑130可以响应于接收到的命令cmd和接收到的地址add来控制半导体存储器装置100的全部操作。同时,当从外部接收到状态读取请求srr时,控制逻辑130将状态读取控制信号src输出至状态存储装置140。状态存储装置140可以存储作为状态读取数据srd的存储器单元阵列110的操作状态。同时,状态存储装置140基于从控制逻辑130接收到的状态读取控制信号src,将状态读取数据srd输出至输入/输出接口124。

图3是示出图2中所示的存储器单元阵列的示例的示图。

参照图3,存储器单元阵列110可以包括多个存储块blk1至blkz。每个存储块可以具有三维结构。每个存储块可以包括堆叠在衬底(未示出)上的多个存储器单元。多个存储器单元可以沿+x方向、+y方向和+z方向布置。将参照图4至图6更详细地描述每个存储块的结构。

图4是示出图3中所示的存储块blk1至blkz之中的示例存储块blka的电路图。

参照图4,存储块blka可以包括多个单元串cs11至cs1m和cs21至cs2m。在实施例中,多个单元串cs11至cs1m和cs21至cs2m中的每一个可以形成为“u”形。在存储块blka中,m个单元串布置在行方向(即,+x方向)上。图4示出两个单元串布置在列方向(即,+y方向)上。然而,这是为了方便描述;并且将理解的是,可以在列方向上布置三个单元串。

多个单元串cs11至cs1m和cs21至cs2m中的每一个可以包括至少一个源极选择晶体管sst、第一至第n存储器单元mc1至mcn、管道晶体管pt和至少一个漏极选择晶体管dst。

选择晶体管sst和dst以及存储器单元mc1至mcn可以具有彼此相似的结构。在实施例中,选择晶体管sst和dst以及存储器单元mc1至mcn中的每一个可以包括沟道层、隧道绝缘层、电荷存储层和阻挡绝缘层。在实施例中,可以在每个单元串中设置用于提供沟道层的柱。在实施例中,可以在每个单元串中设置用于提供沟道层、隧道绝缘层、电荷存储层和阻挡绝缘层中的至少一个的柱。

每个单元串的源极选择晶体管sst联接在共源线csl和存储器单元mc1至mcp之间。

在实施例中,布置在相同行上的单元串的源极选择晶体管联接到在行方向上延伸的源极选择线,并且布置在不同行上的单元串的源极选择晶体管联接到不同的源极选择线。在图4中,第一行上的单元串cs11至cs1m的源极选择晶体管联接到第一源极选择线ssl1。第二行上的单元串cs21至cs2m的源极选择晶体管联接到第二源极选择线ssl2。

在另一实施例中,单元串cs11至cs1m和cs21至cs2m的源极选择晶体管可以共同联接到一个源极选择线。

每个单元串的第一至第n存储器单元mc1至mcn联接在源极选择晶体管sst和漏极选择晶体管dst之间。

第一至第n存储器单元mc1至mcn可以被划分成第一至第p存储器单元mc1至mcp以及第p+1至第n存储器单元mcp+1至mcn。第一至第p存储器单元mc1至mcp顺序布置在+z方向的相反方向上,并且串联地联接在源极选择晶体管sst和管道晶体管pt之间。第p+1至第n存储器单元mcp+1至mcn顺序布置在+z方向上,并且串联地联接在管道晶体管pt和漏极选择晶体管dst之间。第一至第p存储器单元mc1至mcp和第p+1至第n存储器单元mcp+1至mcn通过管道晶体管pt联接。每个单元串的第一至第n存储器单元mc1至mcn的栅极分别联接到第一至第n字线wl1至wln。

每个单元串的管道晶体管pt的栅极联接到管线pl。

每个单元串的漏极选择晶体管dst联接在相应位线和存储器单元mcp+1至mcn之间。布置在行方向上的单元串联接到在行方向上延伸的漏极选择线。第一行上的单元串cs11至cs1m的漏极选择晶体管联接到第一漏极选择线dsl1。第二行上的单元串cs21至cs2m的漏极选择晶体管联接到第二漏极选择线dsl2。

布置在列方向上的单元串联接到在列方向上延伸的位线。在图4中,第一列上的单元串cs11和cs21联接到第一位线bl1。第m列上的单元串cs1m和cs2m联接到第m位线blm。

布置在行方向上的单元串中的、联接到相同字线的存储器单元构成一个页面。例如,第一行上的单元串cs11至cs1m中的、联接到第一字线wl1的存储器单元构成一个页面。第二行上的单元串cs21至cs2m中的、联接到第一字线wl1的存储器单元构成另一页面。当漏级选择线dsl1和dsl2中的任意一个被选择时,布置在一个行方向上的单元串可以被选择。当字线wl1至wln中的任意一个被选择时,选择的单元串中的一个页面可以被选择。

在另一实施例中,可以设置偶数位线和奇数位线来代替第一至第m位线bl1至blm。另外,布置在行方向上的单元串cs11至cs1m或cs21至cs2m之中的偶数编号的单元串可以分别联接到偶数位线,并且布置在行方向上的单元串cs11至cs1m或cs21至cs2m之中的奇数编号的单元串可以分别联接到奇数位线。

在实施例中,第一至第n存储器单元mc1至mcn中的至少一个可以用作虚设存储器单元。例如,可以设置至少一个虚设存储器单元以减小源极选择晶体管sst和存储器单元mc1至mcp之间的电场。可选地,可以设置至少一个虚设存储器单元以减小漏极选择晶体管dst和存储器单元mcp+1至mcn之间的电场。当虚设存储器单元的数量增加时,存储块blka的操作的可靠性提高。另一方面,存储块blka的大小增加。当虚设存储器单元的数量减少时,存储块blka的大小减小。另一方面,存储块blka的操作的可靠性可能劣化。

为了有效地控制至少一个虚设存储器单元,虚设存储器单元可以具有所需的阈值电压。在对存储块blka的擦除操作之前或之后,可以对全部或一些虚设存储器单元执行编程操作。当在执行编程操作之后执行擦除操作时,控制施加到与各个虚设存储器单元联接的虚设字线的电压,使得虚设存储器单元可以具有所需的阈值电压。

图5是示出图3中所示的存储块blk1至blkz之中的另一示例存储块blkb的电路图。

参照图5,存储块blkb可以包括多个单元串cs11'至cs1m'和cs21'至cs2m'。多个单元串cs11'至cs1m'和cs21'至cs2m'中的每一个沿+z方向延伸。单元串cs11'至cs1m'和cs21'至cs2m'中的每一个包括堆叠在存储块blkb下面的衬底(未示出)上的至少一个源极选择晶体管sst、第一至第n存储器单元mc1至mcn以及至少一个漏极选择晶体管dst。

每个单元串的源极选择晶体管sst联接在共源线csl和存储器单元mc1至mcn之间。布置在相同行上的单元串的源极选择晶体管联接到相同的源极选择线。布置在第一行上的单元串cs11'至cs1m'的源极选择晶体管联接到第一源极选择线ssl1。布置在第二行上的单元串cs21'至cs2m'的源极选择晶体管联接到第二源极选择线ssl2。在另一实施例中,单元串cs11'至cs1m'和cs21'至cs2m'的源极选择晶体管可以共同联接到一个源极选择线。

每个单元串的第一至第n存储器单元mc1至mcn串联地联接在源极选择晶体管sst和漏极选择晶体管dst之间。第一至第n存储器单元mc1至mcn的栅极分别联接到第一至第n字线wl1至wln。

每个单元串的漏极选择晶体管dst联接在相应位线和存储器单元mc1至mcn之间。布置在行方向上的单元串的漏极选择晶体管联接到在行方向上延伸的漏极选择线。第一行上的单元串cs11'至cs1m'的漏极选择晶体管联接到第一漏极选择线dsl1。第二行上的单元串cs21'至cs2m'的漏极选择晶体管联接到第二漏极选择线dsl2。

因此,除了从图5中的每个单元串排除管道晶体管pt之外,图5的存储块blkb可以具有与图4的存储块blka的电路相似的电路。

在另一实施例中,可以设置偶数位线和奇数位线来代替第一至第m位线bl1至blm。另外,布置在行方向上的单元串cs11'至cs1m'或cs21'至cs2m'之中的偶数编号的单元串可以分别联接到偶数位线,并且布置在行方向上的单元串cs11'至cs1m'或cs21'至cs2m'之中的奇数编号的单元串可以分别联接到奇数位线。

在实施例中,第一至第n存储器单元mc1至mcn中的至少一个可以用作虚设存储器单元。例如,可以设置至少一个虚设存储器单元以减小源极选择晶体管sst和存储器单元mc1至mcn之间的电场。可选地,可以设置至少一个虚设存储器单元以减小漏极选择晶体管dst和存储器单元mc1至mcn之间的电场。当虚设存储器单元的数量增加时,存储块blkb的操作的可靠性提高。另一方面,存储块blkb的大小增加。当虚设存储器单元的数量减少时,存储块blkb的大小减小。另一方面,存储块blkb的操作的可靠性可能劣化。

为了有效地控制至少一个虚设存储器单元,虚设存储器单元可以具有所需的阈值电压。在对存储块blkb的擦除操作之前或之后,可以对全部或一些虚设存储器单元执行编程操作。当在执行编程操作之后执行擦除操作时,控制施加到与各个虚设存储器单元联接的虚设字线的电压,使得虚设存储器单元可以具有所需的阈值电压。

图6是示出图2中所示的存储器单元阵列100中包括的多个存储块blk1至blkz之中的示例存储块blkc的电路图。

参照图6,存储块blkc包括多个串cs1至csm。多个串cs1至csm可以分别联接到多个位线bl1至blm。多个串cs1至csm中的每一个包括至少一个源极选择晶体管sst、第一至第n存储器单元mc1至mcn以及至少一个漏极选择晶体管dst。

选择晶体管sst和dst以及存储器单元mc1至mcn中的每一个可以具有相似的结构。在实施例中,选择晶体管sst和dst以及存储器单元mc1至mcn中的每一个可以包括沟道层、隧道绝缘层、电荷存储层和阻挡绝缘层。在实施例中,可以在每个单元串中设置用于提供沟道层的柱。在实施例中,可以在每个单元串中设置用于提供沟道层、隧道绝缘层、电荷存储层和阻挡绝缘层中的至少一个的柱。

每个单元串的源极选择晶体管sst联接在共源线csl和存储器单元mc1至mcn之间。

每个单元串的第一至第n存储器单元mc1至mcn联接在源极选择晶体管sst和漏极选择晶体管dst之间。

每个单元串的漏极选择晶体管dst联接在相应位线和存储器单元mc1至mcn之间。

联接到相同字线的存储器单元构成一个页面。当漏极选择线dsl被选择时,单元串cs1至csm可以被选择。当字线wl1至wln中的任意一个被选择时,选择的单元串之中的一个页面可以被选择。

在另一实施例中,可以设置偶数位线和奇数位线来代替第一至第m位线bl1至blm。单元串cs1至csm之中的偶数编号的单元串可以分别联接到偶数位线,并且单元串cs1至csm之中的奇数编号的单元串可以分别联接到奇数位线。

图7是示出基于本公开技术的实施例的包括标志存储器单元的物理页面的示图。

参照图7,示出了存储块中包括的物理页面300。物理页面可以是联接到相同字线的存储器单元集,以成为读取操作或编程操作的单位。基于本公开技术的实施例的物理页面300可以包括普通存储器单元组301和标志存储器单元310。普通存储器单元组301可以包括多个普通存储器单元302。普通数据可以存储在普通存储器单元组301中。表示对物理页面300的普通存储器单元组301的编程操作是否已经正常完成的数据可以存储在标志存储器单元310中。

图7示出了物理页面300包括一个标志存储器单元310的实施例。然而,在一些实施例中,物理页面300可以包括两个或更多个标志存储器单元。

图8是示出基于本公开技术的实施例的半导体存储器装置的操作方法的示例的流程图。

参照图8,基于本公开技术的实施例的半导体存储器装置的操作方法包括:步骤s110,执行与从控制器接收到的编程命令对应的编程操作;以及步骤s130,基于目标存储器单元是否已经被验证为正确编程,对标志存储器单元执行编程操作。

在步骤s110中,可以执行将数据编程在待被编程的选择的物理页面300的普通存储器单元组301中包括的存储器单元中的操作。编程操作可以包括:编程电压施加操作,将编程电压施加到与选择的页面联接的选择的字线;以及验证操作,确定与选择的字线联接的存储器单元的阈值电压是否已经达到目标电平。编程电压施加操作和验证操作可以构成一个循环,并且在编程操作期间可以重复多个循环。可以使用增量步进脉冲编程(ispp)方案来执行步骤s110的编程操作,在该ispp方案中,每当执行循环时逐渐增加编程电压。

在步骤s130中,可以基于在步骤s110中执行的编程操作是否已经通过来执行对选择的物理页面300的标志存储器单元310的编程操作。表示目标存储器单元在相应编程操作中是否已经被验证为正确编程(“编程通过”)的数据可以存储在标志存储器单元310中。

在实施例中,当编程操作的状态是“编程通过”时,可以对标志存储器单元310进行编程以表示物理页面300的普通存储器单元组301中的目标存储器单元已经被验证为正确编程。在存储装置1000在突然断电(spo)之后被通电的情况下,可以通过参考标志存储器单元310的编程状态来确定目标存储器单元在spo之前的编程操作中是否已经被验证为正确编程。也就是说,当存储装置1000在spo之后被导通时,控制器200读取存储在物理页面300的标志存储器单元310中的数据位。在实施例中,当存储在标志存储器单元310中的数据位为1时,可以确定在spo之前对物理页面300的普通存储器单元组301中包括的目标存储器单元的编程操作未正常完成。当存储在标志存储器单元310中的数据位为0时,可以确定在发生spo之前对物理页面300的普通存储器单元组301中包括的目标存储器单元的编程操作正常完成。稍后将参照图9至图13b描述上述实施例。

在另一实施例中,当编程操作最终失败时,可以对标志存储器单元310进行编程以表示对物理页面300的普通存储器单元组301中包括的目标存储器单元的编程操作已经失败。在存储装置1000在突然断电(spo)之后被通电的情况下,可以根据标志存储器单元310的编程状态来确定spo之前的编程操作是否已经失败。也就是说,当存储装置1000在spo之后被导通时,控制器200读取存储在物理页面300的标志存储器单元310中的位。当存储在标志存储器单元310中的数据位为1时,可以确定在spo之前对物理页面300的普通存储器单元组301中包括的目标存储器单元的编程操作正在执行或目标存储器单元被正确编程。当存储在标志存储器单元310中的数据位为0时,可以确定在发生spo之前对物理页面300的普通存储器单元组301中包括的目标存储器单元的编程操作被验证为失败。稍后将参照图14至图17描述上述实施例。

图9是示出基于本公开技术的实施例的半导体存储器装置的操作方法的示例的流程图。

参照图9,执行根据基于本公开技术的实施例而实施的半导体存储器装置的操作方法的编程操作。首先,将编程脉冲施加到选择的物理页面300的普通存储器单元组301中包括的普通存储器单元302(s210)。因此,施加了编程脉冲的存储器单元的阈值电压增加。在步骤s210中,不对标志存储器单元310进行编程。更具体地,在步骤s210中,将编程禁止电压施加到与标志存储器单元310联接的位线。因此,虽然编程脉冲被施加到与标志存储器单元310和普通存储器单元302共同联接的字线,但是标志存储器单元310的阈值电压不增加。

随后,对普通存储器单元执行编程验证操作(s220)。随后,在步骤s230中,确定目标存储器单元是否已经被验证为正确编程(“编程通过”)。当不存在“编程通过”标志时,确定当前编程循环次数是否小于阈值(例如,最大)循环次数(s260)。根据使用增量步进脉冲编程(ispp)方案的编程-验证方法,重复编程步骤和编程验证步骤预定迭代次数(“最大循环次数”),或者在预定迭代次数(“最大循环次数”)内重复编程步骤和编程验证步骤直到所有目标存储器单元已经被验证为正确编程。例如,当最多执行三十(30)个编程/验证循环时,最大编程循环为第三十个编程循环,并且阈值循环次数可以为30。在当前编程循环次数小于阈值循环次数时,编程脉冲的幅值增加步进电压以使尚未被正确编程的存储器单元的阈值电压增加(s270),并且通过进行至步骤s210来执行后续编程循环。

步骤s210、s220、s230、s260和s270可以构成使用上述ispp方案的编程循环。在预定阈值循环次数内重复步骤s210、s220、s230、s260和s270,即编程循环,从而对选择的物理页面300中的普通存储器单元执行编程操作。

当作为步骤s260的确定结果,编程循环次数达到阈值循环次数时,将表示“编程失败”的数据存储在状态存储装置101或140中(s280),并且结束编程操作。因此,最终编程操作失败。

在实施例中,标志存储器单元联接到与目标存储器单元联接的字线。当作为步骤s230的确定结果,目标存储器单元302在编程/验证中已经被验证为正确编程时,对物理页面300中的标志存储器单元310进行编程(s240)。也就是说,在步骤s240中,将编程脉冲施加到与物理页面300的目标存储器单元302和标志存储器单元310联接的字线,同时通过将编程允许电压施加到与标志存储器单元310联接的位线,将标志存储器单元310置于施加这种编程脉冲的状况中,并且通过将编程禁止电压施加到与普通存储器单元(目标存储器单元)302联接的位线,将目标存储器单元302置于编程禁止的状况中。因此,普通存储器单元(目标存储器单元)302局部升压,普通存储器单元302的阈值电压不变,而标志存储器单元310的阈值电压从擦除状态变为编程状态。在步骤s240中,可以向标志存储器单元310施加编程脉冲至少一次。

随后,在步骤s250中,将表示“编程通过”的数据存储在状态存储装置101或140中。在不发生spo的通常情况下,控制器200将状态读取请求srr传送至半导体存储器装置100。随后,可以基于从半导体存储器装置100接收到的状态读取数据srd,确定目标存储器单元在编程操作中是否已经被验证为正确编程。

当发生spo时,控制器200可以生成针对执行刚刚的前一个编程操作的物理页面300的读取命令,并且将读取命令传送至半导体存储器装置100。控制器200通过从半导体存储器装置100接收对应于读取命令的读取数据来检查存储在标志存储器单元310中的数据。当存储在标志存储器单元310中的数据位为1时,可以确定尚未执行图9中所示的步骤s240。因此,控制器200可以确定目标存储器单元在刚刚的前一个编程操作中尚未被验证为正确编程。当存储在标志存储器单元310中的数据位为0时,可以确定已经执行图9中所示的步骤s240。因此,控制器200可以确定目标存储器单元在刚刚的前一个编程操作中已经被验证为正确编程。

稍后将参照图13b描述当发生spo时通过检查存储在标志存储器单元310中的数据位来确定目标存储器单元在刚刚的前一个编程操作中是否已经被验证为正确编程的方法。

图10是示出在目标存储器单元已经被验证为正确编程(编程验证通过)的情况下,图9中示出的编程-验证方法的编程电压脉冲和编程验证电压脉冲的示图。

参照图10,执行将第一编程脉冲vpgm1施加到选择的物理页面300的普通存储器单元302的步骤s210。随后,通过施加验证电压对普通存储器单元302执行编程验证操作(s220)。随后,在步骤s230中,确定目标存储器单元尚未被验证为正确编程,并且在步骤s260中,确定仅已经执行了第一编程循环。在这种情况下,第一编程循环完成,并且将ispp的编程脉冲增加步进电压。随后,通过将第二编程脉冲vpgm2施加到选择的物理页面300的普通存储器单元302来开始第二编程循环。以这种方式,重复执行第一至第i编程循环。如上所述,标志存储器单元310在第一至第i编程循环期间未被编程,并且保持在擦除状态。

图10示出在施加第i编程脉冲vpgmi之后,作为验证操作的结果,目标存储器单元已经被验证为正确编程的情况。因此,作为步骤s230的确定结果,通过进行至步骤s240来对标志存储器单元310进行编程。如上所述,在步骤s240中,通过施加编程脉冲,不对普通存储器单元302进行编程,而标志存储器单元310的阈值电压增加。图10示出在目标存储器单元已经通过编程验证之后立即使用与第i编程循环对应的第i编程脉冲vpgmi对标志存储器单元310进行编程的示例实施例。在本公开技术的实施例中,用于标志存储器单元编程的编程脉冲可以是根据ispp方案幅值递增的一系列编程脉冲中的一个。在本公开技术的另一实施例中,附加编程脉冲可以用于对标志存储器单元进行编程。在步骤s240中施加到标志存储器单元310的编程脉冲的幅值不限于如图10所示的第i编程脉冲vpgmi。在本公开技术的实施例中,施加到标志存储器单元310的编程脉冲的幅值可以低于第i编程脉冲vpgmi,或者在本公开技术的另一实施例中,施加到标志存储器单元310的编程脉冲的幅值可以高于第i编程脉冲vpgmi。

在图10中,示出在“编程验证通过”之后将单个脉冲(第i编程脉冲vpgmi)施加到标志存储器单元310。然而,在本公开技术的另一实施例中,可以施加两个或更多个编程脉冲以对标志存储器单元310进行编程。

图11是示出在如图10所示编程-验证方法的编程电压脉冲和编程验证电压脉冲被施加到目标存储器单元并且目标存储器单元已经被验证为正确编程(编程验证通过)的情况下,对标志存储器单元的编程的示图。

图11示出分别对应于擦除状态e和第一至第三编程状态p1至p3的存储器单元的阈值电压分布。作为示例,假定选择的物理页面300中包括的存储器单元302和310被实施为每单元存储两个数据位的多层单元(mlc)。第一至第三读取电压r1至r3可以用于将四个不同的阈值电压分布(擦除状态e和第一至第三编程状态p1至p3)彼此区分开,并且这些读取电压用作编程验证步骤中的读取电压。

当将图10中所示的第i编程脉冲vpgmi施加到标志存储器单元时,标志存储器单元的阈值电压增加到编程状态p1至p3中的一个。在图11中,标志存储器单元由“fc”表示。当验证对选择的物理页面300的普通存储器单元302的编程已经正确完成时,将第i编程脉冲vpgmi施加到标志存储器单元fc以使标志存储器单元fc的阈值电压从擦除状态e变成编程状态p1至p3中的一个。

图12是示出在目标存储器单元尚未被验证为正确编程(编程验证失败)的情况下,图9中示出的编程-验证方法的编程电压脉冲和编程验证电压脉冲的示图。

参照图12,执行将第一编程脉冲vpgm1施加到选择的物理页面300的普通存储器单元302的步骤s210。随后,通过施加验证电压对普通存储器单元302执行编程验证操作(s220)。随后,在步骤s230中,确定目标存储器单元尚未被验证为正确编程,并且在步骤s260中,确定仅已经执行了第一编程循环。在这种情况下,第一编程循环完成,并且将ispp的编程脉冲增加步进电压。随后,将第二编程脉冲vpgm2施加到选择的物理页面300的普通存储器单元302,开始第二编程循环。以这种方式,重复执行编程循环。

在图12中,最大编程脉冲vpgm_max是在使用增量步进脉冲编程(ispp)方案的编程-验证方法的编程循环中,在预定迭代次数的最后一次迭代中施加到普通存储器单元302的编程脉冲。当根据编程-验证方法,直到编程循环次数达到阈值(例如,最大)循环次数,目标存储器单元也未能通过编程验证时,确定编程操作已经失败。因此,通过进行至步骤s280,将表示“编程失败”的数据存储在状态存储装置101或140中,并且结束编程操作。不执行步骤s240。因此,与图10不同,在图12中未向标志存储器单元施加编程脉冲。

一起参照图10至图12,第一读取电压r1可以用于检测标志存储器单元fc的数据位。也就是说,当使用作为读取参考电压的第一读取电压r1确定与图11不同,标志存储器单元fc是“导通”单元(例如,擦除状态e)时,可以看出尚未执行图9中所示的步骤s240。因此,可以看出直到发生spo之前的最终编程操作,目标存储器单元也未被验证为正确编程。

当使用作为读取参考电压的第一读取电压r1确定如图11所示,标志存储器单元fc是“截止”单元(例如,第一编程状态p1)时,可以看出已经执行图9中所示的步骤s240。因此,可以看出目标存储器单元在发生spo之前的最终编程操作中已经被验证为正确编程。

图13a是示出基于本公开技术的实施例的控制器的示例的框图。

参照图13a,基于本公开技术的实施例而实施的控制器200包括spo传感器210、编程通过确定器230和命令生成器250。spo传感器210感测是否已经发生半导体存储器装置100、控制器200的突然断电(spo)或包括这种存储器装置和控制器的存储装置1000的spo。当存储装置1000被导通时,控制器200的spo传感器210感测在存储装置1000的导通之前存储装置1000的最后关断是正常关断还是突然关断,并且将感测结果作为spo感测信号sds输出。

编程通过确定器230可以在存储装置1000的正常操作期间基于存储在半导体存储器装置100的状态存储装置101中的状态读取数据srd来确定编程操作的状态是“编程通过”还是“编程失败”。也就是说,在存储装置1000的正常操作期间,编程通过确定器230生成用于获得状态读取数据srd的控制信号ctrl,并且将控制信号ctrl传送至命令生成器250。命令生成器250将状态读取请求srr传送至半导体存储器装置100。半导体存储器装置100响应于状态读取请求srr将状态读取数据srd传送至控制器200。控制器200的编程通过确定器230可以基于接收到的状态读取数据srd来确定目标存储器单元是否已经被验证为正确编程或者目标存储器单元是否已经被验证为编程失败。

当存储装置1000被导通时,编程通过确定器230可以确定紧接在存储装置1000的关断之前执行的编程操作的状态-例如,目标存储器单元是否已经被验证为正确编程。编程操作的状态可以根据是否已经发生spo而改变。

例如,当在存储装置1000导通之前不存在spo事件时,半导体存储器装置100一定在关闭装置之前已经完成编程操作。因此,由于存储器控制器已经知道编程操作的状态,所以不需要编程通过确定器230基于状态读取数据srd来确定编程操作的状态。

在实施例中,当存储装置1000导通之前的最后事件是spo事件时,可以基于存储在半导体存储器装置100的标志存储器单元中的数据来确定目标存储器单元是已经被验证为正确编程还是已经被验证为编程失败。

为了执行上述进程,编程通过确定器230首先通过从spo传感器210接收spo感测信号来确定紧接在存储装置1000的导通之前的关断是正常关断还是由spo引起的关断。

当紧接在存储装置1000的导通之前的关断是正常关断时,编程通过确定器230可以确定关断之前的编程操作的状态是“编程通过”。

当紧接在存储装置1000的导通之前的关断是由spo引起的关断时,编程通过确定器230生成控制信号ctrl,并且将控制信号ctrl输出至命令生成器250以读取标志存储器单元的数据。命令生成器250响应于控制信号ctrl生成用于读取标志存储器单元的数据的读取命令rcmd,并且将读取命令rcmd传送至半导体存储器装置100。

半导体存储器装置100响应于读取命令rcmd执行读取操作,并且将通过读取操作获得的读取数据rdata传送至控制器200。读取数据rdata包括存储在标志存储器单元中的数据。

编程通过确定器230基于读取数据rdata之中的、存储在标志存储器单元中的数据来确定spo之前的编程操作的状态是“编程通过”还是“编程失败”。将参照图13b和图20更详细地描述控制器200的这种操作方法。

在本公开技术的另一实施例中,当紧接在存储装置1000的导通之前的关断是由spo引起的关断时,可以基于是否可以对从在spo之前被执行最终编程操作的物理页面读出的数据进行错误校正来确定关断之前的编程操作的状态是“编程通过”还是“编程失败”。

为了执行上述进程,编程通过确定器230首先通过从spo传感器210接收spo感测信号来确定紧接在存储装置1000的导通之前的关断是正常关断还是由spo引起的关断。

当紧接在存储装置1000的导通之前的关断是正常关断时,编程通过确定器230可以确定关断之前的编程操作的状态是“编程通过”。

当紧接在存储装置1000的导通之前的关断是由spo引起的关断时,编程通过确定器230生成控制信号ctrl,并且将控制信号ctrl输出至命令生成器250以读取在spo之前被执行最终编程操作的物理页面的数据。命令生成器250响应于控制信号ctrl生成用于读取在spo之前被执行最终编程操作的物理页面的数据的读取命令rcmd,并且将读取命令rcmd传送至半导体存储器装置100。

半导体存储器装置100响应于读取命令rcmd执行读取操作,并且将通过读取操作获得的读取数据rdata传送至控制器200。读取数据rdata是被最后编程的物理页面的数据。

编程通过确定器230确定通过读取操作获得的读取数据rdata是否有错误,并且如果读取数据rdata有错误,则编程通过确定器230确定是否可以通过对读取数据rdata执行错误校正操作来校正错误。当可以通过错误校正操作来校正错误时,读取数据rdata的状态可以由“ecc通过”来表示。相反,当由于错误的量超过错误校正操作的错误校正能力而无法通过错误校正操作来校正错误时,读取数据rdata的状态可以由“ecc失败”来表示。编程通过确定器230基于读取数据rdata的状态是“ecc通过”还是“ecc失败”来确定spo之前的编程操作的状态是“编程通过”还是“编程失败”。为此,编程通过确定器230可以包括错误校正块。将参照图24更详细地描述控制器200的这种操作方法。

图13b是示出基于本公开技术的实施例的控制器的操作方法的示例的流程图。特别地,图13b示出在存储装置1000导通之后控制器的操作方法。

参照图13b,当存储装置1000导通时,控制器200的spo传感器210检查在存储装置1000的导通之前是否已经发生由spo引起的关断(s310)。随后,在步骤s320中,编程通过确定器230确定紧接在存储装置1000的导通之前的关断是否由spo引起。

当存储装置1000的关断不是由spo引起而是正常关断并且关断之前的最终编程操作正常完成时,编程通过确定器230可以确定关断之前的最终编程操作的状态为“编程通过”(s380)。这是因为在存储装置1000被正常关断之前完成了编程操作。

当存储装置的关断由spo引起时,将针对在spo之前被执行最终编程操作的物理页面300的读取命令传送至半导体存储器装置100(s330)。为此,编程通过确定器230生成用于读取包括标志存储器单元的物理页面的数据的控制信号ctrl,并且将该控制信号ctrl传送至命令生成器250。命令生成器250基于控制信号ctrl生成用于读取包括标志存储器单元的物理页面的数据的读取命令rcmd,并且将读取命令rcmd传送至半导体存储器装置100。接收到读取命令的半导体存储器装置100读取存储在物理页面300的存储器单元中的数据,并且将读取数据传送至控制器200。控制器200从半导体存储器装置100接收读取数据(s340)。

控制器200的编程通过确定器230检查接收到的读取数据之中的、与标志存储器单元310对应的数据(s350)。随后,编程通过确定器230确定标志存储器单元是否处于擦除状态e(s360)。参照图11以及图13b,标志存储器单元可以处于擦除状态e或第一编程状态p1。

作为步骤s360的确定结果,当标志存储器单元处于擦除状态e时,编程通过确定器230确定spo之前的最终编程操作已经失败(s370)。作为步骤s360的确定结果,当标志存储器单元不处于擦除状态e时,编程通过确定器230确定关断之前的最终编程操作的状态为“编程通过”(s380)。

当确定spo之前的最终编程操作已经失败时,控制器200可以执行与确定结果对应的后续操作。例如,命令生成器250可以生成用于重新执行已经失败的编程操作的编程命令,并且将编程命令传送至半导体存储器装置100。此外,可以执行与编程失败对应的各种操作。

图14是示出基于本公开技术的另一实施例的半导体存储器装置的操作方法的示例的流程图。

参照图14,执行根据基于本公开技术的另一实施例而实施的半导体存储器装置的操作方法的编程操作。首先,将编程脉冲施加到选择的物理页面300的普通存储器单元组301中包括的普通存储器单元302(s410)。随后,对普通存储器单元执行编程验证操作(s420)。随后,在步骤s430中,确定目标存储器单元在编程验证中是否已经被验证为正确编程。当目标存储器单元未能通过编程验证时,确定当前编程循环次数是否小于阈值(例如,最大)循环次数(s450)。在当前编程循环次数小于阈值循环次数时,增加编程脉冲值的幅值以增加尚未完成编程的存储器单元的阈值电压(s460),并且通过进行至步骤s410来执行后续编程循环。

步骤s410、s420、s430、s450和s460可以构成使用上述ispp方案的编程循环。图14中所示的步骤s410、s420、s430、s450和s460可以与图9中所示的步骤s210、s220、s230、s260和s270基本相同。

当作为步骤s450的确定结果,编程循环次数达到阈值循环次数时,对物理页面300中的标志存储器单元310进行编程(s470),并且将表示“编程失败”的数据存储在状态存储装置101或140中(s480)。随后,编程操作结束。因此,最终编程操作失败。

在不发生spo的通常情况下,控制器200将状态读取请求srr传送至半导体存储器装置100。随后,可以基于从半导体存储器装置100接收的状态读取数据srd,确定目标存储器单元在编程操作中是否已经被验证为正确编程。

当发生spo时,控制器200可以生成针对执行刚刚的前一个编程操作的物理页面300的读取命令,并且将读取命令传送至半导体存储器装置100。控制器200通过从半导体存储器装置100接收对应于读取命令的读取数据来检查存储在标志存储器单元310中的数据。当存储在标志存储器单元310中的数据位为1时,可以确定尚未执行图14中所示的步骤s470。因此,控制器200可以确定目标存储器单元在刚刚的前一个编程操作中已经被验证为正确编程。当存储在标志存储器单元310中的数据位为0时,可以确定已经执行图14中所示的步骤s470。因此,控制器200可以确定刚刚的前一个编程操作失败。

稍后将参照图17描述当发生spo时通过检查存储在标志存储器单元310中的数据位来确定目标存储器单元在刚刚的前一个编程操作中是否已经被验证为正确编程的方法。

当在步骤s430中确定目标存储器单元在编程验证中已经被验证为正确编程时,将表示“编程通过”的数据存储在状态存储装置101或140中(s440),并且结束编程操作。

一起参照图9和图14,可以看出,在根据图9的实施例中,当目标存储器单元在编程验证中已经被验证为正确编程时对标志存储器单元进行编程(s240),但是在根据图14的实施例中,当编程验证失败时对标志存储器单元进行编程(s470)。

图15是示出在目标存储器单元尚未被验证为正确编程(编程验证失败)的情况下,图14中示出的编程-验证方法的编程电压脉冲和编程验证电压脉冲的示图。

参照图15,执行将第一编程脉冲vpgm1施加到选择的物理页面300的普通存储器单元302的步骤s410。随后,通过施加验证电压对普通存储器单元302执行编程验证操作(s420)。随后,在步骤s430中,确定目标存储器单元尚未被验证为正确编程,并且在步骤s450中,确定仅已经执行了第一编程循环。在这种情况下,第一编程循环完成,并且将ispp的编程脉冲增加步进电压。随后,通过将第二编程脉冲vpgm2施加到选择的物理页面300的普通存储器单元302来开始第二编程循环。以这种方式,重复执行编程循环。

在图15中,最大编程脉冲vpgm_max是在使用增量步进脉冲编程(ispp)方案的编程-验证方法的编程循环中,在预定迭代次数的最后一次迭代中施加到普通存储器单元302的编程脉冲。当根据编程-验证方法,直到编程循环次数达到阈值(例如,最大)循环次数,目标存储器单元也未能通过编程验证时,确定编程操作已经失败。因此,通过进行至步骤s470对标志存储器单元进行编程。在步骤s470中,不对普通存储器单元302进行编程,并且增加标志存储器单元310的阈值电压。图15示出使用与最大编程循环对应的最大编程脉冲vpgm_max对标志存储器单元310进行编程的示例。然而,根据基于本公开技术的实施例而实施的半导体存储器装置的操作方法,在步骤s470中施加到标志存储器单元310的编程脉冲的幅值不限于如图15所示的最大编程脉冲vpgm_max。在本公开技术的实施例中,施加到标志存储器单元310的编程脉冲的幅值可以低于最大编程脉冲vpgm_max,或者在本公开技术的另一实施例中,施加到标志存储器单元310的编程脉冲的幅值可以高于最大编程脉冲vpgm_max。

图15示出在编程验证失败之后,将最大编程脉冲vpgm_max施加到标志存储器单元310一次。然而,在本公开技术的另一实施例中,可以将两个或更多个编程脉冲施加到标志存储器单元310。

图16是示出在目标存储器单元已经被验证为正确编程(编程验证通过)的情况下,图14中示出的编程-验证方法的编程电压脉冲和编程验证电压脉冲的示图。

参照图16,执行将第一编程脉冲vpgm1施加到选择的物理页面300的普通存储器单元302的步骤s410。随后,通过施加验证电压对普通存储器单元302执行编程验证操作(s420)。随后,在步骤s430中,确定目标存储器单元尚未被验证为正确编程,并且在步骤s450中,确定仅已经执行了第一编程循环。在这种情况下,第一编程循环完成,并且将ispp的编程脉冲增加步进电压。随后,通过将第二编程脉冲vpgm2施加到选择的物理页面300的普通存储器单元302来开始第二编程循环。以这种方式,重复执行编程循环。

图16示出在施加第i编程脉冲vpgmi之后,作为验证操作的结果,目标存储器单元已经被验证为正确编程的情况。因此,通过进行至步骤s440,将表示“编程通过”的数据存储在状态存储装置101或140中,并且结束编程操作。不执行步骤s470。因此,与图15不同,在图16中,未向标志存储器单元施加编程脉冲。

图17是示出基于本公开技术的另一实施例的半导体存储器装置的操作方法的示例的流程图。图17中所示的步骤s410、s420、s430、s440、s450、s460和s480可以与图14中所示的步骤s410、s420、s430、s440、s450、s460和s480基本相同。与图14不同,在图17所示的实施例中,不执行步骤s470,并且可以执行步骤s405和s415来代替步骤s470。

参照图17,执行根据基于本公开技术的另一实施例而实施的半导体存储器装置的操作方法的编程操作。首先,确定当前编程循环次数是否已经达到阈值(例如,最大)循环次数(s405)。

在当前编程循环次数达到阈值循环次数时,可以确定当前正在执行的编程循环是最后编程循环。因此,将编程脉冲施加到选择的物理页面的普通存储器单元和标志存储器单元(s415)。

在当前编程循环次数未达到阈值循环次数的情况下,将编程脉冲施加到选择的物理页面300的普通存储器单元组301中包括的普通存储器单元302(s410)。

随后,对普通存储器单元执行编程验证操作(s420)。随后,在步骤s430中,确定目标存储器单元是否已经被验证为正确编程。当目标存储器单元尚未被验证为正确编程时,确定当前编程循环次数是否小于阈值循环次数(s450)。在当前编程循环次数小于阈值循环次数时,增加编程脉冲的幅值以增加尚未完成编程的存储器单元的阈值电压(s460),并且通过进行至步骤s405来执行后续编程循环。步骤s405、s410、s415、s420、s430、s450和s460可以构成使用上述ispp方案的编程循环。

当作为步骤s450的确定结果,编程循环次数达到阈值循环次数时,将表示“编程失败”的数据存储在状态存储装置101或140中(s480)。随后,编程操作结束。因此,最终编程操作失败。

在不发生spo的通常情况下,控制器200将状态读取请求srr传送至半导体存储器装置100。随后,可以基于从半导体存储器装置100接收到的状态读取数据srd,确定目标存储器单元在编程操作中是否已经被验证为正确编程。

当发生spo时,控制器200可以生成针对执行刚刚的前一个编程操作的物理页面300的读取命令,并且将读取命令传送至半导体存储器装置100。控制器200通过从半导体存储器装置100接收对应于读取命令的读取数据来检查存储在标志存储器单元310中的数据。当存储在标志存储器单元310中的数据位为1时,控制器200可以确定目标存储器单元在刚刚的前一个编程操作中已经被验证为正确编程。当存储在标志存储器单元310中的数据位为0时,控制器200可以确定刚刚的前一个编程操作失败。

稍后将参照图20描述当发生spo时通过检查存储在标志存储器单元310中的数据位来确定目标存储器单元在刚刚的前一个编程操作中是否已经被验证为正确编程的方法。

当作为步骤s430的确定结果,目标存储器单元已经被验证为正确编程时,将表示“编程通过”的数据存储在状态存储装置101或140中(s440),并且结束编程操作。

一起参照图14和图17,可以看出,在根据图14的实施例中,当目标存储器单元在编程验证中尚未被验证为正确编程时对标志存储器单元进行编程(s470),而在根据图17的实施例中,当编程循环次数达到阈值循环次数时,将编程脉冲施加到标志存储器单元和普通存储器单元(s415)。

图18是示出在执行编程循环直到阈值循环次数的情况下,图17中示出的编程-验证方法的编程电压脉冲和编程验证电压脉冲的示图。在图18中,为了便于描述,示出阈值循环次数为30的情况作为示例。

参照图18,在第一编程循环中,确定编程循环次数是否等于阈值循环次数(s405)。由于阈值循环次数为30,因此执行将第一编程脉冲vpgm1施加到选择的物理页面300的普通存储器单元302的步骤s410。随后,通过施加验证电压对普通存储器单元302执行编程验证操作(s420)。随后,在步骤s430中,确定目标存储器单元尚未被验证为正确编程,并且在步骤s450中,确定仅已经执行了第一编程循环。因此,第一编程循环完成并且增加编程脉冲的幅值。随后,在第二编程循环中将编程循环次数和阈值循环次数进行比较(s405)。由于编程循环次数未达到阈值循环次数,因此将第二编程脉冲vpgm2施加到选择的物理页面300的普通存储器单元302,并且第二编程循环开始。以这种方式,重复执行编程循环。重复编程循环直到将第二十九编程脉冲vpgm29施加到普通存储器单元302的第二十九编程循环。

在图18中,当即使执行编程循环直到第二十九编程循环,目标存储器单元仍尚未被验证为正确编程时,开始第三十编程循环,从而执行步骤s405。由于当前编程循环达到作为阈值循环次数的30,因此执行将最大编程脉冲vpgm_max施加到选择的物理页面300的正常存储器单元302和标志存储器单元的步骤s415。因此,除了对普通存储器单元进行编程之外,还对标志存储器单元进行编程。也就是说,在步骤s415中,普通存储器单元和标志存储器单元的阈值电压都增加。

如上所述,可以通过使用一个或多个ispp编程脉冲或通过使用ispp编程脉冲之外的附加编程脉冲来对标志存储器单元进行编程。在本公开技术的实施例中,如图15所示,当甚至利用最大次数(阈值循环次数)的编程循环的编程脉冲,编程验证也失败时,附加施加用于对标志存储器单元进行编程的另一编程脉冲。在本公开技术的另一实施例中,如图18所示,当编程循环次数达到阈值循环次数时,在相应编程循环期间,将编程脉冲(例如,与最大循环次数对应的最后编程脉冲)施加到普通存储器单元和标志存储器单元两者。

在图18中,当执行最后编程循环时,使用相应编程脉冲来对标志存储器单元进行编程,而不管目标存储器单元是否已经被验证为正确编程。在对标志存储器单元进行编程以表示目标存储器单元未能被验证为正确编程的实施例中,因为图18中所示的示例不需要施加附加编程脉冲来对标志存储器单元进行编程,所以图18中所示的示例可以节省对标志存储器单元进行编程所需的时间。

然而,在施加最后编程脉冲以对标志存储器单元进行编程之后目标存储器单元最终通过编程验证并且然后发生spo的情况下,这些正确编程的目标存储器单元可能被误认为是失败的存储器单元。在这种情况下,当在利用最后编程脉冲对目标存储器单元进行最后编程之后但在存储器控制器将“编程通过”的状态存储在永久性存储器区域(例如,状态存储装置)中之前发生spo时,标志存储器单元具有错误的状态信息,其中最后编程脉冲也被施加到标志存储器单元以表示“编程失败”的状态。随后,当在spo事件之后重新通电时,控制器无法参考状态存储装置的数据,并且将基于标志存储器单元来确定在spo事件之前目标存储器单元是否被正确编程。因此,控制器将误认正确编程的存储器单元为失败的存储器单元。

然而,上述情况是非常罕见的情况。仅当紧接着在阈值循环次数内利用最后编程脉冲对目标存储器单元进行编程之后发生spo时,才会发生上述情况。在许多情况下,当目标存储器单元在阈值循环次数内被验证为正确编程时,只要在此短时段期间不发生spo,就将目标存储器单元的状态告知控制器,并且控制器将目标存储器单元的状态存储在永久性存储器区域中。此外,因为控制器将由于存储在标志存储器单元中的“编程失败”状态而执行重新编程,因此即使发生这种罕见情况,也不会损害数据可靠性。

图19是示出在目标存储器单元在阈值循环次数内已经被验证为正确编程的情况下,图17中示出的编程-验证方法的编程电压脉冲和编程验证电压脉冲的示图。

参照图19,在第一编程循环中,确定编程循环次数是否等于阈值循环次数(s405)。由于阈值循环次数为30,因此执行将第一编程脉冲vpgm1施加到选择的物理页面300的普通存储器单元302的步骤s410。随后,通过施加验证电压来对普通存储器单元302执行编程验证操作(s420)。随后,在步骤s430中,目标存储器单元在编程验证中未能被验证为正确编程,并且在步骤s450中,确定编程循环次数是否已经超过阈值(例如,最大)循环次数。此时,仅已经执行了第一编程循环,因此第一编程循环完成,并且编程脉冲的幅值增加步进电压。随后,在第二编程循环中将编程循环次数和阈值循环次数进行比较(s405)。由于编程循环次数未达到阈值循环次数,因此将第二编程脉冲vpgm2施加到选择的物理页面300的普通存储器单元302以执行第二编程循环。以这种方式,重复执行编程循环。

图19示出在施加第i编程脉冲vpgmi之后,作为验证操作的结果,目标存储器单元已经被验证为正确编程的情况。此处,i是小于30的值。在这种情况下,在执行编程循环直到阈值循环次数之前的编程循环中,目标存储器单元被验证为正确编程。因此,通过进行至步骤s440,将表示“编程通过”的数据存储在状态存储装置101或140中,并且结束编程操作。

图20是示出基于本公开技术的实施例的控制器的操作方法的示例的流程图。特别地,图20中所示的流程图示出在存储装置1000被导通之后控制器的操作方法。在下文中,将一起参照图13a来描述图20中所示的操作方法。

参照图20,当存储装置1000被导通时,控制器200的spo传感器210检查在存储装置1000的导通之前是否发生了由spo引起的关断(s510)。随后,在步骤s520中,编程通过确定器230确定紧接在存储装置1000的导通之前的关断是否由spo引起。

当存储装置1000的关断不是由spo引起而是正常关断时,编程通过确定器230可以确定在没有中断的情况下完成了关断之前的最终编程操作(s580)。这是因为在存储装置1000被正常关断之前完成了编程操作。

当存储装置的关断由spo引起时,将针对在spo之前被执行最终编程操作的物理页面300的读取命令传送至半导体存储器装置100(s530)。为此,编程通过确定器230生成用于读取包括标志存储器单元的物理页面的数据的控制信号ctrl,并且将控制信号ctrl传送至命令生成器250。命令生成器250基于控制信号ctrl而生成用于读取包括标志存储器单元的物理页面的数据的读取命令rcmd,并且将读取命令rcmd传送至半导体存储器装置100。接收到读取命令的半导体存储器装置100读取存储在物理页面300的存储器单元中的数据,并且将读取数据传送至控制器200。控制器200从半导体存储器装置100接收读取数据(s540)。

控制器200的编程通过确定器230检查接收到的读取数据之中的、与标志存储器单元310对应的数据(s550)。随后,编程通过确定器230确定标志存储器单元是否处于擦除状态e(s560)。

作为步骤s560的确定结果,当标志存储器单元处于擦除状态e时,编程通过确定器230确定关断之前的最终编程操作已经通过(s580)。作为步骤s560的确定结果,当标志存储器单元不处于擦除状态e时,编程通过确定器230确定spo之前的最终编程操作的状态为“编程失败”(s570)。

当确定spo之前的最终编程操作已经失败时,控制器200可以执行与确定结果对应的后续操作。例如,命令生成器250可以生成用于重新执行已经失败的编程操作的编程命令,并且将编程命令传送至半导体存储器装置100。此外,可以执行与编程失败对应的各种操作。

图21是示出在目标存储器单元尚未被验证为正确编程(编程验证失败)的情况下,基于本公开技术的另一实施例的用于施加虚设编程脉冲的示例方法的示图。图22是示出基于本公开技术的另一实施例的不包括标记存储器单元的物理页面的示例的示图。在下文中,将参照图21和图22描述本公开技术的又一实施例。

图21示出执行第一至最大编程循环的情况。在这种情况下,最大编程脉冲vpgm_max是在编程循环次数达到阈值循环次数的编程循环中施加的编程脉冲。在最大编程循环中,将与最大编程循环对应的最大编程脉冲vpgm_max施加到图22中所示的选择的物理页面400的所有存储器单元402。参照图22,物理页面400仅包括普通存储器单元402,并且不包括任何单独的标志存储器单元。

当即使重复执行编程循环,但直到编程循环次数达到阈值循环次数,目标存储器单元也未能被验证为正确编程时,确定编程操作已经失败。因此,将编程脉冲vpgm_max施加到物理页面400的所有存储器单元402。在发生spo之后,控制器200读取选择的物理页面400的数据,并且基于读取操作的读取数据的状态是“ecc通过”还是“ecc失败”来确定目标存储器单元在spo之前的最终编程操作中是否被正确编程。

图23是示出基于图21和图22中示出的方法的示例方法的流程图。

参照图23,执行根据基于本公开技术的另一实施例而实施的半导体存储器装置的操作方法的编程操作。首先,将编程脉冲施加到选择的物理页面400的存储器单元402(s610)。随后,对存储器单元执行编程验证操作(s620)。随后,在步骤s630中,确定目标存储器单元在编程验证中是否已经被验证为正确编程。当编程验证失败时,确定当前编程循环次数是否小于阈值循环次数(s650)。在当前编程循环次数小于阈值循环次数时,增加编程脉冲值的幅值以增加尚未完成编程的存储器单元的阈值电压(s660),并且通过进行至步骤s610来执行后续编程循环。

当作为步骤s650的确定结果,编程循环次数达到阈值循环次数时,将虚设编程脉冲施加到存储器单元402,以对选择的物理页面400中的所有存储器单元进行编程(s670)。步骤s670的虚设编程脉冲可以是图18中所示的最大编程脉冲vpgm_max。随后,将表示“编程失败”的数据存储在状态存储装置101或140中(s680)。随后,编程操作结束。因此,最终编程操作失败。

虽然在步骤s630中确定编程验证失败,但是在先前编程循环中存储在存储器单元402中的数据是能通过诸如ecc的操作被恢复的数据,当执行步骤s670时,存储在存储器单元中的数据被破坏并且不会通过ecc恢复。因此,在发生spo之后,控制器200可以通过具有ecc的读取操作,明确地确定先前编程操作失败。

在不发生spo的通常情况下,控制器200将状态读取请求srr传送至半导体存储器装置100。随后,可以基于从半导体存储器装置100接收到的状态读取数据srd,确定目标存储器单元是否已经被验证为正确编程。

当发生spo时,控制器200可以生成针对执行刚刚的前一个编程操作的物理页面400的读取命令,并且将读取命令传送至半导体存储器装置100。控制器200通过从半导体存储器装置100接收对应于读取命令的读取数据来确定读取操作是否已经通过。

当读取操作成功(没有错误或错误可以通过ecc校正)时,可以确定spo之前的编程操作的状态为“编程通过”。当读取操作失败(错误超过ecc能力)时,由于执行了步骤s670,因此可以确定spo之前的编程操作失败。

当在步骤s630中确定目标存储器单元已经被验证为正确编程(“编程通过”)时,将表示“编程通过”的数据存储在状态存储装置101或140中(s640),并且结束编程操作。

图24是示出基于本公开技术的实施例的控制器的操作方法的示例的流程图。特别地,图24中所示的流程图示出在存储装置1000被导通之后控制器的操作方法。在下文中,将一起参照图13a来描述图24中所示的操作方法。

参照图24,当存储装置1000被导通时,控制器200的spo传感器210检查在存储装置1000的导通之前是否已经发生由spo引起的关断(s710)。随后,在步骤s720中,编程通过确定器230确定紧接在存储装置1000的导通之前的关断是否由spo引起。

当存储装置1000的关断不是由spo引起而是正常关断时,编程通过确定器230可以确定在没有任何意外中断的情况下完成了关断之前的最终编程操作(s780)。这是因为在存储装置1000被正常关断之前完成了编程操作。

当存储装置的关断由spo引起时,将针对在spo之前被执行最终编程操作的物理页面400的读取命令传送至半导体存储器装置100(s730)。为此,编程通过确定器230生成用于读取被最后编程的物理页面的数据的控制信号ctrl,并且将控制信号ctrl传送至命令生成器250。命令生成器250基于控制信号ctrl生成用于读取物理页面400的数据的读取命令rcmd,并且将读取命令rcmd传送至半导体存储器装置100。接收到读取命令的半导体存储器装置100读取存储在物理页面400的存储器单元中的数据,并且将读取数据传送至控制器200。控制器200从半导体存储器装置100接收读取数据(s740)。

控制器200的编程通过确定器230确定通过读取操作获得的读取数据是否有错误,并且如果读取数据有错误,则控制器200的编程通过确定器230确定是否可以通过对接收到的读取数据执行错误校正操作来校正错误(s750)。当可以通过错误校正操作来校正错误时,读取数据rdata的状态可以由“ecc通过”来表示。相反,当由于错误的量超过错误校正操作的错误校正能力而无法通过错误校正操作来校正错误时,读取数据的状态可以由“ecc失败”来表示。在“ecc通过”的情况下,可以看出,尚未执行根据图23中所示的步骤s670施加虚设编程脉冲的操作。因此,编程通过确定器230确定目标存储器单元在spo之前的最终编程操作中被验证为正确编程(s770)。在“ecc失败”的情况下,可以看出,已经执行根据图23中所示的步骤s670施加虚设编程脉冲的操作。因此,编程通过确定器230确定spo之前的最终编程操作已经失败(s760)。

当确定spo之前的最终编程操作已经失败时,控制器200可以执行与确定结果对应的后续操作。例如,命令生成器250可以生成用于重新执行已经失败的编程操作的编程命令,并且将编程命令传送至半导体存储器装置100。此外,可以执行与编程失败对应的各种操作。

图25是示出包括图2中所示的半导体存储器装置的存储装置1000的示例的框图。

参照图25,存储装置1000包括半导体存储器装置1300和控制器1200。

半导体存储器装置1300可以与参照图2描述的半导体存储器装置100相同地配置和操作。在下文中,将省略重复的描述。

控制器1200联接到主机host和半导体存储器装置1300。控制器1200被配置成响应于来自主机host的请求来访问半导体存储器装置1300。例如,控制器1200被配置成控制半导体存储器装置1300的读取操作、编程操作、擦除操作和后台操作。控制器1200被配置成提供半导体存储器装置1300和主机host之间的接口。控制器1200被配置成驱动用于控制半导体存储器装置1300的固件。

控制器1200包括随机存取存储器(ram)1210、处理单元1220、主机接口(i/f)1230、存储器接口(i/f)1240和错误校正块1250。

ram1210用作处理单元1220的工作存储器、半导体存储器装置1300和主机host之间的高速缓存存储器、以及半导体存储器装置1300和主机host之间的缓冲存储器中的至少一个。

处理单元1220控制控制器1200的全部操作。处理单元1220控制半导体存储器装置1300的读取操作、编程操作、擦除操作和后台操作。处理单元1220驱动用于控制半导体存储器装置1300的固件。处理单元1220可以执行闪存转换层(ftl)的功能。处理单元1220可以通过ftl将由主机host提供的逻辑块地址(lba)转换为物理块地址(pba)。ftl可以接收待使用映射表被转换为pba的lba。根据映射单位存在ftl的若干种地址映射方法。代表性地址映射方法包括页面映射方法、块映射方法以及混合映射方法。

图13a中所示的spo传感器210、编程通过确定器230和命令生成器250可以以由处理单元1220驱动的软件或固件的形式实施。

主机i/f1230包括用于在主机host和控制器1200之间交换数据的协议。在示例性实施例中,控制器1200被配置成通过诸如下列的各种接口协议中的至少一种与主机host通信:通用串行总线(usb)协议、多媒体卡(mmc)协议、外围组件互连(pci)协议、高速pci(pci-e)协议、高级技术附件(ata)协议、串行ata协议、并行ata协议、小型计算机小型接口(scsi)协议、增强型小型磁盘接口(esdi)协议、电子集成驱动器(ide)协议和私有协议。

存储器i/f1240与半导体存储器装置1300接口连接。例如,存储器i/f1240可以包括nand接口或nor接口。

错误校正块1250被配置成通过使用错误校正码(ecc)来检测并校正从半导体存储器装置1300接收到的数据的错误。错误校正块1250可以使用ecc校正读取的页面数据的错误。错误校正块1250可以使用包括下列的编码调制来校正错误:低密度奇偶校验(ldpc)码、博斯-查德胡里-霍昆格姆(bch)码、turbo码、里德-所罗门码、卷积码、递归系统码(rsc)、网格编码调制(tcm)、分组编码调制(bcm)、汉明码等。

在读取操作中,错误校正块1250可以校正读取的页面数据的错误。当数量超过错误可校正位数量的错误位被包括在读取的页面数据中时,解码会失败。当数量等于或小于错误可校正位数量的错误位被包括在读取的页面数据中时,解码会成功。解码成功表示相应读取命令已经通过。解码失败表示相应读取命令已经失败。当解码成功时,控制器1200将错误已经被校正的页面数据输出至主机host。

控制器1200和半导体存储器装置1300可以被集成到一个半导体装置中。在示例性实施例中,控制器1200和半导体存储器装置1300可以被集成到一个半导体装置中以构成存储卡。例如,控制器1200和半导体存储器装置1300可以被集成到一个半导体装置中,以构成诸如下列的存储卡:pc卡(个人计算机存储卡国际协会(pcmcia))、紧凑型闪存(cf)卡、智能媒体卡(sm或smc)、记忆棒、多媒体卡(mmc、rs-mmc或微型mmc)、sd卡(sd、迷你sd、微型sd或sdhc)或通用闪存(ufs)等。

控制器1200和半导体存储器装置1300可以被集成到一个半导体装置中以构成半导体驱动器(固态驱动器(ssd))。半导体驱动器ssd包括被配置成将数据存储在半导体存储器中的存储装置。如果将存储装置1000用作半导体驱动器ssd,则可以显著提高联接到存储装置1000的主机host的操作速度。

作为另一示例,存储装置1000可以被设置为诸如下列的电子装置的各组件中的一个:计算机、超移动pc(umpc)、工作站、上网本、个人数字助理(pda)、便携式计算机、网络平板、无线电话、移动电话、智能电话、电子阅读器、便携式多媒体播放器(pmp)、便携式游戏机、导航系统、黑盒、数码相机、三维电视、数字音频记录器、数字音频播放器、数字图片记录器、数字图片播放器、数字视频记录器、数字视频播放器、能够在无线环境下传送/接收信息的装置、构成家庭网络的各种电子装置中的一种、构成计算机网络的各种电子装置中的一种、构成远程信息处理网络的各种电子装置中的一种、rfid装置或构成计算系统的各种组件中的一种。

在示例性实施例中,半导体存储器装置1300或存储装置1000可以以各种形式来封装。例如,半导体存储器装置1300或存储装置1000可以以诸如下列的方式来封装:层叠封装(pop)、球栅阵列封装(bga)、芯片级封装(csp)、塑料引线芯片载体封装(plcc)、塑料双列直插式封装(pdip)、窝伏尔组件管芯(dieinwafflepack)、晶圆形式管芯、板上芯片(cob)、陶瓷双列直插式封装(cerdip)、塑料公制四方扁平封装(mqfp)、薄型四方扁平封装(tqfp)、小外形集成电路封装(soic)、收缩小外形封装(ssop)、薄型小外形封装(tsop)、系统级封装(sip)、多芯片封装(mcp)、晶圆级制造封装(wfp)或晶圆级处理堆叠封装(wsp)。

图26是示出图25中所示的存储装置的应用示例2000的框图。

参照图26,存储装置2000包括半导体存储器装置2100和控制器2200。半导体存储器装置2100包括多个半导体存储器芯片。多个半导体存储器芯片被划分成多个组。

图26示出多个组通过第一至第k通道ch1至chk与控制器2200通信。每个半导体存储器芯片可以与参照图25描述的半导体存储器装置1300相同地配置和操作。

每个组被配置成通过一个公共通道与控制器2200通信。控制器2200与参照图25描述的控制器1200相同地配置。控制器2200被配置成通过多个通道ch1至chk来控制半导体存储器装置2100的多个半导体存储器芯片。

在图26中,描述了多个半导体存储器芯片联接到一个通道的情况。然而,将理解的是,可以修改存储装置2000使得一个半导体存储器芯片联接到一个通道。

图27是示出包括参照图26描述的存储装置的计算系统的框图。

参照图27,计算系统3000包括中央处理单元3100、ram3200、用户接口3300、电源3400、系统总线3500和存储装置2000。

存储装置2000通过系统总线3500电联接到中央处理单元3100、ram3200、用户接口3300和电源3400。将通过用户接口3300供应的数据或由中央处理单元3100处理的数据存储在存储装置2000中。

图27示出半导体存储器装置2100通过控制器2200联接到系统总线3500。然而,半导体存储器装置2100可以直接联接到系统总线3500。可以由中央处理单元3100和ram3200来执行控制器2200的功能。

图27示出设置参照图26描述的存储装置2000。然而,存储装置2000可以被参照图25描述的存储装置1000代替。在实施例中,计算系统3000可以被配置成包括参照图25描述的存储装置1000和参照图26描述的存储装置2000两者。

在对目标存储器单元执行编程操作时,严格的阈值电压控制通常通过使用利用增量步进脉冲编程(ispp)方案的编程-验证方法来实现。在ispp方案中,将幅值递增的一系列编程脉冲施加到选择的存储器单元,以将存储器单元的阈值电压逐渐升高到目标阈值电压电平以上。根据编程-验证方法,(以步进电压为基础递增的)这种编程脉冲被施加到选择的存储器单元,并且在每两个连续编程脉冲之间,施加验证读取电压以验证选择的存储器单元的阈值电压是否被升高到目标阈值电压分布以上(即,选择的存储器单元是否被正确编程)。重复这些编程步骤和编程验证步骤预定迭代次数,或者在预定迭代次数内,重复这些编程步骤和编程验证步骤,直到所有目标存储器单元都已经被验证为正确编程。

在由于在将选择的存储器单元的状态(例如,选择的存储器单元是否被正确编程使得其处于目标阈值电压分布中)告知存储器控制器(例如,主机侧控制器、存储器存储控制器、闪存转换层等)之前发生诸如电力突然中断(例如,spo)的意外事件而无法确定选择的存储器单元的状态的情况下,如果错误校正引擎能够校正从选择的存储器单元读出的数据中的错误,则无论选择的存储器单元的状态如何,选择的存储器单元都可能被视为正确编程的存储器单元。例如,如果从存储器单元读出的数据通过错误校正引擎可校正,则应该被视为未正确编程的存储器单元可能被误认为是正确编程的存储器单元。与已经被验证为正确编程的其它存储器单元相比,这些存储器单元可以具有相对较短的数据保持时间。然而,控制器没有意识到这些“未被验证的”存储器单元。

在本公开技术的一些实施例中,存储器单元阵列可以包括一个或多个标志存储器单元以存储选择的存储器单元的状态-选择的存储器单元的编程验证进程是否已经中断,导致选择的存储器单元处于这种“未被验证的”状态,并且控制器可以参考标志存储器单元以检查选择的存储器单元的状态。可以通过使用施加到常规存储器单元的一个或多个ispp编程脉冲或通过使用ispp编程脉冲之外的附加编程脉冲来对标志存储器单元进行编程。

在本公开技术的实施例中,半导体存储器装置包括存储器单元阵列和控制器。存储器单元阵列包括多个存储器单元和一个或多个标志存储器单元,并且每个标志存储器单元经由字线联接到存储器单元组。控制器与存储器单元阵列通信,并且控制器被配置成:从与多个存储器单元联接的字线中选择与用于编程的目标存储器单元联接的字线;将幅值递增的一系列编程脉冲和编程验证脉冲施加到选择的字线,编程脉冲升高目标存储器单元的阈值电压,编程验证脉冲验证目标存储器单元的阈值电压是否已经升高到目标阈值电压电平以上;施加控制电压以使目标存储器单元处于施加编程脉冲和施加编程验证脉冲以逐渐升高目标存储器单元的阈值电压同时执行目标存储器单元的阈值电压是否已经升高到目标阈值电压电平以上的编程验证的状况中;并且当确定编程验证的状态时,施加控制电压以使一个或多个标志存储器单元处于以下状况中:施加编程脉冲以对该一个或多个标志存储器单元进行编程以表示编程验证的状态。

作为示例,确定编程验证的状态包括:验证目标存储器单元的阈值电压已经升高到目标阈值电压电平以上。作为另一示例,控制器进一步被配置成在电力突然中断之后的读取操作期间,将从目标存储器单元读出的数据视为错误数据。作为另一示例,控制器进一步被配置成在电力突然中断之后的读取操作期间,当通过错误校正引擎成功读取数据时,将从目标存储器单元读出的数据复制到其它存储器单元。作为另一示例,确定编程验证的状态包括:验证目标存储器单元的阈值电压未能达到目标阈值电压电平。此处,控制器进一步被配置成在电力突然中断之后的读取操作期间,当确定一个或多个标志存储器单元被编程时,将从目标存储器单元读出的数据视为错误数据。控制器还被配置成当确定一个或多个标志存储器单元被编程时,将目标存储器单元视为失败的存储器单元。

在实施例中,使用一系列编程脉冲中的至少一个对一个或多个标志存储器单元进行编程。在另一实施例中,除了施加一系列编程脉冲之外,还使用一个或多个编程脉冲对一个或多个标志存储器单元进行编程。

在本公开技术的实施例中,半导体存储器装置包括存储器单元阵列和控制器。存储器单元阵列包括:多个存储器单元,存储数据;以及一个或多个标志存储器单元,指示对多个存储器单元的编程操作的状态。控制器与存储器单元阵列通信,并且控制器被配置成:确定与多个存储器单元相关联的一个或多个标志存储器单元是否被编程;读取多个存储器单元以确定通过错误校正引擎是否成功读取了数据;并且基于关于一个或多个标志存储器单元是否被编程的确定以及关于通过错误校正引擎是否成功读取了数据的确定,确定多个存储器单元是否已经被正确编程以及是否将多个存储器单元视为失败的存储器单元。

本公开技术的一些实施例可以基于标志存储器单元是否被编程以及通过错误校正引擎是否可以校正从目标存储器单元读出的数据的错误,确定是否将存储在目标存储器单元中的数据视为错误数据和/或是否将目标存储器单元视为失败的存储器单元。

在实施例中,当确定多个存储器单元已经被验证为正确编程并且通过错误校正引擎成功读取了数据时,控制器可以将从多个存储器单元读出的数据视为有效数据。

在另一实施例中,当确定多个存储器单元尚未被验证为正确编程并且通过错误校正引擎成功读取了数据时,控制器可以将从多个存储器单元读出的数据视为错误数据。

在另一实施例中,当确定多个存储器单元尚未被验证为正确编程并且通过错误校正引擎成功读取了数据时,控制器可以将多个存储器单元视为失败的存储器单元。

在另一实施例中,当确定多个存储器单元已经被验证为正确编程并且通过错误校正引擎未成功读取数据时,控制器可以将从多个存储器单元读出的数据视为错误数据。

在另一实施例中,当确定多个存储器单元尚未被验证为正确编程并且通过错误校正引擎未成功读取数据时,控制器可以将从多个存储器单元读出的数据视为错误数据。

在另一实施例中,当确定多个存储器单元尚未被验证为正确编程并且通过错误校正引擎未成功读取数据时,控制器可以将多个存储器单元视为失败的存储器单元。

在本公开技术的一些实施例中,被编程的标志存储器单元包括:第一标志存储器单元,指示多个存储器单元已经被验证为正确编程;以及第二标志存储器单元,指示多个存储器单元尚未被验证为正确编程。

在实施例中,当确定第一标志存储器单元和第二标志存储器单元两者都被编程时,将多个存储器单元视为失败的存储器单元。

在另一实施例中,当确定第一标志存储器单元和第二标志存储器单元两者都未被编程并且通过错误校正引擎未成功读取数据时,将从多个存储器单元读出的数据视为错误数据。

在另一实施例中,当确定第一标志存储器单元和第二标志存储器单元两者都未被编程并且通过错误校正引擎成功读取了数据时,将从多个存储器单元读出的数据复制到其它存储器单元。

在本公开技术的一些实施例中,当半导体存储器装置在电力突然中断之后被通电时,可以执行如上所述的由控制器执行的方法。

在本公开技术的一些实施例中,可以提供具有提高的可靠性的半导体存储器装置、控制器及两者的操作方法。

虽然已经参照本公开技术的某些示例性实施例示出并描述了本公开技术,但是本领域技术人员将理解的是,在不脱离由所附权利要求及其等同方案限定的本公开技术的精神和范围的情况下,可以在形式和细节上进行各种改变。因此,本公开技术的范围不应限于上述示例性实施例,而是应不仅由所附权利要求而且还由其等同方案确定。

在上述实施例中,可以选择性地执行全部步骤或者可以省略部分步骤。在每个实施例中,步骤不一定根据所描述的顺序执行,并且可以重新排列。本说明书和附图中公开的实施例仅是为了便于理解本公开技术的示例,并且本公开技术不限于此。也就是说,对于本领域技术人员应显而易见的是,可以基于本公开技术的技术范围进行各种修改。

同时,已经在附图和说明书中描述了本公开技术的示例性实施例。虽然本文使用了特定术语,但这些术语仅用于解释本公开技术的实施例。因此,本公开技术不限于上述实施例,并且在本公开技术的精神和范围内可以进行许多变化。对于本领域技术人员应显而易见的是,除了基于本文公开的实施例之外,还可以基于本公开技术的技术范围进行各种修改。

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