CN113126910A - 存储设备及其操作方法 - Google Patents
存储设备及其操作方法 Download PDFInfo
- Publication number
- CN113126910A CN113126910A CN202110051502.7A CN202110051502A CN113126910A CN 113126910 A CN113126910 A CN 113126910A CN 202110051502 A CN202110051502 A CN 202110051502A CN 113126910 A CN113126910 A CN 113126910A
- Authority
- CN
- China
- Prior art keywords
- key
- command
- value
- storage device
- internal
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/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
- 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
- G06F3/0622—Securing storage systems in relation to access
-
- 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
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
- G06F13/1673—Details of memory controller using buffers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
-
- 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
-
- 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/0626—Reducing size or complexity 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/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/0026—PCI express
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)
- Databases & Information Systems (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
一种包括非易失性存储器件的存储设备的操作方法,包括:从外部主机设备接收包括第一键的第一键‑值(KV)命令;响应于第一KV命令,从非易失性存储器件向外部主机设备发送与第一键相对应的第一值,作为第一用户数据;从外部主机设备接收包括第二键的第二KV命令;以及响应于第二KV命令,基于与第二键相对应的第二值执行第一管理操作。所述第一KV命令和所述第二KV命令是同一类型的KV命令。
Description
相关申请的交叉引用
本申请要求于2020年1月15日在韩国知识产权局递交的韩国专利申请No.10-2020-0005368的优先权,该申请的全部公开内容通过引用合并于此。
技术领域
本文中所描述的本公开的实施例涉及半导体存储器,并且更具体地,涉及存储设备及其操作方法。
背景技术
半导体存储器件被分类为易失性存储器件(例如,静态随机存取存储器(SRAM)或动态随机存取存储器(DRAM))或非易失性存储器件(例如,闪存设备、相变RAM(PRAM)、磁RAM(MRAM)、电阻RAM(RRAM)或铁电RAM(FRAM)),其中在易失性存储器件中,当电源关闭时,存储的数据消失,并且在非易失性存储器件中,即使当电源关闭时,存储的数据也得以保留。
基于闪存的固态驱动器(SSD)被广泛用作高容量存储介质。通常,SSD通过给定的接口与主机通信。在这种情况下,主机可以执行用于从SSD获得各种信息的各种管理操作。为了执行该管理操作,主机可以使用由给定的接口定义的各种命令。然而,由于从SSD提供了各种信息,因此需要由给定的接口定义各种命令,从而使接口的配置复杂化。
发明内容
本公开的实施例提供了一种具有改善的性能和降低的成本的存储设备及其操作方法。
根据示例性实施例,一种包括非易失性存储器件的存储设备的操作方法,包括:从外部主机设备接收包括第一键的第一键-值(KV)命令;响应于第一KV命令,从非易失性存储器件向外部主机设备发送与第一键相对应的第一值,作为第一用户数据;从外部主机设备接收包括第二键的第二KV命令;以及响应于第二KV命令,基于与第二键相对应的第二值执行第一管理(在本文中被简写为“admin”)操作。所述第一KV命令和所述第二KV命令是相同类型的KV命令。
根据示例性实施例,一种存储设备,包括:非易失性存储器件,存储包括与用户键相对应的第一值的用户键-值对;以及存储控制器,控制该非易失性存储器件。所述存储控制器包括存储器件,该存储器件存储内部键-值对,该内部键-值对包括与内部键相对应的第二值及键索引,该键索引包括与用户键、内部键及第一值和第二值的位置相关的信息。键-值(KV)管理器响应于第一KV命令而基于键索引来确定包括在来自外部主机设备的第一键-值(KV)命令中的键是内部键还是用户键;当键为用户键时,将第一值发送到外部主机设备;以及当键是内部键时,执行与第二值对应的第一admin操作。
根据示例性实施例,一种包括非易失性存储器件的存储设备的操作方法,包括:从外部主机设备接收包括第一键的第一键值(KV)命令;确定第一键是内部键还是用户键;以及当第一键是用户键时,对存储在非易失性存储器件中的用户数据执行第一输入/输出操作,并当第一键是内部键时,执行针对存储设备的第一admin操作。
根据示例性实施例,一种被配置为控制存储设备的主机的操作方法,包括:向存储设备发送第一键-值(KV)命令;从所述存储设备接收关于内部KV对的信息,所述内部KV对包括与至少一个内部键和至少一个值相关的信息;基于内部KV对,向存储设备发送包括该至少一个内部键之中的第一内部键的第二KV命令;响应于第二KV命令,从存储设备接收第一设备信息,该第一设备信息与该至少一个值之中的对应于第一内部键的第一值相对应;向存储设备发送包括第一用户键的第三KV命令;以及响应于第三KV命令,从存储设备接收与第一用户键相对应的第一用户数据。
根据示例性实施例,一种被配置为控制存储设备的主机的操作方法,包括:向存储设备发送包括与第一admin命令相对应的第一内部键的第一KV命令,并且基于第一KV命令来执行存储设备的第一admin操作;向存储设备发送包括与第二admin命令相对应的第二内部键的第二KV命令,并基于第二KV命令来执行存储设备的第二admin操作;向存储设备发送包括与第一用户数据相对应的第一用户键的第三KV命令,并基于第三KV命令从存储设备读取第一用户数据;以及向存储设备发送包括与第二用户数据相对应的第二用户键和与第二用户数据相对应的第二值的第四KV命令,并基于第四KV命令将第二用户数据存储在存储设备中。第一KV命令至第四KV命令中的至少两个是同一类型的KV命令。
根据示例性实施例,一种包括主机设备和存储设备的存储系统的操作方法,包括:在主机设备处向存储设备发送包括第一用户键的第一键-值(KV)命令;响应于第一KV命令,在存储设备处向主机设备发送与第一用户键相对应的第一值,作为第一用户数据;在主机设备处向存储设备发送包括第一内部键的第二KV命令;以及响应于第二KV命令,在存储设备处执行第一admin操作,该第一admin操作与对应于第一内部键的第二值相对应。所述第一KV命令和所述第二KV命令是同一类型的KV命令。
附图说明
通过参考附图详细地描述本公开的示例性实施例,本公开的以上和其他目的及特征将变得清楚明白。
图1是示出了根据本公开的实施例的存储系统的框图。
图2是示出了图1的存储控制器的框图。
图3A是用于描述基于块的存储系统的分层结构的示图。
图3B是用于描述图3A的基于块的存储系统的操作的流程图。
图4A是示出了图1的存储系统的分层结构的框图。
图4B是示出了图1和图4A的存储系统的操作的流程图。
图5是用于描述图1的键索引、内部KV对和用户KV对的示图。
图6是示出了图1的存储设备的初始操作的流程图。
图7是用于描述根据图6的流程图的初始操作的框图。
图8是示出了图1的存储设备的操作的流程图。
图9A至图9E是用于详细描述根据图8的流程图的操作的示图。
图10是示出了图1的存储系统的操作的流程图。
图11A至图11E是用于描述根据图10的流程图的操作的示图。
图12是示出了图1的存储系统的操作的流程图。
图13是示出了图1的存储设备的操作的流程图。
图14是示出了图1的存储设备的操作的流程图。
图15A至图15E是用于描述根据图14的流程图的操作的示图。
图16是示出了用于存储图15E的日志数据的内部数据结构的示图。
图17是示出了图1的存储设备的操作的流程图。
图18是示出了根据本公开的实施例的存储系统的框图。
图19是示出了根据本公开的实施例的存储系统的框图。
图20是示出了应用根据本公开实施例的存储系统的数据中心的框图。
具体实施方式
下面可以以使本领域普通技术人员容易实现本公开的程度详细并清楚地描述本公开的实施例。
图1是示出了根据本公开的实施例的存储系统的框图。参考图1,存储系统100可以包括主机110和存储设备120。存储系统100可以包括各种信息处理设备中的至少一种,诸如个人计算机、膝上型计算机、服务器、工作站、智能电话、平板PC等。
主机110可以将数据“DATA”存储在存储设备120中,或者可以读取存储在存储设备120中的数据“DATA”。在示例性实施例中,存储设备120可以是键-值存储设备。也就是说,主机110可以基于键-值对来控制存储设备120。
例如,在常规的基于块的存储系统中,主机通过使用逻辑块地址来管理存储设备的存储空间并基于逻辑块地址来控制存储设备。也就是说,在基于块的存储系统中,主机基于具有固定长度的逻辑块地址来控制存储设备。
相反,根据本公开的实施例的主机110可以通过使用键-值命令CMD_KV(以下称为“KV命令”)来控制存储设备120。KV命令CMD_KV可以包括与键或值相对应的信息。在示例性实施例中,与常规的逻辑块地址不同,从主机110提供的键可以具有可变大小。在示例性实施例中,键-值对可以是诸如NoSQL数据库的数据库所支持的数据管理结构,并且KV命令可以指示诸如NoSQL数据库的数据库所支持的命令类型。
在示例性实施例中,KV命令CMD_KV的配置可以与常规的接口(例如,PCIe、NVMe、SATA、IDE、UFS和eMMC)所定义的命令不同。在示例性实施例中,KV命令CMD_KV可以与类型(例如,GET、PUT、DEL和LIST)中的应用层中所使用的命令相同或相似。下面,将参考附图更全面地描述KV命令CMD_KV的配置和结构。
响应于来自主机110的KV命令CMD_KV,存储设备120可以存储数据“DATA”或可以输出所存储的数据“DATA”。例如,存储设备120可以包括存储控制器121和非易失性存储器件122。非易失性存储器件122可以包括用户键-值(KV)对KVPR-user。用户KV对KVPR-user可以指示包括用户数据或其中存储用户数据的存储空间的数据结构。将参考图5更全面地描述用户KV对KVPR-user。
响应于从主机110接收的KV命令CMD_KV,存储控制器121可以从非易失性存储器件122的用户KV对KVPR-user中输出与包括在KV命令CMD_KV中的键相对应的数据,或者可以将包括在KV命令CMD_KV中的值存储在非易失性存储器件122的用户KV对KVPR-user中。
例如,存储控制器121可以包括键索引IDX和键-值(KV)管理器121a。键索引IDX可以包括关于以下项的信息:在存储设备120处管理的键和存储与键相对应的信息或数据的位置之间的关系。将参考图5更详细地描述键索引IDX。
KV管理器121a可以基于键索引IDX来搜索与从主机110接收的KV命令CMD_KV的键相对应的数据的位置。KV管理器121a可以从找到的位置读取数据,并且可以发送读取到的数据“DATA”。备选地,KV管理器121a可以分配与从主机110接收的KV命令CMD_KV的键相对应的数据的位置,并且可以将包括在KV命令CMD_KV中的值存储在所分配的位置处作为用户数据。KV管理器121a可以基于所分配的位置和键来更新键索引IDX。
如上所述,存储系统100的主机110和存储设备120可以基于键-值对进行操作。在示例性实施例中,存储设备120的存储控制器121还可以包括内部KV对KVPR-int。内部KV对KVPR-int可以指示由存储设备120自动管理的键-值对。内部KV对KVPR-int可以包括与存储设备120所支持的各种操作或各种管理(在本文中被简写为“admin”)操作相关的信息。主机110可以访问内部KV对KVPR-int,并且可以控制存储设备120的各种admin操作。
例如,在常规的基于NVMe的存储系统中,主机通过使用由NVMe规范定义的得到日志页(Get Log Page)命令来读取存储设备的智能信息。相反,根据本公开的实施例,存储控制器121的内部KV对KVPR-int可以包括用于得到日志页命令的信息(特别是,智能/健康(SMART/HEALTH)信息)。在这种情况下,主机110可以通过向存储设备120发送包括与得到日志页命令(例如,用于读取智能/健康的命令)相对应的键(或者,内部键)的KV命令CMD_KV,从存储设备120获得智能信息。也就是说,常规的存储系统需要定义分别与存储设备的各种admin操作相关联的单独的命令,以支持admin操作。然而,在根据本公开的实施例的存储系统100中,在没有针对admin操作定义单独的命令的情况下,主机110可以通过访问由存储设备120内部或自主地管理的内部KV对KVPR-int来执行admin操作。
如上所述,根据本公开的实施例,在没有针对各种admin操作定义单独的命令的情况下,主机110可以通过使用KV命令CMD_KV来访问存储设备120,或者可以通过使用KV命令CMD_KV对存储设备120执行admin操作。因此,简化了主机110与存储设备120之间的接口,因此提供了具有提高的性能和降低的成本的存储系统。
图2是示出了图1的存储控制器的框图。参考图1和图2,存储控制器121可以包括KV管理器121a、处理器121b、存储器件121c、内部控制模块121d、主机接口电路121e和闪存接口电路121f。参考图1描述了KV管理器121a,因此将省略附加描述以避免冗余。
处理器121b可以控制存储控制器121的整体操作。存储器件121c可以用作存储控制器121的缓冲存储器、高速缓冲存储器或工作存储器。在示例性实施例中,存储器件121c可以包括诸如静态随机存取存储器(SRAM)或动态RAM(DRAM)的易失性存储器,或者诸如闪存、磁RAM(MRAM)、电阻RAM(RRAM)或相变RAM(PRAM)的非易失性存储器。
在示例性实施例中,键索引IDX和内部KV对KVPR-int可以存储在存储器件121c中。示出了示例,其中键索引IDX和内部KV对KVPR-int存储在存储控制器121内部的存储器件121c中,但是本公开不限于此。例如,键索引IDX和内部KV对KVPR-int可以存储在存储控制器121外部的缓冲存储器(未示出)(例如,DRAM)中。
内部控制模块121d可以被配置为控制存储控制器121的内部操作或admin操作。例如,内部控制模块121d可以被配置为:响应于包括特定键(例如,内部键)且从主机110提供的KV命令CMD_KV,对存储设备120或存储控制器121执行各种admin操作(例如,日志信息admin操作和特征信息admin操作)。
存储控制器121可以被配置为通过主机接口电路121e与主机110通信。可以基于给定的接口协议来实现主机接口电路121e。在示例性实施例中,给定的接口协议可以包括各种接口协议中的至少一种,诸如外围组件互连快速(PCI-express)接口、非易失性存储器快速(NVMe)接口、串行ATA(SATA)接口、串行附接SCSI(SAS)接口和通用闪存(UFS)接口,但是本公开不限于此。在示例性实施例中,可以基于键-值(KV)接口来实现主机接口电路121e。KV接口可以是被配置为支持诸如GET、PUT、DEL或LIST的KV命令的接口。
存储控制器121可以通过闪存接口电路121f与非易失性存储器件122通信。在示例性实施例中,可以基于NAND接口、Toggle接口或开放NAND闪存接口(ONFI)来实现闪存接口电路121f。在示例性实施例中,闪存接口电路121f可以包括闪存控制器(未示出)(FMC),其被配置为独立地控制包括在非易失性存储器件122中的多个非易失性存储器。
在示例性实施例中,当基于Toggle接口来实现闪存接口电路121f时,闪存接口电路121f可以通过多个信号线连接到非易失性存储器件122。多个信号线可以包括用于芯片启用信号/CE、命令锁存启用信号CLE、地址锁存启用信号ALE、写入启用信号/WE、读取启用信号/RE、数据信号DQx和数据存储信号DQS。
【表1】
/CE | CLE | ALE | /WE | /RE | DQS | DQx | 模式 |
L | H | L | ↑ | H | X | CMD | 命令输入 |
L | L | H | ↑ | H | X | ADDR | 地址输入 |
L | L | L | H | H | ↑↓ | DATA_in | 数据输入 |
L | L | L | H | ↑↓ | ↑↓ | DATA_out | 数据输出 |
表1示出了每种模式的信号线的状态。参考表1,可以响应于具有低电平L的芯片启用信号/CE来启用非易失性存储器件。
在命令输入模式期间,存储控制器121可以控制多个信号线,使得命令锁存启用信号CLE为高电平H,地址锁存启用信号ALE为低电平L,写入启用信号/WE在高电平H与低电平L之间切换,读取启用信号为高电平H,并且命令通过数据信号DQx发送。在命令输入模式期间,非易失性存储器件可以将从存储控制器121接收到的数据信号DQx确定为命令CMD。在示例性实施例中,在命令输入模式期间,存储控制器121可以与写入启用信号/WE的上升沿同步地通过数据信号DQx发送命令CMD,并且非易失性存储器件可以响应于写入启用信号/WE的上升沿而识别或锁存命令CMD。
在地址输入模式期间,存储控制器121可以控制多个信号线,使得命令锁存启用信号CLE为低电平L,地址锁存启用信号ALE为高电平H,写入启用信号/WE在高电平H与低电平L之间切换,读取启用信号为高电平H,并且地址通过数据信号DQx发送。在地址输入模式期间,非易失性存储器件可以将从存储控制器121接收到的数据信号DQx确定为地址ADDR。在示例性实施例中,在地址输入模式期间,存储控制器121可以与写入启用信号/WE的上升沿同步地通过数据信号DQx发送地址ADDR,并且非易失性存储器件可以响应于写入启用信号/WE的上升沿而识别或锁存地址ADDR。在示例性实施例中,可以在写入启用信号/WE的五个周期期间发送地址ADDR,但是本发明构思不限于此。
在数据输入模式期间,存储控制器121可以控制多个信号线,使得命令锁存启用信号CLE和地址锁存启用信号ALE都为低电平L,并且写入启用信号/WE和读取启用信号为高电平H,数据选通信号在高电平H与低电平L之间切换,并且输入数据DATA_in通过数据信号DQx发送。在数据输入模式期间,非易失性存储器件122可以将从存储控制器121接收到的数据信号DQx确定为输入数据DATA_in。在示例性实施例中,在数据输入模式期间,存储控制器121可以与数据选通信号DQS的上升沿和下降沿同步地通过数据信号DQx发送输入数据DATA_in,并且非易失性存储器件可以响应于数据选通信号DQS的上升沿和下降沿而识别或锁存输入数据DATA_in。
在数据输出模式期间,存储控制器121可以控制多个信号线,使得命令锁存启用信号CLE和地址锁存启用信号ALE二者都为低电平L,写入启用信号/WE为高电平H,并且读取启用信号在高电平H与低电平L之间切换。在数据输出模式期间,非易失性存储器件122可以控制多个信号线,使得通过数据信号DQx发送输出数据DATA_out,并且数据选通信号DQS在高电平H与低电平L之间切换。存储控制器121可以将从非易失性存储器件122接收到的数据信号DQx确定为输出数据DATA_out。在示例性实施例中,在数据输出模式期间,非易失性存储器件122可以使用读取启用信号/RE来生成数据选通信号DQS,并且与数据选通信号DQS的上升沿和下降沿同步地通过数据信号DQx发送输出数据DATA_out。存储控制器121可以响应于数据选通信号DQS的上升沿和下降沿而识别或锁存输出数据DATA_out。在示例性实施例中,多个信号线还可以包括用于读取忙碌信号的通信线。非易失性存储器件可以将读取忙碌信号发送到存储控制器121。在示例性实施例中,当非易失性存储器件具有忙碌状态时(例如,非易失性存储器件122正在执行读取操作、编程操作或擦除操作),则读取忙碌信号可以指示忙碌状态。当非易失性存储器件具有就绪状态时(例如,非易失性存储设备不执行内部操作),读取忙碌信号可以指示就绪状态。存储控制器可以响应于就绪和忙碌信号而识别非易失性存储器件122是处于忙碌状态还是就绪状态。
在示例性实施例中,存储控制器121还可以包括纠错码(ECC)引擎121g和高级加密标准(AES)引擎121h。ECC引擎121g可以对从非易失性存储器件122读取到的数据执行错误检测操作或错误校正操作。例如,ECC引擎121g可以生成用于将要存储到非易失性存储器件122中的写入数据的奇偶校验比特。所生成的奇偶校验比特可以与写入数据一起存储在非易失性存储器件122中。在对存储在非易失性存储器件122中的写入数据的读取操作处,ECC引擎121g可以使用读取数据和对应的奇偶校验比特来检测或校正读取数据中的错误,以输出错误校正后的数据。
AES引擎121h可以对输入到存储控制器111的数据执行加密操作和解密操作中的至少一个。在示例性实施例中,可以使用对称密钥算法来执行加密操作和解密操作中的至少一个。
在示例性实施例中,可以以软件、硬件或其组合的形式实现KV管理器121a。在以软件的形式实现KV管理器121a的情况下,与KV管理器121a相关联的程序或信息可以存储在存储器件121c中,并且可以由处理器121b驱动或处理。在以硬件的形式实现KV管理器121a的情况下,KV管理器121a可以包括在主机接口电路121e中。然而,本公开不限于此。例如,可以以单独的模块或单独的硬件的形式实现KV管理器121a。
图3A是用于描述基于块的存储系统的分层结构的示图。为了简化说明和便于描述,将省略图3A的组件的附图标记。参考图3A,包括在基于块的存储系统中的主机包括应用层、文件系统和设备驱动器。存储设备可以包括闪存转换层(FTL)和非易失性存储器。应用层可以指示可由主机执行的各种应用。文件系统被配置为组织由应用层生成的各种信息。例如,文件系统可以基于逻辑块地址来管理应用层生成或请求的数据。设备驱动器可以被配置为基于文件系统所管理的逻辑块地址来生成要向存储设备发送的请求或命令或处理从存储设备接收的请求或命令。备选地,设备驱动器可以被配置为响应于应用层的请求而生成用于要由存储设备执行的各种admin操作的命令。闪存转换层可以被配置为将从设备驱动器提供的命令的逻辑块地址转换为非易失性存储器件的物理地址,并且管理逻辑块地址与物理地址之间的映射信息。
图3B是用于描述图3A的基于块的存储系统的操作的流程图。参考图3A和图3B,对于读取操作,在操作S1中,主机将第一输入/输出(I/O)命令发送到存储设备。第一输入/输出命令包括指示命令类型为“读取”的信息和关于逻辑块地址的信息。在操作S2中,存储设备响应于如此接收的第一输入/输出命令而将与逻辑块地址相对应的用户数据发送到主机。
接下来,对于写入操作,在操作S3中,主机将第二输入/输出命令发送到存储设备。第二输入/输出命令包括指示命令类型为“写入”的信息、关于逻辑块地址的信息、以及要写入的用户数据。响应于第二输入/输出命令,存储设备可以分配与逻辑块地址相对应的物理地址,并且可以在与所分配的物理地址相对应的区域中写入用户数据。
然后,对于特定的admin操作(例如,用于获得智能/健康信息的admin操作),在操作S4中,主机将“得到日志页”命令发送到存储设备。在这种情况下,“得到日志页”命令可以包括日志标识符“0x2h”。日志标识符“0x2h”可以是与智能/健康信息相对应的日志标识符。在操作S5中,存储设备可以响应于得到日志页命令向主机发送智能/健康信息。
之后,对于特定的admin操作(例如,用于设置易失性写入高速缓存启用的admin操作),在操作S6中,主机可以向存储设备发送设置特征命令。在这种情况下,设置特征命令可以包括特征标识符“0x6”和关于易失性写入高速缓存启用的信息。存储设备可以响应于设置特征命令而设置与易失性写入高速缓存启用相关联的特征。
如上所述,在常规的基于块的存储系统中,主机基于逻辑块地址来管理存储设备或数据,并且存储设备将逻辑块地址转换为物理地址并管理转换的结果。另外,在常规的基于块的存储系统中,主机通过使用预定义的命令对存储设备执行各种admin操作。
图4A是示出了图1的存储系统的分层结构的框图。参考图1和图4A,存储系统100可以包括主机110和存储设备120。
主机110可以包括应用层111和设备驱动器112。应用层111可以包括由主机110驱动的各种应用程序。
应用层111可以在驱动各种应用程序的过程中发布应用命令CMD_APP。设备驱动器112可以将来自应用层111的应用命令CMD_APP转换成KV命令CMD_KV。例如,设备驱动器112可以将来自应用层111的应用命令CMD_APP转换成GET、PUT、DEL或LIST的形式的KV命令CMD_KV。转换后的KV命令CMD_KV可以被发送到存储设备120。
在示例性实施例中,在应用层111基于键-值对进行操作的情况下,应用层111可以生成KV命令CMD_KV。在这种情况下,来自应用层111的KV命令CMD_KV可以直接地或通过给定的接口协议被发送给存储设备120,而无需单独的转换。
在示例性实施例中,KV命令CMD_KV可以是GET、PUT、DEL和LIST命令之一。GET命令可以具有包括键的GET[Key]的结构,并且可以用于从存储设备120读取与该键相对应的值(例如,数据或信息)。PUT命令可以具有包括键和值的PUT[Key,Value]的结构,并且可以用于写入或存储与该键相对应的值。DEL命令可以具有包括键的DEL[Key]的结构,并且可以用于从存储设备120删除与该键对应的键-值对或值(例如,数据或信息)。LIST命令可以具有包括键的LIST[Key1,Key2]的结构,并且可以用于从存储设备120检查与键Key1和Key2相对应的值(例如,数据或信息)。上述KV命令的种类是示例性的,并且本公开不限于此。
存储设备120可以包括KV管理器121a和非易失性存储器件122。KV管理器121a可以响应于KV命令CMD_KV而基于键索引IDX来搜索与包括在从主机110接收的KV命令CMD_KV中的键相对应的信息。例如,在内部KV对KVPR-int中存在与包括在KV命令CMD_KV中的键相对应的信息的情况下,KV管理器121a可以从内部KV对KVPR-int读取与KV命令CMD_KV的键相对应的信息并可以执行与读取的信息相对应的操作。备选地,在用户KV对KVPR-user中存在与包括在KV命令CMD_KV中的键相对应的信息的情况下,KV管理器121a可以从非易失性存储器件122的用户KV对KVPR-user中读取与KV命令CMD_KV的键相对应的数据,并可以将读取到的数据发送到主机110。
图4B是示出了图1和图4A的存储系统的操作的流程图。以下,为了便于描述,使用术语“内部键iK”、“用户键uK”等。内部键iK可以指示与包括在内部KV对KVPR-int中的信息相对应的键,并且用户键uK可以指示与包括在用户KV对KVPR-user中的用户数据相对应的键。而且,下面使用术语“GET”、“PUT”、“DEL”、“LIST”等。术语“GET”、“PUT”、“DEL”、“LIST”等是用于识别KV命令CMD_KV的类型的术语,并且根据本公开的技术构思的KV命令不限于此。
参考图1、图4A和图4B,对于读取操作,在操作S10中,主机110可以将第一KV命令发送到存储设备120。在这种情况下,第一KV命令可以具有GET[uK1]的结构。命令类型“GET”可以是用于从存储设备120读取数据或信息的命令类型。也就是说,GET[uK1]的KV命令可以是用于读取与第一用户键uK1相对应的用户数据的命令。
在操作S11中,存储设备120可以响应于从主机110接收的GET[uK1],将与第一用户键uK1相对应的用户数据发送到主机110。
接下来,对于写入操作,在操作S20中,主机110可以将第二KV命令发送到存储设备120。在这种情况下,第二KV命令可以具有PUT[uK2,V2]的结构。命令类型“PUT”可以是用于在存储设备120中存储数据或信息的命令类型。也就是说,PUT[uK2,V2]的KV命令可以是用于将第二值V2存储作为与第二用户键uK2相对应的用户数据的命令。响应于PUT[uK2,V2]的KV命令,存储设备120可以将第二值V2作为与第二用户键uK2相对应的用户数据存储在非易失性存储器件122的用户KV对KVPR-user中。在示例性实施例中,在存储操作完成之后,存储设备120可以基于存储第二值V2的位置和第二用户键uK2来更新键索引IDX。
接下来,对于特定的admin操作(例如,用于获得智能/健康信息的admin操作),在操作S30中,主机110可以将第三KV命令发送到存储设备120。在这种情况下,第三KV命令可以具有GET[iK1]的结构。与第一内部键iK1相对应的值可以对应于用于获得智能/健康信息的admin操作的命令(例如,得到日志页)。与第一内部键iK1相对应的值可以存储在内部KV对KVPR-int中。
也就是说,为了执行特定的admin操作,在不使用单独定义的命令的情况下,主机110可以通过使用用于读取用户数据的“GET”的KV命令和与特定的admin操作相对应的内部键(即,第一内部键iK1)来执行特定的admin操作。
在操作S31中,响应于GET[iK1],存储设备120可以执行与特定的admin操作相对应的操作,例如可以发送智能/健康信息。例如,存储设备120可以从内部KV对KVPR-int检查与GET[iK1]的第一内部键iK1相对应的信息(即,与用于获得智能/健康信息的admin操作相对应的命令),并且可以执行与检查到的信息相对应的操作,例如发送智能/健康信息的操作。
接下来,对于另一特定的admin操作(例如,用于设置易失性写入高速缓存启用的admin操作),在操作S40中,主机110可以将第四KV命令发送到存储设备120。在这种情况下,第四KV命令可以具有PUT[iK2,V4]的结构。与第二内部键iK2相对应的值可以对应于用于获得易失性写入高速缓存启用特征的admin操作(例如,设置特征)的命令。与第二内部键iK2相对应的值可以存储在内部KV对KVPR-int中。
响应于PUT[iK2,V4],存储设备120可以执行与第二内部键iK2相对应的admin操作,即,将易失性写入高速缓存启用特征设置为第二值V4的操作。
如上所述,根据本公开的实施例的存储系统100可以基于KV命令CMD_KV对存储设备120执行输入/输出操作和admin操作。
例如,如参考图3A和图3B所描述的,在基于块的存储系统中,必须独立或单独地定义用于输入/输出操作的命令和用于admin操作的命令。相反,根据本公开的实施例的存储系统100可以通过使用集成的KV命令CMD_KV来执行各种操作,而无需单独地定义用于输入/输出操作的命令和用于admin操作的命令。因此,可以简化主机110与存储设备120之间的接口。另外,因为主机110的应用层111能够直接控制存储设备120或仅通过最少的信号转换(例如,通过物理端口的信号转换)就能够控制存储设备120,所以可以简化主机110的分层结构。
图5是用于描述图1的键索引、内部KV对和用户KV对的示图。为了便于描述,省略了对于描述键索引IDX、内部KV对KVPR-int和用户KV对KVPR-user不必要的组件。为了简化说明,图5示出了键索引IDX、内部KV对KVPR-int和用户KV对KVPR-user的部分数据结构,但是本公开不限于此。
参考图1和图5,键索引IDX可以包括关于键组标识符Key Group ID的信息。键组标识符Key Group ID可以用于对键的特征进行分类。例如,第一内部键iK1至第k内部键iKk可以是在存储设备120内管理的键。也就是说,第一内部键iK1至第k内部键iKk可以是对应于与存储设备120相关联的admin操作的键,而与用户数据无关。备选地,与第一内部键iK1至第k内部键iKk相对应的值可以存储在内部KV对KVPR-int中。第0组#0的键组标识符可以分配给第一内部键iK1至第k内部键iKk。
相反,第一用户键uK1至第m用户键uKm可以是与包括在非易失性存储器件122的用户KV对KVPR-user中的用户数据UD1至UD4相对应的键。也就是说,第一用户键uK1至第m用户键uKm可以是由主机110管理的键或分别对应于实际用户数据的键。第一组#1至第m组#m的键组标识符可以分别分配给第一用户键uK1至第m用户键uKm。
在示例性实施例中,从主机110接收的KV命令CMD_KV可以包括与键组标识符和键名相关的信息。也就是说,存储控制器121的KV管理器121a可以基于从主机110接收的KV命令CMD_KV的键组标识符来确定与包括在KV命令CMD_KV中的键名相对应的键是内部键还是用户键。换言之,由于根据是内部键还是用户键而将键组标识符不同地分配给多个键iK1~iKk和uK1~uKm,因此可以确定从主机110接收的KV命令的键是内部键还是用户键。另外,即使内部键和用户键的键名重复,也可以将内部键和用户键彼此区分开。
下面,为了便于描述和简化说明,假设术语“键”、“内部键”或“用户键”或配置包括关于对应的键组标识符的信息。也就是说,内部键可以包括与对应于该内部键的键组标识符和该内部键的键名相关的信息,并且用户键可以包括与对应于该用户键的键组标识符和该用户键的键名相关的信息。然而,本公开不限于此。例如,在内部键和用户键的键名被管理为不重复的情况下,可以省略键组标识符。
键索引IDX可以包括与键名和位置相关的信息。例如,键索引IDX可以包括与键名(例如,iK1至iKk及uK1至uKm)和对应于该键名的位置iLCT1至iLCTk及sLCT1至sLCTm相关的信息。也就是说,第一内部位置iLCT1可以指示存储与第一内部键iK1相对应的值的位置,并且第k内部位置iLCTk可以指示存储与第k内部键iKk相对应的值的位置。第一存储位置sLCT1可以指示存储与第一用户键uK1相对应的值的位置,并且第m存储位置sLCTm可以指示存储与第m用户键uKm相对应的值的位置。
在示例性实施例中,第一内部位置iLCT1至第k内部位置iLCTk可以指示与存储器件121c相关联的存储器地址或位置,并且第一存储位置sLCT1至第m存储位置sLCTm可以指示与非易失性存储器件122相关联的存储器地址、物理地址或逻辑地址。
内部KV对KVPR-int可以包括分别与第一内部键iK1至第k内部键iKk相对应的值。例如,与第一内部键iK1相对应的值可以是与“将标识符设置为错误信息的得到日志页命令”相对应的信息。与第二内部键iK2相对应的值可以是与“将标识符设置为智能/健康信息的得到日志页命令”相对应的信息。同样地,分别与第三内部键iK3至第k内部键iKk相对应的值可以是与如下项相对应的消息:“标识符是FW槽信息的得到日志页命令”、“标识符是仲裁的得到特征命令”、“标识符是电源管理的得到特征命令”、“标识符是LBA范围类型的得到特征命令”和“标识符是易失性写入高速缓存的设置特征命令”。在示例性实施例中,内部KV对KVPR-int可以存储在存储控制器121所包括的存储器件121c中,或者存储在独立于存储控制器121而设置的缓冲存储器(未示出)(例如,DRAM缓冲区)中。
KV管理器121a可以基于内部KV对KVPR-int的信息对存储设备120执行各种admin操作。例如,在从主机110接收GET[iK2]的KV命令CMD_KV的情况下,KV管理器121a可以基于键索引IDX来检查与第二内部键iK2相对应的第二内部位置iLCT2,并且可以从内部KV对KVPR-int检测存储在第二内部位置iLCT2的值(即,标识符为智能/健康信息的得到日志页命令)。KV管理器121a可以响应于检测到的值来执行对应的操作(即,输出智能/健康信息的操作)。
在图5中被示出为内部KV对KVPR-int的示例包括一些admin命令,但是本公开不限于此。内部KV对KVPR-int可以包括用于各种admin操作的admin命令作为内部键的值,或者与分别对应于admin命令的各种字段值相关的信息,这些admin操作诸如中止命令、异步事件请求命令、创建I/O完成队列命令、创建I/O提交队列命令、删除I/O完成队列命令、删除I/O提交队列命令、门铃缓冲区配置命令、设备自测试命令、指令接收命令、指令发送命令、固件提交命令、固件映像下载命令、得到特征命令、得到日志页命令、标识命令、保持活动命令、NVMe-MI接收命令、NVMe-MI发送命令、名称空间附件命令、名称空间管理命令、设置特征命令、虚拟化管理命令、格式命令、清理命令、安全接收命令、安全发送命令和得到LBA状态命令。
用户KV对KVPR-user可以包括分别与第一用户键uK1至第m用户键uKm相对应的值。例如,与第一用户键uK1相对应的值可以是第一用户数据UD1,并且与第二用户键uK2相对应的值可以是第二用户数据UD2。同样,分别与第三用户键uK3至第m用户键uKm相对应的值可以是第三用户数据UD3至第m用户数据UDm。用户KV对KVPR-user可以存储在非易失性存储器件122中。
在从主机110接收用户键uK的情况下,KV管理器121a可以基于键索引IDX来确定存储与接收到的用户键uK相对应的值的存储位置,并且可以基于确定出的存储位置来从用户KV对KVPR-user中读取对应的值。备选地,在从主机110接收用户键uK和值的情况下,KV管理器121a可以将该值存储在非易失性存储器件122的用户KV对KVPR-user中,并且可以基于用户键和存储该值的存储位置来更新键索引IDX。
图6是示出了图1的存储设备的初始操作的流程图。图7是用于描述根据图6的流程图的初始操作的框图。为了便于描述,省略了描述存储设备120的初始操作不必要的组件。
以下,为了便于描述,省略了对冗余组件的详细描述。为了清楚地描述本公开的实施例,假设KV管理器121a执行从主机110确定键的操作和访问内部KV对KVPR-int的操作,且内部控制模块121d执行与存储设备120相关联的admin操作,且NVM控制模块121f(即,图2的闪存接口电路)执行对非易失性存储器件122的控制操作。然而,本公开不限于此。例如,根据本公开的实施例的操作可以由KV管理器121a执行,或者可以由包括在存储控制器121或存储设备120中的任何其他组件执行。
参考图1、图6和图7,在操作S100中,存储设备120可以加载内部KV对KVPR-int。例如,如上所述,内部KV对KVPR-int可以包括与可由存储设备120执行的各种admin操作相对应的信息或与内部键相对应的值。如图7中所示,内部KV对KVPR-int可以存储在非易失性存储器件122中。备选地,内部KV对KVPR-int可以以固件的形式存储在单独的存储空间中。在存储设备120的初始操作或初始化操作中,存储在非易失性存储器件122中的内部KV对KVPR-int可以加载到存储控制器121的存储器件121c上。
在图6操作S101中,存储设备120可以生成键索引IDX。例如,如参考图5描述的,键索引IDX可以包括多个键和位置信息。存储设备120可以基于与所加载的内部KV对KVPR-int的值相对应的内部键及存储该值的位置(即,存储器件121c上的位置)来生成键索引IDX。
备选地,如图7中所示,键索引IDX可以存储在非易失性存储器件122中,并且可以将存储在非易失性存储器件122中的键索引IDX加载到存储器件121c上。在示例性实施例中,尽管未在附图中示出,但是存储在非易失性存储器件122中的键索引IDX可以包括非易失性存储器件122所包括的用户KV对KVPR-user的值的位置和用户键相关的信息。也就是说,存储在非易失性存储器件122中的键索引IDX可以包括关于先前存储的用户数据的信息。
此后,在图6的操作S102中,存储设备120可以从主机110接收KV命令(例如,LIST命令)。例如,如图7所示,主机110可以将第0KV命令CMD_KV0发送到存储设备120。第0KV命令CMD_KV0可以具有LIST[iK1,iKk]的命令结构。“LIST”命令可以是用于在特定键之间查找值的命令。也就是说,主机110可以将L[ST[iK1~iKk]的KV命令发送到存储设备120,以寻找与内部键iK1~iKk相对应的值。
在图6操作S_103中,存储设备120可以响应于来自主机110的KV命令(例如,LIST命令)而基于键索引IDX将关于内部KV对KVPR-int的信息发送到主机110。例如,如图7中所示,存储控制器121的KV管理器121a可以响应于第0KV命令CMD_KV0而基于键索引IDX来确定与第一内部键iK1至第k内部键iKk相对应的内部位置iLCT,即,LIST[iK1,iKk],并且可以基于确定出的内部位置来从内部KV对KVPR-int检测对应的值。内部控制模块121d可以在KV管理器121a的控制下将检测到的值作为内部KV对KVPR-int发送到主机110。
如上所述,根据本公开的实施例的存储设备120可以在初始操作中将预先存储或确定的内部KV对KVPR-int加载到存储器件121c上。在这种情况下,为了检查存储设备120所支持的admin操作,主机110可以通过使用KV命令CMD_KV(例如,LIST命令)来检查内部KV对KVPR-int。之后,主机110可以基于检查到的内部KV对KVPR-int来控制存储设备120的各种admin操作。
在示例性实施例中,当在主机110与存储设备120之间预先确定关于内部KV对KVPR-int的信息或由主机110与存储设备120之间的接口协议预先定义关于内部KV对KVPR-int的信息时,可以省略检查内部KV对KVPR-int的操作。
在示例性实施例中,参考图6和图7所描述的操作可以在存储系统100的初始化操作中执行,可以在驱动存储系统100的同时周期性地执行,或者可以由单独的请求随机执行。
图8是示出了图1的存储设备的操作的流程图。以下,为了便于描述,省略了对冗余组件的详细描述。参考图1和图8,在操作S110中,存储设备120可以从主机110接收KV命令CMD_KV。上面描述了KV命令CMD_KV的结构,因此将省略附加描述以避免冗余。
在操作S120中,存储设备120可以确定包括在接收到的KV命令CMD_KV中的键是否是内部键。例如,存储控制器121的KV管理器121a可以基于键索引IDX来确定KV命令CMD_KV的键是否是内部键。
当KV命令CMD_KV的键是内部键时,在操作S130中,存储设备120可以基于内部KV对KVPR-int来确定与KV命令CMD_KV相对应的操作。例如,如上所述,内部KV对KVPR-int可以包括分别与内部键相对应的值。包括在内部KV对KVPR-int中的值可以对应于存储设备120的各种admin操作。因此,存储设备120可以基于与KV命令CMD_KV的键(即,内部键)相对应的值来确定与KV命令CMD_KV相对应的操作(例如,admin操作)。在操作S140中,存储设备120可以执行确定出的操作。
当KV命令CMD_KV的键不是内部键(例如,是用户键)时,在操作S150中,存储设备120可以基于用户KV对KVPR-user来执行与KV命令CMD_KV相对应的操作。例如,存储设备120可以基于键索引IDX来检查存储与KV命令CMD_KV的键(例如,用户键)相对应的值的位置,并且可以基于检查到的位置从用户KV对KVPR-user中发送用户数据。备选地,存储设备120可以在用户KV对KVPR-user中存储与KV命令CMD_KV的键(例如,用户键)相对应的值,并且可以基于KV命令CMD_KV的值存储位置和键(例如,用户键)来更新键索引IDX。
图9A至图9E是用于详细描述根据图8的流程图的操作的示图。以下,为了便于描述,省略了对冗余组件的详细描述。另外,为了便于描述,假设第一内部键iK1对应于用于获取智能/健康信息的得到日志页命令而第二内部键iK2对应于用于设置易失性写入高速缓存(VWC)功能的设置特征命令。
参考图1及图9A至图9E,存储系统100可以包括主机110和存储设备120。存储设备120可以包括存储控制器121和非易失性存储器件122。存储控制器121可以包括KV管理器121a、存储器件121c、内部控制模块121d和NVM控制模块121f。存储器件121c可以包括键索引IDX和内部KV对KVPR-int。非易失性存储器件122可以包括用户键-值(KV)对KVPR-user。
首先,参考图9A来描述用于执行第一admin操作(例如,用于获取智能/健康信息的得到日志页操作)的配置。如图9A中所示,主机110可以出于执行第一admin操作的目的而将第一KV命令CMD_KV1发送到存储控制器121。第一KV命令CMD_KV1可以具有GET[iK1]的命令结构或命令格式。
存储控制器121的KV管理器121a可以基于键索引IDX(例如,基于键组标识符)来检查第一KV命令CMD_KV1的第一内部键iK1是内部键。KV管理器121a可以基于键索引IDX来检查与第一内部键iK1相对应的第一内部位置iLCT1,并且可以基于第一内部位置iLCT1从内部KV对KVPR-int获得与第一内部键iK1相对应的值(即,得到日志页-智能/健康)。KV管理器121a可以基于所获得的值(即,得到日志页-智能/健康)来控制内部控制模块121d。
内部控制模块121d可以在KV管理器121a的控制下执行与所获得的值相对应的第一admin操作(也就是说,得到日志页c智能/健康)。例如,作为第一admin操作的结果,内部控制模块121d可以将第一设备信息DI1发送到主机110。在示例性实施例中,第一设备信息DI1可以是智能/健康信息。
接下来,参考图9B来描述用于执行第二admin操作(例如,用于设置易失性写入高速缓存的设置特征操作)的配置。如图9B中所示,主机110可以出于执行第二admin操作的目的而将第二KV命令CMD_KV2发送到存储控制器121。第二KV命令CMD_KV2可以具有PUT[iK2,V1]的命令结构或命令格式。
存储控制器121的KV管理器121a可以基于键索引IDX(例如,基于键组标识符)来检查第二KV命令CMD_KV2的第二内部键iK2是内部键。KV管理器121a可以基于键索引IDX来检查与第二内部键iK2相对应的第二内部位置iLCT2,并且可以基于第二内部位置iLCT2从内部KV对KVPR-int获得与第二内部键iK2相对应的值(即“设置特征-VWC”)。KV管理器121a可以基于所获得的值(即,设置特征-VWC)来控制内部控制模块121d。
内部控制模块121d可以在KV管理器121a的控制下执行与所获得的值(即,设置特征-VWC)相对应的第二admin操作。例如,内部控制模块121d可以将与特征FT之中的易失性写入高速缓存VWC(或者,存储关于特征FT的信息的寄存器)相关的信息从第0值更新为第1值(V0→V1)。在这种情况下,第一值V1可以是包括在第二KV命令CMD_KV2中的值。
然后,参考图9C来描述对第一用户数据UD1执行读取操作的配置。如图9C中所示,主机110可以出于对第一用户数据UD1执行读取操作的目的而将第三KV命令CMD_KV3发送到存储控制器121。第三KV命令CMD_KV3可以具有GET[uK1]的命令结构或命令格式。
存储控制器121的KV管理器121a可以基于键索引IDX(例如,基于键组标识符)来检查第三KV命令CMD_KV3的第一用户键uK1是用户键。KV管理器121a可以基于键索引IDX来检查与第一用户键uK1相对应的第一存储位置sLCT1。KV管理器121a可以基于第一存储位置sLCT1来控制NVM控制模块121f。
NVM控制模块121f可以基于第一存储位置sLCT1从非易失性存储器件122的用户KV对KVPR-user中读取与第一用户键uK1相对应的值(即,第一用户数据UD1),并且可以将读取到的值(即,第一用户数据UD1)发送到主机110。
然后,参考图9D来描述对第二用户数据UD2执行写入操作的配置。如图9D中所示,主机110可以出于对第二用户数据UD2执行写入操作的目的而将第四KV命令CMD_KV4发送到存储控制器121。第四KV命令CMD_KV4可以具有PUT[uK2,V2]的命令结构或命令格式。
存储控制器121的KV管理器121a可以基于键索引IDX(例如,基于键组标识符)来检查第四KV命令CMD_KV4的第二用户键uK2是用户键。KV管理器121a可以基于键索引IDX来确定或分配要存储第四KV命令CMD_KV4的第二值V2的存储位置(例如,第二存储位置sLCT2)。KV管理器121a可以基于所分配的存储位置sLCT2来控制NVM控制模块121f。
在KV管理器121a的控制下,NVM控制模块121f可以将第二值V2作为第二用户数据UD2存储在非易失性存储器件122的用户KV对KVPR-user的对应于所分配的存储位置sLCT2的区域中。换言之,NVM控制模块121f可以将与第二用户键uK2相对应的第二值V2存储在用户KV对KVPR-user中,作为第二用户数据UD2。
在示例性实施例中,在写入操作完成之后或在执行写入操作的同时,KV管理器121a可以基于所分配的存储位置sLCT2和第二用户键uK2来更新键索引IDX。也就是说,更新后的键索引IDX可以包括关于第二用户键uK2的信息和关于所分配的存储位置sLCT2的信息。
然后,参考图9E来描述对第二用户数据UD2执行删除操作的配置。如图9E中所示,主机110可以出于对第二用户数据UD2执行删除操作的目的而将第五KV命令CMD_KV5发送到存储控制器121。第五KV命令CMD_KV5可以具有DEL[uK2]的命令结构或命令格式。
存储控制器121的KV管理器121a可以基于键索引IDX(例如,基于键组标识符)来检查第五KV命令CMD_KV5的第二用户键uK2是用户键。KV管理器121a可以基于键索引IDX来检查与第二用户键uK2相对应的第二存储位置sLCT2。KV管理器121a可以基于第二存储位置sLCT2来控制NVM控制模块121f。
在KV管理器121a的控制下,NVM控制模块121f可以从用户KV对KVPR-user中删除与第二用户键uK2相对应的第二用户数据UD2。在示例性实施例中,NVM控制模块121f可以在KV管理器121a的控制下物理地删除第二用户数据UD2。备选地,在KV管理器121a的控制下,NVM控制模块121f可以逻辑地擦除第二用户数据UD2(例如,使第二用户数据UD2无效),之后NVM控制模块121f可以在特定条件下(例如,垃圾收集)物理地删除第二用户数据UD2。
在第二用户数据UD2被物理或逻辑地删除之后,KV管理器121a可以更新键索引IDX。也就是说,更新后的键索引IDX可以不包括与对应于第二用户数据UD2的第二用户键uK2相关的信息。备选地,更新后的键索引IDX可以包括关于第二用户键uK2的无效信息。
如上所述,根据本公开的实施例的存储系统100可以基于KV命令来执行各种输入/输出操作和各种admin操作。例如,如参考图9A和图9C所描述的,可以通过使用同一类型的KV命令(即,GET命令)来执行第一admin操作和读取操作。在这种情况下,即使用于第一admin操作和读取操作的KV命令是同一类型,也可以通过改变包括在KV命令中的键来执行第一admin操作和读取操作。备选地,如参考图9B和图9D,可以通过使用同一类型的KV命令(即,PUT命令)来执行第二admin操作和写入操作。在这种情况下,即使用于第二admin操作和写入操作的KV命令是同一类型,也可以通过改变包括在KV命令中的键来执行第二admin操作和写入操作。换言之,用于读取操作或写入操作的KV命令可以用于任何其他的admin操作。
在示例性实施例中,KV命令是同一类型可以意味着KV命令的特定字段的值相同。例如,KV命令具有相同的类型可能意味着KV命令的操作代码OpCode的字段相同。备选地,KV命令具有相同的类型可以意味着KV命令的报头相同。然而,本公开不限于此。
也就是说,根据本公开的实施例,可以在主机与存储设备之间定义的命令格式或命令类型的数量最小化的状态下支持存储设备的各种操作。
图10是示出了图1的存储系统的操作的流程图。参考图10描述了主机110更新内部KV对KVPR-int并基于更新后的内部KV对KVPR-int来执行admin操作的配置。以下,为了便于描述,省略了对冗余组件的详细描述。
参考图1和图10,在操作S211中,主机110可以将第一KV命令CMD_KV1发送到存储设备120。在这种情况下,第一KV命令CMD_KV1可以具有PUT[iK1,V1]的命令结构或命令格式。
在操作S212中,存储设备120可以将与第一内部键iK1相对应的字段设置为第一值V1。例如,存储设备120可以将与第一内部键iK1相对应的内部KV对KVPR-int的字段设置或更新为第一值V1。
在操作S213中,主机110可以将第二KV命令CMD_KV2发送到存储设备120。第二KV命令CMD_KV2可以具有GET[iK1]的命令结构或命令格式。
在操作S214中,存储设备120可以执行与第一内部键iK1和第一值V1相对应的第一操作。例如,通过操作S211和操作S212,将对应于第一内部键iK1的内部KV对KVPR-int的字段设置为第一值V1。也就是说,在通过操作S213接收具有GET[iK1]结构的第二KV命令CMD_KV2的情况下,存储设备120可以执行与第一内部键iK1和第一值V1相对应的操作。将参考图11A至图11E更全面地描述操作S214。
在操作S215中,存储设备120可以将第一设备信息DI1作为第一操作的结果发送到主机110。例如,在与第一内部键iK1相对应的信息对应于“得到日志页”命令且第一值V1对应于智能/健康信息的情况下,第一设备信息DI1可以是智能/健康信息。将参考图11A至图11E更全面地描述操作S215。
之后,主机110和存储设备120可以执行操作S221至操作S225。除了值是第二值V2且设备信息是第二设备信息DI2之外,操作S221至操作S225与操作S211至操作S215相似,因此将省略附加描述以避免重复。
如上所述,主机110可以通过使用PUT类型的KV命令将与特定的内部键相对应的字段设置为与特定的admin操作相对应的值,然后可以使用包括特定的内部键的GET类型的KV命令来执行特定的admin操作。也就是说,内部KV对KVPR-int可以由主机110更新,并且主机110可以基于更新后的内部KV对来执行各种admin操作。
图11A至图11E是用于描述根据图10的流程图的操作的示图。为了便于描述,省略了对冗余组件的详细描述。首先,参考图1和11A,键索引IDX可以包括关于内部键iK1至iK3的信息和关于内部位置iLCT1至iLCT3的信息。内部KV对KVPR-int可以包括与内部键iK1至iK3相关联的值。在这种情况下,与参考图5所给出的描述不同,可以不定义包括在图11A的内部KV对KVPR-int中的每个值中的至少一个字段(例如,标识符)。也就是说,与第一内部键iK1相对应的值可以包括与得到日志页命令相对应的信息,但是可以不包括关于标识符的信息。同样,与第二内部键iK2相对应的值可以包括与得到特征命令相对应的信息,但是可以不包括关于标识符的信息;与第三内部键iK3相对应的值可以包括与设置特征命令相对应的信息,但是可以不包括关于标识符的信息。然而,图11A中所示的键索引IDX和内部KV对KVPR-int是示例性的,并且本公开不限于此。例如,内部KV对KVPR-int还可以包括支持各种不同的admin操作的各种命令或命令类型作为值。
在示例性实施例中,如参考图10所描述的,主机110可以通过使用PUT类型的KV命令设置内部KV对KVPR-int的特定字段(例如,标识符)来更新内部KV对KVPR-int。主机110可以基于更新后的内部KV对KVPR-int来执行admin操作。
参考图1及图10至图11E,存储设备120可以包括存储控制器121和非易失性存储器件122。存储控制器121可以包括KV管理器121a、存储器件121c、内部控制模块121d和NVM控制模块121f。存储器件121c可以包括键索引IDX和内部KV对KVPR-int。为了便于描述,假设内部KV对KVPR-int包括与得到日志页命令和获取特征命令相关的信息作为与第一内部键iK1和第二内部键iK2相对应的值。
将参考图11B和图11C来描述如何通过使用第一内部键iK1获得智能/健康信息。如图11B中所示,主机110可以将第一KV命令CMD_KV1发送到存储控制器121。第一KV命令CMD_KV1可以具有PUT[iK1,V1]的命令结构或命令格式。
KV管理器121a可以基于键索引IDX来检查第一KV命令CMD_KV1的第一内部键iK1是内部键。KV管理器121a可以基于键索引IDX来检查存储与第一内部键iK1相对应的值的第一内部位置iLCT1。KV管理器121a可以在第一内部位置iLCT1处将特定字段(例如,标识符)设置为第一值V1。在这种情况下,第一值V1可以指示与智能/健康信息相对应的标识符。
之后,如图11C中所示,主机110可以将第二KV命令CMD_KV2发送到存储控制器121。第二KV命令CMD_KV2可以具有GET[iK1]的命令结构或命令格式。KV管理器121a可以响应于第二KV命令CMD_KV2而基于与第一内部键iK1相对应的值(例如,得到日志页-智能/健康)来控制内部控制模块121d,并且内部控制模块121d可以输出第一设备信息DI1。除了附加地设置了与第一内部键iK1相对应的特定字段之外,图11C的操作与图9A的操作相似,因此将省略附加描述以避免重复。
接下来,将参考图11D至图11E描述如何通过使用第一内部键iK1来获得FW槽信息。如图11D中所示,主机110可以将第三KV命令CMD_KV3发送到存储控制器121。第三KV命令CMD_KV3可以具有PUT[iK1,V2]的命令结构或命令格式。
KV管理器121a可以基于键索引IDX来检查第三KV命令CMD_KV3的第一内部键iK1是内部键。KV管理器121a可以基于键索引IDX来检查存储与第一内部键iK1相对应的值的第一内部位置iLCT1。KV管理器121a可以在第一内部位置iLCT1处将特定字段(例如,标识符)设置为第二值V2。在这种情况下,第二值V2可以指示与FW槽信息相对应的标识符。
之后,如图11E中所示,主机110可以将第二KV命令CMD_KV2发送到存储控制器121。第二KV命令CMD_KV2可以具有GET[iK1]的命令结构或命令格式。KV管理器121a可以响应于第二KV命令CMD_KV2而基于与第一内部键iK1相对应的值(例如,得到日志页-FW槽)来控制内部控制模块121d,并且内部控制模块121d可以输出第二设备信息D12。
如上所述,取决于先前被设置为特定的内部键的值,可以通过使用相同的KV命令(例如,GET[iK1])执行不同的admin操作。也就是说,主机110可以通过使用PUT类型的KV命令来更新内部KV对KVPR-int,并且可以通过使用更新后的内部KV对来执行各种admin操作。因此,因为不必针对各种admin操作中的每一个定义单独的命令,所以可以简化主机110与存储设备120之间的接口。因此,提供了具有提高的性能和降低的成本的存储系统。
图12是示出了图1的存储系统的操作的流程图。为了便于描述,省略了对冗余组件的详细描述。参考图1和图12,在操作S310中,主机110可以将第一KV命令CMD_KV1发送到存储设备120。第一KV命令CMD_KV1可以具有PUT[iKn,V_n]的命令结构或命令格式。在这种情况下,“iK_n”可以指示关于新的内部键的信息,并且“V_n”可以指示与新的内部键相对应的值。
也就是说,为了执行存储设备120的未由内部KV对KVPR-int定义的admin操作,主机110可以将包括新的内部键iK_n和对应的值V_n的第一KV命令CMD_KV1发送到存储设备120。
在操作S320中,响应于第一KV命令CMD_KV1,存储设备120可以基于新的内部键iK_n和对应的值V_n来更新内部KV对KVPR-int和键索引IDX。例如,存储控制器121可以确定与新的内部键iK_n相关联的新的内部位置iLCT_n,并且可以存储与新的内部位置iLCT_n相对应的值V_n。存储控制器121可以在键索引IDX处注册或更新新的内部位置iLCT_n和新的内部键iK_n。
在操作S330中,主机110可以将第二KV命令CMD_KV2发送到存储设备120。第二KV命令CMD_KV2可以具有GET[iK_n]的命令结构或命令格式。
在操作S340中,响应于第二KV命令CMD_KV2,存储设备120可以执行与新的内部键iK_n和对应的值V_n相对应的操作。在操作S350中,存储设备120可以将设备信息DI_n发送到主机110作为操作S340的结果。除了内部键iK_n和值V_n由主机110新定义之外,操作S340和操作S350与上面的描述相似,因此将省略附加描述以避免冗余。
图13是示出了图1的存储设备的操作的流程图。参考图1和图13,在操作S410中,存储设备120可以下载固件文件。例如,存储设备120可以通过与主机110连接的网络下载从制造商提供的固件文件。备选地,存储设备120可以通过单独的通信信道下载固件文件。
在操作S420中,存储设备120可以基于固件文件来执行固件更新,以更新内部KV对KVPR-int。例如,如上所述,内部KV对KVPR-int可以在存储设备120内进行管理,并且可以是给定信息。也就是说,可以以固件的形式提供内部KV对KVPR-int。在将新的admin功能添加到存储设备120的情况下,可以通过制造商所提供的固件更新来更新内部KV对KVPR-int。
在示例性实施例中,支持特定的接口协议的当前通信信道可能无法满足添加了新功能的新接口协议。相反,根据本公开的上述实施例,即使新添加了主机110与存储设备120之间的功能,也可以通过对内部KV对KVPR-int执行固件更新来支持新添加的功能。因此,提供了具有降低的成本的存储系统。
图14是示出了图1的存储设备的操作的流程图。参考图14来描述在存储设备120上通过使用键-值对来管理操作日志的配置。为了简化描述,省略了对冗余组件的详细描述。
参考图1和图14,在操作S510中,存储设备120可以从主机110接收输入/输出命令。在示例性实施例中,输入/输出命令可以是与用户键uK相关联的KV命令CMD_KV。也就是说,输入/输出命令可以具有GET[uK]、PUT[uK,V]、DEL[uK]等的数据结构或命令格式。
在操作S520中,存储设备120可以执行与输入/输出命令相对应的操作。例如,在输入/输出命令是GET[uK]的KV命令的情况下,存储设备120可以将与用户键uK相对应的用户数据发送到主机110。备选地,在输入/输出命令是PUT[uK,V]的KV命令的情况下,存储设备120可以将值“V”存储在非易失性存储器件122的用户KV对KVPR-user中,并且可以更新键索引IDX。备选地,在输入/输出命令是DEL[uK]的KV命令的情况下,存储设备120可以从用户KV对KVPR-user中删除或去除与用户键uK相对应的值或用户数据。
在操作S530中,存储设备120可以将操作日志条目写入日志缓冲区中。例如,操作日志条目可以指示与操作S520中所执行的操作相关的信息或粗略信息。存储设备120可以将与所执行的操作相对应的操作日志条目写在作为存储器件121c的一部分区域的日志缓冲区中(参考图2)或单独的日志缓冲区中。
在操作S540中,存储设备120可以确定日志缓冲区是否已满。例如,存储设备120可以确定预先分配的日志缓冲区是否被操作日志条目完全填充。在示例性实施例中,存储设备120可以确定写在日志缓冲区中的操作日志的总大小是否是参考值或更大。
当日志缓冲区未被操作日志条目完全填充时(即,当日志缓冲区中存在可用空间时),存储设备120继续执行操作S510。
当日志缓冲区被操作日志条目完全填充时(即,当日志缓冲区中没有可用空间时),在操作S550中,存储设备120可以基于存储在日志缓冲区中的日志条目来生成日志数据LD。例如,日志数据LD可以是存储在日志缓冲区中的多个日志条目的组合。
在操作S560中,存储设备120可以将所生成的日志数据LD存储在非易失性存储器件122中。在示例性实施例中,日志数据LD可以存储在非易失性存储器件122的操作日志KV对KVPR-op(将参考图15E进行描述)中。在示例性实施例中,在将日志数据LD存储在非易失性存储器件122中之后,可以重置或释放日志缓冲区。
在操作S570中,存储设备120可以基于所存储的日志数据LD来更新键索引IDX。例如,存储设备120可以将操作日志键ok分配给日志数据LD,并且可以基于所分配的操作日志键ok和存储日志数据的存储位置来更新键索引IDX。
也就是说,如上所述,根据本公开的实施例的存储设备120可以通过使用KV对来管理与内部执行的操作相关联的操作日志,而无需来自主机110的单独的显式命令或请求。在示例性实施例中,可以通过来自主机110的LIST类型的KV命令将关于操作日志键的信息提供给主机110。主机110可以基于关于操作日志键的信息通过使用KV命令(例如,GET[oK]类型的KV命令)从存储设备120读取日志数据LD。
图15A至图15E是用于描述根据图14的流程图的操作的示图。为了便于描述,省略了对冗余组件的详细描述。省略了对于描述根据图14的流程图来通过使用KV对管理操作日志的方式不必要的组件。然而,本公开不限于此。例如,将参考图15A至图15E来描述的存储系统100可以被配置为执行参考图1至图13所描述的操作方法(使用内部键的admin操作)。
参考图1、图14及图15A至图15E,存储系统100可以包括主机110和存储设备120。存储设备120可以包括存储控制器121和非易失性存储器件122。存储控制器121可以包括KV管理器121a、存储器件121c和NVM控制模块121f。存储器件121c可以包括键索引IDX和日志缓冲区LB。非易失性存储器件122可以包括用户键-值(KV)对KVPR-user。在示例性实施例中,日志缓冲区LB可以指示存储器件121c的空间中被分配为写入操作日志的部分。在示例性实施例中,可以用单独的存储器来实现日志缓冲区LB。
如图15A中所示,主机110可以将具有PUT[uK1,V1]的结构的第一KV命令CMD_KV1发送到存储控制器121。KV管理器121a可以基于第一KV命令CMD_KV1来控制NVM控制模块121f。NVM控制模块121f可以将与第一用户键uK1相对应的第一值V1存储在用户KV对KVPR-user中,作为第一用户数据UD1。KV管理器121a可以基于存储与第一用户键uK1相对应的第一值V1的第一存储位置sLCT1来更新键索引IDX。
NVM控制模块121f可以将与对应于第一KV命令CMD_KV1相对应的操作(即,存储与第一用户键uK1相对应的第一值V1的操作)相关的信息{PUT.uK1}写入日志缓冲区LB。
接下来,如图15B中所示,主机110可以将具有PUT[uK2,V2]的结构的第二KV命令CMD_KV2发送到存储控制器121。如上面的描述中,NVM控制模块121f可以将与第二用户键uK2相对应的第二值V2存储在用户KV对KVPR-user中作为第二用户数据UD2,并且可以将与对应于第二KV命令CMD_KV2的操作相关的信息{PUT.uK2}写入日志缓冲区LB。KV管理器121a可以基于存储第二值V2的第二存储位置sLCT2和第二用户键uK2来更新键索引IDX。
然后,如图15C中所示,主机110可以将具有PUT[uK2,V3]的结构的第三KV命令CMD_KV3发送到存储控制器121。KV管理器121a可以基于键索引IDX来对用户KV对KVPR-user中存在与第二用户键uK2相对应的第二用户数据UD2进行检查。在这种情况下,在KV管理器121a的控制下,NVM控制模块121f可以将用户KV对KVPR-user的第二用户数据UD2从第二值V2替换或更新为第三值V3。
NVM控制模块121f可以将与对应于第三KV命令CMD_KV3的操作相关的信息{PUT.uK2}写入日志缓冲区LB中。因为关于第二用户键uK2的信息包括在键索引IDX中,所以KV管理器121a可以不更新键索引IDX。
然后,如图15D中所示,主机110可以将具有DEL[uK1]的结构的第四KV命令CMD_KV4发送到存储控制器121。KV管理器121a可以基于键索引IDX来检查存储与第四KV命令CMD_KV4的第一用户键uK1相对应的值(即,第一用户数据UD1)的第一存储位置sLCT1,并且可以基于第一存储位置sLCT1来控制NVM控制模块121f。
NVM控制模块121f可以在KV管理器121a的控制下从用户KV对KVPR-user中移除与第一用户键uK1相对应的第一用户数据UD1,或使之无效,或将其删除。NVM控制模块121f可以将与相对于第四KV命令CMD_KV4的操作相关的信息{DEL.uK1}写入日志缓冲区LB中。
如图15E中所示,日志缓冲区LB可能已满。在这种情况下,存储控制器121可以基于存储在日志缓冲区LB中的日志条目“{PUT.uK1}、{PUT.uK2}、{DEL.uK2}和{DEL.uK1}”来生成日志数据LD,并且可以将所生成的日志数据LD存储在非易失性存储器件122的操作日志KV对KVPR-op中。
KV管理器121a可以将第一操作日志键ok1分配给日志数据LD。KV管理器121a可以基于第一操作日志键ok1和存储与第一操作日志键ok1相对应的日志数据LD的存储位置sLCT3来更新键索引IDX。也就是说,更新后的键索引IDX可以包括与第一操作日志键oK1和第三存储位置sLCT3相关的信息。
在示例性实施例中,可以将第一操作日志键ok1作为内部键进行管理,并且可以将与内部键相对应的键组标识符分配给第一操作日志键ok1。
在示例性实施例中,在图15E的实施例之后,在从主机110接收GET[oK1]的KV命令的情况下,存储控制器121可以将与第一操作日志键ok1相对应的日志数据LD从操作日志KV对KVPR-op提供给主机110。主机110可以将包括在操作日志KV对KVPR-op中的日志数据LD用于日志记录。
在示例性实施例中,在存储设备120中存在的可用空间不足的情况下(即,在针对用户KV对KVPR-user的空间不足的情况下),主机110可以通过使用DEL类型的KV命令删除包括在操作日志KV对KVPR-op中的日志数据LD来确保存储设备120的存储空间(即,针对用户KV对KVPR-user的空间)。
如上所述,根据本公开的实施例,存储设备120可以通过使用KV对来管理与内部执行的操作相关联的操作日志,而无需来自主机110的单独的显式命令或请求。因此,因为不需要用于管理操作日志的单独的命令,所以可以简化存储系统的接口。
图16是示出了用于存储图15E的日志数据的内部数据结构的示图。参考图16,数据结构可以包括KV对报头、操作日志键ok、填充信息和日志数据LD(即,值)。
KV对报头可以包括将日志数据LD存储在操作日志KV对KVPR-op中所需的信息(例如,PUT命令报头)。操作日志键ok可以包括关于操作日志键的信息。填充信息可以是用于调整数据结构的大小的任何值。
日志数据LD可以包括日志报头和多个日志条目。日志报头和多个日志条目可以包括下面的表2的信息。
【表2】
参考上面的表2,日志报头可以包括2字节的签名、8字节的日志报头序列号、4字节的键操作日志计数、以及4种类型的大小信息。多个日志条目中的每一个可以包括对应的KV命令的2字节操作类型信息、2字节键组标识符信息、4字节键大小信息、8字节保留信息和大小可变键信息。基于图16中所示的数据结构,可以将包括多个操作日志条目的日志数据LD存储在非易失性存储器件122的操作日志KV对KVPR-op中。
图17是示出了图1的存储设备的操作的流程图。参考图17来描述存储设备120管理内部KV对KVPR-int和操作日志KV对KVPR-op的实施例。为了简化描述,假设从主机110接收的KV命令是包括第一键的GET命令。
参考图1、图15E和图17,在操作S1100中,存储设备120可以从主机110接收KV命令。在这种情况下,KV命令可以是包括第一键的GET命令。
在操作S1200中,存储设备120可以确定第一键是否是内部键。例如,存储控制器121可以基于包括在第一键中的键组标识符来确定第一键是内部键还是用户键。
当第一键是内部键时,在操作S1300中,存储设备120可以确定与第一键相对应的值是否存储在非易失性存储器件122中。例如,存储设备120可以基于键索引IDX来检查存储第一键的位置。在示例性实施例中,当第一键对应于内部KV对KVPR-int的信息时,可以将与第一键相对应的值存储在存储控制器121的存储器件121c中;当第一键对应于操作日志KV对KVPR-op的信息时,可以将与第一键相对应的值存储在非易失性存储器件122中。
当非易失性存储器件122中不存在与第一键对应的值时,在操作S1400中,存储设备120可以从内部KV对KVPR-int中找到对应的值。例如,如上所述,在第一键对应于内部KV对KVPR-int的得到日志页-智能/健康信息的情况下,存储设备120可以找到或生成智能/健康信息作为对应的值。也就是说,可以通过执行与第一键的值相对应的操作来确定相对应的值。
当在非易失性存储器件122中存在与第一键相对应的值时,在操作S1500中,存储设备120可以从操作日志KV对KVPR-op中找到与第一键相对应的值(即,日志数据)。
当第一键不是内部键时(即,在第一键是用户键的情况下),在操作S1600中,存储设备120可以从非易失性存储器件122的用户KV对KVPR-user中找到与第一键相对应的用户数据作为值。
在操作S1700中,存储设备120可以将所找到或所生成的值发送到主机110。
如上所述,根据本公开的实施例的存储系统100可以支持通过使用单一类型的KV命令(例如,GET命令)来提取或读取各种类型的信息(例如,用户数据、操作日志或关于各种admin操作的信息)的方式。因此,可以简化存储系统100的接口,并且可以容易地添加/改变/删除新功能而无需单独的接口改变。因此,提供了具有提高的性能和降低的成本的存储系统。
图18是示出了根据本公开的实施例的存储系统的框图。参考图18,存储系统1000可以包括主机1100和存储设备1200。主机1100可以被配置为控制存储设备1200。
存储设备1200可以包括存储控制器1210和非易失性存储器件1220。存储控制器1210可以包括多个NVMe控制器1211至1213。多个NVMe控制器1211至1213中的每一个可以通过物理端口PT与主机1100通信。在示例性实施例中,多个NVMe控制器1211至1213可以通过不同的物理端口(未示出)与主机1100通信。物理端口PT可以指示由PCIe接口协议定义的物理层。
多个NVMe控制器1211至1213可以被配置为在主机1100的控制下分别控制非易失性存储器件1220的名称空间NS0至NS3。例如,非易失性存储器件1220可以被划分为多个名称空间NS0至NS3。多个名称空间NS0至NS3中的每一个可以是逻辑划分或物理划分的存储空间。多个名称空间NS0至NS3中的每一个可以被配置为在主机1100的控制下具有独立的属性。
第一NVMe控制器1211可以控制第0名称空间NS0和第一名称空间NS1,第二NVMe控制器1212可以控制第0名称空间NS0和第二名称空间NS2,并且第三NVMe控制器1213可以控制第三名称空间NS3。也就是说,第0名称空间NS0可以是由第一NVMe控制器1211和第二NVMe控制器1212的每一个共享的名称空间。
在示例性实施例中,主机1100可以通过admin提交队列ASQ、admin完成队列ACQ、提交队列SQ和完成队列CQ控制存储设备1200。admin提交队列ASQ可以被配置为对要被提供给多个NVMe控制器1211至1213中的至少一个的admin命令进行排队。admin完成队列ACQ可以被配置为对关于admin命令的完成信息进行排队。提交队列SQ可以被配置为对要提供给多个NVMe控制器1211至1213中的至少一个的输入/输出命令进行排队。完成队列CQ可以被配置为对关于输入/输出命令的完成信息进行排队。
admin提交队列ASQ、admin完成队列ACQ、提交队列SQ和完成队列CQ可以提供给多个NVMe控制器1211至1213中的每一个,可以由多个NVMe控制器1211至1213共享,可以提供给多个名称空间NS0至NS3中的每一个,或者可以由多个名称空间NS0至NS3共享。
在示例性实施例中,多个名称空间NS0至NS3中的至少一个名称空间可以用作键-值存储。例如,可以将多个名称空间NS0至NS3中的第一名称空间NS1的属性设置为键-值存储。在这种情况下,可以基于参考图1至图17所描述的操作方法来操作被配置为控制第一名称空间NS1的第一NVMe控制器1211。也就是说,第一NVMe控制器1211可以响应于来自主机1100的KV命令CMD_KV而执行参考图1至图17所描述的操作。在这种情况下,内部KV对KVPR-int可以由第一NVMe控制器1211管理。
在示例性实施例中,在第一NVMe控制器1211基于参考图1至图17所描述的操作方法进行操作的情况下,主机1100可以将与第一名称空间NS1相关联的admin操作的命令(即,包括内部键的KV命令)在admin提交队列ASQ中或在提交队列SQ进行排队,而不是在admin提交队列ASQ中。
如上所述,根据本公开的实施例的存储系统1000可以通过多个名称空间来管理非易失性存储器件1220的存储空间,并且可以基于参考图1至图18所描述的操作方法(即,使用内部KV对的admin操作)来管理多个名称空间的至少一部分。
图19是示出了根据本公开的实施例的存储系统的框图。参考图19,存储系统2000可以包括主机2100及第一存储设备2210第二存储设备2220。主机2100可以通过接口信道IF与第一存储设备2210和第二存储设备2220通信。在示例性实施例中,接口信道IF可以是被配置为支持参考图1至图18所描述的KV命令的通信信道。
第一存储设备2210和第二存储设备2220中的每一个可以是参考图1至图18所描述的存储设备。也就是说,第一存储设备2210和第二存储设备2220中的每一个可以被配置为管理内部KV对KVPR-int或操作日志KV对KVPR-op。在示例性实施例中,由第一设备2210管理的内部KV对KVPR-int可以与由第二设备2220管理的内部KV对KVPR-int不同。也就是说,第一存储设备2210和第二存储设备2220所支持的admin操作可以不同。然而,根据本公开的实施例,因为通过使用同一类型的KV命令来执行各种admin操作,所以即使第一存储设备2210和第二存储设备2220所支持的admin操作不同,主机2100也可以正常地执行第一存储设备2210和第二存储设备2220所支持的admin操作。
图20是示出了应用根据本公开实施例的存储系统的数据中心的框图。参考图20,数据中心3000可以包括多个计算节点3100至3400(或者,服务器)。多个计算节点3100至3400可以通过网络NT彼此通信。在示例性实施例中,网络NT可以是诸如存储区域网络(SAN)的存储专用网络,或者可以是诸如TCP/IP的因特网网络。在示例性实施例中,网络NT可以包括如下各种通信协议中的至少一个,诸如光纤信道、iSCSI协议、FCoE、NAS和NVMe-oF。
多个计算节点3100至3400可以包括处理器3110、3210、3310和3410、存储器3120、3220、3320和3420、存储设备3130、3230、3330和3430、以及接口电路3140、3240、3340和3440。
例如,第一计算节点3100可以包括第一处理器3110、第一存储器3120、第一存储设备3130和第一接口电路3140。在示例性实施例中,可以用单核或多核来实现第一处理器3110。第一存储器3120可以包括如下存储器,诸如DRAM、SDRAM、SRAM、3D XPoint存储器、MRAM、PRAM、FeRAM或ReRAM。第一存储器3120可以用作第一计算节点3100的系统存储器、工作存储器或缓冲存储器。第一存储设备3130可以是诸如硬盘驱动器(HDD)或固态驱动器(SSD)的大容量存储介质。第一接口电路3140可以是被配置为支持通过网络NT的通信的网络接口控制器(NIC)。
在示例性实施例中,第一计算节点3100的第一处理器3110可以被配置为基于给定的存储器接口来访问第一存储器3120。备选地,在共享的存储器架构的实施例中,第一计算节点3100的第一处理器3110可以被配置为通过网络NT访问其余计算节点3200、3300和3400的存储器3220、3320和3420。接口电路3140可以包括被配置为控制或支持第一处理器3110对共享的存储器(即,任何其他的计算节点的存储器)的访问的网络交换机(未示出)。
在示例性实施例中,第一计算节点3100的第一处理器3110可以被配置为基于给定的存储接口来访问第一存储设备3130。备选地,第一计算节点3100的第一处理器3110可以被配置为通过网络NT访问其余的计算节点3200、3300和3400的存储设备3230、3330和3430。接口电路3140可以包括被配置为控制或支持第一处理器3110对任何其他计算节点的存储设备的访问的网络交换机(未示出)。在示例性实施例中,分别包括在多个计算节点3100至3400中的存储设备3130至3430可以构成一个RAID卷。
第二计算节点3200至第四计算节点3400的操作可以与上述第一计算节点3100的操作相似,因此将省略附加描述以避免冗余。
在示例性实施例中,可以在数据中心3000处执行各种应用。应用可以被配置为执行用于在计算节点3100至3400之间进行数据移动或复制的指令,或者可以被配置为执行用于对在计算节点3100至3400上存在的各种信息进行组合、处理或再现的指令。在示例性实施例中,可以由包括在数据中心3000处的多个计算节点3100至3400之一执行应用,或者可以在多个计算节点3100至3400之间分发并执行应用。
在示例性实施例中,数据中心3000可以用于高性能计算(HPC)(例如,金融、石油、材料科学、气象预测)、企业应用(例如,扩展数据库)、大数据应用(例如,NoSQL数据库或内存中复制)。
在示例性实施例中,多个计算节点3100至3400中的至少一个可以是应用服务器。应用服务器可以被配置为执行应用,该应用被配置为在数据中心3000处执行各种操作。多个计算节点3100至3400中的至少一个可以是存储服务器。存储服务器可以被配置为存储在数据中心3000处生成或管理的数据。
在示例性实施例中,包括在数据中心3000中的多个计算节点3100至3400或其部分可以存在于同一站点或物理上彼此分离的站点,并且可以通过基于网络NT的无线通信或有线通信彼此通信。在示例性实施例中,可以由相同的存储器技术来实现或可以由不同的存储技术来实现包括在数据中心3000中的多个计算节点3100至3400。
尽管未在图中示出,但是数据中心3000的多个计算节点3100至3400中的至少一部分可以通过网络NT或通过任何其他的通信接口(未示出)与外部客户端节点(未示出)通信。多个计算节点3100至3400的至少一部分可以取决于外部客户端节点的请求来自动处理请求(例如,数据存储或数据传送),或者可以在任何其他的计算节点处理该请求。
在示例性实施例中,包括在数据中心3000中的计算节点3100至3400的数量是示例性的,并且本公开不限于此。另外,在每个计算节点中,处理器的数量、存储器的数量和存储设备的数量是示例性的,并且本公开不限于此。
在示例性实施例中,多个计算节点3100至3400中的每一个可以是参考图1至图19所描述的主机,并且分别包括在多个计算节点3100至3400中的存储设备3130至3400中的每一个可以是参考图1至图19所描述的存储设备。多个计算节点3100至3400可以基于参考图1至图19所描述的KV命令来分别控制存储设备3130至3400。存储设备3130至3400中的每一个可以被配置为管理如参考图1至图19所描述的内部KV对,并且可以基于参考图1至图19所描述的操作方法进行操作。
根据本公开的实施例,存储设备可以管理包括与各种admin操作相关的信息的内部键-值(KV)对。主机可以通过键-值接口所提供的键-值命令访问内部KV对,对存储设备执行各种admin操作。因此,因为不需要用于执行各种admin操作的单独的命令,所以可以简化主机与存储设备之间的接口。也就是说,提供了具有提高的性能和降低的成本的存储设备及其操作方法。
如在本领域中常见的,可以围绕执行期望功能的块来描述和示出实施例。在本文中可以被称为单元或模块等的这些块通过诸如逻辑门、集成电路、微处理器、微控制器、存储器电路、无源电子组件、有源电子组件、光学组件、硬连线电路等的模拟和/或数字电路物理地实现,并且可以可选地由固件和/或软件驱动。例如,电路可以具体实施在一个或多个半导体芯片中,或者在诸如印刷电路板等的衬底支撑件上。构成块的电路可以由专用硬件或由处理器(例如,一个或多个编程的微处理器和相关联的电路)来实现,或者由用于执行该块的一些功能的专用硬件和用于执行该块的其他功能的处理器的组合来实现。在不脱离本公开的范围的情况下,实施例的每个块可以被物理地分成两个或更多个交互和分立的块。类似地,在不脱离本公开的范围的情况下,实施例的块可以被物理地组合成更复杂的块。可以通过存储在非暂时性存储介质中并由处理器执行的指令实现实施例的一方面。
虽然已参考本公开的示例性实施例描述了本公开,但是对于本领域普通技术人员将清楚明白的是,在不脱离如所附权利要求中阐述的本公开的精神和范围的情况下,可以对其进行各种改变和修改。
Claims (20)
1.一种存储设备的操作方法,所述存储设备包括非易失性存储器件,所述方法包括:
从外部主机设备接收包括第一键的第一键-值KV命令;
响应于所述第一KV命令,从所述非易失性存储器件向所述外部主机设备发送与所述第一键相对应的第一值,作为第一用户数据;
从所述外部主机设备接收包括第二键的第二KV命令;以及
响应于所述第二KV命令,基于与所述第二键相对应的第二值执行第一管理操作,其中所述第一KV命令和所述第二KV命令是同一类型的KV命令。
2.根据权利要求1所述的方法,其中:
所述第一键包括与指示用户键的第一键组标识符和第一键名相关的信息,以及
所述第二键包括与指示内部键的第二键组标识符和第二键名相关的信息。
3.根据权利要求1所述的方法,其中,所述第二值包括与对应于所述第一管理操作的管理命令和命令标识符相关的信息。
4.根据权利要求1所述的方法,其中,响应于所述第一KV命令而从所述非易失性存储器件向所述外部主机设备发送与所述第一键相对应的所述第一值作为所述第一用户数据包括:
基于键索引来确定与所述第一键相对应的所述第一值的第一位置,所述键索引包括与多个键和分别对应于所述多个键的值的位置相关的信息;
基于所确定的第一位置,从所述非易失性存储器件读取所述第一值;以及
向所述外部主机设备发送所读取的第一值作为所述第一用户数据。
5.根据权利要求4所述的方法,其中,响应于所述第二KV命令而基于与所述第二键相对应的所述第二值来执行所述第一管理操作包括:
基于所述键索引来确定与所述第二键相对应的所述第二值的第二位置;
基于所确定的第二位置来读取所述第二值;以及
响应于所读取的第二值而执行所述第一管理操作。
6.根据权利要求5所述的方法,还包括:
将与所述第一KV命令相关联的第一操作日志写入日志缓冲区;
将包括所述第一操作日志的第一日志数据存储在所述非易失性存储器件中;以及
将第三键分配给所述第一日志数据,并基于所述第三键和存储所述第一日志数据的第三位置来更新所述键索引。
7.根据权利要求6所述的方法,还包括:
从所述外部主机设备接收包括所述第三键的第三KV命令;以及
响应于所述第三KV命令,将与所述第三键相对应的所述第一日志数据发送给所述外部主机设备,
其中,所述第一KV命令、所述第二KV命令和所述第三KV命令是同一类型的KV命令。
8.根据权利要求1所述的方法,其中,所述第二值被包括在存储于所述存储设备的存储器件中的内部键-值对中。
9.根据权利要求8所述的方法,其中,在所述存储设备的初始化过程中,将所述内部键-值对从所述非易失性存储器件加载到所述存储器件上。
10.根据权利要求8所述的方法,还包括:
从所述外部主机设备接收包括第四键的第四KV命令和第四值;
响应于所述第四KV命令,将所述第四值存储在所述内部键-值对中;
从所述外部主机设备接收包括所述第四键的第五KV命令;以及
响应于所述第五KV命令,执行与所述第四值相对应的第二管理操作。
11.根据权利要求10所述的方法,其中,所述第四值包括与对应于所述第二管理操作的管理命令和命令标识符相关的信息。
12.一种存储设备,包括:
非易失性存储器件,被配置为存储包括与用户键相对应的第一值的用户键-值对;以及
存储控制器,被配置为控制所述非易失性存储器件,其中,
所述存储控制器包括:
存储器件,被配置为存储:
内部键-值对,包括与内部键相对应的第二值,和
键索引,包括与所述用户键、所述内部键及所述第一值和所述第二值的位置相关的信息;以及
键-值KV管理器,被配置为:
基于所述键索引,确定在来自外部主机设备的第一键-值KV命令中包括的键是所述内部键还是所述用户键,
当所述键是所述用户键时,将所述第一值发送给所述外部主机设备,并且
当所述键是所述内部键时,执行与所述第二值相对应的第一管理操作。
13.根据权利要求12所述的存储设备,其中,在所述存储设备的初始化过程中,将所述内部键-值对从所述非易失性存储器件加载到所述存储器件上。
14.根据权利要求12所述的存储设备,其中,所述KV管理器还被配置为响应于来自所述外部主机设备的第二KV命令,将关于所述内部键-值对的信息发送给所述外部主机设备。
15.根据权利要求12所述的存储设备,其中:
响应于来自所述外部主机设备的第二KV命令,所述KV管理器还被配置为:
当包括在所述第二KV命令中的第二键是所述用户键时,将所述用户键-值对中的所述第一值更新为所述第二KV命令的第三值;以及
当包括在所述第二KV命令中的所述第二键是所述内部键时,将与所述第二值相对应的信息更新为所述第二KV命令的所述第三值;以及
所述第二值对应于设置特征命令,且与所述第二值相对应的所述信息是所述存储设备的特征信息。
16.根据权利要求12所述的存储设备,其中,响应于来自所述外部主机设备的第二KV命令,所述KV管理器还被配置为:
当包括在所述第二KV命令中的第二键是所述用户键时,将所述用户键-值对中的所述第一值更新为所述第二KV命令的第三值;以及
当包括在所述第二KV命令中的所述第二键是所述内部键时,将所述内部键-值对中的所述第二值更新为所述第二KV命令的所述第三值。
17.根据权利要求16所述的存储设备,其中,响应于从所述外部主机设备提供的并包括作为所述内部键的所述第二键的第三KV命令,所述KV管理器还被配置为执行与所述第三值相对应的第二管理操作。
18.根据权利要求12所述的存储设备,其中,所述存储控制器通过基于PCI-快速接口的物理端口与所述外部主机设备通信。
19.一种存储设备的操作方法,所述存储设备包括非易失性存储器件,所述方法包括:
从外部主机设备接收包括第一键的第一键-值KV命令;
确定所述第一键是内部键还是用户键;以及
当所述第一键是所述用户键时,针对存储在所述非易失性存储器件中的用户数据执行第一输入/输出操作,并且当所述第一键是所述内部键时,针对所述存储设备执行第一管理操作。
20.根据权利要求19所述的方法,其中,基于与所述第一键相对应的第一值来执行所述第一管理操作。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020200005368A KR20210092361A (ko) | 2020-01-15 | 2020-01-15 | 스토리지 장치 및 그것의 동작 방법 |
KR10-2020-0005368 | 2020-01-15 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113126910A true CN113126910A (zh) | 2021-07-16 |
Family
ID=76763130
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110051502.7A Pending CN113126910A (zh) | 2020-01-15 | 2021-01-14 | 存储设备及其操作方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11467739B2 (zh) |
KR (1) | KR20210092361A (zh) |
CN (1) | CN113126910A (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP3851950A1 (en) * | 2020-01-15 | 2021-07-21 | Samsung Electronics Co., Ltd. | Storage device and operation method thereof |
US11836133B2 (en) * | 2021-07-19 | 2023-12-05 | Samsung Electronics Co., Ltd. | In-memory database (IMDB) acceleration through near data processing |
US11934264B2 (en) * | 2021-11-22 | 2024-03-19 | Western Digital Technologies, Inc. | ECC parity biasing for Key-Value data storage devices |
US11940911B2 (en) * | 2021-12-17 | 2024-03-26 | Netapp, Inc. | Persistent key-value store and journaling system |
US11853607B2 (en) * | 2021-12-22 | 2023-12-26 | Western Digital Technologies, Inc. | Optimizing flash memory utilization for NVMe KV pair storage |
US11928336B2 (en) | 2022-03-03 | 2024-03-12 | Samsung Electronics Co., Ltd. | Systems and methods for heterogeneous storage systems |
US20230297945A1 (en) * | 2022-03-16 | 2023-09-21 | Dell Products L.P. | Capture of emmc card identification for component traceability of pcie daughter card |
JP2023140128A (ja) * | 2022-03-22 | 2023-10-04 | キオクシア株式会社 | 永続記憶装置、ホスト及び永続記憶装置の制御方法 |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5524144B2 (ja) | 2011-08-08 | 2014-06-18 | 株式会社東芝 | key−valueストア方式を有するメモリシステム |
US9075710B2 (en) * | 2012-04-17 | 2015-07-07 | SanDisk Technologies, Inc. | Non-volatile key-value store |
US9037556B2 (en) | 2012-12-03 | 2015-05-19 | Vmware, Inc. | Distributed, transactional key-value store |
US9785356B2 (en) | 2013-06-26 | 2017-10-10 | Cnex Labs, Inc. | NVM express controller for remote access of memory and I/O over ethernet-type networks |
JP6361223B2 (ja) | 2014-03-27 | 2018-07-25 | 日本電気株式会社 | トランザクションシステム |
US9846642B2 (en) | 2014-10-21 | 2017-12-19 | Samsung Electronics Co., Ltd. | Efficient key collision handling |
US10210168B2 (en) | 2015-02-23 | 2019-02-19 | International Business Machines Corporation | Managing data in storage according to a log structure |
US10346048B2 (en) | 2015-04-10 | 2019-07-09 | Samsung Electronics Co., Ltd. | Electronic system with storage management mechanism and method of operation thereof |
EP3916536A1 (en) | 2015-12-28 | 2021-12-01 | Huawei Technologies Co., Ltd. | Data processing method and nvme storage device |
WO2017214862A1 (zh) | 2016-06-14 | 2017-12-21 | 华为技术有限公司 | 数据访问方法和相关装置及系统 |
KR20180087925A (ko) | 2017-01-25 | 2018-08-03 | 삼성전자주식회사 | 논리 어드레스와 물리 어드레스 사이에서 해싱 기반 변환을 수행하는 스토리지 장치 |
KR102406666B1 (ko) | 2017-09-20 | 2022-06-08 | 삼성전자주식회사 | 스냅샷 기능을 지원하는 키-밸류 스토리지 장치 및 상기 키-밸류 스토리지 장치의 동작 방법 |
US10868679B1 (en) * | 2019-07-25 | 2020-12-15 | Cypress Semiconductor Corporation | Nonvolatile memory device with regions having separately programmable secure access features and related methods and systems |
-
2020
- 2020-01-15 KR KR1020200005368A patent/KR20210092361A/ko unknown
- 2020-10-21 US US17/076,619 patent/US11467739B2/en active Active
-
2021
- 2021-01-14 CN CN202110051502.7A patent/CN113126910A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
US11467739B2 (en) | 2022-10-11 |
US20210216220A1 (en) | 2021-07-15 |
KR20210092361A (ko) | 2021-07-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113126910A (zh) | 存储设备及其操作方法 | |
EP3851950A1 (en) | Storage device and operation method thereof | |
US11782632B2 (en) | Selective erasure of data in a SSD | |
CN107908571B (zh) | 一种数据写入方法、闪存装置及存储设备 | |
US10459803B2 (en) | Method for management tables recovery | |
US11194711B2 (en) | Storage device | |
KR20210016184A (ko) | 스토리지 장치, 그것을 포함하는 메모리 시스템 및 그것의 동작 방법 | |
KR20170085951A (ko) | 버저닝 저장 장치 및 방법 | |
KR20140128824A (ko) | 속성 데이터를 이용한 데이터 관리 방법 | |
US20210034513A1 (en) | Storage device and operating method thereof | |
EP4273706A1 (en) | Storage device, memory device, and system including storage device and memory device | |
CN117111831A (zh) | 存储器装置、存储装置以及计算系统 | |
US20080059706A1 (en) | Storage apparatus, storage system and control method for storage apparatus | |
US20140201167A1 (en) | Systems and methods for file system management | |
US20210208808A1 (en) | Host Supported Partitions in Storage Device | |
US20230350832A1 (en) | Storage device, memory device, and system including storage device and memory device | |
US20230359389A1 (en) | Operation method of host configured to communicate with storage devices and memory devices, and system including storage devices and memory devices | |
US9501290B1 (en) | Techniques for generating unique identifiers | |
US20230376217A1 (en) | Storage device, memory device, and computing system including the same | |
US20230359394A1 (en) | Operating method of memory device for managing map data of each of plurality of storage devices, computing system including memory device, and operating method of computing system | |
EP4273708A1 (en) | Operation method of host configured to communicate with storage devices and memory devices, and system including storage devices and memory devices | |
US20230376238A1 (en) | Computing system for managing distributed storage devices, and method of operating the same | |
US20230359567A1 (en) | Storage device, computing device including storage device and memory device, and operating method of computing device | |
US20240045597A1 (en) | Storage device and operation method thereof | |
EP4283474A1 (en) | Storage device, memory device, and computing system including the same |
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 |