KR20130018602A - Key-value 스토어를 포함하는 메모리 시스템 - Google Patents

Key-value 스토어를 포함하는 메모리 시스템 Download PDF

Info

Publication number
KR20130018602A
KR20130018602A KR1020120086438A KR20120086438A KR20130018602A KR 20130018602 A KR20130018602 A KR 20130018602A KR 1020120086438 A KR1020120086438 A KR 1020120086438A KR 20120086438 A KR20120086438 A KR 20120086438A KR 20130018602 A KR20130018602 A KR 20130018602A
Authority
KR
South Korea
Prior art keywords
key
address
value
data
memory
Prior art date
Application number
KR1020120086438A
Other languages
English (en)
Other versions
KR101397353B1 (ko
Inventor
다까오 마루까메
아쯔히로 끼노시따
고스께 다쯔무라
Original Assignee
가부시끼가이샤 도시바
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 가부시끼가이샤 도시바 filed Critical 가부시끼가이샤 도시바
Publication of KR20130018602A publication Critical patent/KR20130018602A/ko
Application granted granted Critical
Publication of KR101397353B1 publication Critical patent/KR101397353B1/ko

Links

Images

Classifications

    • 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
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/903Querying
    • G06F16/90335Query processing
    • G06F16/90339Query processing by using parallel associative memories or content-addressable memories
    • 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/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/13File access structures, e.g. distributed indices
    • G06F16/137Hash-based
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/16File or folder operations, e.g. details of user interfaces specifically adapted to file systems
    • G06F16/164File meta data generation
    • 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
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Human Computer Interaction (AREA)
  • Computational Linguistics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

본 발명의 일 실시형태에 따르면, key와 상기 key에 대응하는 value의 쌍인 key-value 데이터를 포함하는 key-value 스토어를 포함하는 메모리 시스템(10)은, 인터페이스(11), 메모리 블록(16), 어드레스 취득 회로(14) 및 컨트롤러(13)를 포함한다. 인터페이스(11)는, 데이터 기입/판독 요구 또는 상기 key-value 스토어에 기초한 요구를 수신한다. 메모리 블록(16)은, 데이터를 기억하는 데이터 영역(161)과, 상기 key-value 데이터를 포함하는 메타데이터 테이블(162)을 갖는다. 어드레스 취득 회로(14)는, 상기 key의 입력에 응답하여, 제1 어드레스를 취득한다. 컨트롤러(13)는, 메모리 블록(16)에 대한 상기 데이터 기입/판독 요구를 실행하며, 취득된 상기 제1 어드레스를 상기 메모리 블록(16)에 출력하고, 상기 key-value 스토어에 기초한 상기 요구를 실행한다. 상기 컨트롤러(13)는 상기 key에 대응하는 value를 상기 인터페이스(11)를 통해 출력한다.

Description

KEY-VALUE 스토어를 포함하는 메모리 시스템{MEMORY SYSTEM INCLUDING KEY-VALUE STORE}
본 명세서에 개시된 실시형태는 일반적으로 호스트 시스템에 의해 액세스되며, key-value 스토어를 포함하는 메모리 시스템에 관한 것이다.
일반적인 호스트 시스템, 예를 들어 컴퓨터 시스템에 포함되는 스토리지 장치로서, 자기식의 HDD(하드 디스크 드라이브)나 비휘발성 반도체 메모리를 포함하는 SSD(고체 드라이브) 등이 있다. SSD는 스토리지로 분류되지만, 규모와 기능이 확장된 메모리 시스템이라고도 할 수 있다.
메모리 시스템은, 예를 들어 인터페이스, 제1 메모리 블록, 제2 메모리 블록 및 컨트롤러를 포함한다. 제1 메모리 블록은 데이터로서의 파일을 저장하고, 제2 메모리 블록은 데이터 기입/판독 시의 버퍼 메모리로서 기능한다. 제1 메모리 블록은 비휘발성이며 대용량이지만 제2 메모리 블록에 비해 액세스 속도가 느리다. 제2 메모리 블록은 인터페이스의 통신 속도와 제1 메모리 블록의 기입/판독 속도 사이의 속도차를 보충하기 위하여 이용된다. 예를 들어, 제1 메모리 블록은 비휘발성의 플래시 메모리이며, 제2 메모리 블록은 휘발성의 DRAM 또는 SRAM이다. 이러한 종래의 스토리지형의 메모리 시스템에서는, 어드레스 지정(addressing)에 의한 데이터 기입/판독 기능을 실현하기 위한 구성을 갖는다.
한편, 메모리 시스템에 저장되어 있는 어떤 텍스트와 연관된 다른 텍스트, 바이너리 파일에서의 특정 비트 패턴, 동화상 파일에서의 특정 패턴, 음성 파일에서의 특징적인 음성 패턴 등의 데이터를 효율적으로 추출(extract)하기 위해서는, 데이터 지정에 의한 데이터 판독 기능을 갖게 하는 것이 바람직하다. 이로 인해, 통상의 데이터뿐만 아니라, 데이터에 연관된 메타데이터(metadata)도 함께 저장하고, 원하는 데이터를 얻기 위하여 메타데이터를 참조하는 방법이 이용된다.
메타데이터의 관리 방법은 크게 두가지 형태로 분류할 수 있으며, 표형식을 갖는 데이터베이스형과, 데이터가 일대일로 대응하는 key-value 스토어(KVS)가 있다. KVS에서는, 검색 요구로서 key가 부여되면, key에 대응된 value이 출력된다.
종래 시스템에서 KVS 방식을 실현하기 위해서는, 메모리 시스템내에 저장된 데이터의 관리나, 복수의 메타데이터를 호스트 시스템의 주기억 장치(DRAM)에 데이터를 전개(expanding)하고, 중앙 연산 장치(CPU)을 이용하여 연산(operation)을 행하고, 다시 스토리지로부터 데이터를 판독하여 그것들을 대조(collating)하는, 반복적인 데이터 입출력 처리를 실행한다.
종래 시스템에서의 key-value 스토어(KVS) 방식과 문제점을 설명한다.
종래 SSD에서 KVS를 실현하기 위해서, 데이터는 파일로서 저장되고, 데이터에 부속되는 key-value 데이터(또는 key-value 쌍)의 메타데이터도 파일로서 저장된다. 즉, key-value 스토어는 파일 시스템 레벨보다 상위의 호스트 시스템, 즉 OS에 실장된 파일 시스템 또는 애플리케이션에 의해 실현된다.
이 경우, key-value 스토어는 범용적인 하드웨어 구성에 의해 실현될 수 있다. 그러나, 메타데이터가 통상의 데이터와 동일하게 취급되기 때문에, 메타데이터의 판독/기입 또는 검색 조작은, 호스트 시스템이 메타데이터 파일을 메인 메모리(예를 들어, DRAM)에서 판독한 후에 행해진다. 이에 의해, 예를 들어 이하와 같은 적어도 3개의 문제점이 발생한다.
첫번째로, 파일 액세스 성능이 저하된다. 일반적으로, 메인 메모리의 사이즈는 SSD의 사이즈보다 작기 때문에, 메인 메모리 사이즈보다 큰 메타데이터 파일을 한번에 취급할 수 없다. 이로 인해, 메타데이터 파일은, 예를 들어 key마다 분할된다. 취급하기 쉬운 사이즈의 메타데이터 파일을 필요에 따라 메인 메모리에서 판독하고 이용한다. 필요한 key-value가 얻어질 때까지 이 과정을 반복한다. 메타데이터 파일의 수에 따른 파일 액세스가 SSD에 대하여 발생한다. SSD의 파일 액세스 속도가 메타데이터 판독 요구의 속도보다 느릴 경우, 호스트 시스템 및 로컬 시스템(메모리 시스템) 전체에 있어 속도가 제한된다(rate-limited).
두번째로, CPU의 부하가 증대한다. 메타데이터의 작성, 관리, 대조(검색)은 전부 CPU에 의해 처리되기 때문에, 메타데이터의 처리 동안, CPU에 부하가 발생한다. 특히, 메타데이터는 데이터에 대응하여 생성되기 때문에, 데이터를 갱신할 때는, 대응하는 메타데이터를 메타데이터 파일로부터 검색하여 갱신할 필요가 있다. 또한, 메타데이터 검색도 CPU에 의해 완전히 소프트웨어 알고리즘을 이용하여 행하지 않으면 안되기 때문에, CPU에는 메타데이터 관리를 위한 부하가 새롭게 부과된다.
세번째로, 버스 또는 인터페이스에 대한 부하가 증대한다. 첫번째, 두번째 문제의 결과로서, 호스트 시스템과 로컬 시스템(메모리 시스템)은 메타데이터 정보를 빈번하게 교환한다. 따라서, 버스 및 인터페이스의 트래픽이 증대한다.
도 1은 제1 메모리 블록 내의 실제(real) 데이터 영역과 메타데이터 테이블 사이의 관계 및 key-value 스토어의 메커니즘을 모식적으로 도시하는 도면이다.
도 2a 및 도 2b는 도 1의 요소와 집합(set) 사이의 관계를 나타내는 도면이다.
도 3a, 도 3b, 도 3c 및 도 3d는 key-value 스토어에서의 구체적인 처리 수순을 도시하는 흐름도이다.
도 4는 제1 실시형태의 메모리 시스템의 하드웨어 구성을 도시하는 블록도이다.
도 5는 제2 실시형태의 메모리 시스템의 하드웨어 구성을 도시하는 블록도이다.
도 6은 제3 실시형태의 메모리 시스템의 하드웨어 구성을 도시하는 블록도이다.
도 7은 제4 실시형태의 메모리 시스템의 하드웨어 구성을 도시하는 블록도이다.
도 8은 제5 실시형태의 메모리 시스템의 하드웨어 구성을 도시하는 블록도이다.
도 9는 제6 실시형태의 메모리 시스템의 하드웨어 구성을 도시하는 블록도이다.
도 10은 제7 실시형태의 메모리 시스템의 하드웨어 구성을 도시하는 블록도이다.
도 11은 제8 실시형태의 메모리 시스템의 하드웨어 구성을 도시하는 블록도이다.
도 12는 변형예 1의 실제 데이터 영역과 메타데이터 테이블을 모식적으로 도시하는 도면이다.
도 13은 변형예 2의 실제 데이터 영역과 메타데이터 테이블을 모식적으로 도시하는 도면이다.
도 14는 변형예 3의 실제 데이터 영역과 메타데이터 테이블을 모식적으로 도시하는 도면이다.
도 15는 변형예 3의 key-value 스토어의 다른 실현 방법을 모식적으로 도시하는 도면이다.
도 16은 변형예 4의 실제 데이터 영역과 메타데이터 테이블을 모식적으로 도시하는 도면이다.
일반적으로, 일 실시형태에 따르면, key와 key에 대응하는 value의 쌍인 key-value 데이터를 포함하는 key-value 스토어를 포함하는 메모리 시스템이, 인터페이스, 제1 메모리 블록, 어드레스 취득 회로 및 컨트롤러를 포함한다. 인터페이스는 데이터 기입/판독 요구 또는 key-value 스토어에 기초한 요구를 수신한다. 제1 메모리 블록은 데이터를 기억하는 데이터 영역과, key-value 데이터를 포함하는 메타데이터 테이블을 갖는다. 어드레스 취득 회로는 key의 입력에 응답하여, 상기 key-value 데이터가 기억된 제1 어드레스를 취득한다.
컨트롤러는 제1 메모리 블록에 대한, 어드레스 지정에 의한 데이터 기입/판독 요구를 실행하며, 어드레스 취득 회로에 의해 취득된 제1 어드레스를 제1 메모리 블록에 출력하고, key-value 스토어에 기초한 요구를 실행한다. 컨트롤러는 key에 대응하는 value를 상기 인터페이스를 통해 출력한다.
이하의 설명에서, 거의 동일한 기능 및 구성을 갖는 구성 요소에 대해서는 동일 부호를 부여하고, 중복 설명은 필요한 경우에만 한다.
메모리 시스템에 저장되어 있는 메타데이터가 key-value 스토어에 의해 저장된다. key-value 데이터의 효율적인 저장 방법과 구성을 제공하기 위한 실시형태를 첨부된 도면을 참조하여 설명한다.
<메타데이터 테이블과 key-value 스토어>
우선, 본 실시형태의 기본 원리가 되는 메타데이터 테이블과 key-value 스토어에 대하여 설명한다.
도 1은 제1 메모리 블록 내의 실제 데이터 영역과 메타데이터 테이블 사이의 관계 및 key-value 스토어의 메커니즘을 모식적으로 도시하고 있다. 수치나 기호는 설명의 편의를 위해 이용되는 것이며, 실시형태와는 반드시 대응되지 않음에 주목한다.
도 1에 도시된 바와 같이, 메모리 액세스 가능한 물리 어드레스 공간 내에는 어드레스 지정의 실제 데이터 영역(실제 어드레스 공간)(161)과, 메타데이터 테이블(162)이 존재한다. 실제 데이터 영역(161)은 종래 개념의 논리 어드레스 공간에 그대로 대응한다. 메타데이터 테이블(162)은 메모리 시스템측이 필요에 따라 이용하는 데이터 영역이기 때문에, 유저 또는 클라이언트의 통상적인 이용에서는 명시적으로 액세스되지 않는다. 단, 시스템에 대한 테스트 커맨드를 위해서는 명시적으로 액세스하는 것이 허가된다. 유저는 기본적으로 인터페이스 커맨드를 이용하여 메모리 시스템에 대하여, 실제 데이터 또는 메타데이터를 조작하는 요구를 입력한다. 메모리 시스템은 내부적으로 처리를 행하고, 응답으로서 신호 또는 데이터를 유저(호스트 시스템)에 회신한다(return).
메모리 시스템은 논리 어드레스를 물리 어드레스에 변환하는데 이용되는 논리 어드레스-물리 어드레스 변환 테이블 중에서, 실제 데이터 영역(161)과 메타데이터 테이블(162)의 저장 영역을 구별한다. 메타데이터 테이블(162) 내의 메타데이터 어드레스(metadata address)는 필요에 따라 생성된다. 따라서, key-value 데이터의 작성 요구가 없으면, 제1 메모리 블록 내에 존재하지 않을 수 있다.
이와 같이, 본 실시형태의 메모리 시스템에서의 메타데이터 테이블(162)의 저장 용량은 고정되어 있는 것이 아니고, key-value 스토어에 기초하는 요구에 따라 임의로 변경(확장 또는 축소)될 수 있다. 이로 인해, 유저는 메타데이터를 임의로 취급하면서, 액세스 가능한 물리 메모리 공간을 최대 효율로 이용할 수 있다. 극단적으로 말하면, 메타데이터를 전혀 취급하지 않을 수도 있다. 이 경우, 물리 메모리 공간이 최대로 이용될 수 있다.
반대로, 메타데이터를 충분히 활용하는 경우에는, 실제 데이터 영역(161) 이상의 사이즈로 메타데이터 테이블(162)을 확대할 수 있다. 이 경우에서도, 메타데이터의 관리는 메모리 시스템(로컬 시스템)측에서 유효하므로, 호스트 시스템측은 메타데이터의 관리로부터 해제되어(released) 있다. 따라서, 유저(호스트 시스템측)은 통상의 이용에서 메타데이터의 관리를 의식할 필요가 없다.
메타데이터 테이블(162)에는 key-value 쌍이 저장되어 있다. 그러나, 데이터의 엔티티(entities)는 실제 데이터 영역(실제 어드레스 공간)(161)에 존재한다.
본 실시형태에서의 메타데이터 테이블(162)과 실제 데이터 영역(161)의 실제 데이터 사이의 관계에 대해서, key-value 스토어에 의한 데이터 추출의 구체예를 이용하여 설명한다.
key-value 스토어(KVS)는 key와 value의 집합을 기입하고, key를 지정함으로써 value을 판독할 수 있는 데이터베이스 관리 방식이다. KVS는 네트워크를 통해 이용되는 예가 많지만, 데이터의 저장 위치가 로컬 메모리 또는 스토리지 시스템인 것은 틀림없다. 메타데이터라고 할지라도 실제 데이터 어드레스 공간 내에 저장되어 있다.
데이터는, 통상, 데이터를 저장하는 메모리의 선두 어드레스를 지정함으로써 판독된다. 데이터는 파일의 형태를 취할 수 있다. 파일 시스템에 따라서는, 실제 데이터 어드레스 공간이, 예를 들어 매 512-바이트 섹터의 단위로 관리된다. 대안으로서, 파일 시스템을 한정할 필요가 없으면, 예를 들어 NAND 플래시 메모리의 판독/기입의 페이지 사이즈인, 4 또는 8KB 단위로 실제 데이터 어드레스 공간이 관리되어도 된다.
도 1은 실제 데이터 영역(161)에 실제 어드레스에 대응하는 파일(데이터)이 저장되는 상태를 개념적으로 도시하고 있다. 예를 들어, &001의 실제 데이터 어드레스에 파일 "a-file.txt"의 파일 ID "%a-file.txt"가 저장되어 있다. &002에는 "This is a book"이라는 파일 내용이 저장되어 있다. 실제로는, 실제 데이터 어드레스는 바이트 단위로 관리되는 것이 일반적이다. 따라서, &001과 &002과 같이 연속하는 것은 특수한 예이다.
도 1의 메타데이터 테이블(162)에 저장된 key-value 쌍이 도시되어 있다. key는 데이터 파일로부터 추출된 검색 대상의 요소 또는 집합이다. 이 예에서는 key는 &001과 &011 요소를 포함하는 집합이다. value은 key가 발견되었을 때에 회신하는 value이다. 이 예에서는,"book"이란 단어를 포함하는 데이터 파일의 파일 ID의 집합을, 실제 데이터 어드레스 공간의 어드레스의 형태로 value를 저장하고 있다.
도 1에 나타낸 순서에 따라 설명한다.
(i) key를 엔트리(entry)로서 입력하고, 메타데이터 테이블로부터 value을 검색한다.
(ii) 발견된 key에 대응하는 value은 key가 소속되는 집합을 저장하고 있는 실제 데이터 어드레스이므로, 사실은 데이터 어드레스가 참조된다.
(iii) 참조된 실제 데이터 어드레스에 기입된 데이터를 출력한다.
이러한 실제 데이터 어드레스와 메타데이터 테이블 사이의 관계 및 key-value 쌍의 관계는, 도 2a 및 도 2b에 도시한 바와 같은, 요소와 집합 사이의 관계이다.
즉, 통상의 파일에서는, 도 2b에 도시된 바와 같이, 예를 들어 "a-file.txt"이란 파일명의 파일이 집합이며, "This is a book"이란 텍스트 데이터의 각각의 단어가 요소이다. 파일 ID도 하나의 요소이다.
그러나, 메타데이터 테이블(메타데이터 어드레스 공간)에서, 도 2a에 도시된 바와 같이, 집합과 요소 사이의 관계가 반전되어 재배열될 수 있다. 즉, 관계가 "전치(inverted)"의 관계로 변환될 수 있다. "book"이란 집합에는, "a-file.txt" 및 "b-file.txt"라는 파일명이 요소로서 저장된다. key-value 데이터에서, 재배열된 집합명("book")을 검색하여, 요소("a-file.txt" 및 "b-file.txt")를 얻는다. 이는, 일반적으로, 전문 검색에서 실행되고 있는 전치 파일의 생성과 검색 수순 바로 그것이며, key-value 데이터의 실용적 일례라 할 수 있다.
전치 파일은 전문 검색 기능을 실현하는 방법 중 하나인 전치 인덱스법에서 이용되는 검색을 위한 색인 파일이다. 전치 인덱스법에서는, 각각의 콘텐츠마다 콘텐츠를 포함하는 파일의 리스트를 저장하는 전치 파일이라 불리는 색인 데이터 파일을 미리 작성한다. 정기적으로 한번에 또는 파일의 추가/삭제때마다 전치 파일의 내용을 갱신한다. 콘텐츠의 검색 요구에 대하여는, 검색 대상의 콘텐츠에 대응하는 전치 파일의 내용을 검색 결과로서 출력한다. 이 때문에, 전문 검색 때마다 모든 파일의 내용을 조사할 필요가 없다. 따라서, 검색을 고속화할 수 있다. 전치 파일은 key-value 데이터의 일례이다. 본 실시형태는 이것에 한정되지 않음에 주목한다.
<key-value 스토어의 커맨드>
호스트 시스템은 메모리 시스템의 호스트 인터페이스에 key-value 스토어 요구를 위한 다음 커맨드를 부여한다.
key-value 스토어에 기초한 요구를 위한 커맨드는, key에 연관된 새로운 집합(value)을 등록하는 커맨드(PUT), 어떤 key에 연관된 집합(value)에 새로운 요소(value)을 추가하는 커맨드(WRITE), key에 연관된 집합(value)의 요소를 버퍼에 저장하고 사이즈를 회신하는 커맨드(GET) 및 버퍼에 저장되어 있는 요소(value)을 판독하는 커맨드(READ)를 포함한다.
커맨드 명칭은 필요에 따라 변경될 수 있다. key-value 스토어에 기초한 요구를 위해 새로운 커맨드가 추가될 수 있다. 예를 들어, 집합(key)에 속하는 요소(value)를 배열하기 위한 커맨드, 또는 예를 들어 메타데이터 테이블 내의 집합(key)의 재배열이나 요소(value)들의 비교 등을 명령하는 커맨드가 추가될 수 있다.
본 실시형태에서는, 커맨드 요구에 따라, 메타데이터 테이블과 실제 데이터 영역이 협력 커맨드를 이용한 경우의 key-value 데이터의 추가, 검색 등의 구체적인 수순을 도 3a, 도 3b, 도 3c 및 도 3d의 흐름도에 도시한다.
(1) 새로운 key-value 데이터를 등록하기 위해서(PUT), 도 3a에 도시된 바와 같이, key가 메타데이터 테이블에 이미 존재하고 있는지를 검색한다(스텝 S1 및 S2). key가 발견되면, 출력에 에러를 회신한다. 즉, key가 이미 존재하고 있다는 것을 나타내는 메시지를 회신하여 처리를 종료한다(스텝 S3).
한편, key가 발견되지 않으면, value의 처리로 진행한다. value이 실제 데이터 영역(실제 데이터 어드레스)에 저장되어 있는지를 검색한다(스텝 S4). key-value 데이터의 등록 시점에서, value가 실제 데이터 영역에 저장되어 있지 않으면, value를 실제 데이터 영역에 추가한다(스텝 S5). value이 저장되어 있으면, 그대로 key를 메타데이터 테이블에 저장하고, key에 value의 실제 데이터 어드레스를 연관시켜 등록한다(스텝 S6).
메모리 시스템 내에서 논리 어드레스-물리 어드레스 변환 테이블이 관리되는 경우, 테이블을 관리하는 기능 회로에 대하여 메타데이터 테이블의 갱신을 통지한다(스텝 S7). 마지막으로, value의 실제 데이터 사이즈를 출력하고, 처리를 종료한다(스텝 S8).
(2) 이미 존재하는 key에 대하여 새로운 value를 추가하기 위해서(WRITE), 도 3b에 도시된 바와 같이, key가 메타데이터 테이블에 존재하는지를 검색한다(스텝 S11 및 S12). key가 발견되지 않으면, 출력에, 예를 들어 size=0을 회신하여 key가 존재하지 않음을 통지한다(스텝 S13).
한편, key가 발견되면, key에 대응하는 value에 저장된 실제 데이터 어드레스가 지정하는 저장 위치를 참조하고(스텝 S14), 저장 위치에 새로운 value를 추가한다. 우선, value의 저장 위치에 빈 공간이 있는지를 조사한다(스텝 S15). value의 저장 위치에 빈 공간이 없는 경우, 다른 value의 실제 데이터 어드레스로 점프하는데 이용되는 포인터를 저장한다(스텝 S16). 다음에, 어드레스가 지정하는 저장 위치에 새로운 value를 추가한다(스텝 S17).
value의 저장 위치에 빈 공간이 있는 경우에는, value의 실제 데이터 어드레스가 비어 있는 저장 위치에 새로운 value를 추가한다(스텝 S17). 마지막으로, value의 실제 데이터 사이즈를 출력하고, 처리를 종료한다(스텝 S18).
(3) key에 연관된 집합(value)을 얻기 위해서(GET), 도 3c에 도시된 바와 같이, 우선, key가 메타데이터 테이블에 존재하는지를 조사하는 검색을 한다(스텝 S21 및 S22). key가 발견되지 않으면, 출력에, 예를 들어, size=0을 회신하여 key가 존재하지 않는다는 것을 통지한다(스텝 S23).
한편, key가 발견되면, key에 대응하는 value에 저장된 실제 데이터 어드레스가 지정하는 저장 위치를 참조한다(스텝 S24). 실제 데이터 어드레스의 저장 위치에 저장된 value를 판독하여 버퍼 메모리 또는 레지스터 메모리에 저장한다(스텝 S25). 마지막으로, value의 실제 데이터 사이즈를 출력하고, 처리를 종료한다(스텝 S26).
(4) 버퍼 메모리(또는, 레지스터 메모리)에 저장되어 있는 집합(value)의 요소를 출력하기 위해서(READ), 도 3d에 도시된 바와 같이, 집합(value)의 요소가 저장된 버퍼 메모리 내의 저장 장소를 참조한다(스텝 S31). 집합(value)의 요소가 있는지를 조사한다(스텝 S32). 집합(value)의 요소가 발견되지 않으면, 출력에, 예를 들어, S=NULL을 회신하여 집합(value)의 요소가 존재하지 않는다는 것을 통지한다(스텝 S33).
한편, 집합(value)의 요소가 발견되면, 지정된 사이즈에 대응하는 집합(value)의 요소를 판독한다(스텝 S34). 판독한 집합(value)의 요소를 출력하고, 처리를 종료한다(스텝 S35). 이상, 사이즈 지정에 의해 요소를 판독하는 예에 대해서 설명했다. 실제로는 버퍼 메모리의 위치를 특정함으로써 판독할 수 있다.
(3)의 수순에서, 호스트 시스템에 value의 실제 데이터 어드레스의 선두 어드레스를 회신할 수 있음에 주목한다. 이것은, (3)의 수순 후에는 대개 (4)의 수순이 행해지게 되므로, value의 실제 데이터를 판독하기 편하기 때문이다. 어떻게 수순을 정의할지는 커맨트 집합의 정의에 의존하고 있어서, 본 출원에서는 key-value 스토어의 수순을 설명하기 위하여 구체적인 커맨트 집합을 이용하여 설명하고 있으나, 상기 설명에 한정되지 않는다. 다른 수순도 마찬가지로 상기 설명에 한정되지 않는다.
메모리 시스템이 Hash-CAM을 이용하고 있는 경우에는, key와 value가 항상 일치하지는 않는다. 즉, key와 value가 항상 서로 연관되지 않는다. Hash-CAM에 대해서는 나중에 상세하게 서술함에 주목한다.
이로 인해, Hash-CAM에서는, 메타데이터 테이블 내에서 key를 검색하는 수순에, key에 대응하는 value를 참조하고, 실제 데이터와 key가 일치하는지를 판별하는 수순이 추가된다. 실제 데이터와 key가 일치하지 않으면, Hash-CAM에서의 key-value 스토어의 어드레스 관리 룰(예를 들어, 인접하는 어드레스를 조사함)에 따라, 다른 key 범위의 메타데이터 어드레스로 지정함으로써 검색을 다시 한다.
실제의 수순이나 커맨드는 상기 설명에 한정되지 않는다. 예를 들어, 실제의 운용에서, 복수의 key가 발견되었을 경우에는, 일시적으로 플래그를 설정하고 value를 통합하여 판독하는 등, 방법은 다양하다.
전술한 바와 같이, 예를 들어, 집합(key)에 속하는 요소(value)을 배열하기 위한 커맨드, 또는 메타데이터 테이블 내의 집합(key)의 재배열하거나 요소(value)들의 비교 등을 명령하는 커맨드가 추가될 수 있다.
key와 value는 집합과 요소이거나, 또는 역의 관계를 취할 수 있음에 주목한다. 대안으로서, key와 value는 일대일로 대응하기 때문에, 양자가 함께 집합 또는 요소일 수도 있다.
본 실시형태에서는, 호스트 인터페이스가 검색 커맨드를 수신할 수 있거나, 호스트 인터페이스를 통해 로컬 컨트롤러나 메모리 컨트롤러 등이 검색 커맨드를 수신하고, key-value 스토어의 일련의 처리를 실행할 수 있다. 메모리 시스템 내에 로컬 컨트롤러 또는 메모리 컨트롤러에 DMAC(Direct Memory Access Controller)가 추가될 수 있다. 이 경우, 메모리 시스템이 주로 key-value 스토어의 동작을 제어할 수 있다. 경우에 따라서는, 메모리 시스템 외의 다른 메모리(예를 들어, 호스트 시스템의 메인 메모리)를 주로 액세스할 수 있다.
[제1 실시형태]
이하, 본 실시형태의 구체적인 하드웨어 구성에 대해서 첨부되는 도면을 이용하여 설명한다.
제1 실시형태의 메모리 시스템의 하드웨어 구성에 대하여 설명한다.
도 4는 제1 실시형태의 메모리 시스템의 하드웨어 구성을 도시하는 블록도이다.
도 4에 도시된 바와 같이, 메모리 시스템(또는 로컬 시스템)(10)은, 호스트 인터페이스(11), 로컬 컨트롤러(12), 메모리 컨트롤러(또는 칩 컨트롤러)(13), 고정-길이 데이터 생성기(14), 레지스터 메모리(또는 캐시 메모리, 페이지 레지스터, R/W 레지스터, 페이지 캐시 등이라고도 함)(15) 및 제1 메모리 블록(16)을 포함한다.
메모리 시스템(10)의 호스트 인터페이스(11)에는, 예를 들어, AMBA, SATA, PCIe 또는 USB 등의 버스를 통하여 호스트 시스템이 접속되어 있다. 호스트 시스템은 CPU(101) 및 메인 메모리(102)을 포함한다.
제1 메모리 블록(16)은, 실제 데이터 영역(161)과 실제 데이터 영역(161)로부터 추출된 메타데이터 테이블(162)을 저장한다. 메타데이터 테이블(162)은 key-value 데이터를 갖는다.
메타데이터 테이블(162)의 key-value 데이터는 데이터에 연관된 메타데이터인 key와, 연관된 데이터의 실제 데이터 어드레스의 선두 어드레스(value)를 리스트로서 저장한다. key-value 데이터를 이용하여, 예를 들어, 상술한 전치 파일 등을 형성할 수 있다.
제1 메모리 블록(16)에는, 예를 들어, 비휘발성 반도체 메모리 중 하나인 NAND 플래시 메모리가 이용된다. NAND 플래시 메모리는, 1개의 칩 또는 기억 용량을 증대시키기 위하여 복수의 칩으로 형성될 수 있다. 또한, 제1 메모리 블록(16)으로서는, MRAM(Magnetic Random Access Memory)이나 ReRAM(Resistive Random Access Memory) 등의 기억 비휘발성을 갖는 임의의 다른 고체 칩 LSI를 이용할 수 있다. 그러나, 제1 메모리 블록(16)은 이들에 한정되는 것은 아니다.
호스트 인터페이스(11)는 호스트 시스템으로부터 어드레스 지정에 의한 통상의 데이터 조작 요구, 즉 데이터 기입 및 판독의 요구와, 메타데이터 테이블(162) 내의 key-value 스토어 데이터에 대한 기입 및 판독의 요구를 수신할 수 있다.
제1 메모리 블록(16)에 대한 기입 및 판독 요구는, 메모리 컨트롤러(13)에 의해 수신되고 제어된다. 메모리 컨트롤러(13)와 제1 메모리 블록(16) 사이에는, 고정-길이 데이터 생성기(14)와 레지스터 메모리(15)가 접속되어 있다. 레지스터 메모리(15)는, 페이지 레지스터, R/W 레지스터, 페이지 캐시 등으로 불리지만, 기입 또는 판독을 행할 때에, 일시적으로 저장 영역으로서 이용된다. 특히, 레지스터 메모리(15)는 연산 기능을 가져서, 일반적으로 NAND 플래시 메모리의 다치 동작을 제어하기 위하여 이용된다. 본 실시형태에서도 레지스터 메모리(15)가 마찬가지로 이용된다.
본 실시형태는, 제1 메모리 블록(16)에 대하여 key-value 데이터의 기입 및 판독을 행하는데 이용되는 고정-길이 데이터 생성기(14), 예를 들어 해시 생성기를 구비하는 것을 특징으로 한다. 해시 생성기는, key의 입력에 대하여 key-value 데이터가 기억된 어드레스를 취득하는 어드레스 취득 회로로서 기능한다. 해시 생성기는 해시 함수를 생성하는 기능을 갖는 전자 회로와 간주될 수 있다. 그러나, 전용 회로를 이용하거나, 또는 범용 연산 회로에 해시 함수 알고리즘을 입력할 수 있다.
해시 생성기에 의해 생성된 해시 value(어드레스)는 충돌할 가능성이 있다. 메모리 컨트롤러(13)는 해시 value 충돌 후의 처리를 위한 비교 회로나 어드레스 관리 회로를 포함한다. 고정-길이 데이터 생성기(해시 생성기)(14)와 어드레스 관리 회로를 이용한 데이터 저장/검색 방법에 대해서는 후술한다. 이상, 메모리 컨트롤러(13)와 고정-길이 데이터 생성기(14)가 개별로 형성된 예를 나타냈다. 그러나, 메모리 컨트롤러(13)가 고정-길이 데이터 생성기(14)를 포함할 수 있다.
본 실시형태의 구성에, 호스트 인터페이스(11)와 제1 메모리 블록(16) 사이의 신호 송수신을 제어하기 위한 로컬 컨트롤러(12)를 더 포함한다. 로컬 컨트롤러(12)는 제1 메모리 블록(16)로부터 출력된 데이터에 대한 ECC(Error Correction Code) 회로를 포함한다. ECC 회로는 메모리 컨트롤러(13)에 포함되어 있으면, 로컬 컨트롤러(12)에 포함될 필요는 없음에 주목한다.
로컬 컨트롤러(12)는 제1 메모리 블록(16)의 논리 어드레스를 물리 어드레스로 변환하는, 논리 어드레스- 물리 어드레스 변환 테이블을 관리하는 기능을 가질수 있다. 이에 의해 로컬 컨트롤러(12)는 실제 데이터 영역(161) 및 메타데이터 테이블(162)과 논리 어드레스 사이의 대응을 관리할 수 있다. 즉, 로컬 컨트롤러(12)는, 논리 어드레스-물리 어드레스 변환 테이블 내에서, 실제 데이터 영역(161)과 메타데이터 테이블(162)의 저장 영역을 구별한다. 이로 인해, 제1 메모리 블록(16) 내에서, 실제 데이터 영역(161)과 메타데이터 테이블(162)의 저장 영역은 분리될 필요는 없고, 혼재되어 있어도 된다.
이들 처리 때문에 로컬 컨트롤러(12)이 제2 메모리 블록을 포함할 수 있다. 대안으로서, 로컬 컨트롤러(12)의 외부에 버스선을 통하여 제2 메모리 블록이 접속될 수 있다.
제2 메모리 블록의 존재는 종래형의 SSD이면 자명하다. 그러나, 제2 메모리 블록이 존재하지 않더라도, 본 실시형태의 최소 구성을 설명하는데 반드시 문제가 되지는 않는다. 따라서, 도 4에서는 제2 메모리 블록을 도시하지 않고 있다. 단, 로컬 컨트롤러(12)가 제2 메모리 블록을 이용할 수 있다면, 메타데이터 테이블을 제1 메모리 블록(16)로부터 제2 메모리 블록 내에 판독하여 참조할 수 있다.
제2 메모리 블록은, 호스트 인터페이스(11)의 통신 속도와 제1 메모리 블록(16)의 액세스 속도 사이의 속도차를 보상하기 위해서도 이용됨에 주목한다. 이로 인해, 제2 메모리 블록으로서, 제1 메모리 블록(16)에 비해, 비휘발성이며 소용량이지만 액세스 속도가 빠른 메모리가 이용된다.
예를 들어, 제2 메모리 블록으로서, 비휘발성의 DRAM 또는 SRAM이 이용된다. 유사한 속도와 용량이 얻어진다면, 비휘발성 RAM(Random Access Memory), 예를 들어, MRAM(Magnetoresistive Random Access Memory), ReRAM(Resistance-change Random Access Memory), FeRAM(Ferroelectiric Random Access Memory), PCRAM(Phase-Change Random Access Memory) 등을 이용해도 된다. 제1 메모리 블록(16)으로서 플래시 메모리를 이용한 메모리 시스템이면, 로컬 컨트롤러(12), 제2 메모리 블록, 논리 어드레스- 물리 어드레스 변환 테이블을 이용하여, 웨어 레벨링 기능을 갖추는 것이 일반적이다. 본 실시형태에서 이것을 이용해도 된다.
<해시 함수를 이용한 데이터 저장/검색 방법>
본 실시형태의 고정-길이 데이터 생성기(해시 생성기)(14)와 어드레스 관리 회로를 이용한 데이터 저장/검색 방법에 대하여 설명한다. 어드레스 관리 회로는 메모리 컨트롤러(13)에 구비되어, 해시 value(어드레스)의 충돌을 피하는 처리를 행한다.
본 실시형태에서, 해시 생성기를 구비하고 있기 때문에, 임의-길이의 비트 데이터를 해시 함수에 의해 고정-길이 비트 데이터로 변환할 수 있다. 여기에서는, 이 기능을 이용하여, 해시 생성기가 임의-길이의 비트 데이터의 메타데이터로부터 고정-길이 비트 데이터의 메타데이터 어드레스를 생성하는 예를 설명한다.
해시 함수로서는, 가능한 균일 또한 성긴 암호학적 해시 함수가 바람직하다. 예를 들어, SHA-1(Secure Hash Algorithm-1), SHA-2(Secure Hash Algorithm-2), MD4(MessageDigest4), MD5(MessageDigest5) 등을 이용한다.
해시 생성기는 부여된 임의-길이의 <key>를, 해시 함수에 따라 고정-길이 비트의 비트 열(string)을 hash(<key>)로서 얻고, 또한 원하는 비트 길이(BitLength)로 단축하는 기능을 갖는다.
예를 들어, 해시 생성기는
<key ID>= hash(<key>) mod BitLength
에 의해 나타내지는 제산 기능을 갖는다.
대안으로서, 단순하게, 생성된 고정-길이 비트의 비트 열의 선두로부터 원하는 길이를 갖는 데이터를 절취하여 이용할 수 있다.
이로써 생성된 key ID의 길이를 메타데이터 테이블의 어드레스 길이와 동일하게 한다. 이로써, 그 어드레스를 그대로 메타데이터 테이블의 어드레스로서 이용할 수 있다. 예를 들어, 도 1을 참조하여, 해시 생성기에 의한 "book"의 고정-길이 비트 데이터의 생성(이하, hash("book")이라 함)의 결과가 001로 얻어지면, 메타데이터 테이블의 $001의 어드레스는 "book" 이라는 key에 대응한다. 대응하는 value가 $001의 어드레스에 저장된다.
마찬가지로 "Blue"의 경우도, hash("Blue")의 결과가 002로 얻어지면, $002의 메타데이터 어드레스에 대응하는 value가 저장된다. 이러한 방식으로, key와 value를 저장한다.
key를 검색하기 위해서는, 예를 들어 "book"의 경우, 해시 함수의 출력 value(해시 value)인 001이 value이 저장 위치의 메타데이터 어드레스를 나타내므로, 그 어드레스를 그대로 참조하면 된다. 해시 함수와 메모리 어드레스사이의 대응을 이용한 데이터 참조 방법을 Hash-CAM라 한다.
Hash-CAM에서는, 가능한 성긴 해시 함수를 이용하더라도, 확률론적으로 해시 value(어드레스)이 충돌하는 가능성은 제로가 아니다. 사실상, 해시 value 충돌의 가능성을 줄이는 가장 단순 또한 유효한 방법은 충분히 큰 메모리 공간을 준비하는 것이다. 그러나, 실제로는, 메모리 사이즈가 제한되어 있기 때문에 충돌이 일어난다. 충돌 후의 처리 기능을 갖추기 위해서, 다음 기능을 갖는 비교 회로와 어드레스 관리 회로가 구비된다. 비교 회로는, 해시 value가 충돌했을 때, value의 내용을 참조하여 데이터를 추출하고, 추출한 데이터와 key가 일치하는지를 조사하기 위해 비교/대조를 행한다. 어드레스 관리 회로는, 추출한 데이터와 key가 일치할 때, 해시 value(어드레스)를 변경한다.
예를 들어, 전술한 key 외에, 다른 key "note"를 저장할 때, hash("note")의 결과도 001이 되어다고 상정하자. 이미 $001은 "book"에 이용되고 있으므로, 다른 메타데이터 어드레스로 점프할 필요가 있다. 예를 들어, 1개 인접한 메타데이터 어드레스로 이동, 즉 어드레스를 인크리먼트한다(incremented). 도 1의 예에서, $ 001이 충돌했기 때문에, $002가 비어 있는지를 조사한다. 그러나, $002도 hash("Blue")에 의해 이미 이용되고 있다. 따라서, 다음 어드레스 $003을 조사한다. $003가 비어 있으면, 그 어드레스에 "note"에 대응하는 value를 저장한다.
이 방법을 이용하면, 해시 value가 충돌했을 경우라도 데이터의 저장이 가능하다. 단, key-value 데이터의 검색에는 고안이 필요하다. "note"를 검색하는 경우에는, hash("note")가 001이 되면, $001의 메타데이터 어드레스를 참조한다. 그러나, 이 경우, 이미 저장되어 있는 "book"의 value가 잘못 얻어진다.
이를 방지하기 위하여, 반드시 key와 value 사이의 대응이 올바른지를 조사할 필요가 있다. "book"의 value는 실제 데이터 어드레스의 &101이다. 따라서, &101을 참조하여 데이터를 판독한다. 선두 데이터로서 [book]이 저장되어 있으므로, key-value 쌍이 "note"의 것이 아님이 판명된다. "note"의 key-value 쌍을 검색하기 위해서, 다음 메타데이터 어드레스의 $002에 대하여도 마찬가지로 충돌이 행해지고, key-value 쌍이 "note"의 것이 아님이 판명된다. 그 결과, 다음 메타데이터 어드레스의 $003이 올바른 key-value 쌍을 나타냄이 판명된다. 이상과 같이, 해시 value이 충돌했을 경우라도 key-value 데이터의 검색은 가능하다.
실제 데이터부의 [book], [Blue] 및 [note]는 key 충돌만 할 수 있으면 되므로, 실질적으로는, book을 "bo", Blue를 "Bl", note를 "no" 등과 같이 선두의 몇바이트를 절취하여 고정-길이로서 이용할 수 있다. 이 경우도, 고정-길이 데이터로 했을 경우에 충돌의 가능성이 제로가 아니므로 주의가 필요하다.
이상, 충돌 후에 어드레스를 인크리먼트하는 방법이 이용되었다. 그러나, 후술하는 변형예에 도시되어 있는 바와 같이, 본 실시형태를 이용하면, key, 즉 어드레스가 충돌하고 있어도, key에 대응하는 value로부터 실제 데이터 어드레스를 참조할 수 있다. 따라서, 실제 데이터 어드레스 내에 key 자체를 저장하고, key를 대조하는 방식도 이용할 수 있다. 이 경우라도, 검색 엔트리로서의 key와 실제 데이터 내의 key 사이의 대조는 필요하다. Hash-CAM으로서 기능하는 어드레스 관리 회로도 필요하다. 따라서, 방식은 다소 상이하더라도, 전술한 Hash-CAM과 동일한 구성이 사용될 수 있다.
이상과 같이, 해시 생성기가 value(어드레스)을 생성한다. 또한, 더욱 어드레스 관리 회로는 해시 value 충돌 회피의 수순을 메타데이터의 저장에 추가한다. 이로써, 메모리 시스템(10) 내에 효율적으로 key-value 스토어를 실현할 수 있다.
본 실시형태에서는, Hash-CAM을 실현하기 위해서, 하드웨어 기능(고정-길이 데이터 생성기)을 구비하고, 또한 메모리 컨트롤러(13)가 고정-길이 데이터(어드레스)의 충돌을 회피하는 회로를 포함한다. 하드웨어 기능(고정-길이 데이터 생성기)은 메모리 컨트롤러(13)에 구비될 수 있다. 이 때, key-value 데이터의 저장은, 레지스터 메모리(15) 내에서 행해지거나, 직접 제1 메모리 블록(16)에 대하여 행해질 수도 있다.
상기 구성에서, key-value 스토어 기능이 손상되지 않으면, 논리 어드레스- 물리 어드레스 변환 테이블의 일시 저장 및 웨어 레벨링 처리는, 항상 메모리 시스템(10) 내부에서 행해질 필요없이, 호스트 시스템이 CPU와 메인 메모리를 완전히 이용하여 행해질 수 있음에 주목한다. 메모리 시스템(10)이 주로 key-value 스토어를 행하게 하기 위해서, DMAC(Direct Memory Access Controller)을 구비할 수 있다.
본 실시형태에서는, 기능 블록들이 버스선으로 연결되어 있다. 기본적으로는, 메모리 시스템 내에 고속 또한 효율적인 버스선 구성을 취하는 것이 바람직하다. 예를 들어 칩 인터페이스 규격과 외부 인터페이스 규격 사이의 상이함에 의해, 2종류 이상의 버스선이 메모리 시스템 내에 이용될 수 있다.
본 실시형태에 따르면, 데이터에 연관된 메타데이터에 대한 key-value 데이터에 의해, 메모리 시스템으로부터 데이터를 추출하는 처리를 간소하게 또한 고속으로 행할 수 있어, 유저가 메타데이터를 임의로 취급하면서, 액세스 가능한 물리 메모리 공간을 최대 효율로 이용할 수 있는 메모리 시스템을 제공할 수 있다. 즉, 메타데이터에 대한 조작 요구를 메모리 시스템이 수신하고, 메모리 시스템 내부의 key-value 스토어에 의해 효율적으로 또한 고속으로 처리하고, 출력할 수 있는 메모리 시스템을 제공할 수 있다.
[제2 실시형태]
본 실시형태의 하드웨어 구성은, 제1 실시형태의 하드웨어 구성과 일부 상이하고, key 대조 전용의 메모리 공간을 갖는 하드웨어 CAM을 포함한다.
도 5는 제2 실시형태에 따른 메모리 시스템의 하드웨어 구성을 도시하는 블록도이다.
메모리 컨트롤러(13)는, 로컬 컨트롤러(12)와 제1 메모리 블록(16) 사이의 신호 송수신을 제어한다. 메모리 시스템은, 제1 메모리 블록(16)에 대한 기입/판독 시를 위한 레지스터 메모리(15)를 포함하고 있다. 검색 요구를 레지스터 메모리(15)에 일시적으로 보존하고, 판독의 일치 판정을 행할 수 있다. 바이트 단위로의 병렬 판독과 일치 판정을 행한다. 임의-길이의 검색 데이터에 관해서는, 순차적으로 처리를 행함으로써 일치 판정이 가능하다.
본 실시형태에서는, 도 5에 도시하는 바와 같이, 메모리 컨트롤러(13)로부터 액세스 가능한 위치에 CAM(Content-Addressable Memory)(24)가 배치되어 있다. CAM은, 입력된 어드레스에 의해 지정된 데이터를 출력하는 통상의 메모리와는 달리, 입력된 검색 데이터와 모든 저장 데이터 사이의 일치/불일치의 비교 연산을 동시 병렬로 행하고, 일치한 저장 데이터의 어드레스를 출력하는, 고속 검색용의 특수 메모리이다. 이 경우에, CAM(24)은, 입력된 key에 대응하는 key-value 데이터가 기억된 어드레스를 취득하는 어드레스 취득 회로로서 기능한다. CAM은, 데이터의 일치 검색에 있어서, 일치 데이터의 유/무를 "Match Flag"로서 출력할 수 있다. 본 실시형태에서는, CAM(24)은 이들 기능을 실현하기 위한 전자 회로에 의해 실현되고 있으므로, 하드웨어 CAM으로 부르고 있다.
하드웨어 CAM은, 레지스터 메모리(15)에 직결되어 있으며, 메모리 컨트롤러(13)와 레지스터 메모리(15) 사이에 배치되어 있다. 위에서는, 메모리 컨트롤러(13)와 CAM(24)이 개별적으로 형성된 예를 설명하였다. 그러나, 메모리 컨트롤러(13)가 CAM(24)을 포함하고 있어도 된다.
또한, 제1 메모리 블록(16)은 RAM(random access memory)이므로, CAM(24)과 제1 메모리 블록(16)은 CAM-RAM으로서 기능한다. CAM-RAM은, 전술한 CAM(24)이 어드레스를 출력하고, 어드레스에 의해 액세스된 RAM이 데이터를 출력하는 시스템이다. CAM의 1개의 엔트리와 RAM의 1개의 엔트리가 일대일 대응하도록, CAM의 어드레스 디코더와 RAM의 어드레스 인코더가 설계되어 있다.
본 실시형태에 있어서, key를 CAM(24)에 저장하고, 대응하는 value를 제1 메모리 블록(16)에 보존하거나, 혹은 제1 메모리 블록(16)으로부터 레지스터 메모리(15)로 value를 읽어내어, RAM 유닛으로서 보존한다. 이렇게 하면, CAM과 제1 메모리 블록은 CAM-RAM으로서 기능한다.
하드웨어 CAM을 이용하기 위해서는, 제1 메모리 블록(16)으로부터 메타데이터 테이블이 레지스터 메모리(15)에 전송될 필요가 있다. 이러한 CAM-RAM을 이용하면, 제1 실시형태에 있어서의 Hash-CAM과 같은, 어드레스의 충돌이 원리적으로 일어나지 않는다.
따라서, key-value의 대조 수속과 검색 재시도가 발생하지 않으므로, 검색이 보다 고속으로 된다. Hash-CAM에서는, 충돌 회피의 수단으로서, 메타데이터 어드레스가 여유를 갖추고 있는 경우가 많다. 그러나, 하드웨어 CAM의 경우에는 충돌이 일어나지 않으므로, CAM(24)을 효율적으로 이용할 수 있다.
본 실시형태에서는, CAM(24)이 key-value 데이터의 key 검색에만 이용되고 있다. CAM이 데이터 입/출력의 페이지 레지스터(레지스터 메모리)에 접속되어 있으므로, 제1 메모리 블록의 물리 어드레스 공간이, key-value 데이터에 의해 일부 점유되지 않고서, 최대한 이용될 수 있다. 그 밖의 구성 및 효과는 전술한 제1 실시형태와 마찬가지이다.
[제3 실시형태]
본 실시형태는, 제2 실시형태와 마찬가지로, key 대조 전용의 메모리 공간을 갖는 하드웨어 CAM을 구비한다. 그러나, 제1 메모리 블록(16)이 하드웨어 CAM을 구비하고 있다.
도 6은 제3 실시형태에 따른 메모리 시스템의 하드웨어 구성을 도시하는 블록도이다.
도 6에 도시한 바와 같이, 제1 메모리 블록(16)은, 실제 데이터 영역(161), 및 메타데이터 테이블을 저장하는 CAM-RAM(163)을 포함한다. CAM-RAM이 사용되어지는 방법은, 제2 실시형태와 마찬가지이다. 그러나, 제3 실시형태에서는, 제1 메모리 블록(16)의 일부가 CAM 전용의 어드레스 공간으로서의 역할을 한다. 이로 인해, 메타데이터 테이블에 보존된 key를, 제1 메모리 블록(16)의 밖으로 이동시키지 않고서, 직접 검색 가능하게 된다.
제1 메모리 블록(16)의 기억 셀 유닛에 대해 대조 데이터를 부여할 수 있는 방법을 제공함으로써, 완전 병렬 검색을 행하는 것이 가능하다. 예를 들어, 제1 메모리 블록(16)이 낸드 플래쉬 메모리로 구성되어 있을 경우, CAM 유닛으로서 사용하는 영역에서의 모든 게이트에, 동시에 검색 데이터로서의 입력을 부여하도록, 판독 회로를 구성한다. 이에 의해, 히트를 발견한 NAND 스트링만의 출력을 검지할 수 있게 된다. 그 출력과 RAM 유닛의 페이지 어드레스를 대응시킴으로써, CAM-RAM이 실현된다. 그 밖의 구성 및 효과는 전술한 제1 실시형태와 마찬가지이다.
[제4 실시형태]
본 실시형태는, 제1 실시형태에서와 같이, 고정-길이 데이터 생성기(예를 들어, 해시 생성기)를 구비한다. 그러나, 고정-길이 데이터 생성기의 설치 장소가 제1 실시형태와는 상이하다. 로컬 컨트롤러(12)가 고정-길이 데이터 생성기(14)를 포함하고 있다.
도 7은 제4 실시형태에 따른 메모리 시스템의 하드웨어 구성을 도시하는 블록도이다.
도 7에 도시한 바와 같이, 고정-길이 데이터 생성기(14)는 로컬 컨트롤러(12) 내에 배치되어 있다. 반드시, 고정-길이 데이터 생성기(14)와 로컬 컨트롤러(12)는, 물리적으로 같은 칩 내에 존재할 필요는 없다. 로컬 컨트롤러(12)가 다른 기능 블록보다 용이하게, 고정-길이 데이터 생성기(14)에 액세스 가능한 위치에 있으면 된다.
로컬 컨트롤러(12)는, 제2 메모리 블록으로서의 역할을 하는 버퍼 메모리(121)를 포함한다. 이러한 이유로, 로컬 컨트롤러(12)는, 제1 메모리 블록(16)으로부터 판독한 논리 어드레스-물리 어드레스 변환 테이블을 버퍼 메모리(121) 내에 저장하고, 논리 어드레스-물리 어드레스 변환을 행할 수 있다. 마찬가지로, 로컬 컨트롤러(12)는, NAND 플래시의 웨어 레벨링 처리(wear leveling processing)를 행할 수 있다. 로컬 컨트롤러(12)는, 메타데이터 테이블(162)과 논리 어드레스 사이의 대응을 관리할 수도 있다.
본 실시형태의 특징으로서, 고정-길이 데이터 생성기(14)가 로컬 컨트롤러(12) 내에 구비된다. 그러므로, 논리 어드레스-물리 어드레스 변환시에, key로부터 해시값을 생성하여 이를 value에 대응시킴, 즉, 메타데이터 테이블(162)의 key-value 데이터의 작성이 로컬 컨트롤러(12) 내에서 효율적으로 이루어질 수 있다.
본 실시형태에서는, Hash-CAM 연산을, 제2 메모리 블록인 버퍼 메모리(121)에서, 또는 제1 메모리 블록(16)에서 행할 수 있다. 후자는 제1 실시형태와 마찬가지이므로 그 설명을 생략한다. 전자에 대해 설명한다.
메타데이터 테이블을 작성하기 위해, 제1 메모리 블록(16)으로부터 데이터를 판독하고 버퍼 메모리(121) 내에 저장하여 해시값을 생성한다. Hash-CAM 연산을 버퍼 메모리(121) 내에서 행하므로, 메타데이터 어드레스는 버퍼 메모리(121)의 물리 어드레스에 대응하도록 되어진다.
작성된 메타데이터 테이블은 제1 메모리 블록(16)에 재기입하거나, 제2 메모리 블록인 버퍼 메모리(121)에 유지해 둔다. 이에 의해, 메타데이터 테이블에서 key-value 데이터의 참조를 행할 수 있다.
메타데이터 테이블이 버퍼 메모리(121)의 사이즈보다 작은 경우에는, 제1 메모리 블록(16)보다 고속인 버퍼 메모리(121) 내에서 key-value 데이터의 참조를 행할 수 있다. 따라서, 검색이 보다 고속으로 된다.
버퍼 메모리(121)가 불휘발성 RAM으로 형성된 경우에는, 메타데이터를 제1 메모리 블록(16)에 재기입하지 않고서, 메모리 시스템의 전원을 오프로 할 수 있다. 다시 메모리 시스템의 전원을 온으로 한 후에도, 메타데이터 테이블은 버퍼 메모리(121)에 보존되어 있다. 이러한 이유로, 제1 메모리 블록(16)으로부터 메타데이터 테이블을 판독하는 처리는 필요없다. 따라서, 전체적으로 속도를 향상시킬 수 있다. 그 밖의 구성 및 효과는 전술한 제1 실시형태와 마찬가지이다.
본 실시형태에서는, Hash-CAM에 필요한 기능이 로컬 컨트롤러 부근에 구비되어 있다. 그러나, 반드시 Hash-CAM 연산은 버퍼 메모리에서 행해질 필요는 없고, 제1 실시형태와 마찬가지로, 제1 메모리 블록에서 행해져도 된다. 메타데이터 테이블이 작은 경우에는, 버퍼 메모리 테이블에 대해 모든 데이터를 판독한 후에 Hash-CAM 연산을 행함으로써 연산을 고속화할 수 있다. 그러나, 메타데이터 테이블이 버퍼 메모리 사이즈보다 클 경우, 직접 제1 메모리 블록에서 Hash-CAM 동작을 행함으로써, 동작 속도를 증가시킬 수도 있다.
[제5 실시형태]
본 실시형태는, 제4 실시형태와 마찬가지로, 제2 메모리 블록인 버퍼 메모리(121)에서 key-value 데이터의 참조를 행한다. 그러나, 로컬 컨트롤러(12)가 하드웨어 CAM을 구비하고 있다.
도 8은 제5 실시형태에 따른 메모리 시스템의 하드웨어 구성을 도시하는 블록도이다.
도 8에 도시한 바와 같이, 버퍼 메모리(121)에 CAM(122)이 접속되어 있다. 도 8에서는 버퍼 메모리(121)와 CAM(122)이 분리되어 도시되어 있다. 그러나, 이들이 물리적으로 연결되어 있어도 된다.
CAM(122)의 출력(히트 신호)은 버퍼 메모리(121)의 일부분(예를 들어, 1/2 정도의 메모리 용량)과 직접 접속되어 있어서, CAM(122)과 버퍼 메모리(121)의 일부분이 CAM-RAM을 구성하고 있다. 이로 인해, 데이터(콘텐츠) 지정에 의한 데이터의 판독이 가능하게 되어 있다.
하드웨어 CAM(122)을 이용하면, Hash-CAM에서와 같은 어드레스 충돌이 원리적으로 일어나지 않는다. 따라서, key-value 대조 수속과 검색 재시도가 발생하지 않으므로, 검색이 보다 고속으로 된다.
버퍼 메모리(121)는 액세스 성능이 높은 반면, 메모리 용량이 제1 메모리 블록(16)보다 작으므로, 효율적인 메모리 공간의 운용이 요청된다. 본 실시형태에서는, CAM(122)을 추가할 경우, 버퍼 메모리(121)의 메모리 공간을 최대 효율로 이용 가능하게 된다. 그 밖의 구성 및 효과는 전술한 제2 실시형태와 마찬가지이다.
[제6 실시형태]
본 실시형태는, 메모리 시스템(10)이 로컬 컨트롤러를 포함하지 않는 점을 제외하고는, 제1 실시형태와 거의 마찬가지의 하드웨어 구성을 취한다.
도 9는 제6 실시형태에 따른 메모리 시스템의 하드웨어 구성을 도시하는 블록도이다.
도 9에 도시한 바와 같이, 호스트 인터페이스(11)가 메모리 컨트롤러(13)에 직접 접속되어 있다.
key-value 스토어의 실현 방법은, 논리 어드레스-물리 어드레스 변환 테이블의 취급을 제외하고는 제1 실시형태와 마찬가지이다. 로컬 컨트롤러 및 제2 메모리 블록이 메모리 시스템(10) 내에 포함되지 않기 때문에, 논리 어드레스-물리 어드레스 변환 테이블은 제1 메모리 블록(16)으로부터 판독되고, 메모리 시스템(10)의 외부, 예를 들어 메인 메모리(102)에서 취급된다.
Hash-CAM 동작은 제1 실시형태와 마찬가지로, 메모리 컨트롤러(13) 내에서 고정-길이 데이터 생성기(14)를 전적으로 이용하여 행해지기 때문에, 메타데이터 테이블(162)에서의 key-value 데이터의 저장은 메모리 시스템(10) 내에서 이루어진다. key-value 데이터뿐만 아니라, 메타데이터 테이블(162)의 변경점도 호스트 시스템으로 회신되어(return), 논리 어드레스-물리 어드레스 변환 테이블에 반영된 후에, 적절히 제1 메모리 블록(16)에 재기입된다.
본 실시형태에서는, 메모리 시스템(10) 내의 버퍼 메모리와 로컬 컨트롤러를 생략함으로써 기능을 간소화하고 있기 때문에, 메모리 시스템 자체는 콤팩트해진다.
메모리 시스템(10)이 주로 key-value 스토어를 실행하도록 하기 위해, 다이렉트 메모리 액세스 컨트롤러(DMAC)가 구비되어, 메모리 시스템(10)과 메인 메모리(102) 사이의 데이터 전송을 제어하도록 해도 된다. 그 밖의 구성 및 효과는 전술한 제1 실시형태와 마찬가지이다.
[제7 실시형태]
본 실시형태는, 메모리 시스템(10) 내에 로컬 컨트롤러가 포함되지 않는 점을 제외하고는, 제2 실시형태와 거의 마찬가지의 하드웨어 구성을 취한다.
도 10은 제7 실시형태에 따른 메모리 시스템의 하드웨어 구성을 도시하는 블록도이다.
하드웨어 CAM을 이용한 key-value 스토어의 실현 방법은 제2 실시형태와 마찬가지이다. 로컬 컨트롤러가 없는 것에 의해 얻어지는 기능의 특징은 제6 실시형태와 마찬가지이므로, 그 설명을 생략한다.
[제8 실시형태]
본 실시형태는, 메모리 시스템(10) 내에 로컬 컨트롤러가 포함되지 않는 점을 제외하고는, 제3 실시형태와 거의 마찬가지의 하드웨어 구성을 취한다.
도 11은 제8 실시형태에 따른 메모리 시스템의 하드웨어 구성을 도시하는 블록도이다.
CAM-RAM을 이용한 key-value 스토어의 실현 방법은 제3 실시형태와 마찬가지이다. 로컬 컨트롤러가 없음으로써 얻어지는 기능의 특징은 제6 실시형태와 마찬가지이므로, 그 설명을 생략한다.
이상과 같이, 본 실시형태에서는, key-value 스토어의 구조를 메타데이터와 그 테이블, 및 검색기로서의 역할을 하는 해시 생성기(Hash-CAM)나 하드웨어 CAM(CAM-RAM)에 의해 실현한다.
전술한 제1 내지 제8 실시형태에서의 key-value 스토어가 실현되는 경우, 또한 이하와 같은 변형예를 취하는 것이 가능하다. 이하, 변형예에 대해 상세히 설명한다. 본 출원에서는, 변형예보다는 상기 실시형태들이 우선적으로 해석된다는 것을 유의한다.
[변형예 1]
도 12는, 변형예 1에 따른, 제1 메모리 블록(16) 내의 실제 데이터 영역(161)과 메타데이터 테이블(162) 사이의 관계 및 key-value 스토어의 구조를 모식적으로 도시하는 도면이다.
도 12에 도시하는 실제 데이터 영역(161)에서는, 각각의 실제 데이터 어드레스에, 데이터 파일과, 그 파일에 대응하는 파일명 혹은 파일 ID와, 파일로부터 추출한 key와, key가 저장된 메타데이터 어드레스가 저장되어 있다. 이러한 보존 방법은, 호스트 시스템으로부터의 명령에 의해 실현될 수 있거나, 또는 메모리 시스템(10)에 미리 key 추출 기능과 메타데이터 어드레스 할당 기능을 제공함으로써 실현될 수 있다.
메타데이터 테이블(162)에는, 실제 데이터 어드레스에 파일을 보존할 때에 추출된 key와, key에 대응하는 value로서, key가 존재하는 실제 데이터 어드레스와, key와 관련지을 수 있는 다른 key-value 데이터가 보존된 메타데이터 어드레스가 보존되어 있다.
이러한 어드레스 관리에 의해, 로컬 컨트롤러(12) 혹은 메모리 컨트롤러(13)가 key를 검색하도록 지시했을 때, 메모리 컨트롤러(13)는 메타데이터 어드레스로부터 key를 검색한다.
예를 들어, "book"을 포함하는 파일명을 얻기 위해, 우선 메타데이터 어드레스로부터 "book"을 검색한다. "book"은 메타데이터 어드레스 $002에 저장되어 있다. 메타데이터 어드레스 $002로부터, value로서 실제 어드레스 &001 및 &002와, 메타데이터 어드레스 $011 및 $012가 얻어진다.
검색 결과로서 실제 어드레스가 회신될 수 있다. 또한, value의 메타데이터 어드레스를 따라감으로써, "book"이 소속되어 있는 집합명을 얻을 수 있다. 예를 들어, $011에서는, "a-file.txt"라고 하는 key와 이 key에 대응하는 value의 실제 데이터 어드레스 및 메타데이터 어드레스를 얻을 수 있다.
이와 같이, 메타데이터 테이블(162)을 연속하여 따라감으로써, 검색 결과로서 요구하고 있던 value(실제 데이터)를 얻을 수 있다. 본 변형예에서는, 메타데이터 테이블에 key만이 존재한다. 실제의 key는 실제 데이터 영역(161)의 실제 어드레스에 저장되어 있다.
[변형예 2]
도 13은, 변형예 2에 따른, 제1 메모리 블록(16) 내의 실제 데이터 영역(161)과 메타데이터 테이블(162) 사이의 관계 및 key-value 스토어의 구조를 모식적으로 도시하는 도면이다.
도 13에 도시하는 실제 데이터 영역(161)에서는, 각각의 실제 데이터 어드레스에, 파일과, 그 파일에 대응하는 파일명 혹은 파일 ID가 저장되어 있다. 메타데이터 테이블(162)에는, 파일로부터 추출된 key와, key에 대응하는 value로서, key가 존재하는 실제 어드레스와, key에 관련지을 수 있는 다른 집합 혹은 요소를 보존하는 메타데이터 어드레스가 저장되어 있다.
변형예 1과 마찬가지로, 로컬 컨트롤러(12) 혹은 메모리 컨트롤러(13)가 key를 검색하도록 지시했을 때, 메모리 컨트롤러(13)는 메타데이터 어드레스로부터 key를 검색한다.
예를 들어, "book"을 포함하는 파일명을 얻기 위해, 우선 메타데이터 어드레스로부터 "book"을 검색한다. "book"은 메타데이터 어드레스 $002에 저장되어 있다. 메타데이터 어드레스 $002로부터, value로서 실제 데이터 어드레스 &011과, 메타데이터 어드레스 $011 및 $012가 얻어진다.
실제 데이터 어드레스는 "book"이 소속되어 있는 파일의 보관 장소가 아니라, key의 실제 데이터 어드레스 중의 보관 장소를 지시하고 있다. 한편, value의 각각의 메타데이터 어드레스는 "book"이 소속되어 있는 집합을 지시한다. 따라서, 메타데이터 어드레스를 따라감으로써, $011 및 $012의 value의 실제 데이터 어드레스가 얻어져서 검색 결과로서 회신된다. 혹은, 실제 데이터 어드레스를 따라감으로써, &001 및 &002의 데이터가 회신된다. 변형예 2에서는, 변형예 1에서보다 실제 데이터 영역(실제 어드레스 공간)(161)의 하나의 어드레스당 데이터량이 적다.
[변형예 3]
도 14는, 변형예 3에 따른, 제1 메모리 블록(16) 내의 실제 데이터 영역(161)과 메타데이터 테이블(162) 사이의 관계 및 key-value 스토어의 구조를 모식적으로 도시하는 도면이다.
본 변형예에서는, 메타데이터의 엔티티가 실제 데이터 영역(161)의 실제 데이터 어드레스에 보관되어 있다.
도 14에 도시하는 실제 데이터 영역(161)에서는, 각각의 실제 데이터 어드레스에, 파일과, 그 파일에 대응하는 파일명 혹은 파일 ID와, key의 메타데이터 어드레스가 저장되어 있다.
메타데이터 테이블(162)에서는, 각각의 메타데이터 어드레스에, 파일로부터 추출된 key와, key에 대응하는 value로서 key가 존재하는 실제 데이터 어드레스가 저장되어 있다. 또한, 메타데이터 어드레스에 대응하는 물리 어드레스가 도시되어 있다.
전술한 바와 같이, 메타데이터 어드레스가 실제 데이터 어드레스와 다른 물리 어드레스 공간에 할당되어 있을 경우, 메타데이터 어드레스와 물리 어드레스 사이의 대응표는 제1 메모리 블록(16)에 보존되어 있다. 메모리 시스템(local system) 혹은 호스트 시스템이 그 대응표를 판독하여 사용한다.
메타데이터 테이블 내의 key 검색의 방법과, 연속한 어드레스에 value가 보관되어 있는 예를 설명한다.
메타데이터 테이블(162) 내의 key-value 데이터는, 도 15에 도시하는 바와 같이 실현하는 것도 가능하다. 메타데이터 어드레스 공간은, 제1 메모리 블록(16)의 특정한 물리 어드레스 공간에 대응하고 있는 것으로 가정한다. 연속한 메타데이터 어드레스의 피검색 영역을, Slot이라고 부르는 단위로 구획한다. 각각의 Slot의 선두 영역에는 key가 저장되어 있다.
도 15에 도시하는 예에서는, "pen"이라고 하는 key를 검색한다. key는 한 문자씩 메모리 컨트롤러(13)가 부여하고, 전체 Slot을 검색한다. 이 예에서의 key 검색의 구조는, 실시형태에서 설명한 메모리 컨트롤러(13) 및 레지스터 메모리(15)에 있어서의 하드웨어 CAM이 이용된다.
"pen" 중 최초의 문자 "p"가 얻어진 Slot 각각에 대해, 일치 플래그를 설정한다. 다음으로, 이들 Slot에서 "e"를 검색한다. 연속하여 히트를 얻었을 경우, 마찬가지로 플래그를 설정하고, 다음의 문자를 검색한다. 이 조작을 계속한다. 도 15에서는, #003과 #102에서 key가 일치한다. 이들 Slot에서 계속하여 판독하면 value가 얻어진다. key와 value는, 이들 사이에 제어 코드가 삽입되어 있으므로 구별할 수 있다.
이 방법을 확장하여 "don't care" 마스크 비트를 이용한 검색을 행할 수도 있다.
[변형예 4]
본 변형예에서는, 고정-길이의 key를 저장한 key-value 데이터와, 그들을 사용한 전문 검색을 예로서 설명한다.
고정-길이 비트의 필요성은, 검색 방식에 의존한다. 전문 검색 방식은: (1) 순차 검색, 및 (2) 색인 검색의 둘로 대별(roughly classified)된다. 또한, 인덱싱 방법으로 더 분류할 수 있다. 이들은, (a) 형태소 해석, (b) N-gram, (c) 접미사법이 알려져 있다.
이들 방법 중, 형태소 해석은, 미리 준비된 사전 내에 존재하는 단어를 추출하는 방법이다. N-gram은, 사전을 준비할 필요가 없으며, 단어를 N개의 요소로 분할하여 임의의 문자열을 검색할 수 있다. 예를 들어, 검색 대상의 집합을 S로 정의한다. 집합 S의 분할의 방법이 1 문자씩이라면 uni-gram이다. 집합 S의 분할의 방법이 2 문자씩이라면 bi-gram이다. 집합 S의 분할의 방법이 N 문자씩이라면 N-gram이다. 예를 들어, S=innovation을 bi-gram에 의해 분해하면, 그 분할 요소(토큰(token))가 at, in, io, nn, no, n, on, ov, ti 및 va가 된다. 접미사법은, 임의-길이를 취급하지만 색인 파일의 압축에 적합하다.
도 16에 도시하는 실제 데이터 영역(161)에서는, 각각의 실제 데이터 어드레스에, 파일과, 그 파일에 대응하는 파일명 혹은 파일 ID가 저장되어 있다. 메타데이터 테이블(162)에는, 각각의 메타데이터 어드레스에, 파일로부터 N-gram 방식에 의해 추출된 key가 저장되어 있다.
이 예에서는, 메타데이터의 각각의 key는, 실제 데이터 어드레스에 보존되어 있는 "innovation"을 bi-gram에 의해 분해하여 추출된다. 각각의 key에 대응하는 value로서 실제 어드레스가 도시되어 있다. key가 bi-gram에 의해 파일로부터 추출되었을 때의 파일 중의 출현 위치가 쌍으로 저장되어 있다. bi-gram에 의한 검색에서 key가 검색된다. 그 후, key의 출현 횟수에 의해 결과가 소트(sort)된다. 그 파일 중의 위치 정보를 비교하여 그들이 연속한 키워드(key word)를 나타냄을 확인하여, 원하는 검색어의 집합을 얻는다.
각각의 key가 고정-길이를 가지므로, 이것을 바로 이용하여 해시값으로서 key-value 데이터를 구성할 수 있다. 도 16의 예에서는, "at" 및 "in"이 이 순서대로 메타데이터 어드레스에 저장되어 있다. 실제로는, 각각의 N-gram 토큰을, 예컨대 ASCII나 UTF-6 코드를 사용한 비트 열로 나타내고, 이 비트 열을 단축하여 메타데이터 어드레스로 사용하여도 된다.
전술한 바와 같이, 본 실시형태에 따른 key-value 스토어는 고정-길이를 취급하는 N-gram과 매우 호환성이 높으며, 고속의 인덱싱에 적합하다. 전문 검색에서는, 검색 속도는 높지만 인덱싱에 시간이 걸린다. 인덱싱에서는, 요소와 집합을 포함하는 메타데이터 테이블을 적절히 판독한다. 추가, 갱신, 삭제가 필요한 요소의 검색과 그 집합의 편집을 행한다. 이러한 이유로, 파일 액세스가 빈번하게 일어난다. 본 실시형태의 메모리 시스템을 이용하면, 메모리 시스템 내에서의 효율적인 key-value 스토어를 실현가능하다. 이에 의해, 호스트 시스템에 대한 부하를 증가시키지 않고서, 고속으로 인덱싱을 행하는 것이 가능하게 된다.
본 실시형태에 있어서는, 메모리 시스템에 있어서의 key-value 스토어의 유용성을, 자주, 전문 검색의 수순을 예로 들어 설명했다. 그러나, 본 실시형태의 기술은 반드시 전문 검색에 특화된 기술로 한정되지 않는다.
상기 실시형태들은, 메모리 시스템에 데이터를 저장할 때의, 메타데이터를 효율적으로 관리하기 위해, key-value 스토어 구조와 그 구체적 구성을 제공한다. 상기 실시형태들은, 즉, 메타데이터에 대한 조작 요구를 key-value 스토어를 이용하여 효율적이고 또한 고속으로 처리할 수 있는 메모리 시스템을 제공한다.
소정의 실시형태를 설명하였지만, 이들 실시형태는, 단지 예로서 제시한 것이며, 본 발명의 범위를 한정하고자 하는 것은 아니다. 실제로, 본 명세서에서 설명한 이들 신규한 실시형태는 그 밖의 다양한 형태로 실시되는 것이 가능하며, 또한 본 발명의 요지를 일탈하지 않는 범위 내에서, 본 명세서에서 설명한 실시의 형태에 있어서 여러 가지 생략, 치환 및 변경을 행할 수 있다. 이들 실시형태나 그 변형은, 본 발명의 범위나 요지에 포함되는 바와 마찬가지로, 특허청구범위에 기재된 발명과 그 균등한 범위에 포함되는 것이다.

Claims (31)

  1. key와 상기 key에 대응하는 value의 쌍인 key-value 데이터를 포함하는 key-value 스토어(store)를 포함하는 메모리 시스템으로서,
    데이터 기입/판독 요구 또는 상기 key-value 스토어에 기초한 요구를 수신하도록 구성되는 인터페이스;
    데이터를 기억하는 데이터 영역과, 상기 key-value 데이터를 포함하는 메타데이터 테이블을 갖는 제1 메모리 블록;
    상기 key의 입력에 응답하여, 상기 key-value 데이터가 기억된 제1 어드레스를 취득하도록 구성되는 어드레스 취득 회로; 및
    상기 제1 메모리 블록에 대한, 어드레스 지정에 의한 상기 데이터 기입/판독 요구를 실행하며, 상기 어드레스 취득 회로에 의해 취득된 상기 제1 어드레스를 상기 제1 메모리 블록에 출력하고, 상기 key-value 스토어에 기초한 상기 요구를 실행하도록 구성되는 컨트롤러를 포함하고,
    상기 컨트롤러는 상기 key에 대응하는 value를 상기 인터페이스를 통해 출력하는, 메모리 시스템.
  2. 제1항에 있어서,
    상기 어드레스 취득 회로는, 상기 key를 해시(hash) 함수에 의해 상기 제1 어드레스로 변환하도록 구성되는 해시 생성기를 포함하는, 메모리 시스템.
  3. 제2항에 있어서,
    상기 컨트롤러는, 상기 해시 생성기에 의해 변환된 상기 제1 어드레스가 충돌하는 경우에, 상기 value인 데이터와 상기 key를 비교하도록 구성되는 비교 회로와, 상기 데이터와 상기 key가 일치할 때, 상기 제1 어드레스를 변경하도록 구성되는 어드레스 관리 회로를 포함하는, 메모리 시스템.
  4. 제1항에 있어서,
    상기 컨트롤러는, 상기 key-value 스토어에 기초한 상기 요구에 따라, 상기 제1 메모리 블록에 기억된 상기 메타데이터 테이블의 기억 용량을 변경하는, 메모리 시스템.
  5. 제1항에 있어서,
    상기 메타데이터 테이블은, 상기 제1 어드레스와, 상기 key 및 상기 key에 대응하는 value와, 상기 value에 기억된 제2 어드레스를 기억하고,
    상기 컨트롤러는, 상기 제2 어드레스에 의해 지정된 상기 데이터 영역의 기억 장소를 참조함으로써 상기 value를 취득하는, 메모리 시스템.
  6. 제1항에 있어서,
    상기 메타데이터 테이블 내의 상기 key-value 데이터는 논리 어드레스에 기억되고,
    상기 메타데이터 테이블의 기억 장소는, 상기 논리 어드레스를, 상기 제1 메모리 블록의 물리 어드레스에 대응시키는 변환 테이블에 의해 관리되는, 메모리 시스템.
  7. 제1항에 있어서,
    상기 컨트롤러가 데이터 기입/판독을 행할 때, 상기 데이터를 일시적으로 기억하도록 구성되는 레지스터; 및
    상기 인터페이스와 상기 제1 메모리 블록 사이의 신호 송수신을 제어하도록 구성되는 로컬 컨트롤러를 더 포함하는, 메모리 시스템.
  8. 제1항에 있어서,
    상기 인터페이스에 의해 수신되는, 상기 key-value 스토어에 기초한 상기 요구는, 집합에 요소를 추가하는 커맨드, 요소가 소속하는 집합의 사이즈를 회신(return)하는 커맨드, 및 집합을 판독하는 커맨드 중 적어도 하나를 포함하는, 메모리 시스템.
  9. 제1항에 있어서,
    상기 컨트롤러는, 다이렉트 메모리 액세스 컨트롤러(direct memory access controller)를 포함하는, 메모리 시스템.
  10. 제1항에 있어서,
    상기 인터페이스, 상기 제1 메모리 블록 및 상기 컨트롤러는 적어도 2종류의 버스선에 의해 접속되는, 메모리 시스템.
  11. key와 상기 key에 대응하는 value의 쌍인 key-value 데이터를 포함하는 key-value 스토어를 포함하는 메모리 시스템으로서,
    데이터 기입/판독 요구 또는 상기 key-value 스토어에 기초한 요구를 수신하도록 구성되는 인터페이스;
    데이터를 기억하는 데이터 영역과, 상기 key-value 데이터를 포함하는 메타데이터 테이블을 가지며, 상기 key의 입력에 응답하여, 상기 key-value 데이터가 기억된 제1 어드레스를 취득하도록 구성되는 어드레스 취득 회로를 포함하는 제1 메모리 블록; 및
    상기 제1 메모리 블록에 대한, 어드레스 지정에 의한 상기 기입/판독, 및 상기 key-value 스토어에 기초한 상기 요구를 실행하도록 구성되는 컨트롤러를 포함하고,
    상기 컨트롤러는, 상기 key에 대응하는 상기 value를 상기 인터페이스를 통해 출력하는, 메모리 시스템.
  12. 제11항에 있어서,
    상기 어드레스 취득 회로는, 상기 key의 입력에 응답하여, 상기 key와 상기 어드레스 취득 회로 내에 기억된 데이터를 비교하여, 일치하는 상기 제1 어드레스를 취득하도록 구성되는 CAM(Content-Addressable Memory)을 포함하는, 메모리 시스템.
  13. 제11항에 있어서,
    상기 컨트롤러는, 상기 key-value 스토어에 기초한 상기 요구에 따라, 상기 제1 메모리 블록에 기억된 상기 메타데이터 테이블의 기억 용량을 변경하는, 메모리 시스템.
  14. 제11항에 있어서,
    상기 메타데이터 테이블은, 상기 제1 어드레스와, 상기 key 및 상기 key에 대응하는 value와, 상기 value에 기억된 제2 어드레스를 기억하고,
    상기 컨트롤러는, 상기 제2 어드레스에 의해 지정된 상기 데이터 영역의 기억 장소를 참조함으로써 상기 value를 취득하는, 메모리 시스템.
  15. 제11항에 있어서,
    상기 메타데이터 테이블 내의 상기 key-value 데이터는 논리 어드레스에 기억되고,
    상기 메타데이터 테이블의 기억 장소는, 상기 논리 어드레스를, 상기 제1 메모리 블록의 물리 어드레스에 대응시키는 변환 테이블에 의해 관리되는, 메모리 시스템.
  16. 제11항에 있어서,
    상기 컨트롤러가 데이터 기입/판독을 행할 때, 상기 데이터를 일시적으로 기억하도록 구성되는 레지스터; 및
    상기 인터페이스와 상기 제1 메모리 블록 사이의 신호 송수신을 제어하도록 구성되는 로컬 컨트롤러를 더 포함하는, 메모리 시스템.
  17. 제11항에 있어서,
    상기 인터페이스에 의해 수신되는, 상기 key-value 스토어에 기초한 상기 요구는, 집합에 요소를 추가하는 커맨드, 요소가 소속하는 집합의 사이즈를 회신하는 커맨드, 및 집합을 판독하는 커맨드 중 적어도 하나를 포함하는, 메모리 시스템.
  18. 제11항에 있어서,
    상기 컨트롤러는 다이렉트 메모리 액세스 컨트롤러를 포함하는, 메모리 시스템.
  19. 제11항에 있어서,
    상기 인터페이스, 상기 제1 메모리 블록 및 상기 컨트롤러는 적어도 2종류의 버스선에 의해 접속되는, 메모리 시스템.
  20. key와 상기 key에 대응하는 value의 쌍인 key-value 데이터를 포함하는 key-value 스토어를 포함하는 메모리 시스템으로서,
    데이터 기입/판독 요구 또는 상기 key-value 스토어에 기초한 요구를 수신하도록 구성되는 인터페이스;
    데이터를 기억하는 데이터 영역과, 상기 key-value 데이터를 포함하는 메타데이터 테이블을 갖는 제1 메모리 블록;
    상기 제1 메모리 블록에 대한, 어드레스 지정에 의한 상기 기입/판독, 및 상기 key-value 스토어에 기초한 상기 요구를 실행하도록 구성되는 메모리 컨트롤러; 및
    상기 인터페이스와 상기 제1 메모리 블록 사이의 신호 송수신을 제어하도록 구성되는 로컬 컨트롤러를 포함하고,
    상기 로컬 컨트롤러는, 상기 제1 메모리 블록으로부터 판독한 데이터를 기억하는 제2 메모리 블록과, 상기 key의 입력에 응답하여, 상기 key-value 데이터가 기억된 제1 어드레스를 취득하도록 구성되는 어드레스 취득 회로를 포함하고,
    상기 메모리 컨트롤러는, 상기 key에 대응하는 상기 value를 상기 인터페이스를 통해 출력하는, 메모리 시스템.
  21. 제20항에 있어서,
    상기 어드레스 취득 회로는, 상기 key를 해시 함수에 의해 상기 제1 어드레스로 변환하도록 구성되는 해시 생성기를 포함하는, 메모리 시스템.
  22. 제21항에 있어서,
    상기 메모리 컨트롤러는, 상기 해시 생성기에 의해 변환된 상기 제1 어드레스가 충돌하는 경우에, 상기 value인 데이터와 상기 key를 비교하도록 구성되는 비교 회로와, 상기 데이터와 상기 key가 일치할 때, 상기 제1 어드레스를 변경하도록 구성되는 어드레스 관리 회로를 포함하는, 메모리 시스템.
  23. 제20항에 있어서,
    상기 어드레스 취득 회로는, 상기 key의 입력에 응답하여, 상기 key와 상기 어드레스 취득 회로 내에 기억된 데이터를 비교하여, 일치하는 상기 제1 어드레스를 취득하도록 구성되는 CAM(Content-Addressable Memory)을 포함하는, 메모리 시스템.
  24. 제20항에 있어서,
    상기 메모리 컨트롤러와 상기 로컬 컨트롤러 중 하나는, 상기 key-value 스토어에 기초한 상기 요구에 따라, 상기 제1 메모리 블록에 기억된 상기 메타데이터 테이블의 기억 용량을 변경하는, 메모리 시스템.
  25. 제20항에 있어서,
    상기 메타데이터 테이블은, 상기 제1 어드레스와, 상기 key 및 상기 key에 대응하는 value와, 상기 value에 기억된 제2 어드레스를 기억하고,
    상기 메모리 컨트롤러와 상기 로컬 컨트롤러 중 하나는, 상기 제2 어드레스에 의해 지정된 상기 데이터 영역의 기억 장소를 참조함으로써, 상기 value를 취득하는, 메모리 시스템.
  26. 제20항에 있어서,
    상기 메타데이터 테이블 내의 상기 key-value 데이터는 논리 어드레스에 기억되고,
    상기 메타데이터 테이블의 기억 장소는, 상기 논리 어드레스를, 상기 제1 메모리 블록의 물리 어드레스에 대응시키는 변환 테이블에 의해 관리되는, 메모리 시스템.
  27. 제20항에 있어서,
    상기 제2 메모리 블록은, 상기 제1 메모리 블록보다 고속으로 데이터 기입/판독을 행하도록 구성되는 버퍼 메모리를 포함하는, 메모리 시스템.
  28. 제27항에 있어서,
    상기 버퍼 메모리는 불휘발성 RAM을 포함하는, 메모리 시스템.
  29. 제20항에 있어서,
    상기 인터페이스에 의해 수신되는, 상기 key-value 스토어에 기초한 상기 요구는, 집합에 요소를 추가하는 커맨드, 요소가 소속하는 집합의 사이즈를 회신하는 커맨드, 및 집합을 판독하는 커맨드 중 적어도 하나를 포함하는, 메모리 시스템.
  30. 제20항에 있어서,
    상기 메모리 컨트롤러와 상기 로컬 컨트롤러 중 하나는 다이렉트 메모리 액세스 컨트롤러를 포함하는, 메모리 시스템.
  31. 제20항에 있어서,
    상기 인터페이스, 상기 제1 메모리 블록, 및 상기 메모리 컨트롤러와 상기 로컬 컨트롤러 중 하나는, 적어도 2종류의 버스선에 의해 접속되는, 메모리 시스템.
KR1020120086438A 2011-08-08 2012-08-07 Key-value 스토어를 포함하는 메모리 시스템 KR101397353B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2011172759A JP5524144B2 (ja) 2011-08-08 2011-08-08 key−valueストア方式を有するメモリシステム
JPJP-P-2011-172759 2011-08-08

Publications (2)

Publication Number Publication Date
KR20130018602A true KR20130018602A (ko) 2013-02-25
KR101397353B1 KR101397353B1 (ko) 2014-05-19

Family

ID=47644596

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020120086438A KR101397353B1 (ko) 2011-08-08 2012-08-07 Key-value 스토어를 포함하는 메모리 시스템

Country Status (4)

Country Link
US (3) US9361408B2 (ko)
JP (1) JP5524144B2 (ko)
KR (1) KR101397353B1 (ko)
CN (1) CN102929793A (ko)

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2014142473A1 (ko) * 2013-03-14 2014-09-18 삼성전자 주식회사 키 값 기반 데이터 스토리지 시스템 및 이의 운용 방법
KR20160037792A (ko) * 2014-09-29 2016-04-06 삼성전자주식회사 고 대역폭 피어-투-피어 스위치드 키-밸류 캐싱
WO2020076580A1 (en) * 2018-10-10 2020-04-16 Micron Technology, Inc. Key-value store tree data block spill with compaction
US10706106B2 (en) 2017-02-09 2020-07-07 Micron Technology, Inc. Merge tree modifications for maintenance operations
US10706105B2 (en) 2017-02-09 2020-07-07 Micron Technology, Inc. Merge tree garbage metrics
US10719495B2 (en) 2017-02-09 2020-07-21 Micron Technology, Inc. Stream selection for multi-stream storage devices
US10725988B2 (en) 2017-02-09 2020-07-28 Micron Technology, Inc. KVS tree
WO2020219122A1 (en) * 2019-04-22 2020-10-29 Western Digital Technologies, Inc. Cam storage schemes and cam read operations for detecting matching keys with bit errors
US10852978B2 (en) 2018-12-14 2020-12-01 Micron Technology, Inc. Key-value store using journaling with selective data storage format
US10915546B2 (en) 2018-10-10 2021-02-09 Micron Technology, Inc. Counter-based compaction of key-value store tree data block
US10936661B2 (en) 2018-12-26 2021-03-02 Micron Technology, Inc. Data tree with order-based node traversal
US11048755B2 (en) 2018-12-14 2021-06-29 Micron Technology, Inc. Key-value store tree with selective use of key portion

Families Citing this family (73)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5605288B2 (ja) * 2011-03-31 2014-10-15 富士通株式会社 出現マップ生成方法、ファイル抽出方法、出現マップ生成プログラム、ファイル抽出プログラム、出現マップ生成装置、およびファイル抽出装置
JP5524144B2 (ja) 2011-08-08 2014-06-18 株式会社東芝 key−valueストア方式を有するメモリシステム
JP5631938B2 (ja) 2012-07-19 2014-11-26 株式会社東芝 半導体記憶装置
US8922243B2 (en) 2012-12-23 2014-12-30 Advanced Micro Devices, Inc. Die-stacked memory device with reconfigurable logic
US9697147B2 (en) 2012-08-06 2017-07-04 Advanced Micro Devices, Inc. Stacked memory device with metadata management
KR101416586B1 (ko) * 2012-10-17 2014-07-08 주식회사 리얼타임테크 해쉬를 이용한 전문 기반 논리 연산 수행 방법
US9135185B2 (en) 2012-12-23 2015-09-15 Advanced Micro Devices, Inc. Die-stacked memory device providing data translation
US9201777B2 (en) 2012-12-23 2015-12-01 Advanced Micro Devices, Inc. Quality of service support using stacked memory device with logic die
US9170948B2 (en) 2012-12-23 2015-10-27 Advanced Micro Devices, Inc. Cache coherency using die-stacked memory device with logic die
US9065722B2 (en) 2012-12-23 2015-06-23 Advanced Micro Devices, Inc. Die-stacked device with partitioned multi-hop network
US9536016B2 (en) * 2013-01-16 2017-01-03 Google Inc. On-disk multimap
US9286948B2 (en) * 2013-07-15 2016-03-15 Advanced Micro Devices, Inc. Query operations for stacked-die memory device
CN103500088A (zh) * 2013-09-18 2014-01-08 北京航空航天大学 一种用于key-value存储系统的trace序列的生成方法
WO2015048140A1 (en) * 2013-09-24 2015-04-02 Intelligent Intellectual Property Holdings 2 Llc Systems and methods for storage collision management
JP6281225B2 (ja) * 2013-09-30 2018-02-21 日本電気株式会社 情報処理装置
JP6034512B2 (ja) * 2013-12-25 2016-11-30 株式会社日立製作所 計算機システム及びデータ管理方法
WO2015118865A1 (ja) * 2014-02-05 2015-08-13 日本電気株式会社 情報処理装置、情報処理システム及びデータアクセス方法
CN104156380B (zh) * 2014-03-04 2019-03-26 深圳信息职业技术学院 一种分布式存储器哈希索引方法及系统
US11093468B1 (en) * 2014-03-31 2021-08-17 EMC IP Holding Company LLC Advanced metadata management
US9361937B2 (en) * 2014-08-26 2016-06-07 Seagate Technology Llc Shingled magnetic recording data store
US9846642B2 (en) * 2014-10-21 2017-12-19 Samsung Electronics Co., Ltd. Efficient key collision handling
CN104536903B (zh) * 2014-12-25 2018-02-23 华中科技大学 一种按数据属性分类存放的混合存储方法及系统
US9590897B1 (en) * 2015-02-26 2017-03-07 Qlogic Corporation Methods and systems for network devices and associated network transmissions
WO2016140658A1 (en) * 2015-03-04 2016-09-09 Hitachi, Ltd. Non-volatile memory system having with keyvalue store database
US10318491B1 (en) * 2015-03-31 2019-06-11 EMC IP Holding Company LLC Object metadata query with distributed processing systems
US11016946B1 (en) * 2015-03-31 2021-05-25 EMC IP Holding Company LLC Method and apparatus for processing object metadata
JP6238931B2 (ja) * 2015-05-14 2017-11-29 ヤフー株式会社 情報処理装置、プログラム、情報処理システム及びデータ管理方法
CN106484691B (zh) 2015-08-24 2019-12-10 阿里巴巴集团控股有限公司 移动终端的数据存储方法和装置
US9927984B2 (en) * 2015-10-14 2018-03-27 Samsung Electronics Co., Ltd. Electronic system with interface control mechanism and method of operation thereof
EP3916536A1 (en) 2015-12-28 2021-12-01 Huawei Technologies Co., Ltd. Data processing method and nvme storage device
US11301422B2 (en) * 2016-02-23 2022-04-12 Samsung Electronics Co., Ltd. System and methods for providing fast cacheable access to a key-value device through a filesystem interface
CN107229415B (zh) * 2016-03-24 2020-06-02 华为技术有限公司 一种数据写方法、数据读方法及相关设备、系统
JP6542152B2 (ja) * 2016-03-29 2019-07-10 東芝メモリ株式会社 オブジェクトストレージ、コントローラおよびプログラム
US9836243B1 (en) * 2016-03-31 2017-12-05 EMC IP Holding Company LLC Cache management techniques
CN106201350B (zh) * 2016-07-07 2019-10-18 华为技术有限公司 存储数据的方法、存储器和计算机系统
CN106339270B (zh) * 2016-08-26 2021-11-19 华为技术有限公司 数据校验方法及装置
CN106469198B (zh) 2016-08-31 2019-10-15 华为技术有限公司 键值存储方法、装置及系统
US10445199B2 (en) * 2016-12-22 2019-10-15 Western Digital Technologies, Inc. Bad page management in storage devices
CN107066498B (zh) * 2016-12-30 2020-04-14 成都华为技术有限公司 键值kv存储方法和装置
US10282436B2 (en) * 2017-01-04 2019-05-07 Samsung Electronics Co., Ltd. Memory apparatus for in-place regular expression search
KR20180087925A (ko) * 2017-01-25 2018-08-03 삼성전자주식회사 논리 어드레스와 물리 어드레스 사이에서 해싱 기반 변환을 수행하는 스토리지 장치
US10261913B2 (en) * 2017-04-20 2019-04-16 Alibaba Group Holding Limited Persistent memory for key-value storage
CN107678685B (zh) * 2017-09-11 2020-01-17 清华大学 基于闪存的存储路径优化的键值存储管理方法
KR102569545B1 (ko) 2017-11-08 2023-08-22 삼성전자 주식회사 키-밸류 스토리지 장치 및 상기 키-밸류 스토리지 장치의 동작 방법
US10740029B2 (en) * 2017-11-28 2020-08-11 Advanced Micro Devices, Inc. Expandable buffer for memory transactions
CN108011949B (zh) * 2017-11-30 2021-03-09 百度在线网络技术(北京)有限公司 用于获取数据的方法和装置
US10922239B2 (en) * 2017-12-29 2021-02-16 Samsung Electronics Co., Ltd. Device for performing iterator operation in database
US11182694B2 (en) * 2018-02-02 2021-11-23 Samsung Electronics Co., Ltd. Data path for GPU machine learning training with key value SSD
CN108647101A (zh) * 2018-05-09 2018-10-12 深圳壹账通智能科技有限公司 区块链上用户通信方法、装置、终端设备及存储介质
US10459845B1 (en) * 2018-06-29 2019-10-29 Micron Technology, Inc. Host accelerated operations in managed NAND devices
CN109213772B (zh) * 2018-09-12 2021-03-26 华东师范大学 数据存储方法及NVMe存储系统
US11334284B2 (en) * 2018-09-24 2022-05-17 Samsung Electronics Co., Ltd. Database offloading engine
CN109376193B (zh) * 2018-09-29 2023-04-28 北京友友天宇系统技术有限公司 基于自适应规则的数据交换系统
US11158369B2 (en) * 2018-12-26 2021-10-26 Western Digital Technologies, Inc. On-chip non-volatile memory (NVM) search
US11580162B2 (en) 2019-04-18 2023-02-14 Samsung Electronics Co., Ltd. Key value append
US11693790B2 (en) * 2019-05-24 2023-07-04 Texas Instmments Incorporated Methods and apparatus to facilitate write miss caching in cache system
US11210216B2 (en) * 2019-06-25 2021-12-28 Intel Corporation Techniques to facilitate a hardware based table lookup
US11093143B2 (en) 2019-07-12 2021-08-17 Samsung Electronics Co., Ltd. Methods and systems for managing key-value solid state drives (KV SSDS)
US11520738B2 (en) * 2019-09-20 2022-12-06 Samsung Electronics Co., Ltd. Internal key hash directory in table
US11474977B2 (en) 2019-09-30 2022-10-18 Dropbox, Inc. Snapshot isolation in a distributed storage system
US11321244B2 (en) 2019-12-16 2022-05-03 Samsung Electronics Co., Ltd. Block interface emulation for key value device
KR20210092361A (ko) 2020-01-15 2021-07-26 삼성전자주식회사 스토리지 장치 및 그것의 동작 방법
EP3851950A1 (en) 2020-01-15 2021-07-21 Samsung Electronics Co., Ltd. Storage device and operation method thereof
US11449430B2 (en) * 2020-04-02 2022-09-20 Samsung Electronics Co., Ltd. Key-value store architecture for key-value devices
CN113568560A (zh) * 2020-04-29 2021-10-29 瑞昱半导体股份有限公司 存取一次性可编程记忆体的方法及相关的电路
US20220092046A1 (en) * 2020-09-18 2022-03-24 Kioxia Corporation System and method for efficient expansion of key value hash table
US11956348B2 (en) 2020-10-09 2024-04-09 Samsung Electronics Co., Ltd. Systems, methods, and apparatus for security key management for I/O devices
CN112637327B (zh) * 2020-12-21 2022-07-22 北京奇艺世纪科技有限公司 一种数据处理方法、装置及系统
US11720255B1 (en) * 2021-02-24 2023-08-08 Xilinx, Inc. Random reads using multi-port memory and on-chip memory blocks
US11861222B2 (en) 2021-05-17 2024-01-02 Micron Technology, Inc. Object management in tiered memory systems
JP2023044545A (ja) 2021-09-17 2023-03-30 キオクシア株式会社 情報処理装置及びメモリシステム
US20230266919A1 (en) * 2022-02-18 2023-08-24 Seagate Technology Llc Hint-based fast data operations with replication in object-based storage
CN116301636B (zh) * 2023-03-22 2023-12-22 鹏钛存储技术(南京)有限公司 一种管理数据结构的方法以及基于哈希算法的硬件加速器

Family Cites Families (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7190617B1 (en) 1989-04-13 2007-03-13 Sandisk Corporation Flash EEprom system
US5715419A (en) 1989-12-05 1998-02-03 Texas Instruments Incorporated Data communications system with address remapping for expanded external memory access
JP2928620B2 (ja) 1990-10-30 1999-08-03 株式会社東芝 非水電解液二次電池
US5659755A (en) 1995-11-20 1997-08-19 International Business Machines Corporation Method and system in a data processing system for efficiently compressing data using a sorting network
JP4167359B2 (ja) 1999-09-30 2008-10-15 株式会社東芝 データ管理システム及びデータ管理方法
US6377500B1 (en) 1999-11-11 2002-04-23 Kabushiki Kaisha Toshiba Memory system with a non-volatile memory, having address translating function
US6684314B1 (en) 2000-07-14 2004-01-27 Agilent Technologies, Inc. Memory controller with programmable address configuration
KR100453053B1 (ko) 2002-06-10 2004-10-15 삼성전자주식회사 플래쉬 메모리용 파일 시스템
CN100377155C (zh) 2002-07-23 2008-03-26 三星电子株式会社 使用元数据索引的元数据搜索方法及设备
JP2004192426A (ja) 2002-12-12 2004-07-08 Seiko Epson Corp 記憶装置及びその制御方法
US7032096B2 (en) 2003-04-22 2006-04-18 Hewlett-Packard Development Company, L.P. Memory management system and method using a hash table
JP4795778B2 (ja) 2005-11-07 2011-10-19 株式会社東芝 データ管理装置、データ管理方法およびプログラム
US7836274B2 (en) * 2006-09-05 2010-11-16 Broadcom Corporation Method and system for combining page buffer list entries to optimize caching of translated addresses
CN101155182A (zh) 2006-09-30 2008-04-02 阿里巴巴公司 一种基于网络的垃圾信息过滤方法和装置
KR100789406B1 (ko) 2006-11-03 2007-12-28 삼성전자주식회사 플래시 메모리 시스템 및 그것의 가비지 컬렉션 방법
KR100823171B1 (ko) * 2007-02-01 2008-04-18 삼성전자주식회사 파티션된 플래시 변환 계층을 갖는 컴퓨터 시스템 및플래시 변환 계층의 파티션 방법
US7739312B2 (en) * 2007-04-27 2010-06-15 Network Appliance, Inc. Data containerization for reducing unused space in a file system
JP2009020757A (ja) 2007-07-12 2009-01-29 Toshiba Corp データ登録装置、データ登録方法及びプログラム
KR101123335B1 (ko) * 2009-01-15 2012-03-28 연세대학교 산학협력단 해시 인덱스 구성 방법과 그 장치, 및 상기 장치를 구비하는 데이터 저장 장치, 및 상기 방법을 구현하는 프로그램이 기록된 기록매체
US20100217948A1 (en) * 2009-02-06 2010-08-26 Mason W Anthony Methods and systems for data storage
WO2010114006A1 (ja) 2009-03-31 2010-10-07 日本電気株式会社 ストレージシステムとストレージアクセス方法とプログラム
US8880544B2 (en) * 2009-06-26 2014-11-04 Simplivity Corporation Method of adapting a uniform access indexing process to a non-uniform access memory, and computer system
JP2011215835A (ja) 2010-03-31 2011-10-27 Toshiba Corp 全文検索機能を備えるストレージ装置
CA2810991C (en) * 2010-09-09 2016-06-21 Nec Corporation Storage system
JP5524144B2 (ja) 2011-08-08 2014-06-18 株式会社東芝 key−valueストア方式を有するメモリシステム
CN102591970B (zh) 2011-12-31 2014-07-30 北京奇虎科技有限公司 一种分布式键-值查询方法和查询引擎系统
JP5646775B2 (ja) 2014-01-15 2014-12-24 株式会社東芝 key−valueストア方式を有するメモリシステム
JP5833212B2 (ja) 2014-10-30 2015-12-16 株式会社東芝 key−valueストア方式を有するメモリシステム

Cited By (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20140112717A (ko) * 2013-03-14 2014-09-24 삼성전자주식회사 키 값 기반 데이터 스토리지 시스템 및 이의 운용 방법
US10083118B2 (en) 2013-03-14 2018-09-25 Samsung Electronics Co., Ltd. Key value-based data storage system and operation method thereof
WO2014142473A1 (ko) * 2013-03-14 2014-09-18 삼성전자 주식회사 키 값 기반 데이터 스토리지 시스템 및 이의 운용 방법
KR20160037792A (ko) * 2014-09-29 2016-04-06 삼성전자주식회사 고 대역폭 피어-투-피어 스위치드 키-밸류 캐싱
US10725988B2 (en) 2017-02-09 2020-07-28 Micron Technology, Inc. KVS tree
US10706106B2 (en) 2017-02-09 2020-07-07 Micron Technology, Inc. Merge tree modifications for maintenance operations
US10706105B2 (en) 2017-02-09 2020-07-07 Micron Technology, Inc. Merge tree garbage metrics
US10719495B2 (en) 2017-02-09 2020-07-21 Micron Technology, Inc. Stream selection for multi-stream storage devices
US11100071B2 (en) 2018-10-10 2021-08-24 Micron Technology, Inc. Key-value store tree data block spill with compaction
US10915546B2 (en) 2018-10-10 2021-02-09 Micron Technology, Inc. Counter-based compaction of key-value store tree data block
WO2020076580A1 (en) * 2018-10-10 2020-04-16 Micron Technology, Inc. Key-value store tree data block spill with compaction
US11599552B2 (en) 2018-10-10 2023-03-07 Micron Technology, Inc. Counter-based compaction of key-value store tree data block
US10852978B2 (en) 2018-12-14 2020-12-01 Micron Technology, Inc. Key-value store using journaling with selective data storage format
US11048755B2 (en) 2018-12-14 2021-06-29 Micron Technology, Inc. Key-value store tree with selective use of key portion
US11334270B2 (en) 2018-12-14 2022-05-17 Micron Technology, Inc. Key-value store using journaling with selective data storage format
US10936661B2 (en) 2018-12-26 2021-03-02 Micron Technology, Inc. Data tree with order-based node traversal
US11657092B2 (en) 2018-12-26 2023-05-23 Micron Technology, Inc. Data tree with order-based node traversal
WO2020219122A1 (en) * 2019-04-22 2020-10-29 Western Digital Technologies, Inc. Cam storage schemes and cam read operations for detecting matching keys with bit errors
US10910057B2 (en) 2019-04-22 2021-02-02 Western Digital Technologies, Inc. CAM storage schemes and CAM read operations for detecting matching keys with bit errors
US11367485B2 (en) 2019-04-22 2022-06-21 Western Digital Technologies, Inc. CAM storage schemes and CAM read operations for detecting matching keys with bit errors

Also Published As

Publication number Publication date
KR101397353B1 (ko) 2014-05-19
JP2013037517A (ja) 2013-02-21
US9361408B2 (en) 2016-06-07
US10579683B2 (en) 2020-03-03
US9953107B2 (en) 2018-04-24
US20180210970A1 (en) 2018-07-26
US20130042060A1 (en) 2013-02-14
CN102929793A (zh) 2013-02-13
US20150074341A1 (en) 2015-03-12
JP5524144B2 (ja) 2014-06-18

Similar Documents

Publication Publication Date Title
KR101397353B1 (ko) Key-value 스토어를 포함하는 메모리 시스템
JP5597666B2 (ja) 半導体記憶装置、情報処理システムおよび制御方法
CN113168408B (zh) 利用压缩的键值存储树数据块溢出
US9626286B2 (en) Hardware and firmware paths for performing memory read processes
CN113039547B (zh) 键值存储存储器系统、方法及相关存储媒体
CN108984420B (zh) 管理非易失性存储器(nvm)中的多个名称空间
CN108205499B (zh) 用于将数据处理转移到混合存储设备的方法和装置
JP5996088B2 (ja) 暗号ハッシュ・データベース
CN105843551B (zh) 高性能和大容量储存重复删除中的数据完整性和损耗电阻
US10552044B2 (en) Storage apparatus, data processing method and storage system wherein compressed data is read in parallel, said data stored in buffer by size and read from said buffer, in order of when said data is stored in said buffer
TW200900930A (en) Hierarchical immutable content-addressable memory processor
US9164704B2 (en) Semiconductor storage device for handling write to nonvolatile memories with data smaller than a threshold
JP5646775B2 (ja) key−valueストア方式を有するメモリシステム
CN117121107A (zh) 使用内容可寻址存储器的用于经排序字符串表的密钥存储
JP6258436B2 (ja) メモリシステムのローカルコントローラ
JP5833212B2 (ja) key−valueストア方式を有するメモリシステム
JP6034467B2 (ja) システム
US11914587B2 (en) Systems and methods for key-based indexing in storage devices
KR102665979B1 (ko) 압축한 키-값 저장소 트리 데이터 블록 유출

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20170420

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20180417

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20190417

Year of fee payment: 6