JP2015181043A - Memory, data processing method and memory system - Google Patents

Memory, data processing method and memory system Download PDF

Info

Publication number
JP2015181043A
JP2015181043A JP2015116456A JP2015116456A JP2015181043A JP 2015181043 A JP2015181043 A JP 2015181043A JP 2015116456 A JP2015116456 A JP 2015116456A JP 2015116456 A JP2015116456 A JP 2015116456A JP 2015181043 A JP2015181043 A JP 2015181043A
Authority
JP
Japan
Prior art keywords
memory
key
value
kvs
control circuit
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.)
Granted
Application number
JP2015116456A
Other languages
Japanese (ja)
Other versions
JP5992577B2 (en
Inventor
敦寛 木下
Atsuhiro Kinoshita
敦寛 木下
孝生 丸亀
Takao Marugame
孝生 丸亀
光介 辰村
Kosuke Tatsumura
光介 辰村
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.)
Toshiba 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 JP2015116456A priority Critical patent/JP5992577B2/en
Publication of JP2015181043A publication Critical patent/JP2015181043A/en
Application granted granted Critical
Publication of JP5992577B2 publication Critical patent/JP5992577B2/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Abstract

PROBLEM TO BE SOLVED: To provide a memory system capable of significantly reducing a system load related to a set operation frequently occurring in a full-text search system or the like and further capable of performing the set operation at a high speed.SOLUTION: A memory comprises: a first memory (KVS memory 14) stored with data and a key and a value being a group of the key and the value corresponding to the key; a second memory stored with the key and the value; a control circuit (CPU 11) controlling the first memory and the second memory; and a memory controller 13 connected between the control circuit and the first memory. The memory controller has a direct memory access (DMA) circuit, and the direct memory access circuit controls the first memory and the second memory with bypass of the control circuit.

Description

本発明の実施形態は、ホストシステムによりアクセスされる、メモリ、データ処理方法、及びメモリシステムに関する。   Embodiments described herein relate generally to a memory, a data processing method, and a memory system accessed by a host system.

近年のメモリシステムを備えた一般のコンピュータシステムでは、多くのデータ操作、特に、データ集合を取り扱う操作が頻発している。例えば、全文検索システム等で、AとBの二つのキーワードを含むデータを探し出したいといった操作は、Aを含むデータの集合とBを含むデータの集合との積集合を求めることに他ならない。   In a general computer system equipped with a recent memory system, many data operations, particularly operations for handling a data set, frequently occur. For example, an operation of searching for data including two keywords A and B in a full-text search system or the like is nothing but obtaining a product set of a set of data including A and a set of data including B.

一般のコンピュータシステムにおいて、最も広く用いられているのは、データをアドレスによって管理するメモリシステムである。このようなデータの取り扱いだと、データとアドレスを1対1で管理することになり、先のようなデータ集合を扱うためには、一般に複雑なアルゴリズムに基づいたソフトウェア処理が必須となる。   In a general computer system, a memory system that manages data by address is the most widely used. When handling such data, data and addresses are managed on a one-to-one basis, and software processing based on a complicated algorithm is generally indispensable in order to handle a data set as described above.

一方で、データをアドレスではなく、その内容そのもので管理するメモリシステムも存在する。ところが、これらは特殊用途に用いられることはあっても、コストや既存システムとの互換性などの観点から、一般のコンピュータシステムに用いられることはまれであった。   On the other hand, there are memory systems that manage data not by address but by its contents. However, although they are used for special purposes, they are rarely used for general computer systems from the viewpoint of cost and compatibility with existing systems.

従来のコンピュータシステムでは、データ集合の演算を行おうとした場合、そのメモリシステム上の制約から、複雑なソフトウェア処理が必要となり、性能の劣化や取扱いにくさといった課題があった。   In a conventional computer system, when a data set operation is to be performed, complicated software processing is required due to restrictions on the memory system, and there are problems such as performance degradation and difficulty in handling.

特開2005−209214号公報JP 2005-209214 A 特許第4167359号Japanese Patent No. 4167359

全文検索システム等で多発する集合演算に係るシステム負荷を著しく低減でき、さらに集合演算を高速に行うことが可能なメモリ、データ処理方法、及びメモリシステムを提供する。   Provided are a memory, a data processing method, and a memory system that can remarkably reduce a system load related to a set operation that occurs frequently in a full-text search system or the like and that can perform a set operation at high speed.

一実施態様のメモリは、データと、keyと前記keyに対応するvalueが格納される第1のメモリと、前記keyと前記valueが格納される第2のメモリと、前記第1のメモリ及び前記第2のメモリを制御する制御回路と、前記制御回路と前記第1のメモリとの間に接続されたメモリコントローラとを具備する。前記メモリコントローラはダイレクトメモリアクセス(DMA)回路を有し、前記ダイレクトメモリアクセス回路は、前記制御回路を介さずに前記第1のメモリと前記第2のメモリを制御する。   The memory of an embodiment includes a data, a first memory storing a key and a value corresponding to the key, a second memory storing the key and the value, the first memory, and the A control circuit for controlling a second memory; and a memory controller connected between the control circuit and the first memory. The memory controller has a direct memory access (DMA) circuit, and the direct memory access circuit controls the first memory and the second memory without going through the control circuit.

実施形態に用いられるKVSメモリの第1構成例を示す図である。It is a figure which shows the 1st structural example of the KVS memory used for embodiment. 実施形態に用いられるKVSメモリの第2構成例を示す図である。It is a figure which shows the 2nd structural example of the KVS memory used for embodiment. 第1実施形態のメモリシステムのハードウェア構成を示すブロック図である。It is a block diagram which shows the hardware constitutions of the memory system of 1st Embodiment. 第1実施形態のメインメモリにおけるデータ領域の構成例を示す図である。It is a figure which shows the structural example of the data area in the main memory of 1st Embodiment. 第1実施形態におけるAND演算の動作を示すフローチャートである。It is a flowchart which shows the operation | movement of the AND operation in 1st Embodiment. 第1実施形態におけるOR演算の動作を示すフローチャートである。It is a flowchart which shows the operation | movement of OR operation in 1st Embodiment. 第1実施形態におけるNOT演算の動作を示すフローチャートである。It is a flowchart which shows the operation | movement of NOT calculation in 1st Embodiment. 第1実施形態における変形例1のメモリシステムのハードウェア構成を示すブロック図である。It is a block diagram which shows the hardware constitutions of the memory system of the modification 1 in 1st Embodiment. 第1実施形態における変形例2のメモリシステムのハードウェア構成を示すブロック図である。It is a block diagram which shows the hardware constitutions of the memory system of the modification 2 in 1st Embodiment. 第1実施形態における変形例3のメモリシステムのハードウェア構成を示すブロック図である。It is a block diagram which shows the hardware constitutions of the memory system of the modification 3 in 1st Embodiment. 第2実施形態のメモリシステムのハードウェア構成を示すブロック図である。It is a block diagram which shows the hardware constitutions of the memory system of 2nd Embodiment. 第2実施形態における変形例1のメモリシステムのハードウェア構成を示すブロック図である。It is a block diagram which shows the hardware constitutions of the memory system of the modification 1 in 2nd Embodiment. 第2実施形態における変形例2のメモリシステムのハードウェア構成を示すブロック図である。It is a block diagram which shows the hardware constitutions of the memory system of the modification 2 in 2nd Embodiment.

以下の説明において、同一の機能及び構成を有する構成要素については、同一符号を付し、重複説明は必要な場合にのみ行う。   In the following description, components having the same function and configuration are denoted by the same reference numerals, and redundant description will be given only when necessary.

本実施形態に係る、集合演算が可能なメモリシステム(検索メモリ)は、少なくとも1つのkey-valueストア機能(以下、KVSと記す)を有するメモリを備えている。KVSとは、キー(key)と値(value)の組を書き込み、キーを指定することで値を読み出せるデータベース管理方式のことを意味する。KVSでは、データはkeyとkeyに対応するvalueの組であるkey-value型データとして管理され、検索要求としてkeyが与えられると、それに対応付けられていたvalueを出力することが可能である。ここでは、このようなKVSを有するメモリを、以降、KVSメモリと記す。   A memory system (search memory) capable of a set operation according to the present embodiment includes a memory having at least one key-value store function (hereinafter referred to as KVS). KVS means a database management method in which a set of a key and a value is written and the value can be read by designating the key. In KVS, data is managed as key-value type data that is a set of key and value corresponding to key. When key is given as a search request, it is possible to output the value associated therewith. Here, a memory having such a KVS is hereinafter referred to as a KVS memory.

以下に、KVSメモリ及びその命令について詳しく説明する。   Hereinafter, the KVS memory and its instructions will be described in detail.

KVSメモリは通常のメモリアクセスの命令に加え、少なくともGET、PUT、DELETEなどのKVS命令を備えたメモリであり、各命令の意味は次の通りである。   The KVS memory is a memory provided with at least KVS instructions such as GET, PUT, and DELETE in addition to normal memory access instructions, and the meaning of each instruction is as follows.

(1)GET(key, value):要素(value)が指定されなかった(NULL)場合は、keyに対応するデータ集合を得る。要素(value)が指定された場合は、データ集合の中にvalueが存在したらvalueそのもの、あるいはTRUEを返す。データ集合の中にvalueが存在しなかったら、空集合(NULL)あるいはFALSEを返す。keyに対応するデータ集合が無い場合も、空集合(NULL)あるいはFALSEを返す。   (1) GET (key, value): If the element (value) is not specified (NULL), a data set corresponding to the key is obtained. When element (value) is specified, if value exists in the data set, value itself or TRUE is returned. If value does not exist in the data set, an empty set (NULL) or FALSE is returned. Even if there is no data set corresponding to key, an empty set (NULL) or FALSE is returned.

(2)PUT(key, value):keyに対応するデータ集合に要素(value)を追加する。要素がデータ集合中に既に存在する場合は何もしない。   (2) PUT (key, value): An element (value) is added to the data set corresponding to key. If the element already exists in the dataset, do nothing.

(3)DELETE(key, value):keyに対応するデータ集合から要素(value)を削除する。要素がデータ集合中に存在しなければ何もしない。   (3) DELETE (key, value): Deletes an element (value) from the data set corresponding to key. Does nothing if the element does not exist in the dataset.

以下に、KVSメモリの具体的な構成例と動作例を示す。
図1は、実施形態に用いられるKVSメモリの第1構成例を示す図である。
図示するように、KVSメモリ14には、例えば、メモリコントローラ13及びハッシュ生成器16が接続されている。さらに、メモリコントローラ13には、上位システム100が接続されている。ハッシュ生成器16は、任意長のデータを固定長のビット列に変換する、いわゆるハッシュ関数の機能を持つ。上位システム100は、例えば、中央演算処理装置(CPU)及びメインメモリ等を備えたホストシステムである。
Hereinafter, a specific configuration example and operation example of the KVS memory will be shown.
FIG. 1 is a diagram illustrating a first configuration example of a KVS memory used in the embodiment.
As shown in the figure, for example, a memory controller 13 and a hash generator 16 are connected to the KVS memory 14. Further, the host system 100 is connected to the memory controller 13. The hash generator 16 has a function of a so-called hash function that converts arbitrary length data into a fixed length bit string. The host system 100 is, for example, a host system including a central processing unit (CPU) and a main memory.

KVSメモリ14には、例えばDRAM等の汎用メモリが用いられる。KVSメモリ14は、少なくともハッシュテーブル領域14Aと実データ領域14Bの2つの記憶領域に分けられる。これらの記憶領域は複数持つことができるが、ハッシュテーブル領域14Aのサイズは、ハッシュ生成器16が生成するハッシュ値(固定長ビットデータ)が表現できるサイズよりも大きい。ハッシュテーブル領域14Aは、keyの実アドレスを記憶できる領域とvalueの実アドレスを記憶できる領域とに分けられる。ハッシュテーブル領域14Aの記憶容量は、固定されているわけではなく、key-valueストアに基づく要求に応じて可変(拡張あるいは縮小)することができる。また、実データ領域14Bにはデータが記憶される。   For the KVS memory 14, a general-purpose memory such as a DRAM is used. The KVS memory 14 is divided into at least two storage areas, a hash table area 14A and an actual data area 14B. Although there can be a plurality of these storage areas, the size of the hash table area 14A is larger than the size that the hash value (fixed length bit data) generated by the hash generator 16 can be expressed. The hash table area 14A is divided into an area that can store the real address of the key and an area that can store the real address of the value. The storage capacity of the hash table area 14A is not fixed, and can be varied (expanded or reduced) in response to a request based on the key-value store. Data is stored in the actual data area 14B.

メモリコントローラ13は、上位システム100から受け取ったKVS命令を解釈し、KVSメモリ14及びハッシュ生成器16に対して、次に述べるような動作を行う。   The memory controller 13 interprets the KVS instruction received from the host system 100 and performs the following operations on the KVS memory 14 and the hash generator 16.

いま、animalというkeyがKVSメモリ14中にまだ存在しない場合を考える。ここで、PUT(animal, dog)、PUT(animal, cat)という命令をメモリコントローラ13が順に受け取ると、ハッシュ生成器16によって、animal、dog、catのそれぞれに対応するハッシュ値が生成される。これらが順に、158、98、188という固定長のビット列だったとする。   Consider a case where the key “animal” does not yet exist in the KVS memory 14. Here, when the memory controller 13 receives the commands PUT (animal, dog) and PUT (animal, cat) in order, the hash generator 16 generates hash values corresponding to each of animal, dog, and cat. Assume that these are sequentially fixed-length bit strings of 158, 98, and 188.

ここで、ハッシュテーブル領域14A中のハッシュ値に対応するアドレスの内容が調べられ、animalというkeyが既にストアされているかどうかを調べる。ここではまだ存在していないため(値が0なので)、それぞれの実データを記憶するための領域が確保され(1020, 1055, 1090)、これらの先頭アドレスがハッシュテーブル領域14Aのkey領域に記憶される。確保された領域(1020, 1055, 1090)には、animal、dog、cat等の実データが記憶される。   Here, the contents of the address corresponding to the hash value in the hash table area 14A are examined, and it is checked whether or not the key “animal” has already been stored. Here, since it does not yet exist (because the value is 0), an area for storing each actual data is secured (1020, 1055, 1090), and these head addresses are stored in the key area of the hash table area 14A. Is done. In the secured areas (1020, 1055, 1090), actual data such as animals, dogs, and cats are stored.

さらに、animalというkeyとデータ集合{dog, cat}とを関連付けるため、実データ領域14Bに各要素用の領域を確保し、その先頭アドレス(1100)をハッシュテーブル領域14Aのanimalに相当するvalue領域に書き込む。そして、各要素の先頭アドレスを書き並べたもの(1055, 1090)が実データ領域14B中に記憶される。   Further, in order to associate the key “animal” with the data set {dog, cat}, an area for each element is secured in the real data area 14B, and the start address (1100) is a value area corresponding to the animal in the hash table area 14A. Write to. Then, the elements (1055, 1090) in which the head addresses of the respective elements are arranged are stored in the actual data area 14B.

これで、KVSメモリ14内にanimalというkeyに対応するデータ集合{dog, cat}が作られたことになる。図1には、このときのKVSメモリ14内の状態が示されている。   Thus, a data set {dog, cat} corresponding to the key “animal” is created in the KVS memory 14. FIG. 1 shows the state in the KVS memory 14 at this time.

次に、GET(animal, NULL)という命令をメモリコントローラ13が受け取ったとすると、ハッシュテーブル領域14Aのanimalのハッシュ値であるアドレス(0158)に書かれたvalue領域(1100)の中身(要素の実データの先頭アドレス)から実データが読み出される。すなわち{dog, cat}が上位システム100に出力される。   Next, if the memory controller 13 receives an instruction “GET (animal, NULL)”, the contents (element actuality) of the value area (1100) written in the address (0158) that is the hash value of the animal in the hash table area 14A. The actual data is read from the top address of the data. That is, {dog, cat} is output to the host system 100.

もしここで、命令がGET(animal, dog)である場合は、メモリコントローラ13は各要素を出力せずに、第二引数であるdogと一致する要素があったときだけ、dogまたはTRUEを上位システム100に出力する。また、命令がGET(animal, lion)である場合は、一致する要素がないため、NULLまたはFALSEを上位システム100に出力する。   If the instruction is GET (animal, dog), the memory controller 13 does not output each element, but only outputs dog or TRUE only when there is an element that matches the second argument dog. Output to the system 100. If the instruction is GET (animal, lion), there is no matching element, so NULL or FALSE is output to the host system 100.

さらに、DELETE(animal, dog)という命令をメモリコントローラ13が受け取ると、animalに対応するデータ集合よりdogが削除される。具体的には、アドレス(1100)から始まる各要素が調べられ、dogを除いた残り(1090)が値として書き込まれる。あるいは、このとき、新たに実データ領域14B中に確保されたメモリ領域にdogを除いた要素を順に書き出して行き、最後にハッシュテーブル領域14Aのanimalのvalue領域を書き換え、元のアドレス(1100)を開放する、というやり方もある。   Further, when the memory controller 13 receives the command DELETE (animal, dog), dog is deleted from the data set corresponding to animal. Specifically, each element starting from the address (1100) is examined, and the remainder (1090) excluding dog is written as a value. Alternatively, at this time, the elements excluding dog are sequentially written in the memory area newly reserved in the actual data area 14B, and finally the value area of the animal in the hash table area 14A is rewritten, and the original address (1100) There is also a way of opening up.

なお、DELETEの際、dogの要素そのものがanimal以外の集合に属していない場合に、dogという要素が使用しているメモリを開放する(ガベージコレクション)という動作が伴う場合がある。   In the case of DELETE, when the element of dog itself does not belong to a set other than animal, there is a case where an operation of releasing the memory used by the element of dog (garbage collection) may be accompanied.

ここで、命令がGET(animal, NULL)である場合、{cat}が上位システム100に返される。さらに、命令がDELETE(animal, cat)である場合、ハッシュテーブル領域14A内のanimalのkey領域、value領域が開放され、animalというkeyに対応するデータ集合は無くなる。すなわち、命令がGET(animal, NULL)である場合、空集合(NULL)が上位システム100に返される。   Here, if the instruction is GET (animal, NULL), {cat} is returned to the host system 100. Further, when the instruction is DELETE (animal, cat), the key area and the value area of the animal in the hash table area 14A are released, and the data set corresponding to the key “animal” disappears. That is, when the instruction is GET (animal, NULL), an empty set (NULL) is returned to the host system 100.

また、KVSメモリの構成例としては上記のほかにもいくつかの実現方法がある。具体的には、図1に示した構成において、ハッシュテーブル領域14Aを連想メモリ(CAM:Content-Addressable Memory)を用いて構成する方法を以下に説明する。   In addition to the above, there are several implementation methods as examples of the configuration of the KVS memory. Specifically, a method of configuring the hash table area 14A using a content-addressable memory (CAM) in the configuration shown in FIG. 1 will be described below.

図2は、実施形態に用いられるKVSメモリの第2構成例を示す図である。
本構成例は,KVSメモリとしてのCAM−RAM142と、上位システム100から入力されたKVS命令を解釈し、CAM−RAM142及び他のモジュールを制御するメモリコントローラ13とを備える。
FIG. 2 is a diagram illustrating a second configuration example of the KVS memory used in the embodiment.
This configuration example includes a CAM-RAM 142 as a KVS memory, and a memory controller 13 that interprets a KVS command input from the host system 100 and controls the CAM-RAM 142 and other modules.

CAM−RAM142は、テーブル領域としてのCAM部142Aと、データ領域としてのRAM(random access memory)部142Bとを有する。RAM部142Bには、DRAMやNAND型フラッシュメモリなどの汎用メモリを用いることができる。連想メモリ(CAM部)にはいくつか種類があるが、ここではCAM部142Aに、アドレスを介した通常の読み書きに加え、入力されたデータ(key)がCAM中に含まれていた場合に固定長のデータ(value)を返す種類のCAMを用いる。すなわち、CAM部142Aは、データ(key)の入力に対して、そのデータと全ての格納データとの一致・不一致の比較演算を同時並列に行い、一致した格納データのvalueを出力する機能を持つ。   The CAM-RAM 142 includes a CAM unit 142A as a table area and a RAM (random access memory) unit 142B as a data area. A general-purpose memory such as a DRAM or a NAND flash memory can be used for the RAM unit 142B. There are several types of associative memory (CAM part), but here the CAM part 142A is fixed when the input data (key) is included in the CAM in addition to normal reading and writing via the address. A type of CAM that returns long data (value) is used. In other words, the CAM unit 142A has a function of simultaneously performing parallel or coincidence comparison operations between the data and all stored data in response to the input of the data (key) and outputting the value of the matched stored data. .

CAM−RAMとは、コンテンツ連想メモリ(CAM)でアドレスを出力させ、アドレス指定アクセスのRAMでデータを出力させるように組み合わせたシステムである。CAM−RAMでは、ハッシュ値を介さずに、keyとvalueを直接読み書きできるため、図1に示した構成例と比べてハッシュ生成器16が不要となる。   The CAM-RAM is a system in which an address is output by a content associative memory (CAM) and data is output by an addressed access RAM. In the CAM-RAM, since the key and value can be directly read and written without using the hash value, the hash generator 16 is not necessary as compared with the configuration example shown in FIG.

次に、第2構成例でのKVS命令の動作について説明する。
いま、animal、dog、catというkeyがCAM部142Aにまだ存在しない場合を考える。ここで、PUT(animal, dog)、PUT(animal, cat)という命令をメモリコントローラ13が順に受け取ると、keyがCAM部142Aに既にストアされているかどうかを調べる。ここではまだ存在していないため、それぞれのkeyをCAM部142Aにストアする。そして、CAM部中の各要素(dog, cat)のvalue(ここでは先頭アドレスの1055, 1090)をRAM部142Bに記憶領域を確保して、集合としてストアする。さらに、この集合の先頭アドレス(1100)をCAM部142Aのkey(animal)のvalueとしてストアする。
Next, the operation of the KVS instruction in the second configuration example will be described.
Consider a case where keys such as animal, dog, and cat do not yet exist in the CAM unit 142A. Here, when the memory controller 13 receives the commands PUT (animal, dog) and PUT (animal, cat) in order, it checks whether the key is already stored in the CAM unit 142A. Since the key does not exist yet, each key is stored in the CAM unit 142A. Then, the value of each element (dog, cat) in the CAM part (here, 1055 and 1090 of the head address) is secured in the RAM part 142B and stored as a set. Furthermore, the head address (1100) of this set is stored as the value of the key (animal) of the CAM unit 142A.

このとき、前記の集合はCAM部中にストアすることもできるが、一般にCAMはRAMに比べてビットあたりのコストが高いため、上記のような実現方法を用いたほうがよい。図2には、このときのCAM−RAM142内の状態が示されている。   At this time, the set can be stored in the CAM unit. However, since the CAM generally has a higher cost per bit than the RAM, it is better to use the above-described implementation method. FIG. 2 shows the state in the CAM-RAM 142 at this time.

次に、GET(animal, NULL)という命令をメモリコントローラ13が受け取ったとすると、CAM部142Aのanimal(key)に対するvalueである1100をRAM部142Bのアドレスと読み替えたときに、集合{1055, 1090}が読み出せ、さらに集合{1055, 1090}をCAM部142Aのアドレスとして読み替えたkey領域、すなわち{dog, cat}が上位システム100に出力される。   Next, assuming that the memory controller 13 receives an instruction “GET (animal, NULL)”, when the value 1100 corresponding to animal (key) of the CAM unit 142A is read as the address of the RAM unit 142B, the set {1055, 1090 } Can be read, and the key area obtained by rereading the set {1055, 1090} as the address of the CAM unit 142A, that is, {dog, cat} is output to the host system 100.

もしここで、命令がGET(animal, dog)である場合、メモリコントローラ13は各要素を出力せずに,第二引数であるdogと一致する要素があったときだけ、dogまたはTRUEを上位システム100に出力する。また、命令がGET(animal, lion)である場合は、一致する要素がないため、NULLまたはFALSEを上位システム100に出力する。   If the instruction is GET (animal, dog), the memory controller 13 does not output each element, and only if there is an element that matches dog as the second argument, dog or TRUE Output to 100. If the instruction is GET (animal, lion), there is no matching element, so NULL or FALSE is output to the host system 100.

さらに、DELETE(animal, dog)という命令をメモリコントローラ13が受け取ると,animalに対応するデータ集合よりdogが削除される.具体的には、アドレス(1100)から始まる各要素が調べられ、dogを除いた残り(1090)が値として書き込まれる。あるいは、このとき、新たにRAM部中に確保されたメモリ領域にdogを除いた要素を順に書き出して行き、最後にCAM部142Aのanimalのvalue領域を書き換え、元のアドレス(1100)を開放する、というやり方もある。   Furthermore, when the memory controller 13 receives the command DELETE (animal, dog), dog is deleted from the data set corresponding to animal. Specifically, each element starting from the address (1100) is examined, and the remainder (1090) excluding dog is written as a value. Alternatively, at this time, elements excluding dog are sequentially written in a memory area newly secured in the RAM section, and finally the value area of the animal in the CAM section 142A is rewritten to release the original address (1100). There is also a way of.

なお、DELETEの際、dogの要素そのものがanimal以外の集合に属していない場合に、dogという要素が使用しているメモリを開放する(ガベージコレクション)という動作が伴う場合がある。   In the case of DELETE, when the element of dog itself does not belong to a set other than animal, there is a case where an operation of releasing the memory used by the element of dog (garbage collection) may be accompanied.

ここで、命令がGET(animal, NULL)である場合、{cat}が上位システム100に返される。さらに、命令がDELETE(animal, cat)である場合、CAM部142A内のanimalのkey領域、 value領域が開放され、animalというkeyに対応するデータ集合は無くなる。すなわち、GET(animal, NULL)の場合、空集合(NULL)が上位システム100に返される。   Here, if the instruction is GET (animal, NULL), {cat} is returned to the host system 100. Further, when the instruction is DELETE (animal, cat), the key area and the value area of the animal in the CAM unit 142A are released, and the data set corresponding to the key “animal” disappears. That is, in the case of GET (animal, NULL), an empty set (NULL) is returned to the higher system 100.

[第1実施形態]
[1]ハードウェア構成
まず、第1実施形態のメモリシステムのハードウェア構成について説明する。
図3は、第1実施形態のメモリシステムのハードウェア構成を示すブロック図である。
図示するように、メモリシステムは、CPU11、メインメモリ12、メモリコントローラ13、及びKVSメモリ14を備える。さらに、CPU11、メインメモリ12、及びメモリコントローラ13の間は、バス15にて接続されている。
[First Embodiment]
[1] Hardware Configuration First, the hardware configuration of the memory system of the first embodiment will be described.
FIG. 3 is a block diagram illustrating a hardware configuration of the memory system according to the first embodiment.
As shown in the figure, the memory system includes a CPU 11, a main memory 12, a memory controller 13, and a KVS memory 14. Further, the CPU 11, the main memory 12, and the memory controller 13 are connected by a bus 15.

CPU11は、メインメモリ12、メモリコントローラ13、及びKVSメモリ14を制御し、後述する集合演算を行う。メモリコントローラ13は、KVSメモリ14及びその他のメモリ(図示しない)を制御する。メモリコントローラ13は、ダイレクトメモリアクセス(DMA:Direct Memory Access)機能を持つ回路を有する。DMA機能を用いれば、メモリコントローラ13とメインメモリ12との間のデータ転送を、CPU11を介さずに、直接制御することができる。   The CPU 11 controls the main memory 12, the memory controller 13, and the KVS memory 14 and performs a set operation described later. The memory controller 13 controls the KVS memory 14 and other memories (not shown). The memory controller 13 has a circuit having a direct memory access (DMA) function. If the DMA function is used, data transfer between the memory controller 13 and the main memory 12 can be directly controlled without using the CPU 11.

KVSメモリ14は、図1または図2に示したようなデータ領域を格納している。KVSメモリ14の構成及び動作は、図1または図2を用いて説明した通りであり、その説明は省略する。   The KVS memory 14 stores a data area as shown in FIG. 1 or FIG. The configuration and operation of the KVS memory 14 are as described with reference to FIG. 1 or FIG.

また、図4はメインメモリ12におけるデータ領域の構成例を示す。CPU11とメインメモリ12は、key-valueストア(KVS)を有するメモリを構成する。例えば、CPU11がハッシュ値を生成する機能を有する場合、図4に示すように、メインメモリ12はハッシュテーブル領域12Aと実データ領域12Bとを有する。また、メインメモリ12は、主記憶としてデータや命令コードを記憶する。   FIG. 4 shows a configuration example of the data area in the main memory 12. The CPU 11 and the main memory 12 constitute a memory having a key-value store (KVS). For example, when the CPU 11 has a function of generating a hash value, the main memory 12 has a hash table area 12A and an actual data area 12B as shown in FIG. The main memory 12 stores data and instruction codes as main memory.

[2]集合演算
次に、第1実施形態のメモリシステムにおける集合演算について説明する。
[2] Set Operation Next, a set operation in the memory system of the first embodiment will be described.

いま、KVSメモリ14中に、animal = {dog, tuna, cat}と、fish = {porgy, tuna, salmon}という2つのデータ集合がストアされていたとする。以下に、AND演算、OR演算、及びNOT演算の動作を述べる。   Assume that two data sets, animal = {dog, tuna, cat} and fish = {porgy, tuna, salmon}, are stored in the KVS memory 14. Hereinafter, operations of the AND operation, the OR operation, and the NOT operation will be described.

(1)AND演算
図5は、第1実施形態におけるAND演算の動作を示すフローチャートである。
具体的な例として、animal AND fishという演算を行う場合の処理を示す。まず、CPU11はメモリコントローラ13を介してKVSメモリ14に対して、GET(animal, NULL)という命令を発行する(ステップS1)。続いて、CPU11は、GET(animal, NULL)の命令に対して、KVSメモリ14から出力されたデータ集合を前述したKVS命令の動作と同様に(ハッシュ関数等をソフトウェア的に処理して)、answer集合としてメインメモリ12に記憶させる。すなわち、CPU11はメインメモリ12に対して、PUT(answer, dog)、PUT(answer, tuna)、PUT(answer, cat)という命令を発行する。この結果、answer = {dog, tuna, cat}という集合がメインメモリ12に記憶される(ステップS2)。これにより、メインメモリ12はkey-value型データを有するメモリとして機能する。すなわち、メインメモリ12には、keyとしてのanswerとvalueとしての{dog, tuna, cat}のペアが記憶される。
(1) AND operation
FIG. 5 is a flowchart showing the operation of the AND operation in the first embodiment.
As a specific example, a process in the case of performing an operation called animal AND fish is shown. First, the CPU 11 issues a command “GET (animal, NULL)” to the KVS memory 14 via the memory controller 13 (step S1). Subsequently, in response to the GET (animal, NULL) instruction, the CPU 11 processes the data set output from the KVS memory 14 in the same manner as the operation of the KVS instruction described above (processing the hash function or the like in software), It is stored in the main memory 12 as an answer set. That is, the CPU 11 issues commands PUT (answer, dog), PUT (answer, tuna), and PUT (answer, cat) to the main memory 12. As a result, a set of answer = {dog, tuna, cat} is stored in the main memory 12 (step S2). Thereby, the main memory 12 functions as a memory having key-value type data. That is, the main memory 12 stores a pair of answer as a key and {dog, tuna, cat} as a value.

次に、CPU11は、メインメモリ12中のanswer集合の中の各要素が、KVSメモリ14内のfish集合の中に存在するかどうか調べる。最初は、CPU11がKVSメモリ14に対して、GET(fish, dog)という命令を発行する(ステップS3)。この返り値はFALSEであるため、CPU11はメインメモリ12中のanswer集合の中の要素dogを削除する。すなわち、CPU11はメインメモリ12に対して、DELETE(answer, dog)の命令を発行する(ステップS4)。   Next, the CPU 11 checks whether each element in the answer set in the main memory 12 exists in the fish set in the KVS memory 14. Initially, the CPU 11 issues a command GET (fish, dog) to the KVS memory 14 (step S3). Since this return value is FALSE, the CPU 11 deletes the element dog in the answer set in the main memory 12. That is, the CPU 11 issues a DELETE (answer, dog) command to the main memory 12 (step S4).

続いて、CPU11は、メインメモリ12中のanswer集合の中の全ての要素の処理が終了したかを判定する(ステップS5)。ここでは、answer集合の中の全ての要素の処理が終了していないため、ステップS3に戻り、ステップS3以降の処理を繰り返す。   Subsequently, the CPU 11 determines whether or not the processing of all elements in the answer set in the main memory 12 has been completed (step S5). Here, since the processing of all elements in the answer set has not been completed, the process returns to step S3, and the processes after step S3 are repeated.

CPU11は、KVSメモリ14中のfish集合の中からtunaを探す。すなわち、CPU11はKVSメモリ14に対して、GET(fish, tuna)という命令を発行する(ステップS3)。すると、この返り値はTRUEであるため、次に進む。   The CPU 11 searches for the tuna from the fish set in the KVS memory 14. That is, the CPU 11 issues a command GET (fish, tuna) to the KVS memory 14 (step S3). Then, since this return value is TRUE, it proceeds to the next.

catについても同様に、CPU11はKVSメモリ14中のfish集合の中からcatを探す。すなわち、CPU11はKVSメモリ14に対して、GET(fish, cat)という命令を発行する(ステップS3)。すると、この返り値はFALSEであるため、CPU11はメインメモリ12中のanswer集合の中の要素catを削除する。すなわち、CPU11はメインメモリ12に対して、DELETE(answer, cat)の命令を発行する(ステップS4)。   Similarly, for the cat, the CPU 11 searches for the cat from the fish set in the KVS memory 14. That is, the CPU 11 issues a command “GET (fish, cat)” to the KVS memory 14 (step S3). Then, since this return value is FALSE, the CPU 11 deletes the element cat in the answer set in the main memory 12. That is, the CPU 11 issues a DELETE (answer, cat) command to the main memory 12 (step S4).

ステップS5において、answer集合の中の全ての要素の処理が終了すると、結果として、メインメモリ12中のanswer集合はanswer = {tuna}となり、AND演算の解となる(ステップS6)。   When processing of all elements in the answer set is completed in step S5, the answer set in the main memory 12 is answer = {tuna} as a result, resulting in an AND operation solution (step S6).

なお、answerと別の名前の解集合を用意すれば、同時に複数のAND演算を行うことも可能である。   If a solution set with a name different from answer is prepared, a plurality of AND operations can be performed simultaneously.

(2)OR演算
図6は、第1実施形態におけるOR演算の動作を示すフローチャートである。
具体的な例として、animal OR fishという演算を行う場合の処理を示す。まず、CPU11はメモリコントローラ13を介してKVSメモリ14に対して、GET(animal, NULL)という命令を発行する(ステップS11)。続いて、GET(animal, NULL)の命令に対して、KVSメモリ14から出力されたデータ集合を、CPU11はanswer集合としてメインメモリ12に記憶させる。すなわち、CPU11はメインメモリ12に対して、PUT(answer, dog)、PUT(answer, tuna)、PUT(answer, cat)という命令を発行する。この結果、answer = {dog, tuna, cat}という集合がメインメモリ12に記憶される(ステップS12)。これにより、メインメモリ12はkey-value型データを有するメモリとして機能する。すなわち、メインメモリ12には、keyとしてのanswerとvalueとしての{dog, tuna, cat}のペアが記憶される。
(2) OR operation
FIG. 6 is a flowchart showing the operation of the OR operation in the first embodiment.
As a specific example, a process for performing an operation called animal OR fish is shown. First, the CPU 11 issues a command “GET (animal, NULL)” to the KVS memory 14 via the memory controller 13 (step S11). Subsequently, in response to a GET (animal, NULL) instruction, the CPU 11 stores the data set output from the KVS memory 14 in the main memory 12 as an answer set. That is, the CPU 11 issues commands PUT (answer, dog), PUT (answer, tuna), and PUT (answer, cat) to the main memory 12. As a result, a set answer = {dog, tuna, cat} is stored in the main memory 12 (step S12). Thereby, the main memory 12 functions as a memory having key-value type data. That is, the main memory 12 stores a pair of answer as a key and {dog, tuna, cat} as a value.

次に、CPU11は、KVSメモリ14中のfish集合の中の各要素がメインメモリ12中のanswer集合の中に存在するかどうかを調べる。最初は、CPU11がメインメモリ12に対して、GET(answer, porgy)という命令を発行する(ステップS13)。この返り値はFALSEであるため、CPU11はporgyをメインメモリ12中のanswer集合に入れる。すなわち、CPU11はメインメモリ12に対して、PUT(answer, porgy)の命令を発行する(ステップS14)。   Next, the CPU 11 checks whether each element in the fish set in the KVS memory 14 exists in the answer set in the main memory 12. Initially, the CPU 11 issues a command “GET (answer, porgy)” to the main memory 12 (step S13). Since this return value is FALSE, the CPU 11 puts porgy into the answer set in the main memory 12. That is, the CPU 11 issues a PUT (answer, porgy) command to the main memory 12 (step S14).

続いて、CPU11は、KVSメモリ14中のfish集合の中の全ての要素の処理が終了したかを判定する(ステップS15)。ここでは、fish集合の中の全ての要素の処理が終了していないため、ステップS13に戻り、ステップS13以降の処理を繰り返す。   Subsequently, the CPU 11 determines whether the processing of all elements in the fish set in the KVS memory 14 has been completed (step S15). Here, since the processing of all the elements in the fish set has not been completed, the process returns to step S13, and the processes after step S13 are repeated.

CPU11は、KVSメモリ14中のfish集合の中のtunaがメインメモリ12中のanswer集合の中に存在するかどうかを調べる。すなわち、CPU11はメインメモリ12に対して、GET(answer, tuna)という命令を発行する(ステップS13)。すると、返り値はTRUEであるため、次に進む。   The CPU 11 checks whether the tuna in the fish set in the KVS memory 14 exists in the answer set in the main memory 12. That is, the CPU 11 issues a command GET (answer, tuna) to the main memory 12 (step S13). Then, since the return value is TRUE, it proceeds to the next.

salmonについても同様に、CPU11はfish集合の中のsalmonがメインメモリ12中のanswer集合の中に存在するかどうかを調べる。すなわち、CPU11はメインメモリ12に対して、GET(answer, salmon)という命令を発行する(ステップS15)。すると、この返り値はFALSEであるため、CPU11はsalmonをメインメモリ12中のanswer集合に入れる。すなわち、CPU11はメインメモリ12に対して、PUT(answer, salmon)の命令を発行する(ステップS14)。   Similarly for salmon, the CPU 11 checks whether or not salmon in the fish set exists in the answer set in the main memory 12. That is, the CPU 11 issues a command “GET (answer, salmon)” to the main memory 12 (step S15). Then, since this return value is FALSE, the CPU 11 puts salmon in the answer set in the main memory 12. That is, the CPU 11 issues a PUT (answer, salmon) command to the main memory 12 (step S14).

ステップS15において、fish集合の中の全ての要素の処理が終了すると、結果として、メインメモリ12中のanswer集合はanswer = {dog, tuna, cat, porgy, salmon}となり、OR演算の解となる(ステップS16)。   In step S15, when processing of all elements in the fish set is completed, the answer set in the main memory 12 is answer = {dog, tuna, cat, porgy, salmon}, which is the solution of the OR operation. (Step S16).

なお、answerと別の名前の解集合を用意すれば、同時に複数のOR演算を行うことも可能である。   If a solution set with a name different from answer is prepared, a plurality of OR operations can be performed simultaneously.

(3)NOT演算
図7は、第1実施形態におけるNOT演算の動作を示すフローチャートである。
具体的な例として、animal NOT fishという演算を行う場合の処理を示す。まず、CPU11はメモリコントローラ13を介してKVSメモリ14に対して、GET(animal, NULL)という命令を発行する(ステップS21)。続いて、GET(animal, NULL)の命令に対して、KVSメモリ14から出力されたデータ集合を、CPU11はanswer集合としてメインメモリ12に記憶させる。すなわち、CPU11はメインメモリ12に対して、PUT(answer, dog)、PUT(answer, tuna)、PUT(answer, cat)という命令を発行する。この結果、answer = {dog, tuna, cat}という集合がメインメモリ12に記憶される(ステップS22)。これにより、メインメモリ12はkey-value型データを有するメモリとして機能する。すなわち、メインメモリ12には、keyとしてのanswerとvalueとしての{dog, tuna, cat}のペアが記憶される。
(3) NOT operation
FIG. 7 is a flowchart showing the NOT calculation operation in the first embodiment.
As a specific example, a process for performing an operation called animal NOT fish is shown. First, the CPU 11 issues a command “GET (animal, NULL)” to the KVS memory 14 via the memory controller 13 (step S21). Subsequently, in response to a GET (animal, NULL) instruction, the CPU 11 stores the data set output from the KVS memory 14 in the main memory 12 as an answer set. That is, the CPU 11 issues commands PUT (answer, dog), PUT (answer, tuna), and PUT (answer, cat) to the main memory 12. As a result, the set answer = {dog, tuna, cat} is stored in the main memory 12 (step S22). Thereby, the main memory 12 functions as a memory having key-value type data. That is, the main memory 12 stores a pair of answer as a key and {dog, tuna, cat} as a value.

次に、CPU11は、KVSメモリ14中のfish集合の中の各要素を、メインメモリ12中のanswer集合から削除する。最初は、CPU11がメインメモリ12に対して、DELETE(answer, porgy)という命令を発行する(ステップS23)。   Next, the CPU 11 deletes each element in the fish set in the KVS memory 14 from the answer set in the main memory 12. Initially, the CPU 11 issues a command DELETE (answer, porgy) to the main memory 12 (step S23).

続いて、CPU11は、KVSメモリ14中のfish集合の中の全ての要素の処理が終了したかを判定する(ステップS24)。ここでは、fish集合の中の全ての要素の処理が終了していないため、ステップS23に戻り、ステップS23以降の処理を繰り返す。   Subsequently, the CPU 11 determines whether or not processing of all elements in the fish set in the KVS memory 14 has been completed (step S24). Here, since the processing of all the elements in the fish set has not been completed, the process returns to step S23, and the processes after step S23 are repeated.

CPU11は、KVSメモリ14中のfish集合の中のtuna, salmonについても同様に、メインメモリ12中のanswer集合から削除する(ステップS23)。   Similarly, the CPU 11 deletes tuna and salmon in the fish set in the KVS memory 14 from the answer set in the main memory 12 (step S23).

ステップS24において、fish集合の中の全ての要素の処理が終了すると、結果として、メインメモリ12中のanswer集合はanswer = {dog, cat}となり、NOT演算の解となる(ステップS25)。   When processing of all elements in the fish set is completed in step S24, the answer set in the main memory 12 is answer = {dog, cat} as a result, which is a NOT calculation solution (step S25).

なお、answerと別の名前の解集合を用意すれば、同時に複数のNOT演算を行うことも可能である。   If a solution set with a name different from answer is prepared, a plurality of NOT operations can be performed simultaneously.

また、前述したCPU11が行っている作業は、メモリコントローラ13が有するダイレクトメモリアクセス(DMA)機能によりすべて実行することができる。CPU11が行っている作業を、メモリコントローラ13のDMA機能によって全て行うことにより、CPU11に負荷をかけることなく、前述の集合演算を行うことが可能である。   Further, all the operations performed by the CPU 11 described above can be executed by the direct memory access (DMA) function of the memory controller 13. By performing all the operations performed by the CPU 11 using the DMA function of the memory controller 13, the above-described set operation can be performed without imposing a load on the CPU 11.

[3]変形例1
図8は、第1実施形態における変形例1のメモリシステムのハードウェア構成を示すブロック図である。
[3] Modification 1
FIG. 8 is a block diagram illustrating a hardware configuration of a memory system according to Modification 1 of the first embodiment.

図示するように、変形例1は、図3に示した第1実施形態のメモリシステムにおいて、ハッシュ生成器16を備える構成を有する。ハッシュ生成器16は、任意長のデータを固定長のビット列に変換する、いわゆるハッシュ関数の機能を持つ。ここでは、ハッシュ生成器16は、データ(key)の入力に対して、key-value型データが記憶されたアドレスを生成する。   As shown in the figure, the first modification has a configuration including a hash generator 16 in the memory system of the first embodiment shown in FIG. The hash generator 16 has a function of a so-called hash function that converts arbitrary length data into a fixed length bit string. Here, the hash generator 16 generates an address at which key-value type data is stored in response to input of data (key).

図8におけるKVSメモリ14は、図1に示したKVSメモリ14と同様な構成を有する。また、メインメモリ12は、図4に示したメインメモリ12と同様な構成を有する。したがってここでは、図8のKVSメモリ14及びメインメモリ12の詳細な構成及び動作の説明は省略する。   The KVS memory 14 in FIG. 8 has the same configuration as the KVS memory 14 shown in FIG. The main memory 12 has the same configuration as the main memory 12 shown in FIG. Therefore, the detailed configuration and operation of the KVS memory 14 and the main memory 12 in FIG. 8 are omitted here.

変形例1における集合演算の動作は、第1実施形態における動作と同様である。変形例1では、ハッシュ生成器16を備えることにより、集合演算の実行時におけるCPU11の負荷を低減することができる。その他の構成及び効果は前述した第1実施形態と同様である。   The operation of the set operation in the first modification is the same as the operation in the first embodiment. In Modification 1, by providing the hash generator 16, it is possible to reduce the load on the CPU 11 during execution of the set operation. Other configurations and effects are the same as those of the first embodiment described above.

[4]変形例2
図9は、第1実施形態における変形例2のメモリシステムのハードウェア構成を示すブロック図である。
[4] Modification 2
FIG. 9 is a block diagram illustrating a hardware configuration of a memory system according to Modification 2 of the first embodiment.

図示するように、変形例2は、図3に示した第1実施形態のメモリシステムにおいて、ハッシュ生成器16を備え、KVSメモリとしてDRAM141を用いている。さらに、メモリコントローラ13に接続されたメモリ装置としてNANDフラッシュメモリ17を備える。   As illustrated, the second modification includes the hash generator 16 in the memory system according to the first embodiment illustrated in FIG. 3 and uses a DRAM 141 as the KVS memory. Further, a NAND flash memory 17 is provided as a memory device connected to the memory controller 13.

図9におけるDRAM141は、図1に示したKVSメモリ14と同様な構成を有する。また、メインメモリ12は、図4に示したメインメモリ12と同様な構成を有する。したがってここでは、図9のDRAM141及びメインメモリ12の詳細な構成及び動作の説明は省略する。   The DRAM 141 in FIG. 9 has the same configuration as the KVS memory 14 shown in FIG. The main memory 12 has the same configuration as the main memory 12 shown in FIG. Therefore, the detailed configuration and operation of the DRAM 141 and the main memory 12 in FIG. 9 are omitted here.

変形例2では、第1実施形態におけるKVSメモリ14としてDRAM141が用いられており、変形例2における集合演算の動作は、第1実施形態における動作と同様である。さらに、ハッシュ生成器16を備えることにより、集合演算の実行時におけるCPU11の負荷を低減することができる。その他の構成及び効果は前述した第1実施形態と同様である。   In the second modification, the DRAM 141 is used as the KVS memory 14 in the first embodiment, and the operation of the set operation in the second modification is the same as the operation in the first embodiment. Furthermore, by providing the hash generator 16, it is possible to reduce the load on the CPU 11 during execution of the set operation. Other configurations and effects are the same as those of the first embodiment described above.

[5]変形例3
図10は、第1実施形態における変形例3のメモリシステムのハードウェア構成を示すブロック図である。
[5] Modification 3
FIG. 10 is a block diagram illustrating a hardware configuration of a memory system according to Modification 3 of the first embodiment.

図示するように、変形例3は、図3に示した第1実施形態のメモリシステムにおいて、KVSメモリとしてCAM−RAM142を用いている。さらに、メモリコントローラ13に接続されたメモリ装置としてNANDフラッシュメモリ17を備える。   As shown in the figure, the third modification uses a CAM-RAM 142 as a KVS memory in the memory system of the first embodiment shown in FIG. Further, a NAND flash memory 17 is provided as a memory device connected to the memory controller 13.

図10におけるCAM−RAM142は、図2に示したCAM−RAM142と同様な構成を有する。また、メインメモリ12は、図4に示したメインメモリ12と同様な構成を有する。したがってここでは、図10のCAM−RAM142及びメインメモリ12の詳細な構成及び動作の説明は省略する。   The CAM-RAM 142 in FIG. 10 has the same configuration as the CAM-RAM 142 shown in FIG. The main memory 12 has the same configuration as the main memory 12 shown in FIG. Therefore, the detailed configuration and operation of the CAM-RAM 142 and the main memory 12 shown in FIG.

変形例3では、第1実施形態におけるKVSメモリ14としてCAM−RAM142が用いられており、変形例3における集合演算の動作は、第1実施形態における動作と同様である。さらに、CAM−RAM142を備えることにより、集合演算の実行時におけるCPU11の負荷を低減することができる。その他の構成及び効果は前述した第1実施形態と同様である。   In the third modification, the CAM-RAM 142 is used as the KVS memory 14 in the first embodiment, and the operation of the set operation in the third modification is the same as the operation in the first embodiment. Furthermore, by providing the CAM-RAM 142, it is possible to reduce the load on the CPU 11 when the set operation is executed. Other configurations and effects are the same as those of the first embodiment described above.

[第2実施形態]
[1]ハードウェア構成
第2実施形態のメモリシステムのハードウェア構成について説明する。
図11は、第2実施形態のメモリシステムのハードウェア構成を示すブロック図である。
図示するように、メモリシステムは、CPU11、メインメモリ12、メモリコントローラ13、第1のKVSメモリ24、及び第2のKVSメモリ34を備える。さらに、CPU11、メインメモリ12、及びメモリコントローラ13の間は、バス15にて接続されている。
[Second Embodiment]
[1] Hardware Configuration A hardware configuration of the memory system according to the second embodiment will be described.
FIG. 11 is a block diagram illustrating a hardware configuration of the memory system according to the second embodiment.
As shown in the figure, the memory system includes a CPU 11, a main memory 12, a memory controller 13, a first KVS memory 24, and a second KVS memory 34. Further, the CPU 11, the main memory 12, and the memory controller 13 are connected by a bus 15.

CPU11は、メインメモリ12、メモリコントローラ13、及び第1、第2のKVSメモリ24、34を制御し、後述する集合演算を行う。メモリコントローラ13は、KVSメモリ24、34及びその他のメモリ(図示しない)を制御する。メモリコントローラ13は、ダイレクトメモリアクセス(DMA:Direct Memory Access)機能を持つ回路を有する。DMA機能を用いれば、メモリコントローラ13とメインメモリ12との間のデータ転送を、CPU11を介さずに、直接制御することができる。   The CPU 11 controls the main memory 12, the memory controller 13, and the first and second KVS memories 24 and 34, and performs a set operation described later. The memory controller 13 controls the KVS memories 24 and 34 and other memories (not shown). The memory controller 13 has a circuit having a direct memory access (DMA) function. If the DMA function is used, data transfer between the memory controller 13 and the main memory 12 can be directly controlled without using the CPU 11.

第1、第2のKVSメモリ24、34は、図1または図2に示したようなデータ領域を格納している。KVSメモリ24、34の構成及び動作は、図1または図2を用いて説明した通りであり、その説明は省略する。   The first and second KVS memories 24 and 34 store data areas as shown in FIG. The configurations and operations of the KVS memories 24 and 34 are the same as those described with reference to FIG. 1 or FIG.

[2]集合演算
次に、第2実施形態のメモリシステムにおける集合演算について説明する。
[2] Set Operation Next, a set operation in the memory system of the second embodiment will be described.

第2実施形態における集合演算の動作は、前述した第1実施形態の集合演算の動作において、CPU11をメモリコントローラ13に置き換え、KVSメモリ14を第1のKVSメモリ24に、メインメモリ12を第2のKVSメモリ34にそれぞれ置き換えたものである。   In the set operation in the second embodiment, the CPU 11 is replaced with the memory controller 13 in the set operation in the first embodiment described above, the KVS memory 14 is replaced with the first KVS memory 24, and the main memory 12 is replaced with the second. The KVS memory 34 is replaced.

いま、第1のKVSメモリ24中に、animal = {dog, tuna, cat}と、fish = {porgy, tuna, salmon}という2つのデータ集合がストアされていたとする。以下に、図3〜図5を参照してAND演算、OR演算、及びNOT演算の動作を述べる。   Now, it is assumed that two data sets of animal = {dog, tuna, cat} and fish = {porgy, tuna, salmon} are stored in the first KVS memory 24. The operations of the AND operation, OR operation, and NOT operation will be described below with reference to FIGS.

(1)AND演算
具体的な例として、animal AND fishという演算を行う場合の処理を示す。まず、メモリコントローラ13は第1のKVSメモリ24に対して、GET(animal, NULL)という命令を発行する(ステップS1)。続いて、GET(animal, NULL)の命令に対して、第1のKVSメモリ24から出力されたデータ集合を、メモリコントローラ13はanswer集合として第2のKVSメモリ34に記憶させる。すなわち、answer = {dog, tuna, cat}という集合が第2のKVSメモリ34に記憶される(ステップS2)。
(1) AND operation
As a specific example, a process in the case of performing an operation called animal AND fish is shown. First, the memory controller 13 issues a command GET (animal, NULL) to the first KVS memory 24 (step S1). Subsequently, in response to a GET (animal, NULL) instruction, the memory controller 13 causes the second KVS memory 34 to store the data set output from the first KVS memory 24 as an answer set. That is, the set answer = {dog, tuna, cat} is stored in the second KVS memory 34 (step S2).

次に、メモリコントローラ13は、第2のKVSメモリ34中のanswer集合の中の各要素が第1のKVSメモリ24内のfish集合の中に存在するかどうか調べる。最初は、メモリコントローラ13が第1のKVSメモリ24に対して、GET(fish, dog)という命令を発行する(ステップS3)。この返り値はFALSEであるため、メモリコントローラ13は第2のKVSメモリ34中のanswer集合の中の要素dogを削除する(ステップS4)。   Next, the memory controller 13 checks whether each element in the answer set in the second KVS memory 34 exists in the fish set in the first KVS memory 24. Initially, the memory controller 13 issues a command GET (fish, dog) to the first KVS memory 24 (step S3). Since this return value is FALSE, the memory controller 13 deletes the element dog in the answer set in the second KVS memory 34 (step S4).

続いて、メモリコントローラ13は、第2のKVSメモリ34中のanswer集合の中の全ての要素の処理が終了したかを判定する(ステップS5)。ここでは、answer集合の中の全ての要素の処理が終了していないため、ステップS3に戻り、ステップS3以降の処理を繰り返す。   Subsequently, the memory controller 13 determines whether the processing of all elements in the answer set in the second KVS memory 34 has been completed (step S5). Here, since the processing of all elements in the answer set has not been completed, the process returns to step S3, and the processes after step S3 are repeated.

メモリコントローラ13は、第1のKVSメモリ24中のfish集合の中からtunaを探す。すなわち、メモリコントローラ13は第1のKVSメモリ24に対して、GET(fish, tuna)という命令を発行する(ステップS3)。すると、この返り値はTRUEであるため、次に進む。   The memory controller 13 searches for the tuna from the fish set in the first KVS memory 24. That is, the memory controller 13 issues a command “GET (fish, tuna)” to the first KVS memory 24 (step S3). Then, since this return value is TRUE, it proceeds to the next.

catについても同様に、メモリコントローラ13は第1のKVSメモリ24中のfish集合の中からcatを探す。すなわち、メモリコントローラ13は第1のKVSメモリ24に対して、GET(fish, cat)という命令を発行する(ステップS3)。すると、この返り値はFALSEであるため、メモリコントローラ13は第2のKVSメモリ34中のanswer集合の中の要素catを削除する(ステップS4)。   Similarly, for the cat, the memory controller 13 searches for the cat from the fish set in the first KVS memory 24. That is, the memory controller 13 issues a command “GET (fish, cat)” to the first KVS memory 24 (step S3). Then, since this return value is FALSE, the memory controller 13 deletes the element cat in the answer set in the second KVS memory 34 (step S4).

ステップS5において、answer集合の中の全ての要素の処理が終了すると、結果として、第2のKVSメモリ34中のanswer集合はanswer = {tuna}となり、AND演算の解となる(ステップS6)。   When processing of all elements in the answer set is completed in step S5, the answer set in the second KVS memory 34 is answer = {tuna} as a result, which is the solution of the AND operation (step S6).

(2)OR演算
具体的な例として、animal OR fishという演算を行う場合の処理を示す。まず、メモリコントローラ13は第1のKVSメモリ24に対して、GET(animal, NULL)という命令を発行する(ステップS11)。続いて、GET(animal, NULL)の命令に対して、第1のKVSメモリ24から出力されたデータ集合を、メモリコントローラ13はanswer集合として第2のKVSメモリ34に記憶させる。すなわち、answer = {dog, tuna, cat}という集合が第2のKVSメモリ34に記憶される(ステップS12)。
(2) OR operation
As a specific example, a process for performing an operation called animal OR fish is shown. First, the memory controller 13 issues an instruction “GET (animal, NULL)” to the first KVS memory 24 (step S11). Subsequently, in response to a GET (animal, NULL) instruction, the memory controller 13 causes the second KVS memory 34 to store the data set output from the first KVS memory 24 as an answer set. That is, the set answer = {dog, tuna, cat} is stored in the second KVS memory 34 (step S12).

次に、メモリコントローラ13は、第1のKVSメモリ24中のfish集合の中の各要素が第2のKVSメモリ34中のanswer集合の中に存在するかどうかを調べる。最初は、メモリコントローラ13が第2のKVSメモリ34に対して、GET(answer, porgy)という命令を発行する(ステップS13)。この返り値はFALSEであるため、メモリコントローラ13はporgyを第2のKVSメモリ34中のanswer集合に入れる(ステップS14)。   Next, the memory controller 13 checks whether each element in the fish set in the first KVS memory 24 exists in the answer set in the second KVS memory 34. Initially, the memory controller 13 issues a command “GET (answer, porgy)” to the second KVS memory 34 (step S13). Since this return value is FALSE, the memory controller 13 puts porgy into the answer set in the second KVS memory 34 (step S14).

続いて、メモリコントローラ13は、第1のKVSメモリ24中のfish集合の中の全ての要素の処理が終了したかを判定する(ステップS15)。ここでは、fish集合の中の全ての要素の処理が終了していないため、ステップS13に戻り、ステップS13以降の処理を繰り返す。   Subsequently, the memory controller 13 determines whether the processing of all elements in the fish set in the first KVS memory 24 has been completed (step S15). Here, since the processing of all the elements in the fish set has not been completed, the process returns to step S13, and the processes after step S13 are repeated.

メモリコントローラ13は、第1のKVSメモリ24中のfish集合の中のtunaが第2のKVSメモリ34中のanswer集合の中に存在するかどうかを調べる。すなわち、メモリコントローラ13は第2のKVSメモリ34に対して、GET(answer, tuna)という命令を発行する(ステップS13)。すると、返り値はTRUEであるため、次に進む。   The memory controller 13 checks whether tuna in the fish set in the first KVS memory 24 exists in the answer set in the second KVS memory 34. That is, the memory controller 13 issues a command “GET (answer, tuna)” to the second KVS memory 34 (step S13). Then, since the return value is TRUE, it proceeds to the next.

salmonについても同様に、メモリコントローラ13はfish集合の中のsalmonが第2のKVSメモリ34中のanswer集合の中に存在するかどうかを調べる。すなわち、メモリコントローラ13は第2のKVSメモリ34に対して、GET(answer, salmon)という命令を発行する(ステップS15)。すると、この返り値はFALSEであるため、メモリコントローラ13はsalmonを第2のKVSメモリ34中のanswer集合に入れる(ステップS14)。   Similarly for salmon, the memory controller 13 checks whether the salmon in the fish set exists in the answer set in the second KVS memory 34. That is, the memory controller 13 issues a command “GET (answer, salmon)” to the second KVS memory 34 (step S15). Then, since this return value is FALSE, the memory controller 13 puts salmon in the answer set in the second KVS memory 34 (step S14).

ステップS15において、fish集合の中の全ての要素の処理が終了すると、結果として、第2のKVSメモリ34中のanswer集合はanswer = {dog, tuna, cat, porgy, salmon}となり、OR演算の解となる(ステップS16)。   In step S15, when all elements in the fish set have been processed, the answer set in the second KVS memory 34 is answer = {dog, tuna, cat, porgy, salmon}, and the OR operation is performed. A solution is obtained (step S16).

(3)NOT演算
具体的な例として、animal NOT fishという演算を行う場合の処理を示す。まず、メモリコントローラ13は第1のKVSメモリ24に対して、GET(animal, NULL)という命令を発行する(ステップS21)。続いて、GET(animal, NULL)の命令に対して、第1のKVSメモリ24から出力されたデータ集合を、メモリコントローラ13はanswer集合として第2のKVSメモリ34に記憶させる。すなわち、answer = {dog, tuna, cat}という集合が第2のKVSメモリ34に記憶される(ステップS22)。
(3) NOT operation
As a specific example, a process for performing an operation called animal NOT fish is shown. First, the memory controller 13 issues a command “GET (animal, NULL)” to the first KVS memory 24 (step S21). Subsequently, in response to a GET (animal, NULL) instruction, the memory controller 13 causes the second KVS memory 34 to store the data set output from the first KVS memory 24 as an answer set. That is, the set answer = {dog, tuna, cat} is stored in the second KVS memory 34 (step S22).

次に、メモリコントローラ13は、第1のKVSメモリ24中のfish集合の中の各要素を、第2のKVSメモリ34中のanswer集合から削除する。最初は、メモリコントローラ13が第2のKVSメモリ34に対して、DELETE(answer, porgy)という命令を発行する(ステップS23)。   Next, the memory controller 13 deletes each element in the fish set in the first KVS memory 24 from the answer set in the second KVS memory 34. Initially, the memory controller 13 issues a command DELETE (answer, porgy) to the second KVS memory 34 (step S23).

続いて、メモリコントローラ13は、第1のKVSメモリ24中のfish集合の中の全ての要素の処理が終了したかを判定する(ステップS24)。ここでは、fish集合の中の全ての要素の処理が終了していないため、ステップS23に戻り、ステップS23以降の処理を繰り返す。   Subsequently, the memory controller 13 determines whether the processing of all elements in the fish set in the first KVS memory 24 has been completed (step S24). Here, since the processing of all the elements in the fish set has not been completed, the process returns to step S23, and the processes after step S23 are repeated.

メモリコントローラ13は、第1のKVSメモリ24中のfish集合の中のtuna, salmonについても同様に、第2のKVSメモリ34中のanswer集合から削除する(ステップS23)。   Similarly, the memory controller 13 deletes tuna and salmon in the fish set in the first KVS memory 24 from the answer set in the second KVS memory 34 (step S23).

ステップS24において、fish集合の中の全ての要素の処理が終了すると、結果として、第2のKVSメモリ34中のanswer集合はanswer = {dog, cat}となり、NOT演算の解となる(ステップS25)。   When the processing of all elements in the fish set is completed in step S24, the answer set in the second KVS memory 34 is answer = {dog, cat} as a result, which is the solution of the NOT operation (step S25). ).

また、前述のメモリコントローラ13が行っている作業は、メモリコントローラ13が有するダイレクトメモリアクセス(DMA)機能によりすべて実行することができる。メモリコントローラ13が行っている作業を、メモリコントローラ13のDMA機能によって全て行うことにより、メモリコントローラ13に負荷をかけることなく、前述の集合演算を行うことが可能である。   Further, all the operations performed by the memory controller 13 described above can be executed by the direct memory access (DMA) function of the memory controller 13. By performing all the operations performed by the memory controller 13 using the DMA function of the memory controller 13, it is possible to perform the aforementioned set operation without imposing a load on the memory controller 13.

[3]変形例1
図12は、第2実施形態における変形例1のメモリシステムのハードウェア構成を示すブロック図である。
[3] Modification 1
FIG. 12 is a block diagram illustrating a hardware configuration of a memory system according to Modification 1 of the second embodiment.

図示するように、変形例1は、図11に示した第2実施形態のメモリシステムにおいて、ハッシュ生成器16を備え、KVSメモリとしてDRAM241とCAM−RAM型のNANDフラッシュメモリ341を用いている。   As shown in the figure, the first modification includes the hash generator 16 in the memory system of the second embodiment shown in FIG. 11, and uses a DRAM 241 and a CAM-RAM type NAND flash memory 341 as the KVS memory.

図12におけるDRAM241は、図1に示したKVSメモリ14と同様な構成を有する。また、CAM−RAM型のNANDフラッシュメモリ341は、図2に示したCAM−RAM142と同様な構成を有する。したがってここでは、図12のDRAM241及びCAM−RAM型のNANDフラッシュメモリ341の詳細な構成及び動作の説明は省略する。   The DRAM 241 in FIG. 12 has the same configuration as the KVS memory 14 shown in FIG. Further, the CAM-RAM type NAND flash memory 341 has the same configuration as the CAM-RAM 142 shown in FIG. Therefore, the detailed configuration and operation of the DRAM 241 and the CAM-RAM type NAND flash memory 341 in FIG. 12 are omitted here.

変形例1における集合演算の動作は、第2実施形態における動作と同様である。さらに、ハッシュ生成器16及びCAM−RAM型のNANDフラッシュメモリ341を備えることにより、集合演算の実行時におけるCPU11の負荷を低減することができる。その他の構成及び効果は前述した第2実施形態と同様である。   The operation of the set operation in the first modification is the same as the operation in the second embodiment. Furthermore, by providing the hash generator 16 and the CAM-RAM type NAND flash memory 341, it is possible to reduce the load on the CPU 11 during execution of the set operation. Other configurations and effects are the same as those of the second embodiment described above.

[4]変形例2
図13は、第2実施形態における変形例2のメモリシステムのハードウェア構成を示すブロック図である。
[4] Modification 2
FIG. 13 is a block diagram illustrating a hardware configuration of a memory system according to Modification 2 of the second embodiment.

図示するように、変形例2は、図11に示した第2実施形態のメモリシステムにおいて、KVSメモリとしてCAM−RAM242とCAM−RAM型のNANDフラッシュメモリ341を用いている。   As shown in the figure, the second modification uses a CAM-RAM 242 and a CAM-RAM type NAND flash memory 341 as the KVS memory in the memory system of the second embodiment shown in FIG.

図13におけるCAM−RAM242とCAM−RAM型のメモリ341は、図2に示したCAM−RAM142と同様な構成を有する。したがってここでは、図12のCAM−RAM242とCAM−RAM型のメモリ341の詳細な構成及び動作の説明は省略する。   The CAM-RAM 242 and the CAM-RAM type memory 341 in FIG. 13 have the same configuration as the CAM-RAM 142 shown in FIG. Therefore, the detailed configuration and operation of the CAM-RAM 242 and the CAM-RAM type memory 341 in FIG. 12 are omitted here.

変形例2における集合演算の動作は、第2実施形態における動作と同様である。さらに、CAM−RAM242及びCAM−RAM型のNANDフラッシュメモリ341を備えることにより、集合演算の実行時におけるCPU11の負荷を低減することができる。その他の構成及び効果は前述した第2実施形態と同様である。   The operation of the set operation in the second modification is the same as the operation in the second embodiment. Furthermore, by providing the CAM-RAM 242 and the CAM-RAM type NAND flash memory 341, it is possible to reduce the load on the CPU 11 when the set operation is executed. Other configurations and effects are the same as those of the second embodiment described above.

実施形態によれば、全文検索システム等で多発する集合演算に係るシステム負荷を著しく低減し、さらに高速に集合演算を行うことが可能なメモリシステムを提供できる。   According to the embodiment, it is possible to provide a memory system that can remarkably reduce a system load related to a set operation that frequently occurs in a full-text search system or the like, and can perform a set operation at high speed.

本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。   Although several embodiments of the present invention have been described, these embodiments are presented by way of example and are not intended to limit the scope of the invention. These novel embodiments can be implemented in various other forms, and various omissions, replacements, and changes can be made without departing from the scope of the invention. These embodiments and modifications thereof are included in the scope and gist of the invention, and are included in the invention described in the claims and the equivalents thereof.

11…CPU、12…メインメモリ、12A…ハッシュテーブル領域、12B…実データ領域、13…メモリコントローラ、14…KVSメモリ、14A…ハッシュテーブル領域、14B…実データ領域、15…バス、16…ハッシュ生成器、17…NANDフラッシュメモリ、24…第1のKVSメモリ、34…第2のKVSメモリ、100…上位システム、141…DRAM、142…CAM−RAM、142A…CAM部、142B…RAM部、241…DRAM、242…CAM−RAM、341…CAM−RAM型のNANDフラッシュメモリ。   DESCRIPTION OF SYMBOLS 11 ... CPU, 12 ... Main memory, 12A ... Hash table area, 12B ... Real data area, 13 ... Memory controller, 14 ... KVS memory, 14A ... Hash table area, 14B ... Real data area, 15 ... Bus, 16 ... Hash Generator: 17 ... NAND flash memory, 24 ... first KVS memory, 34 ... second KVS memory, 100 ... host system, 141 ... DRAM, 142 ... CAM-RAM, 142A ... CAM unit, 142B ... RAM unit, 241 ... DRAM, 242 ... CAM-RAM, 341 ... CAM-RAM type NAND flash memory.

Claims (15)

データと、keyと前記keyに対応するvalueが格納される第1のメモリと、
前記keyと前記valueが格納される第2のメモリと、
前記第1のメモリ及び前記第2のメモリを制御する制御回路と、
前記制御回路と前記第1のメモリとの間に接続されたメモリコントローラとを具備し、
前記メモリコントローラはダイレクトメモリアクセス(DMA)回路を有し、
前記ダイレクトメモリアクセス回路は、前記制御回路を介さずに前記第1のメモリと前記第2のメモリを制御するメモリ。
A first memory storing data, a key and a value corresponding to the key;
A second memory storing the key and the value;
A control circuit for controlling the first memory and the second memory;
A memory controller connected between the control circuit and the first memory;
The memory controller includes a direct memory access (DMA) circuit;
The direct memory access circuit is a memory that controls the first memory and the second memory without going through the control circuit.
前記keyと前記valueは、第1のアドレスと、第1key及び前記第1keyに対応する第1valueとを有し、前記第1key及び前記第1valueは前記第1のアドレスに記憶され、第2のアドレスは前記第1valueに記憶され、
前記第2のアドレスにより指定された前記第1のメモリ内の記憶場所を参照することにより、第2valueを得る請求項1に記載のメモリ。
The key and the value have a first address and a first value corresponding to the first key and the first key, and the first key and the first value are stored in the first address, and a second address Is stored in the first value,
The memory according to claim 1, wherein a second value is obtained by referring to a storage location in the first memory designated by the second address.
前記第1keyの入力に対して、ハッシュ関数によって前記第1key及び前記第1valueが記憶された前記第1のアドレスを生成するハッシュ生成器をさらに具備する請求項2に記載のメモリ。   The memory of claim 2, further comprising: a hash generator that generates the first address in which the first key and the first value are stored by a hash function with respect to the input of the first key. 前記第1のメモリはDRAMである請求項1乃至3のいずれかに記載のメモリ。   The memory according to claim 1, wherein the first memory is a DRAM. 前記第1のメモリは、前記第1keyの入力に対して、前記第1keyと、前記第1のメモリ内に格納されたデータとの比較を行い、一致したデータが記憶された第3のアドレスを出力する連想メモリ(Content-addressable memory:CAM)と、
前記第3のアドレスの指定により書き込み及び読み出しが行われるRAMとを備える請求項1または2に記載のメモリ。
The first memory compares the first key with the data stored in the first memory with respect to the input of the first key, and obtains a third address where the matched data is stored. Content-addressable memory (CAM) to output,
The memory according to claim 1, further comprising a RAM that performs writing and reading according to the designation of the third address.
前記第2のメモリは、前記制御回路により制御されるメインメモリである請求項1乃至5のいずれかに記載のメモリ。   The memory according to claim 1, wherein the second memory is a main memory controlled by the control circuit. 前記メインメモリはDRAMである請求項6に記載のメモリ。   The memory according to claim 6, wherein the main memory is a DRAM. 前記第2のメモリは、前記第1keyの入力に対して、前記第1keyと、前記第2のメモリ内に格納されたデータとの比較を行い、一致したデータが記憶された第3のアドレスを出力するコンテンツ連想メモリ(CAM)と、
前記第3のアドレスの指定により書き込み及び読み出しが行われるRAMとを備える請求項1乃至5のいずれかに記載のメモリ。
The second memory compares the first key with the data stored in the second memory in response to the input of the first key, and obtains a third address where the matched data is stored. Content associative memory (CAM) to output,
The memory according to claim 1, further comprising a RAM that performs writing and reading according to the designation of the third address.
前記第2のメモリはNAND型フラッシュメモリである請求項8に記載のメモリ。   The memory according to claim 8, wherein the second memory is a NAND flash memory. 前記制御回路は、前記keyと前記valueに基づく要求に応じて前記第1のメモリに格納された前記keyと前記valueの記憶容量を可変する請求項1乃至9のいずれかに記載のメモリ。   10. The memory according to claim 1, wherein the control circuit varies a storage capacity of the key and the value stored in the first memory in response to a request based on the key and the value. 前記制御回路は、バスを介して第1、第2のメモリに接続されたCPUである請求項1乃至10のいずれかに記載のメモリ。   The memory according to claim 1, wherein the control circuit is a CPU connected to the first and second memories via a bus. 前記制御回路が行う集合演算は、AND、OR、及びNOTのいずれかである請求項1乃至11のいずれかに記載のメモリ。   The memory according to claim 1, wherein the set operation performed by the control circuit is any one of AND, OR, and NOT. データと、keyと前記keyに対応するvalueが格納された第1のメモリと、前記keyと前記valueが格納された第2のメモリと、前記第1のメモリ及び前記第2のメモリを制御する制御回路とを有するメモリシステムのデータ処理方法において、
ダイレクトメモリアクセス(DMA)回路により、前記制御回路を介さずに前記第1のメモリと前記第2のメモリを制御するデータ処理方法。
A first memory storing data, a key, and a value corresponding to the key; a second memory storing the key and the value; and controlling the first memory and the second memory In a data processing method of a memory system having a control circuit,
A data processing method for controlling the first memory and the second memory by a direct memory access (DMA) circuit without going through the control circuit.
データと、keyと前記keyに対応するvalueが格納される第1のメモリと、
前記keyと前記valueが格納される第2のメモリと、
前記第1のメモリ及び前記第2のメモリを制御する制御回路と、
前記制御回路と前記第1のメモリとの間に接続されたメモリコントローラとを具備し、
前記メモリコントローラはダイレクトメモリアクセス(DMA)回路を有し、
前記ダイレクトメモリアクセス回路は、前記制御回路を介さずに前記第1のメモリと前記第2のメモリを制御するメモリシステム。
A first memory storing data, a key and a value corresponding to the key;
A second memory storing the key and the value;
A control circuit for controlling the first memory and the second memory;
A memory controller connected between the control circuit and the first memory;
The memory controller includes a direct memory access (DMA) circuit;
The direct memory access circuit controls the first memory and the second memory without going through the control circuit.
前記メモリシステムにアクセス可能なホストシステムをさらに具備する請求項14に記載のメモリシステム。   The memory system according to claim 14, further comprising a host system accessible to the memory system.
JP2015116456A 2015-06-09 2015-06-09 MEMORY, DATA PROCESSING METHOD, AND MEMORY SYSTEM Active JP5992577B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2015116456A JP5992577B2 (en) 2015-06-09 2015-06-09 MEMORY, DATA PROCESSING METHOD, AND MEMORY SYSTEM

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2015116456A JP5992577B2 (en) 2015-06-09 2015-06-09 MEMORY, DATA PROCESSING METHOD, AND MEMORY SYSTEM

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2011173358A Division JP5762878B2 (en) 2011-08-08 2011-08-08 Memory system having a key-value store

Publications (2)

Publication Number Publication Date
JP2015181043A true JP2015181043A (en) 2015-10-15
JP5992577B2 JP5992577B2 (en) 2016-09-14

Family

ID=54329238

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015116456A Active JP5992577B2 (en) 2015-06-09 2015-06-09 MEMORY, DATA PROCESSING METHOD, AND MEMORY SYSTEM

Country Status (1)

Country Link
JP (1) JP5992577B2 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113126909A (en) * 2019-12-31 2021-07-16 美光科技公司 Cursor lookup operation using deleted record spans

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05334234A (en) * 1992-05-27 1993-12-17 Nec Corp High speed dma transferring device
US20030135695A1 (en) * 2002-01-14 2003-07-17 Thomas Gray Hardware-assisted tuple space

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05334234A (en) * 1992-05-27 1993-12-17 Nec Corp High speed dma transferring device
US20030135695A1 (en) * 2002-01-14 2003-07-17 Thomas Gray Hardware-assisted tuple space

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
JPN7016000977; Yi Shan et al.: 'FPMR: MapReduce Framework on FPGA A Case Study of RankBoost Acceleration' Proceedings of the 18th annual ACM/SIGDA international symposium on Field programmable gate arrays , 20100221, pp.93-102, ACM *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113126909A (en) * 2019-12-31 2021-07-16 美光科技公司 Cursor lookup operation using deleted record spans

Also Published As

Publication number Publication date
JP5992577B2 (en) 2016-09-14

Similar Documents

Publication Publication Date Title
JP5762878B2 (en) Memory system having a key-value store
JP5524144B2 (en) Memory system having a key-value store system
US11604834B2 (en) Technologies for performing stochastic similarity searches in an online clustering space
WO2015145647A1 (en) Storage device, data processing method, and storage system
US20180300330A1 (en) Proactive spilling of probe records in hybrid hash join
CN103914483A (en) File storage method and device and file reading method and device
US20170329852A1 (en) Page query method and data processing node in oltp cluster database
CN102959548A (en) Data storage method, search method and device
JP5646775B2 (en) Memory system having a key-value store system
JP6258436B2 (en) Memory system local controller
US10191846B2 (en) Cache memory for particular data
JP5992577B2 (en) MEMORY, DATA PROCESSING METHOD, AND MEMORY SYSTEM
JP5833212B2 (en) Memory system having a key-value store system
JP6034467B2 (en) system
US20160292168A1 (en) File retention
US8775746B2 (en) Information processing system and method
US11507799B2 (en) Information processing apparatus and method of operating neural network computing device therein
JP6205386B2 (en) Semiconductor device and information writing / reading method
US11914587B2 (en) Systems and methods for key-based indexing in storage devices
JP6384151B2 (en) Storage device, control device, storage device control method, and program
CN116775699A (en) Batch-flow integrated data processing system and method
JP2020030873A (en) Memory system
JPH0256038A (en) Access control system for memory
JPH02157934A (en) Variable length data processor

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20160411

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20160419

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160615

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20160719

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160817

R151 Written notification of patent or utility model registration

Ref document number: 5992577

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350