CN110556146A - 一种存储单元的编程方法、装置、电子设备及存储介质 - Google Patents
一种存储单元的编程方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN110556146A CN110556146A CN201810554861.2A CN201810554861A CN110556146A CN 110556146 A CN110556146 A CN 110556146A CN 201810554861 A CN201810554861 A CN 201810554861A CN 110556146 A CN110556146 A CN 110556146A
- Authority
- CN
- China
- Prior art keywords
- programming
- memory cells
- verification
- program
- voltage
- 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.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/10—Programming or data input circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/34—Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
- G11C16/3404—Convergence or correction of memory cell threshold voltages; Repair or recovery of overerased or overprogrammed cells
Landscapes
- Read Only Memory (AREA)
Abstract
本发明公开了一种存储单元的编程方法,该方法包括:采用第一类编程电压对编程区域中除编程校验通过的存储单元之外的存储单元执行第一轮编程操作;当设定等级的存储单元编程校验通过时,记录当前次编程循环采用的编程电压值;或者,当所述第一次编程操作中编程循环的次数达到设定阈值时,记录最后一次编程循环采用的编程电压值;采用以所述编程电压值为初始值的第二类编程电压对编程区域中除编程校验通过的存储单元之外的存储单元执行第二轮编程操作;其中,存储单元的等级依据存储单元的目标阈值电压的分布范围划分。通过采用上述技术方案实现了快速将存储单元的阈值电压抬升到较高区域,节省了编程时间,提高了编程性能。
Description
技术领域
本发明实施例涉及存储技术领域,具体涉及一种存储单元的编程方法、装置、电子设备及存储介质。
背景技术
非易失闪存介质(Nand flash)是一种很常见的存储芯片,兼有随机存储器(Random Access Memory,RAM)和只读存储器(Read-Only Memory,ROM)的优点,数据掉电不会丢失,是一种可在系统进行电擦写的存储器,同时具有改写速度快,存储容量大等优点,被广泛应用到电子产品中。按照每个存储单元存储数据的位数划分,Nand flash可被分成三类,分别是SLC(Single-Level Cell,单层单元)、MLC(Multi-Level Cell,多层单元)和TLC(Triple-Level Cell,三层单元),其中,SLC的每个存储单元存储一位(1bit)数据,MLC的每个存储单元存储2bit数据,TLC的每个存储单元存储3bit数据。数据的存储是通过控制存储单元阈值电压的分布来实现的,具体参见图1所示的一种TLC的存储单元阈值电压分布示意图,当存储单元的阈值电压落在A区域时,表示存储单元当前存储的数据为001,当存储单元的阈值电压落在B区域时,表示存储单元当前存储的数据为010,……当存储单元的阈值电压落在G区域时,表示存储单元当前存储的数据为111。
因此,要实现TLC存储单元正确存储数据,需要通过复杂的算法控制存储单元的阈值分布。参见图1所示,编程区域的所有存储单元的等级包括A-G七个等级,存储单元的等级A-G依据存储单元的目标阈值电压的分布范围划分,目标阈值电压的分布范围越高,则对应存储单元的等级越高。现有方案中,在对TLC的存储单元执行编程操作时,通常会分为2-3轮编程,第1轮编程是一次粗糙的编程,目的是将存储单元的阈值电压抬到一个相对较高的范围,第2-3轮编程是较为精细的编程,最终实现将存储单元的阈值电压区分出A-G7个状态。通常在第2-3轮编程时对存储单元的字线所加的初始电压固定不变,且该初始电压通常较低,因此编程时间较长。
发明内容
本发明提供一种存储单元的编程方法、装置、电子设备及存储介质,实现了可以快速将存储单元的阈值电压抬升到较高区域,缩短了编程时间,提高了编程性能。
为实现上述目的,本发明实施例采用如下技术方案:
第一方面,本发明实施例提供了一种存储单元的编程方法,所述方法包括:
采用第一类编程电压对编程区域中除编程校验通过的存储单元之外的存储单元执行第一轮编程操作;
当设定等级的存储单元编程校验通过时,记录当前次编程循环采用的编程电压值;或者,当所述第一轮编程操作中编程循环的次数达到设定阈值时,记录最后一次编程循环采用的编程电压值;
采用以所述编程电压值为初始值的第二类编程电压对编程区域中除编程校验通过的存储单元之外的存储单元执行第二轮编程操作;
其中,存储单元的等级依据存储单元的目标阈值电压的分布范围划分。
进一步的,所述采用第一类编程电压对编程区域中除编程校验通过的存储单元之外的存储单元执行第一轮编程操作,包括:
采用特定编程电压对编程区域中除编程校验通过的存储单元之外的存储单元执行一次编程操作;
对设定等级的存储单元进行编程校验;
若所述设定等级的存储单元编程校验不通过,则将当前次编程循环采用的编程电压增加设定值得到下次编程循环时需要的新编程电压,以更新所述特定编程电压;
采用所述新编程电压重复上述编程循环操作,直到所述设定等级的存储单元编程校验通过或者编程循环的次数达到设定阈值;
其中,一次编程循环包括执行一次编程操作和一次编程校验。
进一步的,所述对设定等级的存储单元进行编程校验,包括:
对所述设定等级的存储单元逐个进行编程校验,并屏蔽编程校验通过的存储单元;
若所述设定等级的存储单元中存在编程校验不通过的存储单元,则确定所述设定等级的存储单元编程校验不通过。
进一步的,所述对设定等级的存储单元进行编程校验,包括:
对所述设定等级的存储单元中等级最低的存储单元进行编程校验,若编程校验不通过,则确定所述设定等级的存储单元编程校验不通过;
若编程校验通过,则屏蔽该存储单元并对所述设定等级的存储单元中除校验已通过的存储单元之外的其他存储单元中等级最低的存储单元进行编程校验,并重复上述编程校验的判断操作;
当所述设定等级的所有存储单元的编程校验均通过时,则确定所述设定等级的存储单元编程校验通过。
进一步的,所述采用以所述编程电压值为初始值的第二类编程电压对编程区域中除编程校验通过的存储单元之外的存储单元执行第二轮编程操作,包括:
采用所述编程电压值对编程区域中除编程校验通过的存储单元之外的存储单元执行一次编程操作;
对所述编程区域中除编程校验通过的存储单元之外的存储单元进行编程校验;
若编程校验不通过,则将当前次编程循环采用的编程电压增加设定值得到下次编程循环时需要的新编程电压,以更新所述编程电压值;
采用所述新编程电压重复上述编程循环操作,直到编程校验通过。
进一步的,对所述编程区域中除编程校验通过的存储单元之外的存储单元进行编程校验,包括:
对所述编程区域中除编程校验通过的存储单元之外的存储单元逐个进行编程校验,并屏蔽编程校验通过的存储单元;
若存在编程校验不通过的存储单元,则确定编程校验不通过。
进一步的,所述设定等级的存储单元为编程区域中目标阈值电压分布在较低范围的存储单元。
第二方面,本发明实施例提供了一种存储单元的编程装置,所述装置包括:
第一编程模块,用于采用第一类编程电压对编程区域中除编程校验通过的存储单元之外的存储单元执行第一轮编程操作;
记录模块,用于当设定等级的存储单元编程校验通过时,记录当前次编程循环采用的编程电压值;或者,当所述第一轮编程操作中编程循环的次数达到设定阈值时,记录最后一次编程循环采用的编程电压值;
第二编程模块,用于采用以所述编程电压值为初始值的第二类编程电压对编程区域中除编程校验通过的存储单元之外的存储单元执行第二轮编程操作;
其中,存储单元的等级依据存储单元的目标阈值电压的分布范围划分。
第三方面,本发明实施例提供了一种电子设备,包括第一存储器、第一处理器及存储在存储器上并可在第一处理器上运行的计算机程序,所述第一处理器执行所述计算机程序时实现如上述第一方面所述的存储单元的编程方法。
第四方面,本发明实施例提供了一种包含计算机可执行指令的存储介质,所述计算机可执行指令在由计算机处理器执行时实现如上述第一方面所述的存储单元的编程方法。
本发明实施例提供的一种存储单元的编程方法,通过当设定等级的存储单元编程校验通过时,记录当前次编程循环采用的编程电压值;或者,当所述第一轮编程操作中编程循环的次数达到设定阈值时,记录最后一次编程循环采用的编程电压值;并采用以所述编程电压值为初始值的第二类编程电压对编程区域中除编程校验通过的存储单元之外的存储单元执行第二轮编程操作的技术手段,实现了快速将存储单元的阈值电压抬升到较高区域,节省了编程时间,提高了编程性能。
附图说明
图1是一种TLC的存储单元阈值电压分布示意图;
图2是本发明实施例一中的一种存储单元的编程方法流程示意图;
图3为本发明实施例二中的一种存储单元的编程方法流程示意图;
图4为本发明实施例二中的一种存储单元的编程过程示意图;
图5为本发明实施例三中的一种存储单元的编程方法流程示意图;
图6为本发明实施例三中的又一种存储单元的编程方法流程示意图;
图7为本发明实施例四中的一种存储单元的编程装置结构示意图;
图8为本发明实施例五提供的一种电子设备的结构示意图。
具体实施方式
下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关而非全部结构。
实施例一
图2为本发明实施例一提供的一种存储单元的编程方法流程示意图,本实施例提供的编程方法可适用于对TLC类的Nand flash进行编程操作。可由存储单元的编程装置执行,该装置可通过软件和/或硬件的方式实现,一般集成在应用TLC类Nand flash的电子产品中。具体参见图2所示,本实施例提供的存储单元的编程方法具体包括如下步骤:
210、采用第一类编程电压对编程区域中除编程校验通过的存储单元之外的存储单元执行第一轮编程操作。
其中,所述编程区域具体可以指一个编程页。flash芯片是由内部成千上万个存储单元组成的,多个存储单元组成页,多个页组成块,正是由于该特殊的物理结构,Nandflash以页为单位进行编程操作(或读/写数据),以块为单位进行擦除操作。字线连在一起的存储单元构成存储单元页。
采用第一类编程电压对编程区域中除编程校验通过的存储单元之外的存储单元执行第一轮编程操作的目的是将存储单元的阈值电压抬升至一个相对较高的范围,例如将存储单元的阈值电压抬升至图1所示的C范围。所述对编程区域中除编程校验通过的存储单元之外的存储单元执行第一轮编程操作的实质是对存储单元执行多次编程循环,直到将存储单元的阈值电压抬升至一个相对较高的范围,每次编程循环采用的编程电压通常不相同。其中,一次编程循环包括一次编程操作和一次编程校验操作。对存储单元执行一次编程操作,具体为分别向存储单元的栅极以及漏极施加一次对应的编程电压,即向存储单元的字线以及位线分别施加一次对应的编程电压,目的是为了通过压差改变存储单元浮动栅极上电子的数量,从而实现改变存储单元阈值电压的目的。编程操作是为了使浮动栅极上的电子数量增多,从而抬升存储单元的阈值电压。由于一次编程操作向编程区域存储单元的字线、位线分别施加的编程电压只需持续ns级的时间,因此通常选择通过电荷泵来实现编程电压的施加。
220、当设定等级的存储单元编程校验通过时,记录当前次编程循环采用的编程电压值;或者,当所述第一轮编程操作中编程循环的次数达到设定阈值时,记录最后一次编程循环采用的编程电压值。
其中,存储单元的等级依据存储单元的目标阈值电压的分布范围划分。如图1所示,TLC类的Nand flash包括A-G七个等级,存储单元的等级(A-G)依据存储单元的目标阈值电压的分布范围划分,目标阈值电压的分布范围越高对应的存储单元的等级越高。所述目标阈值电压指将存储单元的阈值电压抬升之后的期望电压。
若所述设定等级的存储单元包括多个等级的存储单元(例如包括等级为A、B、C三个等级的存储单元),则所述设定等级的存储单元编程校验通过的实质是:当所有设定等级的存储单元编程校验均通过,若存在任何一个设定等级的存储单元编程校验不通过,则认为设定等级的存储单元编程校验不通过。由于在第一轮编程操作中,通常会进行多次编程循环,且每次编程循环采用的编程电压互不相同,当设定等级的存储单元编程校验通过时,记录下当前次编程循环采用的编程电压,以作为第二轮编程操作中第一次编程循环的初始编程电压,以提高编程性能。在第一轮编程操作中,若经过多次编程循环,设定等级的存储单元依然编程校验不通过,则通过设置阈值的方式,结束第一轮编程操作,即当第一轮编程操作中编程循环的次数达到设定阈值时,记录最后一次编程循环采用的编程电压值。
230、采用以所述编程电压值为初始值的第二类编程电压对编程区域中除编程校验通过的存储单元之外的存储单元执行第二轮编程操作。
第二轮编程操作与第一轮编程操作的实质相同,均包括多次编程循环,两者的区别在于第一次编程循环采用的编程电压值不相同。第二轮编程操作中第一次编程循环采用的编程电压值与第一轮编程操作中最后一次编程循环采用的编程电压值相同,即为上述步骤220中记录下来的编程电压值。在第二轮编程操作的第一次编程循环中通过采用较高的初始编程电压值,提供了编程速度,缩短了编程时间,进而提高了编程性能。所述第一类编程电压与所述第二类编程电压的区别在于初始值不同,每次编程循环结束之后编程电压的变化规律可以相同。
本实施例提供的一种存储单元的编程方法,首先通过第一轮编程操作将存储单元的阈值电压抬高至相对较高的范围,即当设定等级的存储单元编程校验通过时,记录当前次编程循环采用的编程电压值,并在第二轮编程操作的第一次编程循环中采用以所述编程电压值为初始值的编程电压对剩余的存储单元继续进行编程操作的技术手段,实现了快速将存储单元的阈值电压抬升到较高区域,节省了编程时间,提高了编程性能。
实施例二
图3为本发明实施例二提供的一种存储单元的编程方法流程示意图,在上述实施例的基础上,本实施例对操作“采用第一类编程电压对编程区域中除编程校验通过的存储单元之外的存储单元执行第一轮编程操作”进行了具体化。参见图3所示,本实施例提供的存储单元的编程方法具体包括如下步骤:
310、采用特定编程电压对编程区域中除编程校验通过的存储单元之外的存储单元执行一次编程操作。
其中,所述特定编程电压具体为:第一次编程循环时,所述特定编程电压为设定的初始电压,第二编程循环时,所述特定编程电压为第一次编程循环中的初始电压增加设定值后得到的新编程电压,第三次编程循环时,所述特定编程电压为第二次编程循环中的特定编程电压增加设定值后得到的新编程电压,依次类推。即每进行一次编程循环,所述特定编程电压增加设定值。
具体的,对编程区域执行第一次编程操作时,由于编程校验通过的存储单元为零,所以编程对象为编程区域中所有的存储单元,包括所有等级的存储单元。
320、对设定等级的存储单元进行编程校验。
其中,所述设定等级的存储单元为编程区域中目标阈值电压分布在较低范围的存储单元。例如所述设定等级的存储单元包括等级为A-C的存储单元。
示例性地,所述对设定等级的存储单元进行编程校验,包括:
对所述设定等级的存储单元逐个进行编程校验,并屏蔽编程校验通过的存储单元;
若所述设定等级的存储单元中存在编程校验不通过的存储单元,则确定所述设定等级的存储单元编程校验不通过。
例如,假设所述设定等级的存储单元包括等级为A、B和C三个等级的存储单元,对所述设定等级的存储单元逐个进行编程校验具体为,分别对等级为A、B、C的存储单元进行编程校验,无论每个等级的存储单元的校验结果是通过还是不通过。本实施例不对A-C三个等级的存储单元进行编程校验的顺序做限定。
其中,屏蔽编程校验通过的存储单元可以通过改变编程校验通过的存储单元的位线电压来实现。
进一步的,所述对设定等级的存储单元进行编程校验,包括:
对所述设定等级的存储单元中等级最低的存储单元进行编程校验,若编程校验不通过,则确定所述设定等级的存储单元编程校验不通过;
若编程校验通过,则屏蔽该存储单元并对所述设定等级的存储单元中除校验已通过的存储单元之外的其他存储单元中等级最低的存储单元进行编程校验,并重复上述编程校验的判断操作;
当所述设定等级的所有存储单元的编程校验均通过时,则确定所述设定等级的存储单元编程校验通过。
由于对存储单元执行编程操作是将存储单元的阈值电压缓慢抬升的过程,因此,可选择优先对等级最低的存储单元进行编程校,等级最低的存储单元编程校验不通过,那较高等级的存储单元的编程校验通常也为不通过,因此无需再对较高等级的存储单元进行编程校验,以缩短整个编程过程占用的时间,直接继续对编程区域中除编程校验通过的存储单元之外的其他存储单元执行编程操作,以快速将存储单元的阈值电压抬高至较高区域,提高编程速度。
330、判断编程校验是否通过,若所述设定等级的存储单元编程校验不通过,则执行步骤340,若所述设定等级的存储单元编程校验通过,则继续执行步骤350。
若编程循环的次数达到设定阈值时,所述设定等级的存储单元编程校验依然不通过,则结束第一轮编程操作,继续执行步骤350。
340、将当前次编程循环采用的编程电压增加设定值得到下次编程循环时需要的新编程电压,以更新所述特定编程电压,并返回步骤310。
350、记录当前次编程循环采用的编程电压值。
360、采用以所述编程电压值为初始值的第二类编程电压对编程区域中除编程校验通过的存储单元之外的存储单元执行第二轮编程操作。
具体的,采用以所述编程电压值为初始值的第二类编程电压对编程区域中除编程校验通过的存储单元之外的存储单元执行第二轮编程操作,包括:
采用所述编程电压值对编程区域中除编程校验通过的存储单元之外的存储单元执行一次编程操作;
对所述编程区域中除编程校验通过的存储单元之外的存储单元进行编程校验;
若编程校验不通过,则将当前次编程循环采用的编程电压增加设定值得到下次编程循环时需要的新编程电压,以更新所述编程电压值;
采用所述新编程电压重复上述编程循环操作,直到编程校验通过。
具体可以参见图4所示的一种存储单元的编程过程示意图,根据图4可以看出,在第一轮编程操作中,若设定等级的存储单元编程校验不通过,则每次编程循环采用的编程电压均增加Dvpgm1,第0次编程循环采用的初始编程电压为VPGM,若设定等级的存储单元编程校验通过,则记录下当前次编程循环采用的编程电压值,并以该编程电压值作为第二轮编程操作中第一次编程循环的初始编程电压值。通过提高第二轮编程操作中第一次编程循环的初始编程电压值,在达到相同编程电压的前提条件下,相比于传统方案,对应的编程循环次数减少,参见图4所示,只需0-6共7次编程循环,传统方案则需0-9共10次编程循环,提高了编程的性能。
进一步的,对所述编程区域中除编程校验通过的存储单元之外的存储单元进行编程校验,包括:
对所述编程区域中除编程校验通过的存储单元之外的存储单元逐个进行编程校验,并屏蔽编程校验通过的存储单元;
若存在编程校验不通过的存储单元,则确定编程校验不通过。
本实施例提供的一种存储单元的编程方法,通过提高第二轮编程操作中第一次编程循环采用的编程电压值,实现了快速将存储单元的阈值电压抬升到较高区域,节省了编程时间,提高了编程性能。
实施例三
图5为本发明实施例三提供的一种存储单元的编程方法流程示意图,在上述实施例的基础上,本实施例对操作“对设定等级的存储单元进行编程校验”进行了具体化。假设编程区域包括等级为A-G七个等级的存储单元,所述设定等级的存储单元包括等级为A、B和C三个等级的存储单元,参见图5所示,本实施例提供的存储单元的编程方法具体包括如下步骤:
510、采用特定编程电压对编程区域中除编程校验通过的存储单元之外的存储单元执行一次编程操作。
520、对A等级的存储单元进行编程校验。
530、若编程校验不通过,则继续执行步骤540,否则执行步骤531。
531、屏蔽A等级的存储单元。
540、对B等级的存储单元进行编程校验。
550、若编程校验不通过,则继续执行步骤560,否则执行步骤551。
551、屏蔽B等级的存储单元。
560、对C等级的存储单元进行编程校验。
570、若编程校验不通过,则继续执行步骤580,否则执行步骤571。
571、屏蔽C等级的存储单元。
580、判断编程循环的总次数是否达到设定阈值,若是,则执行步骤5100,否则执行步骤590。
当完成对所有设定等级(即完成对等级为A-C的存储单元的编程校验)的存储单元编程校验时,一次编程循环结束,即步骤510-571为一次编程循环。
需要说明的是,若设定等级的存储单元(本实施例中即等级为A、B、C的存储单元)均校验通过,且编程循环的总次数未达到设定阈值,则可以直接跳转至步骤5100,或者不断地执行步骤510即可,而不再执行步骤520-571,直到编程循环的总次数达到设定阈值时再跳转至步骤5100。
590、更新所述特定编程电压,并返回执行步骤510。
具体的,将当前次编程循环采用的编程电压增加设定值得到下次编程循环时需要的新编程电压,利用该新编程电压更新所述特定编程电压。
5100、记录最后一次编程循环采用的编程电压值。
其中,所述最后一次编程循环指设定等级的存储单元编程校验通过的那次编程循环,或者指达到设定阈值的那次编程循环。
5200、采用以所述编程电压值为初始值的第二类编程电压对编程区域中除编程校验通过的存储单元之外的存储单元执行第二轮编程操作。
其中,采用以所述编程电压值为初始值的第二类编程电压对编程区域中除编程校验通过的存储单元之外的存储单元执行第二轮编程操作的过程可以参考步骤510-571,不再赘述。
假设每个设定等级的存储单元的编程校验均为不通过,可参见图6所示的又一种存储单元的编程方法流程示意图,对上述操作过程进行了一定程度的解释。
本实施例提供的一种存储单元的编程方法,通过提高第二轮编程操作中第一次编程循环采用的编程电压值,实现了快速将存储单元的阈值电压抬升到较高区域,节省了编程时间,提高了编程性能。
实施例四
图7为本发明实施例四提供的一种存储单元的编程装置结构示意图。参见图7所示,所述装置包括:第一编程模块710、记录模块720和第二编程模块730;
其中,第一编程模块710,用于采用第一类编程电压对编程区域中除编程校验通过的存储单元之外的存储单元执行第一轮编程操作;
记录模块720,用于当设定等级的存储单元编程校验通过时,记录当前次编程循环采用的编程电压值;或者,当所述第一轮编程操作中编程循环的次数达到设定阈值时,记录最后一次编程循环采用的编程电压值;
第二编程模块730,用于采用以所述编程电压值为初始值的第二类编程电压对编程区域中除编程校验通过的存储单元之外的存储单元执行第二轮编程操作;
其中,存储单元的等级依据存储单元的目标阈值电压的分布范围划分。
本实施例提供的一种存储单元的编程装置,通过提高第二轮编程操作中第一次编程循环采用的编程电压值,实现了快速将存储单元的阈值电压抬升到较高区域,节省了编程时间,提高了编程性能。
实施例五
图8为本发明实施例五提供的一种电子设备的结构示意图。如图8所示,该电子设备包括:第一处理器870、第一存储器871及存储在第一存储器871上并可在第一处理器870上运行的计算机程序;其中,第一处理器870的数量可以是一个或多个,图8中以一个第一处理器870为例;第一处理器870执行所述计算机程序时实现如上述实施例一中所述的存储单元的编程方法。如图8所示,所述电子设备还可以包括第一输入装置872和第一输出装置873。第一处理器870、第一存储器871、第一输入装置872和第一输出装置873可以通过总线或其他方式连接,图8中以通过总线连接为例。
第一存储器871作为一种计算机可读存储介质,可用于存储软件程序、计算机可执行程序以及模块,如本发明实施例中存储单元的编程装置/模块(例如,存储单元的编程装置中的第一编程模块710和记录模块720等)。第一处理器870通过运行存储在第一存储器871中的软件程序、指令以及模块,从而执行电子设备的各种功能应用以及数据处理,即实现上述的存储单元的编程方法。
第一存储器871可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据终端的使用所创建的数据等。此外,第一存储器871可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实例中,第一存储器871可进一步包括相对于第一处理器870远程设置的存储器,这些远程存储器可以通过网络连接至电子设备/存储介质。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
第一输入装置872可用于接收输入的数字或字符信息,以及产生与电子设备的用户设置以及功能控制有关的键信号输入。第一输出装置873可包括显示屏等显示设备。
实施例六
本发明实施例六还提供一种包含计算机可执行指令的存储介质,所述计算机可执行指令在由计算机处理器执行时用于执行一种存储单元的编程方法,该方法包括:
采用第一类编程电压对编程区域中除编程校验通过的存储单元之外的存储单元执行第一轮编程操作;
当设定等级的存储单元编程校验通过时,记录当前次编程循环采用的编程电压值;或者,当所述第一轮编程操作中编程循环的次数达到设定阈值时,记录最后一次编程循环采用的编程电压值;
采用以所述编程电压值为初始值的第二类编程电压对编程区域中除编程校验通过的存储单元之外的存储单元执行第二轮编程操作;
其中,存储单元的等级依据存储单元的目标阈值电压的分布范围划分。
当然,本发明实施例所提供的一种包含计算机可执行指令的存储介质,其计算机可执行指令不限于如上所述的方法操作,还可以执行本发明任意实施例所提供的存储单元的编程相关操作。
通过以上关于实施方式的描述,所属领域的技术人员可以清楚地了解到,本发明可借助软件及必需的通用硬件来实现,当然也可以通过硬件实现,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如计算机的软盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random AccessMemory,RAM)、闪存(FLASH)、硬盘或光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,存储介质,或者网络设备等)执行本发明各个实施例所述的。
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。
Claims (10)
1.一种存储单元的编程方法,其特征在于,包括:
采用第一类编程电压对编程区域中除编程校验通过的存储单元之外的存储单元执行第一轮编程操作;
当设定等级的存储单元编程校验通过时,记录当前次编程循环采用的编程电压值;或者,当所述第一轮编程操作中编程循环的次数达到设定阈值时,记录最后一次编程循环采用的编程电压值;
采用以所述编程电压值为初始值的第二类编程电压对编程区域中除编程校验通过的存储单元之外的存储单元执行第二轮编程操作;
其中,存储单元的等级依据存储单元的目标阈值电压的分布范围划分。
2.根据权利要求1所述的方法,其特征在于,所述采用第一类编程电压对编程区域中除编程校验通过的存储单元之外的存储单元执行第一轮编程操作,包括:
采用特定编程电压对编程区域中除编程校验通过的存储单元之外的存储单元执行一次编程操作;
对设定等级的存储单元进行编程校验;
若所述设定等级的存储单元编程校验不通过,则将当前次编程循环采用的编程电压增加设定值得到下次编程循环时需要的新编程电压,以更新所述特定编程电压;
采用所述新编程电压重复上述编程循环操作,直到所述设定等级的存储单元编程校验通过或者编程循环的次数达到设定阈值;
其中,一次编程循环包括执行一次编程操作和一次编程校验。
3.根据权利要求2所述的方法,其特征在于,所述对设定等级的存储单元进行编程校验,包括:
对所述设定等级的存储单元逐个进行编程校验,并屏蔽编程校验通过的存储单元;
若所述设定等级的存储单元中存在编程校验不通过的存储单元,则确定所述设定等级的存储单元编程校验不通过。
4.根据权利要求2所述的方法,其特征在于,所述对设定等级的存储单元进行编程校验,包括:
对所述设定等级的存储单元中等级最低的存储单元进行编程校验,若编程校验不通过,则确定所述设定等级的存储单元编程校验不通过;
若编程校验通过,则屏蔽该存储单元并对所述设定等级的存储单元中除校验已通过的存储单元之外的其他存储单元中等级最低的存储单元进行编程校验,并重复上述编程校验的判断操作;
当所述设定等级的所有存储单元的编程校验均通过时,则确定所述设定等级的存储单元编程校验通过。
5.根据权利要求1所述的方法,其特征在于,所述采用以所述编程电压值为初始值的第二类编程电压对编程区域中除编程校验通过的存储单元之外的存储单元执行第二轮编程操作,包括:
采用所述编程电压值对编程区域中除编程校验通过的存储单元之外的存储单元执行一次编程操作;
对所述编程区域中除编程校验通过的存储单元之外的存储单元进行编程校验;
若编程校验不通过,则将当前次编程循环采用的编程电压增加设定值得到下次编程循环时需要的新编程电压,以更新所述编程电压值;
采用所述新编程电压重复上述编程循环操作,直到编程校验通过。
6.根据权利要求5所述的方法,其特征在于,对所述编程区域中除编程校验通过的存储单元之外的存储单元进行编程校验,包括:
对所述编程区域中除编程校验通过的存储单元之外的存储单元逐个进行编程校验,并屏蔽编程校验通过的存储单元;
若存在编程校验不通过的存储单元,则确定编程校验不通过。
7.根据权利要求1-6任一项所述的方法,其特征在于,所述设定等级的存储单元为编程区域中目标阈值电压分布在较低范围的存储单元。
8.一种存储单元的编程装置,其特征在于,所述装置包括:
第一编程模块,用于采用第一类编程电压对编程区域中除编程校验通过的存储单元之外的存储单元执行第一轮编程操作;
记录模块,用于当设定等级的存储单元编程校验通过时,记录当前次编程循环采用的编程电压值;或者,当所述第一轮编程操作中编程循环的次数达到设定阈值时,记录最后一次编程循环采用的编程电压值;
第二编程模块,用于采用以所述编程电压值为初始值的第二类编程电压对编程区域中除编程校验通过的存储单元之外的存储单元执行第二轮编程操作;
其中,存储单元的等级依据存储单元的目标阈值电压的分布范围划分。
9.一种电子设备,包括第一存储器、第一处理器及存储在存储器上并可在第一处理器上运行的计算机程序,其特征在于,所述第一处理器执行所述计算机程序时实现如权利要求1-7中任一项所述的存储单元的编程方法。
10.一种包含计算机可执行指令的存储介质,所述计算机可执行指令在由计算机处理器执行时实现如权利要求1-7中任一项所述的存储单元的编程方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810554861.2A CN110556146A (zh) | 2018-06-01 | 2018-06-01 | 一种存储单元的编程方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810554861.2A CN110556146A (zh) | 2018-06-01 | 2018-06-01 | 一种存储单元的编程方法、装置、电子设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110556146A true CN110556146A (zh) | 2019-12-10 |
Family
ID=68734861
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810554861.2A Pending CN110556146A (zh) | 2018-06-01 | 2018-06-01 | 一种存储单元的编程方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110556146A (zh) |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101584003A (zh) * | 2006-10-10 | 2009-11-18 | 桑迪士克股份有限公司 | 非易失性存储器编程操作中的可变编程电压增量值 |
CN101587748A (zh) * | 2008-05-23 | 2009-11-25 | 海力士半导体有限公司 | 非易失性存储器的编程方法 |
CN101711414A (zh) * | 2007-04-10 | 2010-05-19 | 桑迪士克公司 | 非易失性存储器和用于预测编程的方法 |
CN102067233A (zh) * | 2008-06-12 | 2011-05-18 | 桑迪士克公司 | 使用索引编程和减少的验证的非易失性存储器和方法 |
CN103366818A (zh) * | 2007-06-19 | 2013-10-23 | 三星电子株式会社 | 对存储装置进行编程的方法 |
CN103390424A (zh) * | 2012-05-08 | 2013-11-13 | 北京兆易创新科技股份有限公司 | 一种存储器的擦除/编程方法及装置 |
US20150187424A1 (en) * | 2011-12-09 | 2015-07-02 | Kabushiki Kaisha Toshiba | Nonvolatile semiconductor memory device |
US20150206593A1 (en) * | 2014-01-20 | 2015-07-23 | Sandisk Technologies Inc. | Programming and verifying for non-volatile storage |
CN106205721A (zh) * | 2016-07-06 | 2016-12-07 | 北京兆易创新科技股份有限公司 | 一种存储单元的编程方法 |
CN106229006A (zh) * | 2016-07-07 | 2016-12-14 | 北京兆易创新科技股份有限公司 | 一种存储单元的编程方法 |
-
2018
- 2018-06-01 CN CN201810554861.2A patent/CN110556146A/zh active Pending
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101584003A (zh) * | 2006-10-10 | 2009-11-18 | 桑迪士克股份有限公司 | 非易失性存储器编程操作中的可变编程电压增量值 |
CN101711414A (zh) * | 2007-04-10 | 2010-05-19 | 桑迪士克公司 | 非易失性存储器和用于预测编程的方法 |
CN103366818A (zh) * | 2007-06-19 | 2013-10-23 | 三星电子株式会社 | 对存储装置进行编程的方法 |
CN101587748A (zh) * | 2008-05-23 | 2009-11-25 | 海力士半导体有限公司 | 非易失性存储器的编程方法 |
CN102067233A (zh) * | 2008-06-12 | 2011-05-18 | 桑迪士克公司 | 使用索引编程和减少的验证的非易失性存储器和方法 |
US20150187424A1 (en) * | 2011-12-09 | 2015-07-02 | Kabushiki Kaisha Toshiba | Nonvolatile semiconductor memory device |
CN103390424A (zh) * | 2012-05-08 | 2013-11-13 | 北京兆易创新科技股份有限公司 | 一种存储器的擦除/编程方法及装置 |
US20150206593A1 (en) * | 2014-01-20 | 2015-07-23 | Sandisk Technologies Inc. | Programming and verifying for non-volatile storage |
CN106205721A (zh) * | 2016-07-06 | 2016-12-07 | 北京兆易创新科技股份有限公司 | 一种存储单元的编程方法 |
CN106229006A (zh) * | 2016-07-07 | 2016-12-14 | 北京兆易创新科技股份有限公司 | 一种存储单元的编程方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9281066B2 (en) | Dynamically configurable MLC state assignment | |
JP5735543B2 (ja) | データ状態に固有の失敗の計数に基づく不揮発性メモリのデータ復旧 | |
US10942796B2 (en) | Identifying asynchronous power loss | |
US20170168752A1 (en) | Nonvolatile memory system with erase suspend circuit and method for erase suspend management | |
KR100902008B1 (ko) | 메모리 셀에 멀티 비트 데이터를 저장하는 플래시 메모리를 포함한 메모리 시스템 | |
KR101785448B1 (ko) | 비휘발성 메모리 장치 및 이의 프로그램 방법 | |
CN101635172B (zh) | 非易失性存储器件及其编程方法 | |
KR20100013187A (ko) | 파라미터를 추출하는 불휘발성 메모리 장치 및 그것을포함하는 불휘발성 메모리 시스템 | |
US9496041B2 (en) | Memory programming method, memory control circuit unit and memory storage device | |
US20130135937A1 (en) | Programming memory cells using smaller step voltages for higher program levels | |
US9378823B2 (en) | Programming a memory cell to a voltage to indicate a data value and after a relaxation time programming the memory cell to a second voltage to indicate the data value | |
US9418731B1 (en) | Memory management method, memory storage device and memory control circuit unit | |
US10504599B2 (en) | Connecting memory cells to a data line sequentially while applying a read voltage to the memory cells and programming the read data to a single memory cell | |
KR20040071293A (ko) | 프로그래밍 방법, 제품 및 장치 | |
KR20100046757A (ko) | 메모리 장치 및 그 프로그램 방법 | |
US8243519B2 (en) | Writing method of a nonvolatile memory device | |
CN104572324A (zh) | 固态储存装置及其控制方法 | |
US8923071B2 (en) | Method of programming a multi-bit per cell non-volatile memory | |
KR20100097964A (ko) | 불휘발성 메모리 장치의 소거 방법 및 그 독출 방법 | |
CN115470052A (zh) | 存储芯片的坏块检测方法、检测装置及存储介质 | |
CN110556150A (zh) | 一种存储单元的编程方法、装置、电子设备及存储介质 | |
CN110556146A (zh) | 一种存储单元的编程方法、装置、电子设备及存储介质 | |
CN110556145A (zh) | 一种存储单元的编程方法、装置、电子设备及存储介质 | |
WO2017075747A1 (en) | Methods, systems, and media for programming storage device | |
CN110910936A (zh) | 一种模式切换方法、装置、存储设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20191210 |