CN111949209B - 具有后台擦除的增强型固态驱动器写入性能 - Google Patents
具有后台擦除的增强型固态驱动器写入性能 Download PDFInfo
- Publication number
- CN111949209B CN111949209B CN202010227499.5A CN202010227499A CN111949209B CN 111949209 B CN111949209 B CN 111949209B CN 202010227499 A CN202010227499 A CN 202010227499A CN 111949209 B CN111949209 B CN 111949209B
- Authority
- CN
- China
- Prior art keywords
- erase
- memory
- memory block
- controller
- block
- 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.)
- Active
Links
- 239000007787 solid Substances 0.000 title description 16
- 238000000034 method Methods 0.000 claims abstract description 69
- 230000002708 enhancing effect Effects 0.000 claims description 4
- 238000010586 diagram Methods 0.000 description 8
- 239000010410 layer Substances 0.000 description 8
- 238000004891 communication Methods 0.000 description 7
- 230000006870 function Effects 0.000 description 4
- 238000012986 modification Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 239000000872 buffer Substances 0.000 description 3
- 238000012937 correction Methods 0.000 description 3
- 230000006835 compression Effects 0.000 description 2
- 238000007906 compression Methods 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 239000000835 fiber Substances 0.000 description 2
- 238000007667 floating Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 230000006399 behavior Effects 0.000 description 1
- 239000003990 capacitor Substances 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000014759 maintenance of location Effects 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 239000002356 single layer Substances 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1072—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in multilevel memories
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1076—Parity data used in redundant arrays of independent storages, e.g. in RAID systems
- G06F11/108—Parity data distribution in semiconductor storages, e.g. in SSD
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0608—Saving storage space on storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0652—Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0658—Controller construction arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0689—Disk arrays, e.g. RAID, JBOD
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/10—Programming or data input circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/10—Programming or data input circuits
- G11C16/14—Circuits for erasing electrically, e.g. erase voltage switching circuits
- G11C16/16—Circuits for erasing electrically, e.g. erase voltage switching circuits for erasing blocks, e.g. arrays, words, groups
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/26—Sensing or reading circuits; Data output circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/32—Timing circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/34—Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
- G11C16/3436—Arrangements for verifying correct programming or erasure
- G11C16/344—Arrangements for verifying correct erasure or for detecting overerased cells
- G11C16/3445—Circuits or methods to verify correct erasure of nonvolatile memory cells
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7205—Cleaning, compaction, garbage collection, erase control
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/04—Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS
- G11C16/0483—Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS comprising cells having several storage transistors connected in series
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)
- Quality & Reliability (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Read Only Memory (AREA)
Abstract
一种用于对存储器系统中的存储器块进行编程的方法包含:使用至少一个存储器块特性,识别所述存储器系统中的所述存储器块的候选存储器块。所述方法还包含:使用预先擦除验证电平,对所述候选存储器块执行预先擦除操作。所述方法还包含:在预先擦除表格上存储所述候选存储器块中的每个存储器块的预先擦除信息。所述方法还包含:使用所述预先擦除表格,识别要编程的至少一个存储器块。所述方法还包含:通过使用所述预先擦除验证电平对所述至少一个存储器块执行预编程序擦除操作,并对所述至少一个存储器块执行写入操作来对所述至少一个存储器块进行编程。
Description
技术领域
本公开涉及存储器系统,并且具体地说,涉及用于使用后台擦除操作增强固态驱动器写入性能的方法和系统。
背景技术
非易失性存储器系统是一类无需外部电源即可保留所存储信息的存储器。非易失性存储器广泛用于各种电子装置和单独存储器装置。例如,非易失性存储器可存在于笔记本电脑、数字音频播放器、数码相机、智能电话、视频游戏、科学仪器、工业机器人、医疗电子器件、固态驱动器、USB驱动器、存储卡等等中。非易失性存储器可以电子方式进行编程/重新编程和擦除。
对此类存储器系统进行编程通常包含识别要编程的存储器块并对已识别存储器块执行预编程序擦除操作。在存储器块已经擦除之后,对已识别存储器块执行写入操作以完成已识别存储器块的编程。此类通过执行预编程序擦除操作和写入操作对存储器块进行的编程可能是资源密集型的,并且可能要花费不合期望的时间量来完成。
发明内容
本公开大体上涉及存储器管理系统和方法。
所公开实施例的一方面是一种用于对存储器系统中的存储器块进行编程的方法。所述方法包含:使用至少一个存储器块特性,识别所述存储器系统中的所述存储器块的候选存储器块。所述方法还包含:使用预先擦除验证电平,对所述候选存储器块执行预先擦除操作。所述方法还包含:在预先擦除表格上存储所述候选存储器块中的每个存储器块的预先擦除信息。所述方法还包含:使用所述预先擦除表格,识别要编程的至少一个存储器块。所述方法还包含:通过使用所述预先擦除验证电平对所述至少一个存储器块执行预编程序擦除操作并对所述至少一个存储器块执行写入操作来对所述至少一个存储器块进行编程。
所公开实施例的另一方面是一种控制器,其包含总线接口和处理器。所述总线接口配置成接收与空闲块列表上的存储器块相关联的存储器块特性。所述处理器配置成:使用所述存储器块特性中的至少一个存储器块特性,识别所述空闲块列表上的所述存储器块中的候选存储器块;使用预先擦除验证电平对所述候选存储器块执行预先擦除操作;使用所述预先擦除验证电平对所述候选存储器块中的至少一个存储器块执行预编程序擦除操作,并对所述至少一个存储器块执行写入操作。
所公开实施例的另一方面是一种用于增强存储器块的写入操作的性能的方法。所述方法包含:使用以下中的至少一个从空闲块列表上的存储器块中识别候选存储器块:与所述空闲块列表上的所述存储器块中的每一个相关联的程序擦除循环值、与所述空闲块列表上的所述存储器块中的每一个相关联的擦除时间值,和与所述空闲块列表上的所述存储器块中的每一个相关联的误码率值。所述方法还包含:使用大于0伏的预先擦除验证电平对所述候选存储器块中的每一个执行预先擦除操作。所述方法还包含:记录与所述预先擦除操作相关联的擦除时间。所述方法还包含:针对每个候选存储器块,存储对应擦除时间和所述预先擦除验证电平。
本公开的这些和其它方面公开于实施例的以下详细描述、所附权利要求书和附图中。
附图说明
本公开在结合附图阅读时依据以下详细描述会得到最佳理解。应强调,根据惯例,附图的各种特征未按比例绘制。相反,为了清晰起见,各种特征的尺寸会进行任意扩大或缩小。
图1A-1B总体上示出根据本公开原理的示例非易失性存储器系统的框图。
图2A总体上示出根据本公开原理的控制器的示例组件的框图。
图2B总体上示出根据本公开原理的非易失性存储器存储系统的示例组件的框图。
图3总体上示出根据本公开原理的存储器块。
图4是根据本公开原理的示出存储器块编程方法的流程图。
具体实施方式
以下论述针对本发明的各种实施例。虽然这些实施例中的一个或多个可能是优选的,但是不应将所公开的实施例解释为限制包含权利要求书的本公开的范围或者作为限制包含权利要求书的本发明的范围来使用。另外,所属领域的技术人员将理解以下描述具有广泛的应用,并且任何实施例的论述仅意味着所述实施例示例性的论述,而并非意图暗示将包含权利要求书的本公开的范围限制于所述实施例。
如所描述,非易失性存储器系统是一类无需外部电源即可保留所存储信息的存储器。非易失性存储器广泛用于各种电子装置和单独存储器装置。例如,非易失性存储器可存在于笔记本电脑、数字音频播放器、数码相机、智能电话、视频游戏、科学仪器、工业机器人、医疗电子器件、固态驱动器、USB驱动器、存储卡等等中。非易失性存储器可以电子方式进行编程/重新编程和擦除。
一种类型的存储器系统包含一个或多个基于快闪的固态驱动器,其可用于各种环境的各种电子装置,例如客户端环境、企业环境或其它合适的环境。对此类基于快闪的固态驱动器存储器系统进行编程通常包含识别要编程的存储器块和对已识别存储器块执行预编程序擦除操作。在存储器块已经擦除之后,对已识别存储器块执行写入操作来完成已识别存储器块的编程。
通过执行预编程序擦除操作和写入操作来对存储器块进行编程可能是资源密集型的,并且可能要花费不合期望的时间量来完成。例如,对典型固态驱动器存储器系统的单层级单元存储器块执行预编程序擦除操作可花费大约5微秒来完成,并且对单层级单元存储器块执行写入操作可每字线花费大约1微秒来完成。此外,对三层级单元存储器块执行预编程序擦除操作可花费大约15微秒来完成,并且对三层级单元存储器块执行写入操作可每字线花费大约15微秒来完成。因此,对于随机编程操作,字线0的编程时间可比仅字线编程长5到15微秒。这一额外时间可以称为由擦除诱发的时延,从服务质量的角度来看,这可能是不合期望的。
因此,增强存储器块的写入操作性能的系统和方法可以是合乎需要的,例如本文中所描述的那些系统和方法。在一些实施例中,本文中所描述的系统和方法可包含监测空闲块列表,所述空闲块列表包含未使用的和/或停止使用的存储器块并使用至少一个存储器块特性识别候选存储器块。本文中所描述的系统和方法可包含:在后台使用预先擦除验证电平对候选块执行预先擦除操作,所述预先擦除验证电平设置成高于标准验证电平。在一些实施例中,本文中所描述的系统和方法可包含:在预先擦除表格上存储候选存储器块的预先擦除信息。本文中所描述的系统和方法可包含:通过使用预先擦除验证电平执行预编程序擦除操作并对存储器块执行写入操作来根据预先擦除表格对存储器块进行编程。本文中所描述的系统和方法可以通过缩短与编程存储器块相关联的预编程序擦除的擦除时间来改进写入操作的性能。
图1A示出包含非易失性存储器的示例系统架构100的框图。具体地,示例系统架构100包含存储系统102(例如,其可以被称为存储器系统)、控制器104和主机106。在各种实施例中,主机106可以包含利用存储系统102的任何装置或系统。在一些实施例中,控制器104的各个方面可以由主机106实施,或者主机106可以包含其自身的控制器(例如,处理器),所述控制器配置成执行存储在存储系统102中的指令,并且进一步地,主机106可以存取存储在存储系统102中的数据。
主机106的实例包含计算装置,例如台式电脑、机架式服务器、笔记本电脑、智能手机、平板电脑或其它合适的计算装置。主机106还可以包含系统和装置,例如游戏系统、数码电话、数码相机(例如,数码照相机和数码电影相机)、便携式媒体播放器、数码相框、遥控器、电视棒、智能电视等。此外,系统架构100可以在例如安全数字(SD)卡或微安全数字(微SD)卡的存储卡中实施。在一些实施例中,系统架构100例如作为安装在笔记本电脑中的固态磁盘(SSD)驱动器嵌入主机中。
在其中系统架构100实施于存储卡内的实施例中,主机106可以包含用于一种或多种类型的存储卡或快闪驱动器的内置式插口(例如,通用串行总线(USB)端口,或存储卡插槽)。另外或替代地,主机106可以包含可以将存储卡插入其中的适配器。主机的前述实例并不意味着是限制性实例。相反,主机106可以包含存取存储系统102的任何类型的装置、系统和设备。
在图1A中,存储系统102包含存储器控制器和驱动器(例如,控制器104),如将在下文进一步描述的,但是在存储系统102的一些实施例中,存储系统102可以包含仅存储器单元,其替代地由主机106上的控制器执行的软件来控制(例如,计算装置的处理器控制存储系统102,包含对其进行错误处理)。此外,尽管图1A示出与主机106分开的存储系统102,但在一些实施例中,存储系统102嵌入有主机106,其中存储器、控制器和驱动器形成在单个集成电路芯片上。
主机106可以使用总线112与存储系统102通信,所述总线实施使存储系统102和主机106能够通信的任何已知的或后开发的通信协议。通信协议可以包含安全数字(SD)协议、记忆棒(MS)协议、USB协议、高级微控制器总线架构(AMBA)或其它合适的通信协议。
在各种实施例中,控制器104充当主机106与存储系统102之间的接口。主机106可以经由与总线112相关联的总线接口与控制器104通信。控制器104可以包含单独的电路组件、处理电路(例如逻辑门和开关)、处理器、微处理器、具有控制软件的微控制器或现场可编程门阵列(FPGA)。此外,示例控制器104包含计算机可读介质,所述计算机可读介质存储可由处理器执行的计算机可读程序代码(例如,软件或固件)。在一些实施例中,控制器104是快闪存储器控制器。在一些实施例中,控制器104是在主机106内执行的处理器。
仍参考图1A,根据一些实施例,控制器104充当主机106与存储系统102之间的接口,并管理存储在存储系统102上的数据。例如,主机106可以通过经由与总线112相关联的总线接口向控制器104提供逻辑地址来存取存储在存储系统102中的数据,控制器104将所述逻辑地址转换成物理地址。控制器104可以存取与物理地址相关联的数据和/或特定存储位置,并且促进在存储系统102与主机106之间传送数据。在一些实施例中,在存储系统102包含快闪存储器的情况下,控制器104格式化快闪存储器以确保存储器正常运行,映射出不良的快闪存储器单元,并且分配备用单元以替换将来发生故障的单元或用于保存固件以操作快闪存储器控制器(例如,控制器104)。
因此,控制器104执行各种存储器管理功能,例如损耗均衡(例如,分布写入以延长存储器块的寿命)、垃圾收集(例如,将有效数据页移动到新块并擦除先前使用的块)以及错误检测和纠正(例如读取错误处理)。
仍参考图1A,存储系统102包含非易失性存储器(NVM)块110,所述NVM块可以包含几个存储器裸片110-1到110-N。在一些实施例中,NVM块110定义了存储器裸片物理集合,例如存储器裸片110-1到110-N。在其它实施例中,NVM块110定义了存储器裸片逻辑集合,其中NVM块110包含来自几个物理上不同的存储器裸片集合的存储器裸片。图1A中定义NVM块110的方式并不意味着是限制性的。
每个存储器裸片,例如存储器裸片110-1,包含非易失性存储器单元,例如NAND快闪存储器单元、NOR快闪存储器单元或其它合适的存储器单元。由于存储器单元是非易失性的,因此即使当提供给存储器单元和/或存储系统102的电源中断的情况下,存储系统102中的存储器单元仍会保留数据。因此,存储系统102易于运输,并且存储系统102可以用在存储卡和并不总是连接到电源的其它存储器装置中。
在各种实施例中,存储器裸片110-1中的存储器单元是固态存储器单元(例如,快闪),并且是一次可编程、几次可编程或多次可编程的。另外,存储器裸片110-1中的存储器单元可以包含单层级单元(SLC)、多层级单元(MLC)、三层级单元(TLC)。在一些实施例中,存储器单元是以平面方式(例如,2D NAND(与非)快闪)或堆叠或层化方式(例如,3D NAND快闪)制造。即,平面快闪存储器包含单层存储器单元,而堆叠的快闪存储器包含竖直地多层堆叠的存储器单元(例如,称为平面)。
在一些实施例中并且如1A所示,控制器104和NVM块110通过实施任何已知的或后开发的通信协议的接口114通信地耦合。在存储系统102是快闪存储器的实施例中,接口114是快闪接口,例如Toggle Mode 200、400、800或通用快闪存储器接口(CFI)。在各种实施例中,接口114可以由设置在控制器104与各个存储器裸片110-1到110-N之间的几个通道(即,物理连接)来实施。此外,在其上建立接口114的通道的数目基于控制器104的功能而变化。另外,单个通道可以配置成通信地耦合超过一个存储器裸片。单个接口114的描绘并不意味着是限制性的。相反,单个接口表示可以在组件之间使用的示例接口,并且一个或多个接口可以用于通信耦合相同的组件。
图1B总体上示出根据本公开原理的系统架构100的框图。系统架构100可以实施为更大的系统架构的一部分。例如,如图1B所示,系统架构150包含存储模块156,所述存储模块进一步包含几个存储系统102。在示例系统架构150内,存储模块156通过存储控制器152与主机106通信地耦合。具体地,主机106与存储模块156之间的接口154包含实施任何已知的或后开发的通信协议的总线接口,例如串行高级技术附件(SATA)或外围组件接口标准(PCIe)接口。在一些实施例中,存储模块156是SSD(例如,在笔记本电脑或平板电脑中)。
系统架构100的一些实施方案包含分层存储系统。分层存储系统可以包含多个存储控制器152,每个存储控制器控制相应的存储系统102。此外,多个主机106可以各自存取分层存储系统。主机106可以经由实施任何已知的或后开发的通信协议的总线接口存取分层存储系统内的存储器,所述总线接口包含非易失性存储器标准(NVMe)或以太网光纤通道(FCoE)接口。分层存储系统可以被实施为机架安装的存储系统,其可由多个主机计算机(例如,数据中心)存取。
接口154可以由设置在存储控制器152与存储模块156之间的多个通道(即,物理连接)来实施。在一些实施例中,在其上建立接口154的通道的数目基于存储控制器152的功能而改变。单个接口的描述并不意味着是限制性的,并且单个接口表示可以在组件之间使用的示例接口,其中一个或多个接口可以用于通信地耦合各种组件。
图2A总体上示出根据本公开原理的存储系统102的框图200。存储系统102的框图200包含先前在图1A中描述的组件,例如控制器104和NVM块110。可以在存储系统102内存在的附加组件包含随机存取存储器(RAM)230、只读存储器(ROM)232和其它组件234。在一些实施例中,ROM 232存储系统启动代码。
尽管RAM 230和ROM 232被示为存储系统102内的分开的模块,但是所示架构并不意味着是限制性的。例如,RAM 230和ROM 232可以位于控制器104内。在一些实施例中,RAM230或ROM 232的一部分分别位于控制器104外和控制器104内。在其它实施例中,控制器104、RAM 230和ROM 232可以位于分开的半导体裸片上。在各种实施例中,其它组件234包含外部电接口、外部RAM、电阻器、电容器、逻辑门或与控制器104介接的其它组件。
在一些实施例中,控制器104包含与主机106介接的模块202,与NVM块110介接的模块204以及各种其它模块,下文将进一步描述。控制器内的模块(例如,模块202和204)通过总线206彼此通信地耦合。
以下对控制器104内所描绘的各种模块的讨论是说明性的而非限制性的。例如,在图2A中总体上示出的各种模块不限于在控制器104内执行,并且在一些实施例中,一个或多个模块可以在控制器104外执行。
模块202与主机106介接,并且包含主机接口208和物理层接口210,所述物理层接口在主机106或下一级存储控制器与控制器104之间提供电接口。主机接口208促进数据、控制信号和定时信号的传送。主机接口208的实例包含SATA、SATA Express、串行连接的SCSI(SAS)、光纤通道、USB、PCIe和NVMe。
仍参考图2A,在各种实施例中,模块204配置成与NVM块110通信并且包含纠错码(ECC)引擎212。在一些实施例中,ECC引擎212对从主机106接收的数据进行编码并且将编码的数据存储在NVM块110中。当从NVM块110中读取数据时,ECC引擎212对数据进行解码并校正在数据中检测到的错误。为了检测错误,ECC引擎212使用例如低密度奇偶校验(LDPC)码、Bose-Chaudhuri-Hocquenghem(BCH)码、软读取和/或额外奇偶校验的算法来实施各种类型的错误检查。
示例模块204还包含定序器214和独立驱动器冗余阵列(RAID)模块216。在各种实施例中,定序器214生成命令序列,例如编程和擦除命令序列,所述命令序列被传输到NVM块110。RAID模块216生成RAID奇偶校验和故障数据的恢复。RAID奇偶校验可以用于为写入NVM块110的数据提供附加级别的完整性保护。在一些实施例中,ECC引擎212实施RAID模块216的功能。
示例模块204还包含存储器接口218,所述存储器接口向NVM块110提供命令序列并从NVM块110接收状态信息。例如,存储器接口218实施任何已知的或后开发的通信协议,包含双倍数据速率(DDR)接口,例如Toggle Mode 200、400或800接口。模块204还包含控制模块204的整体操作的快闪控制层220。
仍参考图2A中的控制器104内的示例模块,控制器104内的附加模块包含虚拟字线(DW)模式生成模块222、DW错误分析模块224和读取参数调整模块226。虚拟字线放置在为了分析和跟踪相应的非易失性存储裸片的行为和健康状况而使用的非易失性存储器裸片上。在各种实施例中,DW模式生成模块222将已知数据模式放入虚拟字线中,并且通过从虚拟字线中读回数据并将数据与已知数据模式进行比较来跟踪或周期性地检查错误。
在各种实施例中,读取参数调整模块226调整与特定的非易失性存储器裸片相关联的参数。例如,并且如下文进一步讨论的,读取参数调整模块226可以在操作期间(即,读取或写入)调整与特定的非易失性存储器裸片相关联的参数,以调整或重新调整读取参数。在重新调整读取参数的操作期间,读取参数调整模块226调整特定存储器块的读取参数,从存储器块中读取数据,并验证所得的BER。如果所得的BER降至处于或低于目标或期望BER,则读取参数调整模块226存储读取参数用于存储器块。随后,在读取存储器块内的任何字线期间使用所存储的读取参数。因此,读取参数对于存储器块可能是唯一的。
示例控制器104中的附加模块包含缓冲器管理器/总线控制器228,其管理例如RAM230中的缓冲器并控制控制器104中的总线206的内部总线仲裁。另外或替代地,控制器104可以包含执行NVM块110的损耗均衡的介质管理层236。如先前所提及,关于控制器104描述的各种模块并不意味着对控制器104的架构进行限制。例如,物理层接口210、RAID模块216、介质管理层236和缓冲器管理/总线控制器228可以是控制器104内的可选组件的实例。
此外,在存储系统102包含快闪存储器的实施例中,介质管理层236可以集成为处理快闪错误并与主机106介接的快闪管理的一部分。具体地,介质管理层236可以包含算法(例如,存储器装置中的固件),所述算法将从主机106接收的写入命令转换为对NVM块110的写入。
图2B总体上示出具有存储系统102内的NVM块110的各种特征的框图。如先前(在图2A中)描述了控制器104的细节,在图2B中,控制器104被示为单个块。另外,在图2A和图2B中包含了先前描述的RAM 230、ROM 232和其它组件234以便于读者定位。接下来,讨论示例存储器裸片110-1内的细节。尽管讨论的重点是存储器裸片110-1,但是与存储器裸片110-1相关的每个讨论的特征同样适用于NVM块110中的所有存储器裸片。
在一些实施例中,示例存储器裸片110-1包含控制电路250、读取/写入电路252、行解码器254、列解码器256和存储器阵列260。存储器阵列260可以包含存储器单元的二维阵列或三维阵列。读取/写入电路252并行地读取和编程存储器裸片110-1内的存储器页。在各种实施例中,经由行解码器254通过字线和经由列解码器256通过位线存取存储器阵列260。
存储器裸片110-1的架构并不意味着是限制性的,并且在不脱离本公开的范围的情况下可以使用能够执行存取存储器阵列260的功能的任何已知架构。例如,在各种实施例中,可以对称方式在存储器阵列260的相对侧上实施通过各种外围电路对存储器阵列260的存取,这降低了存取线和存储器阵列260的每一侧上的电路的密度。
仍参考图2B,在各种实施例中,示例控制电路250包含电力控制电路266、地址解码器268和状态机270。在一些实施例中,电力控制电路266、地址解码器268和状态机270可以统称为管理电路。控制电路250及其各种管理电路通过各种接口(例如,接口262和264)通信地耦合到行解码器254和列解码器256。在各种实施例中,控制电路250对存储器阵列260执行各种操作,包含读取存储器单元或写入到存储器单元。
电力控制电路266在存储器阵列260的操作期间控制提供给字线和位线的功率和电压。地址解码器268提供地址接口,所述地址接口在主机106所提供的地址与行解码器254和列解码器256所使用的地址之间转换地址。示例地址解码器268将主机106所提供的地址转换为可以理解并与行解码器254和列解码器256所使用的格式兼容的地址。状态机270提供存储器操作的芯片级控制。
因此,存储系统102包含各种组件,包含控制器104和NVM块110,其细节已在上文图1A、1B、2A和2B中描述。现在,讨论转向示例存储器阵列260的示例架构,尤其是可以执行以改善存储系统102中的读取性能的方法。
图3进一步示出存储器阵列260。存储器阵列260被分成几个存储器块302。在快闪存储器中,存储器块被定义为擦除单位。也就是说,每个存储器块302包含一起或作为块擦除的多个存储器单元。在一些实施例中,存储器阵列260可以被划分成任意数目的块,例如,存储器阵列260包含1,024个块。另外或替代地,存储器块302中的每一个可以在概念上被分成定义为编程单位的多个页。在一些实施例中,数据页可以存储在一行存储器单元中。每个页可以包含用户数据和开销数据,其中开销数据包含已经从用户数据计算出的CC。在一些实施例中,存储器块302-1到302-N可以包含固态NAND存储器块。
每个存储器块302,例如存储器块302-1,包含多个位线304、字线306和选择线308。每个位线,例如位线304-1,连接到串联连接的几个存储器单元。更具体地,在其中每个存储器单元是浮栅晶体管的实施例中,浮栅晶体管串联连接以形成NAND串310(例如,在虚线框中所示)。尽管在图3中示出四个存储器单元,但是NAND串内的存储器单元的数目并不意味着是限制性的。例如,可以在NAND串中连接16个、32个、64个、128个或任何其它数目个存储器单元。每个相应位线304耦合到存储器块302内的相应NAND串。
仍然参考图3,读取存储在特定存储器单元(例如,存储器单元316)中的数据的方法包含向存储器块302的选择线308施加电压,所述选择线又耦合到存储器块302内的相应NAND串,包括包含存储器单元316的NAND串310。施加到选择线308的电压大于选择晶体管312和314的阈值电压。选择晶体管312由选择栅漏极线(SGD)308-1控制,并且选择晶体管314由选择栅源极线(SGS)308-2控制。另外,为了读取存储器单元316中的数据,NAND串319中的所有其它存储器单元或未选择的存储器单元被接通(例如,不管它们是被编程还是被擦除都导通电流)。未选择的存储器单元具有施加到其相应字线上的读取通过电压(即,读取参数),这些电压接通未选择的存储器单元。
在示例读取操作期间,将各种读取比较电平(即电压)施加到字线306-2,以确定存储在存储器单元316中的值。在一些实施例中,测量存储器单元316的传导电流以确定存储于存储器单元316内的值。存取每个存储器单元的方法以及在读取或写入期间存取的存储器单元的数目不同。例如,可以同时编程或读取存储器块302-1的所有位线。在各种实施例中,沿着共享字线的存储器单元可以被同时(即,并行)编程。在其它实施例中,位线可以被分成偶数位线和奇数位线。在奇数/偶数位线架构中,沿着共享字线并连接到奇数位线的存储器单元被同时编程,而沿着共享字线并连接到偶数位线的存储器单元在不同时间被编程。
每次将数据写入存储器块时,通过ECC引擎212处理数据,这包含对数据进行编码(例如,使用特定的纠错码)并将编码的数据存储在存储器块中。当从存储器块中读回数据时,通过ECC引擎212处理数据,这包含对数据进行解码、校正错误(例如,作为BER被跟踪)以及将数据返回给用户(借助于控制器104)。在一些实施例中,ECC引擎212将数据返回到控制器104所花费的时间量被定义为吞吐时间。
在一些实施例中,控制器104对存储器阵列260执行数据合并操作。控制器104从存储器阵列260的存储器块302-1到存储器块302-N中选择用于合并或压缩的源块。例如,控制器104可以选择存储器块302-1作为用于合并或压缩的源块。在本文描述的示例实施例中,存储器块302-1可以被称为源块302-1。源块302-1可以包含多个存储器片段,例如16个存储器片段或任何合适数目的存储器片段。存储器片段可以包含在主机写入操作期间由主机106写入的数据。存储器片段可以属于相应逻辑组,并且可以在源块302-1中分散或杂乱,使得与相同逻辑组相关联的存储器片段可以不在源块302-1中顺序地存储或组织。另外或替代地,尽管一些存储器片段包含在主机写入操作期间由主机106写入的数据,但是分散在整个源块302-1中的其它存储器片段可以是空白的(例如,已经被主机106或控制器104擦除或尚未由主机106写入)。
在一些实施例中,控制器104识别存储器块302-1到302-N中不用于固态驱动器操作的一个或多个。不用于固态驱动器操作的所述一个或多个存储器块302-1到302-N被视为空闲块,并且用(例如,来自先前编程的)先前(但是作废的)数据进行完全编程,或者当不用于固态驱动器操作的所述一个或多个存储器块302-1到302-N没有用数据完全写入时,它们是快闪填充的(例如,用数据进行快闪写入)。也就是说,空闲块(例如,不用于固态操作的所述一个或多个存储器块302-1到302-N)保持处于和/或被置于充电状态(例如,用阈值数目的电子充电),以防出现数据编程问题,例如由被擦除的块诱发的数据保持(EBDR)问题,或其它合适的数据编程问题。对应于不用于固态操作的所述一个或多个存储器块302-1到302-N的信息存储在空闲块列表上。例如,对应于存储器块302-1到302-N中的一个的存储器块地址可以存储在空闲块列表上,指示存储器块302-1到302-N中的所述对应一个可用于编程。空闲块列表可包含任何合适的数据列表或数据库,并且可以存储在对应于存储系统102的任何合适的存储器上。
如所描述,控制器104配置成对存储器块302-1到302-N进行编程。例如,控制器104可对存储器块302-1到302-N执行操作,例如读取操作、写入操作、其它合适的操作,或其组合。响应于从主机106接收到的指示控制器104从存储器块302-1到302-N的一个或多个页读取数据、将数据写入到存储器块302-1到302-N的一个或多个页、对存储器块302-1到302-N的页执行其它操作或其组合的命令,控制器104可以对存储器块302-1到302-N进行编程。另外或替代地,从主机106接收到的命令可包含一个或多个存储器地址(例如,通过控制器104转换成物理地址的逻辑地址,如所描述)。
在一些实施例中,为了对存储器块302-1到302-N中的一个或多个进行编程,控制器104可以使用预编程序验证电平对所述一个或多个存储器块302-1到302-N执行预编程序擦除。接着,控制器104可对所述一个或多个存储器块302-1到302-N执行写入操作,以将数据写入到所述一个或多个存储器块302-1到302-N。预编程序验证电平可包含适用于擦除所述一个或多个存储器块302-1到302-N的电压电平。例如,预编程序验证电平可包含零伏,使得当控制器104使用预编程序验证电平对所述一个或多个存储器块302-1到302-N执行预编程序擦除操作时,所述一个或多个存储器块302-1到302-N的电压值大体上是零伏。
由于空闲块列表上的存储器块302-1到302-N的完全编程性质,对所述一个或多个存储器块302-1到302-N执行预编程序擦除操作可能是费时的。因此,如将描述,控制器104可以对存储器块302-1到302-N中的至少一些执行预先擦除操作,以便提高所述一个或多个存储器块302-1到302-N的编程效率。
在一些实施例中,控制器104配置成对将用于未来编程的空闲块列表上的存储器块302-1到302-N(例如,可用于编程的块)进行分级,并且从空闲块列表中识别候选存储器块以部分地擦除到中间电压电平,之后候选存储器块再用于编程。当控制器104对候选存储器块中的一个或多个执行编程操作时,控制器104可以省略预编程序擦除操作的执行,或者可以通过使用预先擦除验证电平来缩短执行预编程序擦除操作所花费的时间量,如将描述,所述预先擦除验证电平对应于用来部分地擦除候选存储器块的电压电平。
在一些实施例中,控制器104可以使用空闲块列表上的存储器块302-1到302-N的一个或多个存储器块特性从空闲块列表中识别候选存储器块。所述一个或多个存储器块特性可包含:程序擦除循环(PEC)值、擦除时间值、本征误码率(BER)值和/或其它合适的存储器块特性。控制器104可以基于PEC、擦除时间、BER或其它合适的存储器块特性将空闲块列表上的存储器块302-1到302-N分级为候选块。
控制器104可以通过任何合适的方式对空闲块列表上的存储器块302-1到302-N进行分级。例如,控制器104可以将空闲块列表上具有最高PEC值的存储器块302-1到302-N分级为第一级,将空闲块列表上具有类似PEC值和高于阈值的擦除时间的存储器块302-1到302-N分级为下一级,并将具有类似PEC值和类似擦除时间值但BER高于阈值的存储器块302-1到302-N分级为再下一级。控制器104可以针对空闲块列表上的每个存储器块302-1到302-N在空闲块列表中存储指示空闲块列表上的每个存储器块302-1到302-N的分级的分级指示。
在一些实施例中,控制器104基于分级指示从空闲块列表中选择一个或多个候选存储器块。接着,控制器104在后台(例如,当主机106或其它合适的源装置没有指示控制器104执行其它操作时在存储系统102的空闲时间期间)对所述一个或多个候选存储器块中的每一个执行预先擦除操作。控制器104确定用于对所述一个或多个候选存储器块执行预先擦除操作的预先擦除验证电平。预先擦除验证电平可包含大于预编程序擦除验证电平的电压电平。例如,预先擦除验证电平可以是手动擦除验证电平,并且可以是任何合适的电压值,例如一伏或其它合适的电压。
在一些实施例中,控制器104可以基于对应于所述一个或多个候选存储器块的分级指示来调整预先擦除验证电平,使得预先擦除验证电平可以增加或减小,并且可包含大体上类似于预编程序验证电平的电压值。例如,对于空闲块列表上具有相对较高的PEC值的存储器块302-1到302-N(例如,其中擦除时间往往会更长),控制器104可以将预先擦除验证电平设置成较低,以便在对应存储器块的后续编程操作期间补偿较长擦除时间。
控制器104使用预先擦除验证电平对所述一个或多个候选存储器块执行预先擦除操作。例如,控制器104在所述一个或多个候选存储器块中的每一个中存储对应于预先擦除验证电平的伏数(例如,所述一个或多个候选存储器块可能没有完全擦除到预编程序擦除验证电平)。
在一些实施例中,在控制器104对所述一个或多个候选存储器块执行预先擦除操作之后,控制器104可以更新所述一个或多个候选存储器块的标头信息,以指示所述一个或多个候选存储器块已经使用预先擦除验证电平进行预先擦除。另外或替代地,控制器104在预先擦除表格中存储指示所述一个或多个候选存储器块和预先擦除验证电平的信息。控制器104可以继续对空闲块列表上的其它存储器块302-1到302-N执行预先擦除操作。
在一些实施例中,控制器104可以记录擦除时间(例如,在系统级在预先擦除操作的开始和预先擦除操作的完成之间的时间量),并且可以针对所述一个或多个候选存储器块中的每一个在空闲块列表中和/或在预先擦除表格上存储擦除时间。
如所描述,控制器104对存储器块302-1到302-N中的一个或多个执行编程操作。控制器104在前台从空闲块列表或预先擦除表格上的候选存储器块中选择一个或多个存储器块302-1到302-N来进行编程。控制器104使用空闲块列表和/或预先擦除表格确定所述一个或多个存储器块302-1到302-N的预先擦除验证电平。控制器140根据预先擦除验证电平对所述一个或多个存储器块302-1到302-N执行预编程序擦除操作(例如,控制器104使用预先擦除验证电平确定在所述一个或多个存储器块302-1到302-N中的每一个中存储的伏数并从所述一个或多个存储器块302-1到302-N中的每一个中放电对应伏数)。例如,控制器104可以提供数目对应于由预先擦除验证电平指示的伏数的每擦除环路数个擦除脉冲。以此方式,控制器104可以显著减少对所述一个或多个存储器块302-1到302-N执行预编程序擦除操作所花费的时间量(例如,0到1微妙,而不是5到15微秒)。在一些实施例中,控制器104可以执行预编程序擦除操作,并省略使用预先擦除验证电平来对所述一个或多个存储器块302-1到302-N进行擦除验证。
在一些实施例中,控制器104记录所述一个或多个存储器块302-1到302-N中的每一个的预编程序擦除操作的擦除时间,并针对所述一个或多个存储器块302-1到302-N中的每一个,将擦除时间存储在空闲块列表和/或预先擦除表格中。接着,控制器104可对所述一个或多个存储器块302-1到302-N执行写入操作,如所描述。
在一些实施例中,控制器104可以使用总擦除时间(例如,预先擦除擦除时间和预编程序擦除时间)来对空闲块列表上的存储器块302-1到302-N进行分级以用于后续编程操作。在一些实施例中,在控制器104对所述一个或多个存储器块302-1到302-N执行编程操作之后,控制器104可以确定已编程存储器块302-1到302-N中的每一个的本征BER(例如,在读取操作的执行期间),如所描述。控制器104可以在空闲块列表和/或预先擦除表格中存储存储器块302-1到302-N中的每一个的已确定本征BER。如所描述,控制器104可以使用空闲块列表上的存储器块302-1到302-N的本征BER对空闲块列表上的存储器块302-1到302-N进行分级。
在一些实施例中,控制器104可以执行本文描述的方法。然而,由控制器104执行的本文描述的方法并不意味着是限制性的,并且在控制器上执行的任何类型的软件都可以在不脱离本公开的范围的情况下执行本文描述的方法。例如,控制器,例如执行主机106内的软件或存储系统102内的固件(例如,存储在ROM 232或NVM块110上)的处理器可以执行本文描述的方法。
图4总体上示出根据本公开原理的存储器块编程方法400的流程图。在402处,方法400识别候选存储器块。例如,控制器104可以识别空闲块列表上的存储器块302-1到302-N中指示为可用于编程的候选存储器块。控制器104可以使用至少一个存储器块特性识别候选存储器块,所述特性例如是空闲块列表上的存储器块302-1到302-N的PEC值、空闲块列表上的存储器块302-1到302-N的擦除时间值、空闲块列表上的存储器块302-1到302-N的本征BER值,或其它合适的存储器块特性。在一些实施例中,控制器104可以基于至少一个存储器块特性对空闲块列表上的存储器块302-1到302-N进行分级。在404处,方法400对候选存储器块执行预先擦除操作。例如,控制器104基于候选存储器块的分级而确定预先擦除验证电平。控制器104可以使用预先擦除验证电平对候选存储器块中的每一个执行预先擦除操作。在一些实施例中,控制器104可以更新空闲块列表和/或预先擦除表格以包含对应于候选存储器块的信息。所述信息可包含候选存储器块的地址信息、预先擦除验证电平、其它合适的信息,或其组合。在一些实施例中,控制器104可以更新对应于候选存储器块的标头信息以包含预先擦除验证电平和/或其它合适的信息。
在406处,方法400记录预先擦除时间。例如,控制器104可以记录候选存储器块的预先擦除时间。在408处,方法400在预先擦除表格上存储每个候选存储器块的预先擦除信息。例如,控制器104可以更新空闲块列表和/或预先擦除表格以包含对应于候选存储器块的预先擦除信息。预先擦除信息可包含候选存储器块的地址信息、预先擦除验证电平、其它合适的信息,或其组合。在一些实施例中,控制器104可以更新对应于候选存储器块的标头信息以包含预先擦除验证电平和/或其它合适的信息。控制器104可以更新空闲块列表、预先擦除表格和/或对应于候选存储器块的标头信息以包含预先擦除时间。
在410处,方法400识别要编程的至少一个存储器块。例如,控制器104根据空闲块列表和/或使用要编程的预先擦除表格识别至少一个存储器块。在412处,方法400对至少一个存储器块执行预编程序擦除操作。例如,控制器104使用空闲块列表、预先擦除表格和/或对应于至少一个存储器块的标头信息来确定预先擦除验证电平。控制器104根据预先擦除验证电平对至少一个存储器块执行预编程序擦除操作。在414处,方法400对至少一个存储器块执行写入操作。例如,控制器104对至少一个存储器块执行写入操作。在416处,方法400记录预编程序擦除时间和误码率。例如,控制器104记录至少一个存储器块的预编程序擦除操作的预编程序擦除时间。控制器104可以在读取操作期间确定至少一个存储器块的本征BER。在418处,方法400记录至少一个存储器块的存储器块特性。例如,控制器104更新空闲块列表、预先擦除表格和/或对应于至少一个存储器块的标头信息以包含预编程序擦除时间和本征BER。
在一些实施例中,一种用于对存储器系统中的存储器块进行编程的方法包含:使用至少一个存储器块特性,识别所述存储器系统中的所述存储器块的候选存储器块。所述方法还包含:使用预先擦除验证电平,对所述候选存储器块执行预先擦除操作。所述方法还包含:在预先擦除表格上存储所述候选存储器块中的每个存储器块的预先擦除信息。所述方法还包含:使用所述预先擦除表格,识别要编程的至少一个存储器块。所述方法还包含:通过使用所述预先擦除验证电平对所述至少一个存储器块执行预编程序擦除操作并对所述至少一个存储器块执行写入操作来对所述至少一个存储器块进行编程。
在一些实施例中,使用所述预先擦除验证电平执行所述预先擦除操作包含在空闲时间期间执行所述预先擦除操作。在一些实施例中,所述候选存储器块中的相应存储器块的所述预先擦除信息至少包含与所述相应存储器块相关联的存储器地址和所述相应存储器块已经使用所述预先擦除验证电平进行预先擦除的指示。在一些实施例中,所述方法还包含记录与对所述候选存储器块执行所述预先擦除操作相关联的擦除时间。在一些实施例中,所述方法还包含进一步包括记录与对所述至少一个存储器块执行所述预编程序擦除操作相关联的擦除时间。在一些实施例中,所述至少一个存储器块特性包含与所述候选存储器块中的每一个相关联的数个程序擦除循环。在一些实施例中,所述至少一个存储器块特性包含与所述候选存储器块中的每一个相关联的擦除时间。在一些实施例中,所述至少一个存储器块特性包含与所述候选存储器块中的每一个相关联的误码率。在一些实施例中,所述预先擦除验证电平大于0伏。在一些实施例中,与所述预编程序擦除操作相关联的数个擦除脉冲对应于所述预先擦除验证电平。
在一些实施例中,一种控制器包含总线接口和处理器。所述总线接口配置成接收与空闲块列表上的存储器块相关联的存储器块特性。所述处理器配置成:使用所述存储器块特性中的至少一个存储器块特性识别所述空闲块列表上的所述存储器块的候选存储器块;使用预先擦除验证电平对所述候选存储器块执行预先擦除操作;使用所述预先擦除验证电平对所述候选存储器块中的至少一个存储器块执行预编程序擦除操作,以及对所述至少一个存储器块执行写入操作。
在一些实施例中,所述处理器配置成在空闲时间期间执行所述预先擦除操作。在一些实施例中,所述处理器进一步配置成记录与对所述候选存储器块执行所述预先擦除操作相关联的擦除时间。在一些实施例中,所述处理器进一步配置成记录与对所述至少一个存储器块执行所述预编程序擦除操作相关联的擦除时间。在一些实施例中,所述至少一个存储器块特性包含与所述候选存储器块中的每一个相关联的数个程序擦除循环。在一些实施例中,所述至少一个存储器块特性包含与所述候选存储器块中的每一个相关联的擦除时间。在一些实施例中,所述至少一个存储器块特性包含与所述候选存储器块中的每一个相关联的误码率。在一些实施例中,所述预先擦除验证电平大于0伏。在一些实施例中,与所述预编程序擦除操作相关联的数个擦除脉冲对应于所述预先擦除验证电平。
在一些实施例中,一种用于增强存储器块的写入操作的性能的方法包含:使用以下中的至少一个从空闲块列表上的存储器块中识别候选存储器块:与所述空闲块列表上的所述存储器块中的每一个相关联的程序擦除循环值、与所述空闲块列表上的所述存储器块中的每一个相关联的擦除时间值,和与所述空闲块列表上的所述存储器块中的每一个相关联的误码率值。所述方法还包含:使用大于0伏的预先擦除验证电平对所述候选存储器块中的每一个执行预先擦除操作。所述方法还包含:记录与所述预先擦除操作相关联的擦除时间。所述方法还包含:针对每个候选存储器块,存储对应擦除时间和所述预先擦除验证电平。
以上讨论旨在说明本发明的原理和各种实施例。一旦完全理解上述公开内容,许多变化和修改对于所属领域的技术人员将变得显而易见。希望将所附权利要求书解释为包涵所有此类变化及修改。在先前描述和权利要求书中,术语“包含”和“包括”是以开放式方式使用的,因此应被解释为意指“包含但不有限……”。另外,术语“耦合”意在意指间接或直接连接。因此,如果第一装置耦合到第二装置,那么所述连接可以是通过直接连接,也可以是通过经由其它装置和连接的间接连接。
词语“实例”在本文中用以意指“充当实例、例子或说明”。本文中描述为“实例”的任何方面或设计不一定被解释为比其它方面或设计优选或有利。实际上,使用词语“实例”是意在以具体方式来呈现概念。如本申请中所使用,术语“或”意在意味着包含性“或”而非排它性“或”。也就是说,除非另外规定,或从上下文清楚可见,否则“X包含A或B”意在意味着任何自然的包含性排列。也就是说,如果X包含A;X包含B;或X包含A以及B,则在任何前述例子下满足“X包含A或B”。此外,除非另外规定或自上下文可知表示单数形式,否则如本申请和所附权利要求书中所使用的冠词“一”应大体上解释为意味着“一个或多个”。此外,除非如此描述,否则贯穿全文使用术语“实施方案”或“一个实施方案”并不意在表示相同的实施例或实施方案。
本文描述的系统、算法、方法、指令等的实施方案可以以硬件、软件或其任何组合来实现。硬件可以包含例如计算机、知识产权(IP)内核、专用集成电路(ASIC)、可编程逻辑阵列、光学处理器、可编程逻辑控制器、微代码、微控制器、服务器、微处理器、数字信号处理器或任何其它合适的电路。在权利要求中,术语“处理器”应被理解为单独地或组合地包括任何前述硬件。术语“信号”和“数据”可互换使用。
如本文所使用的,术语“模块”可以包含设计为与其它组件一起使用的封装功能硬件单元、可由控制器(例如,执行软件或固件的处理器)执行的指令集、配置成执行特定功能的处理电路,以及与大型系统介接的独立硬件或软件组件。例如,模块可以包含专用集成电路(ASIC);现场可编程门阵列(FPGA);电路;数字逻辑电路;模拟电路;离散电路、门和其它类型硬件的组合,或其组合。在其它实施例中,模块可以包含存储器,所述存储器存储可由控制器执行以实施模块的特征的指令。在一些实施例中,可以在主机106内实施的控制器104可以配置有硬件和/或固件以执行本文描述的各种功能。
“控制器”应指各个电路组件、专用集成电路(ASIC)、具有控制软件的微控制器、数字信号处理器(DSP)、具有控制软件的处理器、现场可编程门阵列(FPGA),或其组合。
此外,在一个方面,例如,本文描述的系统可以使用具有计算机程序的通用计算机或通用处理器来实施,所述计算机程序在被执行时执行本文描述的任何相应方法、算法和/或指令。另外或替代地,例如,可以利用专用计算机/处理器,其可以包含用于执行本文描述的任何方法、算法或指令的其它硬件。
此外,本公开的全部或部分实施方案可以采取可从例如计算机可用或计算机可读介质存取的计算机程序产品的形式。计算机可用或计算机可读介质可以是例如可以有形地包含、存储、传送或传输程序以供任何处理器使用或与其结合使用的任何装置。介质可以是例如电子、磁性、光学、电磁或半导体装置。也可以使用其它合适的介质。
已经描述了上述实施例、实施方案和方面,使得本发明容易理解并且不限制本发明。相反,本发明旨在涵盖所附权利要求的范围内所包含的各种修改和等效布置,所述范围应被赋予最宽泛的解释,以涵盖法律允许的所有此类修改和等效结构。
Claims (20)
1.一种用于对存储器系统中的存储器块进行编程的方法,所述方法包括:
使用至少一个存储器块特性识别所述存储器系统中的所述存储器块的候选存储器块;
使用预先擦除验证电平对所述候选存储器块执行预先擦除操作;
在预先擦除表格上存储所述候选存储器块中的每个存储器块的预先擦除信息;
使用所述预先擦除表格识别要编程的至少一个存储器块;以及
通过以下操作来对所述至少一个存储器块进行编程:
使用所述预先擦除验证电平对所述至少一个存储器块执行预编程序擦除操作,且
对所述至少一个存储器块执行写入操作。
2.根据权利要求1所述的方法,其中使用所述预先擦除验证电平执行所述预先擦除操作包含在空闲时间期间执行所述预先擦除操作。
3.根据权利要求1所述的方法,其中所述候选存储器块中的相应存储器块的所述预先擦除信息至少包含与所述相应存储器块相关联的存储器地址,和所述相应存储器块已经使用所述预先擦除验证电平进行预先擦除的指示。
4.根据权利要求1所述的方法,其进一步包括记录与对所述候选存储器块执行所述预先擦除操作相关联的擦除时间。
5.根据权利要求1所述的方法,其进一步包括记录与对所述至少一个存储器块执行所述预编程序擦除操作相关联的擦除时间。
6.根据权利要求1所述的方法,其中所述至少一个存储器块特性包含与所述候选存储器块中的每一个相关联的数个程序擦除循环。
7.根据权利要求1所述的方法,其中所述至少一个存储器块特性包含与所述候选存储器块中的每一个相关联的擦除时间。
8.根据权利要求1所述的方法,其中所述至少一个存储器块特性包含与所述候选存储器块中的每一个相关联的误码率。
9.根据权利要求1所述的方法,其中所述预先擦除验证电平大于0伏。
10.根据权利要求1所述的方法,其中与所述预编程序擦除操作相关联的数个擦除脉冲对应于所述预先擦除验证电平。
11.一种控制器,其包括:
总线接口,其配置成接收与空闲块列表上的存储器块相关联的存储器块特性;以及
处理器,其配置成:
使用所述存储器块特性中的至少一个存储器块特性识别所述空闲块列表上的所述存储器块的候选存储器块;
使用预先擦除验证电平对所述候选存储器块执行预先擦除操作;
使用所述预先擦除验证电平对所述候选存储器块的至少一个存储器块执行预编程序擦除操作,以及
对所述至少一个存储器块执行写入操作。
12.根据权利要求11所述的控制器,其中所述处理器进一步配置成在空闲时间期间执行所述预先擦除操作。
13.根据权利要求11所述的控制器,其中所述处理器进一步配置成记录与对所述候选存储器块执行所述预先擦除操作相关联的擦除时间。
14.根据权利要求11所述的控制器,其中所述处理器进一步配置成记录与对所述至少一个存储器块执行所述预编程序擦除操作相关联的擦除时间。
15.根据权利要求11所述的控制器,其中所述至少一个存储器块特性包含与所述候选存储器块中的每一个相关联的数个程序擦除循环。
16.根据权利要求11所述的控制器,其中所述至少一个存储器块特性包含与所述候选存储器块中的每一个相关联的擦除时间。
17.根据权利要求11所述的控制器,其中所述至少一个存储器块特性包含与所述候选存储器块中的每一个相关联的误码率。
18.根据权利要求11所述的控制器,其中所述预先擦除验证电平大于0伏。
19.根据权利要求11所述的控制器,其中与所述预编程序擦除操作相关联的数个擦除脉冲对应于所述预先擦除验证电平。
20.一种用于增强存储器块的写入操作的性能的方法,所述方法包括:
使用以下中的至少一个从空闲块列表上的存储器块中识别候选存储器块:与所述空闲块列表上的所述存储器块中的每一个相关联的程序擦除循环值、与所述空闲块列表上的所述存储器块中的每一个相关联的擦除时间值,和与所述空闲块列表上的所述存储器块中的每一个相关联的误码率值;
使用大于0伏的预先擦除验证电平对所述候选存储器块中的每一个执行预先擦除操作;
记录与所述预先擦除操作相关联的擦除时间;以及
针对每个候选存储器块,存储对应擦除时间和所述预先擦除验证电平。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/412,859 US10658045B1 (en) | 2019-05-15 | 2019-05-15 | Enhanced solid-state drive write performance with background erase |
US16/412,859 | 2019-05-15 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111949209A CN111949209A (zh) | 2020-11-17 |
CN111949209B true CN111949209B (zh) | 2024-06-18 |
Family
ID=70736374
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010227499.5A Active CN111949209B (zh) | 2019-05-15 | 2020-03-27 | 具有后台擦除的增强型固态驱动器写入性能 |
Country Status (3)
Country | Link |
---|---|
US (1) | US10658045B1 (zh) |
KR (1) | KR102303051B1 (zh) |
CN (1) | CN111949209B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20180239532A1 (en) | 2017-02-23 | 2018-08-23 | Western Digital Technologies, Inc. | Techniques for performing a non-blocking control sync operation |
US11698745B2 (en) | 2021-04-05 | 2023-07-11 | Western Digital Technologies, Inc. | Pre-erasure of memory in storage devices |
US11816349B2 (en) * | 2021-11-03 | 2023-11-14 | Western Digital Technologies, Inc. | Reduce command latency using block pre-erase |
US11756637B2 (en) | 2021-11-24 | 2023-09-12 | Western Digital Technologies, Inc. | Block erase type detection using bit count check |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5537578A (en) * | 1993-04-20 | 1996-07-16 | International Business Machines Corporation | Transparent driving partition for processing logical volumes to be recorded onto optical media |
JP4188744B2 (ja) * | 2003-04-08 | 2008-11-26 | 株式会社ルネサステクノロジ | メモリカード |
JP2005182871A (ja) * | 2003-12-17 | 2005-07-07 | Toshiba Corp | 不揮発性半導体記憶装置 |
ATE347731T1 (de) * | 2004-10-04 | 2006-12-15 | Research In Motion Ltd | System und verfahren zum datensichern bei stromausfall |
US7409489B2 (en) * | 2005-08-03 | 2008-08-05 | Sandisk Corporation | Scheduling of reclaim operations in non-volatile memory |
US8045390B2 (en) * | 2008-03-21 | 2011-10-25 | Macronix International Co., Ltd. | Memory system with dynamic reference cell and method of operating the same |
JP5338306B2 (ja) | 2008-12-26 | 2013-11-13 | 富士通株式会社 | データ記憶装置およびデータ記憶装置におけるデータ管理方法 |
KR101264019B1 (ko) * | 2011-04-26 | 2013-05-13 | 에스케이하이닉스 주식회사 | 반도체 장치의 동작 방법 |
US9330007B2 (en) * | 2012-11-30 | 2016-05-03 | Dell Products, Lp | Systems and methods for dynamic optimization of flash cache in storage devices |
JP5695112B2 (ja) * | 2013-03-18 | 2015-04-01 | 富士通テン株式会社 | データ記憶装置、データの記憶方法および車載用制御装置 |
KR102083547B1 (ko) * | 2013-04-12 | 2020-03-02 | 삼성전자주식회사 | 플래시 메모리와 메모리 컨트롤러를 포함하는 데이터 저장 장치 및 그것의 배드 페이지 관리 방법 |
US9588702B2 (en) * | 2014-12-30 | 2017-03-07 | International Business Machines Corporation | Adapting erase cycle parameters to promote endurance of a memory |
KR20170045406A (ko) * | 2015-10-16 | 2017-04-27 | 에스케이하이닉스 주식회사 | 데이터 저장 장치 및 그것의 동작 방법 |
KR20180039351A (ko) * | 2016-10-10 | 2018-04-18 | 에스케이하이닉스 주식회사 | 메모리 장치 및 메모리 장치의 동작 방법 |
KR102611851B1 (ko) * | 2016-12-29 | 2023-12-11 | 에스케이하이닉스 주식회사 | 반도체 메모리 장치 및 이의 동작 방법 |
KR20190040604A (ko) * | 2017-10-11 | 2019-04-19 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 메모리 시스템의 동작 방법 |
-
2019
- 2019-05-15 US US16/412,859 patent/US10658045B1/en active Active
-
2020
- 2020-03-24 KR KR1020200035396A patent/KR102303051B1/ko active IP Right Grant
- 2020-03-27 CN CN202010227499.5A patent/CN111949209B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
KR20200132674A (ko) | 2020-11-25 |
US10658045B1 (en) | 2020-05-19 |
CN111949209A (zh) | 2020-11-17 |
KR102303051B1 (ko) | 2021-09-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111949209B (zh) | 具有后台擦除的增强型固态驱动器写入性能 | |
US11030096B2 (en) | Method of identifying and preparing a key block in a flash memory system and memory controller therefor | |
US11003373B2 (en) | Systems and methods for managing physical-to- logical address information | |
US10884628B2 (en) | Performance of a read in a memory system | |
US11487454B2 (en) | Systems and methods for defining memory sub-blocks | |
US10725687B1 (en) | Settable replay protected memory block characteristics in a logic unit | |
US10503433B2 (en) | Memory management method, memory control circuit unit and memory storage device | |
US11126368B2 (en) | Systems and methods for finding a last good page in NAND open block | |
US11106518B2 (en) | Failure mode study based error correction | |
US10734081B1 (en) | Pulse-amplitude modulation for a multiple die memory device | |
US11082036B2 (en) | Memory interface system for duty-cycle error detection and correction | |
US10755798B2 (en) | Recovering data from a faulty memory block in a memory system | |
US20200226064A1 (en) | Method of reverse mapping and data consolidation to enhance random performance | |
US11244735B2 (en) | Systems and methods for program verification on a memory system | |
US10886002B1 (en) | NAND field use erase plus defect detections | |
US11106575B2 (en) | Systems and methods for data storage in a memory system | |
US10991447B2 (en) | Clock frequency counting during high-voltage operations for immediate leakage detection and response | |
WO2020256775A1 (en) | Temperature based programming in memory | |
US10984883B1 (en) | Systems and methods for capacity management of a memory system | |
CN112148212B (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 |