CN109800177B - 垃圾收集方法、执行方法的存储设备和含设备的计算系统 - Google Patents

垃圾收集方法、执行方法的存储设备和含设备的计算系统 Download PDF

Info

Publication number
CN109800177B
CN109800177B CN201811358058.8A CN201811358058A CN109800177B CN 109800177 B CN109800177 B CN 109800177B CN 201811358058 A CN201811358058 A CN 201811358058A CN 109800177 B CN109800177 B CN 109800177B
Authority
CN
China
Prior art keywords
garbage collection
stream
memory
memory blocks
memory block
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201811358058.8A
Other languages
English (en)
Other versions
CN109800177A (zh
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.)
Samsung Electronics Co Ltd
Original Assignee
Samsung Electronics Co Ltd
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 Samsung Electronics Co Ltd filed Critical Samsung Electronics Co Ltd
Publication of CN109800177A publication Critical patent/CN109800177A/zh
Application granted granted Critical
Publication of CN109800177B publication Critical patent/CN109800177B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0608Saving storage space on storage systems
    • 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/0253Garbage collection, i.e. reclamation of unreferenced memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0652Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
    • 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
    • G06F3/0616Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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

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)
  • Memory System (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

一种操作存储设备以在具有多个存储块的非易失性存储器件上执行垃圾收集操作的方法,所述存储设备被配置为基于多流方案操作,使得多个数据基于多个流中的哪一个与多个数据相关联被写入到所述存储设备中,该方法可以包括:选择多个存储块中的至少两个存储块作为牺牲存储块,使得牺牲存储块被配置为存储与多个流的相同流相关联的数据;和对牺牲存储块执行垃圾收集操作。

Description

垃圾收集方法、执行方法的存储设备和含设备的计算系统
相关申请的交叉引用
本申请要求于2017年11月16日在韩国知识产权局提交的韩国专利申请第10-2017-0153405号的优先权,其内容通过引用整体并入本文。
技术领域
示例实施例一般涉及存储设备。例如,至少一些示例实施例涉及执行垃圾收集的方法、执行该方法的存储设备以及包括存储设备的计算系统。
背景技术
某些类型的数据存储设备包括一个或多个半导体存储设备。这种数据存储设备的示例包括固态驱动器(SSD)。与传统的硬盘驱动器(HDD)相比,这些类型的数据存储设备可享有各种设计和性能优势。仅举几例,潜在优点的示例包括没有移动的机械部件、更高的数据访问速度、改进的稳定性和耐用性以及低功耗。这些类型的数据存储设备通常包括非易失性存储器件,例如闪存。在SSD的闪存中,可以在写入操作之前执行擦除操作。此外,在SSD中,可以基于页面(或扇区)执行写入操作,而可以基于块执行擦除操作,其中块包括多个页面(或扇区)。当数据连续写入闪存时,数据可能会散布在整个闪存中。为了获得可以写入数据的空闲存储块或存储空间,可以不时地执行垃圾收集操作,其将一个存储块的有效页面移动到另一个存储块并擦除一个存储块。
发明内容
至少一个示例实施例涉及一种操作存储设备以在具有多个存储块的非易失性存储器件上执行垃圾收集操作的方法,所述存储设备被配置为基于多流方案操作,使得多个数据基于多个流中的哪一个与多个数据相关联被写入到所述存储设备中。在至少一个示例实施例中,该方法包括选择多个存储块中的至少两个存储块作为牺牲存储块,使得牺牲存储块被配置为存储与多个流的相同流相关联的数据;和对牺牲存储块执行垃圾收集操作。
至少一个示例实施例涉及一种存储设备。在至少一个示例实施例中,存储设备包括:非易失性存储器件,包括多个存储块;和存储控制器,配置为,控制非易失性存储器件基于多流方案操作,使得基于多个流中的哪一个与多个数据相关联,将多个数据写入多个存储块,选择多个存储块中的至少两个存储块作为牺牲存储块,使得牺牲存储块被配置为存储与多个流的相同流相关联的数据,以及对牺牲存储块执行垃圾收集操作。
根据示例实施例,计算系统包括:主机,被配置为生成写入命令和写入数据,写入命令请求数据写入操作;和存储设备,被配置为从主机接收写入命令和写入数据。该存储设备包括:非易失性存储器件,包括:多个存储块,配置用于存储写入数据;和存储控制器,配置为,基于多流方案操作,使得基于多个流中的哪一个与写入数据相关联,将写入数据写入多个存储块中;选择多个存储块中的至少两个存储块作为牺牲存储块,使得牺牲存储块被配置为存储与多个流的相同流相关联的数据;以及对牺牲存储块执行垃圾收集操作。
在根据示例实施例的执行垃圾收集的方法和存储设备中,可以在考虑流的情况下对存储具有相同流的数据的存储块执行垃圾收集操作(例如,基于多个流)。例如,可以选择仅存储具有相同流的数据的存储块作为牺牲存储块以执行垃圾收集操作。即使有效页面的数量相对较小,也可以不选择与另一个流存储数据的存储块作为牺牲存储块。因此,在执行垃圾收集操作之后,包括在存储设备中的每个存储块可以仅存储具有相同流的数据,多个存储块可以连续且一致地被分类为多个流并由多个流管理,因此存储设备可以具有相对更多的改进和增强的性能和耐用性。
附图说明
通过以下结合附图的详细描述,将更清楚地理解说明性的非限制性示例实施例。
图1是示出根据示例实施例的执行垃圾收集的方法的流程图。
图2是用于描述根据示例实施例的执行垃圾收集的方法的示例的图。
图3是示出在图1的方法中选择牺牲存储块的示例的流程图。
图4是用于描述根据示例实施例的执行垃圾收集的方法的另一示例的图。
图5是示出根据示例实施例的执行垃圾收集的方法的流程图。
图6是示出在图5的方法中在流映射表中登记多个存储块和多个流ID之间的关系的示例的流程图。
图7是示出图5的方法中的流映射表的示例的表。
图8是示出在图5的方法中管理垃圾收集预期成本表的示例的流程图。
图9是示出图5的方法中的垃圾收集预期成本表的示例的表。
图10是示出根据示例实施例的存储设备的框图。
图11是示出包括在图10的存储设备中的非易失性存储器件的示例的框图。
图12A和12B是示出包括在图11的非易失性存储器件中的存储单元阵列的示例的图。
图13是示出包括在图10的存储设备中的存储控制器的示例的框图。
图14是示出根据示例实施例的包括存储设备的计算系统的框图。
具体实施方式
将参照附图更全面地描述各种示例实施例,附图中示出了实施例。然而,示例实施例可以以许多不同的形式实施,并且不应该被解释为限于这里阐述的示例实施例。贯穿本申请,相同的附图标记表示相同的元件。
图1是示出根据示例实施例的执行垃圾收集的方法的流程图。
参见图1,根据示例实施例的执行垃圾收集的方法可以由包括包括多个存储块的非易失性存储器件的存储设备执行。存储设备可以被配置为基于多流方案进行操作,其中写入多个存储块的多个数据被分类为多个流并由多个流管理,使得存储设备将与相同流相关联的数据写入同一个内存块。换句话说,包括在存储设备中的一个存储块可以仅存储具有相同流的数据。
在操作S100中,存储设备选择多个存储块中的至少两个存储块,作为牺牲存储块。被选为牺牲存储块的至少两个存储块存储有相同的流的数据。
在操作S200中,存储设备可以对牺牲存储块执行垃圾收集操作。垃圾收集操作可以表示用于在存储设备中获得或准备空闲存储块的操作。牺牲存储块可以表示作为垃圾收集操作的对象或目标的存储块。牺牲存储块可以被称为源存储块。
存储设备被配置为基于多流方案进行操作,并且对存储具有相同流的数据的至少两个存储块执行垃圾收集操作。存储设备可以执行垃圾收集操作,使得在执行垃圾收集操作之后,包括在存储设备中的每个存储块可以仅存储具有相同流的数据,因此多个存储块可以连续且一致地分类为多个流并由多个流管理。
图2是用于描述根据示例实施例的执行垃圾收集的方法的示例的图。
在图2和下面的附图中,“BEFORE_GC”表示在执行垃圾收集操作之前存储在多个存储块中的数据的状态,“AFTER_GC”表示在执行垃圾收集操作之后存储在多个存储块中的数据的状态。
参见图1和图2,包括在存储设备中的非易失性存储器件可包括多个存储块DST_BLK1、BLK11、BLK12、BLK13和BLK14。每个存储块可以包括多个页面。例如,多个存储块DST_BLK1、BLK11、BLK12、BLK13和BLK14可以具有相同的尺寸并且可以包括相同数量的页面。多个页面可以具有相同的尺寸,并且可以包括相同数量的非易失性存储器单元。非易失性存储器件可以以页为单位执行数据写入操作和数据读取操作,并且可以以存储块为单位执行数据擦除操作。
在执行垃圾收集操作之前,存储块DST_BLK1可以包括空闲页面FP11、FP12、FP13和FP14,存储块BLK11可以包括有效页面VP11和VP12以及无效页面IVP11和IVP12,存储块BLK12可以包括有效页面VP13和VP14以及无效页面IVP13和IVP14,存储块BLK13可以包括有效页面VP15、VP16和VP17以及无效页面IVP15,并且存储块BLK14可以包括有效页面VP18、VP19和VP1A以及无效页面IVP16。换句话说,存储块DST_BLK1可以是空闲存储块,并且存储块BLK11、BLK12、BLK13和BLK14中的每一个可以是已经存储或写入数据的已使用块。
另外,基于多流方案,每个存储块可以存储具有相同流的数据。例如,包括在存储块BLK11、BLK13和BLK14中的有效页面VP11、VP12、VP15、VP16、VP17、VP18、VP19和VP1A可以存储具有第一流的数据,并且存储块BLK12中包括的有效页面VP13和VP14可以存储具有与第一流不同的第二流的数据。在图2中,存储具有第一流的数据的有效页面VP11、VP12、VP15、VP16、VP17、VP18、VP19和VP1A以及存储具有第二流的数据的有效页面VP13和VP14通过不同类型的阴影线彼此区分。
在一些示例实施例中,可以基于访问或更新数据的频率(例如,访问或更新数据的次数)来划分、分类或归类多个流。例如,具有第一流的数据可以是热数据或相对频繁和/或重复访问或更新的动态数据,并且具有第二流的数据可以是相对不频繁和/或很少访问或更新的冷数据或静态数据。在其他示例实施例中,可以基于各种标准或规范中的至少一个来划分、分类或归类多个流。
当要执行垃圾收集操作时,如上所述,在操作S100中,存储设备可以选择存储具有与牺牲存储块相同的流的数据的存储块。例如,存储具有不同流的数据的存储块BLK11和BLK12可以不被选择作为牺牲存储块,并且存储具有相同流(例如,第一流)的数据的存储块BLK11、BLK13和BLK14可以是被选为牺牲存储块。
此外,如上所述,在操作S200中,存储设备可以对被选择作为牺牲存储块的存储块BLK11、BLK13和BLK14执行垃圾收集操作。例如,存储块DST_BLK1可以用作垃圾收集操作的目标存储块。
例如,可以将包括在存储块BLK11中的有效页面VP11和VP12复制到存储块DST_BLK1中,并且可以对存储块BLK11执行数据擦除操作以将存储块BLK11改变为空闲存储块。可以对存储块BLK13和BLK14执行类似的操作,然后存储块BLK11可以用作附加的目标存储块。例如,包括在存储块BLK13中的有效页面VP15和VP16可以被复制到存储块DST_BLK1中,包括在存储块BLK13中的有效页面VP17可以被复制到存储块BLK11中,并且包括在存储块BLK14中的有效页面VP18、VP19、VP1A和VP1A可以被复制到存储块BLK11中。可以对存储块BLK13和BLK14执行数据擦除操作,以将每个存储块BLK13和BLK14改变为空闲存储块。
结果,在执行垃圾收集操作之后,存储块DST_BLK1可以包括有效页面VP11、VP12、VP15和VP16,存储块BLK11可以包括有效页面VP17、VP18、VP19和VP1A,存储块BLK13可以包括空闲页FP15、FP16、FP17和FP18,并且存储块BLK14可以包括空闲页FP19、FP1A、FP1B和FP1C。尽管未在图2中示出,在垃圾收集操作之后存储在存储块BLK12中的数据的状态可以与在垃圾收集操作之前存储在存储块BLK12中的数据的状态基本相同。与垃圾收集操作之前相比,在垃圾收集操作之后可以添加一个或多个空闲存储块。
另外,与垃圾收集操作之前一样,每个存储块可以在垃圾收集操作之后存储具有相同流的数据。例如,包括在存储块DST_BLK1和BLK11中的有效页面VP11、VP12、VP15、VP16、VP17、VP18、VP19和VP1A可以存储具有第一流的数据。
通常,特定类型的数据可能倾向于具有相似的数据生命时间或生命周期,并且可能倾向于在相似的时间点无效。当采用多流方案时,具有相似数据生命时间或生命周期并且在相似时间点无效的数据可以被设置为具有相同的流,可以在物理上存储到相同的存储块中,可以在类似或相同的时间间隔期间被有效,并且可以立即被无效,从而改善和增强存储设备的性能和耐用性。多流方案可以称为流指令方案,并且是标准化的。
在基于多流方案操作的传统存储设备中,可以不考虑流来执行垃圾收集操作,因此可能存在具有不同流的数据被存储并混合在相同存储块中的问题。常规存储设备执行垃圾收集操作。例如,传统存储设备可以基于贪婪算法(greedy algorithm)执行垃圾收集操作,贪婪算法中选择具有最小数量的有效页面的存储块作为牺牲存储块。例如,在图2的示例中,传统存储设备可以选择具有最小数量的有效页面的存储块BLK11和BLK12作为牺牲存储块,而不考虑流,以执行垃圾收集操作。在对存储块BLK11和BLK12执行垃圾收集操作之后,具有不同流(例如,第一和第二流)的数据可以存储在一个存储块(例如,存储块DST_BLK1)中。
相反,在一个或多个示例实施例中,存储设备可以考虑流(例如,基于多个流)执行垃圾收集操作,使得存储具有相同流的数据的存储块被选为牺牲块,即使这些块没有最小数量的有效页面。
例如,如图2所示,可以选择仅存储具有第一流的数据的存储块BLK11、BLK13和BLK14作为牺牲存储块以执行垃圾收集操作。即使存储块BLK12中的有效页面的数量相对较小,也可以不选择存储具有与第一流不同的第二流的数据的存储块BLK12作为牺牲存储块。因此,在执行垃圾收集操作之后,包括在存储设备中的每个存储块可以仅存储具有相同流的数据,多个存储块可以连续且一致地被分类成多个流并由多个流管理,因此存储设备可以具有相对更多的改进和增强的性能和耐用性。
图3是示出在图1的方法中选择牺牲存储块的示例的流程图。
参见图1和图3,如上所述,在操作S100中,存储设备可以选择存储具有与牺牲存储块相同的流的数据的存储块。在选择存储具有与牺牲存储块相同的流的数据的至少两个存储块时,存储设备可以计算垃圾收集预期成本,并基于垃圾收集预期成本选择牺牲存储块。
例如,在操作S110中,存储设备可以计算存储在第一存储块中的第一流和具有第一流的第一数据的第一垃圾收集预期成本。
在操作S120中,存储设备可以针对存储在第二存储块中的第二流和具有第二流的第二数据计算第二垃圾收集预期成本。第二流可以与第一流不同。
在操作S130中,存储设备可以基于第一垃圾收集预期成本和第二垃圾收集预期成本来选择第一存储块和第二存储块中的一个作为牺牲存储块。
在一些示例实施例中,当第一垃圾收集预期成本小于第二垃圾收集预期成本时,存储设备可以选择第一存储块作为牺牲存储块。相反,当第二垃圾收集预期成本小于第一垃圾收集预期成本时,存储设备可以选择第二存储块作为牺牲存储块。换句话说,存储设备可以选择与具有相对低的垃圾收集预期成本的流相对应的存储块作为牺牲存储块。
图4是用于描述根据示例实施例的执行垃圾收集的方法的另一示例的图。
参见图1、3和4,包括在存储设备中的非易失性存储器件可包括多个存储块DST_BLK2、BLK21、BLK22、BLK23、BLK24和BLK25。每个存储块可以包括多个页面。
在执行垃圾收集操作之前,存储块DST_BLK2可以包括空闲页面FP21、FP22、FP23和FP24,存储块BLK21可以包括有效页面VP21和VP22以及无效页面IVP21和IVP22,存储块BLK22可以包括有效页面VP23和VP24以及无效页面IVP23和IVP24,存储块BLK23可以包括有效页面VP25、VP26和VP27以及无效页面IVP25,存储块BLK24可以包括有效页面VP28、VP29和VP2A以及无效页面IVP26,存储块BLK25可以包括有效页面VP2B和VP2C以及无效页面IVP27和IVP28。另外,基于多流方案,包括在存储块BLK21、BLK23和BLK24中的有效页面VP21、VP22、VP25、VP26、VP27、VP28、VP29和VP2A可以存储具有第一流的数据,并且包括在存储块BLK22和BLK25中的有效页面VP23、VP24、VP2B和VP2C可以存储具有与第一流不同的第二流的数据。
与图2的示例不同,存在图4的示例中的情况中可以对存储具有第一流的数据的存储块BLK21、BLK23和BLK24或者存储具有第二流的数据的存储块BLK22和BLK25执行垃圾收集操作。在该示例中,基于参考图3描述的垃圾收集预期成本,可以选择第一组存储块BLK21、BLK23和BLK24以及第二组存储块BLK22和BLK25中的一个作为牺牲存储块。
可以基于同一组存储块中包括的有效页面的数目(或数量)来计算垃圾收集预期成本。在一些示例实施例中,存储设备可以将垃圾收集预期成本计算为包括在同一组存储块中的有效页面的数量的总和。在其他示例实施例中,存储设备可以将垃圾收集预期成本计算为包括在同一组存储块中的有效页面的比率的总和,其可以通过相同组的存储块包括的有效页面的数量的总和除以一个存储块中包含的页面数量来获得。
在操作S110中,存储设备可以计算存储在第一组存储块BLK21、BLK23和BLK24中的第一流和具有第一流的数据的第一垃圾收集预期成本。例如,当垃圾收集预期成本表示为有效页面数量的总和时,第一垃圾收集预期成本可以是8,这对应于有效页面数量的总和(例如,有效页面VP21、VP22、VP25、VP26、VP27、VP28、VP29和VP2A)。再例如,当垃圾收集预期成本表示为有效页面的比率之和时,因为一个存储块包括图4中的四个页面,第一垃圾收集预期成本可以是2或200%,这是通过有效页面数量的总和(例如,8个有效页面VP21、VP22、VP25、VP26、VP27、VP28、VP29和VP2A)除以一个存储块中包括的页面数量(例如,4)得到的。
类似地,在操作S120中,存储设备可以计算存储在第二组存储块BLK22和BLK25中的第二流以及具有第二流的数据的第二垃圾收集预期成本。例如,第二垃圾收集预期成本可以是4,其对应于有效页面的数量的总和(例如,有效页面VP23、VP24、VP2B和VP2C)。再例如,第二垃圾收集预期成本可以是1或100%,其通过将有效页面的数量的总和(例如,4个有效页面VP23、VP24、VP2B和VP2C)除以包括在一个存储块中的页面数(例如,4)来获得。
在操作S130中,存储设备可以基于第一垃圾收集预期成本和第二垃圾收集预期成本来选择牺牲存储块。在图4的示例中,第二垃圾收集预期成本小于第一垃圾收集预期成本,因此,存储设备可以选择存储具有第二流的数据的第二组存储块BLK22和BLK25作为牺牲存储块。
垃圾收集预期成本可以表示为获得或准备一个空闲内存块而复制的有效页面数的总和。由于为了获得或准备一个空闲存储块而复制的有效页面数量的总和减少,使得垃圾收集操作的效率增加,所以可以选择与具有相对低的垃圾收集预期成本的流对应的存储块作为牺牲存储块,然后可以对牺牲存储块执行垃圾收集操作。
在操作S200中,存储设备可以对被选择作为牺牲存储块的存储块BLK22和BLK25执行垃圾收集操作。例如,存储块DST_BLK2可以用作垃圾收集操作的目的地存储块。
例如,可以将包括在存储块BLK22中的有效页面VP23和VP24复制到存储块DST_BLK2中,并且可以对存储块BLK22执行数据擦除操作以将存储块BLK22改变为空闲存储块。类似地,可以将包括在存储块BLK25中的有效页面VP2B和VP2C复制到存储块DST_BLK2中,并且可以在存储块BLK25上执行数据擦除操作以将存储块BLK25改变为空闲存储块。
结果,在执行垃圾收集操作之后,存储块DST_BLK2可以包括有效页面VP23、VP24、VP2B和VP2C,存储块BLK22可以包括空闲页FP25、FP26、FP27和FP28,以及存储块BLK25可以包括空闲页面FP29、FP2A、FP2B和FP2C。尽管未在图4中示出,在垃圾收集操作之后存储在存储块BLK21、BLK23和BLK24中的数据的状态可以分别与在垃圾收集操作之前存储在存储块BLK21、BLK23和BLK24中的数据的状态基本相同。
尽管图3和4示出了可选择两个候选存储块组作为牺牲存储块的示例,示例实施例可以不限于此,并且可以选择三个或更多个两个候选存储块组作为牺牲存储块。例如,可以针对三个或更多个两个候选存储块组中的每一个计算垃圾收集预期成本,并且可以选择对应于具有最低垃圾收集预期成本的流的一组存储块作为牺牲存储块。
尽管图2和图4示出了存储设备包括特定数量的存储块并且每个存储块包括四个页面的示例,示例实施例可以不限于此,以及存储设备中包括的存储块的数量和/或包括在每个存储块中的页面的数量可以根据示例实施例改变。
图5是示出根据示例实施例的执行垃圾收集的方法的流程图。
参照图5,根据示例实施例的执行垃圾收集的方法由包括包括多个存储块的非易失性存储器件的存储设备执行。存储设备被配置为基于多流方案进行操作,其中写入多个存储块的多个数据被分类为多个流并由多个流管理,并且具有单个流的数据被写入单个存储块中。
在操作S300中,存储设备可以通过将多个流标识符(ID)中的每一个匹配到多个存储块中的相应一个中来在流映射表中登记多个存储块与多个流ID之间的关系。多个流ID分别表示多个流。
在操作S400中,存储设备可以管理针对不同流的垃圾收集预期成本表。垃圾收集预期成本表表示多个流的垃圾收集预期成本。将参考图6和图7详细描述流映射表。参照图8和图9将详细描述垃圾收集预期成本表。
在一些示例实施例中,每当多个存储块中的至少一个被分配用于数据写入操作或变为空闲存储块时,存储设备可以更新流映射表和垃圾收集预期成本表。换句话说,存储设备可以在存储设备通电并运行时实时(或在运行期间)更新流映射表和垃圾收集预期成本表。
在操作S100a中,存储设备可以选择多个存储块中的至少两个存储块作为牺牲存储块,使得被选择作为牺牲存储块的至少两个存储块存储具有相同流的数据。
图5中的步骤S100a可以类似于图1中的步骤S100。在图1中的步骤S100中,每当需要垃圾收集操作时,可以即时(on the fly)计算垃圾收集预期成本,如参考图3和4所述。在图5中的步骤S100a中,垃圾选择成本可以被更新并存储在垃圾收集预期成本表中,因此,存储设备可以选择牺牲存储块而无需等待即时计算垃圾收集预期成本。因此,可以更快速和迅速地执行垃圾收集操作。
在操作S200中,如上面关于图1所讨论的那样,对牺牲存储块执行垃圾收集操作。图5中的步骤S200可以与图1中的步骤S200基本相同。因此,为了简洁起见,在此省略重复的描述。
图6是示出在图5的方法中在流映射表中登记多个存储块和多个流ID之间的关系的示例的流程图。图7是示出图5的方法中的流映射表的示例的表。
参照图5、6和7,流映射表SMT可以包括多个存储块中的已使用的存储块BLOCK和多个流ID STREAM_ID。多个流ID STREAM_ID中的每一个可以表示存储在所使用的存储块BLOCK中的相应一个中的数据流。换句话说,流映射表SMT可以包括使用的存储块BLOCK和多个流ID STREAM_ID之间的一对一对应关系。与多个流ID STREAM_ID一样,可以基于存储块ID来登记使用的存储块BLOCK。
如上所述,在操作S300中,存储设备可以在流映射表中登记多个存储块与多个流ID之间的关系。
例如,在操作S310中,当存储块被分配用于数据写入操作时,存储设备可以将存储块和要存储的数据的流ID登记在流映射表中的存储块中。存储设备可以在最初请求对存储块的数据写入操作的时间点执行操作S310。
例如,在最初请求多个存储块中的第一存储块BLK1的数据写入操作的时间点,可以指定第一存储块BLK1用于存储具有第一流的第一数据,并且因此,第一存储块BLK1和表示第一流的第一流ID STR1可以登记在流映射表SMT中。类似地,在用于所述多个存储块中的第二存储块BLK2中的数据写入操作被最初请求的时间点,所述第二存储块BLK2和表示第二流的第二流ID STR2可以登记在流映射表SMT中。在最初请求第三存储块BLK3的数据写入操作的时间点,可以在流映射表SMT中登记第三存储块BLK3和表示第一流的第一流IDSTR1。在最初请求第四存储块BLK4的数据写入操作的时间点,可以在流映射表SMT中登记第四存储块BLK4和表示第三流的第三流ID STR3。在图7的示例中,第一存储块BLK1和第三存储块BLK3可以存储具有相同流的数据(例如,对应于第一流ID STR1的第一流)。
在操作S320中,当存储块变为空闲存储块时,存储设备可以从流映射表中删除存储块和与存储块对应的流ID。可以在完成对存储块的数据擦除操作的时间点执行步骤S320。
例如,在完成第一存储块BLK1的数据擦除操作的时间点,可以从流映射表SMT中删除第一存储块BLK1和第一流ID STR1。类似地,在完成第二存储块BLK2的数据擦除操作的时间点,可以从流映射表SMT中删除第二存储块BLK2和第二流ID STR2。在完成第三存储块BLK3的数据擦除操作的时间点,可以从流映射表SMT中删除第三存储块BLK3和第一流IDSTR1。在完成第四存储块BLK4的数据擦除操作的时间点,可以从流映射表SMT中删除第四存储块BLK4和第三流ID STR3。
在一些示例实施例中,流映射表SMT可以被提供为一种元数据。
图8是示出在图5的方法中管理垃圾收集预期成本表的示例的流程图。图9是示出图5的方法中的垃圾收集预期成本表的示例的表。
参见图5、8和9,垃圾收集预期成本表GCECT可以包括所述多个存储块中的候选存储块BLK31、BLK32、BLK33、BLK34、BLK35、BLK36、BLK37、BLK38、BLK39、BLK3A、BLK3B和BLK3C、与相同流ID对应的存储块的连接(例如,图9中的虚线和箭头)、以及用于多个流ID STREAM_ID的垃圾收集预期成本GC_EC。候选存储块可以表示实际使用并可选择用于垃圾收集操作的存储块,并且可以按有效页面的数量来排序。
在图9中,“VP_RATE”表示有效页面的数目(或数量)与一个存储块中的总页面的比率。为了便于描述,有效页面与总页面的比率在图9中示出,因为一个存储块中的总页面数量由各种实现改变。在图9中的“VP_RATE”中,“LEVEL5”表示其中有效页面与总页面的比率大于或等于约50%且小于约60%的候选存储块。“LEVEL6”表示其中有效页面与总页面的比率大于或等于约60%且小于约70%的候选存储块。“LEVEL7”表示其中有效页面与总页面的比率大于或等于约70%且小于约80%的候选存储块。“LEVEL8”表示其中有效页面与总页面的比率大于或等于约80%且小于约90%的候选存储块。尽管未在图9中示出,“LEVEL0”、“LEVEL1”、“LEVEL2”、“LEVEL3”、“LEVEL4”和“LEVEL9”可以进一步包括在垃圾收集预期成本表GCECT中。
如上面参考图5所讨论的那样,在操作S400中,存储设备可以管理垃圾收集预期成本表。
例如,在操作S410中,存储设备可以按有效页面数量对表示用于垃圾收集操作的可选存储块的候选存储块BLK31、BLK32、BLK33、BLK34、BLK35、BLK36、BLK37、BLK38、BLK39、BLK3A、BLK3B和BLK3C进行排序。例如,其中有效页面与总页面的比率为50%的候选存储块BLK31,BLK32和BLK33可以被布置在“LEVEL5”部分。其中有效页面与总页面的比率为60%的候选存储块BLK34、BLK35和BLK36以及其中有效页面与总页面的比率为65%的候选存储块BLK37可以布置在“LEVEL6”部分。其中有效页面与总页面的比率为70%的候选存储块BLK38和其中有效页面与总页面的比率为75%的候选存储块BLK39和BLK3A可以被布置在“LEVEL7”部分。其中有效页面与总页面的比率为80%的候选存储块BLK3B和BLK3B可以布置在“LEVEL8”部分。
在操作S420中,存储设备可以基于流映射表(例如,图7中的流映射表SMT)将对应于相同流ID的存储块连接在一起。例如,候选存储块BLK31、BLK39和BLK3A可以对应于表示第一流的第一流ID STR1,因此第一流ID STR1和候选存储块BLK31、BLK39和BLK3A可以彼此连接,如图9所示。类似地,候选存储块BLK32和BLK33可以对应于表示第二流的第二流IDSTR2,因此第二流ID STR2和候选存储块BLK32和BLK33可以彼此连接,如图9所示。
在操作S430中,存储设备可以针对多个流ID STREAM_ID计算垃圾收集预期成本GC_EC。如参考图4所述,垃圾收集预期成本可以是有效页面数量之和或有效页面比率之和。例如,当垃圾收集预期成本表示为有效页面的比率的总和时,第一流ID STR1的第一垃圾收集预期成本可以是200%,第二流ID的第二垃圾收集预期成本STR2可以是100%,如图9所示。另一个例子,当垃圾收集预期成本表示为有效页面数量的总和,并且当一个存储块包括K页,其中K是自然数时,第一流ID STR1的第一垃圾收集预期成本可以是2*K,并且第二流IDSTR2的第二垃圾收集预期成本可以是K。
在选择牺牲存储块时(例如,在步骤S100a中),存储设备可以搜索垃圾收集预期成本表GCECT以确定是否存在满足其中有效页面数量(或比率)之和大于或等于参考值的第一条件的流ID,并且可以选择与满足第一条件的流ID之一相对应的存储块作为牺牲存储块。例如,可以选择与满足第一条件的一个流ID相对应的存储块作为牺牲存储块,并且一个流ID可以具有最低的垃圾收集预期成本。
在一些示例实施例中,参考值可以对应于用于获得或准备一个空闲存储块的值。例如,当垃圾收集预期成本表示为有效页面的比率的总和时,参考值可以是100%。再例如,当垃圾收集预期成本表示为有效页面数量的总和时,并且当一个存储块包括K页,其中K是自然数时,参考值可以是K。换句话说,它可以确定是否存在至少一组能够获得或准备一个空闲存储块的候选存储块。
在图9的示例中,对应于第一流ID STR1的候选存储块BLK31、BLK39和BLK3A可以分别包括50%、25%和25%的无效页面,因此第一流ID STR1可以满足第一条件。另外,对应于第二流ID STR2的候选存储块BLK32和BLK33可以分别包括50%和50%的无效页面,因此第二流ID STR2也可以满足第一条件。可以选择对应于具有相对低的垃圾收集预期成本的第二流ID STR2的候选存储块BLK32和BLK33作为牺牲存储块,因此可以对存储块BLK32和BLK33执行垃圾收集操作。
尽管未在图9中示出,如果仅存在满足第一条件的一个流ID,则可以选择与一个流ID对应的存储块作为牺牲存储块,而不比较垃圾收集预期成本。如果没有满足第一条件的流ID,则不能选择牺牲存储块,因此可以不执行垃圾收集操作。
在一些示例实施例中,垃圾收集预期成本表GCECT可以以一种元数据来提供。
图10是示出根据示例实施例的存储设备的框图。
参见图10,根据示例实施例的存储设备100包括至少一个非易失性存储器件120以及控制非易失性存储器件120的存储控制器140,非易失性存储器件120包括多个存储块(BLOCK1,BLOCK2,...,BLOCKN)130,每个存储块具有多个非易失性存储单元。
在一些示例实施例中,存储设备100可以是固态驱动器(SSD)、多媒体卡(MMC)、嵌入式多媒体卡(eMMC)和通用闪存(UFS)之一。在其他示例实施例中,存储设备100可以是安全数字(SD)卡、微型SD卡、记忆棒、芯片卡、通用串行总线(USB)卡、智能卡、紧凑型闪存(CF))卡等。
如下面参考图13更详细地讨论的,存储控制器140可以包括存储器和处理电路。
存储器可以包括易失性存储器、非易失性存储器、随机存取存储器(RAM)、闪存、硬盘驱动器和光盘驱动器中的至少一个。存储器可以存储流映射表150和垃圾收集预期成本表160。
处理电路可以是但不限于处理器、中央处理单元(CPU)、控制器、算术逻辑单元(ALU)、数字信号处理器、微计算机、现场可编程门阵列(FPGA)、专用集成电路(ASIC)、片上系统(SoC)、可编程逻辑单元、微处理器或能够以限定方式执行操作的任何其他设备。
处理电路可以通过布局设计或执行存储在存储器(未示出)中的计算机可读指令来配置为专用计算机,以通过基于多流方案执行一个或多个数据写入或读取操作来控制非易失性存储器设备120的操作,并且考虑到多流方案执行垃圾收集操作。
存储控制器140基于从主机接收的命令和数据来控制非易失性存储器件120的操作,例如,数据写入或读取操作。例如,存储控制器140可以从主机接收用于请求数据写入操作的写入命令WCMD和要被存储到非易失性存储器件120中的写入数据WDAT,并且可以将写入数据WDAT存储到多个存储块130的至少一个中。
在一些示例实施例中,主机可以是各种电子系统之一,诸如个人计算机、膝上型计算机、移动电话、智能电话、平板计算机、个人数字助理(PDA)、企业数字助理(EDA)、便携式多媒体播放器(PMP)、数码相机、音乐播放器、便携式游戏机、导航设备、可穿戴设备、物联网(IoT)设备、万物互联网(IoE)设备、电子书、虚拟现实(VR)设备、增强现实(AR)设备等。
存储控制器140控制非易失性存储器件120,使得非易失性存储器件120基于多流方案进行操作。例如,基于多流方案,存储设备100或主机可以将写入数据WDAT分类为多个流,并且可以将具有单个流的数据写入单个存储块。例如,如将参考图14描述的那样,主机可以提供写入数据WDAT和多个流ID,每个流ID表示多个流中的相应一个流。或者,存储控制器140可以自己设置写入数据WDAT的多个流。
此外,在示例实施例中,存储控制器140控制非易失性存储器件120,使得非易失性存储器件120执行垃圾收集操作。存储控制器140可以基于参考图1到9描述的方法执行垃圾收集操作。
例如,存储控制器140可以选择多个存储块130中的至少两个存储块作为牺牲存储块,并且可以对牺牲存储块执行垃圾收集操作。如果存在两组或更多组候选存储块,则存储控制器140可以计算用于选择牺牲存储块的垃圾收集预期成本,并且可以使用流映射表150和垃圾收集预期成本表160来计算垃圾收集预期成本。
在存储设备100执行垃圾收集操作之后,包括在存储设备100中的每个存储块可以仅存储具有相同流的数据,并且多个存储块130可以连续且一致地分类为多个流和管理多个流。因此,存储设备100可具有相对改进和增强的性能和耐用性。
尽管未在图10中示出,垃圾收集预期成本表160可以用垃圾收集预期成本计算器代替,该垃圾收集预期成本计算器每当需要垃圾收集操作时即时计算垃圾收集预期成本。
图11是示出包括在图10的存储设备中的非易失性存储器件的示例的框图。
参见图11,非易失性存储器件200可包括存储单元阵列210、行译码器220、页缓冲电路230、数据输入/输出(I/O)电路240、电压发生器250和控制电路260。
存储器单元阵列210可以经由串选择线SSL、多个字线WL和地选择线GSL连接到行译码器220。存储器单元阵列210还可以经由多个位线BL连接到页面缓冲器电路230。
存储器单元阵列210可以包括连接到多个字线WL和多个位线BL的多个非易失性存储器单元。如将参考图12A和12B描述的那样,多个非易失性存储器单元可以布置成二维(2D)阵列结构或三维(3D)垂直阵列结构。
控制电路260可以从存储控制器(例如,图10中的存储控制器140)接收命令CMD和地址ADDR,并且可以基于命令CMD和地址ADDR控制行译码器220、页面缓冲器电路230、数据I/O电路240和电压发生器250对存储单元阵列210执行数据写入(或编程)/读取/擦除操作。
例如,控制电路260可以基于命令CMD生成用于控制电压发生器250的控制信号CON,并且可以基于地址ADDR生成行地址R_ADDR和列地址C_ADDR。控制电路260可以将行地址R_ADDR提供给行译码器220,并且可以将列地址C_ADDR提供给数据I/O电路240。
行译码器220可以经由串选择线SSL、多个字线WL和地选择线GSL连接到存储单元阵列210。行译码器220可以将多个字线WL中的至少一个确定为选择的字线,并且可以基于行地址R_ADDR将多个字线WL中的其余字线确定为未选择的字线。
电压发生器250可以基于控制信号CON生成非易失性存储器件200的操作所需的字线电压VWL。字线电压VWL可以经由行译码器220施加到多个字线WL。
例如,在数据擦除操作期间,电压发生器250可以将擦除电压施加到存储块的阱或公共源极线,并且可以将地电压施加到存储块的全部字线。在擦除验证操作期间,电压发生器250可以将擦除验证电压施加到存储块的所有字线,或者在逐字线的基础上顺序地施加擦除验证电压。在数据编程操作(或数据写入操作)期间,电压发生器250可以将编程电压施加到所选择的字线,并且可以将编程通过电压施加到未选择的字线。在程序验证操作期间,电压发生器250可以将编程验证电压施加到所选择的字线,并且可以将验证通过电压施加到未选择的字线。在数据读取操作期间,电压发生器250可以将读取电压施加到所选择的字线,并且可以将读取通过电压施加到未选择的字线。
页面缓冲器电路230可以经由多个位线BL连接到存储单元阵列210。页面缓冲器电路230可以包括多个页缓冲器。在一些示例实施例中,每个页面缓冲器可以连接到一个位线。在其他示例实施例中,每个页面缓冲器可以连接到两个或更多个位线。
页面缓冲器电路230可以存储要编程到存储器单元阵列210中的数据DAT,或者可以读取从存储器单元阵列210感测的数据DAT。换句话说,根据非易失性存储器件200的操作模式,页面缓冲器电路230可以用作写入驱动器或感测放大器。
数据I/O电路240可以经由数据线DL连接到页面缓冲电路230。数据I/O电路240可以基于列地址C_ADDR经由页面缓冲器电路230将数据DAT从非易失性存储器件200的外部(例如,从图10中的存储控制器140)提供到存储器单元阵列210,或者可以从存储单元阵列210提供数据DAT到非易失性存储器件100的外部。
图12A和12B是示出包括在图11的非易失性存储器件中的存储单元阵列的示例的图。图12A是示出NAND闪存器件中包括的存储器单元阵列的示例的电路图。图12B是示出垂直NAND快闪存储器件中包括的存储器单元阵列的示例的电路图。
参见图12A,存储单元阵列210a可以包括串选择晶体管SST、地选择晶体管GST和存储单元MC。串选择晶体管SST可以连接到位线BL(1),...,BL(m),并且地选择晶体管GST可以连接到公共源极线CSL。布置在同一行中的存储器单元可以串联布置在位线BL(1)~BL(m)中的一个与公共源极线CSL之间,并且布置在同一列中的存储器单元可以共同连接到字线WL(1),WL(2),WL(3),...,WL(n-1),WL(n)中的一个字线。换句话说,存储器单元MC可以串联连接在串选择晶体管SST和地选择晶体管GST之间,并且16、32或64字线可以设置在连接到串选择晶体管SST的串选择线SSL和连接到地选择晶体管GST的接地选择线GSL之间。
串选择晶体管SST可以连接到串选择线SSL,使得根据从串选择线SSL施加的电压的电平来控制串选择晶体管SST。地选择晶体管GST可以连接到地选择线GSL,使得根据从地选择线GSL施加的电压的电平来控制地选择晶体管GST。可以根据施加到字线WL(1)~WL(n)的电压电平来控制存储器单元MC。
包括存储器单元阵列210a的NAND快闪存储器件可以以页面212为单位执行数据读取和写入操作以及以块213为单位执行数据擦除操作。
参见图12B,存储单元阵列210b可以包括具有垂直结构的多个串216。多个串216可以在第二方向D2上形成,使得可以形成串行。可以在第三方向D3上形成多个串行,使得可以形成串阵列。每个串216可以包括地选择晶体管GSTV、存储单元MC和串选择晶体管SSTV,它们在位线BL(1),...,BL(m)和公共源线CSL之间沿第一方向D1串联设置。
地选择晶体管GSTV可以连接到地选择线GSL11,GSL12,...,GSLi1,GSLi2,并且串选择晶体管SSTV可以连接到串选择线SSL11,SSL12,...,SSLi1,SSLi2。布置在同一层上的存储器单元MC可以共同连接到字线WL(1),WL(2),......,WL(n-1),WL(n)中的一个。地选择线GSL11~GSLi2和串选择线SSL11~SSLi2可以在第二方向D2上延伸,并且可以沿第三方向D3形成。字线WL(1)~WL(n)可以在第二方向D2上延伸,并且可以沿第一方向D1和第三方向D3形成。位线BL(1)~BL(m)可以在第三方向D3上延伸,并且可以沿第二方向D2形成。可以根据施加到字线WL(1)~WL(n)的电压电平来控制存储器单元MC。
三维(3D)垂直阵列结构可以包括垂直取向的垂直NAND串,使得至少一个存储器单元位于另一个存储器单元上。至少一个存储器单元可以包括电荷陷阱层。其全部内容通过引用并入本文的以下专利文献描述了包括3D垂直阵列结构的存储器单元阵列的合适配置,其中3D存储器阵列被配置为具有多个电平以及在各电平之间共享的字线和/或位线:美国专利号7,679,133、8,553,466、8,654,587和8,559,235,以及美国专利公开号2011/0233648。
尽管基于闪存器件描述了根据示例实施例的非易失性存储器件中包括的存储器单元阵列,但是根据示例实施例的非易失性存储器件可以是任何非易失性存储器件,例如,相位随机存取存储器(PRAM)、电阻随机存取存储器(RRAM)、纳米浮栅存储器(NFGM)、聚合物随机存取存储器(PoRAM)、磁随机存取存储器(MRAM)、铁电随机存取存储器(FRAM)、晶闸管随机存取存储器(TRAM)等
图13是示出包括在图10的存储设备中的存储控制器的示例的框图。
参见图13,存储控制器300可以包括至少一个处理器310、缓冲存储器320、纠错码(ECC)块330、主机接口340和存储器接口350。
处理器310可以响应于经由主机接口340从主机接收的命令来控制存储控制器300的操作。在一些示例实施例中,处理器310可以通过采用用于操作存储设备100的固件来控制各个组件。
缓冲存储器320可以存储由处理器310执行和处理的指令和数据。例如,缓冲存储器320可以用易失性存储器设备实现,例如静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)等。缓冲存储器320可以包括用于不同流的流映射表322和垃圾收集预期成本表324。在一些示例实施例中,缓冲存储器320可以是用于处理器310的高速缓冲存储器。
用于纠错的ECC块330可以使用Bose-Chaudhuri-Hocquenghem(BCH)码、低密度奇偶校验(LDPC)码、turbo码、Reed-Solomon码、卷积码,递归系统码(RSC),网格编码调制(TCM),块编码调制(BCM)等来执行编码调制,或者可以使用上述代码或其他纠错码来执行ECC编码和ECC解码。
主机接口340可以提供主机和存储设备100之间的物理连接。主机接口340可以提供与主机的总线格式相对应的接口,用于主机和存储设备100之间的通信。在一些示例中在一些实施例中,主机的总线格式可以是小型计算机系统接口(SCSI)或串行连接SCSI(SAS)接口。在其他示例实施例中,主机的总线格式可以是USB、外围组件互连(PCI)快速(PCIe)、高级技术附件(ATA)、并行ATA(PATA)、串行ATA(SATA)、非易失性存储器(NVM)快速(NVMe)等格式。
存储器接口350可以与非易失性存储器设备120交换数据。存储器接口350可以将数据传输到非易失性存储器设备120,或者可以接收从非易失性存储器设备120读取的数据。在一些示例实施例中,存储器接口350可以经由一个通道连接到至少一个非易失性存储器件120。在其他示例实施例中,存储器接口350可以经由两个或更多个通道连接到至少一个非易失性存储器设备120。
图14是示出根据示例实施例的包括存储设备的计算系统的框图。
参见图14,计算系统500可以包括主机600和附接或插入到主机600的存储设备700。
可以通过执行操作系统(OS)610来驱动主机600。操作系统610可以包括用于文件管理的文件系统620和用于控制包括操作系统级别的存储设备700的外围设备的设备驱动器630。
文件系统620可以管理由来自主机600的请求或由主机600执行的应用程序访问的文件的文件名、扩展名、文件属性、文件尺寸、簇信息等。文件系统620可以以文件为基础生成、删除并管理数据。设备驱动器630可以是用于控制存储设备700的内核的软件模块。主机600或由主机600执行的应用可以经由设备驱动器630向存储设备700请求数据写入操作和数据读取操作。主机600可以执行提供各种服务的多个应用程序。例如,主机600可以执行视频应用程序、游戏应用程序、网络浏览器应用程序等。
主机600可以生成用于请求数据写入操作的写入命令(例如,图10中的写入命令WCMD)以及用于存储到存储设备700中的写入数据WD1、WD2、WD3和WD4,并且可以向写入数据WD1、WD2、WD3和WD4提供流ID STR1和STR2。例如,主机600可以请求用于将写入数据WD1、WD2、WD3和WD4存储到存储设备700中的数据写入操作,可以生成包括写入数据WD1和流IDSTR1的数据块(DB1)651、包括写入数据WD2和流ID STR2的数据块(DB2)653、包括写入数据WD3和流ID STR1的数据块(DB3)655、以及包括写入数据WD4的数据块(DB4)657和流IDSTR2。
存储设备700可以包括:至少一个非易失性存储器件720,其包括多个存储块731,732和733;以及存储控制器740,其包括用于不同流的流映射表750和垃圾收集预期成本表760。图14中的非易失性存储器件720、多个存储块731,732和733、存储控制器740、流映射表750和垃圾收集预期成本表760可以与图10中的非易失性存储器件120、多个存储块130、存储控制器140、流映射表150和垃圾收集预期成本表160基本相同。存储设备700可以基于多流方案操作,其中具有相同流ID的写入数据(例如,具有流ID STR1的写入数据WD1和WD3)被写入相同的存储块(例如,存储块731)。在存储设备700中,可以对与相同流ID相对应的存储块执行垃圾收集操作,因此存储设备700可以具有相对改进和增强的性能和耐久性。
示例实施例可以应用于包括非易失性存储器件的存储设备。例如,示例实施例可以应用于包括闪存器件的SSD、MMC、eMMC或UFS。
根据一个或多个示例实施例,上述单元和/或设备,诸如包括存储控制器140和非易失性存储器设备120的存储设备100的组件包括控制电路260、处理器310和ECC块330的存储设备100的子组件,可以使用硬件、硬件和软件的组合、或者存储可执行以执行其功能的软件的非暂时性存储介质来实现。这些组件可以嵌入在相同的硬件平台中或者嵌入在单独的硬件平台中。
可以使用处理电路来实现硬件,例如但不限于,一个或多个处理器、一个或多个中央处理单元(CPU)、一个或多个控制器、一个或多个算术逻辑单元(ALU)、一个或多个数字信号处理器(DSP)、一个或多个微计算机、一个或多个现场可编程门阵列(FPGA)、一个或多个片上系统(SoC)、一个或多个可编程逻辑单元(PLU)、一个或多个微处理器、一个或多个专用集成电路(ASIC),或能够以定义的方式响应和执行指令的任何其他一个或多个设备。
软件可以包括计算机程序、程序代码、指令或它们的一些组合,用于独立地或共同地指示或配置硬件设备以根据需要操作。计算机程序和/或程序代码可以包括程序或计算机可读指令、软件组件、软件模块、数据文件、数据结构等,能够由一个或多个硬件设备实现,例如上面提到的一个或多个硬件设备。程序代码的示例包括由编译器产生的机器代码和使用解释器执行的高级程序代码。
例如,当硬件设备是计算机处理设备(例如,一个或多个处理器、CPU、控制器、ALU、DSP、微计算机、微处理器等)时,计算机处理设备可以被配置为通过根据程序代码执行算术,逻辑和输入/输出操作来执行程序代码。一旦程序代码被加载到计算机处理设备中,计算机处理设备可以被编程为执行程序代码,从而将计算机处理设备转换成专用计算机处理设备。在更具体的示例中,当程序代码被加载到处理器中时,处理器变得被编程为执行与其对应的程序代码和操作,从而将处理器变换为专用处理器。在另一示例中,硬件设备可以是定制到专用处理电路(例如,ASIC)中的集成电路。
诸如计算机处理设备之类的硬件设备可以运行操作系统(OS)和在OS上运行的一个或多个软件应用程序。计算机处理设备还可以响应于软件的执行来访问、存储、操纵、处理和创建数据。为简单起见,可以将一个或多个示例实施例示例为一个计算机处理设备;然而,本领域技术人员将理解,硬件设备可以包括多个处理元件和多种类型的处理元件。例如,硬件设备可以包括多个处理器或一个处理器和一个控制器。此外,其他处理配置也是可能的,例如并行处理器。
软件和/或数据可以永久地或临时地嵌入在任何类型的存储介质中,包括但不限于能够提供指令或数据、或由硬件设备解释的任何机器、组件、物理或虚拟设备或计算机存储介质或设备。该软件还可以分布在网络耦合的计算机系统上,以便以分布式方式存储和执行软件。特别地,例如,软件和数据可以由一个或多个计算机可读记录介质存储,包括如本文所讨论的有形或非暂时性计算机可读存储介质。
根据一个或多个示例实施例,存储介质还可以包括在单元和/或设备处的一个或多个存储设备。一个或多个存储设备可以是有形或非暂时性计算机可读存储介质,诸如随机存取存储器(RAM)、只读存储器(ROM)、永久大容量存储设备(诸如磁盘驱动器)、和/或或者任何其他类似的能够存储和记录数据的数据存储机制。一个或多个存储设备可以被配置为存储用于一个或多个操作系统和/或用于实现本文描述的示例实施例的计算机程序、程序代码、指令或其某种组合。计算机程序、程序代码、指令或其某些组合也可以使用驱动机制从单独的计算机可读存储介质加载到一个或多个存储设备和/或一个或多个计算机处理设备中。这种单独的计算机可读存储介质可以包括通用串行总线(USB)闪存驱动器、记忆棒、蓝光/DVD/CD-ROM驱动器、存储卡和/或其他类似的计算机可读存储介质。
计算机程序、程序代码、指令或其某种组合可以经由网络接口从远程数据存储设备加载到一个或多个存储设备和/或一个或多个计算机处理设备中,而不是通过计算机可读存储介质。另外,计算机程序、程序代码、指令或其某种组合可以从远程计算系统加载到一个或多个存储设备和/或一个或多个处理器中,该远程计算系统被配置为通过网络传输和/或分发计算机程序、程序代码、指令或其某些组合。远程计算系统可以经由有线接口、空中接口和/或任何其他类似介质来传送和/或分发计算机程序、程序代码、指令或其某种组合。
可以为示例实施例的目的专门设计和构造一个或多个硬件设备、存储介质、计算机程序、程序代码、指令或其某种组合,或者它们可以是为了示例实施例的目的而改变和/或修改的已知的设备。
前述内容是对示例实施例的说明,而不应解释为对其进行限制。尽管已经描述了一些示例实施例,但是本领域技术人员将容易理解,在示例实施例中可以进行许多修改而不实质上脱离示例实施例的新颖教导和优点。因此,所有这些修改旨在包括在权利要求中限定的示例实施例的范围内。因此,应该理解,前述内容是对各种示例实施例的说明,并且不应被解释为限于所公开的特定示例实施例,并且对所公开的示例实施例的修改以及其他示例实施例旨在包括在所附权利要求的范围内。

Claims (17)

1.一种操作存储设备以在具有多个存储块的非易失性存储器件上执行垃圾收集操作的方法,所述存储设备被配置为基于多流方案操作,使得多个数据基于多个流中的哪一个与多个数据相关联被写入到所述存储设备中,该方法包括:
选择多个存储块中的至少两个存储块作为牺牲存储块,使得牺牲存储块被配置为存储与多个流的相同流相关联的数据,所述选择与相同流相关联的牺牲存储块包括:
基于多个第一存储块中分布的第一有效页面的数量计算与多个第一存储块中存储的第一流相关联的第一数据的第一垃圾收集预期成本;
基于多个第二存储块中分布的第二有效页面的数量计算与多个第二存储块中存储的第二流相关联的第二数据的第二垃圾收集预期成本,所述第二流不同于所述第一流;
基于第一垃圾收集预期成本和第二垃圾收集预期成本,选择多个第一存储块和多个第二存储块中的一个作为牺牲存储块;和
对牺牲存储块执行垃圾收集操作。
2.如权利要求1所述的方法,其中,选择第一存储块和第二存储块中的一个包括:
响应于第一垃圾收集预期成本小于第二垃圾收集预期成本,选择多个第一存储块作为牺牲存储块;以及,
响应于第二垃圾收集预期成本小于第一垃圾收集预期成本,选择多个第二存储块作为牺牲存储块。
3.如权利要求1所述的方法,其中,计算第一垃圾收集预期成本包括:
计算第一有效页面数量的总和。
4.如权利要求1所述的方法,其中,计算第一垃圾收集预期成本包括:
将第一有效页面数量的总和除以一个存储块中包括的页面数量。
5.如权利要求1所述的方法,还包括:
在流映射表中登记多个存储块与表示多个流的多个流标识符(ID)之间的关系,该登记包括匹配多个流ID和多个存储块中的相应存储块;和
管理不同流的垃圾收集预期成本表,垃圾收集预期成本表表示多个流的垃圾收集预期成本,其中
选择包括基于垃圾收集预期成本表选择牺牲存储块。
6.如权利要求5所述的方法,其中,管理垃圾收集预期成本表包括:
通过多个有效页面排序候选存储块,候选存储块表示多个存储块中的用于垃圾收集操作的可选存储块;
基于流映射表将对应于相同流ID的存储块相互关联;和
计算多个流ID的垃圾收集预期成本。
7.如权利要求6所述的方法,其中,所述选择包括:
搜索垃圾收集预期成本表以确定是否存在满足第一条件的流ID,第一条件通过多个无效页面的总和大于或等于参考值来满足;和
选择与满足第一条件的流ID之一对应的存储块作为牺牲存储块。
8.如权利要求7所述的方法,其中,选择存储块将与具有满足第一条件的最低垃圾收集预期成本的流ID中的第一流ID对应的存储块选择为牺牲存储块。
9.如权利要求5所述的方法,还包括:
响应于多个存储块中的至少一个被分配用于数据写入操作或变为空闲存储块,更新流映射表和垃圾收集预期成本表。
10.如权利要求5所述的方法,其中,所述登记包括:
响应于第一存储块被分配用于数据写入操作,在流映射表中登记多个存储块中的第一存储块和要存储到第一存储块中的第一数据的第一流ID;和
响应于第二存储块变为空闲存储块,从流映射表中删除多个存储块中的第二存储块和与第二存储块对应的第二流ID。
11.如权利要求1所述的方法,其中对牺牲存储块执行垃圾收集操作包括:
将包括在牺牲存储块中的第一牺牲存储块中的第一有效页面复制到目的地存储块中;
将包括在牺牲存储块中的第二牺牲存储块中的第二有效页面复制到目的地存储块中;和
对第一牺牲存储块和第二牺牲存储块执行数据擦除操作,使得第一牺牲存储块和第二牺牲存储块是空闲存储块。
12.一种存储设备,包括:
非易失性存储器件,包括多个存储块;和
存储控制器,配置为,
控制非易失性存储器件基于多流方案操作,使得基于多个流中的哪一个与多个数据相关联,将多个数据写入多个存储块;
选择多个存储块中的至少两个存储块作为牺牲存储块,使得牺牲存储块被配置为存储与多个流的相同流相关联的数据,所述存储控制器被配置为通过以下来选择与相同流相关联的牺牲存储块:
基于多个第一存储块中分布的第一有效页面的数量计算与多个第一存储块中存储的第一流相关联的第一数据的第一垃圾收集预期成本;
基于多个第二存储块中分布的第二有效页面的数量计算与多个第二存储块中存储的第二流相关联的第二数据的第二垃圾收集预期成本,所述第二流不同于所述第一流;和
基于第一垃圾收集预期成本和第二垃圾收集预期成本,选择多个第一存储块和多个第二存储块中的一个作为牺牲存储块;以及
对牺牲存储块执行垃圾收集操作。
13.如权利要求12所述的存储设备,其中,所述存储控制器包括:
流映射表,被配置为存储多个存储块与表示多个流的多个流标识符(ID)之间的关系;和
垃圾收集预期成本表,被配置为存储多个流的垃圾收集预期成本。
14.如权利要求13所述的存储设备,其中,所述存储控制器被配置为生成所述垃圾收集预期成本表,使得所述垃圾收集预期成本表包括:
由多个有效页面排序的候选存储块,候选存储块表示多个存储块中的用于垃圾收集操作的可选存储块;
指示对应于相同流ID的存储块的关联;和
多个流ID的垃圾收集预期成本。
15.如权利要求14所述的存储设备,其中,所述存储控制器被配置为:
搜索垃圾收集预期成本表以确定是否存在满足第一条件的流ID,第一条件通过多个无效页面的总和大于或等于参考值来满足;以及
选择与具有满足第一条件的最低垃圾收集期望成本的流ID中的第一流ID对应的存储块作为牺牲存储块。
16.如权利要求12所述的存储设备,其中,所述存储设备是固态驱动器(SSD)、多媒体卡(MMC)、嵌入式多媒体卡(eMMC)和通用闪存(UFS)之一。
17.一种计算系统,包括:
主机,被配置为生成写入命令和写入数据,写入命令请求数据写入操作;和
存储设备,被配置为从主机接收写入命令和写入数据,该存储设备包括:
非易失性存储器件,包括:多个存储块,配置用于存储写入数据;和
存储控制器,配置为,
基于多流方案操作,使得基于多个流中的哪一个与写入数据相关联,将写入数据写入多个存储块中,
选择多个存储块中的至少两个存储块作为牺牲存储块,使得牺牲存储块被配置为存储与多个流的相同流相关联的数据,所述存储控制器被配置为通过以下来选择与相同流相关联的牺牲存储块:
基于多个第一存储块中分布的第一有效页面的数量计算与多个第一存储块中存储的第一流相关联的第一数据的第一垃圾收集预期成本;
基于多个第二存储块中分布的第二有效页面的数量计算与多个第二存储块中存储的第二流相关联的第二数据的第二垃圾收集预期成本,所述第二流不同于所述第一流;
基于第一垃圾收集预期成本和第二垃圾收集预期成本,选择多个第一存储块和多个第二存储块中的一个作为牺牲存储块以及
对牺牲存储块执行垃圾收集操作。
CN201811358058.8A 2017-11-16 2018-11-15 垃圾收集方法、执行方法的存储设备和含设备的计算系统 Active CN109800177B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR10-2017-0153405 2017-11-16
KR1020170153405A KR102457400B1 (ko) 2017-11-16 2017-11-16 가비지 컬렉션 방법, 이를 수행하는 저장 장치 및 이를 포함하는 컴퓨팅 시스템

Publications (2)

Publication Number Publication Date
CN109800177A CN109800177A (zh) 2019-05-24
CN109800177B true CN109800177B (zh) 2024-03-08

Family

ID=66433332

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811358058.8A Active CN109800177B (zh) 2017-11-16 2018-11-15 垃圾收集方法、执行方法的存储设备和含设备的计算系统

Country Status (3)

Country Link
US (1) US10671287B2 (zh)
KR (1) KR102457400B1 (zh)
CN (1) CN109800177B (zh)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102596407B1 (ko) * 2018-03-13 2023-11-01 에스케이하이닉스 주식회사 저장 장치 및 그 동작 방법
KR102304130B1 (ko) * 2019-06-07 2021-09-23 성균관대학교산학협력단 비휘발성 랜덤 액세스 메모리를 이용한 세그먼트 클리닝 방법 및 이를 구현하기 위한 메모리 관리 장치
KR20200142393A (ko) * 2019-06-12 2020-12-22 에스케이하이닉스 주식회사 저장 장치, 호스트 장치 및 그들의 동작 방법
KR102689985B1 (ko) * 2019-06-13 2024-08-01 에스케이하이닉스 주식회사 메모리 시스템, 메모리 컨트롤러 및 그 저장 방법
KR20210054399A (ko) 2019-11-05 2021-05-13 에스케이하이닉스 주식회사 저장 장치 및 그 동작 방법
CN111159059B (zh) * 2019-12-27 2022-03-04 深圳大普微电子科技有限公司 一种垃圾回收方法、装置及非易失性的存储设备
KR20210158043A (ko) * 2020-06-23 2021-12-30 삼성전자주식회사 스트림 분류 번호에 따른 데이터 분류 스토리지 장치 및 그 동작 방법
US11494111B2 (en) * 2020-12-17 2022-11-08 Micron Technology, Inc. Data operation based on valid memory unit count
KR102652396B1 (ko) * 2021-05-31 2024-03-28 한국항공대학교산학협력단 멀티스트림을 활용한 분산 병렬 시스템의 데이터 분리 저장 장치 및 방법
KR20230097866A (ko) * 2021-12-24 2023-07-03 삼성전자주식회사 메모리 컨트롤러를 포함하는 스토리지 장치 및 스토리지 장치의 동작 방법
CN114996173B (zh) * 2022-08-04 2022-11-18 合肥康芯威存储技术有限公司 一种管理存储设备写操作的方法和装置

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106610904A (zh) * 2015-10-15 2017-05-03 爱思开海力士有限公司 存储系统及其操作方法

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100789406B1 (ko) * 2006-11-03 2007-12-28 삼성전자주식회사 플래시 메모리 시스템 및 그것의 가비지 컬렉션 방법
US8255373B2 (en) 2008-10-24 2012-08-28 Microsoft Corporation Atomic multiple modification of data in a distributed storage system
US8521948B2 (en) 2011-01-03 2013-08-27 Apple Inc. Handling dynamic and static data for a system having non-volatile memory
WO2012106362A2 (en) * 2011-01-31 2012-08-09 Fusion-Io, Inc. Apparatus, system, and method for managing eviction of data
KR20130076429A (ko) * 2011-12-28 2013-07-08 삼성전자주식회사 메모리 장치의 저장 영역 관리 방법 및 이를 이용한 저장 장치
KR20140004429A (ko) * 2012-07-02 2014-01-13 에스케이하이닉스 주식회사 반도체 장치 및 그 동작 방법
US9466383B2 (en) 2013-12-30 2016-10-11 Sandisk Technologies Llc Non-volatile memory and method with adaptive logical groups
US9519429B2 (en) 2014-12-09 2016-12-13 Intel Corporation Techniques to manage multiple sequential write streams to a solid state drive
IN2015CH01601A (zh) 2015-03-28 2015-05-01 Wipro Ltd
US9696935B2 (en) 2015-04-24 2017-07-04 Kabushiki Kaisha Toshiba Storage device that secures a block for a stream or namespace and system having the storage device
KR102509540B1 (ko) * 2015-06-30 2023-03-14 삼성전자주식회사 저장 장치 및 그것의 가비지 컬렉션 방법
JP6403164B2 (ja) 2015-09-11 2018-10-10 東芝メモリ株式会社 メモリシステム
US9898202B2 (en) 2015-11-30 2018-02-20 Samsung Electronics Co., Ltd. Enhanced multi-streaming though statistical analysis
US9880780B2 (en) 2015-11-30 2018-01-30 Samsung Electronics Co., Ltd. Enhanced multi-stream operations
US9971681B2 (en) * 2016-06-01 2018-05-15 Nanjing University Lazy real time garbage collection method
JP2018160195A (ja) * 2017-03-23 2018-10-11 東芝メモリ株式会社 メモリシステムおよび不揮発性メモリの制御方法
KR102544162B1 (ko) * 2017-07-11 2023-06-16 에스케이하이닉스 주식회사 데이터 저장 장치 및 그것의 동작 방법

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106610904A (zh) * 2015-10-15 2017-05-03 爱思开海力士有限公司 存储系统及其操作方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
NAND闪存垃圾回收策略改进;胡萍;;铜仁学院学报(第04期);全文 *

Also Published As

Publication number Publication date
CN109800177A (zh) 2019-05-24
KR20190056211A (ko) 2019-05-24
US20190146679A1 (en) 2019-05-16
US10671287B2 (en) 2020-06-02
KR102457400B1 (ko) 2022-10-21

Similar Documents

Publication Publication Date Title
CN109800177B (zh) 垃圾收集方法、执行方法的存储设备和含设备的计算系统
US10657041B2 (en) Data management method and storage device performing the same
US11645199B2 (en) Storage device and garbage collection method thereof
US9817717B2 (en) Stripe reconstituting method performed in storage system, method of performing garbage collection by using the stripe reconstituting method, and storage system performing the stripe reconstituting method
US10884921B2 (en) Storage device performing garbage collection and garbage collection method of storage device
US10120606B2 (en) Data storage devices including storage controller circuits to select data streams based on application tags and computing systems including the same
KR102709146B1 (ko) 저장 장치의 데이터 액세스 방법, 데이터 관리 방법 및 이를 수행하는 저장 장치
CN110968522B (zh) 存储器系统及其操作方法、包括存储器系统的数据库系统
CN110908843A (zh) 诊断存储器系统的设备及其操作方法
CN110928806B (zh) 存储器系统及其操作方法
CN112835811A (zh) 存储器系统及其操作方法
US11762572B2 (en) Method of operating storage device and method of operating storage system using the same
KR102559549B1 (ko) 메모리 시스템에서의 블록 상태를 관리하는 방법 및 장치
CN112416809A (zh) 用于可扩展存储区域的分配模式
CN115543860A (zh) 数据处理系统及其操作方法
US11675537B2 (en) Controller for performing data input/output operation and memory management operation at the same time and operation method thereof
US20230315646A1 (en) Method of managing data in storage device based on variable size mapping, method of operating storage device using the same and storage device performing the same
CN117931055A (zh) 在多个存储器区域中分配和存储写入数据的设备和方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant