CN108572796A - 具有异构nvm类型的ssd - Google Patents
具有异构nvm类型的ssd Download PDFInfo
- Publication number
- CN108572796A CN108572796A CN201810158439.5A CN201810158439A CN108572796A CN 108572796 A CN108572796 A CN 108572796A CN 201810158439 A CN201810158439 A CN 201810158439A CN 108572796 A CN108572796 A CN 108572796A
- Authority
- CN
- China
- Prior art keywords
- storage device
- memory block
- write request
- memory
- storage
- 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.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0685—Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
-
- 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/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0611—Improving I/O performance in relation to response time
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0253—Garbage collection, i.e. reclamation of unreferenced memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
-
- 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/068—Hybrid storage device
-
- 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/0683—Plurality of storage devices
- G06F3/0688—Non-volatile semiconductor memory arrays
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1041—Resource optimization
- G06F2212/1044—Space efficiency improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
-
- 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
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)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Memory System (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Read Only Memory (AREA)
Abstract
本发明涉及具有异构NVM类型的SSD。本发明还涉及一种存储设备。该设备包括低延迟持久性存储器和高延迟非易失性存储器两者。持久性存储器可以用于写高速缓存或用于日记记录。可以使用B树来维护临时存储在持久性存储器中的写入请求的索引。在写入请求存储在持久性存储器中时,可以在非易失性存储器中执行垃圾收集。
Description
相关申请的交叉引用
本申请要求2017年3月7日递交的名称为“SSDS WITH HETEROGENEOUS NVM TYPES”的美国临时申请No.62/468,265和2017年5月31日递交的美国专利申请No.15/610,489的优先权和权益,其全部内容以引用方式并入于此。
技术领域
根据本发明的实施例的一个或多个方面涉及数据存储,并且更具体地涉及具有异构存储的存储设备。
背景技术
企业存储架构可以使用电池支持的非易失性随机存取存储器(NVRAM)或非易失性双列直插式内存模块(NVDIMM)设备来记录传入的写输入/输出请求(IO请求)。IO请求可以最终被冲刷到性能较低的非易失性数据存储介质。NVRAM/NVDIMM解决方案可以用作暂存区以减少写入延迟。然而,由于具有小容量、增加的复杂性(例如,涉及中央处理单元(CPU)异步动态随机存取存储器(DRAM)刷新(ADR)同步),这种解决方案可能具有有限的功能,并且需要在系统中包括电池。此外,这样的系统的性能可能受到系统可以包括的NVRAM和/或NVDIMM的数量的限制,并且在一些应用中,由于系统环境约束,包含电池可能是不可接受的,从而使得电池支持的解决方案不可行。
使电池支持的NVRAM或NVDIMM的使用进一步复杂化的是,可能需要调整NVDIMM和/或NVRAM的大小,以抵消应对高写入延迟抖动的成本。因此,包括电池支持的NVRAM或NVDIMM的存储系统需要一种改进的替代方案。
发明内容
本公开的实施例的各方面涉及存储设备。该设备包括低延迟持久性存储器和高延迟非易失性存储器两者。持久性存储器可以用于写高速缓存或用于日记记录。可以使用B树来维护临时存储在持久性存储器中的写入请求的索引。在写入请求存储在持久性存储器中时,可以在非易失性存储器中执行垃圾收集。
根据本发明的实施例,提供了一种存储设备,包括:第一控制器;第一存储器块体,包括多个慢速非易失性存储单元;第二存储器块体,包括多个快速持久性存储单元;以及存储接口,所述第一控制器被配置为响应通过所述存储接口接收到的输入输出请求;所述多个慢速非易失性存储单元中的每一个:读取延迟是所述快速持久性存储单元中的任一个的至少十倍;以及写入延迟是所述快速持久性存储单元中的任一个的至少十倍,所述存储设备中包括的所述慢速非易失性存储单元的数量是所述快速持久性存储单元的数量的至少十倍。
在一个实施例中,所述第二存储器块体的页大小等于所述第二存储器块体的块大小。
在一个实施例中,慢速非易失性存储单元中的每一个:读取延迟是所述快速持久性存储单元中的任一个的至少100倍;以及写入延迟是所述快速持久性存储单元中的任一个的至少100倍。
在一个实施例中,所述存储接口是从包含以下各项的组中选择的:高速外围组件互连(PCIe)接口、以太网接口远程直接存储器访问(RDMA)、串行高级技术连接(SATA)接口、光纤通道接口、串行连接SCSI(SAS)接口、以及高速非易失性存储器(NVMe)接口。
在一个实施例中,所述存储设备具有从包含以下各项的组中选择的外形规格:3.5英寸硬盘驱动器外形规格和2.5英寸硬盘驱动器外形规格。
在一个实施例中,所述存储设备被配置为当通过所述存储接口接收到写入请求时,首先,将所述写入请求存储在所述第二存储器块体中;然后,执行所述写入请求;以及第三,从所述第二存储器块体中删除所述写入请求。
在一个实施例中,所述第二存储器块体的一部分被配置为作为环形缓冲器操作,以及所述存储设备被配置为在通过所述存储接口接收到写入请求时将所述写入请求存储在所述环形缓冲器中。
在一个实施例中,所述存储设备还被配置为在通过所述存储接口接收到所述写入请求时将所述写入请求的索引条目存储在写入请求的B树索引中。
在一个实施例中,所述存储设备被配置为同时进行:在所述第一存储器块体中执行垃圾收集;以及在所述环形缓冲器中存储写入请求。
在一个实施例中,所述存储设备包括被配置为控制所述第一存储器块体中的操作的第二控制器,并且其中所述存储设备被配置为:将未来缓冲时间段计算为所述环形缓冲器中的空闲空间量和所述第二存储器块体的最大写入速率之比;以及指示所述第二控制器在长度等于所述未来缓冲时间段的时间间隔期间执行垃圾收集操作。
在一个实施例中,所述存储设备包括被配置为控制所述第一存储器块体中的操作的第二控制器,并且其中所述存储设备被配置为:将未来缓冲时间段计算为所述环形缓冲器中的空闲空间量和所述第二存储器块体的最大写入速率之比;以及当所述第一存储器块体的脏块比率超过第一阈值时,指示所述第二控制器在长度等于所述未来缓冲时间段的时间间隔期间执行垃圾收集操作。
在一个实施例中,所述存储设备还被配置为:在所述垃圾收集操作期间重新计算所述未来缓冲时间段,当重新计算出的未来缓冲时间段超过先前计算出的未来缓冲时间段时,将重新计算出的未来缓冲时间段通知给所述第二控制器。
在一个实施例中,所述存储设备被配置为在接收到对所述第一存储器块体中的位置的写入请求时,针对所述第一存储器块体中的相同位置,如果所述B树包含先前产生的索引条目,并且所述第二存储器块体包含对应的写入请求,则:将所述写入请求存储在所述环形缓冲器中;在所述B树索引中存储所述写入请求的索引条目;从所述环形缓冲器中删除所述先前产生的索引条目;以及从所述环形缓冲器中删除与所述先前产生的索引条目对应的写入请求。
在一个实施例中,所述存储设备被配置为在接收到对所述第一存储器块体中的位置的读取请求时,针对所述第一存储器块体中的相同位置,如果所述B树包含先前产生的索引条目,则:用来自所述环形缓冲器的数据来响应所述读取请求。
在一个实施例中,所述存储设备被配置为当所述环形缓冲器的空白部分降到阈值以下时,推迟通过所述存储接口发送命令完成。
根据本发明的实施例,提供了一种用于操作存储系统的方法,所述存储系统包括存储设备,所述存储设备包括:第一存储器块体,包括多个慢速非易失性存储单元;第二存储器块体,包括多个快速持久性存储单元;以及存储接口,所述多个慢速非易失性存储单元中的每一个:读取延迟是所述快速持久性存储单元中的任一个的至少十倍;以及写入延迟是所述快速持久性存储单元中的任一个的至少十倍,所述存储设备中包括的所述慢速非易失性存储单元的数量是所述快速持久性存储单元的数量的至少十倍,所述方法包括:通过所述存储接口接收写入请求;以及将所述写入请求存储在所述第二存储器块体中的环形缓冲器中。
在一个实施例中,所述方法包括:在将所述写入请求存储在所述环形缓冲器中时,在所述第一存储器块体中执行垃圾收集。
在一个实施例中,所述方法包括:将所述写入请求的索引条目存储在写入请求的B树索引中。
在一个实施例中,所述方法包括:在将所述写入请求存储在所述环形缓冲器中之前,将未来缓冲时间段计算为所述环形缓冲器中的空闲空间量与所述第二存储器块体的最大写入速率之比,其中,所述执行垃圾收集包括在长度等于所述未来缓冲时间段的时间间隔期间执行垃圾收集。
根据本发明的实施例,提供了一种存储系统,包括:多个存储设备,每个存储设备包括:第一存储器块体,包括多个慢速非易失性存储单元;第二存储器块体,包括多个快速持久性存储单元;以及存储接口,所述多个慢速非易失性存储单元中的每一个:读取延迟是所述快速持久性存储单元中的任一个的至少十倍;以及写入延迟是所述快速持久性存储单元中的任一个的至少十倍,所述存储设备中包括的所述慢速非易失性存储单元的数量是所述快速持久性存储单元的数量的至少十倍,所述系统被配置为池化各个第二存储器块体以形成虚拟第二存储器块体。
附图说明
参考说明书、权利要求和附图,将明白和理解本发明的这些及其他特征和优点,在附图中:
图1是根据本发明实施例的主机和存储设备的框图;
图2是根据本发明实施例的存储器图;
图3是根据本发明实施例的存储设备的框图;
图4是根据本发明实施例的存储设备的框图;
图5是根据本发明实施例的存储设备的框图;
图6是根据本发明实施例的存储系统的框图;以及
图7是根据本发明实施例的存储系统的框图。
具体实施方式
以下结合附图给出的详细描述旨在作为对根据本发明提供的具有异构NVM类型的SSD的示例实施例的描述,并不旨在表示可以构建或利用本发明的唯一形式。说明书结合所示实施例阐述了本发明的特征。然而,应该理解的是,相同或等同的功能和结构可以通过不同的实施例来实现,这些实施例也旨在被包含在本发明的精神和范围内。如本文其他地方所表示的,相似的元件编号旨在表示相似的元件或特征。
参考图1,在一些实施例中,主机100连接到包括两个存储器块体(bank)的存储设备(例如,异构SSD):相对慢速的非易失性存储器110的块体(其可以是被配置为用作主后备存储的NAND闪存)和相对快速的持久性存储器120的块体。持久性存储器120也可以是非易失性存储器,在本文中被称为“持久性存储器”主要是为了将其与相对慢速的非易失性存储器110区分开来。如本文所使用的,术语“非易失性存储器”、“持久性存储设备”和“持久性存储器”全部指能够在不被供电的情况下保持所存储的数据的存储器。
诸如Z-NANDTM(可从Samsung获得)、3D X-POINTTM(可从Intel和MicronTechnology获得)、相变存储器、电阻型RAM、STTRAM等的持久性存储器被用于提供明显更快的访问和低IO延迟。NAND控制器115提供到非易失性存储器110的接口并且控制非易失性存储器110,并且持久性存储器控制器125提供到持久性存储器120的接口并且控制持久性存储器120。连接到存储接口140的存储设备控制器130响应通过存储接口140从主机100接收到的IO请求。
这里使用的“存储单元”是指能够存储数据的最小元件集合。例如,对于NAND闪存,存储单元可以是单个浮置栅极晶体管,它可以存储一位数据(如果它被配置为单级单元)或者若干位数据(如果它被配置为多级单元)。
持久性存储器120的速度可以是非易失性存储器110的十倍或者100倍或者更快,例如,(i)非易失性存储器110的读取延迟时间可以是持久性存储器120的读取延迟时间的十倍或者100倍或者更多,和/或(ii)非易失性存储器110的写入延迟时间可以是持久性存储器120的写入延迟时间的十倍或者100倍或者更多。持久性存储器120的块大小可以与持久性存储器120的页大小相同,从而在持久性存储器120中不需要进行垃圾收集。如在本文中使用的,“页”是与可以在一次操作中写入(或编程)的最小数量的单元相对应的存储器的量。如果每个单元存储一位(如在使用单级单元的NAND闪存的情况下),则2048字节的页大小对应于16,384个单元(2048×8是16,384)。“块(block)”是与可以在一次操作中擦除的最小数量的单元相对应的存储器的量。
在一些实施例中,存储设备符合3.5英寸硬盘驱动器外形规格(或大外形规格(LFF))标准。在其他实施例中,其符合2.5英寸硬盘驱动器外形规格(或小外形规格(SFF))标准。在其他实施例中,存储设备符合M.2外形规格。在一些实施例中,使用这些外形规格的衍生版本,例如,SFF考虑规范下的热插拔/热交换,但LFF不考虑(因此,在一些实施例中,存储设备符合LFF标准的可热交换的衍生版本)。存储接口140可以包括主机和存储设备通常使用的连接器和协议,以交换存储请求和响应。连接器和协议可以符合例如高速外围组件互连(PCIe)、以太网远程直接存储器访问(RDMA)、串行高级技术附件(SATA)、光纤通道、串行连接SCSI(SAS)、非易失性存储器快速(NVMe)或更通用的接口,例如以太网或通用串行总线(USB)。存储接口140被主机100用来与存储设备通信。输入输出(IO)请求(例如数据读写请求)以及各种介质管理请求(例如,识别、获取日志等)可以由主机通过存储接口140发送到存储设备。存储设备可以使用相同的接口来执行去往和来自主机100中的内部存储器的数据传输。
持久性存储器120可以用于写入高速缓存,以加速对非易失性存储器110的存取并且减少总的IO延迟。异构SSD中的持久性存储器120的容量(例如,16GB)可以小于异构SSD中的非易失性存储器110的容量(例如,480GB)。在一些实施例中,(例如,NAND闪存的)非易失性存储器110的容量作为异构SSD的容量呈现给主机软件。低延迟/高性能的持久性存储器120不包括在暴露给主机软件的SSD容量中。
在异构SSD中,NAND闪存被配置为充当主后备存储器,负责存储来自SSD用户(例如,来自主机100)的数据。该SSD的容量与非易失性存储器110(例如,NAND闪存空间)中的可用存储空间相同,并且逻辑块地址(LBA)映射是简单线性的(或由闪存转换层(FTL)来管理)。持久性存储器120可以用作预写日志(WAL);例如,它可以临时地缓冲所有传入的写入,并且在后台将它们写回到后备存储(例如,非易失性存储器110)。
图2示出了在一些实施例中持久性存储器120中的内部数据组织以及它如何缓冲和写回传入的写入。持久性存储器120被用作环形缓冲器;每个新的写入请求被存储在当下(work-in-progress)的日志记录中,该日志记录是新的日志记录或是当前部分填满的日志记录。日志记录是固定大小的数据组块(chunk)(例如,256kB),其中每个包括多个较小的写入IO请求(例如,由其组成)。这些请求被依次填充到持久性存储器LBA空间中;当到达持久性存储器120的末端时,写入位置(其可以通过写入指针来标识)绕回到环形缓冲器的起始处,其中,如果缓冲器不满,则该环形缓冲器具有空闲的LBA空间。持久性存储器超级块210记录有效日志记录的开始和结束。后台冲刷过程将有效且完整的日志记录写回后备存储(即,写入到非易失性存储器110),并且在这样做时释放相应的持久性存储器空间。以这种方式,嵌入在异构SSD中的持久性存储器120可以用于日记记录或预写日志(WAL)功能,并且这些操作对于主机软件可以是透明的。
在一些实施例中,异构SSD还维护所有被缓冲的写入请求的存储器内B树索引(例如,对持久性存储器120进行索引)。该索引记录了每个原始写入请求的LBA到存储该写入请求的特定日志记录的映射。该索引有两个目的,其中之一是移除先前接收的并且尚未执行的对同一LBA地址的写入请求,以避免对主后备存储(例如,非易失性存储器110)的多余写入。该索引的另一个目的是,在例如对同一LBA的写入请求处于未决,并且尚未在非易失性存储器110上执行的情况下,服务于那些应使用来自持久性存储器的数据进行服务的读取请求。如本文所使用的,B树指的是保持数据被排序并允许在对数时间内进行搜索、顺序访问、插入和删除的自平衡树数据结构。如本文所使用的,“执行”(或“冲刷”)写入请求(包括要写入的数据和标识将写入数据的位置的逻辑块地址(LBA))是指在非易失性存储器110中(根据闪存转换层所维护的一个或多个表)对应于LBA的物理地址处存储要写入的数据。
参考图3,在一些实施例中,异构SSD执行诸如NAND闪存垃圾收集(当其作为协调后台操作执行时可被称为“智能垃圾收集”)之类的协调后台操作。预写日志有时可以将被缓冲的写入请求写回主后备存储,而在其他时候,它可以缓冲从主机传入的写入请求。当预写日志正在缓冲从主机传入的写入请求时,异构SSD可以向NAND控制器发出智能垃圾收集请求。如本文所使用的,垃圾收集指的是将一个或多个有效页从包含一个或多个无效页的块移动到一个或多个其他块并且擦除该块的一个或多个操作。
该操作可以如下进行。持久性存储器控制器125可以使用以下等式来估计没有数据回写的未来缓冲时间段(FBP):
FBP=Available_PM_SPACE/PM_MAX_THROUGHPUT
其中,Available_PM_SPACE是持久性存储器120的可用于缓冲的量,并且PM_MAX_THROUGHPUT是来自主机的写入请求可以填充持久性存储器120的最大速率。然后,存储设备控制器130检查NAND闪存脏块比率(即,非易失性存储器110中的脏块比率),并且如果NAND闪存脏块比率高于可配置阈值,则存储设备控制器130向NAND控制器115发出智能垃圾收集请求(如箭头310所示),指示NAND控制器115尽可能地在长度等于FBP的初始时间段内执行垃圾收集。在垃圾收集操作期间,存储设备控制器130可以周期性地重新计算FBP(如果从主机接收的写入请求正在填充持久性存储器120的实际速率小于最大可能速率,则FBP可以改变),并且在垃圾收集操作期间向NAND控制器115通知任何这种FBP的增加,使得NAND控制器115能够充分利用执行垃圾收集的机会。当垃圾收集操作已经终止时(在FBP结束时,或者作为FBP结束之前提前完成的结果),NAND控制器115可以通知(如箭头320所示)持久性存储器控制器125,并且可以在存储设备控制器130、持久性存储器控制器125和NAND控制器115的控制下恢复(如箭头330所示)从持久性存储器120到非易失性存储器110的数据回写。如本文所使用的,“脏块比率”是指(i)非易失性存储器110中的包含超过设定的脏页数的块的块数与(ii)非易失性存储器110中的块数之比。
图4示出了具有在持久性存储器120中实现的预写日志的异构SSD可以如何处理传入的写入IO请求以及协调的NAND闪存垃圾收集。当例如通过存储接口140接收到新的写入请求时(如箭头410所示),存储设备控制器130将该写入请求提交(如箭头420所示)到持久性存储器控制器125,持久性存储器控制器125将新的日志记录存储在持久性存储器120中,并且向存储设备控制器130返回(如箭头430所示)确认。然后,存储设备控制器130向上层(例如,通过存储接口140向主机软件)返回(如箭头440所示)确认。同时,可以由NAND控制器115在非易失性存储器110中进行智能垃圾收集操作。也可以发生有效块的后台回写操作(如箭头450所示),使得写入数据被存储在非易失性存储器110中,并且每个回写都被确认(如箭头460所示)。
在一些实施例中,当新的日志记录更新B树中的当前块条目时,存储设备控制器130还将其日志记录中的旧块标记为无效,以防止旧块以后被后台回写处理写回至非易失性存储器110。在一些实施例中,如果以及当向非易失性存储器110的回写处理不能跟上用户写入(例如,从主机接收的写入请求)时,存储设备控制器130使用写入节流机制(例如,它可以在从主机接收到写入请求之后推迟向主机发送命令完成)。例如,可以通过确定环形缓冲器的空白占比分数已经降到阈值以下来检测这一条件。
对于对延迟时间不敏感的大型顺序IO操作,持久性存储器控制器125可以选择将IO直接重定向到NAND控制器115,而不将数据暂存到其本地缓冲器中。
参考图5,当接收到读取请求时(如箭头510所示),存储设备控制器130在B树中查找该读取请求的逻辑块地址(如箭头520所示),以确定要读取的数据是否在持久性存储器120中。如果要读取的数据在持久性存储器120中,则持久性存储器控制器125从持久性存储器120读取数据并且将数据返回给存储设备控制器130(如箭头530所示)。否则,从非易失性存储器110读取数据(如箭头535所示)并返回到存储设备控制器130。在任一种情况下,存储设备控制器130然后发送(如箭头540所示)包括在读取请求中请求的数据的响应(例如,向主机发送)。
在一些实施例中,如上所述,异构SSD具有较小容量的持久性存储器120和较大容量的非易失性存储器110。在较小容量的持久性存储器120可能成为限制因素的应用中,可以通过使用来自多个异构SSD 620中的每一个的持久性存储器120,池化(pooling)多个异构SSD的各自的持久性存储器块体,如图6所示,来创建较大的虚拟块设备(其用作低延迟持久性存储器的虚拟块体)。在一些实施例中,虚拟日志设备610向主机软件呈现逻辑设备。虚拟日志设备610可以是能够使用对等能力彼此通信的异构SSD 620的软件模块或逻辑表示的实例化。
图7示出针对特定异构SSD并且经由虚拟日志设备610的写入请求的IO流,该虚拟日志设备610分布在多个异构SSD 620上。示出了写入操作的流程。当新的写入请求到达异构SSD的第一虚拟日志设备610(标记为VLD 1)时(如箭头630所示),第一虚拟日志设备610将该写入请求提交到虚拟日志设备管理器710(如箭头635所示)。然后,虚拟日志设备管理器710基于由应用105指定的带宽和VLD 610的容量要求,选择一个或多个异构SSD 620上的持久性存储器120中的位置,在所选的持久性存储器120中的位置中存储(如箭头640所示)新的记录,并且向第一虚拟日志设备610(标记为VLD 1)返回(如箭头645所示)确认,第一虚拟日志设备610然后将该确认返回(如箭头650所示)到上层(例如,主机应用)。随后或同时,虚拟日志设备管理器710将该写入请求冲刷(如箭头655所示)到目标异构SSD的非易失性存储器110,该目标异构SSD的非易失性存储器110向虚拟日志设备管理器710返回(如箭头660所示)确认。最后,虚拟日志设备管理器710移除(如箭头665所示)被冲刷的日志记录。
由虚拟日志设备610选择的持久性存储器120中的位置可以位于或不位于该写入请求所针对的特定异构SSD的持久性存储器120中。在进行选择时,虚拟日志设备610可以考虑的因素可包括:例如,可能影响IO延迟的(i)目标SSD上的当前工作负载,(ii)每个异构SSD 620的持久性存储器120中剩余的空闲空间量,以及(iii)每个异构SSD 620的持久性存储器120上的任何后台操作的状态。
对于读取操作,虚拟日志设备610可以在持久性存储器120中执行对所请求数据的查找;如果数据存在于持久性存储器120中,则虚拟日志设备610从异构SSD 620中之一上的持久性存储器120返回所请求的数据。如果所请求的数据不存在于持久性存储器120中,则直接从存储所请求的数据的异构SSD的非易失性存储器110中读取所请求的数据。虽然图6和图7仅示出一个虚拟日志设备,但是本发明不限于这样的实施例,并且在一些实施例中,由一组异构SSD形成多个虚拟日志设备。
一些应用(如某些文件系统、某些数据库或卷管理器)使用常规的主机可见日志设备来实现日记或预写日志。如果没有提供这样的日志设备或者以对运行这些应用的系统上的存储软件栈透明的方式来提供这样的日志设备,则这些应用可能完全不能执行,或者不能以最佳方式执行。相应地,一些实施例提供以下方法来支持这类应用。
日志设备映射方法可以允许运行在连接到异构SSD的主机上的应用和/或操作系统能够在IO路径中对异构SSD的低延迟持久性存储器120进行直接寻址。映射功能可以使得主机操作系统存储软件栈将该低延迟设备检测为适合用作日记或日志设备的单独的存储设备。映射功能可以呈现异构SSD的持久性存储器120的整个可寻址空间或其一部分。
在另一个实施例中,不使用映射功能;相反,允许主机能够选择性地将数据块放置在异构SSD的低延迟持久性存储器120中或非易失性存储器110(即后备存储)中,同时仍然继续访问和使用与合并的异构SSD相对应的单个存储设备。在这样的实施例中,日志设备分区方法可以仅允许偏移量(或LBA)小于指定偏移量(“分区偏移量”)的数据块放置在异构SSD的低延迟持久性存储器120中。为了写入其预写日志,应用然后可以简单地假定其日志大小小于或等于由分区偏移量所隐含的大小并从偏移量0开始。希望用于主后备存储(即,用于异构SSD的非易失性存储器110)的数据块可以相应地使用超过分区偏移量的偏移量来发送,这可以使异构SSD将这些块直接分派到异构SSD的非易失性存储器110。
NAND控制器115、存储设备控制器130和持久性存储器控制器125中的每一个可以是处理电路或者是处理电路的一部分。术语“处理电路”在本文中用来表示用于处理数据或数字信号的硬件、固件和软件的任何组合。处理电路硬件可以包括例如专用集成电路(ASIC)、通用或专用中央处理单元(CPU)、数字信号处理器(DSP)、图形处理单元(GPU)以及可编程逻辑器件(例如,现场可编程门阵列(FPGA))。在处理电路中,如本文所使用的,每个功能或者由被配置(即硬连线)为执行该功能的硬件来执行,或者由被配置为执行存储在非暂时性存储介质中的指令的更通用硬件(例如CPU)来执行。处理电路可以制造在单个印刷电路板(PCB)上或者分布在多个互连的PCB上。处理电路可以包含其他处理电路;例如,处理电路可以包括在PCB上互连的两个处理电路FPGA和CPU。在一些实施例中,NAND控制器115、存储设备控制器130和持久性存储器控制器125中的至少一个控制器以在处理电路上执行的软件来实现,该处理电路可以是与实现(或执行)NAND控制器115、存储设备控制器130和持久性存储器控制器125中的其他控制器的处理电路相同的处理电路,或者是单独的处理电路。
将理解,虽然本文中可以使用术语“第一”、“第二”、“第三”等来描述各种元件、组件、区域、层和/或部,但是这些元件、组件、区域、层和/或部不应受这些术语限制。这些术语仅用于将一个元素、组件、区域、层或部与另一元件、组件、区域、层或部区分开。因此,以上讨论的第一元件、组件、区域、层或者部可被称为第二元件、组件、区域、层或者部,而不脱离本发明构思的精神和范围。
在此可能使用空间相对术语如“下方”、“之下”、“下部”、“下面”、“上方”、“之上”等,以便于描述在附图中示出的一个元件或特征相对于另一元件或特征的关系。将理解的是,空间上的相对术语除了包括附图中示出的取向之外,还意在包含设备在使用中或操作中的不同取向。例如,如果附图中的器件被翻转,则被描述为在其他元件或者特征“之下”或者“下方”或者“下面”的元件将定向在其它元件或者特征的“之上”。因此,示例性术语“之下”和“下面”可以涵盖之上和之下的定向。所述设备可以以其它方式定向(旋转90度或在其它方向),且可以相应地解释本文中使用的空间相对描述符。此外,还将理解,当层被称为在两层“之间”时,其可以是两层之间的唯一层,或者也可以存在一个或多个中间层。
这里所用术语仅用于描述特定实施例的目的,而不是为了限制本发明构思。如本文所使用的,术语“基本”、“大约”和类似的术语被用作近似的术语而不是程度的术语,并且意图解释测量值或计算值中的固有偏差,其将被本领域普通技术人员认识到。如本文所使用的,术语“主要组分”是指组合物、聚合物或产物中存在的量大于该组合物或产物中任何其它单一组分的量的组分。相比之下,术语“首要组分”是指构成组合物、聚合物或产物的至少50%重量或更多的组分。如本文所使用的,术语“主要部分”当被应用于多个项时,意味着多个项中的至少一半。
如本文中使用的,单数形式“一”和“一个”意在还包括复数形式,除非上下文明确地给出相反的指示。还将理解,术语“包括”和/或“包含”当在本说明书中使用时,规定了存在所声明的特征、整数、步骤、操作、元件和/或组件,但是并没有排除存在或添加一个或多个其他特征、整数、步骤、操作、元件、组件和/或其组合。如本文所用,术语“和/或”包括关联列出的一个或更多个项目的任意和所有组合。诸如“……中的至少一个”之类的表述在元件列表之前时修饰整个元件列表,而不是修饰列表中的单独元件。此外,当描述本发明的实施例时使用“可以”是指“本发明的一个或多个实施例”。而且,术语“示例性”旨在指代示例或说明。如本文所使用的,术语“使用”、“通过使用”和“被使用”可以分别被认为与术语“利用”、“通过利用”和“被利用”同义。
将理解,当元件或层被称为在另一元件或层“上”、“连接到”、“耦合到”或“邻近于”另一元件或层时,其可以直接在另一元件或层上、直接连接到、耦合到或邻近于另一元件或层,或者可以存在中间元件或层。相反,当元件或层被称为“直接”在另一元件或层“上”、“直接连接到”、“直接耦合到”或“直接邻近于”另一元件或层时,不存在中间元件或层。
本文列举的任何数值范围旨在包括包含在所列举范围内的具有相同数值精度的所有子范围。例如,“1.0至10.0”的范围旨在包括所述最小值1.0和所述最大值10.0之间(并且包括所述最小值和所述最大值)的所有子范围,即具有等于或大于1.0的最小值和等于或小于10.0的最大值的所有子范围,例如2.4至7.6。本文列举的任何最大数值限制旨在包括其中包含的所有较低数值限制,并且本说明书中列举的任何最小数值限制旨在包括其中包含的所有较高数值限制。
尽管在此具体描述和说明了具有异构NVM类型的SSD的示例性实施例,但是对于本领域技术人员而言,许多修改和变型将是显而易见的。因此,应该理解的是,根据本发明的原理而构成的具有异构NVM类型的SSD可以以不同于在此具体描述的方式来实施。还在所附权利要求及其等同物中限定了本发明。
Claims (20)
1.一种存储设备,包括:
第一控制器;
第一存储器块体,包括多个慢速非易失性存储单元;
第二存储器块体,包括多个快速持久性存储单元;以及
存储接口,
所述第一控制器被配置为响应通过所述存储接口接收到的输入输出请求;
所述多个慢速非易失性存储单元中的每一个:
读取延迟是所述快速持久性存储单元中的任一个的至少十倍;以及
写入延迟是所述快速持久性存储单元中的任一个的至少十倍,
所述存储设备中包括的所述慢速非易失性存储单元的数量是所述快速持久性存储单元的数量的至少十倍。
2.根据权利要求1所述的存储设备,其中,所述第二存储器块体的页大小等于所述第二存储器块体的块大小。
3.根据权利要求1所述的存储设备,其中,所述慢速非易失性存储单元中的每一个:
读取延迟是所述快速持久性存储单元中的任一个的至少100倍;以及
写入延迟是所述快速持久性存储单元中的任一个的至少100倍。
4.根据权利要求1所述的存储设备,其中,所述存储接口是从包含以下各项的组中选择的:高速外围组件互连(PCIe)接口、以太网接口远程直接存储器访问(RDMA)、串行高级技术连接(SATA)接口、光纤通道接口、串行连接SCSI(SAS)接口、以及高速非易失性存储器(NVMe)接口。
5.根据权利要求1所述的存储设备,具有从包含以下各项的组中选择的外形规格:3.5英寸硬盘驱动器外形规格和2.5英寸硬盘驱动器外形规格。
6.根据权利要求1所述的存储设备,其中,所述存储设备被配置为在通过所述存储接口接收到写入请求时,
将所述写入请求存储在所述第二存储器块体中;
执行所述写入请求;以及
从所述第二存储器块体中删除所述写入请求。
7.根据权利要求1所述的存储设备,其中:
所述第二存储器块体的一部分被配置为作为环形缓冲器操作,以及
所述存储设备被配置为在通过所述存储接口接收到写入请求时将所述写入请求存储在所述环形缓冲器中。
8.根据权利要求7所述的存储设备,其中,所述存储设备还被配置为在通过所述存储接口接收到所述写入请求时将所述写入请求的索引条目存储在写入请求的B树索引中。
9.根据权利要求8所述的存储设备,其中,所述存储设备被配置为同时进行:
在所述第一存储器块体中执行垃圾收集;以及
在所述环形缓冲器中存储写入请求。
10.根据权利要求9所述的存储设备,其中,所述存储设备包括被配置为控制所述第一存储器块体中的操作的第二控制器,并且其中所述存储设备被配置为:
将未来缓冲时间段计算为以下两项之比:
所述环形缓冲器中的空闲空间量,和
所述第二存储器块体的最大写入速率;以及
指示所述第二控制器在长度等于所述未来缓冲时间段的时间间隔期间执行垃圾收集操作。
11.根据权利要求9所述的存储设备,其中,所述存储设备包括被配置为控制所述第一存储器块体中的操作的第二控制器,并且其中所述存储设备被配置为:
将未来缓冲时间段计算为以下两项之比:
所述环形缓冲器中的空闲空间量,和
所述第二存储器块体的最大写入速率;以及
当所述第一存储器块体的脏块比率超过第一阈值时,指示所述第二控制器在长度等于所述未来缓冲时间段的时间间隔期间执行垃圾收集操作。
12.根据权利要求11所述的存储设备,其中,所述存储设备还被配置为:
在所述垃圾收集操作期间重新计算所述未来缓冲时间段,以及
当重新计算出的未来缓冲时间段超过先前计算出的未来缓冲时间段时,将重新计算出的未来缓冲时间段通知给所述第二控制器。
13.根据权利要求8所述的存储设备,其中,所述存储设备被配置为在接收到对所述第一存储器块体中的位置的写入请求时,针对所述第一存储器块体中的相同位置,如果所述B树包含先前产生的索引条目,并且所述第二存储器块体包含对应的写入请求,则:
将所述写入请求存储在所述环形缓冲器中;
在所述B树索引中存储所述写入请求的索引条目;
从所述环形缓冲器中删除所述先前产生的索引条目;以及
从所述环形缓冲器中删除与所述先前产生的索引条目对应的写入请求。
14.根据权利要求8所述的存储设备,其中,所述存储设备被配置为在接收到对所述第一存储器块体中的位置的读取请求时,针对所述第一存储器块体中的相同位置,如果所述B树包含先前产生的索引条目,则:
用来自所述环形缓冲器的数据来响应所述读取请求。
15.根据权利要求8所述的存储设备,其中,所述存储设备被配置为当所述环形缓冲器的空白占比分数降到阈值以下时,推迟通过所述存储接口发送命令完成。
16.一种用于操作存储系统的方法,所述存储系统包括存储设备,所述存储设备包括:
第一存储器块体,包括多个慢速非易失性存储单元;
第二存储器块体,包括多个快速持久性存储单元;以及
存储接口,
所述多个慢速非易失性存储单元中的每一个:
读取延迟是所述快速持久性存储单元中的任一个的至少十倍;以及
写入延迟是所述快速持久性存储单元中的任一个的至少十倍,
所述存储设备中包括的所述慢速非易失性存储单元的数量是所述快速持久性存储单元的数量的至少十倍,
所述方法包括:
通过所述存储接口接收写入请求;以及
将所述写入请求存储在所述第二存储器块体中的环形缓冲器中。
17.根据权利要求16所述的方法,还包括:
在将所述写入请求存储在所述环形缓冲器中时,在所述第一存储器块体中执行垃圾收集。
18.根据权利要求17所述的方法,还包括:
将所述写入请求的索引条目存储在写入请求的B树索引中。
19.根据权利要求18所述的方法,还包括:
在将所述写入请求存储在所述环形缓冲器中之前,
将未来缓冲时间段计算为以下两项之比:
所述环形缓冲器中的空闲空间量,和
所述第二存储器块体的最大写入速率;
其中,所述执行垃圾收集包括在长度等于所述未来缓冲时间段的时间间隔期间执行垃圾收集。
20.一种存储系统,包括:
多个存储设备,每个存储设备包括:
第一存储器块体,包括多个慢速非易失性存储单元;
第二存储器块体,包括多个快速持久性存储单元;以及
存储接口,
所述多个慢速非易失性存储单元中的每一个:
读取延迟是所述快速持久性存储单元中的任一个的至少十倍;以及
写入延迟是所述快速持久性存储单元中的任一个的至少十倍,
所述存储设备中包括的所述慢速非易失性存储单元的数量是所述快速持久性存储单元的数量的至少十倍,
所述系统被配置为池化各个所述第二存储器块体以形成虚拟第二存储器块体。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201762468265P | 2017-03-07 | 2017-03-07 | |
US62/468,265 | 2017-03-07 | ||
US15/610,489 US10318175B2 (en) | 2017-03-07 | 2017-05-31 | SSD with heterogeneous NVM types |
US15/610,489 | 2017-05-31 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108572796A true CN108572796A (zh) | 2018-09-25 |
CN108572796B CN108572796B (zh) | 2023-06-27 |
Family
ID=63444767
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810158439.5A Active CN108572796B (zh) | 2017-03-07 | 2018-02-24 | 具有异构nvm类型的ssd |
Country Status (3)
Country | Link |
---|---|
US (1) | US10318175B2 (zh) |
KR (1) | KR102556431B1 (zh) |
CN (1) | CN108572796B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110134340A (zh) * | 2019-05-23 | 2019-08-16 | 苏州浪潮智能科技有限公司 | 一种元数据更新的方法、装置、设备以及存储介质 |
CN111309270A (zh) * | 2020-03-13 | 2020-06-19 | 清华大学 | 一种持久性内存键值存储系统 |
CN113326000A (zh) * | 2020-02-28 | 2021-08-31 | Aptiv技术有限公司 | 数据记录设备 |
Families Citing this family (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10606484B2 (en) * | 2017-06-23 | 2020-03-31 | Google Llc | NAND flash storage device with NAND buffer |
US11442813B2 (en) * | 2017-10-11 | 2022-09-13 | Hewlett-Packard Development Company, L.P. | Memory devices including execution trace buffers |
KR20200016075A (ko) * | 2018-08-06 | 2020-02-14 | 에스케이하이닉스 주식회사 | 메모리 시스템에서의 유효 데이터 탐색 방법 및 장치 |
US11301331B2 (en) * | 2018-09-20 | 2022-04-12 | Samsung Electronics Co., Ltd. | Storage device and operating method of storage device |
CN109522243B (zh) * | 2018-10-22 | 2021-11-19 | 郑州云海信息技术有限公司 | 一种全闪存储中元数据缓存管理方法、装置及存储介质 |
US10635355B1 (en) * | 2018-11-13 | 2020-04-28 | Western Digital Technologies, Inc. | Bandwidth limiting in solid state drives |
US10983909B2 (en) * | 2019-01-18 | 2021-04-20 | Vmware, Inc. | Trading off cache space and write amplification for Bε-trees |
US11068396B2 (en) * | 2019-08-01 | 2021-07-20 | EMC IP Holding Company, LLC | System and method for balance localization and priority of pages to flush in a sequential log |
US10970211B2 (en) * | 2019-08-02 | 2021-04-06 | EMC IP Holding Company LLC | Techniques for reducing size of log records |
JP7467064B2 (ja) * | 2019-10-17 | 2024-04-15 | キオクシア株式会社 | メモリシステムおよびガベッジコレクション制御方法 |
US11662943B2 (en) * | 2020-06-16 | 2023-05-30 | Micron Technology, Inc. | Adjustable media management |
US11481145B2 (en) * | 2021-02-25 | 2022-10-25 | PetaIO Inc. | Dynamically throttling host write data rate |
US11625190B2 (en) * | 2021-08-17 | 2023-04-11 | Vast Data Ltd. | Segregating cold stripe defragmentation from new writes based on creation time of the cold stripe |
CN114281775A (zh) | 2021-11-16 | 2022-04-05 | 三星(中国)半导体有限公司 | 数据处理方法和数据处理装置 |
CN114640688A (zh) * | 2022-03-23 | 2022-06-17 | 中国兵器装备集团自动化研究所有限公司 | 一种异构双冗余设备运行状态数据存储装置及访问方法 |
US20240134534A1 (en) * | 2022-10-25 | 2024-04-25 | Samsung Electronics Co., Ltd. | High endurance persistent storage device |
US12093175B2 (en) * | 2022-11-09 | 2024-09-17 | Lemon Inc. | Techniques for instance storage using segment-based storage |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130238832A1 (en) * | 2012-03-07 | 2013-09-12 | Netapp, Inc. | Deduplicating hybrid storage aggregate |
US20140181362A1 (en) * | 2011-08-18 | 2014-06-26 | Industry Academic Cooperation Foundation Of Yeungnam University | Electronic device for storing data on pram and memory control method thereof |
US8898388B1 (en) * | 2014-01-08 | 2014-11-25 | Netapp, Inc. | NVRAM caching and logging in a storage system |
US20150019798A1 (en) * | 2013-07-15 | 2015-01-15 | CNEXLABS, Inc. | Method and Apparatus for Providing Dual Memory Access to Non-Volatile Memory |
CN105917319A (zh) * | 2013-11-22 | 2016-08-31 | 斯瓦姆64有限责任公司 | 存储器单元和方法 |
Family Cites Families (86)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3905023A (en) * | 1973-08-15 | 1975-09-09 | Burroughs Corp | Large scale multi-level information processing system employing improved failsaft techniques |
KR950009291B1 (ko) * | 1992-08-18 | 1995-08-18 | 삼성전자주식회사 | 시릴화된 레지스트의 박리방법 |
US7889544B2 (en) * | 2004-04-05 | 2011-02-15 | Super Talent Electronics, Inc. | High-speed controller for phase-change memory peripheral device |
US20030005233A1 (en) * | 2001-06-28 | 2003-01-02 | Daleen Technologies, Inc. | Dual organization of cache contents |
US6625081B2 (en) * | 2001-08-13 | 2003-09-23 | Micron Technology, Inc. | Synchronous flash memory with virtual segment architecture |
US7318112B2 (en) * | 2001-10-11 | 2008-01-08 | Texas Instruments Incorporated | Universal interface simulating multiple interface protocols |
JP3823040B2 (ja) * | 2001-10-12 | 2006-09-20 | インターナショナル・ビジネス・マシーンズ・コーポレーション | データ記憶装置、データ処理装置、書き込み要求の実行順序を最適化する方法、データ処理方法およびハード・ディスク・ドライブ |
US7187689B1 (en) * | 2001-10-29 | 2007-03-06 | Juniper Networks, Inc. | Self-cleaning mechanism for error recovery |
US7171509B2 (en) * | 2002-01-09 | 2007-01-30 | International Business Machines Corporation | Method and apparatus for host messaging unit for Peripheral Component Interconnect busmaster devices |
JP2004171411A (ja) * | 2002-11-21 | 2004-06-17 | Hitachi Global Storage Technologies Netherlands Bv | データ記憶装置及びバッファメモリの管理方法 |
US6959374B2 (en) * | 2003-01-29 | 2005-10-25 | Sun Microsystems, Inc. | System including a memory controller configured to perform pre-fetch operations including dynamic pre-fetch control |
US7136973B2 (en) * | 2004-02-04 | 2006-11-14 | Sandisk Corporation | Dual media storage device |
US20050198062A1 (en) * | 2004-03-05 | 2005-09-08 | Shapiro Richard B. | Method and apparatus for accelerating data access operations in a database system |
US7644239B2 (en) | 2004-05-03 | 2010-01-05 | Microsoft Corporation | Non-volatile memory cache performance improvement |
KR100704037B1 (ko) * | 2005-04-15 | 2007-04-04 | 삼성전자주식회사 | 이종의 비휘발성 메모리를 가지는 데이터 저장장치와 그의구동 방법 |
GB0513433D0 (en) * | 2005-06-30 | 2005-08-10 | Nokia Corp | Signal message compressor |
US7549021B2 (en) * | 2006-02-22 | 2009-06-16 | Seagate Technology Llc | Enhanced data integrity using parallel volatile and non-volatile transfer buffers |
US7882381B2 (en) * | 2006-06-29 | 2011-02-01 | Intel Corporation | Managing wasted active power in processors based on loop iterations and number of instructions executed since last loop |
US7451265B2 (en) * | 2006-08-04 | 2008-11-11 | Sandisk Corporation | Non-volatile memory storage systems for phased garbage collection |
US20080055326A1 (en) * | 2006-09-05 | 2008-03-06 | Yun Du | Processing of Command Sub-Lists by Multiple Graphics Processing Units |
JP2008097107A (ja) * | 2006-10-06 | 2008-04-24 | Seiko Epson Corp | データ記録装置及びその制御方法 |
US7694099B2 (en) * | 2007-01-16 | 2010-04-06 | Advanced Risc Mach Ltd | Memory controller having an interface for providing a connection to a plurality of memory devices |
US7882304B2 (en) * | 2007-04-27 | 2011-02-01 | Netapp, Inc. | System and method for efficient updates of sequential block storage |
US8219749B2 (en) * | 2007-04-27 | 2012-07-10 | Netapp, Inc. | System and method for efficient updates of sequential block storage |
KR101498673B1 (ko) * | 2007-08-14 | 2015-03-09 | 삼성전자주식회사 | 반도체 드라이브, 그것의 데이터 저장 방법, 그리고 그것을포함한 컴퓨팅 시스템 |
KR101365683B1 (ko) * | 2007-12-27 | 2014-02-20 | 삼성전자주식회사 | 가변 저항 메모리 장치, 그것의 플렉서블 프로그램 방법,그리고 그것을 포함하는 메모리 시스템 |
US8285919B2 (en) | 2008-05-27 | 2012-10-09 | Initio Corporation | SSD with improved bad block management |
US8065304B2 (en) | 2008-06-11 | 2011-11-22 | International Business Machines Corporation | Using asymmetric memory |
KR20100016987A (ko) * | 2008-08-05 | 2010-02-16 | 삼성전자주식회사 | 상 변화 메모리를 포함하는 컴퓨팅 시스템 |
US8291181B2 (en) * | 2008-10-28 | 2012-10-16 | Micron Technology, Inc. | Temporary mirroring, logical segregation, and redundant programming or addressing for solid state drive operation |
US8312204B2 (en) * | 2009-01-23 | 2012-11-13 | Seagate Technology Llc | System and method for wear leveling in a data storage device |
US8412688B1 (en) * | 2009-06-29 | 2013-04-02 | Emc Corporation | Delegated reference count base file versioning |
US8352482B2 (en) * | 2009-07-21 | 2013-01-08 | Vmware, Inc. | System and method for replicating disk images in a cloud computing based virtual machine file system |
US8543863B2 (en) * | 2009-11-18 | 2013-09-24 | Microsoft Corporation | Efficiency of hardware memory access using dynamically replicated memory |
US8307151B1 (en) * | 2009-11-30 | 2012-11-06 | Micron Technology, Inc. | Multi-partitioning feature on e-MMC |
US20110145477A1 (en) * | 2009-12-15 | 2011-06-16 | Rudelic John C | Flash translation layer using phase change memory |
KR20110119456A (ko) * | 2010-04-27 | 2011-11-02 | 삼성전자주식회사 | 탄성 채널 트랜지스터를 구비하는 반도체 소자 |
US8688897B2 (en) * | 2010-05-28 | 2014-04-01 | International Business Machines Corporation | Cache memory management in a flash cache architecture |
JP2012063871A (ja) * | 2010-09-14 | 2012-03-29 | Univ Of Tokyo | 制御装置およびデータ記憶装置 |
US8527837B2 (en) * | 2010-10-15 | 2013-09-03 | Micron Technology, Inc. | Selective error control coding in memory devices |
US8612798B1 (en) * | 2010-10-21 | 2013-12-17 | Western Digital Technologies, Inc. | Hybrid drive storing write data in non-volatile semiconductor memory if write verify of disk fails |
US20120117303A1 (en) * | 2010-11-04 | 2012-05-10 | Numonyx B.V. | Metadata storage associated with flash translation layer |
US8516194B2 (en) * | 2010-11-22 | 2013-08-20 | Micron Technology, Inc. | Systems and methods for caching data with a nonvolatile memory cache |
US8650150B2 (en) | 2011-03-14 | 2014-02-11 | Sap Ag | System and method of relating data and generating reports |
US8806154B1 (en) * | 2011-05-06 | 2014-08-12 | Chelsio Communications, Inc. | Thin provisioning row snapshot with reference count map |
US20120311262A1 (en) * | 2011-06-01 | 2012-12-06 | International Business Machines Corporation | Memory cell presetting for improved memory performance |
JP5792019B2 (ja) * | 2011-10-03 | 2015-10-07 | 株式会社日立製作所 | 半導体装置 |
CA2761553C (en) | 2011-12-09 | 2019-03-05 | Ibm Canada Limited - Ibm Canada Limitee | Logical buffer pool extension |
KR20130114354A (ko) * | 2012-04-09 | 2013-10-18 | 삼성전자주식회사 | 메모리 시스템 및 컨트롤러의 동작 방법 |
KR101938210B1 (ko) * | 2012-04-18 | 2019-01-15 | 삼성전자주식회사 | 낸드 플래시 메모리, 가변 저항 메모리 및 컨트롤러를 포함하는 메모리 시스템의 동작 방법 |
US9645917B2 (en) | 2012-05-22 | 2017-05-09 | Netapp, Inc. | Specializing I/O access patterns for flash storage |
US9489293B2 (en) * | 2012-08-17 | 2016-11-08 | Netapp, Inc. | Techniques for opportunistic data storage |
KR101992934B1 (ko) * | 2012-11-14 | 2019-06-26 | 삼성전자주식회사 | 메모리 시스템 및 이의 동작 방법 |
US20140258591A1 (en) * | 2013-03-07 | 2014-09-11 | Kabushiki Kaisha Toshiba | Data storage and retrieval in a hybrid drive |
US9817835B2 (en) * | 2013-03-12 | 2017-11-14 | Tintri Inc. | Efficient data synchronization for storage containers |
EP2972891B1 (en) | 2013-03-14 | 2020-05-06 | Hewlett-Packard Enterprise Development LP | Multiversioned nonvolatile memory hierarchy for persistent memory |
US9503491B2 (en) * | 2013-03-15 | 2016-11-22 | Echostar Technologies L.L.C. | Playback stall avoidance in adaptive media streaming |
KR102112115B1 (ko) * | 2013-04-17 | 2020-05-18 | 삼성전자주식회사 | 반도체 메모리 장치 및 그것의 데이터 프로그램 방법 |
KR102145420B1 (ko) * | 2013-07-25 | 2020-08-18 | 삼성전자주식회사 | 데이터 전송 속도를 변경하는 스토리지 시스템 및 그것의 데이터 전송 속도 변경 방법 |
US20150066988A1 (en) * | 2013-08-30 | 2015-03-05 | Nec Laboratories America, Inc. | Scalable parallel sorting on manycore-based computing systems |
US10440080B2 (en) * | 2013-10-18 | 2019-10-08 | Telefonaktiebolaget Lm Ericsson (Publ) | Software-defined media platform |
US9558229B2 (en) | 2013-11-26 | 2017-01-31 | Sap Se | Transaction private log buffering for high performance of transaction processing |
US9152330B2 (en) * | 2014-01-09 | 2015-10-06 | Netapp, Inc. | NVRAM data organization using self-describing entities for predictable recovery after power-loss |
US9529745B2 (en) * | 2014-02-26 | 2016-12-27 | Nxp Usa, Inc. | System on chip and method of operating a system on chip |
US9767051B2 (en) * | 2014-04-04 | 2017-09-19 | Tidal Systems, Inc. | Scalable, parameterizable, and script-generatable buffer manager architecture |
US10073649B2 (en) * | 2014-07-24 | 2018-09-11 | Hewlett Packard Enterprise Development Lp | Storing metadata |
US9875055B1 (en) * | 2014-08-04 | 2018-01-23 | Western Digital Technologies, Inc. | Check-pointing of metadata |
GB2532051A (en) * | 2014-11-07 | 2016-05-11 | Nomad Spectrum Ltd | Data traffic processing and analysis |
US10126950B2 (en) | 2014-12-22 | 2018-11-13 | Intel Corporation | Allocating and configuring persistent memory |
US10339048B2 (en) * | 2014-12-23 | 2019-07-02 | International Business Machines Corporation | Endurance enhancement scheme using memory re-evaluation |
US10176190B2 (en) | 2015-01-29 | 2019-01-08 | SK Hynix Inc. | Data integrity and loss resistance in high performance and high capacity storage deduplication |
US20160259754A1 (en) * | 2015-03-02 | 2016-09-08 | Samsung Electronics Co., Ltd. | Hard disk drive form factor solid state drive multi-card adapter |
CN104778126B (zh) | 2015-04-20 | 2017-10-24 | 清华大学 | 非易失性主存中事务数据存储优化方法及系统 |
US9870169B2 (en) * | 2015-09-04 | 2018-01-16 | Intel Corporation | Interleaved all-level programming of non-volatile memory |
KR20160114492A (ko) * | 2015-09-17 | 2016-10-05 | 주식회사 티맥스데이터 | 데이터베이스 보안 관리를 위한 방법, 서버 및 컴퓨터-프로그램 |
US10331586B2 (en) * | 2015-10-30 | 2019-06-25 | Samsung Electronics Co., Ltd. | Nonvolatile memory device for providing fast booting and system including the same |
US9785365B1 (en) * | 2015-12-08 | 2017-10-10 | Rambus Inc. | Persistent memory descriptor |
US10191849B2 (en) * | 2015-12-15 | 2019-01-29 | Vmware, Inc. | Sizing cache data structures using fractal organization of an ordered sequence |
US20170242785A1 (en) * | 2016-02-23 | 2017-08-24 | Sandisk Technologies Llc | Efficient Implementation of Optimized Host-Based Garbage Collection Strategies Using Xcopy and Arrays of Flash Devices |
US10007443B1 (en) * | 2016-03-31 | 2018-06-26 | EMC IP Holding Company LLC | Host to device I/O flow |
US20170285961A1 (en) * | 2016-04-05 | 2017-10-05 | Alibaba Group Holding Limited | 3d stackable hybrid phase change memory with improved endurance and non-volatility |
US10545861B2 (en) * | 2016-10-04 | 2020-01-28 | Pure Storage, Inc. | Distributed integrated high-speed solid-state non-volatile random-access memory |
US10007459B2 (en) * | 2016-10-20 | 2018-06-26 | Pure Storage, Inc. | Performance tuning in a storage system that includes one or more storage devices |
US10459644B2 (en) * | 2016-10-28 | 2019-10-29 | Western Digital Techologies, Inc. | Non-volatile storage system with integrated compute engine and optimized use of local fast memory |
US10452290B2 (en) * | 2016-12-19 | 2019-10-22 | Pure Storage, Inc. | Block consolidation in a direct-mapped flash storage system |
US9910618B1 (en) * | 2017-04-10 | 2018-03-06 | Pure Storage, Inc. | Migrating applications executing on a storage system |
-
2017
- 2017-05-31 US US15/610,489 patent/US10318175B2/en active Active
- 2017-12-22 KR KR1020170177853A patent/KR102556431B1/ko active IP Right Grant
-
2018
- 2018-02-24 CN CN201810158439.5A patent/CN108572796B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140181362A1 (en) * | 2011-08-18 | 2014-06-26 | Industry Academic Cooperation Foundation Of Yeungnam University | Electronic device for storing data on pram and memory control method thereof |
US20130238832A1 (en) * | 2012-03-07 | 2013-09-12 | Netapp, Inc. | Deduplicating hybrid storage aggregate |
US20150019798A1 (en) * | 2013-07-15 | 2015-01-15 | CNEXLABS, Inc. | Method and Apparatus for Providing Dual Memory Access to Non-Volatile Memory |
CN105917319A (zh) * | 2013-11-22 | 2016-08-31 | 斯瓦姆64有限责任公司 | 存储器单元和方法 |
US8898388B1 (en) * | 2014-01-08 | 2014-11-25 | Netapp, Inc. | NVRAM caching and logging in a storage system |
Non-Patent Citations (2)
Title |
---|
吴章玲;金培权;岳丽华;孟小峰;: "基于PCM的大数据存储与管理研究综述" * |
王江涛;赖文豫;孟小峰;: "闪存数据库:现状、技术与展望" * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110134340A (zh) * | 2019-05-23 | 2019-08-16 | 苏州浪潮智能科技有限公司 | 一种元数据更新的方法、装置、设备以及存储介质 |
CN113326000A (zh) * | 2020-02-28 | 2021-08-31 | Aptiv技术有限公司 | 数据记录设备 |
CN111309270A (zh) * | 2020-03-13 | 2020-06-19 | 清华大学 | 一种持久性内存键值存储系统 |
Also Published As
Publication number | Publication date |
---|---|
US10318175B2 (en) | 2019-06-11 |
US20180260136A1 (en) | 2018-09-13 |
CN108572796B (zh) | 2023-06-27 |
KR20180102483A (ko) | 2018-09-17 |
KR102556431B1 (ko) | 2023-07-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108572796A (zh) | 具有异构nvm类型的ssd | |
US10248322B2 (en) | Memory system | |
CN102483719B (zh) | 基于块的非透明高速缓存 | |
US12093172B2 (en) | Memory system and method of controlling nonvolatile memory | |
CN108139902A (zh) | 用于提供混合模式来访问ssd驱动器的方法和装置 | |
TWI696188B (zh) | 混合式記憶體系統 | |
JP7057435B2 (ja) | ハイブリッドメモリシステム | |
CN109582221A (zh) | 主机计算设备、远程服务器设备、存储系统及其方法 | |
US11016905B1 (en) | Storage class memory access | |
US12045513B2 (en) | Memory system and method of controlling nonvolatile memory with checking a total size indicative of a sum of data length specified by a write command | |
CN115203079A (zh) | 一种将数据写入固态硬盘的方法 | |
KR102443593B1 (ko) | 하이브리드 메모리 시스템 | |
US20240053917A1 (en) | Storage device, operation method of storage device, and storage system using the same | |
KR20220050177A (ko) | 3단의 계층적 메모리 시스템 | |
CN104598166B (zh) | 系统管理方法和装置 | |
US20230236737A1 (en) | Storage Controller Managing Different Types Of Blocks, Operating Method Thereof, And Operating Method Of Storage Device Including The Same | |
US20240211406A1 (en) | Systems, methods, and apparatus for accessing data from memory or storage at a storage node | |
EP4220414A1 (en) | Storage controller managing different types of blocks, operating method thereof, and operating method of storage device including the same | |
US20240311318A1 (en) | Systems and methods for a cache-coherent interconnect protocol storage device | |
CN116501243A (zh) | 存储控制器及其操作方法、存储装置的操作方法 | |
WO2022132481A1 (en) | Object management in tiered memory systems | |
CN116662217A (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 |