CN110321297A - 用于将虚拟流映射到物理流上的存储装置及其操作方法 - Google Patents

用于将虚拟流映射到物理流上的存储装置及其操作方法 Download PDF

Info

Publication number
CN110321297A
CN110321297A CN201910237594.0A CN201910237594A CN110321297A CN 110321297 A CN110321297 A CN 110321297A CN 201910237594 A CN201910237594 A CN 201910237594A CN 110321297 A CN110321297 A CN 110321297A
Authority
CN
China
Prior art keywords
life cycle
virtual stream
data
write
storage device
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
Application number
CN201910237594.0A
Other languages
English (en)
Inventor
龙焕珍
金珍洙
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sungkyunkwan University School Industry Cooperation
Samsung Electronics Co Ltd
Sungkyunkwan University Research and Business Foundation
Original Assignee
Sungkyunkwan University School Industry Cooperation
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
Priority claimed from KR1020180063730A external-priority patent/KR102656172B1/ko
Application filed by Sungkyunkwan University School Industry Cooperation, Samsung Electronics Co Ltd filed Critical Sungkyunkwan University School Industry Cooperation
Publication of CN110321297A publication Critical patent/CN110321297A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • 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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0638Combination of memories, e.g. ROM and RAM such as to permit replacement or supplementing of words in one module by words in another module
    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0877Cache access modes
    • G06F12/0882Page mode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1008Correctness of operation, e.g. memory ordering
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • 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/7201Logical to physical mapping or translation of blocks or pages
    • 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/7203Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7204Capacity control, e.g. partitioning, end-of-life degradation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7205Cleaning, compaction, garbage collection, erase control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7208Multiple device management, e.g. distributing data over multiple flash devices
    • 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/7209Validity control, e.g. using flags, time stamps or sequence numbers

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

存储装置包括控制器和非易失性存储器。控制器接收具有虚拟流标识符(ID)的写入命令、接收具有虚拟流ID的丢弃命令,并确定分配虚拟流ID中的每一个的写入数据的生存期。控制器根据物理流ID访问非易失性存储器。控制器基于写入数据的生存期来映射虚拟流ID和物理流ID。

Description

用于将虚拟流映射到物理流上的存储装置及其操作方法
相关申请的交叉引用
本申请要求于2018年3月28日在美国专利商标局提交的美国临时专利申请No.62/648,971的优先权和于2018年6月1日在韩国知识产权局提交的韩国专利申请No.10-2018-0063730的优先权,其公开内容通过引用整体并入本文。
技术领域
本公开的实施例在此涉及存储装置及其操作方法,并且更具体地,涉及用于将虚拟流映射到物理流上的存储装置及其操作方法。
背景技术
存储装置是非易失性存储介质,并且无论是否对存储装置供电,都可以永久地或半永久地保留存储装置中存储的数据。存储装置可以像半导体存储器那样电操作,而不是机械地操作。主要正在使用包括半导体存储器的存储装置(例如,固态驱动器(SSD))。
使用存储装置的主机可以根据应用而生成各种数据。主机可以将关于数据的信息连同数据一起提供给存储装置,用以改善存储装置的操作。然而,由于存储装置的种类、对硬件的限制等,主机可以提供的关于数据的信息是限制性的。
发明内容
本公开的实施例提供了一种用于将虚拟流映射到物理流上的存储装置及其操作方法。
根据示例性实施例,存储装置可以包括控制器,其接收具有虚拟流标识符(ID)的写入命令和具有所述虚拟流ID的丢弃命令并基于写入命令和丢弃命令确定分配所述虚拟流ID中的每一个的写入数据的生存期。非易失性存储器由所述控制器根据物理流ID访问。所述控制器可以基于所述写入数据的生存期,将所述虚拟流ID映射到所述物理流ID上。
根据示例性实施例,存储装置可以包括非易失性存储器和控制器。控制器根据第一物理流标识符(ID)和第二物理流ID访问所述非易失性存储器。所述控制器可以:(1)接收具有虚拟流ID的写入命令;(2)接收具有所述虚拟流ID的丢弃命令;(3)基于所述写入命令和所述丢弃命令,确定分配所述虚拟流ID的每一个的写入数据的生存期;以及(4)对分配所述第一物理流ID的第一块数据和分配所述第二物理流ID的第二块数据中的一个以及所述写入数据进行聚类。所述聚类基于(a)所述写入数据的生存期和(b)所述第一块数据的生存期之间的第一差值,以及(c)所述写入数据的生存期和(d)所述第二块数据的生存期之间的第二差值。
根据示例性实施例,存储装置的操作方法可以包括:(1)从主机接收具有虚拟流标识符(ID)的写入命令;(2)从所述主机接收具有所述虚拟流ID的丢弃命令;(3)基于所述写入命令和所述丢弃命令,确定分配所述虚拟流ID的每一个的写入数据的生存期;(4)基于所述写入数据的生存期,将所述虚拟流ID映射到所述物理流ID上;以及(5)基于指示所述虚拟流ID和所述物理流ID的关系的映射表,将所述写入数据编程到非易失性存储器的与所述物理流ID中的一个相对应的块。
根据示例性实施例,存储装置包括非易失性存储器和存储器控制器。所述非易失性存储器将第一数据存储在与第一时段相关联的第一存储器块中,并将第二数据存储在与第二时段相关联的第二存储器块中。所述存储器控制器:(1)利用写入命令生成用于存储从主机接收到的第三数据的第三时段,所述主机在所述存储装置的外部;(2)响应于确定所述第三时段和所述第一时段在值上比所述第三时段和所述第二时段接近,将所述第三数据存储到所述第一存储器块;(3)响应于确定所述第三时段和所述第二时段在值上比所述第三时段和所述第一时段接近,将所述第三数据存储到所述第二存储器块;(4)在所述第一时段到期之后对整个第一存储器块执行第一垃圾收集操作;(5)在所述第二时段到期之后对整个第二存储器块执行第二垃圾收集操作。
附图说明
图1是示出根据本公开的实施例的存储***的框图。
图2是示出根据本公开的实施例的将主机的虚拟流映射到存储装置的物理流上的示图。
图3是示出根据本公开的另一实施例的将主机的虚拟流映射到存储装置的物理流上的示图。
图4和图5是示出根据本公开的实施例的虚拟流生存期识别器确定写入数据的生存期的操作的示图。
图6是示出图1至图3的控制器的配置的框图。
图7是示出图1至图3的存储装置的配置的框图。
图8是示出根据本公开的实施例的存储装置的操作方法的流程图。
图9是示出根据本公开的实施例的包括存储装置的电子装置的框图。
具体实施方式
下面,将详细并且清楚地描述本公开的实施例,以达到本领域普通技术人员容易实现本公开的程度。
图1是示出根据本公开的实施例的存储***的框图。存储***10可以包括主机100和存储装置200。
主机100可以基于用于将数据存储到存储装置200(例如,固态驱动器(SSD))的流将数据发送到存储装置200。主机100可以基于数据类型(诸如,日志文件、元文件或媒体文件)将流标识符(ID)分配给数据。例如,基于文件的生存期,可以将日志文件称为“热数据(hot data)”,可以将元文件称为“温数据(warm data)”,并且可以将媒体文件称为“冷数据(cold data)”。主机100可以基于数据类型将不同的流ID分配给数据集,并且可以将多流数据集发送至存储装置200。例如,主机100可以将流ID#1分配给对应于日志文件的数据,并且可以将流ID#2分配给对应于媒体文件的数据。主机100可以将流ID分配给数据,使得不将具有短生存期的热数据和具有长生存期的冷数据一起存储在存储装置200的相同位置(例如,存储器块)处,并且可以基于流发送数据。
在实施例中,主机100可以分别向存储装置200发送具有流ID的写入命令WCMD和具有流ID的丢弃命令DCMD。可以将写入命令WCMD从主机100发送到存储装置200,用于将数据编程到存储装置200。可以将丢弃命令DCMD从主机100发送到存储装置200,用于指示存储在存储装置200中的数据是无效的。例如,也可以将丢弃命令DCMD称为“修剪命令”。
在实施例中,主机100可以基于流((以下称为“虚拟流”))将多流数据集发送到存储装置200,而不考虑由于对硬件或硬件资源的限制存储装置200可以支持的流(下文中称为“物理流”)的数量。例如,主机100可以基于分配给写入命令WCMD或丢弃命令DCMD的流ID字段的大小,将65536(=216)个虚拟流ID分配给多流数据集。主机100可以分配的虚拟流ID的数量可以大于存储装置200可以支持的物理流ID的数量。然而,主机100可以分配的虚拟流ID的数量不限于上述示例。术语“多流数据集”用于指示分别对应于不同虚拟流ID的多种数据格式,并且多流数据集可以被称为“多数据流”或“多个数据流”。
主机100可以包括处理单元110、主机存储器120和接口电路130。处理单元110可以执行加载到主机存储器120上的各种软件(例如,应用程序、操作***(例如,文件***)和装置驱动器)。处理单元110可以执行操作***(OS)或应用程序。处理单元110可以包括同构多核处理器或异构多核处理器。例如,处理单元110可以包括以下中的至少一个:中央处理单元(CPU)、图像信号处理单元(ISP)、数字信号处理单元(DSP)、图形处理单元(GPU)、视觉处理单元(VPU)和神经处理单元(NPU)。
可以将应用程序、文件***、装置驱动器等加载到主机存储器120上,用于驱动存储***10。此外,可以将用于驱动存储***10的各种软件加载到主机存储器120上。可以将要由处理单元110处理的应用程序或数据加载到主机存储器120上。例如,可以将用于管理与发送到存储装置200的命令相关联的提交队列和完成队列的输入/输出调度器(未示出)加载到主机存储器120上。
接口电路130可以提供主机100和存储装置200之间的物理连接。例如,接口电路130可以以适合于与存储装置200接合的方式,对与从主机100生成的各种请求相对应的命令、地址和数据进行转换(或转化)。例如,接口电路130可以配置为通过使用以下各种通信方式中的至少一种来与存储装置200通信,诸如通用串行总线(USB)、串行AT附件(SATA)、串行连接SCSI(SAS)、高速集成电路(HSIC)、小型计算机***接口(SCSI)、***组件互连(PCI)、PCI总线(PCIe)、非易失性存储器接口(NVMe)、通用闪存(UFS)、安全数字(SD)、多媒体卡(MMC)和嵌入式MMC(eMMC)。
存储装置200可以处理从主机100提供的命令。存储装置200可以从主机100接收具有虚拟流ID(VSID)的写入命令WCMD、具有虚拟流ID的丢弃命令DCMD和多流数据集。如上所述,主机100可以将虚拟流ID分配给数据集,而不考虑存储装置200可以支持的物理流ID。存储装置200的物理流ID的数量可以小于主机100的虚拟流ID的数量。然而,存储装置200可以基于数据的特征(诸如生存期)将虚拟流ID映射到物理流ID上或者映射虚拟流ID和物理流ID,并且可以基于映射结果存储多流数据集。存储装置200可以包括控制器210、缓冲存储器220和非易失性存储装置230。
控制器210可以包括虚拟流生存期识别器211和虚拟流聚类管理器212。虚拟流生存期识别器211可以基于具有虚拟流ID的写入命令WCMD和具有虚拟流ID的丢弃命令DCMD确定写入数据的生存期,将虚拟流ID的每一个分配给写入数据。例如,虚拟流生存期识别器211可以用诸如现场可编程门阵列(FPGA)或专用集成电路(ASIC)的电路来实现,或者可以用处理器或处理器和由处理器可执行的软件的组合来实现。
虚拟流聚类管理器212可以基于由虚拟流生存期识别器211确定的写入数据的生存期将虚拟流映射到物理流上。详细地,虚拟流聚类管理器212可以基于写入数据的生存期,将虚拟流(VS)ID映射到物理流(PS)ID上。例如,虚拟流聚类管理器212可以用诸如FPGA或ASIC的电路来实现,或者可以用处理器或处理器和由处理器可执行的软件的组合来实现。此外,包括虚拟流生存期识别器211和虚拟流聚类管理器212的控制器210可以用片上***(SoC)来实现。
缓冲存储器220可以临时存储从主机100接收到的数据或从非易失性存储装置230接收到的数据。例如,缓冲存储器220可以存储以下元数据:诸如,记录由虚拟流生存期识别器211确定的写入数据的生存期的时间戳、用于确定生存期的信息、指示虚拟流ID与生存期之间的关系的映射表、由虚拟流聚类管理器212生成的并指示虚拟流ID与物理流ID之间的关系的映射表、以及指示主机100的逻辑地址(或逻辑块地址LBA)与非易失性存储装置230的物理地址之间的关系的映射表。缓冲存储器220可以包括易失性存储器单元,诸如动态随机访问存储器(DRAM)单元或静态随机存取存储器(SRAM)单元。
非易失性存储装置230可以在控制器210的控制下存储多流数据集。控制器210可以基于物理流ID来访问非易失性存储装置230。非易失性存储装置230可以将分配了一个物理流ID的数据和分配了另一个物理流ID的数据存储到不同的区域(例如,块)。
非易失性存储装置230可以包括通过第一通道CH1与控制器210通信的第一非易失性存储器(NVM)、通过第二通道CH2与控制器210通信的第二非易失性存储器、以及通过第三通道CH3与控制器210通信的第三非易失性存储器。非易失性存储装置230和控制器210之间的通道的数量不限于图1中所示的示例。每个非易失性存储器可以包括非易失性存储器单元,诸如NAND闪存单元、NOR闪存单元、电阻随机存取存储器(RRAM)单元、铁电随机存取存储器(FRAM)单元、相变随机存取存储器(PRAM)单元、晶闸管随机存取存储器(TRAM)单元、或磁随机存取存储器(MRAM)单元。下面,将在假设第一非易失性存储器单元至第三非易失性存储器单元的每一个包括NAND闪存单元的情况下给出描述。
在实施例中,主机100可以将具有相同特征或类似特征的一个虚拟流的数据发送到存储装置200。主机100可以将具有不同特征的多个虚拟流的多流数据集发送到存储装置200。这里,特征可以包括数据的生存期。主机100可以将虚拟流ID分配给数据集,而不考虑存储装置200可以支持的物理流ID的数量。控制器210可以确定虚拟流的写入数据的生存期。控制器210可以基于生存期将虚拟流(其数量大于物理流的数量)分配给物理流。也就是说,控制器210可以基于生存期将虚拟流映射到物理流上。
详细地,控制器210可以将具有(彼此相同或相似的)第一生存期的第一物理流的第一数据集存储到非易失性存储装置230的至少一个第一块。控制器210可以将具有(彼此相同或相似的)第二生存期的第二物理流的第二数据集存储到非易失性存储装置230的至少一个第二块。这里,块可以包括与非易失性存储装置230的擦除单元相对应的存储器单元。如上所述,第一生存期彼此相同或相似,并且第二生存期彼此相同或相似。相反,第一生存期可以与第二生存期不同。在对应于第一生存期的时间消逝的情况下,可以将存储在第一块中的第一数据集一起擦除。在对应于第二生存期的时间消逝的情况下,可以将存储在第二块中的第二数据集一起擦除。也就是说,控制器210可以基于物理流不将具有不同生存期的数据集存储到同一块。
控制器210可以将不同物理流的数据集存储到不同的块,并且可以管理数据集。根据控制器210的上述操作可以提高垃圾收集(garbage collection)的效率,垃圾收集用于擦除块或页中的无效数据并获得空闲页。此外,即使主机100将大量虚拟流ID分配给数据集,控制器210也可以将具有相同生存期或相似生存期的虚拟流的数据集存储到同一块。由于主机100可以将虚拟流的数据集发送到存储装置200,而不考虑存储装置200的物理流的数量,因此可以提高主机100的可移植性或兼容性。
图2是示出根据本公开的实施例的将主机的虚拟流映射到存储装置的物理流的示图。主机100可以向存储装置200发送第一写入数据WDATA1至第四写入数据WDATA4,第一虚拟流ID VSID#1至第四虚拟流ID VSID#4分别被分配给第一写入数据WDATA1至第四写入数据WDATA4。然而,主机100的虚拟流的数量不限于图2中所示的示例。存储装置200可以支持第一物理流和第二物理流,第一物理流和第二物理流的数量小于第一虚拟流至第四虚拟流的数量。然而,存储装置200支持的物理流的数量不限于图2中所示的示例。
主机100可以将分别具有第一虚拟流ID VSID#1至第四虚拟流ID VSID#4的写入命令发送至存储装置200。主机100可以将分别具有第一虚拟流ID VSID#1至第四虚拟流IDVSID#4的丢弃命令发送至存储装置200。主机100可以将分别具有第一虚拟流ID VSID#1至第四虚拟流ID VSID#4的重写命令发送到存储装置200。这里,重写命令可以是写入命令,该写入命令具有先前写入命令中包括的逻辑地址范围。也就是说,重写命令也是写入命令。
可以根据从主机100发送的上述命令来确定第一写入数据WDATA1至第四写入数据WDATA4的生存期。例如,第一写入数据WDATA1和第三写入数据WDATA3的生存期可以相同地为LT1,并且第二写入数据WDATA2和第四写入数据WDATA4的生存期可以相同地为LT2。图2中所示的第一写入数据WDATA1至第四写入数据WDATA4的长度的每一个都可以指示生存期。然而,第一写入数据WDATA1至第四写入数据WDATA4的生存期不限于图2中所示的示例。
虚拟流生存期识别器211可以基于与第一虚拟流至第四虚拟流相关联的写入命令、重写命令和丢弃命令来确定第一写入数据WDATA1至第四写入数据WDATA4的生存期。例如,虚拟流生存期识别器211可以生成指示第一虚拟流ID VSID#1至第四虚拟流ID VSID#4的关系以及第一写入数据WDATA1至第四写入数据WDATA4的生存期的映射表VS2LT,并且可以将映射表VS2LT存储到缓冲存储器220。当然,可以根据由主机100生成的虚拟流的数量来改变映射表VS2LT的大小。
虚拟流聚类管理器212可以基于与虚拟流的生存期相关联的映射表VS2LT,将第一虚拟流至第四虚拟流映射到第一物理流和第二物理流上。例如,虚拟流聚类管理器212可以生成指示虚拟流ID和物理流ID的关系的映射表VS2PS,并且可以将映射表VS2PS存储到缓冲存储器220。此外,参考图2,映射表VS2PS还可以指示物理流ID与分配物理流ID的写入数据的生存期之间的关系。当然,可以根据由主机100生成的虚拟流的数量来改变映射表VS2PS的大小。
虚拟流聚类管理器212可以将具有相同生存期LT1的第一虚拟流和第三虚拟流分配给第一物理流。虚拟流聚类管理器212可以将第一虚拟流ID VSID#1和第三虚拟流IDVSID#3分配给第一物理流ID PSID#1。虚拟流聚类管理器212可以对分配第一虚拟流IDVSID#1的第一写入数据WDATA1和分配第三虚拟流ID VSID#3的第三写入数据WDATA3进行聚类或分组。
如上所述,虚拟流聚类管理器212可以将具有相同生存期LT2的第二虚拟流和第四虚拟流分配给第二物理流。虚拟流聚类管理器212可以将第二虚拟流ID VSID#2和第四虚拟流ID VSID#4分配给第二物理流ID PSID#2。虚拟流聚类管理器212可以对分配第二虚拟流ID VSID#2的第二写入数据WDATA2和分配第四虚拟流ID VSID#4的第四写入数据WDATA4进行聚类。
控制器210可以基于映射表VS2PS,将第一写入数据WDATA1至第四写入数据WDATA4中的每一个编程到与第一物理流ID PSID#1和第二物理流ID PSID#2中的任何一个相对应的非易失性存储装置230的块。例如,控制器210可以将第一写入数据WDATA1和第三写入数据WDATA3编程到与第一物理流ID PSID#1相对应的第一块BLK1。如上所述,控制器210可以将第二写入数据WDATA2和第四写入数据WDATA4编程到与第二物理流ID PSID#2相对应的第二块BLK2。可以将被编程到块的写入数据称为“块数据”。
在编程之后,当通过丢弃命令或重写命令使第一写入数据WDATA1和第三写入数据WDATA3无效并且生存期LT1消逝时,控制器210可以擦除第一块BLK1。如上所述,当通过丢弃命令或重写命令使第二写入数据WDATA2和第四写入数据WDATA4无效并且生存期LT2消逝时,控制器210可以擦除第二块BLK2。在通过主机100的丢弃命令或重写命令使写入数据无效的情况下,由于无效数据是旧数据,因此主机100可以不再从控制器210请求无效数据,并且在无效数据的生存期消逝时,控制器210可以擦除无效数据。
与图2的示例不同,第一写入数据WDATA1和第三写入数据WDATA3可以具有不相同的生存期但相似的生存期,并且第二写入数据WDATA2和第四写入数据WDATA4可以具有不相同的生存期但相似的生存期。即使在这种情况下,也可以通过虚拟流聚类管理器212将第一虚拟流ID VSID#1和第三虚拟流ID VSID#3映射到第一物理流ID PSID#1上,并且可以通过虚拟流聚类管理器212将第二虚拟流ID VSID#2和第四虚拟流ID VSID#4映射到第二物理流ID PSID#2上。
图3是示出根据本公开的另一实施例的主机的虚拟流和存储装置的物理流的映射的示图。将参考图2描述图3。为了简化描述,图3中仅示出了控制器210、虚拟流生存期识别器211和虚拟流聚类管理器212。
首先,如参考图2所述的,可以将第一虚拟流至第四虚拟流映射到第一物理流和第二物理流上,并且可以将第一写入数据WDATA1至第四写入数据WDATA4存储或编程到第一块BLK1和第二块BLK2。接下来,在图3中,假设主机100将分别分配第五虚拟流ID VSID#5和第六虚拟流ID VSID#6的第五写入数据WDATA5和第六写入数据WDATA6发送到存储装置200。此外,假设第五写入数据WDATA5的生存期是LT3,LT3类似于第一写入数据WDATA1和第三写入数据WDATA3的生存期LT1,并且第六写入数据WDATA6的生存期是LT4,LT4类似于第二写入数据WDATA2和第四写入数据WDATA4的生存期LT2。
虚拟流生存期识别器211还可以基于与第五虚拟流和第六虚拟流相关联的写入命令、重写命令以及丢弃命令来确定第五写入数据WDATA5和第六写入数据WDATA6的生存期。例如,虚拟流生存期识别器211还可以将第五虚拟流ID VSID#5和第六虚拟流ID VSID#6的关系以及第五写入数据WDATA5和第六写入数据WDATA6的生存期添加到映射表VS2LT。虚拟流生存期识别器211可以更新映射表VS2LT,并且可以将更新后的映射表VS2LT存储到缓冲存储器220。
虚拟流聚类管理器212可以将第五虚拟流的生存期LT3与第一物理流的生存期LT1和第二物理流的生存期LT2中的每一个进行比较。虚拟流聚类管理器212可以将第五写入数据WDATA5的生存期LT3与分配了第一物理流ID和第二物理流ID中的每一个的块数据的生存期进行比较。如上所述,虚拟流聚类管理器212可以将第六虚拟流的生存期LT4与第一物理流的生存期LT1和第二物理流的生存期LT2中的每一个进行比较。虚拟流聚类管理器212可以将第六写入数据WDATA6的生存期LT4与分配了第一物理流ID和第二物理流ID中的每一个的块数据的生存期进行比较。
虚拟流聚类管理器212可以基于比较结果将第五虚拟流和第六虚拟流中的每一个分配给第一物理流或第二物理流。虚拟流聚类管理器212可以基于比较结果将第五虚拟流ID和第六虚拟流ID中的每一个分配给第一物理流ID或第二物理流ID。在存储装置200支持的物理流的数量是“n”(n是2或更大的整数)的情况下,虚拟流聚类管理器212可以基于比较结果将第五虚拟流和第六虚拟流中的每一个分配给“n”个物理流的任何一个。虚拟流聚类管理器212可以基于比较结果对第五虚拟流ID和第六虚拟流ID中的每一个以及“n”个物理流ID中的任何一个进行映射。
虚拟流聚类管理器212可以确定第五虚拟流的第五写入数据WDATA5的生存期LT3与分配第一物理流ID的块数据的生存期之间的差值,是否小于第五虚拟流的第五写入数据WDATA5的生存期LT3与分配第二物理流ID的块数据的生存期之间的差值。这里,差值可以是绝对值。块数据的生存期可以是存储或编程到与物理流ID相对应的块的数据的生存期或者存储在其中的数据集的生存期的平均值。根据上述假设,由于将第一写入数据WDATA1和第三写入数据WDATA3编程到分配第一物理流ID的块,因此编程到分配第一物理流ID的块的数据集的生存期是LT1。由于将第二写入数据WDATA2和第四写入数据WDATA4编程到分配第二物理流ID的块,因此编程到分配第二物理流ID的块的数据集的生存期是LT2。生存期LT3与生存期LT1相似,并且与生存期LT2不同。生存期LT3与生存期LT1之间的差值小于生存期LT3与生存期LT2之间的差值。
因此,虚拟流聚类管理器212可以根据较小的生存期差值将第五虚拟流分配给第一物理流而不是第二物理流,并且可以将第五虚拟流ID映射到第一物理流ID PSID#1上。如上所述,虚拟流聚类管理器212可以根据较小的生存期差值将第六虚拟流分配给第二物理流而不是第一物理流,并且可以将第六虚拟流ID映射到第二物理流ID PSID#2上。虚拟流聚类管理器212可以更新映射表VS2PS,并且可以将更新后的映射表VS2PS存储到缓冲存储器220。
在上述映射操作之后,虚拟流聚类管理器212可以对分配第一虚拟流ID VSID#1的第一写入数据WDATA1、分配第三虚拟流ID VSID的第三写入数据WDATA3、以及分配第五虚拟流ID VSID#5的第五写入数据WDATA5进行聚类。根据上述假设,由于将第一写入数据WDATA1和第三写入数据WDATA3编程到第一块BLK1,所以第一写入数据WDATA1和第三写入数据WDATA3可以被称为“块数据”。如上所述,在上述映射操作之后,虚拟流聚类管理器212可以对分配第二虚拟流ID VSID#2的第二写入数据WDATA2、分配第四虚拟流ID VSID#4的第四写入数据WDATA4、以及分配第六虚拟流ID VSID#6的第六写入数据WDATA6进行聚类。根据上述假设,由于将第二写入数据WDATA2和第四写入数据WDATA4编程到第二块BLK2,所以可以将第二写入数据WDATA2和第四写入数据WDATA4称为“块数据”。虚拟流聚类管理器212可以确定写入数据的生存期与分别分配物理流ID的块数据的生存期之间的差值,并且可以基于该差值来对写入数据和块数据进行聚类。
在实施例中,每当参考时间(例如,十分钟)消逝时,虚拟流聚类管理器212可以更新映射表VS2PS。在另一实施例中,每当接收到的丢弃命令的数量超过参考值时,虚拟流聚类管理器212可以更新映射表VS2PS。
在实施例中,存储装置200支持的物理流的数量可以是“n”(n是2或更大的整数)。在这种情况下,虚拟流聚类管理器212可以确定任何虚拟流的写入数据的生存期与分配第一物理流ID至第n物理流ID的块数据集的生存期之间的差值中的任何一个是否是最小的。虚拟流聚类管理器212可以根据最小差值将虚拟流映射到物理流上。例如,虚拟流聚类管理器212可以基于K均值聚类算法将虚拟流映射到物理流上。
在实施例中,在将第五虚拟流和第六虚拟流映射到第一物理流和第二物理流之后,虚拟流聚类管理器212可以对新虚拟流的写入数据执行比较操作。在这种情况下,虚拟流聚类管理器212可以将分配第一物理流ID的第一块数据(即,第一写入数据WDATA1、第三写入数据WDATA3和第五写入数据WDATA5)的生存期的平均值与新虚拟流的写入数据的生存期进行比较。如上所述,虚拟流聚类管理器212可以将分配第二物理流ID的第二块数据(即,第二写入数据WDATA2、第四写入数据WDATA4和和第六写入数据WDATA6)的生存期的平均值与新虚拟流的写入数据的生存期进行比较。虚拟流聚类管理器212可以利用映射表VS2PS中的第一物理流的生存期,更新分配第一物理流ID的第一块数据的生存期的平均值。如上所述,虚拟流聚类管理器212可以利用映射表VS2PS中的第二物理流的生存期,更新分配第二物理流ID的第二块数据的生存期的平均值。
图4和图5是示出根据本公开的实施例的虚拟流生存期识别器确定写入数据的生存期的操作的示图。将一起描述图4和图5,并且将参考图1至图3对图4和图5进行描述。
参考图4,在第一时间T1,控制器210可以接收用于第一虚拟流的第一写入数据WDATA1的第一写入命令WCMD1。在第二时间T2,控制器210可以接收用于第二虚拟流的第二写入数据WDATA2的第二写入命令WCMD2。在第三时间T3,控制器210可以接收用于第一虚拟流的第一写入数据WDATA1的第一丢弃命令DCMD1。在第四时间T4,控制器210可以接收用于第二虚拟流的第二写入数据WDATA2的第二重写命令OWCMD2。这里,主机100可以生成写入命令和丢弃命令,使得虚拟流ID被包括在写入命令和丢弃命令中,并且控制器210可以接收由此生成的写入命令和丢弃命令。与图4的示例不同,控制器210可以接收第一丢弃命令DCMD1,然后可以接收第二写入命令WCMD2。
在实施例中,虚拟流生存期识别器211可以基于接收到第一丢弃命令DCMD1的时间T3与接收到第一写入命令WCMD1的时间T1之间的差值来确定第一写入数据WDATA1的生存期。虚拟流生存期识别器211可以将时间T3和时间T1之间的差值计算为第一写入数据WDATA1的生存期。
在另一实施例中,虚拟流生存期识别器211可以基于接收到第一丢弃命令DCMD1的时间T3与T1时间之后的基于第一写入命令WDATA1将第一写入数据WDATA1编程到非易失性存储装置230的时间之间的差值,确定第一写入数据WDATA1的生存期。虚拟流生存期识别器211可以将时间(无效时间)T3与将第一写入数据WDATA1编程到非易失性存储装置230的时间之间的差值计算为第一写入数据WDATA1的生存期。
如上所述,虚拟流生存期识别器211可以计算第二写入数据WDATA2的生存期。然而,虚拟流生存期识别器211可以基于第二重写命令OWCMD2而不是丢弃命令来计算第二写入数据WDATA2的生存期。如上所述,第二重写命令OWCMD2是写入命令,该写入命令的逻辑地址范围与在时间T2接收到的第二写入命令WCMD2的逻辑地址范围重叠。
由主机100生成的写入命令和丢弃命令可以包括关于逻辑地址范围和虚拟流ID的信息(例如,开始逻辑地址和扇区计数)。写入命令和丢弃命令可以包括用于虚拟流ID的字段和用于逻辑地址范围的字段。
参考图5,第一写入命令WCMD1可以包括分别指示第一逻辑页LP1至第五逻辑页LP5的第一逻辑地址LA1至第五逻辑地址LA5。也就是说,可以将第一写入数据WDATA1划分为第一逻辑页LP1至第五逻辑页LP5,并且可以将第一写入数据WDATA1存储到第一逻辑页LP1至第五逻辑页LP5。第一丢弃命令DCMD1可以包括分别指示第二逻辑页LP2至第四逻辑页LP4的第二逻辑地址LA2至第四逻辑地址LA4。控制器210可以基于第一丢弃命令DCMD1,将由第二逻辑地址LA2至第四逻辑地址LA4指示的第二逻辑页LP2至第四逻辑页LP4在指示逻辑地址和物理地址之间的关系的映射表LA2PA(未示出)中标记为无效。然而,第一写入命令WCMD1中所包括的逻辑地址范围可以与第一丢弃命令DCMD1中所包括的逻辑地址范围相同或不同,并且逻辑地址范围不限于图5中所示的示例。
第二写入命令WCMD2可以包括分别指示第六逻辑页LP6至第九逻辑页LP9的第六逻辑地址LA6至第九逻辑地址LA9。也就是说,可以将第二写入数据WDATA2划分为第六逻辑页LP6至第九逻辑页LP9,并且可以将第二写入数据WDATA2存储到第六逻辑页LP6至第九逻辑页LP9。第二重写命令OWCMD2可以包括分别指示第七逻辑页LP7至第九逻辑页LP9的第七逻辑地址LA7至第九逻辑地址LA9。控制器210可以基于重写命令OWCMD2,将由第七逻辑地址LA7至第九逻辑地址LA9指示的第七逻辑页LP7至第九逻辑页LP9在指示逻辑地址与物理地址之间的关系的映射表(未示出)中标记为无效。然而,第二写入命令WCMD2中所包括的逻辑地址范围可以与第二重写命令OWCMD2中所包括的逻辑地址范围相同或不同,并且逻辑地址范围不限于图5中所示的示例。
参考图5,虚拟流生存期识别器211可以生成第一时间戳,第一时间戳中记录第一虚拟流的第一写入数据WDATA1的生存期。虚拟流生存期识别器211可以生成第二时间戳,第二时间戳中记录第二虚拟流的第二写入数据WDATA2的生存期。可以将通过第一丢弃命令DCMD1使第一写入数据WDATA1无效的时间与将第一写入数据WDATA1编程到非易失性存储装置230的时间之间的差值,记录在第一时间戳中。可以将通过第二重写命令OWCMD2使第二写入数据WDATA2无效的时间与将第二写入数据WDATA2编程到非易失性存储装置230的时间之间的差值,记录在第二时间戳中。
在实施例中,控制器210可以将第一虚拟流的第一逻辑页LP1至第五逻辑页LP5同时而不是在不同的时间编程到非易失性存储装置230。因此,虚拟流生存期识别器211可以不存储或管理将第一逻辑页LP1至第五逻辑页LP5分别编程到非易失性存储装置230的时间。相反,虚拟流生存期识别器211可以仅计算和管理将第一逻辑页LP1至第五逻辑页LP5同时编程到非易失性存储装置230的任何一个时间。
如上所述,控制器210可以将第二虚拟流的第六逻辑页LP6至第九逻辑页LP9同时编程到非易失性存储器装置230。因此,虚拟流生存期识别器211可以仅计算和管理将第六逻辑页LP6至第九逻辑页LP9同时编程到非易失性存储装置230的任何一个时间。这里,将第一写入数据WDATA1编程到非易失性存储装置230的时间可以与将第二写入数据WDATA2编程到非易失性存储装置230的时间相同或不同。
在虚拟流生存期识别器211生成和管理各个逻辑页的时间戳的情况下,时间戳表的大小可以与指示逻辑地址和物理地址之间的关系的映射表的大小相同。将大小与映射表的大小相同的时间戳表存储和管理到缓冲存储器220可能是低效的。由于控制器210可以将多个逻辑页同时编程到非易失性存储装置230,因此虚拟流生存期识别器211不需要基于逻辑页(各自)的编程时间来生成和管理时间戳。
在实施例中,为了减小时间戳表的大小,虚拟流生存期识别器211可以基于同时编程到非易失性存储装置230的逻辑页的数量来调整时间戳表的大小,并且可以将调整了大小的时间戳表存储到缓冲存储器220。这里,可以例如基于用于连接非易失性存储装置230和控制器210的通道的数量、连接到每个通道的路径的数量、非易失性存储器的每一个的平面的数量、或者非易失性存储器的每一个的物理页的大小与逻辑页的大小的比率,来确定同时编程到非易失性存储装置230的逻辑页的数量。将参考图7描述通道、路径、和页的大小。
在另一实施例中,虚拟流生存期识别器211可以计算存储第一写入数据WDATA1的第一逻辑页LP1至第五逻辑页LP5中的由第一丢弃命令DCMD1指定的第二逻辑页LP2至第四逻辑页LP4(即,死页或无效页)的无效时间,以及无效时间的平均值。死页的无效时间的平均值可以是虚拟流的无效时间。虚拟流生存期识别器211可以不计算第一逻辑页LP1至第五逻辑页LP5中的活页(即,第一逻辑页LP1和第五逻辑页LP5)的生存期,而是可以计算死页的生存期。根据上述方式,可以减少虚拟流生存期识别器211的吞吐量。
如上所述,虚拟流生存期识别器211可以计算存储第二写入数据WDATA2的第六逻辑页LP6至第九逻辑页LP9中的由第二重写命令OWCMD2指定的第七逻辑页LP7至第九逻辑页LP9的无效时间,以及无效时间的平均值。总之,虚拟流生存期识别器211可以确定与写入命令以及丢弃命令和重写命令中的一个所包括的逻辑地址的逻辑页相关联的生存期,并且可以通过计算生存期的平均值来确定写入数据的生存期。每当接收到丢弃命令或重写命令时,虚拟流生存期识别器211可以重复地确定死页的生存期。
图6是示出图1至图3的控制器的配置的框图。将参考图1至图3描述图6。控制器210可以包括虚拟流生存期识别器211、虚拟流聚类管理器212、处理单元213、主机接口电路214、缓冲存储器接口电路215和闪存接口电路216。参考图1至图5描述虚拟流生存期识别器211和虚拟流聚类管理器212。
处理单元213可以向主机接口电路214和闪存接口电路216的寄存器提供在非易失性存储装置230上执行读取操作或写入操作所需的各种控制信息。处理单元213可以根据向控制器210的各种控制操作提供的固件来进行操作。例如,处理单元213可以执行闪存转换层(FTL),该闪存转换层(FTL)用于执行用于管理非易失性存储装置230的垃圾收集、将逻辑地址管理到物理地址上、损耗均衡等。在实施例中,与图6的示出不同,处理单元213中可以包括虚拟流生存期识别器211和虚拟流聚类管理器212。
主机接口电路214可以根据上述通信方式与主机100通信。例如,主机接口电路214可以按照NVMe协议进行操作。主机接口电路214可以接收具有虚拟流ID的写入命令和具有虚拟流ID的丢弃命令,并且可以将写入命令和丢弃命令提供给虚拟流生存期识别器211。
缓冲存储器接口电路215可以控制缓冲存储器220的读取操作和写入操作。例如,缓冲存储器接口电路215可以向缓冲存储器220提供由虚拟流生存期识别器211生成或更新的映射表VS2LT。缓冲存储器接口电路215可以将存储在缓冲存储器220中的映射表VS2LT提供给虚拟流生存期识别器211或非易失性存储装置230。缓冲存储器接口电路215可以向缓冲存储器220提供由虚拟流聚类管理器212生成或更新的映射表VS2PS。缓冲存储器接口电路215可以将存储在缓冲存储器220中的映射表VS2PS提供给虚拟流聚类管理器212或非易失性存储装置230。
闪存接口电路216可以与非易失性存储装置230交换数据。闪存接口电路216可以向非易失性存储装置230提供分配物理流ID的写入数据。如上所述,非易失性存储装置230的存储具有第一物理流ID的第一写入数据的块的位置与非易失性存储装置230的存储具有第二物理流ID的第二写入数据的块的位置不同。第一写入数据的生存期与第二写入数据的生存期不相似,并且与第二写入数据的生存期不同。
图7是示出图1至图3的存储装置的配置的框图。存储装置200可以包括控制器210、缓冲存储器220以及第一非易失性存储器231至第四非易失性存储器234。参考图1至图6描述控制器210和缓冲存储器220。第一非易失性存储器231至第四非易失性存储器234可以包括在图1和图2的非易失性存储装置230中。
控制器210可以通过第一通道CH1和第二通道CH2与第一非易失性存储器231至第四非易失性存储器234通信。第一路径WAY1和第二路径WAY2可以连接到第一通道CH1和第二通道CH2中的每一个。第一非易失性存储器231可以连接到第一通道CH1的第一路径WAY1。任何其他非易失性存储器可以以与上述相同的方式连接到任何其他路径。连接到第一通道CH1和第二通道CH2的第一路径WAY1和第二路径WAY2的第一非易失性存储器231至第四非易失性存储器234可以彼此相同。这里,通道的数量、路径的数量和连接到路径的非易失性存储器的数量不限于图7中所示的示例。
第一非易失性存储器231可以包括存储器单元阵列的第一平面Plane1和第二平面Plane2。第一平面Plane1和第二平面Plane2可以彼此相同,并且第一平面Plane1和第二平面Plane2中的每一个可以包括第一存储器块BLK1至第四存储器块BLK4。第一存储器块BLK1至第四存储器块BLK4可以彼此相同,并且第一存储器块BLK1至第四存储器块BLK4中的每一个可以包括多个物理页。多个物理页中的每一个可以包括存储器单元。这里,平面的数量、块的数量和物理页的数量不限于图7中所示的示例。
在实施例中,控制器210可以同时访问多个通道、多个路径和多个平面,以减少编程时间。控制器210可以以交叉方式通过多个通道、多个路径和多个平面同时对多个物理页进行编程。此外,物理页的大小可以大于上述逻辑页的大小。因此,虚拟流生存期识别器211可以共享与同时被编程的逻辑页相关联的编程时间,并且可以基于同时被编程的逻辑页的数量来调整时间戳表的大小。
在实施例中,存储器单元阵列可以是三维存储器单元阵列。三维存储器阵列可以单片地形成在存储器单元阵列的具有有源区的一个或多个物理级中,有源区布置在与硅衬底和存储器单元的操作相关的电路上。与存储器单元的操作相关联的电路可以位于衬底中或衬底上。术语“单片”意味着阵列的每个级的层直接沉积在阵列的每个在下面的级的层上。
3D存储器阵列可以包括垂直取向的垂直NAND串,使得至少一个存储器单元位于另一个存储器单元上方。该至少一个存储器单元可以包括电荷捕获层。每个垂直NAND串可以包括位于存储器单元上方的至少一个选择晶体管。至少一个选择晶体管可以具有与存储器单元相同的结构,并且与存储器单元一起单片地形成。
通过引用结合于此的以下专利文献:美国专利No.7,679,133、美国专利No.8,553,466、美国专利No.8,654,587、美国专利No.8,559,235和美国专利申请公开No.2011/0233648,描述了用于三维存储器阵列的合适配置,其中三维存储器阵列被配置为多个级,在级之间共享字线和/或位线。
在实施例中,三维存储器单元阵列中的存储器单元中的每一个可以存储多位(例如,两位(最高有效位(MSB)和最低有效位(LSB))或三位(MSB、中心有效位(CSB)、和LSB))。在三维存储器单元阵列的情况下,控制器210可以同时对分别对应于多个位的逻辑页(例如,MSB页、CSB页和LSB页)进行编程(即,一次性编程)。可以在具有无耦接垂直结构的三维存储器单元阵列中执行一次性编程,无耦接垂直结构可以减少单元到单元的编程接口。虚拟流生存期识别器211可以基于存储器单元存储的位的数量来进一步调整时间戳表的大小。
图8是示出根据本公开的实施例的存储装置的操作方法的流程图。
在操作S110中,主机100可以将具有虚拟流ID的写入命令发送到存储装置200。主机100可以根据数据的类型将虚拟流ID分配给写入数据,而不考虑存储装置200支持的物理流的数量。当然,主机100还可以将具有操作S110的虚拟流ID或任何其他虚拟流ID的写入命令发送到存储装置200。
在操作S120中,控制器210可以响应于写入命令而将写入数据编程到与默认物理流ID相对应的块。可以在通过虚拟流聚类管理器212将虚拟流映射到物理流之前,执行操作S120的编程操作。可以执行操作S120的编程操作而不考虑映射表VS2PS。这里,可以基于指示逻辑地址和物理地址之间的关系的映射表,周期性地或随机地改变对应于默认物理流ID的块。
在操作S130中,主机100可以将具有虚拟流ID的丢弃命令或具有虚拟流ID VSID的重写命令发送到存储装置200。主机100可以在写入命令中包括虚拟流ID或者可以在丢弃命令中包括虚拟流ID。在实施例中,可以在参考时间期间重复执行操作S110至操作S130,并且执行操作S110至操作S130的顺序不限于图8所示的示例。如上所述,参考时间可以是控制器210更新映射表VS2PS的周期。
在操作S140中,控制器210可以基于写入命令和丢弃命令,确定分配虚拟流IDVSID的写入数据的生存期。控制器210可以计算在操作S130中接收到丢弃命令或重写命令的无效时间与将写入数据编程到与默认物理流ID相对应的块的编程时间之间的差值,作为写入数据的生存期。
在实施例中,控制器210可以不计算对与写入数据相对应的逻辑页进行编程的相应编程时间。如上所述,可以基于通道、路径、块、物理页的大小与逻辑页的大小的比率、以及三维存储器单元阵列的存储器单元存储的位数来同时对逻辑页进行编程。控制器210可以仅计算和存储一个编程时间,在该编程时间对被编程的逻辑页同时进行编程。之后,控制器210可以计算写入数据的生存期。
在实施例中,控制器210可以计算使与丢弃命令或重写命令中所包括的逻辑地址范围相对应的逻辑页无效的无效时间的平均值。也就是说,控制器210可以计算分配虚拟流ID的写入数据的所有逻辑页中的由丢弃命令或重写命令指定的死页的无效时间,以及无效时间的平均值。除了死页之外,控制器210可以不计算分配虚拟流ID的写入数据的逻辑页的活页的生存期。
在操作S150中,控制器210可以对在操作S140中计算的生存期(即,虚拟流的生存期)与物理流的平均生存期进行比较。控制器210可以计算虚拟流的生存期与物理流的生存期之间的差值。
在操作S160中,控制器210可以基于在操作S150中计算的差值中的最小差值将虚拟流映射到物理流上。也就是说,控制器210可以将虚拟流映射到物理流上,使得虚拟流的生存期与被该虚拟流映射到其上的物理流的生存期之间的差值最小。这样,可以将分配虚拟流ID的写入数据集中的具有相同或相似生存期的写入数据映射到或分配给相同的物理流。
在操作S170中,控制器210可以基于在操作S160中生成的映射表VS2PS,将写入数据编程到对应于物理流ID的块。控制器210可以对写入数据执行垃圾收集,或者可以响应于写入命令而将写入数据编程到非易失性存储器装置230。例如,操作S170可以通过垃圾收集来执行,或者可以在将写入数据编程到非易失性存储装置230时执行。
图9是示出根据本公开的实施例的包括存储装置的电子装置的框图。电子装置1000可以包括处理单元1100、工作存储器1200、存储装置1300、通信块1400、用户接口电路1500和总线1600。例如,电子装置1000可以是以下中的一个:个人电脑、工作站、笔记本电脑、平板电脑、智能手机和移动装置。
处理单元1100可以控制电子装置1000的整体操作。处理单元1100可以执行各种算术操作和/或逻辑操作。例如,处理单元1100可以包括通用处理器、专用处理器或应用处理器。
工作存储器1200可以与处理单元1100交换数据。工作存储器1200可以临时存储用于电子装置1000的操作的数据。工作存储器1200可以用作电子装置100的缓冲存储器。例如,工作存储器1200可以包括易失性存储***,诸如SRAM或DRAM。工作存储器1200可以包括一个或多个存储器模块或一个或多个存储器封装件。
存储装置1300可以存储无论电源如何都需要保留的数据。例如,存储装置1300可以包括诸如固态驱动器(SSD)的存储介质。
可以基于参考图1至图9描述的本公开的至少一个实施例来实现存储装置1300。存储装置1300可以包括控制器,该控制器基于数据的生存期将虚拟流ID映射到物理流ID上。为此,存储装置1300可以接收具有虚拟流ID的写入命令和具有虚拟流ID的丢弃命令。根据本公开的实施例,可以提高存储装置1300的垃圾收集的性能,并且可以使存储装置1300的生存期的缩短慢下来。
通信块1400可以在处理单元1100的控制下与电子装置1000的外部通信。通信块1400可以按照有线通信协议和/或无线通信协议与电子装置1000的外部通信。例如,通信块1400可以按照各种无线通信协议(诸如长期演进(LTE)、全球微波接入互操作性(WiMax)、全球移动通信***(GSM)、码分多址(CDMA)、蓝牙、近场通信(NFC)、无线保真(Wi-Fi)、和射频识别(RFID))中的至少一种和/或各种有线通信协议(诸如传输控制协议/网际协议(TCP/IP)、通用串行总线(USB)、小型计算机***接口(SCSI)、***组件互连快速(PCIe)、移动PCIe(M-PCIe)、高级技术附件(ATA)、并行ATA(PATA)、串行ATA(SATA)、串行连接SCSI(SAS)、集成驱动电子设备(IDE)、和火线接口)中的至少一种与电子装置1000的外部通信。
用户接口电路1500可以在处理单元1100的控制下在用户和电子装置1000之间执行通信调解。例如,用户接口电路1500可以包括输入接口,诸如键盘、鼠标、按键、按钮、触摸板、触摸屏、触控板、触摸球、相机、麦克风、陀螺仪传感器或振动传感器。另外,用户接口电路1500可以包括输出接口,诸如液晶显示(LCD)装置、发光二极管(LED)显示装置、有机LED(OLED)显示装置、有源矩阵OLED(AMOLED)显示装置、扬声器和电动机。
总线1600可以提供电子装置1000的组件之间的通信路径。电子装置1000的组件可以基于总线1600的总线格式彼此交换数据。例如,总线格式可以包括以下各种协议中的一种或多种:诸如USB、SCSI、PCIe、ATA、PATA、SATA、SAS、IDE和通用闪存(UFS)。
根据本公开的实施例的存储装置可以基于数据的生存期将虚拟流映射到物理流上并且可以存储数据。因此,可以提高存储装置的垃圾收集效率。此外,可以改善与存储装置通信的主机的可移植性或兼容性。
如本领域中的传统,可以根据执行所描述的一个或多个功能的块来描述和说明实施例。这些块(这里可称为单元或模块等)在物理上由模拟和/或数字电路实现,诸如逻辑门、集成电路、微处理器、微控制器、存储器电路、无源电子组件、有源电子组件、光学组件、硬连线电路等,并且可以可选地由固件和/或软件驱动。例如,电路可以体现在一个或多个半导体芯片中,或者体现在诸如印刷电路板等的衬底支撑件上。构成块的电路可以由专用硬件实现、或者由处理器(例如,一个或多个编程的微处理器和相关电路***)实现、或者由执行块的一些功能的专用硬件和执行块的其他功能的处理器的组合实现。在不脱离本公开的范围的情况下,实施例的每个块可以在物理上分成两个或更多个交互的和离散的块。同样地,在不脱离本公开的范围的情况下,可以将实施例的块物理地组合成更复杂的块。
尽管已经参考本公开的示例性实施例描述了本公开,但是对于本领域普通技术人员来说显而易见的是,在不脱离所附权利要求中所阐述的本公开的精神和范围的情况下,可以对其进行各种改变和修改。

Claims (20)

1.一种存储装置,包括:
控制器,其接收具有虚拟流标识符的写入命令和具有所述虚拟流标识符的丢弃命令,并基于所述写入命令和所述丢弃命令确定写入数据的生存期,将所述虚拟流标识符中的每一个分配给所述写入数据;以及
非易失性存储器,其由所述控制器根据物理流标识符访问,其中
所述控制器基于所述写入数据的所述生存期,将所述虚拟流标识符映射到所述物理流标识符上。
2.如权利要求1所述的存储装置,其中,所述虚拟流标识符的数量大于所述物理流标识符的数量。
3.如权利要求1所述的存储装置,其中,所述控制器包括:
虚拟流生存期识别器,其计算第一时间和第二之间的差值作为第一写入数据的第一生存期,所述第一时间是所述控制器接收具有所述虚拟流标识符中的第一虚拟流标识符的第一丢弃命令或者具有所述第一虚拟数据流标识符的第一重写命令的时间,所述第二时间是将分配所述第一虚拟流标识符的所述第一写入数据编程到所述非易失性存储器的时间;以及
虚拟流聚类管理器,其:
将所述第一写入数据的所述第一生存期与分配所述物理流标识符中的每一个的块数据的生存期进行比较;并且
基于所述第一生存期与所述块数据的所述生存期的比较结果,将所述第一虚拟流标识符映射到所述物理流标识符中的第一物理流标识符上。
4.如权利要求3所述的存储装置,其中,
所述虚拟流生存期识别器计算第三时间和第四时间之间的差值作为第二写入数据的第二生存期,所述第三时间是所述控制器接收具有所述虚拟流标识符中的第二虚拟流标识符的第二丢弃命令或者具有所述第二虚拟流标识符的第二重写命令的时间,所述第四时间是将分配所述第二虚拟流标识符的第二写入数据编程到所述非易失性存储器的时间;以及
所述虚拟流聚类管理器:
将所述第二写入数据的所述第二生存期与所述块数据的所述生存期进行比较;并且
基于所述第二生存期和所述块数据的所述生存期的比较结果,将所述第二虚拟流标识符映射到所述第一物理流标识符或者所述物理流标识符中的第二物理流标识符上。
5.如权利要求4所述的存储装置,其中,所述虚拟流聚类管理器:
将所述第二虚拟流标识符映射到所述第一物理流标识符上,并对所述第二写入数据、所述第一写入数据、和分配所述第一物理流标识符的第一块数据进行聚类,或者
将所述第二虚拟流标识符映射到所述第二物理流标识符上,并对所述第二写入数据和分配所述第二物理流标识符的第二块数据进行聚类。
6.如权利要求5所述的存储装置,其中,所述虚拟流聚类管理器:
当所述第一块数据的生存期与所述第二写入数据的所述第二生存期之间的差值小于所述第二块数据的生存期与所述第二写入数据的所述第二生存期之间的差值时,将所述第二虚拟流标识符映射到所述第一物理流标识符上,或者
当所述第二块数据的所述生存期与所述第二写入数据的所述第二生存期之间的差值小于所述第一块数据的所述生存期与所述第二写入数据的所述第二生存期之间的差值时,将所述第二虚拟流标识符映射到所述第二物理流标识符上。
7.如权利要求3所述的存储装置,其中,所述虚拟流生存期识别器确定所述第一丢弃命令和所述第一重写命令中的一个以及具有所述第一虚拟流标识符的第一写入命令两者中包括的逻辑地址的逻辑页的生存期和计算所述逻辑页的所述生存期的平均值以确定所述第一写入数据的所述第一生存期。
8.如权利要求3所述的存储装置,其中,每当参考时间消逝时,所述虚拟流聚类管理器将所述第一虚拟流标识符映射到所述第一物理流标识符上。
9.如权利要求1所述的存储装置,进一步包括:
缓冲存储器,其存储时间戳表,在所述时间戳表中记录分配所述虚拟流标识符的写入数据集的生存期,其中
所述控制器根据以下各项调整所述时间戳表的大小:(1)连接所述非易失性存储器与所述控制器的通道的数量,(2)连接到所述通道中的每一个的路径的数量,(3)所述非易失性存储器中的每一个中的平面的数量,或(4)所述非易失性存储器中的每一个中的物理页的大小与逻辑页的大小的比率。
10.如权利要求9所述的存储装置,其中,
所述非易失性存储器中的每一个包括三维非易失性存储器单元阵列,并且
当所述三维非易失性存储器单元阵列中的存储单元中的每一个存储多位时,所述控制器根据所述多位的数量调整所述时间戳表的大小。
11.一种存储装置,包括:
非易失性存储器;和
控制器,其根据第一物理流标识符和第二物理流标识符访问所述非易失性存储器,其中所述控制器:
接收具有虚拟流标识符的写入命令;
接收具有所述虚拟流标识符的丢弃命令;
基于所述写入命令和所述丢弃命令,确定分配所述虚拟流标识符中的每一个的写入数据的生存期;以及
基于第一差值以及第二差值,对分配所述第一物理流标识符的第一块数据和分配所述第二物理流标识符的第二块数据中的一个与所述写入数据进行聚类,
其中所述第一差值为所述写入数据的所述生存期和所述第一块数据的生存期之间的差值,并且所述第二差值为所述写入数据的所述生存期和所述第二块数据的生存期之间的差值。
12.如权利要求11所述的存储装置,其中,
当所述第一差值小于所述第二差值时,对所述写入数据和所述第一块数据进行聚类;以及
当所述第二差值小于所述第一差值时,将所述写入数据和所述第二块数据进行聚类。
13.如权利要求11所述的存储装置,其中,
所述控制器基于所述第一差值和所述第二差值,将所述虚拟流标识符中的每一个映射到所述第一物理流标识符和所述第二物理流标识符的一个上,以及
所述虚拟流标识符的数量不小于2。
14.如权利要求13所述的存储装置,其中,所述控制器生成指示所述虚拟流标识符、所述第一物理流标识符和所述第二物理流标识符的关系的映射表。
15.如权利要求11所述的存储装置,其中,所述控制器确定第一时间和第二时间之间的差值作为所述写入数据的所述生存期,
所述第一时间为所述控制器接收所述丢弃命令中的与所述写入数据相关联的丢弃命令或所述写入命令中的与所述写入数据相关联的重写命令的时间,以及
所述第二时间为将所述写入数据编程到所述非易失性存储器的时间。
16.一种存储装置的操作方法,所述方法包括:
从主机接收具有虚拟流标识符的写入命令;
从所述主机接收具有所述虚拟流标识符的丢弃命令;
基于所述写入命令和所述丢弃命令,确定分配所述虚拟流标识符中的每一个的写入数据的生存期;
基于所述写入数据的所述生存期,将所述虚拟流标识符映射到物理流标识符上;以及
基于指示所述虚拟流标识符和所述物理流标识符的关系的映射表,将所述写入数据编程到非易失性存储器的与所述物理流标识符中的一个相对应的块。
17.如权利要求16所述的方法,其中,所述确定所述写入数据的所述生存期包括:
计算将所述写入数据编程到所述非易失性存储器的与所述物理流标识符中的默认物理流标识符相对应的块的编程时间而不考虑所述映射表;以及
计算第一时间和第二之间的差值作为所述写入数据的所述生存期,
其中所述第一时间为接收所述丢弃命令中的与所述写入数据相关联的丢弃命令或所述写入命令中的与所述写入数据相关联的重写命令的时间,所述第二时间为所述编程时间。
18.如权利要求16所述的方法,其中,所述将所述虚拟流标识符映射到所述物理流标识符包括:
计算所述写入数据的所述生存期与分配所述物理流标识符的块数据集的生存期之间的差值;以及
根据所述差值中的最小差值,将所述虚拟流标识符映射到所述物理流标识符上。
19.如权利要求18所述的方法,其中,所述写入数据的所述生存期与分配所述物理流标识符中的所述一个的第一块数据的生存期之间的第一差值小于所述写入数据的所述生存期与分配所述物理流标识符中的另一个的第二块数据的生存期之间的第二差值。
20.如权利要求16所述的方法,其中,所述将所述写入数据编程到所述非易失性存储器的所述块包括根据所述映射表在所述非易失性存储器上执行垃圾收集。
CN201910237594.0A 2018-03-28 2019-03-27 用于将虚拟流映射到物理流上的存储装置及其操作方法 Pending CN110321297A (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201862648971P 2018-03-28 2018-03-28
US62/648,971 2018-03-28
KR10-2018-0063730 2018-06-01
KR1020180063730A KR102656172B1 (ko) 2018-03-28 2018-06-01 가상 스트림들과 물리 스트림들을 맵핑하기 위한 스토리지 장치 및 그것의 동작 방법

Publications (1)

Publication Number Publication Date
CN110321297A true CN110321297A (zh) 2019-10-11

Family

ID=68112827

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910237594.0A Pending CN110321297A (zh) 2018-03-28 2019-03-27 用于将虚拟流映射到物理流上的存储装置及其操作方法

Country Status (2)

Country Link
US (1) US20230101305A1 (zh)
CN (1) CN110321297A (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11379359B2 (en) * 2020-02-11 2022-07-05 Micron Technology, Inc. Selecting data transfer units associated with a data stream for garbage collection

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6631449B1 (en) * 2000-10-05 2003-10-07 Veritas Operating Corporation Dynamic distributed data system and method
CN103377129A (zh) * 2012-04-11 2013-10-30 群联电子股份有限公司 数据写入方法、存储器控制器与存储器储存装置
US20160291872A1 (en) * 2015-04-03 2016-10-06 Kabushiki Kaisha Toshiba Storage device writing data on the basis of stream
US20160313943A1 (en) * 2015-04-24 2016-10-27 Kabushiki Kaisha Toshiba Storage device that secures a block for a stream or namespace and system having the storage device
CN106527963A (zh) * 2015-09-11 2017-03-22 株式会社东芝 存储器***及主机装置
US20170371585A1 (en) * 2016-06-22 2017-12-28 Ngd Systems, Inc. System and method for multi-stream data write

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7500083B2 (en) * 2005-08-15 2009-03-03 Silicon Informatics Accelerated processing with scheduling to configured coprocessor for molecular data type by service and control coprocessor upon analysis of software code
US20170242625A1 (en) * 2016-02-24 2017-08-24 Samsung Electronics Co., Ltd. Apparatus for ssd performance and endurance improvement
US10622089B2 (en) * 2016-10-18 2020-04-14 Toshiba Memory Corporation Storage system having a host that manages physical data locations of storage device
US10783186B2 (en) * 2017-08-31 2020-09-22 Micron Technology, Inc. Heterogenous key-value sets in tree database
US20190205062A1 (en) * 2018-01-04 2019-07-04 Western Digital Technologies, Inc. Solid state drive stream allocation and mapping

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6631449B1 (en) * 2000-10-05 2003-10-07 Veritas Operating Corporation Dynamic distributed data system and method
CN103377129A (zh) * 2012-04-11 2013-10-30 群联电子股份有限公司 数据写入方法、存储器控制器与存储器储存装置
US20160291872A1 (en) * 2015-04-03 2016-10-06 Kabushiki Kaisha Toshiba Storage device writing data on the basis of stream
US20160313943A1 (en) * 2015-04-24 2016-10-27 Kabushiki Kaisha Toshiba Storage device that secures a block for a stream or namespace and system having the storage device
CN106527963A (zh) * 2015-09-11 2017-03-22 株式会社东芝 存储器***及主机装置
US20170371585A1 (en) * 2016-06-22 2017-12-28 Ngd Systems, Inc. System and method for multi-stream data write

Also Published As

Publication number Publication date
US20230101305A1 (en) 2023-03-30

Similar Documents

Publication Publication Date Title
US11481144B1 (en) Techniques for directed data migration
US20200409559A1 (en) Non-volatile memory data write management
US20190102291A1 (en) Data storage device and method for operating non-volatile memory
US8166233B2 (en) Garbage collection for solid state disks
US8166258B2 (en) Skip operations for solid state disks
US11544181B2 (en) Storage device for mapping virtual streams onto physical streams and method thereof
CN108475232A (zh) 使用xcopy和多逻辑条带的优化的基于主机的垃圾收集策略的高效实现方式
US20180089074A1 (en) Techniques to Manage Key-Value Storage at a Memory or Storage Device
US11747989B2 (en) Memory system and method for controlling nonvolatile memory
JP7375215B2 (ja) 順次的にプログラムするメモリサブシステムにおける順次読み出し最適化
CN110032332A (zh) 存储设备和包括存储设备的电子设备
CN110865770B (zh) 存储器***
CN110088738A (zh) 存储操作队列
CN109408417A (zh) 存储装置的地址映射方法和操作方法
KR102349381B1 (ko) 데이터 저장 장치 및 그것의 동작 방법
CN104011689A (zh) 非易失性存储器损耗管理
CN109783405A (zh) 存储设备和存储设备的操作方法
US11513950B2 (en) Wear leveling in non-volatile memory
CN109213438A (zh) 预先管理待分配给写入数据的物理地址的存储装置
US11269771B2 (en) Storage device for improving journal replay, operating method thereof, and electronic device including the storage device
CN112306900A (zh) 存储装置和存储***的操作方法
US10264097B2 (en) Method and system for interactive aggregation and visualization of storage system operations
US20230101305A1 (en) Storage device for mapping virtual streams onto physical streams and method thereof
CN112306906A (zh) 存储设备、包括该存储设备的存储***及其操作方法
US11835992B2 (en) Hybrid memory system interface

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