CN109840215A - 未对齐写入的处理 - Google Patents

未对齐写入的处理 Download PDF

Info

Publication number
CN109840215A
CN109840215A CN201811276381.0A CN201811276381A CN109840215A CN 109840215 A CN109840215 A CN 109840215A CN 201811276381 A CN201811276381 A CN 201811276381A CN 109840215 A CN109840215 A CN 109840215A
Authority
CN
China
Prior art keywords
data
unjustified
storage
writing commands
tube core
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
CN201811276381.0A
Other languages
English (en)
Other versions
CN109840215B (zh
Inventor
R.穆蒂亚
R.拉马默西
B.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.)
Western Digital Technologies Inc
Original Assignee
Western Digital Technologies Inc
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 Western Digital Technologies Inc filed Critical Western Digital Technologies Inc
Publication of CN109840215A publication Critical patent/CN109840215A/zh
Application granted granted Critical
Publication of CN109840215B publication Critical patent/CN109840215B/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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • 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/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
    • 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
    • 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/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/3013Organisation of register space, e.g. banked or distributed register file according to data content, e.g. floating-point registers, address registers
    • 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
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7203Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks
    • 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
    • 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/5622Concurrent multilevel programming of more than one cell
    • 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/5641Multilevel memory having cells with different number of storage levels
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Read Only Memory (AREA)

Abstract

本发明题为“未对齐写入的处理”。本发明公开了一种存储系统的一个或多个控制电路,所述存储系统的所述一个或多个控制电路被配置为合并感测与传输,其中感测为针对一个未对齐写入命令的预填充和/或后填充数据,传输为针对先前感测的另一个未对齐写入命令的预填充和/或后填充数据。通过合并所述感测与所述传输,在对一组两个或更多个未对齐写入命令的数据进行编程时节省了大量的时间。另外,在一个方面,对多个未对齐写入命令执行单个编程操作。一些常规解决方案可能需要对每个未对齐写入命令执行编程操作。因此,所述存储系统节省了大量的编程时间。此外,所述存储系统可以减少写入放大。

Description

未对齐写入的处理
背景技术
当主机器件向存储器件写入数据并从存储器件读取数据时,主机根据逻辑块地址(LBA)写入和读取数据。主机和存储器件之间的基本数据传输单元在本文中称为“扇区”。“基本单位”意思是读取或写入命令的最小数据传输大小。因此,读取或写入请求是读取或写入一些整数数量的扇区的请求。扇区的大小在一个具体实施与下一个具体实施之间可以有差别,但是扇区大小的一个示例是512字节。需注意,如本文所用,术语“扇区”不是指硬盘驱动器上的物理扇区等。还需注意,每个LBA对应一个扇区。
存储器件通常具有存储控制器,该存储控制器将LBA转换为存储器件上的存储单元的物理地址。例如,闪存器件具有执行逻辑地址到物理地址转换的闪存传输层(FTL)或媒体管理层(MML)。
在将数据写入存储单元之前,存储控制器通常由来自主机的数据形成码字。码字包括主机数据和一个或多个奇偶校验位。奇偶校验位的数量根据纠错的强度可以有差别。码字在本文中称为“ECC页面”。ECC页面由一个或多个主机数据扇区形成。例如,ECC页面可以由四个主机数据扇区形成。因此,如果扇区大小为512字节,则ECC页面可能包含2K字节的主机数据,外加奇偶校验位。ECC页面是存储器件中的编程单元。
存储控制器具有最小可寻址单元,其通常是一个或多个ECC页面。因此,最小可寻址单元对应于一些数量的扇区。本文所用术语“片段”在本文中是指存储器件中的最小可寻址存储单元。例如,如果最小可寻址单元是两个ECC页面,则最小可寻址单元是4kB(假设扇区是512字节并且每个ECC页面有四个扇区)。
本文中,对齐写入被定义为其中起始LBA和数据大小是片段中扇区数量的倍数的写入。例如,如果片段中有八个扇区,则对齐写入具有的起始LBA是八的倍数,并且其具有的数据大小是八个扇区的整数倍。
本文中,不是对齐写入的写入称为未对齐写入。因此,未对齐写入:1)具有的起始LBA不是片段中扇区数的倍数;或者2)具有的数据大小不是片段中扇区数的倍数。
当主机发送对齐写入命令时,数据可以简单地作为一个或多个片段写入存储管芯。然而,当主机发送未对齐写入命令时,存储控制器需要预填充和/或后填充主机数据以形成“对齐数据”。对齐数据意味着形成完整的片段。存储控制器可能需要从存储单元读取预填充和/或后填充数据。因此,存储控制器可能需要执行读取-修改-写入。读取-修改-写入是指从存储管芯上的存储单元读取预填充和/或后填充数据,形成对齐数据的片段,并且将对齐数据的片段写入存储管芯。
执行读取-修改-写入可能非常耗时。此外,执行读取-修改-写入可以增加写入放大。写入放大意味着实际写入存储器件的数据量大于要写入的主机的数据量。写入放大可以缩短存储器件的寿命。
附图说明
图1A是示出连接到主机器件的存储器件的一个实施方案的框图。
图1B是三维(3D)堆叠的非易失性存储器件的透视图。
图1C是示例性存储器件诸如图1B的3D堆叠非易失性存储器件的功能框图。
图2是示例性存储系统的框图,示出了控制器的一个实施方案的更多细节。
图3A示出了用于在控制器和各个存储器封装0至N的存储管芯之间通信的N+1个存储器封装(封装0至封装N)和N+1个信道(信道0至信道N)。
图3B是示出图1C的感测块SB1的一个实施方案的框图。
图4A示出了存储单元阵列的示例性结构。
图4B示出了具有两个平面的存储管芯的一个示例。
图5示出了如何对数据缓冲器中的未对齐写入命令的数据进行预填充和/或后填充以形成完整片段。
图6是处理未对齐写入命令的过程的流程图。
图7是形成未对齐写入命令的对齐数据的过程的一个实施方案的流程图。
图8是示出用于多个未对齐写入命令的编程数据的一个实施方案中的时序的图。
图9是在从SLC存储单元到MLC存储单元的折叠期间执行处理未对齐写入命令的过程的一个实施方案的流程图。
具体实施方式
本文描述了存储器件及其使用方法。此类存储器件可以包括闪存(非易失性存储器)、随机存取存储器(RAM),以及与闪存和RAM通信的存储控制器。根据本技术的一些实施方案,存储系统的一个或多个控制电路被配置为合并感测与传输,其中感测为针对一个未对齐写入命令的预填充和/或后填充数据,传输为针对先前感测的另一个未对齐写入命令的预填充和/或后填充数据。通过合并感测与传输,在对一组两个或更多个未对齐写入命令的数据进行编程时节省了大量的时间。而且,在一个实施方案中,多个未对齐写入命令的数据被同时编程。一些常规解决方案可能需要对每个未对齐写入命令执行编程操作。在一些实施方案中,仅针对一组两个或更多个未对齐写入命令执行一个编程操作。因此,由存储系统的实施方案节省了大量的编程时间。而且,通过减少编程操作的次数,由存储系统的实施方案节省了相当大的功率。此外,写入放大可以由存储系统的实施方案来减少。因此,可以延长存储系统的寿命。
在以下详细描述中,参考了形成本说明书的一部分的附图,并且在附图中以例证方式示出了具体的示例性实施方案。应当理解,可以使用其他实施方案,并且可以进行机械和电气变更。因此,以下详细描述不应被视为具有限制意义。在下文的描述中,相同的数字或参考标号将用于表示贯穿全文的相同的部件或元件。此外,三个数字参考号的第一个数字和四个数字参考标号的前两个数字标识首次出现该参考标号的附图。
图1A是示出连接到主机器件140(或嵌入主机器件140中)的存储系统100的一个实施方案的框图,所述主机器件可以实现下文所述的本技术的实施方案。参考图1A,主机器件140通过发出写入和读取命令将数据存储到存储系统100中以及从存储系统100中检索数据。存储系统100可以嵌入主机器件140中,或者可以以通过机械连接器和电连接器可移除地连接到主机器件140的卡、通用串行总线(USB)驱动器或其他可移动驱动器诸如固态盘(SSD)的形式存在。主机器件140可以是许多固定或便携式数据生成器件诸如个人计算机、智能电话、个人数字助理(PDA)、服务器、机顶盒等中的任何者。更一般地,主机器件140可以包括执行智能电话、PDA、膝上型计算机、服务器、机顶盒等的功能的主机逻辑。虽然没有具体示出,但是主机可以包括只读存储器(ROM)和/或与只读存储器通信。
可以更简洁地称为主机140的主机器件140可以包括一个或多个主机处理器10。主机处理器可以运行一个或多个应用程序。当要在存储系统100上存储数据或从该存储系统检索数据时,应用程序通过一个或多个操作系统应用程序编程接口(API)与文件系统进行通信。文件系统可以是在处理器10上执行的软件模块,并管理存储系统100中的文件。文件系统管理逻辑地址空间中的数据群集。由文件系统执行的常见操作包括创建、打开、写入(存储)数据、读取(检索)数据、在文件中搜索具体位置、移动、复制和删除文件的操作。文件系统可以是电路、软件或电路和软件的组合。
主机140和存储系统100之间的通信信道56可用于传输命令、数据等。用于通过通信信道56进行通信的接口可以是许多已知接口诸如安全数据(SD)、多媒体卡(MMC)、通用串行总线(USB)存储器件、串行高级技术附件(SATA)和小型计算机系统接口(SCSI)中的任何者。主机140可以维护已经由主机140分配给数据的所有逻辑块地址(LBA)的逻辑地址范围。除了用于指代主机140和存储系统100之间的通信信道之外,参考标号56还可以用于指代通过通信信道56传送的主机接口信号。
主机140使用文件系统来寻址存储系统100内存储的文件,这可以涉及将数据写入存储系统100的非易失性存储器126并从该存储系统的该非易失性存储器读取数据。可由主机140使用的示例性类型的文件系统包括但不限于FAT32、exFAT、ext2/3、HFS+。存储系统100通常被设计为与不同类型的主机一起工作,不同类型的主机中的每一个可以使用不同类型的文件系统。这可能导致存储系统100由于小块数据的过度预填充和/或后填充而使写入性能较差。
存储系统100包括经由通信接口118与存储管芯108通信的存储控制器122(其也可以称为控制器122)。通信接口118可以是任何合适的接口,诸如开放NAND闪存(ONFI)接口。控制器122具有处理器122c和易失性存储器122b。易失性存储器122b可用于存储命令队列32,该命令队列用于存储来自主机10的命令。这些命令可以包括存储器访问命令,诸如读取、写入或擦除。在一些实施方案中,控制器122能够选择队列32中的命令的执行顺序。易失性存储器122b的一部分可以用于数据缓冲器34,该数据缓冲器可以用于存储来自主机140的数据以将这些数据编程到存储器126中。数据缓冲器34还可以用于存储从存储器126读取的数据以将这些数据传输到主机140。
易失性存储器122b的一部分可用于存储逻辑到物理映射的高速缓存(L2P高速缓存36),以及物理到逻辑映射的高速缓存(P2L高速缓存38)。控制器122可以使用逻辑到物理映射来将来自主机140的存储器访问命令中的逻辑块地址映射到存储结构126中的存储单元的物理地址。例如,逻辑块地址(LBA)可以映射到物理块地址(PBA)。此类映射可以用于将LBA直接映射到PBA,或者LBA可以映射到映射到PBA的中间或虚拟块地址。
存储管芯108具有存储结构126。存储结构126用于存储主机数据50。存储结构126还用于存储管理表60。管理表可以包括L2P表66和P2L表68。需注意,LTP高速缓存36是L2P表66的高速缓存,并且P2L高速缓存38是P2L表68的高速缓存。
存储管芯108具有一组感测数据寄存器40,其可用于存储从存储单元感测的数据。感测数据寄存器40还可用于存储要编程到存储单元中的数据。在一个实施方案中,感测数据寄存器40是数据锁存器。存储管芯108具有一组I/O寄存器42,其可用于存储来自存储控制器122的数据以将这些数据写入存储单元。I/O寄存器42还可以用于存储从存储单元读取的数据以将这些数据传输到数据缓冲器34。在一个实施方案中,I/O寄存器42是数据锁存器。
当写入存储结构126时,数据可以从主机存储器20传输到数据缓冲器34。存储控制器122可以将数据从数据缓冲器34传输到I/O数据寄存器42。然后可以将来自I/O数据寄存器42的数据传输到感测数据寄存器40。然后可以将来自感测数据寄存器40的数据编程到存储结构126中的存储单元中。需注意,没有描述诸如将奇偶校验位添加到主机数据的细节,以便简化说明。
当读取存储结构126时,可以感测来自存储结构126中的存储单元的数据并将其放入感测数据寄存器40中。然后可以将来自感测数据寄存器40的数据传输到I/O数据寄存器42。然后可以将I/O数据寄存器42中的数据传输到数据缓冲器34。然后可以将数据缓冲器34中的数据传输到主机存储器20。需注意,没有描述诸如对从存储结构126读取的数据执行纠错的细节,以便简化说明。
在本文公开的一些实施方案中,存储控制器122检查命令队列32是否存在来自主机140的未对齐写入。未对齐写入包含来自主机的至少一个数据扇区,但不完全填充数据缓冲器34中的片段。存储控制器122向存储管芯发送命令以提供未对齐写入的预填充和/或后填充数据,以便形成完整的片段,在本文中称为形成对齐数据。此外,存储系统100合并感测与传输,其中感测为针对一个未对齐写入命令的预填充和/或后填充数据,传输为针对先前感测的另一个未对齐写入命令的预填充和/或后填充数据。例如,当将一个未对齐写入命令的感测数据写入感测数据寄存器40中时,另一个未对齐写入命令的先前感测的填充数据从I/O数据寄存器42传输到数据缓冲器。通过合并感测与传输,在处理一组两个或更多个未对齐写入命令的数据时节省了大量的时间。
在一个实施方案中,存储控制器122将多个未对齐写入命令的片段发送到存储管芯108,该存储管芯首先将片段存储在I/O数据寄存器42中。然后这些片段被传输到感测数据寄存器40,其中它们可用于对存储结构126中的存储单元进行编程。在一个实施方案中,用于多个未对齐写入命令的片段被同时编程。一些常规解决方案可能需要对每个未对齐写入命令执行编程操作。因此,节省了大量的编程时间。此外,可以减少写入放大。
图1B至图4描述了可用于实现本文提出的技术的存储系统100的一个示例。图1B是三维(3D)堆叠的非易失性存储器件的透视图。存储器件100包括衬底101。在衬底上和衬底上方是存储单元(非易失性存储元件)的示例性块BLK0和BLK1。在衬底101上还有外围区域104,其具有供块使用的支持电路。衬底101还可以在块下面连同一个或多个下部金属层承载电路,这些金属层在导电路径中被图案化以承载电路的信号。块形成在存储器件的中间区域102中。在存储器件的上部区域103中,一个或多个上部金属层在导电路径中被图案化以承载电路的信号。每个块包括存储单元的堆叠区域,其中堆叠的交替级表示字线。虽然示出了两个块作为示例,但是可以使用沿x和/或y方向延伸的附加块。
在一个示例性具体实施中,平面在x方向上的长度表示字线的信号路径延伸的方向(字线或SGD线方向),并且平面在y方向上的宽度表示位线的信号路径延伸的方向(位线方向)。z方向表示存储器件的高度。
图1C是示例性存储器件诸如图1B的3D堆叠非易失性存储器件100的功能框图。图1C中示出的组件是电路。存储器件100包括一个或多个存储管芯108。每个存储管芯108包括存储单元的三维存储结构126(例如,存储单元的3D阵列)、控制电路110和读取/写入电路128。在其他实施方案中,可以使用存储单元的二维阵列。存储结构126可通过行解码器124由字线寻址,并通过列解码器132由位线寻址。读取/写入电路128包括多个感测块150,该感测块包括SB1、SB2、……、SBp(感测电路)并允许对一页存储单元进行并行读取或编程。在一些系统中,控制器122包括在与一个或多个存储管芯108相同的存储器件100(例如,可移动存储卡)中。然而,在其他系统中,控制器可以与存储管芯108分离。在一些实施方案中,控制器122将位于与存储管芯108不同的管芯上。在一些实施方案中,一个控制器122将与多个存储管芯108通信。在其他实施方案中,每个存储管芯108具有其自己的控制器。命令和数据经由数据总线120在主机140和控制器122之间传输,并且经由线118在控制器122和一个或多个存储管芯108之间传输。在一个实施方案中,存储管芯108包括连接到线118的一组输入和/或输出(I/O)引脚。
存储结构126可以包括一个或多个存储单元阵列,所述一个或多个存储单元阵列包括3D阵列。存储结构可以包括整体三维存储结构,其中多个存储级形成在单个衬底诸如晶片上方(而不是在其中),没有中间衬底。存储结构可以包括整体地形成在存储单元阵列的一个或多个物理级中的任何类型的非易失性存储器,该存储单元阵列具有设置在硅衬底上方的有源区域。存储结构可以在非易失性存储器件中,该非易失性存储器件具有与存储单元的操作相关联的电路,无论相关联的电路是在衬底上方还是在衬底内。在一个实施方案中,存储结构126实现三维NAND闪存。其他实施方案包括二维NAND闪存、二维NOR闪存、ReRAM交叉点存储器、磁阻存储器(例如,MRAM)、相变存储器(例如,PCRAM)等。
控制电路110与读取/写入电路128配合以在存储结构126上执行存储操作(例如,擦除、编程、读取等),并且包括状态机112、片上地址解码器114、功率控制模块116。状态机112提供存储操作的管芯级控制。在一个实施方案中,状态机112可由软件编程。在其他实施方案中,状态机112不使用软件并且完全以硬件(例如,电路)实现。在一个实施方案中,控制电路110包括寄存器、ROM熔丝和其他存储器件,用于存储诸如基准电压和其他参数的默认值。
片上地址解码器114提供主机140或控制器122使用的地址与解码器124和132使用的硬件地址之间的地址接口。功率控制模块116控制在存储操作期间提供给字线和位线的功率和电压。它可以包括用于3D配置的字线层(下文讨论)的驱动器、选择晶体管(例如,下文描述的SGS和SGD晶体管)和源极线。功率控制模块116可以包括用于产生电压的电荷泵。感测块包括位线驱动器。SGS晶体管是NAND串的源极端的选择栅极晶体管,SGD晶体管是NAND串的漏极端的选择栅极晶体管。
控制电路110、状态机112、解码器114/124/132、功率控制模块116、感测块150、读取/写入电路128、控制器122、处理器122c和/或接口122d中的任何一个或任何组合可看作执行本文所述功能的一个或多个控制电路。
(片上或片外)控制器122(其在一个实施方案中是电路)可以包括一个或多个处理器122c、ROM 122a、RAM 122b、存储器接口122d,所有这些都是互连的。其他实施方案可以使用状态机或设计用于执行一个或多个功能的其他定制电路。存储器件(ROM 122a、RAM122b)包括代码诸如一组指令,并且处理器122c能够操作以执行该组指令以提供本文描述的功能中的至少一些。另选地或除此之外,处理器122c可以从存储结构中的存储器件(诸如连接到一个或多个字线的存储单元的保留区域)访问代码。与ROM122a、RAM 122b和处理器122c通信的存储器接口122d是电路(电接口),其在控制器122和一个或多个存储管芯108之间提供电接口。例如,存储器接口122d可以改变信号的格式或定时、提供缓冲器、隔离电涌、锁存I/O等。处理器122c可以经由存储器接口122d向控制电路110(或存储管芯108的任何其他部件)发出命令。
存储结构126中的多个存储元件可以被配置为使得它们串联连接或使得每个元件可单独访问。作为非限制性示例,NAND配置(NAND闪存)中的闪存器件通常包含串联连接的存储元件。NAND串是一组串联连接的存储单元和选择栅极晶体管的示例。
NAND闪存阵列可以被配置为使得阵列由多个NAND串构成,其中NAND串由共享单个位线的多个存储单元构成并作为一组访问。另选地,可以配置存储元件,使得每个元件可单独访问,例如NOR存储阵列。NAND和NOR存储器配置是示例性的,并且存储单元可以以其他方式配置。
存储单元可以以有序阵列布置在单个存储器件级中,例如布置在多个行和/或列中。然而,存储元件可以以非规则或非正交配置排列,或者以不被视为阵列的结构排列。
布置三维存储阵列,使得存储单元占据多个平面或多个存储器件级,从而形成三维结构(即,在x、y和z方向上,z方向基本垂直,x和y方向基本平行于衬底的主表面)。
作为非限制性示例,三维存储结构可以垂直布置为多个二维存储器件级的堆叠。作为另一个非限制性示例,三维存储阵列可以被布置为多个垂直列(例如,基本上垂直于衬底的主表面(即在y方向上)延伸的列),其中每列具有多个存储单元。垂直列可以以二维配置布置,例如,在x-y平面中,从而产生存储单元的三维布置,其中存储单元位于多个垂直堆叠的存储器平面上。三维存储元件的其他配置也可以构成三维存储阵列。
作为非限制性示例,在三维NAND存储阵列中,存储元件可以耦合在一起以形成跨越多个水平级的垂直NAND串。可以设想其他三维配置,其中一些NAND串包含单个存储级中的存储元件,而其他串包含跨越多个存储级的存储元件。三维存储阵列也可以以NOR配置和ReRAM配置来设计。
本领域普通技术人员将认识到,本文所述的技术不限于单个特定存储结构,而是涵盖如本文所述并且如本领域普通技术人员所理解的技术的实质和范围内的许多相关存储结构。
图2是示例性存储系统100的框图,示出了控制器122的一个实施方案的更多细节。如本文所使用的,闪存控制器是管理存储在闪存上的数据并与主机诸如计算机或电子器件通信的器件。除了本文所述的具体功能之外,闪存控制器还可以具有各种功能。例如,闪存控制器可以将闪存格式化以确保存储器正常运行、映射出坏的闪存单元,并分配备用存储单元以替换日后的故障单元。备用单元的一些部分可用于保持固件以操作闪存控制器并实现其他功能。在操作中,当主机需要从闪存中读取数据或将数据写入闪存时,它将与闪存控制器通信。如果主机提供要读取/写入数据的逻辑地址,则闪存控制器可以将从主机接收的逻辑地址转换为闪存中的物理地址(或者,主机可以提供物理地址)。闪存控制器还可以执行各种存储器管理功能,诸如但不限于损耗均衡(分配写入以避免损耗原本应当被重复写入的特定存储块)和垃圾收集(在块已满后,仅将有效的数据页移动到新块,因此可以擦除并重新使用完整块)。
控制器122和非易失性存储管芯108之间的接口可以是任何合适的闪存接口,诸如切换模式200、400或800。在一个实施方案中,存储系统100可以是基于卡的系统,例如安全数字(SD)或微安全数字(微SD)卡。在替代实施方案中,存储系统100可以是嵌入式存储系统的一部分。例如,闪存可以嵌入主机内。在其他示例中,存储系统100可以是固态驱动器(SSD)的形式。
在一些实施方案中,非易失性存储系统100包括控制器122和非易失性存储管芯108之间的单个信道,本文描述的主题不限于具有单个存储器信道。例如,在一些存储系统架构中,取决于控制器能力,在控制器和存储管芯之间可存在2、4、8或更多个信道。在本文描述的任何实施方案中,即使在附图中示出了单个信道,也可以在控制器和存储管芯之间存在多于单个信道。
如图2所示,控制器122包括与主机连接的前端模块208、与一个或多个非易失性存储管芯108连接的后端模块210,以及执行现在将详细描述的功能的各种其他模块。
图2中示出的控制器122的部件可以采取被设计用于与其他部件一起使用的封装功能硬件单元(例如,电路)的形式,可由例如通常执行相关功能的特定功能的(微)处理器或处理电路或与更大系统连接的独立硬件或软件部件执行的程序代码(例如,软件或固件)的一部分。例如,每个模块可以包括专用集成电路(ASIC)、现场可编程门阵列(FPGA)、电路、数字逻辑电路、模拟电路、分立电路、栅极或任何其他类型的硬件的组合、或它们的组合。另选地或除此之外,每个模块可以包括存储在处理器可读器件(例如,存储器)中的软件,以对控制器122的处理器进行编程,从而执行本文描述的功能。图2中示出的架构是可以(或可以不)使用图1A或图1C中示出的控制器122的部件(即RAM、ROM、处理器、接口)的一个示例性具体实施。
再次参考控制器122的模块,缓冲器管理器/总线控制214管理随机存取存储器(RAM)216中的缓冲器并控制控制器122的内部总线判优。只读存储器(ROM)218存储系统引导代码。尽管在图2中示出为与控制器122分开放置,但在其他实施方案中,RAM 216和ROM218中的一个或两者可位于控制器内。在其他实施方案中,RAM和ROM的部分既可以位于控制器122内、又可以位于该控制器外部。此外,在一些具体实施中,控制器122、RAM216和ROM218可位于单独的半导体管芯上。
前端模块208包括提供与主机或下一级存储控制器的电接口的主机接口220和物理层接口(PHY)222。主机接口220类型的选择可取决于所使用的存储器的类型。主机接口220的示例包括但不限于SATA、SATA Express、SAS、光纤信道、USB、PCIe和NVMe。主机接口220通常便于传输数据、控制信号和定时信号。
后端模块210包括纠错码(ECC)引擎224,该纠错码引擎对从主机接收的数据字节进行编码,并对从非易失性存储器读取的数据字节进行解码和纠错。命令定序器226生成命令序列,诸如编程和擦除命令序列,以发送到非易失性存储管芯108。RAID(独立管芯的冗余阵列)模块228管理RAID奇偶校验的生成和故障数据的恢复。RAID奇偶校验可以用作对写入非易失性存储系统100的数据的附加级别的完整性保护。在一些情况下,RAID模块228可以是ECC引擎224的一部分。需注意,RAID奇偶校验可以作为额外的一个或多个管芯添加,如共用名称所暗示的那样,但也可以在现有的管芯内添加,例如,作为额外的平面、额外的块或块内的额外WL。存储器接口230将命令序列提供给非易失性存储管芯108,并从非易失性存储管芯108接收状态信息。在一个实施方案中,存储器接口230可以是双倍数据速率(DDR)接口,诸如切换模式200、400或800接口。闪存控制层232控制后端模块210的全部操作。
图2中所示的系统100的附加部件包括媒体管理层238,其执行非易失性存储管芯108的存储单元的损耗均衡。系统100还包括其他分立部件240,诸如外部电接口、外部RAM、电阻器、电容器或可与控制器122连接的其他部件。在替代实施方案中,物理层接口222、RAID模块228、媒体管理层238和缓冲器管理器/总线控制器214中的一个或多者是控制器122中不必要的任选组件。
闪存转换层(FTL)或媒体管理层(MML)238可被集成为可以处理闪存错误并与主机连接的闪存管理的一部分。具体地讲,MML可以是闪存管理中的模块,并且可以负责NAND管理的内部。具体地讲,MML 238可包括存储器件固件中的算法,该算法将来自主机的写入转换为对管芯108的闪存126的写入。可能需要MML 238,因为:1)闪存可能具有有限的耐久性;2)闪存126可以只写入多个ECC页面;并且/或者3)除非将闪存126作为块擦除,否则可以不写入该闪存。MML 238理解闪存126的这些潜在限制,这些限制可能对主机不可见。因此,MML238尝试将来自主机的写入转换为写入闪存126中。如下所述,可以使用MML 238来识别和记录不稳定位。该不稳定位的记录可用于评估块和/或字线(字线上的存储单元)的健康状况。
控制器122可以与一个或多个存储管芯108连接。在一个实施方案中,控制器122和多个存储管芯(一起包括非易失性存储系统100)实现固态驱动器(SSD),该固态驱动器可以模拟、替换或替代主机内的硬盘驱动器,如NAS器件、笔记本电脑、平板电脑等。另外,SSD不需要用作硬盘驱动器。
非易失性存储系统的一些实施方案将包括连接到一个控制器122的一个存储管芯108。然而,其他实施方案可包括与一个或多个控制器122通信的多个存储管芯108。在一个示例中,如图3A所示,多个存储管芯可以被分组为一组存储器封装。每个存储器封装包括与控制器122通信的一个或多个存储管芯。图3A示出了用于在控制器和各个存储器封装0至N的存储管芯之间通信的N+1个存储器封装(封装0至封装N)和N+1个信道(信道0至信道N)。在一个实施方案中,存储器封装包括印刷电路板(或类似结构),其具有安装在其上的一个或多个存储管芯。在一些实施方案中,存储器封装可包括模制材料以包裹存储器封装的存储管芯108。在一个实施方案中,存储器封装可以是单个存储管芯108。在一些实施方案中,控制器122物理地与任何存储器封装分离。
图3B是示出图1C的感测块SB1的一个实施方案的框图。感测块被划分为被称为感测模块(例如,SM0)或感测放大器的一个或多个核心部分和被称为管理电路(例如,MC0)共用部分。在一个实施方案中,存在用于每个位线的单独的感测模块和用于一组感测模块诸如SM0、SM1、SM2和SM3的一个共用管理电路。组中的感测模块中的每一个经由数据总线172与相关联的管理电路通信。因此,存在与一组存储单元的感测模块通信的一个或多个管理电路。
每个感测模块SM0、SM1、SM2和SM3分别包括感测电路SC0、SC1、SC2和SC3,所述感测电路通过分别确定连接的位线BL0、BL1、BL2和BL3中的传导电流是否高于或低于预定阈值电压(验证电压)来执行感测。每个感测模块SM0、SM1、SM2和SM3还分别包括用于在连接的位线上设置电压条件的位线锁存器BLL0、BLL1、BLL2和BLL3。例如,在编程操作期间,锁存在位线锁存器中的预定状态将导致连接的位线被拉到锁定状态(例如,1.5-3V)、慢编程状态(例如,0.5-1V)或正常编程状态(例如,0V)。
管理电路MC0包括处理器192、四组示例性数据锁存器194(0)、194(1)、194(2)和194(3)以及耦接在数据锁存器组194和数据总线120之间的I/O接口198。位线锁存器(BLL0至BLL3)和锁存器194的组合是感测数据寄存器40的一个实施方案。I/O接口198是I/O数据寄存器42的一个实施方案。
在该示例中,每组锁存器与位线之一相关联。例如,数据锁存器194(0)与位线BL0相关联,数据锁存器194(1)与位线BL1相关联,数据锁存器194(2)与位线BL2相关联,数据锁存器194(3)与位线BL3相关联。在该实施方案中,每组数据锁存器包括由LDL 151、MDL 152和UDL153标识的数据锁存器。在每个存储单元中存储三位数据的存储器中,LDL 151存储用于写入数据的下页(LP)的位,MDL 152存储用于写入数据的中间页(MP)的位,并且UDL 153存储用于写入数据的上页(UP)的位。需注意,可能存在与每个位线相关联的一组此类锁存器。锁存器194还可以用于存储从非易失性存储单元读取的数据。
也可以使用每组附加或更少的数据锁存器。例如,在两位每存储单元的具体实施中,不需要用于数据的中间页(MP)的MDL数据锁存器。四位每存储单元的具体实施可以使用LDL、LMDL(中-下页)、UMDL(上-中间页)和UDL锁存器。本文提供的技术旨在涵盖此类变型。在另一个选项中,当存储单元的Vth在其目标数据状态的验证电压的指定裕度内时,使用另一个锁存器来识别存储单元是否处于慢编程模式。
处理器192在读取和编程期间执行计算。为了读取,处理器确定存储在所感测的存储单元中的数据状态并将数据存储在该组数据锁存器中。对于完全编程和刷新编程,处理器读取锁存器以确定要写入存储单元的数据状态。
在读取期间,系统的操作处于状态机112的控制之下,该状态机控制向寻址的存储单元提供不同的控制栅极电压。当其逐步通过对应于存储器所支持的各种存储器状态的各种预定义控制栅极电压时,感测模块可以在这些电压之一处跳闸,并且将通过数据总线172从感测模块向处理器192提供相应的输出。此时,处理器192通过考虑感测模块的跳闸事件和关于来自状态机的经由输入线193施加的控制栅极电压的信息来确定存储器状态。然后,它计算存储器状态的二进制编码,并将所得的数据位存储到数据锁存器194中。例如,与位线BL0相关联的存储单元的存储器状态可以存储在锁存器194(0)等中。在管理电路MC0的另一个实施方案中,位线锁存器既用作锁存器以锁存感测模块的输出,也用作如上所述的位线锁存器。
一些具体实施可包括多个处理器。在一个实施方案中,每个处理器将包括输出线(未示出),由此使得输出线中的每一个被线“或”在一起。在一些实施方案中,输出线在连接到线“或”线之前被反转。该配置使得能够在程序验证过程期间快速确定编程过程何时完成,因为接收线“或”的状态机可以确定何时所有被编程的位已达到所需电平。例如,当每个位达到其所需电平时,该位的逻辑零将被发送到线“或”线(或数据1被反转)。当所有位输出数据0(或数据1被反转)时,状态机知道要终止编程过程。因为每个处理器与四个感测模块通信,所以状态机需要读取线“或”线四次,或者将逻辑添加到处理器192以累积相关联的位线的结果,由此使得状态机只需要读取一次线“或”线。类似地,通过正确选择逻辑电平,全局状态机可以检测第一位何时改变其状态并相应地改变算法。
在编程或验证操作期间,待编程的数据(写入数据)存储在来自数据总线120的数据锁存器194中以及LP、MP和UP数据锁存器中。例如,要在与位线BL0相关联的选定存储单元中编程的数据可以存储在锁存器194(0)中,要在与位线BL1相关联的选定存储单元中编程的数据可以存储在锁存器194(1)中等。在状态机的控制下,编程操作包括施加到所寻址的存储单元的控制栅极的一系列编程电压脉冲。每个编程电压之后是读回(验证测试)以确定存储单元是否已被编程到所需的存储器状态。在一些情况下,处理器监控相对于所需存储器状态的读回存储器状态。当两个状态一致时,处理器设置位线锁存器以使位线被拉到指定编程禁止的状态(例如,2-3V)。即使编程电压出现在其控制栅极上,这也禁止耦接到位线的存储单元进一步编程。在其他实施方案中,处理器最初加载位线锁存器,并且感测电路在验证过程期间将其设置为禁止值。
每组数据锁存器194可被实现为每个感测模块的数据锁存器的堆叠。在一些具体实施中,数据锁存器被实现为移位寄存器,使得存储在其中的并行数据被转换为数据总线120的串行数据,反之亦然。对应于存储单元的读取/写入块的所有数据锁存器可以连接在一起以形成块移位寄存器,从而可以通过串行传输输入或输出数据块。具体地讲,读取/写入模块组被调整,使得其数据锁存器组中的每一个将数据按顺序移入或移出数据总线,就如它们是整个读取/写入块的移位寄存器的一部分一样。
图4A示出了存储单元阵列126的示例性结构。在一个实施方案中,存储单元阵列被分成M个存储单元块。该块是擦除单元。也就是说,每个块包含一起擦除的最小数量的存储单元。每个块通常被分成许多页面。需注意,本文中的这些页面可以称为“ECC页面”。ECC页面是编程单元。一个或多个ECC数据页面通常存储在一行存储单元中。ECC页面可以存储一个或多个扇区。扇区包括用户数据和开销数据。开销数据通常包括已根据扇区的用户数据计算的纠错码(ECC)的奇偶校验位。当数据被编程到阵列中时,控制器的一部分计算ECC奇偶校验,并且还在从阵列读取数据时对它进行检查。另选地,ECC和/或其他开销数据存储在与它们相关的用户数据不同的ECC页面或甚至不同的块中。
图4A还示出了存储阵列126的块i的一个实施方案的更多细节。块i包括X+1个位线和X+1个NAND串。块中可能有数千个NAND串。块i还包括64个数据字线(WL0至WL63)、2个虚设字线(WL_d0和WL_d1)、漏极侧选择线(SGD)和源极侧选择线(SGS)。每个NAND串的一个端子经由漏极选择栅极(连接到选择线SGD)连接到对应的位线,并且另一个端子经由源极选择栅极(连接到选择线SGS)连接到源极线。因为有64个数据字线和2个虚设字线,所以每个NAND串包括64个数据存储单元和2个虚设存储单元。在其他实施方案中,NAND串可以具有多于或少于64个数据存储单元以及更多或更少的虚设存储单元。数据存储单元可以存储用户或系统数据。虚设存储单元通常不用于存储用户或系统数据。一些实施方案不包括虚设存储单元。
在一些实施方案中,一次执行一个字线编程。也就是说,一次仅对连接到一个字线的存储单元进行编程。此外,为了提高效率,在对字线进行编程时,可以对字线上的所有存储单元进行编程。通常,多个ECC页面被编程到与一个字线相关联的存储单元中。ECC页面的数量可以取决于每个存储单元编程多少位。例如,如果每个存储单元编程一个位,则每个字线可以编程四个、八个、十六个或一些其他数量的ECC页面。
可以对存储单元进行编程以存储两个电荷级(或一些其他物理参数,诸如电阻),使得在每个单元中存储单个数据位。这通常被称为二进制或单级单元(SLC)存储器。SLC存储器可以存储两种状态。另选地,可以操作存储单元以存储两个以上可检测电荷级(或一些其他物理参数,诸如电阻),从而在每个中存储多于一位的数据。后一种配置称为多级单元(MLC)存储器。例如,MLC存储器可以存储四种状态并且可以保留两个数据位。又如,MLC存储器可存储八个状态并且可保留三个数据位。两种类型的存储单元均可以用在存储器中,例如二进制SLC闪存可以用于高速缓存数据,MLC存储器可以用于长期存储。在一些实施方案中,存储系统具有用于SLC编程的块池和用于MLC编程的块池。这些分别称为SLC块和MLC块。在一个实施方案中,存储控制器122最初将主机数据存储在SLC块中,然后执行折叠操作,其中数据从一个或多个SLC块传输到MLC块。
为了实现更好的并行性,可以将存储管芯(或其他逻辑单元)划分为多个平面。平面可被定义为能够报告其自己的操作状态并且可以独立于存储管芯中的其他平面执行命令执行的单元。例如,每个平面可以具有其自己的数据寄存器、数据缓冲器等,以实现独立的命令操作。图4B示出了具有两个平面(平面0,402a;平面1,402b)的存储管芯108的一个示例。在该示例中,平面0具有块0、1、4、5、8、9、12、13……n、n+1。平面1具有块2、3、6、7、10、11、14、15……n+2、n+3。这只是如何针对双平面存储管芯108寻址块的一个示例。
需注意,感测数据寄存器40a能够存储从平面0 402a中的块之一中的存储单元组感测的数据。同样,感测数据寄存器40b能够存储从平面1 402b中的块之一中的存储单元组感测的数据。因此,平面0中的一个块中的存储单元可以与平面1中的一个块中的存储单元同时感测。
此外,感测数据寄存器40a中的数据可用于存储要编程到平面0 402a中的块之一中的存储单元组中的数据。同样,感测数据寄存器40b中的数据可用于存储要编程到平面1402b中的块之一中的存储单元组中的数据。因此,平面0中的一个块中的存储单元可以与平面1中的一个块中的存储单元同时编程。此外,存在与每个平面402a、402b相关联的单独的一组I/O数据寄存器42a、42b。
在一个实施方案中,存储管芯将一个或多个ECC页面编程到平面0中的块之一中的存储单元组中,同时还将一个或多个ECC页面编程到平面1中的块之一中的存储单元组中。在一些实施方案中,一次仅编程平面中的一个字线。因此,在一个实施方案中,存储管芯将多个ECC页面编程到平面0中的一个字线上的存储单元中,同时还将多个ECC页面编程到平面1中的一个字线上的存储单元中。本文中,术语“最大编程单元”是指可以同时编程到存储管芯108上的存储单元中的最大数据量。编程的最大单位取决于每个存储单元编程的位数。例如,如果每个存储单元编程单个位,则存储管芯可以同时将8个ECC页面编程到平面0中的块中,并且将另外8个ECC页面编程到平面1中的块中。因此,该SLC示例中的最大编程单元是16个ECC页面。需注意,在一个实施方案中,可以同时编程的存储单元的最大数量不依赖于每个单元的位数。
如上所述,片段在本文中被定义为存储器件中的最小可寻址存储单元。在一个实施方案中,片段包括平面0上的块中的存储单元组和块平面1中的存储单元组。例如,在一个实施方案中,要编程一个片段,在平面0上的块中的存储单元中编程一个ECC页面,并且在块平面1中的存储单元组中编程另一个ECC页面。还需注意,在一些实施方案中,最大编程单元是多个片段。
图5示出了如何对数据缓冲器34中的未对齐写入命令的数据进行预填充和/或后填充以形成完整片段。在数据缓冲器34中示出了四个片段。需注意,数据缓冲器34是指物理存储器(例如,RAM 122b)的一部分,其用于在主机140和存储器126之间传输数据时临时存储数据。每个片段对应一个未对齐写入命令。在该示例中,每个未对齐写入命令的扇区数据小于片段大小。
对于片段1,存在预填充数据和后填充数据两者。扇区数据是来自主机的数据,该数据将被未对齐写入命令写入。在一个实施方案中,通过读取与片段相关联的存储单元来获得预填充数据和后填充数据。例如,在写入之前,片段可能已被映射到存储管芯上的某个物理位置。
对于片段2,还存在预填充数据和后填充数据两者。对于片段3,存在后填充数据,但是由于扇区数据位于片段的开头,因此不需要预填充数据。对于片段4,存在预填充数据,但是由于扇区数据位于片段的末尾,因此不需要后填充数据。而且,在片段4中,存在两个扇区数据扇区。请注意,如本文所定义,未对齐数据不填充片段。因此,对于未对齐的扇区数据,总是存在预填充数据和/或后填充数据。
图6是处理未对齐写入命令的过程600的流程图。未对齐写入命令可以是随机未对齐写入命令。在一个实施方案中,随机未对齐写入命令是未完全填充至少一个片段的未对齐写入命令。过程600在存储系统100中实现,诸如但不限于图1A、图1B、图1C、图2或图3A中的存储系统。在讨论过程600时,将参考图1A、图4B和图5中的各种元件。在主机140已经将至少两个未对齐写入命令发送到存储系统100之后,启动过程600。在一个实施方案中,命令存储在命令队列32中。需注意,为了便于说明,在过程600中以特定顺序描述了这些步骤。可以以不同的顺序执行这些步骤。另外,某些步骤可以执行多次。
步骤602包括识别命令队列32中的未对齐写入命令。在一个实施方案中,存储控制器122如下识别未对齐写入命令。具有不是片段中扇区数的倍数的起始LBA的任何写入命令被标识为未对齐写入命令。另外,任何数据大小不等于片段大小的写入命令都是未对齐写入命令。需注意,除非存在至少两个未对齐写入命令,否则该过程不进行到步骤604。在一个实施方案中,步骤602包括识别随机写入命令。
步骤604包括在数据缓冲器34中接收未对齐写入命令的未对齐数据。在一个实施方案中,存储控制器122启动从主机存储器20到数据缓冲器34的数据传输。参考图5,扇区数据从主机140接收并放置在数据缓冲器34中的适当位置。这包括将扇区数据放入片段中,也放入片段中的偏移处。需注意,为方便起见,在过程600中就这一点描述了步骤604。在步骤606之后可以接收部分或全部扇区数据。
步骤606包括合并感测与传输,其中感测是针对来自未对齐写入命令中的一个的存储管芯上的存储单元的填充数据,传输是针对先前感测的数据从存储管芯上的存储单元传输到未对齐写入命令中的另一个的数据缓冲器。给定片段的“填充数据”包括“预填充数据”和/或“后填充数据”。例如,来自存储管芯上的存储单元感测片段2的填充数据,同时传输先前感测的片段1的填充数据。在一个实施方案中,感测数据寄存器40首先用于存储从存储管芯108上的存储单元感测到的片段1的填充数据。然后将片段1的填充数据传输到I/O数据寄存器42。然后,感测数据寄存器40用于存储从存储管芯108上的存储单元感测的片段2的填充数据,同时将片段1的填充数据从I/O寄存器42传输到数据缓冲器24。这种并行感测和传输可以应用于其他片段对。另外,请注意,由于在该示例中每个片段存在一个未对齐写入命令,因此这可以被称为对未对齐写入命令对的填充数据的并行感测和传输。此外,需注意,在将填充数据添加到数据缓冲器34之前或之后,可以将未对齐写入命令的扇区数据传输到数据缓冲器34。
在步骤606和608之后,已经为未对齐写入命令创建了对齐数据。参考图5,每个片段各自完成。“完整片段”意思是所有需要的预填充和/或后填充数据连同主机扇区数据被添加到片段。因此,可以说数据缓冲器34中的四个片段中的每一个都是对齐数据的完整片段。
步骤608是将未对齐写入命令中的每一个的对齐数据从数据缓冲器34传输到存储管芯108。换句话说,步骤608包括将未对齐写入命令中的每一个的完整数据片段从数据缓冲器34传输到存储管芯108。需注意,控制器122可以在传输到存储管芯108之前对数据执行一些其他处理。例如,控制器122可以通过将奇偶校验位添加到数据缓冲器34中的数据来形成一个或多个ECC页面。在一个实施方案中,存储控制器122收集足够的数据用于最大编程单元,由此使得在步骤608中传输的完整片段的数量等于最大编程单元。
步骤610包括将传输到存储管芯的对齐数据编程到存储管芯中的存储单元组中。换句话说,步骤610包括将传输到存储管芯的完整数据片段编程到存储器上的存储单元组中。需注意,存储单元可以在两个或更多个平面上。在一个实施方案中,存储管芯同时将所有对齐数据编程到存储管芯上的存储单元组中。需注意,该存储单元组可以位于存储管芯的一个或多个平面上。因此,在一个存储管芯上的一个编程操作与在另一个存储管芯上的另一个编程操作可以同时执行。因此,步骤610可以包括在每个平面的单个编程操作中将未对齐写入命令的所有对齐数据编程到存储管芯上的存储单元组中。存储单元可被编程为每单元一位、每单元两位、每单元三位等。因此,可同时对多个未对齐写入命令进行编程。这节省了时间并减少了写入放大。这也节省了电力。
图7是形成未对齐写入命令的对齐数据的过程700的一个实施方案的流程图。过程700可用于在数据缓冲器34中形成一个未对齐写入命令的完整片段。例如,过程700可以用于向数据缓冲器34添加扇区数据以及片段的预填充和/或后填充数据。过程700在存储系统100中实现,诸如但不限于图1A、图1B、图1C、图2或图3A中的存储系统。在讨论过程700时,将参考图1A、图4B和图5中的各种元件。需注意,为了便于说明,过程700描述了对一个未对齐写入命令的数据处理。然而,如下面将说明的,当针对未对齐写入命令执行过程700的一个阶段时,可以针对另一个未对齐写入命令执行该过程的另一个阶段。
步骤702包括存储控制器122识别未对齐写入命令。这是用于一个未对齐命令的过程600的步骤602的一个实施方案。
步骤704和706可以并行执行。然而,不要求并行执行步骤704和706。步骤704包括存储控制器122将未对齐写入命令中的逻辑地址转换为存储系统100中的物理地址。需注意,在一个实施方案中,物理地址标识存储管芯108中的一个。在一个实施方案中,物理地址是最小可寻址单元。如上所述,术语“片段”在本文中是指存储器件中的最小可寻址存储单元。在一个实施方案的步骤704中,存储控制器122使用逻辑到物理转换表。需注意,在一些实施方案中,仅逻辑到物理转换表66的L2P高速缓存36保持在RAM 122b中。因此,如果必要条目不在L2P高速缓存36中,则存储控制器122可以访问存储结构126中的L2P表66。
步骤706包括将未对齐扇区数据从主机140传输到数据缓冲器34。步骤706是用于一个未对齐命令的过程600的步骤604的一个实施方案。
步骤708包括存储控制器122向存储管芯108发送命令以读取用于未对齐写入命令的填充数据。该命令可以识别比填充数据实际需要的存储单元组更大的存储单元组。例如,该命令可以指示存储管芯在某个块中读取整个字线上的存储单元,即使填充数据仅存储在存储单元的子集中。这是因为在一些实施方案中,存储管芯108通常在读取操作中感测存储单元的一个字线。还需注意,该命令可以请求存储管芯在多于一个平面上感测存储单元。例如,参考图4B,该命令可以指示存储管芯读取平面0上的块8中的字线和平面1中的块10上的字线。还需注意,在某些情况下,可以感测多于一个存储管芯以获得填充数据。因此,在一些情况下,存储控制器122可以将读取命令发送到多于一个存储管芯。需注意,要读取的字线被称为选定字线,具有选定字线的块被称为选定块。在一个实施方案中,读取命令是ONFI命令。
需注意,在步骤708之后,存储控制器122可以开始用于另一个未对齐写入命令的过程700。因此,在一个实施方案中,在步骤708之后,控制器122执行用于另一个未对齐写入命令的步骤702。另选地,可能已经识别了另一个未对齐写入命令,在这种情况下,可以执行用于下一个未对齐写入命令的步骤704和/或706。下文将讨论此类处理的进一步细节。
步骤710包括存储管芯108感测填充数据并将填充数据存储到感测数据寄存器40中。在一个实施方案中,步骤710包括在至少一个字线上的存储单元中感测数据。参考上文关于图4B的示例,存储管芯108感测块8的一个字线上的存储单元,并将数据存储在感测数据寄存器40a中。另外,存储管芯108感测块10的一个字线上的存储单元,并将数据存储在感测数据寄存器40b中。需注意,步骤710可以包括仅在一个平面、两个平面、四个平面等中感测存储单元的存储管芯108。还需注意,在一些情况下,步骤710可以涉及感测存储单元以获得填充数据的多个存储管芯。
步骤710可以包括感测阶段,其中一个或多个读取参考电压被施加到选定块中的选定字线。数据可以每单元一位、每单元两位、每单元三位等存储在存储单元中。在一个实施方案中,读取参考电压的数量取决于每单元的位数。如在图3B的示例性感测放大器的讨论中所指出的,数据可以首先存储在位线锁存器(例如,BLL0至BLL3)中,然后存储在锁存器194中的一个或多个中。通常,对于SLC数据,使用LDL 151、MDL 152和UDL 153中的仅一个,当每个单元感测两个位时使用两个,并且当每个单元感测三个位时使用三个。
步骤712包括将感测数据从感测数据寄存器40传输到I/O数据寄存器42的存储管芯108。参考图4B,感测数据寄存器40a中的数据被传输到I/O数据寄存器42a,感测数据寄存器40b中的数据被传输到I/O数据寄存器42b。参考图3B,数据从锁存器194传输到I/O接口198。
步骤714包括将数据从I/O寄存器42传输到数据缓冲器34。参考图1A,数据从I/O数据寄存器42传输到数据缓冲器34。参考图5,现在已在数据缓冲器34中形成完整片段。也就是说,片段需要的任何填充数据都已被传输到数据缓冲器34。此外,数据缓冲器34已经接收到片段的扇区数据。
图8是示出用于多个未对齐写入命令的编程数据的一个实施方案中的时序的图。时序图具有标记为“时间”的轴线,并且示出了由存储系统100执行的一系列操作。时序图分为几个阶段:1)固件延迟;2)传输扇区数据;3)L2P决议;4)填充数据感测;5)传输填充数据;6)传输片段;和7)编程。在该示例中,处理了八个未对齐写入命令。在该示例中,所有八个未对齐写入命令的对齐数据被同时编程。换句话说,在该示例中,八个未对齐写入命令中的每一个的完整片段被同时编程。
最初,存在一些固件延迟,如固件操作802所示。该固件操作802包括识别命令队列32中的未对齐写入命令的存储控制器122。该固件操作802表示步骤602的一个实施方案。该固件延迟802表示步骤702的一个实施方案。
接下来,针对未对齐写入命令中的第一个的传输扇区数据阶段和L2P决议阶段开始。这由传输扇区数据804(1)和L2P决议806(1)表示。需注意,传输扇区数据804(1)对应于过程700的步骤706,并且L2P决议806(1)对应于过程700的步骤704。
接下来,针对第一个未对齐写入命令的填充数据感测阶段开始。这由填充数据感测808(1)表示。填充数据感测对应于过程700的步骤708、710和712。
需注意,第二未对齐写入命令的传输扇区数据阶段和L2P决议阶段可以在第一未对齐写入命令的填充数据感测阶段期间开始。例如,在存储控制器122在过程700的步骤708中将读取命令发送到存储管芯之后,存储控制器122可以针对第二未对齐写入命令执行步骤704和706。这在图8中的时序图800中由传输扇区数据804(2)和L2P决议806(2)表示。
在针对第一未对齐写入命令的填充数据感测阶段结束之后,可以开始针对第二未对齐写入命令的填充数据感测阶段。这由时序图800中的填充数据感测808(2)表示。此外,针对第一未对齐写入命令的传输填充数据阶段可以与针对第二未对齐写入命令的填充数据感测阶段合并。这在时序图中由与填充数据感测808(2)的至少一部分同时发生的传输填充数据810(1)表示。在该示例中,传输填充数据阶段比填充数据感测阶段短。
因此,需注意,时序图800示出了感测与传输的合并,其中感测是针对来自未对齐写入命令(例如,未对齐写入命令)中的一个的存储管芯上的存储单元的填充数据,传输是针对先前感测的数据从存储管芯上的存储单元传输到未对齐写入命令中的另一个的数据缓冲器。可以对其他未对齐写入命令对执行该合并。例如,合并填充数据感测阶段808(3)与传输填充数据阶段810(2)等。
时序图800还示出了传输扇区数据阶段、L2P决议阶段、填充数据感测阶段和传输填充数据阶段如何以类似的方式继续用于其他未对齐写入命令对。最后,数据缓冲器34将包含所有八个未对齐命令的完整片段。换句话说,数据缓冲器34将包含所有八个未对齐命令的对齐数据。换句话说,通过操作810(1)至810(8)将所有八个未对齐命令的任何所需的填充数据(预填充和/或后填充)传输到数据缓冲器。另外,通过操作804(1)至804(8)将所有八个未对齐命令的扇区数据传输到数据缓冲器。需注意,在该示例中,在将填充数据传输到数据缓冲器34时,不发生扇区数据到数据缓冲器34的传输。
在一个实施方案中,存储控制器122处理足够数量的未对齐写入命令,由此使得片段的数量对应于最大编程单元。例如,如果为每个存储单元编程单个位,则最大编程单位可以是平面0中的块中的八个ECC页面,以及平面1中的块中的另外八个ECC页面。因此,该SLC示例中的最大编程单元是16个ECC页面。为了进一步扩展此示例,片段可能是两个ECC页面。因此,在该示例中,最大编程单位是八个片段。在最大编程单元中可能存在多于或少于八个片段。
在数据缓冲器34已经填充了所有八个未对齐写入命令的所有数据之后,传输片段阶段开始。这通过将八个片段812(1)至812(8)传输到存储管芯来表示。八个片段812(1)至812(8)的传输对应于过程600的步骤608的一个实施方案。参考图1A,八个片段812(1)至812(8)从数据缓冲器34传输到I/O数据寄存器42。
接下来,在程序阶段814期间对八个片段812(1)至812(8)进行编程。这对应于过程600的步骤610的一个实施方案。数据可以被编程为每存储单元一位、每存储单元两位、每存储单元三位等。可以将片段编程到一个或多个平面中的存储单元中。例如,参考图4B,I/O寄存器42a中的数据被传输到感测数据寄存器40a,并且I/O寄存器42b中的数据被传输到感测数据寄存器40b。需注意,在该上下文中,感测数据寄存器40b可以包括图3B中示出的LDL151、MDL 152和UDL 153锁存器194中的一个或多个。例如,可以将感测数据寄存器40a中的数据编程到平面0的块8中的选定字线上的存储单元中。例如,可以将感测数据寄存器40b中的数据编程到平面1的块10中的选定字线上的存储单元中。需注意,编程可以是最大编程单位。如上所述,术语“最大编程单元”是指可以同时编程到存储管芯上的存储单元中的最大数据量(这取决于每个存储单元编程的位数)。
以下示例将示出时序图800中的序列如何节省大量的时间。做出了以下假设。单个命令的传输扇区数据804的时间是50微秒(这也是最差情况下的L2P决议806),填充数据感测时间是80微秒,将每个填充数据传输到数据缓冲器的时间是30微秒,将每个片段从数据缓冲器传输到存储管芯的时间是30微秒,编程时间是300微秒。
图8中的总时间是一个扇区数据804(1)传输、八个感测操作808(1)至808(8)、一个填充数据传输810(8)、八个片段传输812(1)至812(8)和一个编程操作814。该总时间为30+8*(80+30)+30+300=1240微秒(不计算初始固件延迟802)。
需注意,图8中的时序800隐藏了另一个未对齐写入命令填充数据810(1)至810(7)在填充数据的感测操作中的传输,这节省了时间。需注意,以这种方式合并“n”个未对齐写入命令中的“n-1”对未对齐写入命令。另外,需注意,图8中的时序800对所有“n”个未对齐写入命令的片段进行同时编程。需注意,片段是一个实施方案中的最大编程单位。因此,节省了大量时间。
相比之下,需要对每个未对齐写入命令执行读写修改的更原始的技术要花费更多时间。此类技术可以使用八个扇区数据传输804、八个感测操作808、八个填充数据传输810、八个片段传输812和八个编程操作814。该总时间为8*(50+80+30+30+300)=3920微秒(不计算初始固件延迟802)。
在一个实施方案中,在从SLC存储单元到MLC存储单元的折叠期间执行未对齐写入命令的处理。图9是在从SLC存储单元到MLC存储单元的折叠期间处理未对齐写入命令的过程900的一个实施方案的流程图。过程900可以在存储系统100中执行,诸如图1A、图1B、图1C、图2或图3A中的存储系统。在过程900期间,可以使用感测放大器诸如图3B的感测放大器。在过程900中,MLC单元被编程为每单元三位;然而,可以修改过程900以将MLC单元编程为每单元两位、每单元四位等。
步骤902包括启动折叠序列。该步骤可以由存储控制器122启动。
步骤904包括从命令队列32选择折叠序列的未对齐写入命令的存储控制器122。如果MLC字线要存储每存储单元三位,则存储控制器122可以选择足够数量的三个SLC字线的写入命令。需注意,在平面0和平面1具有并行处理的实施方案中,这是指平面0中的三个SLC字线和平面1中的三个SLC字线。同样,平面0中可能存在MLC字线,而平面1中可能存在另一个MLC字线。需注意,步骤904可以包括将未对齐写入命令划分为多个SLC存储单元组中的每一个的一组未对齐写入命令。SLC存储单元组可以是一个或多个平面中的每一个中的存储单元的字线。步骤904是过程600的步骤602的一个实施方案。为了便于说明,存储控制器选择24个未对齐写入命令。这与图8的示例一致,其中在最大写入单元中存在八个片段。
步骤906是针对第一SLC组执行过程600的步骤604、606、608和610。第一SLC组可以包括存储管芯上的一个或多个平面中的每一个中的字线上的存储单元。执行步骤906一次可以实现如图8所示的一系列操作。因此,在本示例中,对未对齐写入命令中的八个执行步骤906。在一个实施方案中,编程阶段814使得八个未对齐写入命令的所有数据被同时编程。需注意,这可以包括在一个或多个平面上对存储单元进行编程。例如,平面0的块8中的字线12被编程为每存储单元一位,平面1的块10中的字线12被编程为每存储单元一位。
步骤908是针对第二SLC组执行过程600的步骤604、606、608和610。第二SLC组可以包括存储管芯上的一个或多个平面中的每一个中的字线上的存储单元。执行步骤908一次可以实现如图8所示的一系列操作。因此,在本示例中,对未对齐写入命令中的八个执行步骤908。在一个实施方案中,编程阶段814使得八个未对齐写入命令的所有数据被同时编程。需注意,这可以包括在一个或多个平面上对存储单元进行编程。例如,平面0的块8中的字线13被编程为每存储单元一位,平面1的块10中的字线13被编程为每存储单元一位。
步骤910是针对第三SLC组执行过程600的步骤604、606、608和610。第三SLC组可以包括存储管芯上的一个或多个平面中的每一个中的字线上的存储单元。执行步骤910一次可以实现如图8所示的一系列操作。因此,在本示例中,对未对齐写入命令中的八个执行步骤910。在一个实施方案中,编程阶段814使得八个未对齐写入命令的所有数据被同时编程。需注意,这可以包括在一个或多个平面上对存储单元进行编程。例如,平面0的块8中的字线14被编程为每存储单元一位,平面1的块10中的字线4被编程为每存储单元一位。
步骤912包括对刚编程的数据执行三个SLC组到一个MLC组的片上数据传输。MLC组可以包括存储管芯上的一个或多个平面中的每一个中的字线上的存储单元。在本示例中,来自平面0的块8中的字线12、13和14的数据可以被编程为在平面0的块1012中每存储单元三位,而同时来自平面1的块10中的字线12、13和14的数据可以被编程为在平面1的块1014中每个存储单元三位。片上数据传输可以包括将来自SLC字线的数据感测到寄存器诸如感测数据寄存器40中,然后编程到MLC字线中而无需从存储管芯108传输数据。
本文公开的第一实施方案是一种设备,包括:具有存储单元的存储管芯;数据缓冲器;和一个或多个控制电路。一个或多个控制电路被配置为:将未对齐数据接收到数据缓冲器中。未对齐数据用于多个未对齐写入命令。一个或多个控制电路被配置为同时进行感测与传输,其中感测是针对来自未对齐写入命令中的一个的存储管芯上的存储单元的填充数据,传输是针对先前感测的填充数据从存储管芯上的存储单元传输到未对齐写入命令中的另一个的数据缓冲器。一个或多个控制电路被配置为将未对齐写入命令中的每一个的对齐数据从数据缓冲器传输到存储管芯。一个或多个控制电路被配置为将对齐数据编程到存储管芯上的存储单元组中。
在第二实施方案中,并且促进第一实施方案,一个或多个控制电路被进一步配置为将所有对齐数据同时编程到存储管芯上的存储单元组中。
在第三实施方案中,并且促进第一实施方案或第二实施方案,一个或多个控制电路被配置为同时进行感测与传输,其中感测是针对来自未对齐写入命令中的一个的存储管芯上的存储单元的填充数据,传输是针对先前感测的填充数据从存储管芯上的存储单元传输到“n-1”对“n”个未对齐写入命令的未对齐写入命令中的另一个的数据缓冲器。
在第四实施方案中,并且促进第一实施方案至第三实施方案中的任何者,存储管芯包括第一组数据寄存器和第二组数据寄存器。为了同时进行感测与传输,其中感测是针对来自未对齐写入命令中的一个的存储管芯上的存储单元的填充数据,传输是针对先前感测的填充数据从存储管芯上的存储单元传输到未对齐写入命令中的另一个的数据缓冲器,一个或多个控制电路被进一步配置为:感测存储管芯上的第一组存储单元,以便将未对齐写入命令中的第一个的填充数据存储到第一组数据寄存器中;将第一个未对齐写入命令的填充数据从第一组数据寄存器传输到第二组数据寄存器;并且同时进行感测与传输,其中感测是针对存储管芯上的第二存储单元组以便将未对齐写入命令中的第二个的填充数据存储到第一组数据寄存器中,传输是针对第一个未对齐写入命令的填充数据从第二组数据寄存器传输到数据缓冲器。
在第五实施方案中,并且促进任何第四实施方案,一个或多个控制电路被进一步配置为同时将来自第一组数据寄存器的未对齐写入命令中的每一个的所有对齐数据编程到存储单元组中。
在第六实施方案中,并且促进第一实施方案至第五实施方案中的任何者,存储单元组是一个完整的最大编程单元。
在第七实施方案中,并且促进第一实施方案至第六实施方案中的任何者,一个或多个控制电路被进一步配置为在命令队列中识别足够数量的未对齐写入命令,由此使得对齐数据是编程的一个最大单元。
在第八实施方案中,并且促进第一实施方案至第七实施方案中的任何者,存储单元组位于存储管芯中的多个平面上。
在第九实施方案中,并且促进第一实施方案至第八实施方案中的任何者,其中一个或多个控制电路被进一步配置为:为单级单元(SLC)到多级单元(MLC)折叠操作选择足够数量的未对齐写入命令;将未对齐写入命令分成存储单元的多个SLC组中的每一个的组;对于未对齐写入命令组中的每一个:i)将未对齐数据接收到数据缓冲器,ii)同时进行感测与传输,其中感测是针对来自组中的未对齐写入命令中的一个的存储管芯上的存储单元的填充数据,传输是针对先前感测的填充数据从存储管芯上的存储单元传输到组中的未对齐写入命令中的另一个的数据缓冲器;iii)将组中的未对齐写入命令中的每一个的对齐数据从数据缓冲器传输到存储管芯;并且iv)将该组的对齐数据编程到存储管芯上的SLC存储单元组中;并且将来自多个SLC存储单元组的数据传输到存储管芯上的MLC存储单元组。
一个实施方案包括操作存储系统的方法。该方法包括在存储控制器的命令队列中识别多个未对齐写入命令;将多个未对齐写入命令的未对齐数据传输到存储控制器的数据缓冲器;合并感测与传输,其中感测是针对来自未对齐写入命令中的一个的存储管芯上的存储单元的填充数据,传输是针对先前感测的填充数据从存储管芯上的存储单元传输到未对齐写入命令中的另一个的数据缓冲器。针对每个未对齐写入命令传输未对齐数据和传输先前感测的填充数据在数据缓冲器中形成完整片段。该方法还包括将未对齐写入命令中的每一个的完整数据片段从数据缓冲器传输到存储管芯;并且将传输到存储管芯的完整数据片段编程到存储管芯上的存储单元组中。
一个实施方案包括非易失性存储系统,该系统包括:存储管芯,其具有存储单元;数据缓冲器;未对齐写入命令识别装置,其用于识别存储控制器的命令队列中的多个未对齐写入命令;第一数据传输装置,其用于将多个未对齐写入命令的未对齐数据传输到存储控制器的数据缓冲器;合并装置,其用于合并感测与传输,其中感测是针对来自未对齐写入命令中的一个的存储管芯上的存储单元的填充数据,传输是针对先前感测的填充数据从存储管芯上的存储单元传输到未对齐写入命令中的另一个的数据缓冲器;第二数据传输装置,其用于将未对齐写入命令中的每一个的完整数据片段从数据缓冲器传输到存储管芯;以及编程装置,其用于将传输到存储管芯的完整数据片段编程到存储管芯上的存储单元组中。
在一个实施方案中,第一数据传输装置包括下述各项中的一个或多者:处理器122c、控制器122、RAM 122b、前端模块208、主机接口220、PHY222、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、电路、数字逻辑电路、模拟电路、分立电路、栅极或任何其他类型的硬件的组合或它们的组合。另选地或除此之外,第一数据传输装置可以包括存储在处理器可读器件(例如,存储器)中的软件,以对处理器122c进行编程,从而执行识别存储控制器122的命令队列32中的多个未对齐写入命令。
在一个实施方案中,合并装置包括下述各项中的一个或多者:处理器122c、控制器122、RAM 122b、感测数据寄存器40、I/O数据寄存器42、感测块SB、读取/写入电路128、状态机112、片上地址解码器114、功率控制116、解码器124/132、接口122d、锁存器164、处理器192、I/O接口198、位线锁存器BLL0至BLL3、感测电路SC0至SC3、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、电路、数字逻辑电路、模拟电路、分立电路、栅极或任何其他类型的硬件的组合或它们的组合。另选地或除此之外,合并装置可以包括存储在处理器可读器件(例如,存储器)中的软件,以对处理器122进行编程,从而执行感测与传输合并的至少一部分,其中感测是针对来自未对齐写入命令中的一个的存储管芯上的存储单元的填充数据,传输是针对先前感测的填充数据从存储管芯上的存储单元传输到未对齐写入命令中的另一个的数据缓冲器。
在一个实施方案中,第二数据传输装置包括下述各项中的一个或多者:处理器122c、控制器122、RAM 122b、I/O寄存器42、主接口122d、存储器接口230、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、电路、数字逻辑电路、模拟电路、分立电路、栅极或任何其他类型的硬件的组合或它们的组合。另选地或除此之外,第二数据传输装置可以包括存储在处理器可读器件(例如,存储器)中的软件,以对处理器122c进行编程,从而执行将未对齐写入命令中的每一个的完整数据片段从数据缓冲器34传输到存储管芯108。
在一个实施方案中,编程装置包括下述各项中的一个或多者:处理器122c、控制器122、RAM 122b、感测数据寄存器40、感测块SB、读取/写入电路128、状态机112、片上地址解码器114、功率控制116、解码器124/132、锁存器164、处理器192、I/O接口198、位线锁存器BLL0至BLL3、感测电路SC0至SC3、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、电路、数字逻辑电路、模拟电路、分立电路、栅极或任何其他类型的硬件的组合或它们的组合。另选地或除此之外,编程装置可以包括存储在处理器可读器件(例如,存储器)中的软件,以对处理器进行编程,从而执行编程的至少一部分,其中编程是将传输到存储管芯的完整数据片段编程到存储管芯上的存储单元组中。
出于本文献的目的,术语“写入”和“存储”通常可互换使用,术语“写入的”和“存储的”也是如此。
出于本文献的目的,数字术语第一(即,第1)和第二(即,第2)可用于大致指定存储控制器何时从主机接收命令(例如,写入命令)的顺序,以及大致指定要将数据(例如,第1数据和第2数据)存储在非易失性存储器中的顺序。然而,应当指出的是,术语第一(即第1)不应当被解释为暗示在其之前没有任何其他顺序。例如,在接收到第1写入命令之前可能已经接收到先前的写入命令。然而,它可以暗示在稍后的时间点而不是在接收到第1写入命令时接收到第2写入命令,如本文使用的术语。类似地,它可以暗示在接收到第2写入命令之后接收到第3写入命令。
出于本文献的目的,说明书中对“实施方案”、“一个实施方案”、“一些实施方案”或“另一个实施方案”的引用可用于描述不同的实施方案或相同的实施方案。
出于本文献的目的,连接可以是直接连接或间接连接(例如,经由一个或多个其他部件)。在一些情况下,当一个元件被称为连接或耦接到另一个元件时,该元件可以直接连接到另一个元件或经由中间元件间接连接到另一个元件。当一个元件被称为直接连接到另一个元件时,该元件和另一个元件之间没有中间元件。如果两个器件直接或间接连接,则它们“通信”,使得它们可以在它们之间传递电子信号。
出于本文献的目的,术语“基于”和“取决于”可以被解读为“至少部分地基于”。
虽然上文已经描述了本技术的各种实施方案,但是应当理解,它们是作为示例而非限制来呈现的。对于相关领域的技术人员而言将显而易见的是,在不脱离本技术的实质和范围的前提下,可以对本公开进行形式和细节上的各种修改。例如,尽管上文详细描述了一些变型形式,但是其他修改形式或添加形式也是可能的。具体地讲,除了本文所述的那些形式之外,还可以提供其他特征和/或变型形式。例如,上述具体实施可以针对所公开的特征的各种组合和子组合和/或以上公开的若干其他特征的组合和子组合。另外,在附图中示出和/或本文所述的逻辑流程不需要所示的特定顺序或顺序次序来实现期望的结果。其他实施方案可以在以下权利要求的范围内。
上文已借助于功能构建块描述了本技术的实施方案,所述功能构建块示出了规定的功能及其关系的执行。为了便于描述,本文通常定义了这些功能构建块的边界。只要规定的功能及其关系被适当地执行,就可定义替代的边界。因此,任何此类替代的边界均在受权利要求书保护的技术的范围和实质内。本领域技术人员将认识到,这些功能构建块可以由分立组件、专用集成电路、执行适当软件的处理器等或其任何组合来实现。
本技术的广度和范围不应当受任何上述示例性实施方案的限制,并且应当仅根据以下权利要求书及其等同物进行限定。
尽管以特定于结构特征和/或方法行为的语言对主题进行了描述,但应当理解,所附权利要求书中限定的主题并不一定限于上文所述的特定特征或行为。相反,上文所述的特定特征或行为作为实现权利要求的示例形式而公开。
出于说明和描述的目的已经呈现了对前文的详细描述。所述说明并非意图为详尽的或限定到本发明所公开的精确形式。根据以上教导内容,很多修改形式和变型形式都是可能的。选择所描述的实施方案是为了最佳地阐明所提出的技术的原理及其实际应用,以便由此使得本领域的其他技术人员能够在各种实施方案中以及适合于预期的特定用途的各种修改形式中最佳地利用该技术。本发明的范围旨在由所附权利要求限定。

Claims (10)

1.一种设备,包括:
存储管芯(108),所述存储管芯具有存储单元(126);
数据缓冲器(34);和
一个或多个控制电路(110、112、114、116、122、124、132、128、150),所述一个或多个控制电路被配置为:
将未对齐数据接收到所述数据缓冲器中,所述未对齐数据用于多个未对齐写入命令;
同时进行感测与传输,其中所述感测是针对来自所述未对齐写入命令中的一个的所述存储管芯上的存储单元的填充数据,所述传输是针对先前感测的填充数据从所述存储管芯上的存储单元传输到所述未对齐写入命令中的另一个的所述数据缓冲器;
将用于所述未对齐写入命令中的每一个的对齐数据从所述数据缓冲器传输到所述存储管芯;以及
将所述对齐数据编程到所述存储管芯上的存储单元组中。
2.根据权利要求1所述的设备,其中所述一个或多个控制电路被进一步配置为:
同时将所有所述对齐数据编程到所述存储管芯上的所述存储单元组中。
3.根据权利要求1或2所述的设备,其中所述一个或多个控制电路被进一步配置为:
同时进行感测与传输,其中所述感测是针对来自所述未对齐写入命令中的一个的所述存储管芯上的存储单元的填充数据,所述传输是针对先前感测的填充数据从所述存储管芯上的存储单元传输到“n”个未对齐写入命令的“n-1”对的所述未对齐写入命令中的另一个的所述数据缓冲器。
4.根据权利要求1或2所述的设备,其中所述存储管芯包括第一组数据寄存器和第二组数据寄存器,其中为了同时进行感测与传输,其中所述感测是针对来自所述未对齐写入命令中的一个的所述存储管芯上的存储单元的填充数据,所述传输是针对先前感测的填充数据从所述存储管芯上的存储单元传输到所述未对齐写入命令中的另一个的所述数据缓冲器,所述一个或多个控制电路被进一步配置为:
感测所述存储管芯上的第一组存储单元,以便将用于所述未对齐写入命令中的第一个写入命令的填充数据存储到所述第一组数据寄存器中;
将用于所述第一个未对齐写入命令的所述填充数据从所述第一组数据寄存器传输到所述第二组数据寄存器;并且
同时进行感测与传输,其中所述感测是针对所述存储管芯上的第二存储单元组以便将第二个所述未对齐写入命令的填充数据存储到所述第一组数据寄存器中,所述传输是针对所述第一个未对齐写入命令的所述填充数据从所述第二组数据寄存器传输到所述数据缓冲器。
5.根据权利要求4所述的设备,其中所述一个或多个控制电路被进一步配置为:
同时将用于所述未对齐写入命令中的每一个的所有所述对齐数据从所述第一组数据寄存器编程到所述存储单元组中。
6.根据权利要求1、2或4所述的设备,其中所述一个或多个控制电路被进一步配置为:
在每个平面的单个编程操作中,将用于所述多个未对齐写入命令的所有所述对齐数据编程到所述存储管芯上的所述存储单元组中。
7.根据权利要求1、2或4所述的设备,其中所述一个或多个控制电路被进一步配置为:
在命令队列中识别足够数量的未对齐写入命令,由此使得所述对齐数据是编程的一个最大单元。
8.根据权利要求7所述的设备,其中所述存储单元组位于所述存储管芯中的多个平面上。
9.根据权利要求1、2或4所述的设备,其中所述一个或多个控制电路被进一步配置为:
针对单级单元(SLC)到多级单元(MLC)折叠操作选择足够数量的未对齐写入命令;
将所述未对齐写入命令分成组以用于存储单元的多个SLC组中的每一个;
对于所述未对齐写入命令组中的每一个:i)将所述未对齐数据接收到所述数据缓冲器,ii)同时进行感测与传输,其中所述感测是针对来自所述组中的所述未对齐写入命令中的一个的所述存储管芯上的存储单元的所述填充数据,所述传输是针对先前感测的填充数据从所述存储管芯上的存储单元传输到所述组中的所述未对齐写入命令中的另一个的所述数据缓冲器;iii)将用于所述组中的所述未对齐写入命令中的每一个的对齐数据从所述数据缓冲器传输到所述存储管芯;以及iv)将用于所述组的所述对齐数据编程到所述存储管芯上的SLC存储单元组中;以及
将来自所述多个SLC存储单元组的所述数据传输到所述存储管芯上的MLC存储单元组中。
10.一种操作存储系统的方法,所述方法包括:
在存储控制器(122)的命令队列(32)中识别多个未对齐写入命令;
将用于所述多个未对齐写入命令的未对齐数据传输到所述存储控制器(122)的数据缓冲器(34);
合并感测与传输,其中所述感测是针对来自所述未对齐写入命令中的一个的存储管芯(108)上的存储单元(126)的填充数据,所述传输是针对先前感测的填充数据从所述存储管芯上的存储单元传输到所述未对齐写入命令中的另一个的所述数据缓冲器,其中针对每个未对齐写入命令传输所述未对齐数据和传输先前感测的所述填充数据在所述数据缓冲器中形成完整片段;
将用于所述未对齐写入命令中的每一个的完整数据片段从所述数据缓冲器传输到所述存储管芯;以及
将传输到所述存储管芯的所述完整数据片段编程到所述存储管芯上的存储单元组中。
CN201811276381.0A 2017-11-27 2018-10-30 未对齐写入的处理 Active CN109840215B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/822,881 2017-11-27
US15/822,881 US10372603B2 (en) 2017-11-27 2017-11-27 Handling of unaligned writes

Publications (2)

Publication Number Publication Date
CN109840215A true CN109840215A (zh) 2019-06-04
CN109840215B CN109840215B (zh) 2023-05-30

Family

ID=66442440

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811276381.0A Active CN109840215B (zh) 2017-11-27 2018-10-30 未对齐写入的处理

Country Status (3)

Country Link
US (1) US10372603B2 (zh)
CN (1) CN109840215B (zh)
DE (1) DE102018123891A1 (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113076057A (zh) * 2020-01-03 2021-07-06 西部数据技术公司 用于减少读取-修改-写入操作的延迟的系统和方法
CN116931842A (zh) * 2023-09-12 2023-10-24 合肥康芯威存储技术有限公司 一种存储器、数据处理方法、电子设备及介质

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190124015A (ko) * 2018-04-25 2019-11-04 에스케이하이닉스 주식회사 저항 변화 메모리 장치를 포함하는 메모리 시스템 및 그 동작 방법
US11101001B2 (en) * 2018-05-08 2021-08-24 Sandisk Technologies Llc Non-volatile memory with multi-plane mixed sub-block programming
US10978156B2 (en) 2018-06-29 2021-04-13 Sandisk Technologies Llc Concurrent programming of multiple cells for non-volatile memory devices
US11545221B2 (en) 2018-06-29 2023-01-03 Sandisk Technologies Llc Concurrent programming of multiple cells for non-volatile memory devices
US10896724B2 (en) * 2018-12-18 2021-01-19 Western Digital Technologies, Inc. Non-volatile storage system with reduced program transfers
US11036582B2 (en) * 2019-09-27 2021-06-15 Western Digital Technologies, Inc. Uncorrectable error correction code (UECC) recovery time improvement
US11237838B2 (en) * 2020-01-02 2022-02-01 Western Digital Technologies, Inc. Storage system and method for enabling a direct accessible boot block in a memory die
JP7408449B2 (ja) 2020-03-23 2024-01-05 キオクシア株式会社 記憶装置及び記憶方法
US11068342B1 (en) * 2020-06-01 2021-07-20 Western Digital Technologies, Inc. Redundancy data in integrated memory assembly
WO2022193218A1 (en) * 2021-03-18 2022-09-22 Micron Technology, Inc. Techniques to mitigate memory die misalignment
US11934695B2 (en) * 2021-06-23 2024-03-19 Western Digital Technologies, Inc. Aligned command based firmware architecture for unaligned write handling
US11656797B2 (en) * 2021-07-28 2023-05-23 Western Digital Technologies, Inc. Data storage device executing runt write commands as free commands
US20230052489A1 (en) * 2021-08-13 2023-02-16 Micron Technology, Inc. Die location detection for grouped memory dies
US11698867B2 (en) * 2021-08-26 2023-07-11 Micron Technology, Inc. Using P2L mapping table to manage move operation
US11550657B1 (en) * 2021-09-01 2023-01-10 Apple Inc. Efficient programming schemes in a nonvolatile memory
US11966626B2 (en) * 2022-05-13 2024-04-23 Western Digital Technologies, Inc. Hybrid terabytes written (TBW) storage systems
US20240079045A1 (en) * 2022-09-06 2024-03-07 Western Digital Technologies, Inc. Optimization of non-aligned host writes

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6061779A (en) * 1998-01-16 2000-05-09 Analog Devices, Inc. Digital signal processor having data alignment buffer for performing unaligned data accesses
US20060271721A1 (en) * 2005-05-26 2006-11-30 International Business Machines Corporation Apparatus and method for efficient transmission of unaligned data
US20130007381A1 (en) * 2011-07-01 2013-01-03 Micron Technology, Inc. Unaligned data coalescing
US20170315727A1 (en) * 2016-04-30 2017-11-02 Sandisk Technologies Inc. Methods, systems and computer readable media for optimizing storage device bus and resource utilization by host realignment

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7395404B2 (en) 2004-12-16 2008-07-01 Sandisk Corporation Cluster auto-alignment for storing addressable data packets in a non-volatile memory array
US7212440B2 (en) 2004-12-30 2007-05-01 Sandisk Corporation On-chip data grouping and alignment
US7769978B2 (en) 2005-12-21 2010-08-03 Sandisk Corporation Method and system for accessing non-volatile storage devices
US8612718B2 (en) 2009-08-19 2013-12-17 Seagate Technology Llc Mapping alignment
US8924631B2 (en) 2011-09-15 2014-12-30 Sandisk Technologies Inc. Method and system for random write unalignment handling
JP6273010B2 (ja) * 2013-12-23 2018-01-31 インテル コーポレイション 入出力データアライメント
US9170942B1 (en) * 2013-12-31 2015-10-27 Emc Corporation System, apparatus, and method of automatic data padding
US9703491B2 (en) 2014-05-30 2017-07-11 Sandisk Technologies Llc Using history of unaligned writes to cache data and avoid read-modify-writes in a non-volatile storage device
US9582435B2 (en) * 2015-03-23 2017-02-28 Sandisk Technologies Llc Memory system and method for efficient padding of memory pages

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6061779A (en) * 1998-01-16 2000-05-09 Analog Devices, Inc. Digital signal processor having data alignment buffer for performing unaligned data accesses
US20060271721A1 (en) * 2005-05-26 2006-11-30 International Business Machines Corporation Apparatus and method for efficient transmission of unaligned data
US20130007381A1 (en) * 2011-07-01 2013-01-03 Micron Technology, Inc. Unaligned data coalescing
US20170315727A1 (en) * 2016-04-30 2017-11-02 Sandisk Technologies Inc. Methods, systems and computer readable media for optimizing storage device bus and resource utilization by host realignment

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113076057A (zh) * 2020-01-03 2021-07-06 西部数据技术公司 用于减少读取-修改-写入操作的延迟的系统和方法
CN116931842A (zh) * 2023-09-12 2023-10-24 合肥康芯威存储技术有限公司 一种存储器、数据处理方法、电子设备及介质
CN116931842B (zh) * 2023-09-12 2023-12-08 合肥康芯威存储技术有限公司 一种存储器、数据处理方法、电子设备及介质

Also Published As

Publication number Publication date
CN109840215B (zh) 2023-05-30
DE102018123891A1 (de) 2019-05-29
US20190163620A1 (en) 2019-05-30
US10372603B2 (en) 2019-08-06

Similar Documents

Publication Publication Date Title
CN109840215A (zh) 未对齐写入的处理
CN108694128A (zh) 存储器系统中的使用单次地址更新的折叠操作
CN103197897B (zh) 存储装置和非易失性存储器装置及其操作方法
CN103971739B (zh) 包括非易失性存储设备的存储系统及其编程方法
CN109697026A (zh) 包括主机设备和用于执行清除操作的存储设备的存储系统
KR20170064992A (ko) 중복제거를 위한 어드레스 매핑을 포함하는 플래시 메모리 장치 및 그 동작 방법
US9478315B2 (en) Bit error rate mapping in a memory system
CN109213705A (zh) 存储装置及其操作方法
US9947399B2 (en) Updating resistive memory
US10303384B1 (en) Task readiness for queued storage tasks
KR102378295B1 (ko) 저장 캐시 관리
CN106663463A (zh) 存储器裸芯的NAND闪存存储器与ReRAM之间的数据的芯片上复制
CN107111456A (zh) 用于生成与主机命令相关联的提示信息的系统和方法
CN109800177A (zh) 垃圾收集方法、执行方法的存储设备和含设备的计算系统
CN110275673A (zh) 存储装置及其操作方法
CN109815160A (zh) 最后写入页搜索
CN108735253A (zh) 非易失性存储器存储系统
US10268400B2 (en) System and method for file detection and usage during compaction
CN103578551A (zh) 非易失性存储器件和编程方法
CN110287130A (zh) 存储装置及其操作方法
CN110489360A (zh) 存储器控制器及该存储器控制器的操作方法
CN110175132A (zh) 存储装置及其操作方法
CN107810533A (zh) 使用位线缺陷信息解码数据
CN110175133A (zh) 存储装置及其操作方法
CN112416809A (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
GR01 Patent grant
GR01 Patent grant