CN112069086A - 用于垃圾收集操作的存储器系统及其操作方法 - Google Patents
用于垃圾收集操作的存储器系统及其操作方法 Download PDFInfo
- Publication number
- CN112069086A CN112069086A CN202010245074.7A CN202010245074A CN112069086A CN 112069086 A CN112069086 A CN 112069086A CN 202010245074 A CN202010245074 A CN 202010245074A CN 112069086 A CN112069086 A CN 112069086A
- Authority
- CN
- China
- Prior art keywords
- garbage collection
- parallel
- memory
- block
- command queue
- 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
- 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
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N5/00—Computing arrangements using knowledge-based models
- G06N5/04—Inference or reasoning models
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0608—Saving storage space on storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/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/1016—Performance improvement
- G06F2212/1024—Latency reduction
-
- 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/7205—Cleaning, compaction, garbage collection, erase control
-
- 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/7208—Multiple device management, e.g. distributing data over multiple flash devices
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)
- Artificial Intelligence (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Memory System (AREA)
Abstract
本申请涉及一种存储器系统,该存储器系统可包括:存储器装置,包括多个管芯,每个管芯包括多个存储块;以及控制器,包括存储器和垃圾收集模块,该垃圾收集模块被配置成通过经由多个数据路径中的至少一个将数据传送到存储器装置来执行垃圾收集操作,其中该垃圾收集模块根据多个管芯中的哪个管芯包括垃圾收集操作的目标块,来确定垃圾收集操作是否可与主机任务操作并行地执行。
Description
相关申请的交叉引用
本申请要求于2019年6月10日提交的申请号为10-2019-0067907的韩国专利申请的优先权,该韩国专利申请通过引用整体并入本文。
技术领域
本发明涉及一种具有提高的垃圾收集操作的存储器系统以及用于执行这种操作的方法。更特别地,本发明涉及一种用于将映射数据传送到主机或数据处理系统中包括的存储器系统中的计算装置的设备和方法。
背景技术
近来,计算机环境的范例已经转变为允许随时随地使用计算机系统的普适计算。因此,诸如移动电话、数码相机和膝上型计算机的便携式电子装置的使用已经迅速增加。通常,这种便携式电子装置使用包括存储器装置的存储器系统,即数据存储装置。数据存储装置用作便携式电子装置的主存储器装置或辅助存储器装置。
发明内容
各个实施例涉及提供一种能够并行或串行地执行主机命令和装置命令的存储器系统及其操作方法。
而且,各个实施例涉及提供一种能够根据主要命令队列和辅助命令队列中的触发时间点来选择和执行装置任务的存储器系统及其操作方法,其中装置命令根据是否可执行并行操作而被分类并存储在主要命令队列和辅助命令队列中。
而且,各个实施例涉及提供一种能够通过分开地控制主要命令队列和辅助命令队列,根据触发时间点来选择性地执行装置任务的存储器系统及其操作方法,其中可与主机任务并行地执行的装置任务存储在主要命令队列中,并且可与主机任务可交替执行的装置任务存储在辅助命令队列中。
此外,各个实施例涉及提供一种能够通过使用相应块(或开放块)不位于的另一区域中的块来减少垃圾收集所需的时间,或者减少在通过诸如通道和通路的数据通信线划分的存储器装置与控制器之间的数据移动的瓶颈现象,以便对存储器装置的多个区域中的至少一个中包括的相应块执行垃圾收集的存储器系统及其操作方法。
根据各个实施例的存储器控制装置和方法,可以并行或交替地执行通过控制存储器装置来处理主机命令的主机任务和执行存储器装置自身的操作的装置任务。
根据本技术,因为分开地管理用于在不包括用于执行编程操作的开放块的管芯中执行垃圾收集的第一装置任务和用于在包括开放块的管芯中执行垃圾收集的第二装置任务,所以可根据垃圾收集执行条件来选择性地并行或交替地执行垃圾收集操作和编程操作,从而可以基本上防止由于垃圾收集操作所导致的性能劣化。
在根据各个实施例的存储器系统中,对应于牺牲块的垃圾收集信息根据状态信息而被排队到分开的队列中,从而可以高效地使用存储器空间并且快速执行垃圾收集操作。
根据实施例,一种存储器系统,可包括:存储器装置,包括多个管芯,多个管芯中的每个管芯包括多个存储块;以及控制器,包括存储器和垃圾收集模块,该垃圾收集模块被配置成通过经由多个数据路径中的至少一个将数据传送到存储器装置来执行垃圾收集操作,其中该垃圾收集模块:根据多个管芯中的哪个管芯包括垃圾收集操作的目标块,来确定垃圾收集操作是否可与主机任务操作并行地执行。
根据实施例,一种存储器系统的操作方法,该存储器系统包括存储器装置和控制器,存储器装置包括多个管芯,多个管芯中的每个包括多个存储块,控制器包括存储器并且被配置成通过经由多个数据路径中的至少一个向存储器装置传送数据来执行主机任务操作和垃圾收集操作,该操作方法可包括:确定主机任务操作和垃圾收集操作是否可并行地执行;检测牺牲块;将对应于牺牲块的垃圾收集信息和状态信息存储在存储器中,该垃圾收集信息包括牺牲块的地址信息,并且状态信息指示对牺牲块的垃圾收集操作是否可与主机任务操作并行地执行;根据状态信息来将垃圾收集信息顺序地排队到并行命令队列或串行命令队列;根据触发时间点来确定垃圾收集类型;以及,根据被排队在对应于垃圾收集类型的并行或串行命令队列中的垃圾收集信息,并行地或串行地执行垃圾收集操作。
根据实施例,一种存储器系统可包括:存储器装置,包括可操作地联接到各个通道的管芯,并且每个管芯包括存储块;以及控制器,被配置成通过通道来控制存储器装置以:与主机任务操作并行地对与主机任务操作的目标存储块所在的管芯不同的管芯中的第一牺牲块执行装置任务操作;并且在与目标存储块相同的管芯的空闲时间期间,对该相同管芯中的第二牺牲块执行装置任务操作。
根据实施例,一种控制器的操作方法,该控制器通过通道控制存储器装置,该存储器装置包括分别可操作地联接到通道的管芯并且每个管芯包括存储块,该方法可包括:控制存储器装置,以与所述主机任务操作并行地对与主机任务操作的目标存储块所在的管芯不同的管芯中的第一牺牲块执行装置任务操作;并且控制存储器装置,以在与目标存储块相同的管芯的空闲时间期间,对该相同管芯中的第二牺牲块执行装置任务操作。
附图说明
图1示出根据本公开的实施例的存储器系统的控制器。
图2是示出根据实施例的存储器系统中的超级存储块的示图。
图3示出垃圾收集(GC)操作的示例。
图4是解释根据实施例的存储器系统的数据处理操作的示图。
图5是示出根据实施例的存储器系统的操作进程的流程图。
图6是示出根据实施例的牺牲块管理器的详细配置的示图。
图7和图8是示出根据实施例的牺牲块管理器的操作进程的流程图。
图9是示出根据实施例的队列管理器的详细配置的示图。
图10是示出根据实施例的队列管理器的操作进程的流程图。
图11是示出根据实施例的垃圾收集管理器的组件的示图。
图12是示出根据实施例的垃圾收集管理器的操作进程的流程图。
具体实施方式
以下描述集中于本发明的各个实施例的特征和方面。为了避免不必要地模糊本发明的主题,可以省略公知信息。
下面参照附图更详细地描述各个实施例。在整个说明书中,对“实施例”、“另一实施例”等的参考不一定仅针对一个实施例,并且对任何这种短语的不同参考不一定针对相同的实施例。
图1示出根据本公开的实施例的存储器系统110的控制器130。
参照图1,详细描述了控制器130。控制器130与主机102和存储器系统的存储器装置150协作。控制器130包括主机接口(I/F)132、存储器接口(I/F)142、存储器144和闪存转换层(FTL)140。
主机接口132可处置从主机102接收的命令、数据等。通过示例而非限制的方式,主机接口132可包括缓冲器管理器52、事件队列54和命令队列56。命令队列56可顺序地存储从主机102接收的命令、数据等,并且以存储它们的顺序来将命令、数据等输出到缓冲器管理器52。缓冲器管理器52可对从命令队列56传递的命令、数据等进行分类、管理或调整。事件队列54可顺序地传送用于处理从缓冲器管理器52接收的命令、数据等的事件。
可从主机102连续地接收相同特性的多个命令和/或数据。可选地,在经混合或混杂之后,可从主机102接收不同特性的多个命令和/或数据。例如,主机102可传送用于读取数据的多个命令(即,读取命令)。再例如,主机102可交替地传送用于读取数据的命令(即,读取命令)和用于编程/写入数据的命令(即,写入命令)。主机接口132可将从主机102接收的命令、数据等顺序地存储到命令队列56。此后,主机接口132可根据从主机102接收的命令、数据以及其它相关信息的特性来估计或预测控制器130将执行何种操作。主机接口132可至少基于命令和数据的特性来确定命令和数据的处理顺序和优先级。根据命令和数据的特性,主机接口132的缓冲器管理器52被配置成确定缓冲器管理器52是否应当将命令和数据存储在存储器144中,或者缓冲器管理器52是否应当将命令和数据传递到FTL 140。事件队列54从缓冲器管理器52接收待由存储器系统110(例如,控制器130)响应于命令和数据而内部地执行并处理的事件,从而以接收的顺序将事件传递到FTL 140中。
根据实施例,FTL 140可包括状态管理器(GC/WL)42、映射管理器(MM)44、主机请求管理器(HRM)46和块管理器(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,以提高或最大化多通道且多向闪速控制器(即,存储器接口142)的并行处理。
块管理器48可被配置成根据有效页面的数量来管理存储器装置150中的块。进一步地,块管理器48可在需要空闲块时选择并擦除不具有有效页面的块,并且在确定需要垃圾收集时选择包括最少有效页面的块。状态管理器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就可执行映射更新操作以确保准确性。
根据实施例,GC/WL 42、MM 44和BW/BBM 48中的至少一个可包括待在图3中描述的垃圾收集模块(GCM)196。例如,即使未从主机I/F 132接收到命令,GC/WL 42、MM 44和BW/BBM 48中的至少一个也可执行后台操作。垃圾收集模块196可包括将在图4中描述的牺牲块管理器1961、队列管理器1962和垃圾收集管理器1963。参照图4详细描述垃圾收集模块的组件。
存储器I/F 142可用作存储器/存储装置I/F,以将控制器130和存储器装置150接口连接,使得控制器130响应于来自主机102的请求来控制存储器装置150。当存储器装置150是闪速存储器时,例如NAND闪速存储器,存储器I/F 142可用作NAND闪存控制器(NFC),并且在处理器134的控制下生成存储器装置150的控制信号并处理存储器装置150的数据。存储器I/F 142可支持用于处理控制器130和存储器装置150之间的命令和数据的接口,例如NAND闪存接口的操作。特别地,存储器I/F 142可支持控制器130和存储器装置150之间的数据输入/输出,并且用作与存储器装置150交换数据的区域。存储器I/F 142可通过被称为闪存接口层(FIL)的固件来驱动。
此外,存储器I/F 142可包括作为能够存储用于执行具有不同属性的任务的命令的多个装置命令队列的并行命令队列PQ和串行命令队列SQ。并行命令队列PQ和串行命令队列SQ中的每个可存储至少一个装置任务(DT)。装置任务是指在独立于主机102的特定状态下,控制器130执行存储器装置150的后台操作的任务,并且可包括诸如垃圾收集、损耗均衡、映射表更新、由于SPO的重建操作以及读取回收的后台操作。例如,装置任务(DT)可包括垃圾收集操作所需的命令或信息。并行命令队列PQ可包括用于可与主机任务操作并行地执行的至少一个垃圾收集操作的命令或信息。另一方面,串行命令队列SQ可包括用于可与主机任务操作交替地即串行地执行,即可在不执行主机任务操作的空闲时段期间操作的至少一个垃圾收集操作的命令或信息。
存储器装置150可包括多个存储块。根据在块的一个存储器单元中可存储或表达的位的数量,多个存储块中的每个可以是诸如单层单元(SLC)存储块、多层单元(MLC)存储块等的不同类型存储块中的任意一种。SLC存储块包括由每个存储一位数据的存储器单元实施的多个页面。SLC存储块可具有高数据输入和输出(I/O)操作性能和高耐用性。MLC存储块包括由每个存储多位数据(例如,两位或更多位)的存储器单元实施的多个页面。针对相同空间,MLC存储块可具有比SLC存储块更大的存储容量。在存储容量方面,MLC存储块可高度集成。在实施例中,存储器装置150可利用诸如MLC存储块、三层单元(TLC)存储块、四层单元(QLC)存储块及其组合的MLC存储块来实施。MLC存储块可包括由每个能够存储两位数据的存储器单元实施的多个页面。三层单元(TLC)存储块可包括由每个能够存储三位数据的存储器单元实施的多个页面。四层单元(QLC)存储块可包括由每个能够存储四位数据的存储器单元实施的多个页面。在另一实施例中,存储器装置150可利用包括由每个能够存储五位或更多位数据的存储器单元实施的多个页面的块来实施。
在本公开的实施例中,存储器装置150被实现为诸如闪速存储器的非易失性存储器,闪速存储器诸如NAND闪速存储器或NOR闪速存储器。在另一实施例中,存储器装置150可由相变随机存取存储器(PCRAM)、铁电随机存取存储器(FRAM)、自旋转移力矩随机存取存储器(STT-RAM)以及自旋转移力矩磁性随机存取存储器(STT-MRAM)等中的至少一种来实施。
图2是示出根据实施例的存储器系统中的超级存储块的示图。
参照图2,存储器系统110的存储器装置150可包括多个存储器管芯1501至150n。例如,存储器装置150可包括第一存储器管芯1501和第二存储器管芯1502。
第一存储器管芯1501和第二存储器管芯1502中的每个可包括多个平面。例如,第一存储器管芯1501可包括第一平面PLANE00和第二平面PLANE01,第二存储器管芯1502可包括第三平面PLANE10和第四平面PLANE11。平面中的每个可包括多个块,例如N个块。例如,第一平面PLANE00可包括存储块BLOCK000至BLOCK00N。第二平面PLANE01可包括存储块BLOCK010至BLOCK01N。第三平面PLANE10可包括存储块BLOCK100至BLOCK10N。第四平面PLANE11可包括存储块BLOCK110至BLOCK11N。
第一存储器管芯1501能够通过第零通道CH0输入和输出数据。第二存储器管芯1502能够通过第一通道CH1输入和输出数据。第零通道CH0和第一通道CH1可以交错方案输入和输出数据。
第一存储器管芯1501包括分别对应于多个通路WAY0和WAY1的多个平面PLANE00和PLANE01,多个通路WAY0和WAY1能够通过共享第零通道CH0以交错方案输入和输出数据。
第二存储器管芯1502包括分别对应于多个通路WAY2和WAY3的多个平面PLANE10和PLANE11,多个通路WAY2和WAY3能够通过共享第一通道CH1以交错方案输入和输出数据。
存储器装置150中的多个存储块可基于使用相同通路或通道的物理位置而被划分成组。
虽然图2的实施例示出了存储器装置150中存在两个管芯,每个管芯具有两个平面的配置,但本发明不限于该配置。基于系统设计考虑,可使用任何适当的管芯和平面配置。每个平面中的存储块数量也可变化。
图1的控制器130可基于存储块的物理位置,对不同管芯或不同平面中的多个存储块之中的、可被同时选择的存储块进行分组,并且将存储块组作为超级存储块进行管理。
可根据设计考虑而以各种方式来执行控制器130将存储块分组为超级存储块并且管理超级存储块的方案。下面作为示例描述了三种方案。
根据第一方案,控制器130对存储器装置150中的第一存储器管芯1501中的第一平面PLANE00的存储块BLOCK000和第二平面PLANE01的存储块BLOCK010进行分组,并且将分组的存储块BLOCK000和BLOCK010作为单个超级存储块A1进行管理。当对第二存储器管芯1502应用第一方案时,控制器130可对第二存储器管芯1502的第一平面PLANE10的存储块BLOCK100和第二平面PLANE11的存储块BLOCK110进行分组,并且将分组的存储块BLOCK100和BLOCK110作为单个超级存储块A2进行管理。
根据第二方案,控制器130对第一存储器管芯1501的第一平面PLANE00的存储块BLOCK002和第二存储器管芯1502的第一平面PLANE10的存储块BLOCK102进行分组,并且将分组的存储块BLOCK002和BLOCK102作为单个超级存储块B1进行管理。另外,根据第二方案,控制器130可对第一存储器管芯1501的第二平面PLANE01的存储块BLOCK012和第二存储器管芯1502的第二平面PLANE11的存储块BLOCK112进行分组,并且将分组的存储块BLOCK012和BLOCK112作为单个超级存储块B2进行管理。
根据第三方案,控制器130对第一存储器管芯1501的第一平面PLANE00的存储块BLOCK001、第一存储器管芯1501的第二平面PLANE01的存储块BLOCK011、第二存储器管芯1502的第一平面PLANE10的存储块BLOCK101和第二存储器管芯1502的第二平面PLANE11的存储块BLOCK111进行分组,并且将分组的存储块BLOCK001、BLOCK011、BLOCK101和BLOCK111作为单个超级存储块C进行管理。
因此,通过诸如通道交错方案、存储器管芯交错方案、存储器芯片交错方案或通路交错方案的交错方案,可基本上同时选择每个超级存储块中的存储块。
根据本发明的实施例,基于第一逻辑块地址(LBA)和第二LBA的模式,映射段的大小可以被可变地调整并且更新到存储器装置150,从而减少对存储器装置150的更新次数。
图3示出GC操作的示例。
参照图3,存储器装置150中的多个数据块40_1中存储的无效数据的量可随着越多地处理来自控制器130的编程命令而增加。为了重新使用存储这种无效数据的数据块40_1,可执行内部操作(例如,GC或损耗均衡)。例如,控制器130中的GC模块196可执行GC以将有效数据所存储的数据块40_1改变为空闲块。也就是说,当处于设定周期时间或者当剩余空闲块的数量等于或小于阈值时而触发GC时,GC模块196可识别存储器装置150内的多个数据块40_1之中的封闭块。GC模块196可选择封闭块之中的有效页面数量小于阈值的封闭块作为牺牲块。选择具有较小有效页面数量的封闭块的原因在于,当对具有较大有效页面数量的封闭块执行GC操作时,可能增加执行GC操作所需的时间和成本,并且可能缩短存储器装置的寿命。然后,GC模块196可复制牺牲块中的有效数据,并且将这种数据存储在尚未被执行编程操作的作为空闲块40_2的目标块中。在将有效数据复制并存储在目标块中之后,GC模块196可擦除牺牲块。
在上述GC操作期间,为了将数据从存储器装置150的封闭块移动到空闲块,控制器130可从存储器装置150的封闭块读取数据,将读取数据加载到存储器144,然后将存储器144中存储的数据编程到空闲块。因为控制器130对存储器装置150执行读取/编程操作,所以当在执行GC操作的同时从外部(例如,图1中的主机102)传送读取命令或编程命令时,控制器130可停止GC操作以执行对应于该命令的操作。
当为了减少执行GC操作所需的时间和成本而彼此并行地执行编程操作和GC操作时,控制器130可不停止GC操作。换言之,控制器130可从与包括可被执行编程操作的开放块的管芯不同的管芯中选择目标块,并且将牺牲块的有效数据移动到该目标块,从而并行地执行编程操作和GC操作。参照图4至图10详细描述这种进程。在本实施例中,存储器装置中包括的多个管芯可由一个或多个通道和通路单独管理。此外,一个或多个实施例可应用于包括超级块的存储器装置150和不包括超级块的存储器装置150。
图4是解释根据实施例的存储器系统的数据处理操作的示图。图4仅示出与下面描述的处理相关的组件和配置。
图1中描述的垃圾收集模块196可包括牺牲块管理器1961、队列管理器1962和垃圾收集管理器1963。此外,图1中描述的存储器I/F 142可包括并行命令队列PQ和串行命令队列SQ。此外,存储器装置150可包括多个管芯。
牺牲块管理器1961可确定垃圾收集操作是否可与主机任务操作并行地运行,检测牺牲块,然后将关于牺牲块的垃圾收集信息InfoGC和对应于该垃圾收集信息InfoGC的状态信息InfoST存储在存储器144中。牺牲块管理器1961可根据在剩余管芯,即在除了包括开放块的第n管芯之外的所有管芯中是否存在封闭块来确定垃圾收集操作是否可与主机任务操作并行地运行。例如,在包括开放块的第n管芯的情况下,难以执行在存储器系统内部移动数据以便将从主机传送的数据编程到存储器系统的垃圾收集操作。另一方面,在不包括开放块的其它管芯的情况下,因为未使用诸如用于传送数据的通道、通路等路径,所以可通过可用通道、通路等来执行垃圾收集操作。垃圾收集信息InfoGC可包括牺牲块的地址信息。牺牲块管理器1961可检测多个封闭块之中的、有效页面比率(VPR)或有效页面计数(VPC)小于阈值TH的封闭块作为牺牲块,这将在下面参照图6详细描述。
队列管理器1962可根据存储器144中存储的对应于垃圾收集信息InfoGC的状态信息InfoST来确定垃圾收集类型。队列管理器1962可根据相应状态信息InfoST,将垃圾收集信息InfoGC分类为并行垃圾收集组或串行垃圾收集组。并行垃圾收集组中的项InfoGC可指示与主机任务并行地执行垃圾收集,并且串行垃圾收集组中的项InfoGC可指示在空闲时段(不处理主机任务的时段)期间执行垃圾收集。
此外,队列管理器1962可将分别分类为并行垃圾收集组和串行垃圾收集组的垃圾收集信息InfoGC排队到分别对应于并行垃圾收集组和串行垃圾收集组的并行命令队列PQ和串行命令队列SQ,这将参照图8详细描述。
垃圾收集管理器1963根据触发事件确定待执行的垃圾收集类型,该触发事件可以是周期性重复发生的设定时间。垃圾收集管理器1963根据待执行的类型,检查在存储器I/F142中的并行命令队列PQ和串行命令队列SQ中排队的垃圾收集信息InfoGC。
此外,垃圾收集管理器1963可根据垃圾收集信息InfoGC将牺牲块的所有有效页面复制到目标块,然后从并行命令队列PQ或串行命令队列SQ中删除相应垃圾收集信息InfoGC,这将参照图10详细描述。
存储器144可包括垃圾收集信息列表144A和垃圾收集缓冲器144B。垃圾收集信息列表144A可包括关于牺牲块的垃圾收集信息InfoGC和对应于该垃圾收集信息InfoGC的状态信息InfoST。
状态信息InfoST可以是1位标志信息,并且可表示为1’或0’。例如,当从不包括开放块的管芯中检测到牺牲块时,该牺牲块的状态信息InfoST可表示为1。另一方面,当从包括开放块的管芯中检测到牺牲块时,该牺牲块的状态信息InfoST可表示为0。当然,也可使用相反的设定。
垃圾收集缓冲器144B被配置成临时存储在垃圾收集期间待从牺牲块移动到目标块的有效数据。
图5是示出根据实施例的存储器系统110的操作进程的流程图。
参照图5,在步骤S510中,垃圾收集模块196可确定并行操作是否可运行,然后根据有效页面计数来检测牺牲块。也就是说,垃圾收集模块196可通过确定除了包括开放块的第n管芯之外的任意一个管芯中是否存在封闭块,来确定垃圾收集操作是否可与主机任务操作并行地运行。然后,垃圾收集模块196可检测有效页面计数等于或大于阈值的封闭块、读取计数等于或大于阈值的封闭块、擦除计数小于阈值的封闭块以及已发生编程失败的封闭块中的任意一个作为牺牲块。例如,垃圾收集模块196可检测多个封闭块之中的、有效页面计数(VPC)或有效页面比率(VPR)小于阈值TH的封闭块作为牺牲块。
在步骤S520中,垃圾收集模块196可生成关于牺牲块的垃圾收集信息InfoGC和对应于垃圾收集信息InfoGC的状态信息InfoST,并且将该垃圾收集信息InfoGC和相应状态信息InfoST存储在存储器144中。垃圾收集信息InfoGC可包括牺牲块的地址信息。
在步骤S530中,垃圾收集模块196可根据存储器144中存储的垃圾收集信息InfoGC的状态信息InfoST来确定垃圾收集类型。根据实施例,可使用牺牲块的状态信息来确定垃圾收集类型。垃圾收集模块196可根据垃圾收集类型来将垃圾收集信息InfoGC排队到并行命令队列或串行命令队列SQ。
在步骤S540中,垃圾收集模块196根据触发时间来确定待执行的垃圾收集类型。例如,该触发时间可能取决于主机任务操作。当执行主机任务操作时,垃圾收集模块196检查被排队在并行命令队列PQ中的垃圾收集信息InfoGC,以便与当前正在执行的主机任务操作并行地执行垃圾收集。另一方面,当不执行主机任务操作的空闲时段开始时,垃圾收集模块196检查被排队在串行命令队列SQ中的垃圾收集信息InfoGC,以便在空闲时段期间执行作为装置任务操作的垃圾收集。然后,垃圾收集模块196基于被排队在PQ或SQ中的垃圾收集信息InfoGC,将牺牲块的所有有效页面复制到目标块中。垃圾收集模块196可从并行命令队列PQ或串行命令队列SQ中删除垃圾收集操作已完成的垃圾收集信息InfoGC。
图6是示出根据实施例的牺牲块管理器1961的详细配置的示图。
参照图6,牺牲块管理器1961可包括并行操作确定器1961A和牺牲块检测器1961B。牺牲块管理器1961可从存储器装置150中包括的多个封闭块中检测牺牲块。
存储器装置150可包括多个管芯。例如,多个管芯可包括第一管芯1501、第二管芯1502、第三管芯1503和第四管芯1504。多个管芯中的每个可包括多个存储块。多个存储块可包括第一存储块BLK1、第二存储块BLK2、第三存储块BLK3和第四存储块BLK4。本发明不限于这种布置。多个存储块BLK1至BLK4中的每个可以是空闲块、开放块或封闭块。空闲块是未存储数据的块。例如,第一管芯1501的第二存储块BLK2、第二管芯1502的第二存储块BLK2和第四存储块BLK4、第三管芯1503的第一存储块BLK1和第四存储块BLK4以及第四管芯1504的第二存储块BLK2和第三存储块BLK3可以是空闲块。开放块是存储有数据并且存在至少一个可用于存储数据的页面的块。例如,第一管芯1501的第一存储块BLK1可以是开放块。封闭块是不存在可用于存储数据的页面的块。例如,第一管芯1501的第三存储块BLK3和第四存储块BLK4、第二管芯1502的第一存储块BLK1和第三存储块BLK3、第三管芯1503的第二存储块BLK2和第三存储块BLK3以及第四管芯1504的第一存储块BLK1和第四存储块BLK4可以是封闭块。
为了高效地并行地执行垃圾收集操作和主机任务操作而不影响延迟,垃圾收集模块可根据对应于垃圾收集信息InfoGC的状态信息InfoST来对垃圾收集信息InfoGC进行分类,并且根据该分类来将垃圾收集信息InfoGC排队到并行命令队列PQ或串行命令队列SQ。也就是说,垃圾收集模块可将某些垃圾收集信息InfoGC分类为并行垃圾收集组,以用于与主机任务操作并行地执行垃圾收集操作,并且将其它垃圾收集信息InfoGC分类为串行垃圾收集组,以用于例如仅当不执行主机任务操作时(在空闲时段的情况下)执行垃圾收集操作。
为此,当在包括开放块并且可执行主机任务操作的管芯中检测到牺牲块时,牺牲块的垃圾收集信息InfoGC可被放置在串行垃圾收集组中。另一方面,当在(不包括具有开放块的管芯的)任意其它管芯中检测到牺牲块时,牺牲块的垃圾收集信息InfoGC可被放置在并行垃圾收集组中。当牺牲块的垃圾收集信息InfoGC属于串行垃圾收集组时,这种信息可被排队在串行命令队列SQ中,并且当牺牲块的垃圾收集信息InfoGC属于并行垃圾收集组时,这种信息可被排队在并行命令队列PQ中。可根据被排队在并行命令队列PQ中的垃圾收集信息InfoGC,与主机任务操作并行地对牺牲块执行垃圾收集操作。可仅在空闲时间期间对被排队在串行命令队列SQ中的垃圾收集信息InfoGC的牺牲块执行垃圾收集操作。因此,可以基本上防止由于垃圾收集操作所导致的性能劣化,这将通过并行操作确定器1961A和牺牲块检测器1961B详细描述。
首先,当发生垃圾收集事件时,并行操作确定器1961A确定是否可以与主机任务操作并行地执行垃圾收集操作。根据该确定的结果,如下所述,并行操作确定器1961A可与主机任务操作并行或串行地执行垃圾收集。
为了确定是否可以与主机任务操作并行地执行垃圾收集操作,并行操作确定器1961A检查多个管芯之中的(除了包括开放块的第n管芯之外的)剩余管芯。例如,在图6中可看出,第一管芯1501包括开放块,即第一存储块BLK1。第二管芯1502、第三管芯1503和第四管芯1504中的每个也包括至少一个开放块。
并行操作确定器1961A确定剩余管芯中是否存在至少一个封闭块。作为该确定的结果,当剩余管芯中存在至少一个封闭块时,并行操作确定器1961A确定可并行地执行主机任务操作和装置任务操作。例如,第二管芯1502包括两个封闭块(BLK1和BLK3),第三管芯1503包括两个封闭块(BLK2和BLK3),并且第四管芯1504包括两个封闭块(BLK1和BLK4)。
另一方面,当在剩余管芯中不存在封闭块并且在包括开放块的第n管芯中存在一个或多个封闭块时,因为剩余管芯之中不存在可选择作为牺牲块的封闭块,所以并行操作确定器1961A确定不可并行地执行主机任务操作和装置任务操作。
牺牲块检测器1961B可从多个管芯中包括的多个封闭块中检测至少一个牺牲块。存在两种检测牺牲块的方法。在第一方法中,可将阈值TH的标准设置为有效页面比率,并且在第二方法中,可将阈值TH的标准设置为平均有效页面计数。
首先,描述将阈值TH设置为有效页面比率的情况。牺牲块检测器1961B可检测剩余管芯中包括的多个封闭块之中的、具有有效页面比率或更少有效页面比率的封闭块作为牺牲块。例如,在假设每个存储块包括100个页面的情况下,给出以下描述。牺牲块检测器1961B可选择多个封闭块之中的、具有25%或更少的有效页面计数的封闭块作为牺牲块,其中25%为有效页面比率。可基于系统条件和性能目标将有效页面比率设置为任何合适的值。在第二管芯1502中,BLK1的有效页面计数(VPC)和有效页面比率分别为10和10%,并且BLK3的有效页面计数(VPC)和有效页面比率分别为25和25%。在第三管芯1503中,BLK2的有效页面计数(VPC)和有效页面比率分别为40和40%,并且BLK3的有效页面计数(VPC)和有效页面比率分别为30和30%。在第四管芯1504中,BLK1的有效页面计数(VPC)和有效页面比率分别为45和45%,并且BLK4的有效页面计数(VPC)和有效页面比率分别为15和15%。有效页面比率为25%或更小的封闭块是第二管芯1502中的BLK1和BLK3以及第四管芯1504中的BLK4;这些封闭块可被检测为牺牲块。
其次,描述将阈值TH设置为平均有效页面计数的情况。牺牲块检测器1961B可通过使用剩余管芯中的多个封闭块中的页面总数量来计算平均有效页面计数,以便设置阈值TH。例如,所计算的平均有效页面计数为28。牺牲块检测器1961B可选择有效页面计数为28或更少的封闭块作为牺牲块。有效页面计数为28或更少的封闭块是第二管芯1502中的BLK1和BLK3以及第四管芯1504中的BLK4;这些封闭块可被检测为牺牲块。牺牲块检测器1961B可以这种方式检测牺牲块。
牺牲块检测器1961B将关于牺牲块的垃圾收集信息InfoGC和对应于该垃圾收集信息InfoGC的状态信息InfoST临时存储在存储器144中包括的垃圾收集信息列表144A中。也就是说,当从不包括开放块的剩余管芯中检测到牺牲块时,牺牲块检测器1961B可将关于该牺牲块的垃圾收集信息InfoGC以及值为“1”的状态信息InfoST记录在垃圾收集信息列表144A中。另一方面,当从包括开放块的第n管芯检测到牺牲块时,牺牲块检测器1961B可将关于该牺牲块的垃圾收集信息InfoGC以及值为“0”的状态信息InfoST记录在垃圾收集信息列表144A中。
图7和图8是示出根据实施例的牺牲块管理器的操作进程的流程图。
参照图7,在步骤S710和步骤S720中,牺牲块管理器1961确定是否可执行垃圾收集操作和主机任务操作的并行操作。根据该确定的结果,牺牲块管理器1961可通过确定并行垃圾收集操作或串行垃圾收集操作来执行垃圾收集,这将在下面进行描述。通过图8描述了一种确定是否可并行地执行垃圾收集操作和主机任务操作的方法。
参照图8,在步骤S810中,牺牲块管理器1961检测多个管芯之中的包括开放块的至少一个管芯,例如第n管芯,然后在除了第n管芯之外的剩余管芯中检查封闭块。
在步骤S820中,牺牲块管理器1961确定剩余管芯中是否存在一个或多个封闭块。作为确定的结果,当剩余管芯中存在一个或多个封闭块(步骤S820中为“是”)时,牺牲块管理器1961确定可以与写入操作并行地执行垃圾收集操作(步骤S830)。
另一方面,当剩余管芯中不存在封闭块并且在包括开放块的第n管芯中存在一个或多个封闭块(步骤S820中为“否”)时,因为在剩余管芯中不存在可选择作为牺牲块的封闭块,所以牺牲块管理器1961确定不可以与写入操作并行地执行垃圾收集操作(步骤S840)。
重新参照图7,当根据通过图8确定的结果,确定可以与主机任务操作并行地执行垃圾收集操作(步骤S720中为“是”)时,牺牲块管理器1961从剩余管芯中包括的多个封闭块中检测牺牲块(步骤S730)。另一方面,当不可以与主机任务操作并行地执行垃圾收集操作(步骤S720中为“否”)时,牺牲块管理器1961从第n管芯中包括的封闭块中检测牺牲块(步骤S750)。
在步骤S740中,牺牲块管理器1961可生成关于在步骤S730和步骤S750中检测到的牺牲块的垃圾收集信息InfoGC和对应于该垃圾收集信息InfoGC的状态信息InfoST,并且将该垃圾收集信息InfoGC和该状态信息InfoST存储在存储器144中包括的垃圾收集信息列表144A中。
图9是示出根据实施例的队列管理器1962的详细配置的示图。
参照图9,队列管理器1962可包括牺牲块类型检测器1962A、分类器1962B和队列阵列1962C。
牺牲块类型检测器1962A可通过使用与牺牲块的垃圾收集信息InfoGC相对应的状态信息InfoST来确定牺牲块的类型信息InfoVT,该垃圾收集信息InfoGC存储在垃圾收集信息列表144A中。也就是说,牺牲块类型检测器1962A可根据与牺牲块的垃圾收集信息InfoGC相对应的状态信息InfoST来确定牺牲块的类型是并行类型还是串行类型。当对应于垃圾收集信息InfoGC的状态信息InfoST为“1”时,牺牲块类型检测器1962A将对应于垃圾收集信息InfoGC的牺牲块的类型信息InfoVT检测为并行类型。另一方面,当对应于垃圾收集信息InfoGC的状态信息InfoST为“0”时,牺牲块类型检测器1962A将对应于垃圾收集信息InfoGC的牺牲块的类型信息InfoVT检测为串行类型。牺牲块类型检测器1962A可向分类器1962B提供针对每个牺牲块检测的牺牲块的类型信息InfoVT。
分类器1962B可根据牺牲块的类型信息InfoVT将垃圾收集信息InfoGC分类为并行垃圾收集组或串行垃圾收集组,其中从牺牲块类型检测器1962A接收类型信息InfoVT。当牺牲块的类型信息InfoVT是并行类型时,分类器1962B可将垃圾收集信息InfoGC分类到并行垃圾收集组中,并且当牺牲块的类型信息InfoVT是串行类型时,分类器1962B可将垃圾收集信息InfoGC分类到串行垃圾收集组中。分类器1962B将被分类为并行垃圾收集组或串行垃圾收集组的垃圾收集信息InfoGC传送到队列阵列1962C。
队列阵列1962C可将被分类为并行垃圾收集组InfoPQG或串行垃圾收集组InfoSQG的垃圾收集信息InfoGC顺序地排队到相应队列,即并行命令队列PQ或串行命令队列SQ中。队列阵列1962C可将被分类为并行垃圾收集组InfoPQG的垃圾收集信息InfoGC排队到并行命令队列PQ,并且将被分类为串行垃圾收集组InfoSQG的垃圾收集信息InfoGC排队到串行命令队列SQ。
图10是示出根据实施例的队列管理器1962的操作进程的流程图。
参照图10,在步骤S1010中,队列管理器1962可通过使用与牺牲块的垃圾收集信息InfoGC相对应的状态信息InfoST来确定牺牲块的类型信息InfoVT,其中垃圾收集信息InfoGC存储在垃圾收集信息列表144A中。
在步骤S1020中,队列管理器1962可根据对应于垃圾收集信息InfoGC的状态信息InfoST来确定牺牲块的类型是并行类型还是串行类型,其中根据牺牲块的类型来并行或串行地执行垃圾收集操作。当对应于垃圾收集信息InfoGC的状态信息InfoST为“1”时,队列管理器1962将牺牲块的类型信息InfoVT确定为并行类型。另一方面,当对应于垃圾收集信息InfoGC的状态信息InfoST为“0”时,队列管理器1962将牺牲块的类型信息InfoVT确定为串行类型。
在步骤S1030中,当牺牲块的类型信息InfoVT是并行类型时,队列管理器1962将垃圾收集信息InfoGC分类为并行垃圾收集组中。然后,队列管理器1962将被分类为并行垃圾收集组InfoPQG的垃圾收集信息InfoGC排队到并行命令队列PQ。
在步骤S1040中,当牺牲块的类型信息InfoVT是串行类型时,队列管理器1962将垃圾收集信息InfoGC分类到串行垃圾收集组中。然后,队列管理器1962将被分类为串行垃圾收集组InfoSQG的垃圾收集信息InfoGC排队到串行命令队列SQ。
牺牲块检测器1961B可从多个管芯中包括的多个封闭块中检测至少一个牺牲块。存在两种检测牺牲块的方法。在第一方法中,可将阈值TH的标准设置为有效页面比率,并且在第二方法中,可将阈值TH的标准设置为平均有效页面计数。
图11是示出根据实施例的垃圾收集管理器1963的组件的示图。
参照图11,垃圾收集管理器1963可包括垃圾收集类型确定器1963A和垃圾收集执行器1963B。
垃圾收集类型确定器1963A根据触发时间点来确定待执行的垃圾收集的类型。例如,该触发时间点可取决于主机任务操作。当执行主机任务操作时,垃圾收集类型确定器1963A确定是否存在并行命令队列PQ中排队的垃圾收集信息InfoGC,以便与正在执行的主机任务操作并行地执行垃圾收集。作为确定的结果,当存在在并行命令队列PQ中排队的垃圾收集信息InfoGC时,垃圾收集类型确定器1963A将在并行命令队列PQ中排队的垃圾收集信息InfoGC提供到垃圾收集执行器1963B。另一方面,当不存在在并行命令队列PQ中排队的垃圾收集信息InfoGC时,因为不可以与正在执行的主机任务操作并行地执行垃圾收集操作,所以垃圾收集类型确定器1963A将在串行命令队列SQ中排队的垃圾收集信息InfoGC提供到垃圾收集执行器1963B,以便在当前正在执行的主机任务操作完成之后的空闲时段中执行垃圾收集操作。
另一方面,在空闲时段期间,垃圾收集类型确定器1963A确定是否存在在串行命令队列SQ中排队的垃圾收集信息InfoGC。作为确定的结果,当存在在串行命令队列SQ中排队的垃圾收集信息InfoGC时,垃圾收集类型确定器1963A将在串行命令队列SQ中排队的垃圾收集信息InfoGC提供到垃圾收集执行器1963B。另一方面,当不存在在串行命令队列SQ中排队的垃圾收集信息InfoGC时,垃圾收集类型确定器1963A可将在并行命令队列PQ中排队的垃圾收集信息InfoGC提供到垃圾收集执行器1963B,以便在空闲时段期间执行垃圾收集操作。
垃圾收集执行器1963B根据从垃圾收集类型确定器1963A接收的垃圾收集信息InfoGC,将牺牲块的所有有效页面临时存储在垃圾收集缓冲器144B中。垃圾收集执行器1963B将垃圾收集缓冲器144B中存储的所有有效页面复制到目标块。垃圾收集执行器1963B可从并行命令队列PQ或串行命令队列SQ中删除已被执行垃圾收集操作的垃圾收集信息InfoGC。
图12是示出根据实施例的垃圾收集管理器的操作进程的流程图。
参照图12,在步骤S1210中,垃圾收集管理器1963根据触发时间点来确定待执行的垃圾收集的类型。例如,该触发时间点可能取决于主机任务操作。
当在步骤S1220中在触发时间点执行主机任务操作时,在步骤S1230中,垃圾收集管理器1963确定是否存在在并行命令队列PQ中排队的垃圾收集信息InfoGC,以便与主机任务操作并行地执行垃圾收集操作。
当存在在并行命令队列PQ中排队的垃圾收集信息InfoGC(步骤S1230中为“是”)时,垃圾收集管理器1963根据在并行命令队列PQ中排队的垃圾收集信息InfoGC执行垃圾收集操作。
另一方面,当不存在在并行命令队列PQ中排队的垃圾收集信息InfoGC(步骤S1230中为“否”)时,因为不可以与主机任务操作并行地执行垃圾收集操作,所以垃圾收集管理器1963根据在串行命令队列SQ中排队的垃圾收集信息InfoGC执行垃圾收集操作,以便在当前正在执行的主机任务操作完成之后的空闲时段中执行垃圾收集操作。
另一方面,在没有主机任务操作的空闲时段期间,垃圾收集管理器1963确定是否存在在串行命令队列SQ中排队的垃圾收集信息InfoGC(步骤S1260)。
当存在在串行命令队列SQ中排队的垃圾收集信息InfoGC(步骤S1260中为“是”)时,垃圾收集管理器1963根据在串行命令队列SQ中排队的垃圾收集信息InfoGC执行垃圾收集操作(步骤S1270)。
另一方面,当不存在在串行命令队列SQ中排队的垃圾收集信息InfoGC(步骤S1260中为“否”)时,垃圾收集管理器1963根据在并行命令队列PQ中排队的垃圾收集信息InfoGC执行垃圾收集操作,以便在空闲时段期间执行垃圾收集操作(步骤S1240)。
在步骤S1240和步骤S1270中执行的垃圾收集执行方法中,垃圾收集管理器1963根据垃圾收集信息InfoGC,将牺牲块的所有有效页面临时存储在垃圾收集缓冲器144B中。垃圾收集管理器1963将垃圾收集缓冲器144B中存储的所有有效页面复制到目标块。
在步骤S1250中,垃圾收集管理器1963可从并行命令队列PQ或串行命令队列SQ中删除已被执行垃圾收集操作的垃圾收集信息InfoGC。
虽然已经示出并描述了各个实施例,但是对于本领域技术人员将显而易见的是,在不脱离如所附权利要求中限定的本发明的精神和范围的情况下,可以进行各种改变和变型。本发明涵盖落入权利要求范围内的所有这种改变和修改。
Claims (31)
1.一种存储器系统,包括:
存储器装置,包括多个管芯,所述多个管芯中的每个包括多个存储块;以及
控制器,包括存储器和垃圾收集模块,所述垃圾收集模块通过经由多个数据路径中的至少一个将数据传送到所述存储器装置来执行垃圾收集操作,
其中所述垃圾收集模块:
根据所述多个管芯中的哪个管芯包括所述垃圾收集操作的目标块,来确定所述垃圾收集操作是否可与主机任务操作并行地执行。
2.根据权利要求1所述的存储器系统,其中所述垃圾收集模块包括:
牺牲块管理器,确定所述主机任务操作和所述垃圾收集操作是否可并行地执行,检测所述牺牲块,并且将对应于所述牺牲块的垃圾收集信息和状态信息存储在所述存储器中,所述垃圾收集信息包括所述牺牲块的地址信息,并且所述状态信息指示对所述牺牲块的垃圾收集操作是否可与所述主机任务操作并行地执行;
队列管理器,根据所述状态信息来将所述垃圾收集信息顺序地排队到并行命令队列或串行命令队列;以及
垃圾收集管理器,根据触发时间点来确定垃圾收集类型,并且根据在对应于所述垃圾收集类型的所述并行命令队列或所述串行命令队列中排队的垃圾收集信息,与所述主机任务操作并行地或串行地执行所述垃圾收集操作。
3.根据权利要求2所述的存储器系统,其中所述牺牲块管理器:
确定多个管芯之中的除了包括开放块的第n管芯之外的剩余管芯中是否存在一个或多个封闭块,以便确定所述主机任务操作和所述垃圾收集操作是否可并行地执行,
当所述剩余管芯中存在一个或多个封闭块时,确定所述主机任务操作和所述垃圾收集操作可并行地执行,并且
当所述剩余管芯中不存在封闭块时,确定所述主机任务操作和所述垃圾收集操作可串行地执行。
4.根据权利要求3所述的存储器系统,其中当确定所述主机任务操作和所述垃圾收集操作可并行地执行时,所述牺牲块管理器从所述剩余管芯中的所述多个封闭块中选择所述牺牲块,并且当确定所述主机任务操作和所述垃圾收集操作不可并行地执行时,所述牺牲块管理器从所述第n管芯中的多个封闭块中选择所述牺牲块。
5.根据权利要求4所述的存储器系统,其中所述牺牲块管理器将关于所选择的牺牲块的垃圾收集信息以及指示所述主机任务操作和所述垃圾收集操作是否可并行地执行的状态信息存储在所述存储器中。
6.根据权利要求2所述的存储器系统,其中所述队列管理器通过使用与所述存储器中存储的所述垃圾收集信息相对应的状态信息来检测所述牺牲块的类型信息,
根据所述牺牲块的类型信息,将所述垃圾收集信息分类为并行垃圾收集组或串行垃圾收集组,并且
将所分类的垃圾收集信息顺序地排队到相应并行垃圾收集队列或串行垃圾收集队列。
7.根据权利要求2所述的存储器系统,其中将关于待与所述主机任务操作并行地执行的垃圾收集操作的牺牲块的垃圾收集信息排队在所述并行命令队列中。
8.根据权利要求2所述的存储器系统,其中将关于待在不执行所述主机任务操作的情况下被执行所述垃圾收集操作的牺牲块的垃圾收集信息排队在所述串行命令队列中。
9.根据权利要求2所述的存储器系统,其中所述触发时间点取决于所述主机任务操作。
10.根据权利要求9所述的存储器系统,其中当在所述触发时间点执行所述主机任务操作时,所述垃圾收集管理器确定所述垃圾收集信息是否被排队在所述并行命令队列中,以便并行地执行所述主机任务操作和所述垃圾收集操作。
11.根据权利要求10所述的存储器系统,
其中当确定所述垃圾收集信息被排队在所述并行命令队列中时,所述垃圾收集管理器根据被排队在所述并行命令队列中的垃圾收集信息来执行垃圾收集,并且
其中当确定所述垃圾收集信息未被排队在所述并行命令队列中时,所述垃圾收集管理器根据被排队在所述串行命令队列中的垃圾收集信息来执行垃圾收集,以在空闲时段执行所述垃圾收集操作。
12.根据权利要求9所述的存储器系统,其中当在所述触发时间点执行所述垃圾收集操作时,所述垃圾收集管理器确定所述垃圾收集信息是否被排队在所述串行命令队列中,以便串行地执行所述主机任务操作和所述垃圾收集操作。
13.根据权利要求11所述的存储器系统,
其中当确定所述垃圾收集信息被排队在所述串行命令队列中时,所述垃圾收集管理器根据被排队在所述串行命令队列中的垃圾收集信息来执行所述垃圾收集操作,并且
其中当确定所述垃圾收集信息未被排队在所述串行命令队列中时,所述垃圾收集管理器根据被排队在所述并行命令队列中的垃圾收集信息来执行所述垃圾收集操作。
14.根据权利要求2所述的存储器系统,其中所述垃圾收集管理器根据所述垃圾收集信息来将所述牺牲块的所有有效页面临时存储在所述存储器中,并且将所有所存储的有效页面复制到目标块。
15.根据权利要求14所述的存储器系统,其中所述垃圾收集管理器从所述并行命令队列或所述串行命令队列中删除已对所述牺牲块执行所述垃圾收集操作的垃圾收集信息。
16.一种存储器系统的操作方法,所述存储器系统包括存储器装置和控制器,所述存储器装置包括多个管芯,所述多个管芯中的每个包括多个存储块,所述控制器包括存储器并且通过经由多个数据路径中的至少一个向所述存储器装置传送数据来执行主机任务操作和垃圾收集操作,所述操作方法包括:
确定所述主机任务操作和所述垃圾收集操作是否可并行地执行;
检测牺牲块;
将对应于所述牺牲块的垃圾收集信息和状态信息存储在所述存储器中,所述垃圾收集信息包括所述牺牲块的地址信息,并且所述状态信息指示对所述牺牲块的所述垃圾收集操作是否可与所述主机任务操作并行地执行;
根据所述状态信息来将所述垃圾收集信息顺序地排队到并行命令队列或串行命令队列;
根据触发时间点来确定垃圾收集类型;以及
根据被排队在对应于所述垃圾收集类型的所述并行命令队列或所述串行命令队列中的垃圾收集信息,并行地或串行地执行所述垃圾收集操作。
17.根据权利要求16所述的操作方法,其中确定所述主机任务操作和所述垃圾收集操作是否可并行地执行的步骤包括:
确定所述多个管芯之中的除了包括开放块的第n管芯之外的剩余管芯中是否存在一个或多个封闭块;
当所述剩余管芯中存在一个或多个封闭块时,确定所述主机任务操作和所述垃圾收集操作可并行地执行;以及
当所述剩余管芯中不存在封闭块时,确定所述主机任务操作和所述垃圾收集操作可串行地执行。
18.根据权利要求16所述的操作方法,其中当确定所述主机任务操作和所述垃圾收集操作可并行地执行时,从所述剩余管芯中的多个封闭块中选择所述牺牲块。
19.根据权利要求17所述的操作方法,其中当确定所述主机任务操作和所述垃圾收集操作不可并行地执行时,从所述第n管芯中的多个封闭块中选择所述牺牲块。
20.根据权利要求16所述的操作方法,其中将关于所选择的牺牲块的垃圾收集信息和指示所述主机任务操作和所述垃圾收集操作是否可并行地执行的所述状态信息存储在所述存储器中。
21.根据权利要求16所述的操作方法,其中将所述垃圾收集信息顺序地排队的步骤包括:
通过使用与所述存储器中存储的所述垃圾收集信息相对应的状态信息来检测所述牺牲块的类型信息,
根据所述牺牲块的类型信息,将所述垃圾收集信息分类为并行垃圾收集组或串行垃圾收集组;以及
将所分类的垃圾收集信息顺序地排队到相应并行垃圾收集队列或串行垃圾收集队列。
22.根据权利要求16所述的操作方法,其中将关于待与所述主机任务操作待并行地执行所垃圾收集操作的牺牲块的垃圾收集信息排队在所述并行命令队列中。
23.根据权利要求16所述的操作方法,其中将关于待在不执行所述主机任务操作的情况下被执行所述垃圾收集操作的牺牲块的垃圾收集信息排队在所述串行命令队列中。
24.根据权利要求16所述的操作方法,其中所述触发时间点取决于所述主机任务操作。
25.根据权利要求24所述的操作方法,其中执行所述垃圾收集操作包括:
当在所述触发时间点执行所述主机任务操作时,确定所述垃圾收集信息是否被排队在所述并行命令队列中,以便并行地执行所述主机任务操作和所述垃圾收集操作;以及
根据所述垃圾收集信息来执行所述垃圾收集操作。
26.根据权利要求25所述的操作方法,
其中当确定所述垃圾收集信息被排队在所述并行命令队列中时,根据被排队在所述并行命令队列中的垃圾收集信息来执行垃圾收集,并且
其中当确定所述垃圾收集信息未被排队在所述并行命令队列中时,根据被排队在所述串行命令队列中的垃圾收集信息来执行垃圾收集,以在空闲时段执行所述垃圾收集操作。
27.根据权利要求24所述的操作方法,其中当在所述触发时间点执行所述垃圾收集操作时,确定所述垃圾收集信息是否被排队在所述串行命令队列中,以便串行地执行所述主机任务操作和所述垃圾收集操作。
28.根据权利要求27所述的操作方法,
其中当确定所述垃圾收集信息被排队在所述串行命令队列中时,根据被排队在所述串行命令队列中的垃圾收集信息来执行垃圾收集,并且
其中当确定所述垃圾收集信息未被排队在所述串行命令队列中时,根据被排队在所述并行命令队列中的垃圾收集信息来执行垃圾收集。
29.根据权利要求16所述的操作方法,其中根据所述垃圾收集信息来执行所述垃圾收集操作的步骤包括:
根据所述垃圾收集信息来将所述牺牲块的所有有效页面临时存储在所述存储器中,并且将所有所存储的有效页面复制到目标块;并且
从所述并行命令队列或所述串行命令队列中删除已对所述牺牲块执行所述垃圾收集操作的垃圾收集信息。
30.一种存储器系统,包括:
存储器装置,包括可操作地联接到各个通道的管芯,并且所述管芯中的每个包括存储块;以及
控制器,通过所述通道来控制所述存储器装置以:
与所述主机任务操作并行地对与主机任务操作的目标存储块所在的管芯不同的管芯中的第一牺牲块执行装置任务操作,并且
在与所述目标存储块相同的管芯的空闲时间期间,对所述相同的管芯中的第二牺牲块执行装置任务操作。
31.一种控制器的操作方法,所述控制器通过通道控制存储器装置,所述存储器装置包括分别可操作地联接到所述通道的管芯并且所述管芯中的每个包括存储块,所述方法包括:
控制所述存储器装置,以与所述主机任务操作并行地对与主机任务操作的目标存储块所在的管芯不同的管芯中的第一牺牲块执行装置任务操作;并且
控制所述存储器装置,以在与所述目标存储块相同的管芯的空闲时间期间,对所述相同的管芯中的第二牺牲块执行装置任务操作。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR10-2019-0067907 | 2019-06-10 | ||
KR1020190067907A KR20200141212A (ko) | 2019-06-10 | 2019-06-10 | 가비지콜렉션 동작을 위한 메모리 시스템 및 메모리 시스템의 동작방법 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112069086A true CN112069086A (zh) | 2020-12-11 |
Family
ID=73650907
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010245074.7A Withdrawn CN112069086A (zh) | 2019-06-10 | 2020-03-31 | 用于垃圾收集操作的存储器系统及其操作方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11249903B2 (zh) |
KR (1) | KR20200141212A (zh) |
CN (1) | CN112069086A (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20210158043A (ko) * | 2020-06-23 | 2021-12-30 | 삼성전자주식회사 | 스트림 분류 번호에 따른 데이터 분류 스토리지 장치 및 그 동작 방법 |
KR20220030090A (ko) * | 2020-09-02 | 2022-03-10 | 에스케이하이닉스 주식회사 | 저장 장치 및 그 동작 방법 |
US11868643B2 (en) * | 2020-12-16 | 2024-01-09 | Micron Technology, Inc. | Background memory scan block selection |
US11797228B2 (en) | 2021-06-24 | 2023-10-24 | Western Digital Technologies, Inc. | Efficient handling of background operations for improving sustained performance of host reads and writes |
US11861228B2 (en) | 2021-08-06 | 2024-01-02 | Micron Technology, Inc. | Memory status command aggregation |
US20230176778A1 (en) * | 2021-12-06 | 2023-06-08 | Micron Technology, Inc. | Managing single-level and multi-level programming operations |
US20240070063A1 (en) * | 2022-08-30 | 2024-02-29 | Micron Technology, Inc. | Sequential garbage collection |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060184718A1 (en) * | 2005-02-16 | 2006-08-17 | Sinclair Alan W | Direct file data programming and deletion in flash memories |
US8473669B2 (en) * | 2009-12-07 | 2013-06-25 | Sandisk Technologies Inc. | Method and system for concurrent background and foreground operations in a non-volatile memory array |
US9009436B2 (en) * | 2011-08-09 | 2015-04-14 | SanDisk Technologies, Inc. | Flushed data alignment with physical structures |
US9652415B2 (en) | 2014-07-09 | 2017-05-16 | Sandisk Technologies Llc | Atomic non-volatile memory data transfer |
US9645744B2 (en) | 2014-07-22 | 2017-05-09 | Sandisk Technologies Llc | Suspending and resuming non-volatile memory operations |
US10254998B2 (en) | 2015-11-03 | 2019-04-09 | Samsung Electronics Co., Ltd. | Coordinated garbage collection of flash devices in a distributed storage system |
CN106506393A (zh) * | 2016-02-05 | 2017-03-15 | 华为技术有限公司 | 一种数据流处理方法、装置和系统 |
KR20180053027A (ko) * | 2016-11-11 | 2018-05-21 | 삼성전자주식회사 | 스토리지 장치 및 그 동작 방법 |
US20180275922A1 (en) * | 2017-03-27 | 2018-09-27 | Siamack Nemazie | Solid State Disk with Consistent Latency |
-
2019
- 2019-06-10 KR KR1020190067907A patent/KR20200141212A/ko active Search and Examination
-
2020
- 2020-02-05 US US16/782,880 patent/US11249903B2/en active Active
- 2020-03-31 CN CN202010245074.7A patent/CN112069086A/zh not_active Withdrawn
Also Published As
Publication number | Publication date |
---|---|
US20200387447A1 (en) | 2020-12-10 |
US11249903B2 (en) | 2022-02-15 |
KR20200141212A (ko) | 2020-12-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112069086A (zh) | 用于垃圾收集操作的存储器系统及其操作方法 | |
US11669277B2 (en) | Latency-based scheduling of command processing in data storage devices | |
US10838859B2 (en) | Recency based victim block selection for garbage collection in a solid state device (SSD) | |
US11030094B2 (en) | Apparatus and method for performing garbage collection by predicting required time | |
KR101498673B1 (ko) | 반도체 드라이브, 그것의 데이터 저장 방법, 그리고 그것을포함한 컴퓨팅 시스템 | |
KR101388410B1 (ko) | Lsb 및 msb 페이지들에의 선택적 데이터 저장 | |
US8631192B2 (en) | Memory system and block merge method | |
CN111831583A (zh) | 用于传送存储器系统中的映射段的设备和方法 | |
US11216368B2 (en) | Memory system for garbage collection using page offsets, invalid offset ratio, sequential ratio, and logical address prediction | |
CN110825659B (zh) | 用于检查存储器系统中的块中的有效数据的设备和方法 | |
US11392309B2 (en) | Memory system for performing migration operation and operating method thereof | |
CN110928807A (zh) | 用于检查存储器系统中的有效数据的设备和方法 | |
US11693596B2 (en) | Pre-emptive storage strategies to reduce host command collisions | |
CN111796765A (zh) | 优化数据存储系统性能的方法 | |
US11487658B2 (en) | Memory system including plural regions storing data and operating method thereof | |
US11106390B1 (en) | Combining in-process reads to reduce die collisions | |
KR20200014175A (ko) | 소요시간을 예측하여 가비지 컬렉션을 수행하는 방법 및 장치 | |
US11720280B2 (en) | Storage system and method for improving utilization of a communication channel between a host and the storage system | |
KR101609304B1 (ko) | 멀티칩 플래시 저장장치 및 그 방법 | |
US11966635B2 (en) | Logical unit number queues and logical unit number queue scheduling for memory devices | |
US20240086106A1 (en) | Accelerator Queue in Data Storage Device | |
CN114968833A (zh) | 提高企业级固态存储设备顺序写性能的方法与存储设备 | |
KR20230115196A (ko) | 메모리 블록을 할당 해제하는 스토리지 컨트롤러, 그것의 동작하는 방법, 및 그것을 포함하는 스토리지 장치의 동작하는 방법 |
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: 20201211 |
|
WW01 | Invention patent application withdrawn after publication |