CN113050879A - 管理存储器系统中编程操作时间和写入延迟的设备和方法 - Google Patents

管理存储器系统中编程操作时间和写入延迟的设备和方法 Download PDF

Info

Publication number
CN113050879A
CN113050879A CN202010830067.3A CN202010830067A CN113050879A CN 113050879 A CN113050879 A CN 113050879A CN 202010830067 A CN202010830067 A CN 202010830067A CN 113050879 A CN113050879 A CN 113050879A
Authority
CN
China
Prior art keywords
block
open
blocks
data
controller
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.)
Withdrawn
Application number
CN202010830067.3A
Other languages
English (en)
Inventor
李周映
李圭慜
金昶汉
洪性宽
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.)
SK Hynix Inc
Original Assignee
SK Hynix 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 SK Hynix Inc filed Critical SK Hynix Inc
Publication of CN113050879A publication Critical patent/CN113050879A/zh
Withdrawn legal-status Critical Current

Links

Images

Classifications

    • 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
    • G11C16/14Circuits for erasing electrically, e.g. erase voltage switching circuits
    • G11C16/16Circuits for erasing electrically, e.g. erase voltage switching circuits for erasing blocks, e.g. arrays, words, groups
    • 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
    • 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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • 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/0629Configuration or reconfiguration of storage systems
    • G06F3/0631Configuration or reconfiguration of storage systems by allocating resources to storage systems
    • 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
    • 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/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • G11C16/3404Convergence or correction of memory cell threshold voltages; Repair or recovery of overerased or overprogrammed cells
    • 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/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • G11C16/3418Disturbance prevention or evaluation; Refreshing of disturbed memory data
    • G11C16/3431Circuits or methods to detect disturbed nonvolatile memory cells, e.g. which still read as programmed but with threshold less than the program verify threshold or read as erased but with threshold greater than the erase verify threshold, and to reverse the disturbance via a refreshing programming or erasing step
    • 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/7204Capacity control, e.g. partitioning, end-of-life degradation
    • 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/7205Cleaning, compaction, garbage collection, erase control
    • 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/7207Details relating to flash memory management management of metadata or control data

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)
  • Read Only Memory (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

本发明涉及一种存储器系统的操作方法。该操作方法可包括:分别监测具有不同属性的多个数据所存储的多个开放块的每一个中包括的可编程区域的大小,并且基于多个开放块之中的第一开放块的数量,通过对多个擦除目标块的一部分执行第一擦除操作来生成第一空闲块,其中每个第一开放块的可编程区域的大小小于阈值。

Description

管理存储器系统中编程操作时间和写入延迟的设备和方法
相关申请的交叉引用
本申请要求于2019年12月27日提交的申请号为10-2019-0176690的韩国专利申请的优先权,该韩国专利申请通过引用整体并入本文。
技术领域
实施例涉及一种存储器系统,并且更特别地,涉及一种管理非易失性存储器装置的编程操作时间和写入延迟的设备和方法。
背景技术
近来,计算环境范例已经转变成几乎可以随时随地访问计算机系统的普适计算。因此,诸如移动电话、数码相机、笔记本电脑等的便携式电子装置的使用正在迅速增长。这种便携式电子装置通常使用或包括使用或嵌入至少一个存储器装置的存储器系统,即数据存储装置。数据存储装置可用作便携式电子装置的主存储装置或辅助存储装置。
与硬盘不同,使用非易失性半导体存储器装置的数据存储装置的优点在于:该数据存储装置因为不具有机械驱动部件(例如,机械臂)而具有优异的稳定性和耐久性,并且具有高数据访问速度和低功耗。在具有这些优点的存储器系统的背景下,示例性数据存储装置包括USB(通用串行总线)存储器装置、具有各种接口的存储卡、固态驱动器(SSD)等。
发明内容
各个实施例涉及一种方法和设备,因为在编程操作期间不对擦除目标块执行擦除操作,所以该方法和设备可在执行针对写入数据的编程操作之前基于预期封闭块的数量来生成空闲块,并从而减少编程操作时间和写入延迟。
而且,各个实施例涉及一种方法和设备,因为在编程操作期间不对擦除目标块执行擦除操作,所以当在执行针对写入数据的编程操作之前预期封闭块的数量大于或等于二时,该方法和设备可生成一个或多个空闲块,并从而将编程操作时间调整到特定时间或更短。
而且,各个实施例涉及一种方法和设备,考虑到在执行擦除操作之后阈值电压分布随时间的推移而改变的擦除页面的特性,该方法和设备能够使在编程操作之前生成的空闲块的数量最小化,从而提高待被编程的写入数据的可靠性。
而且,各个实施例涉及一种方法和设备,当在执行针对写入数据的编程操作之前,空闲块的数量小于预期封闭块的数量时,该方法和设备可优先将空闲块分配到被编程用户数据的存储块,从而减少用户数据的编程操作时间和写入延迟。
而且,各个实施例涉及一种方法和设备,该方法和设备可预先仅生成待分配到具有少量可编程页面并且待被执行编程操作的预期封闭块的空闲块,从而提高写入数据的可靠性,同时减少该写入数据的编程操作时间和写入延迟。
根据实施例,存储器系统及其操作方法可在执行针对写入数据的编程操作之前基于预期封闭块的数量来生成空闲块,从而减少写入数据的编程操作时间和写入延迟。
此外,当预期封闭块的数量大于或等于二时,在执行针对写入数据的编程操作之前,存储器系统可生成一个或多个空闲块,并且将该一个或多个空闲块分配到预期封闭块,从而将编程操作时间减少到特定时间或更少。
此外,考虑到在执行擦除操作之后阈值电压分布随时间的推移而改变的擦除页面的特性,存储器系统可使在执行编程操作之前所生成的空闲块的数量最小化,从而提高待被编程的写入数据的可靠性。
此外,当在执行针对写入数据的编程操作之前,空闲块的数量小于预期封闭块的数量时,存储器系统可优先将预先生成的空闲块分配到待被编程用户数据的存储块,从而提高写入数据的可靠性,同时减少用户数据的编程操作时间和写入延迟。
此外,在执行针对写入数据的编程操作之前,存储器系统可预先仅生成具有少量可编程页面并且很快将被执行编程操作的空闲块,从而提高写入数据的可靠性,同时减少用户数据的编程操作时间和写入延迟。
附图说明
通过参照附图的以下详细描述,本公开的上述和其它特征及优点对本公开所属领域的技术人员将变得更加显而易见。
图1是用于描述根据本公开的实施例的存储块中的可编程页面的示图。
图2A至图2C是用于描述根据本公开的实施例的存储器系统执行的擦除操作方法的示图。
图3示出根据本公开的实施例的包括存储器系统的数据处理系统的配置。
图4示出根据本公开的实施例的存储器系统的配置。
图5A和图5B示出根据本公开的实施例的开放块的示例。
图6A和图6B是示出根据本公开的实施例的在控制器中生成第一空闲块的方法的流程图。
图7是示出根据本公开的实施例的在控制器中生成并分配第一空闲块的方法的流程图。
图8是示出根据本公开的实施例的存储器系统的编程操作方法的流程图。
图9是示出根据本公开的实施例的执行编程操作的存储块的示图。
具体实施方式
在下文中,将参照附图描述各个实施例。应理解的是,下面的描述将关注于理解根据实施例的操作所需的部分,并且将取消对其它部分的描述,以免不必要地模糊本公开的主题。
在下文中,将参照附图详细描述本公开的实施例。
图1示出根据数据存储状态进行分类的存储块的示例。
如图1所示,根据存储块的页面中存储的数据的状态,可将存储块分类为空闲块FR_BLK、开放块O_BLK、封闭块C_BLK或擦除目标块ET_BLK。
每个存储块可包括被一次擦除的存储器单元组,并且对应于执行擦除操作的最小单位。每个存储块可包括多个页面。每个页面可包括被一次从其读取/向其编程数据的存储器单元组,并且对应于执行读取操作/编程操作的最小单位。
空闲块FR_BLK可以是仅包括擦除了数据的擦除页面的存储块。开放块O_BLK可包括能被编程数据的擦除页面和被编程数据的编程页面。在本公开的实施例中,可将在执行擦除操作之后被做出执行编程操作判定的空闲块FR_BLK用作开放块O_BLK。
可从第一页面至最后页面或从最后页面至第一页面将数据顺序地编程到存储块。当数据被编程到相应存储块的最后页面时,存储块从开放块改变为封闭块。开放块O_BLK可以是能被编程新数据的存储块,并且封闭块C_BLK可以是在没有擦除操作的情况下不能编程新数据的存储块。在封闭块C_BLK之中,因存储块没有所存储的有效数据而可执行擦除操作的存储块可以是擦除目标块ET_BLK。
在下面的描述中,“能被编程数据的区域”可包括未存储数据的擦除的存储器单元、扇区、页面、存储块、平面和存储器管芯。
在下文中,通过示例而非任何限制的方式,没有存储数据的擦除页面将被视为“能被编程数据的区域”的示例。类似地,“能被编程数据的页面的数量”可具有与“能被编程数据的区域的大小”相同的含义。
存储块可包括一个或多个可编程页面PGM_P。可编程页面PGM_P可包括擦除了数据的擦除页面,并且指示能被编程数据的区域。
在图1所示的示例中,空闲块FR_BLK中的可编程页面PGM_P可以是“四个擦除页面”。此外,开放块O_BLK中的可编程页面PGM_P可以是“两个擦除页面”。此外,封闭块C_BLK中的可编程页面PGM_P可以是“零个擦除页面”。也就是说,可编程页面PGM_P的数量为“0”。
可编程页面PGM_P的数量可指示在页面的区域之中没有存储数据的区域,这些区域根据预设的部分编程次数(NOP)来划分。NOP可指示对相同页面可执行编程操作的次数。换言之,根据预设NOP,可不对一整个页面编程数据,而是以被预设NOP划分的区域为单位进行编程。
例如,当NOP被设置成一并且待被编程的数据的量小于一个页面的存储容量时,页面中的没有被编程数据的区域可由虚设数据填充。在这种情况下,页面中的可编程页面PGM_P的数量可以是“0”。
然而,当将NOP设置成四以将一个页面划分成第一至第四区域,并且待被编程的数据的量对应于可存储在第一区域中的数据的大小时,没有被编程数据的第二至第四区域不会由虚设数据填充。在这种情况下,页面中的可编程页面PGM_P的数量可以是“0.75”。
封闭块C_BLK可仅包括编程页面(即,DAT)。擦除目标块ET_BLK可以是控制器已决定执行擦除操作的存储块。通过示例而非任何限制的方式,各实施例是基于擦除目标块ET_BLK中存储的有效数据已被完全复制到空闲块FR_BLK中。
可将上述存储块实施为非易失性存储器。在这种情况下,多个存储块不会支持数据重写操作。因此,为了对擦除目标块ET_BLK执行编程操作,控制器需要通过对该擦除目标块ET_BLK执行擦除操作来将该擦除目标块ET_BLK改变为空闲块FR_BLK。
当对擦除目标块ET_BLK执行的擦除操作的时间点和对空闲块FR_BLK执行的编程操作的时间点之间的差异增大时,随着时间推移,在空闲块FR_BLK中的存储器单元中可能发生电荷损失、电荷增益等。在这种情况下,存储器单元的阈值电压分布可能变宽。因此,在对新数据进行编程的过程中可能发生错误。为此,常规控制器通过在执行编程操作之前对擦除目标块ET_BLK执行擦除操作来生成空闲块FR_BLK,从而减小擦除操作的时间点和编程操作的时间点之间的差异。因此,控制器可防止由于随时间的推移而改变的阈值电压分布所引起的编程操作的错误。
然而,当大量数据将被编程到存储器装置时,可能增加擦除目标块ET_BLK的数量。因此,可能增加擦除操作时间以使编程操作延迟。因此,可能增加写入延迟。特别地,在具有非易失性存储器特性的存储器装置中,擦除操作比读取操作或编程操作需要更长的时间。这可能对存储器系统的操作可靠性和性能有很大影响。
在下文中,参照图2A和图2B,将描述根据本公开的实施例的由存储器系统执行擦除操作的示例。
图2A示出根据实施例的包括存储器装置150和控制器130的存储器系统110的示例,其中控制器130用于控制该存储器装置150。图2B示出控制器130对存储器装置150执行的第一擦除操作和第二擦除操作的时间点。
如图2A所示,存储器装置150可包括多个开放块O_BLK、多个空闲块FR_BLK和多个擦除目标块ET_BLK。
在实施例中,根据从主机接收的写入请求WT_REQ的编程操作可包括将用户数据U_DAT编程到存储器装置150内的用户开放块的操作。可与写入请求WT_REQ一起从主机接收用户数据U_DAT。根据写入请求WT_REQ的编程操作可进一步包括将元数据编程到存储器装置150内的元开放块的操作。元数据可与被编程的用户数据U_DAT相关联。在实施例中,编程操作时间可包括自与写入请求WT_REQ一起从主机接收到用户数据U_DAT的时间点起至将写入数据WT_DAT完全编程到存储器装置150的时间点的时间段。在编程操作完成之后,存储器系统110可将对写入请求WT_REQ的确认传送到主机。
在实施例中,编程操作可包括将与写入请求WT_REQ一起从主机接收的用户数据U_DAT编程到存储器装置150内的用户开放块的操作以及将与被编程的用户数据U_DAT相关联的元数据编程到元开放块的操作。元数据可包括映射数据、历史数据和日志数据。特别地,当写入请求WT_REQ是不用高速缓存(cache-off)写入请求、强制单元访问(FUA)写入请求或重放保护存储块(RPMB)写入请求时,在对用户数据U_DAT和元数据进行完全编程之后,存储器系统110可将对写入请求WT_REQ的确认传输到主机。
开放块O_BLK可包括分别向其编程写入数据WT_DAT的用户开放块、映射开放块、历史开放块和日志开放块。
对擦除目标块ET_BLK执行擦除操作所需的时间可能占据编程操作时间的最大部分。可在对用户数据、映射数据、历史数据和日志数据中的每一个进行编程之前执行擦除操作。特别地,为了防止对擦除目标块ET_BLK中的擦除页面的深度擦除,可对擦除页面执行虚设数据的预编程操作。在预编程操作期间,可将编程电压施加到擦除页面的字线,并且可将通过电压施加到漏极选择线和串选择线。通过预编程操作,擦除目标块ET_BLK中的擦除页面的存储器单元的阈值电压可增加预定电平。因此,擦除目标块ET_BLK的擦除操作时间可增加虚设数据的预编程操作时间以及该数据的擦除操作时间。
特别地,待被编程数据的开放块的数量以及包括在该开放块中并具有少量可编程页面的预期封闭块的数量越高,可能需要的编程操作时间越长。例如,当在四个开放块即用户开放块、映射开放块、历史开放块和日志开放块中的每一个中包括数量不足的可编程页面时,控制器130需要对四个擦除目标块ET_BLK执行擦除操作。此时,对多个不同写入数据进行编程所需的编程操作时间可增加对四个擦除目标块ET_BLK执行擦除操作所需的擦除操作时间。
因此,当存储器装置150中的开放块O_BLK包括数量不足的可编程页面时,控制器130可通过预先对多个擦除目标块ET_BLK中的至少一个第一擦除目标块ET_BLK1执行第一擦除操作来生成第一空闲块FR_BLK1。因此,当执行对写入数据WT_DAT的编程操作时,控制器130可减少可能由于对多个擦除目标块ET_BLK之中的第二擦除目标块ET_BLK2执行第二擦除操作引起的延迟。因此,可减少对多个不同写入数据进行编程所需的编程操作时间。例如,第一擦除操作可包括在通过编程操作生成封闭块之前,对作为多个擦除目标块ET_BLK的一部分的第一擦除目标块ET_BLK1预先执行的数据擦除操作。另一方面,第二擦除操作可包括在通过编程操作生成封闭块之后或在确定编程操作需要新的存储块的时间点,对作为多个擦除目标块ET_BLK的另一部分的第二擦除目标块ET_BLK2而非第一擦除目标块ET_BLK1执行的数据擦除操作。
参照图2B,第一时间点T1可对应于控制器130确定开放块O_BLK中的每一个中的可编程页面的数量不足的时间点。也就是说,当开放块O_BLK中的可编程页面的数量少于预设阈值时,控制器130可确定相应开放块O_BLK是预期封闭块,该预期封闭块包括数量不足的待被编程数据的可编程页面,或者很可能不久后变成封闭块。在下文中,在开放块O_BLK之中的、包括少于阈值的可编程页面的预期封闭块将被称为“第一开放块”。
第二时间点T2可对应于控制器130紧接在根据从主机接收的写入请求WT_REQ对写入数据WT_DTA进行编程之前,确定待被存储写入数据WT_DAT的开放块O_BLK中的每一个中的可编程页面的数量不足的时间点。
第三时间点T3可对应于控制器130对写入数据WT_DAT进行编程的时间点。
在实施例中,控制器130可通过在第一时间点T1和第二时间点T2之间对作为多个擦除目标块的一部分的第一擦除目标块ET_BLK1执行第一擦除操作来生成第一空闲块FR_BLK1。此外,控制器130可通过在第二时间点T2和第三时间点T3之间对未被执行第一擦除操作的第二擦除目标块ET_BLK2执行第二擦除操作来生成第二空闲块FR_BLK2。如上所述,可在不同时间点对不同的擦除目标块执行第一擦除操作和第二擦除操作。
常规的存储器系统仅在第二时间点T2和第三时间点T3之间执行第二擦除操作。在实施例中,控制器130可在第一时间点T1和第二时间点T2之间对第一擦除目标块ET_BLK1执行第一擦除操作,并且在第二时间点T2和第三时间点T3之间对第二擦除目标块ET_BLK2执行第二擦除操作。
在一些实施例中,第一擦除操作可包括存储器系统110的、不管主机的请求而执行的后台操作。第二擦除操作可包括存储器系统110的、根据主机的写入请求来执行的后台操作。
在一些实施例中,控制器130可判定是否执行第一擦除操作,并且判定待被执行第一擦除操作的擦除目标块ET_BLK的数量,以便减少编程操作时间。该操作可对应于判定是否生成第一空闲块FR_BLK1以及判定待被生成的第一空闲块FR_BLK1的数量的操作。对于该操作,控制器130可增加阈值和待被生成的第一空闲块的数量,并且减小参考值。
在一些实施例中,阈值可包括可编程页面的数量,用于确定开放块O_BLK中的第一开放块。例如,当开放块O_BLK中的可编程页面的数量小于阈值时,控制器130可确定相应开放块O_BLK是第一开放块。控制器130可基于写入数据WT_DAT的编程单位来设置阈值。编程单位可指示根据数据的类型或特性而由一个编程操作所编程的页面的数量。例如,当以对应于一个页面的大小一次对日志数据进行编程时,该日志数据的编程单位可对应于一个页面。此外,当以对应于五个页面的大小一次对用户数据进行编程时,该用户数据的编程单位可对应于五个页面。在实施例中,根据被编程到存储器装置150的数据的类型或特性,通过一个编程操作编程的页面的数量可能不同。控制器130可基于写入数据WT_DAT的编程单位来设置阈值。
在一些实施例中,参考值可包括第一开放块的数量,用于判定是否执行第一擦除操作。例如,当第一开放块的数量大于或等于参考值时,控制器130可执行第一擦除操作。
也就是说,当阈值增加时,即使某个块包括大量的可编程页面,控制器130也可确定该某个块是第一开放块。此时,可将阈值设置成比写入数据WT_DAT的编程单位大N倍的值,其中N是大于或等于1的自然数。例如,当将阈值设置成等于写入数据WT_DAT的编程单位的值时,第一开放块可通过一个用于将写入数据WT_DAT编程到第一开放块的编程操作变成封闭块。此外,当将阈值设置成比写入数据WT_DAT的编程单位大两倍的值时,第一开放块可通过两个用于将写入数据WT_DAT编程到第一开放块的编程操作而变成封闭块。也就是说,当将阈值设置成比写入数据WT_DAT的编程单位大两倍的值时,第一开放块可能不会通过一个编程操作而变成封闭块。然而,控制器130可确定第一开放块是预期封闭块,并且分配第一空闲块FR_BLK1。
例如,可对将阈值设置成比写入数据WT_DAT的编程单位大三倍的值的第一情况和将阈值设置成比写入数据WT_DAT的编程单位大两倍的值的第二情况进行比较。
基于对第一空闲块FR_BLK1执行编程操作的时间点,第一种情况下的第一擦除操作可比第二种情况下的第一擦除操作执行得更早且更频繁。此外,随着阈值增加,可预期更多的开放块将被切换成封闭块。因此,可对更多的擦除目标块执行第一擦除操作。当在存在大量的开放块的情况下将阈值设置成较大值时,可预先并频繁地执行第一擦除操作。然后,在编程操作期间,可减少由第二擦除操作引起的延迟。
当参考值减小时,即使第一开放块的数量较少,控制器130也可执行第一擦除操作来生成第一空闲块FR_BLK1。当在开放块的数量较大的情况下将参考值设置成较小值时,可预先并频繁地执行第一擦除操作。然后,在编程操作期间,可减少由第二擦除操作引起的延迟。当编程操作时间减少时,控制器130很可能在主机延迟内完成编程操作。在实施例中,主机延迟可包括自主机将写入请求WT_REQ与用户数据U_DAT一起传输到存储器系统110的时间点起至主机从存储器系统110接收写入请求WT的确认的时间点的时间段。主机延迟可由主机根据用户数据U_DAT的大小来决定,并且对应于主机和存储器系统110之间已判定的时间。
当第一开放块的数量较大时,控制器130可通过减少编程操作时间来减少写入延迟,并因此生成大量的第一空闲块FR_BLK1,以便在主机延迟内传输确认。
当第一开放块的数量不大时,控制器130无需生成第一空闲块FR_BLK1。虽然控制器130生成第一空闲块FR_BLK1,但是考虑到存储器单元的阈值电压分布随时间的改变,控制器130可仅生成最少的第一空闲块FR_BLK1。
因此,在实施例中,控制器130可仅生成一个第一空闲块FR_BLK1,使得编程操作时间不具有最大值。也就是说,当待被编程写入数据WT_DAT的多个不同开放块之中的第一开放块的数量大于或等于二时,控制器130可仅对一个第一擦除目标块ET_BLK1执行第一擦除操作。因此,在从主机接收到写入请求之后,控制器130可对与多个开放块的数量相对应的第二擦除目标块ET_BLK2执行第二擦除操作,以便对写入数据WT_DAT进行编程,从而防止编程操作时间具有最大值的最坏情况。
参照图2B和图2C,在步骤S11中,存储器系统110可判定在第一时间点T1生成第一空闲块FR_BLK1。该第一时间点T1可包括存储器系统110确定待被存储用户数据和元数据的开放块O_BLK中的每一个中的可编程页面的数量不足的时间点。下面在图6A、图6B和图7A的步骤S110和S120中描述步骤S11的该操作。
在步骤S13中,存储器系统110可通过对第一擦除目标块执行第一擦除操作来生成第一空闲块FR_BLK1。下面在图6A、图6B和图7A的步骤S130和S150中描述步骤S13的该操作。
在步骤S15中,可从主机接收写入请求。当根据写入请求执行编程操作时,在步骤S17中,存储器系统110可将先前生成的第一空闲块FR_BLK1分配成开放块。下面参照图9详细描述步骤S15和S17的操作。
然后,在步骤S17中,在对第一空闲块FR_BLK1执行编程操作之后,存储器系统110可判定在第二时间点T2生成第一空闲块FR_BLK1。该第二时间点T2可包括存储器系统110在编程操作期间确定待存储用户数据和元数据的开放块O_BLK中的每一个中的可编程页面的数量不足的时间点。
在步骤S19中,存储器系统110可通过对第二擦除目标块执行第二擦除操作来生成第二空闲块FR_BLK2。下面在图6A、图6B和图7A的步骤S110和S120中描述步骤S19的该操作。
在步骤S21中,存储器系统110可将所生成的第二空闲块FR_BLK2分配成开放块。在步骤S23中,存储器系统110可对第二空闲块FR_BLK2执行编程操作。下面参照图8详细描述步骤S21和S23的操作。
图3是示出根据本公开的实施例的数据处理系统100的框图。
参照图3,数据处理系统100可包括接合或可操作地联接到存储器系统110的主机102。
例如,主机102可包括诸如移动电话、MP3播放器和膝上型计算机的便携式电子装置,或诸如台式计算机、游戏机、电视(TV)和投影仪等的非便携式电子装置。
主机102还包括至少一个操作系统(OS),OS通常可管理并控制在主机102中执行的功能和操作。OS可提供与存储器系统110接合的主机102和需要并使用存储器系统110的用户之间的互操作性。OS可支持与用户请求相对应的功能和操作。通过示例而非限制的方式,根据主机102的移动性,OS可以是通用操作系统或移动操作系统。根据系统需求或用户环境,通用操作系统可被分为个人操作系统和企业操作系统。包括Windows和Chrome的个人操作系统可能需要支持针对一般用途的服务。但包括Windows Server、Linux、Unix等的企业操作系统可专门用于确保并支持高性能。此外,移动操作系统可包括Android、iOS、WindowsMobile等。移动操作系统可能需要支持针对移动性的服务或功能(例如,省电功能)。主机102可包括多个操作系统。根据用户的请求,主机102可运行多个操作系统。主机102可将与用户请求相对应的多个命令传输到存储器系统110,从而在存储器系统110内执行与命令相对应的操作。下面描述在存储器系统110中处置多个命令。
存储器系统110可响应于来自主机102的请求来操作或执行具体的功能或操作,并且特别地,可存储待由主机102访问的数据。存储器系统110可用作主机102的主存储器系统或辅助存储器系统。根据主机接口的协议,存储器系统110可利用可与主机102电联接的各种类型的存储装置中的任意一种来实施。合适的存储装置的非限制性示例包括固态驱动器(SSD)、多媒体卡(MMC)、嵌入式MMC(eMMC)、尺寸减小的MMC(RS-MMC)、微型MMC、安全数字(SD)卡、迷你SD、微型SD、通用串行总线(USB)存储装置、通用闪存(UFS)装置、紧凑式闪存(CF)卡、智能媒体(SM)卡、记忆棒等。
存储器系统110的存储装置可利用例如动态随机存取存储器(DRAM)和静态RAM(SRAM)的易失性存储器装置和/或诸如只读存储器(ROM)、掩膜ROM(MROM)、可编程ROM(PROM)、可擦除可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)、铁电RAM(FRAM)、相变RAM(PRAM)、磁阻RAM(MRAM)、电阻式RAM(RRAM或ReRAM)和闪速存储器的非易失性存储器装置来实施。
存储器系统110可包括控制器130和存储器装置150。存储器装置150可存储待被主机102访问的数据。控制器130可控制数据在存储器装置150中的存储。
控制器130和存储器装置150可被集成到单个半导体装置中,该单个半导体装置可包括在如上所例示的各种类型的存储器系统中的任意一种中。
通过示例而非限制的方式,控制器130和存储器装置150可被集成到单个半导体装置中。控制器130和存储器装置150可如此集成到SSD中以提高操作速度。当存储器系统110用作SSD时,连接到存储器系统110的主机102的操作速度可比利用硬盘实施的主机102的操作速度提高更多。另外,控制器130和存储器装置150可被集成到一个半导体装置中以形成诸如以下的存储卡:PC卡(PCMCIA)、紧凑式闪存卡(CF)、诸如智能媒体卡(SM、SMC)的存储卡、记忆棒、多媒体卡(例如,MMC、RS-MMC、微型MMC)、安全数字(SD)卡(例如,SD、迷你SD、微型SD、SDHC)、通用闪速存储器等。存储器系统110可被配置成例如以下的装置的一部分:计算机、超移动PC(UMPC)、工作站、上网本、个人数字助理(PDA)、便携式计算机、网络平板、平板电脑、无线电话、移动电话、智能电话、电子书、便携式多媒体播放器(PMP)、便携式游戏机、导航系统、黑盒、数码相机、数字多媒体广播(DMB)播放器、三维(3D)电视、智能电视、数字音频记录器、数字音频播放器、数字图片记录器、数字图片播放器、数字视频记录器、数字视频播放器、配置数据中心的存储装置、能够在无线环境下传输和接收信息的装置、配置家庭网络的各种电子装置中的一种、配置计算机网络的各种电子装置中的一种、配置远程信息处理网络的各种电子装置中的一种、射频识别(RFID)装置或配置计算系统的各种组件中的一种。
存储器装置150可以是即使不供应电力时也保留所存储的数据的非易失性存储器装置。存储器装置150可通过写入操作存储从主机102提供的数据,同时通过读取操作将所存储的数据提供到主机102。存储器装置150可包括多个存储块152、154、156,多个存储块152、154、156中的每一个可包括多个页面。多个页面中的每一个可包括与多个字线(WL)电联接的多个存储器单元。存储器装置150还包括多个存储器管芯,多个存储器管芯中的每一个包括多个平面,多个平面中的每一个包括多个存储块。另外,存储器装置150可以是非易失性存储器装置,例如闪速存储器,其中闪速存储器可以是三维堆叠结构。
控制器130可控制存储器装置150的全部操作,诸如读取操作、写入操作、编程操作和擦除操作。例如,控制器130可响应于来自主机102的请求而控制存储器装置150。控制器130可将从存储器装置150读取的数据提供到主机102。控制器130可将由主机102提供的数据存储到存储器装置150中。
控制器130可包括全部经由内部总线可操作地联接的主机接口(I/F)132、处理器134、错误校正码(ECC)组件138、电源管理单元(PMU)140、存储器接口(I/F)142以及存储器144。
主机接口132可处理从主机102提供的命令和数据,并可通过诸如以下的各种接口协议中的至少一种与主机102通信:通用串行总线(USB)、多媒体卡(MMC)、高速外围组件互连(PCI-e或PCIe)、小型计算机系统接口(SCSI)、串列SCSI(SAS)、串行高级技术附件(SATA)、并行高级技术附件(PATA)、增强型小型磁盘接口(ESDI)和/或电子集成驱动器(IDE)。根据实施例,主机接口132与主机102交换数据,主机接口132可通过被称为主机接口层(HIL)的固件来实施。
ECC组件138可校正在存储器装置150中待被处理(例如,从存储器装置150输出)的数据的错误位,该ECC组件138可包括ECC编码器和ECC解码器。此处,ECC编码器可对待被编程在存储器装置150中的数据执行错误校正编码,以生成添加了奇偶校验位的编码数据,并且将编码数据存储在存储器装置150中。当控制器130读取在存储器装置150中存储的数据时,ECC解码器可检测并校正从存储器装置150读取的数据中包含的错误。换言之,在对从存储器装置150读取的数据执行错误校正解码之后,ECC组件138可确定错误校正解码是否已成功并输出指令信号(例如,校正成功信号或校正失败信号)。ECC组件138可使用在ECC编码进程期间生成的奇偶校验位,以校正读取数据的错误位。当错误位的数量大于或等于可校正错误位的阈值数量时,ECC组件138可不校正错误位,而是可输出错误校正失败信号,该错误校正失败信号指示校正错误位失败。
ECC组件138可基于诸如以下的编码调制来执行错误校正操作:低密度奇偶校验(LDPC)码、博斯-查德胡里-霍昆格姆(Bose-Chaudhuri-Hocquenghem,BCH)码、涡轮码、里德-所罗门(Reed-Solomon,RS)码、卷积码、递归系统码(RSC)、网格编码调制(TCM)和/或分组编码调制(BCM)。ECC组件138可包括用于基于上述码中的至少一种执行错误校正操作的任何和所有的电路、模块、系统或装置。
PMU 140可管理、控制或提供控制器130中提供的电力。
存储器接口142可用作用于处置在控制器130和存储器装置150之间传送的命令和数据的接口,以允许控制器130响应于从主机102传递的请求来控制存储器装置150。在当存储器装置150是闪速存储器时,特别是当存储器装置150是NAND闪速存储器时的情况下,存储器接口142可在处理器134的控制下生成存储器装置150的控制信号,并可处理输入到存储器装置150中或从存储器装置150输出的数据。存储器接口142可提供用于处置控制器130与存储器装置150之间的命令和数据的接口,例如NAND闪存接口的操作,特别是控制器130与存储器装置150之间的操作。根据实施例,存储器接口142可通过被称为闪存接口层(FIL)的固件来实施,该固件作为用于与存储器装置150交换数据的组件。
存储器144可支持由存储器系统110和控制器130执行的操作。存储器144可存储用于存储器系统110和控制器130中的操作的临时数据或事务数据。控制器130可响应于来自主机102的请求来控制存储器装置150。控制器130可将从存储器装置150读取的数据传递到主机102。控制器130可将通过主机102输入的数据存储在存储器装置150内。存储器144可用于存储用于控制器130和存储器装置150执行诸如读取操作或编程/写入操作的操作的数据。
存储器144可利用易失性存储器来实施。存储器144可利用静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)或两者来实施。虽然图3例示了存储器144设置在控制器130内,但本发明不限于此。也就是说,存储器144可位于控制器130内部或外部。例如,存储器144可由具有在存储器144与控制器130之间传送数据和/或信号的存储器接口的外部易失性存储器实现。
如上所述,存储器144可存储用于执行诸如由主机102请求的数据写入和数据读取的操作的数据和/或如上所述用于诸如垃圾收集和损耗均衡的后台操作的存储器装置150和控制器130之间传送的数据。根据实施例,为了支持存储器系统110中的操作,存储器144可包括程序存储器、数据存储器、写入缓冲器/高速缓存、读取缓冲器/高速缓存、数据缓冲器/高速缓存、映射缓冲器/高速缓存等。
存储器144可存储映射数据和状态信息。映射数据包括逻辑到物理(L2P)映射数据,该L2P映射数据包括L2P段,该L2P段包括主机102中使用的逻辑地址和存储器装置150中的与该逻辑地址相对应的物理地址。映射数据可进一步包括物理到逻辑(P2L)映射数据,该P2L映射数据包括P2L段,该P2L段包括所使用的物理地址和与该物理地址相对应的逻辑地址。
根据实施例,当与来自主机102的第一逻辑地址一起接收到擦除请求E_REQ时,控制器130将来自主机102的第一逻辑地址与擦除信息E_INF相关联,该擦除信息E_INF包括被擦除物理地址EPA或被擦除状态值EV。此时,控制器130可通过使映射数据中的、映射到第一逻辑地址的物理地址无效来执行对第一逻辑地址的取消映射操作。然后,控制器130将第一逻辑地址映射到映射数据中的被擦除物理地址EPA或被擦除状态值EV。
另外,存储器144可存储状态信息以及映射数据。状态信息可包括脏信息、无效地址信息、有效存储元件信息、空闲块数量信息和擦除状态信息。存储器系统110可使用脏信息或无效地址信息来确定物理地址和与擦除请求E_REQ一起从主机102接收的逻辑地址的有效性。在本公开的实施例中,当与逻辑地址一起接收到擦除请求E_REQ时,控制器130更新逻辑地址的擦除状态信息以具有擦除状态值EV。另外,存储器系统110可使与擦除请求E_REQ的逻辑地址相对应的物理地址无效,然后改变与被无效物理地址相对应的存储块的有效页面计数VPC。另外,存储器系统110可对有效页面的数量少于设定数量的存储块执行垃圾收集。当空闲块数量信息小于或等于设定数量时,存储器系统110可执行垃圾收集。
处理器134可利用微处理器和/或中央处理单元(CPU)来实施。存储器系统110可包括一个或多个处理器134。处理器134可控制存储器系统110的全部操作。通过示例而非限制的方式,处理器134可响应于从主机102输入的写入请求或读取请求来控制对存储器装置150的编程操作或读取操作。根据实施例,处理器134可使用或运行固件来控制存储器系统110的全部操作。此处,固件可被称为闪存转换层(FTL)。FTL可执行诸如主机102和存储器装置150之间的接口连接的操作。主机102可通过FTL将对写入操作和读取操作的请求传输到存储器装置150。
FTL可管理地址映射、垃圾收集、损耗均衡等操作。特别地,FTL可加载、生成、更新或存储映射数据。因此,控制器130可通过映射数据将从主机102输入的逻辑地址与存储器装置150的物理地址进行映射。因为地址映射操作,存储器装置150可像通用存储装置一样动作以执行读取操作或写入操作。而且,通过基于映射数据的地址映射操作,当控制器130尝试更新在特定页面中存储的数据时,由于闪速存储器装置的特性,控制器130可对另一空白页面编程更新后的数据,并且可使该特定页面的旧数据无效(例如,将与更新后的数据的逻辑地址相对应的物理地址从先前特定页面更新为另一新编程页面)。此外,控制器130可将新数据的映射数据存储到FTL中。
例如,当在存储器装置150中执行从主机102请求的操作时,控制器130使用处理器134。处理器134可处置与来自主机102的输入命令相对应的指令或命令。控制器130可执行作为与从主机102输入的命令相对应的命令操作的前台操作,诸如与写入命令相对应的编程操作、与读取命令相对应的读取操作、与擦除/丢弃命令相对应的擦除/丢弃操作以及与具有设置命令的设置参数命令或设置特征命令相对应的参数设置操作。
再例如,控制器130可通过处理器134对存储器装置150执行后台操作。通过示例而非限制的方式,后台操作包括将存储器装置150中的存储块152至156之中的一个存储块中存储的数据复制到另一存储块,例如垃圾收集(GC)操作。后台操作可包括将存储块152至156的至少一个中存储的数据移动或交换到存储块152至156的至少另一个存储块中,例如损耗均衡(WL)操作。在后台操作期间,控制器130可使用处理器134以将在控制器130中存储的映射数据存储到存储器装置150中的存储块152至156中的至少一个中,例如映射清除(flush)操作。在多个存储块152至156之中检查和搜索坏块的坏块管理操作是由处理器134执行的后台操作的另一示例。
在存储器系统110中,控制器130执行与从主机102输入的多个命令相对应的多个命令操作。例如,当顺序地、随机地或可替换地执行与多个编程命令相对应的多个编程操作、与多个读取命令相对应的多个读取操作以及与多个擦除命令相对应的多个擦除操作时,控制器130可确定用于将控制器130连接到存储器装置150中包括的多个存储器管芯的多个通道(或通路)之中的哪个(哪些)通道或通路适于或适用于执行每个操作。控制器130可经由所确定的通道或通路来发送或传送数据或指令以执行每个操作。在每个操作完成之后,存储器装置150中的多个存储器管芯可分别经由相同的通道或通路传输操作结果。然后,控制器130可将响应或确认信号传输到主机102。在实施例中,控制器130可检查每个通道或每个通路的状态。响应于从主机102输入的命令,控制器130可基于每个通道或每个通路的状态来选择至少一个通道或通路,使得可经由被选择通道或通路来传递指令和/或操作结果以及数据。
通过示例而非限制的方式,控制器130可识别关于与存储器装置150中的多个存储器管芯相关联的多个通道(或通路)的状态。控制器130可确定每个通道或每个通路的状态为忙碌状态、就绪状态、激活状态、空闲状态、正常状态和/或异常状态。控制器确定通过哪个通道或通路传递指令(和/或数据)可与物理块地址相关联,例如将指令(和/或数据)传送递到哪个(哪些)管芯。控制器130可参考从存储器装置150传递的描述符。描述符可包括描述与存储器装置150相关的某些信息的参数块或参数页面,参数块或参数页面为具有特定格式或结构的数据。例如,描述符可包括装置描述符、配置描述符、单元描述符等。控制器130可参考或使用描述符来确定以哪个(哪些)通道或通路交换指令或数据。
管理单元(未示出)可被包括在处理器134中。管理单元可对存储器装置150执行坏块管理。管理单元可发现存储器装置150中的不满足进一步使用条件的坏存储块,并且对坏存储块执行坏块管理。当存储器装置150为闪速存储器,例如NAND闪速存储器时,在写入操作期间,例如在编程操作期间,由于NAND逻辑功能的特性而可能发生编程失败。在坏块管理期间,可将编程失败的存储块或坏存储块的数据编程到新的存储块中。坏块可严重劣化具有3D堆叠结构的存储器装置150的利用效率和存储器系统110的可靠性。因此,可靠的坏块管理可提高或改善存储器系统110的性能。
参照图4,详细描述了存储器系统中的控制器。图4中的存储器系统可对应于图3中的存储器系统110。控制器130与主机102和存储器装置150协作。如图所示,控制器130包括闪存转换层(FTL)40以及先前结合图3标识的主机接口132、存储器接口142和存储器144。
虽然未在图4中示出,但图3中描述的ECC组件138可被包括在闪存转换层40中。在另一实施例中,ECC组件138可被实施为包括在控制器130中或与控制器130相关联的单独模块、电路、固件等。
主机接口132用于处置从主机102传送的命令、数据等。通过示例而非限制的方式,主机接口132可包括命令队列56、缓冲器管理器52和事件队列54。命令队列56可顺序地存储从主机102接收的命令、数据等,并且以命令、数据等存储的顺序来将它们输出到缓冲器管理器52。缓冲器管理器52可对从命令队列56接收的命令、数据等进行分类、管理或调整。事件队列54可顺序地传送用于处理从缓冲器管理器52接收的命令、数据等的事件。
相同特性的多个命令或数据(例如读取命令或写入命令)可从主机102被传输到存储器系统110,或者不同特性的命令和数据可在由主机102混合或混杂之后被传输到存储器系统110。例如,用于读取数据的多个命令(即,读取命令)可被传递到存储器系统110,或者读取命令和用于编程或写入数据的命令(即,写入命令)可被交替地传输到存储器系统110。主机接口132可将从主机102传输的命令和数据顺序地存储到命令队列56。此后,主机接口132可根据已经从主机102接收的命令和数据的特性来估计或预测控制器130将执行何种类型的内部操作。主机接口132可至少基于命令和数据的特性来确定命令和数据的处理顺序和优先级。根据命令和数据的特性,缓冲器管理器52被配置成确定缓冲器管理器52是否应当将命令和数据存储在存储器144中,或者缓冲器管理器52是否应将命令和数据传递到闪存转换层40中。事件队列54接收待由存储器系统110或控制器130响应于命令和数据内部地运行并处理的、从缓冲器管理器52输入的事件,以便以接收的顺序将事件传递到闪存转换层40中。
根据实施例,主机接口132可执行图3中描述的控制器130的一些功能。
根据实施例,闪存转换层40可包括主机请求管理器(HRM)46、映射数据管理器(MM)44、状态管理器(GC/WL)42和块管理器(BM/BBM)48。主机请求管理器46可管理从事件队列54输入的事件。映射数据管理器44可处置或控制映射数据。状态管理器42可执行垃圾收集(GC)或损耗均衡(WL)。块管理器48可对存储器装置150中的块运行命令或指令。
通过示例而非限制的方式,主机请求管理器46可使用映射数据管理器44和块管理器48来根据读取命令和编程命令以及从主机接口132传递的事件处置或处理请求。主机请求管理器46可将查询请求发送到映射数据管理器44,以确定与和事件一起输入的逻辑地址相对应的物理地址。主机请求管理器46可将读取请求与物理地址一起发送到存储器接口142,以处理读取请求(处理事件)。此外,主机请求管理器46可将编程请求(或写入请求)发送到块管理器48,以将数据编程到存储器装置150中的特定空白页面(当前没有数据)。然后,主机请求管理器46可将与编程请求相对应的映射更新请求传送到映射数据管理器44,以更新逻辑到物理地址相互映射的信息中的、与被编程数据相关的项。
此处,块管理器48可将从主机请求管理器46、映射数据管理器44和/或状态管理器42传递的编程请求转换成用于存储器装置150的闪存编程请求,以对存储器装置150中的闪存块进行管理。为了提高存储器系统110的编程或写入性能,块管理器48可收集编程请求并且将对多平面和单触发编程操作的闪存编程请求发送到存储器接口142。在实施例中,块管理器48将若干闪存编程请求发送到存储器接口142,以提高多通道多向闪速控制器的并行处理。
另外,块管理器48可被配置成根据有效页面的数量来管理存储器装置150中的块,在需要空闲块时选择并擦除不具有有效页面的块,并且在确定需要垃圾收集时选择包括最少数量有效页面的块。状态管理器42可执行垃圾收集以将有效数据移动到空块并且擦除包含移动的有效数据的块,使得块管理器48可具有足够的空闲块(没有数据的空块)。如果块管理器48将关于待擦除的块的信息提供到状态管理器42,则状态管理器42可检查待擦除的块中的所有闪存页面以确定每个页面是否有效。例如,为了确定每个页面的有效性,状态管理器42可识别在每个页面的带外(OOB)区域中记录的逻辑地址。为了确定每个页面是否有效,状态管理器42可将页面的物理地址与从查询请求获得的映射到逻辑地址的物理地址进行比较。状态管理器42针对每个有效页面将编程请求发送到块管理器48。当编程操作完成时,可通过映射数据管理器44的更新来更新映射表。
映射数据管理器44可管理逻辑到物理映射表。映射数据管理器44可处理由主机请求管理器46或状态管理器42生成的诸如查询和更新的请求。映射数据管理器44可将整个映射表存储在存储器装置150(例如,闪速存储器/非易失性存储器)中,并且根据存储器144的存储容量来高速缓存映射条目。当在处理查询或更新请求时发生映射高速缓存未命中时,映射数据管理器44可将读取请求发送到存储器接口142以加载存储器装置150中存储的相关映射表。当映射数据管理器44中的脏高速缓存块的数量超过特定阈值时,编程请求可被发送到块管理器48,使得形成干净高速缓存块并且脏映射表可存储在存储器装置150中。
此外,当执行垃圾收集时,状态管理器42将有效页面复制到空闲块中,并且主机请求管理器46可针对页面的相同逻辑地址编程最新版本数据,并且即时地发出更新请求。当状态管理器42在有效页面的复制没有正常完成的状态下请求映射更新时,映射数据管理器44可不执行映射表更新。这是因为当状态管理器42请求映射更新并且稍后完成有效页面复制时,发出了具有旧物理信息的映射请求。仅当最新映射表仍然指向旧物理地址时,映射数据管理器44可执行映射更新操作以确保准确性。
根据实施例,状态管理器42、映射数据管理器44或块管理器48中的至少一个可包括用于执行其自身操作的电路。如本公开所使用的,术语“电路”是指以下中的任意一个或全部:(a)仅硬件电路实施方案(诸如仅在模拟和/或数字电路中的实施方案)以及(b)电路与软件(和/或固件)的组合,诸如(如适用):(i)处理器的组合或(ii)(包括一起工作以使诸如移动电话或服务器的设备执行各种功能的数字信号处理器、软件和存储器的)处理器/软件的部分;以及(c)即使软件或固件并非物理地存在但仍需要该软件或固件来进行操作的电路,诸如微处理器或微处理器的一部分。“电路”的这种定义适于该术语在本申请中、包括在任意权利要求中的所有使用。作为另一示例,如在本申请中所使用的,术语“电路”还覆盖仅处理器(或多个处理器)或处理器的部分及处理器(或多个处理器)附带的软件和/或固件的实施方案。例如,当术语“电路”适于特定的要求保护的元件时,术语“电路”还将覆盖用于存储装置的集成电路。
存储器装置150可包括多个存储块。根据一个存储器单元中可存储或表示的位的数量,多个存储块可以是诸如单层单元(SLC)存储块或多层单元(MLC)存储块的不同类型的存储块中的任意一种。此处,SLC存储块包括由每个存储一位数据的存储器单元实施的多个页面。SLC存储块可具有高数据I/O操作性能和高耐久性。MLC存储块包括由每个存储多位(例如,两位或更多位)数据的存储器单元实施的多个页面。与SLC存储块相比,针对相同的空间,MLC存储块可具有更大的存储容量。在存储容量方面,MLC存储块可被高度集成。在实施例中,存储器装置150可利用诸如MLC存储块、三层单元(TLC)存储块、四层单元(QLC)存储块及其组合的MLC存储块来实施。MLC存储块可包括由每个能够存储2位数据的存储器单元实施的多个页面。三层单元(TLC)存储块可包括由每个能够存储3位数据的存储器单元实施的多个页面。四层单元(QLC)存储块可包括由每个能够存储4位数据的存储器单元实施的多个页面。在另一实施例中,存储器装置150可利用包括由每个能够存储5位或更多位数据的存储器单元实施的多个页面的块来实施。图5A和图5B示出根据本实施例的多个开放块的示例。图5A所示的多个开放块O_BLK可具有分别被设置成不同值的阈值TH,并且图5B所示的多个开放块O_BLK可具有被设置成相同值的阈值TH。
多个不同的写入数据WT_DAT可分别存储在图5A和图5B所示的多个开放块U_BLK、MAP_BLK、HIS_BLK和LOG_BLK中。
用户数据块U_BLK可以是存储与写入请求WT_REQ一起从主机102接收的用户数据U_DAT的存储块。元数据块M_BLK可以是存储与用户数据U_DAT的属性、内容和存储位置相关联的元数据M_DAT的存储块。元数据块M_BLK可包括映射块MAP_BLK,包括关于用户数据U_DAT的物理位置信息的映射数据MAP_DAT存储在映射块MAP_BLK中。映射数据MAP_DAT可包括在主机中使用的逻辑地址和在存储器装置150中使用的物理地址。
元数据块M_BLK可进一步包括用于存储历史数据HIS_DAT的历史块HIS_BLK和用于存储日志数据LOG_DAT的日志块LOG_BLK,其中该历史数据HIS_DAT包括存储映射数据MAP_DAT的位置的物理地址,并且该日志数据LOG_DAT包括存储历史数据HIS_DAT的位置的物理地址。
在图5A和图5B中,用户数据U_DAT的编程单位PGM_UNIT可对应于“五个页面”的大小。映射数据MAP_DAT的编程单位PGM_UNIT可对应于“三个页面”的大小。历史数据HIS_DAT的编程单位PGM_UNIT可对应于“两个页面”的大小。日志数据LOG_DAT的编程单位PGM_UNIT可对应于“一个页面”的大小。
在图5A和图5B中,包括在用户开放块U_BLK中并且没有存储用户数据U_DAT的可编程页面PGM_P的数量可以是“四”。包括在映射开放块MAP_BLK中并且没有存储映射数据MAP_DAT的可编程页面PGM_P的数量可以是“一”。包括在历史开放块HIS_BLK中并且没有存储历史数据HIS_DAT的可编程页面PGM_P的数量可以是“二”。包括在日志开放块LOG_BLK中并且没有存储日志数据LOG_DAT的可编程页面PGM_P的数量可以是“一”。
参照图5A,各个开放块U_BLK、MAP_BLK、HIS_BLK和LOG_BLK的阈值TH可被不同地设置成分别与用户数据U_DAT、映射数据MAP_DAT、历史数据HIS_DAT和日志数据LOG_DAT的各自的编程单位PGM_UNIT相对应的值。在一些实施例中,阈值TH可被不同地设置成与比各自的编程单位PGM_UNIT大N倍的值相对应的值,其中N是大于或等于2的自然数。
参照图5B,多个开放块U_BLK、MAP_BLK、HIS_BLK和LOG_BLK的阈值TH可被设置成分别与用户数据U_DAT、映射数据MAP_DAT、历史数据HIS_DAT和日志数据LOG_DAT的编程单位PGM_UNIT之中的最大编程单位PGM_UNIT相对应的值。
在图5B的所示示例中,阈值TH可被相等地设置成与作为最大编程单位PGM_UNIT的用户数据U_DAT的编程单位PGM_UNIT相对应的“五个页面”。在一些实施例中,阈值TH可被相等地设置成比最大编程单位PGM_UNIT大N倍的值,其中N是大于或等于2的自然数。
在一些实施例中,用户数据U_DAT的编程单位PGM_UNIT可被设置成由主机一次请求的用户数据U_DAT的大小的最大值,例如512字节。一个第一空闲块FR_BLK1中的可编程页面PGM_P的数量可大于用户数据U_DAT的编程单位PGM_UNIT。
在一些实施例中,映射数据MAP_DAT、历史数据HIS_DAT和日志数据LOG_DAT可临时存储在控制器130的存储器144中,并且由控制器130进行更新和管理。此外,当映射数据MAP_DAT、历史数据HIS_DAT和日志数据LOG_DAT的编程时段到来时,可根据各自的编程单位PGM_UNIT将映射数据MAP_DAT、历史数据HIS_DAT和日志数据LOG_DAT编程到相应开放块MAP_BLK、HIS_BLK和LOG_BLK。
图6A示出根据本公开的实施例的用于减少编程操作时间和写入延迟的第一空闲块生成方法的示例。在下文中,参照图5A和图5B中的多个开放块来描述图6A的第一空闲块生成方法。
参照图6A,在步骤S110中,控制器130检查并监测存储器装置150中的多个开放块O_BLK的每一个中的可编程页面PGM_P的数量。可在将用户数据U_DAT编程到用户开放块U_BLK之后,或者在控制器130中的存储器144中生成或更新诸如映射数据MAP_DAT、历史数据HIS_DAT和日志数据LOG_DAT的元数据之后执行步骤S110。也就是说,可在每当多个开放块O_BLK的每一个中的可编程页面的数量改变时执行步骤S110。
在步骤S120a中,控制器130判定可编程页面PGM_P的数量小于阈值TH的第一开放块O_BLK1。在步骤S130中,控制器130可基于第一开放块O_BLK1的数量n(O_BLK1),对作为多个擦除目标块ET_BLK中的一些的第一擦除目标块ET_BLK1执行第一擦除操作ER_OP1。在步骤S150中,控制器130可生成第一空闲块FR_BLK1。特别地,控制器130可通过对与第一开放块O_BLK1的数量n(O_BLK1)相同数量的第一擦除目标块ET_BLK1执行第一擦除操作ER_OP1来生成与该第一开放块的数量n(O_BLK1)相同数量的第一空闲块FR_BLK1。
在图5A的示例中,在步骤S120a中,控制器130可判定具有小于阈值TH“五个页面”的四个可编程页面PGM_P的用户开放块U_BLK和具有小于阈值TH“三个页面”的一个可编程页面PGM_P的映射开放块MAP_BLK作为第一开放块O_BLK1。因为第一开放块O_BLK1的数量n(O_BLK1)为二,所以控制器130可在步骤S130中对两个第一擦除目标块ET_BLK1执行第一擦除操作ER_OP1,并且在步骤150中生成两个第一空闲块FR_BLK1。
在图5B的示例中,在步骤S120a中,控制器130可判定每个都具有小于阈值TH“五个页面”的可编程页面PGM_P的用户开放块U_BLK、映射开放块MAP_BLK、历史开放块HIS_BLK和日志开放块LOG_BLK作为第一开放块O_BLK1。因为第一开放块O_BLK1的数量n(O_BLK1)为四,所以控制器130可在步骤S130中对四个第一擦除目标块ET_BLK1执行第一擦除操作ER_OP1,并且在步骤150中生成四个第一空闲块FR_BLK1。
根据图6A所示的第一空闲块生成方法,控制器130可在步骤S130中对与第一开放块O_BLK1的数量n(O_BLK1)相同数量的第一擦除目标块ET_BLK1执行第一擦除操作ER_OP1,并且在步骤S150中生成第一空闲块FR_BLK1。
当阈值TH被设置成分别等于多个开放块U_BLK、MAP_BLK、HIS_BLK和LOG_BLK中存储的写入数据U_DAT、MAP_DAT、HIS_DAT和LOG_DAT的编程单位的值时,因为待被封闭的第一开放块的数量等于所生成的第一空闲块FR_BLK1的数量,所以在根据从主机102接收的写入请求WT_REQ的编程操作期间,控制器130可不执行用于生成第二空闲块FR_BLK2的擦除操作。
因此,因为无需用于确保第二空闲块以执行编程操作所需的擦除操作时间,所以图6A所示的第一空闲块生成方法可减少编程操作时间。此外,因为所生成的第一空闲块FR_BLK1可一对一地被分配到待被封闭的各个第一开放块,所以第一空闲块FR_BLK1可被分配到被编程用户数据U_DAT的用户开放块U_BLK。因此,随着存储器系统110的编程操作时间减少,写入延迟也可减少。
除了用户数据U_DAT之外,诸如映射数据MAP_DAT、历史数据HIS_DAT和日志数据LOG_DAT的元数据可临时存储在控制器130中的存储器144中,并且由控制器130进行更新和管理。当映射数据MAP_DAT、历史数据HIS_DAT和日志数据LOG_DAT的编程时段到来时,可根据各自的编程单位PGM_UNIT将映射数据MAP_DAT、历史数据HIS_DAT和日志数据LOG_DAT各自编程到相应开放块MAP_BLK、HIS_BLK和LOG_BLK。
当在根据从主机102接收的写入请求WT_REQ的编程操作期间,诸如映射数据MAP_DAT、历史数据HIS_DAT和日志数据LOG_DAT的元数据的编程时段未到来时,控制器130可仅生成元数据并将该元数据更新到存储器144中,而无需执行编程操作。也就是说,控制器130可不对针对元数据开放块MAP_BLK、HIS_BLK和LOG_BLK的编程操作所生成的第一空闲块FR_BLK1执行编程操作。然后,随着时间的推移,已生成的第一空闲块FR_BLK1中的存储器单元的阈值电压分布可能改变以使擦除页面的特性劣化。因此,第一空闲块FR_BLK1中存储的写入数据WT_DAT的可靠性也可能劣化。
因此,如图6B所示,描述了一种生成第一空闲块FR_BLK1的方法,该方法可提高写入数据WT_DAT的可靠性,同时减少编程操作时间和写入延迟。
参照图6B,在步骤S110a中,控制器130监测并检查存储器装置150中的多个开放块O_BLK的每一个中的可编程页面PGM_P的数量。可在将用户数据U_DAT编程到用户开放块U_BLK之后,或者在控制器130中的存储器144中生成或更新诸如映射数据MAP_DAT、历史数据HIS_DAT和日志数据LOG_DAT的元数据之后执行步骤S110a。
当在步骤S110中监测到的可编程页面PGM_P的数量小于阈值TH时,在步骤S120b中,控制器130可判定待被执行编程操作的开放块O_BLK作为第一开放块O_BLK1。
因为每当从主机102接收到写入请求WT_REQ时就对用户数据U_DAT执行编程操作,所以控制器130可确定用户开放块U_BLK是第一开放块O_BLK1。
每当从主机102接收到写入请求WT_REQ时,可不执行对元数据MAP_DAT、HIS_DAT和LOG_DAT的编程操作。因此,控制器130可检查元数据MAP_DAT、HIS_DAT和LOG_DAT的编程时段。
当包括在存储器144中并被分配以存储元数据MAP_DAT、HIS_DAT或LOG_DAT的存储空间中的没有存储元数据的空白空间的大小小于或等于预设大小时,控制器130可执行编程操作来清除元数据MAP_DAT、HIS_DAT或LOG_DAT。因此,控制器130可确定空白空间小于或等于预设大小的存储空间中存储的元数据的编程时段已到来。因此,在步骤S120b中,控制器130可判定编程时段已到来的元数据所存储的元开放块MAP_BLK作为第一开放块O_BLK1。
在步骤S130中,控制器130可基于第一开放块的数量n(O_BLK1),对作为多个擦除目标块ET_BLK中的一部分的第一擦除目标块ET_BLK1执行第一擦除操作ER_OP1。控制器130可在步骤S150中生成第一空闲块FR_BLK1。特别地,控制器130可通过对与第一开放块的数量n(O_BLK1)相同数量的第一擦除目标块ET_BLK1执行第一擦除操作ER_OP1来生成与该第一开放块的数量n(O_BLK1)相同数量的第一空闲块FR_BLK1。
在图5A的示例中,在每个包括小于阈值TH的可编程页面PGM_P的映射开放块MAP_BLK和用户开放块U_BLK中的映射开放块MAP_BLK的编程时段将到来。在这种情况下,控制器130可根据稍后将从主机102接收的写入请求WT_REQ确定将对用户开放块U_BLK和映射开放块MAP_BLK执行编程操作。因此,控制器130可在步骤S130中对两个第一擦除目标块ET_BLK1执行第一擦除操作ER_OP1,并且在步骤150中生成两个第一空闲块FR_BLK1。
在图5B的示例中,在每个包括小于阈值TH的可编程页面PGM_P的用户开放块U_BLK、映射开放块MAP_BLK、历史开放块HIS_BLK和日志开放块LOG_BLK之中,仅映射开放块MAP_BLK的编程时段将到来,并且历史开放块HIS_BLK和日志开放块LOG_BLK的编程时段未到来。在这种情况下,控制器130可根据稍后要接收的写入请求WT_REQ来确定将对用户开放块U_BLK和映射开放块MAP_BLK执行编程操作,并且将不对历史块HIS_BLK和日志开放块LOG_BLK执行编程操作。因此,控制器130可在步骤S130中对两个第一擦除目标块ET_BLK1执行第一擦除操作ER_OP1,并且在步骤150中生成两个第一空闲块FR_BLK1。
当阈值TH被设置成分别等于多个开放块U_BLK、MAP_BLK、HIS_BLK和LOG_BLK中存储的写入数据U_DAT、MAP_DAT、HIS_DAT和LOG_DAT的编程单位的值时,因为待被封闭的并且待被执行编程操作的第一开放块的数量等于所生成的第一空闲块FR_BLK1的数量,所以控制器130可在根据从主机102接收的写入请求WT_REQ的编程操作期间不执行用于生成第二空闲块FR_BLK2的擦除操作。
因此,因为无需用于确保第二空闲块以执行编程操作所需的擦除操作时间,所以图6B所示的第一空闲块生成方法可减少编程操作时间。此外,因为所生成的第一空闲块FR_BLK1可被一对一地分配到因编程操作而封闭的各个第一开放块,所以第一空闲块FR_BLK1可被分配到被编程用户数据U_DAT的用户开放块U_BLK。因此,可减少存储器系统110的写入延迟。
特别地,图6B的第一空闲块生成方法可根据可编程页面PGM_P的数量小于阈值并且根据稍后将从主机102接收的写入请求WT_REQ而待被执行编程操作的用户开放块U_BLK和元开放块MAP_BLK、HIS_BLK和LOG_BLK的准确数量来确定第一开放块O_BLK1的数量。因此,可对基于第一开放块O_BLK1的数量所生成的所有第一空闲块FR_BLK1执行编程操作。因此,因为生成第一空闲块的时间点与对第一空闲块执行编程操作的时间点没有太大区别,所以所生成的第一空闲块FR_BLK1中的存储器单元的阈值电压分布可能不会改变。因此,第一空闲块FR_BLK1中的擦除页面的特性不会被劣化,并且第一空闲块FR_BLK1中存储的写入数据WT_DAT的可靠性也不会被劣化。
本公开可包括能够防止编程操作时间具有最大值的情况,同时考虑到可靠性随着时间的流逝而降低的第一空闲块的特性,即考虑到第一空闲块的擦除页面中包括的存储器单元的阈值电压分布的改变,生成最小数量的第一空闲块的实施例。
图7示出用于防止编程操作时间具有最大值的情况的第一空闲块生成方法的示例。编程操作时间具有最大值的情况可指示以下情况:对与多个不同写入数据WT_DAT的数量相同数量的擦除目标块执行擦除操作,同时对多个不同写入数据WT_DAT执行编程操作。
因为图7A的步骤S110和S120以与图6A的步骤S110和S120相同的方式执行,所以本文省略对其的描述。
在步骤S125中,控制器130确定在步骤S120中判定的第一开放块的数量n(O_BLK1)是否大于或等于二。
当步骤S125的确定结果指示第一开放块的数量n(O_BLK1)大于或等于二(步骤S125中为是)时,在步骤S135中,控制器130可对一个或多个第一擦除目标块ET_BLK1执行第一擦除操作ER_OP1。此外,在步骤S155中,控制器130可生成一个或多个第一空闲块FR_BLK1。在步骤S155中生成的第一空闲块FR_BLK1的数量可大于或等于一并且小于或等于第一开放块的数量n(O_BLK1)。
当步骤S125的确定结果指示第一开放块的数量n(O_BLK1)小于二(步骤S125中为否)时,控制器130既不在步骤S135中执行第一擦除操作,也不生成第一空闲块FR_BLK1。
当将图7A所示的第一空闲块生成方法应用于图5A和图5B所示的四个开放块U_BLK、MAP_BLK、HIS_BLK和LOG_BLK时,因为第一开放块的数量n(O_BLK1)大于或等于二(图5A中为二,图5B中为四),所以控制器130可在步骤S135中对一个或多个第一擦除目标块ET_BLK1执行第一擦除操作ER_OP1之后,在步骤S155中生成一个或多个第一空闲块FR_BLK1。
特别地,在根据图5B中的写入请求WT_REQ的编程操作期间,即使控制器130确定待被封闭的第一开放块O_BLK1的数量是四个,控制器130也不会生成四个第二空闲块FR_BLK2,而是生成三个第二空闲块FR_BLK2。也就是说,因为仅对三个擦除目标块而不是对四个擦除目标块执行用于生成第二空闲块FR_BLK2的擦除操作,所以控制器130可防止编程操作时间具有最大值的情况。
然而,当在步骤S155中生成的一个或多个第一空闲块FR_BLK1不被分配到执行了对用户数据U_DAT的编程操作的用户开放块U_BLK,而是被分配到执行了对元数据的编程操作的元开放块时,控制器130需要在对用户数据U_DAT的编程操作期间对一个擦除目标块执行第二擦除操作以便生成第二空闲块FR_BLK2。因此,用户数据U_DAT的编程操作时间可能增加,并且写入延迟可能增加。
当即使在步骤S155中生成的一个或多个第一空闲块FR_BLK1被分配到执行了对元数据的编程操作的元开放块,元数据的编程时段也未到来时,可不对所生成的第一空闲块FR_BLK1执行对元数据的编程操作。
因此,本公开可包括第一空闲块生成方法的实施例,该第一空闲块生成方法可减少写入延迟,同时防止编程操作时间具有最大值的情况。
图7B示出根据本实施例的用于将所生成的第一空闲块分配到第一开放块的方法。特别地,可在执行图2B所示的第一擦除操作的时间点和第二时间点T2之间执行参照图7B描述的分配第一空闲块的操作。
控制器130可确定每个包括小于阈值TH的可编程页面PGM_P的第一开放块的数量n(O_BLK1)是否小于所生成的第一空闲块的数量n(FR_BLK1)。
当确定结果指示第一开放块的数量n(O_BLK1)不小于第一空闲块的数量n(FR_BLK1)时,控制器130可确定第一开放块的数量n(O_BLK1)等于第一空闲块的数量n(FR_BLK1),并且将第一空闲块FR_BLK1一对一地分配到第一开放块O_BLK1。该操作可对应于参照图6A和图6B描述的第一空闲块生成方法。
当确定结果指示第一开放块的数量n(O_BLK1)小于第一空闲块的数量n(FR_BLK1)时,控制器130可根据第一开放块O_BLK1的优先级优先分配第一空闲块FR_BLK1。
在本实施例中,控制器130可增加第一开放块O_BLK1之中被首先执行编程操作的第一开放块O_BLK1的分配优先级。当按用户数据U_DAT、映射数据MAP_DAT、历史数据HIS_DAT和日志数据LOG_DAT的顺序顺序地执行针对写入数据WT_DAT的编程操作并且用户开放块U_BLK被包括在第一开放块O_BLK1中时,控制器130可增加被首先执行编程操作的用户开放块U_BLK的分配优先级。因此,在针对写入数据WT_DAT的编程操作期间,第一空闲块FR_BLK1可被优先地分配到用户开放块U_BLK,这使得可以减少写入延迟。
在本实施例中,控制器130可增加第一开放块O_BLK1之中具有所存储的用户数据U_DAT的用户开放块U_BLK的分配优先级。如图5A所示,在多个开放块U_BLK、MAP_BLK、HIS_BLK和LOG_BLK之中的、具有小于阈值TH的可编程页面PGM_P的第一开放块O_BLK1可包括用户数据块U_BLK和映射数据块MAP_BLK。控制器130可将具有所存储的用户数据U_DAT的用户开放块U_BLK的分配优先级增加到比映射数据块MAP_BLK的分配优先级更高的优先级。因此,在针对写入数据WT_DAT的编程操作期间,第一空闲块FR_BLK1可被优先分配到用户开放块U_BLK,这使得可以减少写入延迟。
参照图7B中的情况1,控制器130可增加第一开放块O_BLK1之中编程单位PGM_UNIT具有较大大小的第一开放块O_BLK1的分配优先级。当写入数据WT_DAT的编程单位PGM_P具有(用户数据U_DAT>映射数据MAP_DAT>历史数据HIS_DAT>日志数据LOG_DAT)的关系并且用户开放块U_BLK被包括在第一开放块O_BLK1中时,控制器130可增加具有最大编程单位PGM_UNIT的用户开放块U_BLK的分配优先级。因此,在针对写入数据WT_DAT的编程操作期间,第一空闲块FR_BLK1可被优先分配到用户开放块U_BLK,这可以减少写入延迟。
如上所述,当第一空闲块FR_BLK1被优先分配到用户数据块U_BLK时,在针对用户数据U_DAT的编程操作期间,无需对擦除目标块执行擦除操作。也就是说,可减少对用户数据U_DAT进行编程所需的编程操作时间,并且还可减少写入延迟。因此,控制器130可在主机延迟内将对写入请求WT_REQ的确认传输到主机。参照图7B中的情况2,控制器130可增加第一开放块O_BLK1之中的、编程时段到来的元数据所存储的第一开放块O_BLK1的分配优先级。
也就是说,控制器130可增加具有较大编程单位PGM_UNIT和较少可编程页面PGM_P的数量的第一开放块的分配优先级。
例如,如图5A所示,用户数据块U_BLK中的可编程页面PGM_P的数量对应于“四个页面”,并且用户数据U_DAT的编程单位PGM_UNIT对应于“五个页面”。因此,两个值之间的差异可对应于“一个页面”。映射数据块MAP_BLK中的可编程页面的数量对应于“一个页面”,并且映射数据MAP_DAT的编程单位PGM_UNIT对应于“三个页面”。因此,两个值之间的差可对应于“两个页面”。因此,控制器130可将映射数据块MAP_BLK的分配优先级提高到比用户数据块U_BLK的分配优先级更高的优先级。
如上所述,当第一空闲块FR_BLK1被优先分配到映射数据块M_BLK时,在针对映射数据块M_BLK的编程操作期间,无需对擦除目标块执行擦除操作。也就是说,可减少对映射数据块M_BLK进行编程所需的编程操作时间。
图8示出根据本公开的实施例的由控制器130执行的编程操作方法的示例。
参照图8,在步骤S200中,控制器130可与用户数据U_DAT一起从主机接收写入请求WT_REQ。在步骤S230中,控制器130可分别对多个开放块O_BLK执行针对写入数据WT_DAT的编程(PGM)操作。可按用户数据U_DAT、映射数据MAP_DAT、历史数据HIS_DAT和日志数据LOG_DAT的顺序来顺序地执行针对写入数据WT_DAT的编程操作。
在图8的针对写入数据WT_DAT的编程操作期间,当先前生成的第一空闲块FR_BLK1未根据参照图7B描述的分配方法被优先分配到特定开放块时,控制器130可在必要时分配第一空闲块FR_BLK1作为开放块,同时顺序地执行针对写入数据WT_DAT的编程操作。
在步骤S240中,控制器130可通过步骤S230的编程操作来确定开放块O_BLK是否被改变为封闭块C_BLK。当数据被编程到开放块O_BLK的每一个中的所有可编程页面PGM_P时,该开放块O_BLK可改变为封闭块C_BLK。
当步骤S240的确定结果指示开放块O_BLK未改变为封闭块C_BLK(否)时,控制器130可返回到步骤S230以执行编程操作。
当步骤S240的确定结果指示正被执行编程操作的开放块O_BLK改变为封闭块C_BLK时,在步骤S250中,控制器130可确定是否存在先前生成的第一空闲块FR_BLK1。当步骤S250的确定结果指示存在第一空闲块FR_BLK1时,在步骤S265中,控制器130可将该第一空闲块FR_BLK1分配成开放块O_BLK。
在步骤S310,控制器130可确定针对写入数据WT_DAT的编程操作是否完成。当步骤S310的确定结果指示针对写入数据WT_DAT的编程操作未完成(否)时,控制器130可返回到步骤S230,以对分配了第一空闲块FR_BLK1的开放块O_BLK执行编程操作。
当步骤S250的确定结果指示不存在第一空闲块FR_BLK1(否)时,在步骤S270中,控制器130可通过对从未被执行擦除操作的第二擦除目标块ET_BLK2执行第二擦除操作ER_OP2来生成第二空闲块FR_BLK2。
在步骤S290中,控制器130可将所生成的第二空闲块FR_BLK2分配成开放块O_BLK。在步骤S310中,控制器130可确定写入数据WT_DAT的编程操作是否完成。当步骤S310的确定结果指示针对写入数据WT_DAT的编程操作未完成时,控制器130可返回到步骤S230,以对分配了第二空闲块FR_BLK2的开放块O_BLK执行编程操作。
图9示出参照图8描述的对多个开放块执行的编程操作方法的具体示例。
通过示例而非任何限制的方式,图9示出通过参照图7A和图7B描述的方法所生成的第一空闲块FR_BLK1被分配到图5A中示出的多个开放块,同时执行参照图8描述的编程操作方法。
在下文中,参照图5A、图7A、图7B、图8和图9,描述了对多个开放块执行编程操作的具体示例。
在多个开放块U_BLK、MAP_BLK、HIS_BLK和LOG_BLK之中,每个具有小于阈值TH的可编程页面PGM_P的第一开放块O_BLK1可以是用户开放块U_BLK和映射开放块MAP_BLK。因此,因为假定用户开放块U_BLK和映射开放块MAP_BLK是由稍后根据写入请求的编程操作而引起的封闭块C_BLK,所以在编程操作期间需要生成两个第二空闲块FR_BLK2。然而,如参照图7A和图7B所述,先前生成了一个第一空闲块FR_BLK1。因此,在编程操作期间,可仅生成一个第二空闲块FR_BLK2。
控制器130可与用户数据U_DAT一起从主机102接收写入请求WT_REQ。因此,控制器130可执行针对与写入请求WT_REQ相关联的写入数据WT_DAT的编程操作。针对写入数据WT_DAT的编程操作可包括对用户开放块U_BLK执行的针对用户数据U_DAT的编程操作,以及针对与用户数据U_DAT相关联的元数据M_DAT的编程操作。
可在针对用户数据U_DAT的编程操作之后顺序地执行针对元数据M_DAT的编程操作。针对元数据M_DAT的编程操作可包括针对与完全编程的用户数据U_DAT的位置信息相关联的映射数据MAP_DAT的编程操作、针对与完全编程的映射数据MAP_DAT的位置信息相关联的历史数据HIS_DAT的编程操作以及针对与完全编程的历史数据HIS_DAT的位置信息相关联的日志数据LOG_DAT的编程操作。
在STEP1中,控制器130可首先执行针对写入数据WT_DAT的编程操作之中的针对用户数据U_DAT的编程操作。用户开放块U_BLK中的可编程页面PGM_P的数量可对应于“四个页面”,并且用户数据U_DAT的编程单位PGM_UNIT可对应于“五个页面”。控制器130将对应于“五个页面”的用户数据U_DAT之中的“四个页面”的用户数据U_DAT编程到四个可编程页面PGM_P。因此,用户开放块U_BLK中的可编程页面PGM_P的数量可变为“0”,使得该用户开放块U_BLK变为封闭块C_BLK。此时,尚未执行针对“一个页面”的用户数据U_DAT的编程操作。
在STEP2中,控制器130可分配一个先前生成的第一空闲块FR_BLK1作为用户开放块U_BLK。第一空闲块FR_BLK1中的可编程页面PGM_P的数量可对应于“10个页面”。
控制器130可确定针对用户数据U_DAT的编程操作是否完成。因为在STEP1中尚未执行针对具有“一个页面”大小的用户数据U_DAT的编程操作,所以控制器130可确定针对用户数据U_DAT的编程操作未完成。
在STEP3中,控制器130可对作为用户开放块U_BLK分配的第一空闲块FR_BLK1执行针对具有“一个页面”大小的用户数据U_DAT的编程操作。
在STEP4中,控制器130可确定针对用户数据U_DAT的编程操作完成,并且将对写入请求的确认ACK传输到主机。
然后,控制器130可执行针对元数据M_DAT的编程操作。
在STEP5中,控制器130可首先执行针对元数据M_DAT的编程操作之中的针对映射数据MAP_DAT的编程操作。在映射开放块MAP_BLK中的可编程页面PGM_P的数量可对应于“一个页面”,并且映射数据MAP_DAT的编程单位PGM_UNIT可对应于“三个页面”。控制器130将对应于“三个页面”的映射数据MAP_DAT之中的“一个页面”的映射数据MAP_DAT编程到一个可编程页面PGM_P。因此,在映射开放块MAP_BLK中的可编程页面PGM_P的数量可变为“0”,使得映射开放块MAP_BLK变为封闭块C_BLK。此时,尚未执行针对“两个页面”的映射数据MAP_DAT的编程操作。
在STEP6中,控制器130可通过对一个第二擦除目标块ER_BLK2执行擦除操作来生成一个第二空闲块FR_BLK2。
在STEP6中,控制器130可分配所生成的第二空闲块FR_BLK2作为映射开放块MAP_BLK。第二空闲块FR_BLK2中的可编程页面PGM_P的数量可对应于“10个页面”。
控制器130可确定针对映射数据MAP_DAT的编程操作是否完成。因为在STEP5中尚未执行针对具有“两个页面”大小的映射数据MAP_DAT的编程操作,所以控制器130可确定针对映射数据MAP_DAT的编程操作未完成。
在STEP7中,控制器130可对作为映射开放块MAP_BLK分配的第二空闲块FR_BLK2执行针对具有“两个页面”大小的映射数据MAP_DAT的编程操作。
在STEP8中,控制器130可确定针对映射数据MAP_DAT的编程操作完成,然后执行针对历史数据HIS_DAT的编程操作。在STEP8中,控制器130将“两个页面”的历史数据HIS_DAT编程到“两个”可编程页面PGM_P。因此,历史开放块HIS_BLK中的可编程页面PGM_P的数量可变为“0”,使得该历史开放块HIS_BLK变为封闭块C_BLK。
在STEP9中,控制器130可确定针对历史数据HIS_DAT的编程操作完成,然后执行针对日志数据LOG_DAT的编程操作。如STEP9所示,控制器130将“一个页面”的日志数据LOG_DAT编程到“一个”可编程页面PGM_P。因此,日志开放块LOG_BLK中的可编程页面PGM_P的数量变为“0”,使得该日志开放块LOG_BLK变为封闭块C_BLK,并且针对日志数据LOG_DAT的编程操作完成。
通过STEP1至STEP9的操作,可完成根据来自主机的写入请求WT_REQ的编程操作。
当执行图9中的编程操作时,可不对与最大数量m个开放块相对应的m个擦除目标块,而是仅对至少一个擦除目标块或最大(m-1)个擦除目标块执行用于生成第二空闲块以执行编程操作的擦除操作,这可以防止编程操作时间具有最大值的情况(对m个擦除目标块执行擦除操作的情况)。此外,因为第一空闲块被分配为用户开放块,所以可减少用户数据U_DAT的编程操作时间(即,写入(WT)延迟)(STEP1至STEP4)。因此,可将对主机的写入请求的确认快速传输到主机。
因为对第一空闲块仅执行针对写入数据WT_DAT中的一些数据的编程操作,并且对从主机接收到写入请求之后生成的第二空闲块执行针对其他数据的编程操作,所以与对第一空闲块执行针对写入数据WT_DAT的所有编程操作时相比,可进一步增加已编程写入数据WT_DAT的可靠性。
虽然为了说明性目的已经描述各个实施例,但是对于本领域技术人员将显而易见的是,可以在不脱离所附权利要求中限定的本发明的精神和范围的情况下进行各种改变和修改。

Claims (25)

1.一种存储器系统的操作方法,包括:
当可编程区域的大小改变时,分别监测具有不同属性的多个数据所存储的多个开放块的每一个中的所述可编程区域;以及
基于所述多个开放块之中的第一开放块的数量,通过对多个擦除目标块的一部分执行第一擦除操作来生成第一空闲块,每个第一开放块的所述可编程区域的大小小于阈值。
2.根据权利要求1所述的操作方法,进一步包括:
根据从主机接收的写入请求,将具有不同属性的所述多个数据编程到所述多个开放块;以及
当所述多个开放块的至少一部分的状态通过对所述多个数据的编程改变为封闭块的状态时,通过将所述第一空闲块的状态改变为开放块的状态来确保所述多个开放块。
3.根据权利要求2所述的操作方法,进一步包括:
当不存在状态被改变为所述开放块的状态的第一空闲块时,通过对所述多个擦除目标块的另一部分执行第二擦除操作来生成第二空闲块;以及
通过将所述第二空闲块的状态改变为所述开放块的状态来确保所述多个开放块。
4.根据权利要求2所述的操作方法,其中所述多个数据包括通过来自所述主机的写入请求而被编程的用户数据和与所述用户数据相关联的元数据,其中所述用户数据被编程到所述多个开放块之中的用户开放块,并且所述元数据被编程到元开放块中。
5.根据权利要求1所述的操作方法,其中生成所述第一空闲块包括当所述第一开放块的数量大于或等于设定值时,生成一个或多个第一空闲块。
6.根据权利要求4所述的操作方法,其中确保所述多个开放块包括当所述第一空闲块的数量小于所述第一开放块的数量时,分配所述第一空闲块作为所述用户开放块。
7.根据权利要求6所述的操作方法,进一步包括:
将所述用户数据编程到所述用户开放块;
将对所述写入请求的确认传输到所述主机;以及
生成针对所编程的用户数据的元数据,并且将所述元数据编程到所述元开放块。
8.根据权利要求6所述的操作方法,其中确保所述多个开放块包括分配所述第一空闲块作为所述第一开放块之中用于存储以较大编程单位存储的数据的第一开放块。
9.根据权利要求6所述的操作方法,其中确保所述多个开放块包括分配所述第一空闲块作为用于存储所述元数据的所述元开放块,基于编程时段将对所述元数据执行编程操作。
10.根据权利要求1所述的操作方法,其中生成所述第一空闲块包括基于所述多个数据的编程单位来设置所述阈值,其中所述阈值具有大于0的值。
11.根据权利要求10所述的操作方法,其中生成所述第一空闲块包括将针对所述多个开放块的阈值不同地设置成等于所述各个开放块的编程单位或是比所述各个开放块的编程单位大N倍的值,其中N是大于或等于1的自然数。
12.根据权利要求10所述的操作方法,其中生成所述第一空闲块包括将针对所述多个开放块的阈值同等地设置成等于所述各个开放块的编程单位之中的最大编程单位或是比所述最大编程单位大N倍的值,其中N是大于或等于2的自然数。
13.一种存储器系统,包括:
存储器装置,包括多个擦除目标块和每个具有所存储的多个数据的多个开放块,所述多个数据具有不同的属性;以及
控制器,基于所述多个开放块之中的第一开放块的数量,通过在可编程区域的大小改变时对所述多个擦除目标块的一部分执行第一擦除操作来生成第一空闲块,每个第一开放块的可编程区域的大小小于阈值。
14.根据权利要求13所述的存储器系统,其中当所述多个开放块的至少一部分的状态改变为封闭块的状态,同时具有不同属性的所述多个数据根据从主机接收的写入请求而被编程到所述多个开放块时,所述控制器通过将所述第一空闲块的状态改变为开放块的状态来确保所述多个开放块。
15.根据权利要求14所述的存储器系统,其中当不存在状态被改变为所述开放块的状态的第一空闲块时,所述控制器通过对所述多个擦除目标块的另一部分执行第二擦除操作来生成第二空闲块,并且通过将所述第二空闲块的状态改变为所述开放块的状态来确保所述多个开放块。
16.根据权利要求14所述的存储器系统,其中所述多个数据包括通过来自所述主机的写入请求而被编程的用户数据和与所述用户数据相关联的元数据,其中所述用户数据被编程到所述多个开放块之中的用户开放块,并且所述元数据被编程到元开放块中。
17.根据权利要求13所述的存储器系统,其中当所述第一开放块的数量大于或等于设定值时,所述控制器生成一个或多个第一空闲块。
18.根据权利要求16所述的存储器系统,其中当所述第一空闲块的数量小于所述第一开放块的数量时,所述控制器分配所述第一空闲块作为所述用户开放块。
19.根据权利要求18所述的存储器系统,其中所述控制器将所述用户数据编程到所分配的用户开放块,将对所述写入请求的确认传输到所述主机,并且生成与所编程的用户数据相关联的元数据,并将所述元数据编程到所述元开放块。
20.根据权利要求18所述的存储器系统,其中所述控制器分配所述第一空闲块作为所述第一开放块之中用于存储以较大编程单位存储的数据的第一开放块。
21.根据权利要求18所述的存储器系统,其中所述控制器分配所述第一空闲块作为用于存储所述元数据的所述元开放块,基于编程时段将对所述元数据执行编程操作。
22.根据权利要求13所述的存储器系统,其中所述控制器基于所述多个数据的编程单位来设置所述阈值,其中所述阈值具有大于0的值。
23.根据权利要求22所述的存储器系统,其中所述控制器将针对所述多个开放块的阈值不同地设置成等于所述各个开放块的编程单位或是比所述各个开放块的编程单位大N倍的值,其中N是大于或等于1的自然数。
24.根据权利要求22所述的存储器系统,其中所述控制器将针对所述多个开放块的阈值同等地设置成等于所述各个开放块的编程单位之中的最大编程单位或是比所述最大编程单位大N倍的值,其中N是大于或等于2的自然数。
25.一种存储器系统,包括:
存储器装置,包括多个存储块;以及
控制器,联接到所述存储器装置,所述控制器:
检查每个存储块的空白空间;
确定所述多个存储块之中的两个或更多个目标块,每个目标块的空白空间小于阈值;以及
擦除所确定的目标块中的一个,以便为编程操作预分配开放块。
CN202010830067.3A 2019-12-27 2020-08-18 管理存储器系统中编程操作时间和写入延迟的设备和方法 Withdrawn CN113050879A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR1020190176690A KR20210083914A (ko) 2019-12-27 2019-12-27 메모리 시스템에서의 쓰기 레이턴시 관리 방법 및 장치
KR10-2019-0176690 2019-12-27

Publications (1)

Publication Number Publication Date
CN113050879A true CN113050879A (zh) 2021-06-29

Family

ID=76507878

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010830067.3A Withdrawn CN113050879A (zh) 2019-12-27 2020-08-18 管理存储器系统中编程操作时间和写入延迟的设备和方法

Country Status (3)

Country Link
US (1) US11348646B2 (zh)
KR (1) KR20210083914A (zh)
CN (1) CN113050879A (zh)

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8688894B2 (en) * 2009-09-03 2014-04-01 Pioneer Chip Technology Ltd. Page based management of flash storage
CN103309596B (zh) * 2012-03-13 2016-12-14 深圳市世纪光速信息技术有限公司 一种输入法键盘的调整方法及其移动终端
KR102050729B1 (ko) * 2013-02-12 2019-12-02 삼성전자 주식회사 메모리 시스템
US10055267B2 (en) * 2015-03-04 2018-08-21 Sandisk Technologies Llc Block management scheme to handle cluster failures in non-volatile memory
US10133490B2 (en) * 2015-10-30 2018-11-20 Sandisk Technologies Llc System and method for managing extended maintenance scheduling in a non-volatile memory
KR102609177B1 (ko) 2016-07-04 2023-12-06 삼성전자주식회사 불휘발성 메모리 시스템의 동작 방법 및 불휘발성 메모리 장치의 동작 방법
KR20180023190A (ko) * 2016-08-25 2018-03-07 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
US10649661B2 (en) * 2017-06-26 2020-05-12 Western Digital Technologies, Inc. Dynamically resizing logical storage blocks

Also Published As

Publication number Publication date
KR20210083914A (ko) 2021-07-07
US20210202008A1 (en) 2021-07-01
US11348646B2 (en) 2022-05-31

Similar Documents

Publication Publication Date Title
CN111290704B (zh) 用于控制储存在存储系统中的数据的装置和方法
US11150822B2 (en) Memory system for determining usage of a buffer based on I/O throughput and operation method thereof
CN110825659B (zh) 用于检查存储器系统中的块中的有效数据的设备和方法
CN112148632A (zh) 用于改善存储器系统的输入/输出吞吐量的设备和方法
US11526438B2 (en) Memory system capable of increasing storage efficiency and operation method thereof
CN113900586A (zh) 存储器系统及其操作方法
CN111581121B (zh) 用于管理存储器系统中的映射数据的方法和设备
CN110806984A (zh) 在存储器系统中搜索有效数据的设备和方法
US11281574B2 (en) Apparatus and method for processing different types of data in memory system
US11681633B2 (en) Apparatus and method for managing meta data in memory system
CN110781023A (zh) 用于在存储器系统中处理数据的设备和方法
CN111752474A (zh) 控制存储器系统的写入操作的设备和方法
CN112558860A (zh) 分布和读取数据的存储器系统及其操作方法
CN110806837A (zh) 数据处理系统及其操作方法
US11822426B2 (en) Memory system, data processing system and operation method of the same
CN111435334B (zh) 在存储器系统中检查有效数据的设备和方法
CN113010098A (zh) 用于提高存储器系统的输入/输出吞吐量的设备和方法
CN112988054A (zh) 存储器系统及其操作方法
US11200960B2 (en) Memory system, data processing system and operation method of the same
CN112445424A (zh) 提高存储器系统的输入/输出吞吐量的设备和方法
CN113687769A (zh) 用于提高数据处理系统中的操作效率的设备和方法
CN113050881A (zh) 提高存储器系统输入/输出吞吐量的设备和方法
CN113050882A (zh) 用于提高存储器系统的输入/输出吞吐量的设备和方法
CN111857818A (zh) 存储器系统和通过该存储器系统执行命令操作的方法
US11348646B2 (en) Apparatus and method for managing program operation time and write latency in memory system

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
WW01 Invention patent application withdrawn after publication

Application publication date: 20210629

WW01 Invention patent application withdrawn after publication