CN113836047A - 存储装置及其操作方法 - Google Patents
存储装置及其操作方法 Download PDFInfo
- Publication number
- CN113836047A CN113836047A CN202110535812.6A CN202110535812A CN113836047A CN 113836047 A CN113836047 A CN 113836047A CN 202110535812 A CN202110535812 A CN 202110535812A CN 113836047 A CN113836047 A CN 113836047A
- Authority
- CN
- China
- Prior art keywords
- data
- block
- controller
- blocks
- stream classification
- 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.)
- Pending
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
- 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/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1009—Address translation using page tables, e.g. page table structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/284—Relational databases
- G06F16/285—Clustering or classification
-
- 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/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0647—Migration 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/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0652—Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/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/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/1028—Power efficiency
-
- 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/65—Details of virtual memory and virtual address translation
- G06F2212/657—Virtual address space management
-
- 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/7201—Logical to physical mapping or translation of blocks or pages
-
- 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
-
- 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/7209—Validity control, e.g. using flags, time stamps or sequence numbers
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Abstract
公开了存储装置及其操作方法。所述存储装置包括:缓冲器,用于从外部接收第一数据和第二数据,并且将第一数据和第二数据存储在第一页上;非易失性存储器,用于将第一数据和第二数据存储在第一块中;和控制器,用于执行通过垃圾收集将第一数据和第二数据编程到彼此不同的空闲块中的编程操作。第一数据可包括标识第一数据的特性的第一流分类号,第二数据可包括标识第二数据的特性并且不同于第一流分类号的第二流分类号。控制器可在执行编程操作之前将编程操作的信息发送到外部。控制器可在从外部接收到编程执行许可命令时执行编程操作。
Description
于2020年6月23日在韩国知识产权局提交的标题为“用于基于流分类号对数据进行分类的存储装置及其操作方法(Storage Device for Classifying Data Based onStream Class Number and Operating Method Thereof)”的第10-2020-0076310号韩国专利申请通过引用全部包含于此。
技术领域
实施例涉及流分类装置及其操作方法。
背景技术
对数据存储装置(例如,基于NAND的驱动器)的需求由于其高性能和低功耗而一直在增加。
发明内容
实施例涉及一种存储装置,所述存储装置包括:缓冲器,被配置为:从外部接收第一数据和第二数据,并且将第一数据和第二数据存储在第一页上;非易失性存储器,被配置为将第一数据和第二数据存储在第一块中;和控制器,被配置为执行通过垃圾收集将第一数据和第二数据编程到彼此不同的空闲块中的编程操作。第一数据可包括标识第一数据的特性的第一流分类号,第二数据可包括标识第二数据的特性并且不同于第一流分类号的第二流分类号。控制器可被配置为在执行编程操作之前将编程操作的信息发送到外部。控制器可被配置为在从外部接收到编程执行许可命令时执行编程操作。
实施例还涉及一种存储装置,所述存储装置包括:主机,被配置为发送包括根据数据的特性进行分类的流分类号的数据;非易失性存储器,包括:多个块,从主机接收的数据被任意地存储在所述多个块中,而与流分类号无关;和控制器,被配置为执行基于根据数据的特性进行分类的流分类号将具有相同的流分类号的数据编程到同一块中的编程操作。控制器可被配置为在执行编程操作之前将编程操作的信息发送到主机。控制器可在从主机接收到编程执行许可命令时执行编程操作。
实施例还涉及一种存储装置的操作方法,所述操作方法包括:从主机接收包括根据数据的特性进行分类的流分类号的数据;将数据存储在非易失性存储器中的空闲块中;确定是否需要根据流分类号对数据进行分类;当确定需要根据流分类号对数据进行分类时,在非易失性存储器中的存储有数据的多个块之中确定通过垃圾收集执行分类的牺牲块;将关于对牺牲块执行垃圾收集的信息发送到主机;和当从主机接收到垃圾收集的可执行消息时,对牺牲块执行垃圾收集,并且根据流分类号对牺牲块中的数据进行分类,以将数据编程到空闲块中。
附图说明
通过参照附图详细描述示例实施例,特征对于本领域技术人员将变得清楚,其中:
图1是用于解释根据一些示例实施例的包括存储装置的存储系统的示例框图;
图2是用于解释根据一些示例实施例的从主机接收的数据的示例图;
图3是用于解释根据一些示例实施例的存储在非易失性存储器中的块的示例图;
图4是用于解释根据一些示例实施例的缓冲器从主机接收数据的操作的示例图;
图5是用于解释根据一些示例实施例的包括存储装置的存储系统的示例框图,该存储装置包括物理映射表缓冲器;
图6是用于解释根据一些示例实施例的物理映射表的示例图;
图7是用于解释根据一些示例实施例的包括存储装置的存储系统的示例框图,该存储装置包括流映射表缓冲器;
图8是用于解释根据一些示例实施例的流映射表的示例图;
图9是用于解释根据一些示例实施例的包括存储装置的存储系统的示例框图,该存储装置包括物理映射表缓冲器和流映射表缓冲器;
图10是解释根据一些示例实施例的利用非易失性存储器装置中的数据的额外空间的操作的示图;
图11是解释根据一些示例实施例的对来自缓冲器的数据进行编程的操作的示例图;
图12是解释根据一些示例实施例的根据流分类号(stream class number)对多流块中的数据进行分类的垃圾收集操作的示例图;
图13是解释根据一些示例实施例的包括存储装置的存储系统的操作的示例流程图;
图14是用于解释根据一些示例实施例的确定牺牲块的操作的示例图;
图15是用于解释根据一些示例实施例的图14的确定牺牲块的操作的示例流程图;
图16是用于解释根据一些示例实施例的确定牺牲块的操作的示例图;
图17是用于解释根据一些示例实施例的图16的用于确定牺牲块的操作的示例流程图;
图18和图19是用于解释根据一些示例实施例的确定牺牲块的操作的示例图;
图20是用于解释根据一些示例实施例的图18和图19的用于确定牺牲块的操作的示例流程图;
图21是用于解释根据一些示例实施例的主机与存储装置之间的信号传输操作的示例图。
具体实施方式
图1是用于解释根据一些示例实施例的包括存储装置的存储系统的示例框图。
参照图1,根据一些示例实施例的存储系统可包括存储装置100和存储装置100外部的主机200。每个配置可由单独的芯片、模块或装置组成,并且可被包括在单个装置中。例如,存储装置100还可通过连接到单独的主机200而被使用。然而,存储装置100和主机200可集成在单个装置中。
主机200可使用应用或文件系统210将包括写入命令的命令CMD和包括写入数据的数据DATA发送到存储装置100。此外,主机200可使用应用或文件系统210将包括读取命令的命令CMD和包括读取数据的数据DATA发送到存储装置100。
可通过执行操作系统(OS)来驱动主机200。操作系统可包括文件系统210和装置驱动器,文件系统210用于文件管理,装置驱动器用于在操作系统级控制包括数据存储装置的外围设备。文件系统210可管理根据主机200的请求而访问的文件的文件名、扩展名、文件属性、文件大小、集群信息(cluster information)等。此外,基于文件的数据可由文件系统210生成、删除和管理。装置驱动器可以是用于控制数据存储装置的软件模块或核。主机200可使用装置驱动器请求对存储装置100的写入操作和读取操作。此外,主机200可执行视频应用、游戏应用、网络浏览器应用等,以提供各种服务。
主机200可以是例如电子装置(诸如,PC(个人计算机)、膝上型计算机、移动电话、智能电话、平板PC、MP3播放器、PDA(个人数字助理)、EDA(企业数字助理)、PMP(便携式多媒体播放器)、数字相机、音乐播放器、便携式游戏机、导航装置、可穿戴装置、IoT(物联网)装置、IoE(万物互联网)装置、电子书、VR(虚拟现实)装置、AR(增强现实)装置等)。
由主机200发送到存储装置100的数据DATA可包括关于用于标识数据的特性的流分类号(stream class number)的信息。这将结合图2详细解释。
图2是用于解释根据一些示例实施例的从主机接收的数据的示例图。
参照图2,从主机200接收的数据500和数据510可包括数据500和用于标识数据500的特性的流分类号510。用于标识数据500的特性的流分类号510可由各种因素(诸如,数据500的种类、数据500的类型、数据500的寿命和/或数据500的更新频率)确定。例如,用于标识第一数据(DATA#1)的特性的流分类号可以是流分类号1(Stream 1)。用于标识第二数据(DATA#2)的特性的流分类号可以是流分类号4(Stream 4)。用于标识第三数据(DATA#3)的特性的流分类号可以是流分类号3(Stream 3)。用于标识第四数据(DATA#4)的特性的流分类号可以是流分类号1(Stream 1)。这里,包括流分类号1的第一数据(DATA#1)和第四数据(DATA#4)可具有彼此相同或相似的寿命。
图2中示出的第一数据至第四数据(DATA#1至DATA#4)、流分类号1(Stream 1)、流分类号3(Stream 3)和流分类号4(流4)是为了便于解释而任意选择的术语,并且可被改变。例如,流分类号可被划分为热页(Hot page)、暖页(Warm page)和冷页(Cold page)。
除了数据500和用于标识数据500的特性的流分类号510之外,从主机200接收的数据可包括地址信息和/或纠错奇偶校验(ECC奇偶校验)。
再次参照图1,主机200可包括指令(directive)功能。指令功能可以是根据来自主机200的数据的类型和种类来预确定流分类号并将流分类号发送到存储装置100的功能。因此,从主机200接收的数据可包括该数据和该数据的流分类号。因此,流分类号可不在存储装置100中被单独分类。
具有相同的流分类号的数据可具有相关或相似的寿命。例如,频繁且重复更新的数据可具有相同的流分类号。此外,例如,相似类型的数据可具有相同的流分类号。由于相似类型的数据可被假设具有相似的寿命,因此具有相同的流分类号的数据可具有彼此相似的寿命。
存储装置100可在来自主机200的请求下控制内部操作(例如,读取和写入)。
存储装置100可包括接口110、控制器120、缓冲器130和非易失性存储器140。
接口110可使用用于在主机200与控制器120之间执行数据交换的协议进行操作。作为示例,接口110可被配置为通过各种接口协议(诸如,USB(通用串行总线)协议、MMC(多媒体卡)协议、PCI(外围组件互连)协议、PCI-E(PCI-快速)协议、ATA(高级技术附件)协议、串行ATA协议、并行ATA协议、SCSI(小型计算机小型接口)协议、ESDI(增强型小型磁盘接口)协议、IDE(集成驱动电子设备)协议、NVMe(非易失性存储器快速)协议以及查询请求协议)中的至少一种与主机200进行通信。此外,接口110可包括至少一个处理器。包括在接口110中的处理器可以是例如微处理器。
控制器120可控制接口110、缓冲器130和非易失性存储器140。控制器120可通过接口110在主机200与非易失性存储器140之间以及在主机200与缓冲器130之间交换命令和数据。此外,存储装置100的一系列操作可由控制器120执行。此外,控制器120可包括至少一个处理器。包括在控制器120中的处理器可以是例如微处理器。
缓冲器130可临时存储从主机200接收的数据。缓冲器130可包括高速易失性存储器或非易失性存储器。例如,缓冲器130可以是DRAM(动态随机存取存储器)、SRAM(静态随机存取存储器)、闪存等的SLC(单层单元)区域。
非易失性存储器140可存储临时存储在缓冲器130中的数据。非易失性存储器140可以是例如包括NAND闪存的闪存。闪存可包括SLC(单层单元)区域和MLC(多层单元)区域。非易失性存储器140可包括PC卡(PCMCIA:个人计算机存储卡国际协会)、紧凑型闪存卡(CF)、智能媒体卡(SM、SMC)、记忆棒、多媒体卡(MMC、RS-MMC、MM微型)、SD卡(SD、迷你SD、微型SD和SDHC)、通用闪存装置(UFS)、嵌入式多媒体卡(eMMC)、NAND闪存、NOR闪存、V-NAND闪存等。现在将参照图3描述非易失性存储器140的示例。
图3是用于解释根据一些示例实施例的存储在非易失性存储器中的块的示例图。
参照图3,非易失性存储器140可包括多个存储器块(Block 1至Block N)。
多个存储器块(Block 1至Block N)中的一些存储器块可存储包括各种流分类号的数据。因此,存储在缓冲器130中的多个数据可被任意地存储在多个存储器块(Block 1至Block N)中的一些存储器块中的每个中,而与流分类号无关。例如,包括第一流分类号的数据和包括第二流分类号的数据可被一起存储在第一存储器块(Block 1)中。
或者,多个存储器块(Block 1至Block N)中的一些存储器块可存储包括相同的流分类号的数据。因此,对于存储在缓冲器130中的多个数据,可仅存储包括分配给多个存储器块(Block 1至Block N)中的一些存储器块中的每个的流分类号的数据。例如,第K+1专用存储器块(Block K+1)可仅存储包括第一流分类号的数据,第K+2专用存储器块(Block K+2)可仅存储包括第二流分类号的数据。因此,多个存储器块(Block 1至Block N)中的一些存储器块可仅针对一个流分类号而被存储。例如,假设第一数据和第二数据中的每个包括第一流分类号,第三数据包括第二流分类号,则第一数据和第二数据可被存储在第K+1专用存储器块(Block K+1)中,第三数据可被存储在第K+2专用存储器块(Block K+2)中。
多个存储器块(Block 1至Block N)中的每个可包括多个页(Page 1至Page M)。页可以是用于写入数据的最小单位。因此,存储装置100的写入操作的最小单位可以是页。
再次参照图1,存储装置100可包括数据总线150,数据总线150可用于在接口110、控制器120、缓冲器130和非易失性存储器140之间执行数据通信。数据总线150可对应于数据被移动时通过的路径,并且可使用用于交换数据的协议进行操作。
在以上参照图3描述的解释中,当包括各种流分类号的数据被存储在多个存储器块(Block 1至Block N)中的一些存储器块中的每个中时,存储装置的操作特性可能被劣化。例如,存储装置的WAF(写入放大因子)特性可能被劣化。因此,可针对在多个存储器块(Block 1至Block N)中的一些存储器块中的每个中的包括各种流分类号的数据来实现根据流分类号的数据分类。例如,根据一些示例实施例,使用通过存储装置的垃圾收集,仅一个流分类号的数据可仅被编程到多个存储器块(Block 1至Block N)中的一些存储器块中的每个上。这将参照下面的描述详细解释。
图4是用于解释根据一些示例实施例的缓冲器从主机接收数据的操作的示例图。
参照图4,可由存储装置的缓冲器130管理的流分类号资源的数量可小于由主机200发送的多流的流分类号的数量。因此,如上所述,在存储装置的缓冲器130中,可能存在包括各种流分类号的数据可被存储在多个存储器块中的一些存储器块中的每个中的情况。
例如,可假设由主机200发送的数据的流分类号的类型的数量是M。因此,主机200可将具有第一流分类号(Stream 1)的第一数据(DATA#1)、具有第二流分类号(Stream 2)的第二数据(DATA#2)、具有第三流分类号(Stream 3)的第三数据(DATA#3)至具有第M流分类号(Stream M)的第M数据(DATA#M)发送到存储装置的缓冲器130。
这里,可假设当存储装置的缓冲器130从主机200接收数据时可管理的流分类号的数量是N。这里,可假设M和N是大于0的自然数,并且M是大于N的自然数。
存储装置的缓冲器130可以能够根据每个流分类号(例如,第一流分类号(Stream1)至第N-1流分类号(Stream N-1))管理从主机200接收的第一数据(DATA#1)至第N-1数据(DATA#N-1)。然而,从第N数据(DATA#N)至第M数据(DATA#M)的数据可能无法根据每个流分类号(例如,第N流分类号(Stream N)至第M流分类号(Stream M))来管理。因此,可在存储装置的缓冲器130中生成缓冲器多流区域B_MSR(其中,可不根据流分类号来管理从第N流分类号(Stream N)至第M流分类号(Stream M)的数据(例如,第N数据(DATA#N)至第M数据(DATA#M))。
作为参照,当物理数据被存储在存储装置的缓冲器130中时,存储有与每个数据的逻辑块地址(LBA)对应的物理块地址(PBA)的物理映射表可被更新。这将参照图5和图6详细解释。
图5是用于解释根据一些示例实施例的包括存储装置的存储系统的示例框图,该存储装置包括物理映射表缓冲器。图6是用于解释根据一些示例实施例的物理映射表的示例图。
参照图5和图6,与图1不同,根据一些示例实施例的存储装置还可包括物理映射表缓冲器160。作为参照,将省略图1的重复配置和操作,并且将主要解释差异。
除了图1中解释的配置之外,控制器120还可控制物理映射表缓冲器160。
物理映射表缓冲器160可存储以上描述的物理映射表信息。例如,物理映射表可帮助找到由主机200请求的数据。或者,物理映射表可帮助找到将由主机200记录的数据被记录的位置。
例如,第一逻辑块地址(LBA#1)和与第一逻辑块地址(LBA#1)对应的第一物理块地址(PBA#1)可被存储在物理映射表中。此外,第二逻辑块地址(LBA#2)和与第二逻辑块地址(LBA#2)对应的第二物理块地址(PBA#2)可被存储在物理映射表中。第N逻辑块地址(LBA#N)和与第N逻辑块地址(LBA#N)对应的第N物理块地址(PBA#N)可被存储在物理映射表中。
物理映射表缓冲器160可以是例如DRAM(动态随机存取存储器)、SRAM(静态随机存取存储器)、闪存等的SLC(单层单元)区域。
再次参照图4,对于缓冲器多流区域B_MSR,可由图1的控制器120执行基于流分类号将具有相同的流分类号的数据编程到同一块中的分类操作。可使用图1的控制器120通过垃圾收集(GC)来执行上述分类操作。
这里,图1的控制器120可用于识别包括在缓冲器多流区域B_MSR中的每个数据(例如,第N数据(DATA#N)至第M数据(DATA#M))的流分类号(例如,第N流分类号(Stream N)至第M流分类号(Stream M))。图1的控制器120可使用流映射表或者通过利用如下的额外数据空间来识别每个数据的流分类号。
首先,将参照图7和图8解释由图1的控制器120使用流映射表识别每个数据的流分类号的操作。
图7是用于解释根据一些示例实施例的包括存储装置的存储系统的示例框图,该存储装置包括流映射表缓冲器。图8是用于解释根据一些示例实施例的流映射表的示例图。为了清楚,将省略图1的重复配置和操作,并且将主要解释差异。
参照图7和图8,与图1不同,根据一些示例实施例的存储装置还可包括流映射表缓冲器170。
除了图1中解释的配置之外,控制器120还可控制流映射表缓冲器170。
流映射表缓冲器170可存储以上描述的流映射表信息。例如,流映射表可帮助控制器120识别数据的流分类号。
例如,第一逻辑块地址(LBA#1)和与第一逻辑块地址(LBA#1)对应的第一流分类号(Stream 1)可被存储在流映射表中。此外,第二逻辑块地址(LBA#2)和与第二逻辑块地址(LBA#2)对应的第二流分类号(Stream 2)可被存储在流映射表中。第N逻辑块地址(LBA#N)和与第N逻辑块地址(LBA#N)对应的第N流分类号(Stream N)可被存储在流映射表中。
流映射表缓冲器170可以是例如DRAM(动态随机存取存储器)、SRAM(静态随机存取存储器)、闪存等的SLC(单层单元)区域。
作为参照,根据一些示例实施例的存储装置100可包括以上描述的物理映射表缓冲器160和流映射表缓冲器170两者。这可参照图9作为示例进行解释。
图9是用于解释根据一些示例实施例的包括存储装置的存储系统的示例框图,该存储装置包括物理映射表缓冲器和流映射表缓冲器。作为参照,将省略图1的重复配置和操作,并且将主要解释差异。
参照图9,与根据一些示例实施例的图1的存储装置100不同,存储装置可包括物理映射表缓冲器160和流映射表缓冲器170两者。
因此,控制器120可参照(存储在物理映射表缓冲器160中的)物理映射表以找到从主机200接收的数据的物理块地址。此外,当数据的物理块地址被改变时,控制器120可实时更新存储在物理映射表缓冲器160中的物理映射表。
此外,控制器120可参照存储在流映射表缓冲器170中的流映射表以确定数据的流分类号。作为参照,尽管流分类号可如上所述被存储在流映射表中,但是如图10中所示,流分类号可被存储在非易失性存储器140的块中的额外数据空间中。这将参照图10进行解释。
图10是解释根据一些示例实施例的利用非易失性存储器装置中的数据的额外空间的操作的示图。
参照图1和图10,存储在非易失性存储器140中的数据可包括其中不存储数据的额外空间SPARE。
在一些示例实施例中,额外数据空间SPARE是不存储数据的信息的额外空间,并且可存储指示数据的特性的流分类号。通过将数据的流分类号存储在额外数据空间SPARE中,控制器120可在不参照另外的配置(例如,图9的流映射表缓冲器170)的情况下立即识别数据的流分类号。
再次参照图4,从主机200发送的数据可被存储在非易失性存储器中。这将参照图11进行解释。
图11是解释根据一些示例实施例的对来自缓冲器的数据进行编程的操作的示例图。作为参照,如图4中所解释的,假设M和N是大于1的自然数,并且M大于N。
参照图1和图11,存储装置100(其中,数据从主机200接收)可将数据临时存储在缓冲器130中,然后将数据编程并存储在非易失性存储器140的块中。
非易失性存储器140可包括多个可编程空闲块(例如,第一空闲块(Free Block 1)至第N-1空闲块(Free Block N-1)和第N空闲块(Free Block N))。多个空闲块(例如,第一空闲块(Free Block 1)至第N-1空闲块(Free Block N-1)和第N空闲块(Free Block N))可以是其中数据可被编程的块。
例如,临时存储在缓冲器130中的第一数据(DATA#1)至第M数据(DATA#M)可被编程到第一空闲块(Free Block 1)至第N空闲块(Free Block N)中。这里,可假设第一数据(DATA#1)至第M数据(DATA#M)具有彼此不同的流分类号(例如,第一流分类号至第M流分类号)。
第一数据(DATA#1)至第N-1数据(DATA#N-1)中的每个可被编程到第一空闲块(Free Block 1)至第N-1空闲块(Free Block N-1)中,并且仅具有第一流分类号的第一数据可被编程到第一块(Block 1)中。相似地,仅具有第N-1流分类号的第N-1数据可被编程到第N-1块(Block N-1)中。
然而,第N数据(DATA#N)至第M数据(DATA#M)可被编程到第N空闲块(Free BlockN)中。因此,具有多个流分类号(例如,第N流分类号(Stream N)至第M流分类号(Stream M))的第N数据(DATA#N)至第M数据(DATA#M)可被编程到单个第N块中。
在非易失性存储器140中,可存在逻辑块多流(LB_MSR)块,在逻辑块多流(LB_MSR)块中,具有多个流分类号的多个数据(例如,第N数据(DATA#N)至第M数据(DATA#M))被编程到单个块(例如,第N块(Block N))中。
如以上图4中所述,当具有多个流分类号的多个数据(例如,第N数据(DATA#N)至第M数据(DATA#M))被存储在单个块(例如,第N块(Block N))中时,存储装置100的WAF特性会劣化。因此,当控制器120将其中存在多流的块确定为牺牲块(如逻辑块多流LB_MSR块)并且对牺牲块执行垃圾收集时,控制器120可根据流分类号对包括在牺牲块中的数据执行数据分类。因此,控制器120可通过垃圾收集对牺牲块的数据执行分类操作,使得具有相同的流分类号的数据可被编程到同一块中。将参照图12详细解释这样的分类操作。
图12是解释根据一些示例实施例的根据流分类号对多流块中的数据进行分类的垃圾收集操作的示例图。
参照图1和图12,将解释由控制器120对从主机200接收的数据执行的分类操作。作为参照,该图的解释是示例,数据的类型、块的数量、块的类型等仅是示例,并且可与该图不同。
可假设第一数据(DATA#1)、第三数据(DATA#3)和第四数据(DATA#4)全部具有第一流分类号。可假设第二数据(DATA#2)和第五数据(DATA#5)全部具有第二流分类号。此外,可假设第六数据(DATA#6)、第七数据(DATA#7)和第八数据(DATA#8)全部具有第三流分类号。该图中的每个数据的流分类号仅是示例。
第一数据(DATA#1)和第三数据(DATA#3)被存储在第一块(Block 1)中。第四数据(DATA#4)被存储在第七块(Block 7)中。第二数据(DATA#2)和第八数据(DATA#8)被存储在第八块(Block 8)中。此外,第五数据(DATA#5)、第六数据(DATA#6)和第七数据(DATA#7)被存储在第九块(Block 9)中。该图仅是示例,并且存储每个数据的块的类型、位置等可被改变。
如上所述,存储有具有彼此不同的流分类号的数据的块(例如,第八块(Block 8)和第九块(Block 9))可存在于非易失性存储器140的一些块中。
控制器120可执行垃圾收集以将具有相同的流分类号的数据编程到单个块中。因此,控制器120可将非易失性存储器140的多个块中的一些设置为牺牲块以执行分类操作。
例如,通过将非易失性存储器140的多个块之中的第一块(Block 1)、第七块(Block 7)、第八块(Block 8)和第九块(Block 9)设置为牺牲块,并且通过对第一块(Block1)、第七块(Block 7)、第八块(Block 8)和第九块(Block 9)执行垃圾收集,控制器120可基于根据数据的特性分类的流分类号将具有相同的流分类号的数据编程到同一块中。
例如,控制器120可通过垃圾收集,将被编程到被设置为牺牲块的第一块(Block1)、第七块(Block 7)、第八块(Block 8)和第九块(Block 9)中的数据(例如,第一数据(DATA#1)至第八数据(DATA#8))编程到非易失性存储器140中的空闲块(例如,第五块(Block 5)至第七块(Block 7))中。因此,控制器120可通过垃圾收集根据牺牲块生成目的地块,在目的地块中仅具有相同的流分类号的数据被编程到单个块中。作为参照,由控制器120生成的目的地块可被改变,并且可以是另一类型的空闲块。
例如,控制器120可将第一块(Block 1)的第一数据(DATA#1)和第三数据(DATA#3)编程到第五块(Block 5)中。此外,控制器120可将第七块(Block 7)的第四数据(DATA#4)编程到第五块(Block 5)中。此外,控制器120可将第八块(Block 8)的第二数据(DATA#2)编程到第六块(Block6)中。此外,控制器120可将第八块(Block 8)的第八数据(DATA#8)编程到第七块(Block 7)中。此外,控制器120可将第九块(Block 9)的第五数据(DATA#5)编程到第六块(Block 6)中。此外,控制器120可将第九块(Block 9)的第六数据(DATA#6)和第七数据(DATA#7)编程到第七块(Block 7)中。
如上所述,控制器120可通过垃圾收集生成目的地块,在目的地块中仅具有相同的流分类号的数据被编程到单个块中。例如,通过控制器120的使用垃圾收集的分类操作,第五块(Block 5)可仅包括具有第一流分类号的第一数据(DATA#1)、第三数据(DATA#3)和第四数据(DATA#4)。此外,通过控制器120的使用垃圾收集的分类操作,第六块(Block 6)可包括具有第二流分类号的第二数据(DATA#2)和第五数据(DATA#5)。此外,通过控制器120的使用垃圾收集的分类操作,第七块(Block 7)可仅包括具有第三流分类号的第六数据(DATA#6)、第七数据(DATA#7)和第八数据(DATA#8)。
因此,根据一些示例实施例,可改善存储装置100的WAF特性,并且可改善存储装置100的操作可靠性。
在下文中,将详细解释根据一些示例实施例的存储装置100的操作方法。
图13是解释根据一些示例实施例的包括存储装置的存储系统的操作的示例流程图。
参照图1和图13,存储装置100从主机200接收包括根据数据的特性分类的流分类号的数据(S100)。可将从主机200接收的数据临时存储在缓冲器130中(S200)。可将临时存储在缓冲器130中的数据编程到非易失性存储器140中的空闲块中(S300)。接下来,控制器120确定在被编程到非易失性存储器140中的数据之中具有相同的流分类号的数据是否需要被编程到同一块中(S400)。
这里,当控制器120确定对于被编程到非易失性存储器140中的数据不需要分类操作时(否),可在没有任何附加操作的情况下从主机200接收附加数据。
如果控制器120确定对于被编程到非易失性存储器140中的数据需要分类操作(是),则控制器120将非易失性存储器140的多个块中的至少一些块确定为执行分类操作的牺牲块(S500)。
这里,根据一些示例实施例,控制器120可使用牺牲块的确定类型来确定执行分类操作的牺牲块。根据一些示例实施例的控制器120可例如基于包括在非易失性存储器140中的每个块中的流分类号的类型的数量来确定牺牲块。在另一示例中,根据一些示例实施例的控制器120可基于包括在非易失性存储器140中的每个块中的有效数据的数量来确定牺牲块。作为另一示例,假设非易失性存储器140中的块之中的一些块被设置为牺牲块,根据一些示例实施例的控制器120可通过将通过执行垃圾收集将被生成的空闲块的数量与通过执行垃圾收集将被消除的空闲块的数量进行比较来确定牺牲块。
将参照图14至图20解释控制器120使用根据一些示例实施例的确定牺牲块的方法来确定执行分类操作的目的牺牲块的方法。
首先,将参照图14和图15解释根据一些示例实施例的控制器120例如基于包括在非易失性存储器140中的每个块中的流分类号的类型的数量来确定牺牲块的操作(S500-1)。
图14是用于解释根据一些示例实施例的确定牺牲块的操作的示例图。
参照图1和图14,数据可被存储在非易失性存储器140中的第一块(Block1)和第二块(Block 2)中。尽管图14仅将第一块(Block 1)和第二块(Block2)示出为数据被编程到非易失性存储器140中的块,但这仅是为了便于解释。
此外,尽管图14示出仅流分类号被存储在第一块(Block 1)和第二块(Block 2)中,但这仅是为了便于解释。如上所述,第一块(Block 1)和第二块(Block 2)可将数据和与数据相关的流分类号一起存储,并且可将地址信息和纠错奇偶校验一起存储。
根据一些示例实施例的控制器120可将第一块(Block 1)和第二块(Block2)之中的存储的流分类号的类型的数量小于预定义数量的块确定为牺牲块。或者,控制器120可将第一块(Block 1)和第二块(Block 2)之中的存储的流分类号的类型的数量小的块确定为牺牲块。
例如,第一块(Block 1)可存储流分类号1至8(Stream 1至Stream 8)。因此,存储在第一块(Block 1)中的流分类号的类型的数量可以是八。第二块(Block 2)可存储流分类号1至3(Stream 1至Stream 3)。因此,存储在第二块(Block 2)中的流分类号的类型的数量可以是三。
如果预定义数量是5,则控制器120可选择第一块(Block 1)和第二块(Block 2)之中的第二块(Block 2)作为牺牲块。或者,控制器120可选择第一块(Block 1)和第二块(Block 2)之中的第二块(Block 2)作为牺牲块。
当多个块之中的存储的流分类号的类型的数量小于预定义数量的块被选择为牺牲块时,写入放大因子(WAF)可被最小化,并且存储装置100的功耗可被减小。或者,当存储的流分类号的类型的数量最小的块被选择作为牺牲块时,写入放大因子(WAF)可被最小化,并且存储装置100的功耗可被减小。现在将参照图15解释确定牺牲块的示例操作方法。
图15是用于解释根据一些示例实施例的图14的确定牺牲块的操作的示例流程图。
参照图1和图15,控制器120可首先测量包括在非易失性存储器140中的每个块中的流分类号的类型的数量(S500-1A)。接下来,控制器120可将测量的流分类号的类型的数量与预定义数量进行比较(S500-1B)。接下来,控制器120可将测量的流分类号的类型的数量被确定为小于预定义数量的块定义为牺牲块(S500-1C)。或者,在操作S500-1B中,控制器120可将在操作S500-1A中测量的块之中的具有最小的流分类号的类型的数量的块定义为牺牲块(S500-1C)。
接下来,将参照图16和图17解释根据一些示例实施例的控制器120例如基于包括在非易失性存储器140中的每个块中的有效数据的数量来确定牺牲块的操作(S500-2)。
图16是用于解释根据一些示例实施例的确定牺牲块的操作的示例图。图17是用于解释根据一些示例实施例的图16的用于确定牺牲块的操作的示例流程图。
参照图1和图16,存储装置100的非易失性存储器140可包括多个块。为了便于说明,将省略或简要解释图14中解释的内容的重复说明。
根据一些示例实施例的控制器120可将多个块中的每个块中存储的数据之中的有效数据的数量小于预定义数量的块确定为牺牲块。或者,根据一些示例实施例的控制器120可将多个块中的每个块中存储的数据之中的有效数据的数量最小的块确定为牺牲块。
例如,图16中示出的有效数据的宽度和无效数据的宽度中的每个可表示在第一块(Block 1)和第二块(Block 2)中存储的数据之中的有效数据和无效数据的百分比。
例如,第一块(Block 1)的有效数据的数量可大于第一块(Block 1)的无效数据的数量。此外,第二块(Block 2)的有效数据的数量可小于第二块(Block 2)的无效数据的数量。此外,如果第一块(Block 1)和第二块(Block2)的大小相同,则第一块(Block 1)的有效数据的数量可大于第二块(Block2)的有效数据的数量。
如果预定义数量是5,第一块(Block 1)的有效数据的数量是10并且第二块(Block2)的有效数据的数量是3,则根据一些示例实施例的控制器120可将第二块(Block 2)确定为牺牲块。或者,根据一些示例实施例的控制器120可将第一块(Block 1)和第二块(Block2)之中的具有最少的有效数据的第二块(Block 2)确定为牺牲块。
当根据一些示例实施例的控制器120选择多个块之中的有效数据的数量小于预定义数量的块作为牺牲块时,写入放大因子(WAF)可被最小化,并且存储装置100的功耗可被减小。可选地,当根据一些示例实施例的控制器120选择多个块之中的具有最小数量的有效数据的块作为牺牲块时,写入放大因子WAF可被最小化,并且存储装置100的功耗可被减小。将参照图17解释确定牺牲块的具体操作方法。
参照图1和图17,控制器120可首先测量包括在非易失性存储器140中的每个块中的有效数据的数量(S500-2A)。
接下来,控制器120可将测量的有效数据的数量与预定义数量进行比较(S500-2B)。接下来,控制器120可将测量的有效数据的数量被确定为小于预定义数量的块确定为牺牲块(S500-2C)。或者,在操作S500-2B中,控制器120可将在操作S500-2A中测量的块之中的具有最小数量的有效数据的块确定为牺牲块(S500-2C)。
图18和图19是用于解释根据一些示例实施例的确定牺牲块的操作的示例图。图20是用于解释根据一些示例实施例的图18和图19的用于确定牺牲块的操作的示例流程图。将省略或简要解释非易失性存储器140中的块和数据的重复说明。
参照图18至图20,将解释用于确定牺牲块的操作S500-3,在根据一些示例实施例的控制器120将非易失性存储器140中的块之中的一些块设置为牺牲块的假设下,通过将通过执行垃圾收集而生成的空闲块的数量与通过执行垃圾收集而消除的空闲块的数量进行比较来确定牺牲块。
首先,参照图1和图18,例如,第一数据(DATA#1)至第六数据(DATA#6)可被存储在非易失性存储器140中的第一块(Block 1)至第三块(Block3)中。假设第一数据(DATA#1)至第六数据(DATA#6)具有全部彼此不同的流分类号(例如,第一流分类号至第六流分类号)。
假设控制器120将非易失性存储器140中的块之中的第一块(Block 1)至第三块(Block 3)确定为牺牲块。在执行分类操作之后,控制器120对牺牲块执行垃圾收集以计算目的地块。
例如,控制器120可将第一块(Block 1)至第三块(Block 3)假设为牺牲块。控制器120可在通过垃圾收集对牺牲块执行分类处理之后计算目的地块。目的地块可包括例如存储有具有第一流分类号的第一数据(DATA#1)的第四块(Block 4)。此外,目的地块可包括例如存储有具有第二流分类号的第二数据(DATA#2)的第五块(Block 5)。此外,目的地块可包括例如存储有具有第三流分类号的第三数据(DATA#3)的第六块(Block 6)。此外,目的地块可包括例如存储有具有第四流分类号的第四数据(DATA#4)的第七块(Block 7)。此外,目的地块可包括例如存储有具有第五流分类号的第五数据(DATA#5)的第八块(Block 8)。此外,目的地块可包括例如存储有具有第六流分类号的第六数据(DATA#6)的第九块(Block 9)。
当控制器120将第一块(Block 1)至第三块(Block 3)确定为牺牲块时,被消除以生成目的地块的空闲块的总数量可被测量为六(第四块(Block 4)至第九块(Block 9)),生成的空闲块的总数量可被测量为三(第一块(Block1)至第三块(Block 3))。因此,控制器120可确定六个消除的空闲块的总数量大于生成的三个空闲块的总数量,并且可不将第一块(Block 1)至第三块(Block 3)确定为牺牲块。
将参照图1和图19解释假设控制器120仅将第一块(Block 1)确定为牺牲块的情况。
控制器120可在执行分类操作之后对牺牲块执行垃圾收集以计算目的地块。例如,控制器120可将第一块(Block 1)假设为牺牲块。控制器120可在通过垃圾收集对牺牲块执行分类处理之后计算目的地块。目的地块可包括例如存储有具有第一流分类号的第一数据(DATA #1)的第四块(Block 4)。此外,目的地块可包括例如存储有具有第二流分类号的第二数据(DATA#2)的第五块(Block 5)。
当控制器120将第一块(Block 1)确定为牺牲块时,被消除以生成目的地块的空闲块的总数量可被测量为二(第四块(Block 4)和第五块(Block 5)),生成的空闲块的总数量可被测量为一(第一块(Block 1))。因此,控制器120确定两个消除的空闲块的总数量大于一个生成的空闲块的总数量,并且可不将第一块(Block 1)至第三块(Block 3)确定为牺牲块。与这样的情况相反,即,在控制器120对将被确定为牺牲块的块执行垃圾收集并且将被生成的空闲块的数量被确定为大于将被消除的空闲块的数量的情况下,可对牺牲块执行垃圾收集。
如上所述,当根据一些示例实施例的控制器120对牺牲块执行垃圾收集时,通过最大化将被生成的空闲块的数量,可最小化写入放大因子(WAF),并且减小存储装置100的功耗。现在将参照图20解释根据另一示例实施例的确定牺牲块的具体操作方法的示例。
参照图1和图20,控制器120可首先假设执行垃圾收集的牺牲块,并且测量在执行垃圾收集之后生成的空闲块和在执行垃圾收集之后消除的空闲块中的每个的数量(S500-3A)。接下来,控制器120可将生成的空闲块的数量与消除的空闲块的数量进行比较(S500-3B)。接下来,控制器120可将在S500-1A中假设的生成的空闲块的数量被确定为大于消除的空闲块的数量的牺牲块定义为牺牲块(S500-3C)。
再次参照图1和图13,在控制器120可确定将执行垃圾收集的牺牲块之后并且在执行垃圾收集之前,控制器120可将关于垃圾收集的操作信息发送到外部装置(例如,主机200;将在外部装置是主机200的假设下提供下面的说明),然后等待来自主机的关于是否执行垃圾收集的响应(S600)。现在将参照图21对其详细解释。
图21是用于解释根据一些示例实施例的主机与存储装置之间的信号传输操作的示例图。
参照图1和图21,存储装置100可将关于对执行了垃圾收集的牺牲块的垃圾收集执行操作的信息(Info)发送到主机200。
由存储装置100发送到主机200的信息(Info)可以是在执行垃圾收集时可调用的时间、资源、功率等。或者,由存储装置100发送到主机200的信息(Info)可以是在执行垃圾收集时生成的空闲块的数量和消除的空闲块的数量等。或者,由存储装置100发送到主机200的信息(Info)可以是包括在当前非易失性存储器140中的空闲块的数量等。由存储装置100发送到主机200的信息(Info)可以是关于由控制器120执行的垃圾收集的任何类型的信息。
主机200可从存储装置100接收信息(Info),并且确定当前主机200是否处于空闲状态。主机200可确定主机200处于空闲状态,可将指示主机200处于空闲状态的信号发送到存储装置100,并且可允许存储装置100执行垃圾收集。
在一个示例实施例中,当例如主机200确定主机200没有关闭电源的计划、主机200没有消耗大量电力的计划等时,主机200可将垃圾收集许可信号发送到存储装置100,然后存储装置100可确定可执行垃圾收集。
再次参照图1和图13,在操作S600中,如果存储装置100没有从主机200接收到垃圾收集执行许可命令,例如,如果主机200不空闲(否),则存储装置100可不执行垃圾收集,而是可再次从主机200接收数据。
如果存储装置100从主机200接收到垃圾收集执行许可命令,例如,在操作S600中,如果主机200空闲(是),则存储装置100可执行生成目的地块的垃圾收集(S700)。
在一些示例实施例中,可在后台操作中执行以上描述的存储装置的垃圾收集。因此,即使没有从主机200接收到命令,如果控制器120确定调用分类操作,则存储装置100的控制器也可执行垃圾收集。因此,当没有从主机200接收到命令时、当存储装置100处于空闲状态时等,可执行垃圾收集。
通过总结和回顾,由于基于NAND的驱动器的特性,覆写可能是不可行的。因此,可使用垃圾收集(诸如,将用户数据复制到新的存储块并擦除无效数据存储块)。然而,垃圾收集可降低基于NAND的驱动器的读取性能和写入性能两者。例如,数据写入请求可能导致介质上的若干内部SSD写入,因此垃圾收集可能增大写入放大。例如,当有效数据首先从将被擦除的介质块读取,然后在伴随用于存储新的主机数据的写入时被重新写入另一介质存储块时,写入放大可能发生。
主机可将相关或相似的数据分类到相同的流分类号中。通过将相同的流分类号的数据存储在同一擦除块或同一驱动器上,可去除或减小垃圾收集。然而,如果包括各种流分类号的数据被单独存储在每个块中,则因为数据被分布和存储在每个块中,所以功率可被单独消耗并且时间损失可能发生。
如上所述,实施例可提供一种通过垃圾收集将具有相同的流的数据高效地迁移到同一块的存储装置。实施例还可提供一种操作存储装置的方法,该存储装置通过垃圾收集将具有相同的流的数据高效地迁移到同一块。
已经在此公开了示例实施例,尽管特定的术语被采用,但是它们仅以一般性和描述性的意义被使用并将被解释,而不出于限制的目的。在一些情况下,对本领域的普通技术人员将清楚的是,除非另有具体地指示,否则自提交本申请起,结合特定实施例描述的特征、特性和/或元件可被单独使用,或者与结合其它实施例描述的特征、特性和/或元件组合使用。因此,本领域技术人员将理解,在不脱离权利要求中阐述的本发明的精神和范围的情况下,可在形式和细节上进行各种改变。
Claims (20)
1.一种存储装置,包括:
缓冲器,被配置为:从外部接收第一数据和第二数据,并且将第一数据和第二数据存储在第一页上;
非易失性存储器,被配置为将第一数据和第二数据存储在第一块中;和
控制器,被配置为执行通过垃圾收集将第一数据和第二数据编程到彼此不同的空闲块中的编程操作,其中,
第一数据包括标识第一数据的特性的第一流分类号,第二数据包括标识第二数据的特性并且不同于第一流分类号的第二流分类号,
控制器被配置为:在执行编程操作之前将编程操作的信息发送到外部,并且
控制器被配置为:在从外部接收到编程执行许可命令时执行编程操作。
2.根据权利要求1所述的存储装置,还包括物理映射表缓冲器,其中,
物理映射表缓冲器被配置为存储物理映射表,物理映射表存储与第一数据的第一逻辑块地址对应的第一物理块地址,并且存储与第二数据的第二逻辑块地址对应的第二物理块地址;并且
控制器被配置为在编程操作被执行时更新物理映射表。
3.根据权利要求2所述的存储装置,还包括流映射表缓冲器,其中,
流映射表缓冲器被配置为存储流映射表,流映射表存储与第一数据的第一逻辑块地址对应的第一流分类号,并且存储与第二数据的第二逻辑块地址对应的第二流分类号,
控制器被配置为使用流映射表来确定第一数据的特性和第二数据的特性。
4.根据权利要求1所述的存储装置,其中,
存储在非易失性存储器中的第一数据包括第一额外数据空间,第二数据包括第二额外数据空间,并且
第一流分类号被存储在第一额外数据空间中,第二流分类号被存储在第二额外数据空间中。
5.根据权利要求1所述的存储装置,其中,控制器被配置为:
确定包括在第一块中的流分类号的类型的数量是否小于预定义数量;
当确定所述数量小于预定义数量时,执行垃圾收集;并且
当确定所述数量不小于预定义数量时,不执行垃圾收集。
6.根据权利要求1所述的存储装置,其中,控制器被配置为:
确定包括在第一块中的有效数据的数量是否小于预定义数量;
当确定包括在第一块中的有效数据的数量小于预定义数量时,执行垃圾收集;并且
当确定包括在第一块中的有效数据的数量不小于预定义数量时,不执行垃圾收集。
7.根据权利要求1所述的存储装置,其中,控制器被配置为:
计算通过编程操作消耗的空闲块的数量和通过编程操作生成的空闲块的数量;并且
当生成的空闲块的数量大于消耗的空闲块的数量时,执行垃圾收集。
8.根据权利要求1至权利要求7中的任意一项所述的存储装置,其中,所述信息包括:非易失性存储器中的空闲块的数量、在编程操作时所需的功率、通过编程操作消耗的空闲块的数量、以及通过编程操作生成的空闲块的数量中的至少一个。
9.一种存储装置,包括:
主机,被配置为发送包括根据数据的特性进行分类的流分类号的数据;
非易失性存储器,包括:多个块,从主机接收的数据被任意地存储在所述多个块中,而与流分类号无关;和
控制器,被配置为执行基于流分类号将具有相同的流分类号的数据编程到同一块中的编程操作,其中,
控制器被配置为:在执行编程操作之前将编程操作的信息发送到主机,并且
控制器在从主机接收到编程执行许可命令时执行编程操作。
10.根据权利要求9所述的存储装置,其中:
存储在非易失性存储器中的数据包括额外数据空间;
流分类号被存储在额外数据空间中。
11.根据权利要求9所述的存储装置,其中,控制器被配置为:
确定包括在块中的流分类号的类型的数量是否小于预定义数量;
当确定包括在块中的流分类号的类型的数量小于预定义数量时,执行编程操作;并且
当确定包括在块中的流分类号的类型的数量不小于预定义数量时,不执行编程操作。
12.根据权利要求9所述的存储装置,其中,控制器被配置为:
确定包括在块中的有效数据的数量是否小于预定义数量;
当确定包括在块中的有效数据的数量小于预定义数量时,执行编程操作;并且
当确定包括在块中的有效数据的数量不小于预定义数量时,不执行编程操作。
13.根据权利要求9所述的存储装置,其中,控制器被配置为:
计算通过编程操作消耗的空闲块的数量和通过编程操作生成的空闲块的数量;并且
当生成的空闲块的数量大于消耗的空闲块的数量时,执行编程操作。
14.根据权利要求9至权利要求13中的任意一项所述的存储装置,其中,所述信息包括:通过编程操作消耗的空闲块的数量、通过编程操作生成的空闲块的数量、在编程操作时所需的功率、以及非易失性存储器中的空闲块的数量中的至少一个。
15.一种存储装置的操作方法,包括:
从主机接收包括根据数据的特性进行分类的流分类号的数据;
将数据存储在非易失性存储器中的空闲块中;
确定是否需要根据流分类号对数据进行分类;
当确定需要根据流分类号对数据进行分类时,在非易失性存储器中的存储有数据的多个块之中确定牺牲块,在牺牲块中分类通过垃圾收集被执行;
将关于对牺牲块执行垃圾收集的信息发送到主机;和
当从主机接收到垃圾收集的可执行消息时,对牺牲块执行垃圾收集,并且根据流分类号对牺牲块中的数据进行分类,以将数据编程到空闲块中。
16.根据权利要求15所述的存储装置的操作方法,其中,
流分类号被存储在非易失性存储器中的数据的额外数据空间中,并且
数据的特性基于额外数据空间而被确定。
17.根据权利要求15所述的存储装置的操作方法,其中,确定牺牲块的步骤包括:
测量包括在存储有数据的每个块中的流分类号的类型的数量;
将流分类号的类型的数量与预定义数量进行比较;和
将流分类号的类型的数量被确定为小于预定义数量的块确定为牺牲块。
18.根据权利要求15所述的存储装置的操作方法,其中,确定牺牲块的步骤包括:
测量包括在存储有数据的每个块中的有效数据的数量;
将有效数据的数量与预定义数量进行比较;并且
将有效数据的数量被确定为小于预定义数量的块确定为牺牲块。
19.根据权利要求15所述的存储装置的操作方法,其中,确定牺牲块的步骤包括:
对于存储有数据的所述多个块中的至少一些块,测量通过执行垃圾收集将被生成的空闲块的数量和通过垃圾收集将被消除的空闲块的数量中的每个;
对将被生成的空闲块的数量与将被消除的空闲块的数量进行比较;和
当确定将被生成的空闲块的数量大于将被消除的空闲块的数量时,将存储有数据的所述多个块中的至少一些块确定为牺牲块。
20.根据权利要求15至权利要求19中的任意一项所述的存储装置的操作方法,其中,所述信息包括:非易失性存储器中的空闲块的数量、在垃圾收集时所需的功率、通过垃圾收集消除的空闲块的数量、以及通过垃圾收集生成的空闲块的数量中的至少一个。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020200076310A KR20210158043A (ko) | 2020-06-23 | 2020-06-23 | 스트림 분류 번호에 따른 데이터 분류 스토리지 장치 및 그 동작 방법 |
KR10-2020-0076310 | 2020-06-23 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113836047A true CN113836047A (zh) | 2021-12-24 |
Family
ID=74844809
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110535812.6A Pending CN113836047A (zh) | 2020-06-23 | 2021-05-17 | 存储装置及其操作方法 |
Country Status (4)
Country | Link |
---|---|
US (2) | US20210397550A1 (zh) |
EP (1) | EP3929753B1 (zh) |
KR (1) | KR20210158043A (zh) |
CN (1) | CN113836047A (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11663123B2 (en) * | 2021-04-27 | 2023-05-30 | Micron Technology, Inc. | Page validity table colors for garbage collection |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8799561B2 (en) * | 2012-07-27 | 2014-08-05 | International Business Machines Corporation | Valid page threshold based garbage collection for solid state drive |
KR101549569B1 (ko) * | 2014-02-14 | 2015-09-03 | 고려대학교 산학협력단 | 가비지 컬렉션 수행 방법 및 그 방법을 이용한 플래시 메모리 장치 |
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 |
US10133490B2 (en) * | 2015-10-30 | 2018-11-20 | Sandisk Technologies Llc | System and method for managing extended maintenance scheduling in a non-volatile memory |
US11048624B2 (en) * | 2017-04-25 | 2021-06-29 | Samsung Electronics Co., Ltd. | Methods for multi-stream garbage collection |
KR102387935B1 (ko) * | 2017-10-23 | 2022-04-15 | 삼성전자주식회사 | 공용 메모리 영역 및 전용 메모리 영역을 포함하는 데이터 저장 장치 |
KR102457400B1 (ko) * | 2017-11-16 | 2022-10-21 | 삼성전자주식회사 | 가비지 컬렉션 방법, 이를 수행하는 저장 장치 및 이를 포함하는 컴퓨팅 시스템 |
KR102178717B1 (ko) | 2018-12-19 | 2020-11-27 | 주식회사 포스코 | 도금 밀착성 및 내식성이 우수한 Zn-Mg 합금 도금 강재 및 그 제조방법 |
KR20200141212A (ko) * | 2019-06-10 | 2020-12-18 | 에스케이하이닉스 주식회사 | 가비지콜렉션 동작을 위한 메모리 시스템 및 메모리 시스템의 동작방법 |
KR20200142698A (ko) * | 2019-06-13 | 2020-12-23 | 에스케이하이닉스 주식회사 | 데이터 저장 장치 및 그것의 동작 방법 |
-
2020
- 2020-06-23 KR KR1020200076310A patent/KR20210158043A/ko unknown
-
2021
- 2021-02-25 US US17/185,001 patent/US20210397550A1/en not_active Abandoned
- 2021-03-01 EP EP21159911.3A patent/EP3929753B1/en active Active
- 2021-05-17 CN CN202110535812.6A patent/CN113836047A/zh active Pending
-
2023
- 2023-05-08 US US18/144,335 patent/US20230273878A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
EP3929753B1 (en) | 2023-06-07 |
US20230273878A1 (en) | 2023-08-31 |
US20210397550A1 (en) | 2021-12-23 |
EP3929753A1 (en) | 2021-12-29 |
KR20210158043A (ko) | 2021-12-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102567140B1 (ko) | 데이터 관리 방법 및 이를 수행하는 저장 장치 | |
CN110781096B (zh) | 用于通过预测需求时间来执行垃圾收集的设备和方法 | |
US8205063B2 (en) | Dynamic mapping of logical ranges to write blocks | |
US8230160B2 (en) | Flash memory storage system and flash memory controller and data processing method thereof | |
US9582416B2 (en) | Data erasing method, memory control circuit unit and memory storage apparatus | |
KR20200022118A (ko) | 데이터 저장 장치 및 그 동작 방법 | |
US10860231B2 (en) | Memory system for adjusting map segment based on pattern and operating method thereof | |
KR20190057887A (ko) | 데이터 저장 장치 및 그것의 동작 방법 | |
KR102649131B1 (ko) | 메모리 시스템 내 대용량 데이터 저장이 가능한 블록에서의 유효 데이터 체크 방법 및 장치 | |
JP2006018839A (ja) | 漸進的マージ方法及びそれを利用したメモリシステム | |
US20140281158A1 (en) | File differentiation based on data block identification | |
KR20200049051A (ko) | 스토리지 장치의 구동 방법, 이를 수행하는 스토리지 장치 및 이를 이용한 스토리지 시스템의 구동 방법 | |
KR20200116704A (ko) | 메모리 시스템 및 그것의 동작방법 | |
KR20200016075A (ko) | 메모리 시스템에서의 유효 데이터 탐색 방법 및 장치 | |
JP2009503743A (ja) | データファイルを直接記憶するメモリブロックの管理 | |
KR20200123684A (ko) | 메모리 시스템에서 맵 정보를 전송하는 장치 | |
KR20200114212A (ko) | 데이터 저장 장치 및 그것의 동작 방법 | |
JP2009503740A (ja) | データファイルを直接記憶する再プログラム可能な不揮発性メモリ内のファイルデータの索引付け | |
US20230273878A1 (en) | Storage device for classifying data based on stream class number, storage system, and operating method thereof | |
KR102596964B1 (ko) | 맵 캐시 버퍼 크기를 가변시킬 수 있는 데이터 저장 장치 | |
CN113282234B (zh) | 存储装置、存储系统、及其操作方法 | |
CN112825025A (zh) | 控制器及其操作方法 | |
US11693574B2 (en) | Method of writing data in storage device and storage device performing the same | |
US20220164119A1 (en) | Controller, and memory system and data processing system including the same | |
CN110825317B (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 |