存储器、存储器系统及其数据处理方法

文档序号:9396821阅读:301来源:国知局
存储器、存储器系统及其数据处理方法
【专利说明】存储器、存储器系统及其数据处理方法
[0001]本申请是申请号为201210279821.4、申请日为2012年8月8日、发明名称为“包括键-值存储的存储器系统”的发明专利申请的分案申请。
[0002]对相关申请的交叉引用
[0003]本申请要求2011年8月8日提交的日本专利申请N0.2011-173358的优先权,该专利申请的全部内容以引用的方式并入本文中。
技术领域
[0004]此处所描述的各实施例一般涉及被主机系统访问并包括键-值(key-value)存储的存储器系统。
【背景技术】
[0005]在包括存储器系统的最近的通用计算机系统中,许多数据操作,具体而言处理数据集的操作,频繁地发生。例如,全文搜索系统中的对包含两个关键字A和B的数据的搜索的操作是要获取包含A的数据集和包含B的数据集的交叉。
[0006]目前最广泛使用的通用计算机系统是通过使用地址来管理数据的存储器系统。当以这样的方式处理数据时,以彼此一一对应的关系来管理数据和地址。因此,以如上文所描述地处理数据集,基于复杂算法的软件处理一般是基本的。
[0007]另一方面,一些存储器系统通过使用它们的内容本身代替地址来管理数据。然而,从成本以及与现有的系统的兼容性的视角来看,这些存储器系统用于专门的应用中,而很少用于通用计算机系统中。
[0008]当在常规计算机系统中处理数据集时,由于对存储器系统的限制,复杂的软件处理是必须的。这会降低性能并使得系统难以操纵。

【发明内容】

[0009]—般而言,根据一个实施例,包括键-值存储,而该键-值存储包含键-值数据作为键和对应于该键的值的对,这样的存储器系统包括第一存储器、控制电路以及第二存储器。第一存储器被配置成包含用于存储数据的数据区域以及包含键-值数据的表区域。控制电路被配置成通过寻址来执行对第一存储器的写入和读取,并执行基于该键-值存储的请求。第二存储器被配置成根据来自控制电路的指令而存储键-值数据。控制电路通过使用存储在第一存储器中的键-值数据以及存储在第二存储器中的键-值数据来执行集合操作。
【附图说明】
[0010]图1是示出了一个实施例中所使用的KVS存储器的第一配置示例的视图;
[0011]图2是示出了该实施例中所使用的KVS存储器的第二配置示例的视图;
[0012]图3是示出了第一实施例的存储器系统的硬件配置的框图;
[0013]图4是示出了第一实施例的主存储器中的数据区域的配置示例的视图;
[0014]图5是示出了第一实施例中的对AND操作的处理的流程图;
[0015]图6是示出了第一实施例中的对OR操作的处理的流程图;
[0016]图7是示出了第一实施例中的对NOT操作的处理的流程图;
[0017]图8是示出了第一实施例的第一修改方案的存储器系统的硬件配置的框图;
[0018]图9是示出了第一实施例的第二修改方案的存储器系统的硬件配置的框图;
[0019]图10是示出了第一实施例的第三修改方案的存储器系统的硬件配置的框图;
[0020]图11是示出了第二实施例的存储器系统的硬件配置的框图;
[0021]图12是示出了第二实施例的第一修改方案的存储器系统的硬件配置的框图;以及
[0022]图13是示出了第二实施例的第二修改方案的存储器系统的硬件配置的框图。
【具体实施方式】
[0023]在下面的说明中,相同附图标记表示具有相同功能和配置的组成元件,只有在需要的情况下才进行重复的说明。
[0024]根据实施例的能够执行集合操作的存储器系统(搜索存储器)包括具有至少一个键-值存储功能(在下文中,简称为KVS)的存储器。KVS是能够写入键和值的对并通过指定键来读出值的数据库管理方法。在KVS中,数据是作为键-值数据,作为键和对应于该键的值的对,来管理的。当键作为搜索请求被给出时,可以输出对应于该键的值。在此说明书中,具有此KVS的存储器将在下文中被称为KVS存储器。
[0025]下面将详细说明KVS存储器以及其指令。
[0026]KVS存储器是除正常的存储器访问指令之外还包括诸如至少GET、PUT以及DELETE之类的KVS指令的存储器,这些指令的含义如下所示。
[0027]⑴GET (键,值):当未指定元素(值)时(空),获取对应于键的数据集。当指定了元素(值)时,如果该值存在于数据集中,则返回值本身或TRUE。如果该值不存在于数据集中,则返回空集(NULL)或FALSE。如果没有对应于该键的数据集,也返回空集(NULL)或FALSE0
[0028]⑵PUT(键,值):将元素(值)添加到对应于该键的数据集中。如果元素已经存在于数据集中,则不执行任何操作。
[0029](3)删除(键,值):将元素(值)从对应于键的数据集中删除。如果元素不存在于数据集中,则不执行任何操作。
[0030]下面将描述KVS存储器的实际的配置示例和操作示例。
[0031]图1是示出了该实施例中所使用的KVS存储器的第一配置示例的视图。
[0032]如图1所示,KVS存储器14连接到例如存储器控制器13和散列生成器16。另外,主机系统100还连接到存储器控制器13。散列生成器16具有将具有任意长度的数据转换为具有固定长度的比特串的所谓的散列函数。主机系统100包括中央处理单元(CPU)和主存储器。
[0033]诸如DRAM之类的通用的存储器被用作KVS存储器14。KVS存储器14可以被分成至少两个存储器区域,即,散列表区域14A和实际数据区域14B。虽然KVS存储器14可以具有多个存储器区域,但是,散列表区域14A的大小大于可以通过由散列生成器16所生成的散列值(固定长度比特数据)来表达的大小。散列表区域14A可以被分成能够存储键的实际地址的区域和能够存储值的实际地址的区域。散列表区域14A的存储器容量不是固定的,而是可以根据基于键-值存储的请求而变化(增大或缩小)的。实际数据区域14B也存储数据。
[0034]存储器控制器13解释从主机系统100接收到的KVS指令,并对于KVS存储器14和散列生成器16执行下面将描述的操作。
[0035]假设键“动物”还不存在于KVS存储器14中。当存储器控制器13按顺序接收到指令“PUT (动物,狗)”和“PUT (动物,猫)”时,散列生成器16生成对应于“动物”、“狗”以及“猫”的散列值。假设这些散列值是按顺序具有固定长度158、98,以及188的比特字符串。
[0036]在此状态下,通过检查对应于散列表区域14A中的散列值的地址的内容,来确定键“动物”是否已经被存储。由于该键还不存在(值是O),用于存储这些实际数据的区域(1020,1055,以及1090)被固定,因此,这些区域的开始地址存储在散列表区域14A的键区域。实际数据“动物”、“狗”,以及“猫”存储在固定区域(1020,1055,以及1090)。
[0037]另外,为将键“动物”与数据集{狗,猫}相关联,用于各个元素的区域在实际数据区域14B中是固定的,并且开始地址(1100)被写入到对应于散列表区域14A中的“动物”的值区域。然后,通过排列元素的开始地址而获取的数据(1055,1090)存储在实际数据区域14B 中。
[0038]因此,在KVS存储器14中形成对应于键“动物”的数据集{狗,猫}。图1示出了KVS存储器14的内部状态。
[0039]假设存储器控制器13然后接收到指令“GET(动物,NULL) ”。在此情况下,从被作为散列表区域14A中的“动物”的散列值写入在地址(0158)处的值区域(1100)中的内容(元素的实际数据的开始地址)读出实际数据。即,{狗,猫}被输出到主机系统100。
[0040]如果指令是GET (动物,狗),则存储器控制器13不输出任何元素,但是,只有在有匹配作为第二自变量的“狗”的元素情况下才向主机系统100输出“狗”或TRUE。如果指令是GET (动物,狮子),则没有匹配元素,如此,存储器控制器13向主机系统100输出NULL或FALSE0
[0041]此外,如果存储器控制器13接收到指令“DELETE (动物,狗)”,则从对应于“动物”的数据集中删除“狗”。更具体而言,检查从地址(1100)开始的元素,除“狗”之外的其余部分(1090)被作为值写入。可另选地,还可以按顺序在新固定在实际数据区域14B中的存储器区域中写入除“狗”之外的元素,最后在散列表区域14A中重写“动物”的值区域,从而释放原始地址(1100)。
[0042]请注意,如果当执行DELETE时元素“狗”本身不属于除“动物”之外的任何集合,则有时执行释放元素“狗”所使用的存储器的操作(垃圾收集)。
[0043]如果指令是GET(动物,NULL),则{猫}被返回到主机系统100。如果指令是DELETE(动物,猫),则释放散列表区域14A中的“动物”的键区域以及值区域,并且对应于键“动物”的数据集消失。即,如果指令是GET (动物,NULL),则空集(NULL)被返回到主机系统100。
[0044]除上文所提及的方法之外,还有多种实现KVS存储器的配置的方法。作为实际的示例,下面将说明通过使用内容可寻址存储器(CAM)在图1所示出的配置中形成散列表区域14A的方法。
[0045]图2是示出了该实施例中所使用的KVS存储器的第二配置示例的视图。
[0046]此配置示例包括CAM-RAM 142作为KVS存储器,以及解释从主机系统100输入的KVS指令并控制CAM-RAM 142及其他模块的存储器控制器13。
[0047]CAM-RAM 142包括CAM单元142a作为表区域,以及RAM (随机存取存储器)单元142B作为数据区域。诸如DRAM或NAND闪速存储器之类的通用存储器可以被用作RAM单元142B。虽然有若干种类型的内容可寻址存储器(CAM单元),但是,在CAM单元142A中,此示例采用除使用地址进行正常读和写之外,如
当前第1页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1