CN102929793A - 包括键-值存储的存储器系统 - Google Patents
包括键-值存储的存储器系统 Download PDFInfo
- Publication number
- CN102929793A CN102929793A CN2012102799679A CN201210279967A CN102929793A CN 102929793 A CN102929793 A CN 102929793A CN 2012102799679 A CN2012102799679 A CN 2012102799679A CN 201210279967 A CN201210279967 A CN 201210279967A CN 102929793 A CN102929793 A CN 102929793A
- Authority
- CN
- China
- Prior art keywords
- key
- value
- address
- data
- accumulator system
- 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
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C15/00—Digital stores in which information comprising one or more characteristic parts is written into the store and in which information is read-out by searching for one or more of these characteristic parts, i.e. associative or content-addressed stores
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/903—Querying
- G06F16/90335—Query processing
- G06F16/90339—Query processing by using parallel associative memories or content-addressable memories
-
- 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
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/13—File access structures, e.g. distributed indices
- G06F16/137—Hash-based
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/16—File or folder operations, e.g. details of user interfaces specifically adapted to file systems
- G06F16/164—File meta data generation
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C7/00—Arrangements for writing information into, or reading information out from, a digital store
- G11C7/10—Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
-
- 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/7201—Logical to physical mapping or translation of blocks or pages
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- Human Computer Interaction (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
公开了包括键-值存储的存储器系统。根据一个实施例,包括键-值存储的存储器系统(10)包括接口(11)、存储块(16)、地址获取电路(14)和控制器(13),键-值存储包含作为键和与键相对应的值的对的键-值数据。接口(11)接收数据写入/读取请求或基于键-值存储的请求。存储块(16)具有用于存储数据的数据区域(161)和包含键-值数据的元数据表(162)。地址获取电路(14)响应于键的输入而获取第一地址。控制器(13)执行对存储块(16)的数据写入/读取请求,以及向存储块(16)输出获取的第一地址并执行基于键-值存储的请求。控制器(13)经由接口(11)输出与键相对应的值。
Description
技术领域
这里所描述的各实施例一般涉及被主机系统访问并包括键-值存储的存储器系统。
背景技术
作为在一般主机系统(例如,计算机系统)中提供的存储设备,存在包括非易失性半导体存储器的磁性HDD(硬盘驱动器)或SSD(固态驱动器)。虽然SSD被分类为存储器,但是,它也可被视为带有扩展的规模和功能的存储器系统。
存储器系统包括,例如,接口、第一存储块、第二存储块、以及控制器。第一存储块将文件存储为数据,而第二存储块充当数据写入/读取过程中的缓冲存储器。第一存储块是非易失性的并具有大容量,但与第二存储块相比具有较慢的访问速度。第二存储块被用来补偿接口的通信速度和第一存储块的写入/读取速度之间的速度差。例如,第一存储块是非易失性快闪存储器,而第二存储块是易失性DRAM或SRAM。这样的常规存储器类型的存储器系统具有用于通过寻址来实现数据写入/读取功能的布局。
另一方面,为了有效地提取存储在存储器系统中的诸如与给定文本相关联的另一文本、二进制文件中的特定比特模式、运动图像文件中的特定模式、或语音文件中的特征语音模式的数据,优选地提供了通过数据指定的数据读取功能。为此目的,使用一种方法不仅存储正常数据,而且还一起存储与数据相关联的元数据,并引用元数据来获取期望的数据。
元数据管理方法被大致分类为两种类型:具有表格式的数据库类型以及其中数据具有一一对应关系的键-值存储(KVS,key-valuestore)。在KVS中,当作为搜索请求给出一个键时,输出与该键相对应的值。
为了通过常规系统来实现KVS,执行对存储在存储器系统中的数据的管理,或扩展主机系统的主存储器设备(DRAM)上的多个元数据的重复数据输入/输出处理,使用CPU(中央处理单元)执行操作以及再次从存储器中读出数据并核对它们。
将描述常规系统中的KVS及其问题。
为了在常规SSD中实现KVS,数据被存为文件,元数据(属于该数据的键-值数据(或键-值对))也被存为文件。即,键-值存储是由等于或高于文件系统(即,安装在OS中的文件系统或应用程序)的级别的主机系统来实现的。
在此情况下,键-值存储能够通过通用硬件配置来实现。然而,由于元数据被像正常的数据那样处理,因此,在主机系统已经将元数据文件读出到主存储器(例如,DRAM)之后,执行元数据读/写或搜索操作。这例如造成了至少下列三个问题。
第一,文件访问性能下降。由于一般而言主存储器的尺寸小于SSD的尺寸,因此,大于主存储器尺寸的元数据文件无法被一次处理。因此,例如,基于键来分割元数据文件。根据需要,易于处理的尺寸的元数据文件被读出到主存储器,并被使用。重复此过程,直到获得必需的键-值。对SSD的文件访问的次数与元数据文件的数目一样多。如果SSD的文件访问速度低于元数据读取请求的速度,则主机系统和本地系统(存储器系统)作为整体是速率受限的。
第二,CPU上的负载增大。由于元数据创建、管理以及核对(搜索)全部都是由CPU执行的,因此,在元数据处理过程中,负载施加在CPU上。特别是,当更新数据时,相应元数据需要被从元数据文件中搜索和更新,因为元数据是与数据相对应地创建的。另外,由于元数据搜索也需要由CPU完全使用软件算法来执行,因此,对CPU新施加了元数据管理的负载。
第三,总线或接口上的负载增大。作为第一和第二问题的结果,主机系统和本地系统(存储器系统)频繁地交换元数据信息。因此,总线和接口上的通信量增大。
发明内容
根据一个方面,提供一种包括键-值存储的存储器系统,所述键-值存储包含作为键和与所述键相对应的值的对的键-值数据,其特征在于,所述存储器系统包括:被配置成接收数据写入/读取请求或基于键-值存储的请求的接口;具有用于存储数据的数据区域和包含所述键-值数据的元数据表的第一存储块;被配置成响应于所述键的输入,获取存储有所述键-值数据的第一地址的地址获取电路;以及控制器,所述控制器被配置成通过指定地址来执行对所述第一存储块的数据写入/读取请求,以及向所述第一存储块输出由所述地址获取电路获取的所述第一地址并执行所述基于键-值存储的请求,其中,所述控制器经由所述接口输出与所述键相对应的值。
根据另一个方面,提供一种包括键-值存储的存储器系统,所述键-值存储包含作为键和与所述键相对应的值的对的键-值数据,其特征在于,所述存储器系统包括:被配置成接收数据写入/读取请求或基于键-值存储的请求的接口;具有用于存储数据的数据区域和包含所述键-值数据的元数据表并包括地址获取电路的第一存储块,所述地址获取电路被配置成响应于所述键的输入,获取存储有所述键-值数据的第一地址;以及控制器,所述控制器被配置成通过指定地址来执行对所述第一存储块的写入/读取和所述基于所述键-值存储的请求,其中,所述控制器经由所述接口输出与所述键相对应的值。
根据再一个方面,提供一种包括键-值存储的存储器系统,所述键-值存储包含作为键和与所述键相对应的值的对的键-值数据,其特征在于,所述存储器系统包括:被配置成接收数据写入/读取请求或基于键-值存储的请求的接口;具有用于存储数据的数据区域和包含所述键-值数据的元数据表的第一存储块;存储器控制器,所述存储器控制器被配置成通过指定地址来执行对所述第一存储块的数据写入/读取以及所述基于所述键-值存储的请求;以及被配置成控制所述接口和所述第一存储块之间的信号发送/接收的本地控制器,其中,所述本地控制器包括用于存储从所述第一存储块读出的数据的第二存储块以及被配置成响应于所述键的输入而获取存储有所述键-值数据的第一地址的地址获取电路,以及所述存储器控制器经由所述接口输出与所述键相对应的值。
附图说明
图1是示意性地示出了第一存储块中的实际数据区域和元数据表之间的关系以及键-值存储的机制的视图;
图2A和2B是示出了图1中的元素和集合之间的关系的视图;
图3A、3B、3C以及3D是示出了键-值存储中的详细处理过程的流程图;
图4是示出了根据第一实施例的存储器系统的硬件配置的框图;
图5是示出了根据第二实施例的存储器系统的硬件配置的框图;
图6是示出了根据第三实施例的存储器系统的硬件配置的框图;
图7是示出了根据第四实施例的存储器系统的硬件配置的框图;
图8是示出了根据第五实施例的存储器系统的硬件配置的框图;
图9是示出了根据第六实施例的存储器系统的硬件配置的框图;
图10是示出了根据第七实施例的存储器系统的硬件配置的框图;
图11是示出了根据第八实施例的存储器系统的硬件配置的框图;
图12是示意性地示出了根据第一修改方案的实际数据区域和元数据表的视图;
图13是示意性地示出了根据第二修改方案的实际数据区域和元数据表的视图;
图14是示意性地示出了根据第三修改方案的实际数据区域和元数据表的视图;
图15是示意性地示出了根据第三修改方案的实现键-值存储的另一种方法的视图;以及
图16是示意性地示出了根据第四修改方案的实际数据区域和元数据表的视图。
具体实施方式
一般而言,根据一个实施例,包括键-值存储(该键-值存储包含作为键和与该键相对应的值的对的键-值数据)的存储器系统包括接口、第一存储块、地址获取电路和控制器。接口接收数据写入/读取请求或基于键-值存储的请求。第一存储块具有用于存储数据的数据区域和包含所述键-值数据的元数据表。地址获取电路响应于键的输入而获取存储有所述键-值数据的第一地址。
控制器通过指定地址来执行对第一存储块的数据写入/读取请求,以及向第一存储块输出地址获取电路所获取的第一地址并执行所述基于键-值存储的请求。控制器经由接口输出对应于键的值。
在下面的描述中,相同参考编号表示具有几乎相同功能和配置的组成元件,只有在需要的情况下才进行重复的描述。
存储在存储器系统中的元数据通过键-值存储而被存储。现在将参考附图来描述提供键-值数据的有效存储方法和配置的各实施例。
<元数据表和键-值存储>
将首先说明元数据表和键-值存储,这是本实施例的基本原理。
图1是示意性地示出了第一存储块中的实际数据区域和元数据表之间的关系以及键-值存储的机制的视图。请注意,数值和符号用于为了描述的方便性,并不始终对应于实施例。
如图1所示,寻址的实际数据区域(实际地址空间)161和元数据表162存在于存储器可访问的物理地址空间中。实际数据区域161直接对应于常规概念的逻辑地址空间。元数据表162在用户或客户端的正常使用中并不被显式地访问,因为它是根据需要在存储器系统侧被使用的数据区域。然而,对于对系统的测试命令,准许显式访问。用户基本上使用接口命令来向存储器系统输入操作实际数据或元数据的请求。存储器系统在内部执行处理,并作为响应将信号或数据返回用户(主机系统)。
存储器系统在用于将逻辑地址转换成物理地址的逻辑地址-物理地址转换表中区别实际数据区域161和元数据表162的存储区域。根据需要,创建元数据表162中的元数据地址。因此,如果没有键-值数据创建请求,则元数据地址可能不存在于第一存储块中。
如上文所描述的,元数据表162可以存在于本实施例的存储器系统中,带有不是固定的而是可以根据基于键-值存储的请求而任意变化(增大或缩小)的存储容量。因此,用户可以以最高效率使用可访问的物理存储空间,同时任意处理元数据。极端地,可以根本不处理元数据。在此情况下,物理存储空间能够被最大地使用。
相反,如果元数据被充分地使用,则元数据表162可以被扩展到等于或大于实际数据区域161的尺寸。也是在此情况下,由于元数据管理是存储器系统(本地系统)侧的工作,因此,主机系统侧被从元数据管理中解放出来。因此,用户(主机系统侧)在正常使用中不必知道元数据管理。
元数据表162存储键-值对。然而,数据的实体存在于实际数据区域(实际地址空间)161中。
将使用通过键-值存储的数据提取的详细示例来描述元数据表162和实际数据区域161中的实际数据之间的关系。
键-值存储(KVS)是写入键和值的集合并通过指定键来读出值的数据库管理方法。尽管KVS常常是经由网络使用的,数据存储目的地肯定是某个本地存储器或存储系统。甚至元数据也存储在实际数据地址空间中。
通常通过指定存储数据的存储器的开始地址来读出数据。数据可以呈现文件的形式。在一些文件系统中,对于例如每个512字节的扇区,管理实际数据地址空间。另外地,如果文件系统不必是受限的,则可以以4或8KB(这是例如NAND快闪存储器的读/写页面尺寸)来管理实际数据地址空间。
图1在概念上示出了其中实际数据区域161存储对应于实际地址的文件(数据)的状态。例如,文件“a-file.txt”的文件ID“%a-file.txt”被存储在实际数据地址&001处。文件内容“This is a book”存储在&002处。在现实中,实际数据地址一般是在字节基础上管理的。因此,&001和&002的继续是特殊示例。
图1中的元数据表162示出了存储的键-值对。键是从数据文件中提取的搜索目标元素或集合。在此示例中,键是包括元素&001和&011的集合。值是当找到键时要被返回的值。在此示例中,包括单词“book”的数据文件的一组文件ID被存储为实际数据地址空间形式的值。
将根据图1所示出的过程来对此进行描述。
(i)键被作为条目输入,以及元数据表被搜索以查找值。
(ii)由于对应于找到的键的值是存储键所属的集合的实际数据地址,因此,该实际数据地址被引用。
(iii)输出在引用的实际数据地址处写入的数据。
实际数据地址和元数据表之间的关系以及键-值对的关系是如图2A和2B中所示的元素和集合之间的关系。
即,在正常的文件中,如图2B所示,例如,具有文件名“a-file.txt”的文件是一个集合,而文本数据“This is a book”的每一个单词都是一个元素。文件ID也是一个元素。
然而,在元数据表(元数据地址空间)中,可以反向和重新排列集合和元素之间的关系,如图2A所示。即,关系被转换为“反向”关系。在集合“book”中,文件名“a-file.txt”和“b-file.txt”被存储为元素。在键-值数据中,搜索重新排列后的集合名(“book”)以获取元素(“a-file.txt”和“b-file.txt”)。一般而言,这是在全文搜索本身中执行的反向文件创建和搜索过程,以及键-值数据的实际示例。
反向文件是用于反向索引方法(这是实现全文搜索功能的方法之一)中的搜索的索引文件。在反向索引方法中,预先为每一段内容创建存储有包括内容的文件列表的被称为反向文件的索引数据文件。周期性地一次更新反向文件的内容或每次添加或删除文件时更新反向文件的内容。对于内容搜索请求,作为搜索结果输出对应于搜索目标内容的反向文件的内容。因此,不必在每个全文搜索中检查所有文件的内容。因此,可以加快搜索。反向文件是键-值数据的一个示例。值得注意的是,实施例不限于此。
<键-值存储的命令>
主机系统向存储器系统的主机接口给出键-值存储请求的下面的命令。
基于键-值存储的请求的命令包括:注册与键相关联的新集合(值)的命令(PUT),向与键相关联的集合(值)添加新元素(值)的命令(WRITE),将与键相关联的集合(值)的元素存储在缓冲器中并返回其尺寸的命令(GET),以及读出存储在缓冲器中的元素(值)的命令(READ)。
可以根据需要来改变命令名称。可以添加新的基于键-值存储的请求的命令。例如,可以添加排列属于集合(键)的元素(值)的命令,或指示例如在元数据表中重新排列集合(键)或比较元素(值)的命令。
在此实施例中,根据命令请求,元数据表和实际数据区域协作。图3A、3B、3C以及3D的流程图示出了使用命令的键-值数据添加、搜索等等的详细过程。
(1)为了注册新的键-值数据(PUT),如图3A所示,执行搜索以检查所述键是否已经存在于元数据表中(步骤S1和S2)。如果找到所述键,则向输出端返回错误。即,返回表示所述键已经存在的消息,并且处理结束(步骤S3)。
另一方面,如果未找到所述键,则过程前进到所述值的处理。执行搜索以检查所述值是否存储在实际数据区域(实际数据地址)中(步骤S4)。如果在键-值数据的注册时间,所述值未存储在实际数据区域中,则向实际数据区域添加所述值(步骤S5)。如果所述值被存储,则将所述键直接存储在元数据表中,并且与所述键相关联地注册所述值的实际数据地址(步骤S6)。
当在存储器系统中管理逻辑地址-物理地址转换表时,将元数据表的更新通知管理所述表的功能电路(步骤S7)。最后,输出所述值的实际数据尺寸,并且处理结束(步骤S8)。
(2)为了向已经存在的键添加新的值(WRITE),如图3B所示,执行搜索以检查所述键是否存在于元数据表中(步骤S11和S12)。如果未找到所述键,例如,尺寸=0被返回到输出端以通知所述键的不存在(步骤S13)。
另一方面,如果找到所述键,则引用由存储在与所述键相对应的值中的实际数据地址指定的存储位置(步骤S14),并将新的值添加到所述存储位置。首先,检查所述值的存储位置中是否存在空闲空间(步骤S15)。如果在所述值的存储位置中不存在空闲空间,则存储用于跳转到另一个值的实际数据地址的指针(步骤S16)。接下来,将新的值添加到由所述地址指定的存储位置(步骤S17)。
如果在所述值的存储位置中存在空闲空间,则将新的值添加到所述值的实际数据地址的存储位置的空闲空间(步骤S17)。最后,输出所述值的实际数据尺寸,并且处理结束(步骤S18)。
(3)为了获得与键相关联的集合(值)(GET),如图3C所示,执行搜索以检查所述键是否存在于元数据表中(步骤S21和S22)。如果未找到所述键,例如,尺寸=0被返回到输出端以通知所述键的不存在(步骤S23)。
另一方面,如果找到所述键,则引用由存储在与所述键相对应的值中的实际数据地址指定的存储位置(步骤S24)。读出存储在所述实际数据地址的存储位置中的值并存储在缓冲存储器或寄存器存储器中(步骤S25)。最后,输出所述值的实际数据尺寸,并且处理结束(步骤S26)。
(4)为了输出存储在缓冲存储器(或寄存器存储器)中的集合(值)的元素(READ),如图3D所示,引用其中存储了所述集合(值)的元素的缓冲存储器中的存储位置(步骤S31)。检查是否存在集合(值)的元素(步骤S32)。如果未找到集合(值)的元素,例如,S=空被返回到输出端,以通知集合(值)的元素的不存在(步骤S33)。
另一方面,如果找到集合(值)的元素,则读出对应于指定尺寸的集合(值)的元素(步骤S34)。输出读出的集合(值)的元素,并且处理结束(步骤S35)。上文描述了通过指定尺寸来读出元素的示例。实际上,可以通过规定缓冲存储器中的位置来进行读取。
请注意,在过程(3)中,可以将值的实际数据地址的开始地址返回主机系统。这在读出值的实际数据时是方便的,因为过程(4)通常是在过程(3)之后执行的。如何定义过程取决于命令集的定义,并且这不限于上文所描述的那种,因为在本申请中使用详细的命令集来说明键-值存储过程。其它过程也不限于上文所描述的那些。
当存储器系统使用散列-CAM时,键和值并不总是匹配。即,键和值并不总是彼此相关联。请注意,稍后将详细地描述散列-CAM。
因此,在散列-CAM中,引用与键相对应的值以及确定键是否匹配实际数据的过程被添加到搜索元数据表以查找键的过程中。如果键不匹配实际数据,则通过根据散列-CAM中的键-值的地址管理规则(例如,检查相邻地址)来指定另一键范围内的元数据地址,来再次执行搜索。
请注意,实际过程和命令不限于上文所描述的那些。该方法可以改变,使得例如如果在实际操作中找到多个键,则临时设置标记并一次读取多个值。
如上文所描述的,例如,可以添加排列属于一个集合(键)的多个元素(值)的命令,或指示例如在元数据表中重新排列多个集合(键)或比较多个元素(值)的命令。
请注意,键和值可以是集合和元素或反之。或者,由于键和值具有一一对应关系,因此,两者都可以是集合或元素。
在此实施例中,主机接口能够接收搜索命令或者本地控制器或存储器控制器能够经由主机接口来接收搜索命令,并执行键-值存储的一系列处理。可以将DMAC(直接存储器存取控制器)添加到存储器系统中的本地控制器或存储器控制器中。在此情况下,存储器系统能够主要控制键-值存储操作。在某些情况下,存储器系统可以主要访问存储器系统外部的另一存储器(例如,主机系统的主存储器)。
[第一实施例]
下面将根据需要参考附图来描述此实施例的详细硬件配置。
将描述根据第一实施例的存储器系统的硬件配置。
图4是示出了根据第一实施例的存储器系统的硬件配置的框图。
如图4所示,存储器系统(或本地系统)10包括主机接口11、本地控制器12、存储器控制器(或芯片控制器)13、固定长度数据生成器14、寄存器存储器(也称为高速缓冲存储器、页面寄存器、R/W寄存器、页面高速缓存等等)15、以及第一存储块16。
主机系统经由,例如,诸如AMBA、SATA、PCIe或USB的总线连接到存储器系统10的主机接口11。主机系统包括CPU101和主存储器102。
第一存储块16包含实际数据区域161和从实际数据区域161中提取的元数据表162。元数据表162具有键-值数据。
元数据表162的键-值数据作为列表存储键(这是与数据相关联的元数据)以及相关联的数据的实际数据地址的开始地址(值)。例如,可以使用键-值数据来形成上文所描述的反向文件等等。
作为第一存储块16,例如,使用NAND快闪存储器,这是一种非易失性半导体存储器。NAND快闪存储器可由一个芯片或者多个芯片构成,以增大存储容量。也可使用诸如MRAM(磁性随机存取存储器)或ReRAM(电阻性随机存取存储器)的具有存储非易失性的任何其它固态芯片LSI作为第一存储块16。然而,第一存储块16不限于那些。
主机接口11可以通过将地址以及写入和读取请求指定到元数据表162中的键-值数据,从主机系统接收正常数据操作请求,即,数据写入和读取请求。
由存储器控制器13接收和控制对第一存储块16的写入和读取请求。固定长度数据生成器14和寄存器存储器15连接在存储器控制器13和第一存储块16之间。寄存器存储器15也被称为页面寄存器、R/W寄存器、页面高速缓存,等等,并在写入或读取时被暂时用作存储区。特别是,寄存器存储器15具有算术功能,并且一般被用于控制NAND快闪存储器的多级操作。也是在此实施例中,以类似方式使用寄存器存储器15。
作为此实施例的特征,提供了固定长度数据生成器14,例如,散列生成器,其被用于写入和读取第一存储块16中的键-值数据。散列生成器充当地址获取电路,该电路响应于键输入而获取键-值数据的存储位置的地址。散列生成器可被视为具有生成散列函数的功能的电子电路。然而,可以使用专用电路,或者也可以向通用运算电路输入散列函数算法。
由散列生成器生成的散列值(地址)可能冲突。存储器控制器13包括用于在发生散列值冲突之后进行处理的比较电路或地址管理电路。稍后将描述使用固定长度数据生成器(散列生成器)14和地址管理电路的数据存储/搜索方法。上文已经描述了其中单独地形成存储器控制器13和固定长度数据生成器14的示例。然而,存储器控制器13可包括固定长度数据生成器14。
此实施例的配置还包括本地控制器12以控制主机接口11和第一存储块16之间的信号发送/接收。本地控制器12可包括用于从第一存储块16输出的数据的ECC(纠错码)电路。请注意,如果存储器控制器13包括ECC电路,则本地控制器12不必包括它。
本地控制器12可以具有管理将第一存储块16的逻辑地址转换为物理地址的逻辑地址-物理地址转换表功能的功能。这使本地控制器12管理逻辑地址和实际数据区域161和元数据表162之间的对应关系。即,本地控制器12区别实际数据区域161和元数据表162在逻辑地址-物理地址转换表中的存储区域。因此,实际数据区域161和元数据表162的存储区域不必是分离的,并且可在第一存储块16中混合。
本地控制器12可包括用于这些过程的第二存储块。或者,第二存储块可以经由总线连接到本地控制器12的外部。
在常规SSD中,第二存储块的存在不言而喻。然而,对于此实施例的最少配置的描述,第二存储块的不存在不一定不方便。因此,图4中未示出第二存储块。然而,如果本地控制器12能够使用第二存储块,则可从第一存储块16中将元数据表读出到第二存储块,并引用它。
请注意,第二存储块还被用来补偿主机接口11的通信速度和第一存储块16的访问速度之间的差异。因此,使用非易失性的并且具有小容量但是与第一存储块16相比具有高访问速度的存储器作为第二存储块。
例如,使用非易失性DRAM或SRAM作为第二存储块。如果能够获得类似的速度和容量,则可以使用非易失性RAM(随机存取存储器),例如,MRAM(磁阻随机存取存储器)、ReRAM(电阻变化随机存取存储器)、FeRAM(铁电随机存取存储器)、PCRAM(相变随机存取存储器)等等。使用快闪存储器作为第一存储块16的存储器系统一般具有使用本地控制器12、第二存储块、以及逻辑地址-物理地址转换表的耗损均衡功能。这可以用于此实施例中。
<使用散列函数的数据存储/搜索方法>
将描述使用此实施例的固定长度数据生成器(散列生成器)14和地址管理电路的数据存储/搜索方法。在存储器控制器13中提供了地址管理电路以执行避免散列值(地址)的冲突的处理。
在此实施例中,由于提供了散列生成器,因此,任意长度比特数据能够被转换为固定长度比特数据。这里将描述其中散列生成器使用此功能从任意长度比特数据的元数据生成固定长度数据比特数据的元数据地址的示例。
优选地,使用尽可能均匀并且粗略的密码散列函数作为散列函数。例如,使用SHA-1(安全散列算法-1)、SHA-2(安全散列算法-2)、MD4(MessageDigest4)、MD5(MessageDigest5)等等。
散列生成器具有根据散列函数从具有任意长度的给定<键>获得具有固定比特长度的比特串作为散列(<键>)并进一步将比特长度缩短到期望比特长度(BitLength)的功能。例如,散列生成器具有通过下列公式表示的除法功能
<键ID>=散列(<键>)mod BitLength
或者,具有期望长度的数据可简单地从所生成的具有固定比特长度的比特串的开始被切除,并被使用。
使如此生成的键ID的长度等于元数据表的地址长度。这允许直接使用地址作为元数据表的地址。例如,参考图1,当作为由散列生成器生成固定长度比特数据“book”(在下文中被称为散列(“book”)的结果而获得001时,元数据表的地址$001对应于键“book”。相对应的值被存储在地址$001处。
对于“Blue”,当作为散列(“Blue”)的结果而获得002时,存储对应于元数据地址$002的值。以这种方式存储键和值。
为了搜索键,例如,“book”,由于散列函数的输出值(散列值)“001”直接指示存储位置的元数据地址,因此,地址被直接引用。使用散列函数和存储器地址之间的对应关系的数据引用方法将被称为散列-CAM。
在散列-CAM中,即使使用尽可能粗略的散列函数,从概率论的视点来看,散列值(地址)冲突的可能性也不为零。实际上降低散列值冲突的可能性的最简单并且有效的方法是准备足够大的存储器空间。然而,在现实中,会因为存储器尺寸有限而发生冲突。为了在冲突之后获得处理功能,提供了具有下列功能的比较电路和地址管理电路。当散列值冲突时,比较电路通过引用值的内容来提取数据并执行比较/核对以检查所提取的数据是否匹配键。如果所提取的数据匹配键,则地址管理电路改变散列值(地址)。
例如,假设除了上文所描述的键之外还存储另一个键“note”时,散列(“note”)的结果是001。由于$001已被用于“book”,因此,跳转到另一个元数据地址是必需的。例如,地址被移动到相邻的元数据地址,即,地址被递增。在图1的示例中,由于$001冲突,因此检查$002是否是空的。然而,$002也已经被散列(“Blue”)使用。因此,检查下一个地址$003。如果$003是空的,则对应于“note”的值被存储在该地址处。
使用此方法使得能够存储数据,即使散列值发生冲突。然而,需要设计方案来搜索键-值数据。当搜索“note”时,如果散列(“note”)是001,则引用元数据地址$001。然而,在此情况下,错误地获得已经存储的“book”的值。
为了防止此,需要始终执行核对以检查键和值之间的对应关系是否正确。“book”的值是实际数据地址&101。因此,通过引用&101来读出数据。由于[book]被存为开始数据,因此,发现键-值对不是“note”的键-值对。为了搜索“note”的键-值对,对于下一个元数据地址$002类似地执行核对,以发现键-值对不是“note”的键-值对。结果,已经发现,下一个元数据地址$003指示正确的键-值对。如上文所描述的,即使散列值发生冲突,也能够搜索键-值数据。
请注意,由于实际数据部分的[book]、[Blue]和[note]仅需要经受键核对,因此,开头几个字节可被实质上切除,并被用作固定长度数据,诸如book的“bo”,Blue的“Bl”,以及note的“no”。在此情况下也需要谨慎,因为对于固定长度数据,发生冲突的可能性并不是零。
上文使用了在冲突之后递增地址的方法。然而,如稍后在修改方案中所描述的,使用此实施例使得可以从与键相对应的值引用实际数据地址,即使该键,即,地址发生冲突。因此,将键本身存储在实际数据地址中并核对该键的方法也是可使用的。甚至在此情况下,作为搜索条目的键和实际数据中的键之间的核对是必需的。充当散列-CAM的地址管理电路也是必需的。因此,虽然方法稍微不同,但是,与上文所描述的散列-CAM的配置相同的配置是可使用的。
如上文所描述的,散列生成器生成散列值(地址)。另外,地址管理电路将避免散列值冲突的过程添加到元数据存储。这允许在存储器系统10中有效地实现键-值存储。
在此实施例中,为了实现散列-CAM,提供了硬件功能(固定长度数据生成器),并且存储器控制器13包括用于避免固定长度数据(地址)的冲突的电路。可以在存储器控制器13中提供硬件功能(固定长度数据生成器)。此时,可以在寄存器存储器15进行键-值数据的存储,或直接对于第一存储块16执行键-值数据的存储。
请注意,在上文所描述的配置中,如果键-值存储功能不被损坏,则逻辑地址-物理地址转换表的临时存储和耗损均衡处理不必总是在存储器系统10中执行,并且可由主机系统完全使用CPU和主存储器来执行。为了使存储器系统10主要执行键-值存储,可以提供DMAC(直接存储器存取控制器)。
在此实施例中,功能块通过总线连接。基本上,优选地在存储器系统中构建快速并且有效的总线配置。由于,例如,芯片接口标准和外部接口标准之间的差异,可以在存储器系统中使用两种或更多种类型的总线。
根据此实施例,可以提供使用与数据相关联的元数据的键-值数据以使得能够以高速度简单地执行从存储器系统中提取数据的处理并且允许用户以最高效率使用可访问的物理存储空间同时任意地处理元数据的存储器系统。即,可以提供接收对元数据的操作请求并且以高速度按存储器系统中的键-值存储有效地处理并输出它的存储器系统。
[第二实施例]
此实施例的硬件配置部分地不同于第一实施例的硬件配置,并包括具有专用于键核对的存储器空间的硬件CAM。
图5是示出了根据第二实施例的存储器系统的硬件配置的框图。
存储器控制器13控制本地控制器12和第一存储块16之间的信号发送/接收。存储器系统包括用于对第一存储块16的写入/读取的寄存器存储器15。可将搜索请求临时存储在寄存器存储器15中,并执行读取的匹配确定。在字节基础上执行并行读取和匹配确定。对于搜索具有任意长度的数据,可以通过执行顺序处理来进行匹配确定。
在此实施例中,如图5所示,在可从存储器控制器13访问的位置安置了CAM(内容可寻址存储器)24。CAM是用于高速搜索的特殊存储器,与输出由输入地址指定的数据的普通存储器不同,其与确定输入搜索数据和所有的存储数据之间的匹配/不匹配并行地同时执行比较运算,并输出匹配的存储数据的地址。在此情况下,CAM24充当地址获取电路,获取存储有与输入键相对应的键-值数据的地址。CAM可以作为数据匹配搜索中的“匹配标记”而输出匹配的数据的存在/不存在。在此实施例中,CAM24是通过用于实现这些功能的电子电路来实现的,因此被称为硬件CAM。
硬件CAM直接连接到寄存器存储器15,并被安置在存储器控制器13和寄存器存储器15之间。上文描述了其中分别形成存储器控制器13和CAM24的示例。然而,存储器控制器13可包括CAM24。
另外,由于第一存储块16是RAM(随机存取存储器),因此,CAM24和第一存储块16充当CAM-RAM。CAM-RAM是其中上文所描述的CAM24输出地址以及通过地址被访问的RAM输出数据的系统。CAM的地址解码器和RAM的地址编码器被设计成使得CAM的一个条目和RAM的一个条目以一一对应的关系相对应。
在此实施例中,键被存储在CAM24中,相对应的值被存储在第一存储块16中,或者该值被从第一存储块16读出到寄存器存储器15并存储为RAM单元。这允许CAM和第一存储块充当CAM-RAM。
为了使用硬件CAM,元数据表需要被从第一存储块16转移到寄存器存储器15。当使用这样的CAM-RAM时,原则上不会发生像在第一实施例的散列-CAM中那样的地址冲突。
因此,由于键-值核对过程以及搜索重新执行不会发生,搜索变得更快。在散列-CAM中,在很多情况下,元数据地址具有作为用于避免冲突的手段的余量。然而,由于不会在硬件CAM中发生冲突,能够有效地使用CAM24。
在此实施例中,CAM24只被用于键-值数据的键搜索。由于CAM连接到数据输入端/输出端的页面寄存器(寄存器存储器),因此,能够最大地使用第一存储块的物理地址空间,而不会部分地被键-值数据占用。配置的其余部分和效果与上文所描述的第一实施例的相同。
[第三实施例]
在此实施例中,如在第二实施例中那样,提供了具有专用于键核对的存储器空间的硬件CAM。然而,在第一存储块16中提供该硬件CAM。
图6是示出了根据第三实施例的存储器系统的硬件配置的框图。
如图6所示,第一存储块16包括实际数据区域161和存储有元数据表的CAM-RAM 163。使用CAM-RAM的方式与第二实施例中的相同。然而,在第三实施例中,第一存储块16的一部分充当专用于CAM的地址空间。这使得直接搜索存储在元数据表中的键而无需将它移动到第一存储块16之外成为可能。
提供使得核对数据能够被给予第一存储块16的存储单元的配置使得能够执行全并行搜索。例如,如果第一存储块16由NAND快闪存储器构成,则读取电路被配置成将输入作为搜索数据同时给予被用作CAM单元的区域中的全部门电路。这使得能够检测仅仅在其中发现命中的NAND串的输出。CAM-RAM是通过使输出对应于RAM单元的页面地址来实现的。配置的其余部分和效果与上文所描述的第一实施例的相同。
[第四实施例]
在此实施例中,如在第一实施例中那样提供了固定长度数据生成器(例如,散列生成器)。然而,安装固定长度数据生成器的位置不同于第一实施例。本地控制器12包括固定长度数据生成器14。
图7是示出了根据第四实施例的存储器系统的硬件配置的框图。
如图7所示,在本地控制器12中安排了固定长度数据生成器14。固定长度数据生成器14和本地控制器12不必总是物理上存在于同一个芯片中。本地控制器12只需位于比其它功能块更容易地访问固定长度数据生成器14的位置。
本地控制器12包括充当第二存储块的缓冲存储器121。因此,本地控制器12可在缓冲存储器121中存储从第一存储块16读出的逻辑地址-物理地址转换表,并执行逻辑地址-物理地址转换。类似地,本地控制器12能够执行NAND闪存的耗损均衡处理。本地控制器12也能够管理元数据表162和逻辑地址之间的对应关系。
作为此实施例的特征,在本地控制器12中提供了固定长度数据生成器14。因此,在逻辑地址-物理地址转换时,从键生成散列值并使它对应于一个值,即,能够有效地在本地控制器12中创建元数据表162的键-值数据。
在此实施例中,能够在缓冲存储器121(是第二存储块或在第一存储块16中)中执行散列-CAM操作。后者与在第一实施例中相同,将省略对其描述。将描述前者。
为了创建元数据表,从第一存储块16中读出数据并存储在缓冲存储器121中以生成散列值。由于在缓冲存储器121中执行散列-CAM操作,使元数据地址对应于缓冲存储器121的物理地址。
所创建的元数据表被写回第一存储块16或保存在缓冲存储器121(第二存储块)中。这允许引用元数据表中的键-值数据。
如果元数据表具有比缓冲存储器121的尺寸小的尺寸,则可以在比第一存储块16快的缓冲存储器121中引用键-值数据。因此,搜索变得更快。
如果缓冲存储器121由非易失性RAM形成,则存储器系统可被断电,而不将元数据写回第一存储块16。甚至在存储器系统再次被接通电源之后,元数据表也会存储在缓冲存储器121中。因此,从第一存储块16读出元数据表的过程是不需要的。因此,整体来看能够提高速度。配置的其余部分和效果与上文所描述的第一实施例的相同。
在此实施例中,围绕本地控制器提供了散列-CAM所需的功能。然而,散列-CAM操作不必总是在缓冲存储器中执行,并且可以如在第一实施例中那样在第一存储块中执行。如果元数据表很小,则可以通过在所有数据都被读出到缓冲存储器表之后执行散列-CAM操作来加快所述操作。然而,如果元数据表大于缓冲存储器尺寸,则可以通过直接在第一存储块中执行散列-CAM操作来提高操作速度。
[第五实施例]
在此实施例中,如在第四实施例中那样在缓冲存储器121(第二存储块)中引用键-值数据。然而,本地控制器12包括硬件CAM。
图8是示出了根据第五实施例的存储器系统的硬件配置的框图。
如图8所示,CAM 122连接到缓冲存储器121。图8分开地示出了缓冲存储器121和CAM 122。然而,它们可在物理上被连接。
CAM 122的输出(命中信号)被直接连接到缓冲存储器121的一部分(例如,大约1/2存储器容量),使得CAM 122和缓冲存储器121的一部分形成CAM-RAM。这使得能够通过指定数据(内容)来读出数据。
当使用硬件CAM 122时,原则上不发生像在散列-CAM中那样的地址冲突。因此,由于键-值核对过程和搜索重新执行不会发生,因此,搜索变得更快。
由于缓冲存储器121更容易访问但是具有比第一存储块16小的存储器容量,存储器空间需要被有效地使用。在此实施例中,当添加CAM 122时,能够以最高效率使用缓冲存储器121的存储器空间。配置的其余部分和效果与上文所描述的第二实施例的相同。
[第六实施例]
在此实施例中,硬件配置几乎与第一实施例的硬件配置相同,只是存储器系统10不包括本地控制器。
图9是示出了根据第六实施例的存储器系统的硬件配置的框图。
如图9所示,主机接口11被直接连接到存储器控制器13。
除了逻辑地址-物理地址转换表的处理之外,实现键-值存储的方法与第一实施例中的方法相同。由于存储器系统10既不包括本地控制器也不包括第二存储块,逻辑地址-物理地址转换表被从第一存储块16中读出,并在存储器系统10外部,例如,在主存储器102中被处理。
由于完全使用存储器控制器13中的固定长度数据生成器14来执行散列-CAM操作,因此,如在第一实施例中那样,在存储器系统10中执行元数据表162中的键-值数据存储。根据需要,不仅键-值数据而且元数据表162的变化点被返回主机系统,反映在逻辑地址-物理地址转换表上,并被写回第一存储块16。
在此实施例中,由于通过省略存储器系统10中的缓冲存储器和本地控制器而简化了功能,存储器系统本身是紧凑的。
请注意,为了使存储器系统10主要执行键-值存储,可以提供DMAC(直接存储器存取控制器)并使其控制存储器系统10和主存储器102之间的数据传输。配置的其余部分和效果与上文所描述的第一实施例的相同。
[第七实施例]
在此实施例中,硬件配置几乎与第二实施例的硬件配置相同,只是存储器系统10不包括本地控制器。
图10是示出了根据第七实施例的存储器系统的硬件配置的框图。
使用硬件CAM来实现键-值存储的方法与第二实施例中的方法相同。通过本地控制器的不存在而获得的功能的特征与第六实施例中的相同,将省略其描述。
[第八实施例]
在此实施例中,硬件配置几乎与第三实施例的硬件配置相同,只是存储器系统10不包括本地控制器。
图11是示出了根据第八实施例的存储器系统的硬件配置的框图。
使用CAM-RAM来实现键-值存储的方法与第三实施例中的方法相同。通过本地控制器的不存在而获得的功能的特征与第六实施例中的相同,将省略其描述。
如上文所描述的,在各实施例中,键-值存储的机制是通过元数据及其表以及充当搜索设备的散列生成器(散列-CAM)或硬件CAM(CAM-RAM)来实现的。
当实现上文所描述的第一到第八实施例中的键-值存储时,下面的修改方案也是可用的。下面将详细地描述修改方案。请注意,在本申请中,各实施例比各修改方案更优先地解释。
[第一修改方案]
图12是示意性地示出了根据第一修改方案的第一存储块16中的实际数据区域161和元数据表162之间的关系以及键-值存储的机制的视图。
在图12所示出的实际数据区域161中,数据文件、对应于文件的文件名或文件ID、从文件中提取的键、以及存储键的元数据地址被存储在每个实际数据地址处。这样的存储方法可以通过来自主机系统的指令来实现或通过预先在存储器系统10中提供键提取功能和元数据地址分配功能来实现。
元数据表162存储在将文件存储在实际数据地址时提取的键,以及作为与键相对应的值,存储存在键的实际数据地址以及存储与键相关联的其它键-值数据的元数据地址。
利用此地址管理,当本地控制器12或存储器控制器13指示搜索键时,存储器控制器13从元数据地址中搜索键。
例如,为了获得包括“book”的文件名,首先从元数据地址搜索“book”。“book”被存储在元数据地址$002。作为来自元数据地址$002的值,获得实际地址&001和&002以及元数据地址$011和$012。
读取地址能够被返回作为搜索结果。另外,还可以通过遵循值的元数据地址来获得“book”所属的集合的名称。例如,在$011,能够获得键“a-file.txt”以及与该键相对应的值的实际数据地址和元数据地址。
如此,能够通过连续地遵循元数据表162来获得作为搜索结果必需的值(实际数据)。在此修改方案中,只有键存在于元数据表中。实际键被存储在实际数据区域161中的实际地址处。
[第二修改方案]
图13是示意性地示出了根据第二修改方案的第一存储块16中的实际数据区域161和元数据表162之间的关系以及键-值存储的机制的视图。
在图13所示出的实际数据区域161中,在每一个实际数据地址处存储了文件和与该文件相对应的文件名或文件ID。元数据表162存储从文件中提取的键,以及作为与键相对应的值,存储键所在的实际地址和存储有与键相关联的其它集合或元素的元数据地址。
如在第一修改方案中那样,当本地控制器12或存储器控制器13指示搜索键时,存储器控制器13从元数据地址中搜索键。
例如,为了获得包括“book”的文件名,首先从元数据地址搜索“book”。“book”被存储在元数据地址$002处。作为来自元数据地址$002的值,获得实际数据地址&011以及元数据地址$011和$012。
实际数据地址不指示“book”所属的文件的存储位置,而是指示键的实际数据地址中的存储位置。另一方面,值的每一个元数据地址都指示“book”所属的集合。因此,通过遵循元数据地址,获得$011和$012的值的实际数据地址并作为搜索结果返回。或者,通过遵循实际数据地址,返回&001和&002处的数据。在第二修改方案中,实际数据区域(读取地址空间)161中的每个地址的数据量小于第一修改方案中的情况。
[第三修改方案]
图14是示意性地示出了根据第三修改方案的第一存储块16中的实际数据区域161和元数据表162之间的关系以及键-值存储的机制的视图。
在此修改方案中,元数据的实体被存储在实际数据区域161的实际数据地址处。
在图14所示出的实际数据区域161中,在每个实际数据地址处存储了文件、与文件相对应的文件名或文件ID、以及键的元数据地址。
在元数据表162中,在每个元数据地址处存储有从文件中提取的键和实际数据地址(这是与键相对应的值,并且在此处存在键)。还示出了与元数据地址相对应的物理地址。
当元数据地址被指定给不同于实际数据地址的物理地址空间的物理地址空间时,如上文所描述的,元数据地址和物理地址之间的对应关系表被存储在第一存储块16中。存储器系统(本地系统)或主机系统读出并使用该对应关系表。
将描述搜索元数据表中的键的方法以及其中值被存储在连续地址的示例。
也可以如图15所示实现元数据表162中的键-值数据。假设元数据地址空间对应于第一存储块16的特定物理地址空间。连续元数据地址的搜索目标区域被分成被称为存取窗口(Slot)的单元。键被存储在每个存取窗口的开始区域中。
在图15中所示出的示例中,搜索键“pen”。存储器控制器13给出键的每个字符以搜索整个存取窗口。此示例的键搜索机制使用各实施例中所描述的存储器控制器13和寄存器存储器15的硬件CAM。
为其中获得“pen”的第一字符“p”的每个存取窗口设置匹配标记。接下来,在这些存取窗口中搜索“e”。如果连续地获得命中,则类似地设置标记,并搜索下一个字符。继续此操作。在图15中,键在#003和#102中匹配。当读取在这些存取窗口中继续时,获得值。能够区别键和值,因为控制代码被插入在它们之间。
可以扩展此方法以使用“无关”屏蔽位来执行搜索。
[第四修改方案]
在此修改方案中,将作为示例来描述键-值数据以及使用它们的全文搜索,每一个键-值数据都存储有具有固定长度的键。
对固定长度比特的需要取决于搜索方法。全文搜索方法大致分类为两种类型:(1)顺序搜索和(2)索引搜索。所述方法还可以经过索引法被进一步分类。存在已知的(a)形态分析、(b)N-gram、以及(c)后缀方法。
在这些方法中,形态分析是提取存在于预先准备的词典中的单词的方法。N-gram不必准备任何词典,并可以通过将一个单词分为N个元素来搜索任意字符串。例如,搜索目标集合被定义为S。在uni-gram中,在字符基础上分割集合S。在bi-gram中,在两字符的基础上分割集合S。在N-gram中,在N字符的基础上分割集合S。例如,当S=innovation被通过bi-gram分解时,分割的元素(令牌)是at、in、io、nn、no、n、on、ov、ti、以及va。后缀方法处理适合于索引文件压缩的任意长度。
在图16所示出的实际数据区域161中,在每个实际数据地址处存储了文件和与文件相对应的文件名或文件ID。在元数据表162中,通过N-gram从文件中提取的键被存储在每个元数据地址处。
在此示例中,通过利用bi-gram来分解存储在实际数据地址处的“innovation”,提取元数据的每个键。实际地址被示出为与每个键相对应的值。当通过bi-gram从文件中提取键时文件中的出现位置被成对地存储。在通过bi-gram搜索时,搜索键。然后,按键的出现计数来排序结果。比较文件中的位置信息段,以确认它们表示连续的键,从而获得期望的搜索字的集合。
由于每个键都具有固定长度,可以直接使用它作为散列值来形成键-值数据。在图16中所示出的示例中,“at”和“in”按此顺序存储在元数据地址处。实际上,每个N-gram令牌都可以通过使用,例如,ASCII或UTF-6码由比特串来表示,比特串可被缩短并被用作元数据地址。
如上文所描述的,根据此实施例的键-值存储与处理固定长度并适合于高速索引的N-gram高度兼容。在全文搜索中,虽然搜索速度高,但是,索引花费时间。在索引时,根据需要,读出包括元素和集合的元数据表。搜索需要被添加、更新或删除的元素,并编辑其集合。因此,文件访问频繁地发生。当使用实施例的存储器系统时,能够实现存储器系统中的有效键-值存储。这允许以高速度执行索引而不增大主机系统上的负载。
在各实施例中,通过示范全文搜索的过程多次描述了存储器系统中的键-值存储的有用性。然而,各实施例的技术不一定专门用于执行全文搜索。
各实施例提供了键-值存储机制及其详细的配置,以当在存储器系统中存储数据时有效地管理元数据。即,各实施例提供了能够使用键-值存储有效地以高速度处理对元数据的操作请求的存储器系统。
尽管描述了某些实施例,但是,这些实施例只是作为示例来呈现的,而不限制本发明的范围。实际上,此处所描述的新颖的实施例可以以各种其它形式具体化;此外,还可以在不偏离本发明的精神的情况下作出此处所描述的实施例形式的替换和变化。所附的权利要求以及它们的等效内容旨在覆盖这样的形式或修改方案,都将在本发明的范围和精神内。
相关申请的交叉引用
本申请要求2011年8月8日提出的日本专利申请No.2011-172759的优先权,该专利申请的全部内容在此通过引用并入本文中。
Claims (31)
1.一种包括键-值存储的存储器系统,所述键-值存储包含作为键和与所述键相对应的值的对的键-值数据,其特征在于,所述存储器系统包括:
被配置成接收数据写入/读取请求或基于键-值存储的请求的接口;
具有用于存储数据的数据区域和包含所述键-值数据的元数据表的第一存储块;
被配置成响应于所述键的输入,获取存储有所述键-值数据的第一地址的地址获取电路;以及
控制器,所述控制器被配置成通过指定地址来执行对所述第一存储块的数据写入/读取请求,以及向所述第一存储块输出由所述地址获取电路获取的所述第一地址并执行所述基于键-值存储的请求,
其中,所述控制器经由所述接口输出与所述键相对应的值。
2.根据权利要求1所述的存储器系统,其特征在于,所述地址获取电路包括被配置成通过散列函数把所述键转换成所述第一地址的散列生成器。
3.根据权利要求2所述的存储器系统,其特征在于,所述控制器包括比较电路和地址管理电路,所述比较电路被配置成当被所述散列生成器转换后的所述第一地址发生冲突时把作为所述值的数据与所述键进行比较,所述地址管理电路被配置成当所述数据匹配所述键时改变所述第一地址。
4.根据权利要求1所述的存储器系统,其特征在于,所述控制器根据所述基于所述键-值存储的请求,改变存储在所述第一存储块中的所述元数据表的存储容量。
5.根据权利要求1所述的存储器系统,其特征在于,
所述元数据表存储所述第一地址、所述键和与所述键相对应的值,第二地址存储在所述值中,以及
所述控制器通过引用由所述第二地址指定的所述数据区域的存储位置来获得所述值。
6.根据权利要求1所述的存储器系统,其特征在于,
所述元数据表中的所述键-值数据存储在逻辑地址处,以及
所述元数据表的存储位置是由转换表管理的,所述转换表使所述逻辑地址对应于所述第一存储块的物理地址。
7.根据权利要求1所述的存储器系统,其特征在于进一步包括:
被配置成当所述控制器执行数据写入/读取时临时存储所述数据的寄存器;以及
被配置成控制所述接口和所述第一存储块之间的信号发送/接收的本地控制器。
8.根据权利要求1所述的存储器系统,其特征在于,由所述接口接收的所述基于所述键-值存储的请求包括下列中的至少一个:向集合中添加元素的命令、返回元素所属的集合的尺寸的命令、以及读出集合的命令。
9.根据权利要求1所述的存储器系统,其特征在于,所述控制器包括直接存储器存取控制器。
10.根据权利要求1所述的存储器系统,其特征在于,所述接口、所述第一存储块、以及所述控制器通过至少两种类型的总线相连接。
11.一种包括键-值存储的存储器系统,所述键-值存储包含作为键和与所述键相对应的值的对的键-值数据,其特征在于,所述存储器系统包括:
被配置成接收数据写入/读取请求或基于键-值存储的请求的接口;
具有用于存储数据的数据区域和包含所述键-值数据的元数据表并包括地址获取电路的第一存储块,所述地址获取电路被配置成响应于所述键的输入,获取存储有所述键-值数据的第一地址;以及
控制器,所述控制器被配置成通过指定地址来执行对所述第一存储块的写入/读取和所述基于所述键-值存储的请求,
其中,所述控制器经由所述接口输出与所述键相对应的值。
12.根据权利要求11所述的存储器系统,其特征在于,所述地址获取电路包括内容可寻址存储器(CAM),所述CAM被配置成将所述键与存储在所述地址获取电路中的数据进行比较,并响应于所述键的输入而获取匹配的第一地址。
13.根据权利要求11所述的存储器系统,其特征在于,所述控制器根据所述基于所述键-值存储的请求,改变存储在所述第一存储块中的所述元数据表的存储容量。
14.根据权利要求11所述的存储器系统,其特征在于,
所述元数据表存储所述第一地址、所述键以及与所述键相对应的值,第二地址存储在所述值中,以及
所述控制器通过引用由所述第二地址指定的所述数据区域的存储位置来获得所述值。
15.根据权利要求11所述的存储器系统,其特征在于,
所述元数据表中的所述键-值数据存储在逻辑地址处,以及
所述元数据表的存储位置是由转换表管理的,所述转换表使所述逻辑地址对应于所述第一存储块的物理地址。
16.根据权利要求11所述的存储器系统,其特征在于进一步包括:
被配置成当所述控制器执行数据写入/读取时临时存储所述数据的寄存器;以及
被配置成控制所述接口和所述第一存储块之间的信号发送/接收的本地控制器。
17.根据权利要求11所述的存储器系统,其特征在于,由所述接口接收的所述基于所述键-值存储的请求包括下列中的至少一个:向集合中添加元素的命令、返回元素所属的集合的尺寸的命令、以及读出集合的命令。
18.根据权利要求11所述的存储器系统,其特征在于,所述控制器包括直接存储器存取控制器。
19.根据权利要求11所述的存储器系统,其特征在于,所述接口、所述第一存储块、以及所述控制器通过至少两种类型的总线相连接。
20.一种包括键-值存储的存储器系统,所述键-值存储包含作为键和与所述键相对应的值的对的键-值数据,其特征在于,所述存储器系统包括:
被配置成接收数据写入/读取请求或基于键-值存储的请求的接口;
具有用于存储数据的数据区域和包含所述键-值数据的元数据表的第一存储块;
存储器控制器,所述存储器控制器被配置成通过指定地址来执行对所述第一存储块的数据写入/读取以及所述基于所述键-值存储的请求;以及
被配置成控制所述接口和所述第一存储块之间的信号发送/接收的本地控制器,
其中,所述本地控制器包括用于存储从所述第一存储块读出的数据的第二存储块以及被配置成响应于所述键的输入而获取存储有所述键-值数据的第一地址的地址获取电路,以及
所述存储器控制器经由所述接口输出与所述键相对应的值。
21.根据权利要求20所述的存储器系统,其特征在于,所述地址获取电路包括被配置成通过散列函数把所述键转换成所述第一地址的散列生成器。
22.根据权利要求21所述的存储器系统,其特征在于,所述存储器控制器包括比较电路和地址管理电路,所述比较电路被配置成当被所述散列生成器转换后的所述第一地址发生冲突时把作为所述值的数据与所述键进行比较,所述地址管理电路被配置成当所述数据匹配所述键时改变所述第一地址。
23.根据权利要求20所述的存储器系统,其特征在于,所述地址获取电路包括内容可寻址存储器(CAM),所述CAM被配置成把所述键与存储在所述地址获取电路中的数据进行比较,并响应于所述键的输入而获取匹配的第一地址。
24.根据权利要求20所述的存储器系统,其特征在于,所述存储器控制器和所述本地控制器之一根据所述基于所述键-值存储的请求,改变存储在所述第一存储块中的所述元数据表的存储容量。
25.根据权利要求20所述的存储器系统,其特征在于,
所述元数据表存储所述第一地址、所述键以及与所述键相对应的值,第二地址存储在所述值中,以及
所述存储器控制器和所述本地控制器之一通过引用由所述第二地址指定的所述数据区域的存储位置来获得所述值。
26.根据权利要求20所述的存储器系统,其特征在于,
所述元数据表中的所述键-值数据存储在逻辑地址处,以及
所述元数据表的存储位置是由转换表管理的,所述转换表使所述逻辑地址对应于所述第一存储块的物理地址。
27.根据权利要求20所述的存储器系统,其特征在于,所述第二存储块包括被配置成比所述第一存储块更快地执行数据写入/读取的缓冲存储器。
28.根据权利要求27所述的存储器系统,其特征在于,所述缓冲存储器包括非易失性RAM。
29.根据权利要求20所述的存储器系统,其特征在于,由所述接口接收的所述基于所述键-值存储的请求包括下列中的至少一个:向集合中添加元素的命令、返回元素所属的集合的尺寸的命令、以及读出集合的命令。
30.根据权利要求20所述的存储器系统,其特征在于,所述存储器控制器和所述本地控制器之一包括直接存储器存取控制器。
31.根据权利要求20所述的存储器系统,其特征在于,所述接口、所述第一存储块、以及所述本地控制器和所述存储器控制器之一通过至少两种类型的总线相连接。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2011172759A JP5524144B2 (ja) | 2011-08-08 | 2011-08-08 | key−valueストア方式を有するメモリシステム |
JP2011-172759 | 2011-08-08 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN102929793A true CN102929793A (zh) | 2013-02-13 |
Family
ID=47644596
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2012102799679A Pending CN102929793A (zh) | 2011-08-08 | 2012-08-08 | 包括键-值存储的存储器系统 |
Country Status (4)
Country | Link |
---|---|
US (3) | US9361408B2 (zh) |
JP (1) | JP5524144B2 (zh) |
KR (1) | KR101397353B1 (zh) |
CN (1) | CN102929793A (zh) |
Cited By (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103500088A (zh) * | 2013-09-18 | 2014-01-08 | 北京航空航天大学 | 一种用于key-value存储系统的trace序列的生成方法 |
CN104156380A (zh) * | 2014-03-04 | 2014-11-19 | 深圳信息职业技术学院 | 一种分布式存储器哈希索引方法及系统 |
CN106201350A (zh) * | 2016-07-07 | 2016-12-07 | 华为技术有限公司 | 存储数据的方法、存储器和计算机系统 |
CN106339270A (zh) * | 2016-08-26 | 2017-01-18 | 华为技术有限公司 | 数据校验方法及装置 |
CN106469198A (zh) * | 2016-08-31 | 2017-03-01 | 华为技术有限公司 | 键值存储方法、装置及系统 |
CN106598480A (zh) * | 2015-10-14 | 2017-04-26 | 三星电子株式会社 | 具有接口控制机制的电子系统及其操作方法 |
CN107103021A (zh) * | 2016-02-23 | 2017-08-29 | 三星电子株式会社 | 计算机系统和用于控制计算机的方法 |
CN107209644A (zh) * | 2015-12-28 | 2017-09-26 | 华为技术有限公司 | 一种数据处理方法以及NVMe存储器 |
CN108011949A (zh) * | 2017-11-30 | 2018-05-08 | 百度在线网络技术(北京)有限公司 | 用于获取数据的方法和装置 |
CN108268596A (zh) * | 2017-01-04 | 2018-07-10 | 三星电子株式会社 | 搜索存储在存储器中的数据的方法和系统 |
CN108345545A (zh) * | 2017-01-25 | 2018-07-31 | 三星电子株式会社 | 在逻辑地址与物理地址之间执行散列式转译的存储装置 |
CN108647101A (zh) * | 2018-05-09 | 2018-10-12 | 深圳壹账通智能科技有限公司 | 区块链上用户通信方法、装置、终端设备及存储介质 |
CN109213772A (zh) * | 2018-09-12 | 2019-01-15 | 华东师范大学 | 数据存储方法及NVMe存储系统 |
WO2019047612A1 (zh) * | 2017-09-11 | 2019-03-14 | 清华大学 | 基于闪存的存储路径优化的键值存储管理方法 |
CN109753231A (zh) * | 2017-11-08 | 2019-05-14 | 三星电子株式会社 | 键值存储设备及操作其的方法 |
CN110059099A (zh) * | 2017-12-29 | 2019-07-26 | 三星电子株式会社 | 用于在数据库中执行迭代器操作的设备 |
CN110678836A (zh) * | 2017-04-20 | 2020-01-10 | 阿里巴巴集团控股有限公司 | 用于键值存储的持久性存储器 |
CN113039547A (zh) * | 2018-10-10 | 2021-06-25 | 美光科技公司 | 键值存储树数据块的基于计数器的压缩 |
US11334270B2 (en) | 2018-12-14 | 2022-05-17 | Micron Technology, Inc. | Key-value store using journaling with selective data storage format |
US11657092B2 (en) | 2018-12-26 | 2023-05-23 | Micron Technology, Inc. | Data tree with order-based node traversal |
Families Citing this family (67)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5605288B2 (ja) * | 2011-03-31 | 2014-10-15 | 富士通株式会社 | 出現マップ生成方法、ファイル抽出方法、出現マップ生成プログラム、ファイル抽出プログラム、出現マップ生成装置、およびファイル抽出装置 |
JP5524144B2 (ja) | 2011-08-08 | 2014-06-18 | 株式会社東芝 | key−valueストア方式を有するメモリシステム |
JP5631938B2 (ja) | 2012-07-19 | 2014-11-26 | 株式会社東芝 | 半導体記憶装置 |
US8922243B2 (en) | 2012-12-23 | 2014-12-30 | Advanced Micro Devices, Inc. | Die-stacked memory device with reconfigurable logic |
US9697147B2 (en) | 2012-08-06 | 2017-07-04 | Advanced Micro Devices, Inc. | Stacked memory device with metadata management |
KR101416586B1 (ko) * | 2012-10-17 | 2014-07-08 | 주식회사 리얼타임테크 | 해쉬를 이용한 전문 기반 논리 연산 수행 방법 |
US9170948B2 (en) | 2012-12-23 | 2015-10-27 | Advanced Micro Devices, Inc. | Cache coherency using die-stacked memory device with logic die |
US9135185B2 (en) | 2012-12-23 | 2015-09-15 | Advanced Micro Devices, Inc. | Die-stacked memory device providing data translation |
US9201777B2 (en) | 2012-12-23 | 2015-12-01 | Advanced Micro Devices, Inc. | Quality of service support using stacked memory device with logic die |
US9065722B2 (en) | 2012-12-23 | 2015-06-23 | Advanced Micro Devices, Inc. | Die-stacked device with partitioned multi-hop network |
US9536016B2 (en) * | 2013-01-16 | 2017-01-03 | Google Inc. | On-disk multimap |
KR102044023B1 (ko) * | 2013-03-14 | 2019-12-02 | 삼성전자주식회사 | 키 값 기반 데이터 스토리지 시스템 및 이의 운용 방법 |
US9286948B2 (en) * | 2013-07-15 | 2016-03-15 | Advanced Micro Devices, Inc. | Query operations for stacked-die memory device |
WO2015048140A1 (en) * | 2013-09-24 | 2015-04-02 | Intelligent Intellectual Property Holdings 2 Llc | Systems and methods for storage collision management |
JP6281225B2 (ja) * | 2013-09-30 | 2018-02-21 | 日本電気株式会社 | 情報処理装置 |
US9934248B2 (en) * | 2013-12-25 | 2018-04-03 | Hitachi, Ltd. | Computer system and data management method |
JPWO2015118865A1 (ja) * | 2014-02-05 | 2017-03-23 | 日本電気株式会社 | 情報処理装置、情報処理システム及びデータアクセス方法 |
US11093468B1 (en) * | 2014-03-31 | 2021-08-17 | EMC IP Holding Company LLC | Advanced metadata management |
US9361937B2 (en) * | 2014-08-26 | 2016-06-07 | Seagate Technology Llc | Shingled magnetic recording data store |
US9723071B2 (en) * | 2014-09-29 | 2017-08-01 | Samsung Electronics Co., Ltd. | High bandwidth peer-to-peer switched key-value caching |
US9846642B2 (en) * | 2014-10-21 | 2017-12-19 | Samsung Electronics Co., Ltd. | Efficient key collision handling |
CN104536903B (zh) * | 2014-12-25 | 2018-02-23 | 华中科技大学 | 一种按数据属性分类存放的混合存储方法及系统 |
US9590897B1 (en) * | 2015-02-26 | 2017-03-07 | Qlogic Corporation | Methods and systems for network devices and associated network transmissions |
US20180012033A1 (en) * | 2015-03-04 | 2018-01-11 | Hitachi, Ltd. | Method and apparatus of non-volatile memory system having capability of key-value store database |
US11016946B1 (en) * | 2015-03-31 | 2021-05-25 | EMC IP Holding Company LLC | Method and apparatus for processing object metadata |
US10318491B1 (en) * | 2015-03-31 | 2019-06-11 | EMC IP Holding Company LLC | Object metadata query with distributed processing systems |
JP6238931B2 (ja) * | 2015-05-14 | 2017-11-29 | ヤフー株式会社 | 情報処理装置、プログラム、情報処理システム及びデータ管理方法 |
CN106484691B (zh) * | 2015-08-24 | 2019-12-10 | 阿里巴巴集团控股有限公司 | 移动终端的数据存储方法和装置 |
KR102667783B1 (ko) * | 2016-03-04 | 2024-05-23 | 삼성전자주식회사 | Ecc 관련 데이터를 키-밸류 맵핑 정보에서 관리하는 오브젝트 스토리지 시스템 |
CN111752480A (zh) * | 2016-03-24 | 2020-10-09 | 华为技术有限公司 | 一种数据写方法、数据读方法及相关设备、系统 |
JP6542152B2 (ja) * | 2016-03-29 | 2019-07-10 | 東芝メモリ株式会社 | オブジェクトストレージ、コントローラおよびプログラム |
US9836243B1 (en) * | 2016-03-31 | 2017-12-05 | EMC IP Holding Company LLC | Cache management techniques |
US10445199B2 (en) * | 2016-12-22 | 2019-10-15 | Western Digital Technologies, Inc. | Bad page management in storage devices |
CN107066498B (zh) * | 2016-12-30 | 2020-04-14 | 成都华为技术有限公司 | 键值kv存储方法和装置 |
US10725988B2 (en) | 2017-02-09 | 2020-07-28 | Micron Technology, Inc. | KVS tree |
US10719495B2 (en) | 2017-02-09 | 2020-07-21 | Micron Technology, Inc. | Stream selection for multi-stream storage devices |
US10706106B2 (en) | 2017-02-09 | 2020-07-07 | Micron Technology, Inc. | Merge tree modifications for maintenance operations |
US10706105B2 (en) | 2017-02-09 | 2020-07-07 | Micron Technology, Inc. | Merge tree garbage metrics |
US10740029B2 (en) * | 2017-11-28 | 2020-08-11 | Advanced Micro Devices, Inc. | Expandable buffer for memory transactions |
US11182694B2 (en) | 2018-02-02 | 2021-11-23 | Samsung Electronics Co., Ltd. | Data path for GPU machine learning training with key value SSD |
US10459845B1 (en) | 2018-06-29 | 2019-10-29 | Micron Technology, Inc. | Host accelerated operations in managed NAND devices |
US11334284B2 (en) * | 2018-09-24 | 2022-05-17 | Samsung Electronics Co., Ltd. | Database offloading engine |
CN109376193B (zh) * | 2018-09-29 | 2023-04-28 | 北京友友天宇系统技术有限公司 | 基于自适应规则的数据交换系统 |
US11100071B2 (en) * | 2018-10-10 | 2021-08-24 | Micron Technology, Inc. | Key-value store tree data block spill with compaction |
US11048755B2 (en) | 2018-12-14 | 2021-06-29 | Micron Technology, Inc. | Key-value store tree with selective use of key portion |
US11158369B2 (en) * | 2018-12-26 | 2021-10-26 | Western Digital Technologies, Inc. | On-chip non-volatile memory (NVM) search |
US11580162B2 (en) | 2019-04-18 | 2023-02-14 | Samsung Electronics Co., Ltd. | Key value append |
US10910057B2 (en) | 2019-04-22 | 2021-02-02 | Western Digital Technologies, Inc. | CAM storage schemes and CAM read operations for detecting matching keys with bit errors |
US11360905B2 (en) * | 2019-05-24 | 2022-06-14 | Texas Instmments Incorporated | Write merging on stores with different privilege levels |
US11210216B2 (en) * | 2019-06-25 | 2021-12-28 | Intel Corporation | Techniques to facilitate a hardware based table lookup |
US11093143B2 (en) | 2019-07-12 | 2021-08-17 | Samsung Electronics Co., Ltd. | Methods and systems for managing key-value solid state drives (KV SSDS) |
US11520738B2 (en) * | 2019-09-20 | 2022-12-06 | Samsung Electronics Co., Ltd. | Internal key hash directory in table |
US11474977B2 (en) | 2019-09-30 | 2022-10-18 | Dropbox, Inc. | Snapshot isolation in a distributed storage system |
US11321244B2 (en) | 2019-12-16 | 2022-05-03 | Samsung Electronics Co., Ltd. | Block interface emulation for key value device |
EP3851950A1 (en) | 2020-01-15 | 2021-07-21 | Samsung Electronics Co., Ltd. | Storage device and operation method thereof |
KR20210092361A (ko) | 2020-01-15 | 2021-07-26 | 삼성전자주식회사 | 스토리지 장치 및 그것의 동작 방법 |
US11449430B2 (en) * | 2020-04-02 | 2022-09-20 | Samsung Electronics Co., Ltd. | Key-value store architecture for key-value devices |
CN113568560A (zh) | 2020-04-29 | 2021-10-29 | 瑞昱半导体股份有限公司 | 存取一次性可编程记忆体的方法及相关的电路 |
US20220092046A1 (en) * | 2020-09-18 | 2022-03-24 | Kioxia Corporation | System and method for efficient expansion of key value hash table |
US11956348B2 (en) | 2020-10-09 | 2024-04-09 | Samsung Electronics Co., Ltd. | Systems, methods, and apparatus for security key management for I/O devices |
CN112637327B (zh) * | 2020-12-21 | 2022-07-22 | 北京奇艺世纪科技有限公司 | 一种数据处理方法、装置及系统 |
US11720255B1 (en) * | 2021-02-24 | 2023-08-08 | Xilinx, Inc. | Random reads using multi-port memory and on-chip memory blocks |
US11861222B2 (en) | 2021-05-17 | 2024-01-02 | Micron Technology, Inc. | Object management in tiered memory systems |
JP2023044545A (ja) | 2021-09-17 | 2023-03-30 | キオクシア株式会社 | 情報処理装置及びメモリシステム |
US20230266919A1 (en) * | 2022-02-18 | 2023-08-24 | Seagate Technology Llc | Hint-based fast data operations with replication in object-based storage |
KR20240077233A (ko) * | 2022-11-24 | 2024-05-31 | 재단법인대구경북과학기술원 | 샤딩 기반의 키-값 캐싱 시스템 및 방법 |
CN116301636B (zh) * | 2023-03-22 | 2023-12-22 | 鹏钛存储技术(南京)有限公司 | 一种管理数据结构的方法以及基于哈希算法的硬件加速器 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5715419A (en) * | 1989-12-05 | 1998-02-03 | Texas Instruments Incorporated | Data communications system with address remapping for expanded external memory access |
US6684314B1 (en) * | 2000-07-14 | 2004-01-27 | Agilent Technologies, Inc. | Memory controller with programmable address configuration |
WO2010114006A1 (ja) * | 2009-03-31 | 2010-10-07 | 日本電気株式会社 | ストレージシステムとストレージアクセス方法とプログラム |
US20100332846A1 (en) * | 2009-06-26 | 2010-12-30 | Simplivt Corporation | Scalable indexing |
CN102591970A (zh) * | 2011-12-31 | 2012-07-18 | 北京奇虎科技有限公司 | 一种分布式键-值查询方法和查询引擎系统 |
Family Cites Families (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7190617B1 (en) | 1989-04-13 | 2007-03-13 | Sandisk Corporation | Flash EEprom system |
JP2928620B2 (ja) | 1990-10-30 | 1999-08-03 | 株式会社東芝 | 非水電解液二次電池 |
US5659755A (en) | 1995-11-20 | 1997-08-19 | International Business Machines Corporation | Method and system in a data processing system for efficiently compressing data using a sorting network |
JP4167359B2 (ja) | 1999-09-30 | 2008-10-15 | 株式会社東芝 | データ管理システム及びデータ管理方法 |
US6377500B1 (en) | 1999-11-11 | 2002-04-23 | Kabushiki Kaisha Toshiba | Memory system with a non-volatile memory, having address translating function |
KR100453053B1 (ko) | 2002-06-10 | 2004-10-15 | 삼성전자주식회사 | 플래쉬 메모리용 파일 시스템 |
BR0306986A (pt) | 2002-07-23 | 2005-06-28 | Samsung Electronics Co Ltd | Estrutura de ìndice de meta-dados divididos em fragmentos e mìdia para leitura em computador |
JP2004192426A (ja) | 2002-12-12 | 2004-07-08 | Seiko Epson Corp | 記憶装置及びその制御方法 |
US7032096B2 (en) | 2003-04-22 | 2006-04-18 | Hewlett-Packard Development Company, L.P. | Memory management system and method using a hash table |
JP4795778B2 (ja) | 2005-11-07 | 2011-10-19 | 株式会社東芝 | データ管理装置、データ管理方法およびプログラム |
US7836274B2 (en) * | 2006-09-05 | 2010-11-16 | Broadcom Corporation | Method and system for combining page buffer list entries to optimize caching of translated addresses |
CN101155182A (zh) | 2006-09-30 | 2008-04-02 | 阿里巴巴公司 | 一种基于网络的垃圾信息过滤方法和装置 |
KR100789406B1 (ko) | 2006-11-03 | 2007-12-28 | 삼성전자주식회사 | 플래시 메모리 시스템 및 그것의 가비지 컬렉션 방법 |
KR100823171B1 (ko) * | 2007-02-01 | 2008-04-18 | 삼성전자주식회사 | 파티션된 플래시 변환 계층을 갖는 컴퓨터 시스템 및플래시 변환 계층의 파티션 방법 |
US7739312B2 (en) * | 2007-04-27 | 2010-06-15 | Network Appliance, Inc. | Data containerization for reducing unused space in a file system |
JP2009020757A (ja) | 2007-07-12 | 2009-01-29 | Toshiba Corp | データ登録装置、データ登録方法及びプログラム |
KR101123335B1 (ko) * | 2009-01-15 | 2012-03-28 | 연세대학교 산학협력단 | 해시 인덱스 구성 방법과 그 장치, 및 상기 장치를 구비하는 데이터 저장 장치, 및 상기 방법을 구현하는 프로그램이 기록된 기록매체 |
WO2010090745A1 (en) * | 2009-02-06 | 2010-08-12 | Osr Open Systems Resources, Inc. | Methods and systems for data storage |
JP2011215835A (ja) | 2010-03-31 | 2011-10-27 | Toshiba Corp | 全文検索機能を備えるストレージ装置 |
WO2012032727A1 (en) * | 2010-09-09 | 2012-03-15 | Nec Corporation | Storage system |
JP5524144B2 (ja) | 2011-08-08 | 2014-06-18 | 株式会社東芝 | key−valueストア方式を有するメモリシステム |
JP5646775B2 (ja) | 2014-01-15 | 2014-12-24 | 株式会社東芝 | key−valueストア方式を有するメモリシステム |
JP5833212B2 (ja) | 2014-10-30 | 2015-12-16 | 株式会社東芝 | key−valueストア方式を有するメモリシステム |
-
2011
- 2011-08-08 JP JP2011172759A patent/JP5524144B2/ja not_active Expired - Fee Related
-
2012
- 2012-08-07 KR KR1020120086438A patent/KR101397353B1/ko active IP Right Grant
- 2012-08-08 CN CN2012102799679A patent/CN102929793A/zh active Pending
- 2012-08-08 US US13/569,605 patent/US9361408B2/en active Active
-
2014
- 2014-10-29 US US14/527,373 patent/US9953107B2/en active Active
-
2018
- 2018-03-19 US US15/924,468 patent/US10579683B2/en active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5715419A (en) * | 1989-12-05 | 1998-02-03 | Texas Instruments Incorporated | Data communications system with address remapping for expanded external memory access |
US6684314B1 (en) * | 2000-07-14 | 2004-01-27 | Agilent Technologies, Inc. | Memory controller with programmable address configuration |
WO2010114006A1 (ja) * | 2009-03-31 | 2010-10-07 | 日本電気株式会社 | ストレージシステムとストレージアクセス方法とプログラム |
US20100332846A1 (en) * | 2009-06-26 | 2010-12-30 | Simplivt Corporation | Scalable indexing |
CN102591970A (zh) * | 2011-12-31 | 2012-07-18 | 北京奇虎科技有限公司 | 一种分布式键-值查询方法和查询引擎系统 |
Non-Patent Citations (1)
Title |
---|
TONY R.MARTINEZ: "Smart Memory Architecture and Methods", 《IN FUTURE GERERATION SYSTEMS》, vol. 6, no. 1, 30 December 1990 (1990-12-30), XP001610047 * |
Cited By (39)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103500088A (zh) * | 2013-09-18 | 2014-01-08 | 北京航空航天大学 | 一种用于key-value存储系统的trace序列的生成方法 |
CN104156380B (zh) * | 2014-03-04 | 2019-03-26 | 深圳信息职业技术学院 | 一种分布式存储器哈希索引方法及系统 |
CN104156380A (zh) * | 2014-03-04 | 2014-11-19 | 深圳信息职业技术学院 | 一种分布式存储器哈希索引方法及系统 |
CN106598480A (zh) * | 2015-10-14 | 2017-04-26 | 三星电子株式会社 | 具有接口控制机制的电子系统及其操作方法 |
TWI699696B (zh) * | 2015-10-14 | 2020-07-21 | 南韓商三星電子股份有限公司 | 具有介面控制機構之電子系統及其操作方法 |
US11467975B2 (en) | 2015-12-28 | 2022-10-11 | Huawei Technologies Co., Ltd. | Data processing method and NVMe storage device |
CN107209644A (zh) * | 2015-12-28 | 2017-09-26 | 华为技术有限公司 | 一种数据处理方法以及NVMe存储器 |
US10705974B2 (en) | 2015-12-28 | 2020-07-07 | Huawei Technologies Co., Ltd. | Data processing method and NVME storage device |
CN107209644B (zh) * | 2015-12-28 | 2020-04-28 | 华为技术有限公司 | 一种数据处理方法以及NVMe存储器 |
US11301422B2 (en) | 2016-02-23 | 2022-04-12 | Samsung Electronics Co., Ltd. | System and methods for providing fast cacheable access to a key-value device through a filesystem interface |
CN107103021B (zh) * | 2016-02-23 | 2021-10-08 | 三星电子株式会社 | 计算机系统和用于控制计算机的方法 |
CN107103021A (zh) * | 2016-02-23 | 2017-08-29 | 三星电子株式会社 | 计算机系统和用于控制计算机的方法 |
CN106201350B (zh) * | 2016-07-07 | 2019-10-18 | 华为技术有限公司 | 存储数据的方法、存储器和计算机系统 |
CN106201350A (zh) * | 2016-07-07 | 2016-12-07 | 华为技术有限公司 | 存储数据的方法、存储器和计算机系统 |
CN106339270A (zh) * | 2016-08-26 | 2017-01-18 | 华为技术有限公司 | 数据校验方法及装置 |
US11048642B2 (en) | 2016-08-31 | 2021-06-29 | Huawei Technologies Co., Ltd. | Key-value storage method, apparatus, and system |
CN106469198B (zh) * | 2016-08-31 | 2019-10-15 | 华为技术有限公司 | 键值存储方法、装置及系统 |
CN106469198A (zh) * | 2016-08-31 | 2017-03-01 | 华为技术有限公司 | 键值存储方法、装置及系统 |
CN108268596B (zh) * | 2017-01-04 | 2023-05-30 | 三星电子株式会社 | 搜索存储在存储器中的数据的方法和系统 |
CN108268596A (zh) * | 2017-01-04 | 2018-07-10 | 三星电子株式会社 | 搜索存储在存储器中的数据的方法和系统 |
CN108345545B (zh) * | 2017-01-25 | 2023-01-03 | 三星电子株式会社 | 在逻辑地址与物理地址之间执行散列式转译的存储装置 |
CN108345545A (zh) * | 2017-01-25 | 2018-07-31 | 三星电子株式会社 | 在逻辑地址与物理地址之间执行散列式转译的存储装置 |
CN110678836A (zh) * | 2017-04-20 | 2020-01-10 | 阿里巴巴集团控股有限公司 | 用于键值存储的持久性存储器 |
CN110678836B (zh) * | 2017-04-20 | 2024-02-09 | 阿里巴巴集团控股有限公司 | 用于键值存储的持久性存储器 |
WO2019047612A1 (zh) * | 2017-09-11 | 2019-03-14 | 清华大学 | 基于闪存的存储路径优化的键值存储管理方法 |
CN109753231B (zh) * | 2017-11-08 | 2024-05-10 | 三星电子株式会社 | 键值存储设备及操作其的方法 |
US11874815B2 (en) | 2017-11-08 | 2024-01-16 | Samsung Electronics Co., Ltd. | Key-value storage device and method of operating the same |
CN109753231A (zh) * | 2017-11-08 | 2019-05-14 | 三星电子株式会社 | 键值存储设备及操作其的方法 |
CN108011949B (zh) * | 2017-11-30 | 2021-03-09 | 百度在线网络技术(北京)有限公司 | 用于获取数据的方法和装置 |
CN108011949A (zh) * | 2017-11-30 | 2018-05-08 | 百度在线网络技术(北京)有限公司 | 用于获取数据的方法和装置 |
CN110059099A (zh) * | 2017-12-29 | 2019-07-26 | 三星电子株式会社 | 用于在数据库中执行迭代器操作的设备 |
CN108647101A (zh) * | 2018-05-09 | 2018-10-12 | 深圳壹账通智能科技有限公司 | 区块链上用户通信方法、装置、终端设备及存储介质 |
CN109213772A (zh) * | 2018-09-12 | 2019-01-15 | 华东师范大学 | 数据存储方法及NVMe存储系统 |
CN109213772B (zh) * | 2018-09-12 | 2021-03-26 | 华东师范大学 | 数据存储方法及NVMe存储系统 |
CN113039547B (zh) * | 2018-10-10 | 2022-06-28 | 美光科技公司 | 键值存储存储器系统、方法及相关存储媒体 |
US11599552B2 (en) | 2018-10-10 | 2023-03-07 | Micron Technology, Inc. | Counter-based compaction of key-value store tree data block |
CN113039547A (zh) * | 2018-10-10 | 2021-06-25 | 美光科技公司 | 键值存储树数据块的基于计数器的压缩 |
US11334270B2 (en) | 2018-12-14 | 2022-05-17 | Micron Technology, Inc. | Key-value store using journaling with selective data storage format |
US11657092B2 (en) | 2018-12-26 | 2023-05-23 | Micron Technology, Inc. | Data tree with order-based node traversal |
Also Published As
Publication number | Publication date |
---|---|
US10579683B2 (en) | 2020-03-03 |
US9361408B2 (en) | 2016-06-07 |
JP2013037517A (ja) | 2013-02-21 |
KR101397353B1 (ko) | 2014-05-19 |
US20130042060A1 (en) | 2013-02-14 |
US20150074341A1 (en) | 2015-03-12 |
JP5524144B2 (ja) | 2014-06-18 |
US9953107B2 (en) | 2018-04-24 |
KR20130018602A (ko) | 2013-02-25 |
US20180210970A1 (en) | 2018-07-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102929793A (zh) | 包括键-值存储的存储器系统 | |
CN105843551B (zh) | 高性能和大容量储存重复删除中的数据完整性和损耗电阻 | |
JP5597666B2 (ja) | 半導体記憶装置、情報処理システムおよび制御方法 | |
US11080234B2 (en) | Computer readable recording medium for index generation | |
US20070124277A1 (en) | Index and Method for Extending and Querying Index | |
WO2015145647A1 (ja) | ストレージ装置とデータ処理方法及びストレージシステム | |
KR20160046729A (ko) | 키-값 저장 엔진 및 그것의 효과적인 키 충돌 관리 방법 | |
US10296250B2 (en) | Method and apparatus for improving performance of sequential logging in a storage device | |
US11221999B2 (en) | Database key compression | |
CN110168532B (zh) | 数据更新方法和存储装置 | |
US9793920B1 (en) | Computer-readable recording medium, encoding device, and encoding method | |
EP2972748A1 (en) | Provisioning of multiple tiers in heterogenic data volume | |
US9817852B2 (en) | Electronic system with version control mechanism and method of operation thereof | |
JP5646775B2 (ja) | key−valueストア方式を有するメモリシステム | |
CN113282234B (zh) | 存储装置、存储系统、及其操作方法 | |
JP6258436B2 (ja) | メモリシステムのローカルコントローラ | |
US20110153674A1 (en) | Data storage including storing of page identity and logical relationships between pages | |
JP5833212B2 (ja) | key−valueストア方式を有するメモリシステム | |
JP6034467B2 (ja) | システム | |
US11914587B2 (en) | Systems and methods for key-based indexing in storage devices | |
KR20230025322A (ko) | 호스트, 호스트의 동작 방법 및 스토리지 시스템 | |
KR20090033623A (ko) | 파일시스템 및 상기 파일시스템의 이용방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20130213 |