CN109643574A - 用于在完成数据加载操作之前启动预读取操作的方法和设备 - Google Patents

用于在完成数据加载操作之前启动预读取操作的方法和设备 Download PDF

Info

Publication number
CN109643574A
CN109643574A CN201780053495.6A CN201780053495A CN109643574A CN 109643574 A CN109643574 A CN 109643574A CN 201780053495 A CN201780053495 A CN 201780053495A CN 109643574 A CN109643574 A CN 109643574A
Authority
CN
China
Prior art keywords
page
data
programming
programmed
wordline
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.)
Granted
Application number
CN201780053495.6A
Other languages
English (en)
Other versions
CN109643574B (zh
Inventor
K·川合
T·田中
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of CN109643574A publication Critical patent/CN109643574A/zh
Application granted granted Critical
Publication of CN109643574B publication Critical patent/CN109643574B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/56Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
    • G11C11/5621Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency using charge storage in a floating gate
    • G11C11/5628Programming or writing circuits; Data input circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0662Virtualisation aspects
    • G06F3/0665Virtualisation aspects at area level, e.g. provisioning of virtual or logical volumes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/56Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
    • G11C11/5621Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency using charge storage in a floating gate
    • G11C11/5642Sensing or reading circuits; Data output circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/04Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS
    • G11C16/0408Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS comprising cells containing floating gate transistors
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/04Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS
    • G11C16/0483Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS comprising cells having several storage transistors connected in series
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/08Address circuits; Decoders; Word-line control circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/26Sensing or reading circuits; Data output circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/32Timing circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C2211/00Indexing scheme relating to digital stores characterized by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C2211/56Indexing scheme relating to G11C11/56 and sub-groups for features not covered by these groups
    • G11C2211/562Multilevel memory programming aspects
    • G11C2211/5623Concurrent multilevel programming and reading
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C2211/00Indexing scheme relating to digital stores characterized by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C2211/56Indexing scheme relating to G11C11/56 and sub-groups for features not covered by these groups
    • G11C2211/564Miscellaneous aspects
    • G11C2211/5648Multilevel memory programming, reading or erasing operations wherein the order or sequence of the operations is relevant

Abstract

在一个实施例中,一种设备包括存储装置,该存储装置包括NAND闪存存储器阵列,该存储装置用于:在第一编程遍期间,将NAND闪存存储器阵列的第一字线的多个单元编程为存储数据的第一页面;在完成要在第二编程遍期间编程到所述多个单元的数据的第二页面的加载之前,启动对数据的第一页面的读取;以及在第二编程遍期间,将NAND闪存存储器阵列的第一字线的多个单元编程为存储数据的第一页面和数据的第二页面。

Description

用于在完成数据加载操作之前启动预读取操作的方法和设备
相关申请的交叉引用
本申请要求2016年9月30日提交的题为“METHOD AND APPARATUS FOR INITIATINGPRE-READ OPERATION BEFORE COMPLETION OF DATA LOAD OPERATION”的美国非临时专利申请No.15/281,439的优先权的权益,在此通过引用的方式将该美国非临时专利申请的全部内容并入本文中。
技术领域
本公开总体上涉及计算机开发领域,并且更具体地,涉及NAND闪存存储器。
背景技术
计算机系统可以包括耦合到一个或多个存储装置的一个或多个中央处理单元(CPU)。CPU可以包括用于执行操作系统和利用耦合到CPU的存储装置的其它软件应用的处理器。软件应用可以将数据写入存储装置。数据可以由存储装置存储在存储装置的多个存储器单元(例如,NAND闪存存储器单元)中。
附图说明
图1示出了根据某些实施例的计算机系统的部件的框图。
图2示出了根据某些实施例的NAND闪存存储器阵列的一部分的示例图。
图3示出了根据某些实施例的NAND闪存存储器单元的示例性编码方案。
图4示出了根据某些实施例的TLC NAND闪存存储器单元的示例性两遍编程序列。
图5示出了根据某些实施例的预读取操作和数据加载操作的示例性序列。
图6示出了根据某些实施例的示例性存储器模块。
图7示出了根据某些实施例的用于在完成数据加载操作之前启动预读取操作的示例性流程。
附图中的类似的附图标记和名称指示类似的元件。
具体实施方式
尽管附图描绘了特定的计算机系统,但是各种实施例的概念适用于任何适合的集成电路和其它逻辑装置。可以使用本公开的教导的装置的示例包括台式计算机系统、服务器计算机系统、存储系统、手持装置、平板电脑、其它薄笔记本、片上系统(SOC)装置、以及嵌入式应用。手持装置的一些示例包括蜂窝电话、数码相机、媒体播放器、个人数字助理(PDA)和手持PC。嵌入式应用可以包括微控制器、数字信号处理器(DSP)、片上系统、网络计算机(NetPC)、机顶盒、网络集线器、广域网(WAN)交换机、或可以执行下面教导的功能和操作的任何其它系统。本公开的各种实施例可以用在任何适合的计算环境中,诸如个人计算装置、服务器、大型机、云计算服务提供商基础设施、数据中心、通信服务提供商基础设施(例如,演进分组核的一个或多个部分)、或包括一组计算装置的其它环境。
图1示出了根据某些实施例的计算机系统100的部件的框图。系统100包括耦合到外部输入/输出(I/O)控制器104的中央处理单元(CPU)102、多个存储装置106A、106B和106C(存储装置106B和106C可以以与存储装置106A类似的方式执行和/或可以具有存储装置106A的任何适合的特性)和系统存储器装置107。在操作期间,可以在存储装置106A或系统存储器装置107与CPU 102之间传输数据。在各种实施例中,涉及存储装置106A或系统存储器装置107的特定数据操作(例如,擦除、编程和读取操作)可以由操作系统或由处理器108执行的其它软件应用来管理。
在各种实施例中,存储装置106A包括NAND闪存存储器(在本文中,包括NAND闪存存储器的存储装置被称为NAND闪存存储装置)。在一些实施例中,存储装置106A可以是固态驱动器、存储卡、通用串行总线(USB)闪存驱动器、或集成在诸如智能电话、相机、媒体播放器或其它计算装置的装置内的存储器。通常,具有NAND闪存存储器的存储装置按存储器的每个单元所存储的位的数量来分类。例如,单级单元(SLC)存储器具有均存储数据的一个位的单元,多级单元(MLC)存储器具有均存储数据的两个位的单元,三级单元(TLC)存储器具有均存储数据的三个位的单元,并且四级单元(QLC)存储器具有均存储数据的四个位的单元,尽管一些存储器可以在同一阵列上或在同一装置的不同阵列上利用多种编码方案(例如,MLC和TLC)。
用于一组存储器单元的编程序列可以包括将所有预期页面编程到该组单元中。编程序列可以包括一个或多个编程遍(programming pass)。编程遍(其可以包括一个或多个编程循环)可以编码该组单元中的一个或多个页面(其中每个页面对应于存储在单元中的位)。编程遍可以包括将一个或多个有效编程电压施加到要编程的单元,然后向这些单元施加一个或多个验证电压,以便确定哪些单元已经完成编程。
当在第一编程遍期间编程的页面的数据被加载时,所述数据可以存储在存储器元件(诸如一组或多组锁存器)中,其控制被编程到该组单元中的值。然而,在第二编程遍之前,页面数据可能丢失(例如,存储器元件可能被要写入另一组单元的一个或多个其它页面重写)。由于每个单元的目标电平基于要编程到单元中的位的组合,因此应该结合要在第二次编程遍期间编程的页面的数据来访问在第一编程遍期间编程的页面的数据。
在各种实施例中,在对特定组的单元执行第二编程遍之前,在“预读取”操作中从所述单元读取在第一编程遍中编程的页面。在一些系统中,在已经从主机加载了去往那些单元的上层页面的所有数据之后,执行对已经存储在一组单元中的下层页面的预读取。然而,这种系统向编程序列中引入了不必要的延迟。本文的各种实施例提供了用于在完成数据加载操作之前启动(和/或完成)预读取操作的系统和方法,以使得预读取操作的至少一部分与数据加载操作并行执行。从而提供各种技术优势,例如减少编程时间而不引入信号劣化。
存储装置106A可以包括任何数量的存储器116,并且每个存储器116可以包括任何数量的存储器模块122A-D。在所描绘的实施例中,存储器装置116包括存储器模块122A-D(虽然本文中可以具体参考存储器模块122A,但任何存储器模块可以具有存储器模块122A的任何适合的特性)。
CPU 102包括处理器108,例如微处理器、嵌入式处理器、数字信号处理器(DSP)、网络处理器、手持处理器、应用处理器、协处理器、片上系统(SOC)、或执行代码(即软件指令)的其它装置。在所描绘的实施例中,处理器108包括两个处理元件(在所描绘的实施例中为核114A和114B),其可以包括非对称处理元件或对称处理元件。然而,处理器可以包括任何数量的可以是对称或非对称的处理元件。
在一个实施例中,处理元件是指支持软件线程的硬件或逻辑。硬件处理元件的示例包括:线程单元、线程槽、线程、处理单元、上下文、上下文单元、逻辑处理器、硬件线程、核和/或任何其它元件,其能够保持处理器的状态,例如执行状态或架构状态。换句话说,在一个实施例中,处理元件指的是能够独立地与诸如软件线程、操作系统、应用程序或其它代码的代码相关联的任何硬件。物理处理器(或处理器插座)通常是指集成电路,其可能包括任何数量的其它处理元件,例如核或硬件线程。
核114可以指代位于集成电路上的能够维持独立架构状态的逻辑,其中每个独立维持的架构状态与至少一些专用执行资源相关联。硬件线程可以指代位于集成电路上的能够维持独立架构状态的任何逻辑,其中独立维持的架构状态共享对执行资源的访问。可以看出,当某些资源被共享而其它资源专用于架构状态时,硬件线程和核的命名之间的界限重叠。然而通常,操作系统将核和硬件线程视为个体逻辑处理器,其中操作系统能够单独地调度每个逻辑处理器上的操作。
在各种实施例中,处理元件还可以包括一个或多个算术逻辑单元(ALU)、浮点单元(FPU)、高速缓存、指令流水线、中断处理硬件、寄存器、或其它硬件以便于处理元件的操作。
I/O控制器110是集成的I/O控制器,其包括用于在CPU 102和I/O装置之间传送数据的逻辑,其可以指代能够向例如CPU 102的电子装置传输数据和/或从该电子装置接收数据的任何适合的装置。例如,I/O装置可以包括:音频/视频(A/V)装置控制器,例如图形加速器或音频控制器;数据存储装置控制器,例如闪存存储器装置、磁存储盘或光存储盘控制器;无线收发器;网络处理器;网络接口控制器;或用于另一输入装置的控制器,另一输入装置例如监视器、打印机、鼠标、键盘或扫描仪;或其它适合的装置。在特定实施例中,I/O装置可以包括通过I/O控制器110耦合到CPU102的存储装置106A。
I/O装置可以使用任何适合的信号发送协议与CPU 102的I/O控制器110通信,所述协议例如外围部件互连(PCI)、PCI快速(PCIe)、通用串行总线(USB)、串行附接SCSI(SAS)、串行ATA(SATA)、光纤信道(FC)、IEEE 802.3、IEEE 802.11或其它当前或未来的信号发送协议。在特定实施例中,I/O控制器110和底层I/O装置可以根据诸如非易失性存储器快速(NVMe)(例如,如由可在www.nvmexpress.org/specifications/获得的规范中的一个或多个所描述的)或高级主机控制器接口(AHCI)(例如,如一个或多个AHCI规范所描述的,例如可在http://www.intel.com/content/www/us/en/io/serial-ata/serial-ata-ahci-spec-revl-3-l.html获得的串行ATA AHCI:规范1.3.1版)的逻辑装置接口规范来传送数据和命令。在各种实施例中,耦合到I/O控制器的I/O装置可以位于芯片外(即,不与CPU 102在同一芯片上),或者可以集成在与CPU 102相同的芯片上。
CPU存储器控制器112是集成存储器控制器,其包括用于控制去往和来自一个或多个系统存储器装置107的数据流的逻辑。CPU存储器控制器112可以包括可操作用于从系统存储器装置107读取、向系统存储器装置107写入、或从系统存储器装置107请求其它操作的逻辑。在各种实施例中,CPU存储器控制器112可以从核114和/或I/O控制器110接收写入请求,并且可以将这些请求中指定的数据提供给系统存储器装置107以存储在其中。CPU存储器控制器112还可以从系统存储器装置107读取数据并将读取的数据提供给I/O控制器110或核114。在操作期间,CPU存储器控制器112可以发出包括系统存储器装置107的一个或多个地址的命令,以便从存储器读取数据或将数据写入存储器(或执行其它操作)。在一些实施例中,CPU存储器控制器112可以在与CPU 102相同的芯片上实施,而在其它实施例中,CPU存储器控制器112可以在与CPU 102不同的芯片上实施。I/O控制器110可以针对一个或多个存储装置106执行类似的操作。
CPU 102还可以通过外部I/O控制器104耦合到一个或多个其它I/O装置。在特定实施例中,外部I/O控制器104可以将存储装置106A耦合到CPU 102。外部I/O控制器104可以包括用于管理一个或多个CPU 102与I/O装置之间的数据流的逻辑。在特定实施例中,外部I/O控制器104与CPU 102一起位于主板上。外部I/O控制器104可以使用点对点或其它接口与CPU102的部件交换信息。
系统存储器装置107可以存储任何适合的数据,例如处理器108用来提供计算机系统100的功能的数据。例如,与执行的程序相关联的数据或者由核114访问的文件可以存储在系统存储器装置107中。因此,系统存储器装置107可以包括存储由核114执行或以其它方式使用的数据和/或指令序列的系统存储器。在各种实施例中,系统存储器装置107可以存储即使在系统存储器装置107的电力被移除之后也仍然被存储的持久数据(例如,用户的文件或指令序列)。系统存储器装置107可以专用于特定CPU 102或者与计算机系统100的其它装置(例如,一个或多个其它处理器或其它装置)共享。
在各种实施例中,系统存储器装置107可以包括存储器,该存储器包括任何数量的存储器模块、存储器装置控制器和其它支持逻辑(未示出)。存储器模块可以包括非易失性存储器和/或易失性存储器。非易失性存储器是不需要电力来维持由存储介质存储的数据的状态的存储介质。非易失性存储器的非限制性示例可以包括以下中的任一种或组合:固态存储器(诸如平面或3D NAND闪存存储器或NOR闪存存储器)、3D交叉点存储器、使用硫系化物相变材料的存储器装置(例如,硫系玻璃)、字节可寻址非易失性存储器装置、铁电存储器、硅-氧化物-氮化物-氧化物-硅(SONOS)存储器、聚合物存储器(例如,铁电聚合物存储器)、铁电晶体管随机存取存储器(Fe-TRAM)奥氏存储器、纳米线存储器、电可擦除可编程只读存储器(EEPROM)、其它各种类型的非易失性随机存取存储器(RAM)、以及磁存储存储器。在一些实施例中,3D交叉点存储器可以包括无晶体管的可堆叠交叉点架构,其中存储器单元位于字线和位线的交叉处并且可单独寻址,并且其中位存储基于体电阻的变化。易失性存储器是需要电力来维持存储介质所存储的数据的状态的存储介质。易失性存储器的示例可以包括各种类型的随机存取存储器(RAM),诸如动态随机存取存储器(DRAM)或静态随机存取存储器(SRAM)。可以在存储器模块中使用的一种特定类型的DRAM是同步动态随机存取存储器(SDRAM)。在一些实施例中,是易失性存储器的存储器107的任何部分可以符合JEDEC标准,其包括但不限于双倍数据速率(DDR)标准,例如DDR3、4和5、或低功率DDR4(LPDDR4)以及新兴标准。
存储装置106A可以存储任何适合的数据,例如处理器108用来提供计算机系统100的功能的数据。例如,与执行的程序相关联的数据或由核114A和114B访问的文件可以存储在存储装置106A中。因此,在一些实施例中,存储装置106A可以用作系统存储器,其存储由核114A和114B执行或以其它方式执行的数据和/或指令序列。在各种实施例中,存储装置106A可以存储即使在存储器装置106A的电力被移除之后也仍然被存储的持久数据(例如,用户的文件或软件应用程序代码)。存储装置106A可以专用于CPU 102或与计算机系统100的其它装置(例如,另一CPU或其它装置)共享。
在所描绘的实施例中,存储装置106A包括存储装置控制器118和一个存储器116,存储器116包括可操作用于存储数据的四个存储器模块122A-D,然而,存储装置可以包括任何适合数量的存储器模块。存储器模块122A包括多个存储器单元,每个存储器单元可操作用于存储一个或多个位。存储器模块122A的单元可以以任何适合的方式布置,例如以行(例如,字线)和列(例如,位线)、三维结构或其它方式布置。在各种实施例中,可以在逻辑上将单元分组成存储体、块、子块、字线、页面、帧、字节或其它适合的组。在各种实施例中,存储器模块122A包括一个或多个NAND闪存存储器阵列。结合图2更详细地描述了NAND闪存存储器阵列。
存储器模块122A可以包括上面列出的任何易失性或非易失性存储器或其它适合的存储器。在特定实施例中,存储器模块122A包括非易失性存储器,例如平面或3D NAND闪存存储器。在特定实施例中,具有非易失性存储器的存储器模块122A可以符合由电子装置工程联合委员会(JEDEC)颁布的用于非易失性存储器的一个或多个标准,例如JESD218、JESD219、JESD220-1、JESD220C、JESD223C、JESD223-1或其它适合的标准(本文引用的JEDEC标准可在www.jedec.org获得)。在特定实施例中,存储装置包括符合由JEDEC针对SDRAM存储器颁布的标准的一个或多个部分的NAND闪存存储器,所述标准例如是用于双倍数据速率(DDR)SDRAM的JESD79F、用于DDR2SDRAM的JESD79-2F、用于DDR3SDRAM的JESD79-3F、或用于DDR4SDRAM的JESD79-4A(这些标准可在www.jedec.org获得)。这种标准(和类似标准)可以被称为基于DDR的标准,并且实施这种标准的存储装置的通信接口可以被称为基于DDR的接口。例如,包括NAND闪存存储器的存储装置106A可以接收具有符合基于DDR的标准的格式的命令,并且可以将命令转换成与存储装置106A的NAND闪存存储器兼容的一个或多个命令。类似地,存储装置106A可以在将结果发送到CPU 102之前将来自在NAND闪存存储器上执行的操作的结果格式化成符合基于DDR的标准的格式。
在特定实施例中,存储器116是半导体封装。在各种实施例中,半导体封装可以包括壳体,壳体包括一个或多个半导体管芯(也称为芯片)。封装还可以包括用于连接到外部电路的接触引脚或引线。在特定实施例中,每个存储器模块122A体现在其自己的管芯上。因此,在一些实施例中,存储器116可以是包括多个管芯的封装,每个管芯包括存储器模块122A。然而,封装仅仅是存储器116可以采用的形式的一个示例,因为存储器装置可以采用任何适合的物理布置的一个或多个存储器模块和相关联的逻辑的任何适合的布置。例如,尽管单个物理封装可以包括单个存储器116,但是多个存储器116可以驻留在单个封装上,或者存储器116可以分散在多个封装上。作为另一示例,存储器116可以体现在一个或多个不同物理介质中,所述物理介质例如是电路板、管芯、磁盘驱动器、其它介质或其任何组合(或与一个或多个封装的组合)。类似地,管芯仅仅是存储器模块122A的一个示例,因为存储器模块122A可以是存储器单元和与存储器单元相关联的逻辑的任何适合的布置。例如,尽管单个管芯可以包括单个存储器模块122A,但是多个存储器模块可以驻留在单个管芯上,或者存储器单元可以分散在多个管芯上。作为另一示例,存储器模块122A可以体现在一个或多个不同的物理介质中,所述物理介质例如是电路板、封装、磁盘驱动器、其它介质或其任何组合(或与一个或多个管芯的组合)。
存储装置106A可以包括任何适合类型的存储器,并且不限于各种实施例中的存储器的特定速度、技术或形状因子。例如,存储装置106A可以是磁盘驱动器(诸如固态驱动器)、闪存驱动器、与计算装置集成的存储器(例如,集成在计算装置的电路板上的存储器)、可以插入存储器插槽中的存储器模块(例如,双列直插式存储器模块)、或其它类型的存储装置。此外,计算机系统100可以包括多种不同类型的存储装置。存储装置106A可以包括任何适合的接口,以使用任何适合的通信协议与CPU存储器控制器112或I/O控制器110通信,所述通信协议例如是基于DDR的协议、PCI、PCIe、USB、SAS、SATA、FC、系统管理总线(SMBus)或其它适合的协议。存储装置106A还可以包括通信接口,以根据诸如NVMe、AHCI或其它适合的规范的任何适合的逻辑装置接口规范与CPU存储器控制器112或I/O控制器110通信。在特定实施例中,存储装置106A可以包括多个通信接口,每个通信接口使用单独的协议与CPU存储器控制器112和/或I/O控制器110通信。
存储装置控制器118可以包括用于从CPU 102接收请求的逻辑(例如,经由CPU存储器控制器112或I/O控制器110),使得将针对存储器116(或其上的存储器单元)执行该请求,并向CPU 102提供与该请求相关联的数据(例如,经由CPU存储器控制器112或I/O控制器110)。控制器118还可以操作用于检测和/或校正在存储器操作期间遇到的错误。在实施例中,控制器118还跟踪特定单元(或单元的逻辑分组)已被写入的次数以便执行损耗均衡,和/或检测何时单元正在接近它们可以被可靠地写入的所估计的次数。在执行耗损均衡时,存储装置控制器118可以在存储器116的存储器的块之间均匀地展开写入操作,以使得特定块不会被写入得比其它块更多。在各种实施例中,控制器118还可以监视存储装置106A的各种特性,例如温度或电压,并向CPU 102报告相关联的统计数据。存储装置控制器118可以在与存储器116相同的板或装置上实施,或者在不同的板或装置上实施。例如,在一些环境中,存储装置控制器118可以是集中式存储控制器,其管理计算机系统100的多个不同存储器116(其可以均是相同类型的存储器或可以是不同类型)的存储器操作(并且因此,可以将本文描述的存储装置控制器功能提供给与其耦合的任何存储器)。
在各种实施例中,存储装置106A还包括地址转换引擎120。在所描绘的实施例中,地址转换引擎120被示为存储装置控制器118的部分,尽管在各种实施例中,地址转换引擎120可以与存储装置控制器118分开并且通信地耦合到存储装置控制器118。在各种实施例中,地址转换引擎120可以集成在与存储装置控制器118相同的芯片或封装上,或者集成在不同的芯片或封装上。
在各种实施例中,地址转换引擎120可以包括用于存储和更新逻辑地址空间(例如,耦合到存储装置106A的计算主机可见的地址空间)与存储装置106A的存储器116的物理地址空间(可以或可以不暴露于计算主机)之间的映射的逻辑。逻辑地址空间可以暴露数据的多个逻辑组,这些逻辑组被物理地存储在可通过存储装置106A的物理地址空间寻址的存储器的对应物理组上。物理地址空间的物理地址可以包括标识存储装置106A的物理存储器位置(例如,存储器116的存储器内的位置)的任何适合的信息,诸如物理存储器位置所在的存储器116的标识符、物理存储器位置所在的存储器模块122A的标识符(例如,逻辑单元号)、物理存储器位置的一个或多个页面、物理存储器位置的一个或多个子块、物理存储器位置的一个或多个字线、物理存储器位置的一个或多个位线、或其它适合的标识符或其编码。
地址转换引擎120或存储装置106A的其它部分可以包括用于存储逻辑到物理映射结构和其它信息的任何适合的存储器类型、以及用于改变存储在逻辑到物理映射结构和其它信息中的值(例如,响应于来自存储装置控制器118的请求)并从逻辑到物理映射结构和其它信息读取值(例如,以将值提供给存储装置控制器118以用于存储器操作)的任何适合的逻辑。
用于逻辑到物理映射结构和其它信息的存储介质可以包括在地址转换引擎120和/或存储装置控制器118内,或者可以通信地耦合到地址转换引擎和/或存储装置控制器。在各种实施例中,用于逻辑到物理映射结构和其它信息的存储介质可以集成在与存储装置控制器118和/或地址转换引擎120相同的封装或芯片上,或者可以实施在单独的封装或芯片上。
在各种实施例中,地址转换引擎120和/或存储装置控制器118可以通过管理逻辑到物理映射结构和其它信息的地址映射来提供损耗均衡。在特定实施例中,地址转换引擎120和/或存储装置控制器118还可以通过不允许不良单元的物理地址(或单元的逻辑分组)映射到逻辑地址空间来防止使用不良存储器单元(或单元的逻辑分组)。
在各种实施例中,存储装置106A还包括编程控制逻辑124,其可操作用于控制在将数据被写入存储器116或从存储器116读取数据时执行的编程序列。在各种实施例中,编程控制逻辑124可以提供在数据的一个或多个页面的编程和/或读取期间施加到存储器单元的各种电压(或指示应提供哪些电压的信息),执行错误校正,以及执行其它适合的功能。
在各种实施例中,编程控制逻辑124可以集成在与存储装置控制器118相同的芯片上或者集成在不同的芯片上。在所描绘的实施例中,编程控制逻辑124被示为存储装置控制器118的部分,尽管在各种实施例中,编程控制逻辑124的全部或部分可以与存储装置控制器118分开并且可通信地耦合到存储装置控制器118。例如,编程控制逻辑124的全部或部分可以与存储器116和/或存储器模块122A位于同一封装或芯片上。
在一些实施例中,系统100的全部或一些元件驻留在(或耦合到)同一电路板(例如,母板)上。在各种实施例中,可以存在元件之间的任何适合的分区。例如,CPU 102中描绘的元件可以位于单个管芯(即,芯片上)或封装上,或者CPU 102的任何元件可以位于芯片外或封装外。类似地,存储装置106A中描绘的元件可以位于单个芯片上或多个芯片上。在各种实施例中,存储装置106A和计算主机(例如,CPU 102)可以位于同一电路板上或同一装置上,并且在其它实施例中,存储装置106A和计算主机可以位于不同的电路板或装置上。
系统100的部件可以以任何适合的方式耦合在一起。例如,总线可以将任何部件耦合在一起。总线可以包括任何已知的互连,例如多点总线、网状互连、环形互连、点对点互连、串行互连、并行总线、相干(例如,高速缓存相干)总线、分层协议架构、差分总线以及射电收发逻辑(Gunning transceiver logic)(GTL)总线。在各种实施例中,集成I/O子系统包括系统100的诸如核114、一个或多个CPU存储器控制器112、I/O控制器110、集成I/O装置、直接存储器存取(DMA)逻辑(未示出)等的各种部件之间的点对点多路复用逻辑。在各种实施例中,计算机系统100的部件可以通过包括任何数量的中间网络节点的一个或多个网络耦合在一起,所述中间网络节点例如是路由器、交换机或其它计算装置。例如,计算主机(例如,CPU 102)和存储装置106A可以通过网络而通信地耦合。
尽管未示出,但是系统100可以使用电池和/或电源插座连接器和相关联的系统来接收电力,使用显示器来输出由CPU 102提供的数据,或者使用网络接口来允许CPU 102通过网络进行通信。在各种实施例中,电池、电源插座连接器、显示器和/或网络接口可以通信地耦合到CPU 102。可以使用其它电源,例如可再生能源(例如,太阳能或基于运动的电力)。
图2示出了根据某些实施例的NAND闪存存储器阵列200的一部分的示例图。在各种实施例中,存储器模块122A可以包括一个或多个NAND闪存存储器阵列。NAND闪存存储器阵列200可以包括被布置成诸如串联串204的列的多个非易失性存储器单元202。在各种实施例中,存储器单元202可以包括具有浮置栅极的晶体管,该浮置栅极存储指示由存储器单元202存储的一个或多个位值的电荷。在串联串204中,单元202的漏极(除顶部单元之外)均耦合到另一个单元202的源极。
阵列200还包括字线206。字线206可以跨越多个串联串204(例如,字线可以耦合到每个串联串204的一个存储器单元)并连接到阵列200的一行的每个存储器单元的控制栅极,并且用于将该行中的存储器单元202的控制栅极偏置。位线208均通过漏极选择栅极214和感测电路220耦合到串联串204,感测电路220通过感测特定位线208上的电压或电流来检测每个单元的状态。
存储器单元的每个串联串204通过源极选择栅极212耦合到源极线210并且通过漏极选择栅极214耦合到个体位线208。源极选择栅极212由源极选择栅极控制线216控制,并且漏极选择栅极214由漏极选择栅极控制线218。
在各种实施例中,可以根据SLC、MLC、TLC、QLC、或其它编码方案对每个存储器单元202进行编程。每个单元的阈值电压(Vt)指示存储在单元中的数据。图3示出了根据某些实施例的NAND闪存存储器单元202内的位的示例性编码。在所描绘的实施例中,每个椭圆区域表示阈值电压的范围,其对应于该单元内编码的值。例如,在SLC编码方案中,较低阈值电压对应于位值1,并且较高阈值电压对应于位值0。作为另一示例,在MLC编码方案中,阈值电压的最低范围对应于“11”,阈值电压的下一个最高范围对应于“01”,阈值电压的下一个最高范围对应于“00”,并且阈值电压的最高范围对应于“10”。类似地,对于TLC编码方案(或未示出的其它编码方案),阈值电压的各种范围对应于在每个单元内编码的位的各种值。
编程电平可以指代所描绘的区域之一。换句话说,编程电平可以对应于编码方案中使用的位编码之一。通常,如果单元要存储由最低电压区域表示的值,则不需要对单元进行编程(因为在其擦除状态下,其已经具有最低电压区域中的阈值电压)。因此,如本文所使用的,下一个最低区域(例如,MLC方案的“01”或TLC方案的“011”)将被称为第一编程电平,下一个区域(例如,MLC方案的“00”或TLC方案的“001”)将被称为第二编程电平,依此类推。在该术语下,MLC方案具有三个编程电平,TLC方案具有七个编程电平,并且QLC方案具有十五个编程电平。当数据(例如,一个或多个页面)被写入存储器116时,多个单元可以被编程到第一编程电平,多个单元可以被编程到第二编程电平,等等。
图3中描绘的各种R电压值(例如,R1、R2、R3、...)表示当正在读取单元的值时可以施加到字线的读取电压。当施加特定读取电压时,感测电路220可以基于由感测电路220经由单元的位线感测的电压或电流来判断单元的阈值是大于还是小于读取电压。尽管未在图3中示出,QLC编码方案可以利用类似的方案,其中可以使用十五个读取电压来解析每个单元内的四个位的值,其中R1<R2<R3<…<R15。
所描绘的各种编程验证电压(MLC编码方案中的PV1-PV3以及TLC编码方案中的PV1-PV7)表示可以在单元的编程期间施加到单元以判断单元的阈值电压是否已经达到其期望电平的编程验证电压。
在特定实施例中,可以一次对一个或多个页面的单元进行编程,其中页面存储在耦合到同一字线的一组单元中。作为一个示例,可以通过特定字线和特定子块来标识该组单元。作为另一个示例,该组单元可以表示该字线的所有单元。该组单元可以存储数据的一个页面(如果根据SLC方案对单元进行编码)或数据的多个页面(如果根据MLC、TLC、QLC或其它多级编码方案对单元进行编码)。
在各种实施例中,被编码以存储多个位的单元可以形成多个不同页面的一部分,其中单元的每个位对应于不同的页面。例如,对于用两位编码的单元(即,使用MLC编码方案),一个位可以对应于高位页面(Upper Page)(UP)并且另一位可以对应于低位页面(Lower Page)(LP)。作为另一示例,对于用三个位编码的单元(即,使用TLC编码方案),一个位可以对应于LP,一个位可以对应于UP,并且另一个位可以对应于额外的页面(XP)。作为又一示例,对于用四个位编码的单元(即,使用QLC编码方案),一个位可以对应于LP,另一个位可以对应于UP,另一个位可以对应于XP,并且最后一位可以对应于顶部页面(TP)。每个页面(例如,LP、UP、XP或TP)可以包括由字线的多个不同单元存储的对应位的集合。例如,参考图3中所示的编码,使用TLC方案编码的多个单元的所有最右位可以形成LP,多个单元的所有中间位可以形成UP,并且多个单元的所有最左位可以形成XP。
用于一组单元的编程序列可以包括将所有预期页面编程到该组单元中。编程序列可以包括一个或多个编程遍。编程遍(可以包括一个或多个编程循环)可以编码一个或多个页面。编程遍可以包括将一个或多个有效编程电压施加到要编程的单元,然后将一个或多个验证电压施加到这些单元,以便确定哪些单元已经完成了编程。在一些实施例中,编程遍的一个或多个循环可以包括施加一个或多个有效编程电压而不施加一个或多个验证电压。向单元施加有效编程电压可以包括改变控制栅极和单元的沟道之间的电压差,以便改变单元的阈值电压。因此,可以设置字线(耦合到目标单元的控制栅极)和/或单元的沟道的电压,以便实现有效编程电压的施加。由于“编程电压”通常用于指代施加到字线的电压,因此术语“有效编程电压”在本文中将用于指代控制栅极与单元的沟道之间的电压差(在沟道保持在0V的实例中,有效编程电压将与编程电压同义)。
在特定实施例中,数据的逻辑页面(即,诸如CPU 102的计算主机所引用的数据页面)可以对应于存储在单元中的存储器的用多个位编码的LP、UP、XP、TP或其它页面。因此,数据的两个逻辑页面可以对应于存储在使用MLC方案编码的一组单元中的LP和UP,数据的三个逻辑页面可以对应于存储在使用TLC方案编码的一组单元中的LP、UP和XP,数据的四个逻辑页面可以对应于存储在使用QLC方案编码的一组单元中的LP、UP、XP和TP,等等。因此,当计算主机写入存储装置106A时,如果要在单遍中编程多个页面,则可以在该遍中从计算主机加载多个逻辑页面并对其编程。例如,在使用TLC方案编码的存储器中,当LP和UP在单遍中被编程时,可以聚合数据的两个逻辑页面(其中一个逻辑页面存储在LP中并且一个逻辑页面存储在UP中)。
如上所述,编程遍可以编程一个或多个页面。例如,当使用MLC方案对字线的单元进行编码时,可以通过将单元的电压电平设置为期望的编程电平(例如,在针对图3中的MLC方案描绘的四个电压范围之一内)来在单个编程遍期间编程两个页面(LP和UP)。替代地,可以在第一遍中编程LP,并且可以在第二遍中编程UP。例如,在第一遍期间,可以基于每个位的期望值将单元的第一位(其中单元的第一位共同形成LP)编程为二进制状态。例如,参考图3中描绘的MLC方案,如果单元的最右位形成LP,并且特定的最右位要被编程为“0”值,则在第一编程遍中单元的Vt可以被编程为略大于PV2的值(或者与PV2相差至少一部分,以区别于保持在低压擦除状态中的单元)。如果要将特定最右位存储为“1”值,则可以将其保持在低电压电平。在第二遍期间,相同单元的第二位(其中单元的第二位共同形成UP)被编程,导致单元的Vt被改变为其期望的Vt(例如,在针对图3中的MLC方案描绘的四个电压范围中的一个内),因而存储UP和LP的值。作为其它示例,当使用TLC方案或QLC方案对字线的单元进行编码时,可以在单个编程遍期间通过将单元的电压电平设置为期望的编程电平来编程所有页面,或者可以在第一编程遍期间编程一个或多个页面,并且在第二遍期间编程其余页面(或者可以使用多个附加遍来编程剩余页面)。例如,在TLC方案中,第一遍可以编码LP,并且第二遍可以编码UP和XP,或者第一遍可以编码LP和UP,并且第二遍可以编码XP。作为另一示例,在QLC方案中,第一遍可以编码LP,并且第二遍可以编码UP、XP和TP;第一遍可以编码LP和UP,并且第二遍可以编码XP和TP;或者第一遍可以编码LP、UP和XP,并且第二遍可以编码TP。
如本文所使用的,“下层页面”可以指在第一编程遍中编程的一个或多个页面,并且“上层页面”可以指在一个或多个随后的编程遍中编程的一个或多个页面。这些名称可以与先前描述的低位页面(LP)和高位页面(UP)区分开(一般情况下,当使用多个编程遍时,低位页面将是本文使用的下层页面,而高位页面可以是下层页面或上层页面,取决于它是在第一编程遍中编程还是在随后的编程遍中编程。因此,在MLC方案中,可以在第一编程遍中编程下层页面(例如,LP),并且可以在第二编程遍中编程上层页面(例如,UP)。作为另一示例,在TLC方案中,可以在第一编程遍中编程下层页面(例如,LP),并且可以在第二编程遍中编程上层页面(例如,UP和XP),或者可以在第一编程遍中编程下层页面(例如,LP和UP),并且可以在第二编程遍中编程上层页面(例如,XP)。作为另一示例,在QLC方案中,可以在第一编程遍中编程下层页面(例如,LP),并且可以在第二编程遍中编程上层页面(例如,UP、XP和TP)。作为另一示例,在不同的QLC方案中,可以在第一编程遍中编程下层页面(例如,LP和UP),并且可以在第二编程遍中编程上层页面(例如,XP和TP)。在又一示例中,在不同的QLC方案中,可以在第一编程遍中编程下层页面(例如,LP、UP和XP),并且可以在第二编程遍中编程上层页面(例如,TP)。在本公开中考虑了在编程遍中编程的页面的任何其它适合的排列,包括用于编程上层页面的多遍。
在特定实施例中,如果使用多个编程遍来编程第一字线(或其一部分)的单元,则可以在对第一字线执行初始编程遍之后并在对第一字线执行附加编程遍之前,对一个或多个相邻字线(或其部分)执行一个或多个编程遍。这样的实施例可以通过编程相邻字线来减轻对单元造成的干扰的影响。在其它实施例中,可以在编程下一个字线之前对字线的单元执行多遍。
图4示出了根据某些实施例的TLC NAND闪存存储器单元的示例性两遍编程序列。图4中的椭圆形区域的数量可以表示编码的电平。例如,在编程遍1期间,在字线n的单元被编码为两个电平时,LP被编程,并且在编程遍3期间,通过将单元编码为八个电平(即,用于表示TLC编码方案中的三个位的电平的数量)来编程UP和XP。因此,在遍1中,字线n的特定单元的阈值电压可以升高到与其目标值相差一部分,而在遍3中,单元的阈值电压将剩余量提高到其目标值(或者被禁止,如果它们已达到其目标值)。在遍2、4和5期间,字线n的单元的阈值电压未被故意改变(即,编程),并且在这些遍期间,字线n的单元的这种阈值电压(如果有的话)的相对小的改变将是由于来自不同字线的单元的编程的干扰。
在图4所示的实施例中,根据TLC方案对所有单元进行编程。在遍1中,字线n从擦除状态(例如,低阈值电压)被编程为两个电平。在遍2中,相邻的字线n+1被编程为两个电平。在遍3中,字线n然后被编程为八个电平。在遍4中,字线n+2被编程为两个电平。在遍5中,字线n+1被编程为八个电平。在遍5期间,字线n+1的编程对字线n的单元的影响被减轻,因为字线n+1的单元的阈值电压并没有改变得像它们已经在单遍中被编程为八个电平时所改变的那样大。因此,由字线n的单元存储的编码可以保持其被编程的值。编程序列可以继续,其中字线n+3(未示出)在第六遍中被编程为两个电平,并且字线n+2在第七遍中被编程为八个电平,依此类推。因此,在该实施例中,每个字线的单元在被编程为目标编程电平之前经历了两个编程遍。
在各种实施例中,在对特定字线执行第二编程遍之前,在“预读取”操作中读取在第一编程遍中编程的下层页面。由于每个单元的目标编程电平基于要编程到单元中的位的组合,因此在第二编程遍期间结合上层页面的数据访问下层页面的数据,以确定单元的目标编程电平。在各种实施例中,当在第一编程遍之前加载下层页面的数据时,可以将该数据存储在存储器元件(例如一组或多组锁存器)中,所述存储器元件控制被编程到字线的单元中的值。然而,在第二编程遍之前,值可能丢失(例如,存储器元件可能被要在第一编程遍和第二编程遍之间写入一个或多个其它字线或其部分的一个或多个其它页面重写)。因此,在对一组单元执行第二编程遍之前,从该组单元预读取下层页面并将该下层页面存储在存储器元件中。附加存储器元件可以存储上层页面,并且在第二编程遍期间下层页面和上层页面的值彼此结合使用,以将单元移动到其适当的编程电平。
可以通过数据加载操作来接收上层页面,该数据加载操作可以包括一个或多个数据加载命令。结合数据加载命令,存储装置控制器118可以接收数据要被编程的位置的地址和要编程的数据(例如,页面)。在各种实施例中,数据加载命令指示从主机(例如,CPU 102)加载数据页面到存储器元件(例如,存储器模块122A的存储器元件)中以在编程遍期间使用。
在各种系统中,在已经加载了去往那些单元的上层页面的所有数据之后,执行对已经存储在一组单元中的下层页面的预读取。然而,这种系统向编程序列中引入了不必要的延迟。本文中的各种实施例提供了用于在完成数据加载操作之前启动预读取操作以便减少编程时间的方法和系统。
图5示出了根据某些实施例的用于TLC NAND闪存存储器单元的第二编程遍的预读取操作和数据加载操作的示例性序列。在所示实施例中,示出了命令行502、读取/占用行504以及内部操作506和508。在该实施例中,假设LP在第一遍期间被编程。
命令行502可以包括一个或多个通信信道,存储装置控制器118可以通过该通信信道从主机接收命令信号和数据信号。在所描绘的实施例中,描绘了两个数据加载命令,其中第一数据加载命令包括操作510-514,并且第二数据加载命令包括操作515-519。在特定实施例中,操作占用存储装置106A的一个或多个时钟周期。在操作510,接收指示数据加载命令的开始的信号(例如,诸如80h指令的数据输入命令)。在操作511,接收上层页面的地址。例如,在所描绘的实施例中,在511接收XP的地址。在操作512和513期间,接收包括上层页面(例如,XP)的数据。可以在操作512和513之间通过命令行502发送XP的任何适合数量的数据组。在514,接收指示数据加载命令的结束的信号(例如,诸如10h指令的程序命令)。操作514可以触发将上层页面(例如,XP)数据加载到对应于该地址的存储器模块122A的存储器元件中。
在各种实施例中,存储器模块122A可以包括一组存储器元件(例如,锁存器),其与存储装置控制器118接口连接以接收经由数据加载命令从主机加载的数据(下文中被称为“加载存储器元件组”)。在各种实施例中,这种存储器元件可以包括一组锁存器,例如SDC锁存器。存储器模块122A还可以包括一组或多组存储器元件(例如,锁存器),其不与存储装置控制器118接口连接以接收经由数据加载命令从主机加载的数据,但是能够存储在在预读取操作期间读取的数据,或者能够接收并存储在加载存储器元件组中存储的数据的副本。在各种实施例中,这种存储器元件可以包括一组或多组锁存器,例如PDC锁存器。因此,当在编程遍之前要加载数据的两个或更多页时,可以将第一页面加载到加载存储器元件组中并且然后将其复制到存储器模块122A的另一组存储器元件以为要加载到加载存储器元件组中的数据的附加页留出空间。因此,在所描绘的实施例中,在完成第一数据加载命令之后,发生操作506,其中将XP数据从加载存储器元件组复制到另一个存储器元件组中,以使得在第二数据加载命令期间接收的数据可以被加载到加载存储器元件组中。在各种实施例中,当从加载存储器元件组复制XP数据时,加载存储器元件组不能接受新数据。因此,读取/占用行504在复制操作506开始时变低,以向主机发送不能接受新数据的信号。
在完成复制操作时,读取/占用行504转换回其先前状态,并且可以接收附加数据加载命令,并且可以将附加的上层页面(例如,UP)加载到加载存储器元件组中(在一些实施例中,与UP数据的加载相关联的数据加载命令可以在XP数据的复制完成之前开始,因为到加载存储器元件组中的实际加载可以在数据加载命令结束时发生,虽然如果读取/占用行耦合到主机,主机可以等到该行转换为发送附加数据加载命令)。在操作515,接收指示数据加载命令开始的信号(例如,80h指令)。在操作516,接收不同上层页面的地址。例如,在所描绘的实施例中,在516处接收UP的地址。在操作517和518期间,接收包括UP的数据。可以在操作517和518之间通过命令行502发送包括UP的数据的任何适合数量的数据组。在519,接收指示数据加载命令结束的信号(例如,10h指令)。操作519可以触发将UP数据加载到存储器模块122A的加载存储器元件组中,其对应于UP的地址。
在各种实施例中,在完成数据加载操作之前(即,在数据加载操作的最后的数据加载命令结束之前)启动下层页面的预读取。在特定实施例中,与一个或多个数据加载命令的至少一部分并行地执行下层页面的预读取(例如,在所描绘的实施例中,LP数据的预读取与第二数据加载命令同时发生,并且在其它实施例中,数据读取的至少部分可以与第一数据加载命令并行地发生)。在一些实施例中,可以在完成数据加载操作之前(即,在最后的数据加载命令完成之前)完成下层页面数据的预读取。在所描绘的实施例中,LP数据的预读取在从加载存储器元件组复制XP数据之后开始,但是一旦确认了要读取的LP数据的位置,就可以在任何适合的时间触发下层页面数据的预读取。在一个实施例中,基于数据加载命令的上层页面(例如,所描绘的实施例中的XP或UP)的地址来确认下层页面数据的位置。例如,上层页面的地址可以标识上层页面要被编程到其中的存储器单元的组,该组是存储要在预读取操作中读取的下层页面的同一组存储器单元。
可以在任何适合的时间触发预读取操作。作为各种示例,当接收到上层页面(例如,UP、XP或TP)的地址时,当已经接收到上层页面(例如,UP、XP或TP)的所有数据时,当接收到表示数据加载命令结束的指令(例如,10h指令)时,当完成从加载存储器元件复制上层页面(例如,UP、XP或TP)时,当在已经接收到不同上层页面的地址之后接收到(例如,在515)上层页面的数据输入命令(例如,80h)时,或在任何其它适合的时间,可以触发预读取操作。
一旦已经完成了数据加载操作和预读取操作,就可以基于存储在存储器模块122A的存储器元件组中的页面数据来执行第二编程遍。
尽管上面的示例描绘了在第二遍期间编程两个上层页面的TLC编码方案,但是本公开的各种实施例可以涉及其中可以在数据加载操作完成之前启动(和/或完成)预读取的任何其它适合的编程序列,数据加载操作是否涉及加载一个、两个、三个或更多上层页面,以及预读取操作是否涉及读取一个、两个、三个或其它数量的下层页面。
作为一个示例(如上所述),LP的预读取可以在TLC编码方案中的UP和XP的第二遍编程之前的数据加载操作期间的任何适合的时间启动。作为另一示例,可以在TLC编码方案中的XP的第二遍编程之前的数据加载操作期间的任何适合的时间启动LP和UP的预读取。作为另一示例,LP和UP的预读取可以在QLC编码方案中的XP和TP的第二遍编程之前的数据加载操作期间的任何适合的时间启动。作为另一示例,可以在QLC编码方案中的TP的第二遍编程之前的数据加载操作期间的任何适合的时间启动LP、UP和XP的预读取。
图6示出了根据某些实施例的示例性存储器模块122A。存储器模块122A包括存储器阵列602,其在各种实施例中可以包括NAND闪存存储器阵列。存储器模块122A还包括程序逻辑604,其可以与存储装置控制器118的编程控制逻辑124接口连接,并且可以促进在存储器阵列602上执行各种操作。
存储器模块122A还包括至少一个页面缓冲器606,其包括加载存储器元件组608和存储器元件组610A和610B。如上所述,加载存储器元件组608可操作用于存储从主机加载的数据并将该数据复制到其它存储器元件组610A或610B中的一个,以便留出空间来从主机加载附加数据。610A或610B中的任何一个可操作用于存储在预读取操作期间读取的下层页面。图6中描绘的存储器元件组可以使用任何适合类型的存储器元件来实施,例如锁存器、触发器或其它存储器元件。在其它实施例中,存储器模块122A可以具有附加的存储器元件组(例如,在QLC方案的第二编程遍期间,将使用四个存储器组来保存不同的页面)。
图7示出了根据某些实施例的用于在完成数据加载操作之前启动预读取操作的示例性流程700。流程700描绘了可以由诸如存储装置控制器118、存储器116和/或存储器模块122A等任何适合的逻辑执行的示例性操作。
在702处,加载一个或多个下层页面。作为一个示例,加载LP。作为另一示例,加载LP和UP。作为又一示例,加载LP、UP和XP。加载可以包括从主机接收数据并将数据放置在一个或多个存储器元件组中,存储器元件组可以用于控制要存储下层页面的单元的目标编程电平。在704处,在第一编程遍中编程下层页面。
在706处,接收与数据加载操作相关联的地址。例如,可以在数据加载操作的数据加载命令中接收地址(其中数据加载操作可以包括用于在数据加载操作期间加载的每个上层页面的数据加载命令)。地址可以指定一组存储器单元以存储由数据加载命令指定的数据。在各种实施例中,地址可以是由存储装置控制器118转换为物理地址的虚拟地址。在特定实施例中,多个虚拟地址可以对应于相同的物理地址(例如,用于要存储在同一组单元中的UP和XP的虚拟地址可以转换为相同的物理地址)。要存储上层页面的物理地址指示一组存储器单元,要在该组存储器单元上执行预读取操作以便访问存储在其中的下层页面。
在708处,在预读取操作中读取存储在与接收的地址相关联的存储器单元中的下层页面。在710处,在数据加载操作期间加载上层页面。这些操作被并行示出,如在一些实施例中,预读取操作的至少一部分可以与上层页面的加载的至少一部分同时执行。在各种实施例中,在完成所有上层页面加载之前完成预读取操作。可以在该步骤加载任何适合的上层页面,例如XP;UP和XP;TP;XP和TP;UP、XP和TP;或上层页面的其它适合的组合。在712处,在第二编程遍中编程上层页面。
图7中描述的流程仅代表可能在特定实施例中发生的操作。在其它实施例中,可以由系统100的部件执行附加操作。本公开的各种实施例考虑用于实现本文描述的功能的任何适合的信号发送机制。在适当的情况下,图7中示出的一些操作可以被重复、组合、修改或删除。另外,可以以任何适合的顺序执行操作,而不脱离特定实施例的范围。
尽管已经关于特定编码方案(例如,MLC、TLC、QLC)描述了各种实施例,但是这些实施例的教导可以同样适用于使用任何适合的编码电平的存储器,包括未来变得可行的编码方案。
设计可以经历从创建到模拟到制造的各种阶段。表示设计的数据可以以多种方式表示设计。首先,如在模拟中有用的,可以使用硬件描述语言(HDL)或其它功能描述语言来表示硬件。另外,可以在设计过程的某些阶段产生具有逻辑和/或晶体管栅极的电路级模型。此外,大多数设计在某个阶段达到表示硬件模型中的各种装置的物理放置的数据的水平。在使用常规半导体制造技术的情况下,表示硬件模型的数据可以是指定在用于制造集成电路的掩模的不同掩模层上的各种特征的存在或不存在的数据。在一些实施方式中,可以采用诸如图形数据系统II(GDS II)、开放艺术品系统交换标准(OASIS)、或类似格式的数据库文件格式来存储这种数据。
在一些实施方式中,基于软件的硬件模型、以及HDL和其它功能描述语言对象可以包括寄存器传输语言(RTL)文件以及其它示例。这种对象可以是机器可解析的,以使得设计工具可以接受HDL对象(或模型),解析HDL对象以获得所描述的硬件的属性,并且从对象确定物理电路和/或片上布局。设计工具的输出可以用于制造物理装置。例如,设计工具可以确定来自HDL对象的各种硬件和/或固件元素的配置,例如总线宽度、寄存器(包括大小和类型)、存储器块、物理链路路径、构造拓扑、以及将被实施以实现在HDL对象中建模的系统的其它属性。设计工具可以包括用于确定片上系统(SoC)和其它硬件装置的拓扑和构造配置的工具。在一些情况下,HDL对象可以用作开发可以由制造设备用于制造所描述的硬件的模型和设计文件的基础。实际上,可以提供HDL对象本身作为制造系统软件的输入以产生所描述的硬件。
在设计的任何表示中,数据可以存储在任何形式的机器可读介质中。诸如盘的存储器或者磁或光存储器可以是机器可读介质,以存储经由调制或以其它方式生成的光或电波传送的信息以传送这种信息。当传送指示或承载代码或设计的电载波时,在执行电信号的复制、缓冲或重发的程度上,进行新的复制。因此,通信提供商或网络提供商可以至少临时地在有形机器可读介质上存储物品,例如编码成载波的信息,从而体现本公开的实施例的技术。
本文中使用的模块指的是硬件、软件和/或固件的任何组合。作为示例,模块包括与非暂态介质相关联的硬件,例如微控制器,以存储适于由微控制器执行的代码。因此,在一个实施例中,对模块的引用是指硬件,其具体被配置为识别和/或执行要保存在非暂态介质上的代码。此外,在另一实施例中,模块的使用是指包括代码的非暂态介质,其特别适于由微控制器执行以执行预定操作。并且可以推断,在又一个实施例中,术语模块(在该示例中)可以指微控制器和非暂态介质的组合。通常被示为单独的模块边界通常是变化的并且可能重叠。例如,第一和第二模块可以共享硬件、软件、固件或其组合,同时可能保留一些独立的硬件、软件或固件。在一个实施例中,术语逻辑的使用包括硬件,例如晶体管、寄存器或其它硬件,例如可编程逻辑器件。
逻辑可以用于实施各种部件的功能中的任何功能,所述部件例如是CPU 102、外部I/O控制器104、处理器108、核114A和114B、I/O控制器110、CPU存储器控制器112、存储装置106A、系统存储器装置107、存储器116、存储器模块122A-D、存储装置控制器118、地址转换引擎120、编程控制逻辑124、感测电路220、程序逻辑604、或本文描述的其它实体或部件。“逻辑”可以指硬件、固件、软件和/或每者的组合,以执行一个或多个功能。在各种实施例中,逻辑可以包括微处理器或可操作用于执行软件指令的其它处理元件、诸如专用集成电路(ASIC)的分立的逻辑、诸如现场可编程门阵列(FPGA)的编程逻辑装置、包含指令的存储装置、逻辑装置的组合(例如,如在印刷电路板上可以找到的)、或其它适合的硬件和/或软件。逻辑可以包括一个或多个门或其它电路部件。在一些实施例中,逻辑还可以完全体现为软件。软件可以体现为记录在非暂态计算机可读存储介质上的软件包、代码、指令、指令集和/或数据。固件可以体现为代码、指令或指令集和/或数据,它们是存储装置中的硬编码(例如,非易失性)。
在一个实施例中,使用短语“为”或“被配置为”是指布置、放在一起、制造、提供销售、导入和/或设计设备、硬件、逻辑或元件以执行指定或确定的任务。在该示例中,如果被设计、耦合和/或互连为执行指定任务,则未操作的设备或其元件仍然“被配置为”执行所述指定任务。作为纯粹说明性示例,逻辑门可以在操作期间提供0或1。但是,“被配置为”向时钟提供使能信号的逻辑门不包括可以提供1或0的每个可能的逻辑门。相反,逻辑门是以某一方式耦合的,在操作期间1或0输出用于启用时钟。再次注意,术语“被配置为”的使用不需要操作,而是关注于设备、硬件和/或元件的潜在状态,其中在潜在状态中,设备、硬件和/或元件被设计为在设备、硬件和/或元件正在操作时执行特定任务。
此外,在一个实施例中,使用短语“能够/能够用于”、和/或“可操作用于”是指一些设备、逻辑、硬件和/或元件被设计为使得能够以指定的方式使用所述设备、逻辑、硬件和/或元件。注意,如上所述,在一个实施例中,能够用于或可操作用于的使用指的是设备、逻辑、硬件和/或元件的潜在状态,其中设备、逻辑、硬件和/或元件并未操作,但是被设计为使得能够以指定的方式使用设备。
如本文所使用的,值包括数字、状态、逻辑状态、或二进制逻辑状态的任何已知表示。通常,逻辑电平、逻辑值或逻辑性值的使用也被称为l和0,它们仅表示二进制逻辑状态。例如,1指代高逻辑电平,并且0指代低逻辑电平。在一个实施例中,诸如晶体管或闪存单元的存储单元能够保存单个逻辑值或多个逻辑值。然而,已经使用了计算机系统中的值的其它表示。例如,十进制数十也可以表示为二进制值1010和十六进制字母A。因此,值包括能够保存在计算机系统中的信息的任何表示。
此外,状态可以由值或值的部分表示。作为示例,第一值(例如逻辑一)可以表示默认或初始状态,而第二值(例如逻辑零)可以表示非默认状态。另外,在一个实施例中,术语重置和设置分别指代默认值和更新值或状态。例如,默认值可能包括高逻辑值,即重置,而更新值可能包括低逻辑值,即设置。注意,可以利用值的任何组合来表示任何数量的状态。
上述方法、硬件、软件、固件或代码的实施例可以经由存储在可由处理元件执行的机器可存取、机器可读、计算机可存取或计算机可读介质上的指令或代码来实施。非暂态机器可存取/可读介质包括以机器(例如计算机或电子系统)可读的形式提供(即,存储和/或传送)信息的任何机制。例如,非暂态机器可存取介质包括:随机存取存储器(RAM),例如静态RAM(SRAM)或动态RAM(DRAM);ROM;磁或光存储介质;闪存存储装置;电存储装置;光存储装置;声存储装置;用于保存从暂态(传播)信号(例如,载波、红外信号、数字信号)接收的信息的其它形式的存储装置;等等,其可以与可以从其接收信息的非暂态介质区分开。
用于编程逻辑以执行本公开的实施例的指令可以存储在系统中的存储器内,例如DRAM、高速缓存、闪存存储器或其它存储装置。此外,指令可以经由网络或通过其它计算机可读介质来分配。因此,机器可读介质可以包括用于以机器(例如,计算机)可读的形式存储或传送信息的任何机制,但不限于软盘、光盘、压缩磁盘、只读存储器(CD-ROM)和磁光盘、只读存储器(ROM)、随机存取存储器(RAM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、磁卡或光卡、闪存存储器、或用于经由电、光、声或其它形式的传播信号(例如,载波,红外信号,数字信号等)通过因特网传输信息的有形机器可读储存器。因此,计算机可读介质包括适合于以机器(例如,计算机)可读的形式存储或传送电子指令或信息的任何类型的有形机器可读介质。
在至少一个实施例中,一种设备包括存储装置,该存储装置包括NAND闪存存储器阵列,该存储装置在第一编程遍期间将NAND闪存存储器阵列的第一字线的多个单元编程为存储数据的第一页面;在完成要在第二编程遍期间编程到多个单元的数据的第二页面的加载之前,启动对数据的第一页面的读取;以及在第二编程遍期间,将NAND闪存存储器阵列的第一字线的多个单元编程为存储数据的第一页面和数据的第二页面。
在实施例中,存储装置进一步用于在完成数据的第二页面的加载之前完成对数据的第一页面的读取。在实施例中,存储装置进一步用于加载数据的第三页面,并且在第二编程遍期间将NAND闪存存储器阵列的第一字线的多个单元编程为还存储数据的第三页面。在实施例中,存储装置进一步用于在第一编程遍期间将NAND闪存存储器阵列的第一字线的多个单元编程为存储数据的第三页面;并且其中,在完成要在第二编程遍期间编程的数据的第二页面的加载之前启动对数据的第一页面的读取还用于启动对数据的第三页面的读取。在实施例中,其中,存储装置响应于接收到数据的第二页面的地址而启动对数据的第一页面的读取。在实施例中,存储装置响应于接收到要在第二编程遍期间编程的数据的第三页面的地址而启动对数据的第一页面的读取。在实施例中,存储装置响应于确定已经接收到数据的第二页面的全部而启动对数据的第一页面的读取。在实施例中,存储装置响应于数据的第二页面已经被从第一组存储器锁存器复制到第二组存储器锁存器的指示而启动对数据的第一页面的读取。在实施例中,存储装置响应于接收到与数据的第三页面相关联的编程指令而启动对数据的第一页面的读取。在实施例中,存储装置将在从主机加载数据的第二页面的同时读取数据的第一页面。在实施例中,存储装置进一步用于将数据的第二页面加载到存储器模块的第一锁存器组中,并且在第二编程遍之前将数据的第二页面从第一锁存器组复制到存储器模块的第二锁存器组。在实施例中,存储装置进一步用于在第二编程遍之前将数据的第三页面加载到第一锁存器组中,其中第二编程遍引起NAND闪存存储器阵列的第一字线的多个单元进一步存储数据的第三页面。
在至少一个实施例中,一种方法包括:在第一编程遍期间将NAND闪存存储器阵列的第一字线的多个单元编程为存储数据的第一页面;在完成要在第二编程遍期间编程到多个单元的数据的第二页面的加载之前,启动对数据的第一页面的读取;以及在第二编程遍期间,将NAND闪存存储器阵列的第一字线的多个单元编程为存储数据的第一页面和数据的第二页面。
在实施例中,该方法还包括在完成数据的第二页面的加载之前完成对数据的第一页面的读取。在实施例中,该方法还包括加载数据的第三页面并在第二编程遍期间将NAND闪存存储器阵列的第一字线的多个单元编程为还存储数据的第三页面。在实施例中,该方法还包括在第一编程遍期间将NAND闪存存储器阵列的第一字线的多个单元编程为存储数据的附加页;并且其中,在完成要在第二编程遍期间编程的数据的第二页面的加载之前启动对数据的第一页面的读取还用于启动对数据的附加页面的读取。在实施例中,该方法还包括响应于接收到数据的第二页面的地址而启动对数据的第一页面的读取。在实施例中,该方法还包括响应于接收到要在第二编程遍期间编程的数据的第三页面的地址而启动对数据的第一页面的读取。在实施例中,该方法还包括响应于确定已经接收到数据的第二页面的全部而启动对数据的第一页面的读取。在实施例中,该方法还包括响应于数据的第二页面已经被从第一组存储器锁存器复制到第二组存储器锁存器的指示而启动对数据的第一页面的读取。在实施例中,该方法还包括响应于接收到与数据的第三页面相关联的编程指令而启动对数据的第一页面的读取。在实施例中,该方法还包括在从主机加载数据的第二页面的同时读取数据的第一页面。在实施例中,该方法还包括将数据的第二页面加载到存储器模块的第一锁存器组中,并在第二编程遍之前将数据的第二页面从第一锁存器组复制到存储器模块的第二锁存器组。在实施例中,该方法还包括在第二编程遍之前将数据的附加页面加载到第一锁存器组中,其中第二编程遍引起NAND闪存存储器阵列的第一字线的多个单元进一步存储数据的附加页面。在实施例中,系统包括用于执行这些方法中的任何方法的装置。在实施例中,该装置包括机器可读取代码,该机器可读取代码在被执行时使机器执行这些方法中的任何一个的一个或多个步骤。在实施例中,该系统还包括通信地耦合到处理器的电池、通信地耦合到处理器的显示器、或通信地耦合到处理器的网络接口。
在至少一个实施例中,一种系统包括:用于将数据加载命令发送到存储装置的处理器;以及包括NAND闪存存储器的存储装置,所述NAND闪存存储器包括至少一个NAND闪存存储器阵列;以及存储装置控制器,其使得NAND闪存存储器阵列的第一字线的多个单元在第一编程遍期间被编程为存储数据的第一页面;在完成要在第二编程遍期间编程到多个单元的数据的第二页面的加载之前,启动对数据的第一页面的读取;并且使得NAND闪存存储器阵列的第一字线的多个单元在第二编程遍期间被编程为存储数据的第一页面和数据的第二页面。
在实施例中,在完成数据的第二页面的加载之前完成对数据的第一页面的读取。在实施例中,存储装置控制器进一步用于加载数据的第三页面并且使得NAND闪存存储器装置的第一字线的多个单元在第二编程遍期间被编程为还存储数据的第三页面。在实施例中,该系统还包括通信地耦合到处理器的电池、通信地耦合到处理器的显示器、或通信地耦合到处理器的网络接口中的一个或多个。
在至少一个实施例中,一种系统包括用于在第一编程遍期间将NAND闪存存储器阵列的第一字线的多个单元编程为存储数据的第一页面的装置;用于完成要在第二编程遍期间编程到多个单元的数据的第二页面的加载之前启动对数据的第一页面的读取的装置;以及用于在第二编程遍期间将NAND闪存存储器阵列的第一字线的多个单元编程为存储数据的第一页面和数据的第二页面的装置。
在实施例中,在完成数据的第二页面的加载之前完成对数据的第一页面的读取。在实施例中,该系统还包括用于加载数据的第三页面的装置和用于在第二编程遍期间将NAND闪存存储器装置的第一字线的多个单元编程为还存储数据的第三页面的装置。在实施例中,该系统还包括用于在第一编程遍期间将NAND闪存存储器阵列的第一字线的多个单元编程为存储数据的第三页面的装置;并且在完成要在第二编程遍期间编程的数据的第二页面的加载之前启动对数据的第一页面的读取还用于启动对数据的第三页面的读取。在实施例中,响应于接收到数据的第二页面的地址而启动对数据的第一页面的读取。
贯穿本说明书对“一个实施例”或“实施例”的引用表示结合该实施例描述的特定特征、结构或特性包括在本公开的至少一个实施例中。因此,贯穿本说明书在各个地方出现的短语“在一个实施例中”或“在实施例中”不一定都指代同一实施例。此外,特定特征、结构或特性可以以任何适合的方式组合在一个或多个实施例中。
在前述说明书中,已经参考特定示例性实施例给出了具体实施方式。然而,显而易见的是,可以对其进行各种修改和改变而不脱离所附权利要求中阐述的本公开的更广泛的精神和范围。因此,说明书和附图应被认为是例示性意义而非限制性意义。此外,实施例的前述使用和其它示例性语言不一定指代同一实施例或同一示例,而是可以指代不同且独特的实施例、以及可能相同的实施例。

Claims (25)

1.一种设备,包括:
存储装置,其包括NAND闪存存储器阵列,所述存储装置用于:
在第一编程遍期间,将所述NAND闪存存储器阵列的第一字线的多个单元编程为存储数据的第一页面;
在完成所述第一编程遍之后并且在完成要在第二编程遍期间编程到所述多个单元的数据的第二页面的加载之前,启动从所述第一字线的所述多个单元对数据的所述第一页面的读取;以及
在所述第二编程遍期间,将所述NAND闪存存储器阵列的所述第一字线的所述多个单元编程为存储数据的所述第一页面和数据的所述第二页面。
2.如权利要求1所述的设备,所述存储装置进一步用于在完成数据的所述第二页面的加载之前完成对数据的所述第一页面的读取。
3.如权利要求1所述的设备,所述存储装置进一步用于加载数据的第三页面,并且在所述第二编程遍期间将所述NAND闪存存储器阵列的所述第一字线的所述多个单元编程为还存储数据的所述第三页面。
4.如权利要求1所述的设备,所述存储装置进一步用于:
在所述第一编程遍期间,将所述NAND闪存存储器阵列的所述第一字线的所述多个单元编程为存储数据的第三页面;以及
其中,在完成要在所述第二编程遍期间编程的数据的第二页面的加载之前启动对数据的第一页面的读取还用于启动对数据的所述第三页面的读取。
5.如权利要求1所述的设备,其中,所述存储装置响应于接收到数据的所述第二页面的地址而启动对数据的所述第一页面的读取。
6.如权利要求1所述的设备,其中,所述存储装置响应于接收到要在所述第二编程遍期间编程的数据的第三页面的地址而启动对数据的所述第一页面的读取。
7.如权利要求1所述的设备,其中,所述存储装置响应于确定已经接收到数据的所述第二页面的全部而启动对数据的所述第一页面的读取。
8.如权利要求1所述的设备,其中,所述存储装置响应于数据的所述第二页面已经被从第一组存储器锁存器复制到第二组存储器锁存器的指示而启动对数据的所述第一页面的读取。
9.如权利要求1所述的设备,其中,所述存储装置响应于接收到与数据的第三页面相关联的编程指令而启动对数据的所述第一页面的读取。
10.如权利要求1所述的设备,其中,所述存储装置在从主机加载数据的所述第二页面时读取数据的所述第一页面。
11.如权利要求1所述的设备,其中,所述存储装置进一步用于在所述第二编程遍之前将数据的所述第二页面加载到存储器模块的第一锁存器组中,并将数据的所述第二页面从所述第一锁存器组复制到所述存储器模块的第二锁存器组。
12.如权利要求11所述的设备,其中,所述存储装置进一步用于在所述第二编程遍之前将数据的第三页面加载到所述第一锁存器组中,其中,所述第二编程遍引起所述NAND闪存存储器阵列的所述第一字线的所述多个单元进一步存储数据的所述第三页面。
13.一种方法,包括:
在第一编程遍期间,将NAND闪存存储器阵列的第一字线的多个单元编程为存储数据的第一页面;
在完成所述第一编程遍之后并且在完成要在第二编程遍期间编程到所述多个单元的数据的第二页面的加载之前,启动从所述第一字线的所述多个单元对数据的所述第一页面的读取;
在所述第二编程遍期间,将所述NAND闪存存储器阵列的所述第一字线的所述多个单元编程为存储数据的所述第一页面和数据的所述第二页面。
14.如权利要求13所述的方法,还包括在完成数据的所述第二页面的加载之前完成对数据的所述第一页面的读取。
15.如权利要求13所述的方法,还包括:加载数据的第三页面,并且在所述第二编程遍期间将所述NAND闪存存储器阵列的所述第一字线的所述多个单元编程为还存储数据的所述第三页面。
16.如权利要求13所述的方法,还包括:
在所述第一编程遍期间,将所述NAND闪存存储器阵列的所述第一字线的所述多个单元编程为存储数据的第三页面;并且
其中,在完成要在所述第二编程遍期间编程的数据的第二页面的加载之前启动对数据的第一页面的读取还用于启动对数据的所述第三页面的读取。
17.一种系统,包括:
处理器,其向存储装置发送数据加载命令;以及
存储装置,其包括:
NAND闪存存储器,其包括至少一个NAND闪存存储器阵列;以及
存储装置控制器,其用于:
使得在第一编程遍期间将所述NAND闪存存储器阵列的第一字线的多个单元编程为存储数据的第一页面;
在完成所述第一编程遍之后并且在完成要在第二编程遍期间编程到所述多个单元的数据的第二页面的加载之前,启动从所述第一字线的所述多个单元对数据的所述第一页面的读取;
使得在所述第二编程遍期间将所述NAND闪存存储器阵列的所述第一字线的所述多个单元编程为存储数据的所述第一页面和数据的所述第二页面。
18.如权利要求17所述的系统,其中,在完成数据的所述第二页面的加载之前完成对数据的所述第一页面的读取。
19.如权利要求17所述的系统,所述存储装置进一步用于加载数据的第三页面,并且在所述第二编程遍期间将所述NAND闪存存储器阵列的所述第一字线的所述多个单元编程为还存储数据的所述第三页面。
20.如权利要求17所述的系统,还包括以下各项中的一个或多个:通信地耦合到所述处理器的电池、通信地耦合到所述处理器的显示器、或通信地耦合到所述处理器的网络接口。
21.一种系统,包括:
用于在第一编程遍期间将所述NAND闪存存储器阵列的第一字线的多个单元编程为存储数据的第一页面的装置;
用于在完成所述第一编程遍之后并且在完成要在第二编程遍期间编程到所述多个单元的数据的第二页面的加载之前,启动从所述第一字线的所述多个单元对数据的所述第一页面的读取的装置;以及
用于在所述第二编程遍期间将所述NAND闪存存储器阵列的所述第一字线的所述多个单元编程为存储数据的所述第一页面和数据的所述第二页面的装置。
22.如权利要求21所述的系统,其中,在完成数据的所述第二页面的加载之前完成对数据的所述第一页面的读取。
23.如权利要求21所述的系统,还包括用于加载数据的第三页面的装置、以及用于在所述第二编程遍期间将所述NAND闪存存储器阵列的所述第一字线的所述多个单元编程为还存储数据的所述第三页面的装置。
24.如权利要求21所述的系统,还包括用于在所述第一编程遍期间将所述NAND闪存存储器阵列的所述第一字线的所述多个单元编程为存储数据的第三页面的装置;并且
其中,在完成所述第一编程遍之后并且在完成要在所述第二编程遍期间编程的数据的第二页面的加载之前启动从所述第一字线的所述多个单元对数据的所述第一页面的读取还用于启动对数据的所述第三页面的读取。
25.如权利要求21所述的系统,其中,响应于接收到数据的所述第二页面的地址而启动对数据的所述第一页面的读取。
CN201780053495.6A 2016-09-30 2017-09-21 用于在完成数据加载操作之前启动预读取操作的方法和设备 Active CN109643574B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/281,439 US9823880B1 (en) 2016-09-30 2016-09-30 Method and apparatus for initiating pre-read operation before completion of data load operation
US15/281,439 2016-09-30
PCT/US2017/052614 WO2018063901A1 (en) 2016-09-30 2017-09-21 Method and apparatus for initiating pre-read operation before completion of data load operation

Publications (2)

Publication Number Publication Date
CN109643574A true CN109643574A (zh) 2019-04-16
CN109643574B CN109643574B (zh) 2023-08-15

Family

ID=60303202

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201780053495.6A Active CN109643574B (zh) 2016-09-30 2017-09-21 用于在完成数据加载操作之前启动预读取操作的方法和设备

Country Status (5)

Country Link
US (1) US9823880B1 (zh)
EP (1) EP3520111A4 (zh)
KR (1) KR102562051B1 (zh)
CN (1) CN109643574B (zh)
WO (1) WO2018063901A1 (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110326047A (zh) * 2019-05-17 2019-10-11 长江存储科技有限责任公司 具有静态随机存取存储器的三维存储器件的数据缓冲操作
CN110648713A (zh) * 2019-09-20 2020-01-03 长江存储科技有限责任公司 一种闪存存储器及其编程方法、编程系统和存储器系统
CN111833953A (zh) * 2019-04-18 2020-10-27 旺宏电子股份有限公司 存储器装置
CN113900581A (zh) * 2020-06-22 2022-01-07 旺宏电子股份有限公司 存储器装置及其读取方法

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3867905A4 (en) * 2018-12-10 2022-05-18 Yangtze Memory Technologies Co., Ltd. PRE-READING TECHNIQUE FOR MULTI-PASS FLASH MEMORY PROGRAMMING

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080310226A1 (en) * 2006-05-18 2008-12-18 Samsung Electronics Co., Ltd. Multi-Bit Flash Memory Devices Having a Single Latch Structure and Related Programming Methods, Systems and Memory Cards
US20130088923A1 (en) * 2009-03-25 2013-04-11 Samsung Electronics Co., Ltd. Nonvolatile memory device, system, and programming method
CN103155044A (zh) * 2010-07-21 2013-06-12 莫塞德技术公司 用于闪速存储器的多页编程方案
CN103544118A (zh) * 2012-07-17 2014-01-29 群联电子股份有限公司 存储器储存装置、其存储器控制器与数据写入方法
US20140173174A1 (en) * 2012-12-14 2014-06-19 Robert E. Frickey Lower page read for multi-level cell memory
US20160172051A1 (en) * 2014-09-10 2016-06-16 Western Digital Technologies, Inc. Temperature compensation management in solid-state memory

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100259972B1 (ko) * 1997-01-21 2000-06-15 윤종용 메모리 셀당 2개 이상의 저장 상태들을 갖는 불휘발성 반도체 메모리 장치
US7173863B2 (en) * 2004-03-08 2007-02-06 Sandisk Corporation Flash controller cache architecture
KR101348171B1 (ko) * 2007-07-30 2014-01-07 삼성전자주식회사 단일 래치 구조를 갖는 멀티-비트 플래시 메모리 장치,그것의 프로그램 방법, 그리고 그것을 포함하는 메모리카드
US8861269B2 (en) * 2013-03-05 2014-10-14 Sandisk Technologies Inc. Internal data load for non-volatile storage
US8929146B1 (en) * 2013-07-26 2015-01-06 Avalanche Technology, Inc. Controller management of memory array of storage device using magnetic random access memory (MRAM)
US9672102B2 (en) * 2014-06-25 2017-06-06 Intel Corporation NAND memory devices systems, and methods using pre-read error recovery protocols of upper and lower pages
US9324419B2 (en) * 2014-07-15 2016-04-26 Sandisk Technologies Inc. Multiple pass programming for memory with different program pulse widths
TWI578320B (zh) * 2014-11-25 2017-04-11 旺宏電子股份有限公司 記憶體的操作方法及應用其之記憶體裝置

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080310226A1 (en) * 2006-05-18 2008-12-18 Samsung Electronics Co., Ltd. Multi-Bit Flash Memory Devices Having a Single Latch Structure and Related Programming Methods, Systems and Memory Cards
US20130088923A1 (en) * 2009-03-25 2013-04-11 Samsung Electronics Co., Ltd. Nonvolatile memory device, system, and programming method
CN103155044A (zh) * 2010-07-21 2013-06-12 莫塞德技术公司 用于闪速存储器的多页编程方案
CN103544118A (zh) * 2012-07-17 2014-01-29 群联电子股份有限公司 存储器储存装置、其存储器控制器与数据写入方法
US20140173174A1 (en) * 2012-12-14 2014-06-19 Robert E. Frickey Lower page read for multi-level cell memory
US20160172051A1 (en) * 2014-09-10 2016-06-16 Western Digital Technologies, Inc. Temperature compensation management in solid-state memory

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111833953A (zh) * 2019-04-18 2020-10-27 旺宏电子股份有限公司 存储器装置
CN111833953B (zh) * 2019-04-18 2022-04-19 旺宏电子股份有限公司 存储器装置
CN110326047A (zh) * 2019-05-17 2019-10-11 长江存储科技有限责任公司 具有静态随机存取存储器的三维存储器件的数据缓冲操作
US11221793B2 (en) 2019-05-17 2022-01-11 Yangtze Memory Technologies Co., Ltd. Data buffering operation of three-dimensional memory device with static random-access memory
US11922058B2 (en) 2019-05-17 2024-03-05 Yangtze Memory Technologies Co., Ltd. Data buffering operation of three-dimensional memory device with static random-access memory
CN110648713A (zh) * 2019-09-20 2020-01-03 长江存储科技有限责任公司 一种闪存存储器及其编程方法、编程系统和存储器系统
CN113900581A (zh) * 2020-06-22 2022-01-07 旺宏电子股份有限公司 存储器装置及其读取方法
CN113900581B (zh) * 2020-06-22 2024-02-06 旺宏电子股份有限公司 存储器装置及其读取方法

Also Published As

Publication number Publication date
WO2018063901A1 (en) 2018-04-05
KR102562051B1 (ko) 2023-08-02
US9823880B1 (en) 2017-11-21
EP3520111A1 (en) 2019-08-07
KR20190050778A (ko) 2019-05-13
CN109643574B (zh) 2023-08-15
EP3520111A4 (en) 2020-06-17

Similar Documents

Publication Publication Date Title
US10289313B2 (en) Method and apparatus for improving sequential reading in NAND flash
US10268407B1 (en) Method and apparatus for specifying read voltage offsets for a read command
US10186325B2 (en) Method and apparatus for shielded read to reduce parasitic capacitive coupling
US10714186B2 (en) Method and apparatus for dynamically determining start program voltages for a memory device
US9703494B1 (en) Method and apparatus for protecting lower page data during programming in NAND flash
CN109643574A (zh) 用于在完成数据加载操作之前启动预读取操作的方法和设备
US11693582B2 (en) Automatic read calibration operations
KR20140072118A (ko) 플래시 메모리 시스템
TW201225084A (en) Data reading method, memory storage apparatus and controller thereof
US10347315B2 (en) Group read refresh
US9852065B1 (en) Method and apparatus for reducing data program completion overhead in NAND flash
US20180188960A1 (en) Method and apparatus for redirecting memory access commands sent to unusable memory partitions
EP3926451A1 (en) Communication of data relocation information by storage device to host to improve system performance
US10049752B1 (en) Method and apparatus for process corner compensation for memory state sensing
WO2017218170A1 (en) Method and apparatus for programming wordlines of nand flash memory using alternating encoding schemes
US20230064007A1 (en) Encoding additional states in a three-dimensional crosspoint memory architecture
CN114078526A (zh) 在三维交叉点存储器架构中浮置用于取消选定地址线的解码器的设备、系统和方法
US11315644B2 (en) String current reduction during multistrobe sensing to reduce read disturb
US11816350B2 (en) Managing overwrite data within solid state drives
US10229057B2 (en) Method and apparatus for avoiding bus contention after initialization failure
US20230154539A1 (en) Method and apparatus for improving write uniformity in a memory device
US11562776B2 (en) Performing read operations on grouped memory cells
US11139027B1 (en) Apparatus, system and method to reduce a read voltage across a memory cell and improve read sense margin
US20230178148A1 (en) Read algorithms for three-dimensional crosspoint memory architectures

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
GR01 Patent grant
GR01 Patent grant