KR102218732B1 - 저장 장치 및 그것의 동작 방법 - Google Patents

저장 장치 및 그것의 동작 방법 Download PDF

Info

Publication number
KR102218732B1
KR102218732B1 KR1020140008481A KR20140008481A KR102218732B1 KR 102218732 B1 KR102218732 B1 KR 102218732B1 KR 1020140008481 A KR1020140008481 A KR 1020140008481A KR 20140008481 A KR20140008481 A KR 20140008481A KR 102218732 B1 KR102218732 B1 KR 102218732B1
Authority
KR
South Korea
Prior art keywords
data
hash
hash keys
write
reference data
Prior art date
Application number
KR1020140008481A
Other languages
English (en)
Other versions
KR20150088089A (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 KR1020140008481A priority Critical patent/KR102218732B1/ko
Priority to US14/489,676 priority patent/US9477589B2/en
Publication of KR20150088089A publication Critical patent/KR20150088089A/ko
Application granted granted Critical
Publication of KR102218732B1 publication Critical patent/KR102218732B1/ko

Links

Images

Classifications

    • 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
    • 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
    • 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/17Details of further file system functions
    • G06F16/174Redundancy elimination performed by the file system
    • G06F16/1748De-duplication implemented within the file system, e.g. based on file segments
    • 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/18File system types
    • G06F16/1805Append-only file systems, e.g. using logs or journals to store data
    • G06F16/1815Journaling file systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2255Hash tables

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)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

본 발명의 일 실시 예에 따른 저장 장치는 복수의 참조 데이터들을 저장하는 불휘발성 메모리 장치, 상기 불휘발성 메모리 장치에 저장된 복수의 참조 데이터들 각각의 복수의 참조 해시 키들을 관리하는 해시 관리 테이블을 저장하는 메모리, 쓰기 요청된 데이터에 기반하여 복수의 해시 키들을 생성하는 해시 키 생성기, 상기 복수의 해시 키들과 상기 복수의 참조 데이터들 각각의 참조 해시 키들을 비교하고, 비교 결과에 응답하여 상기 쓰기 요청된 데이터를 상기 불휘발성 메모리 장치에 저장할 것인지의 여부를 결정하는 메모리 컨트롤러를 포함하되, 상기 메모리 컨트롤러는 상기 복수의 해시 키들 및 상기 복수의 참조 데이터들 각각의 상기 복수의 참조 해시 키들 간의 유사도에 따라 상기 복수의 참조 데이터들 중 하나의 참조 데이터를 선택하고, 상기 쓰기 요청된 데이터와 상기 선택된 참조 데이터를 상호 참조하여 상기 불휘발성 메모리 장치에 저장한다.

Description

저장 장치 및 그것의 동작 방법{STOARGE DEVICE AND METHOD OPERATION THEREOF}
본 발명은 저장 장치 및 그것의 동작 방법에 관한 것으로, 좀더 자세하게는 불휘발성 메모리 장치 및 그것의 동작 방법에 관한 것이다.
데이터를 저장하는 저장 장치로 반도체 메모리 장치가 사용된다. 반도체 메모리 장치에는 DRAM, SRAM 등과 같은 휘발성 메모리와 EEPROM, FRAM, PRAM, MRAM, Flash Memory 등과 같은 불휘발성 메모리 등이 있다. 휘발성 메모리는 전원이 차단될 때 저장된 데이터를 잃지만, 불휘발성 메모리는 전원이 차단되더라도 저장된 데이터를 보존한다.
최근 들어 불휘발성 메모리를 사용하는 장치들이 증가하고 있다. 예를 들면 MP3 플레이어, 디지털 카메라, 휴대전화, 캠코더, 플래시 카드 및 SSD(Solid State Disk) 등은 저장장치로 불휘발성 메모리를 사용하고 있다. 사용자가 필요로 하는 저장 용량이 늘어남에 따라, 불휘발성 메모리의 저장 공간을 효율적으로 사용하기 위한 방법이 요구되고 있다.
본 발명의 목적은 동일한 데이터가 중복적으로 저장되는 것을 방지함으로써, 저장 공간을 효율적으로 사용할 수 있는 저장 장치 및 그것의 동작 방법을 제공하는 데 있다.
상기 목적을 달성하기 위한 본 발명의 일 실시 예에 따른 저장 장치는 복수의 참조 데이터들을 저장하는 불휘발성 메모리 장치, 상기 불휘발성 메모리 장치에 저장된 복수의 참조 데이터들 각각의 복수의 참조 해시 키들을 관리하는 해시 관리 테이블을 저장하는 메모리, 쓰기 요청된 데이터에 기반하여 복수의 해시 키들을 생성하는 해시 키 생성기, 상기 복수의 해시 키들과 상기 복수의 참조 데이터들 각각의 참조 해시 키들을 비교하고, 비교 결과에 응답하여 상기 쓰기 요청된 데이터를 상기 불휘발성 메모리 장치에 저장할 것인지의 여부를 결정하는 메모리 컨트롤러를 포함하되, 상기 메모리 컨트롤러는 상기 복수의 해시 키들 및 상기 복수의 참조 데이터들 각각의 상기 복수의 참조 해시 키들 간의 유사도에 따라 상기 복수의 참조 데이터들 중 하나의 참조 데이터를 선택하고, 상기 쓰기 요청된 데이터와 상기 선택된 참조 데이터를 상호 참조하여 상기 불휘발성 메모리 장치에 저장한다.
본 발명의 일 실시 예에 있어서, 상기 메모리 컨트롤러는 상기 쓰기 요청된 데이터를 복수의 서브 페이지들로 분할하고, 상기 해시 키 생성기는 상기 복수의 서브 페이지들에 각각 대응하는 상기 복수의 해시 키들을 생성한다.
본 발명의 일 실시 예에 있어서, 상기 메모리는 중복 매칭 테이블을 더 저장하고,
상기 쓰기 요청된 데이터 및 상기 선택된 참조 데이터의 유사도가 기준치 이상으로 판별 시, 상기 쓰기 요청된 데이터의 참조 정보는 상기 중복 매칭 테이블에 등록된다.
본 발명의 일 실시 예에 있어서, 상기 복수의 참조 해시 키들이 상기 선택된 참조 데이터의 복수의 해시 키들과 중복되는 경우,
상기 메모리 컨트롤러는 상기 쓰기 요청된 데이터의 어드레스가 상기 선택된 참조 데이터가 저장된 상기 불휘발성 메모리 장치의 어드레스를 참조하도록 매핑한다.
본 발명의 일 실시 예에 있어서, 상기 복수의 참조 해시 키들이 상기 선택된 참조 데이터의 복수의 해시 키들과 기준치 이상의 유사도를 갖는 경우,
상기 메모리 컨트롤러는 상기 쓰기 요청된 데이터 및 상기 선택된 참조 데이터를 XOR 연산하고, 상기 XOR 연산된 데이터를 압축하여 상기 불휘발성 메모리 장치에 저장한다.
본 발명의 일 실시 예에 있어서 상기 복수의 해시 키들 및 상기 선택된 참조 데이터의 복수의 해시 키들이 상기 기준치 이상의 유사도를 갖지 않을 시, 상기 복수의 해시 키들이 상기 해시 관리 테이블에 등록된다.
본 발명의 일 실시 예에 있어서, 상기 해시 관리 테이블의 크기가 기준 크기 이상에 도달할 경우, 상기 메모리 컨트롤러는 상기 해시 관리 테이블에 포함된 각 참조 데이터의 복수의 참조 해시 키들 중 상기 쓰기 요청된 데이터의 복수의 해시 키 정보들과 상호 참조되지 않은 참조 데이터의 복수의 참조 해시 키들을 소거한다.
본 발명의 일 실시 예에 있어서, 상기 해시 관리 테이블의 크기가 기준 크기에 도달할 경우,
상기 메모리 컨트롤러는 상기 해시 관리 테이블에 포함된 복수의 참조 데이터들 중 적어도 두 개의 참조 데이터들을 서로 결합한다.
본 발명의 일 실시 예에 있어서, 상기 적어도 두 개의 참조 데이터들은 서로 XOR 연산되어 결합된다.
본 발명의 일 실시 예에 있어서, 상기 해시 관리 테이블의 크기가 기준 크기에 도달할 경우,
상기 메모리 컨트롤러는 상기 선택된 참조 데이터의 복수의 해시 키들이 상기 쓰기 요청된 데이터의 상기 복수의 해시 키들과 가장 적게 상호 참조된 경우, 상기 선택된 참조 데이터 및 상기 선택된 참조 데이터와 상호 참조된 데이터를 역 XOR 연산한다.
본 발명의 일 실시 예에 있어서, 상기 선택된 참조 데이터의 복수의 해시 키들은 상기 해시 관리 테이블에서 소거되며, 상기 역 XOR 연산된 데이터는 압축되어 상기 불휘발성 메모리 장치에 저장된다.
본 발명의 일 실시 예에 있어서, 상기 중복 관리 테이블은 DRAM 또는 SRAM에 저장된다.
상기 목적을 달성하기 위한 본 발명의 다른 실시 예에 따른 저장 장치의 동작 방법은 쓰기 요청된 데이터에 대한 복수의 해시 키들을 생성하는 단계, 상기 생성된 복수의 해시 키들과 해시 관리 테이블에서 관리되는 복수의 참조 데이터들 각각의 상기 복수의 참조 해시 키들을 비교하는 단계, 상기 쓰기 요청된 데이터의 상기 복수의 해시 키들과 상기 복수의 참조 데이터들 중 하나의 참조 데이터의 복수의 참조 해시 키들이 기준치 이상으로 유사한 경우, 상기 쓰기 요청된 데이터와 상기 참조 데이터를 XOR 연산하는 단계, 상기 XOR 연산된 데이터를 압축하여 저장하는 단계를 포함한다.
본 발명의 다른 실시 예에 있어서, 상기 쓰기 요청된 데이터의 상기 해시 키들과 상기 참조 데이터의 해시 키들이 기준치 이하로 유사한 경우, 상기 쓰기 요청된 데이터를 상기 불휘발성 메모리 장치에 압축하여 저장한다.
본 발명의 다른 실시 예에 있어서, 상기 해시 관리 테이블의 크기가 기준 크기에 도달할 경우, 상기 해시 관리 테이블에 포함된 복수의 참조 데이터들 중 적어도 두 개의 참조 데이터들이 서로 결합된다.
본 발명의 실시 예에 따른 저장 장치는 중복 관리 테이블을 참조하여, 쓰기 요청된 데이터가 불휘발성 메모리 장치에 저장된 데이터와 동일한 지의 여부를 판단함으로써, 동일한 데이터가 중복적으로 불휘발성 메모리 장치에 저장되는 것을 방지한다. 따라서, 불휘발성 메모리 장치의 저장 공간을 효율적으로 사용할 수 있다. 또한, 중복 관리 테이블을 소정 크기로 유지함으로써, 중복 관리 테이블을 저장하는데 필요한 메모리를 최소화할 수 있다.
도 1은 본 발명의 실시 예에 따른 메모리 시스템을 보여주는 블록도이다.
도 2는 도 1에 도시된 해시 키 생성부의 동작을 보여주는 도면이다.
도 3은 본 발명의 실시 예에 따른 메모리 시스템의 쓰기 동작을 보여주는 순서도이다.
도 4는 본 발명의 실시 예에 따른 중복 관리 테이블에 포함된 참조 해시 테이블의 일 예를 보여주는 표이다.
도 5 내지 도 8은 본 발명의 실시 예에 따른 쓰기 동작에 기반한 중복 관리 테이블의 일 예들을 보여주는 표들이다.
도 9는 도 1에 도시된 델타 유닛의 동작을 보여주는 블록도이다.
도 10은 본 발명의 실시 예에 따른 메모리 시스템의 읽기 동작을 보여주는 순서도이다.
도 11은 본 발명의 실시 예에 따른 읽기 동작에 기반한 중복 관리 테이블의 일 예를 보여주는 표이다.
도 12 내지 도 14는 본 발명의 실시 예에 따른 중복 관리 테이블의 메모리 크기를 줄이는 소거 동작을 보여주는 순서도들이다.
도 15는 도 1의 메모리 시스템의 응용 예를 보여주는 블록도이다.
도 16은 본 발명의 실시 예에 따른 메모리 카드를 보여준다.
도 17은 본 발명의 실시 예에 따른 솔리드 스테이트 드라이브를 보여준다.
도 18은 본 발명의 실시 예에 따른 컴퓨팅 장치를 보여주는 블록도이다.
이하, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 본 발명의 기술적 사상을 용이하게 실시할 수 있을 정도로 상세히 설명하기 위하여, 본 발명의 실시 예를 첨부된 도면을 참조하여 설명하기로 한다. 동일한 구성 요소들은 동일한 참조번호를 이용하여 인용될 것이다. 유사한 구성 요소들은 유사한 참조번호들을 이용하여 인용될 것이다. 아래에서 설명될 본 발명에 따른 이미지 센서와, 그것에 의해 수행되는 동작은 예를 들어 설명한 것에 불과하며, 본 발명의 기술적 사상을 벗어나지 않는 범위 내에서 다양한 변화 및 변경이 가능하다.
삭제
삭제
삭제
삭제
삭제
삭제
삭제
삭제
삭제
삭제
삭제
삭제
삭제
삭제
삭제
삭제
삭제
삭제
삭제
삭제
삭제
삭제
삭제
도 1은 본 발명의 실시 예에 따른 메모리 시스템을 보여주는 블록도이다. 도 1을 참조하면, 메모리 시스템(1000)은 호스트(1100) 및 저장 장치(1200)를 포함한다.
호스트(1100)는 저장 장치(1200)에 저장된 데이터의 읽기, 쓰기, 또는 소거 동작에 대한 어드레스를 메모리 컨트롤러(1300)에 제공한다.
저장 장치(1200)는 복수의 데이터들을 저장한다. 저장 장치(120)는 메모리 컨트롤러(1300) 및 불휘발성 메모리 장치(Non-volatile memory, 1400)를 포함한다.
메모리 컨트롤러(1300)는 저장 장치(1200)의 전반적인 동작을 제어하며, 불휘발성 메모리 장치(1400)는 데이터를 저장한다. 호스트(1100)로부터 읽기 요청이 있는 경우, 저장 장치(1200)는 불휘발성 메모리 장치(1400)에 저장된 데이터를 읽고, 읽은 데이터를 호스트(1100)로 전송한다.
호스트(1100)로부터 쓰기 요청이 있는 경우, 저장 장치(1200)는 호스트(1100)로부터 쓰기 요청된 데이터를 수신한다. 호스트(1100)로부터 쓰기 요청된 데이터는 불휘발성 메모리 장치(1400)에 저장된 데이터와 중복되거나 일부 유사한 데이터일 수 있다.
일 예로, 호스트(1100)로부터의 쓰기 요청된 데이터와 불휘발성 메모리 장치(1400)에 저장된 데이터가 중복될 경우, 본 발명의 실시 예에 따른 저장 장치(1200)는 중복적으로 쓰기 요청된 데이터를 불휘발성 메모리 장치(1400)에 저장하지 않는다. 이 경우, 저장 장치(1200)는 쓰기 요청된 데이터의 어드레스(address)가 기존에 저장된 불휘발성 메모리 장치(1400)의 어드레스에 일치하게 함으로써, 호스트(1100)로부터의 쓰기 요청을 수행한다.
다른 예로서, 호스트(1100)로부터의 쓰기 요청된 데이터와 불휘발성 메모리 장치(1400)에 저장된 데이터가 일부 유사할 경우, 본 발명의 실시 예에 따른 저장 장치(1200)는 중복적으로 쓰기 요청된 데이터와 참조 데이터를 연산하여 불휘발성 메모리 장치(1400)에 저장한다.
이와 같이, 쓰기 요청된 데이터가 기존에 저장된 데이터와 중복되거나 일부 유사할 경우, 쓰기 요청된 데이터를 저장하는 대신 기존에 저장된 데이터를 참조하게 하는 동작은 중복 제거 동작(deduplication operation)이라 칭해질 수 있다. 중복 제거 동작을 수행함으로써, 본 발명의 실시 예에 따른 저장 장치(1200)는 불휘발성 메모리 장치(1400)의 저장 공간을 효율적으로 사용할 수 있다.
메모리 컨트롤러(1300)는 저장 장치(1200)의 전반적인 동작을 제어한다. 예를 들어, 메모리 컨트롤러(1300)는 저장 장치(1200)의 쓰기 동작, 소거 동작 및 읽기 동작을 제어한다.
메모리 컨트롤러(1300)는 호스트(1100)로부터 쓰기 요청이 있는 경우, 쓰기 요청된 데이터가 불휘발성 메모리 장치(1400)에 저장된 데이터와 중복 또는 유사한 데이터인지의 여부를 판단한다. 예를 들어, 쓰기 요청된 제 1 데이터가 불휘발성 메모리 장치(1400)에 저장된 제 2 데이터와 동일한 데이터인 경우, 메모리 컨트롤러(1300)는 쓰기 요청된 제 1 데이터의 논리 어드레스(Logical address)가 불휘발성 메모리 장치(1400)에 저장된 제 2 데이터의 물리 어드레스(Physical address)로 매핑되도록 저장 장치(1200)를 제어한다.
자세하게, 메모리 컨트롤러(1300)는 호스트 인터페이스(1310), 중앙 처리 장치(1320), 해시 키 생성부(1330), 워크 메모리(1340), 및 쓰기 데이터 모듈(1350)을 포함한다.
호스트 인터페이스(Host Interface, 1310)는 저장 장치(1200)와 호스트(1100) 사이의 인터페이스 기능을 제공한다. 중앙 처리 장치(CPU, 1320)는 메모리 컨트롤러(1300)의 전반적인 동작을 제어한다.
해시 키 생성부(Hash key Generation, 1330)는 쓰기 요청된 데이터에 대한 해시 키(hash key)를 생성한다. 실시 예에 있어서, 본 발명에 따른 해시 키 생성부(1330)는 제 1 내지 제 4 해시 키 생성기들(1331, 1332, 1333, 1334)을 포함한다. 본 발명의 설명에 있어서, 쓰기 요청된 데이터가 4 개의 서브 페이지들로 분할되는 것에 기반하여, 4 개의 해시 키 생성기들이 구비되는 것으로 설명되나, 이에 한정되지 않는다. 즉, 쓰기 요청된 데이터의 서브 페이지들 수에 따라 해시 키 생성기들의 수가 조절될 수 있다.
또한, 해시 키 생성부(1330)는 복수의 해시 키 생성기들을 포함함에 따라, 쓰기 요청된 데이터에 기반한 복수의 해시 키들을 동시에 생성할 수 있다. 따라서, 해시 키 생성부(1330)로부터 해시 키가 생성되는 시간이 줄어들 수 있다.
해시 키는 데이터의 유사한 정도를 판단하는데 사용된다. 예를 들어, 쓰기 요청된 데이터의 해시 키와 중복 관리 테이블(1341)에서 관리되는 해시 키가 동일 또는 유사한 경우, 쓰기 요청된 데이터는 불휘발성 메모리 장치(1400)에 저장된 데이터와 동일 또는 유사한 것으로 판단된다.
해시 키 생성부(1330)는 쓰기 요청된 데이터 대한 복수의 해시 키들을 생성한다. 해시 키 생성부(1330)는 복수의 해시 키들과 중복 관리 테이블(1341)에서 관리되는 해시 키들이 서로 비교될 수 있다. 쓰기 요청된 데이터의 복수의 해시 키들 중 적어도 하나의 해시 키가 중복 관리 테이블(1341)에서 관리되는 해시 키들과 매칭되는 경우, 쓰기 요청된 데이터는 불휘발성 메모리 장치(1400)에 저장된 데이터와 중복 또는 유사한 데이터로서 판단될 수 있다.
또한, 도 1에 도시된 바와 같이, 해시 키 생성부(1330)는 하드웨어(H/W)로 구현될 수 있으나, 이에 한정되는 것은 아니다. 예를 들어, 해시 키 생성부(1330)는 해시 키를 생성하는 기능을 수행하는 소프트웨어(S/W)로 구현될 수 있으며, 해당 소프트 웨어는 워크 메모리(1340)에 저장될 수 있다.
워크 메모리(1340)는 쓰기 요청된 데이터와 참조 데이터 사이의 정보, 즉 중복 관리 데이터를 저장하는데 사용된다. 실시 예에 있어서, 워크 메모리(1340)는 DRAM, SRAM 등과 같은 휘발성 메모리로 구현될 수 있다.
워크 메모리(1340)는 중복 관리 테이블(Deduplication Manage Table, 1341)을 포함한다. 중복 관리 테이블(1341)은 불휘발성 메모리 장치(1400)에 저장된 참조 데이터의 해시 키들을 관리한다. 호스트(1100)로부터 쓰기 요청이 있는 경우, 중앙 처리 장치(1320)는 중복 관리 테이블(1341)에서 관리되는 해시 키들을 참조함으로써, 쓰기 요청된 데이터가 불휘발성 메모리 장치(1400)에 저장된 데이터와 중복 또는 유사한 데이터인지의 여부를 확인할 수 있다.
자세하게, 중복 관리 테이블(1341)은 비교적 최근에 쓰기 요청된 참조 데이터(또는 읽기 요청된 데이터)에 대한 해시 키들을 관리한다. 예를 들면, 이전에 쓰기 요청된 데이터 또는 이전에 읽기 요청된 데이터가 참조 데이터로 사용될 수 있다. 이전에 쓰기 요청된 데이터 또는 이전에 읽기 요청된 데이터로부터 생성된 해시 키들이 중복 관리 테이블(1341)에 등록될 수 있다.
즉, 호스트(1100)로부터 쓰기 요청이 있는 경우, 해시 키 생성부(1330)는 쓰기 요청된 데이터에 대한 복수의 해시 키들을 생성하고, 중앙 처리 장치(1320)는 생성된 복수의 해시 키들과 중복 관리 테이블(1341)의 해시 키를 서로 비교함으로써, 중복 여부를 판단할 수 있다.
한편, 중복 관리 테이블(1341)의 크기는 소정 크기로 제한된다. 예를 들어, 중복 관리 테이블(1341)은 불휘발성 메모리 장치(1400)에 저장된 참조 데이터 중 비교적 최근에 쓰기 요청된 데이터 또는 비교적 최근에 읽기 요청된 데이터에 대한 해시 키들을 관리한다.
예를 들어, 중복 관리 테이블(1341)의 크기가 소정 크기에 도달한 경우, 중앙 처리 장치(1320)는 중복 관리 테이블(1341)에서 관리되는 해시 키들 중 가장 오래전에 생성된 해시 키들을 삭제함으로써, 중복 관리 테이블(1341)의 크기를 소정 크기로 유지한다.
다만, 이는 예시적인 것이며, 중앙 처리 장치(1320)는 가장 접근 빈도가 낮은 데이터의 해시 키들을 삭제하는 방식 등을 이용함으로써, 중복 관리 테이블(1341)의 크기를 소정 크기로 유지할 수 있다.
쓰기 데이터 모듈(1350)은 쓰기 요청된 데이터가 불휘발성 메모리 장치(1400)에 저장된 참조 데이터와 유사한 데이터인지의 여부에 따라, 쓰기 요청된 데이터와 참조 데이터를 연산 및 압축한다. 이를 위하여, 쓰기 데이터 모듈(1350)은 쓰기 요청된 데이터와 참조 데이터를 연산하는 델타 유닛(Delta Unit, 1351) 및 연산된 데이터를 압축하는 컴프레션 유닛(Compression Unit, 1352)을 포함한다.
불휘발성 메모리 장치(1400)는 메모리 셀 어레이(1410)를 포함한다. 실시 예에 있어서, 불휘발성 메모리 장치(1400)는 플래시 메모리(Flash memory)로 구현될 수 있다.
예를 들어, 메모리 셀 어레이(1410)는 복수의 메모리 블록들을 포함하며, 각 메모리 블록들은 복수의 플래시 메모리 셀들을 포함한다. 각 플래시 메모리 셀에는 한 비트 또는 두 비트 이상의 데이터가 저장될 수 있다. 중복 관리 테이블(1341)은 소정 시간마다 또는 저장 장치(1200)의 파워 오프(power off) 시에 불휘발성 메모리 장치(1400)에 저장되고, 저장 장치(1200)의 파워 온(power on) 시에 워크 메모리(1340)로 로드(load)될 수 있다.
한편, 본 발명의 실시 예에 따른 저장 장치(1200)는 불휘발성 메모리 장치(1400)로 다양한 메모리를 사용할 수 있다. 예를 들어, 불휘발성 메모리 장치(1400)는 불휘발성 메모리로 구현될 수 있으며, 불휘발성 메모리는 플래시 메모리(flash memory), MRAM(Magnetic RAM), 스핀전달토크 MRAM(Spin-Transfer Torgue MRAM), Conductive bridging RAM(CBRAM), FeRAM(Ferroelectric RAM), OUM(Ovonic Unified Memory)라고도 불리는 PRAM(Phase RAM), 저항 메모리(Resistive RAM: RRAM 또는 Re-RAM), 나노퓨브 RAM(Nanottube RAM), 폴리머 RAM(Polymer RAM: PoRAM), 나노 부유 게이트 메모리(Nano Floating Gate Memory: NFGM), 홀로그래픽 메모리(holographic memory), 분자 전자 메모리 소자(Molecular Electronics Memory) 또는 절연 저항 변화 메모리(Insulator Resistance Change Memory)일 수 있다.
상술한 바와 같이, 본 발명의 실시 예에 따른 저장 장치(1200)는 쓰기 요청된 데이터가 불휘발성 메모리 장치(1400)에 저장된 데이터와 중복 또는 유사한 경우, 쓰기 요청된 데이터가 불휘발성 메모리 장치(1400)에 중복적으로 저장되는 것을 방지할 수 있다.
도 2는 도 1에 도시된 해시 키 생성부의 동작을 보여주는 도면이다.
도 2를 참조하면, 중앙 처리 장치(1320, 도1 참조) 호스트(1100, 도1 참조)로부터 쓰기 요청된 데이터, 예를 들어, 제 1 데이터(D1)를 수신할 수 있다. 중앙 처리 장치(1320)는 제 1 데이터(D1)를 4 개의 서브 페이지들(D1_1, D1_2, D1_3, D1_4)로 분할하여 해시 키 생성부(1330)로 제공한다.
해시 키 생성부(1330)는 쓰기 요청된 제 1 데이터(D1)의 서브 페이지들(D1_1, D1_2, D1_3, D1_4)에 대응하는 복수의 해시 키들(HK1_1, HK1_2, HK1_3, HK1_4)을 생성한다.
본 발명의 설명에 있어서, 해시 키 생성부(1330)가 4 개의 해시 키들(HK1_1, HK1_2, HK1_3, HK1_4)을 생성하는 것으로 설명되지만, 이는 이에 한정되지 않는다. 즉, 해시 키 생성부(1330)는 쓰기 요청된 데이터의 서브 페이지들에 대응하는 복수의 해시 키들을 생성할 수 있다. 예를 들어, 해시 키 생성부(1330)는 8 개의 서브 페이지들에 대응하는 8 개의 해시 키들을 생성할 수 있다. 이 경우, 쓰기 요청된 데이터의 서브 페이지들과 참조 데이터의 해시 키들의 유사도가 더 세밀하게 판단될 수 있다.
도 3은 본 발명의 실시 예에 따른 메모리 시스템의 쓰기 동작을 보여주는 순서도이다.
도 1 및 도 3을 참조하면, S110 단계에서, 호스트 인터페이스(1310)는 호스트(1100)로부터 쓰기 요청된 데이터(D)와 이에 대응하는 쓰기 어드레스 및 쓰기 커맨드를 수신한다.
S120 단계에서, 해시 키 생성부(1330)는 쓰기 커맨드에 응답하여, 쓰기 요청된 데이터(D)에 기반하여 N 개의 해시 키(Hash key)들을 생성한다. 본 발명의 설명에 있어서, 해시 키 생성부(1330)는 4 개의 해시 키들을 생성하는 것으로 설명되나, 이에 한정되지 않는다.
S130 단계에서, 중앙 처리 장치(1320)는 쓰기 요청된 데이터(D)에 따른 4 개의 해시 키(Hk)들과 중복 관리 테이블(1341)에 등록된 참조 데이터의 해시 키(Rk)들을 비교한다. 중앙 처리 장치(1320)는 중복 관리 테이블(1341)을 참조함으로써, 쓰기 요청된 데이터가 불휘발성 메모리 장치(1400)에 저장된 데이터와 중복 또는 유사한 데이터인지의 여부를 판단할 수 있다.
S140 단계에서, 중앙 처리 장치(1320)는 쓰기 요청된 데이터(D)의 해시 키(Hk)들 및 참조 데이터의 해시 키들(Rk)의 비교 결과에 기반하여, 데이터의 유사도가 가장 높은 참조 데이터를 선택한다. 예를 들어, 중앙 처리 장치(1320)는 쓰기 요청된 데이터(D)의 해시 키들(Hk)과 일치하는 해시 키들(Rk)의 수가 가장 많은 참조 데이터를 선택할 수 있다.
S150 단계에서, 중앙 처리 장치(1320)는 쓰기 요청된 데이터(D) 및 선택된 참조 데이터의 유사도에 기반하여, 두 데이터가 중복 또는 유사한지를 판단한다.
S160 단계에서, 쓰기 요청된 데이터(D)의 해시 키들(Hk)이 참조 데이터의 해시 키들(Rk)과 중복될 경우(Yes), 중앙 처리 장치(1320)는 쓰기 요청된 데이터(D)를 불휘발성 메모리 장치(1400)에 저장하지 않는다. 즉, 중앙 처리 장치(1320)는 쓰기 요청된 데이터(D)의 어드레스가 참조 데이터로서 불휘발성 메모리 장치(1400)에 저장되어 있는 것으로 판단한다. 따라서, 쓰기 요청된 데이터(D)의 어드레스가 불휘발성 메모리 장치(1400)에 저장된 참조 데이터의 물리적 어드레스에 매핑된다.
본 발명의 일 실시 예로, 쓰기 요청된 데이터(D)의 해시 키들(Hk)이 참조 데이터의 해시 키들(Rk)과 중복되지 않을 경우(No), S170 단계에서, 중앙 처리 장치(1320)는 두 데이터들의 해시 키들 간의 유사도를 판단한다. 즉, 중앙 처리 장치(1320)는 쓰기 요청된 데이터(D)의 해시 키들(HK) 및 참조 데이터의 해시 키들(RK) 간의 유사도가 기준치 이상인지 판별한다.
쓰기 요청된 데이터(D)의 해시 키들(Hk) 및 참조 데이터의 해시 키들(Rk) 간의 유사도가 기준치 이하일 경우(No), S171 단계에서, 중앙 처리 장치(1320)는 컴프레션 유닛(1352)을 통해 쓰기 요청된 데이터(D)가 압축되도록 제어한다. 즉, 쓰기 요청된 데이터(D)는 압축된 형태로서 메모리 셀 어레이(1410)에 저장되며, 쓰기 요청된 데이터(D)의 해시 키들(Hk)은 새로운 참조 데이터로서 중복 관리 테이블(1341)에 등록될 수 있다.
쓰기 요청된 데이터(D)의 해시 키들(Hk) 및 참조 데이터의 해시 키들(Rk) 간의 유사도가 기준치 이상일 경우(Yes), S172 단계에서, 중앙 처리 장치(1320)는 델타 유닛(1351)을 통해 두 데이터 간의 XOR 연산이 수행되도록 제어한다. 중앙 처리 장치(1320)는 XOR 연산된 데이터가 컴프레션 유닛(1352)을 통해 압축되어 메모리 셀 어레이(1410)에 저장되도록 제어한다(S171). 여기서, XOR 연산되어 압축된 데이터의 크기는 XOR 연산 없이 압축된 데이터의 크기 보다 적을 수 있다. 예를 들어, 서로 유사도를 갖는 제 1 및 제 2 데이터들을 XOR 연산할 경우, 제 1 및 제 2 데이터들 중 일치하는 부분에서는 동일한 비트들이 출력된다. 따라서, 컴프레션 유닛(1352)의 압축 효율이 높아질 수 있다. 예시적으로, 쓰기 요청된 데이터를 압축하는 것보다 XOR 연산 후 압출할 시, 컴프레션 유닛(1352)의 압축 효율이 20% 정도 좋아질 수 있다.
도 4는 본 발명의 실시 예에 따른 중복 관리 테이블에 포함된 해시 관리 테이블 및 중복 매칭 테이블의 일 예를 보여주는 표이다. 실시 예에 있어서, 중복 관리 테이블(1341, 도1 참조)은 불휘발성 메모리 장치(1400)에 저장된 참조 데이터들의 해시 키들을 저장하는 해시 관리 테이블(Hash manage table, 1342)을 포함할 수 있다. 또한, 중복 관리 테이블(1341)은 쓰기 요청된 데이터가 불휘발성 메모리 장치(1400, 도1 참조)에 저장된 참조 데이터와 중복 또는 유사한지 데이터인지의 여부를 나타내는 중복 매칭 테이블(Deduplication matching table, 1343)을 포함한다.
도 4를 참조하면, 해시 관리 테이블(1342)은 불휘발성 메모리 장치(1400)에 저장된 참조 데이터들의 참조 색인을 보여주는 인덱스(Index) 필드, 참조 데이터들의 참조 해시 키(Reference Hash Key) 필드, 각 참조 색인에 대응하는 참조 데이터의 어드레스(ADDR) 필드, 및 참조 데이터가 참조된 카운트 수(Cnt) 필드를 포함한다.
자세하게, 해시 관리 테이블(1342)은 제 1 내지 제 3 참조 데이터에 각각 대응하는 제 1 내지 제 3 참조 색인들(RK1, RK2, RK3)을 포함한다. 본 발명의 설명에 있어서, 해시 관리 테이블(1342)에 3 개의 참조 데이터가 등록된 것으로 설명된다. 그러나, 본 발명의 기술적 사상은 이에 한정되지 않으며 다양하게 구현될 수 있다.
제 1 내지 제 3 참조 색인들(RK1, RK2, RK3)에 따른 각 참조 해시 키는 호스트로부터 쓰기 요청된 데이터가 불휘발성 메모리 장치(1400)에 저장된 참조 데이터 사이의 유사도를 판단하는 데이터로서 사용될 수 있다.
예를 들어, 제 1 참조 색인(RK1)에 따른 참조 해시 키는 제 1 내지 제 4 참조 해시 키들(RK1_1, RK1_2, RK1_3, RK1_4)을 가리킨다. 또한, 제 1 참조 색인(RK1)은 제 1 참조 데이터가 저장된 불휘발성 메모리 장치(1400)의 어드레스를 가리키는 제 1 어드레스(ADDR1)을 가리킨다.
제 2 참조 색인(RK2)에 따른 참조 해시 키는 제 1 내지 제 4 참조 해시 키들(RK2_1, RK2_2, RK2_3, RK2_4)을 가리킨다. 또한, 제 2 참조 색인(RK2)은 제 2 참조 데이터가 저장된 불휘발성 메모리 장치(1400)의 어드레스를 가리키는 제 2 어드레스(ADDR2)을 가리킨다.
제 3 참조 색인(RK3)에 따른 참조 해시 키는 제 1 내지 제 4 참조 해시 키들(RK3_1, RK3_2, RK3_3, RK3_4)을 가리킨다. 또한, 제 3 참조 색인(RK3)은 제 3 참조 데이터가 저장된 불휘발성 메모리 장치(1400)의 어드레스를 가리키는 제 3 어드레스(ADDR3)을 가리킨다.
또한, 해시 관리 테이블(1342)은 호스트로부터 쓰기 요청된 데이터에 응답하여, 각 참조 색인에 대응하는 참조된 카운터 수(Cnt)를 저장한다. 예를 들어, 호스트로부터 쓰기 요청된 데이터가 제 1 참조 색인(RK1)을 참조할 경우, 해시 관리 테이블(1342)는 제 1 참조 색인(RK1)의 카운터 수를 1 증가한다.
이와 같은 카운터 수(Cnt)는 해시 관리 테이블(1342)의 용량이 소정 크기에 도달할 경우, 해시 관리 테이블(1342)의 크기를 조절하는 데 이용될 수 있다. 예를 들어, 해시 관리 테이블(1342)의 크기를 조절할 경우, 카운터 수가 가장 적은 참조 데이터 순으로 소거될 수 있다.
중복 매칭 테이블(1343)에는 쓰기 요청된 데이터가 참조 데이터를 참조할 경우, 이에 관한 정보가 등록된다. 중복 매칭 테이블(1343)은 불휘발성 메모리 장치(1400)에 저장된 데이터의 호스트 어드레스(Host ADDR) 필드, 중복 여부(Deduplication) 필드, 유사도(Identical) 필드, 및 참조 어드레스(Reference ADDR) 필드를 포함한다.
도 5 내지 도 8은 본 발명의 실시 예에 따른 쓰기 동작에 기반한 중복 매칭 테이블의 일 예들을 보여주는 표들이다.
실시 예에 있어서, 중복 관리 테이블(1341)은 쓰기 요청된 데이터가 불휘발성 메모리 장치(1400, 도1 참조)에 저장된 참조 데이터와 중복 또는 유사한지 데이터인지의 여부를 나타내는 중복 매칭 테이블(1343)을 포함한다.
도 5 내지 도 8을 참조하면, 도 3에 도시된 메모리 시스템의 동작에 있어서, 쓰기 요청된 데이터가 참조 데이터와 중복되는 제 1 경우, 참조 데이터와 중복되지 않고 유사한 제 2 경우에 기반하여 설명된다.
먼저, 도 5를 참조하면, 제 1 경우로서, 호스트(1100, 도1 참조)로부터 쓰기 요청된 제 4 데이터 및 이에 대응하는 호스트 어드레스(H_ADDR_D4)가 저장 장치(1200)에 제공된다. 해시 키 생성기(1340, 도1 참조)는 제 4 데이터의 서브 페이지들에 대응하는 복수의 해시 키들(B, E, S, T)을 생성한다.
중앙 처리 장치(1320)는 쓰기 요청된 제 4 데이터에 따른 해시 키들(B, E, S, T)과 해시 관리 테이블(1342)에서 관리되는 참조 해시 키들 간의 중복 또는 유사 여부를 각각 비교한다.
계속하여 도 5에 참조하면, 쓰기 요청된 제 4 데이터의 해시 키들(B, E, S, T)은 제 1 참조 색인(RK1)에 포함된 참조 해시 키들(B, E, S, T)과 중복될 수 있다. 중앙 처리 장치(1320)는 쓰기 요청된 제 4 데이터가 불휘발성 메모리 장치(1400)에 이미 저장되어 있는 것으로 판단한다.
또한, 해시 관리 테이블(1342)은 쓰기 요청된 제 4 데이터가 제 1 참조 데이터를 참조함에 따라, 제 1 참조 색인(RK1)에 대응하는 카운트 수를 1 증가한다.
중앙 처리 장치(1320)는 제 4 데이터의 호스트 어드레스(H_ADDR_D4)를 포함한 매칭 정보를 중복 매칭 테이블(1343)에 등록한다.
도 6을 참조하면, 제 2 경우로서, 호스트(1100, 도 1 참조)로부터 쓰기 요청된 제 5 데이터 및 이에 대응하는 호스트 어드레스(H_ADDR_D5)가 저장 장치(1200)에 제공된다. 해시 키 생성기(1340, 도1 참조)는 제 5 데이터의 서브 페이지들에 대응하는 복수의 해시 키들(C, A, P, S)을 생성한다.
중앙 처리 장치(1320)는 쓰기 요청된 제 5 데이터에 따른 해시 키들(C, A, P, S)과 해시 관리 테이블(1342)에서 관리되는 참조 해시 키들 간의 중복 또는 유사 여부를 각각 비교한다.
쓰기 요청된 제 5 데이터의 해시 키들(C, A, P, S)은 해시 관리 테이블(1342)에 포함된 참조 해시 키들 중 어느 참조 해시 키들과도 중복되지 않을 수 있다. 이 경우, 중앙 처리 장치(1320)는 제 5 데이터의 해시 키들이 해시 관리 테이블(1342)에 포함된 참조 해시 키들과 비교하여 기준치 이상의 유사도를 갖지 않는 것으로 판단한다. 예를 들어, 기준치는 4 개의 해시 키들 중 적어도 3 개 이상의 해시 키들이 동일한 것일 수 있다. 그러나, 이러한 기준치는 이에 한정되지 않으며 다양하게 구현될 수 있다.
따라서, 쓰기 요청된 제 5 데이터는 압축된 형태로서 불휘발성 메모리 장치(1400)의 빈 공간에 저장되며, 쓰기 요청된 제 5 데이터의 해시 키들(C, A, P, S)은 새로운 참조 데이터(RK4)로서 해시 관리 테이블(1342)에 등록될 수 있다.
계속하여 도 7을 참조하면, 제 2 경우로서, 호스트(1100, 도 1 참조)로부터 쓰기 요청된 제 6 데이터 및 이에 대응하는 호스트 어드레스(H_ADDR_D6)가 저장 장치(1200)에 제공된다. 해시 키 생성기(1340, 도1 참조)는 제 6 데이터의 서브 페이지들에 대응하는 복수의 해시 키들(B, E, A, T)을 생성한다.
중앙 처리 장치(1320)는 쓰기 요청된 제 6 데이터에 따른 해시 키들(B, E, A, T)과 해시 관리 테이블(1342)에서 관리되는 참조 해시 키들 간의 중복 또는 유사 여부를 각각 비교한다.
중앙 처리 장치(1320)는 쓰기 요청된 제 6 데이터의 해시 키들(B, E, S, T)이 해시 관리 테이블(1342)에 포함된 참조 해시 키들과 비교하여 기준치 이상의 유사도를 갖는지 판단한다. 이 경우, 쓰기 요청된 제 6 데이터의 해시 키들(B, E, S, T)은 제 3 참조 색인(RK3)의 참조 해시 키들(B, E, A, T)과 비교하여 기준치 이상의 가장 높은 유사도를 갖는다.
따라서, 중앙 처리 장치(1320)는 쓰기 요청된 제 6 데이터와 제 3 참조 색인(RK3)에 해당하는 불휘발성 메모리 장치(1400)에 저장된 제 3 참조 데이터를 XOR 연산한 후 압축한다. 중앙 처리 장치(1320)는 압축된 제 6 데이터를 불휘발성 메모리 장치(1400)의 빈 블록에 저장한다. 이 때, 해시 관리 테이블(1342)은 쓰기 요청된 제 6 데이터가 제 3 참조 색인(RK3)를 참조함에 따라, 제 3 참조 색인(RK3)에 대응하는 카운트 수를 1 증가한다.
중앙 처리 장치(1320)는 제 6 데이터의 호스트 어드레스(H_ADDR_D6)를 포함한 매칭 정보를 중복 매칭 테이블(1343)에 등록한다.
도 8을 참조하면, 마찬가지로 제 2 경우로서, 호스트(1100, 도 1 참조)로부터 쓰기 요청된 제 7 데이터 및 이에 대응하는 호스트 어드레스(H_ADDR_D7)가 저장 장치(1200)에 제공된다. 해시 키 생성기(1340, 도1 참조)는 제 7 데이터의 서브 페이지들에 대응하는 복수의 해시 키들(B, S, S, T)을 생성한다.
중앙 처리 장치(1320)는 쓰기 요청된 제 7 데이터에 따른 해시 키들(B, S, S, T)과 해시 관리 테이블(1342)에서 관리되는 참조 해시 키들 간의 중복 또는 유사 여부를 각각 비교한다.
중앙 처리 장치(1320)는 쓰기 요청된 제 7 데이터의 해시 키들(B, S, S, T)이 해시 관리 테이블(1342)에 포함된 참조 해시 키들과 비교하여 기준치 이상의 유사도를 갖는지 판단한다. 이 경우, 쓰기 요청된 제 7 데이터의 해시 키들(B, S, S, T)은 제 1 참조 색인(RK3)의 참조 해시 키들(B, E, S, T)과 비교하여 기준치 이상의 가장 높은 유사도를 갖는다.
따라서, 중앙 처리 장치(1320)는 쓰기 요청된 제 7 데이터와 제 1 참조 색인(RK1)에 해당하는 불휘발성 메모리 장치(1400)에 저장된 제 1 참조 데이터를 XOR 연산한 후 압축한다. 중앙 처리 장치(1320)는 압축된 제 7 데이터를 불휘발성 메모리 장치(1400)의 빈 블록에 저장한다. 이 때, 해시 관리 테이블(1342)은 쓰기 요청된 제 7 데이터가 제 1 참조 색인(RK1)를 참조함에 따라, 제 1 참조 색인(RK1)에 대응하는 카운트 수를 1 증가한다.
중앙 처리 장치(1320)는 제 7 데이터의 호스트 어드레스(H_ADDR_D7)를 포함한 매칭 정보를 중복 매칭 테이블(1343)에 등록한다.
도 9는 도 1에 도시된 델타 유닛의 동작을 보여주는 블록도이다.
도 9를 참조하면, 델타 유닛(1351)은 쓰기 요청된 데이터의 해시 키들과 해시 관리 테이블(1342)에 포함된 참조 해시 키들이 기준치 이상으로 가장 높은 유사도를 갖는 경우, 쓰기 요청된 데이터(D4)와 참조 데이터(RD3)를 XOR 연산한다. 예를 들어, 제 4 데이터(D4)의 해시 키들이 제 3 참조 색인(RK3)에 따른 참조 해시 키들과 기준치 이상으로 유사할 경우, 델타 유닛(1351)은 두 데이터들을 XOR 연산한다.
도 9에 도시된 바와 같이, 두 데이터들이 XOR 연산된 출력값으로서, 유사한 영역의 출력값은 "0"이 된다. 이에 반해, 두 데이터들이 서로 유사하지 않은 영역의 출력값은 "1" 또는 "0"이 혼합될 수 있다. 즉, 두 데이터들이 서로 유사하지 않은 영역은 출력값이 "1"이 시작된 지점부터 "1"로 끝나는 영역일 수 있다.
따라서, 컴프레션 유닛(1352)은 쓰기 요청된 데이터 전체를 압축하는 것과 비교하여, 데이터가 유사하지 않은 영역을 기반으로 압축할 수 있다. 따라서, 불휘발성 메모리 장치(1410) 의 크기가 적어질 수 있다.
도 10은 본 발명의 실시 예에 따른 메모리 시스템의 읽기 동작을 보여주는 순서도이다.
도 1 및 도 10을 참조하면, S210 단계에서, 저장 장치(1200)는 호스트(1100)로부터 어드레스 및 읽기 커맨드를 수신한다.
S220 단계에서, 중앙 처리 장치(1320)는 읽기 어드레스가 중복 관리 테이블(1341)에 존재하는지 참조한다.
S230 단계에서, 중앙 처리 장치(1330)는 읽기 요청된 데이터의 호스트 어드레스가 중복 관리 테이블(1341)에 존재 또는 존재하지 않는 지에 대해 판단한다.
중앙 처리 장치(1330)는 읽기 요청된 데이터의 호스트 어드레스가 중복 관리 테이블(1341)에 존재하지 않는 것으로 판단되면, S240 단계에서, 읽기 어드레스에 대응하는 불휘발성 메모리 장치(1400)의 저장 영역으로부터 데이터가 읽어진다. 중앙 처리 장치(1330)는 읽어진 데이터의 압축을 해제하고, 압축이 해제된 데이터를 호스트(1100)로 출력한다.
S250 단계에서, 중앙 처리 장치(1330)는 읽기 어드레스가 중복 관리 테이블(1341)에 존재하는 것으로 판단되면, 읽기 요청된 데이터가 참조 데이터와 동일한 데이터인지 판단한다.
S260 단계에서, 읽기 요청된 데이터가 참조 데이터와 동일한 데이터인 경우, 중앙 처리 장치(1330)는 중복 매칭 테이블(1343, 도5 참조)에 저장된 읽기 요청된 데이터에 대응하는 참조 데이터의 어드레스를 확인한다. 참조 데이터의 어드레스에 대응하는 불휘발성 메모리 장치(1400)의 저장 영역으로부터 데이터가 읽어진다.
S270 단계에서, 중앙 처리 장치(1330)는 읽어진 데이터의 압축을 해제하고, 압축이 해제된 데이터를 호스트(1100)로 출력한다.
S280 단계에서, 읽기 요청된 데이터가 참조 데이터와 동일하지 않은 데이터인 경우, 중앙 처리 장치(1330)는 컴프레션 유닛(1352)을 통해 쓰기 요청된 데이터와 참조 데이터가 XOR 연산된 읽기 요청된 데이터를 압축해제 한다.
S290 단계에서, 중앙 처리 장치(1330)는 압축 해제된 데이터가 델타 유닛(1351)을 통해 역 XOR 연산되도록 제어한다. 중앙 처리 장치(1330)는 역 XOR 연산된 두 데이터들, 즉 읽기 요청된 데이터와 참조 데이터를 읽는다. 따라서, 중앙 처리 장치(1330)는 읽기 요청된 데이터를 호스트(1100)로 제공할 수 있다.
도 11은 본 발명의 실시 예에 따른 읽기 동작에 기반한 중복 관리 테이블의 일 예를 보여주는 표이다.
도 1 및 도 11을 참조하면, 호스트(1100)로부터 제 4 및 제 6 데이터에 대한 읽기 요청이 있는 것으로 가정한다.
먼저, 중앙 처리 장치(1320)는 읽기 요청된 제 4 데이터의 어드레스가 중복 매칭 테이블(1343)에 존재하는지 판단한다. 제 4 데이터의 어드레스가 중복 매칭 테이블(1343)에 존재하면, 중앙 처리 장치(1320)는 제 4 데이터가 참조 데이터와 동일한지의 여부를 확인한다.
제 4 데이터가 제 1 어드레스를 갖는 참조 데이터와 동일한 것으로 판별되면, 중앙 처리 장치(1320)는 제 1 어드레스를 참조하여 참조 데이터를 읽고, 읽어진 참조 데이터를 압축 해제한다. 중앙 처리 장치(1320)는 압축 해제된 제 4 데이터를 호스트(1100)로 제공한다.
다른 예로서, 중앙 처리 장치(1320)는 읽기 요청된 제 6 데이터의 어드레스가 중복 매칭 테이블(1343)에 존재하는지 판단한다. 제 6 데이터의 어드레스가 중복 매칭 테이블(1343)에 존재하면, 중앙 처리 장치(1320)는 제 6 데이터가 참조 데이터와 동일한지의 여부를 확인한다.
제 6 데이터는 제 3 어드레스(ADDR3)를 갖는 참조 데이터와 동일하지는 않으나 기준치 이상일 수 있다. 따라서, 중앙 처리 장치(1320)는 제 6 읽기 어드레스에 대응하는 제 6 데이터 및 제 3 어드레스에 대응하는 참조 데이터를 각각 읽고, 읽어진 데이터들을 각각 압축 해제한다. 중앙 처리 장치(1320)는 압축 해제된 참조 데이터와 제 6 데이터를 서로 역 XOR 연산한다. 중앙 처리 장치(1320)는 데이터들 간의 역 XOR 연산된 데이터를 호스트(1100)로 제공한다.
도 12 내지 도 14는 본 발명의 실시 예에 따른 중복 관리 테이블의 사이즈를 줄이는 소거 동작을 보여주는 순서도들이다.
중복 관리 테이블이 불휘발성 메모리 장치에 저장된 모든 데이터에 대한 식별 정보, 즉 참조 데이터들을 관리한다면, 중복 관리 테이블의 크기가 너무 커질 수 있다. 본 발명의 실시 예에 따른 저장 장치는, 중복 관리 테이블이 일정한 크기를 유지하도록 제어한다.
먼저, 도 1 및 도 12를 참조하면, 제 1 경우로서, 중앙 처리 장치(1320)는 가장 적은 참조 수, 즉 카운터 수를 갖는 참조 데이터를 소거할 수 있다.
S310 단계에서, 중앙 처리 장치(1320)는 중복 관리 테이블(1341)의 사이즈(S)를 참조한다.
S320 단계에서, 중앙 처리 장치(1320)는 중복 관리 테이블(1341)의 사이즈(S)가 기준 크기에 도달하는지 판단한다.
S330 단계에서, 중복 관리 테이블(1341)의 사이즈(S)가 기준 크기에 도달할 경우, 중앙 처리 장치(1320)는 해시 관리 테이블(1342, 도 5 참조)에 포함된 참조 데이터들 중 카운터 수(Cnt)가 없는 참조 데이터를 소거한다. 예를 들어, 중앙 처리 장치(1320)는 가장 먼저 입력된 참조 데이터를 소거한다.
한편, 중복 관리 테이블(1341)의 사이즈(S)가 기준 크기 이상을 초과하지 않을 경우에는, 중앙 처리 장치(1320)는 소거 동작을 수행하지 않는다.
도 13을 참조하면, 제 2 경우로서, 중앙 처리 장치(1320)는 참조 데이터들 간의 결합을 통해, 참조 데이터 수를 줄일 수 있다.
S410 단계에서, 중앙 처리 장치(1320)는 중복 관리 테이블(1341)의 사이즈(S)를 참조한다.
S420 단계에서, 중앙 처리 장치(1320)는 중복 관리 테이블(1341)의 사이즈(S)가 기준 크기에 도달하는지 판단한다.
S430 단계에서, 중복 관리 테이블(1341)의 사이즈(S)가 기준 크기에 도달한 경우, 중앙 처리 장치(1320)는 해시 관리 테이블(1342)에 포함된 참조 데이터들을 비교하고, 유사한 데이터 정보를 갖는 갖는 제 1 및 제 2 참조 데이터들을 검출한다.
S440 단계에서, 중앙 처리 장치(1320)는 적은 카운트를 갖는 제 2 참조 데이터가 많은 카운트를 갖는 제 1 참조 데이터를 참조하도록 제어한다. 이후, 제 2 참조 데이터는 중복 관리 테이블(1341)로부터 소거될 수 있다. 마찬가지로, 중복 관리 테이블(1341)의 메모리 크기가 기준 크기에 도달할 경우, 중앙 처리 장치(1320)는 소거 동작을 수행하지 않는다.
도 14를 참조하면, 제 3 경우로서, 중앙 처리 장치(1320)는 해시 관리 테이블(1342)에 포함된 참조 데이터들 중 가장 적은 카운터 수를 갖는 참조 데이터를 소거한다.
S510 단계에서, 중앙 처리 장치(1320)는 중복 관리 테이블(1341)의 사이즈(S)를 참조한다.
S520 단계에서, 중앙 처리 장치(1320)는 중복 관리 테이블(1341)의 사이즈(S)가 기준 크기에 도달하는지 판단한다.
S530 단계에서, 중복 관리 테이블(1341)의 사이즈(S)가 기준 크기에 도달할 경우, 중앙 처리 장치(1320)는 해시 관리 테이블(1342)에 포함된 참조 데이터들 중 참조 카운터 수가 가장 적은 참조 데이터를 선택한다.
S540 단계에서, 중앙 처리 장치(1320)는 선택된 참조 데이터를 참조하는 데이터들을 역 XOR 연산을 통해 복원한다.
S550 단계에서, 중앙 처리 장치(1320)는 복원된 데이터를 압축하여 저장한다.
S560 단계에서, 중앙 처리 장치(1320)는 참조 카운터 수가 가장 적은 참조 데이터를 소거한다.
상술된 소거 동작 방식을 통해, 중앙 처리 장치(1320)는 중복 관리 테이블(1341)에 저장된 참조 데이터들을 소거할 수 있다.
도 15는 도 1의 메모리 시스템 응용 예를 보여주는 블록도이다. 도 15를 참조하면, 메모리 시스템(2000)은 불휘발성 메모리(2100) 및 메모리 컨트롤러(2200)를 포함한다. 불휘발성 메모리(2100)는 복수의 불휘발성 메모리 칩들을 포함한다. 복수의 불휘발성 메모리 칩들은 복수의 그룹들로 분할된다. 복수의 불휘발성 메모리 칩들의 각 그룹은 하나의 공통 채널을 통해 메모리 컨트롤러(2200)와 통신하도록 구성된다. 예시적으로, 복수의 불휘발성 메모리 칩들은 제 1 내지 제 k 채널들(CH1~CHk)을 통해 메모리 컨트롤러(2200)와 통신하는 것으로 도시되어 있다.
도 15에서, 하나의 채널에 복수의 불휘발성 메모리 칩들이 연결되는 것으로 설명되었다. 그러나, 하나의 채널에 하나의 불휘발성 메모리 칩이 연결되도록 메모리 시스템(2000)이 변형될 수 있다.
도 1 내지 도 14를 참조하여 설명된 바와 같이, 메모리 컨트롤러(2200)는 호스트로부터 쓰기 요청된 데이터의 중복 관리를 통해 불휘발성 메모리 장치의 크기를 효율적으로 관리될 수 있도록 제어한다.
도 16은 본 발명의 실시 예에 따른 메모리 카드(3000)를 보여준다. 도 16을 참조하면, 메모리 카드(3000)는 불휘발성 메모리(3100), 메모리 컨트롤러(3200), 그리고 커넥터(3300)를 포함한다.
불휘발성 메모리(3100) 또는 메모리 컨트롤러(3200)는 본 발명의 실시 예들에 따라 리셋을 수행할 수 있다. 커넥터(3300)는 메모리 카드(3000)와 외부 장치(예를 들어, 호스트)를 전기적으로 연결할 수 있다.
메모리 카드(3000)는 PC 카드(PCMCIA, personal computer memory card international association), 컴팩트 플래시 카드(CF), 스마트 미디어 카드(SM, SMC), 메모리 스틱, 멀티미디어 카드(MMC, RS-MMC, MMCmicro), SD 카드(SD, miniSD, microSD, SDHC), 유니버설 플래시 기억장치(UFS) 등과 같은 메모리 카드들을 구성할 수 있다.
도 17은 본 발명의 실시 예에 따른 솔리드 스테이트 드라이브(4000, SSD, Solid State Drive)를 보여준다. 도 17을 참조하면, 솔리드 스테이트 드라이브(4000)는 복수의 불휘발성 메모리들(4100), 메모리 컨트롤러(4200), 그리고 커넥터(4300)를 포함한다.
복수의 불휘발성 메모리들(4100) 각각 또는 메모리 컨트롤러(4200)는 본 발명의 실시 예들에 따라 리셋을 수행할 수 있다. 커넥터(4300)는 솔리드 스테이트 드라이브(4000)와 외부 장치(예를 들어, 호스트)를 전기적으로 연결할 수 있다.
도 18은 본 발명의 실시 예에 따른 컴퓨팅 장치(5000)를 보여주는 블록도이다. 도 18을 참조하면, 컴퓨팅 장치(5000)는 프로세서(5100), 메모리(5200), 스토리지(5300), 모뎀(5400), 그리고 사용자 인터페이스(5500)를 포함한다.
프로세서(5100)는 컴퓨팅 장치(5000)의 제반 동작을 제어하고, 논리 연산을 수행할 수 있다. 예를 들어, 프로세서(5100)는 시스템-온-칩(SoC, System-on-Chip)으로 구성될 수 있다.
메모리(5200)는 프로세서(5100)와 통신할 수 있다. 메모리(5200)는 프로세서(5100) 또는 컴퓨팅 장치(5000)의 동작 메모리(또는 메인 메모리)일 수 있다. 메모리(5200)는 SRAM (Static RAM), DRAM (Dynamic RAM), SDRAM (Synchronous DRAM) 등과 같은 휘발성 메모리, 또는 플래시 메모리, PRAM (Phase-change RAM), MRAM (Magnetic RAM), RRAM (Resistive RAM), FRAM (Ferroelectric RAM) 등과 같은 불휘발성 메모리를 포함할 수 있다.
모뎀(5400)은 프로세서(5100)의 제어에 따라 외부 장치와 통신을 수행할 수 있다. 예를 들어, 모뎀(5400)은 외부 장치와 유선 또는 무선 통신을 수행할 수 있다. 모뎀(5400)은 LTE (Long Term Evolution), 와이맥스(WiMax), GSM (Global System for Mobile communication), CDMA (Code Division Multiple Access), 블루투스(Bluetooth), NFC (Near Field Communication), 와이파이(WiFi), RFID (Radio Frequency IDentification) 등과 같은 다양한 무선 통신 방식들, 또는 USB (Universal Serial Bus), SATA (Serial AT Attachment), SCSI (Small Computer Small Interface), 파이어와이어(Firewire), PCI (Peripheral Component Interconnection) 등과 같은 다양한 유선 통신 방식들 중 적어도 하나에 기반하여 통신을 수행할 수 있다.
사용자 인터페이스(5500)는 프로세서(5100)의 제어에 따라 사용자와 통신할 수 있다. 예를 들어, 사용자 인터페이스(5500)는 키보드, 키패드, 버튼, 터치 패널, 터치 스크린, 터치 패드, 터치 볼, 카메라, 마이크, 자이로스코프 센서, 진동 센서, 등과 같은 사용자 입력 인터페이스들을 포함할 수 있다. 사용자 인터페이스(5500)는 LCD (Liquid Crystal Display), OLED (Organic Light Emitting Diode) 표시 장치, AMOLED (Active Matrix OLED) 표시 장치, LED, 스피커, 모터 등과 같은 사용자 출력 인터페이스들을 포함할 수 있다.
이상에서와 같이 도면과 명세서에서 실시 예가 개시되었다. 여기서 특정한 용어들이 사용되었으나, 이는 단지 본 발명을 설명하기 위한 목적에서 사용된 것이지 의미 한정이나 특허 청구범위에 기재된 본 발명의 범위를 제한하기 위하여 사용된 것은 아니다. 그러므로 본 기술분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시 예가 가능하다는 점을 이해할 것이다. 따라서 본 발명의 진정한 기술적 보호 범위는 첨부된 특허 청구범위의 기술적 사상에 의해 정해져야 할 것이다.
1100: 호스트
1310: 호스트 인터페이스
1320: 중앙 처리 장치
1330: 워크 메모리
1340: 해시 키 생성부
1350: 읽기 데이터 모듈
1410: 메모리 셀 어레이

Claims (10)

  1. 복수의 참조 데이터들을 저장하는 불휘발성 메모리 장치;
    상기 불휘발성 메모리 장치에 저장된 복수의 참조 데이터들 각각의 복수의 참조 해시 키들을 관리하는 해시 관리 테이블을 저장하는 메모리;
    쓰기 요청된 데이터에 기반하여 복수의 해시 키들을 생성하는 해시 키 생성기; 및
    상기 복수의 해시 키들과 상기 복수의 참조 데이터들 각각의 참조 해시 키들을 비교하고, 비교 결과에 응답하여 상기 쓰기 요청된 데이터를 상기 불휘발성 메모리 장치에 저장할 것인지의 여부를 결정하는 메모리 컨트롤러를 포함하되,
    상기 메모리 컨트롤러는 상기 복수의 해시 키들 및 상기 복수의 참조 데이터들 각각의 상기 복수의 참조 해시 키들 간의 유사도에 따라 상기 복수의 참조 데이터들 중 하나의 참조 데이터를 선택하고,
    상기 복수의 해시 키들이 상기 선택된 참조 데이터의 복수의 참조 해시 키들과 기준치 이상의 유사도를 갖는 경우, 상기 메모리 컨트롤러는 상기 쓰기 요청된 데이터 및 상기 선택된 참조 데이터를 XOR 연산하고, 상기 XOR 연산된 데이터를 압축하여 상기 쓰기 요청된 데이터와 상기 선택된 참조 데이터를 상호 참조하여 상기 불휘발성 메모리 장치에 저장하는 저장 장치.
  2. 제 1 항에 있어서,
    상기 메모리 컨트롤러는 상기 쓰기 요청된 데이터를 복수의 서브 페이지들로 분할하고, 상기 해시 키 생성기는 상기 복수의 서브 페이지들에 각각 대응하는 상기 복수의 해시 키들을 생성하는 저장 장치.
  3. 제 1 항에 있어서,
    상기 메모리는 중복 매칭 테이블을 더 저장하고,
    상기 쓰기 요청된 데이터 및 상기 선택된 참조 데이터의 유사도가 기준치 이상으로 판별 시, 상기 쓰기 요청된 데이터의 참조 정보는 상기 중복 매칭 테이블에 등록되는 저장 장치.
  4. 제 1 항에 있어서,
    상기 복수의 해시 키들이 상기 선택된 참조 데이터의 복수의 참조 해시 키들과 중복되는 경우,
    상기 메모리 컨트롤러는 상기 쓰기 요청된 데이터의 어드레스가 상기 선택된 참조 데이터가 저장된 상기 불휘발성 메모리 장치의 어드레스를 참조하도록 매핑하는 저장 장치.
  5. 삭제
  6. 제 1 항에 있어서,
    상기 복수의 해시 키들 및 상기 선택된 참조 데이터의 복수의 참조 해시 키들이 상기 기준치 이상의 유사도를 갖지 않을 시, 상기 복수의 해시 키들이 상기 해시 관리 테이블에 등록되는 저장 장치.
  7. 제 1 항에 있어서,
    상기 해시 관리 테이블의 크기가 기준 크기 이상에 도달할 경우, 상기 메모리 컨트롤러는 상기 해시 관리 테이블에 포함된 각 참조 데이터의 복수의 참조 해시 키들 중 상기 쓰기 요청된 데이터의 복수의 해시 키들의 정보들과 상호 참조되지 않은 참조 데이터의 복수의 참조 해시 키들을 소거하는 저장 장치.
  8. 제 1 항에 있어서,
    상기 해시 관리 테이블의 크기가 기준 크기에 도달할 경우,
    상기 메모리 컨트롤러는 상기 해시 관리 테이블에 포함된 복수의 참조 데이터들 중 적어도 두 개의 참조 데이터들을 서로 결합하는 저장 장치.
  9. 제 1 항에 있어서,
    상기 해시 관리 테이블의 크기가 기준 크기에 도달할 경우,
    상기 메모리 컨트롤러는 상기 선택된 참조 데이터의 복수의 참조 해시 키들이 상기 쓰기 요청된 데이터의 상기 복수의 해시 키들과 가장 적게 상호 참조된 경우, 상기 선택된 참조 데이터 및 상기 선택된 참조 데이터와 상호 참조된 데이터를 역 XOR 연산하는 저장 장치.
  10. 쓰기 요청된 데이터에 대한 복수의 해시 키들을 생성하는 단계;
    상기 생성된 복수의 해시 키들과 해시 관리 테이블에서 관리되는 복수의 참조 데이터들 각각의 상기 복수의 참조 해시 키들을 비교하는 단계;
    상기 쓰기 요청된 데이터의 상기 복수의 해시 키들과 상기 복수의 참조 데이터들 중 하나의 참조 데이터의 복수의 참조 해시 키들이 기준치 이상으로 유사한 경우, 상기 쓰기 요청된 데이터와 상기 참조 데이터를 XOR 연산하는 단계; 및
    상기 XOR 연산된 데이터를 압축하여 저장하는 단계를 포함하는 저장 장치의 동작 방법.
KR1020140008481A 2014-01-23 2014-01-23 저장 장치 및 그것의 동작 방법 KR102218732B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020140008481A KR102218732B1 (ko) 2014-01-23 2014-01-23 저장 장치 및 그것의 동작 방법
US14/489,676 US9477589B2 (en) 2014-01-23 2014-09-18 Storage device that performs a de-duplication operation, and method of operating the same

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020140008481A KR102218732B1 (ko) 2014-01-23 2014-01-23 저장 장치 및 그것의 동작 방법

Publications (2)

Publication Number Publication Date
KR20150088089A KR20150088089A (ko) 2015-07-31
KR102218732B1 true KR102218732B1 (ko) 2021-02-23

Family

ID=53544925

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020140008481A KR102218732B1 (ko) 2014-01-23 2014-01-23 저장 장치 및 그것의 동작 방법

Country Status (2)

Country Link
US (1) US9477589B2 (ko)
KR (1) KR102218732B1 (ko)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9916320B2 (en) * 2015-04-26 2018-03-13 International Business Machines Corporation Compression-based filtering for deduplication
EP3376393B1 (en) * 2015-12-08 2021-02-17 Huawei Technologies Co., Ltd. Data storage method and apparatus
US9983827B1 (en) 2016-11-29 2018-05-29 Red Hat Israel, Ltd. Key-based memory deduplication protection
KR20180087925A (ko) 2017-01-25 2018-08-03 삼성전자주식회사 논리 어드레스와 물리 어드레스 사이에서 해싱 기반 변환을 수행하는 스토리지 장치
US10324634B2 (en) * 2017-04-07 2019-06-18 Micron Technology, Inc. Methods of bit-flagged sketch-based memory management and memory devices utilizing the same
JP2018185760A (ja) * 2017-04-27 2018-11-22 株式会社東芝 データの重複を排除するためのストレージ装置
KR20200082323A (ko) * 2018-12-28 2020-07-08 에스케이하이닉스 주식회사 반도체 메모리 장치의 컨트롤러 및 그 동작 방법
US11223369B2 (en) * 2019-04-02 2022-01-11 International Business Machines Corporation Automatic hash function selection
CN110188081B (zh) * 2019-04-22 2024-03-01 平安科技(深圳)有限公司 基于cassandra数据库的日志数据存储方法、装置和计算机设备
US11321003B2 (en) * 2019-10-30 2022-05-03 EMC IP Holding Company LLC Extending deduplication matches using data comparison
US11061618B1 (en) * 2020-02-25 2021-07-13 EMC IP Holding Company LLC Disk array enclosure configured to determine metadata page location based on metadata identifier

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7937371B2 (en) 2008-03-14 2011-05-03 International Business Machines Corporation Ordering compression and deduplication of data
US20110276744A1 (en) 2010-05-05 2011-11-10 Microsoft Corporation Flash memory cache including for use with persistent key-value store
US8161211B2 (en) 2009-02-25 2012-04-17 Hitachi, Ltd. Storage system and data processing method for the same
US8321384B2 (en) 2010-03-12 2012-11-27 Fujitsu Limited Storage device, and program and method for controlling storage device
US20130036289A1 (en) 2010-09-30 2013-02-07 Nec Corporation Storage system
US20130054894A1 (en) 2011-08-29 2013-02-28 Hitachi, Ltd. Increase in deduplication efficiency for hierarchical storage system
US20130151759A1 (en) * 2011-12-08 2013-06-13 Samsung Electronics Co., Ltd. Storage device and operating method eliminating duplicate data storage
US8935506B1 (en) 2011-03-31 2015-01-13 The Research Foundation For The State University Of New York MemX: virtualization of cluster-wide memory

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5423896B2 (ja) 2010-08-31 2014-02-19 日本電気株式会社 ストレージシステム
JP2012164130A (ja) 2011-02-07 2012-08-30 Hitachi Solutions Ltd データ分割プログラム
JP5725546B2 (ja) 2011-03-23 2015-05-27 日本電気株式会社 ストレージシステム
US20130054906A1 (en) 2011-08-30 2013-02-28 International Business Machines Corporation Managing dereferenced chunks in a deduplication system
KR20140114515A (ko) * 2013-03-15 2014-09-29 삼성전자주식회사 불휘발성 메모리 장치 및 그것의 중복 데이터 제거 방법

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7937371B2 (en) 2008-03-14 2011-05-03 International Business Machines Corporation Ordering compression and deduplication of data
US8161211B2 (en) 2009-02-25 2012-04-17 Hitachi, Ltd. Storage system and data processing method for the same
US8321384B2 (en) 2010-03-12 2012-11-27 Fujitsu Limited Storage device, and program and method for controlling storage device
US20110276744A1 (en) 2010-05-05 2011-11-10 Microsoft Corporation Flash memory cache including for use with persistent key-value store
US20130036289A1 (en) 2010-09-30 2013-02-07 Nec Corporation Storage system
US8935506B1 (en) 2011-03-31 2015-01-13 The Research Foundation For The State University Of New York MemX: virtualization of cluster-wide memory
US20130054894A1 (en) 2011-08-29 2013-02-28 Hitachi, Ltd. Increase in deduplication efficiency for hierarchical storage system
US20130151759A1 (en) * 2011-12-08 2013-06-13 Samsung Electronics Co., Ltd. Storage device and operating method eliminating duplicate data storage

Also Published As

Publication number Publication date
US9477589B2 (en) 2016-10-25
US20150205716A1 (en) 2015-07-23
KR20150088089A (ko) 2015-07-31

Similar Documents

Publication Publication Date Title
KR102218732B1 (ko) 저장 장치 및 그것의 동작 방법
KR102559518B1 (ko) 메모리 제어장치 및 방법
US9760502B2 (en) Encrypted transport solid-state disk controller
US9696911B2 (en) Operation method of nonvolatile memory system and operation method of user system including the same
US20140250257A1 (en) Compression-enabled blending of data in non-volatile memory
CN105103137A (zh) 数据存储系统的数据的压缩和格式化
US9430639B2 (en) Data de-duplication in a non-volatile storage device responsive to commands based on keys transmitted to a host
US9081658B2 (en) Storage device and data management method thereof
US20120173955A1 (en) Data writing and reading method, and memory controller and memory storage apparatus using the same
KR20150055879A (ko) 불휘발성 메모리 시스템 및 그것의 동작 방법
CN105308581A (zh) 数据存储系统的加密数据的迁移
CN110532194B (zh) 存储器系统及其操作方法
CN107037979B (zh) 用于在存储器设备中管理地址映射数据的系统和方法
KR20190052366A (ko) 컨트롤러 및 컨트롤러의 동작방법
KR20210034378A (ko) 메모리 컨트롤러 및 그것의 동작 방법
US11042317B2 (en) Memory system for reducing fragmentation based on sequential index and operating method thereof
US20210200469A1 (en) Memory controller having data compressor and method of operating the same
TW202234234A (zh) 計算系統以及主機裝置
US11281381B2 (en) Storage node of distributed storage system and method of operating the same
US10908843B2 (en) Memory system for managing free pages based on real time clock and operating method thereof
US10908836B2 (en) Memory system and operation method thereof
US20150339060A1 (en) Storage system
KR102623061B1 (ko) 데이터베이스에서 이터레이터 연산을 수행하기 위한 장치
US9501351B2 (en) Memory control unit and data storage device including the same
US11657000B2 (en) Controller and memory system including the same

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant