CN112181287A - 基于键值存储数据的存储设备及其操作方法 - Google Patents
基于键值存储数据的存储设备及其操作方法 Download PDFInfo
- Publication number
- CN112181287A CN112181287A CN202010637367.XA CN202010637367A CN112181287A CN 112181287 A CN112181287 A CN 112181287A CN 202010637367 A CN202010637367 A CN 202010637367A CN 112181287 A CN112181287 A CN 112181287A
- Authority
- CN
- China
- Prior art keywords
- key
- value
- stream
- data
- controller
- 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 27
- 230000006835 compression Effects 0.000 claims description 27
- 238000007906 compression Methods 0.000 claims description 27
- 238000013507 mapping Methods 0.000 claims description 21
- 230000004044 response Effects 0.000 claims description 15
- 238000010586 diagram Methods 0.000 description 34
- 101100316752 Arabidopsis thaliana VAL1 gene Proteins 0.000 description 19
- 101100316753 Arabidopsis thaliana VAL2 gene Proteins 0.000 description 14
- 101100244641 Paramecium tetraurelia Ppn3 gene Proteins 0.000 description 12
- 101100353051 Neurospora crassa (strain ATCC 24698 / 74-OR23-1A / CBS 708.71 / DSM 1257 / FGSC 987) epp-1 gene Proteins 0.000 description 11
- 101150034591 PPN1 gene Proteins 0.000 description 11
- 239000012634 fragment Substances 0.000 description 11
- 239000010410 layer Substances 0.000 description 11
- 101100244635 Paramecium tetraurelia Ppn2 gene Proteins 0.000 description 9
- 238000011017 operating method Methods 0.000 description 8
- 239000000758 substrate Substances 0.000 description 7
- 101100049574 Human herpesvirus 6A (strain Uganda-1102) U5 gene Proteins 0.000 description 5
- 101150064834 ssl1 gene Proteins 0.000 description 5
- 101100058970 Arabidopsis thaliana CALS11 gene Proteins 0.000 description 4
- 101100232371 Hordeum vulgare IAT3 gene Proteins 0.000 description 4
- 101100341076 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) IPK1 gene Proteins 0.000 description 4
- 102100029563 Somatostatin Human genes 0.000 description 4
- 238000012545 processing Methods 0.000 description 4
- 101150062870 ssl3 gene Proteins 0.000 description 4
- 101000641216 Aquareovirus G (isolate American grass carp/USA/PB01-155/-) Non-structural protein 4 Proteins 0.000 description 3
- 101100058961 Arabidopsis thaliana CALS2 gene Proteins 0.000 description 3
- 101000927946 Homo sapiens LisH domain-containing protein ARMC9 Proteins 0.000 description 3
- 102100036882 LisH domain-containing protein ARMC9 Human genes 0.000 description 3
- 101100287040 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) ARG82 gene Proteins 0.000 description 3
- 101100481702 Arabidopsis thaliana TMK1 gene Proteins 0.000 description 2
- 102100030851 Cortistatin Human genes 0.000 description 2
- 101000711846 Homo sapiens Transcription factor SOX-9 Proteins 0.000 description 2
- 101001122827 Paramecium tetraurelia Serine/threonine-protein phosphatase PP2A catalytic subunit 3 Proteins 0.000 description 2
- VYPSYNLAJGMNEJ-UHFFFAOYSA-N Silicium dioxide Chemical compound O=[Si]=O VYPSYNLAJGMNEJ-UHFFFAOYSA-N 0.000 description 2
- 102100034204 Transcription factor SOX-9 Human genes 0.000 description 2
- 238000005056 compaction Methods 0.000 description 2
- 238000012217 deletion Methods 0.000 description 2
- 230000037430 deletion Effects 0.000 description 2
- 239000012535 impurity Substances 0.000 description 2
- 239000011810 insulating material Substances 0.000 description 2
- 229910052814 silicon oxide Inorganic materials 0.000 description 2
- 239000002210 silicon-based material Substances 0.000 description 2
- 102100031885 General transcription and DNA repair factor IIH helicase subunit XPB Human genes 0.000 description 1
- 101000920748 Homo sapiens General transcription and DNA repair factor IIH helicase subunit XPB Proteins 0.000 description 1
- 101100482995 Neurospora crassa (strain ATCC 24698 / 74-OR23-1A / CBS 708.71 / DSM 1257 / FGSC 987) gsl-3 gene Proteins 0.000 description 1
- 101001122730 Paramecium tetraurelia Serine/threonine-protein phosphatase PP2A catalytic subunit 1 Proteins 0.000 description 1
- 101001122833 Paramecium tetraurelia Serine/threonine-protein phosphatase PP2A catalytic subunit 2 Proteins 0.000 description 1
- 230000000903 blocking effect Effects 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 230000000149 penetrating effect Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 239000002344 surface layer Substances 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
-
- 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/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
- 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
-
- 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
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0877—Cache access modes
- G06F12/0882—Page mode
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—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/061—Improving I/O performance
- G06F3/0611—Improving I/O performance in relation to response time
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- 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/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
- 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
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)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
一种存储设备包括:控制器,被配置为:从主机接收多个键值对,从多个键值对中的每一个中分离键并从多个键值对中的每一个中分离值,并通过合并从多个键值对分离的多个键生成第一键流;以及非易失性存储器,被配置为存储第一键流。第一键流与从多个键值对中的每一个分离的值分开地被存储在非易失性存储器中。
Description
相关申请交叉引用
本申请要求于2019年7月5日向韩国知识产权局提交的第10-2019-0081522号韩国专利申请的优先权,其全部公开内容通过引用合并于此。
技术领域
本发明构思涉及一种存储设备和该存储设备的操作方法,并且更具体地,涉及一种基于键值存储数据的存储设备和该存储设备的操作方法。
背景技术
近来,已经使用了各种类型的电子设备。一些电子设备可以存储数据并且可以基于存储的数据进行操作。为此,电子设备可以包括用于存储数据的存储设备或存储系统,或者可以在与外部存储设备或存储系统进行通信的同时存储或读取数据。
可以对存储设备进行各种分类。例如,存储设备可以分类为基于非易失性存储器(non-volatile memory,NVM)的存储和基于易失性存储器的存储。即使不供电,基于非易失性存储器的存储也不会丢失数据。另一方面,尽管当中断提供给基于易失性存储器的存储的电力时存储在基于易失性存储器的存储中的数据会丢失,但是基于易失性存储器的存储可以比基于非易失性存储器的存储更快地操作。
例如,存储设备可以分类为块存储、文件存储和对象存储。块存储可以基于物理位置管理数据,文件存储可以基于逻辑序列管理数据。另一方面,对象存储可以基于唯一标识符管理数据。当存在大量文本数据时,块存储和文件存储很有用,而当存在大量非结构化数据(诸如声音数据、图像数据等)时,对象存储可能是有效的选择。作为对象存储的示例,存在键值存储,它基于键值存储数据。
发明内容
本发明构思提供一种有效地管理键和值的存储设备以及该存储设备的操作方法。
本发明构思还提供一种对键和值有效地执行压缩的存储设备以及该存储设备的操作方法。
根据本发明的示例性实施例,存储设备包括:控制器,被配置为:从主机接收多个键值对,从多个键值对中的每一个中分离键并从多个键值对中的每一个中分离值,以及通过合并从多个键值对分离的多个键生成第一键流;以及非易失性存储器,被配置为存储第一键流。第一键流与从多个键值对中的每一个分离的值分开地被存储在非易失性存储器中。
根据本发明的示例性实施例,一种存储设备的操作方法,所述存储设备包括非易失性存储器和控制所述非易失性存储器的控制器,所述操作方法包括:控制器接收多个键值对;控制器通过从多个键值对中的每一个中提取键来生成第一键流;以及控制器将第一键流存储在非易失性存储器中。
根据本发明的示例性实施例,一种存储设备的操作方法,所述存储设备包括非易失性存储器和控制非易失性存储器的控制器,所述操作方法包括:控制器从多个数据页生成数据流;控制器将数据流存储在非易失性存储器中;控制器生成多映射表,所述多映射表包括:非易失性存储器中的多个数据页中的第一数据页的物理地址;以及至少一个有效性比特,指示数据流中包括的多个数据页中的对应页是否有效;以及响应于多个数据页中的第一数据页无效,控制器用指示第一数据页是否有效的第一有效性比特来更新多映射表。
附图说明
通过以下结合附图的详细描述,将更清楚地理解本发明构思的实施例,在附图中:
图1是示出根据本发明构思的示例实施例的存储系统的框图;
图2是示出根据本发明构思的示例实施例的存储设备的框图;
图3是示出根据本发明构思的示例实施例的包括在存储器单元阵列中的存储器块的电路图;
图4是示出图3的存储器块的透视图;
图5是示出根据本发明构思的示例实施例的存储设备的操作的概念图;
图6是示出根据本发明构思的示例实施例的键值管理器的操作方法的流程图;
图7是示出根据本发明构思的示例实施例的键值管理器的操作的概念图;
图8是示出根据本发明构思的示例实施例的键值管理器的操作方法的流程图;
图9A是示出根据本发明构思的示例实施例的块的示图,
图9B是示出根据本发明构思的示例实施例的多映射表的示图;
图10是示出根据本发明构思的示例实施例的存储系统随时间的操作的示图;
图11是示出根据本发明构思的示例实施例的存储系统随时间的操作的示图;
图12是示出根据本发明构思的示例实施例的存储系统随时间的操作的示图;
图13是示出根据本发明构思的示例实施例的存储系统随时间的操作的示图;
图14是示出根据本发明构思的示例实施例的存储系统随时间的操作的示图;
图15是示出根据本发明构思的示例实施例的存储设备的框图;以及
图16是示出根据发明构思的示例实施例的电子设备的框图。
具体实施方式
图1是示出根据本发明构思的示例实施例的存储系统的框图。
参照图1,存储系统10可以包括存储设备100和主机200,并且存储设备100可以包括控制器110、数据缓冲器130和非易失性存储器(NVM)140。主机200可以通过各种接口与存储设备100通信。例如,主机200可以用应用处理器(application processor,AP)或片上系统(system-on-chip,SoC)来实现。
在一个实施例中,存储设备100可以是键值存储设备或键值存储,例如,键值固态驱动器(solid state drive,SSD)。键值存储设备是通过使用键值对快速而简单地处理数据的设备。如本文所使用的,术语“键值对”可以指具有唯一性的键和作为与该键相对应(即,相关联)的数据的值的对子,并且可以被称为术语“元组”或“键值元组”。在键值对中,键可以用任何字符串表示,诸如文件名、统一资源标识符(uniform resource identifier,URI)或哈希,并且值可以是任何种类的数据,诸如图像、用户偏好文件或文档。在此,键和值的大小可以是可变的,并且例如,值的大小可以随值中包括的数据而变化。
在下文中,将描述存储设备100是键值存储设备的实施例,并且在说明书中,存储设备100可以具有与键值存储设备或键值存储相同的含义。然而,存储设备100不限于键值存储设备,并且可以应用于以对象为单位管理数据的任何对象缓存系统或对象存储系统。因此,存储设备100可以以除键值对方式之外的任何方式以对象为单位管理数据。
主机200可以向存储设备100发送用于写入包括键值对的数据的命令CMD,例如,写入请求或放置(put)命令,并且存储设备100可以响应于命令CMD向非易失性存储器140写入值VALUE。在一个实施例中,主机200可以向存储设备100发送包括键KEY的命令CMD,例如,读取请求或获取(get)命令,并且存储设备100可以响应于命令CMD从非易失性存储器140读取与键KEY相对应的值VALUE。
控制器110可以控制非易失性存储器140,使得响应于来自主机200的写入请求,将值写入非易失性存储器140,或者使得响应于来自主机200的读取请求,读取存储在非易失性存储器140中的值。控制器110可以包括键值管理器120。
键值管理器120可以接收命令CMD中包括的键值对,并且可以将都包括在键值对中的键和值彼此分开。例如,键值管理器120可以从键值对分离多个键KEY,并且还可以从键值对分离多个值。键值管理器120可以提取键值对中包括的多个键KEY,并且可以将多个键KEY存储在数据缓冲器130中。键值管理器120可以提取包括在键值对中的多个值VALUE,并且可以将多个值VALUE存储在数据缓冲器130中。
当存在多达一定数量或一定量的数据的多个键KEY存储在数据缓冲器130中时,键值管理器120可以在非易失性存储器140中将存储的多个键KEY作为键流存储。当存在多达一定数量或一定量的数据的多个值VALUE存储在数据缓冲器130中时,键值管理器120可以在非易失性存储器140中将存储的多个值VALUE作为值流存储。在一个实施例中,值流和键流可以分别存储在非易失性存储器140的不同区域中。
在一个实施例中,值VALUE可以具有比键KEY更大的数据量,并且根据本发明构思,键值管理器120可以分离键值对并且分别管理键KEY和值VALUE,由此可以减少对于非易失性存储器140的输入/输出数据量,结果,可以提高键值对的数据处理能力。
数据缓冲器130可以包括至少一个用于存储键KEY和值VALUE的存储器设备,并且在一个示例中,数据缓冲器130可以包括易失性存储器设备,诸如动态随机访问存储器(dynamic random access memory,DRAM)或静态随机访问存储器(static random accessmemory,SRAM)。
非易失性存储器140可以包括存储器单元阵列MCA、存储器单元阵列MCA可以包括存储器块BLK1至BLKz,并且存储器块BLK1可以包括多个页PG1至PGk。在此,z和k中的每一个可以是正整数,并且可以根据实施例而不同地变化。例如,存储器块可以是擦除的单位,而页可以是写入或读取的单位。在一些实施例中,存储器单元阵列MCA可以包括多个平面、多个管芯或多个芯片。在一个实施例中,非易失性存储器140可以包括闪存设备,例如,NAND闪存设备。然而,本发明构思不限于此,并且非易失性存储器140可以包括电阻存储器设备,诸如电阻RAM(resistive RAM,ReRAM)、相变RAM(phase-change RAM,PRAM)或磁性RAM(magnetic RAM,MRAM)。
存储系统10可以被实现为例如个人计算机(personal computer,PC)、数据服务器、网络附接存储、物联网(Internet-of-Things,IoT)设备或便携式电子设备。便携式电子设备可以包括膝上型计算机、移动电话、智能电话、平板PC、个人数字助理(personaldigital assistant,PDA)、企业数字助理(enterprise digital assistant,EDA)、数字静态相机、数字摄像机、音频设备、便携式多媒体播放器(portable multimedia player,PMP)、个人导航设备(personal navigation device,PND)、MP3播放器、手持游戏机、电子书、可穿戴设备等。
在一些实施例中,存储设备100可以是嵌入在电子设备中的内部存储器。例如,存储设备100可以是SSD、嵌入式通用闪存(universal flash storage,UFS)存储设备或嵌入式多媒体卡(embedded multimedia card,eMMC)。在一些实施例中,存储设备100可以是可附接到电子设备和从电子设备可拆卸的外部存储器。例如,存储设备100可以包括UFS存储卡、紧凑型闪存(Compact Flash,CF)存储卡、安全数字(Secure Digital,SD)存储卡、微安全数字(Micro-Secure Digital,Micro-SD)存储卡、迷你安全数字(Mini-Secure Digital,Mini-SD)存储卡、极限数字(extreme Digital,xD)存储卡或记忆棒。
图2是示出根据本发明构思的示例实施例的存储设备的框图。
参照图2,存储设备100可以包括键值管理器120、数据缓冲器130和非易失性存储器140。键值管理器120可以包括键值提取器121、压缩(compaction)模块122和垃圾收集模块123。键值提取器121可以提取包括在命令CMD中的键KEY和值VALUE。键值提取器121可以将提取的键KEY存储在数据缓冲器130的键缓冲器131中,并且可以将提取的值VALUE存储在数据缓冲器130的值缓冲器132中。在一个实施例中,键缓冲器131和值缓冲器132可以分别配置为单独的存储器设备。在另一个实施例中,键缓冲器131和值缓冲器132可以分别被配置为数据缓冲器130的不同区域。
在一个实施例中,键值提取器121可以通过使用映射表来管理存储在键缓冲器131中的键KEY的物理地址,并且在一个示例中,映射表可以被生成为哈希表,其与键KEY一起存储与键KEY相对应的哈希键,作为键KEY的映射索引。
当存储在键缓冲器131中的多个键KEY具有一定量或更多的数据时,键值提取器121可以基于多个键KEY生成键流ST_KEY。在一个实施例中,键值提取器121可以通过连续地布置多个键KEY生成键流ST_KEY。在另一个实施例中,键值提取器121可以通过将多个键KEY与分别对应于多个键KEY的值VALUE的索引进行合并来生成键流ST_KEY。键值提取器121可以将生成的键流ST_KEY存储在非易失性存储器140的第一区域AR1中。
在一个实施例中,键值提取器121可以通过使用哈希表来管理在第一区域AR1中存储的键KEY的物理地址。例如,哈希表可以与键KEY一起存储与键KEY相对应的哈希键,作为键KEY的映射索引。
当存储在值缓冲器132中的多个值VALUE具有一定量或更多的数据时,键值提取器121可以基于多个值VALUE生成值流ST_VAL。在一个示例中,键值提取器121可以通过连续地布置多个值VALUE来生成值流ST_VAL。键值提取器121可以将生成的值流ST_VAL存储在非易失性存储器140的第二区域AR2中。在一个实施例中,键值提取器121可以通过使用值表管理第二区域AR2中的存储值VALUE的物理地址。
压缩模块122可以对存储在第一区域AR1中的至少一个键流ST_KEY执行压缩操作。在此,压缩操作可以指通过删除与非易失性存储器140中存储的无效值(例如,陈旧值)VALUE相对应的键KEY来生成新键流ST_KEY的操作。在一个示例中,压缩操作可以指在基于日志结构合并(log structured merge,LSM)树的数据结构中合并数据的操作。
压缩模块122可以读取存储在第一区域AR1中的至少一个键流ST_KEY,并且可以确定无效键(例如,陈旧键)。在一个示例中,无效键可以是与主机向其发出删除命令的值VALUE相对应的键KEY。压缩模块122可以仅通过使用至少一个键流ST_KEY中包括的有效键KEY来生成新的键流ST_KEY。压缩模块122可以将生成的新键流ST_KEY写入非易失性存储器140的第一区域AR1。
根据本发明构思的一个实施例,当执行压缩操作时,存储设备100可以通过仅读取键流ST_KEY而不读取具有相对大量数据的值VALUE来执行压缩操作,因此,可以减少对非易失性存储器140的数据访问量。
压缩模块122可以更新与作为压缩操作的目标的无效键KEY相对应的值VALUE的有效性。在一个实施例中,包括关于存储有值VALUE的非易失性存储器140的物理地址的信息的值表还可以包括指示关于值VALUE的有效性信息的有效性比特,并且压缩模块122可以更新无效值VALUE的有效性比特。下面将参照图9A和图9B对此进行描述。
垃圾收集模块123可以对非易失性存储器140执行垃圾收集。根据本发明构思的一个实施例,哈希表可以包括关于键流ST_KEY的有效性的信息,并且垃圾收集模块123可以基于哈希表对键流ST_KEY执行垃圾收集。此外,值表可以包括关于值流ST_VAL的有效性的信息,并且垃圾收集模块123可以基于值表对值流ST_VAL执行垃圾收集。
图3是示出根据本发明构思的示例实施例的包括在存储器单元阵列中的存储器块的电路图。
参照图3,存储器单元阵列(例如,图1的MCA)可以是垂直NAND闪存的存储器单元阵列,并且可以包括多个存储器块。每个存储器块BLK0可以包括多个NAND单元串NS11至NS33、多个字线WL1至WL8、多个位线BL1至BL3、多个地选择线GSL1至GSL3、多个单元串选择线SSL1到SSL3以及公共源极线CSL。在此,根据实施例,NAND单元串的数量、字线的数量、位线的数量、地选择线的数量以及单元串选择线的数量可以不同地变化。
NAND单元串NS11、NS21和NS31布置在第一位线BL1和公共源极线CSL之间,NAND单元串NS12、NS22和NS32布置在第二位线BL2和公共源极线CSL之间,并且NAND单元串NS13、NS23和NS33布置在第三位线BL3和公共源极线CSL之间。每个NAND单元串(例如,NS11)可以包括串联连接的单元串选择晶体管SST、多个存储器单元MC1至MC8以及地选择晶体管GST。
共同连接到一个位线的NAND单元串构成一列。例如,共同连接到第一位线BL1的NAND单元串NS11、NS21和NS31可以对应于第一列,共同连接到第二位线BL2的NAND单元串NS12、NS22和NS32可以对应于第二列,并且共同连接到第三位线BL3的NAND单元串NS13、NS23和NS33可以对应于第三列。
连接到一个单元串选择线的NAND单元串构成一行。例如,连接到第一单元串选择线SSL1的NAND单元串NS11、NS12和NS13可以对应于第一行,连接到第二单元串选择线SSL2的NAND单元串NS21、NS22和NS23可以对应于第二行,并且连接到第三单元串选择线SSL3的NAND单元串NS31、NS32和NS33可以对应于第三行。
单元串选择晶体管SST分别连接到对应的单元串选择线SSL1至SSL3。多个存储器单元MC1至MC8分别连接到对应的字线WL1至WL8。地选择晶体管GST分别连接到对应的地选择线GSL1至GSL3。单元串选择晶体管SST连接到对应的位线BL1至BL3,并且地选择晶体管GST连接到公共源极线CSL。
相同高度的字线(例如,WL1)彼此共同连接,单元串选择线SSL1至SSL3彼此分离,并且地选择线GSL1至GSL3也彼此分离。例如,当连接到第一字线WL1并且包括在NAND单元串NS11、NS12和NS13中的存储器单元被编程时,第一字线WL1和第一单元串选择线SSL1被选择。地选择线GSL1至GSL3可以彼此共同连接。
根据本发明构思的一个实施例的存储设备可以将键和值分别存储在存储器单元阵列的不同区域中。在一个示例中,键可以被存储在连接到存储器块BLK0的第一字线WL1的第一页,并且值可以被存储在连接到存储器块BLK0的第四字线WL4的第二页。
图4是示出图3的存储器块的透视图。
参照图4,包括在存储器单元阵列(例如,图1的MCA)中的每个存储器块在相对于基底SUB的垂直方向上形成。尽管图4示出存储器块包括两个选择线GSL和SSL、八个字线WL1至WL8以及三个位线BL1至BL3,但是存储器块中包括的每一个组件的数量实际上可以大于或小于上面阐述的数量。
基底SUB是第一导电类型(例如,p型),并且在第一方向(例如,Y方向)上延伸并且掺杂有第二导电类型的杂质(例如,n型)的公共源极线CSL,被布置在基底SUB上。在两个相邻的公共源极线CSL之间的基底SUB的区域上,沿第一方向延伸的多个绝缘膜IL沿第三方向(例如,Z方向)顺序地布置,并且多个绝缘膜IL在第三方向上彼此相距特定距离。例如,多个绝缘膜IL中的每一个可以包括绝缘材料,诸如硅氧化物。
在两个相邻的公共源极线CSL之间的基底SUB的区域上,分别沿第三方向穿透多个绝缘膜IL的多个柱P沿第一方向顺序地布置。例如,多个柱P可以通过多个绝缘膜IL接触基底SUB。具体地,每个柱P的表面层S可以包括第一导电类型的硅材料并且可以用作沟道区。此外,每个柱P的内层I可以包括诸如硅氧化物的绝缘材料,或气隙。
在两个相邻的公共源极线CSL之间的区域中,沿着绝缘膜IL、柱P和基底SUB的暴露表面布置电荷存储层CS。电荷存储层CS可以包括栅极绝缘层(也称为术语“隧穿绝缘层”)、电荷俘获层和阻挡绝缘层。例如,电荷存储层CS可以具有氧化物-氮化物-氧化物(oxide-nitride-oxide,ONO)结构。此外,在两个相邻的公共源极线CSL之间的区域中,栅电极GE(诸如选择线GSL和SSL以及字线WL1至WL8)布置在电荷存储层CS的暴露表面上。
漏极或漏极触点DR分别布置在多个柱P上。例如,漏极或漏极触点DR可以包括掺杂有第二导电类型的杂质的硅材料。沿第二方向(例如,X方向)延伸的位线BL1至BL3可以布置在漏极DR上,以在第一方向上彼此分开特定距离。
图5是示出根据本发明构思的示例实施例的存储设备的操作的概念图。
参照图2和图5,键值管理器120可以接收键值对KVP,并且可以将键和值彼此分离,这两者都包括在键值对KVP中。键值管理器120可以将键耦合到与每个值相对应的索引Idx,并且可以将耦合到索引Idx的键存储在数据缓冲器130中。此外,键值管理器120可以通过合并每个都耦合到索引Idx的多个键KEY来生成键流ST_KEY,并且可以将生成的键流ST_KEY存储在非易失性存储器140的第一区域AR1中。
虽然图5示出了一个键流ST_KEY对应于一个索引Idx,这仅仅是为了描述方便,并且根据本发明构思的一个实施例的键流ST_KEY可以包括多个索引键对,其中索引Idx分别耦合到键。
键值管理器120可以通过使用非易失性存储器140的第一区域AR1中存储键流ST_KEY的物理页号(physical page number,PPN)来生成哈希表HT。例如,哈希表HT可以存储包括键流ST_KEY的键和存储键流ST_KEY的键的非易失性存储器140的物理地址的排序字符串表(Sorted String Table,SS表)的索引。SS表可以是包括键值对KVP的数据文件,并且哈希表HT可以存储SS表的文件名和存储SS表的键的物理地址。
键值管理器120可以将与键值对KVP分离的值存储在数据缓冲器130中,可以通过合并存储在数据缓冲器130中的多个值来生成值流ST_VAL,并且可以将生成的值流ST_VAL存储在非易失性存储器140的第二区域AR2中。
键值管理器120可以通过使用非易失性存储器140中的存储值流ST_VALPPN来生成值表VT。例如,值表VT可以存储值流ST_VAL和存储值流ST_VAL的非易失性存储器140的物理地址。在一个实施例中,值表VT还可以包括指示值VALUE是否有效的有效性比特。
图6是示出根据本发明构思的示例实施例的键值管理器的操作方法的流程图。
参照图2和图6,键值管理器120可以接收包括多个键KEY和多个值VALUE的数据(S110),并且可以通过从接收的数据提取多个键KEY来生成键流ST_KEY(S120)。此外,键值管理器120可以通过从接收的数据中提取多个值VALUE来生成值流ST_VAL(S130)。键值管理器120可以将生成的键流ST_KEY和生成的值流ST_VAL存储在非易失性存储器140中(S140)。例如,生成的键流ST_KEY可以被存储在非易失性存储器140的第一区域AR1中,并且生成的值流ST_VAL可以被存储在非易失性存储器140的第二区域AR2中。
根据本发明构思的一个实施例,键值管理器120可以将键KEY和值VALUE彼此分开地存储在非易失性存储器140中,并且可以通过分别管理键KEY和值VALUE来有效地管理数据。
图7是示出根据本发明构思的示例实施例的键值管理器的操作的概念图。特别地,图7是示出键值管理器执行压缩操作的方法的示图。
参照图2和图7,键值管理器120可以从非易失性存储器140的第一区域AR1读取无效键流ST_IK。在一个实施例中,键值管理器120可以响应于主机200(图1)的各种命令使用关于键流中包括的键是否有效的信息来更新哈希表HT,并且可以基于哈希表HT来确定无效键流ST_IK。在一个示例中,当从主机200(图1)接收到对第一值的擦除命令时,键值管理器120可以用与第一值相对应的第一键来更新哈希表HT,使得第一键可以基于与之耦合的索引来识别并且被指示为无效。
键值管理器120可以通过合并无效键流ST_IK来生成至少一个合并键流ST_MK。在一个示例中,键值管理器120可以通过基于哈希表HT删除无效键并仅提取有效键来生成合并键流ST_MK。因此,合并键流ST_MK可以是仅包括有效键的键流。
键值管理器120可以将生成的合并键流ST_MK写入非易失性存储器140的第一区域AR1中。键值管理器120可以通过使用与无效键相对应的无效值来更新值表VT。在一个实施例中,键值管理器120可以通过转换与值表VT的无效值相对应的有效性比特来更新值表VT。
在一个实施例中,键值管理器120可以基于值表VT的有效性比特对无效值执行垃圾收集。随着基于值表VT执行垃圾收集,可以从第二区域AR2删除无效值。下面将参照图9A和图9B对此进行描述。
当执行压缩操作时,根据本发明构思的一个实施例的键值管理器120可以通过读取和重写具有相对少量数据的键而不执行具有相对大量数据的值的数据输入/输出来对无效键和值执行合并。例如,可以在没有过量数据的输入/输出的情况下执行压缩操作,因此,可以提高数据处理速度。
图8是示出根据本发明构思的示例实施例的键值管理器的操作方法的流程图。特别地,图8示出操作键值管理器以使键值管理器执行压缩操作的方法。
参照图2和图8,键值管理器120可以从非易失性存储器140读取多个键流(S210)。在一个实施例中,从非易失性存储器读取的多个键流可以包括至少一个无效键。键值管理器120可以通过合并多个键流来生成新键流(S220)。在一个示例中,键值管理器120可以通过去除包括在多个键流中的无效键并且仅在其中合并有效键来生成新键流。
键值管理器120可以将生成的键流存储在非易失性存储器140中(S230)。键值管理器120可以从非易失性存储器140删除无效键流(S240)。在一个实施例中,键值管理器120可以更新值表以将与无效值流相对应的有效性比特指示为无效,并且可以通过对无效值流执行垃圾收集来删除无效值流。
图9A是示出根据本发明构思的示例实施例的块的示图,图9B是示出根据本发明构思的示例实施例的多映射表的示图。在一个示例中,图9B的多映射表MMT可以表示哈希表或值表,已经参照图1至图8对其进行了描述。
参照图9A,块BLK可以包括分别具有不同的PPN的多个存储器单元(在图9A中由四边形标记),并且多个存储器单元中的每一个可以具有存储在其中的有效数据VD或无效数据ID。在一个实施例中,有效数据VD或无效数据ID可以包括参照图1至图8描述的键流的键或值流的值。键流或值流中的任何一个都可以被称为数据流。此外,有效数据VD可以指主机200(图1)未针对其发出删除命令的值或与其相对应的键,无效数据ID可以指主机200(图1)针对其发出删除命令的值或与其相对应的键。
块BLK可以存储多个数据片段(即,页),并且至少一些数据片段可以连续地写入到块BLK。在图9A的示例中,可以将三个数据片段连续地写入第一地址PPN1,可以将三个数据片段连续地写入第二地址PPN2,可以将三个数据片段连续地写入第三地址PPN3,可以将三个数据片段连续地写入第四地址PPN4。
参照图9B,可以通过使用多映射表MMT根据其存储位置来识别图9A中写入的数据片段。多映射表MMT可以包括存储连续数据片段中的第一数据片段(即,头片段或头页)的地址(例如,PPN),以及指示在上述地址存储的连续数据片段的有效性的有效性比特VD1至VD3。在一个示例中,有效性比特VD1至VD3中的每一个当与之相对应的数据有效时可以包括“1”,并且当与之相对应的数据无效时可以包括“0”。
再次参照图9A和图9B,因为存储在第一地址PPN1上的连续数据片段可以分别依次是有效数据片段VD,无效数据片段ID和有效数据片段VD,所以多映射表MMT可以按照所述顺序包括“1”,“0”和“1”作为与第一地址PPN1相对应的有效性比特VD1至VD3。因为存储在第二地址PPN2的所有连续数据片段可以是有效数据片段VD,所以多映射表MMT可以包括全“1”作为与第二地址PPN2相对应的有效性比特VD1至VD3。
因为存储在第三地址PPN3的所有连续数据片段都可以是无效数据片段ID,所以多映射表MMT可以包括全“0”作为与第三地址PPN3相对应的有效性比特VD1至VD3。因为存储在第四地址PPN4的连续数据片段可以分别并且依次是有效数据片段VD、有效数据片段VD和无效数据片段ID,所以多映射表MMT可以按照所述顺序包括“1”、“1”和“0”作为与第四地址PPN4相对应的有效性比特VD1至VD3。
在一个实施例中,键值管理器120(图2)可以通过使用多映射表MMT来执行垃圾收集。例如,键值管理器120可以通过使用多映射表MMT确定哪些数据(例如,哪个键流或哪个值流)有效,并且可以通过对无效数据执行垃圾收集来确保非易失性存储器140(图2)的有效空间。
图10是示出根据本发明构思的示例实施例的存储系统随时间的操作的示图。特别地,图10是示出存储系统接收写入命令的实施例的示图。
参照图10,存储系统可以包括主机200、控制器110和非易失性存储器140。主机200可以向控制器110输出用于写入第一键KEY1和第一值VAL1的第一命令CMD1(S310)。控制器110可以将第一键KEY1和第一值VAL1从第一命令CMD1分离(S320)。
控制器110可以通过使用先前存储在数据缓冲器130(图2)中的第一键KEY1和第二键KEY2生成键流ST_KEY,并且可以通过使用先前存储在数据缓冲器130(图2)中的第一值VAL1和第二值VAL2生成值流ST_VAL(S330)。在一个实施例中,控制器110可以将第一键KEY1与对应于第一值VAL1的第一索引idx1合并,可以将第二键KEY2与对应于第二值VAL2的第二索引idx2合并,并且可以将第一键KEY1和第二键KEY2彼此合并,第一键KEY1和第二键KEY2的每个都经过索引合并,从而生成键流ST_KEY。
非易失性存储器140可以将第一键KEY1存储在第一地址PPN1,并且可以将第二键KEY2存储在第二地址PPN2(S350)。此外,非易失性存储器140可以将第一值VAL1存储在第三地址PPN3,并且可以将第二值VAL2存储在第四地址PPN4(S350)。在一个实施例中,第一地址PPN1和第二地址PPN2可以在物理上彼此连续,并且第三地址PPN3和第四地址PPN4可以在物理上彼此连续。此外,第一地址PPN1和第二地址PPN2两者可以位于与第三地址PPN3和第四地址PPN4两者不同的区域中。
控制器110可以在键表KT中使第一键KEY1的存储位置对应于第一地址PPN1,并且可以在键表KT中使第二键KEY2的存储位置对应于第二地址PPN2,从而更新键表KT(S360)。
控制器110可以将第三地址PPN3写入值表VT,使得第三地址PPN3对应于与第一值VAL1相对应的第一索引idx1。此外,因为写入连续地址的第一值VAL1和第二值VAL2是有效的,所以控制器110可以通过写入两个“1”作为与之相对应的有效性比特来更新值表VT(S370)。
根据本发明构思的一个实施例的控制器110可以不将连续写入的第一值VAL1和第二值VAL2的两个地址都写入值表VT,而是可以仅写入与第一值相对应的地址,从而有效地管理值表VT。此外,控制器110可以使值表VT包括用于连续值VAL1和VAL2的有效性比特,从而有效地管理关于连续数据片段是否有效的信息。
图11是示出根据本发明构思的示例实施例的存储系统随时间的操作的示图。特别地,图11是示出存储系统接收擦除命令的实施例的示图。
参照图11,存储系统可以包括主机200、控制器110和非易失性存储器140。主机200可以向控制器110输出用于擦除第二键KEY2和第二值VAL2的第二命令CMD2(S410)。响应于第二命令CMD2,控制器110可以通过删除键表KT的与第二键KEY2相对应的部分来更新键表KT(S420)。响应于第二命令CMD2,控制器110可以将值表VT的第二位置有效性比特从“1”更新为“0”,该第二位置有效性比特指示第二值VAL2是否有效(S430)。
为了执行压缩操作,控制器110可以从非易失性存储器140读取键流ST_KEY(S440)。控制器110可以通过将键流ST_KEY与单独的键流合并来生成合并键流ST_KEY'(S450)。在一个示例中,控制器110可以响应于第二命令CMD2删除第二键KEY2,并且可以通过使用包括在键流ST_KEY中的第一键KEY1和包括在单独的键流中的第三键KEY3两者来生成合并键流ST_KEY'。
控制器110可以将合并键流ST_KEY'存储在非易失性存储器140中(S460),并且非易失性存储器140可以将合并键流ST_KEY'存储在第五地址PPN5和第六地址PPN6(S470)。根据本发明构思的一个实施例,在压缩操作中,控制器110可以从非易失性存储器140中仅读取具有相对少量数据的键流ST_KEY,而不从非易失性存储器140读取具有相对大量数据的值流ST_VAL,并且可以将合并键流ST_KEY'写入非易失性存储器140。因此,用于执行压缩操作的、对于非易失性存储器140输入/输出的数据量可能会减少。
图12是示出根据本发明构思的示例实施例的存储系统随时间的操作的示图。特别地,图12是示出存储系统执行垃圾收集的实施例的示图。
参照图12,存储系统可以包括主机200、控制器110和非易失性存储器140。主机200可以向控制器110输出用于擦除第一键KEY1和第一值VAL1的第三命令CMD3(S510)。响应于第三命令CMD3,控制器110可以通过删除键表KT的与第一键KEY1相对应的部分来更新键表KT(S520)。响应于第三命令CMD3,控制器110可以将值表VT的第一位置有效性比特从“1”更新为“0”,该第一位置有效性比特指示第一值VAL1是否有效(S530)。
因为与第一索引idx1相对应的所有有效性比特都是“0”,所以控制器110可以执行垃圾收集以删除对应的值流ST_VAL和对应的键流(S540)。响应于控制器110的垃圾收集请求,非易失性存储器140可以删除分别存储第一键KEY1和第二键KEY2的第一地址PPN1和第二地址PPN2,并且可以删除分别存储第一值VAL1和第二值VAL2的第三地址PPN3和第四地址PPN4(S550)。
图13是示出根据本发明构思的示例实施例的存储系统随时间的操作的示图。特别地,图13是示出存储系统接收用于写入SS表的写入命令的实施例的示图。
参照图13,存储系统可以包括主机200、控制器110和非易失性存储器140。主机200可以向控制器110输出包括第一键KEY1和第一值VAL1的第一SS表SST1(S610)。控制器110可以将第一键KEY1和第一值VAL1从第一SS表SST1分离(S620)。
控制器110可以通过使用先前存储在数据缓冲器130(图2)中的第一键KEY1和第二键KEY2来生成第一键流ST_KEY1,并且可以通过使用先前存储在数据缓冲器130(图2)中的第一值VAL1和第二值VAL2来生成第一值流ST_VAL1(S630)。
非易失性存储器140可以第一键KEY1存储在第一地址PPN1,并且可以将第二键KEY2存储在第一地址PPN1的下一个地址(S650)。此外,非易失性存储器140可以第一值VAL1存储在第三地址PPN3,并且可以将第二值VAL2存储在第三地址PPN3的下一个地址(S650)。因此,非易失性存储器140可以将第一键流ST_KEY1存储在第一地址PPN1,并且将第一值流ST_VAL1存储在第三地址PPN3。此外,非易失性存储器140可能已经将第二键流ST_KEY2存储在第二地址PPN2,并且将与第二键流ST_KEY2相对应的第二值流ST_VAL2存储在第四地址PPN4。
控制器110可以在哈希表HT中使第一SS表SST1的存储位置对应于第一地址PPN1,并且可以在哈希表HT中使第二SS表SST2的存储位置对应于第二地址PPN2,从而更新哈希表HT(S660)。
控制器110可以将第三地址PPN3写入值表VT,使得第三地址PPN3对应于与第一值VAL1相对应的第一索引idx1。此外,因为写入连续地址的第一值VAL1和第二值VAL2是有效的,所以控制器110可以通过写入两个“1”作为与之相对应的有效性比特来更新值表VT(S670)。
图14是示出根据本发明构思的示例实施例的存储系统随时间的操作的示图。特别地,图14是示出存储系统接收合并命令的实施例的示图。
参照图14,存储系统可以包括主机200、控制器110和非易失性存储器140。主机200可以向控制器110输出用于合并第一SS表SST1和第二SS表SST2的合并命令(或压缩命令)(S710)。控制器110可以从非易失性存储器140读取第一键流ST_KEY1和第二键流ST_KEY2(S720)。
控制器110可以合并第一键流ST_KEY1和第二键流ST_KEY2以生成第三键流ST_KEY3(S730)。在一个示例中,控制器110可以从自非易失性存储器140读取的第一键流ST_KEY1中删除第二键KEY2,删除从第二键流ST_KEY2读取的第三键KEY3,并且可以通过合并第一键流ST_KEY1和第二键流ST_KEY2中的有效键来生成第三键流ST_KEY3(例如,第一键流ST_KEY1的第一键KEY1和第二键流ST_KEY2的第四键KEY4)。
控制器110可以将第三键流ST_KEY3存储在非易失性存储器140中(S740),并且非易失性存储器140可以将第三键流ST_KEY3存储在第五地址PPN5(S760)。根据本发明构思的一个实施例,在压缩操作中,控制器110可以从非易失性存储器140仅读取具有相对少量数据的键流ST_KEY1和ST_KEY2,而不从非易失性存储器140读取具有相对大量数据的值流ST_VAL1和ST_VAL2,并且可以将第三键流ST_KEY3写入非易失性存储器140。因此,用于执行压缩操作的、对于非易失性存储器140输入/输出的数据量可能会减少。
图15是示出根据本发明构思的一个实施例的存储设备的框图。
参照图15,存储设备100a可以包括控制器100a、易失性存储器130a和非易失性存储器140。此外,控制器110a可以包括处理器111、存储器112、主机接口113、易失性存储器接口116和非易失性存储器接口114,并且这些组件可以经由总线115彼此通信。
处理器111可以包括CPU、微处理器等,并且可以控制控制器110的整体操作。存储器112可以根据处理器111的控制来操作,并且可以用作操作存储器、缓冲存储器、高速缓存存储器等。例如,存储器112可以用易失性存储器(诸如DRAM或SRAM)或非易失性存储器(诸如PRAM或闪存)来实现。
键值管理器120a可以以固件或软件来实现,并且可以被加载到存储器112中。在一个实施例中,键值管理器120a可以在闪存转换层(flash translation layer,FTL)中实现并且可以被加载到存储器112。然而,本发明构思不限于此,并且键值管理器120a可以以硬件实现。参照图1至图12描述的操作可以由处理器111通过使用键值管理器120a来执行。
主机接口113可以提供主机200和控制器110之间的接口,例如,根据通用串行总线(USB)、多媒体卡(MMC)、外围组件互连快速连接(Peripheral Component InterconnectExpress,PCI-E)、AT附接(AT Attachment,ATA)、串行AT附接(Serial AT Attachment,SATA)、并行AT附接(Parallel AT Attachment,PATA)、小型计算机系统接口(SmallComputer System Interface,SCSI)、串行附接SCSI(Serial Attached SCSI,SAS)、增强型小型磁盘接口(Enhanced Small Disk Interface,ESDI)、集成驱动电子设备(IntegratedDrive Electronics,IDE)等的接口。非易失性存储器接口114可以提供控制器110a和非易失性存储器140之间的接口。例如,可以经由非易失性存储器接口114在控制器110a和非易失性存储器140之间发送和接收键流或值流。
易失性存储器接口116可以提供控制器110a和易失性存储器130a之间的接口。例如,可以在控制器110a和易失性存储器130a之间发送和接收键表、值表或映射表MT。
易失性存储器130a可以存储映射表MT。在一个示例中,易失性存储器130a,类似于图2的数据缓冲器130,还可以存储键和值。为此,易失性存储器130a可以用DRAM来实现。映射表MT可以包括哈希表、键表和值表中的一个,已经参照图1至图14对其进行了描述。
根据本发明构思,键值管理器120a可以对键和值执行各种操作(例如,压缩操作和垃圾收集操作),而无需主机200的文件系统接口或操作系统(operating system,OS)和块设备层的干预,因此,可以提高数据处理速度。
图16是示出根据发明构思的示例实施例的电子设备的框图。
参照图16,电子设备3000可以包括处理器3100、存储器设备3200、存储设备3300、调制解调器3400、输入/输出设备3500和电源3600。在一个实施例中,可以通过使用参照图1至图15描述的实施例实现存储设备3300。
在一个实施例中,存储设备3300可以从主机接收包括多个键和分别对应于多个键的多个值的键值对,并且可以从键值对分离多个键和多个值。
在一个实施例中,存储设备3300可以通过将与每个值相对应的索引耦合到多个键中的每一个并且合并索引分别耦合到的多个键来生成键流。此外,存储设备3300可以通过合并多个值来生成值流。此外,存储设备3300可以将生成的键流和生成的值流存储在非易失性存储设备中。
在一个实施例中,在压缩的处理中,存储设备3300可以仅执行对键流的数据访问而不执行对值流的数据访问,从而删除无效键并生成包括有效键的键流。因此,在通过存储设备3300进行压缩的处理中,可以减少对非易失性存储设备的访问数据量,并且可以提高数据处理速度。
在一个实施例中,存储设备3300还可以在指示键流和值流的存储位置的映射表中包括指示键流和值流中的每一个是否有效的有效性比特。因此,存储设备3300可以有效地对键流和值流执行垃圾收集。
在一个实施例中,存储设备3300可以自己执行上述操作,而无需从处理器3100接收命令。
尽管已经参照本发明的实施例具体示出和描述了本发明构思,但是应当理解,在不脱离所附权利要求的精神和范围的情况下,可以在形式和细节上进行各种改变。
Claims (20)
1.一种存储设备,包括:
控制器,被配置为:
从主机接收多个键值对,
从所述多个键值对中的每一个中分离键并从所述多个键值对中的每一个中分离值,以及
通过合并从所述多个键值对分离的多个键生成第一键流;以及
非易失性存储器,被配置为存储所述第一键流,
其中,所述第一键流与从所述多个键值对中的每一个分离的值分开地被存储在所述非易失性存储器中。
2.根据权利要求1所述的存储设备,其中,
所述控制器还被配置为通过将所述多个键值对中的对应一个的键与对应于所述多个键值对中的对应一个的值的索引进行合并来生成所述第一键流。
3.根据权利要求1所述的存储设备,其中,
所述控制器响应于来自主机的压缩命令,从非易失性存储器中读取所述第一键流和第二键流;
通过合并所述第一键流和所述第二键流,生成第三键流;以及
将所述第三键流存储在所述非易失性存储器中。
4.根据权利要求3所述的存储设备,其中,
所述控制器还被配置为通过合并从所述多个键值对分离的多个值来生成值流,并将所述值流存储在所述非易失性存储器中,以及
所述值流与所述第一键流分开存储在所述非易失性存储器中。
5.根据权利要求3所述的存储设备,其中,
所述控制器通过合并所述第一键流的第一有效键和所述第二键流的第二有效键,生成所述第三键流;
所述第一有效键和所述第二有效键中的每一个对应于值中主机未向其发出擦除命令的值。
6.根据权利要求5所述的存储设备,还包括:
易失性存储器,被配置为存储哈希表和值表,所述哈希表包括所述第一键流至所述第三键流在所述非易失性存储器中的物理地址,以及所述值表包括所述值流在所述非易失性存储器中的物理地址。
7.一种存储设备的操作方法,所述存储设备包括非易失性存储器和控制所述非易失性存储器的控制器,所述操作方法包括:
所述控制器接收多个键值对;
所述控制器通过从所述多个键值对中的每一个中提取键来生成第一键流;以及
所述控制器将所述第一键流存储在所述非易失性存储器中。
8.根据权利要求7所述的操作方法,其中,
所述第一键流的生成包括:
为多个键值对中的对应一个的值生成索引;以及
将所述多个键值对中的对应一个的键与所述索引合并。
9.根据权利要求7所述的操作方法,还包括:
所述控制器通过从所述多个键值对中的每一个中提取值来生成值流;以及
所述控制器将所述值流存储在所述非易失性存储器中。
10.根据权利要求7所述的操作方法,还包括:所述控制器执行的压缩操作,所述压缩操作包括:
从所述非易失性存储器中读取所述第一键流和第二键流;
通过合并所述第一键流和所述第二键流,生产第三键流;以及
将所述第三键流存储在所述非易失性存储器中。
11.根据权利要求10所述的操作方法,其中,
生成所述第三键流包括:
通过从所述第一键流中提取第一有效键和从所述第二键流中提取第二有效键来生成所述第三键流,
其中,所述第一有效键和所述第二有效键中的每一个对应于多个值中主机未向其发出擦除命令的值。
12.根据权利要求11所述的操作方法,还包括:
所述控制器生成哈希表,所述哈希表包括关于所述第一键流至所述第三键流中的至少一个在所述非易失性存储器中的存储位置的信息;以及
所述控制器用与主机向其发出擦除命令的无效值相对应的无效键来更新所述哈希表。
13.根据权利要求12所述的操作方法,还包括:
所述控制器生成值表,所述值表包括所述多个值的物理地址和每一个指示对应值是否有效的至少一个有效性比特;以及
所述控制器用与所述无效键相对应的值的有效性比特来更新所述值表。
14.根据权利要求13所述的操作方法,还包括:
所述控制器通过使用所述值表的至少一个有效性比特,对与所述无效键相对应的值执行垃圾收集。
15.根据权利要求14所述的操作方法,还包括:
所述控制器生成值表,所述值表包括:
所述值流中包括的至少一个值的物理地址;以及
多个有效性比特,指示所述值流中包括的多个值是否有效。
16.一种存储设备的操作方法,所述存储设备包括非易失性存储器和控制所述非易失性存储器的控制器,所述操作方法包括:
所述控制器从多个数据页生成数据流;
所述控制器将所述数据流存储在非易失性存储器中;
所述控制器生成多映射表,所述多映射表包括:
所述非易失性存储器中的所述多个数据页中的第一数据页的物理地址;以及
至少一个有效性比特,指示所述数据流中包括的多个数据页中的对应页是否有效;以及
响应于所述多个数据页中的第一数据页无效,所述控制器用指示所述第一数据页是否有效的第一有效性比特来更新所述多映射表。
17.根据权利要求16所述的操作方法,其中,
所述多映射表的更新包括:
接收对所述第一数据页的擦除命令;以及
存储第一比特作为与所述第一数据页相对应的第一有效性比特。
18.根据权利要求16所述的操作方法,还包括:
所述控制器基于所述多映射表对所述非易失性存储器执行垃圾收集。
19.根据权利要求18所述的操作方法,其中:
所述多个数据页包括存储在所述非易失性存储器中物理上连续位置的所述第一数据页和第二数据页,
所述多映射表包括第二有效性比特,其指示所述第二数据页是否有效,以及
所述垃圾收集的执行包括:
基于所述多映射表的第一有效性比特和第二有效性比特,确定所述第一数据页和所述第二数据页是否有效;以及
响应于确定所述第一数据页和所述第二数据页是否有效,执行所述垃圾收集以擦除所述第一数据页和所述第二数据页。
20.根据权利要求16所述的操作方法,其中,
所述第一数据页是位于所述数据流的头部的页,并且所述第一数据页的物理地址表示所述数据流的物理地址,并作为所述数据流的物理地址包括在所述多映射表中。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR10-2019-0081522 | 2019-07-05 | ||
KR1020190081522A KR20210004701A (ko) | 2019-07-05 | 2019-07-05 | 키-밸류 기반으로 데이터를 저장하는 스토리지 장치 및 이의 동작 방법 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112181287A true CN112181287A (zh) | 2021-01-05 |
Family
ID=73919556
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010637367.XA Pending CN112181287A (zh) | 2019-07-05 | 2020-07-03 | 基于键值存储数据的存储设备及其操作方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US11556271B2 (zh) |
KR (1) | KR20210004701A (zh) |
CN (1) | CN112181287A (zh) |
DE (1) | DE102020110318A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114579061A (zh) * | 2022-04-28 | 2022-06-03 | 苏州浪潮智能科技有限公司 | 一种数据存储方法、装置、设备及介质 |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112394874A (zh) * | 2019-08-13 | 2021-02-23 | 华为技术有限公司 | 一种键值kv的存储方法、装置及存储设备 |
US11308030B2 (en) * | 2020-03-05 | 2022-04-19 | International Business Machines Corporation | Log-structured merge-tree with blockchain properties |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20170141538A (ko) * | 2016-06-15 | 2017-12-26 | 삼성전자주식회사 | 오브젝트 스토리지 장치 및 상기 오브젝트 스토리지 장치의 동작 방법들 |
US20180225315A1 (en) * | 2017-02-09 | 2018-08-09 | Micron Technology, Inc. | Kvs tree |
CN109753231A (zh) * | 2017-11-08 | 2019-05-14 | 三星电子株式会社 | 键值存储设备及操作其的方法 |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9311252B2 (en) | 2013-08-26 | 2016-04-12 | Globalfoundries Inc. | Hierarchical storage for LSM-based NoSQL stores |
US9772939B2 (en) | 2015-01-05 | 2017-09-26 | International Business Machines Corporation | Heat-based key-value slot organization for flash-optimized data placement in multi-tiered storage systems |
US10216418B2 (en) | 2015-06-01 | 2019-02-26 | Samsung Electronics Co., Ltd. | Storage apparatus and method for autonomous space compaction |
US10055162B2 (en) | 2015-10-30 | 2018-08-21 | Netapp, Inc. | Using a tree-based data structure to map logical addresses to physical addresses on a storage device |
EP3260971B1 (en) * | 2015-12-28 | 2021-03-10 | Huawei Technologies Co., Ltd. | Data processing method and nvme storage |
US20170249257A1 (en) | 2016-02-29 | 2017-08-31 | Itu Business Development A/S | Solid-state storage device flash translation layer |
EP3623954A1 (en) * | 2016-06-14 | 2020-03-18 | Huawei Technologies Co. Ltd. | Data access method and related apparatus and system |
US10719495B2 (en) * | 2017-02-09 | 2020-07-21 | Micron Technology, Inc. | Stream selection for multi-stream storage devices |
US10909074B2 (en) | 2017-04-18 | 2021-02-02 | Microsoft Technology Licensing, Llc | File table index aggregate statistics |
US20180349095A1 (en) | 2017-06-06 | 2018-12-06 | ScaleFlux, Inc. | Log-structured merge tree based data storage architecture |
US11100071B2 (en) * | 2018-10-10 | 2021-08-24 | Micron Technology, Inc. | Key-value store tree data block spill with compaction |
US11580162B2 (en) * | 2019-04-18 | 2023-02-14 | Samsung Electronics Co., Ltd. | Key value append |
-
2019
- 2019-07-05 KR KR1020190081522A patent/KR20210004701A/ko not_active Application Discontinuation
-
2020
- 2020-04-09 US US16/844,119 patent/US11556271B2/en active Active
- 2020-04-15 DE DE102020110318.2A patent/DE102020110318A1/de active Pending
- 2020-07-03 CN CN202010637367.XA patent/CN112181287A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20170141538A (ko) * | 2016-06-15 | 2017-12-26 | 삼성전자주식회사 | 오브젝트 스토리지 장치 및 상기 오브젝트 스토리지 장치의 동작 방법들 |
US20180225315A1 (en) * | 2017-02-09 | 2018-08-09 | Micron Technology, Inc. | Kvs tree |
CN109753231A (zh) * | 2017-11-08 | 2019-05-14 | 三星电子株式会社 | 键值存储设备及操作其的方法 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114579061A (zh) * | 2022-04-28 | 2022-06-03 | 苏州浪潮智能科技有限公司 | 一种数据存储方法、装置、设备及介质 |
Also Published As
Publication number | Publication date |
---|---|
US11556271B2 (en) | 2023-01-17 |
DE102020110318A1 (de) | 2021-01-07 |
KR20210004701A (ko) | 2021-01-13 |
US20210004177A1 (en) | 2021-01-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10229051B2 (en) | Storage device including nonvolatile memory device and controller, operating method of storage device, and method for accessing storage device | |
US9032138B2 (en) | Storage device based on a flash memory and user device including the same | |
JP6134205B2 (ja) | 記憶装置のデータ書き込み方法 | |
US11573890B2 (en) | Storage device storing data based on key-value and operating method of the same | |
US11487630B2 (en) | Storage device and data processing method thereof | |
US11733891B2 (en) | Storage device storing data based on key-value and operating method of the same | |
US11556271B2 (en) | Storage device storing data on key-value basis and operating method thereof | |
US10922011B2 (en) | Controllers configured to perform secure deletion, key-value storage devices including said controllers, and methods of operation thereof | |
KR20130081534A (ko) | 저장 장치 및 불휘발성 메모리 장치, 그리고 그것의 동작 방법 | |
US10120606B2 (en) | Data storage devices including storage controller circuits to select data streams based on application tags and computing systems including the same | |
CN106610904B (zh) | 存储系统及其操作方法 | |
KR20130084846A (ko) | 플래시 메모리를 기반으로 하는 저장 장치, 그것을 포함한 사용자 장치, 그리고 그것의 데이터 읽기 방법 | |
US11422930B2 (en) | Controller, memory system and data processing system | |
KR20210068699A (ko) | 스토리지 장치, 스토리지 시스템 및 스토리지 장치의 동작 방법 | |
CN113254362A (zh) | 存储设备和存储器控制器的操作方法 | |
CN112988615A (zh) | 键值存储设备和操作方法 | |
KR20170033480A (ko) | 스토리지 장치 및 그것을 포함하는 서버 시스템의 매칭 키 검색 방법 | |
US20230152968A1 (en) | Storage devices including non-volatile memory devices | |
KR102497213B1 (ko) | 안전 삭제를 수행하는 컨트롤러, 이를 포함하는 키-밸류 스토리지 장치 및 키-밸류 스토리지 장치의 동작방법 | |
US20220405000A1 (en) | Storage device and operating method of storage device | |
US20240119009A1 (en) | Memory controller with improved mapping information management, memory system including the same, and operating method of memory controller | |
KR20240065774A (ko) | 네임스페이스의 순차성을 기초로 논리 주소를 변환하는 스토리지 장치 및 그 동작 방법 | |
CN115904218A (zh) | 包括主机和存储装置的存储系统以及存储系统的操作方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |