CN103106158B - 包括键-值存储的存储器系统 - Google Patents

包括键-值存储的存储器系统 Download PDF

Info

Publication number
CN103106158B
CN103106158B CN201210279821.4A CN201210279821A CN103106158B CN 103106158 B CN103106158 B CN 103106158B CN 201210279821 A CN201210279821 A CN 201210279821A CN 103106158 B CN103106158 B CN 103106158B
Authority
CN
China
Prior art keywords
key
memory
value
data
memorizer
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
Application number
CN201210279821.4A
Other languages
English (en)
Other versions
CN103106158A (zh
Inventor
木下敦宽
丸龟孝生
辰村光介
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Japanese Businessman Panjaya Co ltd
Kioxia Corp
Original Assignee
Toshiba Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Toshiba Corp filed Critical Toshiba Corp
Priority to CN201510449201.4A priority Critical patent/CN105117355B/zh
Publication of CN103106158A publication Critical patent/CN103106158A/zh
Application granted granted Critical
Publication of CN103106158B publication Critical patent/CN103106158B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/28Databases characterised by their database models, e.g. relational or object models
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1694Configuration of memory controller to different memory types
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0292User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/21Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
    • G11C11/34Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
    • G11C11/40Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
    • G11C11/401Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming cells needing refreshing or charge regeneration, i.e. dynamic cells
    • G11C11/4063Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C15/00Digital 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
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/16Memory access

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)
  • Microelectronics & Electronic Packaging (AREA)
  • Computer Hardware Design (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Programmable Controllers (AREA)
  • Memory System (AREA)
  • Bus Control (AREA)
  • Executing Machine-Instructions (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

公开了一种包括键‑值存储的存储器系统。根据一个实施例,包括键‑值存储(该存储包含键‑值数据作为键和对应于该键的值的对)的存储器系统包括第一存储器(14)、控制电路(11)以及第二存储器(12)。第一存储器(14)被配置成包含用于存储数据的数据区域以及包含键‑值数据的表区域。控制电路(11)被配置成通过寻址来执行对第一存储器(14)的写入和读取,并执行基于键‑值存储的请求。第二存储器(12)被配置成根据来自控制电路(11)的指令而存储键‑值数据。控制电路(11)通过使用存储在所述第一存储器(14)中的键‑值数据以及存储在所述第二存储器(12)中的键‑值数据来执行集合操作。

Description

包括键-值存储的存储器系统
对相关申请的交叉引用
本申请要求2011年8月8日提交的日本专利申请No.2011-173358的优先权,该专利申请的全部内容以引用的方式并入本文中。
技术领域
此处所描述的各实施例一般涉及被主机系统访问并包括键-值(key-value)存储的存储器系统。
背景技术
在包括存储器系统的最近的通用计算机系统中,许多数据操作,具体而言处理数据集的操作,频繁地发生。例如,全文搜索系统中的对包含两个关键字A和B的数据的搜索的操作是要获取包含A的数据集和包含B的数据集的交叉。
目前最广泛使用的通用计算机系统是通过使用地址来管理数据的存储器系统。当以这样的方式处理数据时,以彼此一一对应的关系来管理数据和地址。因此,以如上文所描述地处理数据集,基于复杂算法的软件处理一般是基本的。
另一方面,一些存储器系统通过使用它们的内容本身代替地址来管理数据。然而,从成本以及与现有的系统的兼容性的视角来看,这些存储器系统用于专门的应用中,而很少用于通用计算机系统中。
当在常规计算机系统中处理数据集时,由于对存储器系统的限制,复杂的软件处理是必须的。这会降低性能并使得系统难以操纵。
发明内容
一般而言,根据一个实施例,包括键-值存储,而该键-值存储包含键-值数据作为键和对应于该键的值的对,这样的存储器系统包括第一存储器、控制电路以及第二存储器。第一存储器被配置成包含用于存储数据的数据区域以及包含键-值数据的表区域。控制电路被配置成通过寻址来执行对第一存储器的写入和读取,并执行基于该键-值存储的请求。第二存储器被配置成根据来自控制电路的指令而存储键-值数据。控制电路通过使用存储在第一存储器中的键-值数据以及存储在第二存储器中的键-值数据来执行集合操作。
附图说明
图1是示出了一个实施例中所使用的KVS存储器的第一配置示例的视图;
图2是示出了该实施例中所使用的KVS存储器的第二配置示例的视图;
图3是示出了第一实施例的存储器系统的硬件配置的框图;
图4是示出了第一实施例的主存储器中的数据区域的配置示例的视图;
图5是示出了第一实施例中的对AND操作的处理的流程图;
图6是示出了第一实施例中的对OR操作的处理的流程图;
图7是示出了第一实施例中的对NOT操作的处理的流程图;
图8是示出了第一实施例的第一修改方案的存储器系统的硬件配置的框图;
图9是示出了第一实施例的第二修改方案的存储器系统的硬件配置的框图;
图10是示出了第一实施例的第三修改方案的存储器系统的硬件配置的框图;
图11是示出了第二实施例的存储器系统的硬件配置的框图;
图12是示出了第二实施例的第一修改方案的存储器系统的硬件配置的框图;以及
图13是示出了第二实施例的第二修改方案的存储器系统的硬件配置的框图。
具体实施方式
在下面的说明中,相同附图标记表示具有相同功能和配置的组成元件,只有在需要的情况下才进行重复的说明。
根据实施例的能够执行集合操作的存储器系统(搜索存储器)包括具有至少一个键-值存储功能(在下文中,简称为KVS)的存储器。KVS是能够写入键和值的对并通过指定键来读出值的数据库管理方法。在KVS中,数据是作为键-值数据,作为键和对应于该键的值的对,来管理的。当键作为搜索请求被给出时,可以输出对应于该键的值。在此说明书中,具有此KVS的存储器将在下文中被称为KVS存储器。
下面将详细说明KVS存储器以及其指令。
KVS存储器是除正常的存储器访问指令之外还包括诸如至少GET、PUT以及DELETE之类的KVS指令的存储器,这些指令的含义如下所示。
(1)GET(键,值):当未指定元素(值)时(空),获取对应于键的数据集。当指定了元素(值)时,如果该值存在于数据集中,则返回值本身或TRUE。如果该值不存在于数据集中,则返回空集(NULL)或FALSE。如果没有对应于该键的数据集,也返回空集(NULL)或FALSE。
(2)PUT(键,值):将元素(值)添加到对应于该键的数据集中。如果元素已经存在于数据集中,则不执行任何操作。
(3)删除(键,值):将元素(值)从对应于键的数据集中删除。如果元素不存在于数据集中,则不执行任何操作。
下面将描述KVS存储器的实际的配置示例和操作示例。
图1是示出了该实施例中所使用的KVS存储器的第一配置示例的视图。
如图1所示,KVS存储器14连接到例如存储器控制器13和散列生成器16。另外,主机系统100还连接到存储器控制器13。散列生成器16具有将具有任意长度的数据转换为具有固定长度的比特串的所谓的散列函数。主机系统100包括中央处理单元(CPU)和主存储器。
诸如DRAM之类的通用的存储器被用作KVS存储器14。KVS存储器14可以被分成至少两个存储器区域,即,散列表区域14A和实际数据区域14B。虽然KVS存储器14可以具有多个存储器区域,但是,散列表区域14A的大小大于可以通过由散列生成器16所生成的散列值(固定长度比特数据)来表达的大小。散列表区域14A可以被分成能够存储键的实际地址的区域和能够存储值的实际地址的区域。散列表区域14A的存储器容量不是固定的,而是可以根据基于键-值存储的请求而变化(增大或缩小)的。实际数据区域14B也存储数据。
存储器控制器13解释从主机系统100接收到的KVS指令,并对于KVS存储器14和散列生成器16执行下面将描述的操作。
假设键“动物”还不存在于KVS存储器14中。当存储器控制器13按顺序接收到指令“PUT(动物,狗)”和“PUT(动物,猫)”时,散列生成器16生成对应于“动物”、“狗”以及“猫”的散列值。假设这些散列值是按顺序具有固定长度158、98,以及188的比特字符串。
在此状态下,通过检查对应于散列表区域14A中的散列值的地址的内容,来确定键“动物”是否已经被存储。由于该键还不存在(值是0),用于存储这些实际数据的区域(1020,1055,以及1090)被固定,因此,这些区域的开始地址存储在散列表区域14A的键区域。实际数据“动物”、“狗”,以及“猫”存储在固定区域(1020,1055,以及1090)。
另外,为将键“动物”与数据集{狗,猫}相关联,用于各个元素的区域在实际数据区域14B中是固定的,并且开始地址(1100)被写入到对应于散列表区域14A中的“动物”的值区域。然后,通过排列元素 的开始地址而获取的数据(1055,1090)存储在实际数据区域14B中。
因此,在KVS存储器14中形成对应于键“动物”的数据集{狗,猫}。图1示出了KVS存储器14的内部状态。
假设存储器控制器13然后接收到指令“GET(动物,NULL)”。在此情况下,从被作为散列表区域14A中的“动物”的散列值写入在地址(0158)处的值区域(1100)中的内容(元素的实际数据的开始地址)读出实际数据。即,{狗,猫}被输出到主机系统100。
如果指令是GET(动物,狗),则存储器控制器13不输出任何元素,但是,只有在有匹配作为第二自变量的“狗”的元素情况下才向主机系统100输出“狗”或TRUE。如果指令是GET(动物,狮子),则没有匹配元素,如此,存储器控制器13向主机系统100输出NULL或FALSE。
此外,如果存储器控制器13接收到指令“DELETE(动物,狗)”,则从对应于“动物”的数据集中删除“狗”。更具体而言,检查从地址(1100)开始的元素,除“狗”之外的其余部分(1090)被作为值写入。可另选地,还可以按顺序在新固定在实际数据区域14B中的存储器区域中写入除“狗”之外的元素,最后在散列表区域14A中重写“动物”的值区域,从而释放原始地址(1100)。
请注意,如果当执行DELETE时元素“狗”本身不属于除“动物”之外的任何集合,则有时执行释放元素“狗”所使用的存储器的操作(垃圾收集)。
如果指令是GET(动物,NULL),则{猫}被返回到主机系统100。如果指令是DELETE(动物,猫),则释放散列表区域14A中的“动物”的键区域以及值区域,并且对应于键“动物”的数据集消失。即,如果指令是GET(动物,NULL),则空集(NULL)被返回到主机系统100。
除上文所提及的方法之外,还有多种实现KVS存储器的配置的方法。作为实际的示例,下面将说明通过使用内容可寻址存储器(CAM)在图1所示出的配置中形成散列表区域14A的方法。
图2是示出了该实施例中所使用的KVS存储器的第二配置示例 的视图。
此配置示例包括CAM-RAM142作为KVS存储器,以及解释从主机系统100输入的KVS指令并控制CAM-RAM142及其他模块的存储器控制器13。
CAM-RAM142包括CAM单元142A作为表区域,以及RAM(随机存取存储器)单元142B作为数据区域。诸如DRAM或NAND闪速存储器之类的通用存储器可以被用作RAM单元142B。虽然有若干种类型的内容可寻址存储器(CAM单元),但是,在CAM单元142A中,此示例采用除使用地址进行正常读和写之外,如果CAM包含输入数据(键)则返回定长数据(值)的CAM。即,CAM单元142A具有同时并行地将输入数据(键)与所有存储的数据进行比较以确定输入数据是否匹配每一存储的数据,并输出匹配输入数据的存储的数据的值的功能。
CAM-RAM是其中内容可寻址存储器(CAM)输出地址并且由某地址访问的RAM输出数据的系统。在CAM-RAM中,可以直接读出和写入键和值,无需使用任何散列值。当与图1所示出的配置示例相比时,这消除了散列生成器16的必要性。
现在将说明第二配置示例中的KVS指令的操作。
假设键“动物”、“狗”,以及“猫”中一个也不存在于CAM单元142A中。当按顺序接收到指令“PUT(动物,狗)”和“PUT(动物,猫)”时,存储器控制器13检查键是否已经存储在CAM单元142A中。由于这些键一个也不存在,因此,这些键存储在CAM单元142A中。然后,CAM单元中的元素(“狗”和“猫”)的值(在此示例中,1055和1090作为开始地址)通过将存储器区域固定到RAM单元142B中而被存储为集合。另外,此集合的开始地址(1100)被储存为CAM单元142A的键(“动物”)的值。
虽然上文所提及的集合也可以存储在CAM单元中,但是,优选地使用如上文所描述的方法,因为CAM的每比特的成本一般高于RAM的每比特成本。图2示出了CAM-RAM142的内部状态。
假设存储器控制器13然后接收到指令“GET(动物,NULL)”,可以通过将CAM单元142A中的“动物”(键)的值1100视为RAM单元142B中的地址,读出集合{1055,1090},并通过将集合{1055,1090}视为CAM单元142A中的地址而获取的键区域,即,{狗,猫},输出到主机系统100。
如果指令是GET(动物,狗),则存储器控制器13不输出任何元素,而是,只有在有匹配作为第二自变量的“狗”的元素的情况下才向主机系统100输出“狗”或TRUE。如果指令是GET(动物,狮子),则没有匹配元素,因此,存储器控制器13向主机系统100输出NULL或FALSE。
此外,如果存储器控制器13接收到指令“DELETE(动物,狗)”,则从对应于“动物”的数据集中删除“狗”。更具体而言,检查从地址(1100)开始的元素,除“狗”之外的其余部分(1090)被作为值写入。可另选地,还可以按顺序在新固定在RAM单元中的存储器区域中写入除“狗”之外的元素,最后在CAM单元142A中重写“动物”的值区域,从而释放原始地址(1100)。
请注意,如果当执行DELETE时元素“狗”本身不属于除“动物”之外的任何集合,则有时执行释放元素“狗”所使用的存储器的操作(垃圾收集)。
如果指令是GET(动物,NULL),则{猫}被返回到主机系统100。如果指令是DELETE(动物,猫),则释放CAM单元142A中的“动物”的键区域以及值区域,并且对应于键“动物”的数据集消失。即,如果指令是GET(动物,NULL),则空集(NULL)被返回到主机系统100。
[第一实施例]
[1]硬件配置
首先,将说明第一实施例的存储器系统的硬件配置。
图3是示出了第一实施例的存储器系统的硬件配置的框图。
如图3所示,存储器系统包括CPU 11、主存储器12、存储器控制器13,以及KVS存储器14。CPU 11、主存储器12,以及存储器控 制器13通过总线15连接。
CPU 11控制主存储器12、存储器控制器13,以及KVS存储器14,并执行集合操作(稍后所描述的)。存储器控制器13控制KVS存储器14及其他存储器(未示出)。存储器控制器13包括具有直接存储器访问(DMA)功能的电路。当使用DMA功能时,存储器控制器13和主存储器12之间的数据传输可以直接被控制,而无需CPU 11。
KVS存储器14包含如图1或2所示的数据区域。KVS存储器14的配置和操作与参考图1或2所说明的那些相同,将省略对其重复的说明。
图4示出了主存储器12中的数据区域的配置示例。CPU 11和主存储器12构成具有键-值存储(KVS)的存储器。例如,当CPU 11具有产生散列值的函数时,主存储器12包括如图4所示的散列表区域12A和实际数据区域12B。此外,主存储器12作为主存储器设备存储数据和指令代码。
[2]集合操作
接下来,将说明第一实施例的存储器系统中的集合操作。
假设两个数据集“动物={狗,金枪鱼,猫}”和“鱼={鲷鱼,金枪鱼,鲑鱼}”被存储在KVS存储器14中。下面将描述对AND操作、OR操作,以及NOT操作的处理。
(1)AND操作
图5是示出了第一实施例中的对AND操作的处理的流程图。
作为实际的示例,将说明对操作“动物AND鱼”的处理。首先,CPU 11通过存储器控制器13向KVS存储器14发出指令“GET(动物,NULL)”(步骤S1)。随后,CPU 11促使主存储器12以与上文所描述的KVS指令的操作的相同的方式(由软件处理散列函数等等),响应于指令“GET(动物,NULL)”,将从KVS存储器14输出的数据集存储为集合“答案”。即,CPU 11向主存储器12发出指令“PUT(答案,狗)”、“PUT(答案,金枪鱼)”,以及“PUT(答案,猫)”。因此,主存储器12存储集合“答案={狗,金枪鱼,猫}”(步骤S2)。如此,主存储 器12充当具有键-值数据的存储器。即,主存储器12作为键的“答案”和作为值的{狗,金枪鱼,猫}的对。
然后,CPU 11检查主存储器12中的集合“答案”中的每一元素是否存在于KVS存储器14中的集合“鱼”中。首先,CPU 11向KVS存储器14发出指令“GET(鱼,狗)”(步骤S3)。由于返回值是FALSE,因此,CPU 11删除主存储器12中的集合“答案”中的元素“狗”。即,CPU 11向主存储器12发出指令“DELETE(答案,狗)”(步骤S4)。
随后,CPU 11确定是否完成对主存储器12中的集合“答案”中的所有元素的处理(步骤S5)。由于还未完全处理完集合“答案”中的所有元素,因此,CPU 11返回到步骤S3,并从步骤S3重复该处理。
CPU 11搜索KVS存储器14中的集合“鱼”以查找是否有“金枪鱼”。即,CPU 11向KVS存储器14发出指令“GET(鱼,金枪鱼)”(步骤S3)。由于返回值是TRUE,因此,CPU 11前进到下一步骤。
CPU 11对于“猫”执行相同处理,即,搜索KVS存储器14中的集合“鱼”以查找是否有“猫”。即,CPU 11向KVS存储器14发出指令“GET(鱼,猫)”(步骤S3)。由于返回值是FALSE,因此,CPU 11删除主存储器12中的集合“答案”中的元素“猫”。即,CPU 11向主存储器12发出指令“DELETE(答案,猫)”(步骤S4)。
当在步骤S5中完成对集合“答案”中的所有元素的处理时,主存储器12中的集合“答案”变为“答案={金枪鱼}”,这是AND操作的解(步骤S6)。
请注意,也可以通过准备名称不同于“答案”的解集合来同时执行多个AND操作。
(2)OR操作
图6是示出了第一实施例中的对OR操作的处理的流程图。
作为实际的示例,将说明对操作“动物OR鱼”的处理。首先,CPU 11通过存储器控制器13向KVS存储器14发出指令“GET(动物,NULL)”(步骤S11)。随后,CPU 11促使主存储器12响应于指令“GET(动物,NULL)”将从KVS存储器14输出的数据集存储为集合“答 案”。即,CPU11向主存储器12发出指令“PUT(答案,狗)”、“PUT(答案,金枪鱼)”,以及“PUT(答案,猫)”。因此,主存储器12存储集合“答案={狗,金枪鱼,猫}”(步骤S12)。如此,主存储器12充当具有键-值数据的存储器。即,主存储器12存储作为键的“答案”和作为值的{狗,金枪鱼,猫}的对。
然后,CPU11检查KVS存储器14中的集合“鱼”中的每一元素是否存在于主存储器12中的集合“答案”中。首先,CPU11向主存储器12发出指令“GET(答案,鲷鱼)”(步骤S13)。由于返回值是FALSE,因此,CPU11将“鲷鱼”放入主存储器12中的集合“答案”中。即,CPU11向主存储器12发出指令“PUT(答案,鲷鱼)”(步骤S14)。
随后,CPU11确定是否完成对KVS存储器14中的集合“鱼”中的所有元素的处理(步骤S15)。由于还未完全处理完集合“鱼”中的所有元素,因此,CPU11返回到步骤S13,并从步骤S13重复该处理。
CPU11检查KVS存储器14中的集合“鱼”中的“金枪鱼”是否存在于主存储器12中的集合“答案”中。即,CPU11向主存储器12发出指令“GET(答案,金枪鱼)”(步骤S13)。由于返回值是TRUE,因此,CPU11前进到下一步骤。
CPU11对于“鲑鱼”执行相同处理,即,检查集合“鱼”中的“鲑鱼”是否存在于主存储器12中的集合“答案”中。即,CPU11向主存储器12发出指令“GET(答案,鲑鱼)”(步骤S13)。由于返回值是FALSE,因此,CPU11将“鲑鱼”放入主存储器12中的集合“答案”中。即,CPU11向主存储器12发出指令“PUT(答案,鲑鱼)”(步骤S14)。
当在步骤S15中完成对集合“鱼”中的所有元素的处理时,主存储器12中的集合“答案”变为“答案={狗,金枪鱼,猫,鲷鱼,鲑鱼}”,这是OR操作的解(步骤S16)。
请注意,也可以通过准备名称不同于“答案”的解集合来同时执行多个OR操作。
(3)NOT操作
图7是示出了第一实施例中的对NOT操作的处理的流程图。
作为实际的示例,将说明对操作“动物NOT鱼”的处理。首先,CPU 11通过存储器控制器13向KVS存储器14发出指令“GET(动物,NULL)”(步骤S21)。随后,CPU 11促使主存储器12响应于指令“GET(动物,NULL)”将从KVS存储器14输出的数据集存储为集合“答案”。即,CPU 11向主存储器12发出指令“PUT(答案,狗)”、“PUT(答案,金枪鱼)”,以及“PUT(答案,猫)”。因此,主存储器12存储集合“答案={狗,金枪鱼,猫}”(步骤S22)。如此,主存储器12充当具有键-值数据的存储器。即,主存储器12存储作为键的“答案”和作为值的{狗,金枪鱼,猫}的对。
然后,CPU 11从主存储器12中的集合“答案”中删除KVS存储器14中的集合“鱼”中的每一元素。首先,CPU 11向主存储器12发出指令“DELETE(答案,鲷鱼)”(步骤S23)。
随后,CPU 11确定是否完成对KVS存储器14中的集合“鱼”中的所有元素的处理(步骤S24)。由于还未完全处理完集合“鱼”中的所有元素,因此,CPU 11返回到步骤S23,并从步骤S23重复该处理。
类似地,CPU 11从主存储器12中的集合“答案”中删除KVS存储器14中的集合“鱼”中的“金枪鱼”和“鲑鱼”(步骤S23)。
当在步骤S24中完成对集合“鱼”中的所有元素的处理时,主存储器12中的集合“答案”变为“答案={狗,猫}”,这是NOT操作的解(步骤S25)。
请注意,也可以通过准备名称不同于“答案”的解集合来同时执行多个NOT操作。
还应注意,上文所描述的由CPU 11执行的全部工作可以由存储器控制器13的直接存储器访问(DMA)功能来执行。当存储器控制器13的DMA功能执行由CPU 11执行的全部工作时,上文所描述的集合操作可以被执行,而不会对CPU 11施加任何负载。
[3]第一修改方案
图8是示出了根据第一实施例的第一修改方案的存储器系统的硬件配置的框图。
如图8所示,第一修改方案具有包括图3所示出的第一实施例的存储器系统中的散列生成器16的配置。散列生成器16具有将具有任意长度的数据转换为具有固定长度的比特串的所谓的散列函数。在此修改方案中,散列生成器16响应于输入数据(键)来生成其中存储了键-值数据的地址。
图8所示出的KVS存储器14具有与图1所示出的KVS存储器14的配置相同的配置。此外,主存储器12也具有与图4所示出的主存储器12的配置相同的配置。因此,在此修改方案中,将省略对图8所示出的KVS存储器14和主存储器12的配置和操作的详细说明。
对第一修改方案中的集合操作的处理与第一实施例中的相同。由于第一修改方案包括散列生成器16,因此,当执行集合操作时,可以降低CPU 11上的负载。配置的其余部分以及效果与第一实施例的相同。
[4]第二修改方案
图9是示出了根据第一实施例的第二修改方案的存储器系统的硬件配置的框图。
如图9所示,第二修改方案包括散列生成器16和DRAM 141作为图3所示出的第一实施例的存储器系统中的KVS存储器。第二修改方案还包括NAND闪速存储器17作为连接到存储器控制器13的存储器设备。
图9所示出的DRAM 141具有与图1所示出的KVS存储器14的配置相同的配置。此外,主存储器12也具有与图4所示出的主存储器12的配置相同的配置。因此,在此修改方案中,将省略对图9所示出的DRAM 141和主存储器12的配置和操作的详细说明。
第二修改方案使用DRAM 141作为第一实施例中的KVS存储器14,而对第二修改方案中的集合操作的处理与第一实施例中的相同。另外,第二修改方案包括散列生成器16,如此,当执行集合操作时,可以降低CPU 11上的负载。配置的其余部分以及效果与第一实施例的相同。
[5]第三修改方案
图10是示出了根据第一实施例的第三修改方案的存储器系统的硬件配置的框图。
如图10所示,第三修改方案包括CAM-RAM142作为图3所示出的第一实施例的存储器系统中的KVS存储器。第三修改方案还包括NAND闪速存储器17作为连接到存储器控制器13的存储器设备。
图10所示出的CAM-RAM142具有与图2所示出的CAM-RAM142的配置相同的配置。此外,主存储器12也具有与图4所示出的主存储器12的配置相同的配置。因此,在此修改方案中,将省略对图10所示出的CAM-RAM142和主存储器12的配置和操作的详细说明。
第三修改方案使用CAM-RAM142作为第一实施例中的KVS存储器14,而对第三修改方案中的集合操作的处理与第一实施例中的相同。另外,第三修改方案包括CAM-RAM142,如此,当执行集合操作时,可以降低CPU11上的负载。配置的其余部分以及效果与第一实施例的相同。
[第二实施例]
[1]硬件配置
将说明第二实施例的存储器系统的硬件配置。
图11是示出了第二实施例的存储器系统的硬件配置的框图。
如图11所示,存储器系统包括CPU11、主存储器12、存储器控制器13,第一KVS存储器24,以及第二KVS存储器34。CPU11、主存储器12,以及存储器控制器13通过总线15连接。
CPU11通过控制主存储器12、存储器控制器13,以及第一和第二KVS存储器24以及34来执行集合操作(稍后描述)。存储器控制器13控制KVS存储器24及34及其他存储器(未示出)。存储器控制器13包括具有直接存储器访问(DMA)功能的电路。当使用DMA功能时,存储器控制器13和主存储器12之间的数据传输可以直接被控制,而无需CPU11。
第一以及第二KVS存储器24以及34各自都包含如图1或2所 示的数据区域。KVS存储器24和34的配置和操作与参考图1或2所说明的那些相同,将省略对其重复的说明。
[2]集合操作
接下来,将说明第二实施例的存储器系统中的集合操作。
对第二实施例中的集合操作的处理是通过在前面所描述的第一实施例中的集合操作的处理中将CPU 11、KVS存储器14,以及主存储器12分别替换为存储器控制器13、第一KVS存储器24,以及第二KVS存储器34来实现的。
假设两个数据集“动物={狗,金枪鱼,猫}”和“鱼={鲷鱼,金枪鱼,鲑鱼}”被存储在第一KVS存储器24中。下面将参考图5、6、7来描述对AND操作、OR操作,以及NOT操作的处理。
(1)AND操作
作为实际的示例,将说明对操作“动物AND鱼”的处理。首先,存储器控制器13向第一KVS存储器24发出指令“GET(动物,NULL)”(步骤S1)。随后,存储器控制器13促使第二KVS存储器34响应于指令“GET(动物,NULL)”将从第一KVS存储器24输出的数据集存储为集合“答案”。即,第二KVS存储器34存储集合“答案={狗,金枪鱼,猫}”(步骤S2)。
然后,存储器控制器13检查第二KVS存储器34中的集合“答案”中的每一元素是否存在于第一KVS存储器24中的集合“鱼”中。首先,存储器控制器13向第一KVS存储器24发出指令“GET(鱼,狗)”(步骤S3)。由于返回值是FALSE,因此,存储器控制器13删除第二KVS存储器34中的集合“答案”中的元素“狗”(步骤S4)。
随后,存储器控制器13确定是否完成对第二KVS存储器34中的集合“答案”中的所有元素的处理(步骤S5)。由于还未完全处理完集合“答案”中的所有元素,因此,存储器控制器13返回到步骤S3,并从步骤S3重复该处理。
存储器控制器13搜索第一KVS存储器24中的集合“鱼”以查找“金枪鱼”。即,存储器控制器13向第一KVS存储器24发出指令 “GET(鱼,金枪鱼)”(步骤S3)。由于返回值是TRUE,因此,存储器控制器13前进到下一步骤。
存储器控制器13对于“猫”执行相同处理,即,搜索第一KVS存储器24中的集合“鱼”以查找“猫”。即,存储器控制器13向第一KVS存储器24发出指令“GET(鱼,猫)”(步骤S3)。由于返回值是FALSE,因此,存储器控制器13删除第二KVS存储器34中的集合“答案”中的元素“猫”(步骤S4)。
当在步骤S5中完成对集合“答案”中的所有元素的处理时,第二KVS存储器34中的集合“答案”变为“答案={金枪鱼}”,这是AND操作的解(步骤S6)。
(2)OR操作
作为实际的示例,将说明对操作“动物OR鱼”的处理。首先,存储器控制器13向第一KVS存储器24发出指令“GET(动物,NULL)”(步骤S11)。随后,存储器控制器13促使第二KVS存储器34响应于指令“GET(动物,NULL)”将从第一KVS存储器24输出的数据集存储为集合“答案”。即,第二KVS存储器34存储集合“答案={狗,金枪鱼,猫}”(步骤S12)。
然后,存储器控制器13检查第一KVS存储器24中的集合“鱼”中的每一元素是否存在于第二KVS存储器34中的集合“答案”。首先,存储器控制器13向第二KVS存储器34发出指令“GET(答案,鲷鱼)”(步骤S13)。由于返回值是FALSE,因此,存储器控制器13将“鲷鱼”放入第二KVS存储器34中的集合“答案”中(步骤S14)。
随后,存储器控制器13确定是否完成对第一KVS存储器24中的集合“鱼”中的所有元素的处理(步骤S15)。由于还未完全处理完集合“鱼”中的所有元素,因此,存储器控制器13返回到步骤S13,并从步骤S13重复该处理。
存储器控制器13检查第一KVS存储器24中的集合“鱼”中的“金枪鱼”是否存在于第二KVS存储器34中的集合“答案”中。即,存储器控制器13向第二KVS存储器34发出指令“GET(答案,金枪鱼)”(步 骤S13)。由于返回值是TRUE,因此,存储器控制器13前进到下一步骤。
存储器控制器13对于“鲑鱼”执行相同处理,即,检查集合“鱼”中的“鲑鱼”是否存在于第二KVS存储器34中的集合“答案”中。即,存储器控制器13向第二KVS存储器34发出指令“GET(答案,鲑鱼)”(步骤S13)。由于返回值是FALSE,因此,存储器控制器13将“鲑鱼”放入第二KVS存储器34中的集合“答案”中(步骤S14)。
当在步骤S15中完成对集合“鱼”中的所有元素的处理时,第二KVS存储器34中的集合“答案”变为“答案={狗,金枪鱼,猫,鲷鱼,鲑鱼}”,这是OR操作的解(步骤S16)。
(3)NOT操作
作为实际的示例,将说明对操作“动物NOT鱼”的处理。首先,存储器控制器13向第一KVS存储器24发出指令“GET(动物,NULL)”(步骤S21)。随后,存储器控制器13促使第二KVS存储器34响应于指令“GET(动物,NULL)”将从第一KVS存储器24输出的数据集存储为集合“答案”。即,第二KVS存储器34存储集合“答案={狗,金枪鱼,猫}”(步骤S22)。
然后,存储器控制器13从第二KVS存储器34中的集合“答案”中删除第一KVS存储器24中的集合“鱼”中的每一元素。首先,存储器控制器13向第二KVS存储器34发出指令“DELETE(答案,鲷鱼)”(步骤S23)。
随后,存储器控制器13确定是否完成对第一KVS存储器24中的集合“鱼”中的所有元素的处理(步骤S24)。由于还未完全处理完集合“鱼”中的所有元素,因此,存储器控制器13返回到步骤S23,并从步骤S23重复该处理。
类似地,存储器控制器13从第二KVS存储器34中的集合“答案”删除第一KVS存储器24中的集合“鱼”中的“金枪鱼”和“鲑鱼”(步骤S23)。
当在步骤S24中完成对集合“鱼”中的所有元素的处理时,第二 KVS存储器34中的集合“答案”变为“答案={狗,猫}”,这是NOT操作的解(步骤S25)。
还应注意,上文所描述的由存储器控制器13执行的全部工作可以由存储器控制器13的直接存储器访问(DMA)功能来执行。当存储器控制器13的DMA功能执行由存储器控制器13执行的全部工作时,上文所描述的集合操作可以被执行,而不会对存储器控制器13施加任何负载。
[3]第一修改方案
图12是示出了根据第二实施例的第一修改方案的存储器系统的硬件配置的框图。
如图12所示,在图11所示出的第二实施例的存储器系统中,第一修改方案包括散列生成器16、以及DRAM241和CAM-RAM NAND闪速存储器341作为KVS存储器。
图12所示出的DRAM241具有与图1所示出的KVS存储器14的配置相同的配置。此外,CAM-RAM NAND闪速存储器341具有与图2所示出的CAM-RAM142的配置相同的配置。因此,在此修改方案中,将省略对图12所示出的DRAM241和CAM-RAM NAND闪速存储器341的配置和操作的详细说明。
对第一修改方案中的集合操作的处理与在第二实施例中的相同。另外,第一修改方案包括散列生成器16和CAM-RAM NAND闪速存储器341,如此,当执行集合操作时,可以降低CPU11上的负载。配置的其余部分以及效果与第二实施例的相同。
[4]第二修改方案
图13是示出了根据第二实施例的第二修改方案的存储器系统的硬件配置的框图。
如图13所示,第二修改方案在图11所示出的第二实施例的存储器系统中包括CAM-RAM242和CAM-RAM NAND闪速存储器341作为KVS存储器。
图13所示出的CAM-RAM242和CAM-RAM NAND闪速存储 器341各自都具有与图2所示出的CAM-RAM142的配置相同的配置。因此,在此修改方案中,将省略对图13所示出的CAM-RAM242和CAM-RAM NAND闪速存储器341的配置和操作的详细说明。
对第二修改方案中的集合操作的处理与第二实施例中的相同。另外,第二修改方案包括CAM-RAM242和CAM-RAM NAND闪速存储器341,如此,当执行集合操作时,可以降低CPU11上的负载。配置的其余部分以及效果与第二实施例的相同。
各实施例可以提供能够显著降低在全文搜索系统等中频繁发生的集合操作的系统负载,并以更高的速度执行集合操作的存储器系统。
尽管描述了某些实施例,但是,这些实施例只是作为示例来呈现的,而不限制本发明的范围。实际上,此处所描述的新颖的实施例可以以各种其他形式实施;此外,还可以在不偏离本发明的精神的情况下作出此处所描述的实施例形式的替换和变化。所附的权利要求以及它们的等效内容旨在覆盖这样的形式或修改方案,都将在本发明的范围和精神内。

Claims (11)

1.包括键-值存储的存储器系统,所述键-值存储包含键-值数据作为键和对应于所述键的值的对,其特征在于,所述存储器系统包括:
第一存储器,被配置成包含用于存储数据的数据区域以及包含所述键-值数据的表区域;
控制电路,被配置成通过寻址来执行对所述第一存储器的写入和读取,并执行基于所述键-值存储的请求;
第二存储器,被配置成根据来自所述控制电路的指令而存储所述键-值数据;以及
散列生成器,被配置成通过使用散列函数来将所述键转换为第一地址,
其中,所述控制电路通过使用存储在所述第一存储器中的键-值数据以及存储在所述第二存储器中的键-值数据来执行集合操作,
所述控制电路使用所述键和其对应的值执行集合操作,所述集合操作产生作为键的答案和作为值的集合操作的解的对,
所述表区域存储第一地址、键以及对应于所述键的值,所述键以及所述值被存储在所述第一地址处,第二地址被存储在所述值中,
所述值是通过引用所述数据区域中的由所述第二地址指定的存储位置来获取的。
2.根据权利要求1所述的存储器系统,其特征在于,所述第一存储器包括DRAM。
3.根据权利要求1所述的存储器系统,其特征在于,所述第一存储器包括:
内容可寻址存储器,被配置成响应于所述键的输入来比较所述键与存储在所述第一存储器中的数据,并输出存储匹配所述键的数据的第三地址;以及
RAM,被配置成经历通过指定所述第三地址而进行的写入和读取。
4.根据权利要求1所述的存储器系统,其特征在于,所述第二存储器包括由所述控制电路所控制的主存储器。
5.根据权利要求4所述的存储器系统,其特征在于,所述主存储器包括DRAM。
6.根据权利要求1所述的存储器系统,其特征在于,所述第二存储器包括:
内容可寻址存储器,被配置成响应于所述键的输入来比较所述键与存储在所述第二存储器中的数据,并输出存储匹配所述键的数据的第三地址;以及
RAM,被配置成经历通过指定所述第三地址而进行的所述写入和读取。
7.根据权利要求6所述的存储器系统,其特征在于,所述第二存储器包括NAND闪速存储器。
8.根据权利要求1所述的存储器系统,其特征在于,还包括连接在所述控制电路和所述第一存储器之间的存储器控制器,
其中,所述存储器控制器包括直接存储器访问(DMA)电路,所述直接存储器访问(DMA)电路在无需所述控制电路的情况下控制所述第二存储器。
9.根据权利要求1所述的存储器系统,其特征在于,所述控制电路根据基于所述键-值存储的请求而改变在所述第一存储器中形成的所述表区域的存储容量。
10.根据权利要求1所述的存储器系统,其特征在于,所述控制电路包括通过总线连接到所述第一存储器和所述第二存储器的CPU。
11.根据权利要求1所述的存储器系统,其特征在于,由所述控制电路所执行的所述集合操作包括AND、OR以及NOT中的至少一个。
CN201210279821.4A 2011-08-08 2012-08-08 包括键-值存储的存储器系统 Active CN103106158B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510449201.4A CN105117355B (zh) 2011-08-08 2012-08-08 存储器、存储器系统及其数据处理方法

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2011-173358 2011-08-08
JP2011173358A JP5762878B2 (ja) 2011-08-08 2011-08-08 key−valueストアを有するメモリシステム

Related Child Applications (1)

Application Number Title Priority Date Filing Date
CN201510449201.4A Division CN105117355B (zh) 2011-08-08 2012-08-08 存储器、存储器系统及其数据处理方法

Publications (2)

Publication Number Publication Date
CN103106158A CN103106158A (zh) 2013-05-15
CN103106158B true CN103106158B (zh) 2016-10-26

Family

ID=47678263

Family Applications (2)

Application Number Title Priority Date Filing Date
CN201510449201.4A Active CN105117355B (zh) 2011-08-08 2012-08-08 存储器、存储器系统及其数据处理方法
CN201210279821.4A Active CN103106158B (zh) 2011-08-08 2012-08-08 包括键-值存储的存储器系统

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CN201510449201.4A Active CN105117355B (zh) 2011-08-08 2012-08-08 存储器、存储器系统及其数据处理方法

Country Status (4)

Country Link
US (1) US9262500B2 (zh)
JP (1) JP5762878B2 (zh)
KR (1) KR101397264B1 (zh)
CN (2) CN105117355B (zh)

Families Citing this family (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5631938B2 (ja) 2012-07-19 2014-11-26 株式会社東芝 半導体記憶装置
US8634248B1 (en) 2012-11-09 2014-01-21 Sandisk Technologies Inc. On-device data analytics using NAND flash based intelligent memory
US8780633B2 (en) 2012-11-09 2014-07-15 SanDisk Technologies, Inc. De-duplication system using NAND flash based content addressable memory
US8780635B2 (en) 2012-11-09 2014-07-15 Sandisk Technologies Inc. Use of bloom filter and improved program algorithm for increased data protection in CAM NAND memory
US8817541B2 (en) 2012-11-09 2014-08-26 Sandisk Technologies Inc. Data search using bloom filters and NAND based content addressable memory
US8792279B2 (en) 2012-11-09 2014-07-29 Sandisk Technologies Inc. Architectures for data analytics using computational NAND memory
US8780634B2 (en) 2012-11-09 2014-07-15 Sandisk Technologies Inc. CAM NAND with OR function and full chip search capability
US10127150B2 (en) 2012-11-09 2018-11-13 Sandisk Technologies Llc Key value addressed storage drive using NAND flash based content addressable memory
US8811085B2 (en) 2012-11-09 2014-08-19 Sandisk Technologies Inc. On-device data analytics using NAND flash based intelligent memory
US8773909B2 (en) 2012-11-09 2014-07-08 Sandisk Technologies Inc. CAM NAND with or function and full chip search capability
US8780632B2 (en) 2012-11-09 2014-07-15 Sandisk Technologies Inc. De-duplication techniques using NAND flash based content addressable memory
US9075424B2 (en) 2013-03-06 2015-07-07 Sandisk Technologies Inc. Compensation scheme to improve the stability of the operational amplifiers
US9336334B2 (en) * 2013-05-17 2016-05-10 Bigobject, Inc. Key-value pairs data processing apparatus and method
WO2015097774A1 (ja) * 2013-12-25 2015-07-02 株式会社日立製作所 計算機システム及びデータ管理方法
US11301457B2 (en) * 2015-06-29 2022-04-12 Microsoft Technology Licensing, Llc Transactional database layer above a distributed key/value store
US20170185403A1 (en) * 2015-12-23 2017-06-29 Intel Corporation Hardware content-associative data structure for acceleration of set operations
CN107209644B (zh) * 2015-12-28 2020-04-28 华为技术有限公司 一种数据处理方法以及NVMe存储器
US20170192791A1 (en) * 2015-12-30 2017-07-06 Elmoustapha Ould-Ahmed-Vall Counter to Monitor Address Conflicts
CN107086908B (zh) * 2016-02-15 2021-07-06 阿里巴巴集团控股有限公司 一种量子密钥分发方法及装置
DE102016206109A1 (de) * 2016-04-13 2017-10-19 Robert Bosch Gmbh Speicherdirektzugriffssteuereinrichtung für mindestens eine einen Arbeitsspeicher aufweisende Recheneinheit
CN106446272B (zh) * 2016-10-20 2019-07-09 北京百度网讯科技有限公司 用于发送数据的方法和装置
CN112988750A (zh) * 2018-03-14 2021-06-18 北京忆芯科技有限公司 基于结构化信息的kv存储的键与值的生成方法及装置
US10922011B2 (en) 2018-04-12 2021-02-16 Samsung Electronics Co., Ltd. Controllers configured to perform secure deletion, key-value storage devices including said controllers, and methods of operation thereof

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000123014A (ja) * 1998-10-13 2000-04-28 Ricoh Co Ltd データ検索システムおよび方法
JP4167359B2 (ja) 1999-09-30 2008-10-15 株式会社東芝 データ管理システム及びデータ管理方法
US6434662B1 (en) * 1999-11-02 2002-08-13 Juniper Networks, Inc. System and method for searching an associative memory utilizing first and second hash functions
GB0200747D0 (en) * 2002-01-14 2002-02-27 Mitel Knowledge Corp Hardware-assisted tuple space
US7058639B1 (en) * 2002-04-08 2006-06-06 Oracle International Corporation Use of dynamic multi-level hash table for managing hierarchically structured information
US7116664B2 (en) * 2002-05-13 2006-10-03 International Business Machines Corporation Lookups by collisionless direct tables and CAMs
ES2297178T3 (es) 2002-07-23 2008-05-01 Samsung Electronics Co., Ltd. Estructura de indice de metadatos, metodo para suministrar indices de metadatos, metodo de busqueda de metadatos y dispositivo que utiliza dichos indices de metadatos.
US7017005B2 (en) * 2002-08-28 2006-03-21 Hywire Ltd. Implementation of a content addressable memory using a RAM-cell structure
KR100789406B1 (ko) 2006-11-03 2007-12-28 삼성전자주식회사 플래시 메모리 시스템 및 그것의 가비지 컬렉션 방법
TWI417722B (zh) * 2007-01-26 2013-12-01 Hicamp Systems Inc 階層式不可改變的內容可定址的記憶體處理器
KR101123335B1 (ko) * 2009-01-15 2012-03-28 연세대학교 산학협력단 해시 인덱스 구성 방법과 그 장치, 및 상기 장치를 구비하는 데이터 저장 장치, 및 상기 방법을 구현하는 프로그램이 기록된 기록매체
US8397051B2 (en) * 2009-02-23 2013-03-12 Autonomy, Inc. Hybrid hash tables
US8635402B2 (en) 2009-03-31 2014-01-21 Nec Corporation Storage system and storage access method and program
JP4385387B1 (ja) 2009-07-02 2009-12-16 修平 西山 属性付きキー・バリュー・ストアによるデータベース・システム
US20110153582A1 (en) * 2009-12-22 2011-06-23 Daniel Buchmann Handling of classification data by a search engine
JP2011215835A (ja) 2010-03-31 2011-10-27 Toshiba Corp 全文検索機能を備えるストレージ装置
US20110276744A1 (en) * 2010-05-05 2011-11-10 Microsoft Corporation Flash memory cache including for use with persistent key-value store
CN103080910B (zh) * 2010-09-09 2016-06-01 日本电气株式会社 存储系统
JP5238791B2 (ja) 2010-11-10 2013-07-17 株式会社東芝 転送機能を有するメモリノードを相互に接続したストレージ装置及びデータ処理方法

Also Published As

Publication number Publication date
CN105117355B (zh) 2019-04-05
KR101397264B1 (ko) 2014-05-20
JP5762878B2 (ja) 2015-08-12
US9262500B2 (en) 2016-02-16
CN103106158A (zh) 2013-05-15
KR20130018597A (ko) 2013-02-25
CN105117355A (zh) 2015-12-02
US20130042055A1 (en) 2013-02-14
JP2013037551A (ja) 2013-02-21

Similar Documents

Publication Publication Date Title
CN103106158B (zh) 包括键-值存储的存储器系统
CN103164490B (zh) 一种不固定长度数据的高效存储实现方法和装置
CN102591947B (zh) 用于数据去重复的快速且低ram占用的索引
KR102007650B1 (ko) 세그먼트 그룹을 고려하는 세그먼트 클리닝 장치 및 방법
CN107193494B (zh) 一种基于ssd和hdd混合存储系统的rdd持久化方法
CN103678571B (zh) 应用于单台多核处理器主机的多线程网络爬虫执行方法
US20100228914A1 (en) Data caching system and method for implementing large capacity cache
CN108345433B (zh) 用于最大化的可去重存储器的方法、存储器系统和产品
US20160117116A1 (en) Electronic device and a method for managing memory space thereof
CN112947856A (zh) 一种内存数据的管理方法、装置、计算机设备及存储介质
CN106416151A (zh) 用于分组处理的基于多表哈希查找
US10025706B2 (en) Control device, storage device, and storage control method
CN109189994B (zh) 一种面向图计算应用的cam结构存储系统
CN107179883B (zh) 一种基于SSD和HDD的混合存储系统的Spark架构优化方法
CN114490443A (zh) 一种基于共享内存的golang进程内缓存方法
CN101441551B (zh) 计算机、外存储器以及处理外存储器中数据信息的方法
CN107590077B (zh) 一种Spark负载访存行为追踪方法及装置
CN112804003A (zh) 一种基于光模块通信的存储方法、系统及终端
CN108804571B (zh) 一种数据存储方法、装置以及设备
CN111752941A (zh) 一种数据存储、访问方法、装置、服务器及存储介质
KR20230117692A (ko) 하이브리드 데이터베이스 가속 장치, 시스템 및 방법
CN106293530B (zh) 一种数据写入方法和装置
JP5992577B2 (ja) メモリ、データ処理方法、及びメモリシステム
CN104572643B (zh) 搜索方法和搜索引擎
CN113688064A (zh) 一种在存储器中为数据分配存储地址的方法和设备

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
TR01 Transfer of patent right

Effective date of registration: 20170726

Address after: Tokyo, Japan

Patentee after: TOSHIBA MEMORY Corp.

Address before: Tokyo, Japan

Patentee before: Toshiba Corp.

TR01 Transfer of patent right
CP01 Change in the name or title of a patent holder

Address after: Tokyo

Patentee after: Kaixia Co.,Ltd.

Address before: Tokyo

Patentee before: TOSHIBA MEMORY Corp.

Address after: Tokyo

Patentee after: TOSHIBA MEMORY Corp.

Address before: Tokyo

Patentee before: Japanese businessman Panjaya Co.,Ltd.

CP01 Change in the name or title of a patent holder
TR01 Transfer of patent right

Effective date of registration: 20220222

Address after: Tokyo

Patentee after: Japanese businessman Panjaya Co.,Ltd.

Address before: Tokyo

Patentee before: TOSHIBA MEMORY Corp.

TR01 Transfer of patent right