KR102545167B1 - 키-밸류 스토리지 장치 및 상기 키-밸류 스토리지 장치의 동작 방법 - Google Patents

키-밸류 스토리지 장치 및 상기 키-밸류 스토리지 장치의 동작 방법 Download PDF

Info

Publication number
KR102545167B1
KR102545167B1 KR1020170157503A KR20170157503A KR102545167B1 KR 102545167 B1 KR102545167 B1 KR 102545167B1 KR 1020170157503 A KR1020170157503 A KR 1020170157503A KR 20170157503 A KR20170157503 A KR 20170157503A KR 102545167 B1 KR102545167 B1 KR 102545167B1
Authority
KR
South Korea
Prior art keywords
key
bits
controller
mapping
random
Prior art date
Application number
KR1020170157503A
Other languages
English (en)
Other versions
KR20190059664A (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 삼성전자주식회사
Priority to KR1020170157503A priority Critical patent/KR102545167B1/ko
Priority to US16/100,990 priority patent/US11120081B2/en
Priority to CN201811054900.9A priority patent/CN109828930B/zh
Publication of KR20190059664A publication Critical patent/KR20190059664A/ko
Application granted granted Critical
Publication of KR102545167B1 publication Critical patent/KR102545167B1/ko

Links

Images

Classifications

    • 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/901Indexing; Data structures therefor; Storage structures
    • G06F16/9014Indexing; Data structures therefor; Storage structures hash tables
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0292User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/0643Management of files
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0661Format or protocol conversion arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Databases & Information Systems (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Storage Device Security (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

본 개시는 비휘발성 메모리와 컨트롤러를 포함하는 키-밸류 스토리지 장치의 동작 방법을 개시한다. 키-밸류 스토리지 장치의 동작 방법은 호스트로부터 키에 포함되는 랜덤 영역 및 넌-랜덤 영역 중 적어도 하나에 대한 정보를 수신하고, 호스트로부터 제1 키를 포함하는 제1 커맨드를 수신하며, 수신한 정보를 기초로 제1 키에 포함된 랜덤 비트들 중 적어도 일부에 대응하는 제1 비트들로부터 맵핑 테이블의 맵핑 인덱스를 생성하고, 맵핑 테이블을 이용하여 제1 커맨드에 따른 비휘발성 메모리에 대한 동작을 제어한다.

Description

키-밸류 스토리지 장치 및 상기 키-밸류 스토리지 장치의 동작 방법{Key-value storage device and method of operating the key-value storage device}
본 개시의 기술적 사상은 스토리지 장치에 관한 것이며, 더욱 상세하게는, 키-밸류(key-value) 스토리지 장치 및 상기 키-밸류 스토리지 장치의 동작 방법에 관한 것이다.
스토리지는 데이터를 관리하는 단위에 따라 오브젝트 기반 스토리지 및 블록 기반 스토리지로 구분될 수 있다. 오브젝트 기반 스토리지는 데이터를 오브젝트 형식으로 저장하고 관리하는 스토리지 구조이다. 오브젝트는 임의의 사이즈를 가질 수 있는 데이터로, 예를 들어 동영상, 이미지 등의 멀티미디어 데이터, 파일 등을 의미하며, 오브젝트 스토리지는 오브젝트를 관리하기 위해 사용될 수 있다. 오브젝트 기반 스토리지의 일 예로서, 키-밸류 스토리지 장치가 있다.
본 개시의 기술적 사상에 따르면, 비휘발성 메모리 및 상기 비휘발성 메모리를 제어하는 컨트롤러를 포함하는 키-밸류 스토리지 장치의 동작 방법은, 상기 컨트롤러에서, 호스트로부터 키에 포함되는 랜덤 영역 및 넌-랜덤 영역 중 적어도 하나에 대한 정보를 수신하는 단계, 상기 컨트롤러에서, 상기 호스트로부터 제1 키를 포함하는 제1 커맨드를 수신하는 단계, 상기 컨트롤러에서, 수신한 상기 정보를 기초로 상기 제1 키에 포함된 랜덤 비트들 중 적어도 일부에 대응하는 제1 비트들로부터 맵핑 테이블의 맵핑 인덱스를 생성하는 단계, 및 상기 컨트롤러에서, 상기 맵핑 테이블을 이용하여 상기 제1 커맨드에 따른 상기 비휘발성 메모리에 대한 동작을 제어하는 단계를 포함한다.
또한, 본 개시의 기술적 사상에 따르면, 복수의 비휘발성 메모리들 및 상기 복수의 비휘발성 메모리들을 제어하는 컨트롤러를 포함하는 키-밸류 스토리지 장치의 동작 방법은, 상기 컨트롤러에서, 호스트로부터 키에 포함되는 랜덤 영역 및 넌-랜덤 영역 중 적어도 하나에 대한 정보를 수신하는 단계, 상기 컨트롤러에서, 상기 호스트로부터 제1 키를 포함하는 제1 커맨드를 수신하는 단계, 상기 컨트롤러에서, 수신한 상기 정보를 기초로 상기 제1 키에 포함된 랜덤 비트들 중 적어도 제2 비트에 따라 상기 제1 커맨드를 상기 복수의 비휘발성 메모리들 중 제1 비휘발성 메모리에 할당하는 단계, 상기 컨트롤러에서, 수신한 상기 정보를 기초로 상기 제1 키에 포함된 상기 랜덤 비트들 중 적어도 일부에 대응하는 제1 비트들로부터 상기 제1 비휘발성 메모리에 대응하는 제1 맵핑 테이블의 맵핑 인덱스를 생성하는 단계, 및 상기 컨트롤러에서, 상기 제1 맵핑 테이블을 이용하여 상기 제1 커맨드에 따른 상기 제1 비휘발성 메모리에 대한 동작을 제어하는 단계를 포함한다.
또한, 본 개시의 기술적 사상에 따르면, 비휘발성 메모리 및 상기 비휘발성 메모리를 제어하는 컨트롤러를 포함하는 키-밸류 스토리지 장치의 동작 방법은, 상기 컨트롤러에서, 호스트로부터 키에 포함되는 랜덤 영역 및 넌-랜덤 영역 중 적어도 하나에 대한 정보를 수신하는 단계, 상기 컨트롤러에서, 상기 호스트로부터 제1 밸류를 포함하는 제1 커맨드를 수신하는 단계, 상기 컨트롤러에서, 수신한 상기 정보를 기초로 상기 제1 커맨드로부터 제1 키를 생성하는 단계, 및 상기 컨트롤러에서, 수신한 상기 정보를 기초로 상기 제1 키에 포함된 상기 랜덤 비트들 중 적어도 일부에 대응하는 제1 비트들로부터 맵핑 테이블의 맵핑 인덱스를 생성하는 단계, 및 상기 컨트롤러에서, 상기 맵핑 테이블을 이용하여 상기 제1 커맨드에 따른 상기 비휘발성 메모리에 대한 동작을 제어하는 단계를 포함한다.
또한, 본 개시의 기술적 사상에 따르면, 복수의 비휘발성 메모리들 및 상기 복수의 비휘발성 메모리들을 제어하는 컨트롤러를 포함하는 키-밸류 스토리지 장치의 동작 방법은, 상기 컨트롤러에서, 호스트로부터 키에 포함되는 랜덤 영역 및 넌-랜덤 영역 중 적어도 하나에 대한 정보를 수신하는 단계, 상기 컨트롤러에서, 상기 호스트로부터 제1 밸류를 포함하는 제1 커맨드를 수신하는 단계, 상기 컨트롤러에서, 수신한 상기 정보를 기초로 상기 제1 커맨드로부터 제1 키를 생성하는 단계, 상기 컨트롤러에서, 수신한 상기 정보를 기초로 상기 제1 키에 포함된 랜덤 비트들 중 적어도 제2 비트에 따라 상기 제1 커맨드를 상기 복수의 비휘발성 메모리들 중 제1 비휘발성 메모리에 할당하는 단계, 상기 컨트롤러에서, 수신한 상기 정보를 기초로 상기 제1 키에 포함된 상기 랜덤 비트들 중 적어도 일부에 대응하는 제1 비트들로부터 상기 제1 비휘발성 메모리에 대응하는 제1 맵핑 테이블의 맵핑 인덱스를 생성하는 단계, 및 상기 컨트롤러에서, 상기 제1 맵핑 테이블을 이용하여 상기 제1 커맨드에 따른 상기 제1 비휘발성 메모리에 대한 동작을 제어하는 단계를 포함한다.
또한, 본 개시의 기술적 사상에 따르면, 호스트와 통신 가능한 키-밸류 스토리지 장치는 상기 호스트로부터 키 인코딩 룰을 수신하고, 상기 호스트로부터 키를 포함하는 커맨드를 수신하며, 상기 키 인코딩 룰을 기초로 상기 키에 포함된 랜덤 비트들 중 적어도 일부에 대응하는 비트들로부터 맵핑 인덱스를 생성하고, 상기 맵핑 인덱스에 대응하는 맵핑 정보를 맵핑 테이블에 저장하는 컨트롤러, 및 상기 맵핑 정보에 따라 상기 키 및 상기 키에 대응하는 밸류를 저장하는 비휘발성 메모리를 포함한다.
도 1은 본 개시의 일 실시예에 따른 스토리지 시스템을 나타내는 블록도이다.
도 2는 본 개시의 일 실시예에 따른 키 영역, 해쉬 키 영역 및 낸드 영역을 예시적으로 나타낸다.
도 3은 본 개시의 일 실시예에 따른 키 인코딩 룰에 따라 생성된 키를 예시적으로 나타낸다.
도 4는 본 개시의 일 실시예에 따른 맵핑 테이블과 비휘발성 메모리의 메모리 셀 어레이를 예시적으로 나타낸다.
도 5는 본 개시의 일 실시예에 따라, 도 1의 컨트롤러를 나타내는 블록도이다.
도 6은 본 개시의 일 실시예에 따른 키-밸류 스토리지 장치의 동작 방법을 나타내는 흐름도이다.
도 7은 본 개시의 일 실시예에 따라 키-밸류 스토리지 장치의 맵핑 인덱스 생성 방법을 나타내는 흐름도이다.
도 8은 본 개시의 일 실시예에 따라, 호스트, 컨트롤러 및 비휘발성 메모리 사이의 기입 동작을 나타내는 흐름도이다.
도 9는 본 개시의 일 실시예에 따라, 호스트, 컨트롤러 및 비휘발성 메모리 사이의 독출 동작을 나타내는 흐름도이다.
도 10은 본 개시의 일 실시예에 따라, 호스트와 스토리지 장치 사이의 동작 방법을 나타내는 흐름도이다.
도 11은 본 개시의 일 실시예에 따른 스토리지 장치의 일 예를 나타내는 블록도이다.
도 12는 본 개시의 일 실시예에 따른 키 인코딩 룰에 따른 키를 예시적으로 나타낸다.
도 13은 본 개시의 일 실시예에 따른 키-밸류 스토리지 장치의 동작 방법을 나타내는 흐름도이다.
도 14는 본 개시의 일 실시예에 따른 스토리지 장치의 일 예를 나타내는 블록도이다.
도 15는 본 개시의 일 실시예에 따른 스토리지 시스템을 나타내는 블록도이다.
도 16은 본 개시의 일 실시예에 따른 키 인코딩 룰에 따른 키를 예시적으로 나타낸다.
도 17은 본 개시의 일 실시예에 따라, 도 15의 제1 스토리지 장치를 나타낸다.
도 18은 본 개시의 일 실시예에 따른 스토리지 시스템을 나타내는 블록도이다.
도 19는 본 개시의 일 실시예에 따른 키-밸류 스토리지 장치의 동작 방법을 나타내는 흐름도이다.
도 20은 본 개시의 일 실시예에 따라, 호스트, 컨트롤러 및 비휘발성 메모리 사이의 기입 동작을 나타내는 흐름도이다.
도 21은 본 개시의 일 실시예에 따른 스토리지 장치의 일 예를 나타내는 블록도이다.
도 22는 본 개시의 일 실시예에 따른 키-밸류 스토리지 장치의 동작 방법을 나타내는 흐름도이다.
도 23은 본 개시의 일 실시예에 따른 스토리지 시스템을 나타내는 블록도이다.
도 24는 본 개시의 일 실시예에 따라, 도 23의 제1 스토리지 장치를 나타낸다.
도 25는 본 개시의 일 실시예에 따른 키-밸류 스토리지 장치의 동작 방법을 나타내는 흐름도이다.
도 26은 본 개시의 일 실시예에 따른 네트워크 시스템을 나타낸다.
도 27은 본 개시의 일 실시예에 따른 네트워크 시스템을 나타낸다.
도 28은 본 개시의 일 실시예에 따른 전자 장치를 나타낸다.
도 1은 본 개시의 일 실시예에 따른 스토리지 시스템(10)을 나타내는 블록도이다.
도 1을 참조하면, 스토리지 시스템(10)은 스토리지 장치(100) 및 호스트(200)를 포함하고, 스토리지 장치(100)는 컨트롤러(110) 및 비휘발성 메모리(Non Volatile Memory, NVM)(120)를 포함할 수 있다. 호스트(200)는 다양한 인터페이스를 통하여 스토리지 장치(100)와 통신할 수 있다. 예를 들어, 호스트(200)는 AP(Application Processor) 또는 SoC(System-On-a-Chip)로 구현될 수 있다.
일 실시예에서, 스토리지 장치(100)는 키-밸류 스토리지 장치 또는 키-밸류 스토어(store)일 수 있고, 예를 들어, 키-밸류 SSD(Solid State Drive)일 수 있다. 키-밸류 스토리지 장치는 키-밸류 페어(pair)를 이용하여 데이터를 빠르고 간단하게 처리하는 장치이다. 여기서, "키-밸류 페어"는 유일성을 가지는 키와, 상기 키에 대응하는 데이터인 밸류의 쌍이며, "튜플(tuple)" 또는 "키-밸류 튜플"이라고 지칭할 수 있다. 키-밸류 페어에서, 키는 파일 네임(file name), URI(Uniform Resource Identifier) 또는 해시와 같은 임의의 스트링(string)으로 표시되고, 밸류는 이미지, 사용자 선호 파일 또는 문서와 같은 임의의 종류의 데이터일 수 있다. 이때, 키와 밸류의 사이즈는 가변적이며, 예를 들어, 밸류의 사이즈는 밸류에 포함되는 데이터에 따라 변경될 수 있다.
이하에서는, 스토리지 장치(100)가 키-밸류 스토리지 장치인 실시예를 중심으로 설명하기로 하며, 본 명세서에서, 스토리지 장치(100)는 키-밸류 스토리지 장치 또는 키-밸류 스토어와 실질적으로 동일한 의미로 사용될 수 있다. 그러나, 스토리지 장치(100)는 키-밸류 스토리지 장치에 한정되지 않으며, 데이터를 오브젝트 단위로 관리하는 임의의 오브젝트 캐시 시스템 또는 오브젝트 스토리지 시스템에 적용될 수 있다. 따라서, 스토리지 장치(100)는 키-밸류 페어가 아닌 임의의 방식으로 데이터를 오브젝트 단위로 관리할 수 있다.
호스트(200)는 키-밸류 페어를 포함하는 커맨드(CMD), 예를 들어, 기입 요청 또는 풋(put) 커맨드를 스토리지 장치(100)에 전송할 수 있고, 스토리지 장치(100)는 커맨드(CMD)에 응답하여 비휘발성 메모리(120)에 밸류를 기입할 수 있다. 일 실시예에서, 호스트(200)는 키를 포함하는 커맨드(CMD), 예를 들어, 독출 요청 또는 겟(get) 커맨드를 스토리지 장치(100)에 전송할 수 있고, 스토리지 장치(100)는 커맨드(CMD)에 응답하여 비휘발성 메모리(120)로부터 키에 대응하는 밸류를 독출할 수 있다. 호스트(200)는 키를 고정 사이즈를 갖는 LBA(Logical Block Address) 단위로 변환하지 않고, 가변 사이즈를 갖는 키를 포함하는 커맨드(CMD)를 생성하고, 생성된 커맨드(CMD)를 스토리지 장치(100)에 전송할 수 있다.
컨트롤러(110)는 호스트(200)로부터의 기입 요청에 응답하여 비휘발성 메모리(120)에 밸류를 기입하거나, 또는 호스트(200)로부터의 독출 요청에 응답하여 비휘발성 메모리(120)에 저장된 밸류를 독출하도록 비휘발성 메모리(120)를 제어할 수 있다. 일 실시예에서, 컨트롤러(110)는 맵핑 테이블 매니저(Mapping Table Manager)(MTM) 및 맵핑 테이블(Mapping Table)(MT)을 포함할 수 있다. 도 1에서, 맵핑 테이블(MT)이 컨트롤러(110)에 포함되는 것으로 도시되었으나, 본 발명은 이에 한정되지 않으며, 일부 실시예들에서, 맵핑 테이블(MT)은 컨트롤러(110)가 구현된 컨트롤러 칩 외부의 메모리 칩, 예를 들어, DRAM 칩에 로딩될 수도 있다.
맵핑 테이블 매니저(MTM)는 커맨드(CMD)에 포함된 키로부터 맵핑 테이블(MT)의 맵핑 인덱스를 생성할 수 있다. 또한, 맵핑 테이블 매니저(MTM)는 맵핑 인덱스에 대응하는 맵핑 데이터를 맵핑 테이블(MT)에 업데이트하거나, 또는 맵핑 인덱스에 대응하는 맵핑 데이터를 맵핑 테이블(MT)로부터 검색할 수 있다. 맵핑 테이블(MT)은 복수의 맵핑 데이터를 저장하고, 각 맵핑 데이터는 맵핑 인덱스에 대응하는 물리 주소를 나타낸다. 일 실시예에서, 맵핑 인덱스는 키에 대응하는 해시 키(hashed key)일 수 있고, 물리 주소는 키에 대응하는 밸류를 기입하기 위한 비휘발성 메모리(120)의 PPN(Physical Page Number)일 수 있다. 이에 따라, 맵핑 테이블(MT)을 해시 테이블이라고 지칭할 수 있다. 맵핑 테이블 매니저(MTM)와 맵핑 테이블(MT)에 대해 도 2를 참조하여 더욱 상세하게 설명하기로 한다.
비휘발성 메모리(120)는 메모리 셀 어레이(Memory Cell Array)(MCA)를 포함할 수 있고, 메모리 셀 어레이(MCA)는 메모리 블록들(BLK1 내지 BLKz)을 포함할 수 있으며, 메모리 블록(BLK1)은 복수의 페이지들(PG1 내지 PGk)을 포함할 수 있다. 여기서, z와 k는 각각 양의 정수일 수 있고, 실시예에 따라 다양하게 변경될 수 있다. 예를 들어, 메모리 블록은 소거의 단위이고, 페이지는 기입 및 독출의 단위일 수 있다. 일부 실시예들에서, 메모리 셀 어레이(MCA)는 복수의 플레인들(planes), 복수의 다이들(dies), 또는 복수의 칩들(chips)을 포함할 수 있다. 일 실시예에서, 비휘발성 메모리(120)는 플래쉬 메모리 장치를 포함할 수 있고, 예를 들어, 낸드(NAND) 플래쉬 메모리 장치를 포함할 수 있다. 그러나, 본 발명은 이에 한정되지 않고, 비휘발성 메모리(120)는 ReRAM(resistive RAM), PRAM(phase change RAM), MRAM(magnetic RAM)과 같은 저항형 메모리 장치를 포함할 수 있다.
스토리지 시스템(10)은 예를 들어, PC(personal computer), 데이터 서버, 네트워크-결합 스토리지, IoT(Internet of Things) 장치, 또는 휴대용 전자 기기로 구현될 수 있다. 휴대용 전자 기기는, 랩탑 컴퓨터, 이동 전화기, 스마트폰, 태블릿 PC, PDA(personal digital assistant), EDA(enterprise digital assistant), 디지털 스틸 카메라, 디지털 비디오 카메라, 오디오 장치, PMP(portable multimedia player), PND(personal navigation device), MP3 플레이어, 휴대용 게임 콘솔(handheld game console), e-북(e-book), 웨어러블 기기 등일 수 있다.
일부 실시예들에서, 스토리지 장치(100)는 전자 장치에 내장되는 내부 메모리일 수 있다. 예를 들어, 스토리지 장치(100)는 SSD, 임베디드 UFS(Universal Flash Storage) 메모리 장치 또는 eMMC(embedded Multi-Media Card)일 수 있다. 일부 실시예들에서, 스토리지 장치(100)는 전자 장치에 착탈 가능한 외장 메모리일 수 있다. 예를 들어, 스토리지 장치(100)는 UFS 메모리 카드, CF(Compact Flash), SD(Secure Digital), Micro-SD(Micro Secure Digital), Mini-SD(Mini Secure Digital), xD(extreme Digital) 또는 메모리 스틱(Memory Stick)일 수 있다.
도 2는 본 개시의 일 실시예에 따른 키 영역(KA), 해시 키 영역(HKA) 및 낸드 영역(NA)을 예시적으로 나타낸다.
도 1 및 도 2를 함께 참조하면, 호스트(200)와 스토리지 장치(100)는 키 영역(KA)에서 정의되는 키 데이터를 송수신할 수 있다. 키 데이터의 사이즈는 가변적이며, 실시예에 따라 매우 큰 사이즈를 가질 수 있다. 맵핑 테이블(MT)은 한정적인 용량을 갖는 메모리에 로딩되므로, 키 데이터의 사이즈가 매우 큰 경우에는 키 데이터를 메모리에 저장하기 어려울 수 있다. 따라서, 컨트롤러(110)는 키 영역(KA)에서 정의된 키 데이터에 대해 해싱(hashing) 연산을 수행함으로써, 해시 키 영역(HKA)에서 해시 키를 생성할 수 있다. 예를 들어, 스토리지 장치(100)는 128 비트의 키에 대해 해시 연산을 수행함으로써 32 비트의 해시 키를 생성할 수 있다.
맵핑 테이블(MT)은 생성된 해시 키를 맵핑 인덱스로 사용하고, 맵핑 인덱스 별로 맵핑 데이터를 저장할 수 있다. 맵핑 데이터는 비휘발성 메모리, 예를 들어, 낸드 영역(NA)에 밸류를 저장하기 위한 물리 주소를 포함할 수 있다. 이와 같이, 맵핑 데이터는 해시 키와 물리 주소, 예를 들어, 물리적 페이지 넘버(PPN)의 대응 관계를 나타낼 수 있고, 이에 따라, 맵핑 테이블(MT)은 K2P(Key-to-PPN) 맵핑 테이블이라고 지칭할 수 있다.
예를 들어, 제1 키 데이터 및 제2 키 데이터에 대해 각각 해싱 연산을 수행한 결과, 동일한 제1 해시 키, 즉, 동일한 제1 맵핑 인덱스가 생성될 수 있다. 맵핑 테이블(MT)에서, 제1 키 데이터에 대응하는 제1 밸류의 물리 주소가 이미 제1 맵핑 인덱스에 대응하여 저장된 경우, 제2 키 데이터에 대응하는 제2 밸류의 물리 주소는 제1 맵핑 인덱스가 아닌 다른 맵핑 인덱스에 대응하여 저장될 수 있다. 이와 같이, 복수의 키 데이터에 대한 해싱 연산을 수행한 결과, 동일한 해시 키가 생성되는 경우를 "해싱 충돌(hashing collision)"이라고 지칭할 수 있다. 이러한 해싱 충돌의 발생을 줄이고, 맵핑 테이블(MT)에 맵핑 데이터를 고르게 분산시켜서 저장하기 위한 방법이 요구된다.
다시 도 1을 참조하면, 호스트(200)는 키 인코딩 룰 저장부(210) 및 키 생성부(220)를 포함할 수 있다. 일 실시예에서, 키 인코딩 룰 저장부(210) 및 키 생성부(220)는 소프트웨어로 구현될 수 있다. 일 실시예에서, 호스트(200)는 스토리지 장치(100)를 제어하는 스토리지 장치 컨트롤러를 포함할 수 있고, 키 인코딩 룰 저장부(210) 및 키 생성부(220)는 스토리지 장치 컨트롤러에 구현될 수 있다. 예를 들어, 호스트(200)는 키 밸류 스토리지 장치를 제어하는 키 밸류 제어 모듈(예를 들어, 도 15의 KVMa 또는 도 23의 KVMb)을 포함할 수 있고, 키 인코딩 룰 저장부(210) 및 키 생성부(220)는 키 밸류 제어 모듈에 구현될 수 있다.
키 인코딩 룰 저장부(210)는 복수의 키들에 대해 공통적으로 적용 가능한 키 인코딩 룰(KER)을 저장할 수 있다. 키 인코딩 룰(KER)은 키의 랜덤 영역 및 넌-랜덤 영역 중 적어도 하나에 대한 정보를 나타낼 수 있다. 일 실시예에서, 키 인코딩 룰 저장부(210)는 키 인코딩 룰(KER) 및 대응하는 인코딩 아이디(ID)를 함께 저장할 수 있다. 키 생성부(220)는 키 인코딩 룰 저장부(210)로부터 키 인코딩 룰(KER)을 수신하고, 수신한 키 인코딩 룰(KER)에 따라 키를 생성할 수 있다. 일부 실시예들에서, 호스트(200)는 키 인코딩 룰을 변경할 수 있고, 키 인코딩 룰 저장부(210)은 신규 키 인코딩 룰 및 대응하는 신규 인코딩 아이디를 저장할 수 있으며, 키 생성부(220)는 신규 키 인코딩 룰에 따라 키를 생성할 수 있다.
도 3은 본 개시의 일 실시예에 따른 키 인코딩 룰에 따라 생성된 키(KEYa)를 예시적으로 나타낸다.
도 1 및 도 3을 함께 참조하면, 키(KEYa)는 가변 사이즈를 가지며, 예를 들어, 수십 내지 수백 비트의 사이즈를 가질 수 있다. 키(KEYa)는 랜덤 비트들을 포함하는 랜덤 영역과 속성 정보를 포함하는 넌-랜덤 영역으로 구분될 수 있다. 넌-랜덤 영역은 밸류에 대한 속성 정보를 포함할 수 있고, 속성 정보는 일정한 패턴을 가진 비트들로 표현될 수 있다. 예를 들어, 밸류가 사진 파일인 경우 속성 정보는 '0001'일 수 있고, 밸류가 동영상 파일인 경우 속성 정보는 '0002'일 수 있다. 예를 들어, 호스트(200)가 사진 파일들에 대한 제1 및 제2 커맨드들을 스토리지 장치(100)에 전송할 경우, 제1 커맨드에 포함된 제1 키의 속성 정보와 제2 커맨드에 포함된 제2 키의 속성 정보가 동일할 수 있고, 이에 따라, 제1 키에 대응하는 해시 키와 제2 키에 대응하는 해시 키가 동일하게 생성되는 해시 충돌이 발생할 가능성이 있다.
일 실시예에 따르면, 호스트(200)는 제1 또는 제2 키를 포함하는 커맨드(CMD)를 전송하기 전에, 스토리지 장치(100)에 키 인코딩 룰(KER)을 전송할 수 있다. 일 실시예에서, 스토리지 시스템(10)에 전원이 인가되면, 호스트(200)는 스토리지 장치(100)에 키 인코딩 룰(KER)을 전송할 수 있다. 일 실시예에서, 키 인코딩 룰(KER)은 셋 피쳐(set feature) 커맨드의 형태로 전송될 수 있다. 일 실시예에서, 키 인코딩 룰(KER)은 비트 마스크(bit mask) 형태로 전달될 수 있다. 예를 들어, 키 인코딩 룰(KER)은 키의 랜덤 영역과 넌-랜덤 영역은 서로 다른 비트로 표현될 수 있다. 또 다른 예를 들어, 키 인코딩 룰(KER)은 키의 랜덤 영역의 시작 비트와 종료 비트를 이용하여 표현될 수 있다. 실시예에 따라, 키 인코딩 룰(KER)은 키의 사이즈 별로 서로 다를 수도 있다.
스토리지 장치(100)가 호스트(200)로부터 커맨드(CMD)를 수신하면, 스토리지 장치(100)는 이전에 수신한 키 인코딩 룰(KER)을 기초로 커맨드(CMD)에 포함된 키의 랜덤 비트들로부터 맵핑 인덱스(MI)를 생성할 수 있다. 구체적으로, 맵핑 테이블 매니저(MTM)는 키의 랜덤 비트들 중 적어도 일부 비트로부터 맵핑 인덱스(MI)를 생성할 수 있다. 일 실시예에서, 맵핑 테이블 매니저(MTM)는 키의 랜덤 비트들 중 적어도 일부 비트에 대해 해싱 연산을 수행하지 않고, 적어도 일부 비트를 맵핑 인덱스(MI)로 이용할 수 있다. 이에 따라, 제1 및 제2 커맨드들 각각의 넌-랜덤 영역에 포함된 속성 정보가 동일 또는 유사한 경우에도, 제1 및 제2 커맨드들 각각의 랜덤 영역에 포함된 적어도 일부 비트들로부터 제1 및 제2 맵핑 인덱스들을 생성함으로써 해싱 충돌이 발생할 가능성을 줄일 수 있다.
도 4는 본 개시의 일 실시예에 따른 맵핑 테이블(MT)과 비휘발성 메모리의 메모리 셀 어레이(MCA)를 예시적으로 나타낸다.
도 1 및 도 4를 함께 참조하면, 컨트롤러(110)는 호스트(200)로부터 제1 키(K1) 및 제1 밸류(V1)를 포함하는 제1 커맨드를 수신할 수 있다. 컨트롤러(110)는 키 인코딩 룰(KER)을 기초로 제1 키(K1)의 랜덤 비트들 중 적어도 일부로부터 제1 맵핑 인덱스(MIa)를 생성할 수 있다. 예를 들어, 제1 맵핑 인덱스(MIa)는 제1 키(K1)에 포함된 일부 랜덤 비트들과 동일하게 결정될 수 있다. 컨트롤러(110)는 맵핑 테이블(MT)에서 제1 맵핑 인덱스(MIa)에 대응하는 맵핑 엔트리에, 제1 밸류(V1)를 기입하기 위한 물리 주소를 PPN1로 저장할 수 있다. 이에 따라, 비휘발성 메모리(120)의 메모리 셀 어레이(MCA)의 PPN1에 제1 키(K1), 제1 맵핑 인덱스(MIa) 및 제1 밸류(V1)가 기입될 수 있다. 이어서, 컨트롤러(110)는 호스트(200)로부터 제2 커맨드를 수신하면, 제2 키(K2)의 랜덤 비트들 중 적어도 일부로부터 제2 맵핑 인덱스(MIb)를 생성할 수 있다. 또한, 컨트롤러(110)는 호스트(200)로부터 제3 커맨드를 수신하면, 제3 키(K3)의 랜덤 비트들 중 적어도 일부로부터 제3 맵핑 인덱스(MIc)를 생성할 수 있다.
상술한 바와 같이, 본 실시예에 따르면, 스토리지 장치(100)는 맵핑 테이블 매니저(MTM)를 포함하고, 맵핑 테이블 매니저(MTM)는 미리 수신한 키 인코딩 룰(KER)을 기초로 키의 일부 랜덤 비트들을 기초로 맵핑 인덱스(MI)를 생성할 수 있다. 일 실시예에서, 맵핑 테이블 매니저(MTM)는 키의 일부 랜덤 비트들에 대해 해싱 연산을 수행하지 않고, 키의 일부 랜덤 비트들을 그대로 맵핑 인덱스(MI)로 이용할 수 있다. 이에 따라, 스토리지 장치(100)는 맵핑 인덱스(MI)를 생성하기 위한 해싱 연산을 수행하지 않음으로써 동작 속도를 향상시킬 수 있다. 그러나, 본 발명은 이에 한정되지 않으며, 일 실시예에서, 맵핑 테이블 매니저(MTM)는 키의 일부 랜덤 비트들에 대해 해싱 연산을 수행함으로써 맵핑 인덱스(MI)를 생성할 수 있다. 이 경우에도, 동일하거나 유사한 비트들이 포함되는 넌-랜덤 영역이 아닌, 충분히 랜덤한 비트들이 포함되는 랜덤 영역에 대해 해싱 연산을 수행하므로 해싱 충돌의 발생 가능성을 줄일 수 있다.
도 5는 본 개시의 일 실시예에 따라, 도 1의 컨트롤러(110)를 나타내는 블록도이다.
도 5를 참조하면, 컨트롤러(110)는 프로세서(111), 메모리(112), 호스트 인터페이스(113) 및 비휘발성 메모리 인터페이스(114)를 포함할 수 있고, 이들은 버스(115)를 통해 서로 통신할 수 있다. 프로세서(111)은 중앙 처리 장치나 마이크로 프로세서 등을 포함할 수 있으며, 컨트롤러(110)의 전반적인 동작을 제어할 수 있다. 일 실시예에서, 프로세서(111)는 멀티 코어 프로세서로 구현될 수 있고, 예를 들어, 듀얼 코어 프로세서 또는 쿼드 코어(quad) 프로세서로 구현될 수 있다.
호스트 인터페이스(113)는 호스트(200)와 컨트롤러(110) 사이의 인터페이스를 제공할 수 있고, 예를 들어, USB(Universal Serial Bus), MMC, PCI-E(PCIExpress), ATA(AT Attachment), SATA(Serial AT Attachment), PATA(Parallel AT Attachment), SCSI(Small Computer System Interface), SAS(Serial Attached SCSI), ESDI(Enhanced Small Disk Interface), IDE(Integrated Drive Electronics) 등에 따른 인터페이스를 제공할 수 있다.
일 실시예에서, 호스트 인터페이스(113)는 커맨드 디코더(CD)를 포함할 수 있고, 커맨드 디코더(CD)는 호스트(200)로부터 수신한 커맨드(CMD)를 디코딩함으로써 커맨드(CMD)에 포함된 키와 밸류를 구분할 수 있다. 일 실시예에서, 호스트 인터페이스(113)는 키에 대해 해싱 연산을 수행하는 해싱 모듈을 더 포함할 수 있다. 그러나, 본 발명은 이에 한정되지 않으며, 해싱 모듈은 FTL(Flash Translation Layer)에 구현될 수 있고, 이에 따라, 메모리(112)에 로딩될 수 있다.
일 실시예에서, 해싱 모듈은 키의 사이즈 또는 키의 랜덤 비트들의 사이즈에 따라 활성화될 수 있다. 예를 들어, 랜덤 비트들의 사이즈가 임계 값보다 작은 경우 해싱 모듈은 활성화될 수 있다. 이때, 해싱 모듈은 키로부터 해시 키를 생성하고, 생성된 해시 키를 맵핑 테이블 매니저(MTM)에 제공할 수 있고, 맵핑 테이블 매니저(MTM)는 해시 키를 맵핑 인덱스로 이용할 수 있다. 한편, 랜덤 비트들의 사이즈가 임계 값 이상인 경우, 해싱 모듈은 비활성화될 수 있다. 이때, 맵핑 테이블 매니저(MTM)는 키의 랜덤 영역에 포함된 랜덤 비트들 중 적어도 일부를 맵핑 인덱스로 이용할 수 있다.
메모리(112)는 프로세서(111)의 제어에 따라 동작하며, 동작 메모리, 버퍼 메모리, 캐시 메모리 등으로 사용될 수 있다. 예를 들어, 메모리(112)는 DRAM, SRAM과 같은 휘발성 메모리 또는 PRAM, 플래시 메모리와 같은 비휘발성 메모리로 구현될 수도 있다. 일 실시예에서, 메모리(112)에는 맵핑 테이블 매니저(MTM) 및 맵핑 테이블(MT)이 로딩될 수 있다. 맵핑 테이블 매니저(MTM)는 펌웨어 또는 소프트웨어로 구현될 수 있고, 메모리(112)에 로딩될 수 있다. 일 실시예에서, 맵핑 테이블 매니저(MIM)는 FTL에 구현될 수 있다. 그러나, 본 발명은 이에 한정되지 않으며, 맵핑 테이블 매니저(MTM)는 하드웨어로 구현될 수도 있다. 맵핑 테이블(MT)은 예를 들어, K2P 맵핑 테이블을 저장할 수 있고, 메모리(112)에 로딩될 수 있다.
비휘발성 메모리 인터페이스(114)는 컨트롤러(110)와 비휘발성 메모리(120) 사이의 인터페이스를 제공할 수 있다. 예를 들어, 맵핑 테이블(MT), 기입 데이터 및 독출 데이터가 비휘발성 메모리 인터페이스(114)를 통해 컨트롤러(110)와 비휘발성 메모리(120) 사이에서 송수신될 수 있다. 일 실시예에서, 비휘발성 메모리 인터페이스(114)의 개수는 스토리지 장치(100)에 포함된 비휘발성 메모리 칩의 개수 또는, 컨트롤러(110)와 비휘발성 메모리(120) 사이의 채널들의 개수에 대응할 수 있다.
도 6은 본 개시의 일 실시예에 따른 키-밸류 스토리지 장치의 동작 방법을 나타내는 흐름도이다.
도 6을 참조하면, 본 실시예에 따른 키-밸류 스토리지 장치의 동작 방법은 예를 들어, 도 1의 스토리지 장치(100)에서 시계열적으로 수행되는 단계들을 포함할 수 있다. 따라서, 도 1 내지 도 5를 참조하여 상술된 내용은 본 실시예에 적용될 수 있고, 중복된 설명은 생략하기로 한다.
단계 S110에서, 스토리지 장치(100)는 호스트(200)로부터 키에 포함되는 랜덤 영역 및 넌-랜덤 영역 중 적어도 하나에 대한 정보를 수신한다. 구체적으로, 컨트롤러(110)는 키에 포함된 랜덤 영역 및 넌-랜덤 영역 중 적어도 하나에 대한 정보를 포함하는 키 인코딩 룰을 수신할 수 있다. 일 실시예에서, 컨트롤러(110)는 전원이 인가되는 초기 단계에 호스트(200)로부터 키 인코딩 룰을 포함하는 셋 피쳐 커맨드를 수신할 수 있다.
단계 S120에서, 스토리지 장치(100)는 호스트(200)로부터 제1 키를 포함하는 제1 커맨드를 수신한다. 예를 들어, 제1 커맨드는 제1 키 및 제1 키에 대응하는 제1 밸류를 포함하는 풋 커맨드일 수 있다. 예를 들어, 제1 커맨드는 제1 키를 포함하는 겟 커맨드일 수 있다. 구체적으로, 커맨드 디코더(CD)는 제1 커맨드를 디코딩하여 제1 키를 출력할 수 있다. 일 실시예에서, 커맨드 디코더(CD)는 키 인코딩 룰(KER)을 기초로 제1 키의 랜덤 영역에 포함되는 랜덤 비트들을 출력할 수 있다.
단계 S130에서, 스토리지 장치(100)는 제1 키에 포함된 랜덤 비트들 중 적어도 일부에 대응하는 제1 비트들로부터 맵핑 인덱스를 생성한다. 구체적으로, 맵핑 테이블 매니저(MTM)는 키 인코딩 룰을 기초로 제1 키에 포함된 제1 비트들을 맵핑 인덱스로 이용할 수 있다. 예를 들어, 제1 키가 128 비트인 경우, 맵핑 테이블 매니저(MTM)는 제1 키에 포함된 랜덤 비트들 중 32비트에 해당하는 제1 비트들을 추출할 수 있고, 추출된 제1 비트들을 맵핑 인덱스로 이용할 수 있다.
단계 S140에서, 스토리지 장치(100)는 맵핑 테이블을 이용하여 비휘발성 메모리에 대한 동작을 제어한다. 제1 커맨드가 풋 커맨드인 경우, 컨트롤러(110)는 생성된 맵핑 인덱스에 대응하는 맵핑 엔트리에 물리 주소를 저장하고, 저장된 물리 주소에 따라 비휘발성 메모리(120)에 대한 기입 동작을 제어할 수 있다. 제1 커맨드가 겟 커맨드인 경우, 컨트롤러(110)는 생성된 맵핑 인덱스에 대응하는 맵핑 엔트리로부터 물리 주소를 검색하고, 검색된 물리 주소에 따라 비휘발성 메모리(120)에 대한 독출 동작을 제어할 수 있다.
도 7은 본 개시의 일 실시예에 따라 키-밸류 스토리지 장치의 맵핑 인덱스 생성 방법을 나타내는 흐름도이다.
도 7을 참조하면, 본 실시예에 따른 맵핑 인덱스 생성 방법은 도 6의 키-밸류 스토리지 장치의 동작 방법의 일 구현 예에 대응할 수 있다. 예를 들어, 본 실시예에 따른 맵핑 인덱스 생성 방법은 도 6의 단계 S130 이후에 수행되는 단계들을 포함할 수 있다. 예를 들어, 본 실시예에 따른 맵핑 인덱스 생성 방법은 도 5의 컨트롤러(110)에서 시계열적으로 수행되는 단계들을 포함할 수 있다.
단계 S210에서, 제1 커맨드를 디코딩함으로써 제1 키를 획득한다. 예를 들어, 커맨드 디코더(CD)는 제1 커맨드를 디코딩하고, 획득된 제1 키를 맵핑 테이블 매니저(MTM)에 제공할 수 있다. 단계 S220에서, 랜덤 비트들의 사이즈가 임계 값 이상인지 판단한다. 예를 들어, 임계 값은 맵핑 인덱스의 사이즈에 대응할 수 있다. 예를 들어, 맵핑 테이블 매니저(MTM)는 랜덤 비트들의 사이즈가 맵핑 인덱스의 사이즈 이상인지 판단할 수 있다. 판단 결과, 랜덤 비트들의 사이즈가 임계 값 이상인 경우 단계 S230을 수행한다. 한편, 랜덤 비트들의 사이즈가 임계 값 보다 작은 경우 단계 S240을 수행한다. 그러나, 본 발명은 이에 한정되지 않으며, 일부 실시예들에서, 컨트롤러(110)는 키의 사이즈가 임계 값 이상인지 판단할 수도 있다.
단계 S230에서, 랜덤 비트들 중 적어도 일부에 대응하는 제1 비트들을 맵핑 인덱스(MI)로서 이용한다. 단계 S240에서, 제1 키에 대해 해싱 연산을 수행함으로써 제1 해시 키를 생성한다. 단계 S250에서, 제1 해시 키를 맵핑 인덱스로서 이용한다. 이와 같이, 본 실시예에 따르면, 제1 키에 대한 해싱 연산은 제1 키의 사이즈에 따라 선택적으로 수행될 수 있다. 단계 S230 및 단계 S250 이후에는 도 6의 단계 S170이 수행될 수 있다.
도 8은 본 개시의 일 실시예에 따라, 호스트(200), 컨트롤러(110) 및 비휘발성 메모리(120) 사이의 기입 동작을 나타내는 흐름도이다. 본 실시예에 따른 기입 동작은 도 6의 일 구현 예에 대응할 수 있고, 이하에서는 도 1 및 도 8을 함께 참조하여 설명하기로 한다.
단계 S310에서, 호스트(200)는 키 인코딩 룰(KER)을 포함하는 커맨드를 컨트롤러(110)에 전송한다. 단계 S320에서, 컨트롤러(110)는 커맨드의 수신 완료를 나타내는 응답 메시지를 호스트(200)에 전송한다. 단계 S330에서, 호스트(200)는 제1 키(K1) 및 제1 밸류(V1)를 포함하는 풋 커맨드를 컨트롤러(110)에 전송한다. 그러나, 본 발명은 이에 한정되지 않으며, 일부 실시예에서, 호스트(200)는 키 인코딩 룰(KER)을 포함하는 풋 커맨드를 컨트롤러(110)에 전송할 수도 있다. 단계 S340에서, 컨트롤러(110)는 키 인코딩 룰(KER)을 기초로 제1 키(K1)의 랜덤 비트들로부터 맵핑 인덱스(MIa)를 생성한다. 단계 S350에서, 컨트롤러(110)는 비휘발성 메모리(120)에 제1 밸류(V1)를 기입하기 위한 제1 물리 주소(PPN1)를 맵핑 테이블(MT)에 업데이트한다.
단계 S360에서, 컨트롤러(110)는 비휘발성 메모리(120)에 제1 밸류(V1) 및 제1 물리 주소(PPN1)를 포함하는 기입 커맨드를 전송한다. 단계 S370에서, 비휘발성 메모리(120)는 제1 물리 주소(PPN1)에 제1 밸류(V1)를 기입한다. 이때, 제1 물리 주소(PPN1)에 제1 키(K1) 및 제1 맵핑 인덱스(MIa)가 더 기입될 수 있다. 단계 S380에서, 비휘발성 메모리(120)는 기입 동작의 완료를 나타내는 응답 메시지를 컨트롤러(110)에 전송한다. 단계 S390에서, 컨트롤러(110)는 제1 밸류(V1)의 기입 동작의 완료를 나타내는 응답 메시지를 호스트(200)에 전송한다.
도 9는 본 개시의 일 실시예에 따라, 호스트(200), 컨트롤러(110) 및 비휘발성 메모리(120) 사이의 독출 동작을 나타내는 흐름도이다. 본 실시예에 따른 기입 동작은 도 6의 일 구현 예에 대응할 수 있고, 이하에서는 도 1 및 도 9를 함께 참조하여 설명하기로 한다.
단계 S410에서, 호스트(200)는 키 인코딩 룰(KER)을 포함하는 커맨드를 컨트롤러(110)에 전송한다. 단계 S420에서, 컨트롤러(110)는 커맨드의 수신 완료를 나타내는 응답 메시지를 호스트(200)에 전송한다. 단계 S430에서, 호스트(200)는 제1 키(K1)를 포함하는 겟 커맨드를 컨트롤러(110)에 전송한다. 단계 S440에서, 컨트롤러(110)는 키 인코딩 룰(KER)을 기초로 제1 키(K1)의 랜덤 비트들로부터 맵핑 인덱스(MIa)를 생성한다. 단계 S450에서, 컨트롤러(110)는 비휘발성 메모리(120)로부터 제1 밸류(V1)를 독출하기 위한 제1 물리 주소(PPN1)를 맵핑 테이블(MT)로부터 검색한다.
단계 S460에서, 컨트롤러(110)는 비휘발성 메모리(120)에 제1 물리 주소(PPN1)를 포함하는 독출 커맨드를 전송한다. 단계 S470에서, 비휘발성 메모리(120)는 제1 물리 주소(PPN1)로부터 제1 밸류(V1)를 독출한다. 이때, 제1 물리 주소(PPN1)로부터 제1 키(K1) 및 제1 맵핑 인덱스(MIa)를 더 독출할 수 있다. 단계 S480에서, 비휘발성 메모리(120)는 제1 밸류(V1)를 포함하는 응답 메시지를 컨트롤러(110)에 전송한다. 단계 S490에서, 컨트롤러(110)는 제1 밸류(V1)를 포함하는 응답 메시지를 호스트(200)에 전송한다.
도 10은 본 개시의 일 실시예에 따라, 호스트(200)와 스토리지 장치(100) 사이의 동작 방법을 나타내는 흐름도이다.
도 10을 참조하면, 단계 S510에서, 호스트(200)는 제1 키 인코딩 룰(KER1) 및 제1 인코딩 아이디(ID1)를 포함하는 커맨드를 스토리지 장치(100)에 전송한다. 단계 S515에서, 스토리지 장치(100)는 커맨드의 수신 완료를 나타내는 응답 메시지를 호스트(200)에 전송한다. 단계 S520에서, 호스트(200)는 제1 키를 포함하는 커맨드를 스토리지 장치(100)에 전송한다. 예를 들어, 커맨드는 풋 커맨드, 겟 커맨드 또는 삭제 커맨드일 수 있다. 단계 S530에서, 스토리지 장치(100)는 제1 키 인코딩 룰(KRE1)을 기초로 제1 키(K1)로부터 맵핑 인덱스를 생성한다. 단계 S540에서, 스토리지 장치(100)는 커맨드에 따른 메모리 동작을 수행한다. 예를 들어, 풋 커맨드가 수신된 경우, 스토리지 장치(100)는 밸류 기입 동작을 수행할 수 있다. 예를 들어, 겟 커맨드가 수신된 경우, 스토리지 장치(100)는 밸류 독출 동작을 수행할 수 있다. 단계 S545에서, 스토리지 장치(100)는 메모리 동작이 완료되었음을 나타내는 응답 메시지를 호스트(200)에 전송한다.
단계 S550에서, 호스트(200)는 제2 키 인코딩 룰(KER2) 및 제2 인코딩 아이디(ID2)를 포함하는 커맨드를 스토리지 장치(100)에 전송한다. 단계 S555에서, 스토리지 장치(100)는 커맨드의 수신 완료를 나타내는 응답 메시지를 호스트(200)에 전송한다. 단계 S560에서, 호스트(200)는 제2 키를 포함하는 커맨드를 스토리지 장치(100)에 전송한다. 예를 들어, 커맨드는 풋 커맨드, 겟 커맨드 또는 삭제 커맨드일 수 있다. 단계 S570에서, 스토리지 장치(100)는 제2 키 인코딩 룰(KRE2)을 기초로 제2 키(K2)로부터 맵핑 인덱스를 생성한다. 단계 S580에서, 스토리지 장치(100)는 커맨드에 따른 메모리 동작을 수행한다. 단계 S590에서, 스토리지 장치(100)는 메모리 동작이 완료되었음을 나타내는 응답 메시지를 호스트(200)에 전송한다.
상술한 바와 같이, 본 실시예에 따르면, 호스트(200)는 스토리지 장치(100)의 사용 도중에 키 인코딩 룰을 변경할 수 있다. 이때, 호스트(200)는 키 인코딩 룰과 함께, 키 인코딩 룰에 대응하는 인코딩 아이디를 스토리지 장치(100)에 전송할 수 있고, 스토리지 장치(100)는 인코딩 아이디에 따라 제1 키 인코딩 룰(KER1)과 제2 키 인코딩 룰(KER2)을 구분할 수 있다.
도 11은 본 개시의 일 실시예에 따른 스토리지 장치의 일 예(100A)를 나타내는 블록도이다.
도 11을 참조하면, 스토리지 장치(100A)는 컨트롤러(110a) 및 비휘발성 메모리(120a)를 포함할 수 있다. 컨트롤러(110a)는 커맨드 디코더(CD) 및 제1 및 제2 컨트롤러들(CNT1, CNT2)을 포함할 수 있다. 비휘발성 메모리(120a)는 제1 및 제2 비휘발성 메모리들(NVM1, NVM2)을 포함할 수 있다. 예를 들어, 커맨드 디코더(CD)는 HIL(Host Interface Layer) 코어에 구현될 수 있다. 예를 들어, 제1 및 제2 컨트롤러들(CNT1, CNT2)은 듀얼 코어 프로세서로 구현될 수 있다.
제1 컨트롤러(CNT1)는 제1 비휘발성 메모리(NVM1)를 제어하고, 제1 비휘발성 메모리(NVM1)에 대한 맵핑 정보를 저장하는 제1 맵핑 테이블(MT1)을 포함할 수 있다. 제2 컨트롤러(CNT2)는 제2 비휘발성 메모리(NVM2)을 제어하고, 제2 비휘발성 메모리(NVM2)에 대한 맵핑 정보를 저장하는 제2 맵핑 테이블(MT2)을 포함할 수 있다. 일 실시예에서, 제1 및 제2 비휘발성 메모리들(NVM1, NVM2)은 서로 다른 개별적인 메모리 칩들로 구현될 수 있다. 일 실시예에서, 제1 및 제2 비휘발성 메모리들(NVM1, NVM2)은 서로 다른 개별적인 채널들을 통해 컨트롤러(110a)에 연결될 수 있다.
도 12는 본 개시의 일 실시예에 따른 키 인코딩 룰에 따른 키(KEYb)를 예시적으로 나타낸다.
도 11 및 도 12를 함께 참조하면, 커맨드 디코더(CD)는 호스트로부터 커맨드(CMD)를 수신하고, 수신한 커맨드(CMD)를 디코딩하여 키(KEYb)를 생성할 수 있다. 커맨드 디코더(CD)는 키 인코딩 룰에 따라 키(KEYb)를 넌-랜덤 영역에 포함된 넌-랜덤 비트들 및 랜덤 영역에 포함된 랜덤 비트들로 구분할 수 있다. 예를 들어, 키(KEYb)의 넌-랜덤 영역은 X 비트를 포함하고, 랜덤 영역은 Y 비트 및 Z 비트를 포함할 수 있다.
일 실시예에서, 커맨드 디코더(CD)는 랜덤 비트들 중 일부 비트들을 키 분배 비트로 이용할 수 있다. 구체적으로, 커맨드 디코더(CD)는 랜덤 비트들 중 Z 비트를 키 분배 비트로 이용할 수 있고, Z 비트를 기초로 키(KEYb)를 제1 컨트롤러(CNT1) 또는 제2 컨트롤러(CNT2)로 할당할 수 있다. 예를 들어, Z 비트는 1 비트일 수 있다. 예를 들어, Z 비트가 0인 경우, 커맨드 디코더(CD)는 키(KEYb)를 제1 컨트롤러(CNT1)에 할당하고, Z 비트가 1인 경우 커맨드 디코더(CD)는 키(KEYb)를 제2 컨트롤러(CNT2)에 할당할 수 있다.
도 13은 본 개시의 일 실시예에 따른 키-밸류 스토리지 장치의 동작 방법을 나타내는 흐름도이다. 도 13을 참조하면, 본 실시예에 따른 키-밸류 스토리지 장치의 동작 방법은 예를 들어, 도 11의 스토리지 장치(100A)에서 시계열적으로 수행되는 단계들을 포함할 수 있다.
단계 S610에서, 스토리지 장치(100A)는 호스트로부터 키에 포함되는 랜덤 영역 및 넌-랜덤 영역 중 적어도 하나에 대한 정보를 수신한다. 구체적으로, 컨트롤러(110a)는 키 인코딩 룰을 수신할 수 있다. 단계 S620에서, 스토리지 장치(100A)는 제1 키를 포함하는 제1 커맨드를 수신한다. 단계 S630에서, 스토리지 장치(100A)는 키 인코딩 룰을 기초로 제1 키에 포함된 랜덤 비트들 중 적어도 제2 비트에 따라 제1 커맨드를 복수의 비휘발성 메모리들 중 제1 비휘발성 메모리에 할당한다. 예를 들어, 제2 비트는 도 12의 Z 비트에 대응할 수 있다.
단계 S640에서, 스토리지 장치(100A)는 키 인코딩 룰을 기초로 제1 키에 포함된 랜덤 비트들 중 적어도 일부에 대응하는 제1 비트들로부터 제1 맵핑 테이블의 맵핑 인덱스를 생성한다. 일 실시예에서, 스토리지 장치(100A)는 제1 키에 포함된 랜덤 비트들에 대해 해싱 연산을 수행하지 않고, 제1 비트들을 맵핑 인덱스로 이용할 수 있다. 예를 들어, 제1 비트들은 도 12의 Y 비트들 중 일부에 대응할 수 있다. 단계 S650에서, 스토리지 장치(100A)는 제1 맵핑 테이블을 이용하여 제1 비휘발성 메모리에 대한 동작을 제어한다.
일부 실시예에서, 상기 방법은, 단계 S630 이후에, 스토리지 장치(100A)는 랜덤 비트들의 사이즈가 임계 값 이상인지 판단하는 단계를 더 포함할 수 있다. 이때, 랜덤 비트들의 사이즈가 임계 값 이상인 경우, 제1 비트들로부터 맵핑 인덱스를 생성할 수 있다. 한편, 랜덤 비트들의 사이즈가 임계 값보다 작은 경우, 제1 키에 대해 해싱 연산을 수행함으로써 제1 키에 대응하는 제1 해시 키를 생성하고, 생성된 제1 해시 키를 맵핑 인덱스로서 이용할 수 있다.
도 14는 본 개시의 일 실시예에 따른 스토리지 장치의 일 예(100B)를 나타내는 블록도이다.
도 14를 참조하면, 스토리지 장치(100B)는 도 11의 스토리지 장치(100A)의 변형 실시예에 대응할 수 있다. 스토리지 장치(100B)는 컨트롤러(110b) 및 비휘발성 메모리(120b)를 포함할 수 있다. 컨트롤러(110b)는 커맨드 디코더(CD') 및 제1 내지 제4 컨트롤러들(CNT1 내지 CNT4)을 포함할 수 있다. 비휘발성 메모리(120b)는 제1 내지 제4 비휘발성 메모리들(NVM1 내지 NVM4)을 포함할 수 있다. 예를 들어, 제1 내지 제4 컨트롤러들(CNT1 내지 CNT4)은 쿼드 코어 프로세서로 구현될 수 있다.
커맨드 디코더(CD')는 랜덤 비트들 중 일부 비트(예를 들어, 도 12의 Z 비트)를 키 분배 비트로 이용할 수 있고, Z 비트를 기초로 키(KEYb)를 제1 내지 제4 컨트롤러들(CNT1 내지 CNT4) 중 하나로 할당할 수 있다. 예를 들어, Z 비트는 2 비트일 수 있다. 예를 들어, Z 비트가 00인 경우, 커맨드 디코더(CD')는 키(KEYb)를 제1 컨트롤러(CNT1)에 할당하고, Z 비트가 01인 경우 커맨드 디코더(CD')는 키(KEYb)를 제2 컨트롤러(CNT2)에 할당하며, Z 비트가 10인 경우, 커맨드 디코더(CD')는 키(KEYb)를 제3 컨트롤러(CNT3)에 할당하고, Z 비트가 11인 경우 커맨드 디코더(CD')는 키(KEYb)를 제4 컨트롤러(CNT4)에 할당할 수 있다. 도 13에 예시된 동작 방법은 본 실시예에 따른 스토리지 장치(100B)에서도 수행될 수 있다.
도 15는 본 개시의 일 실시예에 따른 스토리지 시스템(20)을 나타내는 블록도이다. 도 16은 본 개시의 일 실시예에 따른 키 인코딩 룰에 따른 키(KEYc)를 예시적으로 나타낸다. 이하에서는, 도 15 및 도 16을 함께 참조하여 설명하기로 한다.
스토리지 시스템(20)은 도 1의 스토리지 시스템(10)의 변형 실시예에 대응할 수 있다. 도 1 내지 도 14를 참조하여 상술된 내용은 본 실시예에 적용될 수 있고, 중복된 설명은 생략하기로 한다. 스토리지 시스템(20)은 제1 내지 제4 스토리지 장치들(100a 내지 100d) 및 호스트(200a)을 포함할 수 있다. 호스트(200a)는 제1 내지 제4 스토리지 장치들(100a 내지 100d)을 제어하는 키-밸류 제어 모듈(KVMa)을 포함할 수 있다. 예를 들어, 키-밸류 제어 모듈(KVMa)은 소프트웨어로 구현될 수 있다.
키-밸류 제어 모듈(KVMa)은 키 인코딩 룰 저장부(210), 키 생성부(220), 키 분배 룰 저장부(230) 및 키-밸류 요청 분배부(240)를 포함할 수 있다. 키 생성부(220)는 키 인코딩 룰 저장부(210)로부터 키 인코딩 룰을 수신하고, 수신한 키 인코딩 룰을 기초로 키(KEYc)를 생성할 수 있다. 예를 들어, 키(KEYc)의 넌-랜덤 영역은 X 비트를 포함하고, 랜덤 영역은 Y1 비트, Y2 비트, 및 Z 비트를 포함할 수 있다.
키 분배 룰 저장부(230)는 키 생성부(220)에서 생성된 키들을 제1 내지 제4 스토리지 장치들(100a 내지 100d)에 분배하기 위한 키 분배 룰을 저장할 수 있다. 예를 들어, 키 분배 룰 저장부(230)는 키(KEYc)의 랜덤 영역의 하위 비트들에 대응하는 Z 비트를 키 분배 비트로 이용하는 키 분배 룰을 저장할 수 있다. 키-밸류 요청 분배부(240)는 키 분배 룰 저장부(230)로부터 키 분배 룰을 수신하고, 수신한 키 분배 룰을 기초로 키(KEYc)를 포함하는 요청을 제1 내지 제4 스토리지 장치들(100a 내지 100d) 중 하나에 할당할 수 있다.
예를 들어, 키-밸류 요청 분배부(240)는 Z 비트가 00인 제1 키(K1)를 포함하는 요청(예를 들어, 풋 커맨드 또는 겟 커맨드)을 제1 스토리지 장치(100a)에 할당할 수 있다. 예를 들어, 키-밸류 요청 분배부(240)는 Z 비트는 01인 제2 키(K2)를 포함하는 요청을 제2 스토리지 장치(100b)에 할당할 수 있다. 예를 들어, 키-밸류 요청 분배부(240)는 Z 비트가 10인 제3 키(K3)를 포함하는 요청을 제3 스토리지 장치(100c)에 할당할 수 있다. 예를 들어, 키-밸류 요청 분배부(240)는 Z 비트가 11인 제4 키(K4)를 포함하는 요청을 제4 스토리지 장치(100d)에 할당할 수 있다.
도 17은 본 개시의 일 실시예에 따라, 도 15의 제1 스토리지 장치(100a)를 나타낸다. 도시되지는 않았으나, 도 15의 제2 내지 제4 스토리지 장치들(100b 내지 100d)도 제1 스토리지 장치(100a)와 실질적으로 유사하게 구현될 수 있다. 따라서, 도 17을 참조하여 후술되는 내용은 제2 내지 제4 스토리지 장치들(100b 내지 100d)에 적용될 수 있다.
도 17을 참조하면, 제1 스토리지 장치(100a)는 제1 내지 제4 맵핑 테이블들(MT1 내지 MT4) 및 제1 내지 제4 비휘발성 메모리들(NVM1 내지 NVM4)을 포함할 수 있고, 제1 내지 제4 맵핑 테이블들(MT1 내지 MT4)을 이용하여 제1 내지 제4 비휘발성 메모리들(NVM1 내지 NVM4)을 각각 제어할 수 있다. 제1 스토리지 장치(100a)는 호스트(200a)로부터 키 인코딩 룰을 수신할 수 있다. 나아가, 제1 스토리지 장치(100a)는 호스트(200a)로부터 키 분배 룰도 수신할 수 있다.
제1 스토리지 장치(100a)는 키의 랜덤 비트들 중 일부 비트(예를 들어, 도 16의 Y2 비트들)을 기초로, 키를 제1 내지 제4 비휘발성 메모리들(NVM1 내지 NVM4) 중 하나에 할당할 수 있다. 예를 들어, 제1 스토리지 장치(100a)는 Y2 비트들이 00인 제1 키(K1a)를 제1 비휘발성 메모리(NVM1)에 할당하고, Y2 비트들이 01인 제2 키(K1b)를 제2 비휘발성 메모리(NVM2)에 할당하며, Y2 비트들이 10인 제3 키(K1c)를 제3 비휘발성 메모리(NVM3)에 할당하고, Y2 비트들이 11인 제4 키(K1d)를 제4 비휘발성 메모리(NVM4)에 할당할 수 있다.
제1 스토리지 장치(100a)는 제1 키(K1a)의 랜덤 비트들 중 적어도 일부 비트(예를 들어, 도 16의 Y1 비트들 중 적어도 일부 비트)로부터 제1 맵핑 인덱스(MI1)를 생성하고, 제1 맵핑 인덱스(MI1)에 대응하는 맵핑 정보를 제1 맵핑 테이블(MT1)에 저장할 수 있다. 마찬가지로, 제1 스토리지 장치(100a)는 제2 내지 제4 키들(K1b 내지 K1d) 각각의 랜덤 비트들 중 적어도 일부 비트로부터 제2 내지 제4 맵핑 인덱스들(MI2 내지 MI4)을 각각 생성할 수 있다. 또한, 제1 스토리지 장치(100a)는 제2 내지 제4 맵핑 인덱스들(MI2 내지 MI4)에 각각 대응하는 맵핑 정보를 제2 내지 제4 맵핑 테이블들(MT2 내지 MT4)에 각각 저장할 수 있다.
도 18은 본 개시의 일 실시예에 따른 스토리지 시스템(30)을 나타내는 블록도이다. 본 실시예에 따른 스토리지 시스템(30)은 도 1의 스토리지 시스템(1)의 변형 실시예에 대응할 수 있다.
도 18을 참조하면, 스토리지 시스템(30)은 스토리지 장치(100') 및 호스트(200')를 포함하고, 스토리지 장치(100')는 컨트롤러(110') 및 비휘발성 메모리(120)를 포함할 수 있다. 호스트(200')는 키 인코딩 룰 저장부(210)를 포함할 수 있고, 컨트롤러(110')는 키 생성부(KG), 맵핑 테이블 매니저(MTM) 및 맵핑 테이블(MT)을 포함할 수 있다. 도 1의 스토리지 시스템(10)과 달리, 본 실시예에 따르면, 키 생성부(KG)는 호스트(200')가 아닌 컨트롤러(110')에 포함될 수 있다.
호스트(200')는 커맨드(CMD)를 전송하기 전에, 스토리지 장치(100')에 키 인코딩 룰을 전송할 수 있다. 이어서, 호스트(200')는 밸류를 포함하는 커맨드(CMD)를 스토리지 장치(100')에 전송할 수 있다. 키 생성부(KG)는 키 인코딩 룰을 기초로 커맨드(CMD)로부터 키(KEY)를 생성할 수 있다. 맵핑 테이블 매니저(MTM)는 키 생성부(KG)로부터 키(KEY)를 수신하고, 수신한 키(KEY)의 랜덤 비트들 중 적어도 일부로부터 맵핑 인덱스(MI)를 생성할 수 있다. 또한, 맵핑 테이블 매니저(MTM)는 맵핑 인덱스(MI)에 대응하는 맵핑 정보를 맵핑 테이블(MT)에 저장할 수 있다.
도 19는 본 개시의 일 실시예에 따른 키-밸류 스토리지 장치의 동작 방법을 나타내는 흐름도이다. 도 19를 참조하면, 본 실시예에 따른 키-밸류 스토리지 장치의 동작 방법은 예를 들어, 도 18의 스토리지 장치(100')에서 시계열적으로 수행되는 단계들을 포함할 수 있다.
단계 S710에서, 스토리지 장치(100')는 호스트(200')로부터 키에 포함되는 랜덤 영역 및 넌-랜덤 영역 중 적어도 하나에 대한 정보를 수신한다. 구체적으로, 컨트롤러(110')는 키 인코딩 룰을 수신할 수 있다. 단계 S720에서, 스토리지 장치(100')는 호스트(200')로부터 제1 밸류를 포함하는 제1 커맨드를 수신한다. 단계 S730에서, 스토리지 장치(100')는 키 인코딩 룰을 기초로 제1 커맨드로부터 제1 키를 생성한다.
단계 S740에서, 스토리지 장치(100')는 키 인코딩 룰을 기초로 제1 키에 포함된 랜덤 비트들 중 적어도 일부에 대응하는 제1 비트들로부터 맵핑 인덱스를 생성한다. 일 실시예에서, 스토리지 장치(100')는 제1 키에 포함된 랜덤 비트들에 대해 해싱 연산을 수행하지 않고, 제1 비트들을 맵핑 인덱스로 이용할 수 있다. 예를 들어, 제1 비트들은 도 12의 Y 비트들 중 일부에 대응할 수 있다. 단계 S750에서, 스토리지 장치(100')는 맵핑 테이블을 이용하여 비휘발성 메모리에 대한 동작을 제어한다.
도 20은 본 개시의 일 실시예에 따라, 호스트(200'), 컨트롤러(110') 및 비휘발성 메모리(120) 사이의 기입 동작을 나타내는 흐름도이다. 본 실시예에 따른 기입 동작은 도 19의 일 구현 예에 대응할 수 있고, 이하에서는 도 18 내지 도 20을 함께 참조하여 설명하기로 한다.
단계 S810에서, 호스트(200')는 키 인코딩 룰을 포함하는 커맨드를 컨트롤러(310)에 전송한다. 단계 S820에서, 컨트롤러(110')는 커맨드의 수신 완료를 나타내는 응답 메시지를 호스트(200')에 전송한다. 단계 S830에서, 호스트(200')는 제1 밸류(V1)를 포함하는 풋 커맨드를 컨트롤러(110')에 전송한다. 그러나, 본 발명은 이에 한정되지 않으며, 일부 실시예에서, 호스트(200')는 키 인코딩 룰을 포함하는 풋 커맨드를 컨트롤러(110')에 전송할 수도 있다.
단계 S840에서, 컨트롤러(110')는 키 인코딩 룰을 기초로 제1 밸류(V1)로부터 제1 키(K1)를 생성한다. 단계 S850에서, 컨트롤러(110')는 제1 키(K1)의 랜덤 비트들로부터 맵핑 인덱스(MIa)를 생성한다. 단계 S860에서, 컨트롤러(110')는 비휘발성 메모리(120)에 제1 밸류(V1)를 기입하기 위한 제1 물리 주소(PPN1)를 맵핑 테이블(MT)에 업데이트한다.
단계 S870에서, 컨트롤러(110')는 비휘발성 메모리(120)에 제1 밸류(V1) 및 제1 물리 주소(PPN1)를 포함하는 기입 커맨드를 전송한다. 단계 S880에서, 비휘발성 메모리(120)는 제1 물리 주소(PPN1)에 제1 밸류(V1)를 기입한다. 이때, 제1 물리 주소(PPN1)에 제1 키(K1) 및 제1 맵핑 인덱스(MIa)가 더 기입될 수 있다. 단계 S885에서, 비휘발성 메모리(120)는 기입 동작의 완료를 나타내는 응답 메시지를 컨트롤러(110')에 전송한다. 단계 S890에서, 컨트롤러(110')는 제1 밸류(V1)의 기입 동작의 완료를 나타내는 응답 메시지를 호스트(200')에 전송한다.
도 21은 본 개시의 일 실시예에 따른 스토리지 장치의 일 예(100A')를 나타내는 블록도이다.
도 21을 참조하면, 스토리지 장치(100A')는 컨트롤러(110a') 및 비휘발성 메모리(120a)를 포함할 수 있다. 스토리지 장치(100A')는 도 11의 스토리지 장치(100A)의 변형 실시예에 대응하며, 도 11을 참조하여 상술된 내용은 본 실시예에 적용될 수 있다. 컨트롤러(110a')는 키 생성부(KG) 및 제1 및 제2 컨트롤러들(CNT1, CNT2)을 포함할 수 있다. 비휘발성 메모리(120a)는 제1 및 제2 비휘발성 메모리들(NVM1, NVM2)을 포함할 수 있다. 예를 들어, 키 생성부(KG)는 HIL 코어에 구현될 수 있다. 예를 들어, 제1 및 제2 컨트롤러들(CNT1, CNT2)은 듀얼 코어 프로세서로 구현될 수 있다.
도 22는 본 개시의 일 실시예에 따른 키-밸류 스토리지 장치의 동작 방법을 나타내는 흐름도이다. 도 22를 참조하면, 본 실시예에 따른 키-밸류 스토리지 장치의 동작 방법은 예를 들어, 도 21의 스토리지 장치(100A')에서 시계열적으로 수행되는 단계들을 포함할 수 있다.
단계 S910에서, 스토리지 장치(100A')는 호스트로부터 키에 포함되는 랜덤 영역 및 넌-랜덤 영역 중 적어도 하나에 대한 정보를 수신한다. 구체적으로, 컨트롤러(110a')는 키 인코딩 룰을 수신할 수 있다. 단계 S920에서, 스토리지 장치(100A')는 제1 밸류를 포함하는 제1 커맨드를 수신한다. 단계 S930에서, 스토리지 장치(100A')는 키 인코딩 룰을 기초로 제1 커맨드로부터 제1 키를 생성한다. 예를 들어, 키 생성부(KG)는 키 인코딩 룰을 기초로 제1 밸류에 대응하는 제1 키를 생성할 수 있다.
단계 S940에서, 스토리지 장치(100A')는 키 인코딩 룰을 기초로 제1 키에 포함된 랜덤 비트들 중 적어도 제2 비트에 따라 제1 커맨드를 복수의 비휘발성 메모리들 중 제1 비휘발성 메모리에 할당한다. 예를 들어, 제2 비트는 도 12의 Z 비트에 대응할 수 있다. 단계 S950에서, 스토리지 장치(100A')는 키 인코딩 룰을 기초로 제1 키에 포함된 랜덤 비트들 중 적어도 일부에 대응하는 제1 비트들로부터 제1 맵핑 테이블의 맵핑 인덱스를 생성한다. 일 실시예에서, 스토리지 장치(100A)는 제1 키에 포함된 랜덤 비트들에 대해 해싱 연산을 수행하지 않고, 제1 비트들을 맵핑 인덱스로 이용할 수 있다. 예를 들어, 제1 비트들은 도 12의 Y 비트들 중 일부에 대응할 수 있다. 단계 S960에서, 스토리지 장치(100A')는 제1 맵핑 테이블을 이용하여 제1 비휘발성 메모리에 대한 동작을 제어한다.
도 23은 본 개시의 일 실시예에 따른 스토리지 시스템(40)을 나타내는 블록도이다. 본 실시예에 따른 스토리지 시스템(40)은 도 18의 스토리지 시스템(30)의 변형 실시예에 대응할 수 있다.
도 23을 참조하면, 스토리지 시스템(40)은 제1 내지 제4 스토리지 장치들(100a' 내지 100d') 및 호스트(200b)를 포함할 수 있다. 호스트(200b)는 제1 내지 제4 스토리지 장치들(100a' 내지 100d')을 제어하는 키-밸류 제어 모듈(KVMb) 및 디스패처(dispatcher)(DSP)을 포함할 수 있다. 예를 들어, 키-밸류 제어 모듈(KVMb)은 소프트웨어로 구현될 수 있다.
키-밸류 제어 모듈(KVMb)은 키 인코딩 룰 저장부(210), 키 분배 룰 저장부(230) 및 키-밸류 요청 분배부(240)를 포함할 수 있다. 호스트(200b)는 키 인코딩 룰 저장부(210)에 저장된 키 인코딩 룰을 제1 내지 제4 스토리지 장치들(100a' 내지 100d')에 미리 전송할 수 있다. 또한, 호스트(200b)는 키 분배 룰 저장부(230)에 저장된 키 분배 룰을 제1 내지 제4 스토리지 장치들(100a' 내지 100d')에 미리 전송할 수 있다. 일 실시예에서, 키-밸류 요청 분배부(230)는 호스트(200b)에서 독출 요청을 발행하는 경우 활성화될 수 있고, 호스트(200b)에서 기입 요청을 발행하는 경우에는 비활성화될 수 있다. 구체적으로, 키-밸류 요청 분배부(230)는 밸류에 대한 독출 요청을 제1 내지 제4 스토리지 장치들(100a' 내지 100d') 중 하나에 할당할 수 있다.
디스패처(DSP)는 호스트(200b)에서 생성되는 밸류들을 제1 내지 제4 스토리지 장치들(100a' 내지 100d')에 디스패치할 수 있다. 예를 들어, 디스패처(DSP)는 라운드 로빈(round robin) 디스패처일 수 있고, 호스트(200b)에서 생성된 밸류들을 라운드 로빈 방식으로 스케쥴링하여 제1 내지 제4 스토리지 장치들(100a' 내지 100d')에 디스패치할 수 있다. 구체적으로, 호스트(200b)는 밸류에 대응하는 키를 생성하지 않으므로, 디스패처(DSP)는 라운드 로빈 방식으로 디스패치할 수 있다. 일 실시예에서, 디스패처(DSP)는 호스트(200b)에서 독출 요청을 발행하는 경우 활성화될 수 있고, 호스트(200b)에서 기입 요청을 발행하는 경우 비활성화될 수 있다.
제1 내지 제4 스토리지 장치들(100a' 내지 100d') 각각은 밸류를 수신한 경우, 키 인코딩 룰을 기초로 밸류에 대응하는 키를 생성할 수 있고, 생성된 키에 대한 키 데이터를 포함하는 응답 메시지를 호스트(200b)에 전송할 수 있다. 이에 따라, 호스트(200b)는 키를 직접 생성하지 않더라도, 제1 내지 제4 스토리지 장치들(100a' 내지 100d')로부터 수신한 키 데이터를 기초로 키-밸류 페어를 관리할 수 있다. 키-밸류 요청 분배부(230)는 제1 내지 제4 스토리지 장치들(100a' 내지 100d')로부터 수신한 키 데이터를 기초로, 밸류에 대한 독출 요청을 제1 내지 제4 스토리지 장치들(100a' 내지 100d') 중 하나에 할당할 수 있다.
도 24는 본 개시의 일 실시예에 따라, 도 23의 제1 스토리지 장치(100a')를 나타낸다. 도시되지는 않았으나, 도 23의 제2 내지 제4 스토리지 장치들(100b' 내지 100d')도 제1 스토리지 장치(100a')와 실질적으로 유사하게 구현될 수 있다. 따라서, 도 24를 참조하여 후술되는 내용은 제2 내지 제4 스토리지 장치들(100b' 내지 100d')에 적용될 수 있다.
도 23 및 도 24를 함께 참조하면, 제1 스토리지 장치(100a')는 제1 내지 제4 맵핑 테이블들(MT1 내지 MT4) 및 제1 내지 제4 비휘발성 메모리들(NVM1 내지 NVM4)을 포함할 수 있고, 제1 내지 제4 맵핑 테이블들(MT1 내지 MT4)을 이용하여 제1 내지 제4 비휘발성 메모리들(NVM1 내지 NVM4)을 각각 제어할 수 있다. 또한, 제1 스토리지 장치(100a')는 키 생성부(KG) 및 요청 포워딩부(Request Forwarder)(RF)를 더 포함할 수 있다.
제1 스토리지 장치(100a')가 제1 밸류를 수신한 경우, 키 생성부(KG)는 키 인코딩 룰을 기초로 제1 밸류로부터 제1 키를 생성할 수 있다. 또한, 제1 스토리지 장치(100a')는 키 인코딩 룰을 기초로 제1 키의 랜덤 비트들 중 일부 비트(예를 들어, 도 16의 Z 비트)에 따라, 제1 키 및 제1 밸류를 포함하는 기입 요청을 제1 내지 제4 스토리지 장치들(100a' 내지 100d') 중 하나에 할당할 수 있다. 예를 들어, 제1 스토리지 장치(100a')는 제1 키의 Z 비트가 00인 경우 기입 요청을 제1 스토리지 장치(100a')에 할당할 수 있다. 예를 들어, 제1 스토리지 장치(100a')는 제1 키의 Z 비트가 01인 경우 기입 요청을 제2 스토리지 장치(100b')에 할당할 수 있다. 예를 들어, 제1 스토리지 장치(100a')는 제1 키의 Z 비트가 10인 경우 기입 요청을 제3 스토리지 장치(100c')에 할당할 수 있다. 예를 들어, 제1 스토리지 장치(100a')는 제1 키의 Z 비트가 11인 경우 기입 요청을 제4 스토리지 장치(100d')에 할당할 수 있다. 요청 포워딩부(RF)는 기입 요청이 제2 내지 제4 스토리지 장치들(100b' 내지 100d') 중 하나에 할당된 경우, 기입 요청을 제2 내지 제4 스토리지 장치들(100b' 내지 100d') 중 하나에 포워딩할 수 있다.
기입 요청이 제1 스토리지 장치(100a')에 할당된 경우, 제1 스토리지 장치(100a')는 키의 랜덤 비트들 중 일부 비트(예를 들어, 도 16의 Y2 비트들)을 기초로, 키를 제1 내지 제4 비휘발성 메모리들(NVM1 내지 NVM4) 중 하나에 할당할 수 있다. 또한, 제1 스토리지 장치(100a')는 제1 내지 제4 키들(K1a 내지 K1d) 각각의 랜덤 비트들 중 적어도 일부 비트(예를 들어, 도 16의 Y1 비트들 중 적어도 일부 비트)로부터 제1 내지 제4 맵핑 인덱스들(MI1 내지 MI4) 중 하나를 생성하고, 제1 내지 제4 맵핑 인덱스들(MI1 내지 MI4)에 각각 대응하는 맵핑 정보를 제1 내지 제4 맵핑 테이블들(MT1 내지 MT4)에 각각 저장할 수 있다.
도 25는 본 개시의 일 실시예에 따른 키-밸류 스토리지 장치의 동작 방법을 나타내는 흐름도이다. 도 25를 참조하면, 본 실시예에 따른 키-밸류 스토리지 장치의 동작 방법은 예를 들어, 도 24의 스토리지 장치(100a')에서 시계열적으로 수행되는 단계들을 포함할 수 있다.
단계 S1010에서, 스토리지 장치(100a')는 호스트로부터 키에 포함되는 랜덤 영역 및 넌-랜덤 영역 중 적어도 하나에 대한 정보를 수신한다. 구체적으로, 스토리지 장치(100a')는 키에 포함된 랜덤 영역 및 넌-랜덤 영역 중 적어도 하나에 대한 정보를 포함하는 키 인코딩 룰을 수신할 수 있다. 단계 S1020에서, 스토리지 장치(100a')는 제1 밸류를 포함하는 제1 커맨드를 수신한다. 단계 S1030에서, 스토리지 장치(100a')는 키 인코딩 룰을 기초로 제1 커맨드로부터 제1 키를 생성한다.
단계 S1040에서, 스토리지 장치(100a')는 키 인코딩 룰을 기초로 제1 키에 포함된 랜덤 비트들 중 적어도 제2 비트에 따라 제1 키 및 제1 밸류를 포함하는 기입 요청을 복수의 스토리지 장치들 중 하나에 할당한다. 단계 S1050에서, 스토리지 장치(100a')는 할당된 스토리지 장치가 제1 스토리지 장치인지 판단한다. 판단 결과, 제1 스토리지 장치인 경우 단계 S1060을 수행하고, 그렇지 않으면 단계 S1070을 수행한다. 단계 S1060에서, 스토리지 장치(100a')는 기입 요청에 따른 메모리 동작을 제어한다. 단계 S1070에서, 스토리지 장치(100a')는 기입 요청이 할당된 다른 스토리지 장치에 기입 요청을 전송한다.
도 26은 본 개시의 일 실시예에 따른 네트워크 시스템(1000)을 나타낸다.
도 26을 참조하면, 네트워크 시스템(1000)은 서버 시스템(1100) 및 네트워크(NET)를 통해 서버 시스템(1100)과 통신하는 복수의 터미널들(1210 내지 1230)을 포함할 수 있다. 서버 시스템(1100)은 서버(1110)와 SSD(1120)를 포함할 수 있다. 이때, 서버(1110)는 상술한 실시예들의 호스트에 대응할 수 있고, SSD(1120)는 상술한 실시예들의 스토리지 장치에 대응할 수 있다. 일 실시예에서, SSD(1120)는 도 1 내지 도 25를 참조하여 상술된 실시예들을 이용하여 구현될 수 있다.
도 27은 본 개시의 일 실시예에 따른 네트워크 시스템(2000)을 나타낸다.
도 27을 참조하면, 네트워크 시스템(2000)은 클라이언트 그룹(2100)과 데이터 센터(2200)를 포함할 수 있다. 클라이언트 그룹(2100)은 제1 네트워크(NET1), 예를 들어, 인터넷을 통해 데이터 센터(2200)와 통신하는 클라이언트 장치들(C)을 포함할 수 있다. 데이터 센터(2200)는 각종 데이터를 모아두고 서비스를 제공하는 시설로서, 제2 네트워크(NET2), 예를 들어, LAN(Local Area Network) 또는 인트라넷을 통해 서로 통신하는 어플리케이션 서버 그룹(2210), 데이터베이스 서버 그룹(2220) 및 오브젝트 캐시 서버 그룹(2230)을 포함할 수 있다.
어플리케이션 서버 그룹(2210)은 어플리케이션 서버 장치들(AS)을 포함할 수 있고, 어플리케이션 서버 장치들(AS)은 클라이언트 그룹(2100)으로부터 수신한 요청을 처리하고, 클라이언트 그룹(2100)의 요청에 따라 데이터베이스 서버 그룹(2220) 또는 오브젝트 캐시 서버 그룹(2230)을 액세스할 수 있다. 데이터베이스 서버 그룹(2220)은 어플리케이션 서버 장치들(AS)에 의해 처리된 데이터를 저장하는 데이터베이스 서버 장치들(DS)을 포함할 수 있다. 오브젝트 캐시 서버 그룹(2230)은 데이터베이스 서버 장치들(DS)에 저장되는 데이터 또는 데이터베이스 서버 장치들(DS)로부터 독출된 데이터를 임시로 저장하는 오브젝트 캐시 서버 장치들(OCS)을 포함할 수 있고, 이에 따라, 어플리케이션 서버 장치들(AS)과 데이터베이스 서버 장치들(DS) 사이에서 캐시의 기능을 수행할 수 있다. 일 실시예에서, 오브젝트 캐시 서버 장치들(OCS)는 도 1 내지 도 25를 참조하여 상술된 실시예들을 이용하여 구현될 수 있다.
도 28은 본 개시의 일 실시예에 따른 전자 장치(3000)를 나타낸다.
도 28을 참조하면, 전자 장치(3000)는 프로세서(3100), 메모리 장치(3200), 스토리지 장치(3300), 모뎀(3400), 입출력 장치(3500) 및 파워 서플라이(3600)를 포함할 수 있다. 일 실시예에서, 스토리지 장치(3300)는 도 1 내지 도 25를 참조하여 상술된 실시예들을 이용하여 구현될 수 있다.
이상에서와 같이 도면과 명세서에서 예시적인 실시예들이 개시되었다. 본 명세서에서 특정한 용어를 사용하여 실시예들을 설명되었으나, 이는 단지 본 개시의 기술적 사상을 설명하기 위한 목적에서 사용된 것이지 의미 한정이나 특허청구범위에 기재된 본 개시의 범위를 제한하기 위하여 사용된 것은 아니다. 그러므로 본 기술분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시예가 가능하다는 점을 이해할 것이다. 따라서, 본 개시의 진정한 기술적 보호범위는 첨부된 특허청구범위의 기술적 사상에 의해 정해져야 할 것이다.

Claims (20)

  1. 비휘발성 메모리 및 상기 비휘발성 메모리를 제어하는 컨트롤러를 포함하는 키-밸류 스토리지 장치의 동작 방법으로서,
    상기 컨트롤러에서, 제1 키에 포함되는 랜덤 영역 및 넌-랜덤(non-random) 영역 중 적어도 하나에 대한 정보를 호스트로부터 수신하는 단계로서, 상기 랜덤 영역은 랜덤 비트들을 포함하고, 상기 넌-랜덤 영역은 상기 제1 키에 대응하는 제1 밸류에 대한 속성 정보를 포함하며, 상기 속성 정보는 상기 제1 밸류의 파일 유형을 나타내는 일정한 패턴을 가진 비트들로 표현되는, 상기 수신하는 단계;
    상기 컨트롤러에서, 상기 호스트로부터 상기 제1 키 및 상기 제1 밸류를 포함하는 기입 커맨드를 수신하는 단계;
    상기 컨트롤러에서, 상기 정보를 기초로 상기 제1 키의 상기 랜덤 영역에 포함된 상기 랜덤 비트들 중 적어도 일부에 대응하는 제1 비트들로부터 맵핑 테이블의 맵핑 인덱스를 생성하는 단계; 및
    상기 컨트롤러에서, 상기 맵핑 테이블을 이용하여 상기 기입 커맨드에 따른 상기 비휘발성 메모리에 대한 동작을 제어하는 단계를 포함하는 방법.
  2. 제1항에 있어서,
    상기 맵핑 인덱스를 생성하는 단계는, 상기 제1 비트들을 상기 맵핑 인덱스로서 이용하는 것을 특징으로 하는 방법.
  3. 제1항에 있어서,
    상기 맵핑 인덱스를 생성하는 단계는, 상기 제1 비트들에 대해 해싱 연산을 수행함으로써 상기 맵핑 인덱스를 생성하는 것을 특징으로 하는 방법.
  4. 제1항에 있어서,
    상기 맵핑 인덱스를 생성하는 단계 이후에, 상기 제1 밸류를 상기 비휘발성 메모리에 기입하기 위한 제1 물리 주소를 상기 맵핑 테이블에 저장하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  5. 제4항에 있어서,
    상기 비휘발성 메모리에 대한 동작을 제어하는 단계는, 상기 제1 밸류를 상기 제1 물리 주소에 기입하도록 상기 비휘발성 메모리에 대한 기입 동작을 제어하는 것을 특징으로 하는 방법.
  6. 제1항에 있어서,
    상기 컨트롤러에서, 상기 호스트로부터 상기 제1 키를 포함하는 독출 커맨드를 수신하는 단계; 및
    상기 맵핑 인덱스를 생성하는 단계 이후에, 상기 제1 키에 대응하는 제1 밸류가 상기 비휘발성 메모리에 기입된 제1 물리 주소를 상기 맵핑 테이블로부터 검색하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  7. 제6항에 있어서,
    상기 컨트롤러에서, 상기 맵핑 테이블을 이용하여 상기 제1 밸류를 상기 제1 물리 주소로부터 독출하도록 상기 비휘발성 메모리에 대한 독출 동작을 제어하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  8. 제1항에 있어서,
    상기 기입 커맨드를 수신하는 단계 이후에, 상기 컨트롤러에서, 상기 랜덤 비트들의 사이즈가 임계 값 이상인지 판단하는 단계를 더 포함하고,
    상기 랜덤 비트들의 사이즈가 상기 임계 값 이상인 경우, 상기 제1 비트들로부터 상기 맵핑 인덱스를 생성하는 것을 특징으로 하는 방법.
  9. 제8항에 있어서,
    상기 랜덤 비트들의 사이즈가 상기 임계 값보다 작은 경우, 상기 제1 키에 대해 해싱 연산을 수행함으로써 상기 제1 키에 대응하는 제1 해시 키(hashed key)를 생성하는 단계를 더 포함하고,
    생성된 상기 제1 해시 키를 상기 맵핑 인덱스로서 이용하는 것을 특징으로 하는 방법.
  10. 제1항에 있어서,
    상기 비휘발성 메모리는 복수의 비휘발성 메모리들을 포함하고,
    상기 방법은, 상기 기입 커맨드를 수신하는 단계 이후에, 상기 랜덤 비트들 중 적어도 하나의 제2 비트를 기초로, 상기 제1 키를 상기 복수의 비휘발성 메모리들 중 제1 비휘발성 메모리에 할당하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  11. 제10항에 있어서,
    상기 맵핑 테이블은 상기 복수의 비휘발성 메모리들에 각각 대응하는 복수의 맵핑 테이블들로 구현되고, 상기 복수의 맵핑 테이블들은 상기 제1 비휘발성 메모리에 대응하는 제1 맵핑 테이블을 포함하고,
    상기 맵핑 인덱스를 생성하는 단계는, 상기 제1 비트들로부터 상기 제1 맵핑 테이블의 제1 맵핑 인덱스를 생성하고,
    상기 비휘발성 메모리에 대한 동작을 제어하는 단계는, 상기 제1 맵핑 테이블을 이용하여 상기 기입 커맨드에 따른 상기 제1 비휘발성 메모리에 대한 동작을 제어하는 것을 특징으로 하는 방법.
  12. 제1항에 있어서,
    상기 정보를 수신하는 단계는, 상기 호스트로부터 상기 랜덤 영역에 대한 정보 및 상기 넌-랜덤 영역에 대한 제1 키 인코딩 룰 및 상기 제1 키 인코딩 룰에 대응하는 제1 인코딩 아이디(ID)를 포함하는 제1 정보를 수신하는 것을 특징으로 하는 방법.
  13. 제12항에 있어서,
    상기 제어하는 단계 이후에, 상기 호스트로부터 제2 키 인코딩 룰 및 상기 제2 키 인코딩 룰에 대응하는 제2 인코딩 아이디를 포함하는 제2 정보를 수신하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  14. 제13항에 있어서,
    상기 제2 정보를 수신하는 단계 이후에, 상기 호스트로부터 제2 키를 포함하는 제2 커맨드를 수신하는 단계; 및
    수신한 상기 제2 정보를 기초로 상기 제2 키에 포함된 랜덤 비트들 중 적어도 일부로부터 제2 맵핑 인덱스를 생성하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  15. 복수의 비휘발성 메모리들 및 상기 복수의 비휘발성 메모리들을 제어하는 컨트롤러를 포함하는 키-밸류 스토리지 장치의 동작 방법으로서,
    상기 컨트롤러에서, 제1 키에 포함되는 랜덤 영역 및 넌-랜덤 영역 중 적어도 하나에 대한 정보를 호스트로부터 수신하는 단계로서, 상기 랜덤 영역은 랜덤 비트들을 포함하고, 상기 넌-랜덤 영역은 상기 제1 키에 대응하는 제1 밸류에 대한 속성 정보를 포함하며, 상기 속성 정보는 상기 제1 밸류의 파일 유형을 나타내는 일정한 패턴을 가진 비트들로 표현되는, 상기 수신하는 단계;
    상기 컨트롤러에서, 상기 호스트로부터 상기 제1 키 및 상기 제1 밸류를 포함하는 기입 커맨드를 수신하는 단계;
    상기 컨트롤러에서, 상기 정보를 기초로 상기 제1 키의 상기 랜덤 영역에 포함된 상기 랜덤 비트들 중 적어도 제2 비트에 따라 상기 기입 커맨드를 상기 복수의 비휘발성 메모리들 중 제1 비휘발성 메모리에 할당하는 단계;
    상기 컨트롤러에서, 상기 정보를 기초로 상기 제1 키의 상기 랜덤 영역에 포함된 상기 랜덤 비트들 중 적어도 일부에 대응하는 제1 비트들로부터 상기 제1 비휘발성 메모리에 대응하는 제1 맵핑 테이블의 맵핑 인덱스를 생성하는 단계; 및
    상기 컨트롤러에서, 상기 제1 맵핑 테이블을 이용하여 상기 기입 커맨드에 따른 상기 제1 비휘발성 메모리에 대한 동작을 제어하는 단계를 포함하는 방법.
  16. 제15항에 있어서,
    상기 맵핑 인덱스를 생성하는 단계는, 상기 제1 비트들을 상기 맵핑 인덱스로서 이용하는 것을 특징으로 하는 방법.
  17. 제15항에 있어서,
    상기 할당하는 단계 이후에, 상기 컨트롤러에서, 상기 랜덤 비트들의 사이즈가 임계 값 이상인지 판단하는 단계를 더 포함하고,
    상기 랜덤 비트들의 사이즈가 상기 임계 값 이상인 경우, 상기 제1 비트들로부터 상기 맵핑 인덱스를 생성하는 것을 특징으로 하는 방법.
  18. 제15항에 있어서,
    상기 할당하는 단계 이후에, 상기 컨트롤러에서, 상기 랜덤 비트들의 사이즈가 임계 값 이상인지 판단하는 단계를 더 포함하고,
    상기 랜덤 비트들의 사이즈가 상기 임계 값보다 작은 경우, 상기 제1 키에 대해 해싱 연산을 수행함으로써 상기 제1 키에 대응하는 제1 해시 키(hashed key)를 생성하는 단계를 더 포함하고,
    생성된 상기 제1 해시 키를 상기 맵핑 인덱스로서 이용하는 것을 특징으로 하는 방법.
  19. 호스트와 통신 가능한 키-밸류 스토리지 장치로서,
    비휘발성 메모리; 및
    컨트롤러를 포함하고,
    상기 컨트롤러는,
    상기 호스트로부터 키의 랜덤 영역 및 넌-랜덤 영역 중 적어도 하나에 대한 정보를 포함하는 키 인코딩 룰을 수신하고,
    상기 호스트로부터 상기 키 및 상기 키에 대응하는 밸류를 포함하는 기입 커맨드를 수신하며,
    상기 키 인코딩 룰을 기초로 상기 키에 포함된 랜덤 비트들 중 적어도 일부에 대응하는 비트들로부터 맵핑 인덱스를 생성하고,
    상기 맵핑 인덱스를 상기 비휘발성 메모리의 물리 주소에 맵핑하는 맵핑 정보를 맵핑 테이블에 저장하며,
    상기 맵핑 정보의 상기 물리 주소에 따라 상기 키 및 상기 밸류를 상기 비휘발성 메모리에 저장하도록 상기 비휘발성 메모리를 제어하는 컨트롤러를 포함하고,
    상기 키는, 상기 랜덤 비트들을 포함하는 랜덤 영역 및 상기 밸류에 대한 속성 정보를 포함하는 넌-랜덤 영역을 포함하며,
    상기 속성 정보는 상기 밸류의 파일 유형을 나타내는 일정한 패턴을 가진 비트들로 표현되는 것을 특징으로 하는 키-밸류 스토리지 장치.
  20. 제19항에 있어서, 상기 컨트롤러는,
    상기 커맨드를 디코딩함으로써 상기 키와 상기 밸류를 구분하는 커맨드 디코더; 및
    상기 키에 대해 해싱 연산을 수행하여 상기 맵핑 인덱스를 생성하는 해싱 모듈을 포함하는 것을 특징으로 하는 키-밸류 스토리지 장치.
KR1020170157503A 2017-11-23 2017-11-23 키-밸류 스토리지 장치 및 상기 키-밸류 스토리지 장치의 동작 방법 KR102545167B1 (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020170157503A KR102545167B1 (ko) 2017-11-23 2017-11-23 키-밸류 스토리지 장치 및 상기 키-밸류 스토리지 장치의 동작 방법
US16/100,990 US11120081B2 (en) 2017-11-23 2018-08-10 Key-value storage device and method of operating key-value storage device
CN201811054900.9A CN109828930B (zh) 2017-11-23 2018-09-11 键值存储设备和操作键值存储设备的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020170157503A KR102545167B1 (ko) 2017-11-23 2017-11-23 키-밸류 스토리지 장치 및 상기 키-밸류 스토리지 장치의 동작 방법

Publications (2)

Publication Number Publication Date
KR20190059664A KR20190059664A (ko) 2019-05-31
KR102545167B1 true KR102545167B1 (ko) 2023-06-19

Family

ID=66532373

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170157503A KR102545167B1 (ko) 2017-11-23 2017-11-23 키-밸류 스토리지 장치 및 상기 키-밸류 스토리지 장치의 동작 방법

Country Status (3)

Country Link
US (1) US11120081B2 (ko)
KR (1) KR102545167B1 (ko)
CN (1) CN109828930B (ko)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11341254B2 (en) 2019-06-24 2022-05-24 Quantum Properties Technology Llc Method and system for securing data using random bits
US11108550B1 (en) * 2019-06-24 2021-08-31 Daniel M. Esbensen Method and system for highly secured network communication using quantum technologies
US11562081B2 (en) 2019-06-24 2023-01-24 Quantum Properties Technology Llc Method and system for controlling access to secure data using custodial key data
US10984138B1 (en) * 2019-06-24 2021-04-20 Daniel M. Esbensen Method and system for providing highly secured transportable data
US11537728B1 (en) 2020-01-26 2022-12-27 Quantum Properties Technology Llc Method and system for securing data using random bits and encoded key data
US11449430B2 (en) * 2020-04-02 2022-09-20 Samsung Electronics Co., Ltd. Key-value store architecture for key-value devices
US20220011948A1 (en) * 2020-07-08 2022-01-13 Samsung Electronics Co., Ltd. Key sorting between key-value solid state drives and hosts
CN112988763B (zh) * 2021-05-14 2021-07-27 北京顺实科技有限公司 一种以部分散列Key为索引的Kv数据库存储与查询方法
US11431490B1 (en) * 2021-11-04 2022-08-30 Coinbase Il Rd Ltd. System and method for securing data in a quantum computing environment using multi-party computation
KR102471966B1 (ko) * 2021-11-25 2022-11-30 (주)글루시스 스토리지 노드 기반의 키-값 스토어를 이용하는 데이터 입출력 방법

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130275656A1 (en) * 2012-04-17 2013-10-17 Fusion-Io, Inc. Apparatus, system, and method for key-value pool identifier encoding
US20140122791A1 (en) * 2012-10-26 2014-05-01 Cisco Technology, Inc. System and method for packet classification and internet protocol lookup in a network environment
US20160259724A1 (en) * 2013-10-31 2016-09-08 Oracle International Corporation Systems and Methods for Implementing Low-Latency Lookup Circuits Using Sparse Hash Functions
US20170060439A1 (en) * 2015-08-25 2017-03-02 Kabushiki Kaisha Toshiba Memory system that buffers data before writing to nonvolatile memory

Family Cites Families (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5784699A (en) * 1996-05-24 1998-07-21 Oracle Corporation Dynamic memory allocation in a computer using a bit map index
US7277426B2 (en) * 2002-05-24 2007-10-02 Mosaid Technologies, Inc. Method and apparatus for reordering entries in a multi probe lookup
US7702693B1 (en) * 2003-10-30 2010-04-20 Cisco Technology, Inc. Role-based access control enforced by filesystem of an operating system
US7788240B2 (en) 2004-12-29 2010-08-31 Sap Ag Hash mapping with secondary table having linear probing
KR20060091578A (ko) * 2005-02-16 2006-08-21 삼성전자주식회사 통신 시스템에서 데이터 재전송 장치 및 방법
US20060282610A1 (en) * 2005-06-08 2006-12-14 M-Systems Flash Disk Pioneers Ltd. Flash memory with programmable endurance
US7430560B1 (en) * 2005-07-22 2008-09-30 X-Engines, Inc. Multi-level compressed lock-up tables formed by logical operations to compress selected index bits
US20080233966A1 (en) * 2007-03-22 2008-09-25 Comsys Communication & Signal Processing Ltd. Resource allocation apparatus and method in an orthogonal frequency division multiple access communication system
US20100161879A1 (en) * 2008-12-18 2010-06-24 Lsi Corporation Efficient and Secure Main Memory Sharing Across Multiple Processors
US20100161908A1 (en) * 2008-12-18 2010-06-24 Lsi Corporation Efficient Memory Allocation Across Multiple Accessing Systems
WO2010114006A1 (ja) 2009-03-31 2010-10-07 日本電気株式会社 ストレージシステムとストレージアクセス方法とプログラム
US8266176B2 (en) * 2010-03-12 2012-09-11 Hitachi, Ltd. Storage system and file access determination method of the same
US10558705B2 (en) * 2010-10-20 2020-02-11 Microsoft Technology Licensing, Llc Low RAM space, high-throughput persistent key-value store using secondary memory
EP2724269B1 (en) * 2011-06-27 2020-02-19 Jethrodata Ltd. System, method and data structure for fast loading, storing and access to huge data sets in real time
US8880977B2 (en) * 2011-07-22 2014-11-04 Sandisk Technologies Inc. Systems and methods of storing data
US8750617B2 (en) 2012-03-09 2014-06-10 Blackberry Limited Signature representation of data having high dimensionality
JP5597666B2 (ja) 2012-03-26 2014-10-01 株式会社東芝 半導体記憶装置、情報処理システムおよび制御方法
US10503716B2 (en) * 2013-10-31 2019-12-10 Oracle International Corporation Systems and methods for generating bit matrices for hash functions using fast filtering
CN103593477A (zh) 2013-11-29 2014-02-19 华为技术有限公司 一种哈希数据库的配置方法和装置
US9223720B2 (en) * 2013-12-13 2015-12-29 Oracle International Corporation Systems and methods for rapidly generating suitable pairs of hash functions
US9569141B2 (en) 2014-03-28 2017-02-14 Intel Corporation Hash map support in a storage device
JP5833212B2 (ja) 2014-10-30 2015-12-16 株式会社東芝 key−valueストア方式を有するメモリシステム
US9990249B2 (en) * 2015-12-24 2018-06-05 Intel Corporation Memory integrity with error detection and correction
US10303899B2 (en) * 2016-08-11 2019-05-28 Intel Corporation Secure public cloud with protected guest-verified host control
KR20180080589A (ko) * 2017-01-04 2018-07-12 에스케이하이닉스 주식회사 데이터 저장 장치 및 그것의 동작 방법
US10056937B1 (en) * 2017-09-27 2018-08-21 Rupert Theodore Neff Generator of communications binary code shift key (CSK) codes in memory usable for time-synchronous retrievals by signal processing systems to extract 1 of 16 orthogonal CSK symbol codes per CSK code to transport 4-bits of data over wireless communications systems

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130275656A1 (en) * 2012-04-17 2013-10-17 Fusion-Io, Inc. Apparatus, system, and method for key-value pool identifier encoding
US20140122791A1 (en) * 2012-10-26 2014-05-01 Cisco Technology, Inc. System and method for packet classification and internet protocol lookup in a network environment
US20160259724A1 (en) * 2013-10-31 2016-09-08 Oracle International Corporation Systems and Methods for Implementing Low-Latency Lookup Circuits Using Sparse Hash Functions
US20170060439A1 (en) * 2015-08-25 2017-03-02 Kabushiki Kaisha Toshiba Memory system that buffers data before writing to nonvolatile memory

Also Published As

Publication number Publication date
CN109828930B (zh) 2024-06-14
US20190155959A1 (en) 2019-05-23
KR20190059664A (ko) 2019-05-31
CN109828930A (zh) 2019-05-31
US11120081B2 (en) 2021-09-14

Similar Documents

Publication Publication Date Title
KR102545167B1 (ko) 키-밸류 스토리지 장치 및 상기 키-밸류 스토리지 장치의 동작 방법
KR102569545B1 (ko) 키-밸류 스토리지 장치 및 상기 키-밸류 스토리지 장치의 동작 방법
US9846642B2 (en) Efficient key collision handling
US10761771B2 (en) Memory system and method for controlling nonvolatile memory
US10437481B2 (en) Data access method and related apparatus and system
KR102406666B1 (ko) 스냅샷 기능을 지원하는 키-밸류 스토리지 장치 및 상기 키-밸류 스토리지 장치의 동작 방법
US9244619B2 (en) Method of managing data storage device and data storage device
TW201818249A (zh) 操作對多重名稱空間進行管理的儲存裝置的方法
US20190171392A1 (en) Method of operating storage device capable of reducing write latency
US20200364145A1 (en) Information processing apparatus and method for controlling storage device
US11461047B2 (en) Key-value storage device and operating method
WO2024099448A1 (zh) 内存释放、内存恢复方法、装置、计算机设备及存储介质
US11048623B2 (en) Memory controller including mapping tables to efficiently process an iteration command and a method of operating the same
US20240086113A1 (en) Synchronous write method and device, storage system and electronic device
KR102570581B1 (ko) 스토리지 장치와 재구성 가능 로직 칩을 포함하는 스토리지 장치 세트 및 이를 포함하는 스토리지 시스템
WO2016127807A1 (zh) 多副本写入存储设备的方法及存储设备
KR102623061B1 (ko) 데이터베이스에서 이터레이터 연산을 수행하기 위한 장치
EP4180969B1 (en) Method of operating a storage device using multi-level address translation and a storage device performing the same
CN110119361B (en) Memory controller and method of operating the same
CN115480700A (zh) 数据存储方法、存储设备以及主机
KR20230025322A (ko) 호스트, 호스트의 동작 방법 및 스토리지 시스템
CN117337425A (zh) 存储装置、方法及电子设备

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant