KR20170009706A - 중복 데이터를 감소시키기 위한 저장 장치 및 그것의 동작 방법 - Google Patents

중복 데이터를 감소시키기 위한 저장 장치 및 그것의 동작 방법 Download PDF

Info

Publication number
KR20170009706A
KR20170009706A KR1020160040316A KR20160040316A KR20170009706A KR 20170009706 A KR20170009706 A KR 20170009706A KR 1020160040316 A KR1020160040316 A KR 1020160040316A KR 20160040316 A KR20160040316 A KR 20160040316A KR 20170009706 A KR20170009706 A KR 20170009706A
Authority
KR
South Korea
Prior art keywords
data pattern
data
storage
stored
storage address
Prior art date
Application number
KR1020160040316A
Other languages
English (en)
Inventor
최창호
데릭 쳉
시야마크 하지지
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Publication of KR20170009706A publication Critical patent/KR20170009706A/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
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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/064Management of blocks
    • G06F3/0641De-duplication techniques
    • 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
    • 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
    • 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/23Updating
    • G06F16/2365Ensuring data consistency and integrity
    • 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/0608Saving storage space on storage systems
    • 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/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0652Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
    • 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
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1041Resource optimization
    • G06F2212/1044Space efficiency improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1056Simplification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/20Employing a main memory using a specific memory technology
    • G06F2212/202Non-volatile memory
    • G06F2212/2022Flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7205Cleaning, compaction, garbage collection, erase control

Abstract

중복 데이터를 감소시키기 위한 저장 장치는, 기계 명령어(machine instruction)들을 저장하기 위한 메모리, 및 메모리와 연결되는 컨트롤러를 포함하되, 컨트롤러는 기계 명령어들을 실행하여, 쓰기 요청과 관련된 데이터 패턴 및 저장 데이터를 비교하고, 저장 데이터와 일치하는 데이터 패턴에 기반하여, 데이터 패턴과 관련된 카운터(counter)를 증가시키고, 데이터 패턴에 대응하는 소스 스토리지 주소(source storage address)를 저장 장치와 관련된 물리 스토리지 주소(physical storage address)에 매핑(mapping)하도록 구성된다.

Description

중복 데이터를 감소시키기 위한 저장 장치 및 그것의 동작 방법{STORAGE DEVICE FOR REDUCING DUPLICATED DATA AND OPERATION METHOD THEREOF}
본 발명은 데이터 저장 장치에 관한 것으로, 좀 더 구체적으로, 스토리지 시스템(storage system)들의 인-라인(in-line) 중복에 관한 것이다.
저장 장치들은 컴퓨팅 정보 또는 데이터를 저장하는데 사용된다. 예시적으로, 저장 장치들은 하드 디스크 드라이브들(Hard Disk Drives, HDDs), 및 솔리드-스테이트 드라이브들(Solid-State Drives, SSDs)을 포함할 수 있다. 현재 사용되는 컴퓨팅 시스템들은 저장 장치로 데이터를 전송하기 전에 데이터의 양을 감소시키기 위해 중간 호스트 처리를 시행한다. 이러한 호스트 처리의 예들은 데이터 압축 기술들 및 데이터 중복 알고리즘(algorithm)들을 포함한다.
데이터 중복 제거는 일반적으로 사본 또는 중복 정보의 체계적인 삭제를 나타낸다. 컴퓨팅(computing) 분야에서, 호스트 컴퓨팅 시스템은 일반적으로 이전의 저장 데이터와 쓰기 데이터를 비교하여 중복 제거를 수행한다. 쓰기 데이터가 새로운 데이터이거나, 고유한 데이터이면, 쓰기 데이터는 저장 장치로 전송된다. 반면, 쓰기 데이터가 중복된 데이터이면, 이전에 저장된 중복 데이터의 참조가 대신 생성된다.
하지만, 호스트 중복 제거 처리는 호스트 프로세서 또는 메모리 자원들에 대하여 주의를 기울여야 할 수 있다. 결과적으로, 몇몇 현재의 중복 제거 방법론들은, 호스트 컴퓨팅 시스템들에서 사용될 때, 문제점들을 가질 수 있다. 이는, 호스트 컴퓨팅 성능이 상대적으로 중요하기 때문이다.
본 발명의 목적은 중복 저장된 데이터를 감소시키기 위한 저장 장치 및 그것의 동작 방법에 관한 것이다.
본 발명의 실시 예에 따른 중복 데이터를 감소시키기 위한 저장 장치는, 기계 명령어(machine instruction)들을 저장하기 위한 메모리, 및 메모리와 연결되는 컨트롤러를 포함하되, 컨트롤러는 기계 명령어들을 실행하여, 쓰기 요청과 관련된 데이터 패턴 및 저장 데이터를 비교하고, 저장 데이터와 일치하는 데이터 패턴에 기반하여, 데이터 패턴과 관련된 카운터(counter)를 증가시키고, 데이터 패턴에 대응하는 소스 스토리지 주소(source storage address)를 저장 장치와 관련된 물리 스토리지 주소(physical storage address)에 매핑(mapping)하도록 구성된다.
몇몇 실시 예로서, 불휘발성 저장 매체(nonvolatile storage medium)를 더 포함하고, 저장 데이터는 불휘발성 저장 매체의 물리 스토리지 주소에 저장되고, 데이터 패턴은 불휘발성 저장 매체와 관련된 페이지 크기에 대응한다.
몇몇 실시 예로서, 불휘발성 저장 매체는 낸드 플래시 메모리(NAND flash memory)를 포함하고, 컨트롤러는 기계 명령어들을 실행하여, 데이터 패턴 및 저장 데이터의 페이지를 비교하도록 구성된다.
실시 예로서, 컨트롤러는 기계 명령어들을 실행하여, 저장 데이터와 일치하지 않는 데이터 패턴에 기초하여, 낸드 플래시 메모리의 페이지의 데이터 패턴을 불휘발성 저장 매체의 물리 스토리지 주소에 저장하고, 물리 스토리지 주소에 대한 기준 및 기준 카운터를 포함하는 데이터 패턴 데이터베이스에 엔트리(entry)를 생성한다.
몇몇 실시 예로서, 불휘발성 저장 매체를 더 포함하고, 저장 데이터는 불휘발성 저장 매체의 물리 스토리지 주소에 저장되고, 데이터 패턴은 불휘발성 저장 매체와 관련된 블록(block) 크기에 대응한다.
몇몇 실시 예로서, 불휘발성 저장 매체는 낸드 플래시 메모리를 포함하고, 컨트롤러는 기계 명령어들을 실행하여, 데이터 패턴과 저장 데이터의 블록을 비교하도록 구성된다.
몇몇 실시 예로서, 컨트롤러는 기계 명령어들을 실행하여, 저장 데이터와 일치하지 않는 데이터 패턴에 기초하여, 낸드 플래시 메모리의 블록의 데이터 패턴을 불휘발성 저장 매체의 물리 스토리지 주소에 저장하고, 물리 스토리지 주소에 대한 기준 및 기준 카운터를 포함하는 데이터 패턴 데이터베이스에 엔트리(entry)를 생성한다.
몇몇 실시 예로서, 컨트롤러는 기계 명령어들을 실행하여, 소스 스토리지 주소가 물리 스토리지 주소로 매핑되도록, 저장 장치의 플래시 변환 계층(flash translation layer)과 관련된 매핑 테이블(mapping table)을 갱신하도록 구성된다.
본 발명의 실시 예에 따른 스토리지(storage)의 중복 데이터(duplicated data)를 감소시키기 위한 방법은 데이터 패턴(data pattern)을 포함하는 데이터의 세그먼트(segment)를 구분(delimit)하는 단계, 데이터 패턴이 스토리지에 포함되는지 여부를 판단하는 단계, 스토리지에 포함되는 데이터 패턴에 기초하여 데이터 패턴과 관련된 카운터(counter)를 증가시키는 단계, 및 세그먼트에 대응하는 소스 스토리지 주소(source storage address)가 데이터 패턴을 포함하는 스토리지의 스토리지 유닛(storage unit)에 대응하는 물리 스토리지 주소(physical storage address)와 관련되도록, 스토리지의 플래시 변환 계층(flash translation layer)과 관련된 매핑 테이블(mapping table)을 갱신하는 단계를 포함한다.
몇몇 실시 예로서, 스토리지는 플래시 메모리(flash memory)를 포함하고, 세그먼트는 플래시 메모리의 페이지에 대응한다.
몇몇 실시 예로서, 스토리지에 포함되지 않는 데이터 패턴에 기초하여, 플래시 메모리의 페이지의 세그먼트를 물리 스토리지 주소에 저장하는 단계 및 물리 스토리지 주소에 대한 기준 및 데이터 패턴에 대응하는 기준 카운터를 포함하는 데이터 패턴 데이터베이스에 엔트리(entry)를 생성하는 단계를 더 포함한다.
몇몇 실시 예로서, 스토리지는 플래시 메모리를 포함하고, 세그먼트는 플래시 메모리의 블록에 대응한다.
몇몇 실시 예로서, 스토리지에 포함되지 않은 데이터 패턴에 기초하여 플래시 메모리의 블록의 세그먼트를 물리 스토리지 주소에 저장하는 단계, 및 물리 스토리지 주소에 대한 기준 및 데이터 패턴에 대응하는 기준 카운터를 포함하는 데이터 패턴 데이터베이스에 엔트리를 생성하는 단계를 더 포함한다.
몇몇 실시 예로서, 소스 스토리지 주소는 논리 블록 주소(logical block address)에 대응한다.
본 발명의 실시 예에 따른 스토리지(storage)의 중복 데이터(duplicated data)를 감소시키기 위한 프로그램은 프로그램은 프로세서(processor)에 의해 실행되도록 구성되는 명령어들로 인코딩되어, 비일시적으로 컴퓨터로 읽히는 저장 매체(non-transitory computer-readable storage medium)에 저장되고, 명령어들은, 프로세서에 의해 실행되었을 때, 데이터 패턴(data pattern)을 포함하는 데이터의 세그먼트(segment)를 구분하는 단계, 데이터 패턴이 스토리지에 포함되는지 여부를 판단하는 단계, 스토리지에 포함되는 데이터 패턴에 기초하여 데이터 패턴과 관련된 카운터를 증가시키는 단계, 및 세그먼트에 대응하는 소스 스토리지 주소(source storage address)가 데이터 패턴을 포함하는 스토리지의 스토리지 유닛(storage unit)에 대응하는 물리 스토리지 주소(physical storage address)와 관련되도록, 스토리지의 플래시 변환 계층(flash translation layer)과 관련된 매핑 테이블(mapping table)을 갱신하는 단계를 수행하도록 구성된다.
몇몇 실시 예로서, 스토리지는 플래시 메모리(flash memory)를 포함하고, 세그먼트는 플래시 메모리의 페이지에 대응한다.
몇몇 실시 예로서, 명령어들은, 프로세서에 의해 실행되었을 때, 스토리지에 포함되지 않는 데이터 패턴에 기초하여, 플래시 메모리의 페이지의 세그먼트를 물리 스토리지 주소에 저장하는 단계, 및 물리 스토리지 주소의 기준 및 데이터 패턴에 대응하는 기준 카운터를 포함하는 데이터 패턴 데이터베이스의 엔트리를 생성하는 단계를 더 수행하도록 구성된다.
몇몇 실시 예로서, 스토리지는 플래시 메모리를 포함하고, 세그먼트는 플래시 메모리의 블록(block)에 대응한다.
몇몇 실시 예로서, 명령어들은, 프로세서에 의해 실행되었을 때, 스토리지에 포함되지 않는 데이터 패턴에 기초하여, 플래시 메모리의 블록의 세그먼트를 물리 스토리지 주소에 저장하는 단계, 및 물리 스토리지 주소의 기준 및 데이터 패턴에 대응하는 기준 카운터를 포함하는 데이터 패턴 데이터베이스에 엔트리를 생성하는 단계를 더 수행하도록 구성된다.
몇몇 실시 예로서, 소스 스토리지 주소는 로컬 블록 주소(local block address)에 대응한다.
본 발명의 실시 예에 따르면, 저장 장치의 속도가 향상되고, 효율이 증가될 수 있다.
도 1은 본 발명의 실시 예에 따른 중복 제거 장치를 보여주는 블록도이다.
도 2는 본 발명의 실시 예에 따른 솔리드-스테이트 저장 장치를 보여주는 블록도이다.
도 3은 본 발명의 실시 예에 따른 중복 저장 데이터를 감소시키기 위한 인-스토리지(in-storage) 중복 제거 방법을 보여주는 순서도이다.
도 4는 본 발명의 다른 실시 예에 따른 중복 저장 데이터를 감소시키기 위한 인-스토리지 중복 제거 방법을 보여주는 순서도이다.
도 5는 본 발명의 실시 예에 따른 바이너리 해시 트리(binary hash tree) 구조로 구현되는 예시적인 데이터 패턴 데이터베이스(data pattern database)를 보여주는 블록도이다.
도 6은 본 발명의 다른 실시 예에 따른 중복 저장 데이터를 감소시키기 위한 인-스토리지 중복 제거 방법을 보여주는 순서도이다.
이하, 도면들을 참조하여 본 발명의 실시 예들을 보다 상세하게 설명하기로 한다. 본 발명은 다양한 변경을 가할 수 있고 여러 가지 형태를 가질 수 있는 바, 특정 실시 예들을 도면에 예시하고 본문에 상세하게 설명하고자 한다. 그러나, 이는 본 발명을 특정한 개시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다.
각 도면을 설명하면서 유사한 참조부호를 유사한 구성요소에 대해 사용하였다. 첨부된 도면에 있어서, 구성 요소들의 크기는 본 발명의 명확성을 기하기 위하여 실제보다 확대하여 도시한 것이다.
제1, 제2 등의 용어는 다양한 구성요소들을 설명하는데 사용될 수 있지만, 구성요소들은 용어들에 의해 한정되어서는 안 된다. 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 사용된다. 예를 들어, 본 발명의 권리 범위를 벗어나지 않으면서 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소도 제1 구성요소로 명명될 수 있다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다.
본 출원에서, "포함하다" 또는 "가지다" 등의 용어는 명세서 상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다. 또한, 층, 막, 영역, 판 등의 부분이 다른 부분 “위에” 있다고 할 경우, 이는 다른 부분 “바로 위에” 있는 경우뿐만 아니라 그 중간에 또 다른 부분이 있는 경우도 포함한다. 반대로 층, 막, 영역, 판 등의 부분이 다른 부분 “아래에” 있다고 할 경우, 이는 다른 부분 “바로 아래에” 있는 경우뿐만 아니라 그 중간에 또 다른 부분이 있는 경우도 포함한다.
도 1은 본 발명의 실시 예에 따른 중복 제거 장치(10)를 보여주는 블록도이다. 도 1을 참조하면, 중복 제거 장치(10)는 복제 데이터 또는 중복 저장 데이터를 감소시키기 위해 인-스토리지 중복 제거 처리를 채용할 수 있다. 중복 제거 장치(10)는 데이터 분할기(segmenter)(12), 소스 스토리지 주소 비교기(source storage address comparator)(14), 데이터 패턴 로케이터(data pattern locator)(16), 데이터 패턴 데이터베이스(data pattern database)(18), 데이터 패턴 비교기(data pattern comparator)(20), 세그먼트 세이버(segment saver)(22), 및 매핑 테이블(mapping table)(24)을 포함한다.
인-스토리지 중복 제거를 수행하기 위해서, 중복 제거 장치(10)는 예시적으로, 불휘발성 메모리(Non-Volatile Memory, NWM)으로 수행되는 쓰기 횟수를 효율적으로 감소시킬 수 있다. 결과적으로, 장치 사용자들은 빠른 쓰기 성능을 경험할 수 있다. 뿐만 아니라, 쓰기 동작들의 감소된 횟수 덕분에 불휘발성 저장 매체의 수명은 증가한다. 현존하는 중복 제거 해결책들과 비교할 때, 대응하는 호스트 시스템 프로세서의 성능은 향상될 수 있다. 왜냐하면, 중복 제거 동작들의 대부분이 중복 제거 장치(10)에서 수행되기 때문이다.
데이터 분할기(12)는 중복 제거를 위해, 데이터 스트림(data stream)을 각각의 세그먼트들로 나눈다. 예를 들어, 쓰기 요청 또는 커맨드(command)에 대응하는 데이터는 동일하고 균일한 크기의 세그먼트들로 분할될 수 있다. 예를 들어, 세그먼트들은 물리적 스토리지 페이지(page) 크기, 물리적 스토리지 블록(block) 크기와 같은 기준 스토리지 유닛(storage unit)에 대응할 수 있다. 예를 들어, 세그먼트 크기는 8KB, 16KB, 32KB, 또는 다른 적절한 NAND 플래시 메모리(NAND flash memory) 페이지 크기와 동일할 수 있다.
몇몇 예로서, 세그먼트 사이즈는 논리 블록 어드레싱(logical block addressing, LBA)와 관련된 논리 블록 크기에 대응할 수 있다. 예를 들어, 논리 블록 사이즈는 미국 규격 협회(American National Standard Institute, ANSI)에 의해 알려진 소형 컴퓨터 시스템 인터페이스(Small Computer System Interface, SCSI) 기준에 의해 정의된다. 일 예로서, 논리 블록 어드레싱은 28-비트 값을 사용하는 선형 어드레싱 스킴(linear addressing scheme)을 실행한다. 선형 어드레싱 스킴은 솔리드-스테이트 드라이브(Solid-State Drive, SSD) 또는 복수의 하드 디스크 드라이브(Hard Disk Drive, HDD)의 실린더-헤드-섹터(cylinder-head-sector)와 관련된다. 이러한 접근은 가비지 콜렉션(garbage collection) 또는 웨어-레벨링(wear-leveling) 과정들 동안 분리되는 데이터를 방지하는 것을 돕는다. 이러한 예로서, 중복 데이터 패턴들의 개수는 구현의 복잡성을 감소시키기 위해 제한될 수 있다.
각각의 세그먼트는 분할기(12)에 의해 결정될 수 있다. 분할기(12)는 현재 불휘발성 메모리에 저장 데이터에 대하여 고유하거나 새로운 개별적인 데이터 패턴을 가진다. 또는 개별적인 데이터 패턴은 중복될 수 있다. 다시 말해서, 데이터 패턴은 중복되거나 저장 데이터와 매치(match)될 수 있다. 소스 스토리지 주소 비교기(14)는 개별적인 세그먼트와 대응하는 소스 스토리지 어드레스를 비교한다. 예를 들어, 논리 블록 어드레스(LBA)는 현재 스토리지에 이전에 쓰여진 세그먼트들의 소스 스토리지 주소들과 함께 호스트 시스템에 의해 할당된다.
세그먼트에 대응하는 소스 스토리지 주소는 저장 데이터의 소스 스토리지 주소와 일치하면, 리소스 스토리지 주소 비교기(14)는 대응하는 쓰기 커맨드가 스토리지에 이전에 쓰여진 세그먼트에 겹쳐 쓰도록 결정한다. 이러한 경우, 소스 스토리지 주소 비교기(14)는 이전에 저장된 세그먼트에 대응하는 데이터 패턴 데이터베이스(18)의 기준 카운터(counter)를 감소시킨다. 데이터 패턴과 관련된 모든 소스 스토리지 주소들은 겹쳐 쓰여지거나 삭제되면, 소스 스토리지 주소 비교기(14)는 대응하는 식별자, 물리 스토리지 주소, 데이터 패턴 데이터베이스(17)의 기준 카운터를 제거한다.
어떤 경우에는, 데이터 패턴 로케이터(16)는 개별적인 세그먼트가 현재 불휘발성 메모리에 저장되었는지를 판단할 수 있다. 예를 들어, 데이터 패턴 로케이터(16)는 개별적인 세그먼트의 데이터 패턴에 기초하여 데이터 패턴 식별자를 계산한다. 개별적인 세그먼트의 데이터 패턴은 인덱스(index), 해시(hash) 값, 또는 오류 정정 부호(error-correcting code, ECC)일 수 있다. 예를 들어, 데이터 패턴 식별자는 데이터 패턴 데이터베이스(18), 정렬된 인덱스 또는 이진 검색 트리(binary search tree)로 액세스하기 위해 사용될 수 있다. 데이터 패턴 로케이터(16)는 개별적인 세그먼트에 대응하는 식별자가 데이터 패턴 데이터베이스(18)에서 검색되었는지 결정한다.
데이터 패턴 데이터베이스(18)는 현재 저장 데이터 패턴들의 기준들을 포함한다. 각각의 식별자는 고유의 저장 데이터 패턴에 대응할 수 있다. 그럼에도 불구하고, 몇몇 예로서, 식별자는 중복 저장 데이터 패턴들에 대응할 수 있다. 이러한 경우, 데이터 패턴 데이터베이스(18)는 동일한 식별자를 가진 다른 저장 데이터 패턴들과 관련시키는 링크 리스트(linked list)를 구현한다.
검색된 개별적인 세그먼트의 데이터 패턴에 대응하는 특정 식별자가 데이터 패턴 데이터베이스(18)에 있으면, 데이터 패턴 비교기(20)는 특정 식별자에 대응하는 불휘발성 메모리에 저장된 각각의 데이터 패턴을 읽는다. 그리고, 데이터 패턴 비교기(20)는 각각의 읽은 데이터 패턴과 검색된 개별적인 세그먼트의 데이터 패턴을 비교한다. 저장 데이터 패턴들 중 하나가 검색된 패턴과 일치하면, 세그먼트는 중복되는 것으로 판단된다.
다른 한편으로는, 특정 식별자와 관련된 저장 데이터 패턴들이 검색된 세그먼트와 일치하지 않으면, 데이터 패턴은 불휘발성 메모리에 저장된 데이터에 대하여 새로운 것으로 판단된다. 예를 들어, 세그먼트 세이버(22)는 불휘발성 메모리의 물리 스토리지 페이지 또는 블록과 같은 새롭게 할당된 저장 유닛(unit)에 세그먼트를 추가한다. 세그먼트 세이버(22)는 포인터(pointer)와 같은 기준을 스토리지 유닛에 대응하는 물리 스토리지 주소에 추가한다. 그리고 세그먼트는 링크 리스트 또는 데이터 패턴 데이터베이스(18)의 특정 식별자에 대응하는 충돌 리스트에 저장된다.
그러나, 검색된 개별 세그먼트의 데이터 패턴에 대응하는 특정 식별자가 데이터 패턴 데이터베이스(18)에서 발견되지 않으면, 세그먼트 세이버(22)는 불휘발성 메모리의 새롭게 할당된 스토리지 유닛에 세그먼트를 저장한다. 세그먼트 세이버(22)는 데이터 패턴 데이터베이스(18)에 새로운 엔트리(entry)로서 식별자를 추가한다. 세그먼트 세이버(22)는 스토리지 유닛에 대응하는 물리 스토리지 어드레스에 포인터와 같은 기준을 추가한다. 세그먼트는 데이터 패턴 데이터베이스(18)에 새로운 엔트리로서 저장된다.
매핑 테이블(24)은 호스트 시스템에 의해 할당된 논리 블록 주소들(LBAs)과 같은 소스 스토리지 주소들과 대응하는 기록 또는 데이터 패턴 데이터베이스(18)의 노드들을 연관시킬 수 있다. 불휘발성 메모리에 세그먼트가 저장될 때마다 또는 기준 카운터가 데이터 패턴 데이터베이스(18)에서 증가될 때마다, 세그먼트 세이버(22)는 매핑 테이블(24)을 갱신한다. 매핑 테이블(24)는 데이터 패턴 데이터베이스(18)의 기록 또는 노드와 호스트 시스템으로부터 수신된 쓰기 커맨드와 대응하는 리소스 스토리지 주소와 관련 있는 포인터를 포함한다. 데이터 패턴 데이터 베이스(18)의 기록 또는 노드는 세그먼트가 불휘발성 메모리의 어느 위치에 저장되었는지에 대한 물리 스토리지 주소를 나타낸다. 일 예로서, 매핑 테이블(24)은 플래시 변환 계층(Flash Translation layer, FTL)과 관련된다. 그리고, 매핑 테이블(24)은 불휘발성 메모리에 저장된 해당 데이터의 위치에 대한 물리 스토리지 주소들과 소스 스토리지 주소들을 연관시킨다.
도 2는 본 발명의 실시 예에 따른 솔리드-스테이트 저장 장치(200)를 보여주는 블록도이다. 솔리드-스테이트 저장 장치(200)는 도 1에 도시된 중복 제거 장치(10)를 실행시킬 수 있다. 솔리드-스테이트 저장 장치(200)는 시스템 인터페이스(system interface)(202), 컨트롤러(controller)(204), 메모리(206), 및 불휘발성 저장 매체(208)를 포함한다. 솔리드-스테이트 저장 장치(200)의 다양한 구성 요소들은 로컬 데이터 링크들(local data link)들(210)에 의해 연결된다. 로컬 데이터 링크들(210)은 어드레스 버스(address bus), 데이터 버스(data bus), 병렬 버스 도는 이들의 조합으로 구성될 수 있다.
중복 삭제 장치(10)는 시스템 인터페이스(202)를 통하여 호스트 시스템 또는 통신 네트워크와 연결될 수 있다. 시스템 인터페이스(202)는 스토리지 버스 인터페이스(storage bus interface), 네트워크 인터페이스(network interface), 무선 통신 인터페이스, 광 인터페이스 또는 다른 관련된 통신 프로토콜(protocol)들로 구현될 수 있다.
메모리(206)는 일시적 또는 영구적으로 컴퓨터 명령 및 데이터를 유지하기에 적합한 임의의 디지털 메모리를 포함한다. 메모리(206)는 랜덤 액세스 메모리(random access memory, RAM) 또는 읽기 전용 메모리(read only memory, ROM)이다. 컨트롤러(204)는 컴퓨터 명령어를 실행할 수 있는 처리 장치를 포함한다. 불휘발성 저장 매체(208)과 같은 컴퓨터 판독 매체의 소프트웨어(software) 또는 펌웨어(firmware)로서 저장된 소스 코드, 목적 코드와 같은 프로그래밍 코드는 메모리(206)에서 로드될 수 있다. 그리고, 프로그래밍 코드는 중복 제거 장치(10)의 기능들을 수행하기 위해 컨트롤러(204)에 의해 실행된다.
불휘발성 저장 매체(208)는 디지털 컴퓨터 데이터(digital computer data)를 저장하기 위한 불휘발성 디지털 메모리 셀들을 포함한다. 예를 들어, 다양한 실시 예들로서, 솔리드-스테이트 저장 장치(200)는 솔리드-스테이트 드라이브(SSD), 및 불휘발성 저장 매체(208)를 포함한다. 불휘발성 저장 매체(208)는 싱글 레벨 셀(single-level cell, SLC) 낸드 플래시 메모리 셀들, 멀티 레벨 셀(multi-level cell, MLC) 낸드 플래시 메모리 셀들, 트리플-레벨 셀(triple level cell, TLC) 낸드플래시 메모리 셀들, 또는 다른 적절한 낸드 플래시 메모리 셀들을 포함한다.
컨트롤러(204)는 플래시 변환 계층(FTL)(212)을 더 포함한다. 플래시 변환 계층(FTL)은 호스트 시스템 어드레싱 스킴(host system addressing scheme) 및 솔리드-스테이트 장치 어드레싱 사이의 인터페이스로써 동작한다. 예를 들어, 호스트 시스템의 논리 블록 어드레스들(LBAs)은 불휘발성 저장 매체(208)의 논리 블록 어드레스들(PBAs)로 매핑된다. 예로서, 플래시 변환 계층(FTL)은 메모리(206)에 기계 명령어들로서 저장될 수 있다. 또는 플래시 변환 계층(FTL)은 각각의 메모리(206) 및 불휘발성 저장 매체(208)에 부분적으로 저장될 수 있다. 또는 플래시 변환 계층(FTL)은 컨트롤러(204)에 의해 실행될 수 있다.
몇몇 실시 예들로서, 중복 삭제 단위는 솔리드-스테이트 저장 장치(200)에 의해 사용되는 플래시 변환 계층(FTL) 알고리즘에 따라 결정될 수 있다. 예를 들어, 페이지-레벨 중복 삭제는 플래시 변환 계층(FTL) 활용 블록-레벨 매핑과 함께 유리하게 실행될 수 있다. 유사하게, 블록-레벨 중복 삭제는 플래시 변환 계층(FTL) 활용 블록-레벨 매핑과 함께 유리하게 실행될 수 있다.
도 3은 본 발명의 실시 예에 따른 중복 저장 데이터를 감소시키기 위한 인-스토리지(in-storage) 중복 제거 방법을 보여주는 순서도이다. 도 1의 도시된 중복 제거 장치(10)에 의해 복제 또는 중복 저장 데이터를 감소시키기 위해 인-스토리지 중복 제거 방법이 수행된다. 단계 40에서, 쓰기 요청을 수신한다. 여기서, 쓰기 요청 또는 커맨드는 호스트 시스템으로부터 대응하는 쓰기 데이터와 함께 수신된다. (단계 42에서, 판정은 스토리지에 현재 저장된 논리 블록 어드레스(LBA)와 같은 이전에 쓰여진 소스 스토리지 주소) 단계 44에서, 저장된 데이터 패턴에 대응하는 기준 카운트(들)은 데이터 패턴 데이터베이스에 감소된다
단계 46에서, 쓰기 요청에 대응하는 쓰기 데이터는, 중복 삭제를 위해서, 분할되거나 또는 세그먼트들로 나누어질 수 있다. 예를 들어, 일 예로서, 쓰기 데이터는 스토리지 페이지 사이즈와 동일한 사이즈의 세그먼트들로 나누어진다. 일 예로서, 분할은 도 1에 도시된 데이터 분할기(12)에 의해 수행된다. 그러나, 수신된 쓰기 데이터의 양이 중복 제거 단위에 대응하면, 분할은 요구되지 않는다.
단계 48에서, 쓰기 데이터 패턴이 현재 스토리지에 저장되었는지에 대해 판단된다. 일 예로서, 판단은 도 1에 도시된 데이터 패턴 로케이터(16)에 의해 수행된다. 이 경우, 쓰기 데이터는 중복되고, 복제되어 저장될 필요가 없다. 이와 같이, 쓰기 데이터 패턴이 스토리지에서 발견되면, 단계 50에서, 저장 데이터 패턴과 관련된 기준 카운트는 데이터 패턴 데이터베이스에서 실행된다. 반면에, 쓰기 데이터 패턴이 스토리지에서 발견되지 않으면, 단계 52에서, 쓰기 데이터는 스토리지에 저장된다. 이러한 경우, 단계 54에서, 쓰기 데이터 패턴은 데이터 패턴 데이터베이스로 추가된다. 그리고 대응하는 기준 카운트는 1로 설정된다.
단계 56에서, 스토리지 매핑 테이블은 대응하는 데이터 패턴에 관한 데이터 패턴 데이터베이스 기록 또는 노드의 소스 스토리지 어드레스와 관련하여 갱신된다. 예를 들어, 플래시 변환 계층(FTL) 매핑 테이블은 데이터 패턴 데이터베이스에 대응하는 노드를 가리키도록 수정될 수 있다.
도 4는 본 발명의 다른 실시 예에 따른 중복 저장 데이터를 감소시키기 위한 인-스토리지 중복 제거 방법을 보여주는 순서도이다. 도 1에 도시된 중복 제거 장치(10)에 의해 중복 저장 데이터를 감소시키기 위한 인-스토리지 중복 제거 방법은 수행된다. 단계 60에서, 낸드 플래시 솔리드-스테이트 드라이브의 기준 물리 페이지 또는 블록으로써 스토리지 유닛과 동일한 사이즈의 쓰기 데이터의 조각은 쓰기 버퍼(buffer)에 수신된다.
단계 62에서, 해시 값과 같은 쓰기 데이터의 데이터 패턴에 대응하는 식별자는 계산된다. 단계 64에서, 계산된 식별자가 정리된 바이너리 해시 트리(binary hash tree)와 같은 데이터 패턴 데이터베이스에서 발견되는지 판단할 수 있다. 일 예로서, 식별자는 도 1에 도시된 데이터 패턴 로케이터(16)에 의해 계산되고, 결정된다. 식별자가 데이터 패턴 데이터베이스에서 발견되면, 단계 66에서, 식별자와 관련된 링크 리스트의 노드에 대응하는 데이터 패턴은 노드에 의해 가리켜지는 물리 스토리지 주소에 위치하는 관련된 스토리지 유닛으로부터 독출된다. 예를 들어, 일 예로서, 링크 리스트의 각 노드는 낸드 플래시 솔리드-스테이트 드라이브의 물리 페이지 주소를 가리킨다. 그리고 데이터는 노드에 의해 가리켜지는 특정 페이지로부터 독출된다.
단계 68에서, 단계 60으로부터 수신된 쓰기 데이터가 단계 66에서 독출된 데이터와 일치하는지 판단된다. 일 예로서, 판단은 도 1에 도시된 데이터 패턴 비교기(20)에 의해 수행된다. 두 데이터 패턴들이 동일하면, 단계 70에서, 노드에 대응하는 기준 카운트는 증가한다. 반면에, 두 개의 데이터가 동일하지 않으면, 단계 72에서, 식별자와 관련된 링크 리스트에 추가적인 노드들이 있는지 판단된다. 링크 리스트에 추가적인 노드들이 있으면, 단계 74에서, 프로세스(process)는 다음 노드로 이동한다. 그리고 단계 66이 다시 수행된다.
식별자와 연관된 링크 리스트의 마지막이 단계 72에 도달하고, 일치가 발견되지 않으면, 단계 76에서, 쓰기 데이터의 세그먼트는 스토리지에 쓰여진다. 예를 들어, 일 예로서, 쓰기 데이터의 세그먼트는 낸드 플래시 솔리드-스테이트 드라이브의 페이지와 같은 새롭게 할당된 스토리지 유닛에 저장된다. 블록 78에서, 새로운 노드는 링크 리스트 또는 충돌 리스트에 추가된다. 링크 리스트 또는 충돌 리스트는 쓰기 데이터가 저장된 물리 스토리지 주소에 포함된다.
반면에, 단계 64에서, 식별자가 데이터 패턴 데이터베이스에서 발견되지 않으면, 단계 80에서, 계산된 식별자에 포함되는 새로운 엔트리는 데이터 패턴 데이터베이스에 추가된다. 단계 82에서, 쓰기 데이터의 세그먼트는 스토리지에 쓰여진다.
단계 84에서, 스토리지 매핑 테이블은 데이터 패턴 데이터베이스의 대응하는 노드를 가리키도록 갱신된다. 스토리지 매핑 테이블은 물리 스토리지 주소들과 소스 스토리지 어드레스들을 연관시킨다. 예를 들어, 일 예로서, 논리 블록 주소(LBA)-물리 페이지 번호(physical page number, PPN) 매핑 테이블은 데이터 패턴 데이터베이스 대응 노드를 가리키도록 수정될 수 있다.
도 5는 본 발명의 실시 예에 따른 바이너리 해시 트리 구조로 구현되는 예시적인 데이터 패턴 데이터베이스(data pattern database)를 보여주는 블록도이다. 트리의 각각의 노드는 물리 페이지 번호(PPN), 기준 카운트, 및 포인터(pointer)들을 포함한다. 노드(92)는 식별자(94)(Hash 0x34), 물리 스토리지 주소(96)(Block: 0x7 PPN 0x4), 트리의 이전 노드에 대한 레프트 포인터(LEFT pointer)(100), 트리의 다음 노드에 대한 라이트 포인터(RIGHT pointer)(102), 링크 리스트 또는 충돌 리스트의 다음 노드에 대한 넥스트 포인터(NEXT pointer)(104)를 포함한다.
레프트 포인터(LEFT pointer)(100)는 노드(102)가 저장된 논리 스토리지 주소를 포함한다. 노드(120)는 식별자(122)(Hash 0x12), 스토리지에 위치하는 데이터 패턴에 대응하는 논리 스토리지 주소(Block: 0x1 PPN 0x4)(110), 기준 카운트(124)(Ref Cnt=3), 트리의 이전 노드에 대한 레프트 포인터(LEFT pointer)(114), 트리의 다음 노드에 관한 라이트 포인트(RIGHT pointer)(116), 링크 리스트 또는 충돌 리스트의 다음 노드에 대한 넥스트 포인터(NEXT pointer)(118)를 포함한다.
라이트 포인터(RIGHT pointer)(102)는 노드(120)가 저장된 물리 스토리지 주소를 포함한다. 노드(120)는 식별자(122)(Hash 0x35), 스토리지에 위치하는 데이터 패턴에 대응하는 논리 스토리지 주소(Block: 0x10 PPN 0x6)(124), 기준 카운트(124)(Ref Cnt=10), 트리의 이전 노드에 대한 레프트 포인터(LEFT pointer)(128), 트리의 다음 노드에 관한 라이트 포인터(RIGHT pointer)(130), 링크 리스트 또는 충돌 리스트의 다음 노드에 대한 넥스트 포인터(NEXT pointer)(132)를 포함한다.
넥스트 포인터(NEXT pointer)(104)는 노드(134)가 저장된 물리 스토리지 주소를 포함한다. 노드(134)는 스토리지에 위치하는 데이터 패턴에 대응하는 물리 스토리지 주소(136)(Block: 0x3 PPN 0x8), 링크 리스트 또는 충돌 리스트에 다음을 나타내는 넥스트 포인터(NEXT pointer)(140)를 포함한다.
라이트 포인터(RIGHT pointer)(116)는 노드(142)가 저장된 물리 스토리지 주소를 포함한다. 노드(134)는 식별자(144)(Hash 0x14), 스토리지에 저장된 데이터 패턴에 대응하는 물리 스토리지 주소(146)(블록: 0x3 PPN 0x7), 기준 카운트(148)(Ref Cnt=7), 트리의 이전 노드에 대한 레프트 포인터(LEFT pointer)(150), 트리의 다음 노드에 관한 라이트 포인트(RIGHT pointer)(152), 링크 리스트 또는 충돌 리스트의 다음 노드에 대한 넥스트 포인터(NEXT pointer)(154)를 포함한다.
라이트 포인터(RIGHT pointer)(130)는 노드(156)가 저장된 물리 스토리지 주소를 포함한다. 노드(156)는 식별자(158)(Hash 0x56), 스토리지에 저장된 데이터 패턴에 대응하는 물리 스토리지 주소(160)(Block: 0x5 PPN 0x9), 기준 카운트(148)(Ref Cnt=43), 트리의 이전 노드에 대한 레프트 포인터(LEFT pointer)(164), 트리의 다음 노드에 관한 라이트 포인트(RIGHT pointer)(166), 링크 리스트 또는 충돌 리스트의 다음 노드에 대한 넥스트 포인터(NEXT pointer)(168)를 포함한다.
넥스트 포인터(NEXT pointer)(168)는 노드(170)가 저장된 물리 스토리지 주소를 포함한다. 노드(170)는 스토리지에 위치하는 데이터 패턴에 대응하는 물리 스토리지 주소(136)(블록 0x2 PPN 0x1), 링크 리스트 또는 충돌 리스트에 다음을 나타내는 넥스트 포인터(NEXT pointer)(176)를 포함한다.
도 6은 본 발명의 다른 실시 예에 따른 중복 저장 데이터를 감소시키기 위한 인-스토리지 중복 제거 방법을 보여주는 순서도이다. 도 6을 참조하면, 도 1의 도시된 중복 제거 장치(10)는 도 4에 도시된 바이너리 해시 트리 구조(90)를 참조하여 도시된 인-스토리지 중복 제거 처리를 실행한다. 단계 180에서, 8KB 데이터 버퍼(data buffer)는 중복 제거를 위한 쓰기 데이터를 포함한다.
단계 182에서, 해시 함수는 쓰기 데이터에 기초하여 해기 값(0x56)을 산출한다. 단계 182에서, 동일한 해시 값이 해시 트리의 기존 항목에서 발견되는지 판단한다(도 5에 도시된 노드(156)). 단계 186에서, 대응하는 데이터 패턴을 스토리지(block 0x5, PPN 0x9)로부터 독출된다. 단계 188에서, 독출 데이터 패턴은 버퍼의 쓰기 데이터와 비교된다. 독출 데이터 패턴이 버퍼의 쓰기 데이터와 일치하지 않으면, 프로세스는 해시 값에 대응하는 링크 리스트의 다음 노드로 이동한다(단계 190).
단계 192에서, 링크 리스트의 넥스트 노드(170)에 대응하는 데이터 패턴은 스토리지(block 0x2 PPN 0x1)로부터 독출된다. 단계 194에서, 독출 데이터 패턴은 버퍼의 쓰기 데이터와 비교된다. 독출 데이터 패턴이 버퍼의 쓰기 데이터와 일치하면, 단계 196에서, 대응하는 기준 카운트(174)는 증가된다. 그리고, 매핑 테이블은 쓰기 데이터를 반영하여 노드(170)를 가리키도록 수정된다. 단계 198에서, 쓰기 동작은 완료된다.
이상에서와 같이 도면과 명세서에서 최적 실시 예가 개시되었다. 여기서 특정한 용어들이 사용되었으나, 이는 단지 본 발명을 설명하기 위한 목적에서 사용된 것이지 의미 한정이나 특허청구범위에 기재된 본 발명의 범위를 제한하기 위하여 사용된 것은 아니다. 그러므로 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시 예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 특허청구범위의 기술적 사상에 의해 정해져야 할 것이다.
10: 중복 제거 장치
12: 데이터 분할기
14: 소스 스토리지 주소 비교기
16: 데이터 패턴 로케이터
18: 데이터 패턴 데이터베이스
20: 데이터 패턴 비교기
22: 세그먼트 세이버
24: 매핑 테이블
200: 솔리드-스테이트 스토리지 장치
202: 시스템 인터페이스
204: 컨트롤러
206: 메모리
208: 불휘발성 저장 매체
210: 플래시 변환 계층

Claims (10)

  1. 중복 데이터를 감소시키기 위한 저장 장치에 있어서,
    기계 명령어(machine instruction)들을 저장하기 위한 메모리; 및
    상기 메모리와 연결되는 컨트롤러를 포함하되,
    상기 컨트롤러는 상기 기계 명령어들을 실행하여:
    쓰기 요청과 관련된 데이터 패턴 및 저장 데이터를 비교하고;
    상기 저장 데이터와 일치하는 상기 데이터 패턴에 기반하여, 상기 데이터 패턴과 관련된 카운터(counter)를 증가시키고;
    상기 데이터 패턴에 대응하는 소스 스토리지 주소(source storage address)를 상기 저장 장치와 관련된 물리 스토리지 주소(physical storage address)에 매핑(mapping)하도록 구성되는 저장 장치.
  2. 제 1 항에 있어서,
    불휘발성 저장 매체(nonvolatile storage medium)를 더 포함하고,
    상기 저장 데이터는 상기 불휘발성 저장 매체의 상기 물리 스토리지 주소에 저장되고,
    상기 데이터 패턴은 상기 불휘발성 저장 매체와 관련된 페이지 크기에 대응하는 저장 장치.
  3. 제 2 항에 있어서,
    상기 불휘발성 저장 매체는 낸드 플래시 메모리(NAND flash memory)를 포함하고,
    상기 컨트롤러는 상기 기계 명령어들을 실행하여, 상기 데이터 패턴 및 상기 저장 데이터의 페이지를 비교하도록 구성되는 저장 장치.
  4. 제 3 항에 있어서,
    상기 컨트롤러는 상기 기계 명령어들을 실행하여:
    상기 저장 데이터와 일치하지 않는 상기 데이터 패턴에 기초하여, 상기 낸드 플래시 메모리의 페이지의 상기 데이터 패턴을 상기 불휘발성 저장 매체의 상기 물리 스토리지 주소에 저장하고,
    상기 물리 스토리지 주소에 대한 기준 및 기준 카운터를 포함하는 데이터 패턴 데이터베이스에 엔트리(entry)를 생성하는 저장 장치.
  5. 제 1 항에 있어서,
    불휘발성 저장 매체를 더 포함하고,
    상기 저장 데이터는 상기 불휘발성 저장 매체의 상기 물리 스토리지 주소에 저장되고,
    상기 데이터 패턴은 상기 불휘발성 저장 매체와 관련된 블록(block) 크기에 대응하는 저장 장치.
  6. 제 5 항에 있어서,
    상기 불휘발성 저장 매체는 낸드 플래시 메모리를 포함하고,
    상기 컨트롤러는 상기 기계 명령어들을 실행하여, 상기 데이터 패턴과 상기 저장 데이터의 블록을 비교하도록 구성되는 저장 장치.
  7. 제 6 항에 있어서,
    상기 컨트롤러는 상기 기계 명령어들을 실행하여:
    상기 저장 데이터와 일치하지 않는 상기 데이터 패턴에 기초하여, 상기 낸드 플래시 메모리의 블록의 상기 데이터 패턴을 상기 불휘발성 저장 매체의 상기 물리 스토리지 주소에 저장하고,
    상기 물리 스토리지 주소에 대한 기준 및 기준 카운터를 포함하는 데이터 패턴 데이터베이스에 엔트리(entry)를 생성하는 저장 장치.
  8. 제 1 항에 있어서,
    상기 컨트롤러는 상기 기계 명령어들을 실행하여, 상기 소스 스토리지 주소가 상기 물리 스토리지 주소로 매핑되도록, 상기 저장 장치의 플래시 변환 계층(flash translation layer)과 관련된 매핑 테이블(mapping table)을 갱신하도록 구성되는 저장 장치.
  9. 스토리지(storage)의 중복 데이터(duplicated data)를 감소시키기 위한 방법에 있어서,
    데이터 패턴(data pattern)을 포함하는 데이터의 세그먼트(segment)를 구분(delimit)하는 단계;
    상기 데이터 패턴이 상기 스토리지에 포함되는지 여부를 판단하는 단계;
    상기 스토리지에 포함되는 상기 데이터 패턴에 기초하여 상기 데이터 패턴과 관련된 카운터(counter)를 증가시키는 단계; 및
    상기 세그먼트에 대응하는 소스 스토리지 주소(source storage address)가 상기 데이터 패턴을 포함하는 상기 스토리지의 스토리지 유닛(storage unit)에 대응하는 물리 스토리지 주소(physical storage address)와 관련되도록, 상기 스토리지의 플래시 변환 계층(flash translation layer)과 관련된 매핑 테이블(mapping table)을 갱신하는 단계를 포함하는 방법.
  10. 제 9 항에 있어서,
    상기 스토리지는 플래시 메모리(flash memory)를 포함하고,
    상기 세그먼트는 상기 플래시 메모리의 페이지에 대응하는 방법.


KR1020160040316A 2015-07-17 2016-04-01 중복 데이터를 감소시키기 위한 저장 장치 및 그것의 동작 방법 KR20170009706A (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201562194044P 2015-07-17 2015-07-17
US62/194,044 2015-07-17
US14/959,298 2015-12-04
US14/959,298 US20170017571A1 (en) 2015-07-17 2015-12-04 Method and apparatus fori n-line deduplication in storage devices

Publications (1)

Publication Number Publication Date
KR20170009706A true KR20170009706A (ko) 2017-01-25

Family

ID=57776573

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160040316A KR20170009706A (ko) 2015-07-17 2016-04-01 중복 데이터를 감소시키기 위한 저장 장치 및 그것의 동작 방법

Country Status (2)

Country Link
US (1) US20170017571A1 (ko)
KR (1) KR20170009706A (ko)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9665287B2 (en) * 2015-09-18 2017-05-30 Alibaba Group Holding Limited Data deduplication using a solid state drive controller
JP6587953B2 (ja) * 2016-02-10 2019-10-09 東芝メモリ株式会社 ストレージコントローラ、ストレージ装置、データ処理方法およびプログラム
US10416900B2 (en) * 2016-06-30 2019-09-17 Intel Corporation Technologies for addressing data in a memory
US10425334B2 (en) * 2016-11-23 2019-09-24 FreeWave Technologies, Inc. Wireless traffic optimization for ISM radios
CN108572792B (zh) * 2017-06-13 2021-06-11 北京金山云网络技术有限公司 数据存储方法、装置、电子设备及计算机可读存储介质
JP6988445B2 (ja) * 2017-12-20 2022-01-05 富士通株式会社 ストレージシステム、制御装置及び制御方法
CN110109867B (zh) * 2018-01-18 2023-03-31 伊姆西Ip控股有限责任公司 改进在线模式检测的方法、装置和计算机程序产品
KR102619954B1 (ko) 2018-03-29 2024-01-02 삼성전자주식회사 데이터를 처리하기 위한 방법 및 이를 지원하는 전자 장치
KR102596964B1 (ko) * 2018-07-31 2023-11-03 에스케이하이닉스 주식회사 맵 캐시 버퍼 크기를 가변시킬 수 있는 데이터 저장 장치
US10628072B2 (en) * 2018-08-21 2020-04-21 Samsung Electronics Co., Ltd. Scalable architecture enabling large memory system for in-memory computations
CN109597587A (zh) * 2018-12-10 2019-04-09 浪潮(北京)电子信息产业有限公司 一种数据写入方法、介质及非易失性内存
CN110333966B (zh) * 2019-05-30 2022-12-13 河南文正电子数据处理有限公司 一种固态硬盘设备
US11360953B2 (en) 2019-07-26 2022-06-14 Hitachi Vantara Llc Techniques for database entries de-duplication
JP2021033848A (ja) 2019-08-28 2021-03-01 キオクシア株式会社 メモリシステムおよび制御方法
US11838222B2 (en) * 2019-12-21 2023-12-05 Western Digital Technologies, Inc. In-line data identification on network
TWI811674B (zh) * 2021-05-06 2023-08-11 大陸商北京集創北方科技股份有限公司 快閃記憶體的操作方法、系統單晶片及資訊處理裝置

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8930306B1 (en) * 2009-07-08 2015-01-06 Commvault Systems, Inc. Synchronized data deduplication
US8364652B2 (en) * 2010-09-30 2013-01-29 Commvault Systems, Inc. Content aligned block-based deduplication
US8495334B2 (en) * 2011-02-06 2013-07-23 International Business Machines Corporation Address translation for use in a pattern matching accelerator
US9417754B2 (en) * 2011-08-05 2016-08-16 P4tents1, LLC User interface system, method, and computer program product
KR20130096881A (ko) * 2012-02-23 2013-09-02 삼성전자주식회사 플래시 메모리 장치
US9250819B2 (en) * 2013-03-04 2016-02-02 Dell Products L.P. Learning machine to optimize random access in a storage system
US9323609B2 (en) * 2013-11-15 2016-04-26 Intel Corporation Data storage and variable length error correction information
US9639549B2 (en) * 2014-01-24 2017-05-02 International Business Machines Corporation Hybrid of proximity and identity similarity based deduplication in a data deduplication system

Also Published As

Publication number Publication date
US20170017571A1 (en) 2017-01-19

Similar Documents

Publication Publication Date Title
KR20170009706A (ko) 중복 데이터를 감소시키기 위한 저장 장치 및 그것의 동작 방법
CN113168408B (zh) 利用压缩的键值存储树数据块溢出
US10747666B2 (en) Memory system
CN113039547B (zh) 键值存储存储器系统、方法及相关存储媒体
TWI644211B (zh) Memory system and control method for controlling non-volatile memory
CN106874217B (zh) 存储器系统及控制方法
US9792069B2 (en) Offline deduplication for solid-state storage devices
US10437737B2 (en) Data storage device
KR101813786B1 (ko) Ssd 상의 기록-시-복사를 위한 시스템 및 방법
TW201915742A (zh) 記憶體系統及控制非揮發性記憶體之控制方法
JP6817318B2 (ja) フラッシュメモリデバイスにアクセスするための方法および装置
CN110678836A (zh) 用于键值存储的持久性存储器
JP6147933B2 (ja) コントローラ、フラッシュメモリ装置、データブロック安定性を識別する方法、及びデータをフラッシュメモリ装置に記憶する方法
CN105917303B (zh) 一种控制器、识别数据块稳定性的方法和存储系统
US10120583B2 (en) Performance penalty avoidance for solid state drive
US20160110107A1 (en) Method for writing data into flash memory apparatus, flash memory apparatus, and storage system
JP7376488B2 (ja) スナップショットのコピーオンライトのデータ移動を回避するインフラストラクチャとしての重複除外
KR20210050592A (ko) 저장 디바이스 상의 네임스페이스에서의 오류 검사
CN113851166A (zh) 存储器子系统中的加速读取转译路径
US11816344B2 (en) Memory system in which information on a time in which integrity of a stored data piece is confirmed last
US20240020272A1 (en) Logical-to-physical mapping for defragmentation of host file system in a data storage device
US20220308789A1 (en) Memory system
CN113010447A (zh) 用于存储器子系统的媒体管理的快照读取优化
KR20190080110A (ko) 플래시 기반 스토리지에서의 중복 관리 방법