CN112988615A - 键值存储设备和操作方法 - Google Patents
键值存储设备和操作方法 Download PDFInfo
- Publication number
- CN112988615A CN112988615A CN202011431455.0A CN202011431455A CN112988615A CN 112988615 A CN112988615 A CN 112988615A CN 202011431455 A CN202011431455 A CN 202011431455A CN 112988615 A CN112988615 A CN 112988615A
- Authority
- CN
- China
- Prior art keywords
- key
- value
- stream
- storage device
- block
- 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
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/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
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0253—Garbage collection, i.e. reclamation of unreferenced memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/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/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0652—Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/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
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1041—Resource optimization
- G06F2212/1044—Space efficiency improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7205—Cleaning, compaction, garbage collection, erase control
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7209—Validity control, e.g. using flags, time stamps or sequence numbers
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
一种键值存储设备包括:被划分成块的非易失性存储器(NVM);包括键缓冲器、值缓冲器和映射缓冲器的数据缓冲器;以及包括键值管理器的控制器。键值管理器接收命令以及包括键和分别与键对应的值的键值对,将键与值分离,将键存储在键缓冲器中并将值存储在值缓冲器中,通过组合存储在值缓冲器中的值的集合来生成值流,通过组合键的集合并合并分别与所述键的集合中的键对应的值的索引来生成键流,以及更新存储在映射缓冲器中的并指示键流的索引当中的索引是否与NVM的块中的每一个相关的键矩阵。
Description
相关申请的交叉引用
本申请要求于2019年12月13日向韩国知识产权局提交的第10-2019-0167144号韩国专利申请的权益,其主题通过引用结合于此。
技术领域
本发明构思涉及存储设备和用于存储设备的操作方法。更具体地,本发明构思涉及使用键值(key-value)关系来存储数据的键值存储设备和用于键值存储设备的操作方法。
背景技术
大多数现代电子设备包括能够存储和取回(retrieve)数据的存储器组件。这种电子设备需要用于存储和取回数据的操作方法。为此,电子设备可以包括能够在与外部主机通信的同时存储数据和取回数据的存储设备或存储系统。
许多现代存储设备和存储系统使用非易失性存储器,该非易失性存储器即使在没有施加电力的情况下也能够保持(preserve)数据连续性。存储设备可以被分类为块存储、文件存储、对象存储等。块存储基于物理位置管理数据,并且文件存储基于逻辑序列(logical sequence)管理数据。相比之下,对象存储可以基于唯一标识符管理数据。当要存储的普通数据(ordinary data)的量很大时,块存储和文件存储是有用的,而当要存储的不太普通(或非典型或异构的(disparate))数据的量很大时,对象存储是有效的替选方案。对象存储的一个示例是使用键值关系存储数据的键值存储。
发明内容
本发明构思的实施例提供了键值存储设备,其能够通过使用键流(key stream)来确定存储在非易失性存储器设备的每个块中的值的有效性,来减少与垃圾收集操作的运行相关联的计算开销并提高整体处理速度。本发明构思的实施例提供了操作键值存储设备的方法,其通过使用键流来确定存储在非易失性存储器设备的每个块中的值的有效性,来减少与垃圾收集操作的运行相关联的计算开销并提高整体处理速度。
根据本发明构思的一个方面,提供了一种键值存储设备,该键值存储设备包括被划分成块的非易失性存储器(NVM),包括键缓冲器、值缓冲器和映射缓冲器的数据缓冲器,以及包括键值管理器的控制器,其中,键值管理器被配置为:接收命令和键值对,所述键值对包括键和分别与键对应的值;将键与值分离;将键存储在键缓冲器中,并将值存储在值缓冲器中;通过组合存储在值缓冲器中的值的集合来生成值流;通过组合键的集合并合并分别与所述键的集合中的键对应的值的索引来生成键流;以及更新存储在映射缓冲器中的并指示键流的索引当中的索引是否与NVM的块中的每一个相关的键矩阵。
根据本发明构思的一个方面,提供了一种键值存储设备,该键值存储设备包括:非易失性存储器(NVM),被划分成块,并且被配置为存储包括键的键流以及存储包括分别与键对应的值的值流;数据缓冲器,被配置为存储键矩阵,所述键矩阵为键流当中的每个键流指示与键流中的键对应的值是否被存储在块中的每一个中;以及控制器,被配置为基于键矩阵从块中选择目标块,并对目标块执行垃圾收集。
根据本发明构思的一个方面,提供了一种用于键值存储设备的操作方法,该键值存储设备包括被划分成块的非易失性存储器(NVM)。该操作方法包括:生成并存储键流,该键流包括键和分别与键对应的值的地址;对于每个键流,更新指示是否包括与块中的每一个相关的地址的键矩阵;基于键矩阵,从块当中选择目标块;以及对目标块执行垃圾收集操作。
附图说明
从结合附图的以下详细描述中,将更清楚地理解本发明构思的实施例,在附图中:
图1是示出根据本发明构思的实施例的存储系统的框图;
图2是在一个示例中进一步示出图1的键值存储设备的框图;
图3是在一个示例中示出图1和图2的键值存储设备的操作的概念图;
图4A和图4B是进一步示出图3的键值管理器的操作的示例的概念图;
图5是概述根据本发明构思的实施例的键值存储设备的操作方法的流程图;
图6、图7A和图7B是进一步示出根据本发明构思的实施例的键值存储设备的操作的概念图;
图8A、图8B、图8C和图8D是进一步示出根据本发明构思的实施例的键值存储设备的操作的相关概念图;
图9和图10是分别概述根据本发明构思的实施例的用于键值存储设备的操作方法的各个方面的流程图;
图11是示出根据本发明构思的实施例的存储设备的框图;以及
图12是示出根据本发明构思的实施例的电子设备的框图。
具体实施方式
图1是示出根据实施例的存储系统10的框图。
参考图1,存储系统10通常可以包括存储设备100和主机200。存储设备100可以包括控制器110、数据缓冲器130和非易失性存储器(NVM)150。主机200可以经由一个或多个接口与存储设备100通信。这里,例如,主机200可以被实现为应用处理器(AP)或片上系统(SoC)。
存储设备100的控制器110可以包括键值存储设备或“键值存储”(例如,键值固态驱动器(SSD))。在这方面,键值存储是使用键值对高效处理数据的设备。这里,“键值对”可以包括唯一的键和对应于该键的值。键值对可以被称为“元组(tuple)”或“键值元组”。在键值对中,“键”可以表示为任何数据串(例如,文件名、统一资源标识符(URI)、哈希等),并且“值”可以表示为任何类型的数据(例如,图像、用户偏好的文件、文档等)。键的大小可以变化和/或值的大小可以变化。例如,值的大小可以根据值的数据类型而变化。
在下文中,将描述存储设备100被假设为键值存储的实施例。参考图1,例如,存储设备100可以被认为是键值存储。然而,存储设备100不限于仅键值存储,并且可以应用于根据对象单元管理数据的任何对象高速缓存系统或任何对象存储系统。因此,图1的存储设备100可以使用除了键值对方法之外的方法根据对象单元来管理数据。
主机200可以向存储设备100传送(例如,生成和发送)至少一个命令(CMD)、至少一个键(KEY)和至少一个值(VALUE)。该命令可以是(例如)用于取回存储在存储设备100中的数据的读取(或获取)请求、或者用于将数据(例如,键值对)写入存储设备100的写入(或放入)请求。作为示例,主机200可以向存储设备100发送包括键的获取命令,并且存储设备100可以响应于获取命令从NVM 150读取与键相对应的值。
控制器110可以响应于来自主机200的写入请求向NVM 150写入值,或者响应于来自主机200的读取请求从NVM 150读取存储的值。因此,在图1的所示示例中,控制器110包括键值管理器120。
键值管理器120可以接收命令CMD中包括的(或与命令CMD一起传送的)键值对,并且将键值对中包括的多个键(以下称为“键”)与多个值(以下称为“值”)“分离”。在这点上,键值管理器120可以提取键值对中包括的键,并将键存储在数据缓冲器130中。此外,键值管理器120可以提取键值对中包括的值,并将值存储在数据缓冲器130中。
当一定数量的值(例如,一定量的数据)已经存储在数据缓冲器130中时,键值管理器120可以从存储的值生成“值流”。
当一定数量的键(例如,一定量的数据)已经存储在数据缓冲器130中时,键值管理器120可以通过将键与“索引”组合来生成“键流”,所述“索引”与分别对应于键的值对应。此后,键值管理器120可以将生成的值流和/或生成的键流存储在NVM 150的不同区域中。在这点上,对应于值的“索引”可以是识别存储该值的NVM 150的区域的位置信息。
键值管理器120还可以基于生成的键流来更新数据缓冲器130中存储的键矩阵140。也就是说,对于每个键流,键矩阵140可以包括指示分别与一个键流中包括的键对应的值是否被存储在NVM 150的一个或多个块中的信息。
换句话说,对于每个键流,键矩阵140可以包括存储键流和与键流相对应的值的块之间的“匹配信息”。例如,键矩阵140提供针对每个键流指示是否包括与一个或多个块相关的索引的匹配信息。例如,假设NVM 150包括三(3)个块(例如,第一块、第二块和第三块),针对每个键流,键矩阵140可以包括指示是否包括与第一块相关的索引、是否包括与第二块相关的索引以及是否包括与第三块相关的索引的值。下文将参考图4A和图4B呈现由键矩阵140和键值管理器120执行的更新功能的更详细的描述。
键值管理器120还可以使用键矩阵140在存储设备100内执行垃圾收集操作(或控制其运行)。在这点上,键值管理器120可以使用键矩阵140从NVM 150的块当中选择“目标块”,并且对目标块执行垃圾收集操作。
例如,键值管理器120可以使用键矩阵140来识别包括与NVM 150的块当中的每个块相关的索引的键流的数量,并且可以选择具有最少数量的所识别的键流的块作为目标块。换句话说,键值管理器120可以用于通过引用键矩阵140来选择(或瞄准(target))应当已经存储(或预期已经存储)最少数量的有效值的块。此后,键值管理器120可以至少部分地控制对目标块的垃圾收集操作的运行。将参考图8A至图8D以一些额外的细节提供对一种可能的垃圾收集操作的描述。
数据缓冲器130可以包括被配置为存储键、值和键矩阵140的至少一个存储器设备。例如,数据缓冲器130可以包括易失性存储器设备,诸如动态随机存取存储器(RAM)(DRAM)和静态RAM(SRAM)。
NVM 150可以包括存储器单元阵列(MCA),其中存储器单元阵列被划分成多个存储器块(以下称为“块”)(例如,图1中的块BLK1至BLKz)。在这种情况下,NVM 150可以被不同地划分(例如,物理上划分和/或逻辑上划分)成差异化的(例如,可寻址的)块。每个块可以被进一步划分成(例如)多个页(例如,PG1至PGk)。这里,“z”和“k”是正整数,并且可以根据实施例而变化。例如,块可以是擦除的单元,并且页可以是写入和读取的单元。在一些实施例中,存储器单元阵列可以包括多个面(plane)、多个裸芯(die)和/或多个芯片。作为示例,NVM 150可以包括快闪存储器设备(例如,NAND快闪存储器设备)。然而,本发明构思不限于此,并且NVM 150可以包括电阻存储器设备,诸如电阻RAM(rRAM)、相变RAM(PRAM)、磁RAM(MRAM)等。
存储系统10可以被实现为(例如)个人计算机(PC)、数据服务器、网络耦合存储、物联网(IoT)设备或便携式电子设备。便携式电子设备可以包括膝上型计算机、移动电话、智能电话、平板PC、个人数字助理(PDA)、企业数字助理(EDA)、数码相机、数码摄像机、音频设备、便携式多媒体播放器(PMP)、个人导航设备(PND)、MP3播放器、手持游戏控制台、电子书、可穿戴设备等。
在一些实施例中,存储设备100可以包括嵌入在电子设备中的内部存储器。例如,存储设备100可以包括嵌入式通用快闪存储(UFS)存储器设备或嵌入式多媒体卡(eMMC)。在一些实施例中,存储设备100可以包括从电子设备可移除的外部存储器。例如,存储设备100可以包括UFS存储器卡、紧凑型快闪(CF)存储器卡、安全数字(SD)卡、微型SD卡、迷你型SD卡、极限数字(xD)卡或记忆棒。
与符合本发明构思的某些实施例的键值存储相比,比较存储设备可以单独(individually)存储分别从键值对分离的键和值,并且使用该值中包括的有效性信息来执行垃圾收集。因此,当比较存储设备对目标块执行垃圾收集时,键值存储读取目标块中存储的所有值,通过使用读取的值中包括的有效性信息来验证每个值是否有效,以及然后仅将有效值存储在新区域中。因为此方法不会选择性地从目标块仅读取有效值,所以需要相对高的计算开销来执行垃圾收集操作。这减慢了存储设备的整体处理能力。
额外地或替选地,比较存储设备可以使用多映射(multi-map)表关于有效性信息来识别每个值的有效性。因此,多映射表是这样的表,对于通过连续合并而存储的值,该表包括指示连续值和存储第一值的地址中的每一个的有效性的有效位。当执行垃圾收集时,比较存储设备必须识别与从目标块读取的值相关联的有效性信息中包括的地址信息和顺序信息,并且通过识别在多映射表中验证的地址和对应于所识别的顺序的有效位来确定相应的值是否是有效值。此外,多映射表中定义的连续合并的值的数量将根据值的大小而变化。换句话说,当值的大小减小时,因为连续合并的值的数量增加,所以多映射表的大小也增加。而且,当值的大小增加时,连续合并的值的数量减少,并且因此,多映射表的大小也减少。结果,比较存储设备遭受有效性验证所需的信息的大小导致取决于值的大小的有效性验证操作的不稳定性的问题。
相比之下,根据本发明构思的实施例的键值存储设备可以通过合并包括匹配信息的索引来生成键流,并且可以生成包括关于每个键流的索引的信息的键矩阵,其中该匹配信息识别NVM 150中的存储对应于键的值的区域(例如,块BLK1至BLKz)。因此,当执行垃圾收集时,根据本发明构思的实施例的键值存储设备可以使用键矩阵读取包括与经历垃圾收集的目标块相关的索引的键流,并且从读取的键流中仅获得与目标块相关的值的地址。因此,根据本发明构思的实施例的键值存储设备可以极大地减少与垃圾收集操作相关联的计算开销,并提高整体处理速度。
此外,根据本发明构思的实施例的键值存储设备可以使用具有与块的数量和键流的数量相对应的大小的键矩阵。因此,根据本发明构思的实施例的键值存储设备可以防止取决于值的大小的变化的有效性验证操作的不稳定性,因为确定有效性所需的信息具有恒定的大小,而与值的大小无关。
图2是在一个示例中进一步示出图1的存储设备100的框图。参考图1和图2,存储设备100再次包括键值管理器120、数据缓冲器130和NVM 150。
键值管理器120可以包括键值提取器121、压缩模块122和垃圾收集(GC)模块123。
键值提取器121可以提取(例如)从主机200接收的命令(CMD)中包括的键(KEY)和值(VALUE)。键值提取器121然后可以将提取的键存储在数据缓冲器130的键缓冲器131中,并将提取的值存储在数据缓冲器130的值缓冲器132中。在这点上,键缓冲器131和值缓冲器132可以被配置为分立的(separate)存储器元件。替选地,键缓冲器131和值缓冲器132可以被配置为数据缓冲器130的不同区域。
当值缓冲器132中存储的值的数量(或容量(volume))(以下称为“值的集合”)变为等于或大于预定数量的值或与值相关联的预定容量的数据(以下称为“值集合限制”)时,键值提取器121可以基于值的集合生成值流(ST_VAL)。例如,键值提取器121可以通过顺序排列值的集合来生成值流。键值提取器121可以将生成的值流存储在NVM 150的第二区域AR2中。
当重复提取键并将其存储在键缓冲器131中时,可以将具有足够数据量以生成键流(ST_KEY)的键的集合存储在键缓冲器131中。当键缓冲器131中存储的键的集合达到或超过预定键集合限制时,键值提取器121还可以基于多个键(以下称为“键的集合”)生成键流(ST_KEY)。例如,键值提取器121可以通过连续排列键的集合,并将分别与键的集合中包括的键对应的值的索引与键的集合合并来生成键流。这里,值的索引可以识别存储该值的NVM150的区域。例如,值的索引可以包括在NVM 150的第二区域AR2中存储该值的物理地址。
在一些实施例中,键值提取器121可以使用键表(key table)来管理NVM 150的第一区域AR1中存储的物理地址。例如,键表可以被生成为哈希表,该哈希表将对应于键的哈希键作为该键的映射索引与该键一起存储。
键值提取器121还可以基于生成的键流来更新键矩阵140,该键矩阵140指示是否包括针对每个键流的与NVM 150的块中的每一个相关的索引,并且可以将更新的键矩阵140存储在映射缓冲器133中。例如,当值的索引是NVM 150的区域的存储该值的物理地址时,键值提取器121可以通过识别NVM 150的块当中的与包括在键流中的该物理地址相关的块,并且通过改变键矩阵140中生成的键流和与所识别的块对应的值来更新键矩阵140。
压缩模块122可以对NVM 150的第一区域AR1中存储的至少一个键流执行压缩操作。在这种背景下,压缩操作可以通过删除对应于NVM 150中存储的无效值的至少一个键来生成“新的键流”。例如,压缩操作可以以基于长结构化合并(LSM)树的数据结构压缩数据。
压缩模块122可以读取NVM 150的第一区域AR1中存储的至少一个键流,并识别无效键。这里,“无效键”可以是对应于已经接收到从主机200接收的删除命令CMD(或者已经成为该删除命令的对象(subject))的值的键。压缩模块122可以仅使用包括在至少一个键流中的有效键来生成新的键流。压缩模块122可以将生成的新的键流写入NVM 150的第一区域AR1。
在生成新的键流时,压缩模块122可以改变或删除与键矩阵140中包括至少一个无效键的至少一个键流相对应的值。此外,压缩模块122可以基于新生成的键流来更新键矩阵140。
GC模块123可以关于NVM 150的一个或多个块执行垃圾收集。例如,GC模块123可以基于键矩阵140识别包括与NVM 150的每个块相关的索引的键流的数量,选择具有最少数量的所识别的键流ST_KEY的块作为目标块,并对目标块执行GC操作。将参考图8A至图8D以一些额外的细节描述这种操作的一种可能的方法。
图3是在一个示例中示出根据本发明构思的实施例的键值存储设备的操作的概念图。即,图3是示出用于键值对的存储操作和用于键值存储设备的键矩阵的生成操作的概念图。
参考图1、图2和图3,键值管理器120可以接收键值对(KVP),并且将键值对中包括的键(KEY)与值(VAL)分离。键值管理器120然后可以通过合并值的集合来生成值流,并将所生成的值流存储在NVM 150的第二区域AR2中。
键值管理器120可以将与值相关联的索引(Idx)与键组合,并将(索引+键)的组合存储在数据缓冲器130中。这里,索引可以识别NVM 150的第二区域AR2中存储与索引相关联的值的物理地址。然而,本发明构思不限于此,并且索引可以包括识别存储值的块的块信息。
此外,键值管理器120可以通过合并键的集合来生成键流,其中键的集合中的每个键与索引组合,并且键值管理器120可以将所生成的键流存储在NVM 150的第一区域AR1中。键值管理器120可以使用存储在NVM 150的第一区域AR1中的存储键流的物理地址来生成键表(KT)。换句话说,键表可用于存储其中存储有键流和值流的NVM 150的物理地址。
此后,键值管理器120可以通过使用键流中包括的索引来识别NVM 150的哪个块存储了键流,并且可以使用块识别结果来更新键矩阵(KM)。
图4A和图4B是在一个示例中示出根据本发明构思的实施例的键值管理器的操作的概念图。也就是说,图4A和图4B是示出其中键值管理器更新键矩阵的操作的概念图。根据本发明构思的实施例的用于键值管理器的操作方法可以由图1、图2和图3的键值管理器120来执行。
参考图1、图2、图3和图4A,键值管理器120可以通过将键(例如,Key1、Key2和Key3)与作为分别对应于键的值(例如,Value1、Value2和Value3)的索引的物理地址(例如,Value1PPN、Value2PPN和Value3PPN)组合来生成第四键流(ST_KEY4)。
键值管理器120可以通过引用键流ST_KEY中包括的物理地址(Value1PPN、Value2PPN和Value3PPN)来识别其中存储与键(Key1、Key2和Key3)相对应的值(Value1、Value2和Value3)的至少一个块。也就是说,从图4A可以看出,键值管理器120可以识别出根据第一物理地址(Value1PPN)将第一值(Value1)存储在第一块BLK1中;根据第二物理地址(Value2PPN)将第二值(Value2)存储在第三块BLK3中;以及根据第三物理地址(Value3PPN)将第三值(Value3)存储在第五块BLK5中。
参考图4B,键值管理器120还可以用于使用所识别的块信息来更新键矩阵(KM)。这里,键矩阵可以被实现为二维矩阵,其中一个轴是与NVM 150中的多个块相对应的块编号,而另一个轴是与多个键流相对应的键流编号。在图4B的所示示例中,键矩阵使用标记值(即,“0”或“1”)来指示特定块是否与特定键流相关联。例如,“0”标记值可用于指示特定键流不与特定块相关联,以及“1”标记值指示相反的情况。
在这点上,键值管理器120可以识别键矩阵的键流编号当中的与新生成的键流相对应的键流编号的行,识别与键矩阵的块编号当中的对应于识别的块的块编号相关联的列,并且改变对应于识别的行和识别的列的值。例如,参考图2、图4A和图4B,键值管理器120可以将键矩阵中的第四行识别为对应于图4A的生成的第四键流ST_KEY4,并且识别分别对应于所识别的至少一个块(BLK1、BLK3或BLK5)的第一列、第三列和第五列。此外,键值管理器120可以使用(例如)识别(行,列)(例如,((4,1)、(4,3)、(4,5)))的形式以及值“0”和“1”来改变对应于所识别的行和所识别的列的值。
在图4A的所示示例中,三(3)个键和三(3)个索引被组合到第四键流ST_KEY4中,但是这仅仅是教导示例,并且本发明构思不限于此。可以以各种键流格式隐含(implicate)更多或更少的键和/或索引。
图5是在一个示例中概述根据本发明构思的实施例的用于键值存储设备的操作方法的流程图。关于图5描述的方法可以与用于键值对的存储操作和用于键值存储设备中的键矩阵的生成操作结合使用,如图1、图2和图3中描述的那样。
参考图1、图2、图3和图5,存储设备100可以从主机200接收包括键和值的数据(S110)。例如,存储设备100可以从主机200接收包括键和值的命令CMD。接下来,存储设备100可以从接收的数据中分离键和值(S120)。例如,存储设备100可以将键与值分离,并将分离的键和分离的值分别存储在数据缓冲器130中。
接下来,存储设备100可以生成并存储值流(S130)。这可以例如通过组合(或合并)分离的值当中的“第一值”来实现,以便生成值流。也就是说,当在数据缓冲器130中累积值的集合时,存储设备100可以通过顺序排列第一值来生成值流。这里,存储设备100可以将生成的值流存储在NVM 150的指定部分中。
接下来,存储设备100可以通过将分离的键当中的“第一键”与对应于第一键的值的索引合并来生成键流(S140)。例如,当在数据缓冲器130中累积键的集合时,存储设备100可以通过将键和与对应于第一键的值相关联的索引组合(或合并)来生成键流。在这种情况下,索引当中的每个索引可以是与NVM 150中的存储相应值的区域相对应的物理地址。
接下来,存储设备100可以基于键流更新键矩阵(S150)。这里,键矩阵可以包括匹配信息,该匹配信息针对键流指示索引是否与NVM 150的一个或多个块“相关”。例如,存储设备100可以识别键流中包括的索引Idx与NVM 150的块当中的哪个块相关,并且可以通过改变与键流相对应的值和由键矩阵跟踪的与键流相关的块来更新键矩阵。
接下来,存储设备100可以存储键流(S160)。例如,存储设备100可以将生成的键流存储在NVM 150的指定部分中。
图6是在一个示例中进一步示出根据本发明构思的实施例的键值存储设备的操作的概念图。具体地,图6是进一步示出可以由图1、图2和图3的键值存储设备100执行的压缩操作的概念图。
参考图1、图2、图3和图6,键值管理器120可以(1)从NVM 150的第一区域AR1读取两个或更多个无效键流(ST_IK)。并且键值管理器120可以响应于从主机200接收的各种命令(CMD),更新指示键流中包括的键是否有效的有效性信息,如哈希表(HT)所指示的。键值管理器120还可以基于哈希表HT确定该键流是否是无效键流。例如,当从主机200接收到指向(或识别)第一值的擦除命令CMD时,键值管理器120可以基于组合的索引在哈希表HT中识别对应于第一值的第一键,并且更新哈希表HT以指示第一键的无效。
然后,键值管理器120可以(2)通过合并先前读取的无效键流来生成合并的键流(ST_MK)。例如,如上所述,键值管理器120可以通过删除一个或多个无效键来生成合并的键流,以便生成有效键流。因此,图6的合并的键流仅包括有效键。
键值管理器120现在可以(3)在NVM 150的第一区域AR1中写入合并的键流。此外,键值管理器120可以更新键表KT中的合并的键流的物理地址,删除无效键流,并且更新哈希表中的对应于无效键流的有效性信息。
键值管理器120可以关于无效键流和合并的键流ST_MK来更新键矩阵。例如,键值管理器120可以从键矩阵中删除对应于无效键流的值,或者改变与合并的键流中包括的索引相关的多个块的标记值。
此后,键值管理器120可以通过引用键矩阵来关于无效值执行GC。在基于键矩阵KM执行GC时,可以从NVM 150的第二区域AR2中删除无效值。
图7A和图7B是在一个示例中示出根据本发明构思的实施例的键值管理器的操作的概念图。图7A和图7B是示出可以由键值管理器执行的压缩操作的概念图。
参考图1、图2、图3和图7A,键值管理器120可以从存储的键流中读取第二键流(ST_KEY2)和第三键流(ST_KEY3)作为相应的无效键流(ST_IK)。
另外,键值管理器120可以从第二键流ST_KEY2和第三键流ST_KEY3中的每一个提取有效键和与有效键合并的索引。也就是说,键值管理器120可以从第二键流ST_KEY2提取与对应于有效键的第一键(Key1)和第一值(Value1)相关联的第一物理地址(Value1PPN)、以及与第二键(Key2)和第二值(Value2)相关联的第二物理地址(Value2PPN)。而且,键值管理器120可以从第三键流ST_KEY3提取与对应于有效键的第六键(Key 6)和第六值(Value6)相关联的第六物理地址(Value 6PPN)。
键值管理器120现在可以通过合并提取的有效键和从有效键提取的索引来生成新的键流(ST_MK)。也就是说,参考图7A,键值管理器120可以通过将提取的第一键的第一物理地址与第一值合并、将第二键的第二物理地址与第二值合并、以及将第六键的第六物理地址与第六值合并来生成第五键流(ST_KEY5)。
此外,键值管理器120可以关于新的键流和无效键流更新键矩阵。例如,首先,基于新的键流中包括的地址,键值管理器120可以识别其中存储与新的键流的键相关的值的至少一个块。参考图7A,键值管理器120可以识别存储在NVM 150的第六块BLK6或第二块BLK2中的与第五键流中包括的键相对应的值中的每一个。
然后,键值管理器120可以识别键矩阵中的对应于合并的键流的行和对应于所识别的块的列,并且可以改变对应于键矩阵中的所识别的行和所识别的列的值。
参考图7B,键值管理器120可以将对应于第五键流的行识别为第五行,将对应于所识别的块(BLK6和BLK2)的列分别识别为第二列和第六列,并将对应于所识别的行和所识别的列的标记值从“0”改变为“1”。
此外,键值管理器120可以识别键矩阵中的对应于无效键流的行,并且改变对应于所识别的行的值。参考图7B,键值管理器120可以将第二行和第三行识别为键矩阵中的与包括无效键流的部分的第二键流和第三键流相对应的行,并且可以将所识别的第二行和第三行上的所有标记值“1”改变为“0”。
关于图7B,虽然关于无效键流更新键矩阵的方法已经被描述为包括将键矩阵中的对应于无效键流的标记值改变为“0”的步骤,但是该方法可以替选地被实现为其中对应于无效键流的行仅仅从键矩阵中被擦除的方法。
图8A、图8B、图8C和图8D(此后,包括图8A至图8D在内)是在一个示例中示出根据本发明构思的实施例的键值存储设备的操作的相关概念图。也就是说,图8A至图8D概念性地示出图1至图3的存储设备100的垃圾收集(GC)操作。
这里,键值管理器120可以参考键矩阵(KM)选择要对其执行GC的目标块。例如,键值管理器120可以通过使用键矩阵针对NVM 150的每个块识别包括与每个块相关的索引的键流的数量,并且可以使用识别的结果从块当中选择目标块。在下文中,为了便于描述,假设如图8A所示,键矩阵具有对应于八(8)个键流(例如,ST_KEY1至ST_KEY8)和八个块(例如,BLK1至BLK8)的64个值。然而,本公开不限于此,并且键矩阵可以包括对应于任何合理数量的键流和/或块的值。另外,在下文中,为了描述方便,假设对应于值的索引是识别存储该值的区域的物理地址。
例如,键值管理器120可以使用键矩阵KM(①)为每个块编号识别标记值“1”的数量。这里,键矩阵KM中的标记值“1”意味着键流包括与相应块相关的地址。因此,键值管理器120可以通过计数对应于每个块的行中的标记值“1”的数量来识别包括与每个块相关的地址的键流的数量。
例如,参考图8A,键值管理器120可以识别在对应于第一块(BLK1)的列中,对应于键流编号(4、6和7)的行的标记值是“1”。换句话说,键值管理器120可以识别与第一块BLK1相关的地址被分别包括在第四键流(ST_KEY4)、第六键流(ST_KEY6)和第七键流(ST_KEY7)中。因此,键值管理器120可以识别出包括与第一块BLK1相关的地址的键流的数量是三(3)。另一方面,通过使用键矩阵,根据本发明构思的实施例的存储设备100可以包括单独的计数器(未示出),该计数器对对应于每个块的列中的“1”标记值的数量进行计数。
接下来,键值管理器120可以选择具有最少数量的包括与块相关的地址的键流的块作为目标块(②)。例如,参考图8A,键值管理器120可以选择第二块(BLK2)作为目标块,因为它具有最少数量的“1”标记值。接下来,键值管理器120可以从键矩阵中识别包括与目标块相关的地址的至少一个键流(③)。例如,参考图8A,键值管理器120可以识别对应于标记值“1”的行是对应于作为目标块的第二块BLK2的第二列中的第三行。接下来,键值管理器120可以将对应于第三行的键流识别为第三键流(ST_KEY3)。
接下来,参考图8B,键值管理器120可以从NVM 150读取所识别的第三键流ST_KEY3(④),并且识别与目标块相关的地址(⑤)。例如,键值管理器120可以读取第三键流,并且从读取的第三键流中将第五值Value5的第五物理地址Value5PPN和第六值Value6的第六物理地址Value6PPN识别为与第二块相关的地址。
接下来,键值管理器120可以从所识别的地址生成GC读取列表(GC Read List)(⑥)。接下来,键值管理器120可以使用GC读取列表从目标块读取值(⑦)。例如,键值管理器120可以使用第五值Value5的第五物理地址Value5PPN和第六值Value6的第六物理地址Value6PPN生成GC读取列表,并且可以通过使用GC读取列表从第二块BLK2读取第五值Value5和第六值Value6。
接下来,参考图8C,键值管理器120可以使用读取的值生成新的值流(⑧),并将生成的新的值流存储在新区域中(⑨)。例如,键值管理器120可以使用第五值Value5和第六值Value6生成新的值流,并将新的值流存储在第三块(BLK3)中。
接下来,键值管理器120可以更新键流和键矩阵(⑩)。这里,键值管理器120可以通过将读取的值的地址改变为包括与从目标块读取的值相对应的键的键流中的新地址来更新键流。此外,键值管理器120可以基于更新的键流来更新键矩阵。
参考图8D和另一个实施例,键值管理器120可以使用不同的方法选择目标块来执行GC操作。首先,键值管理器120可以使用有效数据表(Valid Data Table)为每个块选择候选块,该有效数据表包括指示有效数据与块中的所有数据的比率的信息。键值管理器120然后可以使用有效数据表来选择具有等于或小于候选块的参考比率的有效数据的比率的块。例如,当参考比率被设置为大约60时,键值管理器120可以选择其有效数据与所有数据的比率分别为大约45和大约55(基于假设的100的标度)的第二块BLK2(即,具有块编号“2”的块)和第八块BLK8(即,具有块编号“8”的块)作为候选块。
此外,键值管理器120可以使用键矩阵识别分别对应于候选块的列的“1”标记值的数量(②)。例如,键值管理器120可以分别识别在对应于第二块BLK2的第二列中的和对应于第八块BLK8的第八列中的“1”标记值的数量。
另外,键值管理器120可以选择候选块当中的具有最少数量的“1”标记值的块作为目标块(③)。例如,参考图8D,由于对应于第二块BLK2的第二列中的“1”的数量小于第八列中“1”的数量,键值管理器120可以选择第二块BLK2作为目标块。
替选地,关于实施例和图8D,已经示出了使用有效数据表选择候选块,并且使用键矩阵从候选块中选择目标块。然而,可以实现其中使用键矩阵选择候选块并且使用有效数据表选择目标块的其他方法。作为示例,键值管理器120可以使用键矩阵选择其中包括相关地址的键流的数量小于预定数量的块作为候选块,并且可以选择候选块当中的具有最小有效数据的比率的块作为目标块。
图9是在一个示例中概述根据本发明构思的实施例的用于键值存储设备的操作方法的流程图。也就是说,图9是示出可以由图1、图2和图3的存储设备100执行的GC操作的概念图。
参考图2、图3和图9,存储设备100可以使用键矩阵选择在NVM 150的多个块当中的目标块(S210)。例如,存储设备100可以从NVM 150的块当中选择具有最少数量的包括相关地址的键流的块作为目标块。对于另一示例,存储设备100可以通过使用关于有效数据的比率的信息来选择候选块,并且选择候选块当中的具有最少数量的包括相关地址的键流的块作为目标块。对于另一示例,存储设备100可以选择具有等于或小于一定数量的、包括相关地址的一定数量的键流的块作为候选块,并且可以选择候选块当中的具有最小有效数据的比率的块作为目标块。
接下来,存储设备100可以识别包括与目标块相关联的地址的键流(S220)。存储设备100可以识别对应于目标块的值当中的、指示与目标块相关的地址被包括在键矩阵中的值,并且识别对应于所识别的值的键流。
接下来,存储设备100可以从所识别的键流中识别与目标块相关的地址(S230)。存储设备100可以从NVM 150读取所识别的键流,并且识别所读取的键流中包括的地址当中的与目标块相关的地址。
接下来,存储设备100可以从目标块读取对应于所识别的地址的值(S240)。接下来,存储设备100可以将读取的值存储在新区域中(S250)。当读取的值本质上是多个时,存储设备100可以通过合并这些值来生成新的值流(ST_VALUE),并将生成的值流存储在新区域中。在这种情况下,新区域可以是与先前存储读取的值的区域不同的区域,并且可以是与目标块不同的块的区域。
接下来,存储设备100可以更新键流和键矩阵(S260)。存储设备100可以通过将先前读取的值的地址改变为新地址来更新键流。此外,存储设备100可以基于更新的键流来更新键矩阵。
根据本发明构思的某些实施例,存储设备100可以通过使用键流确定目标块中存储的值的有效性来减少计算开销并提高处理速度。
图10是进一步概述根据本发明构思的实施例的图9的用于键值存储设备的操作方法中的操作S220至S240的流程图。
参考图9和图10,存储设备100可以读取包括与目标块相关的地址的键流(S310)。例如,存储设备100可以通过使用键矩阵将第一键流识别为包括与目标块相关的地址的键流,并且可以从对应于第一键流的地址的区域读取第一键流。
接下来,存储设备100可以识别读取的键流中包括的地址,并且将与目标块相关的地址注册在GC读取列表(GC Read List)中(S320)。存储设备100可以顺序地识别第一键流中的地址,并且在GC读取列表中注册与目标块相关的至少一个地址。
接下来,存储设备100可以确定是否已经关于目标块识别了键流中包括的所有地址(S330)。在顺序识别第一键流中的地址的过程中,存储设备100可以确定与目标块的关系是否已经被识别直到最后一个地址。当键流中的所有地址都没有被识别时(S330=否),存储设备100可以重复操作S320。换句话说,存储设备100可以识别目标块与第一键流中的下一顺序地址的关系。
另一方面,当已经识别出键流中的所有地址时(S330=是),存储设备100可以识别是否存在包括与目标块相关的地址的单独的键流(S340)。存储设备100可以通过使用键矩阵来识别除了第一键流之外是否还存在包括与目标块相关的地址的第二键流。当存在包括与目标块相关的地址的单独的键流时(S340=是),存储设备100可以对相应的键流重复操作S320。另一方面,当不存在包括与目标块相关的地址的单独的键流时(S340=否),存储设备100可以通过使用GC读取列表从目标块读取有效值(S350)。
图11是示出根据本发明构思的实施例的存储设备100a的框图。
参考图11,存储设备100a可以包括控制器110a、易失性存储器(VM)130a和NVM。此外,控制器110a可以包括处理器111、存储器112、主机接口(IF)113、NVM IF114、硬件(HW)加速器115和VM IF 116,它们能够经由总线117彼此通信。
处理器111可以包括中央处理器(CPU)、微处理器等,并且可以控制控制器110a的整体操作。存储器112可以在处理器111的控制下操作,并且可以用作操作存储器、缓冲存储器、高速缓冲存储器等。例如,存储器112可以被实现为诸如DRAM和SRAM的VM,或者诸如PRAM和快闪存储器的NVM。
键值管理器120a可以在固件或软件中实现,并且可以被加载到存储器112中。例如,键值管理器120a可以在闪存转换层(FTL)中实现,并且可以被加载到存储器112中。然而,本发明构思不限于此,并且键值管理器120a可以在硬件中实现。上面参考图1至图10描述的操作可以由处理器111通过使用键值管理器120a来执行。
主机接口113可以根据例如通用串行总线(USB)、多媒体卡(MMC)、外围组件互连(PCI)高速(express)(PCI-E)、高级技术附件(ATA)、串行ATA(SATA)、并行ATA(PATA)、小型计算机系统接口(SCSI)、串行附接SCSI(SAS)、增强型小型磁盘接口(ESDI)和集成驱动电子设备(IDE)等提供主机200和控制器110a之间的IF。NVM IF 114可以提供控制器110a和NVM150之间的IF。例如,键流ST_KEY或值流ST_VAL可以经由NVM IF 114在控制器110a和NVM150之间发送和/或接收(此后,“传送”)。
VM IF 116可以提供控制器110a和VM 130a之间的IF。例如,键、值、映射表和键矩阵可以在控制器110a和VM 130a之间传送。
VM 130a可以存储映射表和键矩阵140a。例如,VM 130a可以进一步将键和值存储在图2中的数据缓冲器130中。为此,VM 130a可以实现为DRAM。映射表可以包括上面参考图1至图10描述的哈希表和键表中的任何一个。
HW加速器115可以包括各种类型的加速器,诸如现场可编程门阵列(FPGA)、大规模并行处理器阵列(MPPA)、图形处理单元(GPU)、专用集成电路(ASIC)、神经处理单元(NPU)、张量处理单元(TPU)和多处理器片上系统(MPSoC)。HW加速器115可以用于至少一部分GC操作,诸如通过使用键矩阵140a选择目标块。在图11中,控制器110a被示为包括HW加速器115,但是本公开不限于此,并且可以省略HW加速器115。
图12是示出根据本发明构思的实施例的电子设备3000的框图。
参考图12,电子设备3000可以包括处理器3100、存储器设备3200、存储设备3300、调制解调器3400、输入/输出(I/O)设备3500和电源3600。例如,存储设备3300可以通过使用上面参考图1至图11描述的实施例来实现。
例如,存储设备3300可以从主机接收包括键和分别对应于键的值的键值对,并且可以从键值对中分离键KEY和值。
例如,存储设备3300可以通过合并值来生成值流,并将生成的值流存储在非易失性存储器设备中。此外,存储设备3300可以将对应于值的索引与键中的每一个组合,通过将均与索引组合的键相加来生成键流,并将生成的键流存储在非易失性存储设备中。
例如,存储设备3300可以基于生成的键流来更新键矩阵,该键矩阵指示是否包括针对每个键流的与非易失性存储器设备的块的每一个相关的索引。此外,存储设备3300可以使用键矩阵选择目标块来执行垃圾收集操作,使用键矩阵读取与目标块相关的键流,从读取的键流中识别与目标块相关的有效值的存储位置,并且读取有效值并将有效值存储在新区域中。因此,在读取目标块中包括的所有值之后,存储设备3300可以使用键流来确定存储在目标块上的值的有效性,而无需确定读取的值中的每一个的有效性,并且可以减少与垃圾收集操作相关联的计算开销并提高整体处理速度。
例如,在没有从处理器3100接收命令CMD的情况下,存储设备3300可以自己执行上述操作。
虽然已经参考本发明构思的实施例具体示出和描述了本发明构思,但是将理解,可以在不脱离所附权利要求的精神和范围的情况下,对其做出各种形式和细节上的改变。
Claims (20)
1.一种存储设备,包括:
划分成块的非易失性存储器NVM;以及
控制器,被配置为:
接收命令和键值对,所述键值对包括键和分别与所述键对应的值,
将键与值分离,
通过组合值的集合来生成值流,
通过组合键的集合并合并分别与所述键的集合中的键对应的值的索引来生成键流,以及
更新指示键流的索引当中的索引是否与NVM的块中的每一个相关的键矩阵。
2.根据权利要求1所述的存储设备,其中,所述索引包括NVM中存储所述值的物理地址。
3.根据权利要求2所述的存储设备,其中,所述控制器被配置为基于所述键流中的索引,识别存储所述值的至少一个块,并改变与键矩阵中的所述键流和所识别的至少一个块对应的标记值。
4.根据权利要求3所述的存储设备,其中,所述控制器被配置为:通过将预先存储的第二键流与所述键流合并来生成第三键流,删除与键矩阵中的所述键流和所述预先存储的第二键流对应的信息,并基于第三键流中包含的至少一个索引更新键矩阵。
5.根据权利要求1所述的存储设备,其中,所述控制器被配置为:
基于键矩阵识别包括与NVM的每个块相关的索引的键流的数量,
选择所述块当中的具有最少数量的所识别的键流的目标块,以及
对目标块执行垃圾收集操作。
6.一种存储设备,包括:
非易失性存储器NVM,被划分成块,并且被配置为存储包括键的键流以及存储包括分别与所述键对应的值的值流;
数据缓冲器,被配置为存储键矩阵,所述键矩阵为所述键流当中的每个键流指示与所述键流中的键对应的值是否被存储在块中的每一个中;以及
控制器,被配置为基于键矩阵从所述块中选择目标块,并对目标块执行垃圾收集。
7.根据权利要求6所述的存储设备,其中,所述控制器还被配置为使用键矩阵来识别包括与块中的每一个中存储的值对应的键的键流的数量,并且使用包括具有块中的每一个中存储的值的键的键流的数量来选择目标块。
8.根据权利要求7所述的存储设备,其中,所述控制器还被配置为选择所述目标块作为具有使用所述键矩阵识别的最少数量的键流的块。
9.根据权利要求6所述的存储设备,其中,所述控制器还被配置为基于块中的每一个的有效数据信息从所述块中选择候选块,并且使用键矩阵选择候选块当中的目标块。
10.根据权利要求9所述的存储设备,其中,所述控制器还被配置为选择所述块当中的、具有等于或小于参考比率的有效数据信息的比率的块作为候选块。
11.根据权利要求6所述的存储设备,其中,所述控制器被配置为使用键矩阵来识别包括与目标块中存储的值对应的键的至少一个键流,并且从NVM读取所述至少一个键流。
12.根据权利要求11所述的存储设备,其中,所述键流包括与所述键对应的值的地址,并且
控制器还被配置为从至少一个键流识别与目标块相关的地址,并使用所述地址从目标块读取与所述地址对应的值。
13.根据权利要求12所述的存储设备,其中,所述控制器将读取的值存储在非易失性存储器中的与先前存储器读取的值的区域不同的区域中。
14.根据权利要求13所述的存储设备,其中,所述控制器被配置为在包括与读取的值对应的键的键流中将读取的值的地址改变为读取的值的新地址。
15.一种用于存储设备的操作方法,所述存储设备包括被划分成块的非易失性存储器NVM,所述操作方法包括:
生成并存储键流,所述键流包括键和分别与所述键对应的值的地址;
对于每个键流,更新指示是否包括与块中的每一个相关的地址的键矩阵;
基于键矩阵,从所述块当中选择目标块;以及
对目标块执行垃圾收集操作。
16.根据权利要求15所述的操作方法,其中,使用键矩阵选择所述目标块包括:
选择具有最少数量的包括与块相关的地址的键流的块。
17.根据权利要求15所述的操作方法,其中,选择所述目标块包括:
基于块中的每一个的有效数据的比率信息,从块当中选择候选块;以及
使用键矩阵,选择具有最少数量的包括与候选块相关的地址的键流的块作为目标块。
18.根据权利要求15所述的操作方法,其中,执行垃圾收集操作包括:
使用键矩阵来识别包括与目标块相关的地址的至少一个键流;
使用所述至少一个键流来识别与目标块相关的至少一个地址;
使用所述至少一个地址从目标块读取至少一个值;以及
将所述至少一个值存储在NVM的新区域中。
19.根据权利要求18所述的操作方法,其中,执行垃圾收集操作还包括:
在包括与所述至少一个值对应的键的键流中,将所述至少一个值的地址改变为新地址。
20.根据权利要求19所述的操作方法,其中,执行垃圾收集操作还包括:
基于改变后的键流,更新键矩阵。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020190167144A KR20210075731A (ko) | 2019-12-13 | 2019-12-13 | 스토리지 장치 및 이의 동작 방법 |
KR10-2019-0167144 | 2019-12-13 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112988615A true CN112988615A (zh) | 2021-06-18 |
Family
ID=76316848
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011431455.0A Pending CN112988615A (zh) | 2019-12-13 | 2020-12-07 | 键值存储设备和操作方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11461047B2 (zh) |
KR (1) | KR20210075731A (zh) |
CN (1) | CN112988615A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113988282A (zh) * | 2021-10-26 | 2022-01-28 | 平头哥(上海)半导体技术有限公司 | 用于图神经网络和图应用的可编程访问引擎架构 |
CN114415966A (zh) * | 2022-01-25 | 2022-04-29 | 武汉麓谷科技有限公司 | 一种kv ssd存储引擎的构建方法 |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP4292746A4 (en) | 2021-06-10 | 2024-09-18 | Lg Energy Solution Ltd | WELDING DEVICE FOR CYLINDRICAL BATTERY CELL |
US20230188338A1 (en) * | 2021-12-10 | 2023-06-15 | Amazon Technologies, Inc. | Limiting use of encryption keys in an integrated circuit device |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110276744A1 (en) * | 2010-05-05 | 2011-11-10 | Microsoft Corporation | Flash memory cache including for use with persistent key-value store |
US9311252B2 (en) | 2013-08-26 | 2016-04-12 | Globalfoundries Inc. | Hierarchical storage for LSM-based NoSQL stores |
WO2015121938A1 (ja) | 2014-02-13 | 2015-08-20 | 株式会社日立製作所 | データ管理装置及び方法 |
US10338817B2 (en) | 2014-12-30 | 2019-07-02 | Sandisk Technologies Llc | Systems and methods for storage recovery |
KR102449192B1 (ko) | 2015-09-10 | 2022-09-29 | 삼성전자주식회사 | 데이터 저장 장치의 작동 방법과 이를 포함하는 데이터 처리 시스템의 작동 방법 |
US10628305B2 (en) | 2016-05-13 | 2020-04-21 | International Business Machines Corporation | Determining a data layout in a log structured storage system |
US10725988B2 (en) * | 2017-02-09 | 2020-07-28 | Micron Technology, Inc. | KVS tree |
US10706105B2 (en) | 2017-02-09 | 2020-07-07 | Micron Technology, Inc. | Merge tree garbage metrics |
US10719495B2 (en) * | 2017-02-09 | 2020-07-21 | Micron Technology, Inc. | Stream selection for multi-stream storage devices |
TWI692690B (zh) | 2017-12-05 | 2020-05-01 | 慧榮科技股份有限公司 | 存取快閃記憶體模組的方法及相關的快閃記憶體控制器與電子裝置 |
-
2019
- 2019-12-13 KR KR1020190167144A patent/KR20210075731A/ko unknown
-
2020
- 2020-09-03 US US17/011,050 patent/US11461047B2/en active Active
- 2020-12-07 CN CN202011431455.0A patent/CN112988615A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113988282A (zh) * | 2021-10-26 | 2022-01-28 | 平头哥(上海)半导体技术有限公司 | 用于图神经网络和图应用的可编程访问引擎架构 |
CN114415966A (zh) * | 2022-01-25 | 2022-04-29 | 武汉麓谷科技有限公司 | 一种kv ssd存储引擎的构建方法 |
Also Published As
Publication number | Publication date |
---|---|
KR20210075731A (ko) | 2021-06-23 |
US20210181988A1 (en) | 2021-06-17 |
US11461047B2 (en) | 2022-10-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113168408B (zh) | 利用压缩的键值存储树数据块溢出 | |
CN106354745B (zh) | 用于提供计算机装置的接口的方法和计算机装置 | |
US10915546B2 (en) | Counter-based compaction of key-value store tree data block | |
US11874815B2 (en) | Key-value storage device and method of operating the same | |
US11461047B2 (en) | Key-value storage device and operating method | |
US9530499B2 (en) | Semiconductor memory device and information processing device | |
US12079120B2 (en) | Storage device storing data based on key-value and operating method of the same | |
US11604834B2 (en) | Technologies for performing stochastic similarity searches in an online clustering space | |
US10891074B2 (en) | Key-value storage device supporting snapshot function and operating method thereof | |
US11048623B2 (en) | Memory controller including mapping tables to efficiently process an iteration command and a method of operating the same | |
KR102567224B1 (ko) | 데이터 저장 장치 및 이를 포함하는 컴퓨팅 시스템 | |
CN108027764B (zh) | 可转换的叶的存储器映射 | |
US10366011B1 (en) | Content-based deduplicated storage having multilevel data cache | |
KR102714982B1 (ko) | 키-밸류 기반으로 데이터를 저장하는 스토리지 장치 및 이의 동작 방법 | |
US11422930B2 (en) | Controller, memory system and data processing system | |
CN112506814A (zh) | 一种存储器及其控制方法与存储系统 | |
US20240143219A1 (en) | Software-hardware combination method for internal mapping address query of zoned namespace | |
US11756619B2 (en) | Key storage for sorted string tables using content addressable memory | |
CN112463647A (zh) | 使用散列来减小前向映射表的大小 | |
KR20210068699A (ko) | 스토리지 장치, 스토리지 시스템 및 스토리지 장치의 동작 방법 | |
CN112988057A (zh) | 存储装置、存储系统及其操作方法 | |
US11726921B2 (en) | Combined page footer for parallel metadata storage | |
CN116339613A (zh) | 存储装置、操作其的方法及操作包括其的存储系统的方法 | |
US12038920B2 (en) | System and method for LSM compaction | |
KR102497213B1 (ko) | 안전 삭제를 수행하는 컨트롤러, 이를 포함하는 키-밸류 스토리지 장치 및 키-밸류 스토리지 장치의 동작방법 |
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 |