CN115328389A - 用于可定制元数据的存储装置、系统和方法 - Google Patents
用于可定制元数据的存储装置、系统和方法 Download PDFInfo
- Publication number
- CN115328389A CN115328389A CN202210411019.XA CN202210411019A CN115328389A CN 115328389 A CN115328389 A CN 115328389A CN 202210411019 A CN202210411019 A CN 202210411019A CN 115328389 A CN115328389 A CN 115328389A
- Authority
- CN
- China
- Prior art keywords
- metadata
- command
- log
- memory
- log pages
- 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
- 238000000034 method Methods 0.000 title claims description 60
- 230000004044 response Effects 0.000 claims abstract description 28
- 238000012545 processing Methods 0.000 claims description 52
- 239000003990 capacitor Substances 0.000 claims description 4
- 238000010586 diagram Methods 0.000 description 15
- 230000006870 function Effects 0.000 description 11
- 230000008569 process Effects 0.000 description 9
- 230000001360 synchronised effect Effects 0.000 description 6
- 238000004891 communication Methods 0.000 description 5
- 239000004744 fabric Substances 0.000 description 5
- 238000012546 transfer Methods 0.000 description 5
- 230000003321 amplification Effects 0.000 description 4
- 238000003199 nucleic acid amplification method Methods 0.000 description 4
- 239000000872 buffer Substances 0.000 description 3
- 238000004590 computer program Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 230000014509 gene expression Effects 0.000 description 3
- 239000011800 void material Substances 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 238000012937 correction Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000002457 bidirectional effect Effects 0.000 description 1
- 150000004770 chalcogenides Chemical class 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 125000004122 cyclic group Chemical group 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 238000012005 ligant binding assay Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000012805 post-processing Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000011664 signaling Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
Images
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/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
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/13—File access structures, e.g. distributed indices
-
- 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/0613—Improving I/O performance in relation to throughput
-
- 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
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/30—Means for acting in the event of power-supply failure or interruption, e.g. power-supply fluctuations
-
- 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/0292—User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/14—Details of searching files based on file metadata
-
- 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/0614—Improving the reliability of storage systems
- G06F3/0616—Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
-
- 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/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- 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/062—Securing 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/0658—Controller construction arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
-
- 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]
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)
- Computer Security & Cryptography (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Library & Information Science (AREA)
- Debugging And Monitoring (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
一种存储装置包括:包括一个或更多个日志页面的受保护的存储器、非易失性存储器、以及存储控制器。所述存储控制器包括:命令取出器,所述命令取出器用于接收包括第一元数据和第二元数据的与数据相关联的数据请求命令,并且在所述非易失性存储器中执行所述数据请求命令;记录器,所述记录器用于识别所述第二元数据,并且将所述第二元数据记录在所述一个或更多个日志页面中;以及日志页面取出器/擦除器,所述日志页面取出器/擦除器用于响应于单独命令从所述一个或更多个日志页面获取所述第二元数据。
Description
相关申请的交叉引用
本申请要求于2021年5月10日提交的标题为“定制SSD(CUSTOM SSD)”的美国临时申请No.63/186,586以及于2021年7月2日提交的美国专利申请No.17/366,584的优先权和权益,其全部内容通过引用并入本文。
技术领域
本公开的一个或更多个实施例的各方面涉及存储装置、存储系统和方法,并且更具体地,涉及一种用于可定制元数据(customizable metadata)的存储装置、包括存储装置的存储系统、以及管理元数据的方法。
背景技术
通常,元数据提供关于数据的一个或更多个方面的重要信息。在存储系统和数据库系统的环境中,元数据可以指关于一个或更多个存储装置中存储的数据的信息,并且可以包括例如关于数据元素、索引结构、模式(schemas)、映射和/或类似物的信息。因此,元数据管理对存储系统和数据库系统的整体性能会是至关重要的,因此,存储系统和数据库系统的大部分开销会致力于元数据的处置和处理。
此背景技术部分中公开的以上信息是为了增强对本公开的背景的理解,因此,它可以包含不构成现有技术的信息。
发明内容
本公开的一个或更多个实施例涉及一种用于可定制元数据的存储装置、存储系统和方法。
根据本公开的一个或更多个实施例,一种存储装置包括:受保护的存储器,所述受保护的存储器包括一个或更多个日志页面;非易失性存储器;以及存储控制器,所述存储控制器包括:命令取出器(fetcher),所述命令取出器被配置为接收包括第一元数据和第二元数据的与数据相关联的数据请求命令,并且在所述非易失性存储器中执行所述数据请求命令;记录器,所述记录器被配置为识别所述第二元数据,并且将所述第二元数据记录在所述一个或更多个日志页面中;以及日志页面取出器/擦除器,所述日志页面取出器/擦除器被配置为响应于单独命令从所述一个或更多个日志页面获取所述第二元数据。
在实施例中,所述命令取出器还可以被配置为将所述第一元数据与所述数据一起存储在所述非易失性存储器中,并且所述记录器可以进一步被配置为单独地将所述第二元数据存储在所述一个或更多个日志页面中。
在实施例中,所述受保护的存储器可以是电池支持的动态随机存取存储器(DRAM)。
在实施例中,所述受保护的存储器可以是连接到保护电容器的DRAM。
在实施例中,所述存储装置还可以包括:日志冲刷器,所述日志冲刷器被配置为:将所述一个或更多个日志页面从所述受保护的存储器转移到所述非易失性存储器;以及将日志页面从所述非易失性存储器转移到所述受保护的存储器。
在实施例中,所述日志冲刷器可以进一步被配置为:响应于所述受保护的存储器超过存储器阈值或掉电,将所述一个或更多个日志页面从所述受保护的存储器转移到所述非易失性存储器。
在实施例中,所述记录器还可以被配置为暴露用于管理所述一个或更多个日志页面的应用编程接口(API)。
在实施例中,所述API可以包括以下至少一者:用于向请求器提供可用记录器的列表的列表记录器命令、用于在所述受保护的存储器中添加新记录器的写入记录器命令、以及用于选择记录器的选择记录器命令。
在实施例中,所述单独命令可以包括以下至少一者:用于返回所述一个或更多个日志页面当中的日志页面的取出命令、用于擦除所述一个或更多个日志页面当中的日志页面的擦除命令、以及用于返回所述一个或更多个日志页面当中的一系列日志页面的迭代命令。
根据本公开的一个或更多个实施例,一种存储系统包括:一个或更多个处理电路;以及存储装置,所述存储装置可通信地连接到所述一个或更多个处理电路,并且所述存储装置包括:受保护的存储器,所述受保护的存储器包括一个或更多个日志页面;非易失性存储器;以及存储控制器,所述存储控制器被配置为:接收要在所述非易失性存储器中执行的数据请求命令;识别与所述数据请求命令一起包括的元数据;将所述元数据记录在所述一个或更多个日志页面中;从所述一个或更多个处理电路当中的请求器接收单独命令;以及响应于所述单独命令从所述一个或更多个日志页面获取所述元数据。
在实施例中,所述存储控制器还可以被配置为:将所述一个或更多个日志页面从所述受保护的存储器转移到所述非易失性存储器;以及将日志页面从所述非易失性存储器转移到所述受保护的存储器。
在实施例中,所述存储控制器可以进一步被配置为:响应于所述受保护的存储器超过存储器阈值或掉电,将所述一个或更多个日志页面从所述受保护的存储器转移到所述非易失性存储器。
在实施例中,所述存储控制器可以包括:用于使得所述一个或更多个处理电路能够管理所述一个或更多个日志页面的应用编程接口(API)。
在实施例中,所述API可以包括以下至少一者:用于向所述请求器提供可用记录器的列表的列表记录器命令、用于在所述受保护的存储器中添加新记录器的写入记录器命令、以及用于选择记录器的选择记录器命令。
在实施例中,所述单独命令可以包括以下至少一者:用于向所述请求器返回所述一个或更多个日志页面当中的日志页面的取出命令、用于擦除所述一个或更多个日志页面当中的日志页面的擦除命令、以及用于返回所述一个或更多个日志页面当中的一系列日志页面的迭代命令。
根据本公开的一个或更多个实施例,一种管理元数据的方法包括:接收要在非易失性存储器中执行的数据请求命令;确定与所述数据请求命令一起包括的元数据;将所述元数据记录在受保护的存储器中的一个或更多个日志页面中;接收单独命令;以及响应于所述单独命令从所述一个或更多个日志页面获取所述元数据。
在实施例中,所述方法还可以包括:将所述一个或更多个日志页面从所述受保护的存储器转移到所述非易失性存储器;以及将日志页面从所述非易失性存储器转移到所述受保护的存储器。
在实施例中,将所述一个或更多个日志页面从所述受保护的存储器转移到所述非易失性存储器可以包括:确定所述受保护的存储器是否超过存储器阈值;以及响应于所述存储器阈值被超过,将所述一个或更多个日志页面从所述受保护的存储器转移到所述非易失性存储器。
在实施例中,将所述一个或更多个日志页面从所述受保护的存储器转移到所述非易失性存储器可以包括:确定所述受保护的存储器是否丢失电力或减少电力;以及响应于所述丢失电力或减少电力,将所述一个或更多个日志页面从所述受保护的存储器转移到所述非易失性存储器。
在实施例中,所述单独命令可以包括以下至少一者:用于返回所述一个或更多个日志页面当中的日志页面的取出命令、用于擦除所述一个或更多个日志页面当中的日志页面的擦除命令、以及用于返回所述一个或更多个日志页面当中的一系列日志页面的迭代命令。
附图说明
根据参考附图对说明性非限制性示例实施例的以下详细描述,将更清楚地理解本公开的以上及其他方面和特征。
图1图示根据本公开的一个或更多个实施例的存储系统的示意框图。
图2图示根据本公开的一个或更多个实施例的存储系统中包括的处理电路和存储装置的示意框图。
图3图示根据本公开的一个或更多个实施例的执行数据请求命令的方法的示意流程。
图4A是示出根据本公开的一个或更多个实施例的与数据请求命令一起包括的数据和元数据的示例的示意框图。
图4B是示出根据本公开的一个或更多个实施例的与数据请求命令一起包括的数据和元数据的示例的示意框图。
图4C是示出根据本公开的一个或更多个实施例的与数据请求命令一起包括的数据和元数据的示例的示意框图。
图4D是示出根据本公开的一个或更多个实施例的与数据请求命令一起包括的数据和元数据的示例的示意框图。
图5图示根据本公开的一个或更多个实施例的执行写入数据请求命令的方法的流程图。
图6图示根据本公开的一个或更多个实施例的执行擦除数据请求命令的方法的流程图。
图7图示根据本公开的一个或更多个实施例的管理可定制元数据的方法的流程图。
具体实施方式
在下文中,将参考附图更详细地描述示例实施例,在附图中相似的附图标记自始至终是指相似的元件。然而,本公开可以以各种不同形式来实现,而不应当被解释为仅限于本文图示的实施例。相反,这些实施例作为示例被提供,使得本公开将是全面且完整的,并且将向本领域的技术人员充分地传达本公开的各方面和特征。因此,可以不描述不是本领域的普通技术人员完全理解本公开的各方面和特征所必需的过程、元件和技术。除非另外指出,否则在整个附图和书面描述中相似的附图标记表示相似的元件,因此,可以不重复其描述。
通常,存储系统开销可能主要来自元数据处置。这样的元数据开销可以包括例如低效输入/输出(IO)模式(例如,小同步IO)、更新开销(例如,索引)、写入放大(例如,为了一致性)和计算(例如,排序、散列处理等)。例如,创建或处理元数据可以包括复杂处理操作(例如,字符串排序和散列处理)或有序处理,这可以在IO之间引发大延迟,降低存储系统的吞吐量。此外,为了一致性目的,存储器中元数据(in-memory metadata)可以与对应的磁盘上结构(例如,主索引结构)同步,从而产生增加的写入放大和多个小同步IO,这可以延迟其他数据请求操作直到多个小同步IO完成为止。
为了减少这样高的元数据开销,一些面向性能的存储系统可以被配置为通过以下操作来延迟元数据处理:首先在无需计算的情况下或利用相对少的计算将元数据的原始数据安全地存储到磁盘,然后稍后在后台中处理原始数据以生成元数据。作为示例,日志结构化合并树(例如,RocksDB)可以将键-值对存储到临时文件,稍后可以从文件中读取键,生成键的索引,然后更新主索引结构。然而,即使在这种情况下,也可能使用小同步IO以便提供强一致性,并且后台处理开销(例如,诸如压缩开销)可能仍支配资源,这可以影响存储系统的整体吞吐量。
根据本公开的一个或更多个实施例,可以提供一种用于可定制元数据的存储装置、存储系统和方法,其中,可定制元数据(或可定制元数据信息)可以被记录在耐久空间中,并且可以由各种合适的协作存储服务或应用按需(例如,响应于用户命令、用户配置、周期性地或按期望)获取以供稍后处理。例如,用户可以通过在任何合适的数据请求命令上承载(piggyback)来发送任何期望的信息以便可定制元数据被记录在预定义和/或用户定义的日志页面中,并且日志页面可以随后可由任何合适的协作存储服务或应用根据需要或按期望取出和擦除。
在一些实施例中,耐久空间可以包括例如存储装置的受保护的存储器(例如,电池支持的DRAM),并且例如,响应于被丢失的威胁(例如,有限空间、掉电、切换电源和/或类似物),日志页面可以被选择性地转移到存储装置的非易失性存储器(例如,NAND闪存)。因此,如果受保护的存储器具有足够大的容量,并且所记录的元数据由协作存储服务或应用足够快地取出和擦除,则可能不需要将日志页面存储在非易失性存储器中,这可以减少由元数据的频繁转移引起的同步IO并且可以增加非易失性存储器的预期寿命。因此,可以相对地保证一致性,同时增加存储装置和整个存储系统的吞吐量。
在一些实施例中,可定制元数据可以是用户定义的并且日志页面可以是用户定义的,从而可以使得用户能够在日志页面中记录任何期望的信息,并且用户可以通过将可定制元数据与任何合适的数据请求命令一起承载来传送可定制元数据(或可定制元数据信息)以记录在日志页面中。例如,与数据请求命令相关联的数据可以包括用户数据(例如,要读取/写入/擦除等的数据)以及与数据请求命令相关联的元数据信息,例如,诸如由用户将其与用户数据一起发送的循环冗余校验(CRC)数据。要记录在日志页面中的可定制元数据(或可定制元数据信息)还可以和与数据请求命令相关联的数据一起被包括,并且可以在数据请求命令被执行的同时被记录在日志页面中。可定制元数据(或可定制元数据信息)可以包括按需(例如,响应于用户命令或用户配置、周期性地或按期望)可取出、可擦除等的任何合适的用户期望的元数据。因此,与数据(即,用户数据)相关联的元数据(例如,CRC数据)与可定制元数据之间的一个示例差异可以是:与数据相关联的元数据可以与数据一起被存储和擦除,因此,可以不基于单独命令(例如,单独用户命令、单独信号或配置)被单独地获取。此外,可定制元数据与内部元数据之间的一个差异是:内部元数据可以不由用户将其与用户数据一起发送,而是可以由存储装置的组件在内部使用,因此,可以不基于单独命令被获取。因此,不同于与数据存取命令的数据相关联并且通常与数据一起存储的元数据(例如,CRC数据)或由存储装置的组件在内部使用的内部元数据,可定制元数据可以包括要记录在一个或更多个日志页面中的任何期望的信息,并且可以与对应于数据请求命令的数据和元数据分开地存储。
在一些实施例中,存储装置可以暴露一组应用编程接口(API),其用于允许任何协作存储服务或应用生成用户定义的记录函数(logging function),所述记录函数用于将可定制元数据记录在日志页面中,并且API可以允许按需对日志页面进行访问以便根据需要或按期望处理(例如,后处理)可定制元数据。例如,位于存储系统内的任何合适的处理电路可以生成针对日志页面的记录器,并且可以按需取出和/或擦除一个或更多个日志页面。在一些实施例中,如果存储装置被配置有合适的计算能力,则存储装置可以在将定制元数据记录在日志页面中之前和/或在将日志页面提供给请求器(例如,请求处理电路)之前进一步计算(例如,排序、散列处理、翻译、转换等)可定制元数据。因此,与处理可定制元数据相关联的开销可以从主机装置卸载到位于存储系统内或可通信地连接到存储系统的另一处理电路,和/或卸载到存储装置本身,这取决于存储装置和系统的配置。
因此,根据本公开的一个或更多个实施例的存储装置、存储系统和方法可以被应用于任何合适的协作存储服务或应用,其中存储装置记录可由协作存储服务或应用按需获取以供稍后处理的可定制的、用户定义的元数据。这样的协作存储服务或应用的一些非限制性示例包括,例如,索引元数据记录和协作式索引、丢失写入跟踪、软件定义的公平性和调度、用于分析的访问跟踪、数据重新平衡、高速缓存和/或类似物。
图1图示根据本公开的一个或更多个实施例的存储系统的示意框图。
图1示出一个主机装置102连接到一个存储装置104的存储系统100的简化示例,但是本公开不限于此,并且存储系统100可以包括各自连接到任何合适数目的存储装置的任何合适数目的主机装置。此外,存储系统100可以包括可以连接到相同主机装置(例如,主机装置102)或不同主机装置的多个存储装置。因此,在各种实施例中,可以存在可以集中地管理存储在多个存储装置中的元数据的中央节点(例如,中央处理电路),或者存储系统100可以是分布式存储系统,在分布式存储系统中,多个节点(例如,多个处理电路)可以管理存储在多个存储装置中的相同或不同存储装置中的元数据。
参考图1,主机装置102可以通过主机接口106连接到存储装置104。主机装置102可以通过主机接口106向存储装置104发出数据请求命令(例如,写入/擦除命令),并且可以通过主机接口106从存储装置104接收响应。例如,响应可以包括存储在存储装置104中的请求数据,和/或来自存储装置104的对应的数据请求命令已被存储装置104成功地执行的通知。
主机装置102可以包括主机处理器108和主机存储器110。主机处理器108可以是处理电路,例如,诸如主机装置102的通用处理器或中央处理单元(CPU)核。主机处理器108可以经由地址总线、控制总线、数据总线和/或类似物连接到其他组件。主机存储器110可以被认为是主机装置102的高性能主存储器(例如,主要存储器)。例如,在一些实施例中,主机存储器110可以包括(或者可以是)易失性存储器,例如,诸如动态随机存取存储器(DRAM)。然而,本公开不限于此,并且主机存储器110可以包括(或者可以是)如对本领域的技术人员已知的主机装置102的任何合适的高性能主存储器(例如,主要存储器)替换物。例如,在其他实施例中,主机存储器110可以是相对高性能非易失性存储器,诸如NAND闪存、相变存储器(PCM)、电阻式RAM、自旋转移矩RAM(STTRAM)、基于PCM技术、忆阻器技术和/或电阻式随机存取存储器(ReRAM)的任何合适的存储器,并且能够包括例如硫族化物和/或类似物。
存储装置104可以被认为是可以持久地存储可由主机装置102访问的数据的辅助存储器。在这种环境中,当与主机存储器110的高性能存储器相比时,存储装置104可以包括(或者可以是)相对较慢的存储器。例如,在一些实施例中,存储装置104可以是主机装置102的辅助存储器,例如,诸如固态驱动器(SSD)。然而,本公开不限于此,并且在其他实施例中,存储装置104可以包括(或者可以是)任何合适的存储装置,例如,诸如磁性存储装置(例如,硬盘驱动器(HDD)等)、光学存储装置(例如,蓝光盘驱动器、紧致盘(CD)驱动器、数字通用盘(DVD)驱动器等)、其他种类的闪存装置(例如,USB闪存驱动器等)和/或类似物。在各种实施例中,存储装置104可以符合大形状因子标准(例如,3.5英寸硬盘驱动器形状因子)、小形状因子标准(例如,2.5英寸硬盘驱动器形状因子)、M.2形状因子、E1.S形状因子和/或类似物。在其他实施例中,存储装置104可以符合这些形状因子的任何合适或期望的派生物。为了方便,在下文中可以在SSD的环境下描述存储装置104,但是本公开不限于此。
存储装置104可以通过主机接口106可通信地连接到主机装置102。主机接口106可以便利主机装置102与存储装置104之间的通信(例如,使用连接器和协议)。在一些实施例中,主机接口106可以便利主机装置102与存储装置104之间的存储请求和响应的交换。在一些实施例中,主机接口106可以便利通过存储装置104向主机装置102的主机存储器110或来自主机装置102的主机存储器110的数据转移。例如,在各种实施例中,主机接口106(例如,连接器及其协议)可以包括(或者可以符合)小型计算机系统接口(SCSI)、快速非易失性存储器(NVMe)、快速外围组件互连(PCIe)、基于以太网的远程直接存储器访问(RDMA)、串行高级技术附件(SATA)、光纤通道、串行附接SCSI(SAS)、基于结构的NVMe(NVMe-oF)和/或类似物。在其他实施例中,主机接口106(例如,连接器及其协议)可以包括(或者可以符合)各种通用接口,例如,诸如以太网、通用串行总线(USB)和/或类似物。
在一些实施例中,存储装置104可以包括存储控制器112、存储存储器114、非易失性存储器(NVM)116和存储接口118。存储存储器114可以是存储装置104的高性能存储器,并且可以包括(或者可以是)易失性存储器,例如,诸如DRAM,但是本公开不限于此,并且存储存储器114可以是任何合适种类的高性能易失性或非易失性存储器。在一些实施例中,存储存储器114例如可以是受保护的存储器,从而在失电或掉电的情况下,可以防止或大体上防止存储在受保护的存储器中的日志页面丢失。例如,在一些实施例中,存储存储器114可以包括(或者可以是)电池支持的DRAM,但是本公开不限于此。作为另一示例,存储存储器114可以连接到合适大小的电容器(例如,保护电容器)以在失电的情况下存储(例如,临时存储)日志页面。在下文中,存储存储器114也可以被称为受保护的存储器114。NVM 116可以持久地存储例如从主机装置102接收到的数据。NVM 116可以包括例如NAND闪存,但是本公开不限于此,并且NVM 116可以包括用于根据存储装置104的实现方式持久地存储数据的任何合适种类的存储器(例如,磁盘、磁带、光盘和/或类似物)。
存储控制器112可以通过存储接口118连接到NVM 116。在SSD的环境下,存储接口118可以被称为闪存转换层(FTL),并且可以是NVM 116(例如,NAND闪存)可以用来与处理组件(例如,存储控制器112)或其他装置进行通信的接口。可以通过存储接口118发送诸如复位、写入使能、控制信号、时钟信号和/或类似物的命令。此外,可以与可用于测试/验证存储接口118的工作的硬件元件相结合地使用软件接口。软件可以用于经由存储接口118读取数据以及向NVM 116写入数据。此外,软件可以包括可以被下载到硬件元件上的固件(例如,用于控制写入操作、擦除操作和读取操作)。
存储控制器112可以连接到主机接口106,并且可以通过主机接口106管理信令。在一些实施例中,存储控制器112可以包括用于管理主机接口106的物理连接器的相关联的软件层。存储控制器112可以对通过主机接口106从主机装置102接收到的IO请求做出响应。存储控制器112还可以管理存储接口118以控制NVM 116,并且提供对NVM 116的存取。例如,存储控制器112可以包括嵌入在其上以用于与主机装置102和NVM 116对接的至少一个处理组件。处理组件可以包括例如数字电路(例如,微控制器、微处理器、数字信号处理器或逻辑器件(例如,现场可编程门阵列(FPGA)、专用集成电路(ASIC)和/或类似物)),其能够(例如,经由固件和/或软件)执行数据存取指令以根据数据存取指令来提供对存储在NVM 116中的数据的存取。例如,数据存取指令可以对应于数据请求命令,并且可以包括任何合适的数据存储和获取(retrieval)算法(例如,读取/写入/擦除)指令和/或类似物。
根据本公开的一个或更多个实施例,存储控制器112可以通过主机接口106接收数据请求命令(例如,写入/擦除命令)以及包括在命令中(例如,被命令承载)的可定制元数据。存储控制器112可以在执行(例如,并行地或同时地)数据请求命令的同时,将可定制元数据存储在存储存储器(例如,受保护的存储器)114的日志页面中。响应于单独命令(例如,单独用户命令、单独信号或配置),存储控制器112可以从存储存储器(例如,受保护的存储器)114获取日志页面,并且可以将日志页面提供给请求器(例如,处理电路)。
图2图示根据本公开的一个或更多个实施例的存储系统100中包括的处理电路202和存储装置104的示意框图。
参考图2,存储装置104的存储控制器112可以包括命令(CMD)取出器204、定制记录器206、日志冲刷器208和日志页面取出器/擦除器210。在简要概述中,CMD取出器204可以通过主机接口106(例如,参见图1)从主机装置102接收数据请求命令,并且可以响应于执行数据请求命令而向主机装置102发送响应(例如,通知)。定制记录器206可以管理预定义和/或用户定义的记录函数,以将传入的数据请求命令中的可定制元数据记录到受保护的存储器114中的适当的日志页面212。日志冲刷器208可以将日志页面212从受保护的存储器114冲刷(flush)到NVM 116,并且可以根据需要或按期望将日志页面从NVM 116加载到受保护的存储器114。日志页面取出器/擦除器210可以按需(例如,响应于诸如用户命令的单独命令、用户配置、周期性地或按期望)从受保护的存储器114读取日志页面212以及擦除日志页面212。虽然图2示出存储装置104的组件之间的一些通信的示例定向流,但是本公开不限于由图2中的箭头指示的通信方向,并且各种组件之间的通信可以是单向的或双向的。
更详细地,定制记录器206可以包括预定义的记录器和/或一个或更多个用户定义的记录器,它们可以通过利用由定制记录器206暴露的一组API来创建,以允许任何合适的协作存储服务或应用(例如,日志处理电路202)创建用户定义的记录函数,所述记录函数用于将可定制元数据记录到日志页面212中的合适的日志页面中。由定制记录器206暴露的API的一些示例可以包括例如:ListLogger,其提供可用记录器的列表;WriteLogger,其例如通过采取交叉编译二进制或eBPF(如果支持)来添加新记录器;以及SelectLogger,其选择可用记录器,但是本公开不限于这些示例。
作为示例,对于每个数据请求操作(例如,写入或擦除),例如,当键包括元数据时,预定义的记录器可以将成对的操作类型(例如,写入或擦除)和键(或其他相关或期望的元数据)记录在日志页面212中的合适的日志页面中,但是本公开不限于此。用户定义的记录函数可以对应于可以被用作记录器的任何合适的用户提供的函数。用户提供的函数可以使用任何合适的编程语言(例如,eBPF、C/C++和/或类似语言)来提供,这可以取决于存储装置104的架构。为了方便,在以下示例1中示出了可以用于创建用户定义的记录器的用户定义的记录函数的非限制性示例。
示例1:
int logger(void*dest,void*key,int keylength,void*value,intvaluelength):
Add Timestamp at dest addr and increment dest by the number of byteswritten(在dest地址处添加时间戳并且将dest递增写入字节数);
Add keylength at dest addr and increment dest by the number of byteswritten(在dest地址处添加keylength并且将dest递增写入字节数);
Copy keylength bytes from key to dest addr and increment dest by thenumber of bytes written(将keylength个字节从key复制到dest地址并且将dest递增写入字节数);
If valuelength<preconfigured valueloglength(如果valuelength<预配置的valueloglength):
Add valuelength at dest addr and increment dest by the number ofbytes written(在dest地址处添加valuelength并且将dest递增写入字节数);
Copy valuelength bytes from value to dest addr and increment dest bythe number of bytes written(将valuelength个字节从value复制到dest地址并且将dest递增写入字节数);
Else(否则):
Add valueloglength at dest addr and increment dest by the number ofbytes written(在dest地址处添加valueloglength并且将dest递增写入字节数);
Copy valueloglength bytes from value to dest addr and increment destby the number of bytes written(将valueloglength个字节从value复制到dest地址并且将dest递增写入字节数);
Return total bytes written(返回总写入字节)。
在示例1中,输入可以是键-值对,目的地(dest)可以是字节数组(byte array)(输出),并且返回值可以是写入字节。
日志冲刷器208可以针对受保护的存储器114中的日志页面212实现按需分页(on-demand paging)。例如,日志冲刷器208可以响应于日志页面212面临被丢失的威胁(例如,在达到受保护的存储器114的阈值极限时、在掉电时、和/或在电源被切换时)将日志页面212从受保护的存储器114移出(evict)到NVM 116,因此,可以减少由于元数据从受保护的存储器114到NVM 116的频繁转移引起的写入放大,并且可以减少小同步IO。此外,通过减少NVM 116的写入放大和小同步IO,可以改善NVM 116的预期寿命。此外,日志冲刷器208可以根据需要或按期望(例如,当由日志页面取出器/擦除器210和/或定制记录器206请求时)将日志页面212从NVM 116加载到受保护的存储器114中。
日志页面取出器/擦除器210可以允许任何合适的协作存储服务或应用(例如,日志处理电路202)读取和擦除日志页面212以便处理(例如,后处理)日志页面212。例如,响应于各种命令(例如,用户命令、用户日志页面命令、来自其他装置的信号和/或类似物),日志页面取出器/擦除器210可以取出日志页面212并将其返回给请求器(例如,日志处理电路202),基于请求器需求擦除日志页面212,并且对日志页面迭代以将特定范围内的日志页面返回给请求器,但是本公开不限于这些示例。
因此,任何合适的处理电路202(例如,诸如主机处理器108、本地/远程存储服务器处理器、连接到结构(fabric)或主机接口106的处理电路(例如,编程交换机)、和/或位于存储系统100内或可通信地连接到存储系统100的类似物)可以包括(例如,可以是)日志处理电路202,日志处理电路202包括记录器信息预处理器214和/或日志后处理器216,记录器信息预处理器214可以预处理要记录的元数据,和/或(例如,经由API)与定制记录器206进行通信以生成一个或更多个用户定义的记录器,日志后处理器216可以与日志页面取出器/擦除器210进行通信,以获取和处理受保护的存储器114中的一个或更多个日志页面212并且后处理所记录的元数据。
例如,主机装置102可以将可定制元数据承载在数据请求命令中,并且下游记录器信息预处理器214(例如,诸如连接到结构或主机接口106的处理电路)可以接收(或截获)数据请求命令,从数据请求命令提取可定制元数据,修改(例如,重新格式化、转换、添加、减少等)可定制元数据以便存储在日志页面212中,并且将数据请求命令发送到存储装置104以便存储在日志页面212中。作为另一示例,主机装置102可以发出不具有可定制元数据的数据请求命令,并且下游记录器信息预处理器214可以接收数据请求命令,将可定制元数据承载在数据请求命令中,并且将数据请求命令发送到存储装置104以便存储在日志页面212中。作为另一示例,主机装置可以包括用于在将可定制元数据承载在数据请求命令中之前修改(例如,重新格式化、转换、添加、减少等)可定制元数据的记录器信息预处理器。因此,在各种实施例中,记录器信息预处理器可以将可定制元数据承载在数据请求命令中,可以截获并修改承载在数据请求命令中的可定制元数据,可以截获由主机装置发出的不具有可定制元数据的数据请求命令,并且可以将可定制元数据承载在数据请求命令中等。
此外,在一些实施例中,存储控制器112可以被可选地实现有足够的计算能力,使得存储控制器112可以在将可定制元数据信息记录在日志页面212中之前预处理(例如,排序、散列处理、翻译、转换等)可定制元数据信息,可以在将可定制元数据信息记录在日志页面212之前添加或改变可定制元数据信息,和/或可以在将日志页面212返回给请求器之前对日志页面212中的可定制元数据信息进行后处理(例如,计算、修改等)。因此,根据存储系统100和存储装置104的实现方式(例如,架构)(例如,eBPF/FPGA/GPU/E-SSD/结构附接计算(例如,可编程交换机)和/或类似物),与处理日志页面212相关联的开销可以被卸载到与存储装置104通信的任何合适的处理电路202和/或被卸载到存储装置104本身。
虽然图2示出记录器信息预处理器214和日志后处理器216是同一日志处理电路202的一部分,但是本公开不限于此。例如,在各种实施例中,处理器214和216中的每一者可以是通用处理器或专用处理器、专用集成电路(ASIC)、一个或更多个现场可编程门阵列(FPGA)、一组处理组件、或可通信地连接到存储装置104的其他合适的处理组件。处理器214和216中的每一者可以被集成在单个装置(例如,单个日志处理电路202)内或者跨越多个单独系统或装置分布。此外,处理器214和216中的每一者可以是关于存储系统100的内部处理器,或者可以是作为基于云的计算系统的一部分实现的外部处理器。
图3图示根据本公开的一个或更多个实施例的执行数据请求命令的方法的示意流程。图4A至图4D是示出根据本公开的一个或更多个实施例的与数据请求命令相关联的数据和元数据的各种示例的示意框图。
参考图2和图3,在一些实施例中,命令取出器204可以(例如,从主机装置102)接收数据请求命令,并且可以执行数据请求命令。例如,在一些实施例中,当数据请求命令是写入命令时,命令取出器204可以执行写入命令,使得与写入命令相关联的数据以及与数据相关联的元数据(例如,CRC数据)(例如,在下文中也称为第一元数据)通过存储接口118被存储在NVM 116中。作为另一示例,在一些实施例中,当数据请求命令是擦除命令(或删除命令)时,命令取出器204可以通过如下操作来执行擦除命令:首先通过存储接口118从NVM116读取与擦除命令相关联的数据以及与数据相关联的任何第一元数据,然后擦除数据和第一元数据。在一些实施例中,命令取出器204可以向数据请求命令的请求器(例如,主机装置102)发送通知302,例如,通知302指示数据请求命令被成功地执行。
在一些实施例中,可定制元数据(例如,在下文中也称为第二元数据)可以被包括在数据请求命令中(例如,承载在数据请求命令上)。例如,与数据请求命令相关联的数据还可以包括可定制元数据(例如,第二元数据)。在这种情况下,在执行数据请求命令的同时,命令取出器204可以将命令(或与命令相关联的数据或可定制元数据)发送(例如,并行地或同时地)到定制记录器206,并且定制记录器206可以将可定制元数据(例如,第二元数据)存储在受保护的存储器114中的一个或更多个适当的日志页面212中。例如,在各种实施例中,命令取出器204可以从与数据请求命令相关联的数据中解析可定制元数据,以将可定制元数据发送到定制记录器206以便记录在日志页面212中,或者可以将数据请求命令作为整体或部分地发送到定制记录器206以从其中解析可定制元数据。然而,本公开不限于此,并且在一些实施例中,数据请求命令可以包括:具有包括第二元数据的预定数据字段的写入命令、具有用于要写入到NVM 116的数据的空数据字段的写入命令、具有指示第二元数据被包括的标志的写入命令、指示第二元数据被包括的特殊命令,和/或允许仅可定制元数据被写入到受保护的存储器114中的日志页面中的适当的日志页面而不向NVM 116写入任何数据的类似命令。在这种情况下,命令取出器204可以将命令或从其中解析的第二元数据发送到定制记录器206以便记录,但是可以不在NVM 116中存储任何数据或元数据。
参考图4A至图4D,元数据(例如,第一元数据和第二元数据)可以以各种合适的方式被包括在数据请求命令中(例如,承载在数据请求命令上)。例如,元数据可以被包括在与数据请求命令本身相关联的数据中(例如,如图4A和图4C所示),或者存储装置104可以包括用于数据和元数据的单独空间,例如,诸如单独的数据缓冲器和元数据缓冲器(例如,如图4B所示)。在任何一种情况下,数据的元数据空间或元数据缓冲器可以包括第一元数据(例如,诸如与数据请求命令的数据相关联的CRC数据的元数据)Metadata 1(或MD1)和/或用于单独存储在一个或更多个日志页面212中的第二元数据(例如,可定制元数据)Metadata 2(或MD2)中的至少一者。
例如,在一些实施例中,可以根据存储装置104的实现方式来定义(例如,预定义)元数据空间的大小,从而可以针对第一元数据Metadata 1分配元数据空间的一部分,并且可以针对第二元数据Metadata 2分配元数据空间的另一部分。在这种情况下,当定制记录器206例如从命令取出器204接收到数据请求命令(或者,可定制元数据或与可定制元数据相对应的信息)时,它可以将针对第二元数据Metadata 2分配的元数据空间中的所有元数据存储到日志页面212中的适当的日志页面中。在另一示例中,在一些实施例中,存储装置104可以包括足够的计算能力,例如,使得定制记录器206可以从与数据请求命令相关联的元数据空间识别(identify)和提取(例如,基于令牌、唯一标识符和/或类似物)第二元数据Metadata2,这可以在可以被承载在任何给定数据请求命令上的可定制元数据(或元数据信息)的量方面允许更多灵活性。
因此,在各种实施例中,虽然第一元数据Metadata 1可以是通常与数据存取命令的数据相关联并且例如根据数据的逻辑块地址(LBA)与数据一起存储的元数据(例如,CRC数据),但是第二元数据Metadata 2可以与数据的LBA相关联,或者可以不与数据的LBA相关联,并且替代地,可以不管数据的LBA而被单独地存储在受保护的存储器中的适当的日志页面中。因此,可以防止或减少对NVM 116的用于记录第二元数据Metadata2的单独IO,并且可以改善存储系统100的吞吐量。虽然提供了CRC数据作为第一元数据Metadata 1的示例,但是本公开不限于此,并且第一元数据Metadata 1可以包括与数据请求命令的数据相关联的任何合适的元数据,例如,诸如纠错码、纠错奇偶校验位和/或类似物。
虽然图4A至图4C示出在各种块类型存储装置中将元数据承载在数据上的各种示例,但是本公开不限于此,并且本公开的实施例可以被应用于任何合适类型的存储装置,例如,诸如对象存储装置、分区命名空间(ZNS)存储装置、键-值存储装置和/或类似物。例如,如图4D所示,在键-值存储装置(例如,KVSSD)中,可以将元数据定义为键、值,或者定义为键-值的一部分。在这种情况下,第二元数据可以包括整个键,其中,键和值可以被一起写入,或者第二元数据可以仅包括键或键的一部分,其中,可以根据需要或按期望使用单独命令(例如,单独用户命令、信号或配置)从适当的日志页面获取键。
图5图示根据本公开的一个或更多个实施例的执行写入数据请求命令的方法的流程图。例如,方法500可以由图1和图2所示的存储控制器112执行。然而,本公开不限于此,并且方法500中示出的操作可以由上述一个或更多个示例实施例的任何合适的一个组件和元件或者组件和元件的任何合适的组合来执行。此外,本公开不限于图5所示的方法500的操作的次序或数目,并且能够被更改为如由本领域的普通技术人员所认识的操作的任何期望的次序或数目。例如,在一些实施例中,顺序可以变化,或者方法500可以包括更少的操作或额外的操作。
参考图5,方法500可以开始,并且存储装置104可以在框505处接收针对要写入到NVM 116的数据的数据请求命令。例如,数据请求命令可以是针对数据的写入命令,并且命令取出器204可以通过主机接口106(例如,参见图1和图2)从主机装置102接收数据请求命令。
存储装置104可以在框510处识别与数据相关联的第一元数据(例如,CRC数据或其他元数据),并且可以在框515处将数据和第一元数据写入在NVM 116中。例如,数据请求命令可以包括要写入到NVM 116的数据、以及与数据请求命令的数据相关联的第一元数据(或第一元数据信息),第一元数据可以包括要与数据一起存储的、与数据请求命令的数据的LBA相关联的元数据,但是本公开不限于此。
存储装置104可以在框520处确定数据请求命令是否包含用于记录在日志页面212中的第二元数据。例如,第二元数据可以包括可定制元数据,可定制元数据可以与数据请求命令的数据(例如,数据的LBA)相关联,或可以不与数据请求命令的数据(例如,数据的LBA)相关联,并且与数据分开地存储。如果数据请求命令不包括第二元数据(例如,在框520处为否),则存储装置104(例如,命令取出器204)可以在框530处向请求器(例如,主机装置102)发送指示数据请求命令被成功地执行的通知,并且方法500可以结束。
另一方面,响应于存储装置104(例如,命令取出器204和/或定制记录器206)在框520处确定数据请求命令包含用于记录在日志页面212中的第二元数据(例如,在框520处为是),存储装置104(例如,定制记录器206)可以在框525处将第二元数据存储(例如,可以记录)在受保护的存储器114的适当的日志页面212中。例如,存储装置104(例如,命令取出器204和/或定制记录器206)可以确定与数据请求命令相关联的元数据空间中的分配部分(例如,预定义部分)中的任何元数据是要存储在一个或更多个适当的日志页面212中的第二元数据,或者存储装置104(例如,命令取出器204和/或定制记录器206)可以具有被配置为从元数据空间识别和提取(例如,经由令牌、唯一标识符和/或类似物)第二元数据的足够的计算能力。
一旦在框525处第二元数据被成功地存储(例如,记录)在日志页面212中,存储装置104(例如,命令取出器204)就可以在框530处向与数据请求命令相关联的请求器(例如,主机装置102)发送指示第二元数据被成功地记录的通知,并且方法500可以结束。在一些实施例中,因为框510和515可以与框520和525并行地(例如,同时地)执行(例如,参见图3),所以命令取出器204可以在数据请求命令被成功地执行时发送通知,并且可以在第二元数据被成功地记录时发送单独通知,使得一个操作可以不对另一个操作造成瓶颈,但是本公开不限于此,并且在其他实施例中,命令取出器204可以等待两个操作成功地完成,然后可以发送指示两个操作已成功地完成的单个通知。
虽然图5示出第二元数据被包括在与要写入在NVM 116中的一些数据相关联的数据请求命令中(例如,第二元数据与要写入在NVM 116中的一些数据相关联的数据请求命令一起承载)的示例,但是本公开不限于此。例如,在一些实施例中,数据请求命令可以是具有特殊数据字段的写入命令或其他特殊命令,使得仅第二元数据可以被记录在适当的日志页面212中,而不用向NVM 116写入任何数据。
图6图示根据本公开的一个或更多个实施例的执行擦除数据请求命令的方法的流程图。例如,方法600可以由图1和图2所示的存储控制器112执行。然而,本公开不限于此,并且方法600中示出的操作可以由上述一个或更多个示例实施例的任何合适的一个组件和元件或者组件和元件的任何合适的组合来执行。此外,本公开不限于图6所示的方法600的操作的次序或数目,并且能够被更改为如由本领域的普通技术人员所认识的操作的任何期望的次序或数目。例如,在一些实施例中,顺序可以变化,或者方法600可以包括更少的操作或额外的操作。
参考图6,方法600可以开始,并且存储装置104可以在框605处接收针对要从NVM116擦除(例如,删除)的数据的数据请求命令。例如,数据请求命令可以是用于删除存储在NVM 116中的数据的擦除命令,并且命令取出器204可以通过主机接口106(例如,参见图1和图2)从主机装置102接收数据请求命令。
存储装置104可以在框610处从NVM 116获取数据以及与数据相关联的第一元数据(例如,CRC数据或其他元数据),并且可以在框615处删除数据和第一元数据。例如,存储装置104(例如,命令取出器204)可以从NVM 116读取与数据请求命令相关联的数据和第一元数据,并且可以对NVM 116中的数据和第一元数据执行擦除操作(例如,删除操作)。与数据请求命令的数据相关联的第一元数据(或第一元数据信息)可以与数据请求命令的数据的LBA相关联,但是本公开不限于此。
存储装置104可以在框620处确定数据请求命令是否包含用于记录在日志页面212中的第二元数据。例如,第二元数据可以包括可定制元数据,可定制元数据可以关联于与数据请求命令相关联的数据(例如,数据的LBA),或者可以不关联于与数据请求命令相关联的数据(例如,数据的LBA)。如果数据请求命令不包括第二元数据(例如,在框620处为否),则存储装置104(例如,命令取出器204)可以在框630处向请求器(例如,主机装置102)发送指示数据请求命令被成功地执行的通知,并且方法600可以结束。
另一方面,响应于存储装置104(例如,命令取出器204和/或定制记录器206)在框620处确定数据请求命令包含用于记录在日志页面212中的第二元数据(例如,在框620处为是),存储装置104(例如,定制记录器206)可以在框625处将第二元数据存储(例如,可以记录)在受保护的存储器114的适当的日志页面212中。例如,存储装置104(例如,命令取出器204和/或定制记录器206)可以确定与数据请求命令相关联的元数据空间中的分配部分(例如,预定义部分)中的任何元数据是要存储在一个或更多个适当的日志页面212中的第二元数据,或者,存储装置104(例如,命令取出器204和/或定制记录器206)可以具有被配置为从元数据空间识别和提取(例如,经由令牌、唯一标识符和/或类似物)第二元数据的足够的计算能力。
一旦在框625处第二元数据被成功地存储(例如,记录)在日志页面212中,存储装置104(例如,命令取出器204)就可以在框630处向与数据请求命令相关联的请求器(例如,主机装置102)发送指示第二元数据被成功地记录的通知,并且方法600可以结束。在一些实施例中,因为框610和615可以与框620和625并行地(例如,同时地)执行(例如,参见图3),所以命令取出器204可以在数据请求命令被成功地执行时发送通知,并且可以在第二元数据被成功地记录时发送单独通知,使得一个操作可以不对另一个操作造成瓶颈,但是本公开不限于此,并且在其他实施例中,命令取出器204可以等待两个操作成功地完成,然后可以发送指示两个操作已成功地完成的单个通知。
图7图示根据本公开的一个或更多个实施例的管理可定制元数据的方法的流程图。例如,方法700可以由图1和图2所示的存储控制器112执行。然而,本公开不限于此,并且方法700中示出的操作可以由上述一个或更多个示例实施例的任何合适的一个组件和元件或组件和元件的任何合适的组合来执行。此外,本公开不限于图7所示的方法700的操作的次序或数目,并且能够被更改为如由本领域的普通技术人员所认识的操作的任何期望的次序或数目。例如,在一些实施例中,顺序可以变化,或者方法700可以包括更少的操作或额外的操作。
参考图7,方法700可以开始,并且存储装置104可以在框705处例如从主机装置102(例如,参见图1)接收数据请求命令。数据请求命令可以是如以上参考图5讨论的写入命令,或如以上参考图6讨论的擦除命令,因此,存储装置104可以根据以上参考图5和图6描述的方法500或方法600来执行数据请求命令。例如,存储装置104(例如,命令取出器204或定制记录器206)可以在框710(例如,对应于图5的框520或图6的框620)处识别与数据请求命令一起包括的元数据信息(例如,第二元数据),并且可以在框715(例如,对应于图5的框525或图6的框625)处将元数据信息(例如,第二元数据)记录(例如,可以存储)在受保护的存储器114中的日志页面中。
在一些实施例中,如果数据请求命令是读取命令,则仅与读取命令相关联的数据以及与数据相关联的第一元数据可以被读取并返回给读取命令的请求器。然而,本公开不限于此,并且在其他实施例中,要存储在一个或更多个合适的日志页面212中的第二元数据可以与读取数据请求命令一起承载,类似于上述擦除数据请求命令的方法。
随后,存储装置104(例如,命令取出器204或日志页面取出器/擦除器210)可以在框720处从请求器(例如,日志处理电路202)接收单独命令(例如,用户命令、信号等)以从日志页面获取(例如,可以读取)元数据信息(例如,第二元数据)。例如,单独命令(例如,用户命令或信号)可以是用于取出或擦除受保护的存储器114中存储的日志页面的取出命令或擦除命令。存储装置104(例如,日志页面取出器/擦除器210)可以在框725处从受保护的存储器114获取(例如,可以读取)日志页面,可以在框730处向请求器(例如,日志处理电路202)发送元数据信息(例如,第二元数据)(或可以删除元数据信息),并且方法700可以结束。
根据上述本公开的一个或更多个实施例,可以提供一种存储装置、系统和方法,其中,可定制元数据可以被包括在任何合适的数据请求命令中(例如,承载在任何合适的数据请求命令上)以被存储在受保护的存储器中的一个或更多个适当的日志页面中。根据本公开的一个或更多个实施例,所记录的可定制元数据可以随后可从受保护的存储器中获取以供进一步处理,并且元数据的处理可以从主机装置卸载到位于存储装置中或可通信地连接到存储装置的任何处理电路,或者卸载到存储装置本身(例如,当被配置有足够的计算能力时)。因此,可以改善存储系统的吞吐量。
虽然已根据具有特定处理顺序的各种处理描述了根据本公开的一个或更多个实施例的各种方法,但是本公开不限于此。例如,当可以不同地实现特定实施例时,特定处理顺序可以与所描述的顺序不同。例如,连续地描述的两个处理可以被同时或大体上同时执行,可以以与所描述的顺序相反的顺序执行,或者可以以不遵循本公开中呈现的顺序进展的顺序执行。
将理解,尽管术语“第一”、“第二”、“第三”等可以在本文中用于描述各种元件、组件、区域、层和/或部分,但是这些元件、组件、区域、层和/或部分不应当受这些术语限制。这些术语用于将一个元件、组件、区域、层或部分与另一元件、组件、区域、层或部分进行区分。因此,第一元件、组件、区域、层或部分可以被称为第二元件、组件、区域、层或部分,而不脱离本公开的精神和范围。
将理解,当一个元件或层被称为“在”另一元件或层“上”、“连接到”或“耦合到”另一元件或层时,它能够直接在另一元件或层上、直接连接到或耦合到另一元件或层,或者可以存在一个或更多个中间元件或层。另外,还将理解,当一个元件或层被称为“介于”两个元件或层“之间”时,它可以是介于两个元件或层之间的唯一元件或层,或者还可以存在一个或更多个中间元件或层。
本文使用的术语是为了描述特定实施例并且不旨在限制本公开。除非上下文另外清楚地指示,否则如本文所使用的单数形式“一”和“一个”旨在也包括复数形式。将进一步理解,当术语“包括”、“包含”、和“具有”用在本说明书中时,指明存在所陈述的特征、整体、步骤、操作、元件和/或组件,但是不排除存在或添加一个或更多个其他特征、整体、步骤、操作、元件、组件和/或他们的组。如本文所使用的,术语“和/或”包括一个或更多个相关所列项的任何和所有组合。例如,表述“A和/或B”表示A、B、或者A和B。诸如“…中至少一者”的表述当在元素的列表之后时,修饰整个列表的元素,而不修饰列表的个别元素。例如,表述“a、b或c中的至少一者”指示:仅a,仅b,仅c,a和b两者,a和c两者,b和c两者,a、b和c中的全部,或其变化。
如本文所使用的,术语“大体上”、“约”和类似术语被用作近似的术语,而不用作程度的术语,并且旨在说明将由本领域的普通技术人员所认识的测量值或计算值中的固有变化。此外,在描述本公开的实施例时使用“可以”是指“本公开的一个或更多个实施例”。如本文所使用的,术语“使用”可以被认为与术语“利用”同义。
根据本文描述的本公开的实施例的电子装置或电装置和/或任何其他相关装置或组件可以利用任何合适的硬件、固件(例如,专用集成电路)、软件、或者软件、固件和硬件的组合来实现。例如,这些装置的各种组件可以形成在一个集成电路(IC)芯片上或在单独IC芯片上。此外,这些装置的各种组件可以被实现在柔性印刷电路膜、载带封装件(TCP)、印刷电路板(PCB)上,或者形成在一个基板上。此外,这些装置的各种组件可以是在一个或更多个计算装置中执行计算机程序指令并且与其他系统组件交互以便执行本文描述的各种功能的一个或更多个处理器上运行的进程或线程。计算机程序指令被存储在存储器中,存储器可以使用诸如例如随机存取存储器(RAM)的标准存储器装置被实现在计算装置中。计算机程序指令也可以被存储在诸如例如CD-ROM、闪存驱动器等的其他非暂时性计算机可读介质中。另外,本领域的技术人员应当认识到,在不脱离本公开的示例实施例的精神和范围的情况下,各种计算装置的功能可以被组合或集成到单个计算装置中,或者特定计算装置的功能可以分布在一个或更多个其他计算装置上。
除非另外定义,否则本文使用的所有术语(包括技术术语和科学术语)具有与本公开所属领域的普通技术人员通常理解的含义相同的含义。将进一步理解,除非本文明确地如此定义,否则术语(诸如,常用词典中定义的术语)应当被解释为具有与其在相关技术和/或本说明书的上下文中的含义一致的含义,而不应当在理想化或过于正式意义上进行解释。
尽管已经描述了一些示例实施例,但是本领域的技术人员将容易地理解,在不脱离本公开的精神和范围的情况下,各种修改在示例实施例中是可行的。将理解,除非另外描述,否则每个实施例内的特征或方面的描述通常应当被认为可用于其他实施例中的其他类似的特征或方面。因此,如对本领域的普通技术人员而言将明显的,除非另外具体地指示,否则结合特定实施例描述的特征、特性和/或元件可以单独地使用,或与结合其他实施例描述的特征、特性和/或元件组合地使用。因此,应当理解,前文是各种示例实施例的图示,而不应被解释为限于本文公开的特定示例实施例,并且对所公开的示例实施例以及其他示例实施例的各种修改旨在被包括在如所附权利要求及其等同形式中定义的本公开的精神和范围内。
Claims (20)
1.一种存储装置,包括:
受保护的存储器,所述受保护的存储器包括一个或更多个日志页面;
非易失性存储器;以及
存储控制器,所述存储控制器包括:
命令取出器,所述命令取出器被配置为:接收包括第一元数据和第二元数据的与数据相关联的数据请求命令,并且在所述非易失性存储器中执行所述数据请求命令;
记录器,所述记录器被配置为:识别所述第二元数据,并且将所述第二元数据记录在所述一个或更多个日志页面中;以及
日志页面取出器/擦除器,所述日志页面取出器/擦除器被配置为:
响应于单独命令,从所述一个或更多个日志页面获取所述第二元数据。
2.根据权利要求1所述的存储装置,其中,所述命令取出器还被配置为:将所述第一元数据与所述数据一起存储在所述非易失性存储器中,并且所述记录器进一步被配置为:单独地将所述第二元数据存储在所述一个或更多个日志页面中。
3.根据权利要求1所述的存储装置,其中,所述受保护的存储器是电池支持的动态随机存取存储器。
4.根据权利要求1所述的存储装置,其中,所述受保护的存储器是连接到保护电容器的动态随机存取存储器。
5.根据权利要求1所述的存储装置,还包括日志冲刷器,所述日志冲刷器被配置为:
将所述一个或更多个日志页面从所述受保护的存储器转移到所述非易失性存储器;以及
将日志页面从所述非易失性存储器转移到所述受保护的存储器。
6.根据权利要求5所述的存储装置,其中,所述日志冲刷器进一步被配置为:响应于所述受保护的存储器超过存储器阈值或掉电,将所述一个或更多个日志页面从所述受保护的存储器转移到所述非易失性存储器。
7.根据权利要求1所述的存储装置,其中,所述记录器还被配置为:暴露用于管理所述一个或更多个日志页面的应用编程接口。
8.根据权利要求7所述的存储装置,其中,所述应用编程接口包括以下至少一者:用于向请求器提供可用记录器的列表的列表记录器命令、用于在所述受保护的存储器中添加新记录器的写入记录器命令、以及用于选择记录器的选择记录器命令。
9.根据权利要求1所述的存储装置,其中,所述单独命令包括以下至少一者:用于返回所述一个或更多个日志页面当中的日志页面的取出命令、用于擦除所述一个或更多个日志页面当中的日志页面的擦除命令、以及用于返回所述一个或更多个日志页面当中的一系列日志页面的迭代命令。
10.一种存储系统,包括:
一个或更多个处理电路;以及
存储装置,所述存储装置可通信地连接到所述一个或更多个处理电路,并且所述存储装置包括:
受保护的存储器,所述受保护的存储器包括一个或更多个日志页面;
非易失性存储器;以及
存储控制器,所述存储控制器被配置为:
接收要在所述非易失性存储器中执行的数据请求命令;
识别与所述数据请求命令一起包括的元数据;
将所述元数据记录在所述一个或更多个日志页面中;
从所述一个或更多个处理电路当中的请求器接收单独命令;以及
响应于所述单独命令,从所述一个或更多个日志页面获取所述元数据。
11.根据权利要求10所述的存储系统,其中,所述存储控制器还被配置为:
将所述一个或更多个日志页面从所述受保护的存储器转移到所述非易失性存储器;以及
将日志页面从所述非易失性存储器转移到所述受保护的存储器。
12.根据权利要求11所述的存储系统,其中,所述存储控制器进一步被配置为:响应于所述受保护的存储器超过存储器阈值或掉电,将所述一个或更多个日志页面从所述受保护的存储器转移到所述非易失性存储器。
13.根据权利要求10所述的存储系统,其中,所述存储控制器包括应用编程接口,所述应用编程接口用于使得所述一个或更多个处理电路能够管理所述一个或更多个日志页面。
14.根据权利要求13所述的存储系统,其中,所述应用编程接口包括以下至少一者:用于向所述请求器提供可用记录器的列表的列表记录器命令、用于在所述受保护的存储器中添加新记录器的写入记录器命令、以及用于选择记录器的选择记录器命令。
15.根据权利要求10所述的存储系统,其中,所述单独命令包括以下至少一者:用于向所述请求器返回所述一个或更多个日志页面当中的日志页面的取出命令、用于擦除所述一个或更多个日志页面当中的日志页面的擦除命令、以及用于返回所述一个或更多个日志页面当中的一系列日志页面的迭代命令。
16.一种管理元数据的方法,包括:
接收要在非易失性存储器中执行的数据请求命令;
确定与所述数据请求命令一起包括的元数据;
将所述元数据记录在受保护的存储器中的一个或更多个日志页面中;
接收单独命令;以及
响应于所述单独命令,从所述一个或更多个日志页面获取所述元数据。
17.根据权利要求16所述的方法,还包括:
将所述一个或更多个日志页面从所述受保护的存储器转移到所述非易失性存储器;以及
将日志页面从所述非易失性存储器转移到所述受保护的存储器。
18.根据权利要求17所述的方法,其中,将所述一个或更多个日志页面从所述受保护的存储器转移到所述非易失性存储器包括:
确定所述受保护的存储器是否超过存储器阈值;以及
响应于所述存储器阈值被超过,将所述一个或更多个日志页面从所述受保护的存储器转移到所述非易失性存储器。
19.根据权利要求17所述的方法,其中,将所述一个或更多个日志页面从所述受保护的存储器转移到所述非易失性存储器包括:
确定所述受保护的存储器是否丢失电力或减少电力;以及
响应于所述丢失电力或减少电力,将所述一个或更多个日志页面从所述受保护的存储器转移到所述非易失性存储器。
20.根据权利要求16所述的方法,其中,所述单独命令包括以下至少一者:用于返回所述一个或更多个日志页面当中的日志页面的取出命令、用于擦除所述一个或更多个日志页面当中的日志页面的擦除命令、以及用于返回所述一个或更多个日志页面当中的一系列日志页面的迭代命令。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US202163186586P | 2021-05-10 | 2021-05-10 | |
US63/186,586 | 2021-05-10 | ||
US17/366,584 | 2021-07-02 | ||
US17/366,584 US11947839B2 (en) | 2021-05-10 | 2021-07-02 | Storage device, system, and method for customizable metadata |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115328389A true CN115328389A (zh) | 2022-11-11 |
Family
ID=81850846
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210411019.XA Pending CN115328389A (zh) | 2021-05-10 | 2022-04-19 | 用于可定制元数据的存储装置、系统和方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US11947839B2 (zh) |
EP (1) | EP4089547A1 (zh) |
KR (1) | KR20220152936A (zh) |
CN (1) | CN115328389A (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11899585B2 (en) | 2021-12-24 | 2024-02-13 | Western Digital Technologies, Inc. | In-kernel caching for distributed cache |
US11934663B2 (en) * | 2022-01-10 | 2024-03-19 | Western Digital Technologies, Inc. | Computational acceleration for distributed cache |
US11797379B2 (en) | 2022-02-04 | 2023-10-24 | Western Digital Technologies, Inc. | Error detection and data recovery for distributed cache |
US20240126438A1 (en) * | 2022-10-18 | 2024-04-18 | Qualcomm Incorporated | Metadata registers for a memory device |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140040698A1 (en) * | 2012-08-06 | 2014-02-06 | Advanced Micro Devices, Inc. | Stacked memory device with metadata mangement |
CN105122241A (zh) * | 2013-03-15 | 2015-12-02 | 亚马逊科技公司 | 具有数据库引擎和独立分布式存储服务的数据库系统 |
US20160071605A1 (en) * | 2014-09-08 | 2016-03-10 | Micron Technology, Inc. | Concurrently reading first and second pages of memory cells having different page addresses |
US20190102088A1 (en) * | 2017-09-29 | 2019-04-04 | Intel Corporation | Method and apparatus for reducing silent data errors in non-volatile memory systems |
US20190138468A1 (en) * | 2019-01-08 | 2019-05-09 | Intel Corporation | Using transfer buffer to handle host read collisions in ssd |
US20190294363A1 (en) * | 2018-03-21 | 2019-09-26 | Micron Technology, Inc. | Hybrid memory system |
US20210073139A1 (en) * | 2019-09-06 | 2021-03-11 | Micron Technology, Inc. | Logical-to-physical (l2p) table sharding strategy |
Family Cites Families (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5754888A (en) | 1996-01-18 | 1998-05-19 | The Board Of Governors For Higher Education, State Of Rhode Island And Providence Plantations | System for destaging data during idle time by transferring to destage buffer, marking segment blank , reodering data in buffer, and transferring to beginning of segment |
KR100389867B1 (ko) | 2001-06-04 | 2003-07-04 | 삼성전자주식회사 | 플래시 메모리 관리방법 |
US20060206538A1 (en) | 2005-03-09 | 2006-09-14 | Veazey Judson E | System for performing log writes in a database management system |
US8402205B2 (en) | 2010-03-18 | 2013-03-19 | Seagate Technology Llc | Multi-tiered metadata scheme for a data storage array |
US10949415B2 (en) | 2011-03-31 | 2021-03-16 | International Business Machines Corporation | Logging system using persistent memory |
US9977612B1 (en) | 2012-05-11 | 2018-05-22 | Western Digital Technologies, Inc. | System data management using garbage collection and logs |
US9225675B2 (en) * | 2012-08-08 | 2015-12-29 | Amazon Technologies, Inc. | Data storage application programming interface |
KR20150132101A (ko) | 2013-03-15 | 2015-11-25 | 휴렛-팩커드 디벨롭먼트 컴퍼니, 엘.피. | 확장 기입을 지원하는 메모리 모듈 제어기 |
US10073630B2 (en) | 2013-11-08 | 2018-09-11 | Sandisk Technologies Llc | Systems and methods for log coordination |
CN104919426A (zh) | 2013-12-02 | 2015-09-16 | 华为技术有限公司 | 数据处理设备和数据处理的方法 |
US9747174B2 (en) | 2015-12-11 | 2017-08-29 | Microsoft Technology Licensing, Llc | Tail of logs in persistent main memory |
US10540102B2 (en) | 2016-09-30 | 2020-01-21 | Amazon Technologies, Inc. | Physical media aware spacially coupled journaling and replay |
CN108182154A (zh) | 2017-12-22 | 2018-06-19 | 深圳大普微电子科技有限公司 | 一种基于固态硬盘的日志文件的读写方法及固态硬盘 |
KR102085272B1 (ko) | 2018-06-14 | 2020-03-05 | 연세대학교 산학협력단 | 비휘발성 메모리를 이용한 인메모리 데이터베이스의 데이터 처리 방법 및 인메모리 데이터베이스 |
US10884920B2 (en) | 2018-08-14 | 2021-01-05 | Western Digital Technologies, Inc. | Metadata-based operations for use with solid state devices |
KR102553261B1 (ko) | 2018-10-10 | 2023-07-07 | 삼성전자 주식회사 | 메모리 컨트롤러, 상기 메모리 컨트롤러를 포함하는 스토리지 장치, 및 상기 메모리 컨트롤러의 동작 방법 |
US11301369B2 (en) | 2019-01-24 | 2022-04-12 | Western Digital Technologies, Inc. | Logical to physical mapping management using low-latency non-volatile memory |
-
2021
- 2021-07-02 US US17/366,584 patent/US11947839B2/en active Active
-
2022
- 2022-04-19 CN CN202210411019.XA patent/CN115328389A/zh active Pending
- 2022-04-28 KR KR1020220052947A patent/KR20220152936A/ko unknown
- 2022-05-06 EP EP22172011.3A patent/EP4089547A1/en active Pending
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140040698A1 (en) * | 2012-08-06 | 2014-02-06 | Advanced Micro Devices, Inc. | Stacked memory device with metadata mangement |
CN105122241A (zh) * | 2013-03-15 | 2015-12-02 | 亚马逊科技公司 | 具有数据库引擎和独立分布式存储服务的数据库系统 |
US20160071605A1 (en) * | 2014-09-08 | 2016-03-10 | Micron Technology, Inc. | Concurrently reading first and second pages of memory cells having different page addresses |
US20190102088A1 (en) * | 2017-09-29 | 2019-04-04 | Intel Corporation | Method and apparatus for reducing silent data errors in non-volatile memory systems |
US20190294363A1 (en) * | 2018-03-21 | 2019-09-26 | Micron Technology, Inc. | Hybrid memory system |
US20190138468A1 (en) * | 2019-01-08 | 2019-05-09 | Intel Corporation | Using transfer buffer to handle host read collisions in ssd |
US20210073139A1 (en) * | 2019-09-06 | 2021-03-11 | Micron Technology, Inc. | Logical-to-physical (l2p) table sharding strategy |
Non-Patent Citations (1)
Title |
---|
WEI, QINGSONG 等: "Extending SSD Lifetime with Persistent In- Memory Metadata Management", 2016 IEEE INTERNATIONAL CONFERENCE ON CLUSTER COMPUTING, 31 December 2016 (2016-12-31) * |
Also Published As
Publication number | Publication date |
---|---|
US11947839B2 (en) | 2024-04-02 |
EP4089547A1 (en) | 2022-11-16 |
KR20220152936A (ko) | 2022-11-17 |
US20220357886A1 (en) | 2022-11-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11947839B2 (en) | Storage device, system, and method for customizable metadata | |
US10380014B2 (en) | Address translation for a non-volatile memory storage device | |
US10678768B2 (en) | Logical band-based key-value storage structure | |
EP3036642B1 (en) | Hardware managed compressed cache | |
US11307931B1 (en) | Using zones to manage capacity reduction due to storage device failure | |
US12001359B2 (en) | Identification and classification of write stream priority | |
US20210320592A1 (en) | Address Translation for Storage Device | |
US10296250B2 (en) | Method and apparatus for improving performance of sequential logging in a storage device | |
US20150039815A1 (en) | System and method for interfacing between storage device and host | |
US11200159B2 (en) | System and method for facilitating efficient utilization of NAND flash memory | |
EP3926451A1 (en) | Communication of data relocation information by storage device to host to improve system performance | |
US11520500B2 (en) | Managing capacity reduction when downshifting multi-level memory cells | |
US11630595B2 (en) | Methods and systems of efficiently storing data | |
CN107577492A (zh) | 加速文件系统读写的nvm块设备驱动方法及系统 | |
US10649909B2 (en) | Logical block addressing range collision crawler | |
US11650881B2 (en) | Managing storage reduction and reuse in the presence of storage device failures | |
US11487465B2 (en) | Method and system for a local storage engine collaborating with a solid state drive controller | |
US11733884B2 (en) | Managing storage reduction and reuse with failing multi-level memory cells | |
US11520656B2 (en) | Managing capacity reduction and recovery due to storage device failure | |
CN116136739A (zh) | 用于改善存储装置的数据输入/输出性能的设备和方法 | |
US11892909B2 (en) | Managing capacity reduction due to storage device failure | |
EP4386557A1 (en) | Method and device for log structured merge-tree based key-value data storage |
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 |