存储器控制器及其操作方法
文献发布时间:2023-06-19 10:06:57
相关申请的交叉引用
本申请要求于2019年9月4日提交的申请号为10-2019-0109715的韩国专利申请的优先权,该韩国专利申请通过引用整体并入本文。
技术领域
本公开总体涉及一种电子装置,并且更特别地,涉及一种存储器控制器及其操作方法。
背景技术
存储装置被配置成在诸如计算机、智能电话或智能平板的主机的控制下存储数据。存储装置可以是将数据存储在诸如硬盘驱动器(HDD)的磁盘上的类型,或将数据存储在诸如固态驱动器(SSD)或存储卡的半导体存储器即非易失性存储器上的类型。
存储装置可以包括被配置成存储数据的存储器装置以及被配置成控制存储器装置的存储器控制器。存储器装置可以是易失性存储器装置或非易失性存储器装置。非易失性存储器装置的示例包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)、闪速存储器、相变RAM(PRAM)、磁性RAM(MRAM)、电阻式RAM(RRAM)、铁电RAM(FRAM)等。
发明内容
实施例提供一种能够基于从模糊(foggy)编程完成时间起经过的时间以及将执行精细(fine)编程的页面的位置控制存储器装置执行精细编程操作的存储器控制器及存储器控制器的操作方法。
根据本公开的一方面,提供一种存储器控制器,该存储器控制器控制存储器装置对多个页面执行模糊-精细编程操作,该存储器控制器包括:精细编程计时器,被配置成记录从存储器装置接收到与模糊编程操作对应的模糊编程完成响应的模糊编程完成时间,并且基于从记录的模糊编程完成时间起经过的时间量输出虚设编程指令信息;以及命令控制器,被配置成基于虚设编程指令信息输出精细编程命令。
根据本公开的另一方面,提供一种操作存储器控制器的方法,该存储器控制器控制存储器装置对多个页面执行模糊-精细编程操作,该方法包括:记录从存储器装置接收到与模糊编程操作对应的模糊编程完成响应的模糊编程完成时间;基于从记录的模糊编程完成时间起经过的时间量输出虚设编程指令信息;以及基于虚设编程指令信息输出精细编程命令。
根据本公开的另一方面,提供一种操作存储器控制器的方法,该存储器控制器控制存储器装置,该方法包括:控制存储器装置分别对该存储器装置中包括的一个或多个擦除页面执行一个或多个模糊编程操作;控制存储器装置分别对一个或多个模糊编程的页面执行一个或多个精细编程操作,每个模糊编程的页面的相邻页面基本上不受干扰;以及当在阈值时间量内存储器装置未提供关于模糊编程操作之中的一个模糊编程操作的完成响应时,控制存储器装置分别对与模糊编程的页面相邻的一个或多个擦除页面执行一个或多个虚设编程操作。
附图说明
以下参照附图更全面地描述各个实施例;然而,本发明可以以不同的形式实施,并且不应被解释为限于本文阐述的实施例。而是,这些实施例被提供使得本公开是彻底且完整的,并且向本领域技术人员充分传达实施例的范围。
在附图中,为了清楚说明,可能夸大尺寸。相同的附图标记始终表示相同的元件。在整个说明书中,对“实施例”、“另一实施例”等的参考不一定仅针对一个实施例,并且对任意这种短语的不同参考不一定针对相同的实施例。
图1是示出存储装置的框图。
图2是示出图1中所示的存储器装置的结构的示图。
图3是示出存储块的示图。
图4是示出模糊-精细编程的实施例的示图。
图5A至图5C是示出模糊-精细编程的另一实施例的示图。
图6A至图6D是示出当发生由保持导致的劣化时的模糊-精细编程的示图。
图7A至图7C是示出当存储器装置通过使用四层单元方案执行编程操作时的模糊-精细编程的示图。
图8是示出用于确定是否将执行虚设编程操作的干扰的示图。
图9是示出模糊-精细编程操作顺序的示图。
图10是示出根据本公开的用于执行模糊-精细编程操作的存储器控制器的配置的示图。
图11是示出模糊编程完成时间的示图。
图12是示出当执行虚设编程操作时的模糊-精细编程操作顺序的示图。
图13是示出当在执行虚设编程操作之后执行模糊编程操作时的模糊-精细编程操作顺序的示图。
图14是示出当不执行虚设编程操作时的模糊-精细编程操作顺序的示图。
图15是示出根据本公开的实施例的存储器控制器的操作的示图。
图16是示出根据本公开的实施例的存储器控制器的操作的示图。
图17是示出图1中所示的存储器控制器的另一实施例的示图。
图18是示例性地示出根据本公开的实施例的应用存储装置的存储卡系统的框图。
图19是示例性地示出根据本公开的实施例的应用存储装置的固态驱动器(SSD)系统的框图。
图20是示例性地示出根据本公开的实施例的应用存储装置的用户系统的框图。
具体实施方式
下面参照附图详细描述本公开的各个实施例,以使本领域技术人员能够容易地实施和实践本发明。
图1是示出存储装置的框图。
参照图1,存储装置50可以包括存储器装置100和存储器控制器200。
存储装置50可以是在诸如下列的主机300的控制下存储数据的装置:移动电话、智能电话、MP3播放器、膝上型计算机、台式计算机、游戏机、TV、平板PC或车载信息娱乐系统。
根据作为与主机300的通信方案的主机接口,存储装置50可以被制造为各种类型的存储装置中的任意一种。例如,存储装置50可以利用诸如下列的各种类型的存储装置中的任意一种来实施:固态驱动器(SSD)、多媒体卡(MMC)、嵌入式MMC(eMMC)、尺寸减小的MMC(RS-MMC)、微型-MMC(micro-MMC)、安全数字(SD)卡、迷你-SD卡、微型-SD卡、通用串行总线(USB)存储装置、通用闪存(UFS)装置、紧凑型闪存(CF)卡、智能媒体卡(SMC)、记忆棒等。
存储装置50可以被制造为各种封装类型中的任意一种。例如,存储装置50可以被制造为诸如下列的各种封装类型中的任意一种:堆叠式封装(POP)、系统级封装(SIP)、片上系统(SOC)、多芯片封装(MCP)、板上芯片(COB)、晶圆级制造封装(WFP)和晶圆级堆叠封装(WSP)。
存储器装置100可以存储数据。存储器装置100在存储器控制器200的控制下进行操作。存储器装置100可以包括存储器单元阵列,该存储器单元阵列包括用于存储数据的多个存储器单元。存储器单元阵列可以包括多个存储块。每个存储块可以包括多个存储器单元,多个存储器单元可以构成多个页面。在实施例中,页面可以是将数据存储在存储器装置100中或读取存储器装置100中存储的数据的单元。存储块可以是擦除数据的单元。
在实施例中,存储器装置100可以是双倍数据速率同步动态随机存取存储器(DDRSDRAM)、低功率双倍数据速率4(LPDDR4)SDRAM、图形双倍数据速率(GDDR)SRAM、低功率DDR(LPDDR)、Rambus动态随机存取存储器(RDRAM)、NAND闪速存储器、垂直NAND闪速存储器、NOR闪速存储器、电阻式随机存取存储器(RRAM)、相变随机存取存储器(PRAM)、磁阻随机存取存储器(MRAM)、铁电随机存取存储器(FRAM)、自旋转移力矩随机存取存储器(STT-RAM)等。在本说明书中,为便于描述,假设并描述存储器装置100是NAND闪速存储器的情况。
在实施例中,存储器装置100可以以二维阵列结构或三维阵列结构实施。在下文中,作为实施例描述存储器装置100以三维阵列结构实施的情况,本公开不限于三维阵列结构。本公开不仅可以应用于利用浮栅(FG)配置电荷存储层的闪速存储器装置,而且还可以应用于利用绝缘层配置电荷存储层的电荷撷取闪存(CTF)。
在实施例中,存储器装置100可以使用一个存储器单元中存储一个数据位的单层单元(SLC)方案而操作。可选地,存储器装置100可以使用一个存储器单元中存储至少两个数据位的方案而操作。例如,存储器装置100可以使用一个存储器单元中存储两个数据位的多层单元(MLC)方案、一个存储器单元中存储三个数据位的三层单元(TLC)方案或一个存储器单元中存储四个数据位的四层单元(QLC)方案而操作。
存储器装置100被配置成从存储器控制器200接收命令和地址并且访问存储器单元阵列中由地址选择的区域。也就是说,存储器装置100可以对由地址选择的区域执行与命令对应的操作。例如,存储器装置100可以根据接收的命令执行写入(编程)操作、读取操作以及擦除操作。例如,当接收到编程命令时,存储器装置100可以将数据编程在由地址选择的区域中。当接收到读取命令时,存储器装置100可以从由地址选择的区域读取数据。当接收到擦除命令时,存储器装置100可以擦除由地址选择的区域中存储的数据。
存储器控制器200可以包括精细编程计时器210。
在实施例中,精细编程计时器210可以记录从存储器装置100接收到模糊编程完成响应的模糊编程完成时间。模糊编程完成响应可以是表示在模糊-精细编程操作中与模糊编程命令对应的编程操作已完成的响应。
随后,精细编程计时器210可以测量从模糊编程完成时间起经过的时间量。当从模糊编程完成时间起经过的时间量超过参考时间量时,精细编程计时器210可以输出虚设编程指令信息。
在实施例中,每当从存储器装置100接收到模糊编程完成响应时,精细编程计时器210可以重置模糊编程完成时间。也就是说,当精细编程计时器210接收到模糊编程完成响应时,精细编程计时器210可以重置先前针对每个页面记录的模糊编程完成时间,并且记录精细编程计时器210接收到新模糊编程完成响应的模糊编程完成时间。随后,当从模糊编程完成时间起经过的时间量超过参考时间量时,精细编程计时器210可以输出虚设编程指令信息。
存储器控制器200可以包括命令控制器220。
在实施例中,命令控制器220可以从主机300接收模糊-精细编程请求,并且输出与模糊-精细编程请求对应的命令。
首先,命令控制器220可以将用于对存储器装置100执行模糊编程操作的模糊编程命令输出到存储器装置100。随后,当从模糊编程完成时间起经过的时间量超过参考时间量时,命令控制器220可以将用于对存储器装置执行精细编程操作的精细编程命令输出到存储器装置100。
当将执行精细编程操作的页面受干扰影响时,命令控制器220可以输出用于执行虚设编程操作的虚设编程命令。当响应于虚设编程命令而执行虚设编程操作时,命令控制器220可以输出精细编程命令。随后,命令控制器220可以重复输出虚设编程命令和精细编程命令,直到模糊-精细编程操作完成为止。
存储器控制器200可以控制存储装置50的全部操作。
当电源电压被供应到存储装置50时,存储器控制器200可以运行固件(FW)。当存储器装置100是闪速存储器装置时,存储器控制器200可以运行诸如FTL的FW以控制主机300和存储器装置100之间的通信。
在实施例中,存储器控制器200可以从主机300接收数据和逻辑块地址(LBA),并且将LBA转换为物理块地址(PBA),该物理块地址(PBA)表示存储器装置100中包括的将存储数据的存储器单元的地址。而且,存储器控制器200可以将建立LBA和PBA之间的映射关系的逻辑-物理地址映射表存储在其中的缓冲存储器中。
存储器控制器200可以响应于来自主机300的请求控制存储器装置100执行编程操作、读取操作、擦除操作等。例如,当从主机300接收到编程请求时,存储器控制器200可以将编程请求改变为编程命令,并且向存储器装置100提供编程命令、PBA和数据。当从主机300与LBA一起接收读取请求时,存储器控制器200可以将读取请求改变为读取命令,选择与LBA对应的PBA,然后向存储器装置100提供读取命令和PBA。当从主机300与LBA一起接收擦除请求时,存储器控制器200可以将擦除请求改变为擦除命令,选择与LBA对应的PBA,然后向存储器装置100提供擦除命令和PBA。
在实施例中,存储器控制器200可以在没有来自主机300的任何请求的情况下自主地生成编程命令、地址和数据,并且将编程命令、地址和数据传送到存储器装置100。例如,存储器控制器200可以将命令、地址和数据提供到存储器装置100,以执行诸如用于损耗均衡的编程操作和用于垃圾收集的编程操作的后台操作。
在实施例中,存储装置50可以进一步包括缓冲存储器(未示出)。存储器控制器200可以控制主机300和缓冲存储器之间的数据交换。可选地,存储器控制器200可以将用于控制存储器装置100的系统数据临时存储在缓冲存储器中。例如,存储器控制器200可以将从主机300输入的数据临时存储在缓冲存储器中,然后将临时存储在缓冲存储器中的数据传送到存储器装置100。
在各个实施例中,缓冲存储器可以用作存储器控制器200的工作存储器或高速缓存存储器。缓冲存储器可以存储由存储器控制器200运行的代码或命令。可选地,缓冲存储器可以存储由存储器控制器200处理的数据。
在实施例中,缓冲存储器可以利用诸如双倍数据速率同步DRAM(DDR SDRAM)、DDR4SDRAM、低功率双倍数据速率4(LPDDR4)SDRAM、图形双倍数据速率(GDDR)SRAM、低功耗DDR(LPDDR)或Rambus动态随机存取存储器(RDRAM)的动态随机存取存储器(DRAM)或者静态随机存取存储器(SRAM)来实施。
在各个实施例中,缓冲存储器可以在存储装置50的外部联接到存储装置50。因此,在存储装置50的外部联接到存储装置50的易失性存储器装置100可以执行缓冲存储器的功能。
在实施例中,存储器控制器200可以控制至少两个存储器装置100。存储器控制器200可以根据交织方案控制存储器装置,以提高操作性能。
主机300可以使用诸如下列的各种通信方式中的至少一种与存储装置50通信:通用串行总线(USB)、串行AT附件(SATA)、高速芯片间(HSIC)、小型计算机系统接口(SCSI)、火线、外围组件互连(PCI)、高速PCI(PCIe)、高速非易失性存储器(NVMe)、通用闪存(UFS)、安全数字(SD)、多媒体卡(MMC)、嵌入式MMC(eMMC)、双列直插式存储器模块(DIMM)、寄存式DIMM(RDIMM)和低负载DIMM(LRDIMM)。
图2是示出图1中所示的存储器装置的结构的示图。
参照图2,存储器装置100可以包括存储器单元阵列110、外围电路120和控制逻辑130。
存储器单元阵列110包括多个存储块BLK1至BLKz。多个存储块BLK1至BLKz通过行线RL联接到行解码器121。多个存储块BLK1至BLKz通过位线BL1至BLn联接到页面缓冲器组123。多个存储块BLK1至BLKz中的每一个包括多个存储器单元。在实施例中,多个存储器单元可以是非易失性存储器单元。联接到相同字线的存储器单元可以被定义为一个页面。因此,一个存储块可以包括多个页面。
行线RL可以包括至少一条源极选择线、多条字线和至少一条漏极选择线。
存储器单元阵列110中包括的存储器单元中的每一个可以被配置成存储一个数据位的单层单元(SLC)、存储两个数据位的多层单元(MLC)、存储三个数据位的三层单元(TLC)或存储四个数据位的四层单元(QLC)。
外围电路120可以在控制逻辑130的控制下对存储器单元阵列110的被选择区域执行编程操作、读取操作或擦除操作。外围电路120可以驱动存储器单元阵列110。例如,外围电路120可以在控制逻辑130的控制下将各种操作电压施加到行线RL和位线BL1至BLn或使施加的电压放电。
外围电路120可以包括行解码器121、电压生成器122、页面缓冲器组123、列解码器124、输入/输出电路125和感测电路126。
行解码器121通过行线RL联接到存储器单元阵列110。行线RL可以包括至少一条源极选择线、多条字线和至少一条漏极选择线。在实施例中,字线可以包括普通字线和虚设字线。在实施例中,行线RL可以进一步包括管道选择线。
行解码器121解码从控制逻辑130接收的行地址RADD。行解码器121根据经解码的地址选择存储块BLK1至BLKz之中的至少一个存储块。而且,行解码器121可以根据经解码的地址选择被选择存储块的至少一条字线以将由电压生成器122生成的电压施加到至少一条字线WL。
例如,在编程操作中,行解码器121可以将编程电压施加到被选择字线,并且将电平小于编程电压的电平的编程通过电压施加到未被选择字线。在编程验证操作中,行解码器121可以将验证电压施加到被选择字线,并且将电平大于验证电压的电平的验证通过电压施加到未被选择字线。
在读取操作中,行解码器121可以将读取电压施加到被选择字线,并且将电平大于读取电压的电平的读取通过电压施加到未被选择字线。
在实施例中,可以以存储块为单元对存储器装置100执行擦除操作。在擦除操作中,行解码器121可以根据经解码的地址选择一个存储块。在擦除操作中,行解码器121可以将接地电压施加到与被选择存储块联接的字线。
电压生成器122在控制逻辑130的控制下操作。电压生成器122通过使用供应到存储器装置100的外部电源电压来生成多个电压。具体地,电压生成器可以响应于操作信号OPSIG生成用于编程操作、读取操作和擦除操作中的各种操作电压Vop。例如,电压生成器122可以在控制逻辑130的控制下生成编程电压、验证电压、通过电压、读取电压、擦除电压等。
在实施例中,电压生成器122可以通过调整外部电源电压来生成内部电源电压。由电压生成器122生成的内部电源电压用作存储器装置100的操作电压。
在实施例中,电压生成器122可以通过使用外部电源电压或内部电源电压来生成多个电压。
例如,电压生成器122可以包括用于接收内部电源电压的多个泵浦电容器,并且在控制逻辑130的控制下通过选择性地启用多个泵浦电容器来生成多个电压。
生成的多个电压可以通过行解码器121被供应到存储器单元阵列110。
页面缓冲器组123包括第一至第n页面缓冲器PB1至PBn。第一至第n页面缓冲器PB1至PBn分别通过第一至第n位线BL1至BLn联接到存储器单元阵列110。第一至第n页面缓冲器PB1至PBn在控制逻辑130的控制下操作。具体地,第一至第n页面缓冲器PB1至PBn可以响应于页面缓冲器控制信号PBSIGNALS而操作。例如,在读取操作或验证操作中,第一至第n页面缓冲器PB1至PBn可以临时存储通过第一至第n位线BL1至BLn接收的数据,或者感测位线BL1至BLn的电压或电流。
具体地,在编程操作中,当编程电压被施加到被选择字线时,第一至第n页面缓冲器PB1至PBn可以通过第一至第n位线BL1至BLn将通过输入/输出电路125接收的数据DATA传送到被选择存储器单元。根据传送的数据DATA来对被选择页面的存储器单元进行编程。在编程验证操作中,第一至第n页面缓冲器PB1至PBn通过感测通过第一至第n位线BL1至BLn从被选择存储器单元接收的电压或电流来读取页面数据。
在读取操作中,第一至第n页面缓冲器PB1至PBn可以通过第一至第n位线BL1至BLn从被选择页面的存储器单元读取数据DATA,并且在列解码器124的控制下将读取的数据DATA输出到输入/输出电路125。
在擦除操作中,第一至第n页面缓冲器PB1至PBn可以使第一至第n位线BL1至BLn浮置或施加擦除电压。
列解码器124可以响应于列地址CADD在输入/输出电路125和页面缓冲器组123之间通信数据。例如,列解码器124可以通过数据线DL与第一至第n页面缓冲器PB1至PBn通信数据,或者通过列线CL与输入/输出电路125通信数据。
输入/输出电路125可以将从存储器控制器200接收的命令CMD和地址ADDR传送到控制逻辑130,或者与列解码器124交换数据DATA。
在读取操作或验证操作中,感测电路126可以响应于允许位VRYBIT信号生成参考电流,并且通过将从页面缓冲器组123接收的感测电压VPB与由参考电流产生的参考电压进行比较来输出通过信号PASS或失败信号FAIL。
控制逻辑130可以响应于命令CMD和地址ADDR,通过输出操作信号OPSIG、行地址RADD、页面缓冲器控制信号PBSIGNALS、允许位VRYBIT和列地址CADD来控制外围电路120。例如,控制逻辑130可以响应于子块读取命令和地址控制被选择存储块的读取操作。而且,控制逻辑130可以响应于子块擦除命令和地址控制被选择存储块中包括的被选择子块的擦除操作。而且,控制逻辑130可以响应于通过信号PASS或失败信号FAIL确定验证操作是已经通过还是已经失败。
存储器单元阵列110中包括的存储器单元中的每一个可以根据其中存储的数据被编程为多个编程状态之中的任意一个编程状态。存储器单元的目标编程状态可以根据存储器单元中存储的数据被确定为多个编程状态中的任意一个。
图3是示出存储块的示图。
参照图2和图3,图3是示出图2中所示的存储器单元阵列110中包括的多个存储块BLK1至BLKz之中的任意一个存储块BLKa的电路图。
在存储块BLKa中,并联布置的第一选择线、字线和第二选择线可以联接到彼此。例如,字线可以并联布置在第一选择线和第二选择线之间。第一选择线可以是源极选择线SSL,第二选择线可以是漏极选择线DSL。
更详细地,存储块BLKa可以包括联接在位线BL1至BLn和源极线SL之间的多个串。位线BL1至BLn可以分别联接到串,并且源极线SL可以共同联接到串。由于串可以彼此相同地配置,因此将作为示例详细描述联接到第一位线BL1的串ST。
串ST可以包括彼此串联联接在源极线SL和第一位线BL1之间的源极选择晶体管SST、多个存储器单元F1至F16以及漏极选择晶体管DST。至少一个源极选择晶体管SST和至少一个漏极选择晶体管DST可以包括在一个串ST中,并且数量大于附图中所示的存储器单元F1至F16的数量的存储器单元可以包括在一个串ST中。
源极选择晶体管SST的源极可以联接到源极线SL,并且漏极选择晶体管DST的漏极可以联接到第一位线BL1。存储器单元F1至F16可以串联联接在源极选择晶体管SST和漏极选择晶体管DST之间。不同串中包括的源极选择晶体管SST的栅极可以联接到源极选择线SSL,并且不同串中包括的漏极选择晶体管DST的栅极可以联接到漏极选择线DSL。存储器单元F1至F16的栅极可以联接到多条字线WL1至WL16。不同串中包括的存储器单元之中、联接到相同字线的一组存储器单元可以称为物理页面PPG。因此,数量与字线WL1至WL16的数量对应的物理页面可以包括在存储块BLKa中。
一个存储器单元可以存储一个数据位。该存储器单元通常被称为单层单元(SLC)。一个物理页面PPG可以存储一个逻辑页面(LPG)数据。一个LPG数据可以包括数量与一个物理页面PPG中包括的单元的数量对应的数据位。可选地,一个存储器单元MC可以存储两个或更多个数据位。该存储器单元通常被称为多层单元(MLC)。一个物理页面PPG可以存储两个或更多个LPG数据。
用于存储两个或更多个数据位的存储器单元被称为MLC。随着一个存储器单元中存储的数据位的数量增加,MLC近来是指用于存储两个数据位的存储器单元。用于存储三个数据位的存储器单元被称为三层单元(TLC),并且用于存储四个数据位的存储器单元被称为四层单元(QLC)。此外,已经开发出用于存储多个数据位的存储器单元,并且该实施例可以应用于存储两个或更多个数据位的存储器系统。
在另一实施例中,多个存储块中的每一个可以具有三维结构。每个存储块可以包括堆叠在衬底上的多个存储器单元。多个存储器单元可以沿+X方向、+Y方向和+Z方向布置。
图4是示出模糊-精细编程的实施例的示图。
图4中所示的横轴表示存储器单元的阈值电压Vth,并且图4中的每一个的纵轴表示存储器单元的数量。在图4中,假设使用三层单元(TLC)方案对存储器单元进行编程的情况。
参照图4的A,在对存储器单元进行编程之前,存储器单元可以处于擦除状态E。擦除状态E的存储器单元可以通过编程操作被编程为第一至第七编程状态P1至P7。
参照图4的B,在实施例中,可以对擦除状态E的存储器单元的低页面数据编程。也就是说,在执行模糊-精细编程操作之前,可以对存储器单元的低页面数据编程。因此,当对擦除状态E的存储器单元的低页面数据编程时,存储器单元可以处于擦除状态E和第LP编程状态LP中的任意一个状态。
随后,存储器装置100可以通过从存储器控制器200接收与模糊-精细编程请求对应的模糊编程命令来执行模糊编程操作。
参照图4的C,通过模糊编程操作,擦除状态E的存储器单元可以被编程为第一至第三编程状态P1至P3,并且第LP编程状态LP的存储器单元可以被编程为第四至第七编程状态P4至P7。
当模糊编程操作完成时,存储器装置100可以通过从存储器控制器200接收与模糊-精细编程请求对应的精细编程命令来执行精细编程操作。
参照图4的D,存储器装置100可以通过精细编程操作来更精细地调整擦除状态E和第一至第七编程状态P1至P7的存储器单元的阈值电压分布。也就是说,虽然通过模糊编程操作对擦除状态E和第一至第七编程状态P1至P7的存储器单元进行了编程,但阈值电压分布没有被清楚地区分开,而通过精细编程操作可以将擦除状态E和第一至第七编程状态P1至P7的存储器单元的阈值电压分布清楚地区分开。
因此,在对低页面数据编程之后,当存储器装置100执行模糊-精细编程操作时,存储器单元可以通过与模糊编程命令和精细编程命令对应的操作,具有擦除状态E和第一至第七编程状态P1至P7中的任意一个状态。
图5A至图5C是示出模糊-精细编程的另一实施例的示图。
图5A至图5C示出省略了图4的B的模糊-精细编程。在图5A至图5C中,假设使用三层单元(TLC)方案对存储器单元进行编程的情况。
在图5A至图5C中,为了便于描述,将省略与图4中所示的内容/描述重叠的内容/描述。
参照图5A,在对存储器单元进行编程之前,存储器装置100中包括的存储器单元可以处于擦除状态E。擦除状态E的存储器单元可以通过模糊-精细编程操作具有第一至第七编程状态P1至P7中的任意一个状态。
在实施例中,存储器控制器200可以从主机300接收模糊-精细编程请求,并且输出对应于模糊-精细编程请求的模糊编程命令和精细编程命令。
图5B示出在存储器装置100执行与模糊编程命令对应的模糊编程操作之后存储器单元的阈值电压分布,图5C示出在存储器装置100执行与精细编程命令对应的精细编程操作之后存储器单元的阈值电压分布。
与图4不同,存储器装置100中包括的存储器单元不对低页面数据执行编程操作,并且可以立即执行模糊编程操作。也就是说,当存储器装置100接收模糊编程命令并且执行与该模糊编程命令对应的模糊编程操作时,存储器单元的阈值电压分布可以形成为如图5B所示。
随后,存储器装置100可以从存储器控制器200接收精细编程命令,并且执行与精细编程命令对应的精细编程操作。当存储器装置100执行精细编程操作时,存储器单元的阈值电压分布可以形成为如图5C所示。
因此,通过在擦除状态E下执行模糊-精细编程操作,存储器单元可以具有第一至第七编程状态P1至P7的阈值电压分布。
图6A至图6D是示出当发生由保持导致的劣化时的模糊-精细编程的示图。
图6A和图6B与图5A和图5B相同,图6D与图5C相同。因此,在图6A至图6D中,为了便于描述,将省略与图5A至图5C中所示的内容/描述重叠的内容/描述。
图6A至图6D示出根据当在模糊编程之后发生由保持导致的劣化时执行的精细编程的存储器单元的阈值电压分布的变化。
在实施例中,存储器装置100中包括的存储器单元可以通过模糊-精细编程从擦除状态E被编程为第一至第七编程状态P1至P7。然而,在模糊编程之后,存储器单元的阈值电压分布可能由于由保持导致的劣化而改变。
参照图6C,在对存储器单元进行模糊编程之后,第一至第七编程状态P1至P7的阈值电压可能改变。也就是说,虽然存储器单元通过模糊编程操作已经被编程为第一至第七编程状态P1至P7,但是存储器单元的阈值电压由于由保持导致的劣化而降低,因此,存储器单元的阈值电压分布可以形成为如图6C所示。
随后,存储器装置100可以从存储器控制器200接收精细编程命令,并且执行与精细编程命令对应的精细编程操作。也就是说,在执行模糊编程操作之后,存储器单元可能由于保持而劣化,但是可以通过精细编程操作来更精细地调整存储器单元的编程状态。通过精细编程操作,存储器单元可以具有如图6D所示的阈值电压分布。
因此,虽然在执行模糊编程操作之后,存储器单元受到由保持导致的劣化的影响,但是存储器单元可以具有通过精细编程操作更精细地调整的阈值电压分布。
图7A至图7C是示出当存储器装置通过使用四层单元方案执行编程操作时的模糊-精细编程的示图。
图7A至图7C示出当使用四层单元(QLC)方案对存储器装置100中包括的存储器单元进行编程时执行模糊-精细编程的进程。图7A至图7C中的每一个的横轴表示存储器单元的阈值电压,并且图7A至图7C中的每一个的纵轴表示存储器单元的数量。
参照图7A,在对存储器单元进行编程之前,存储器装置100中包括的存储器单元可以处于擦除状态E。擦除状态E的存储器单元可以通过模糊-精细编程操作具有第一至第十五编程状态P1至P15之中的任意一个状态。
在实施例中,存储器控制器100可以从主机300接收模糊-精细编程请求,并且输出对应于模糊-精细编程请求的模糊编程命令和精细编程命令。
图7B示出在存储器装置100执行与模糊编程命令对应的模糊编程操作之后存储器单元的阈值电压分布,图7C示出在存储器装置100执行与精细编程命令对应的精细编程操作之后存储器单元的阈值电压分布。
参照图5A至图5C和图7A至图7C,与图5A至图5C中所示的存储器单元一样,图7A至图7C中所示的存储器单元不对低页面数据执行编程操作,并且可以立即执行模糊编程操作。
在实施例中,当存储器装置100从存储器控制器200接收模糊编程命令并且执行与该模糊编程命令对应的模糊编程操作时,存储器单元的阈值电压分布可以形成为如图7B所示。
随后,存储器装置100可以从存储器控制器200接收精细编程命令,并且执行与精细编程命令对应的精细编程操作。当存储器装置100执行精细编程操作时,存储器单元的阈值电压分布被更精细地调整以形成为如图7C所示。
因此,通过在擦除状态E下执行模糊-精细编程操作,存储器单元可以具有第一至第十五编程状态P1至P15的阈值电压分布。
图8是示出用于确定是否将执行虚设编程操作的干扰的示图。
参照图2和图8,图8示出包括与图2中所示的一些字线和一些位线联接的存储器单元的页面。参照图8,第一至第十六页面PAGE1至PAGE16中的每一个可以包括十六个存储器单元。
在实施例中,多个存储器单元可以联接到一条字线,并且构成多个页面。
例如,与第一字线WL1联接的存储器单元可以构成第一至第四页面PAGE1至PAGE4,并且每个页面可以包括十六个存储器单元。第一字线WL1的第一页面PAGE1中包括的十六个存储器单元可以分别联接到第一至第十六位线BL1至BL16,第一字线WL1的第二页面PAGE2中包括的十六个存储器单元可以分别联接到第十七至第三十二位线BL17至BL32,第一字线WL1的第三页面PAGE3中包括的十六个存储器单元可以分别联接到第三十三至第四十八位线BL33至BL48,第一字线WL1的第四页面PAGE4中包括的十六个存储器单元可以分别联接到第四十九至第六十四位线BL49至BL64。
以与上述相同的方式,与第二字线WL2联接的存储器单元可以构成第五至第八页面PAGE5至PAGE8,与第三字线WL3联接的存储器单元可以构成第九至第十二页面PAGE9至PAGE12,与第四字线WL4联接的存储器单元可以构成第十三至第十六页面PAGE13至PAGE16。每条字线的页面中包括的存储器单元可以分别联接到第一至第六十四位线BL1至BL64。
在实施例中,当存储器装置100执行模糊-精细编程操作时,存储器装置100可以通过考虑相邻单元之间的干扰来执行模糊-精细编程操作。特别地,当每个存储器单元中编程的位的数量增加时,相邻单元之间的干扰变得严重,因此当存储器装置100执行模糊-精细编程操作时,存储器装置100可以通过考虑存储器单元是否为相邻单元来执行编程操作。
在示例中,当对与第一字线WL1联接的第一页面PAGE1执行编程操作时,作为与第一页面PAGE1相邻的页面的第二页面PAGE2和第五页面PAGE5可能受干扰影响。因此,在对第二页面PAGE2和第五页面PAGE5执行模糊编程操作或虚设编程操作之后,可以对第一页面PAGE1执行精细编程操作。
具体地,当存储器装置100从存储器控制器200接收待被编程到第二页面PAGE2和第五页面PAGE5的数据时,可以在对第二页面PAGE2和第五页面PAGE5执行模糊编程操作之后对第一页面PAGE1执行精细编程操作。然而,虽然存储器装置100从存储器控制器200接收待被编程到第二页面PAGE2和第五页面PAGE5的数据,但是存储器装置100可以在存储器装置100对第二页面PAGE2和第五页面PAGE5执行虚设编程操作之后对第一页面PAGE1执行精细编程操作。
在另一示例中,当对与第三字线WL3联接的第十一页面PAGE11执行编程操作时,与第十一页面PAGE11相邻的第七页面PAGE7、第十页面PAGE10、第十二页面PAGE12和第十五页面PAGE15可能受干扰影响。因此,当存储器装置100从存储器控制器200接收待被编程到第七页面PAGE7、第十页面PAGE10、第十二页面PAGE12和第十五页面PAGE15的数据时,可以对第七页面PAGE7、第十页面PAGE10、第十二页面PAGE12和第十五页面PAGE15执行模糊编程操作。当存储器装置100从存储器控制器200接收待被编程到第七页面PAGE7、第十页面PAGE10、第十二页面PAGE12和第十五页面PAGE15的数据时,存储器装置100可以在存储器装置100对第七页面PAGE7、第十页面PAGE10、第十二页面PAGE12和第十五页面PAGE15执行虚设编程操作之后对第十一页面PAGE11执行精细编程操作。
图9是示出模糊-精细编程操作顺序的示图。
参照图8和图9,图9中所示的第一列表示图8中所示的页面,图9中所示的第二列表示模糊-精细编程操作中的模糊编程操作的顺序,并且图9中所示的第三列表示模糊-精细编程操作中的精细编程操作的顺序。图9中所示的页面之中的第一至第四页面PAGE1至PAGE4可以联接到第一字线WL1,第五至第八页面PAGE5至PAGE8可以联接到第二字线WL2,并且第九至第十二页面PAGE9至PAGE12可以联接到第三字线WL3。
在实施例中,当存储器装置100执行编程操作时,可以从第一页面PAGE1至第十二页面PAGE12顺序地执行编程操作。然而,当存储器装置100执行模糊-精细编程操作时,可以重新排列模糊编程操作和精细编程操作的顺序。
例如,在对第一页面PAGE1的模糊编程操作1之后,可以顺序地执行对第二页面PAGE2的模糊编程操作2、对第三页面PAGE3的模糊编程操作3以及对第四页面PAGE4的模糊编程操作4。随后,当对第五页面PAGE5执行了模糊编程操作5时,可以对第一页面PAGE1执行精细编程操作6。也就是说,在对与第一页面PAGE1相邻的第二页面PAGE2和第五页面PAGE5执行模糊编程操作之后,可以对第一页面PAGE1执行精细编程操作。这是为了使相邻存储器单元之间的干扰的影响最小化。
在对第一页面PAGE1执行精细编程操作之后,存储器装置100可以执行模糊编程操作以对执行了模糊编程操作的页面执行精细编程操作。
例如,为了对第二页面PAGE2执行精细编程操作8,可以首先对第六页面PAGE6执行模糊编程操作7。也就是说,在对与第二页面PAGE2相邻的第一页面PAGE1、第三页面PAGE3和第六页面PAGE6执行模糊编程操作之后,可以对第二页面PAGE2执行精细编程操作。因此,在对第六页面PAGE6执行模糊编程操作7之后,可以对第二页面PAGE2执行精细编程操作8。
在实施例中,以与对第二页面PAGE2执行精细编程操作相同的方式,可以在对第七页面PAGE7执行模糊编程操作9之后对第三页面PAGE3执行精细编程操作10,可以在对第八页面PAGE8执行模糊编程操作11之后对第四页面PAGE4执行精细编程操作12,可以在对第九页面PAGE9执行模糊编程操作13之后对第五页面PAGE5执行精细编程操作14,可以在对第十页面PAGE10执行模糊编程操作15之后对第六页面PAGE6执行精细编程操作16,可以在对第十一页面PAGE11执行模糊编程操作17之后对第七页面PAGE7执行精细编程操作18,并且可以在对第十二页面PAGE12执行模糊编程操作19之后对第八页面PAGE8执行精细编程操作20。
然而,当在执行模糊编程操作之后到执行精细编程操作时花费很长时间时,可能增加将发生编程失败的可能性。也就是说,当精细编程操作延迟时,可能发生编程失败。因此,在本公开中,可以通过测量在模糊编程操作完成之后经过的时间量来执行精细编程操作。
在下文中,将描述基于从模糊编程操作完成的模糊编程完成时间起经过的时间量来执行精细编程操作的方法。
图10是示出根据本公开的用于执行模糊-精细编程操作的存储器控制器的配置的示图。
参照图10,存储器控制器200可以包括精细编程计时器210和命令控制器220。
在实施例中,命令控制器220可以从主机300接收模糊-精细编程请求FFP_REQ。命令控制器220可以基于模糊-精细编程请求FFP_REQ将模糊编程命令FGP_CMD或精细编程命令FNP_CMD输出到存储器装置100。
由于在模糊编程操作和精细编程操作期间首先执行模糊编程操作,因此命令控制器220可以首先将模糊编程命令FGP_CMD输出到存储器装置100。存储器装置100可以执行与模糊编程命令FGP_CMD对应的模糊编程操作,然后将模糊编程完成响应FGPC_RES输出到精细编程计时器210。
精细编程计时器210可以针对每个页面记录精细编程计时器210从存储器装置100接收到模糊编程完成响应FGPC_RES的模糊编程完成时间。而且,当从精细编程计时器210接收到模糊编程完成响应FGPC_RES的模糊编程完成时间起经过的时间量超过参考时间量时,精细编程计时器210可以输出虚设编程指令信息DMPD_INF。
在实施例中,当精细编程计时器210从存储器装置接收到模糊编程完成响应FGPC_RES时,在从精细编程计时器210接收到模糊编程完成响应FGPC_RES的模糊编程完成时间起经过的时间量超过参考时间量之前,可以重置精细编程计时器210中针对各个页面记录的模糊编程完成时间。可以将精细编程计时器210中记录的模糊编程完成时间重置为新接收的模糊编程完成时间。
随后,当从新接收的模糊编程完成时间起经过的时间量超过参考时间量时,精细编程计时器210可以输出虚设编程指令信息DMPD_INF。虚设编程指令信息DMPD_INF可以表示从模糊编程完成时间起经过的时间量已经超过参考时间量。也就是说,为了在模糊编程操作之后执行精细编程操作,可以输出虚设编程指令信息DMPD_INF,使得对未执行编程操作的相邻页面执行虚设编程操作。
在实施例中,命令控制器220可以在命令控制器220输出精细编程命令FNP_CMD之前输出虚设编程命令DMP_CMD。例如,当与将执行精细编程操作的页面相邻的页面之中存在尚未执行模糊编程操作的页面时,可以输出虚设编程命令DMP_CMD,以对相应页面进行虚设编程。
然而,当将执行精细编程操作的页面不受来自相邻页面的干扰影响时,可以不输出虚设编程命令DMP_CMD。例如,当已经对相邻页面的存储器单元进行编程时,或者当确定不对相邻页面的存储器单元执行编程操作时,在执行精细编程操作之前,可以不输出虚设编程命令DMP_CMD。
在实施例中,可能发生突然断电(SPO)。例如,可能在存储器装置100正在执行模糊编程操作、精细编程操作或虚设编程操作时发生SPO。
当发生SPO时,存储器装置100可以再次对另一存储块而不是正执行编程操作的存储块执行编程操作。存储器装置100可以再次从模糊编程操作执行编程操作。
然而,与SPO不同,当发生正常断电(NPO)时,可以执行编程操作,直到对用户数据的所有精细编程操作完成为止。因此,与SPO不同,在NPO的情况下,没有必要再次对另一存储块从模糊编程操作执行编程操作。因此,当发生NPO时,在对用户数据的所有编程操作结束之后,可以断电。
图11是示出模糊编程完成时间的示图。
参照图8和图11,图11示出每当接收到模糊编程完成响应时针对每个页面记录的模糊编程完成时间TIME_FGP。
在实施例中,可以对第一页面PAGE1执行模糊编程操作。在对第一页面PAGE1执行模糊编程操作之后,精细编程计时器210可以从存储器装置接收关于第一页面PAGE1的模糊编程完成响应。
在精细编程计时器210接收到模糊编程完成响应之后,精细编程计时器210可以将作为接收到模糊编程完成响应的时间的第一模糊编程完成时间TIME_FGP1记录为关于第一页面PAGE1的模糊编程完成时间TIME_FGP。随后,精细编程计时器210可以测量从第一模糊编程完成时间TIME_FGP1起经过的时间量。
在实施例中,在从第一模糊编程完成时间TIME_FGP1起经过的时间量超过参考时间量之前,精细编程计时器210可能接收关于第二页面PAGE2的模糊编程完成响应。当从第一模糊编程完成时间TIME_FGP1起经过的时间量超过参考时间量时,精细编程计时器210可以输出虚设编程指令信息,并且基于虚设编程指令信息,指示对相邻页面的虚设编程操作的虚设编程命令可以被输出到存储器装置100,以便对第一页面PAGE1执行精细编程操作。
当精细编程计时器210在从第一模糊编程完成时间TIME_FGP1起经过的时间量超过参考时间量之前接收到第二模糊编程完成响应时,精细编程计时器210可以重置模糊编程完成时间TIME_FGP。也就是说,当接收到第二模糊编程完成响应时,可以重置与第一页面PAGE1对应的先前记录的第一模糊编程完成时间TIME_FGP1。可以将第一模糊编程完成时间TIME_FGP1重置为接收到第二模糊编程完成响应的第二模糊编程完成时间TIME_FGP2。
当重置与第一页面PAGE1对应的模糊编程完成时间TIME_FGP时,可以将与第二页面PAGE2对应的模糊编程完成时间TIME_FGP记录为第二模糊编程完成时间TIME_FGP2。也就是说,在与第二页面PAGE2对应的模糊编程操作完成之后,精细编程计时器210可以记录与第二页面PAGE2对应的模糊编程完成时间TIME_FGP。
因此,当在记录第一模糊编程完成时间TIME_FGP1之后经过参考时间量之前接收到第二模糊编程完成响应时,可以将与第一页面PAGE1和第二页面PAGE2对应的模糊编程完成时间TIME_FGP记录为第二模糊编程完成时间TIME_FGP2。
随后,精细编程计时器210可以测量从第二模糊编程完成时间TIME_FGP2起经过的时间量。当从第二模糊编程完成时间TIME_FGP2起经过的时间量超过参考时间量时,精细编程计时器210可以输出虚设编程指令信息,并且基于虚设编程指令信息,指示对相邻页面的虚设编程操作的虚设编程命令可以被输出到存储器装置100,以便对第一页面PAGE1和第二页面PAGE2执行精细编程操作。可以以对第一页面PAGE1和第二页面PAGE2进行模糊编程的顺序来执行精细编程操作。
然而,当精细编程计时器210在从第二模糊编程完成时间TIME_FGP2起经过的时间量超过参考时间量之前接收到第三模糊编程完成响应时,精细编程计时器210可以重置模糊编程完成时间TIME_FGP。也就是说,当接收到第三模糊编程完成响应时,可以重置与第一页面PAGE1和第二页面PAGE2对应的先前记录的第二模糊编程完成时间TIME_FGP2。可以将第二模糊编程完成时间TIME_FGP2重置为接收到第三模糊编程完成响应的第三模糊编程完成时间TIME_FGP3。
当重置与第一页面PAGE1和第二页面PAGE2对应的模糊编程完成时间TIME_FGP时,可以将与第三页面PAGE3对应的模糊编程完成时间TIME_FGP记录为第三模糊编程完成时间TIME_FGP3。也就是说,在与第三页面PAGE3对应的模糊编程操作完成之后,精细编程计时器210可以记录与第三页面PAGE3对应的模糊编程完成时间TIME_FGP。
因此,当在记录第一模糊编程完成时间TIME_FGP1以及记录第二模糊编程完成时间TIME_FGP2之后经过的时间量超过参考时间量之前接收到第三模糊编程完成响应时,可以将与第一页面PAGE1、第二页面PAGE2以及第三页面PAGE3对应的模糊编程完成时间TIME_FGP记录为第三模糊编程完成时间TIME_FGP3。
随后,精细编程计时器210可以测量从第三模糊编程完成时间TIME_FGP3起经过的时间量。当从第三模糊编程完成时间TIME_FGP3起经过的时间量超过参考时间量时,精细编程计时器210可以输出虚设编程指令信息,并且基于虚设编程指令信息,指示对相邻页面的虚设编程操作的虚设编程命令可以被输出到存储器装置100,以便对第一页面PAGE1、第二页面PAGE2以及第三页面PAGE3执行精细编程操作。可以以对与第一页面PAGE1、第二页面PAGE2以及第三页面PAGE3进行模糊编程的顺序来执行精细编程操作。
图12是示出当执行虚设编程操作时的模糊-精细编程操作顺序的示图。
参照图9和图12,图12中所示的第一列与图9中所示的第一列相同,图12中所示的第二列示出模糊-精细编程操作中的模糊编程操作的顺序,并且图12中所示的第三列示出模糊-精细编程操作中的精细编程操作的顺序。
在实施例中,当存储器装置100执行编程操作时,可以从第一页面PAGE1至第十二页面PAGE12顺序地执行编程操作。然而,当存储器装置100执行模糊-精细编程操作时,可以重新排列模糊编程操作和精细编程操作的顺序。
与图9不同,图12示出在第五模糊编程操作之后未接收到待模糊编程的数据的情况。
在实施例中,在对第一页面PAGE1的模糊编程操作1之后,可以顺序地执行对第二页面PAGE2的模糊编程操作2、对第三页面PAGE3的模糊编程操作3、对第四页面PAGE4的模糊编程操作4以及对第五页面PAGE5的模糊编程操作5。由于从关于每个页面的模糊编程完成时间TIME_FGP起经过的时间量没有超过参考时间量,因此可以不对第一至第五页面PAGE1至PAGE5执行精细编程操作。
在实施例中,在对第五页面PAGE5的模糊编程操作之后,可能未从主机300接收到待编程到存储器装置的数据。也就是说,从接收到关于第五页面PAGE5的模糊编程完成响应的模糊编程完成时间起经过的时间量可能超过参考时间量。因此,可以执行对第一至第五页面PAGE1至PAGE5执行精细编程操作的操作。
首先,为了对第一页面PAGE1执行精细编程操作,可以确定是否已经对与第一页面PAGE1相邻的页面执行模糊编程操作。也就是说,可以基于是否已经对与第一页面PAGE1相邻的第二页面PAGE2和第五页面PAGE5执行模糊编程操作来对第一页面PAGE1执行精细编程操作。这是为了使相邻存储器单元之间的干扰的影响最小化。
参照图12,已经对与第一页面PAGE1相邻的第二页面PAGE2和第五页面PAGE5执行模糊编程操作。因此,可以对第一页面PAGE1执行精细编程操作6。
为了在对第一页面PAGE1执行精细编程操作之后对第二页面PAGE2执行精细编程操作,可以确定是否已经对与第二页面PAGE2相邻的第一页面PAGE1、第三页面PAGE3和第六页面PAGE6执行模糊编程操作。在实施例中,由于尚未对第六页面PAGE6执行模糊编程操作之后,因此可以对第六页面PAGE6执行虚设编程操作7。随后,由于已经对第一页面PAGE1、第三页面PAGE3和第六页面PAGE6都执行了编程操作,因此可以对第二页面PAGE2执行精细编程操作8。
以这种方式,可以在对第七页面PAGE7执行虚设编程操作9之后对第三页面PAGE3执行精细编程操作10,可以在对第八页面PAGE8执行虚设编程操作11之后对第四页面PAGE4执行精细编程操作12,并且可以在对第九页面PAGE9执行虚设编程操作13之后对第五页面PAGE5执行精细编程操作14。
在对第五页面PAGE5执行精细编程操作之后,存储器装置100可以执行与从存储器控制器200接收的模糊编程命令对应的模糊编程操作。由于虚设数据已被编程到第六至第九页面PAGE6至PAGE9,因此存储器装置可以从第十页面PAGE10顺序执行模糊编程。也就是说,在对第十页面PAGE10执行模糊编程操作15之后,可以对第十一页面PAGE11执行模糊编程操作16,并且可以对第十二页面PAGE12执行模糊编程操作17。
在实施例中,在对第五页面PAGE5的模糊编程操作之后,存储器装置100可能从存储器控制器200接收到清除命令。当存储器装置100接收到清除命令时,在对第一至第五页面PAGE1至PAGE5执行精细编程之前不能对另一页面执行编程操作,因此,可以执行对第一至第五页面PAGE1至PAGE5执行精细编程操作的操作。
例如,与在对第五页面PAGE5的模糊编程操作5之后未从主机300接收到待编程到存储器装置的数据的情况相同,可以对第一页面执行精细编程操作6。随后,可以在对第六页面PAGE6执行虚设编程操作7之后对第二页面PAGE2执行精细编程操作8,可以在对第七页面PAGE7执行虚设编程操作9之后对第三页面PAGE3执行精细编程操作10,可以在对第八页面PAGE8执行虚设编程操作11之后对第四页面PAGE4执行精细编程操作12,并且可以在对第九页面PAGE9执行虚设编程操作13之后对第五页面PAGE5执行精细编程操作14。
在实施例中,在对第五页面PAGE5的模糊编程操作之后,电源电压可能降低到上电复位(POR)电平。在对执行了模糊编程的第一至第五页面PAGE1至PAGE5执行精细编程操作之后,可以重置电力。
因此,可以通过使用与接收到清除命令时相同的方法对第一页面PAGE1执行精细编程操作6。随后,可以在对第六页面PAGE6执行虚设编程操作7之后对第二页面PAGE2执行精细编程操作8,可以在对第七页面PAGE7执行虚设编程操作9之后对第三页面PAGE3执行精细编程操作10,可以在对第八页面PAGE8执行虚设编程操作11之后对第四页面PAGE4执行精细编程操作12,并且可以在对第九页面PAGE9执行虚设编程操作13之后对第五页面PAGE5执行精细编程操作14。
图13是示出当在执行虚设编程操作之后执行模糊编程操作时的模糊-精细编程操作顺序的示图。
参照图12和图13,图13中所示的第一列与图12中所示的第一列相同,图13中所示的第二列示出模糊-精细编程操作中的模糊编程操作的顺序,并且图13中所示的第三列示出模糊-精细编程操作中的精细编程操作的顺序。
在实施例中,当存储器装置100执行编程操作时,可以从第一页面PAGE1至第十二页面PAGE12顺序地执行编程操作。然而,当存储器装置执行模糊-精细编程操作时,可以重新排列模糊编程操作和精细编程操作的顺序。
与图12不同,图13示出当正执行精细编程操作时接收到模糊编程完成响应的情况。
在实施例中,在对第一页面PAGE1的模糊编程操作1之后,可以顺序地执行对第二页面PAGE2的模糊编程操作2、对第三页面PAGE3的模糊编程操作3、对第四页面PAGE4的模糊编程操作4以及对第五页面PAGE5的模糊编程操作5。
随后,当从接收到对第五页面PAGE5的模糊编程完成响应的模糊编程完成时间起经过的时间量超过参考时间量时,可以对第一页面PAGE1执行精细编程操作6。也就是说,由于已经对与第一页面PAGE1相邻的第二页面PAGE2和第五页面PAGE5执行模糊编程操作,因此可以对第一页面PAGE1执行精细编程操作。
当对第一页面PAGE1执行了精细编程操作6时,可以在对第六页面PAGE6执行虚设编程操作7之后对第二页面PAGE2执行精细编程操作8,并且可以在对第七页面PAGE7执行虚设编程操作9之后对第三页面PAGE3执行精细编程操作10。
然而,在对第三页面PAGE3执行精细编程操作10之后,可以对第八页面PAGE8执行模糊编程操作11。因此,当在对第八页面PAGE8执行模糊编程操作11之后接收到模糊编程完成响应时,可以重置与第五页面PAGE5对应的模糊编程完成时间TIME_FGP。也就是说,可以将模糊编程完成时间TIME_FGP重置为接收到与第八页面PAGE8对应的模糊编程完成响应的第八模糊编程完成时间。与第八页面PAGE8对应的模糊编程完成时间TIME_FGP也可以是第八模糊编程完成时间。
随后,当从第八模糊编程完成时间起经过的时间量超过参考时间量时,精细编程计时器210可以输出虚设编程指令信息,并且命令控制器220可以基于虚设编程指令信息输出精细编程命令。在输出精细编程命令之前,可以基于将执行精细编程的页面的位置,即该页面是否受存储器单元之间的干扰影响来输出虚设编程命令。
例如,由于已经对作为与将执行精细编程的第四页面PAGE4相邻的页面的第三页面PAGE3和第八页面PAGE8两者执行模糊编程操作,所以可以对第四页面PAGE4执行精细编程操作12,而无需输出虚设编程命令。
但是,由于尚未对与第五页面PAGE5相邻的页面之中的第九页面PAGE9执行模糊编程操作,因此可以在对第九页面PAGE9执行虚设编程操作13之后对第五页面PAGE5执行精细编程操作14。另外,由于尚未对与第八页面PAGE8相邻的页面之中的第十二页面PAGE12执行模糊编程操作,因此可以在对第十至第十二页面PAGE10至PAGE12执行虚设编程操作15、16和17之后对第八页面PAGE8执行精细编程操作18。
图14是示出当不执行虚设编程操作时的模糊-精细编程操作顺序的示图。
参照图12和图14,图14中所示的第一列与图12中所示的第一列相同,图14中所示的第二列示出模糊-精细编程操作中的模糊编程操作的顺序,并且图14中所示的第三列示出模糊-精细编程操作中的精细编程操作的顺序。
在实施例中,当存储器装置100执行编程操作时,可以从第一页面PAGE1至第十二页面PAGE12顺序地执行编程操作。然而,当确定已经执行或尚未执行对特定页面的编程操作时,可以重新排列模糊编程操作和精细编程操作的顺序。
与图12不同,在图14中,假设不对第五至第八页面PAGE5至PAGE8执行编程操作的情况。
在实施例中,在对第一页面PAGE1的模糊编程操作1之后,可以顺序地执行对第二页面PAGE2的模糊编程操作2、对第三页面PAGE3的模糊编程操作3以及对第四页面PAGE4的模糊编程操作4。
然而,由于已经假设对第五至第八页面PAGE5至PAGE8不执行编程操作的情况,因此当对第一页面PAGE1执行精细编程操作时,第一页面PAGE1不受来自第五页面PAGE5的干扰影响。另外,当对第二至第四页面PAGE2至PAGE4执行精细编程操作时,第二至第四页面PAGE2至PAGE4不受来自与第二至第四页面PAGE2至PAGE4相邻的第六至第八页面PAGE6至PAGE8的干扰影响。
因此,当从接收到第四模糊编程完成响应的模糊编程完成时间起经过的时间量超过参考时间量时,可以顺序地执行对第一页面PAGE1的精细编程操作5、对第二页面PAGE2的精细编程操作6、对第三页面PAGE3的精细编程操作7以及对第四页面PAGE4的精细编程操作8。
随后,可以顺序地执行对第九页面PAGE9的模糊编程操作9、对第十页面PAGE10的模糊编程操作10和对第十一页面PAGE11的模糊编程操作11。由于第九至第十一页面PAGE9至PAGE11不受来自其相邻页面的干扰影响,因此可以顺序地执行对第九页面PAGE9的精细编程操作12、对第十页面PAGE10的精细编程操作13以及对第十一页面PAGE11的精细编程操作14。
图15是示出根据本公开的实施例的存储器控制器的操作的示图。
参照图15,在步骤S1501中,存储器控制器可以将模糊编程命令输出到存储器装置。模糊编程命令可以是与来自主机的模糊-精细编程请求对应的命令中的一个。存储器装置可以通过接收模糊编程命令来执行与模糊编程命令对应的模糊编程操作。通过模糊编程操作,擦除状态的存储器单元可以被编程为未分开的编程状态之中的任意一个状态。
在存储器装置完成编程操作之后,存储器控制器可以从存储器装置接收表示模糊编程操作已经完成的模糊编程完成响应(S1503)。存储器控制器可以通过接收模糊编程完成响应来记录模糊编程完成时间(S1505)。模糊编程完成时间可以是从存储器装置接收模糊编程完成响应的时间。
随后,存储器控制器可以基于模糊编程完成时间和干扰来输出精细编程命令(S1507)。精细编程命令可以是与来自主机的模糊-精细编程请求对应的命令中的一个。
在实施例中,当从模糊编程完成时间起经过的时间量超过参考时间量时,存储器控制器可以输出精细编程命令。然而,在存储器控制器输出精细编程命令之前,存储器控制器可以根据是否已经对与将执行精细编程操作的页面相邻的页面执行模糊编程操作来输出指示虚设编程操作的虚设编程命令。
图16是示出根据本公开的实施例的存储器控制器的操作的示图。
参照图16,步骤S1601至S1615对应于通过对步骤S1507进行细分而获得的步骤。
在步骤S1601中,存储器控制器可以测量从模糊编程完成时间到当前时间的时间。也就是说,存储器控制器可以测量从模糊编程完成时间起经过的时间量。
存储器控制器可以测量从模糊编程完成时间起经过的时间量,并且确定所测量的时间是否已经超过参考时间量(S1603)。参考时间量可以是预定的。
在实施例中,当测量的时间没有超过参考时间量(否)时,存储器控制器可以通过进行至步骤S1601测量从模糊编程完成时间起经过的时间量。
然而,当测量的时间超过参考时间量(是)时,存储器控制器可以确定将执行精细编程操作的页面是否受干扰影响(S1605)。
当将执行精细编程操作的页面受干扰影响(是)时,存储器控制器可以输出用于对与将执行精细编程的页面相邻的页面进行虚设编程的虚设编程命令,然后输出精细编程命令(S1607)。
相反,当将执行精细编程操作的页面不受干扰影响(否)时,存储器控制器可以输出精细编程命令而不输出虚设编程命令(S1609)。
随后,在步骤S1611中,存储器控制器可以确定是否已经从存储器装置接收到模糊编程完成响应。
当存储器控制器接收到模糊编程完成响应(是)时,存储器控制器可以重置模糊编程完成时间(S1613)。重置的模糊编程完成时间可以是新接收到模糊编程完成响应的时间。
然而,当存储器控制器未接收到模糊编程完成响应(否)时,存储器控制器可以确定是否已经对执行了模糊编程操作的所有页面执行精细编程操作(S1615)。当没有对执行了模糊编程操作的所有页面执行精细编程操作(否)时,存储器控制器可以通过进行至步骤S1601测量从模糊编程完成时间起经过的时间量。
图17是示出图1中所示的存储器控制器的另一实施例的示图。
参照图17,存储器控制器1000连接到主机和存储器装置。存储器控制器1000被配置成响应于从主机接收的请求访问存储器装置。例如,存储器控制器1000被配置成控制存储器装置的读取操作、编程操作、擦除操作和后台操作。存储器控制器1000被配置成提供存储器装置和主机之间的接口。存储器控制器1000被配置成驱动固件来控制存储器装置。
存储器控制器1000可以包括处理器1010、存储器缓冲器1020、错误校正码(ECC)电路1030、主机接口1040、缓冲器控制电路1050、存储器接口1060和总线1070。
总线1070可以被配置成提供存储器控制器1000的组件之间的通道。
处理器1010可以控制存储器控制器1000的全部操作,并且执行逻辑操作。处理器1010可以通过主机接口1040与外部主机通信,并且通过存储器接口1060与存储器装置通信。而且,处理器1010可以通过缓冲器控制电路1050与存储器缓冲器1020通信。处理器1010可以使用存储器缓冲器1020作为工作存储器、高速缓存存储器或缓冲存储器来控制存储装置的操作。
处理器1010可以执行闪存转换层(FTL)的功能。处理器1010可以通过FTL将由主机提供的逻辑块地址(LBA)转换为物理块地址(PBA)。FTL可以接收LBA以使用映射表将LBA转换为PBA。根据映射单元存在FTL的几种地址映射方法。代表性地址映射方法包括页面映射方法、块映射方法以及混合映射方法。
处理器1010被配置成使从主机接收的数据随机化。例如,处理器1010可以使用随机化种子使从主机接收的数据随机化。随机化的数据被提供作为待存储到存储器装置的数据以被编程在存储器单元阵列中。
处理器1010可以通过驱动软件或固件来执行随机化和去随机化。
在实施例中,处理器1010可以通过从存储器装置100接收与模糊编程命令对应的模糊编程完成响应记录模糊编程完成时间,并且根据从模糊编程完成时间起经过的时间量是否已经超过参考时间量而将精细编程命令输出到存储器装置100。
在处理器1010输出精细编程命令之前,处理器1010可以根据将执行精细编程操作的页面是否受干扰影响而将虚设编程命令输出到存储器装置100。
存储器缓冲器1020可以用作处理器1010的工作存储器、高速缓存存储器或缓冲存储器。存储器缓冲器1020可以存储由处理器1010执行的代码和命令。存储器缓冲器1020可以包括静态RAM(SRAM)或动态RAM(DRAM)。
ECC电路1030可以执行ECC操作。ECC电路1030可以对通过存储器接口1060待写入存储器装置中的数据执行ECC编码。ECC编码的数据可以通过存储器接口1060被传送到存储器装置。ECC电路1030可以对通过存储器接口1060从存储器装置接收的数据执行ECC解码。在示例中,ECC电路1030可以作为存储器接口1060的组件被包括在存储器接口1060中。
主机接口1040可以在处理器1010的控制下与外部主机通信。主机接口1040可以使用诸如下列的各种通信方式中的至少一种与主机通信:通用串行总线(USB)、串行AT附件(SATA)、高速芯片间(HSIC)、小型计算机系统接口(SCSI)、火线、外围组件互连(PCI)、高速PCI(PCIe)、高速非易失性存储器(NVMe)、通用闪存(UFS)、安全数字(SD)、多媒体卡(MMC)、嵌入式MMC(eMMC)、双列直插式存储器模块(DIMM)、寄存式DIMM(RDIMM)和低负载DIMM(LRDIMM)。
缓冲器控制电路1050被配置成在处理器1010的控制下控制存储器缓冲器1020。
存储器接口1060被配置成在处理器1010的控制下与存储器装置通信。存储器接口1060可以通过通道与存储器装置通信命令、地址和数据。
在示例中,存储器控制器1000可以不包括存储器缓冲器1020和缓冲器控制电路1050。
在示例中,处理器1010可以通过使用代码来控制存储器控制器1000的操作。处理器1010可以从设置在存储器控制器1000中的非易失性存储器装置(例如,只读存储器(ROM))加载代码。在另一示例中,处理器1010可以通过存储器接口1060从存储器装置加载代码。
在示例中,存储器控制器1000的总线1070可以被划分成控制总线和数据总线。数据总线可以被配置成在存储器控制器1000中传送数据,并且控制总线可以被配置成在存储器控制器1000中传送诸如命令和地址的控制信息。数据总线和控制总线彼此分离,并且可以不相互干扰或影响。数据总线可以连接到主机接口1040、缓冲器控制电路1050、ECC电路1030和存储器接口1060。控制总线可以连接到主机接口1040、处理器1010、缓冲器控制电路1050、存储器缓冲器1020和存储器接口1060。
图18是示例性地示出根据本公开的实施例的应用存储装置的存储卡系统的框图。
参照图18,存储卡系统2000包括存储器控制器2100、存储器装置2200和连接器2300。
存储器控制器2100连接到存储器装置2200。存储器控制器2100被配置成访问存储器装置2200。例如,存储器控制器2100被配置成控制存储器装置2200的读取操作、写入操作、擦除操作和后台操作。存储器控制器2100被配置成提供存储器装置2200和主机之间的接口。存储器控制器2100被配置成驱动固件来控制存储器装置2200。存储器装置2200可以与参照图2描述的存储器装置100相同地实施。
在实施例中,存储器控制器2100可以通过从存储器装置2200接收与模糊编程命令对应的模糊编程完成响应记录模糊编程完成时间,并且根据从模糊编程完成时间起经过的时间量是否已经超过参考时间量而将精细编程命令输出到存储器装置2200。
在存储器控制器2100输出精细编程命令之前,存储器控制器2100可以根据将执行精细编程操作的页面是否受干扰影响而将虚设编程命令输出到存储器装置2200。
在示例中,存储器控制器2100可以包括诸如随机存取存储器(RAM)、处理单元、主机接口、存储器接口和错误校正器的组件。
存储器控制器2100可以通过连接器2300与外部装置通信。存储器控制器2100可以根据特定通信协议与外部装置(例如,主机)通信。在示例中,存储器控制器2100可以通过诸如下列的各种通信协议中的至少一种与外部装置通信:通用串行总线(USB)、多媒体卡(MMC)、嵌入式MMC(eMMC)、外围组件互连(PCI)、高速PCI(PCIe)、高级技术附件(ATA)、串行ATA(SATA)、并行ATA(PATA)、小型计算机系统接口(SCSI)、增强型小磁盘接口(ESDI)、电子集成驱动器(IDE)、火线、通用闪存(UFS)、Wi-Fi、蓝牙和NVMe。
在示例中,存储器装置2200可以利用诸如下列的各种非易失性存储器装置来实施:电可擦除可编程ROM(EEPROM)、NAND闪速存储器、NOR闪速存储器、相变RAM(PRAM)、电阻式RAM(ReRAM)、铁电RAM(FRAM)和自旋转移力矩磁性RAM(STT-MRAM)。
存储器控制器2100和存储器装置2200可以被集成到单个半导体装置中以构成存储卡。例如,存储器控制器2100和存储器装置2200可以构成诸如下列的存储卡:PC卡(个人计算机存储卡国际协会(PCMCIA))、紧凑型闪存(CF)卡、智能媒体卡(SM和SMC)、记忆棒、多媒体卡(MMC、RS-MMC、微型MMC和eMMC)、SD卡(SD、迷你SD、微型SD和SDHC)以及通用闪存(UFS)。
图19是示例性地示出根据本公开的实施例的应用存储装置的固态驱动器(SSD)系统的框图。
参照图19,SSD系统3000包括主机3100和SSD 3200。SSD 3200通过信号连接器3001与主机3100交换信号SIG,并且通过电源连接器3002接收电力PWR。SSD 3200包括SSD控制器3210、多个闪速存储器3221至322n、辅助电源3230和缓冲存储器3240。
在实施例中,SSD控制器3210可以用作参照图1描述的存储器控制器200。
SSD控制器3210可以响应于从主机3100接收的信号SIG来控制多个闪速存储器3221至322n。在示例中,信号SIG可以是基于主机3100与SSD 3200之间的接口的信号。例如,信号SIG可以是由诸如下列的接口中的至少一个限定的信号:通用串行总线(USB)、多媒体卡(MMC)、嵌入式MMC(eMMC)、外围组件互连(PCI)、高速PCI(PCIe)、高级技术附件(ATA)、串行ATA(SATA)、并行ATA(PATA)、小型计算机系统接口(SCSI)、增强型小磁盘接口(ESDI)、电子集成驱动器(IDE)、火线、通用闪存(UFS)、Wi-Fi、蓝牙和NVMe。
在实施例中,SSD控制器3210可以通过从多个闪速存储器3221至322n接收与模糊编程命令对应的模糊编程完成响应记录模糊编程完成时间,并且根据从模糊编程完成时间起经过的时间量是否已经超过参考时间量而将精细编程命令输出到多个闪速存储器3221至322n。
在SSD控制器3210输出精细编程命令之前,SSD控制器3210可以根据将执行精细编程操作的页面是否受干扰影响而将虚设编程命令输出到多个闪速存储器3221至322n。
辅助电源3230通过电源连接器3002连接到主机3100。当来自主机3100的电力供应不平稳时,辅助电源3230可以提供SSD 3200的电力。在示例中,辅助电源3230可以位于SSD3200中,或者位于SSD 3200的外部。例如,辅助电源3230可以位于主板上,并向SSD 3200提供辅助电力。
缓冲存储器3240用作SSD 3200的缓冲存储器。例如,缓冲存储器3240可以临时存储从主机3100接收的数据或从多个闪速存储器3221至322n接收的数据,或者临时存储闪速存储器3221至322n的元数据(例如,映射表)。缓冲存储器3240可以包括诸如DRAM、SDRAM、DDR SDRAM、LPDDR SDRAM和GRAM的易失性存储器或诸如FRAM、ReRAM、STT-MRAM和PRAM的非易失性存储器。
图20是示例性地示出根据本公开的实施例的应用存储装置的用户系统的框图。
参照图20,用户系统4000包括应用处理器4100、存储器模块4200、网络模块4300、存储模块4400和用户接口4500。
应用处理器4100可以驱动包括在用户系统4000中的组件、操作系统(OS)、用户程序等。在示例中,应用处理器4100可以包括用于控制包括在用户系统4000中的组件的控制器、接口、图形引擎等。应用处理器4100可以被提供为片上系统(SoC)。
在实施例中,应用处理器4100可以通过从存储模块4400接收与模糊编程命令对应的模糊编程完成响应记录模糊编程完成时间,并且根据从模糊编程完成时间起经过的时间量是否已经超过参考时间量而将精细编程命令输出到存储模块4400。
在应用处理器4100输出精细编程命令之前,应用处理器4100可以根据将执行精细编程操作的页面否受干扰影响而将虚设编程命令输出到存储模块4400。
存储器模块4200可以用作用户系统4000的主存储器、工作存储器、缓冲存储器或高速缓存存储器。存储器模块4200可以包括诸如DRAM、SDRAM、DDR SDRAM、DDR2 SDRAM、DDR3SDRAM、LPDDR SDRAM、LPDDR2 SDRAM和LPDDR3 SDRAM的易失性随机存取存储器或诸如PRAM、ReRAM、MRAM和FRAM的非易失性随机存取存储器。在示例中,应用处理器4100和存储器模块4200可以通过基于堆叠式封装(PoP)来封装而被提供为一个半导体封装。
网络模块4300可以与外部装置通信。在示例中,网络模块4300可以支持诸如下列的无线通信:码分多址(CDMA)、全球移动通信系统(GSM)、宽带CDMA(WCDMA)、CDMA-2000、时分多址(TDMA)、长期演进(LTE)、Wimax、WLAN、UWB、蓝牙和Wi-Fi。在示例中,网络模块4300可以被包括在应用处理器4100中。
存储模块4400可以存储数据。例如,存储模块4400可以存储从应用处理器4100接收的数据。可选地,存储模块4400可以将存储在存储模块4400中的数据传送到应用处理器4100。在示例中,存储模块4400可以利用诸如下列的非易失性半导体存储器装置来实施:相变RAM(PRAM)、磁性RAM(MRAM)、电阻式RAM(RRAM)、NAND闪存、NOR闪存或具有三维结构的NAND闪存。在示例中,存储模块4400可以被提供为诸如用户系统4000的存储卡的可移除驱动器或外部驱动器。
在示例中,存储模块4400可以包括多个非易失性存储器装置,并且多个非易失性存储器装置可以与参照图2描述的存储器装置相同地操作。存储模块4400可以与参照图1描述的存储装置50相同地操作。
用户接口4500可以包括用于将数据或命令输入到应用处理器4100或将数据输出到外部装置的接口。在示例中,用户接口4500可以包括诸如键盘、小键盘、按钮、触摸面板、触摸屏、触摸板、触摸球、摄像机、麦克风、陀螺仪传感器、振动传感器和压电元件的用户输入接口。用户接口4500可以包括诸如液晶显示器(LCD)、有机发光二极管(OLED)显示装置、有源矩阵OLED(AMOLED)显示装置、LED、扬声器和监控器的用户输出接口。
根据本公开,当在模糊编程完成之后经过参考时间量时,可以记录模糊编程完成时间,以便执行精细编程操作。另外,当将执行精细编程操作的页面受干扰影响时,可以在虚设编程操作之后执行精细编程操作。
- 存储器系统、存储器控制器以及存储器控制器的操作方法
- 存储器系统、存储器控制器以及存储器控制器的操作方法