存储器装置和存储器编程的方法

文档序号:1906598 发布日期:2021-11-30 浏览:16次 >En<

阅读说明:本技术 存储器装置和存储器编程的方法 (Memory device and method of memory programming ) 是由 阿密特·伯曼 于 2021-05-14 设计创作,主要内容包括:提供了一种存储器装置和存储器编程的方法,所述存储器编程的方法包括:接收包括第一多个数据位的第一写入数据单元;通过至少一个脉冲将第一多个数据位编程到第一多个存储器单元;确定通过所述至少一个脉冲成功编程的单元的数量是否小于阈值;和如果通过所述至少一个脉冲成功编程的单元的数量小于阈值,则对未成功编程的数据位的第一向量进行压缩,接收第二写入数据单元,基于第二写入数据单元对第一向量进行联结,并且将联结的向量编程到第二多个存储器单元。(A memory device and a method of memory programming are provided, the method of memory programming including: receiving a first write data unit comprising a first plurality of data bits; programming a first plurality of data bits to a first plurality of memory cells by at least one pulse; determining whether a number of cells successfully programmed by the at least one pulse is less than a threshold; and if the number of cells successfully programmed by the at least one pulse is less than the threshold, compressing a first vector of unsuccessfully programmed data bits, receiving a second write data unit, concatenating the first vector based on the second write data unit, and programming the concatenated vector to a second plurality of memory cells.)

存储器装置和存储器编程的方法

本申请要求于2020年5月22日在美国专利商标局提交的第16/882,031号美国专利申请的优先权,所述美国专利申请的公开通过引用全部包含于此。

技术领域

本公开的实施例涉及存储器装置,更具体地,涉及存储器装置中的利用适应性慢单元数据压缩的写入操作。

背景技术

增加的数据生产率(data production rate)已经刺激了向高性能存储器系统的转变。大型分析应用可使用高速缓存层和大量的并行性以便满足指定的延迟需求,但不是没有增加的硬件成本。小型移动技术应用利用低面积组件,低面积组件可限制来自高速缓存、并行性、多个坐标指令和/或分层存储器结构的可实现增益,并且可因此受益于单裸片加速改进。因此,使闪存裸片、芯片、封装或装置内的写入速度加速可以是有益的。

发明内容

提供了一种用于存储器编程的示例性实施例方法,所述方法包括:接收包括多个数据位的第一写入数据单元;通过至少一个脉冲将所述多个数据位编程到多个存储器单元;确定通过所述至少一个脉冲成功编程的单元的数量是否小于阈值;和如果通过所述至少一个脉冲成功编程的单元的数量小于阈值,则接收另一写入数据单元,对第一写入数据单元的未成功编程的数据位的稀疏向量与所述另一写入数据单元和所述另一写入数据单元的未成功编程的数据位的另一稀疏向量中的至少一个进行压缩并联结,并且将联结的向量编程到第二多个存储器单元。

提供了一种示例性实施例存储器装置,所述存储器装置包括:存储器单元阵列;数据电路,被配置为接收包括第一多个数据位的第一写入数据单元;行解码器,连接到存储器单元阵列,并且被配置为选择连接到存储器单元阵列的第一多个存储器单元的第一字线;页缓冲器,连接到数据电路和存储器单元阵列,并且被配置为通过至少一个脉冲将第一多个数据位编程到第一多个存储器单元;计数器,被配置为确定通过所述至少一个脉冲成功编程的单元的数量是否小于阈值;慢单元数据压缩器,连接到计数器,并且被配置为:如果通过所述至少一个脉冲成功编程的单元的数量小于阈值,则对未成功编程的数据位的第一稀疏向量进行压缩;和控制电路,连接到慢单元数据压缩器和页缓冲器,并且被配置为:如果通过所述至少一个脉冲成功编程的单元的数量小于阈值,则基于第二写入数据单元来对第一稀疏向量进行联结,并且将联结的向量写入存储器单元阵列的连接到与第一字线不同的第二字线的第二多个存储器单元。

提供了一种示例性实施例程序存储装置,所述程序存储装置包括以下程序步骤:接收包括多个数据位的第一写入数据单元;选择连接到多个存储器单元的第一地址线;通过至少一个脉冲将所述多个数据位编程到所述多个存储器单元;确定通过所述至少一个脉冲成功编程的单元的数量是否小于阈值;和如果通过所述至少一个脉冲成功编程的单元的数量小于阈值,则对未成功编程的数据位的稀疏向量进行压缩,接收另一写入数据单元,基于所述另一写入数据单元对向量进行联结,选择连接到另外的多个存储器单元的第二地址线,并且将联结的向量编程到所述另外的多个存储器单元,其中,第一地址线和第二地址线被设置在三维存储器的不同层级上。

附图说明

当结合附图考虑下面的示例性实施例的描述时,本发明构思的方面可变得更加清楚和更好理解,其中:

图1是根据本公开的示例性实施例的存储器装置的示意性框图;

图2是根据本公开的示例性实施例的用于将数据写入图1的存储器装置的方法的示意性流程图;

图3是根据本公开的示例性实施例的用于利用控制器支配将数据写入存储器装置的方法的示意性流程图;

图4是根据本公开的示例性实施例的用于利用存储器支配将数据写入存储器装置的方法的示意性流程图;

图5是根据本公开的示例性实施例的将非适应性编程操作与图2的方法进行比较的混合部分示意图;

图6是根据本公开的示例性实施例的图2的示例性方法中的写入速度加速的图形化示图;

图7是根据本公开的示例性实施例的图2的方法中的比较的写入速度加速的图形化示图;以及

图8是根据本公开的示例性实施例的图2的方法中的比较的写入速度加速的表格图。

具体实施方式

I.引言

本部分被组织为包括子部分I、子部分II、子部分III、子部分IV、子部分V、子部分VI以及子部分VII的多个子部分,子部分I介绍发明构思的示例性实施例,子部分II呈现使用的符号,子部分III更详细地介绍持续写入加速方案,子部分IV鉴于给定的一般存储器单元行为和脉冲写入带宽的产品规格分析算法的优化参数设置,子部分V呈现利用各种算法参数和编程统计的持续写入速度的增益分析,子部分VI详细说明实现细节和开销,子部分VII提供对其潜在应用的评论。

本公开提供了一种用于通过存储器装置中的低带宽区域的适应性数据压缩来持续写入编程吞吐量的方法和设备。优选实施例可使用适应性慢单元数据压缩来加速存储器写入操作。示例性实施例可针对NAND闪存装置,但是发明构思不限于此。

NAND闪存中的写入操作包括多个字线脉冲和用于数据验证的至少一个随后的读取。存储在每个脉冲中的数据量既不是预先已知,也没有被相等地分布。通常,针对可变地顽固单元(obstinate cell)或慢单元(slow cell),早期脉冲具有低编程带宽,该低编程带宽增大并达到最大点然后随着之后的脉冲指数地减小。

如图1中所示,示例性NAND闪存装置总体由参考标号100指示。NAND闪存100包括:存储器单元阵列110、连接到存储器单元阵列的行解码器120、连接到存储器单元阵列的页缓冲器电路130、连接到页缓冲器电路的数据输入/输出(I/O)电路140、连接到存储器单元阵列的电压生成器150、连接到行解码器、页缓冲器电路和电压生成器的控制电路160以及连接到控制电路的慢单元数据压缩单元170。在一个示例中,NAND闪存100还可包括用于计数的计数器(未示出),并且计数器可连接到慢单元数据压缩单元170。由慢单元数据压缩单元170执行的数据压缩的类型可包括比特封装(bit-packing)和/或适合于与二值稀疏向量(binary-valued sparse vector)一起使用的任何其他无损数据压缩方案。尽管出于说明性的目的单独示出慢单元数据压缩单元170,但是应理解,慢单元数据压缩单元170和计数器可被集成到控制电路160、页缓冲器电路130或行解码器120。闪存100包括可以以控制电路160来实现的闪存转换层(FTL)。

存储器单元阵列110经由多条串选择线SSL、多条字线WL和多条地选择线GSL连接到行解码器120。存储器单元阵列110经由多条位线BL连接到页缓冲器电路130。存储器单元阵列110可包括各自连接到多条字线WL中的一条字线和多条位线BL中的一条位线的多个存储器单元(诸如,以多个非易失性NAND闪存单元为例)。存储器单元阵列110可被划分为多个存储器块BLK1至BLKz(例如,z可以是大于2的整数),多个存储器块BLK1至BLKz中的每个存储器块包括存储器单元。另外,多个存储器块BLK1至BLKz中的每个存储器块可被划分为多个页。

多个存储器单元可以以二维(2D)阵列结构来布置,或者优选地以三维(3D)垂直阵列结构来布置。3D垂直阵列结构可包括垂直定向的垂直单元串,使得至少一个存储器单元位于另一存储器单元上方,这可并行地可寻址。至少一个存储器单元可包括电荷捕获层。用于存储器单元阵列的适当构造可包括3D垂直阵列结构,在3D垂直阵列结构中,3D存储器阵列被构造为多个层级(level),并且位线和/或字线在层级之间被共享。

控制电路160可诸如从主机装置和/或存储控制器接收外部命令CMD和逻辑地址ADDR,并且基于命令CMD和逻辑地址ADDR控制非易失性存储器100的擦除操作、编程操作和读取操作。擦除操作可包括执行一系列的擦除循环,编程操作可包括执行一系列的编程循环。每个编程循环可包括写入编程操作、写入编程验证操作、慢单元压缩操作以及数据联结(data concatenation)(或组合,例如串接)操作。每个擦除循环可包括擦除操作和擦除验证操作。读取操作可包括正常读取操作、合并读取(consolidated read)操作和数据恢复读取操作。

例如,控制电路160可基于命令CMD生成用于控制电压生成器150的控制信号CON并且可基于命令CMD生成用于控制页缓冲器电路130的控制信号PBC,并且还可基于逻辑地址ADDR生成行地址R_ADDR和列地址C_ADDR。控制电路160可将行地址R_ADDR提供给行解码器120,并且可将列地址C_ADDR提供给数据I/O电路140。行解码器120可经由多条串选择线SSL、多条字线WL和多条地选择线GSL连接到存储器单元阵列110。

电压生成器150可基于电力信号PWR和控制信号CON生成用于非易失性存储器装置100的操作的电压VS。电压VS可由行解码器120施加到多条串选择线SSL、多条字线WL和多条地选择线GSL。另外,电压生成器150可基于电力信号PWR和控制信号CON生成用于数据擦除操作的擦除电压VERS。擦除电压VERS可直接或经由位线BL施加到存储器单元阵列110。

页缓冲器电路130可经由多条位线BL连接到存储器单元阵列110。页缓冲器电路130可包括多个页缓冲器。在一个示例性实施例中,每个页缓冲器可连接到一条位线。在替代实施例中,每个页缓冲器可连接到两条或更多条位线。

页缓冲器电路130可经由位线BL存储将被编程到存储器单元阵列110中的数据DAT,或者可读取从存储器单元阵列110感测的数据DAT。换句话说,页缓冲器电路130可根据非易失性存储器装置100的操作模式作为写入驱动器或感测放大器操作。

数据I/O电路140可经由数据线DL连接到页缓冲器电路130。数据I/O电路140可基于列地址C_ADDR将通常来自非易失性存储器装置100的外部但是包括压缩的数据和联结的数据的数据DAT经由到页缓冲器电路130的数据线DL提供给存储器单元阵列110,或者可将数据DAT从存储器单元阵列110提供给页缓冲器电路和/或非易失性存储器装置100的外部。

转到图2,用于写入存储器的示例性方法总体由参考标号200指示。该方法利用开始块210进行初始化,开始块210将控制传递到输入块212以接收当前页的数据位(例如,第一写入数据单元),输入块212依次将控制传递到功能块214。

功能块214选择新的字线(例如,第一字线),并且将控制传递到功能块216。块216通过对选择的字线的存储器单元(例如,第一存储器单元)施加脉冲以将数据位编程到选择的字线的单元来写入数据位,并且将控制传递到功能块218。块218对剩余的未编程的单元的数量C进行计数,并且将控制传递到决策块220。块220确定剩余的未编程的单元的数量C是否小于阈值,如果否,则将控制传递回块216。在一个示例中,阈值可基于通过先前脉冲成功编程的单元的数量。在一个示例中,阈值可基于在先前编程循环中在相同数量的脉冲之后成功编程的单元的数量。在一个示例中,阈值可基于在给定数量的脉冲之后以每个制造商规范的当前时钟速度成功编程的单元的数量。在一个示例中,阈值可基于当前运行的应用的最大写入延迟。

当块220确定剩余的未编程的单元的数量C小于阈值时,块220将控制传递到功能块222。块222对最初意在用于未编程的单元的未编程的数据位的向量进行压缩,并且将控制传递到输入块224。块224接收另一页的数据位,并且将控制传递到功能块226。块226依次将压缩的向量与接收的下一页的数据位联结,并且将控制传递回块214。联结可通过在接收到数据位之前将压缩的向量插入数据缓冲器中来执行,但不限于此。在替代实施例中,联结可通过在接收到数据位之后将压缩的向量插入数据缓冲器中来执行。

因此,用于持续写入加速的示例性算法在其完成之前中断常规写入编程操作,对未写入的剩余数据进行压缩,并且将压缩的剩余数据与下一页的数据一起编程到与另一字线(例如,第二字线)连接的存储器单元(例如,第二存储器单元)中。在一个示例中,第一存储器单元和第二存储器单元可在同一三维存储器裸片的不同的单独的可寻址层上。在一个示例中,第一字线和第二字线可被设置在三维存储器的不同层级上。

该方案利用具有高带宽的编程脉冲,并且实现编程速度持续提高。由于扇区读取(sector read)可利用两条字线的读取,因此压缩的残余数据优选地被存储在不同平面或通道的NAND存储器中以促进并行感测。逻辑到物理地址分布已被相应地设计。建模和分析结果示出根据增量步进编程脉冲(ISPP)和器件参数的持续编程带宽的显著改善。为了实现该算法,可在存储器控制器使用固件修改。该算法的益处可与慢单元器件变化成比例地增大。

NAND闪存可通过一系列的增量步进编程脉冲进行编程,其中,字线读取在用于数据验证的每个脉冲或多个脉冲和针对已达到其目标电平(level)的单元的未来脉冲抑制之后被执行。每个脉冲存储的数据量不同。因此,临时编程脉冲带宽在编程操作期间变化,其中,通常利用前几个脉冲对少量的单元进行编程,然后带宽随着较大量的单元达到其目标电平而增大,然后写入速率随着少的慢单元占用额外编程资源来以低带宽完成处理而降低。

为了利用写入阶段之间的差异,写入编程可仅通过高带宽区域来激活。示例性方案是激活常规编程操作,并且当每个脉冲存储的数据的量下降到预定义的阈值以下时停止常规编程操作。然后,剩余的未编程的数据被压缩,与下一扇区数据联结,并且基于相同的方法在别处被写入。在一个示例中,为了恢复读取性能,在空闲时间中例如通过页缓冲器,可从第一存储器单元读取成功编程的数据位,可从第二存储器单元读取联结的数据位,可对联结的数据位进行解压缩,并且从成功编程的数据位和解压缩的数据位重构第一写入数据单元。在一个示例中,页缓冲器可通过全脉冲编程(full pulse program)将重构的第一写入数据单元写入第一存储器单元。

现在转到图3,用于利用控制器支配写入存储器的示例性方法总体由参考标号300指示。该方法利用开始块310进行初始化,开始块310将控制传递到功能块312,控制器通过功能块312将一页数据发送到存储器(诸如,NAND存储器),但还将一页数据的副本保存在控制器中。块312将控制传递到功能块314,NAND存储器通过功能块314以脉冲对数据进行编程,并且将控制传递到决策块316。块316确定每个脉冲是否存在低带宽,如果否,则将控制传递回块314。

如果块316确定每个脉冲存在低带宽,则块316将控制传递到功能块318。块318依次使用NAND来计算验证数据,并且将控制传递到功能块320。块320使用NAND将验证数据作为向量发送回控制器,并且将控制传递到功能块322。块322使控制器对接收的向量进行压缩,将压缩的向量与另一页数据联结,更新闪存转换层(FTL),并且在别处对联结的数据进行编程。

如图4中所示,用于利用存储器支配写入存储器的示例性方法总体由参考标号400指示。该方法利用开始块410进行初始化,开始块410将控制传递到功能块412,控制器通过功能块412将一页数据发送到存储器(诸如,NAND存储器),但不保存副本。块412将控制传递到功能块414,NAND存储器通过功能块414以脉冲对数据进行编程,并且将控制传递到决策块416。块416确定每个脉冲是否存在低带宽,如果否,则将控制传递回块414。

如果块416确定每个脉冲存在低带宽,则块416将控制传递到功能块418。块418依次使用NAND来计算验证数据,并且将控制传递到功能块420。块420使用NAND对验证数据与原始数据之间的差异的向量进行压缩,并且将控制传递到功能块422。块422使NAND将压缩的向量与来自控制器的另一页数据联结,NAND在另一字线或另一平面上对该另一页数据进行编程。

现在转到图5,示例性慢单元适应性算法操作与非适应性编程操作的比较总体由参考标号500指示。这里,在比较图的左侧示出非适应性编程510的操作,在比较图的右侧示出示例性慢单元适应性算法520的操作。

在非适应性编程510中,当前状态被示出在左侧。数据向量(0,1,0,0,0,1)的示例正在被写入。在第一阶段或编程脉冲阶段512中,具有0的单元获得编程脉冲(例如,编程脉冲可被施加到字线WLN)。然后,在第二阶段或读取阶段514中,单元被读取和检查以通过单元验证通过确定单元是否来达到目标数据电平。在图中,从左侧起的第四个单元是唯一未通过验证的单元。

在第三阶段或继续编程阶段516中,非适应性编程继续向未达到其目标电平的单元施加编程脉冲,因此继续针对第四单元施加编程脉冲。通常,在每个脉冲中被寻址的单元的数量减少,因此每个脉冲写入的数据量也减少。

在示例性慢单元适应性算法520中,流程被描绘在图的右列中。这里,第一步骤522类似于非适应性编程处理的第一步骤512,因此重复描述被省略。接下来,在读取阶段524中,读取被执行并且输出稀疏向量(0,0,0,1,0,0),其中,每个0表示已达到其目标电平的单元并且每个1表示尚未达到其目标电平的单元。如在此使用的术语“稀疏向量”表示大多数元素为零的向量。例如,稀疏向量可表示为零的元素的数量与元素的数量的比率大于预定阈值的向量。例如,预定阈值可以是大于或等于50%的值。在一个示例中,稀疏向量可包括未成功编程的数据位。标记的位置实际上是被动态检测的慢单元。在第三阶段526中,向量随后被压缩并与其他稀疏向量和/或将对另一字线编程的另一数据扇区联结。以这样的方式,每个编程脉冲用于大量的单元,并且可消除针对少量的单元施加附加脉冲的情形。因此,写入带宽增大。

也就是说,在非适应性编程与用于持续写入加速的示例性慢单元适应性算法的这种比较中,可作出下面的对比:在左侧或非适应性编程中,编程脉冲被施加到目标单元,字线出于验证目的被读取,需要进一步编程脉冲的单元被确定,并且在返回到编程循环的开始时下一脉冲被执行。

在右侧或适应性方案中,编程脉冲被施加到字线,直到未编程的单元的数量(无论是总脉冲还是每个脉冲的未编程的单元的数量)低于预定义的阈值为止。然后,被分配给慢单元的数据的结果向量被压缩,与其他扇区数据联结,并且被优选地写入在另一平面中的另一字线。因为编程脉冲使用较少量的脉冲来对较大量的单元进行编程,所以写入带宽增大。

在这个示例性实施例中,压缩的未成功编程的数据位的稀疏向量可与另一写入数据单元或扇区(诸如但不限于,下一写入数据单元或扇区)联结。在一个示例中,写入数据单元可以是字节、字、页和扇区中的至少一者。在替代实施例中,适应性写入处理可对多个压缩的未成功编程的数据位的稀疏向量进行收集并联结,并且(诸如,一旦他们跨越例如缓冲器、写入数据单元或扇区的大小时)将他们一起写入。在又一替代实施例中,多个稀疏向量可被联结并且随后被压缩(诸如以提高压缩效率),并且特别地,在统计上有可能在大量的数据读取操作发生之前重新合并分为两部分的数据(bifurcated data)。

也就是说,压缩的未成功编程的数据位的稀疏向量不需要与将被编程的正好下一写入数据单元或扇区联结。例如,适应性写入处理可继续收集多个稀疏向量并且将它们一起写入单个写入数据单元中。此外,诸如在不同的应用和/或环境中,可根据压缩的稀疏向量的特定聚合和分布特性来修改各种写入方案,以满足期望的性能标准。

用于实现描述的示例性方案的支持资源是存储容量、读取时间和适当的闪存转换层(FTL)管理。被跳过的冗余单元的百分比可通过示例性算法来调整,以在存储容量方面进行权衡的情况下提高写入性能。由于压缩的数据的编程在另一平面或通道中被执行因此可被并行感测,所以读取时间在小的指令队列中不受影响。在大的指令队列中,通道总线发送增加的数据量。为了使读取时间回到原始设置,当装置处于空闲状态时,合并(诸如,扇区读取和利用完整编程时间的重新编程)可被调度。每个扇区的两个或更多地址的分配使用FTL组件中的适当的逻辑到物理(L2P)表和软件。

II.符号

符号#1;字线单元和数据向量:具有作为以相关索引的每个单元的电平的元素的数据向量利用D来表示。当对D进行编程时在k个编程脉冲之后标记每个单元的电平的物理单元向量利用C k来表示。字线的单元的数量利用WZ来表示。

符号#2;ISPP参数:增量步进编程脉冲(ISPP)参数被表示为三个元组(VINIT,ΔV,VREF)。VINIT是初始编程脉冲大小。ΔV是被加到先前脉冲大小上的增量电压。VREF是每个电平的目标电压阈值。结果,p+1个脉冲之后的电压脉冲值V(p)是:

V(p)=VINIT+p·ΔV (等式1)

存在包括多个阶段的ISPP编程方案,其中,每个阶段利用具有不同VINIT参数和ΔV参数的编程脉冲计数来复位。

符号#3;编程操作:写入处理执行一些电压脉冲。在每个单元的L个电平中,脉冲操作是函数:

函数接收两个输入:具有物理单元的电平的单元向量和每个单元的目标电平的数据向量。函数表示向具有ci<di的单元添加电荷的脉冲操作,并且以取决于ci和di两者以及ISPP和器件特性的一些概率达到di。例如,ci和di可表示单元的电平。具体地:

λ(C kD)=C k+1 (等式3)

符号#4;写入脉冲带宽:字线的单元的向量数量利用WZ来表示。在单层单元(SLC)中,WZ等于以下项的和

P(C kD)=u (等式4)

其中,元素u i(向量u中的索引i)是对(C k)i与Di之间的减法的克罗内克函数(Kronecker delta)运算:

其中,P是克罗内克函数运算δ[Cki-Di]的向量形式。因此,u是元素u i的向量(向量u中的索引i)。类似地,Cki是向量C k的第i元素,Di是向量D的第i元素。

脉冲数k的写入带宽是在该脉冲中达到其目标电平的单元的数量:

BW(k)=||P(C kD)||1-||P(C k-1D)||1 (等式6)

其中,维度N的向量V的范数1(norm-1)距离或曼哈顿(Manhattan)距离被定义是:

符号#5;编程带宽区域:函数BW(k)具有至少一个局部最大点。数字阈(Th)值被表示,(Th)可被用于在高带宽区域与低带宽区域之间进行区分,其中,在高带宽区域中BW(k)≥Th,在低带宽区域中BW(k)<Th。

III.高带宽编程

持续编程算法包括每个脉冲写入带宽的实时分析。以下,在在算法1中描述清楚的流程的示例。在步骤(1)中,加载数据,并且开始编程。在步骤(2)中,对剩余的在未来脉冲中将被寻址的单元的数量进行计数。这个测量指示带宽区域。步骤(3)比较每个脉冲成功编程的单元的数量(或者可选地,未成功编程的单元的总数)是否低于预定义的阈值(低带宽)。在这种情况下,压缩剩余的数据向量(步骤4),然后(针对变化的压缩的向量长度)与元数据和/或附加页数据联结以编程(步骤5)。然后,在另一字线中对联结的向量进行编程(步骤6),并且处理返回到循环的开始,直到数据流结束为止。

算法1:高带宽脉冲编程

(0)接收作为输入的:D1、D2和阈值,D1,D2分别表示当前页数据位和下一页数据位的向量,阈值可基于慢单元的百分比(例如,10%)

(1)在对D1进行编程的同时针对每个编程脉冲

(2)C←对将编程的剩余单元的数量进行计数

(3)如果C<阈值

(4)Ccomp←对剩余数据的向量进行压缩

(5)NextD←{Ccomp,D2}#联结

(6)在另一字线上对NextD进行编程并返回到(1)

(7)结束

(8)结束

示例性算法不依赖于慢单元的先验知识。这些与写入操作并行地被检测,并且可根据预定义的阈值或计算的阈值而被跳过,该阈值可例如基于慢单元的百分比和/或例如基于脉冲的数量来调整。

闪存装置类型和特性可能影响写入加速的预期增益。例如,在基于浮栅的装置中,编程可包括多个阶段,其中,每个阶段可具有不同的ISPP参数诸如以补偿耦合。可通过首先编程到中间电平来调整写入流程以用于字线单元的同时编程完成。

在电荷俘获装置中,单个脉冲序列可被使用,其中,电荷递增地被添加到所有目标单元。因此,尽管在浮栅技术中慢单元可在任何电平上(随机分布),但是在电荷捕获中,单元被慢写入的概率与其目标电平成比例。这个观察可基于针对特定编程算法和NVM装置的慢单元分析实现进一步增强。

IV.分析

在没有示例性慢单元适应性算法的益处的非适应性设置中,页大小数据Pz将在一系列的脉冲中被编程,每个脉冲具有带宽BW(k)。因此,非适应性带宽是:

在示例性慢单元适应性方案中,编程在ks个脉冲之后被停止。由于新的页大小由未编码部分和压缩的部分组成(其总和多于Pz),因此被写入的结果数据必须被归一化:

其中,H(p)是二进制熵函数:

H(p)=∑ipilog pi (等式11)

现在转到图6,针对ks个脉冲的实现的带宽总体由参考标号600指示。这说明由于在高带宽区域中确定ks个脉冲而导致的写入速度的加速。编程的数据与脉冲数量的比率(被示出为虚线区域除以ks)高于非适应性编程的编程的数据与脉冲数量的比率(可被可视化为所有图区域除以k)。

由于增加的有效页大小或压缩开销而使用进一步的归一化。压缩在原始页的0索引上被执行。例如,如果常规写入速率是10MB/秒,

为了易于解释,假设新方案在ks=0.8k个脉冲之后写入99%的单元的情况。然而,将被有效编程的数据从Pz增加到Pz×H(0.99)。因此,新的加速的写入速度是:

在写入脉冲的数量之中的ks的选择是使带宽最大的选择:

随着单元的编程速度之间的变化更大,方案增益增长。因此,随着每个慢单元的脉冲的数量增加,写入带宽瓶颈通过示例性慢单元适应性压缩方案被缓解。

V.结果

通用参数用于估计方案的增益。增益受两个参数(即,编程停止的脉冲的数量(ks)和到该点为止写入的数据位的数量)影响。

ks被建模为用于非适应性全字线编程的总脉冲的部分的乘法:

ks=x×k,O<x<1 (等式15)

考虑的x值是0.5至0.9(因此是非适应性脉冲的全部数量的50%至90%)。达到的ks个脉冲之前写入的位数是:

考虑的值是总数据的95%至99.9%。

如图7中所示,结果总体由参考标号700指示。这提供了持续写入加速与以给定的ks个脉冲的写入的位的数量的概述。由于值ks被建模为非适应性编程采用的脉冲的总数量(被称为k)的部分,因此ks=x×k。

这里,根据针对给定的ks个脉冲的写入单元的数量的百分比的增加,持续编程加速的线性增加明显。增益范围在ks=0.8×k和95%编程的位的1.05倍与ks=0.5×k和99.9%编程的位的2倍之间。这导致写入带宽等式的ks从0.5至0.9(全非适应性编程脉冲的50%至90%)变化并且对应于以ks个脉冲的95%至99.9%的写入单元的ks,而加速根据如所示的方案参数在x1.05与x2之间变化。

转到图8,表格结果总体由参考标号800指示。也就是说,图8将图7中图形化地示出的特定数据值制成表格。

VI.实施方式

根据目标性能和设计复杂度,呈现的方案可在具有NAND修改的情况下或在没有NAND修改的情况下被集成。为了恢复读取性能,编程合并可在空闲时间中被执行,其中,分离的字线被读取并被结合以用于全写入操作以及相应地正常的后续读取操作。

在没有NAND修改的情况下

算法2中示出该方法的总结。控制器将要被编程的数据发送到NAND,但保持其副本(步骤1)。ISPP处理对数据进行编程直到ks,读取能够存储的数据,并且将该数据发送回控制器(步骤2)。最后,控制器对接收的残余数据进行压缩,将压缩的数据与另一页联结,利用每页的分割的地址更新FTL,并且在下一字线上继续编程(步骤3)。

算法2:在没有NAND改变的情况下的持续写入

(1)控制器将页发送到NAND,并且保持副本

(2)NAND正在以ks个脉冲对数据进行编程,并且将验证数据发送回控制器

(3)控制器对接收的向量进行压缩,与另一页联结,更新FTL,并且在别处编程

在具有NAND修改的情况下

在算法3中列出该方案的步骤。如果片上修改被允许,则在不将验证数据发送到控制器的情况下,在闪存裸片上执行验证数据与原始数据之间的比较以及差异向量的压缩(步骤1至步骤4)。接下来,将压缩的向量附到下一输入数据或后续输入数据,并且利用下一输入数据或后续输入数据将压缩的向量编程到下一字线或平面或者后续字线或平面(步骤5和步骤6)。

算法3:在具有NAND改变的情况下的持续写入

(1)控制器将页发送到NAND

(2)NAND正在以ks个脉冲对数据进行编程

(3)执行页的读取验证

(4)Ccomp←对验证数据与原始数据之间的差异的向量进行压缩(片上压缩)

(5)NextD←将Ccomp与下一控制器数据D2联结

(6)在下一字线或另一平面上对NextD进行编程

VII.评论

具有高持续写入吞吐量的非易失性存储器期望数据密集型应用(诸如,高清晰度(HD)视频记录)。用于增加I/O操作的非优选方法是通过利用多个组件并行。然而,系统成本相应地增加,并且这样的解决方案对于小型应用或移动使用应用(诸如,可穿戴计算装置或传感器模块)是不可行的。使用纠错码(ECC)的非优选方法也可尝试加速写入,但导致编程瓶颈(可对应于高位错误率以及不切实际的ECC开销和复杂性)的慢单元的数量通常高于1%。

在本公开中,提供了用于增加单个NVM闪存组件的持续写入吞吐量的示例性优选算法。根据至少一个实施例的方法仅在大量的单元在每个脉冲中被成功编程时执行编程脉冲。当写入带宽减慢时,算法对剩余的数据向量进行压缩,将压缩的数据与下一页数据联结,并且利用下一字线继续编程操作。结果,编程脉冲仅在高带宽区域被施加,并且加速被实现。

尽管方案使持续写入速度加速,但是由于来自不同的字线的用于对压缩的数据和/或联结的数据进行解码的多个感测操作,被编程在分离的字线的数据的读取速度可能被减慢。因此,扇区数据的读取和重构的合并(诸如,利用在空闲时间中全编程)可用于恢复读取性能。分析结果显示,根据ISPP参数和器件变化,在贯穿单个裸片编程中的速度提高一倍。

由于存储器装置将越来越多数量的单元包括在每个硅裸片中,因此可能相应地更难制造和控制工艺;因此,单元之间的变化不太可能显著减小。由于动态地利用NVM字线的编程特性,而无需哪些单元可能是诸如由于瞬态环境因素而缓慢的先验知识,因此本公开的方法是可扩展的。当前公开的方案消除了由慢单元引起的瓶颈,并且可增强持续系统写入性能。

本发明的方法可被实现为写在计算机可读记录介质上的计算机可读指令。计算机可读记录介质可以是以计算机可读方式存储数据的任何类型的记录装置。

计算机可读记录介质的示例包括ROM、RAM、CD-ROM、磁带、软盘、光学数据存储装置和载波(例如,通过互联网的数据传输)。计算机可读记录介质可分布在联网的多个计算机系统上,使得计算机可读指令以分散的方式被写入计算机可读记录介质并从计算机可读记录介质执行。实现本发明的方法所需的功能程序、代码、代码段可由本发明所属领域的普通技术人员容易地得出。

尽管已经示出和描述了本发明构思的示例性实施例,但是应理解,在不脱离如由所附权利要求及其等同物限定的本发明构思的范围、原理和精神的情况下,相关领域的普通技术人员可在其中进行改变。

22页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:半导体存储装置及快闪存储器的运行方法

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!