CN109753231B - 键值存储设备及操作其的方法 - Google Patents
键值存储设备及操作其的方法 Download PDFInfo
- Publication number
- CN109753231B CN109753231B CN201810782027.9A CN201810782027A CN109753231B CN 109753231 B CN109753231 B CN 109753231B CN 201810782027 A CN201810782027 A CN 201810782027A CN 109753231 B CN109753231 B CN 109753231B
- Authority
- CN
- China
- Prior art keywords
- chunk
- key
- index
- mapping
- hash
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims description 34
- 238000013507 mapping Methods 0.000 claims abstract description 201
- 230000004044 response Effects 0.000 claims description 31
- 238000010586 diagram Methods 0.000 description 14
- 239000008186 active pharmaceutical agent Substances 0.000 description 3
- 101100481702 Arabidopsis thaliana TMK1 gene Proteins 0.000 description 2
- 101100244635 Paramecium tetraurelia Ppn2 gene Proteins 0.000 description 2
- 101100244641 Paramecium tetraurelia Ppn3 gene Proteins 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 238000013519 translation Methods 0.000 description 2
- 101000927793 Homo sapiens Neuroepithelial cell-transforming gene 1 protein Proteins 0.000 description 1
- 101001124937 Homo sapiens Pre-mRNA-splicing factor 38B Proteins 0.000 description 1
- 101000643391 Homo sapiens Serine/arginine-rich splicing factor 11 Proteins 0.000 description 1
- 101000631937 Homo sapiens Sodium- and chloride-dependent glycine transporter 2 Proteins 0.000 description 1
- 101000639975 Homo sapiens Sodium-dependent noradrenaline transporter Proteins 0.000 description 1
- 101100353051 Neurospora crassa (strain ATCC 24698 / 74-OR23-1A / CBS 708.71 / DSM 1257 / FGSC 987) epp-1 gene Proteins 0.000 description 1
- 101150034591 PPN1 gene Proteins 0.000 description 1
- 102100028886 Sodium- and chloride-dependent glycine transporter 2 Human genes 0.000 description 1
- 102100024991 Tetraspanin-12 Human genes 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000003252 repetitive effect Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
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/0292—User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/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
- G06F16/2228—Indexing structures
- G06F16/2255—Hash tables
-
- 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/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
-
- 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
- G06F16/221—Column-oriented storage; Management thereof
-
- 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/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- Computing Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
键值存储设备包括非易失性存储器和控制器。键值存储设备被配置为与主机通信,并且包括控制器和非易失性存储器。控制器被配置为从主机接收包括键、包括在对应于键的值中的多个组块当中的第一组块、以及对应于第一组块的第一组块索引的第一命令。控制器被配置为基于键和第一组块索引将第一组块的映射信息存储在映射表中。非易失性存储器被配置为基于映射信息存储键和第一组块。
Description
相关申请的交叉引用
本美国非临时专利申请根据35U.S.C§119要求于2017年11月8日向韩国知识产权局提交的韩国专利申请第10-2017-0148316号的优先权,其公开内容通过引用整体并入本文。
技术领域
本公开涉及一种存储设备。更具体地,本公开涉及一种键值存储设备及操作其的方法。
背景技术
根据管理数据的单元,存储装置可分为基于对象的存储装置和基于块的存储装置。基于对象的存储装置是一种将数据作为对象进行存储和管理的存储架构。对象可以是可以具有任意大小的数据,并且可以是例如,文件、诸如运动图像或图像的多媒体数据等。基于对象的存储装置可以被用于管理这种对象。基于对象的存储设备的示例是键值存储设备。
发明内容
根据本公开的一方面,配置为与主机通信的键值存储设备包括控制器和非易失性存储器。控制器被配置为从主机接收包括键、包括在对应于键的值中的多个组块当中的第一组块、以及对应于第一组块的第一组块索引的第一命令。控制器还被配置为基于键和第一组块索引将第一组块的映射信息存储在映射表中。非易失性存储器被配置为基于映射信息存储键和第一组块。
根据本公开的另一方面,键值存储设备包括非易失性存储器和被配置为控制非易失性存储器的控制器。操作键值存储设备的方法包括由控制器从主机接收包括键、包括在对应于键的值中的多个组块当中的第一组块、以及对应于第一组块的第一组块索引的第一命令。该方法还包括响应于第一命令,由控制器基于键和第一组块索引来生成用于存储第一组块的映射信息的第一映射索引。该方法还包括由控制器在映射表中存储用于根据第一映射索引在非易失性存储器上写入第一组块的第一物理地址。此外,该方法包括通过参考映射表将第一组块写在非易失性存储器的第一物理地址上。
根据本公开的另一方面,键值存储设备包括存储器,存储器包括第一区域和第二区域。操作键值存储设备的方法包括:向第一区域分配包括多个组的散列表(hash table),每个组包括多个散列条目;向第二区域分配桶表,桶表包括分别对应于多个组的多个桶,并且每个桶包括至少一个桶条目。当对应于第一散列索引并且被分配给多个组当中的第一组的散列条目的数量大于阈值数量时,该方法还包括将对应于第一散列索引并且被分配给第一组的新散列条目存储在与第一组相对应的第一桶中。第一桶从多个桶当中选择。
附图说明
根据以下结合附图的详细描述,将更清楚地理解本公开的实施例,在附图中:
图1示出了根据实施例的存储系统的框图;
图2A示出了根据实施例的键区域、散列的键区域以及NAND区域;
图2B示出了根据实施例的存储在非易失性存储器中的键值数据;
图3示出了根据实施例的存储系统的框图;
图4示出了根据实施例的用于解释键、值、组块和组块索引的表;
图5示出了根据实施例的大值管理操作;
图6示出了根据实施例的操作存储系统的方法的流程图;
图7示出了根据实施例的操作存储系统的方法的另一示例的流程图;
图8示出了根据实施例的图3的控制器的框图;
图9示出了根据实施例的映射表和组块之间的关系;
图10示出了根据实施例的映射表和非易失性存储器;
图11示出了根据实施例的操作键值存储设备的方法的流程图;
图12示出了根据实施例的主机、控制器和非易失性存储器之间的写入操作的流程图;
图13示出了根据实施例的主机、控制器和非易失性存储器之间的读取操作的流程图;
图14示出了根据实施例的主机、控制器和非易失性存储器之间的另一读取操作的流程图;
图15示出了根据实施例的存储系统的另一个示例的框图;
图16示出了根据实施例的散列表和桶表;
图17示出了根据实施例的包括在散列表中的组和包括在桶表中的桶之间的关系;
图18A示出了根据实施例的第一组和第一桶;
图18B示出了根据实施例的散列条目;
图18C示出了根据实施例的桶条目;
图19A和图19B分别示出了根据实施例的组的示例;
图20示出了根据实施例的操作键值存储设备的方法的流程图;
图21示出了根据实施例的将映射信息存储在桶中的操作;
图22示出了根据实施例的相邻桶之间的共享操作;
图23示出了根据实施例的主机、控制器和非易失性存储器之间的写入操作的流程图;
图24示出了根据实施例的主机、控制器和非易失性存储器之间的读取操作的流程图;
图25和图26分别示出了根据实施例的网络系统;和
图27示出了根据实施例的电子设备的框图。
具体实施方式
在下文中,现在将参考其中示出了本公开的示例性实施例的附图来更全面地描述本公开的发明构思。
图1示出了根据实施例的存储系统10的框图。
参考图1,存储系统10可以包括存储设备100和主机200。存储设备100可以包括控制器110和非易失性存储器(即NVM 120)。主机200可以通过使用各种接口与存储设备100通信。例如,主机200可以被体现为应用处理器(Application Processor,AP)或片上系统(System on Chip,SoC)。
在实施例中,存储设备100可以是键值存储设备或键值存储,或者可以是例如键值固态驱动器(Solid State Drive,SSD)。键值存储设备通过使用键值对快速简单地处理数据。在此,“键值对”表示一对具有唯一性的键和对应于键的数据的值,并且可以被称为“元组”或“键值元组”。在键值对中,键可以被表示为诸如文件名、统一资源标识符(UniformResource Identifier,URI)或散列值的任意字符串。值可以是诸如图像、用户偏好文件或文档的任意类型的数据。在这种情况下,键和值的大小是可变的。例如,值的大小可以根据值中包括的数据而改变。
在下文中,将主要描述其中存储设备100是键值存储设备的实施例。在本说明书中,存储设备100可以基本上与键值存储设备或键值存储相同。然而,存储设备100不限于键值存储设备,并且可以被应用于以对象为单位管理数据的任意对象高速缓存系统或对象存储系统。因此,存储设备100可以任意地以对象为单位而不是使用键值对来管理数据。
在实施例中,主机200可以向存储设备100发送包括键值对的命令CMD,例如写入请求或放入命令。存储设备100可以响应于命令CMD在NVM 120上写值。在实施例中,主机200可以向存储设备100发送命令CMD,例如包括键的读取请求或获取命令。存储设备100可以响应于命令CMD从NVM 120读取对应于键的值。在这种情况下,主机200可以不将键转换为具有固定大小的逻辑块地址(Logical Block Address,LBA)单元,并且可以生成包括具有可变大小的键的命令CMD,从而将生成的命令CMD发送到存储设备100。
控制器110可以响应于来自主机200的写入请求,控制NVM 120使得可以将值写入NVM 120上,或者可以响应于来自主机200的读取请求,读取存储在NVM 120中的值。在本实施例中,控制器110可以包括其中存储多个映射数据的映射表MT。例如,映射表MT可以被加载到诸如动态随机存取存储器(Dynamic Random-Access Memory,DRAM)或静态RAM(StaticRandom-Access Memory,SRAM)的存储器。图1示出映射表MT被包括在控制器110中,但是本公开的一个或多个实施例不限于此。在一些实施例中,映射表MT可以被加载到其中体现控制器110的控制器芯片外部的存储器芯片。在下文中,参考图2A,将更详细地描述映射表MT。
图2A示出根据实施例的键区域KA、散列键区域HKA和NAND区域NA。
参考图1和图2A,主机200可以从/向存储设备100接收/发送在键区域KA中定义的键数据。键数据的大小可以是可变的,并且可以足够大以引起根据实施例要解决的问题。由于映射表MT被加载到具有有限容量的存储器中,当键数据的大小足够大以引起如本文所述的要解决的问题时,可能难以将键数据存储在存储器中。因此,控制器110可以对在键区域KA中定义的键数据执行散列操作,并且因此可以在散列键区域HKA中生成散列的键。
在映射表MT中,所生成的散列键被用作映射索引,即散列索引,并且可以针对每个映射索引存储映射数据。在本说明书中,除非另外定义,否则映射索引可以基本上与散列索引相同。映射数据可以包括用于将值存储在存储设备100的非易失性存储器(例如NAND区域NA)中的物理地址。如所描述的,映射数据可以指示散列键和物理地址、例如物理页码(Physical Page Number,PPN)的对应关系,并且因此映射表MT可以被称为键到物理页码(Key-to-PPN,K2P)映射表。
例如,作为对第一键数据和第二键数据中的每一个执行散列操作的结果,可以生成等同的第一散列键,即,等同的第一映射索引。在映射表MT中,当预先存储与对应于第一映射索引的第一键数据相对应的第一值的物理地址时,还可以存储与对应于与第一映射索引不同的另一映射索引的第二键数据相对应的第二值的物理地址。如上所述,作为在键数据的块上执行散列操作的结果而生成等同的散列键的情况可以被称为“散列冲突”。在实施例中,控制器110可以确定与散列冲突的数量的限制相对应的冲突限制。稍后用于描述超过冲突限制的散列冲突的预期的术语是“过度冲突”。冲突限制可以是针对导致等同散列键的散列冲突而预先确定的阈值。在这种情况下,当发生超过冲突限制的散列冲突时,需要解决方案。
返回参考图1,NVM 120可以包括存储器单元阵列MCA,并且存储器单元阵列MCA可以包括存储器块BLK1至BLKz。存储器块BLK1可以包括页面PG1至PGm,其中z和m每个可以是正整数并且可以根据实施例而变化。例如,存储器块可以是擦除单元,并且页面可以是写入和读取单元。在一些实施例中,存储器单元阵列MCA可以包括平面(plane)、裸芯或芯片。在实施例中,NVM 120可以包括快闪存储器设备,例如NAND快闪存储器设备。然而,本公开的一个或多个实施例不限于此。NVM 120可以包括诸如电阻式RAM(ReRAM)的电阻式存储器设备、相变RAM(PRAM)或磁RAM(MRAM)。
图2B示出根据实施例的存储在NVM 120中的键值数据。
参考图1和图2B,存储在NVM 120中的键值数据可以包括键值头部HD、键数据KD和值数据VD。如上面参考图2A所述,因为由于键数据KD的可变大小,不可能将键数据KD的所有块存储在例如DRAM的存储器中,所以键数据KD可以连同值数据VD一起被存储在NVM 120中。
当从主机200接收到包括键的读取请求时,控制器110可以从键生成散列键。在这种情况下,在映射表MT中,可以在散列冲突的限制值的范围内存储对应于等同散列键的多个映射数据的块。因此,控制器110可以根据映射数据的块来控制在NVM 120上执行的各种读取操作,从而确定键数据KD。在这种情况下,为了减少在NVM 120上执行读取操作的次数,NVM 120可以收集并存储键数据KD和值数据VD。例如,键值头部HD可以存储元数据,例如,键数据KD或值数据VD的大小,并且可以通过使用键值头部HD将键值数据KD和值数据VD相互区分开。
返回参考图1,存储系统10可以被体现为例如个人计算机(Personal Computer,PC)、数据服务器、网络附加存储(Network-Attached Storage,NAS)、物联网(Internet ofThings,IOT)设备或便携式电子设备。便携式电子设备可以是笔记本计算机(laptopcomputer)、移动电话、智能电话、平板PC、个人数字助理(Personal Digital Assistant,PDA)、企业数字助理(Enterprise Digital Assistant,EDA)、数码相机、数码摄像机、音频设备、便携式多媒体播放器(Portable Multimedia Player,PMP)、个人导航设备(PersonalNavigation Device,PND)、MP3播放器、手持式游戏机、电子书阅读器、可穿戴设备等。
在一些实施例中,存储设备100可以是嵌入在电子设备中的存储器。例如,存储设备100可以是SSD、嵌入式通用快闪存储(Universal Flash Storage,UFS)存储器设备或嵌入式多媒体卡(embedded Multi-Media Card,eMMC)。在一些实施例中,存储设备100可以是可拆卸地附接到电子设备的外部存储器。例如,存储设备100可以是UFS存储卡、紧凑快闪(Compact Flash,CF)卡、安全数字(Secure Digital,SD)卡、微型安全数字(Micro SecureDigital,Micro-SD)卡、小型安全数字(Mini Secure Digital,Mini-SD)卡、极限数字(extreme Digital,xD)卡或记忆棒。
图3示出了根据实施例的存储系统10a的框图。根据本实施例的存储系统10a可以是图1的存储系统10的示例,并且参考图1至图2B提供的描述可以应用于本实施例。因此,在此将省略重复的描述。
参考图3,主机200a可以包括键生成器210和大值管理器220。键生成器210可以生成具有可变大小的键。大值可以具有大于阈值、例如预定的阈值的大小。大值管理器220可以将大值分成组块,并且可以生成分别对应于组块的组块索引。这里,“大值”可以被定义为具有比NVM 120的写入单元更大的大小的值。“阈值”可对应于例如所述NVM 120的写入单元的大小。例如,阈值可以对应于与PPN对应的页面的大小。例如,阈值可以对应于通过将页面的大小乘以包括在NVM 120中的平面的数量而获得的值。例如,阈值可以对应于通过将页面的大小乘以包括在控制器110a中的核(例如,稍后描述的图8的处理器111)的数量而获得的值。在下文中,将参考图4描述大值和组块。
图4示出根据实施例的用于解释键、值、组块和组块索引的表40。
参考图3和图4,主机200a可以生成第一键KEY1和对应于第一键KEY1的第一值V1。当第一值V1的大小大于阈值时,大值管理器220可将第一值V1划分为第一组块CHUNK0至第四组块CHUNK3,并且可以将第一索引CI0到第四组块索引CI3分别分配给第一组块CHUNK0到第四组块CHUNK3。在这种情况下,第一组块CHUNK0至第四组块CHUNK3中的每一个的大小可以基于例如NVM 120的写入单位的大小(例如,页面的大小)来确定。例如,第一组块CHUNK0到第四组块CHUNK3的大小可以各自小于或等于页面的大小并且可以相同。然而,一个或多个实施例不限于此。第一组块CHUNK0到第四组块CHUNK3的大小可能彼此不同。
而且,主机200a可以生成第二键KEY2和对应于第二键KEY2的第二值V2。当第二值V2的大小大于阈值时,大值管理器220可将第二值V2划分为第一组块CHUNK0至第三组块CHUNK2。在这种情况下,大值管理器220可以将第一组块索引CI0到第三组块索引CI2分别分配给第一组块CHUNK0到第三组块CHUNK2。在这种情况下,第二值V2的大小可以小于第一值V1的大小。因此,包括在第二值V2中的组块的数量可以小于包括在第一值V1中的组块的数量。
另外,主机200a可以生成第三键KEY3和对应于第三键KEY3的第三值V3。当第三值V3的大小小于或等于阈值时,大值管理器220可以不将第三值V3划分为组块的单元,并且主机200a可以将包括第三键KEY3和第三值V3的命令CMD发送给存储设备100a。
图5示出了根据实施例的大值管理操作。
参考图3和图5,包括在主机200a中的大值管理器220可将大值V划分为第一组块CHUNK0至第四组块CHUNK3,并且例如,大值V可对应于图4的第一值V1。主机200a可以向存储设备100a顺序地发送与大值V中包括的组块的数量相对应的数量的命令CMD。命令CMD可以包括键、与键相对应的值中包括的组块中的第N个组块CHUNK_N以及与第N个(Nth)组块CHUNK_N相对应的组块索引。
图6示出了根据实施例的主机200a和存储设备100a之间的写入操作的流程图。例如,根据实施例的写入操作可对应于将图4的第一键KEY1和第一值V1写入存储设备100a上的操作。在下文中,将参考图3至图6描述写入操作。
在操作S110中,主机200a将包括第一键KEY1、第一组块CHUNK0和第一组块索引CI0的命令(例如,放入命令PUT CMD)发送到存储设备100a。在操作S120中,存储设备100a基于第一键KEY1和第一组块索引CI0对第一组块CHUNK0执行写入操作。在操作S125中,存储设备100a向主机200a发送指示对第一组块CHUNK0的写入操作已完成的响应消息。在操作S130中,主机200a向存储设备100a发送包括第一键KEY1、第二组块CHUNK1和第二组块索引CI1的放入命令PUT CMD。在操作S140中,存储设备100a基于第一键KEY1和第二组块索引CI1对第二组块CHUNK1执行写入操作。在操作S145中,存储设备100a向主机200a发送指示对第二组块CHUNK1的写入操作已完成的响应消息。
在操作S150中,主机200a将包括第一键KEY1、第三组块CHUNK2和第三组块索引CI2的放入命令PUT CMD发送到存储设备100a。在操作S160中,存储设备100a基于第一键KEY1和第三组块索引CI2对第三组块CHUNK2执行写入操作。在操作S165中,存储设备100a向主机200a发送指示对第三组块CHUNK2的写入操作已完成的响应消息。在操作S170中,主机200a向存储设备100a发送包括第一键KEY1、第四组块CHUNK3和第四组块索引CI3的放入命令PUTCMD。在操作S180中,存储设备100a基于第一键KEY1和第四组块索引CI3对第四组块CHUNK3执行写入操作。在操作S185中,存储设备100a向主机200a发送指示对第四组块CHUNK3的写入操作已完成的响应消息。
如上文针对图6所阐述的,在每次放入命令之后迭代地执行写入操作,并且在每次写入操作之后由存储设备100a发出响应。
图7示出了根据实施例的主机200a和存储设备100a之间的写入操作的另一示例的流程图。例如,根据本实施例的写入操作可以对应于在存储设备100a上写入图4的第一键KEY1和第一值V1的操作。在下文中,将参考图3至图5和图7描述写入操作。
在操作S210中,主机200a将包括第一键KEY1、第一组块CHUNK0和第一组块索引CI0的放入命令PUT CMD发送到存储设备100a。在操作S220中,主机200a将包括第一键KEY1、第二组块CHUNK1和第二组块索引CI1的放入命令PUT CMD发送到存储设备100a。在操作S230中,主机200a将包括第一键KEY1、第三组块CHUNK2和第三组块索引CI2的放入命令PUT CMD发送到存储设备100a。在操作S240中,主机200a将包括第一键KEY1、第四组块CHUNK3和第四组块索引CI3的放入命令PUT CMD发送到存储设备100a。
在操作S250中,存储设备100a顺序地执行对第一组块CHUNK0至第四组块CHUNK3的写入操作。在操作S260中,存储设备100a向主机200a发送指示对第一组块CHUNK0的写入操作已完成的响应消息。在操作S270中,存储设备100a向主机200a发送指示对第二组块CHUNK1的写入操作已完成的响应消息。在操作S280中,存储设备100a向主机200a发送指示对第三组块CHUNK2的写入操作已完成的响应消息。在操作S290中,存储设备100a向主机200a发送指示对第四组块CHUNK3的写入操作已完成的响应消息。
返回参考图3,控制器110a可以包括映射索引管理器MIM和映射表MTa。映射索引管理器MIM可以基于从主机200a接收到的命令CMD中包括的键和组块索引来生成用于存储组块的映射信息的映射索引。在实施例中,映射索引管理器MIM可以以包括在与键相对应的值中的组块的映射信息被分布并存储在映射表MTa中这种方式生成映射索引。将参考图9描述映射索引管理器MIM的详细操作。在映射表MTa中,可以根据所生成的映射索引来存储用于在NVM 120上写入组块的物理地址。在下文中,将参考图8详细描述控制器110a。
如以上针对图7所阐述的,多个放入命令在S210、S220、S230和S240处被单独地且分开地接收之后,可以在S250处执行写入操作。响应在写入命令后将被单独且分开地发出。
图8示出了根据实施例的图3的控制器110a的框图。
参考图8,控制器110a可以包括处理器111、存储器112、主机接口(interface,IF)113和非易失性存储器接口114(non-volatile memory interface,NVM IF),并且处理器111、存储器112、主机IF 113和非易失性存储器接口114可以经由总线115彼此通信。处理器111可以包括中央处理单元(central processing unit,CPU)、微处理器等,并且可以总体上控制控制器110a的操作。在实施例中,处理器111可以被体现为多核处理器,例如四核处理器。
主机IF 113可以提供主机200a与控制器110a之间的接口,并且例如,主机IF 113可以提供根据通用串行总线(Universal Serial Bus,USB)、MMC、PCI Express(PCI-E)、AT附件(AT Attachment,ATA)、串行AT附件(Serial AT Attachment,SATA)、并行AT附件(Parallel AT Attachment,PATA)、小型计算机系统接口(Small Computer SystemInterface,SCSI)、串行连接SCSI(Serial Attached SCSI,SAS)、增强型小磁盘接口(Enhanced Small Disk Interface,ESDI)、集成驱动电子设备(Integrated DriveElectronics,IDE)等的接口。
在实施例中,主机IF 113可以包括命令解码器。命令解码器可以解码从主机200a中接收到的命令CMD,并且可以将包括在命令CMD中的键、组块和组块索引进行分类。在实施例中,主机IF 113还可以包括对键执行散列操作的散列模块,并且散列模块可以从键生成散列键并且可以将生成的散列键提供给映射索引管理器MIM。然而,本公开的一个或多个实施例不限于此。散列模块可以被体现在快闪转换层(Flash Translation Layer,FTL)中并且因此可以被加载到存储器112。
存储器112可以在处理器111的控制下被驱动,并且可以被用作操作存储器(operation memory)、缓冲存储器(buffer memory)、高速缓冲存储器(cache memory)等。例如,存储器112可以被体现为诸如DRAM或SRAM的易失性存储器或诸如PRAM或快闪存储器的非易失性存储器。在实施例中,映射索引管理器MIM和映射表MTa可以被加载到存储器112。映射索引管理器MIM可以被体现为固件或软件并且可以被加载到存储器112。在实施例中,映射索引管理器MIM可以被体现在FTL中。然而,本公开的一个或多个实施例不限于此。映射索引管理器MIM可以被体现为硬件。映射表MTa可以存储例如K2P映射表,并且可以被加载到存储器112。
非易失性存储器接口114可以提供控制器110a和NVM 120之间的接口。例如,可以通过非易失性存储器接口114在控制器110a和NVM 120之间接收/发送映射表MTa、写入数据和读取数据。在实施例中,非易失性存储器接口114可以以与包括在存储设备100a中的非易失性存储器芯片的数量或控制器110a与NVM 120之间的通道的数量相对应的数量来提供。
图9示出了根据实施例的映射表MTa与第一组块CHUNK0至第四组块CHUNK3之间的关系。
参考图3至图5和图9,控制器110a可以从主机200a顺序地接收分别包括第一组块CHUNK0至第四组块CHUNK3的第一命令91至第四命令94。例如,第一组块CHUNK0至第四组块CHUNK3可以被包括在图4的第一值V1中。在这种情况下,第一命令91可以包括第一键KEY1、第一组块CHUNK0和第一组块索引CI0。第二命令92可以包括第一键KEY1、第二组块CHUNK1和第二组块索引CI1。第三命令93可以包括第一键KEY1、第三组块CHUNK2和第三组块索引CI2。第四命令94可以包括第一键KEY1、第四组块CHUNK3和第四组块索引CI3。
由于第一命令91至第四命令94包括相同的第一键KEY1,因此当通过对第一键KEY1执行散列操作而生成的散列的键被用作映射索引时,对应于第一组块CHUNK0至第四组块CHUNK3的映射信息可以被存储在映射表MTa中的连续映射条目中。因此,可能发生过度冲突,并且存储设备100a的性能和映射表MTa的使用效率可能降低。
在实施例中,映射索引管理器MIM可以通过使用下面的方程式1来生成散列索引HI,并且可以使用所生成的散列索引HI作为映射索引。因此,映射表可以被称为散列表。在本说明书中,除非另有定义,映射表可以与散列表基本相同。
[方程式1]
HI=(HK+D*CI)MOD MHI
其中HK表示散列键,D是分别对应于包括在值中的两个相邻组块的相邻散列条目(映射条目)之间的距离、换句话说,偏移量,并且MHI可以是散列索引HI的最大散列索引(即也被称为映射索引的散列索引HI的最大值)。如下所述,距离D也可以是两个相邻映射索引(散列索引)之间的距离。映射索引管理器MIM将分别对应于相邻组块的相邻散列项彼此分开距离D,并且因此可以在映射表MTa中分布和存储分别对应于第一组块CHUNK0至第四组块CHUNK3的映射数据的块。因此,分别对应于第一组块CHUNK0至第四组块CHUNK3的映射数据的块可以被均匀地分布在映射表MTa中,并且可以降低发生散列冲突的可能性。此外,映射索引管理器MIM可以通过使用下面的方程式2来计算距离D。
[方程式2]
D=MHI/MCC
其中MHI可以是散列索引的最大散列索引(即也被称为映射索引的散列索引HI的最大值)并且可以取决于映射表MTa的大小而变化。此外,MCC可以是组块的数量的最大组块计数,并且可以取决于值的大小而变化。例如,散列索引的最大散列索引在映射表MTa中可以是16,并且在第一值V1中组块的数量的最大组块计数可以是4。因此,距离D可以是4。在下文中,将参考图10更详细地描述生成分别对应于第一组块CHUNK0至第四组块CHUNK3的映射索引的操作。
图10示出了根据实施例的映射表101和NVM 102。
参考图8至图10,映射索引管理器MIM可以基于包括在第一命令91中的第一键KEY1和第一组块索引CI0来生成第一映射索引。第一映射索引可以被确定为从第一键KEY1生成的散列键HK,并且例如映射索引可以被确定为MI6。第一组块CHUNK0的物理地址可以被存储在映射表101的第一映射条目101a中。因此,可以将第一键KEY1、第一映射索引MI6和第一组块CHUNK0写入NVM 102的PPN1中。
然后,映射索引管理器MIM可以基于包括在第二命令92中的第一键KEY1和第二组块索引CI1来生成第二映射索引。第二映射索引可以被确定为与第一映射索引MI6分开距离D的MI10,并且第二组块CHUNK1的物理地址可以被存储为映射表101的第二映射条目101b中的PPN2。因此,可以将第一键KEY1、第二映射索引MI10和第二组块CHUNK1写入NVM 102的PPN2中。如所述的,距离D在方程式2中基于映射表的映射索引的最大值(散列表的散列索引的最大值)和组块的最大组块计数来计算。作为提醒,距离D可以对应于相邻散列条目(映射条目)之间的距离以及相邻映射索引之间的距离。
映射索引管理器MIM可以基于包括在第三命令93中的第一键KEY1和第三组块索引CI2来生成第三映射索引。第三映射索引可以被确定为与第二映射索引MI10分开距离D的MI14,并且第三组块CHUNK2的物理地址可以被存储为映射表101的第三映射条目101c中的PPN3。因此,可以将第一键KEY1、第三映射索引MI14和第三组块CHUNK2写入NVM 102的PPN3中。
映射索引管理器MIM可以基于包括在第四命令94中的第一键KEY1和第四组块索引CI3来生成第四映射索引。第四映射索引可以通过执行MOD操作而被确定为与第三映射索引MI14分开距离D的MI2,并且第四组块CHUNK3的物理地址可以被存储为映射表101的第四映射条目101d中的PPN4。因此,可以将第一键KEY1、第四映射索引MI2和第四组块CHUNK3写入NVM 102的PPN4中。
如上所述,根据本实施例,存储装置100a可以包括映射索引管理器MIM。映射索引管理器MIM可以分布和存储对应于不同组块的映射数据的块,并且减少散列冲突的发生,由此减少附加存储器源的使用。在图10的实施例中,针对每个不同的组块索引生成不同的映射索引。另外,存储设备100a可以以直接映射的方式体现映射表101,因此可以具有与组块索引无关的相同搜索延迟。而且,根据本实施例,具有相同键的大值可以连同每个具有多个键的多个值一起被利用。
图11示出了根据实施例的操作键值存储设备的方法的流程图。
参考图11,根据本实施例的操作键值存储设备的方法可以对应于响应于来自主机的写入请求而执行的写入方法。例如,根据本实施例的操作键值存储设备的方法可以包括在存储键值的图3的存储设备100a中按时间顺序执行的操作。因此,参考图3至图10提供的描述可以应用于本实施例,并且在此将省略重复的描述。
在操作S310中,包括在存储装置100a中的控制器110a可以从主机200a接收包括键、包括在与键相对应的值中的组块和与组块对应的组块索引的命令。然而,本公开的一个或多个实施例不限于此。在一些实施例中,控制器110a可以从主机200a接收包括关于大值中组块的开始偏移量和组块的大小的信息的命令。
在操作S330中,控制器110a基于键和组块索引生成映射索引。例如,映射索引可以对应于经由上述方程式1和方程式2计算的散列索引。在操作S350中,控制器110a将根据映射索引将映射信息存储在映射表MT中。在操作S370中,基于存储在映射表MT中的映射信息将组块写在NVM 120上。在实施例中,键和散列键可以被进一步写在NVM 120上。
图12示出了根据实施例的主机200a、控制器110a和NVM 120之间的写入操作的流程图。根据本实施例的写入操作可以对应于图11的示例,并且在下文中,将参考图3和图12描述写入操作。
在操作S410中,主机200a向控制器110a发送包括第一键KEY1、包括在与第一键KEY1相对应的值中的第一组块CHUNK0和与第一组块CHUNK0相对应的第一组块索引CI0的放入命令PUT CMD。在操作S420中,控制器110a基于第一键KEY1和第一组块索引CI0生成第一映射索引MIa,并且在映射表上更新用于写入第一组块CHUNK0的第一PPN PPNa。在操作S425中,控制器110a可以将包括第一组块CHUNK0和第一PPN PPNa的写入命令WRITE CMD发送到NVM 120。在操作S430中,NVM 120可将第一组块CHUNK0写入第一PPN PPNa上。在这种情况下,第一键KEY1和第一映射索引MIa可以被进一步写在第一PPN PPNa上。在操作S435中,NVM120向控制器110a发送指示写入操作已完成的响应消息。在操作S440中,控制器110a向主机200a发送指示写入第一组块CHUNK0的写入操作已完成的响应消息。
在操作S450中,主机200a向控制器110a发送包括第一键KEY1、包括在与第一键KEY1相对应的值中的第二组块CHUNK1和与第二组块CHUNK1相对应的第二组块索引CI1的放入命令PUT CMD。在操作S460中,控制器110a可以基于第一键KEY1和第二组块索引CI1生成第二映射索引MIb,并且可以在映射表上更新用于写入第二组块CHUNK1的第二PPN PPNb。在操作S465中,控制器110a将包括第二组块CHUNK1和第二PPN PPNb的写入命令WRITE CMD发送到NVM 120。在操作S470中,NVM 120将第二组块CHUNK1写入第二PPN PPNb上。在这种情况下,第一键KEY1和第二映射索引MIb可以被进一步写在第二PPN PPNb上。在操作S475中,NVM120向控制器110a发送指示写入操作已完成的响应消息。在操作S480中,控制器110a向主机200a发送指示写入第二组块CHUNK1的写入操作已完成的响应消息。尽管未示出,但是可以根据值中包括的组块的数量进一步执行与操作S410至S480基本相同的操作。
图13示出了根据实施例的主机200a、控制器110a和NVM 120之间的读取操作的流程图。在下文中,将参考图3和图13描述读取操作。
在操作S510中,主机200a向控制器110a发送包括第一键KEY1和第一组块索引CI0的获取命令GET CMD。在操作S520中,控制器110a检索映射表并且查找第一PPN PPNa,第一PPN PPNa是其中存储与第一组块索引CI0对应的第一组块CHUNK0的物理地址。详细地,控制器110a可以从第一键KEY1生成散列键并且可以基于生成的散列键和第一组块索引CI0将映射索引确定为MIa。然后,可以找到存储在与由控制器110a确定的映射索引MIa相对应的映射条目中的第一PPN PPNa。在操作S525中,控制器110a将包括第一PPN PPNa的读取命令READ CMD发送到NVM 120。在操作S530中,NVM 120读取存储在第一PPN PPNa中的第一组块CHUNK0。在操作S535中,NVM 120向控制器110a发送包括读取的第一组块CHUNK0的响应消息。在操作S540中,控制器110a向主机200a发送包括读取的第一组块CHUNK0的响应消息。
在操作S550中,主机200a向控制器110a发送包括第一键KEY1和第二组块索引CI1的获取命令GET CMD。在操作S560中,控制器110a检索映射表并且查找第二PPN PPNb,第二PPN PPNb是其中存储与第二组块索引CI1相对应的第二组块CHUNK1的物理地址。详细地,控制器110a可以从第一键KEY1生成散列键并且可以基于生成的散列键和第二组块索引CI1将映射索引确定为MIb。然后,可以找到存储在与由控制器110a确定的映射索引MIb相对应的映射条目中的第二PPN PPNb。在操作S565中,控制器110a将包括第二PPN PPNb的读取命令READ CMD发送到NVM 120。在操作S570中,NVM 120读取存储在第二PPN PPNb中的第二组块CHUNK1。在操作S575中,NVM 120向控制器110a发送包括读取的第二组块CHUNK1的响应消息。在操作S580中,控制器110a向主机200a发送包括读取的第二组块CHUNK1的响应消息。尽管未示出,但是可以根据值中包括的组块的数量进一步执行与操作S510至S580基本相同的操作。
图14示出了根据实施例的主机200a、控制器110a和NVM 120之间的读取操作的另一示例的流程图。在下文中,将参考图3和图14描述读取操作。
在操作S610中,主机200a向控制器110a发送包括第一键KEY1的获取命令GET CMD。在操作S620中,控制器110a可以检索映射表并且可以找到包括在对应于第一键KEY1的第一值V1中的第一和第二组块CHUNK0和CHUNK1的物理地址。例如,控制器110a可以找到是第一组块CHUNK0的物理地址的第一PPN PPNa,然后找到是第二组块CHUNK1的物理地址的第二PPN PPNb。
在操作S630中,控制器110a将包括第一PPN PPNa的读取命令READ CMD发送到NVM120。在操作S640中,NVM 120从第一PPN PPNa读取第一组块CHUNK0。在操作S650中,NVM 120将读取的第一组块CHUNK0发送到控制器110a。在操作S660中,控制器110a将包括第二PPNPPNb的读取命令READ CMD发送到NVM 120。在操作S670中,NVM 120从第二PPN PPNb读取第二组块CHUNK1。在操作S680中,NVM 120将读取的第二组块CHUNK1发送到控制器110a。在操作S690中,控制器110a向主机200a发送包括第一和第二组块CHUNK0和CHUNK1的第一值V1。
图15示出了根据实施例的存储系统10b的另一个示例的框图。根据本实施例的存储系统10b可以是图1的存储系统10的示例。参考图1至图2B提供的描述可以应用于本实施例,并且在此将省略重复的描述。
参考图15,存储设备100b可以包括映射表管理器MTM和映射表MTb,并且映射表MTb可以包括散列表HT和桶表BT。散列表HT可以包括散列条目,并且对应于散列索引的映射信息可以被存储在每个散列条目中。在这种情况下,散列索引可以对应于从键生成的散列键。作为对不同的键执行散列操作的结果,可能会发生超过冲突限制的“散列冲突”。也就是说,可能发生导致生成相同散列键的散列冲突,并且冲突限制可以是要容许发生多少次的预定阈值。存储设备100b可以预先确定散列表HT上的冲突限制以实现恒定的读取延迟。当具有相同散列索引的键的数量超过冲突限制时,认为发生“过度冲突”。换句话说,冲突限制可以是预先确定的阈值数量,并且当满足冲突限制时可以采取步骤。
散列表HT可以包括散列条目,并且对应于散列索引的映射数据可以被存储在每个散列条目中。桶表BT可以包括桶条目。映射数据可以对应于针对其发生过度冲突的散列索引,并且映射数据可以存储在每个桶条目中。在实施例中,映射表MTb可以被加载到诸如DRAM或SRAM的存储器,并且在存储器中分配给散列表HT的第一区域的大小可以大于分配给桶表BT的第二区域的大小。
图16示出了根据实施例的散列表HT和桶表BT。
参考图16,当在通用散列表HTa中发生过度冲突时,映射信息可能不再被存储在散列表HTa中,并且因此需要不是散列表HTa的数据结构。例如,当发生过度冲突时,存储在散列表HTa中的散列条目可以被重新排列在具有比散列表HTa更大的大小的新散列表中。然而,在这种情况下,由于存储器的容量有限,可能难以增加散列表的大小,并且可能使用大量的资源来重新排列已经被存储的散列条目。
根据本实施例,桶表BT可以包括桶,并且每个桶可以包括至少一个桶条目。当用于散列索引的散列表HT中发生过度冲突时,与散列索引相对应的条目可以被存储在包括在桶表BT中的桶条目中。因此,可以通过使用没有任何改变的散列表HT来提高散列表HT的使用效率,并且可以减少用于重新排列散列条目的资源量。由于桶表BT可以通过使用比散列表HT相比更少的存储器资源量来执行对于散列表HT的支持角色,所以桶表BT可以被称为次级桶散列。
图17示出了根据实施例的散列表HT中包括的组GR0至GRn-1与桶表BT中包括的桶BK0至BKn-1之间的关系。
参考图17,散列表HT可以包括N个组,即组GR0到GRn-1,并且桶表BT可以包括N个桶,即桶BK0到BKn-1,其分别对应于组GR0到GRn-1。这里,N可以是等于或大于2的自然数,散列表HT中包括的组的数量可以与包括在桶表BT中的桶的数量相同。散列表HT的大小可以大于桶表BT的大小。因此,组GR0至GRn-1中的每一个的大小可以大于桶BK0至BKn-1中的每一个的大小。
根据本实施例,由于每个组和每个桶具有一对一关系,因此当对于散列索引发生过度冲突并且检索到对应于散列索引的条目时,检索与相应组匹配的桶。结果,搜索开销可以被减少。然而,本公开的一个或多个实施例不限于此。在一些实施例中,多个组可以对应于一个桶。包括在散列表HT中的组与包括在桶表BT中的桶之间的关系可以根据存储器资源被自适应地确定。
图18A示出了根据实施例的第一组GR0和第一桶BK0。图18B示出了根据实施例的散列条目。图18C示出了根据实施例的桶条目。在下文中,将参考图13至图18C描述图18A至图18C的示例。
散列表HT的第一组GR0的大小可以被确定为2的K次幂(“2K”),并且K可以是任意的自然数。例如,K可以是3,并且相应地,第一组GR0可以包括八个散列条目。在第一组GR0中,散列索引的值可以是0000、0001、0010、0011、0100、0101、0110和0111。在这种情况下,通过从散列索引的每个值中移除较低的三位,可以获得相应桶索引的值。例如,与第一组GR0相对应的桶索引的值可以为0,因此发现第一组GR0对应于第一桶BK0。
可以为每个散列索引HI生成散列条目。在实施例中,散列条目可以包括物理地址(即PPN)、位图和散列标签。然而,本公开的一个或多个实施例不限于此。散列条目可以仅包括物理地址,或者可以包括物理地址、位图和散列标签中的至少一个。物理地址可以是用于在NVM中存储对应于散列索引HI的值的PPN。位图可以指示对应于散列索引HI的至少一个散列条目的存储位置。例如,当冲突限制被确定为4时,位图可以被体现为4位。例如,其中存储与散列索引HI相对应的散列条目的位置可以被设置为‘1’,并且其中未存储与散列索引HI相对应的散列条目的位置可以被设置为‘0’。散列标签可以指示是否使用包括在桶表BT中的桶。例如,当对应于散列索引HI的映射信息被存储在桶中时,可以将散列标签设置为‘1’。
桶表BT的第一桶BK0可以包括例如两个桶条目。包括在第一桶BK0中的桶条目的数量可以基于其中散列表HT中包括的N个组中发生过度冲突的散列条目的平均值来确定。因此,当其中发生过度冲突的散列条目的平均值增加时,包括在第一桶BK0中的桶条目的数量可能增加。
可以为每个桶索引BI生成桶条目。在实施例中,桶条目可以包括物理地址(即PPN)、位图和桶标签。然而,本公开的一个或多个实施例不限于此。桶条目可以仅包括物理地址,或者可以包括物理地址、位图和桶标签中的至少一个。物理地址可以是用于在NVM中存储与关于其发生过度冲突的散列索引H1相对应的值的PPN。位图可以指示对应于桶索引BI的至少一个桶条目的存储位置。例如,其中存储与桶索引BI相对应的桶条目的位置可以被设置为‘1’,并且其中未存储与桶索引BI相对应的桶条目的位置可以被设置为‘0’。桶标签可以指示是否使用包括在与其相邻的另一个桶中的桶条目。例如,当与桶相邻的另一个桶中存储与桶索引BI相对应的映射信息时,桶标签可以被设置为‘1’。
图19A和19B分别示出了根据实施例的散列表191和192中包括的组的示例。
参考图19A,散列表191可以包括八个散列条目。例如,冲突限制可以被确定为4,并且相应地,包括在每个散列条目中的位图可以被体现为4位。第一位图BM0可以指示对应于散列索引‘0’的散列条目的存储位置。类似地,第二位图BM1可以指示对应于散列索引‘1’的散列条目的存储位置。
参考图19B,散列表192可以包括八个散列条目。例如,可以从彼此不同的第一和第二键生成散列索引‘0’。可以将对应于第一键的第一值的映射信息存储在与散列索引‘0’相对应的散列条目中。相反,由于其他映射信息已经被存储在与散列索引‘0’相对应的散列条目中,所以可以将与第二键相对应的第二值的映射信息存储在另一散列条目中,例如,对应于散列索引‘2’散列条目。相应地,与散列索引‘0’相对应的第一位图BM0可以被表达为例如1010。而且,例如,可以从第三键生成散列索引‘4’。例如,可以将对应于第三键的第三值的映射信息存储在对应于散列索引‘5’的散列条目中。相应地,对应于散列索引‘4’的位图BM4可被表达为例如0100。
图20示出了根据实施例的操作键值存储设备的方法的流程图。
参考图20,根据本实施例的操作键值存储设备的方法可以取决于是否发生过度冲突而对应于将散列条目存储在散列表或桶表中的方法。例如,根据本实施例的操作键值存储设备的方法可以包括在存储键值的图15的存储设备100b中按时间顺序地执行的操作。因此,参考图15至图19提供的描述可以应用于本实施例,并且在此将省略重复的描述。
在操作S710中,可以将包括组的散列表分配给存储器的第一区域。在操作S720中,可以将包括桶的桶表分配给存储器的第二区域。在这种情况下,第一区域的尺寸可以大于第二区域的尺寸。在实施例中,第一和第二区域可以被体现在相同的存储器芯片中。然而,本公开的一个或多个实施例不限于此。在一些实施例中,第一和第二区域可以被体现在不同的存储器芯片中。
在操作S730中,做出关于是否发生过度碰撞的确定。作为确定的结果,当发生针对散列索引的过度冲突时,执行操作S740,并且当没有发生针对散列索引的过度冲突时,执行操作S750。在操作S740中,将对应于针对其发生过度冲突的散列索引的映射信息存储在包括在桶表中的桶条目中。在操作S750中,将对应于散列索引的映射信息存储在散列表中包括的散列条目中。在操作S760中,将值写在NVM上。
图21示出了根据实施例的将映射信息存储在第一桶BK0中的操作。
参考图21,第一组GR0可以包括八个散列条目,并且可以将冲突限制确定为4。冲突限制可以是预先确定的阈值数量。在这种情况下,当四个散列条目已经对应于散列索引HI时,在与散列索引H1相对应的新散列条目211中可能发生过度冲突。因此,新散列条目211可以被存储在与第一组GR0相对应的第一桶BK0中包括的第一桶条目中。换句话说,当对应于相同的散列索引H1(即相同的映射索引)并且被分配给第一组GR0的散列条目的数量大于对于冲突限制的预定阈值时,控制器可以将新散列条目211存储在包括在第一桶BK0中的第一桶条目中。即使对于多个组当中的组,控制器也可以以这种方式存储新的散列条目,以减轻满足冲突限制的条件。而且,第一桶条目还可以包括指示针对其发生过度冲突的散列索引HI的桶标签B_TAG。对应于散列表HT中的散列索引HI的散列标签可以被设置为指示对应于散列索引H1的新散列条目211已经被存储在第一桶BK0中。
图22示出了根据实施例的相邻桶之间的共享操作。
参考图22,可以将新桶条目222分配给与第一组GR0相对应的第一桶BK0。然而,当在桶表BT中第一桶BK0已满时,新桶条目222可以被存储在与第一桶BK0相邻的第二桶BK1中包括的桶条目中。当第二桶BK1也满时,新桶条目222可以被存储在包括在第三桶BK2中的桶条目中。第一位图BM0'可以指示分配给第一桶BK0的桶条目的存储位置。例如,第一位图BM0'可以是1101。第三位图BM2'可以指示分配给第二桶BK1的桶条目的存储位置。例如,第三位图BM2'可以是1000。
图23示出了根据实施例的主机200、控制器110b和NVM 120之间的写入操作的流程图。在下文中,将参考图15和图23描述写入操作。
在操作S810中,主机200向控制器110b发送包括第一键KEY1和第一值V1的放入命令PUT CMD。在操作S820中,控制器110b通过对第一键KEY1执行散列操作来生成散列键。在操作S830中,控制器110b确定关于所生成的散列键是否发生过度冲突。作为确定的结果,当未发生过度冲突时,在操作S840中,将与散列键相对应的第一值V1的映射信息更新到散列表HT。在这种情况下,可以不执行操作S850,而是可以在操作S840之后执行操作S860。相反,当发生过度冲突时,在操作S850中,将与散列键相对应的第一值V1的映射信息更新到桶表BT。
在操作S860中,控制器110b将包括第一值V1和存储在散列表HT或桶表BT中的映射表中包括的物理地址的写入命令WRITE CMD发送到NVM120。在操作S870中,NVM 120将第一值V1写入物理地址上。在一些实施例中,NVM 120可以进一步将第一键KEY1和散列键写入物理地址上。在操作S880中,NVM 120向控制器110b发送指示写入操作已完成的响应消息。在操作S890中,控制器110b向主机200发送指示写入操作已完成的响应消息。
图24示出了根据实施例的主机200、控制器110b和NVM 120之间的读取操作的流程图。在下文中,将参考图15和图24描述读取操作。
在操作S910中,主机200将包括第一键KEY1的获取命令GET CMD发送到控制器110b。在操作S920中,控制器110b通过对第一键KEY1执行散列操作来生成散列键。在操作S930中,控制器110b通过使用生成的散列键作为映射索引来检索映射表。作为检索映射表的结果,当从映射表中找到与映射索引相对应的物理地址时,可以不执行操作S940,并且可以执行操作S950。当没有从映射表中找到与映射索引相对应的物理地址时,可以执行操作S940。在操作S940中,控制器110b可以通过使用生成的散列键作为映射索引来检索桶表BT。
在操作S950中,控制器110b将包括从散列表HT或桶表BT中检索到的映射表的读取命令READ CMD发送到NVM 120。在操作S960中,NVM 120通过执行读取操作来读取存储在与映射信息相对应的物理地址中的第一值V1。在操作S970中,NVM 120将包括第一值V1的响应消息发送到控制器110b。在操作S980中,控制器110b将包括第一值V1的响应消息发送到主机200。
图25和图26分别示出了根据实施例的网络系统1000和2000。
参考图25,网络系统1000可以包括服务器系统1100和经由网络NET与服务器系统1100通信的终端1210至1230(例如,计算节点)。服务器系统1100可以包括服务器1110和SSD1120。在这种情况下,服务器1110可以对应于根据一个或多个实施例的主机200或200a,并且SSD 1120可以对应于根据一个或多个实施例的存储设备100、存储设备100a或存储设备100b。在实施例中,基于参考图1至图14描述的一个或多个实施例,SSD 1120可以被体现为支持大值的SSD。在实施例中,基于参考图15至图24描述的一个或多个实施例,SSD 1120可以被体现为支持次级桶散列的SSD。
服务器1110可以处理来自连接到网络NET的终端1210到1230的请求。在实施例中,服务器1110可以向SSD 1120发送包括键、组块和组块索引的命令。在实施例中,SSD 1120可以以组块为单位执行写入操作。在实施例中,SSD 1120可以以组块为单位执行读取操作。在实施例中,SSD 1120可以将散列表存储在存储器的第一区域中并将桶表存储在存储器的第二区域中。在这种情况下,第一区域的尺寸可以大于第二区域的尺寸。散列表可以包括组,每个组包括散条目。而且,桶表可以包括分别对应于组的桶,并且每个桶包括至少一个桶条目。
图26示出根据实施例的网络系统2000。
参考图26,网络系统2000可以包括客户端组2100和数据中心2200。客户端组2100可以包括经由第一网络NET1(例如因特网)与数据中心2200通信的客户端设备C。数据中心2200可以是收集各种类型的数据并提供服务的设施,并且可以包括经由例如局域网(LocalArea Network,LAN)或内联网的第二网络NET2彼此通信的应用服务器组2210、数据库服务器组2220和对象高速缓存服务器组2230。
应用服务器组2210可以包括应用服务器设备AS,并且应用服务器设备AS可以响应于来自客户端组2100的请求而处理来自客户端组2100的请求并访问数据库服务器组2220或对象高速缓存服务器组2230。数据库服务器组2220可以包括存储由应用服务器设备AS处理的数据的数据库服务器设备DS。对象高速缓存服务器组2230可以包括临时存储存储在数据库服务器设备DS中或从中读取的数据的对象高速缓存服务器设备OCS,因此对象高速缓存服务器组2230可以执行应用服务器设备AS和数据库服务器设备DS之间的高速缓存的功能。在实施例中,对象高速缓存服务器设备OCS可以是支持大值的键值存储设备,并且可以基于参考图1至图14描述的一个或多个实施例来体现。在实施例中,对象高速缓存服务器设备OCS可以是支持次级桶散列的键值存储设备,并且可以基于参考图15至图24描述的一个或多个实施例来体现。
图27示出了根据实施例的电子设备3000的框图。
参考图27,电子设备3000可以包括处理器3100、存储器设备3200、存储设备3300、调制解调器3400、输入/输出(I/O)设备3500和电源3600。在实施例中,存储设备3300可以是支持大值的键值存储设备,并且可以基于参考图1至图14描述的一个或多个实施例来体现。在实施例中,存储设备3300可以是支持次级桶散列的键值存储设备,并且可以基于参考图15至图24描述的一个或多个实施例来体现。
尽管已经参考本发明的实施例具体示出并描述了本公开的发明构思,但是应当理解,在不脱离所附权利要求的精神和范围的情况下,可以在其中进行形式和细节上的各种改变。
Claims (11)
1.一种键值存储设备,被配置为与主机通信,所述键值存储设备包括:
非易失性存储器;以及
控制器,被配置为
从所述主机接收第一命令,第一命令包括键、被包括在与所述键相对应的值中的多个组块当中的第一组块、以及多个组块索引当中的与第一组块相对应的第一组块索引;
基于映射表的映射索引的最大值和所述多个组块的最大组块计数,计算分别与所述多个组块当中的两个相邻组块相对应的两个相邻映射索引之间的距离;
基于第一组块索引、所述距离、以及基于所述键生成的散列键,生成第一组块的第一映射索引;以及
基于第一映射索引,在所述映射表中存储用于在非易失性存储器上写入第一组块的第一物理地址;
其中,非易失性存储器被配置为基于第一物理地址来存储所述键和第一组块;
其中,所述值的大小大于第一物理地址的大小;
其中,第一组块的大小小于或等于第一物理地址的大小;以及
其中,所述多个组块索引分别对应于所述多个组块。
2.根据权利要求1所述的键值存储设备,其中,所述映射表包括散列表与桶表,
所述散列表包括多个组,每个组包括多个散列条目,
所述桶表分别对应于所述多个组并且包括至少一个桶条目,并且
所述散列表的大小大于所述桶条目的大小。
3.根据权利要求2所述的键值存储设备,其中,所述控制器还被配置为当对应于第一散列索引并且被分配给多个组当中的第一组的散列条目的数量大于预先确定的阈值数量时,将对应于第一散列索引并且被分配给第一组的新散列条目存储在与第一组相对应的第一桶中,所述第一桶从在所述桶表中并且分别与所述多个组相对应的多个桶中选择。
4.一种操作键值存储设备的方法,所述键值存储设备包括非易失性存储器和被配置为控制所述非易失性存储器的控制器,所述方法包括:
从主机接收第一命令,第一命令包括键、被包括在与键相对应的值中的多个组块当中的第一组块、以及多个组块索引当中的与第一组块相对应的第一组块索引,其中,所述接收由所述控制器执行;
基于映射表的映射索引的最大值和所述多个组块的最大组块计数,计算分别与所述多个组块当中的两个相邻组块相对应的两个相邻映射索引之间的距离;
响应于第一命令,基于第一组块索引、所述距离、以及与所述键对应的并且基于所述键生成的散列键,生成用于存储第一组块的映射信息的第一映射索引,其中,所述生成由控制器执行;
根据第一映射索引,在映射表中存储用于在非易失性存储器上写入第一组块的第一物理地址,其中,所述存储由控制器执行;以及
通过参考映射表将第一组块写入在非易失性存储器的第一物理地址上,
其中,第一映射索引的生成包括:
生成对应于所述键的散列键;以及
基于所生成的散列键和第一组块索引来确定第一映射索引,并且
其中,所述值的大小大于第一物理地址的大小;
其中,第一组块的大小小于或等于第一物理地址的大小;以及
其中,所述多个组块索引分别对应于所述多个组块。
5.根据权利要求4所述的方法,还包括在执行从主机接收第一命令之后:
从主机接收包括所述键、所述多个组块当中的第二组块和对应于所述第二组块的第二组块索引的第二命令,其中所述接收由控制器执行;
响应于所述第二命令,基于所述键和所述第二组块索引生成用于存储所述第二组块的映射信息的第二映射索引,其中,所述生成由控制器执行。
6.根据权利要求5所述的方法,其中,所述第二映射索引的生成包括:
基于所述映射表的映射索引的最大值和所述多个组块的最大组块计数,计算分别与所述多个组块当中的两个相邻组块相对应的两个相邻映射索引之间的距离;以及
确定所述第二映射索引以对应于所述第一映射索引和所述距离的和。
7.根据权利要求4所述的方法,其中,所述多个组块的大小彼此等同。
8.根据权利要求4所述的方法,还包括:
从所述主机接收包括所述键的读取命令,其中所述接收由控制器执行;和
通过参考所述映射表从所述非易失性存储器读取所述值。
9.根据权利要求4所述的方法,还包括:
从所述主机接收包括所述键和所述第一组块索引的读取命令,其中所述接收由控制器执行;和
通过参考所述映射表从所述非易失性存储器读取所述第一组块。
10.根据权利要求4所述的方法,其中,所述键值存储设备还包括所述映射表被加载到其中的存储器。
11.根据权利要求7所述的方法,其中,所述存储器包括加载所述映射表的第一区域和加载多个桶的第二区域,
所述映射表包括多个组,每个组包括多个散列条目,
多个桶分别对应于多个组,并且
所述方法还包括:当在所述多个散列条目当中分配给所述第一映射索引的散列条目的数量大于阈值数量时,将所述第一物理地址存储在所述多个桶当中的第一桶中。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020170148316A KR102569545B1 (ko) | 2017-11-08 | 2017-11-08 | 키-밸류 스토리지 장치 및 상기 키-밸류 스토리지 장치의 동작 방법 |
KR10-2017-0148316 | 2017-11-08 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109753231A CN109753231A (zh) | 2019-05-14 |
CN109753231B true CN109753231B (zh) | 2024-05-10 |
Family
ID=66328564
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810782027.9A Active CN109753231B (zh) | 2017-11-08 | 2018-07-17 | 键值存储设备及操作其的方法 |
Country Status (3)
Country | Link |
---|---|
US (2) | US11392571B2 (zh) |
KR (1) | KR102569545B1 (zh) |
CN (1) | CN109753231B (zh) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11329817B2 (en) * | 2017-10-19 | 2022-05-10 | Devi Selva Kumar Vijayanarayanan | Protecting data using controlled corruption in computer networks |
US10903997B2 (en) * | 2017-10-19 | 2021-01-26 | Autnhive Corporation | Generating keys using controlled corruption in computer networks |
US10884947B2 (en) * | 2017-11-17 | 2021-01-05 | SK Hynix Inc. | Methods and memory systems for address mapping |
CN109800178B (zh) | 2017-11-17 | 2023-05-16 | 爱思开海力士有限公司 | 垃圾收集方法以及用于混合地址映射的存储器系统 |
US10860249B2 (en) * | 2017-12-25 | 2020-12-08 | Pliops Ltd. | Solid state disk (SSD) controller and database |
CN112068948B (zh) * | 2019-06-10 | 2024-03-26 | 上海赜睿信息科技有限公司 | 数据散列方法、可读存储介质和电子设备 |
KR102714982B1 (ko) * | 2019-07-05 | 2024-10-10 | 삼성전자주식회사 | 키-밸류 기반으로 데이터를 저장하는 스토리지 장치 및 이의 동작 방법 |
CN112988763B (zh) * | 2021-05-14 | 2021-07-27 | 北京顺实科技有限公司 | 一种以部分散列Key为索引的Kv数据库存储与查询方法 |
US11954345B2 (en) | 2021-12-03 | 2024-04-09 | Samsung Electronics Co., Ltd. | Two-level indexing for key-value persistent storage device |
US11894046B2 (en) | 2022-05-17 | 2024-02-06 | Western Digital Technologies, Inc. | Alignment optimization of key value pair data storage |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7827182B1 (en) * | 2004-06-02 | 2010-11-02 | Cisco Technology, Inc | Searching for a path to identify where to move entries among hash tables with storage for multiple entries per bucket during insert operations |
CN102436420A (zh) * | 2010-10-20 | 2012-05-02 | 微软公司 | 使用辅助存储器的低ram空间、高吞吐量的持久键值存储 |
CN102929793A (zh) * | 2011-08-08 | 2013-02-13 | 株式会社东芝 | 包括键-值存储的存储器系统 |
CN105612490A (zh) * | 2013-10-02 | 2016-05-25 | 网络装置公司 | 用于分布式存储架构的盘区散列技术 |
US9438426B2 (en) * | 2014-10-03 | 2016-09-06 | Seagate Technology Llc | Key-value data storage device with hybrid architecture |
KR20170057821A (ko) * | 2015-11-17 | 2017-05-25 | 삼성전자주식회사 | 저장 장치, 그것을 포함하는 데이터베이스 시스템 및 그것의 인터페이스 제공 방법 |
CN106990910A (zh) * | 2015-11-23 | 2017-07-28 | 三星电子株式会社 | 存储设备和存储设备的操作方法 |
Family Cites Families (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5897637A (en) | 1997-03-07 | 1999-04-27 | Apple Computer, Inc. | System and method for rapidly identifying the existence and location of an item in a file |
US7814129B2 (en) | 2005-03-11 | 2010-10-12 | Ross Neil Williams | Method and apparatus for storing data with reduced redundancy using data clusters |
US8620884B2 (en) | 2008-10-24 | 2013-12-31 | Microsoft Corporation | Scalable blob storage integrated with scalable structured storage |
US20110276744A1 (en) * | 2010-05-05 | 2011-11-10 | Microsoft Corporation | Flash memory cache including for use with persistent key-value store |
US8788543B2 (en) | 2010-05-13 | 2014-07-22 | International Business Machines Corporation | Scalable, concurrent resizing of hash tables |
US9002907B2 (en) | 2010-08-30 | 2015-04-07 | Unwired Planet, Llc | Method and system for storing binary large objects (BLObs) in a distributed key-value storage system |
US8874505B2 (en) | 2011-01-11 | 2014-10-28 | Hitachi, Ltd. | Data replication and failure recovery method for distributed key-value store |
KR20130064518A (ko) * | 2011-12-08 | 2013-06-18 | 삼성전자주식회사 | 저장 장치 및 그것의 동작 방법 |
US9075710B2 (en) * | 2012-04-17 | 2015-07-07 | SanDisk Technologies, Inc. | Non-volatile key-value store |
US9612955B2 (en) * | 2013-01-09 | 2017-04-04 | Wisconsin Alumni Research Foundation | High-performance indexing for data-intensive systems |
US9317548B2 (en) | 2013-01-30 | 2016-04-19 | International Business Machines Corporation | Reducing collisions within a hash table |
US9384145B2 (en) | 2013-08-26 | 2016-07-05 | Oracle International Corporation | Systems and methods for implementing dynamically configurable perfect hash tables |
US9569141B2 (en) * | 2014-03-28 | 2017-02-14 | Intel Corporation | Hash map support in a storage device |
WO2015188151A1 (en) * | 2014-06-06 | 2015-12-10 | Bittorrent, Inc. | Securely sharing information via a public key- value data store |
US20160103623A1 (en) | 2014-10-14 | 2016-04-14 | Industry Academic Cooperation Foundation Of Yeungnam University | Method for controlled collision of hash algorithm based on nand flash memory |
US20170124104A1 (en) | 2015-10-31 | 2017-05-04 | Netapp, Inc. | Durable file system for sequentially written zoned storage |
KR20170065374A (ko) | 2015-12-03 | 2017-06-13 | 영남대학교 산학협력단 | 버킷 단위의 정렬을 기반으로 하는 해시 충돌 처리 방법 |
US11194778B2 (en) | 2015-12-18 | 2021-12-07 | International Business Machines Corporation | Method and system for hybrid sort and hash-based query execution |
US10521454B2 (en) | 2016-01-08 | 2019-12-31 | Bmc Software, Inc. | Reorganization of partition by growth space with LOB columns |
US11200246B2 (en) | 2016-09-26 | 2021-12-14 | Splunk Inc. | Hash bucketing of data |
-
2017
- 2017-11-08 KR KR1020170148316A patent/KR102569545B1/ko active IP Right Grant
-
2018
- 2018-06-28 US US16/021,960 patent/US11392571B2/en active Active
- 2018-07-17 CN CN201810782027.9A patent/CN109753231B/zh active Active
-
2022
- 2022-07-18 US US17/866,600 patent/US11874815B2/en active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7827182B1 (en) * | 2004-06-02 | 2010-11-02 | Cisco Technology, Inc | Searching for a path to identify where to move entries among hash tables with storage for multiple entries per bucket during insert operations |
CN102436420A (zh) * | 2010-10-20 | 2012-05-02 | 微软公司 | 使用辅助存储器的低ram空间、高吞吐量的持久键值存储 |
CN102929793A (zh) * | 2011-08-08 | 2013-02-13 | 株式会社东芝 | 包括键-值存储的存储器系统 |
CN105612490A (zh) * | 2013-10-02 | 2016-05-25 | 网络装置公司 | 用于分布式存储架构的盘区散列技术 |
US9438426B2 (en) * | 2014-10-03 | 2016-09-06 | Seagate Technology Llc | Key-value data storage device with hybrid architecture |
KR20170057821A (ko) * | 2015-11-17 | 2017-05-25 | 삼성전자주식회사 | 저장 장치, 그것을 포함하는 데이터베이스 시스템 및 그것의 인터페이스 제공 방법 |
CN106990910A (zh) * | 2015-11-23 | 2017-07-28 | 三星电子株式会社 | 存储设备和存储设备的操作方法 |
Also Published As
Publication number | Publication date |
---|---|
KR20190052546A (ko) | 2019-05-16 |
CN109753231A (zh) | 2019-05-14 |
US11392571B2 (en) | 2022-07-19 |
KR102569545B1 (ko) | 2023-08-22 |
US20220350784A1 (en) | 2022-11-03 |
US20190138612A1 (en) | 2019-05-09 |
US11874815B2 (en) | 2024-01-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109753231B (zh) | 键值存储设备及操作其的方法 | |
CN108021510B (zh) | 操作对多重名称空间进行管理的存储装置的方法 | |
CN109085997B (zh) | 用于非易失性存储器的存储器高效持续键值储存 | |
CN108804031B (zh) | 最佳记录查找 | |
KR102545167B1 (ko) | 키-밸류 스토리지 장치 및 상기 키-밸류 스토리지 장치의 동작 방법 | |
TWI627536B (zh) | 用於具有調適分割之一共用快取之系統及方法 | |
US9785545B2 (en) | Method and apparatus for providing dual memory access to non-volatile memory | |
KR102535828B1 (ko) | 메모리 컨트롤러 및 상기 메모리 컨트롤러의 동작 방법 | |
US9021189B2 (en) | System and method for performing efficient processing of data stored in a storage node | |
US9244619B2 (en) | Method of managing data storage device and data storage device | |
KR102406666B1 (ko) | 스냅샷 기능을 지원하는 키-밸류 스토리지 장치 및 상기 키-밸류 스토리지 장치의 동작 방법 | |
JP2017188096A (ja) | 重複除去メモリモジュール及びそのメモリ重複除去方法 | |
US11200159B2 (en) | System and method for facilitating efficient utilization of NAND flash memory | |
CN108027764B (zh) | 可转换的叶的存储器映射 | |
CN111459919B (zh) | 数据查询方法、加载组件、搜索组件和存储介质 | |
KR102686749B1 (ko) | 맵 스케줄링을 수행하기 위한 스토리지 장치 및 그것을 포함하는 전자 장치 | |
CN113282234B (zh) | 存储装置、存储系统、及其操作方法 | |
JP2018120594A (ja) | 最大化された重複除去メモリのためのシステム及び方法 | |
KR20210075731A (ko) | 스토리지 장치 및 이의 동작 방법 | |
CN113805792A (zh) | 存储器系统及其操作方法 | |
KR102623061B1 (ko) | 데이터베이스에서 이터레이터 연산을 수행하기 위한 장치 | |
KR101661418B1 (ko) | 컴퓨팅 장치의 데이터 출력방법 및 이를 위한 컴퓨팅 장치 | |
KR20200120480A (ko) | 하프-매치(half match) 중복 제거를 수행하는 메모리 시스템 및 이의 동작 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |