CN112199038A - 基于i/o吞吐量确定缓冲器使用的存储器系统及其操作方法 - Google Patents
基于i/o吞吐量确定缓冲器使用的存储器系统及其操作方法 Download PDFInfo
- Publication number
- CN112199038A CN112199038A CN202010257677.9A CN202010257677A CN112199038A CN 112199038 A CN112199038 A CN 112199038A CN 202010257677 A CN202010257677 A CN 202010257677A CN 112199038 A CN112199038 A CN 112199038A
- Authority
- CN
- China
- Prior art keywords
- memory
- data
- memory blocks
- input
- pieces
- 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
Links
Images
Classifications
-
- 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/0614—Improving the reliability of 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/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
- G06F3/0634—Configuration or reconfiguration of storage systems by changing the state or mode of one or more devices
-
- 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
- G06F3/0611—Improving I/O performance in relation to response time
-
- 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
- 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/0253—Garbage collection, i.e. reclamation of unreferenced 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/061—Improving I/O performance
- G06F3/0613—Improving I/O performance in relation to throughput
-
- 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/065—Replication mechanisms
-
- 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/0656—Data buffering 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/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
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1041—Resource optimization
- G06F2212/1044—Space efficiency improvement
-
- 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/7203—Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks
Abstract
本发明涉及一种存储器系统,该存储器系统包括:存储器装置,包括第一存储块和第二存储块,第一存储块中的每个包括存储一位数据的存储器单元,第二存储块中的每个包括存储多位数据的存储器单元。该存储器系统进一步包括控制器,被配置成估计由外部装置请求的操作的数据输入/输出速度,并且基于所估计的数据输入/输出速度,确定在第一存储块中临时存储的多条缓冲数据相对于多条输入数据的缓冲率。控制器使用缓冲率来确定将输入数据直接编程到第二存储块中,还是在将输入数据编程到第二存储块中之前将该输入数据缓冲在第一存储块中。
Description
相关申请的交叉引用
本专利申请要求于2019年7月8日提交的申请号为10-2019-0081957的韩国专利申请的优先权,该韩国专利申请的全部公开通过引用并入本文。
技术领域
本发明的实施例涉及一种存储器系统,并且更特别地,涉及一种基于输入/输出(I/O)吞吐量来控制在存储器系统中包括的组件的使用的方法和设备。
背景技术
近来,计算机环境范例已经转变成能够随时随地访问计算机系统的普适计算。诸如移动电话、数码相机、笔记本电脑等的便携式电子装置的使用增加。这些便携式电子装置通常使用或包括使用或嵌入至少一个存储器装置的存储器系统,即数据存储装置。数据存储装置可以用作便携式电子装置的主存储装置或辅助存储装置。
在计算装置中,因为不同于硬盘而没有机械驱动部分(例如,机械臂),所以使用非易失性半导体存储器装置的数据存储装置的优点在于具有优异的稳定性和耐用性,并且具有高数据访问速度和低功耗。这种数据存储装置的示例包括USB(通用串行总线)存储器装置、具有各种接口的存储卡以及固态驱动器(SSD)。
发明内容
本公开的实施例可以提供一种可以通过减少存储器系统的操作复杂度和性能劣化,来快速且可靠地将数据处理到存储器装置中,从而提高存储器装置的使用效率的存储器系统、数据处理系统以及操作进程或方法。
本公开的实施例可以提供一种在将存储器系统中的包括单层单元(SLC)的非易失性存储块用作临时存储数据的缓冲器的情况下,至少基于对应于主机请求的操作或对应于存储器系统的当前操作的数据输入/输出(I/O)速度(I/O吞吐量),确定是否使用缓冲器的设备或方法。
本公开的实施例可以提供一种将第一数据输入/输出(I/O)速率、第二数据I/O速率和第三数据I/O速率分别与对应于第一数据I/O速率至第三数据I/O速率中的每一个的阈值进行比较,以确定是否将数据存储在包括单层单元的存储块中的设备或方法。通过示例而非限制的方式,第一数据I/O速率可以基于通过与存储器系统交互的外部装置或计算装置所请求的编程操作而被完全编程在存储器系统中的数据的量来计算。第二数据I/O速率可以在将包括单层单元(SLC)的非易失性存储块用作临时存储一条数据的缓冲器的编程操作中进行估计。第三数据I/O速率可以在对包括单层单元(SLC)的非易失性存储块执行垃圾收集(GC)之后,将该非易失性存储块用作临时存储一条数据的缓冲器的编程操作中进行估计。
另外,本公开的实施例可以提供一种调整在编程操作期间擦除包括单层单元(SLC)的、用作缓冲器的非易失性存储块或对该非易失性存储块执行垃圾收集(GC)的时间点,以便在编程操作期间,在将存储器系统中的包括单层单元(SLC)的非易失性存储块用作临时存储数据的缓冲器的情况下,避免降低存储器系统的数据输入/输出速度的设备或方法。
在实施例中,一种存储器系统可以包括:存储器装置,该存储器装置包括:一个或多个第一存储块以及一个或多个第二存储块,一个或多个第一存储块中的每个包括存储一位数据的存储器单元;一个或多个第二存储块中的每个包括存储多位数据的存储器单元;以及控制器,被配置为根据外部装置的请求,估计由外部装置所请求的操作的数据输入/输出速度,并且基于所估计的数据输入/输出速度,确定在至少一个第一存储块中临时存储的多条缓冲数据相对于输入数据的缓冲率,以将多条输入数据编程在至少一个第二存储块中。
通过示例而非限制的方式,控制器可以被配置为:基于缓冲率将多条输入数据划分为两个组;对一个或多个第一存储块执行两个组中的第一组中的一条数据的第一编程操作;并且对一个或多个第二存储块执行两个组中的第二组中的另一条数据的第二编程操作。
控制器可以被配置为:当数据输入/输出速度快于第一阈值时,将一个或多个第一存储块用作临时存储缓冲数据的缓冲器;当数据输入/输出速度慢于第二阈值时,将多条输入数据编程到一个或多个第二存储块,而无需将多条输入数据临时存储在一个或多个第一存储块中;并且当数据输入/输出速度慢于或等于第一阈值并且快于或等于第二阈值时,对第一存储块中的至少一个执行垃圾收集,并且将第一存储块中的另一个用作缓冲器。第一阈值大于第二阈值。
可以对第一存储块之中的封闭存储块执行垃圾收集,并且将第一存储块之中的开放存储块用作缓冲器。
控制器可以被配置为:当数据输入/输出速度快于第一阈值时,将一个或多个第一存储块用作临时存储多条缓冲数据的缓冲器;当数据输入/输出速度慢于第二阈值时,对第一存储块中的至少一个执行垃圾收集,并且将第一存储块中的另一个用作缓冲器;以及当数据输入/输出速度慢于或等于第一阈值并且快于或等于第二阈值时,将输入数据编程到一个或多个第二存储块,而无需将输入数据临时存储在一个或多个第一存储块中。
控制器可以被配置为:接收从外部装置输入的实时时钟(RTC),以及根据在基于实时时钟建立的两个时间之间输入或输出的数据的量来确定数据输入/输出速度。
控制器可以被配置为:检查第一存储块的使用是否等于或大于第四阈值,并且响应于第一存储块的使用等于或大于第四阈值,将在一个或多个第一存储块中临时存储的多条缓冲数据复制到一个或多个第二存储块中。
控制器可以被配置为:当存储器装置处于空闲状态时,将在一个或多个第一存储块中临时存储的多条缓冲数据复制到一个或多个第二存储块中。
一个或多个第二存储块可包括至少一个双层单元、至少一个三层单元或至少一个四层单元。
一个或多个第一存储块的存储器单元具有与一个或多个第二存储块的存储器单元相同的结构,并且控制器可以被配置为将各个一位数据存储在一个或多个第一存储块的存储器单元中,并且将各个多位数据存储在一个或多个第二存储块的存储器单元中。
在另一实施例中,一种操作存储器系统的方法,该存储器系统包括存储器装置,该存储器装置包括:一个或多个第一存储块以及一个或多个第二存储块,一个或多个第一存储块中的每个包括存储一位数据的存储器单元;一个或多个第二存储块中的每个包括存储多位数据的存储器单元,该方法可以包括:接收从外部装置传送的多条输入数据;估计由外部装置请求的操作的数据输入/输出速度;基于估计的数据输入/输出速度,确定在一个或多个第一存储块中临时存储的多条缓冲数据相对于多条输入数据的缓冲率;并且基于缓冲率来确定是将多条输入数据编程到一个或多个第一存储块中还是编程到一个或多个第二存储块中。
该方法可以进一步包括:基于缓冲率将多条输入数据划分成两组。
该方法可以进一步包括:当数据输入/输出速度快于第一阈值时,将一个或多个第一存储块用作临时存储缓冲数据的缓冲器;当数据输入/输出速度慢于第二阈值时,将多条输入数据编程到一个或多个第二存储块,而无需将输入数据临时存储在一个或多个第一存储块中;并且当数据输入/输出速度慢于或等于第一阈值并且快于或等于第二阈值时,对一个或多个第一存储块中的至少一个执行垃圾收集,并且将一个或多个第一存储块中的另一个用作缓冲器。
可以对第一存储块之中的封闭存储块执行垃圾收集,并且将第一存储块之中的开放存储块用作缓冲器。
该方法可以进一步包括:当数据输入/输出速度快于第一阈值时,将一个或多个第一存储块用作临时存储多条缓冲数据的缓冲器;当数据输入/输出速度慢于第二阈值时,对一个或多个第一存储块中的至少一个执行垃圾收集,并且将一个或多个第一存储块中的另一个用作缓冲器;以及当数据输入/输出速度慢于或等于第一阈值且快于或等于第二阈值时,将输入数据编程到一个或多个第二存储块,而无需将输入数据临时存储在一个或多个第一存储块中。
估计数据输入/输出速度的步骤可以包括:接收从外部装置输入的实时时钟(RTC);以及根据在基于实时时钟建立的两个时间之间的输入或输出的数据的量来确定数据输入/输出速度。
该方法可以进一步包括:检查第一存储块的使用是否等于或大于第四阈值;并且响应于第一存储块的使用等于或大于第四阈值,将在一个或多个第一存储块中的至少一个中临时存储的多条缓冲数据复制到一个或多个第二存储块中。
该方法可以进一步包括:当存储器装置处于空闲状态时,将在一个或多个第一存储块中临时存储的多条缓冲数据复制到一个或多个第二存储块中。
通过示例而非限制的方式,一个或多个第一存储块的存储器单元和一个或多个第二存储块的存储器单元具有相同的结构。
附图说明
参照附图进行本文的描述,其中相同的附图标记在若干视图中指代相同的部件,并且其中:
图1示出根据本公开的实施例的存储器系统;
图2示出根据本公开的实施例的包括存储器系统的数据处理系统;
图3示出根据本公开的实施例的存储器系统中的控制器;
图4示出根据本公开的实施例的存储器系统中包括的存储器装置的示例;
图5示出根据本公开的实施例的SLC缓冲的第一示例;
图6示出根据本公开的实施例的SLC缓冲的第二示例;
图7示出根据本公开的实施例的用于操作存储器系统的第一进程;
图8示出根据本公开的实施例的用于估计数据输入/输出(I/O)速度的进程;
图9示出根据本公开的实施例的确定SLC缓冲的第一进程;
图10示出根据本公开的实施例的确定SLC缓冲的第二进程;以及
图11示出根据本公开的实施例的用于操作存储器系统的第二进程。
具体实施方式
以下参照附图更详细地描述本公开的各个示例。然而,可以以不同的方式实施本发明的方面和特征以形成包括任何所公开实施例的变型的其他实施例。因此,本发明不应被解释为限于本文所阐述的实施例。相反,提供这些实施例使得本公开将是彻底且完整的,并且将向本发明所属领域的技术人员完全传达本公开。在整个公开中,相同的附图标记在整个本公开的各个附图和示例中指代相同的部件。注意的是,对“实施例”、“另一实施例”等的参考不一定仅指一个实施例,并且对任何这种短语的不同参考不一定针对相同的实施例。
将理解的是,虽然术语“第一”、“第二”、“第三”等可在本文使用以识别各个元件,但是这些元件不受这些术语限制。这些术语用于将一个元件与另外具有相同或相似名称的另一元件区分开。因此,在不脱离本发明的精神和范围的情况下,在一个实例中的第一元件可以在另一实例中被称为第二或第三元件。
附图不一定按比例绘制,并且在某些情况下为了清楚地说明实施例的特征,比例可能被夸大。当元件被称为连接或联接到另一元件时,应当理解的是前者可直接连接或联接到后者,或者经由其间的一个或多个中间元件电连接或联接到后者。另外,还将理解的是,当元件被称为在两个元件“之间”时,两个元件之间可以仅有一个元件或也可存在一个或多个中间元件。
本文使用的术语仅是为了描述特定实施例的目的,并不旨在限制本发明。如本文使用的,除非上下文另有清楚地说明,否则单数形式也旨在包括复数形式,反之亦然。
将进一步理解的是,当在本说明书中使用术语“包括”、“包括有”、“包含”和“包含有”时,这些术语说明所陈述元件的存在,并不排除一个或多个其它元件的存在或添加。如本文所使用的,术语“和/或”包括一个或多个相关所列项目的任意和全部组合。
除非另有定义,否则本文所使用的包括技术术语和科学术语的所有术语具有与本发明所属领域中普通技术人员鉴于本公开而通常理解的含义相同的含义。将进一步理解的是,诸如在常用词典中限定的那些术语的术语应被理解为具有与它们在本公开的上下文和相关领域中的含义一致的含义并且将不以理想化或过于正式的意义来解释,除非本文如此明确地定义。
在以下描述中,为了提供本发明的彻底理解,阐述了许多具体细节。本发明可在没有一些或全部这些具体细节的情况下被实施。在其它情况下,为了避免不必要地模糊本发明,未详细地描述公知的进程结构和/或进程。
还注意的是,在一些情况下,如对于相关领域的技术人员显而易见的是,除非另有明确说明,否则结合一个实施例所描述的特征或元件可单独使用或与另一实施例的其它特征或元件组合使用。
下面参照附图详细描述本公开的实施例,其中相同的附图标记指代相同的元件。
图1示出根据本公开的实施例的存储器系统110。在包括存储器系统110的计算装置、移动装置等中,主机102(图2中所示)可以与存储器系统110可操作地联接以用于数据输入/输出(I/O)操作。
参照图1,存储器系统110可以包括控制器130和存储器装置150。控制器130可以输出由主机102请求的并且从存储器装置150传递的数据,或者将从主机102传送的数据存储到存储器装置150。控制器130和存储器装置150可以通过多个数据路径联接。例如,存储器装置150可以包括多个存储器管芯。多个存储器管芯中的每个可以包括多个存储块。每个存储块可以包括多个非易失性存储器单元,多个非易失性存储器单元中的每个能够存储数据。此处,存储器装置150的内部结构和/或配置可以基于存储器装置150的规格或所需性能而不同。规格或所需性能可以根据使用存储器系统110的目的、主机102的请求或这两者而改变。
存储器装置150可以包括非易失性存储器单元。即使电源关闭或不供电,非易失性存储器单元也可以存储数据。此外,在诸如闪速存储器的实施例中,在对非易失性存储器单元编程一条数据之后,在不删除(即,擦除)先前编程数据的情况下,该非易失性存储器单元可能不会容易地被另一条数据重写。对一条数据进行编程的操作可以以页面为单位执行。页面可以是存储器装置150中的通过读取操作而被一起读取、通过编程操作而被一起写入或者两者的存储器单元组。可以基于存储块来执行擦除一条数据的操作。存储块可以是存储器装置150中的、通过擦除操作而被一起擦除的存储器单元组。在实施例中,存储块可以包括多个页面。
存储器装置150可以包括包含单层单元(SLC)的第一存储块40_1和包含多层单元(MLC)的第二存储块40_2。此处,单层单元(SLC)是一种单独存储一位数据的存储器单元。多层单元(MLC)是一种单独存储多位数据的存储器单元。例如,多层单元(MLC)可以包括存储两位数据的双层单元(DLC)、存储三位数据的三层单元(TLC)或存储四位数据的四层单元(QLC)中的至少一个。
单层单元(SLC)和多层单元(MLC)可以以不同的操作速度操作,并且可以具有不同的可在单个单元中存储的数据的量(例如,位的数量)。例如,从单层单元(SLC)读取和写入一条数据所需的时间可能短于多层单元(MLC)的可比较时间。此外,单层单元(SLC)可能比多层单元(MLC)具有更长的寿命(例如,更长的耐用性)。虽然多层单元(MLC)可能运行缓慢且使用寿命短,但是因为每单位区域(例如,在相同区域中),多层单元(MLC)中可存储的数据量比单层单元(SLC)中可存储的数据量大,所以多层单元(MLC)可以用于高度集成的计算装置、电子装置、数据处理系统等。
根据实施例,即使当存储器装置150包括每存储器单元可以存储多位数据的单一类型的存储器单元(即,所有存储器单元具有相同的结构)时,控制器130也可以将一位数据存储在存储器装置150中包括的一些存储器单元中,而将多位数据存储在存储器装置150中包括的其它存储器单元中。例如,在存储器装置150中包括的存储器单元可以具有可以存储多位数据的相同结构。然而,控制器130可以将一位数据编程在一些可存储多位数据的存储器单元中,并且将多位数据编程在其它存储器单元中。
即使当两个单元的结构相同时,在多层单元(MLC)中进行读取和编程操作也可能比在单层单元(SLC)中进行读取和编程操作慢。因此,当对存储器系统中的多层单元(MLC)执行读取或编程操作时,存储器系统110的数据输入/输出(I/O)速度(例如,I/O吞吐量)可能降低。为了解决该问题,存储器装置150中的、包括单层单元SLC的第一存储块40_1可以用作临时存储一条数据的缓冲器,并且包括多层单元MLC的第二存储块40_2可以被认为是该条数据待被最终编程到的目的地。例如,当外部装置或计算装置(例如,图2和图3中所示的主机102)将编程请求与一条数据一起发送到存储器系统110时,存储器系统110可以将该条数据编程在存储器装置150中。当将由存储器系统110接收的该条数据编程在包括多层单元(MLC)的第二存储块40_2中时,编程操作所需的时间可能比对第一存储块40_1中进行编程操作所需的时间长,从而可能难以提供主机102所需的数据输入/输出(I/O)速度(例如,I/O吞吐量)。因此,存储器系统110可以试图将从主机102输入的该条数据临时存储在包括单层单元SLC的第一存储块40_1中,以便减少完成编程操作所需的时间,从而可以提高存储器系统110的数据输入/输出(I/O)速度(例如,I/O吞吐量)。当由于主机102没有请求任何操作,因此存储器系统110处于空闲状态时,控制器130可以将第一存储块40_1中临时存储的该条数据传送到第二存储块40_2中。这些操作可以被描述为SLC缓冲。
SLC缓冲操作可以将包括单层单元SLC的第一存储块40_1用作临时存储一条输入数据(例如,与编程请求一起输入的一条数据)的缓冲器,该单层单元SLC具有读取和写入所存储的一条数据的相对较高的操作速度。然而,在第一存储块40_1中包括的单层单元(SLC)是一种非易失性存储器单元,并且可能不像在易失性存储器中包括的存储器单元那样支持重写。因此,为了将第一存储块40_1用作临时存储一条数据的缓冲器,控制器130应当将在第一存储块40_1中临时存储的一条数据移动到第二存储块40_2中并且对没有有效数据的第一存储块40_1执行垃圾收集(GC),以确保用作缓冲器的空闲存储块。
为了将从外部装置传送的一条数据临时存储在包括单层单元(SLC)的第一存储块40_1中,在第一存储块40_1中应当确保足够的空间以用于临时存储输入数据。当第一存储块40_1中的空间不足够时,可以对第一存储块40_1执行垃圾收集(GC),以确保有足够的空间用于临时存储输入数据。当为了对从外部装置传送的输入数据进行编程而对第一存储块40_1执行垃圾收集(GC)时,垃圾收集可以被认为是开销。如果存储器系统110在第一存储块40_1中已经具有足够的空间,则可以避免或减少由于第一存储块40_1的垃圾收集GC而引起的开销。在实施例中,第一存储块40_1可以包括多个存储块。然而,当存储器系统110的第一存储块40_1中包括的存储块的数量增加时,存储器系统110的成本可能增加(例如,每存储位的成本可能增加)。因为如果存储器系统110包括用于缓冲器的大量存储块时,这些块不被视为是存储器系统110的存储容量的一部分,所以存储器系统110的效率可能降低。因此,控制器130可以控制存储器系统110中包括的第一存储块40_1的垃圾收集GC,以便不间断地将第一存储块40_1用作临时存储输入数据的缓冲器,同时避免或减少相关的开销。
存储器系统110中的控制器130可以基于外部装置或主机102所需的数据输入/输出(I/O)速度(I/O吞吐量),和/或关于在存储器系统110和外部装置之间的诸如数据传送的数据输入/输出操作的当前状态,确定是否对输入数据执行SLC缓冲操作。参照图1,控制器130可以包括输入/输出(I/O)控制电路198、输入/输出(I/O)速度检查电路194和缓冲电路196。
如本公开中所使用的,术语“电路”可以指代以下中的全部:(a)纯硬件电路实施方案(诸如仅在模拟和/或数字电路中的实施方案),以及(b)电路和软件(和/或固件)的组合,诸如(如果适用的话):(i)处理器的组合或(ii)(包括一起工作以使诸如移动电话或服务器的设备执行各种功能的数字信号处理器、软件和存储器的)处理器/软件的一部分,以及(c)需要软件或固件(即使软件或固件不是物理地存在)来进行操作的电路,诸如微处理器或微处理器的一部分。“电路”的这种定义适用于该术语在本申请中的所有应用,包括在任何权利要求中的应用。作为另一示例,如在本申请中使用的,术语“电路”还将涵盖仅处理器(或多个处理器)或处理器的一部分及处理器(或多个处理器)附带的软件和/或固件的实施方案。例如并且如果适用的话,术语“电路”还将涵盖特定要求保护的元件、用于存储装置的集成电路。
输入/输出(I/O)控制电路198可以响应于外部装置的请求,将从外部装置传递的一条数据存储在存储器装置150中或输出存储器装置150中存储的一条数据。例如,为了执行读取操作,I/O控制电路198可以响应于从外部装置传送的请求来执行地址转换。I/O控制电路198可以响应于从外部装置传送的读取请求来请求在存储器装置150中的特定位置中存储的一条数据,然后存储器装置150可以将该条数据输出到I/O控制电路198。此外,响应于从外部装置传送的写入请求,I/O控制电路198可以将一条数据编程在存储器装置150中的特定位置处。
输入/输出(I/O)速度检查电路194可以检测或识别从外部装置传送的数据的量和时钟速度。例如,存储器系统110可以接收从外部装置传送的实时时钟信号(RTC)。当I/O速度检查电路194使用在外部装置和存储器系统110之间交换的时钟信号(诸如用于同步传送数据的时钟)时,可能难以确定用于确定数据输入/输出速度的准确时间或时段。因此,I/O速度检查电路194可以从外部装置接收指示实际时间的实时时钟信号(RTC)(图1中未示出),并且使用实时时钟信号RTC来确定存储器系统110的数据输入/输出速度。实时时钟信号RTC可以被周期性地传输到I/O速度检查电路194。通过示例而非限制的方式,可以至少基于在外部装置和存储器系统110之间建立的值来确定实时时钟信号RTC的时段。当传送到存储器系统110的实时时钟信号(RTC)的时段被建立时,I/O速度检查电路194可以检查在实时时钟信号RTC的跃迁之间,从外部装置传递的数据的量。I/O速度检查电路194可以基于在实时时钟信号RTC的跃迁之间或在实时时钟信号RTC的时段期间传递的数据的量来确定数据输入/输出速度(例如,I/O吞吐量)。
基于由I/O速度检查电路194确定的数据输入/输出速度,缓冲电路196可以确定关于从外部装置传递的输入数据(或编程数据)的缓冲率。此处,缓冲率可以指示作为从外部装置传递的全部输入数据的部分的、在第一存储块40_1中临时存储的数据的量。例如,假设从外部装置输入的100条数据待存储在存储器系统110中。此处,100条数据可能全部具有相同的大小。参考数据输入/输出速度(例如,I/O吞吐量),该数据输入/输出速度指示每参考时间/时段由存储器系统110接收的数据的量,存储器系统110可以将全部100条数据临时存储在第一存储块40_1中,或者可以将全部100条数据存储在第二存储块40_2中,而无需将任何一条数据缓冲在第一存储块40_1中。另外,根据本公开的实施例,存储器系统110可以至少基于数据输入/输出速度(例如,I/O吞吐量),将30、50或70条数据临时存储在第一存储块40_1中,并且将剩余数据存储在第二存储块40_2中,而无需将任何剩余数据缓冲在第一存储块40_1中。
在任意给定时段中,从外部装置或主机102输入的数据的量越大,可能需要存储器系统110越快地存储输入数据的量。另一方面,当从外部装置输入的数据的量较小时,针对将输入数据的量编程在存储器装置150中,存储器系统110可能具有较大的操作裕度。当存储器系统110需要较快地存储一条数据时,在第一存储块40_1中存储的数据的量可能增加。
缓冲电路196可以响应于存储器系统110的数据输入/输出速度(例如,I/O吞吐量)来确定缓冲率。根据实施例,缓冲电路196可不确定哪条数据被编程在第一存储块40_1或第二存储块40_2中。在缓冲电路196确定缓冲率之后,I/O控制电路198可以根据缓冲率来将输入数据(即,待被编程的数据)分类为多个组。例如,可以将输入数据随机地划分或顺序地划分为两组。此后,I/O控制电路198可以将第一组输入数据存储在第一存储块40_1中,并且将第二组输入数据存储在第二存储块40_2中。
根据实施例,输入/输出(I/O)控制电路198可以将输入数据划分为多个组,使得通过控制器130与存储器装置150之间的多个通道发生交错操作。例如,在存储器装置150中包括的多个存储器管芯可以通过不同的通道或通路与控制器130的I/O控制电路198联接。此处,每个管芯可以包括至少一个第一存储块40_1和至少一个第二存储块40_2。此外,将一条数据编程在第一存储块40_1中所需的时间与将一条数据编程在第二存储块40_2中所需的时间可以不同。因此,I/O控制电路198可以基于存储器装置150中包括的每个管芯的操作裕度,将多条输入数据相关联,并且将相关联的多条输入数据并行地传递到包括第一存储块40_1和/或第二存储块40_2的多个管芯中。
在图2中,根据本公开的实施例的数据处理系统100可以包括与存储器系统110接合或可操作地联接的主机102。
例如,主机102可以包括诸如移动电话、MP3播放器和膝上型计算机的各种便携式电子装置中的任意一种或者诸如台式电脑、游戏机、电视(TV)和投影仪等的非便携式电子装置。
主机102还包括至少一个操作系统(OS),其通常可以管理和控制在主机102中执行的功能和操作。OS可以提供与存储器系统110接合的主机102与存储器系统110的用户之间的互操作性。OS可以支持与用户的请求相对应的功能和操作。通过示例而非限制的方式,根据主机102的移动性,OS可以包括通用操作系统或移动操作系统。根据系统要求或用户环境,通用操作系统可以是个人操作系统或企业操作系统。包括Windows和Chrome的个人操作系统可能支持一般用途的服务。企业操作系统可以专门用于确保和支持高性能,并且可以包括Windows Server、Linux、Unix等。移动操作系统可以包括Android、iOS、Windowsmobile等。移动操作系统可以支持用于移动性的服务或功能(例如,省电功能)。主机102可以包括多个操作系统。主机102可以根据用户的请求而执行与存储器系统110互锁的多个操作系统。主机102可以将与用户的请求相对应的多个命令传送到存储器系统110,从而在存储器系统110内执行与命令相对应的操作。下面参照图4和图5描述处置存储器系统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中并且在存储器装置150中检索数据。
控制器130和存储器装置150可以集成到单个半导体装置中,其中该单个半导体装置可以被包括在如上所述的各种类型的存储器系统的任何一个中。
通过示例而非限制的方式,控制器130和存储器装置150可以集成到单个半导体装置中。控制器130和存储器装置150可以集成以形成用于提高操作速度的SSD。当存储器系统110用作SSD时,与主机102和硬盘连接的情况相比,连接到存储器系统110的主机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还可以包括多个存储器管芯,多个存储器管芯中的每个包括多个平面,多个平面中的每个包括多个存储块152、154、156之中的存储块。另外,存储器装置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)、小型计算机系统接口(SCSI)、增强型小型磁盘接口(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-Chaudhri-Hocquenghem,BCH)码、turbo码、里德-所罗门(Reed-Solomon,RS)码、卷积码、递归系统码(RSC)、网格编码调制(TCM)、分组编码调制(BCM)等。ECC单元138可以包括基于上述代码中的至少一种来执行错误校正操作的全部或一些电路、模块、系统或装置。
PMU 140可以管理在控制器130中提供的电力。例如,PMU 140可以检测通电事件和断电事件。
存储器接口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)或两者来实施。虽然图1例示了设置在控制器130内的存储器144,但是本发明不限于该布置。也就是说,存储器144可以位于控制器130内部或外部。例如,存储器144可以通过具有存储器接口的外部易失性存储器来实施,该存储器接口在存储器144和控制器130之间传送数据和/或信号。
存储器144可以存储执行诸如主机102所请求的数据写入和数据读取的操作所必需的数据和/或针对诸如如上所述的垃圾收集和损耗均衡等的后台操作而在存储器装置150与控制器130之间传递的数据。根据实施例,为了支持存储器系统110中的操作,存储器144可以包括程序存储器、数据存储器、写入缓冲器/高速缓存、读取缓冲器/高速缓存、数据缓冲器/高速缓存、映射缓冲器/高速缓存等。
处理器134可以利用微处理器或中央处理单元(CPU)来实施。存储器系统110可以包括一个或多个处理器134。处理器134可以控制存储器系统110的全部操作。通过示例而非限制的方式,处理器134可以响应于从主机102输入的写入请求或读取请求来控制存储器装置150的编程操作或读取操作。根据实施例,处理器134可以使用或运行固件来控制存储器系统110的全部操作。此处,固件可以被称为闪存转换层(FTL)。FTL可以用作主机102和存储器装置150之间的接口。主机102可以通过FTL将写入操作和读取操作的请求传送到存储器装置150。
FTL可以管理地址映射、垃圾收集、损耗均衡等操作。特别地,FTL可以加载、生成、更新或存储映射数据。因此,控制器130可以使用映射数据,将从主机102输入的逻辑地址转换为存储器装置150的物理地址。可以在对存储器系统110的读取操作或写入操作中的每个中执行该地址转换操作。而且,通过基于映射数据的地址转换操作,当控制器130试图更新在特定页面中存储的数据时,控制器130可以将更新数据编程在另一空白页面上,并且可以使在特定页面中存储的旧数据无效(例如,将映射数据中的、与关于更新数据的逻辑地址相对应的物理地址,从特定页面更新到新编程页面),以适应闪速存储器装置的特性。此外,控制器130可以将新数据的映射数据存储到FTL中。
例如,当对存储器装置150执行由主机102请求的操作时,控制器130可以使用被实施为微处理器或中央处理单元(CPU)等的处理器134。与存储器装置150接合的处理器134可以生成和/或运行与从主机102输入的命令相对应的指令或命令。控制器130可以执行前台操作作为与从主机102输入的命令相对应的命令操作,诸如对应于写入命令的编程操作、对应于读取命令的读取操作、对应于擦除/丢弃命令的擦除/丢弃操作、以及对应于具有设置命令的设置参数命令或设置特征命令的参数设置操作。
再例如,控制器130可以通过处理器134对存储器装置150执行后台操作。通过示例而非限制的方式,针对存储器装置150的后台操作可以包括将存储器装置150中的存储块152、154、156之中的存储块中的数据复制并存储到另一存储块的操作(例如,垃圾收集(GC)操作)。后台操作可以包括将在存储器装置150中的存储块152、154、156中的至少一个存储块中存储的数据移动或交换到存储块152、154、156中的至少另一个存储块中的操作(例如,损耗均衡(WL)操作)。在后台操作期间,控制器130可以使用处理器134将在控制器130中存储的映射数据存储到存储块152、154、156中的至少一个(例如,映射清除(flush)操作)。检查多个存储块152、154、156之中的坏块的坏块管理操作是可以由处理器134执行的后台操作的另一示例。
在存储器系统110中,控制器130执行与从主机102接收的多个命令相对应的多个命令操作。例如,当顺序地、随机地或可选地执行对应于多个编程命令的多个编程操作,对应于多个读取命令的多个读取操作以及对应于多个擦除命令的多个擦除操作时,控制器130可以确定用于将控制器130连接到存储器150中的哪个存储器管芯的哪个或哪些通道或通路对于执行每个操作是适当的或合适的。控制器130可以通过针对执行每个操作而确定的通道或通路,来发送或传送数据或指令。在每个操作完成之后,多个存储器管芯可以分别通过相同的通道或通路来传送操作结果。然后,控制器130可以将响应或确认信号传送到主机102。在实施例中,控制器130可以检查每个通道或每个通路的状态。响应于从主机102接收的命令,控制器130可以基于每个通道或每个通路的状态来选择至少一个通道或通路,使得可以通过被选择的通道或通路来传递指令和/或操作结果以及数据。
通过示例而非限制的方式,控制器130可以识别关于与存储器装置150中的存储器管芯相关联的通道(或通路)的状态。控制器130可以将每个通道或每个通路确定为处于忙碌状态、就绪状态、激活状态、空闲状态、正常状态或异常状态。控制器对通过哪个通道或通路来传递指令(和/或数据)的确定可以基于确定将指令(和/或数据)传递到哪个管芯的物理块地址。控制器130可以参考从存储器装置150传递的描述符。描述符可以包括描述关于存储器装置150的信息项的块参数或页面参数,这些参数可以具有设定格式或结构。例如,描述符可以包括装置描述符、配置描述符、单元描述符等。控制器130可以参考或使用描述符来确定利用哪个通道或通路来交换指令或数据。
管理单元(未示出)可以包括在处理器134中。管理单元可以对存储器装置150执行坏块管理。管理单元可以找到不满足进一步使用条件的坏存储块,并且对坏存储块执行坏块管理。当存储器装置150是闪速存储器,例如NAND闪速存储器时,由于NAND逻辑功能的特性,在写入操作期间,例如在编程操作期间可能发生编程失败。在坏块管理期间,编程失败的存储块或坏存储块的数据可以被编程到新的存储块中。坏块可能使具有3D堆叠结构的存储器装置150的利用效率和存储器系统110的可靠性严重恶化。因此,可靠的坏块管理可以提高或改善存储器系统110的性能。
参照图3,详细描述根据本公开的另一实施例的存储器系统中的控制器130。控制器130与主机102和存储器装置150协作。控制器130可以包括主机接口132、闪存转换层(FTL)单元240、存储器接口142和存储器144。
虽然在图3中未示出,但是根据实施例,图2中描述的ECC单元138可以包括在闪存转换层(FTL)单元240中。在另一实施例中,ECC单元138可以被实施为包括在控制器130中或与控制器130相关联的单独模块、电路、固件等。
主机接口132用于处置从主机102传送的命令、数据等。通过示例而非限制的方式,主机接口132可以包括命令队列56、缓冲器管理器52和事件队列54。命令队列56可以顺序地存储从主机102传送的命令、数据等,并且以存储顺序将命令、数据等输出到缓冲器管理器52。缓冲器管理器52可以对从命令队列56传递的命令、数据等进行分类、管理或调整。事件队列54可以顺序地传送用于处理从缓冲器管理器52传送的命令、数据等的事件。
具有相同特性的多个命令或数据可以从主机102被连续地传送到存储器系统110,或者具有不同特性的命令或数据可以在混合或混杂之后被传送到存储器系统110。例如,用于读取数据的多个命令(读取命令)可以被传递到存储器系统110,或者用于读取数据的命令(读取命令)和用于编程/写入数据的命令(写入命令)可以被交替地传送到存储器系统110。主机接口132可以将从主机102传送的命令、数据等顺序地存储到命令队列56。此后,主机接口132可以根据从主机102传送的命令、数据等的特性来估计或预测控制器130将执行何种类型的内部操作。主机接口132可以至少基于命令、数据等的特性,来确定它们的处理顺序和优先级。根据从主机102传送的命令、数据等的特性,主机接口132中的缓冲器管理器52被配置成确定缓冲器管理器是否应该将命令、数据等存储在存储器144中,或者缓冲器管理器是否应该将命令、数据等传递到闪存转换层(FTL)单元240中。事件队列54接收待由存储器系统110或控制器130响应于从主机102传输的命令、数据等而内部地运行并处理的、从缓冲器管理器52输入的事件,从而以接收的顺序将事件传递到闪存转换层(FTL)单元240中。
根据实施例,闪存转换层(FTL)单元240可以包括主机请求管理器(HRM)46、映射管理器(MM)44、状态管理器42和块管理器48。主机请求管理器(HRM)46可以管理从事件队列54输入的事件。映射管理器(MM)44可以处置或控制映射数据。状态管理器42可以执行垃圾收集或损耗均衡。块管理器48可以运行与存储器装置150中的块有关的命令或指令。
通过示例而非限制的方式,主机请求管理器(HRM)46可以使用映射管理器(MM)44和块管理器48,来处置或处理根据读取和编程命令的请求,以及从主机接口132传递的事件。主机请求管理器(HRM)46可以将查询请求发送到映射管理器(MM)44以确定与事件一起输入的逻辑地址相对应的物理地址。主机请求管理器(HRM)46可以将读取请求和物理地址一起发送到存储器接口142,以处理读取请求(处置事件)。另一方面,主机请求管理器(HRM)46可以将编程请求(写入请求)发送到块管理器48,以将输入数据编程到存储器装置150中的空白页面(没有数据),然后可以将与编程请求相对应的映射更新请求传送到映射管理器(MM)44,以对在将逻辑地址和物理地址彼此映射的信息中的、与编程数据有关的项目进行更新。
此处,块管理器48可以将从主机请求管理器(HRM)46、映射数据管理器(MM)44和/或状态管理器42传递的编程请求转换为用于存储器装置150的闪存编程请求,以管理存储器装置150中的闪存块。为了最大化或提高存储器系统110(参见图2)的编程或写入性能,块管理器48可以收集编程请求并且将用于多平面和单触发编程操作的闪存编程请求发送到存储器接口142。块管理器48可以将若干个闪存编程请求发送到存储器接口142以提高或最大化多通道和多方向闪速控制器的并行处理。
另一方面,块管理器48可以被配置成根据有效页面的数量来管理存储器装置150中的块,当需要空闲块时选择并擦除没有有效页面的块,并且当确定需要垃圾收集时选择包括最少数量的有效页面的块。状态管理器42可以执行垃圾收集以将有效数据移动到空块,并且擦除被移动有效数据的块中的剩余数据,使得块管理器48可以具有足够的空闲块(没有数据的空块)。如果块管理器48将关于待擦除的块的信息提供到状态管理器42,则状态管理器42可以检查待擦除的块中的所有闪存页面以确定每个页面是否有效。例如,为了确定每个页面的有效性,状态管理器42可以识别在每个页面的带外(OOB)区域中记录的逻辑地址。为了确定每个页面是否有效,状态管理器42可以将页面的物理地址与映射到从请求获得的逻辑地址的物理地址进行比较。状态管理器42针对每个有效页面将编程请求发送到块管理器48。当编程操作完成时,可以通过映射管理器44的更新来更新映射表。
映射管理器44可以管理逻辑-物理映射表。映射管理器44可以处理由主机请求管理器(HRM)46或状态管理器42生成的诸如查询、更新等的请求。映射管理器44可以将整个映射表存储在存储器装置150(例如,闪存/非易失性存储器)中,并且根据存储器144的存储容量来高速缓存映射条目。当在处理查询或更新请求时发生映射高速缓存未命中时,映射管理器44可将读取请求发送到存储器接口142以加载存储器装置150中存储的相关映射表。当映射管理器44中的脏高速缓存块的数量超过特定阈值时,可以将编程请求发送到块管理器48,使得形成干净高速缓存块,并且可以将脏映射表存储在存储器装置150中。
另一方面,当执行垃圾收集时,状态管理器42将有效页面复制到空闲块中,并且主机请求管理器(HRM)46可以针对相同逻辑地址的页面编程最新版本的数据,并且即时地发布更新请求。当状态管理器42在有效页面的复制尚未完成的状态下请求映射更新时,映射管理器44可以不执行映射表更新。这是因为如果状态管理器42请求更新映射并且稍后才完成有效页面复制时,则发布的是具有旧物理信息的映射请求。映射管理器44只有最新映射表仍然指向旧物理地址,才可以执行映射更新操作以确保准确性。
根据实施例,状态管理器42、映射管理器44或块管理器48中的至少一个可以包括操作信息确认电路。此外,在另一实施例中,图1所示的I/O控制电路198可以包括状态管理器42、映射管理器44、块管理器48或存储器接口142中的至少一个。
存储器装置150可以包括多个存储块。根据这些块的一个存储器单元中可以存储或表达的位的数量,多个存储块可以是不同类型的存储块,诸如单层单元(SLC)存储块或多层单元(MLC)存储块。此处,SLC存储块包括由每个存储一位数据的存储器单元实施的多个页面。SLC存储块可以具有高数据I/O操作性能和高耐用性。MLC存储块包括由每个存储多位数据(例如,两位或更多位)的存储器单元实施的多个页面。与SLC存储块相比,针对相同的空间,MLC存储块可以具有更大的存储容量。在存储容量方面,MLC存储块可以高度集成。在实施例中,存储器装置150可以利用诸如双层单元存储块、三层单元(TLC)存储块、四层单元(QLC)存储块及其组合的MLC存储块来实施。双层存储块可以包括由每个能够存储两位数据的存储器单元实施的多个页面。三层单元(TLC)存储块可以包括由每个能够存储三位数据的存储器单元实施的多个页面。四层单元(QLC)存储块可以包括由每个能够存储四位数据的存储器单元实施的多个页面。在另一实施例中,存储器装置150可以利用包括由每个能够存储五位或更多位数据的存储器单元实施的多个页面的块来实施。
在本公开的实施例中,存储器装置150被实施为诸如闪速存储器的非易失性存储器,闪速存储器诸如NAND闪速存储器、NOR闪速存储器等。在另一实施例中,存储器装置150可以由以下中的至少一个来实施:相变随机存取存储器(PCRAM)、铁电随机存取存储器(FRAM)、自旋注入磁性存储器和自旋转移力矩磁性随机存取存储器(STT-MRAM)等。
图4示出根据本公开的实施例的存储器装置的示例。
参照图4,非易失性存储器管芯250可以包括第一区域252和第二区域254。第一区域252包括多个第一存储块40_1,多个第一存储块40_1中的每个包括一个或多个单层单元(SLC)。第二区域254可以包括多个第二存储块40_2,多个第二存储块40_2中的每个包括一个或多个多层单元(MLC)。包括第一区域252和第二区域254的非易失性存储器管芯250可以包括在参照图1至图3描述的存储器装置150中。
在实施例中,控制器130(参见图1至图3)和存储器装置150(参见图1至图3)可以通过多个通道连接。存储器装置150可以包括多个非易失性存储器管芯250。每个非易失性存储器管芯250可以通过不同通道或不同通路与控制器130中包括的输入/输出(I/O)控制电路198联接。
分别包括在非易失性存储器管芯250的第一区域252和第二区域254中的第一存储块40_1和第二存储块40_2中包括的存储器单元可以存储具有不同大小的一条数据。然而,根据实施例,第一存储块40_1和第二存储块40_2中包括的存储器单元可以具有相同物理结构或特性。例如,当第一区域252和第二区域254中包括的第一存储块40_1和第二存储块40_2可以具有基本相同的结构时,第一存储块40_1中包括的存储器单元可以像第二存储块40_2一样能够存储多位数据,但是控制器130有意地使用第一存储块40_1仅存储一位数据,而不存储多位数据。
根据实施例,当第一区域252和第二区域254中包括的第一存储块40_1和第二存储块40_2可以具有相同结构时,图1至图3中所示的存储器系统110可以动态地确定哪个存储块属于第一区域252以及哪个存储块属于第二区域254。例如,在存储器管芯250中,第一区域252中包括的存储块的数量和第二区域254中包括的存储块的数量可以根据存储器系统110的操作环境而改变。另外,可以至少基于非易失性存储器管芯250中包括的存储块的操作状态(例如,健康状态、磨损程度等)来确定每个存储块可以用作第一存储块40_1还是第二存储块40_2。
图5示出根据本公开实施例的SLC缓冲的第一示例。具体地,关于通过图1所示的控制器130中包括的输入/输出(I/O)控制电路198而划分或分类出的、待临时存储在包括单层单元(SLC)的第一存储块40_1中的一条数据,描述了存储器系统110的内部程序。
参照图5,存储器装置150可以包括两个非易失性存储器管芯250和两个数据寄存器260。存储器装置150中包括的非易失性存储器管芯的数量和数据寄存器的数量可以根据存储器装置150或存储器系统110的目的、用途、性能、设计等而改变。
数据寄存器260可以布置在存储器装置150中以与非易失性存储器管芯250相对应。根据实施例,数据寄存器260可以设置在非易失性存储器管芯250的外部或内部。
写入请求可以从控制器130中的输入/输出(I/O)控制电路198传送到存储器装置150。I/O控制电路198可以将输入数据划分为多个组。多个组中的一个包括待临时存储在第一存储块40_1中的一条数据。此处,该条数据可以通过数据寄存器260而临时存储在第一区域252中的第一存储块40_1中(S1)。之后,当存储器系统110处于空闲状态时,在第一存储块40_1中临时存储的该条数据可以被传送到第二区域254中包括的第二存储块40_2(S2)。
在实施例中,当非易失性存储器管芯250处于空闲状态时,在第一存储块40_1中临时存储的多条数据可以被传送到第二存储块40_2。例如,当没有从控制器130接收到请求时,没有请求可以被从控制器130传递到非易失性存储器管芯250中。可以控制非易失性存储器管芯250以将在第一存储块40_1中存储的多条数据顺序地传送或移动到第二存储块40_2中,然后向控制器130通知关于该多条数据的改变后的物理位置。基于来自非易失性存储器管芯250的通知,控制器130可以更新对应于该多条数据的映射信息,以完成从第一存储块40_1到第二存储块40_2的数据迁移。
在图5中,关于与被分类为临时存储在第一存储块40_1中的多条数据不同的、被分类为存储在第二存储块40_2中的其他条数据,该其他条数据可以被从数据寄存器260传送到第二存储块40_2。
根据实施例,数据寄存器260可以分为两部分:用于临时存储待存储在第一存储块40_1中的一条数据的第一空间;以及用于临时存储待存储在第二存储块40_2中的另一条数据的第二空间。因为对应于第一存储块40_1的页面的数据的大小与对应于第二存储块40_2的页面的数据的大小不同,所以在第一空间中存储的一条数据的大小可以与在第二空间中存储的一条数据的大小不同。例如,在第一空间中存储的一条数据的大小对应于包括每个存储一位数据的多个存储器单元的页面。可以以页面为单位将该条数据编程到第一存储块40_1。此外,在第二空间中存储的另一条数据的大小对应于包括每个存储多位数据的多个存储器单元的页面。也可以以页面为单位将在第二空间中存储的另一条数据编程到第二存储块40_2。
图6示出根据本公开的实施例的控制SLC缓冲的进程600的第二示例。存储器系统110(参见图1至图3)中的控制器130可以基于缓冲率将输入数据(即,待编程的数据)临时存储在第一存储块40_1(参见图1和图4至图5)中。
参照图6,用于操作存储器系统110的进程600可以包括:检查SLC块的使用是否达到阈值(S1022);检查存储器系统是否处于空闲状态(S1024);以及将在SLC块中临时存储的数据传送到包括多层单元的另一存储块中(S1026)。此处,SLC块可以包括第一存储块40_1,该第一存储块40_1包括图1和图4至图5中所示的单层单元。包括多层单元的另一存储块可以包括图1和图4至图5中所示的第二存储块40_2。
当存储器装置150(参见图1至图3和图5)中包括的第一存储块40_1之中的、能够存储新数据的存储块的数量足够时,控制器130可以不必需执行垃圾收集(GC)来确保空闲存储块,因此控制器130可以不必需立即将在第一存储块40_1中临时存储的数据传递到第二存储块40_2。然而,当确定第一存储块40_1之中的、待被用作临时存储新数据的缓冲器的空闲存储块的数量不足够时,控制器130可以将在第一存储块40_1中临时存储的数据传递到第二存储块40_2,并且擦除在第一存储块40_1中存储的数据,以确保空闲存储块。
例如,假定存储器装置150中包括的20个存储块被分配作为第一存储块40_1。如果阈值是15,则在第一存储块40_1中至少五个空闲存储块可以可用于将输入数据临时存储在存储器装置150内。当输入数据被临时存储在被分配为第一存储块40_1的第16存储块中(在步骤S1022中为“是”)时,识别到第一存储块40_1包括少于五个空闲存储块。此时,控制器130或存储器装置150可以试图将在第一存储块40_1中存储的至少一些数据传递到第二存储块40_2中(S1026),以确保至少五个空闲存储块。不同的实施例可以不同地确定将哪些数据传递到第二存储块40_2中。例如,在第一存储块40_1之中的最旧封闭状态存储块中临时存储的数据可以被首先传递到第二存储块40_2,其中封闭状态存储块是自上次擦除存储块以后全部页面都已被编程,使得在没有擦除操作的情况下,可能无法新编程一条数据的存储块。在另一示例中,在将第一存储块40_1之中的每个存储块的各自有效页面计数(VPC)彼此比较之后,在第一存储块40_1之中的、具有最低有效页面数量(VPC)的存储块中临时存储的数据可以被首先传递到第二存储块中。另一方面,在当第一存储块40_1之中存在剩余10个空闲存储块用于临时存储输入数据的情况下,控制器130可不必需立即试图将在第一存储块40_1中临时存储的任何数据传递到第二存储块40_2中。
关于第一存储块40_1之中是否存在足够的空闲存储块的标准可以根据阈值而变化。根据实施例,阈值可以是固定的或基于存储器系统110的操作环境而动态地确定。例如,存储器系统110或控制器130可以基于外部装置所需的数据输入/输出速度(例如,I/O吞吐量)或数据输入/输出性能(例如,带宽)来确定阈值。当输入到存储器系统110的数据的量较大时,因为使用第一存储块40_1的SLC缓冲可以提高数据输入/输出速度(例如,I/O吞吐量)或数据输入/输出性能(例如,带宽),所以第一存储块40_1中的较多空闲存储块可以确保临时存储数据。当控制器130可以调整阈值时,可以基于存储器系统110的操作环境来确定对第一存储块40_1执行垃圾收集的时间。
同时,即使当第一存储块40_1之中的空闲存储块的数量足够(在步骤S1022中为“否”)时,也可以确定存储器系统110是否处于空闲状态(S1024)。当存储器系统110处于空闲状态时,在第一存储块40_1中临时存储的数据可以被传递到第二存储块40_2中。在空闲状态下,即使第一存储块40_1的使用没有达到阈值,也可以将在第一存储块40_1中存储的至少一些数据预先传递到第二存储块40_2中。当可以预先执行数据迁移和/或垃圾收集时,可以减少当存储大量数据时或当需要较高的数据输入/输出速度时产生开销的可能性。
图7示出根据本公开的实施例的用于操作存储器系统的进程700的第一示例。
用于操作存储器系统110(参见图1至图3)的进程700可以包括接收从外部装置或计算装置输入的写入请求(S1002)。外部装置或计算装置可以包括图2至图3中所示的主机102。
从外部装置或计算装置接收的写入请求可以包括一条数据和对应于该条数据的逻辑地址。逻辑地址可以包括根据由外部装置或计算装置使用的地址方案确定的、用于指示该条数据的值。此外,存储器系统110可以使用可与外部装置或计算装置所使用的地址方案区分的并且不同的另一地址方案。根据存储器系统使用的地址方案的值可以被称为物理地址。存储器系统110(参见图1至3)中的控制器130可以将逻辑地址与物理地址相关联,从而执行从逻辑地址到物理地址的地址转换,反之亦然。
根据实施例,用于操作存储器系统110的方法可以包括:至少基于存储器系统110的数据输入/输出速度(例如,I/O吞吐量)来确定是否使用SLC缓冲方案(S1004)。存储器系统110中的控制器130可以识别在预设参考时间段(例如,实时时钟的时段)中从外部装置与一个或多个写入请求一起传递的数据的量,并且由此控制器130可以确定外部装置所需的数据输入/输出速度(例如,I/O吞吐量)。
通过示例而非限制的方式,当数据输入/输出速度(例如,I/O吞吐量)大于第一参考值(CASE1)时,控制器130可以将一条输入数据编程在SLC缓冲器中(S1006)。控制器130可以将所有输入数据(即,待编程的数据)临时存储在SLC缓冲器中。在这种情况下,SLC缓冲器的消耗(SLC缓冲器的使用)可能会迅速增加。如未示出的,控制器130可以基于数据输入/输出速度(例如,I/O吞吐量)来确定缓冲率。控制器130可以根据缓冲率,将至少一些输入数据临时存储在SLC缓冲器(例如,图1和图4至图5所示的第一存储块40_1)中。可以将剩余输入数据存储在MLC块(例如,图1和图4至图5中所示的第二存储块40_2)中,而无需被首先缓冲在SLC缓冲器中。
当存储器系统110的数据输入/输出速度(例如,I/O吞吐量)小于第二参考值(CASE2)时,控制器130可以不使用SLC缓冲器来缓冲输入数据,而是可以将输入数据存储在MLC块(例如,第二存储块40_2)中(S1010)。此处,第二参考值可以小于第一参考值。例如,当在实时时钟的时段期间,输入数据的量不大时,存储器系统110可以具有足够的裕度以将输入数据存储在存储器装置150(参见图1至图3)内的包括多层单元的存储块中,其中“足够的裕度”是指在允许的时间内完成必要操作的足够能力。在这种情况下,因为在SLC缓冲器中临时存储的输入数据将必须稍后被传递到包括多层单元(MLC)的另一存储块,所以使用SLC缓冲器来临时存储输入数据以减少编程操作所花费的时间将降低存储器系统110的操作效率。因此,如果存储器系统110所需的数据输入/输出速度(例如,I/O吞吐量)小于第二参考值(CASE2),则控制器130可以将输入数据编程在MLC存储块中而无需将输入数据临时存储在SLC缓冲器中,从而可以避免从SLC缓冲器到MLC存储块的后续数据迁移。
当存储器系统110的数据输入/输出速度(例如,I/O吞吐量)小于第一参考值并且大于第二参考值(CASE3)时,控制器130可以对SLC缓冲器中的封闭存储块执行垃圾收集,并且将至少一些输入数据编程到SLC缓冲器中的开放存储块中(S1008)。此处,开放存储块是包括至少一个空白页面的存储块,其中空白页面用于编程一条数据。例如,当存储器系统110的数据输入/输出速度(例如,I/O吞吐量)大于第二参考值时,用于将一条数据编程在MLC缓冲器中的操作裕度可能不足够,因此该条数据被临时存储在SLC缓冲器中。另一方面,用于将该条数据编程在SLC缓冲器中的操作裕度可能足够,使得可以对SLC缓冲器执行垃圾收集。如果当存储器系统110的数据输入/输出速度(例如,I/O吞吐量)大于第一参考值时对SLC缓冲器执行垃圾收集,则SLC缓冲器中的空闲存储块可以被确保用于后续编程操作。当空闲存储块的数量的增加时,很有可能可以减少后续操作的开销。
图8示出根据本公开的实施例的用于估计数据输入/输出速度的方法。
参照图8,存储器系统110(参见图1至图3)可以周期性地识别从主机102(参见图2至图3)输入的实时时钟RTC1、RTC2、RTC3的第一、第二和第三跃迁,其中图8中的箭头表示每个周期或时段的开始和结束。而且,存储器系统110可以接收从主机102输入的、待编程的数据P_DATA。
存储器系统可以识别在实时时钟的第一时段期间(例如,在实时时钟RTC1的第一跃迁与实时时钟RTC2的第二跃迁之间),从主机输入的、待编程的数据的量。例如,在实时时钟RTC1的第一跃迁和实时时钟RTC2的第二跃迁之间,两条编程数据P_DATA(即,待被编程到存储器系统中的数据)被从主机传递到存储器系统。在实时时钟RTC2的第二跃迁和实时时钟RTC3的第三跃迁之间,四条编程数据P_DATA被从主机传递到存储器系统。当假设每条编程数据的大小相同时,在实时时钟RTC2的第二跃迁和实时时钟RTC3的第三跃迁之间传递的编程数据的量是在实时时钟RTC1的第一跃迁和实时时钟RTC2的第二跃迁之间传递的编程数据的量的两倍。
由于存储器系统可以以相同的频率来识别实时时钟RTC1、RTC2、RTC3的跃迁(即,实时时钟的每个跃迁与实时时钟的后续跃迁之间的时段相同),因此存储器系统在实时时钟RTC2的第二跃迁和实时时钟RTC3的第三跃迁之间所需的第二数据输入/输出速度I/O_TH#2大于存储器系统在实时时钟RTC1的第一跃迁和实时时钟RTC2的第二跃迁之间的所需的第一数据输入/输出速度I/O_TH#1。因为第二数据输入/输出速度I/O_TH#2大于第一数据输入/输出速度I/O_TH#1,所以控制器130可以识别出主机102所需的存储器系统110的数据输入/输出性能(例如,I/O吞吐量)随着时间而增加。因此,存储器系统110(参见图1至图3)中的控制器130可以增加缓冲率。控制器130可以增加从主机102输入的并且临时存储在包括单层单元(SLC)的第一存储块40_1(参见图1或图4至图5)中的编程数据P_DATA的量,因此存储器系统可以能够满足主机所需的数据输入/输出速度。
虽然未示出,但是主机102所需的存储器系统110的数据输入/输出速度也可能随着时间而降低。当主机102所需的数据输入/输出速度变低时,存储器系统110可以通过减小缓冲率而作出响应。
同时,根据存储器系统110的内部配置或用于操作存储器系统110的方法,执行读取操作、编程操作、擦除操作或垃圾收集(GC)操作所需的时间可能不同。因此,针对读取操作、编程操作、擦除操作或垃圾收集(GC)操作,存储器系统110中的控制器130可以具有不同的操作裕度。存储器系统110中的控制器130可以至少基于主机102所需的数据输入/输出速度来确定是否使用缓冲器以及动态地设置缓冲率。
图9示出根据本公开的实施例的用于确定是否使用SLC缓冲方案的进程的第一示例。具体地,关于存储器系统110(参见图1至图3)的内部操作,将一条数据存储(例如,编程)在包括单层单元(SLC)的第一存储块(例如,图1或图4至图5所示的40_1)中所需的第一时间(SLC PROGRAM TIME)可能短于对第一存储块执行垃圾收集所需的第二时间(SLC GCTIME)。第二时间(SLC GC TIME)可以短于将一条数据存储在包括三层单元(TLC)的第二存储块(例如,图1或图4至图5所示的40_2)中所需的第三时间(TLC PROGRAM TIME)。
参照图9,控制器130(见图1至图3)可以基于主机102(见图2至3)或外部装置所需的数据输入/输出速度(例如,I/O吞吐量)所处于的范围,来确定执行何种操作或处理。关于对输入的数据进行编程的操作,可以在存储器系统110中不同地执行操作或处理。在示例中,第一阈值TH#1大于第二阈值TH#2。根据实施例,控制器130可以根据由第一阈值TH#1和第二阈值TH#2确定的范围,确定是执行SLC缓冲、带有垃圾收集的SLC缓冲还是无需SLC缓冲(即,停用SLC缓冲)的MLC编程。例如,当主机102或外部装置所需的数据输入/输出速度(例如,I/O吞吐量)大于第一阈值TH#1(图9中的“TH#1>”)时,控制器130被配置成将输入数据临时存储在包括单层单元(SLC)的第一存储块40_1中,使得可以减少对输入数据进行编程所花费的时间。另一方面,当主机102或外部装置所需的数据输入/输出速度(例如,I/O吞吐量)小于第二阈值TH#2(图9中的“<TH#2”)时,控制器130可不必需使用包括单层单元(SLC)的第一存储块40_1,而是可以将输入数据存储在包括多层单元(MLC),例如三层单元(TLC)的第二存储块40_2中,而无需将输入数据临时存储在第一存储块40_1中。当主机102或外部装置所需的数据输入/输出速度(例如,I/O吞吐量)落在第一阈值TH#1和第二阈值TH#2之间的范围内(图9中的“TH#1~TH#2”)时,控制器130可以对包括单层单元SLC的第一存储块40_1执行垃圾收集(GC),并且将输入数据临时存储在第一存储块40_1中。
图10示出根据本公开的实施例的基于操作条件确定是否使用SLC缓冲方案的进程的第二示例。具体地,关于存储器系统110的内部操作(参见图1至图3),将一条数据存储在包括单层单元(SLC)的第一存储块(例如,图1或图4至5中所示的40_1)中所需的第一时间(SLC PROGRAM TIME)可以短于将一条数据存储在包括三层单元(TLC)的第二存储块(例如,图1或图4至图5所示的40_2)中的第三时间(TLC PROGRAM TIME)。第三时间(TLC PROGRAMTIME)可短于执行第一存储块的垃圾收集所需的第二时间(SLC GC TIME)。
参照图10,控制器130(参见图1至图3)可以基于主机102(参见图2至图3)或外部装置所需的数据输入/输出速度(例如,I/O吞吐量)的范围来确定执行何种操作或进程。关于对输入数据进行编程的操作,可以在存储器系统110中不同地执行操作或进程。在示例中,第一阈值TH#1大于第二阈值TH#2。根据实施例,控制器130可以根据由第一阈值TH#1和第二阈值TH#2确定的范围,来确定是执行SLC缓冲、无需SLC缓冲(即,停用SLC缓冲)的MLC编程、还是带有垃圾收集的SLC缓冲。例如,当主机102或外部装置所需的数据输入/输出速度(例如,I/O吞吐量)大于第一阈值TH#1(图10中的“TH#1>”)时,控制器130被配置为将输入数据临时存储在包括单层单元(SLC)的第一存储块40_1中,使得可以减少对输入数据进行编程所花费的时间。另一方面,当主机102或外部装置所需的数据输入/输出速度(例如,I/O吞吐量)小于第二阈值TH#2(图10中的“<TH#2”)时,控制器130可以对包括单层单元SLC的第一存储块40_1执行垃圾收集(GC),并且将输入数据临时存储在第一存储块40_1中。当主机102或外部装置所需的数据输入/输出速度(例如,I/O吞吐量)落在第一阈值TH#1和第二阈值TH#2之间的范围内(图10中的“TH#1~TH#2”)时,控制器130可以将输入数据存储在包括多层单元(MLC),例如三层单元(TLC)的第二存储块40_2中,而无需将输入数据临时存储在第一存储块40_1中。
参照图9和图10,存储器系统110的操作特性,诸如不同的内部操作所花费或所需的时间可能基于存储器系统110的内部配置和操作存储器系统110的方法而不同。根据本公开的实施例,用于处置输入数据的方法(即,如何将输入数据编程在非易失性存储器装置150中)可以根据存储器系统110的操作特性和主机102或外部装置所需的数据输入/输出速度(例如,I/O吞吐量)而改变。
图11示出根据本公开的实施例的操作存储器系统的进程1100的第二示例。
操作存储器系统的进程1100可以包括:从外部装置或计算装置接收写入请求(S1012);基于存储器系统的数据输入/输出速度,确定关于待编程的输入数据的SLC缓冲率(S1014),并且基于SLC缓冲率对输入数据进行分类以用于执行编程操作(S1016)。此处,外部装置或计算装置可以包括图2至图3中所示的主机102。SLC缓冲率可以指示将与写入请求一起输入的多少条数据临时存储在SLC缓冲器中。例如,SLC缓冲率可以指示在由存储器系统110(参见图1至图3)接收的所有待编程的输入数据之中,临时存储在包括单层单元(SLC)的第一存储块40_1中的数据的比率。
存储器系统110可以基于由主机102或外部装置所需的数据输入/输出速度(例如,I/O吞吐量)的确定,来确定关于输入数据的SLC缓冲率。主机102或外部装置所需的数据输入/输出速度(例如,I/O吞吐量)可以根据存储器系统110的用途、性能、内部设计或操作条件而不同或改变。存储器系统110可以周期性地检查或确定数据输入/输出速度。基于数据输入/输出速度,存储器系统110可以确定是否执行关于输入数据的SLC缓冲,可以调整待临时存储在SLC缓冲器中的输入数据的量以及在无需SLC缓冲的情况下,待存储在MLC块中的输入数据的量,或两者。因此,存储器系统110可以减少SLC缓冲器的使用(或者避免快速增加SLC缓冲器的使用)。另外,可以减少对SLC缓冲器执行垃圾收集操作的频率或次数。因此,可以减少在编程操作期间可能产生的开销。
根据本公开的实施例,存储器系统、数据处理系统、其操作方法以及用于控制在存储器系统或数据处理系统内执行的操作的方法可以当在存储器系统中对一条数据进行编程时自适应地使用包括单层单元(SLC)的非易失性存储器装置,使得可以改善或提高数据输入/输出(I/O)速度。
另外,本公开的实施例可以调整存储器系统中的用作临时存储一条数据的缓冲器的非易失性存储块的垃圾收集的时间,以减少在编程操作中可能产生的开销,从而可以提高存储器系统的数据输入/输出(I/O)性能。
虽然已经针对具体实施例说明并描述了本发明,但是根据本公开,对于本领域技术人员显而易见的是,在不脱离如所附权利要求中限定的本发明的精神和范围的情况下,可以进行各种改变和修改。
Claims (20)
1.一种存储器系统,包括:
存储器装置,包括一个或多个第一存储块和一个或多个第二存储块,所述一个或多个第一存储块中的每个包括存储一位数据的存储器单元,所述一个或多个第二存储块中的每个包括存储多位数据的存储器单元;以及
控制器,根据外部装置的请求,估计由所述外部装置请求的操作的数据输入/输出速度,并且基于所估计的数据输入/输出速度,确定在至少一个第一存储块中临时存储的多条缓冲数据相对于多条输入数据的缓冲率,以将所述多条输入数据编程在至少一个第二存储块中。
2.根据权利要求1所述的存储器系统,其中所述控制器:
基于所述缓冲率将所述多条输入数据划分成两个组;
对所述一个或多个第一存储块执行所述两个组中的第一组中的一条数据的第一编程操作;并且
对所述一个或多个第二存储块执行所述两个组中的第二组中的另一条数据的第二编程操作。
3.根据权利要求1所述的存储器系统,其中所述控制器:
当所述数据输入/输出速度快于第一阈值时,将所述一个或多个第一存储块用作临时存储所述多条缓冲数据的缓冲器;
当所述数据输入/输出速度慢于第二阈值时,将所述多条输入数据编程到所述一个或多个第二存储块,而无需将所述多条输入数据临时存储在所述一个或多个第一存储块中;并且
当所述数据输入/输出速度慢于或等于所述第一阈值并且快于或等于所述第二阈值时,对所述一个或多个第一存储块中的至少一个执行垃圾收集,并且将所述一个或多个第一存储块中的另一个用作所述缓冲器。
4.根据权利要求3所述的存储器系统,其中所述第一阈值大于所述第二阈值。
5.根据权利要求3所述的存储器系统,其中对所述一个或多个第一存储块之中的封闭存储块执行所述垃圾收集,并且将所述一个或多个第一存储块之中的开放存储块用作所述缓冲器。
6.根据权利要求1所述的存储器系统,其中所述控制器:
当所述数据输入/输出速度快于第一阈值时,将所述一个或多个第一存储块用作用于临时存储所述多条缓冲数据的缓冲器;
当所述数据输入/输出速度慢于第二阈值时,对所述一个或多个第一存储块中的至少一个执行垃圾收集,并且将所述一个或多个第一存储块中的另一个用作所述缓冲器;并且
当所述数据输入/输出速度慢于或等于所述第一阈值并且快于或等于所述第二阈值时,将所述多条输入数据编程到所述一个或多个第二存储块,而无需将所述多条输入数据临时存储在所述一个或多个第一存储块中。
7.根据权利要求1所述的存储器系统,其中所述控制器:
接收从所述外部装置输入的实时时钟,即RTC,并且
根据在基于所述实时时钟建立的两个时间之间输入或输出的数据的量来确定所述数据输入/输出速度。
8.根据权利要求1所述的存储器系统,其中所述控制器:
检查所述一个或多个第一存储块的使用是否等于或大于第四阈值;以及
响应于所述一个或多个第一存储块的使用等于或大于所述第四阈值,将在所述一个或多个第一存储块中临时存储的所述多条缓冲数据复制到所述一个或多个第二存储块中。
9.根据权利要求1所述的存储器系统,其中当所述存储器装置处于空闲状态时,所述控制器将在所述一个或多个第一存储块中临时存储的所述多条缓冲数据复制到所述一个或多个第二存储块中。
10.根据权利要求1所述的存储器系统,其中所述一个或多个第二存储块包括至少一个双层单元、至少一个三层单元或至少一个四层单元。
11.根据权利要求1所述的存储器系统,其中所述一个或多个第一存储块中的存储器单元具有与所述一个或多个第二存储块中的存储器单元相同的结构,并且所述控制器将各个一位数据存储在所述一个或多个第一存储块的存储器单元中,并且将各个多位数据存储在所述一个或多个第二存储块的存储器单元中。
12.一种操作存储器系统的方法,所述存储器系统包括存储器装置,所述存储器装置包括一个或多个第一存储块和一个或多个第二存储块,所述一个或多个第一存储块中的每个包括存储一位数据的存储器单元,所述一个或多个第二存储块中的每个包括存储多位数据的存储器单元,所述方法包括:
接收从外部装置传送的多条输入数据;
估计由所述外部装置请求的操作的数据输入/输出速度;
基于所估计的数据输入/输出速度,确定在所述一个或多个第一存储块中临时存储的多条缓冲数据相对于多条输入数据的缓冲率;以及
基于所述缓冲率来确定将所述多条输入数据编程到所述一个或多个第一存储块中还是编程到所述一个或多个第二存储块中。
13.根据权利要求12所述的方法,进一步包括:
基于所述缓冲率将所述多条输入数据划分成两个组。
14.根据权利要求12所述的方法,进一步包括:
当所述数据输入/输出速度快于第一阈值时,将所述一个或多个第一存储块用作临时存储所述多条缓冲数据的缓冲器;
当所述数据输入/输出速度慢于第二阈值时,将所述多条输入数据编程到所述一个或多个第二存储块,而无需将所述多条输入数据临时存储在所述一个或多个第一存储块中;以及
当所述数据输入/输出速度慢于或等于所述第一阈值并且快于或等于所述第二阈值时,对所述一个或多个第一存储块中的至少一个执行垃圾收集,并且将所述一个或多个第一存储块中的另一个用作所述缓冲器。
15.根据权利要求14所述的方法,其中对所述一个或多个第一存储块之中的封闭存储块执行所述垃圾收集,并且将所述一个或多个第一存储块之中的开放存储块用作所述缓冲器。
16.根据权利要求12所述的方法,进一步包括:
当所述数据输入/输出速度快于第一阈值时,将所述一个或多个第一存储块用作临时存储所述多条缓冲数据的缓冲器;
当所述数据输入/输出速度慢于第二阈值时,对所述一个或多个第一存储块中的至少一个执行垃圾收集,并且将所述一个或多个第一存储块中的另一个用作所述缓冲器;以及
当所述数据输入/输出速度慢于或等于所述第一阈值并且快于或等于所述第二阈值时,将所述多条输入数据编程到所述一个或多个第二存储块,而无需将所述多条输入数据临时存储在所述一个或多个第一存储块中。
17.根据权利要求12所述的方法,其中估计所述数据输入/输出速度包括:
接收从所述外部装置输入的实时时钟,即RTC,以及
根据在基于所述实时时钟建立的两个时间之间输入或输出的数据的量来确定所述数据输入/输出速度。
18.根据权利要求12所述的方法,进一步包括:
检查所述一个或多个第一存储块的使用是否等于或大于第四阈值;以及
响应于所述一个或多个第一存储块的使用等于或大于所述第四阈值,将在所述一个或多个第一存储块中的至少一个中临时存储的所述多条缓冲数据复制到所述一个或多个第二存储块中。
19.根据权利要求12所述的方法,进一步包括:
当所述存储器装置处于空闲状态时,将在所述一个或多个第一存储块中临时存储的所述多条缓冲数据复制到所述一个或多个第二存储块中。
20.根据权利要求12所述的方法,其中所述一个或多个第一存储块中的存储器单元和所述一个或多个第二存储块中的存储器单元具有相同的结构。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020190081957A KR20210006102A (ko) | 2019-07-08 | 2019-07-08 | 데이터 입출력 속도에 따라 버퍼의 사용을 결정할 수 있는 메모리 시스템 및 그의 동작 방법 |
KR10-2019-0081957 | 2019-07-08 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112199038A true CN112199038A (zh) | 2021-01-08 |
Family
ID=74004841
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010257677.9A Withdrawn CN112199038A (zh) | 2019-07-08 | 2020-04-03 | 基于i/o吞吐量确定缓冲器使用的存储器系统及其操作方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11150822B2 (zh) |
KR (1) | KR20210006102A (zh) |
CN (1) | CN112199038A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114115737A (zh) * | 2021-11-23 | 2022-03-01 | 合肥兆芯电子有限公司 | 数据存储分配方法、存储器存储装置及控制电路单元 |
CN114153398A (zh) * | 2021-12-07 | 2022-03-08 | 深圳忆联信息系统有限公司 | 固态硬盘性能优化方法、装置、计算机设备及存储介质 |
US20220269616A1 (en) * | 2021-02-19 | 2022-08-25 | SK Hynix Inc. | Electronic system including memory system and host |
US20230152995A1 (en) * | 2021-11-18 | 2023-05-18 | Western Digital Technologies, Inc. | Block budget enhancement mechanisms for memory |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11126360B2 (en) * | 2019-10-22 | 2021-09-21 | International Business Machines Corporation | Dynamically adjusting block mode pool sizes |
US20220043588A1 (en) * | 2020-08-06 | 2022-02-10 | Micron Technology, Inc. | Localized memory traffic control for high-speed memory devices |
TWI766764B (zh) * | 2021-07-20 | 2022-06-01 | 群聯電子股份有限公司 | 記憶體緩衝區管理方法、記憶體控制電路單元與記憶體儲存裝置 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5778194A (en) * | 1996-04-08 | 1998-07-07 | Symbios, Inc. | Method and apparatus for measuring performance of a computer bus |
US6879341B1 (en) | 1997-07-15 | 2005-04-12 | Silverbrook Research Pty Ltd | Digital camera system containing a VLIW vector processor |
US8239613B2 (en) * | 2008-12-30 | 2012-08-07 | Intel Corporation | Hybrid memory device |
KR101026634B1 (ko) | 2009-12-18 | 2011-04-04 | 성균관대학교산학협력단 | 하이브리드 플래시 메모리의 데이터 저장 방법 |
US8713268B2 (en) | 2010-08-05 | 2014-04-29 | Ut-Battelle, Llc | Coordinated garbage collection for raid array of solid state disks |
US9645917B2 (en) | 2012-05-22 | 2017-05-09 | Netapp, Inc. | Specializing I/O access patterns for flash storage |
US9778863B2 (en) * | 2014-09-30 | 2017-10-03 | Sandisk Technologies Llc | System and method for folding partial blocks into multi-level cell memory blocks |
US20160225459A1 (en) | 2015-01-30 | 2016-08-04 | Micron Technology, Inc. | Apparatuses operable in multiple power modes and methods of operating the same |
JP2020035128A (ja) * | 2018-08-29 | 2020-03-05 | キオクシア株式会社 | メモリシステム |
-
2019
- 2019-07-08 KR KR1020190081957A patent/KR20210006102A/ko unknown
-
2020
- 2020-01-29 US US16/776,117 patent/US11150822B2/en active Active
- 2020-04-03 CN CN202010257677.9A patent/CN112199038A/zh not_active Withdrawn
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20220269616A1 (en) * | 2021-02-19 | 2022-08-25 | SK Hynix Inc. | Electronic system including memory system and host |
US11809326B2 (en) * | 2021-02-19 | 2023-11-07 | SK Hynix Inc. | Electronic system including host and memory system for performing read operation based on physical address received from the host |
US20230152995A1 (en) * | 2021-11-18 | 2023-05-18 | Western Digital Technologies, Inc. | Block budget enhancement mechanisms for memory |
US11714565B2 (en) * | 2021-11-18 | 2023-08-01 | Western Digital Technologies, Inc. | Block budget enhancement mechanisms for memory |
CN114115737A (zh) * | 2021-11-23 | 2022-03-01 | 合肥兆芯电子有限公司 | 数据存储分配方法、存储器存储装置及控制电路单元 |
CN114115737B (zh) * | 2021-11-23 | 2024-02-02 | 合肥兆芯电子有限公司 | 数据存储分配方法、存储器存储装置及控制电路单元 |
CN114153398A (zh) * | 2021-12-07 | 2022-03-08 | 深圳忆联信息系统有限公司 | 固态硬盘性能优化方法、装置、计算机设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
US20210011642A1 (en) | 2021-01-14 |
US11150822B2 (en) | 2021-10-19 |
KR20210006102A (ko) | 2021-01-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11150822B2 (en) | Memory system for determining usage of a buffer based on I/O throughput and operation method thereof | |
US10997094B2 (en) | Apparatus and method for improving input/output throughput of a memory system | |
CN110825659B (zh) | 用于检查存储器系统中的块中的有效数据的设备和方法 | |
CN110825319A (zh) | 基于块状态确定可用性的存储器系统及操作方法 | |
US11544157B2 (en) | Apparatus and method for storing data in an MLC area of a memory system | |
US11275525B2 (en) | Apparatus and method for improving write throughput of memory system | |
CN113900586A (zh) | 存储器系统及其操作方法 | |
CN111581121B (zh) | 用于管理存储器系统中的映射数据的方法和设备 | |
CN110888825B (zh) | 在存储器系统中处理数据的设备和方法 | |
CN111755039A (zh) | 在恢复进程期间减少存储器系统中单元干扰的设备及方法 | |
CN110781023A (zh) | 用于在存储器系统中处理数据的设备和方法 | |
CN111752474A (zh) | 控制存储器系统的写入操作的设备和方法 | |
CN112558860A (zh) | 分布和读取数据的存储器系统及其操作方法 | |
CN110806837A (zh) | 数据处理系统及其操作方法 | |
CN112835811A (zh) | 存储器系统及其操作方法 | |
CN113010098A (zh) | 用于提高存储器系统的输入/输出吞吐量的设备和方法 | |
CN111435334B (zh) | 在存储器系统中检查有效数据的设备和方法 | |
CN112988054A (zh) | 存储器系统及其操作方法 | |
CN110806983B (zh) | 存储器系统及其操作方法 | |
US11354051B2 (en) | Memory system for efficiently managing memory block and operating method thereof | |
CN113849121A (zh) | 用于访问条带形式的数据的存储器系统及其操作方法 | |
CN113448503A (zh) | 调整顺序命令的操作时间差的存储器系统及其操作方法 | |
CN112445424A (zh) | 提高存储器系统的输入/输出吞吐量的设备和方法 | |
CN109918315B (zh) | 存储器系统及存储器系统的操作方法 | |
US11429282B2 (en) | Apparatus and method for improving Input/Output throughput of 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 | ||
WW01 | Invention patent application withdrawn after publication |
Application publication date: 20210108 |