KR20140114515A - 불휘발성 메모리 장치 및 그것의 중복 데이터 제거 방법 - Google Patents

불휘발성 메모리 장치 및 그것의 중복 데이터 제거 방법 Download PDF

Info

Publication number
KR20140114515A
KR20140114515A KR1020130028046A KR20130028046A KR20140114515A KR 20140114515 A KR20140114515 A KR 20140114515A KR 1020130028046 A KR1020130028046 A KR 1020130028046A KR 20130028046 A KR20130028046 A KR 20130028046A KR 20140114515 A KR20140114515 A KR 20140114515A
Authority
KR
South Korea
Prior art keywords
data
mapping table
address
physical
controller
Prior art date
Application number
KR1020130028046A
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 삼성전자주식회사
Priority to KR1020130028046A priority Critical patent/KR20140114515A/ko
Priority to US14/202,084 priority patent/US20140281361A1/en
Publication of KR20140114515A publication Critical patent/KR20140114515A/ko

Links

Images

Classifications

    • 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
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • 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
    • 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/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
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into 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

Abstract

본 발명은 불휘발성 메모리 장치 및 그것의 중복 데이터 제거 방법에 관한 것이다. 본 발명에 의한 호스트로부터 쓰기 요청 데이터 및 상기 쓰기 요청 데이터의 논리 어드레스를 제공받는 불휘발성 메모리 장치는 복수의 물리 블록들을 포함하며, 어드레스 매핑 테이블 어레이를 저장하는 데이터 저장 장치 및 상기 논리 어드레스에 응답하여 상기 어드레스 매핑 테이블 어레이로부터 적어도 하나의 어드레스 매핑 테이블을 선택적으로 로드하는 컨트롤러를 포함하며, 상기 컨트롤러는 상기 쓰기 요청 데이터에 대한 중복 데이터 제거 동작시 상기 복수의 물리 블록들 중 상기 로드된 어드레스 매핑 테이블에 포함된 물리 어드레스를 가지는 물리 블록에 저장된 데이터를 참조하여 상기 중복 데이터 제거 동작을 수행한다. 본 발명에 의한 불휘발성 메모리 장치 및 그것의 중복 데이터 제거 방법은 존 단위로 중복 데이터 존재 여부를 판단하므로, 불필요한 연산이 배제되어 효율적으로 중복 데이터를 제거할 수 있다.

Description

불휘발성 메모리 장치 및 그것의 중복 데이터 제거 방법{NONVOLATILE MEMORY DEVICE AND DEDUPLICATION METHOD THEREOF}
본 발명은 불휘발성 메모리 장치 및 그것의 중복 데이터 제거 방법에 관한 것이다.
정보화 사회의 도래와 함께 개인이 저장하고 이동해야 할 데이터의 양도 폭발적으로 늘어나고 있다. 이와 같은 정보 저장매체의 수요 증가로 인해, 다양한 종류의 개인용 정보 저장장치들이 개발되고 있다.
정보 저장장치들 중에서도 하드디스크 드라이브(hard disk drive; HDD)는, 높은 기록 밀도와, 높은 데이터 전송 속도, 빠른 데이터 접근 시간(access time), 및 낮은 가격 등의 장점으로 인해 널리 사용되고 있다. 하드디스크 드라이브는, 외부와 차단된 진공의 내부 공간에 데이터가 저장되는 레코드 형태의 디스크(disc)와, 디스크에 데이터를 기록하거나 읽어내는 역할을 수행하는 헤드(head)와, 헤드와 연결된 암(arm)으로 구성된다. 디스크는 데이터가 저장되는 주 데이터 저장 매체로서, 자성체로 코팅된 적어도 1장 이상의 알루미늄 판으로 구성된다. 이들 알루미늄 판을 플래터(platter)라 부르기도 한다.
최근 하드디스크 드라이브를 대신하는 정보 저장장치로서, 불휘발성 메모리를 채택한 반도체 디스크(Solid State Disk : SSD) 장치에 대한 요구가 점차 증가하고 있다. 반도체 디스크 장치(SSD)는 하드디스크 드라이브와 달리 기계적 구성 대신 전기적 구성을 가지는 정보 저장 장치이다. 반도체 디스크 장치(SSD)는 하드 디스크(HDD)와 같은 자기 디스크 장치에 비하여 기억 용량이나 비용면에서는 불리하지만, 액세스 속도, 소형화, 및 충격으로부터의 안정성 등에 있어 하드 디스크(HDD) 보다 우위를 가지고 있다.
본 발명의 목적은 존 단위로 중복 데이터를 제거하는 불휘발성 메모리 장치 및 그것의 중복 데이터 제거 방법을 제공하는 것이다.
본 발명에 의한 호스트로부터 쓰기 요청 데이터 및 상기 쓰기 요청 데이터의 논리 어드레스를 제공받는 불휘발성 메모리 장치는 복수의 물리 블록들을 포함하며, 어드레스 매핑 테이블 어레이를 저장하는 데이터 저장 장치 및 상기 논리 어드레스에 응답하여 상기 어드레스 매핑 테이블 어레이로부터 적어도 하나의 어드레스 매핑 테이블을 선택적으로 로드하는 컨트롤러를 포함하며, 상기 컨트롤러는 상기 쓰기 요청 데이터에 대한 중복 데이터 제거 동작시 상기 복수의 물리 블록들 중 상기 로드된 어드레스 매핑 테이블에 포함된 물리 어드레스를 가지는 물리 블록에 저장된 데이터를 참조하여 상기 중복 데이터 제거 동작을 수행한다.
실시 예에 있어서, 상기 컨트롤러는 상기 논리 어드레스에 응답하여 상기 데이터 저장 장치로부터 중복 데이터 제거 모드 정보를 더 로드하고, 상기 중복 데이터 제거 모드 정보에 응답하여 중복 데이터 제거 동작을 선택적으로 수행한다.
실시 예에 있어서, 상기 컨트롤러는 중복 데이터 제거 매니저와 상기 적어도 하나의 어드레스 매핑 테이블이 로드되는 메인 메모리 및 상기 어드레스 매핑 테이블 어레이로부터 상기 적어도 하나의 어드레스 매핑 테이블이 선택적으로 로드되도록 상기 메인 메모리를 제어하고, 상기 중복 데이터 제거 매니저가 상기 복수의 물리 블록들 중 상기 로드된 어드레스 매핑 테이블에 포함된 물리 어드레스를 가지는 물리 블록에 저장된 데이터를 참조하여 중복 데이터 제거 동작을 수행하도록 상기 메인 메모리를 제어하는 프로세싱부를 포함한다.
실시 예에 있어서, 상기 컨트롤러는 상기 쓰기 요청 데이터와 동일한 데이터가 상기 복수의 물리 블록들 중 상기 로드된 어드레스 매핑 테이블에 포함된 물리 어드레스를 가지는 물리 블록에 저장된 데이터에 존재하는지 판단하고, 상기 판단 결과에 응답하여 상기 어드레스 매핑 테이블을 업데이트하도록 상기 메인 메모리를 제어한다.
실시 예에 있어서, 상기 컨트롤러는 상기 쓰기 요청 데이터와 동일한 데이터가 상기 복수의 물리 블록들 중 상기 로드된 어드레스 매핑 테이블에 포함된 물리 어드레스를 가지는 물리 블록에 저장된 데이터에 존재하지 않으면, 상기 데이터 저장 장치에 상기 쓰기 요청 데이터가 저장되도록 상기 데이터 저장 장치를 제어한다.
실시 예에 있어서, 상기 컨트롤러는 상기 쓰기 요청 데이터와 동일한 데이터가 상기 복수의 물리 블록들 중 상기 로드된 어드레스 매핑 테이블에 포함된 물리 어드레스를 가지는 물리 블록에 저장된 데이터에 존재하면, 상기 쓰기 요청 데이터의 상기 논리 어드레스에 상기 저장된 데이터에 대한 물리 어드레스가 매핑되도록 상기 어드레스 매핑 테이블을 업데이트한다.
본 발명에 의한 호스트로부터 쓰기 요청 데이터 및 상기 쓰기 요청 데이터의 논리 어드레스를 제공받는 불휘발성 메모리 장치는 복수의 물리 블록들을 포함하며, 복수의 존 컨텍스트들로 구성된 존 컨텍스트 어레이를 저장하는 데이터 저장 장치 및 상기 논리 어드레스에 응답하여 상기 존 컨텍스트 어레이로부터 적어도 하나의 존 컨텍스트를 선택적으로 로드하는 컨트롤러를 포함하고, 상기 존 컨텍스트는 논리 어드레스에 대한 물리 어드레스의 매핑 정보를 포함하는 어드레스 매핑 테이블 및 해쉬값에 대한 물리 어드레스의 매핑 정보를 포함하는 해쉬 매핑 테이블을 포함하며, 상기 컨트롤러는 상기 쓰기 요청 데이터에 대한 해쉬값을 계산하고, 상기 쓰기 요청 데이터에 대한 중복 데이터 제거 동작시 상기 계산된 해쉬값 및 상기 로드된 해쉬 매핑 테이블에 포함된 해쉬값을 참조하여 상기 중복 데이터 제거 동작을 수행한다.
실시 예에 있어서, 상기 컨트롤러는 상기 로드된 해쉬 매핑 테이블에 포함된 해쉬값 중 상기 계산된 해쉬값과 동일한 값이 존재하면, 상기 동일한 해쉬값에 대하여 매핑된 물리 어드레스를 가지는 데이터와 상기 쓰기 요청 데이터를 비교하고, 상기 비교 결과에 응답하여 상기 어드레스 매핑 테이블 및 상기 해쉬 매핑 테이블을 업데이트한다.
실시 예에 있어서, 상기 컨트롤러는 상기 동일한 해쉬값에 대하여 매핑된 물리 어드레스를 가지는 데이터와 상기 쓰기 요청 데이터가 동일하지 않으면, 상기 데이터 저장 장치의 물리 블록에 상기 쓰기 요청 데이터가 저장되도록 상기 데이터 저장 장치를 제어한다.
실시 예에 있어서, 상기 컨트롤러는 상기 동일한 해쉬값에 대하여 매핑된 물리 어드레스를 가지는 데이터와 상기 쓰기 요청 데이터가 동일하지 않으면, 상기 해쉬 매핑 테이블의 상기 동일한 해쉬값에 대하여 상기 쓰기 요청 데이터가 저장된 물리 블록의 물리 어드레스를 더 매핑한다.
실시 예에 있어서, 상기 해쉬 매핑 테이블은 연관 리스트 형태로 구현된다.
실시 예에 있어서, 상기 컨트롤러는 상기 동일한 해쉬값에 대하여 매핑된 물리 어드레스를 가지는 데이터와 상기 쓰기 요청 데이터가 동일하지 않으면, 상기 해쉬 매핑 테이블을 업데이트 하지 않는다.
실시 예에 있어서, 상기 컨트롤러는 상기 비교 결과에 응답하여 상기 동일한 해쉬값에 대한 충돌 횟수를 계산하고, 상기 동일한 해쉬값에 대하여 매핑된 물리 어드레스를 가지는 데이터와 상기 쓰기 요청 데이터가 동일하지 않으면, 상기 충돌 횟수에 응답하여 상기 해쉬 매핑 테이블을 선택적으로 업데이트한다.
실시 예에 있어서, 상기 컨트롤러는 상기 논리 어드레스에 응답하여 상기 데이터 저장 장치로부터 중복 데이터 제거 모드 정보를 더 로드하고, 상기 중복 데이터 제거 모드 정보에 응답하여 중복 데이터 제거 동작을 선택적으로 수행한다.
실시 예에 있어서, 상기 컨트롤러는 상기 계산된 해쉬값 및 상기 로드된 해쉬 매핑 테이블에 포함된 해쉬값을 참조하여 상기 중복 데이터 제거 모드 정보를 업데이트한다.
본 발명에 의한 불휘발성 메모리 장치 및 그것의 중복 데이터 제거 방법은 존 단위로 중복 데이터 존재 여부를 판단하므로, 불필요한 연산이 배제되어 효율적으로 중복 데이터를 제거할 수 있다.
도 1은 본 발명의 실시예에 의한 불휘발성 메모리 장치 및 그와 연결된 호스트를 도시하는 블록도이다.
도 2는 본 발명의 실시예에 의한 존 및 그에 대응되는 어드레스 매핑 테이블들을 도시하는 도면이다.
도 3은 도 1의 컨트롤러를 더 자세히 도시하는 블록도이다.
도 4는 본 발명의 실시예에 의한 불휘발성 메모리 장치의 중복 데이터 제거 동작을 설명하기 위한 순서도이다.
도 5는 예시적인 입출력 트레이스들 및 그에 포함된 존에 대하여 측정된 데이터 중복 비율을 도시하는 그래프이다.
도 6은 본 발명의 다른 실시예에 의한 중복 데이터 제거 동작을 도시하는 순서도이다.
도 7은 본 발명의 다른 실시예에 의한 컨트롤러를 도시하는 블록도이다.
도 8은 도 6의 존에 대한 중복 데이터 제거 동작을 도시하는 순서도이다.
도 9는 본 발명의 또 다른 실시예에 의한 중복 데이터 제거 동작을 도시하는 순서도이다.
도 10은 본 발명의 실시예에 의한 불휘발성 메모리 장치를 솔리드 스테이트 드라이브(SSD) 시스템에 적용한 예를 보여주는 블록도이다.
도 11은 본 발명의 실시예에 의한 불휘발성 메모리 장치를 메모리 카드(memory card)에 적용한 블록도이다.
도 12는 도 11의 메모리 카드가 사용되는 다양한 시스템을 설명하는 예시적 도면이다.
이하, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 본 발명의 기술적 사상을 용이하게 실시할 수 있도록 본 발명의 실시예가 첨부된 도면을 참조하여 설명한다. 또한 이하에서 사용되는 용어들은 오직 본 발명을 설명하기 위하여 사용된 것이며 본 발명의 범위를 한정하기 위해 사용된 것은 아니다. 앞의 일반적인 설명 및 다음의 상세한 설명은 모두 예시적인 것으로 이해되어야 하며, 청구된 발명의 부가적인 설명이 제공되는 것으로 여겨져야 한다.
도 1은 본 발명의 실시예에 의한 불휘발성 메모리 장치 및 그와 연결된 호스트를 도시하는 블록도이다.
호스트(101)는 불휘발성 메모리 장치(100)를 제어한다. 호스트(101)는 PMP, PDA, 스마트폰과 같은 휴대용 전자 장치, 컴퓨터 혹은 HDTV와 같은 전자 장치들일 수 있다.
불휘발성 메모리 장치(100)는 호스트(101)의 제어에 응답하여 데이터를 저장한다. 불휘발성 메모리 장치(100)에 저장된 데이터는 전원이 차단되어도 유지된다. 불휘발성 메모리 장치(100)는 예를 들어, 솔리드 스테이트 드라이브(SSD: Solid State Drive)일 수 있다. 그러나 이는 예시적인 것으로 본 발명이 이에 한정되는 것은 아니다.
불휘발성 메모리 장치(100)는 호스트(101)로부터 입력되는 데이터에 대하여 중복 데이터 제거(Deduplication) 동작을 수행할 수 있다. 중복 데이터 제거 동작은 호스트(101)로부터 입력된 데이터가 기존에 저장된 데이터와 동일한 경우, 입력된 데이터가 불휘발성 메모리 장치(100)에 저장되는 대신 기존 저장된 데이터를 참조하도록 제어하는 동작이다. 예를 들어, 호스트(101)로부터 입력된 데이터가 기존에 저장된 데이터와 동일한 경우, 불휘발성 메모리 장치(100)는 입력된 데이터를 저장하지 않고 입력된 데이터의 논리 블록 어드레스에 기존 저장된 데이터의 물리 블록 어드레스를 매핑할 수 있다.
본 발명에 의한 불휘발성 메모리 장치(100)는 호스트(101)로부터 입력된 데이터의 논리 블록 어드레스(LBA: Logical Block Address)를 기초로 중복 데이터 제거 동작을 수행할 수 있다.
보다 상세히는, 불휘발성 메모리 장치(100)는 입력된 데이터의 논리 블록 어드레스를 기초로, 중복 데이터 제거 동작에서 참조될 데이터의 범위를 결정할 수 있다. 또한 불휘발성 메모리 장치(100)는 입력된 데이터의 논리 블록 어드레스를 기초로 선택적으로 중복 데이터 제거 동작을 수행할 수 있다. 불휘발성 메모리 장치(100)는 한정된 참조 데이터 내에서 중복 데이터 제거 동작을 수행할 수 있으며, 중복 확률이 높은 데이터에 대하여 선택적으로 중복 데이터 제거 동작을 수행할 수 있으므로 적은 계산량으로 중복 데이터 제거 동작을 수행할 수 있다.
도 1을 참조하면, 불휘발성 메모리 장치(100)는 데이터 저장 장치(110) 및 컨트롤러(120)를 포함한다.
데이터 저장 장치(110)는 컨트롤러(120)의 제어에 응답하여 데이터를 저장한다. 데이터 저장 장치(110)와 컨트롤러(120) 사이에는 복수의 채널들(CH1~CHn)이 구성될 수 있다. 채널들(CH1~CHn) 각각에는 복수의 불휘발성 메모리들(NVM1~NVMn)이 연결될 수 있다.
본 실시예에서, 데이터 저장 장치(110)는 플래시 메모리를 포함할 수 있다. 그러나 이는 예시적인 것으로 본 발명은 이에 한정되지 않는다. 예를 들어, 데이터 저장 장치(110)는 플래시 메모리뿐만 아니라 MRAM, PRAM 등의 불휘발성 메모리를 포함할 수 있다. 또한 데이터 저장 장치(110)가 플래시 메모리를 포함하는 경우, 플래시 메모리 셀의 종류 및 데이터 저장 특성은 다양한 형태로 구성될 수 있다.
컨트롤러(120)는 호스트(101)로부터 입력된 커멘드에 응답하여, 데이터 저장 장치(110)에 대한 데이터 읽기 및 쓰기 동작을 제어한다. 컨트롤러(120)는 호스트(101)로부터 입력된 데이터의 논리 블록 어드레스를 기초로, 입력된 데이터에 대하여 중복 데이터 제거 동작을 수행할 수 있다.
보다 상세히는, 컨트롤러(120)는 데이터의 논리 블록 어드레스를 기초로 입력된 데이터의 존(zone)을 식별할 수 있다. 존(zone)은 하나의 어드레스 매핑 테이블을 사용하는 논리 블록 어드레스의 집합이다. 컨트롤러(120)는 식별된 존을 기초로 중복 데이터 제거 동작을 수행할 수 있다. 이하 도 2를 참조하여 존에 관하여 자세히 설명한다.
도 2는 본 발명의 실시예에 의한 존 및 그에 대응되는 어드레스 매핑 테이블들을 도시하는 도면이다.
호스트(도 1 참조, 101)로부터 제공되는 데이터의 논리 블록 어드레스는 호스트(101)에서 구동되는 소프트웨어가 인식하는 논리적인 메모리 공간의 임의의 위치를 참조한다. 따라서, 논리 블록 어드레스는 데이터 저장 장치(도 1 참조, 110)의 물리적인 메모리 공간과 일치하지 않을 수 있다.
컨트롤러(도 1 참조, 120)는 호스트로부터 제공된 데이터를 처리하기 위하여, 호스트(101)로부터 제공된 데이터의 논리 블록 어드레스를 데이터 저장 장치(110)의 물리 블록 어드레스(PBA: Physical Block Address)로 변환한다.
그러나 컨트롤러(120)에 포함된 메인 메모리의 크기가 일정 크기보다 작은 경우, 전체 논리 블록 어드레스에 대한 물리 블록 어드레스의 매핑 정보는 컨트롤러(120)에 한번에 로드될 수 없다. 작은 크기의 메인 메모리를 가지는 컨트롤러(120)에 어드레스 매핑 정보를 로드하기 위하여, 전체 어드레스 매핑 정보는 특정 크기 단위로 분할될 수 있다. 분할된 매핑 정보는 각각 하나의 어드레스 매핑 테이블을 형성할 수 있다.
도 2를 참조하면, 호스트(101)에서 사용되는 전체 논리 블록 어드레스(LBA)는 특정 크기를 가지는 k개의 존(zone)으로 분할될 수 있다. 각 존에 할당된 논리 블록 어드레스들 및 그에 대응되는 물리 블록 어드레스들(PBA1~PBAk)은 각각 어드레스 매핑 테이블들(MT1~MTk)을 구성한다.
전체 논리 블록 어드레스에 대한 매핑 정보는 어드레스 매핑 테이블 어레이([MT1:MTk])를 형성할 수 있다. 어드레스 매핑 테이블 어레이([MT1:MTk])는 데이터 저장 장치(110)에 저장된다. 컨트롤러(120)는 어드레스 매핑 테이블 어레이([MT1:MTk]) 중 현재 처리 요청된 데이터의 논리 블록 어드레스가 포함되는 어드레스 매핑 테이블을 데이터 저장 장치(110)로부터 로드하여 사용할 수 있다.
다시 도 1을 참조하면, 컨트롤러(120)는 입력된 데이터의 논리 블록 어드레스가 포함되는 존을 판별한다. 컨트롤러(120)에 로드되어 있는 어드레스 매핑 테이블들 중 판별된 존의 어드레스 매핑 테이블이 없으면, 컨트롤러(120)는 판별된 존의 어드레스 매핑 테이블을 데이터 저장 장치(110)로부터 컨트롤러(120)로 로드한다.
컨트롤러(120)는 입력된 데이터에 대하여 존 단위로 중복 데이터 제거 동작을 수행할 수 있다. 즉, 컨트롤러(120)는 데이터 저장 장치(110) 전체에 저장된 데이터들을 참조하여 중복 데이터 제거 동작을 수행하는 대신, 입력된 데이터와 동일한 존에 속하는 논리 블록 어드레스에 매핑된 물리 블록 어드레스를 가지는 물리 블록들에 저장된 데이터만 참조하여 중복 데이터 제거 동작을 수행할 수 있다.
상술된 불휘발성 메모리 장치(100)는 입력된 데이터에 대하여 존 단위로 중복 데이터 제거 동작을 수행하므로, 데이터 저장 장치(110) 전체에 저장된 데이터를 참조하는 것에 비하여 중복 데이터 제거 동작에 요구되는 연산이 감소될 수 있다.
도 3은 도 1의 컨트롤러(120)를 더 자세히 도시하는 블록도이다. 도 3을 참조하면, 컨트롤러(120)는 호스트 인터페이스(121), 메모리 인터페이스(122), 프로세싱부(123) 및 메인 메모리(124)를 포함한다.
호스트 인터페이스(121)는 호스트(도 1 참조, 101)와 컨트롤러(120) 사이의 인터페이스를 제공한다. 호스트(101)와 컨트롤러(120)는 다양한 표준 인터페이스들(standardized interfaces) 중 하나를 통해 데이터를 주고 받을 수 있다. 혹은, 호스트(101)와 컨트롤러(120)는 다양한 표준 인터페이스들 중 복수의 인터페이스들을 통해 데이터를 주고 받을 수 있다.
컨트롤러(120)는 다양한 인터페이스 프로토콜들 중 하나를 통해 호스트(101)와 데이터를 주고 받을 수 있다. 표준 인터페이스들은 ATA(advanced technology attachment), SATA(serial ATA), e-SATA(external SATA), SCSI(small computer small interface), SAS(serial attached SCSI), PCI(peripheral component interconnection), PCI-E(PCI express), UFS(Universal Flash Storage), USB(universal serial bus), IEEE 1394, Card 인터페이스 등과 같은 다양한 인터페이스 방식들을 포함한다.
메모리 인터페이스(122)는 데이터 저장 장치(도 1 참조, 110)와 컨트롤러(120) 사이의 인터페이스를 제공한다. 예를 들면, 프로세싱부(123)에 의해서 처리된 데이터는 메모리 인터페이스(122)를 통해 데이터 저장 장치(110)에 저장될 수 있다. 혹은, 데이터 저장 장치(110)에 저장된 데이터는 메모리 인터페이스(122)를 통해 프로세싱부(123)에 제공될 수 있다.
프로세싱부(123)는 컨트롤러(120)의 전체적인 동작을 제어한다. 프로세싱부(123)는 중앙 처리 장치(CPU: Central Proccessing Unit) 혹은 마이크로프로세서(MCU: Micro-Processing Unit)를 포함할 수 있다. 프로세싱부(123)는 컨트롤러(120)를 제어하기 위한 펌웨어(firmware)를 구동할 수 있다. 펌웨어는 메인 메모리(124)에 로드(load)되어 구동될 수 있다.
메인 메모리(124)는 컨트롤러(120)를 제어하기 위한 펌웨어 및 데이터를 저장한다. 메인 메모리(124)에 저장된 펌웨어 및 데이터는 프로세싱부(123)에 의하여 구동될 수 있다. 또한 메인 메모리(124)는 메타 데이터를 저장하거나, 캐시 데이터를 저장할 수 있다. 메인 메모리(124)는 캐시(cache) 메모리, DRAM, SRAM, PRAM 등의 다양한 형태로 구성될 수 있다.
메인 메모리(124)에는 중복 데이터 제거 매니저(124a) 및 어드레스 매핑 테이블(124b)이 로드될 수 있다. 메인 메모리(124)는 프로세싱부(123)의 제어에 응답하여, 데이터 저장 장치(110)로부터 중복 데이터 제거 매니저(124a) 및 어드레스 매핑 테이블(124b)을 로드할 수 있다.
어드레스 매핑 테이블(124b)은 호스트로부터 제공된 데이터가 포함된 존의 논리 블록 어드레스와 물리 블록 어드레스의 매핑 정보를 저장하는 테이블이다. 메인 메모리(124)에는 복수의 어드레스 매핑 테이블이 로드될 수 있다.
데이터 쓰기 동작시, 호스트(101)로부터 쓰여질 데이터 및 쓰여질 데이터에 대한 논리 블록 어드레스가 입력된다. 중복 데이터 제거 매니저(124a)는 호스트(101)로부터 제공된 데이터의 논리 블록 어드레스가 포함되는 존을 판별한다.
현재 메인 메모리(124)에 로드되어 있는 어드레스 매핑 테이블들 중 판별된 존의 어드레스 매핑 테이블이 없으면, 프로세싱부(123)는 판별된 존의 어드레스 매핑 테이블을 데이터 저장 장치(110)로부터 메인 메모리(124)로 로드한다.
중복 데이터 제거 매니저(124a)는 로드된 어드레스 매핑 테이블(124b)을 참조하여, 호스트로부터 제공된 데이터와 참조 대상이 되는 물리 블록들에 저장된 데이터를 비교한다. 중복 데이터 제거 매니저(124a)가 참조 대상으로 하는 물리 블록은, 호스트로부터 제공된 데이터와 동일한 존에 속하는 논리 블록 어드레스에 대응되는 물리 블록 어드레스를 가지는 물리 블록들이다.
동일한 데이터가 발견되면, 중복 데이터 제거 매니저(124a)는 호스트로부터 제공된 데이터를 데이터 저장 장치(110)에 저장하지 않는다. 대신, 중복 데이터 제거 매니저(124a)는 호스트로부터 제공된 데이터의 논리 블록 어드레스에 발견된 동일한 데이터가 저장된 물리 블록의 물리 블록 어드레스가 매핑되도록 어드레스 매핑 테이블(124b)을 업데이트 한다.
동일한 데이터가 발견되지 않으면, 중복 데이터 제거 매니저(124a)는 호스트로부터 제공된 데이터를 데이터 저장 장치(110)에 저장하고, 어드레스 매핑 테이블(124b)을 업데이트 한다.
상술된 컨트롤러(120)는 중복 데이터 제거 매니저(124a)를 이용하여, 입력된 데이터에 대하여 존 단위로 중복 데이터 제거 동작을 수행할 수 있다. 컨트롤러(120)를 포함하는 불휘발성 메모리 장치에 의하면, 데이터 저장 장치(110) 전체에 저장된 데이터를 참조하여 중복 데이터 제거 동작을 수행하는 것에 비하여 중복 데이터 제거 동작에 요구되는 연산이 감소될 수 있다.
도 4는 본 발명의 실시예에 의한 불휘발성 메모리 장치의 중복 데이터 제거 동작을 설명하기 위한 순서도이다.
S110 단계에서, 호스트(도 1 참조, 101)로부터 쓰기 요청이 제공된다. 호스트(101)는 쓰기 요청된 데이터 및 데이터의 논리 블록 어드레스를 불휘발성 메모리 장치(도 1 참조, 100)에 제공한다.
S120 단계에서, 데이터의 논리 블록 어드레스를 기초로, 쓰기 요청된 데이터의 논리 블록 어드레스가 속하는 존이 판별된다.
S130 단계에서, 컨트롤러(도 1 참조, 120)의 메인 메모리(도 3 참조, 124)에 판별된 존의 어드레스 매핑 테이블이 로드되어 있는지 판별된다. 메인 메모리(124)에 판별된 존의 어드레스 매핑 테이블이 존재하지 않는다면, S135 단계에서, 컨트롤러(120)는 데이터 저장 장치(도 1 참조, 110)로부터 메인 메모리(124)로 판별된 존의 어드레스 매핑 테이블을 로드한다.
S140 단계에서, 쓰기 요청된 데이터에 대한 중복 데이터 제거 동작이 존 단위로 수행된다. 도 4를 참조하여 설명된 바와 같이, 쓰기 요청된 데이터는 상기 데이터와 동일한 존에 속하는 논리 블록 어드레스에 대응되는 물리 블록에 저장된 데이터와 비교된다.
동일한 데이터가 발견되면, 쓰기 요청된 데이터는 데이터 저장 장치(110)에 저장되지 않는다. 대신, 쓰기 요청된 데이터의 논리 블록 어드레스에 발견된 동일한 데이터가 저장된 물리 블록의 물리 블록 어드레스가 매핑된다. 동일한 데이터가 발견되지 않으면, 쓰기 요청된 데이터는 데이터 저장 장치(110)에 저장되고, 쓰기 요청된 데이터의 논리 블록 어드레스에는 데이터가 저장된 물리 블록의 물리 블록 어드레스가 매핑된다.
상술된 중복 데이터 제거 동작에 의하면, 존 단위로 중복 데이터 제거 동작을 수행되므로 데이터 저장 장치(110) 전체에 저장된 데이터를 참조하여 중복 데이터 제거 동작을 수행하는 것에 비하여 중복 데이터 제거 동작에 요구되는 연산이 감소될 수 있다.
도 5는 예시적인 입출력 트레이스들 및 그에 포함된 존에 대하여 측정된 데이터 중복 비율을 도시하는 그래프이다. 도 5에서 가로축은 입출력 트레이스 및 그에 포함되는 존을, 세로축은 데이터 중복 비율을 나타낸다.
도 5의 그래프는 예시적으로, 안드로이드 플랫폼에서 수집된 부트(Boot) 트레이스, 유휴(Idle) 트레이스, 인스톨(Install) 트레이스 및 언인스톨(Uninstall) 트레이스에 관하여 수집된 중복 데이터 발생 결과를 도시한다. 각 트레이스들은 복수의 존으로 분할될 수 있다. 도 5의 그래프의 가로축의 눈금 하나는 각각 하나의 존을 나타낸다.
도 5에서, 그래프 A는 각 존에 대하여 존 내에서 중복 데이터가 발생된 비율을 도시한다. 그래프 B는 전체 주소 공간에 대하여 중복 데이터가 발생된 비율을 도시한다.
도 5를 참조하면, 각 트레이스 및 트레이스에 포함되는 존에 따라 중복 데이터의 발생 비율이 다름을 확인할 수 있다. 따라서 중복 데이터가 거의 발생되지 않는다고 판단되는 존에 대하여는 중복 데이터 제거 동작을 수행하지 않고, 중복 데이터가 빈번하게 발생된다고 판단되는 존에 대하여만 중복 데이터 제거 동작을 선택적으로 수행하면 중복 데이터 제거 동작의 효율을 더욱 증가시킬 수 있다.
도 6은 본 발명의 다른 실시예에 의한 중복 데이터 제거 동작을 도시하는 순서도이다. 도 6의 중복 데이터 제거 동작에 의하면, 불휘발성 메모리 장치는 쓰기 요청된 데이터의 존을 기초로 선택적으로 중복 데이터 제거 동작을 수행할 수 있다.
S210 단계에서, 호스트(도 1 참조, 101)로부터 쓰기 요청이 제공된다. 호스트(101)는 쓰기 요청된 데이터 및 데이터의 논리 블록 어드레스를 불휘발성 메모리 장치(도 1 참조, 100)에 제공한다.
S220 단계에서, 데이터의 논리 블록 어드레스를 기초로, 쓰기 요청된 데이터의 논리 블록 어드레스가 속하는 존이 판별된다.
S230 단계에서, 컨트롤러(도 1 참조, 120)의 메인 메모리(도 3 참조, 124)에 판별된 존의 어드레스 매핑 테이블이 로드되어 있는지 판별된다. 메인 메모리(124)에 판별된 존의 어드레스 매핑 테이블이 존재하지 않는다면, S135 단계에서, 컨트롤러(120)는 데이터 저장 장치(도 1 참조, 110)로부터 메인 메모리(124)로 판별된 존의 어드레스 매핑 테이블을 로드한다.
S240 단계에서, 판별된 존의 중복 데이터 제거 모드가 활성화되어 있는지 여부가 판별된다. 존의 중복 데이터 제거 모드는 존에 포함된 데이터에 대한 중복 데이터 발생 비율에 응답하여 활성화될 수 있다.
각 존의 중복 데이터 제거 모드 정보는 상기 존의 어드레스 매핑 테이블과 함께 데이터 저장 장치(110)에 저장되고, 함께 메인 메모리(124)로 로드될 수 있다. 혹은 중복 데이터 제거 모드 정보는 데이터 저장 장치(110)의 미리 지정된 영역에 저장되어 어드레스 매핑 테이블과 독립적으로 로드될 수 있다.
S245 단계에서, 판별된 존의 중복 데이터 제거 모드가 활성화되어 있지 않으면, 중복 데이터 제거 동작은 수행되지 않는다. 쓰기 요청된 데이터는 데이터 저장 장치(110)에 저장되고, 쓰기 요청된 데이터의 논리 블록 어드레스에는 데이터가 저장된 물리 블록의 물리 블록 어드레스가 매핑된다.
S250 단계에서, 판별된 존의 중복 데이터 제거 모드가 활성화되어 있으면, 판별된 존에 대하여 쓰기 요청된 데이터에 대한 중복 데이터 제거 동작이 수행된다. 쓰기 요청된 데이터는 상기 데이터와 동일한 존에 속하는 논리 블록 어드레스에 대응되는 물리 블록에 저장된 데이터와 비교된다.
동일한 데이터가 발견되면, 쓰기 요청된 데이터는 데이터 저장 장치(110)에 저장되지 않는다. 대신, 쓰기 요청된 데이터의 논리 블록 어드레스에 발견된 동일한 데이터가 저장된 물리 블록의 물리 블록 어드레스가 매핑된다.
동일한 데이터가 발견되지 않으면, 쓰기 요청된 데이터는 데이터 저장 장치(110)에 저장된다. 쓰기 요청된 데이터의 논리 블록 어드레스에는 데이터가 저장된 물리 블록의 물리 블록 어드레스가 매핑된다.
상술된 중복 데이터 제거 동작에 의하면, 불휘발성 메모리 장치는 쓰기 요청된 데이터의 존을 기초로 선택적으로 중복 데이터 제거 동작을 수행할 수 있다. 불휘발성 메모리 장치(100)는 한정된 참조 데이터 내에서 중복 확률이 높은 데이터에 대하여 선택적으로 중복 데이터 제거 동작을 수행할 수 있으므로 효율적으로 중복 데이터 제거 동작을 수행할 수 있다.
한편, 중복 데이터 제거 동작을 수행하기 위하여, 불휘발성 메모리 장치는 쓰기 요청된 데이터와 참조 데이터를 일괄적으로 비교하는 대신 해쉬값을 이용할 수 있다. 불휘발성 메모리 장치는 전체 데이터에 대하여 비교 동작을 수행하는 대신 쓰기 요청된 데이터로부터 계산된 해쉬값과 참조 데이터로부터 계산된 해쉬값을 비교할 수 있다.
도 7은 본 발명의 다른 실시예에 의한 컨트롤러를 도시하는 블록도이다. 도 7을 참조하면, 컨트롤러(220)는 호스트 인터페이스(221), 메모리 인터페이스(222), 프로세싱부(223) 및 메인 메모리(224)를 포함한다. 호스트 인터페이스(221) 및 메모리 인터페이스(222)는 도 3의 호스트 인터페이스(121) 및 메모리 인터페이스(122)와 동일한 구성 및 동작 원리를 가질 수 있다.
프로세싱부(223)는 컨트롤러(220)의 전체적인 동작을 제어한다. 프로세싱부(223)는 컨트롤러(220)를 제어하기 위한 펌웨어(firmware)를 구동할 수 있다. 펌웨어는 메인 메모리(224)에 로드(load)되어 구동될 수 있다.
메인 메모리(224)는 컨트롤러(220)를 제어하기 위한 펌웨어 및 데이터를 저장한다. 메인 메모리(224)에는 중복 데이터 제거 매니저(224a), 어드레스 매핑 테이블(224b) 및 해쉬 매핑 테이블(224c)이 로드될 수 있다. 메인 메모리(224)는 프로세싱부(223)의 제어에 응답하여, 데이터 저장 장치(210)로부터 중복 데이터 제거 매니저(224a), 어드레스 매핑 테이블(224b) 및 해쉬 매핑 테이블(224c)을 로드할 수 있다.
어드레스 매핑 테이블(224b)은 각 존에 포함된 논리 블록 어드레스와 그에 대응되는 물리 블록 어드레스의 매핑 정보를 저장하는 테이블이다. 해쉬 매핑 테이블(224c)은 해쉬값 및 상기 해쉬값을 가지는 데이터들이 저장된 물리 블록의 물리 블록 어드레스를 저장하는 테이블이다.
하나의 존에 대한 어드레스 매핑 테이블(224b) 및 해쉬 매핑 테이블(224c)은 함께 존 콘텍스트(Zone Context)를 구성한다. 메인 메모리(224)에는 복수의 존 콘텍스트들이 로드될 수 있다.
데이터 쓰기 동작시, 호스트(도 1 참조, 101)로부터 쓰기 요청된 데이터 및 쓰기 요청된 데이터에 대한 논리 블록 어드레스가 입력된다. 중복 데이터 제거 매니저(224a)는 호스트(101)로부터 제공된 데이터의 논리 블록 어드레스가 포함되는 존을 판별한다.
현재 메인 메모리(224)에 로드되어 있는 존 콘텍스트들 중 판별된 존의 존 콘텍스트가 없으면, 프로세싱부(223)는 데이터 저장 장치(도 1 참조, 110)로부터 판별된 존의 존 콘텍스트를 메인 메모리(224)로 로드한다.
중복 데이터 제거 매니저(224a)는 해쉬 함수를 이용하여, 호스트(101)로부터 제공된 데이터의 해쉬값을 계산한다. 중복 데이터 제거 매니저(224a)는 해쉬 매핑 테이블(224c)을 참조하여, 계산된 해쉬값과 동일한 해쉬값을 가지는 데이터가 존에 대응되는 물리 블록 어드레스를 가지는 물리 블록들에 저장되어 있는지 여부를 확인한다.
본 실시예에서, 해쉬 매핑 테이블(224c)의 각 엔트리(Entry)에 해당되는 해쉬값은 고정되어 있을 수 있다. 고정된 해쉬값을 가지는 해쉬 매핑 테이블(224c)을 이용하면 해쉬값을 별도로 저장할 필요가 없어 효율적이다.
고정된 해쉬값을 가지는 해쉬 매핑 테이블(224c)을 이용하면, 데이터를 비교하기 위한 해쉬값의 비트수는 해쉬 매핑 테이블(224c)의 크기에 응답하여 결정될 수 있다. 일정 크기보다 작은 크기의 해쉬 매핑 테이블(224c)을 사용하는 경우, 데이터를 비교하기 위한 해쉬값의 비트수가 작아져 충돌(Collision)이 발생될 수 있다.
충돌은 서로 다른 데이터가 동일한 해쉬값을 가지는 상태를 의미한다. 데이터를 비교하기 위하여 큰 비트수의 해쉬값을 이용할수록 충돌이 발생될 확률은 낮아지지만, 그에 응답하여 큰 크기의 해쉬 매핑 테이블(224c)이 유지되어야 한다. 본 발명의 중복 데이터 제거 매니저(224a)는 작은 크기의 해쉬 매핑 테이블(224c)을 이용하기 위하여, 충돌이 발생되었을 때 이를 처리하기 위한 동작을 수행할 수 있다.
먼저, 중복 데이터 제거 매니저(224a)는 계산된 해쉬값과 동일한 해쉬값을 가지는 데이터가 존에 대응되는 물리 블록 어드레스를 가지는 물리 블록들에 저장되어 있는지 여부를 확인하기 위하여, 계산된 해쉬값이 해쉬 매핑 테이블(224c)에 매핑되어 있는지 확인한다.
중복 데이터 제거 매니저(224a)는 계산된 해쉬값이 매핑되어 있지 않으면, 쓰기 요청된 데이터를 데이터 저장 장치(110)에 저장하고, 어드레스 매핑 테이블(224b) 및 해쉬 매핑 테이블(224c)을 업데이트 한다.
중복 데이터 제거 매니저(224a)는 계산된 해쉬값이 매핑되어 있으면, 매핑된 물리 블록 주소를 참조하여 데이터 저장 장치(110)에 저장된 데이터를 로드한다. 중복 데이터 제거 매니저(224a)는 로드된 데이터와 쓰기 요청된 데이터를 비교하여 동일성을 판단한다.
로드된 데이터와 쓰기 요청된 데이터가 동일하면, 중복 데이터 제거 매니저(224a)는 쓰기 요청된 데이터를 데이터 저장 장치(110)에 저장하지 않는다. 대신 중복 데이터 제거 매니저(224a)는 쓰기 요청된 데이터의 논리 블록 어드레스에 로드된 데이터가 저장된 물리 블록의 물리 블록 어드레스가 매핑되도록 어드레스 매핑 테이블(224b)을 업데이트 한다.
로드된 데이터와 쓰기 요청된 데이터가 동일하지 않으면, 중복 데이터 제거 매니저(224a)는 충돌이 발생되었다고 판단한다. 중복 데이터 제거 매니저(224a)는 충돌이 발생되었을 때 이를 처리하기 위한 다양한 동작을 수행할 수 있다.
일실시예로서, 중복 데이터 제거 매니저(224a)는 쓰기 요청된 데이터를 데이처 저장 장치(110)에 저장하고, 해쉬 매핑 테이블(224c)에 쓰기 요청된 데이터가 저장된 물리 블록의 물리 블록 어드레스를 추가할 수 있다. 복수의 물리 블록 어드레스를 저장하기 위하여, 해쉬 매핑 테이블(224c)은 연관 리스트(Linked-list) 형태로 구현될 수 있다.
다른 실시예로서, 중복 데이터 제거 매니저(224a)는 가장 먼저 해쉬 매핑 테이블(224c)에 저장된 데이터가, 그에 대응되는 해쉬값을 독점하도록 할 수 있다. 중복 데이터 제거 매니저(224a)는 쓰기 요청된 데이터를 데이터 저장 장치(110)에 저장하되, 해쉬 매핑 테이블(224c)은 업데이트 하지 않고 그대로 유지할 수 있다. 해쉬 매핑 테이블(224c)이 유지되므로, 이후 호스트로부터 쓰기 요청된 데이터와 동일한 데이터에 대하여 쓰기가 요청되면 다시 충돌이 발생될 수 있다.
또 다른 실시예로서, 중복 데이터 제거 매니저(224a)는 충돌 횟수에 응답하여 해쉬 매핑 테이블(224c)을 업데이트 할 수 있다. 중복 데이터 제거 매니저(224a)는 해쉬 매핑 테이블(224c)의 각 엔트리에 대한 충돌 횟수를 카운트할 수 있다.
중복 데이터 제거 매니저(224a)는 카운트된 충돌 횟수가 미리 지정된 문턱값 이상이면, 쓰기 요청된 데이터를 데이터 저장 장치에 저장하고, 해쉬 매핑 테이블(224c)의 해쉬값에 매핑된 물리 주소를 쓰기 요청된 데이터가 저장된 물리 블록의 물리 블록 어드레스로 교체할 수 있다. 중복 데이터 제거 매니저(224a)는 해쉬 매핑 테이블의 엔트리가 갱신되면, 해당 엔트리에 대한 충돌 횟수 카운트를 리셋할 수 있다.
중복 데이터 제거 매니저(224a)는 카운트된 충돌 횟수가 미리 지정된 문턱값 미만이면, 쓰기 요청된 데이터를 데이터 저장 장치에 저장하고, 해쉬 매핑 테이블(224c)을 유지할 수 있다.
상술된 중복 데이터 제거 매니저(224a) 및 그것을 포함하는 불휘발성 메모리 장치는 존 단위로 중복 데이터 제거 동작을 수행하기 위하여 해쉬 매핑 테이블을 이용할 수 있다. 또한 불휘발성 메모리 장치는 충돌이 발생하는 경우 이를 처리하기 위하여 해쉬 매핑 테이블 및 어드레스 매핑 테이블을 갱신하는 다양한 알고리즘을 제공할 수 있다. 불휘발성 메모리 장치는 존 단위로 미리 지정된 크기의 해쉬 매핑 테이블을 이용하여 중복 데이터 제거 동작을 수행하므로, 적은 연산 및 작은 메모리 공간으로 중복 데이터 제거 동작을 수행할 수 있어 경제적이다.
도 8은 도 6의 존에 대한 중복 데이터 제거 동작의 일실시예를 도시하는 순서도이다.
S251 단계에서, 호스트(도 1 참조, 101)로부터 입력된 데이터에 대한 해쉬값이 계산된다. 해쉬값은 다양한 해쉬 함수를 이용하여 계산될 수 있다.
S252 단계에서, S251 단계에서 계산된 해쉬값이 해쉬 매핑 테이블(도 7 참조, 224c)에 이미 매핑되어 있는지 여부가 판별된다.
S253 단계에서, 계산된 해쉬값이 해쉬 매핑 테이블(224c)에 매핑되어 있으면, 매핑되어 있는 해쉬값에 대응되는 물리 블록 주소를 가지는 물리 블록에 저장된 데이터가 호스트로부터 입력된 데이터와 동일한지 여부가 판별된다.
S254 단계에서, S251 단계에서 계산된 해쉬값이 해쉬 매핑 테이블(224c)에 매핑되어 있지 않거나, S253 단계에서 매핑되어 있는 해쉬값에 대응되는 물리 블록 주소를 가지는 물리 블록에 저장된 데이터가 호스트로부터 입력된 데이터와 동일하지 않다고 판별된 경우, 호스트로부터 입력된 데이터는 불휘발성 메모리 장치에 저장된다.
S255 단계에서, 호스트로부터 입력된 데이터에 대하여 어드레스 매핑 테이블(도 7 참조, 224b) 및 해쉬 매핑 테이블(224c)이 업데이트 된다.
S251 단계에서 계산된 해쉬값이 해쉬 매핑 테이블(224c)에 매핑되어 있지 않은 경우, 호스트로부터 입력된 데이터의 해쉬값에 데이터가 저장된 물리 블록의 물리 블록 어드레스가 매핑되도록 해쉬 매핑 테이블(224c)이 업데이트 된다. 또, 호스트로부터 입력된 데이터의 논리 블록 어드레스에 데이터가 저장된 물리 블록의 물리 블록 어드레스가 매핑되도록 물리 어드레스 매핑 테이블(도 7 참조, 224b)이 업데이트된다.
S253 단계에서 매핑되어 있는 해쉬값에 대응되는 물리 블록 주소를 가지는 물리 블록에 저장된 데이터가 호스트로부터 입력된 데이터와 동일하지 않다고 판별된 경우, 호스트로부터 입력된 데이터의 논리 블록 어드레스에 데이터가 저장된 물리 블록의 물리 블록 어드레스가 매핑되도록 물리 어드레스 매핑 테이블(도 7 참조, 224b)이 업데이트된다. 또한 충돌을 처리하기 위하여 해쉬 매핑 테이블(224c)이 업데이트될 수 있다.
예를 들어, 해쉬 매핑 테이블(224c)에 쓰기 요청된 데이터가 저장된 물리 블록의 물리 블록 어드레스가 추가될 수 있다. 복수의 물리 블록 어드레스를 저장하기 위하여, 해쉬 매핑 테이블(224c)은 연관 리스트(Linked-list) 형태로 구현될 수 있다.
다른 실시예로서, 해쉬 매핑 테이블(224c)은 업데이트 하지 않고 그대로 유지될 수 있다. 또 다른 실시예로서, 해쉬 매핑 테이블(224c)은 해쉬값에 대한 충돌 횟수에 응답하여 업데이트 될 수 있다.
S254 단계에서 호스트로부터 입력된 데이터가 불휘발성 메모리 장치에 저장된 경우, 호스트로부터 입력된 데이터의 논리 블록 어드레스에 데이터가 저장된 물리 블록의 물리 블록 어드레스가 매핑되도록 물리 어드레스 매핑 테이블(224b)이 업데이트된다.
S253 단계에서 매핑되어 있는 해쉬값에 대응되는 물리 블록 주소를 가지는 물리 블록에 저장된 데이터가 호스트로부터 입력된 데이터와 동일하다고 판별된 경우, 호스트로부터 입력된 데이터의 논리 블록 어드레스에 기존 데이터가 저장된 물리 블록의 물리 블록 어드레스가 매핑되도록 어드레스 매핑 테이블(224b)이 업데이트된다. 해쉬 매핑 테이블(224c)은 유지된다.
상술된 존 단위의 중복 데이터 제거 동작 방법(S250)에 의하면, 데이터 비교를 위하여 해쉬 매핑 테이블이 이용될 수 있다. 또한 중복 데이터 제거 동작 방법(S250)에 의하면 충돌이 발생하는 경우 이를 처리하기 위하여 해쉬 매핑 테이블 및 어드레스 매핑 테이블을 갱신하는 다양한 알고리즘이 제공될 수 있다. 중복 데이터 제거 동작 방법(S250)에 의하면 존 단위로 미리 지정된 크기의 해쉬 매핑 테이블을 이용하여 중복 데이터 제거 동작을 수행하므로, 적은 연산 및 작은 메모리 공간으로 중복 데이터 제거 동작을 수행할 수 있어 경제적이다.
도 9는 본 발명의 또 다른 실시예에 의한 중복 데이터 제거 동작을 도시하는 순서도이다. 중복 데이터 제거 동작(S300)에 의하면, 각 존에 저장된 데이터에 대하여 중복 데이터가 발생되는 확률에 응답하여 존에 대한 중복 데이터 동작이 수행될 수 있다.
S310 단계에서, 호스트(도 1 참조, 101)로부터 쓰기 요청이 제공된다. 호스트(101)는 쓰기 요청된 데이터 및 데이터의 논리 블록 어드레스를 불휘발성 메모리 장치(도 1 참조, 100)에 제공한다.
S320 단계에서, 데이터의 논리 블록 어드레스를 기초로, 쓰기 요청된 데이터의 논리 블록 어드레스가 속하는 존이 판별된다.
S330 단계에서, 컨트롤러(도 7 참조, 220)의 메인 메모리(도 7 참조, 224)에 판별된 존의 존 콘텍스트, 즉 어드레스 매핑 테이블(도 7 참조, 224b) 및 해쉬 매핑 테이블(도 7 참조, 224c)이 로드되어 있는지 판별된다. 메인 메모리(124)에 판별된 존의 존 컨텍스트가 존재하지 않는다면, S335 단계에서, 컨트롤러(220)는 데이터 저장 장치(도 1 참조, 110)로부터 메인 메모리(224)로 판별된 존의 존 컨텍스트를 로드한다.
S340 단계에서, 쓰기 요청된 데이터에 대한 해쉬값이 계산된다. 해쉬값은 다양한 해쉬 함수를 이용하여 계산될 수 있다.
S350 단계에서, S340 단계에서 계산된 해쉬값이 로드된 존 콘텍스트의 해쉬 매핑 테이블(224c)에 이미 매핑되어 있는지 여부가 판별된다. 해쉬값이 이미 매핑되어 있다면, S351 단계에서, 판별된 존에 대한 히트율(Hit rate)이 증가된다. 해쉬값이 매핑되어 있지 않으면, S352 단계에서, 판별된 존에 대한 히트율(Hit rate)이 감소된다.
히트율은 각 존에 저장된 데이터에 대하여 중복 데이터가 발생되는 확률을 나타낸다. 히트율은 해쉬 매핑 테이블(224c)에 대한 접근 횟수에 대한 해쉬값이 매핑되었다고 판별된 횟수의 비로 계산될 수 있다.
S360 단계에서, 존의 히트율이 미리 지정된 문턱값 이상인지 여부가 판별된다. 존의 히트율이 미리 지정된 문턱값 이상이면, S370 단계에서, 존의 중복 데이터 제거 모드가 활성화된다. 존의 히트율이 미리 지정된 문턱값 미만이면, S375 단계에서, 존의 중복 데이터 제거 모드가 비활성화된다.
S380 단계에서, 판별된 존의 중복 데이터 제거 모드가 활성화되어 있는지 여부가 판별된다. S360 단계에서 나타난 바와 같이, 존의 중복 데이터 제거 모드는 존에 포함된 데이터에 대한 중복 데이터 발생 비율에 응답하여 활성화될 수 있다.
판별된 존의 중복 데이터 제거 모드가 활성화되어 있지 않으면, 중복 데이터 제거 동작은 수행되지 않는다. S385 단계에서, 쓰기 요청된 데이터는 데이터 저장 장치(110)에 저장되고, 쓰기 요청된 데이터의 논리 블록 어드레스에는 데이터가 저장된 물리 블록의 물리 블록 어드레스가 매핑된다.
판별된 존의 중복 데이터 제거 모드가 활성화되어 있으면, S390 단계에서 판별된 존에 대하여 쓰기 요청된 데이터에 대한 중복 데이터 제거 동작이 수행된다. 쓰기 요청된 데이터는 상기 데이터와 동일한 존에 속하는 논리 블록 어드레스에 대응되는 물리 블록 어드레스를 가지는 물리 블록에 저장된 데이터와 비교된다.
상술된 중복 데이터 제거 동작(S300)에 의하면, 불휘발성 메모리 장치는 쓰기 요청된 데이터의 존에 대한 히트율을 기초로 선택적으로 중복 데이터 제거 동작을 수행할 수 있다. 불휘발성 메모리 장치는 한정된 참조 데이터 내에서 중복 확률이 높은 데이터에 대하여 선택적으로 중복 데이터 제거 동작을 수행할 수 있으므로 효율적으로 중복 데이터 제거 동작을 수행할 수 있다.
도 10은 본 발명의 실시예에 의한 불휘발성 메모리 장치를 솔리드 스테이트 드라이브(SSD) 시스템에 적용한 예를 보여주는 블록도이다. 도 10을 참조하면, SSD 시스템(1000)은 호스트(1100)와 SSD(1200)를 포함한다. 호스트(1100)는 호스트 인터페이스(1121), 호스트 컨트롤러(1120), 그리고 디램(1130)을 포함한다.
호스트(1100)는 SSD(1200)에 데이터를 쓰거나, SSD(1200)에 저장된 데이터를 읽는다. 호스트 컨트롤러(1120)는 커맨드, 어드레스, 제어 신호, 파일의 카테고리를 나타내는 ID 등의 신호(SGL)를 호스트 인터페이스(1121)를 통해 SSD(1200)로 전송한다. 디램(1130)은 호스트(1100)의 메인 메모리이다.
SSD(1200)는 호스트 인터페이스(1211)를 통해 호스트(1100)와 신호(SGL)를 주고 받으며, 전원 커넥터(power connector, 1221)를 통해 전원을 입력받는다. SSD(1200)는 복수의 불휘발성 메모리(1201~120n), SSD 컨트롤러(1210), 그리고 보조 전원 장치(1220)를 포함할 수 있다. 여기에서, 복수의 불휘발성 메모리(1201~120n)는 낸드 플래시 메모리 이외에도 PRAM, MRAM, ReRAM, FRAM 등으로 구현될 수 있다.
복수의 불휘발성 메모리(1201~120n)는 SSD(1200)의 저장 매체로서 사용된다. 복수의 불휘발성 메모리(1201~120n)는 복수의 채널(CH1~CHn)을 통해 SSD 컨트롤러(1210)와 연결될 수 있다. 하나의 채널에는 하나 또는 그 이상의 불휘발성 메모리가 연결될 수 있다. 하나의 채널에 연결되는 불휘발성 메모리는 동일한 데이터 버스에 연결될 수 있다.
SSD 컨트롤러(1210)는 호스트 인터페이스(1211)를 통해 호스트(1100)와 신호(SGL)를 주고 받는다. 여기에서, 신호(SGL)에는 커맨드, 어드레스, 데이터 등이 포함될 수 있다. 또한 신호(SGL)에는 쓰기 요청된 파일의 카테고리를 나타내는 ID가 포함될 수 있다.
SSD 컨트롤러(1210)는 호스트(1100)의 커맨드에 따라 해당 불휘발성 메모리에 데이터를 쓰거나 해당 불휘발성 메모리로부터 데이터를 읽어낸다.
보조 전원 장치(1220)는 전원 커넥터(1221)를 통해 호스트(1100)와 연결된다. 보조 전원 장치(1220)는 호스트(1100)로부터 전원(PWR)을 입력받고, 충전할 수 있다. 한편, 보조 전원 장치(1220)는 SSD(1200) 내에 위치할 수도 있고, SSD(1200) 밖에 위치할 수도 있다. 예를 들면, 보조 전원 장치(1220)는 메인 보드에 위치하며, SSD(1200)에 보조 전원을 제공할 수도 있다.
SSD 시스템(1000)은 호스트(101)로부터 입력된 데이터의 논리 블록 어드레스(LBA: Logical Block Address)를 기초로 중복 데이터 제거 동작을 수행할 수 있다. SSD 시스템(1000)은 한정된 참조 데이터 내에서 중복 데이터 제거 동작을 수행할 수 있으며, 중복 확률이 높은 데이터에 대하여 선택적으로 중복 데이터 제거 동작을 수행할 수 있으므로 적은 계산량으로 중복 데이터 제거 동작을 수행할 수 있다.
도 11은 본 발명의 실시예에 의한 불휘발성 메모리 장치를 메모리 카드(memory card)에 적용한 블록도이다. 메모리 카드(2000)는 예를 들어, MMC 카드, SD카드, 멀티유즈(multiuse) 카드, 마이크로 SD카드, 메모리 스틱, 컴팩트 SD 카드, ID 카드, PCMCIA 카드, SSD카드, 칩카드(chipcard), 스마트카드(smartcard), USB카드 등일 수 있다.
도 11을 참조하면, 메모리 카드(2000)는 외부와의 인터페이스를 수행하는 인터페이스부(2100), 버퍼 메모리를 갖고 메모리 카드(2000)의 동작을 제어하는 컨트롤러(2200), 본 발명의 실시예들에 따른 불휘발성 메모리 장치(2300)를 적어도 하나 포함할 수 있다. 컨트롤러(2200)는 프로세서로서, 불휘발성 메모리 장치(2300)의 쓰기 동작 및 읽기 동작을 제어할 수 있다. 컨트롤러(2200)는 데이터 버스(DATA)와 어드레스 버스(ADDRESS)를 통해서 비휘발성 메모리 장치(2300) 및 인터페이스부(2100)와 커플링되어 있다.
컨트롤러(2200) 호스트(101)로부터 입력된 데이터의 논리 블록 어드레스(LBA: Logical Block Address)를 기초로 중복 데이터 제거 동작을 수행할 수 있다. 메모리 카드(2000)는 한정된 참조 데이터 내에서 중복 데이터 제거 동작을 수행할 수 있으며, 중복 확률이 높은 데이터에 대하여 선택적으로 중복 데이터 제거 동작을 수행할 수 있으므로 적은 계산량으로 중복 데이터 제거 동작을 수행할 수 있다.
도 12는 도 11의 메모리 카드가 사용되는 다양한 시스템을 설명하는 예시적 도면이다. 도 112를 참조하면, 메모리 카드(2000)는 (a) 비디오 카메라, (b) 텔레비전, (c) 오디오 장치, (d) 게임장치, (e) 전자 음악 장치, (f) 휴대폰, (g) 컴퓨터, (h) PDA(Personal Digital Assistant), (i) 보이스 레코더(voice recorder), (j) PC 카드 등에 사용될 수 있다.
본 발명에 따른 불휘발성 메모리 장치는 다양한 형태들의 패키지를 이용하여 실장될 수 있다. 예를 들면, 본 발명에 따른 불휘발성 메모리 장치는 PoP(Package on Package), Ball grid arrays(BGAs), Chip scale packages(CSPs), Plastic Leaded Chip Carrier(PLCC), Plastic Dual In-Line Package(PDIP), Die in Waffle Pack, Die in Wafer Form, Chip On Board(COB), Ceramic Dual In-Line Package(CERDIP), Plastic Metric Quad Flat Pack(MQFP), Thin Quad Flatpack(TQFP), Small Outline(SOIC), Shrink Small Outline Package(SSOP), Thin Small Outline(TSOP), Thin Quad Flatpack(TQFP), System In Package(SIP), Multi Chip Package(MCP), Wafer-level Fabricated Package(WFP), Wafer-Level Processed Stack Package(WSP), 등과 같은 패키지들을 이용하여 실장될 수 있다.
본 발명의 상세한 설명에서는 구체적인 실시예에 관하여 설명하였으나, 본 발명의 범위에서 벗어나지 않는 한도 내에서 여러 가지로 변형될 수 있다. 예를 들어, 컨트롤러 및 데이터 저장 장치의 세부적 구성은 사용 환경이나 용도에 따라 다양하게 변화 또는 변경될 수 있을 것이다. 본 발명에서 사용된 특정한 용어들은 본 발명을 설명하기 위한 목적에서 사용된 것이며 그 의미를 한정하거나 특허 청구범위에 기재된 본 발명의 범위를 제한하기 위하여 사용된 것은 아니다. 그러므로 본 발명의 범위는 상술한 실시예에 국한되어서는 안되며 후술하는 특허 청구범위 뿐만 아니라 이 발명의 특허 청구범위와 균등한 범위에 대하여도 적용되어야 한다.
101: 호스트
100: 불휘발성 메모리 장치
110: 데이터 저장 장치
120: 컨트롤러
121: 호스트 인터페이스
122: 메모리 인터페이스
123: 프로세싱부
124: 메인 메모리

Claims (10)

  1. 호스트로부터 쓰기 요청 데이터 및 상기 쓰기 요청 데이터의 논리 어드레스를 제공받는 불휘발성 메모리 장치에 있어서:
    복수의 물리 블록들을 포함하며, 어드레스 매핑 테이블 어레이를 저장하는 데이터 저장 장치; 및
    상기 논리 어드레스에 응답하여 상기 어드레스 매핑 테이블 어레이로부터 적어도 하나의 어드레스 매핑 테이블을 선택적으로 로드하는 컨트롤러를 포함하며,
    상기 컨트롤러는 상기 쓰기 요청 데이터에 대한 중복 데이터 제거 동작시 상기 복수의 물리 블록들 중 상기 로드된 어드레스 매핑 테이블에 포함된 물리 어드레스를 가지는 물리 블록에 저장된 데이터를 참조하여 상기 중복 데이터 제거 동작을 수행하는 불휘발성 메모리 장치.
  2. 제 1항에 있어서,
    상기 컨트롤러는 상기 논리 어드레스에 응답하여 상기 데이터 저장 장치로부터 중복 데이터 제거 모드 정보를 더 로드하고, 상기 중복 데이터 제거 모드 정보에 응답하여 중복 데이터 제거 동작을 선택적으로 수행하는 불휘발성 메모리 장치.
  3. 제 1항에 있어서,
    상기 컨트롤러는 중복 데이터 제거 매니저와 상기 적어도 하나의 어드레스 매핑 테이블이 로드되는 메인 메모리; 및
    상기 어드레스 매핑 테이블 어레이로부터 상기 적어도 하나의 어드레스 매핑 테이블이 선택적으로 로드되도록 상기 메인 메모리를 제어하고, 상기 중복 데이터 제거 매니저가 상기 복수의 물리 블록들 중 상기 로드된 어드레스 매핑 테이블에 포함된 물리 어드레스를 가지는 물리 블록에 저장된 데이터를 참조하여 중복 데이터 제거 동작을 수행하도록 상기 메인 메모리를 제어하는 프로세싱부를 포함하는 불휘발성 메모리 장치.
  4. 제 3항에 있어서,
    상기 컨트롤러는 상기 쓰기 요청 데이터와 동일한 데이터가 상기 복수의 물리 블록들 중 상기 로드된 어드레스 매핑 테이블에 포함된 물리 어드레스를 가지는 물리 블록에 저장된 데이터에 존재하는지 판단하고, 상기 판단 결과에 응답하여 상기 어드레스 매핑 테이블을 업데이트하도록 상기 메인 메모리를 제어하는 불휘발성 메모리 장치.
  5. 제 4항에 있어서,
    상기 컨트롤러는 상기 쓰기 요청 데이터와 동일한 데이터가 상기 복수의 물리 블록들 중 상기 로드된 어드레스 매핑 테이블에 포함된 물리 어드레스를 가지는 물리 블록에 저장된 데이터에 존재하면, 상기 쓰기 요청 데이터의 상기 논리 어드레스에 상기 저장된 데이터에 대한 물리 어드레스가 매핑되도록 상기 어드레스 매핑 테이블을 업데이트하는 불휘발성 메모리 장치.
  6. 호스트로부터 쓰기 요청 데이터 및 상기 쓰기 요청 데이터의 논리 어드레스를 제공받는 불휘발성 메모리 장치에 있어서:
    복수의 물리 블록들을 포함하며, 복수의 존 컨텍스트들로 구성된 존 컨텍스트 어레이를 저장하는 데이터 저장 장치; 및
    상기 논리 어드레스에 응답하여 상기 존 컨텍스트 어레이로부터 적어도 하나의 존 컨텍스트를 선택적으로 로드하는 컨트롤러를 포함하고,
    상기 존 컨텍스트는 논리 어드레스에 대한 물리 어드레스의 매핑 정보를 포함하는 어드레스 매핑 테이블 및 해쉬값에 대한 물리 어드레스의 매핑 정보를 포함하는 해쉬 매핑 테이블을 포함하며,
    상기 컨트롤러는 상기 쓰기 요청 데이터에 대한 해쉬값을 계산하고,
    상기 쓰기 요청 데이터에 대한 중복 데이터 제거 동작시 상기 계산된 해쉬값 및 상기 로드된 해쉬 매핑 테이블에 포함된 해쉬값을 참조하여 상기 중복 데이터 제거 동작을 수행하는 불휘발성 메모리 장치.
  7. 제 6항에 있어서,
    상기 컨트롤러는 상기 로드된 해쉬 매핑 테이블에 포함된 해쉬값 중 상기 계산된 해쉬값과 동일한 값이 존재하면, 상기 동일한 해쉬값에 대하여 매핑된 물리 어드레스를 가지는 데이터와 상기 쓰기 요청 데이터를 비교하고, 상기 비교 결과에 응답하여 상기 어드레스 매핑 테이블 및 상기 해쉬 매핑 테이블을 업데이트하는 불휘발성 메모리 장치.
  8. 제 7항에 있어서,
    상기 컨트롤러는 상기 동일한 해쉬값에 대하여 매핑된 물리 어드레스를 가지는 데이터와 상기 쓰기 요청 데이터가 동일하지 않으면, 상기 데이터 저장 장치의 물리 블록에 상기 쓰기 요청 데이터가 저장되도록 상기 데이터 저장 장치를 제어하는 불휘발성 메모리 장치.
  9. 제 8항에 있어서,
    상기 컨트롤러는 상기 동일한 해쉬값에 대하여 매핑된 물리 어드레스를 가지는 데이터와 상기 쓰기 요청 데이터가 동일하지 않으면, 상기 해쉬 매핑 테이블의 상기 동일한 해쉬값에 대하여 상기 쓰기 요청 데이터가 저장된 물리 블록의 물리 어드레스를 더 매핑하는 불휘발성 메모리 장치.
  10. 제 8항에 있어서,
    상기 컨트롤러는 상기 비교 결과에 응답하여 상기 동일한 해쉬값에 대한 충돌 횟수를 계산하고, 상기 동일한 해쉬값에 대하여 매핑된 물리 어드레스를 가지는 데이터와 상기 쓰기 요청 데이터가 동일하지 않으면, 상기 충돌 횟수에 응답하여 상기 해쉬 매핑 테이블을 선택적으로 업데이트하는 불휘발성 메모리 장치.
KR1020130028046A 2013-03-15 2013-03-15 불휘발성 메모리 장치 및 그것의 중복 데이터 제거 방법 KR20140114515A (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020130028046A KR20140114515A (ko) 2013-03-15 2013-03-15 불휘발성 메모리 장치 및 그것의 중복 데이터 제거 방법
US14/202,084 US20140281361A1 (en) 2013-03-15 2014-03-10 Nonvolatile memory device and related deduplication method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020130028046A KR20140114515A (ko) 2013-03-15 2013-03-15 불휘발성 메모리 장치 및 그것의 중복 데이터 제거 방법

Publications (1)

Publication Number Publication Date
KR20140114515A true KR20140114515A (ko) 2014-09-29

Family

ID=51533967

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020130028046A KR20140114515A (ko) 2013-03-15 2013-03-15 불휘발성 메모리 장치 및 그것의 중복 데이터 제거 방법

Country Status (2)

Country Link
US (1) US20140281361A1 (ko)
KR (1) KR20140114515A (ko)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20150088089A (ko) * 2014-01-23 2015-07-31 삼성전자주식회사 저장 장치 및 그것의 동작 방법
KR20180015565A (ko) * 2016-08-03 2018-02-13 삼성전자주식회사 메모리 모듈 및 그것의 동작 방법
KR20180034842A (ko) * 2016-09-28 2018-04-05 에스케이하이닉스 주식회사 메모리 제어장치 및 방법

Families Citing this family (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9436720B2 (en) * 2013-01-10 2016-09-06 Pure Storage, Inc. Safety for volume operations
US10908835B1 (en) 2013-01-10 2021-02-02 Pure Storage, Inc. Reversing deletion of a virtual machine
US11733908B2 (en) 2013-01-10 2023-08-22 Pure Storage, Inc. Delaying deletion of a dataset
US10027547B1 (en) * 2014-03-28 2018-07-17 EMC IP Holding Company LLC Autonomic self-optimization of protection storage
US20150317083A1 (en) * 2014-05-05 2015-11-05 Virtium Technology, Inc. Synergetic deduplication
KR20150139383A (ko) * 2014-06-03 2015-12-11 에스케이하이닉스 주식회사 반도체 장치
JP6488565B2 (ja) * 2014-06-06 2019-03-27 日本電気株式会社 データ放送情報制御装置、データ放送情報表示システム、データ放送情報制御方法およびデータ放送情報制御装置プログラム
US9569114B2 (en) 2014-11-14 2017-02-14 Sk Hynix Memory Solutions Inc. Deduplication using a master and a slave
CN105843551B (zh) * 2015-01-29 2020-09-15 爱思开海力士有限公司 高性能和大容量储存重复删除中的数据完整性和损耗电阻
TWI569139B (zh) * 2015-08-07 2017-02-01 群聯電子股份有限公司 有效資料合併方法、記憶體控制器與記憶體儲存裝置
CN107430602B (zh) * 2015-12-29 2020-05-08 华为技术有限公司 重复数据删除方法及存储设备
KR102532581B1 (ko) * 2016-03-17 2023-05-17 에스케이하이닉스 주식회사 메모리 장치를 포함하는 메모리 시스템 및 그의 동작 방법
US10481799B2 (en) 2016-03-25 2019-11-19 Samsung Electronics Co., Ltd. Data storage device and method including receiving an external multi-access command and generating first and second access commands for first and second nonvolatile memories
US10496543B2 (en) 2016-03-31 2019-12-03 Samsung Electronics Co., Ltd. Virtual bucket multiple hash tables for efficient memory in-line deduplication application
US9983821B2 (en) * 2016-03-29 2018-05-29 Samsung Electronics Co., Ltd. Optimized hopscotch multiple hash tables for efficient memory in-line deduplication application
US10437785B2 (en) 2016-03-29 2019-10-08 Samsung Electronics Co., Ltd. Method and apparatus for maximized dedupable memory
US10528284B2 (en) 2016-03-29 2020-01-07 Samsung Electronics Co., Ltd. Method and apparatus for enabling larger memory capacity than physical memory size
US10678704B2 (en) 2016-03-29 2020-06-09 Samsung Electronics Co., Ltd. Method and apparatus for enabling larger memory capacity than physical memory size
US9966152B2 (en) * 2016-03-31 2018-05-08 Samsung Electronics Co., Ltd. Dedupe DRAM system algorithm architecture
EP3767450A1 (en) * 2016-09-28 2021-01-20 Huawei Technologies Co., Ltd. Method for deduplication in storage system, storage system, and controller
KR102509913B1 (ko) * 2017-01-25 2023-03-14 삼성전자주식회사 최대화된 중복 제거 메모리를 위한 방법 및 장치
US10402355B2 (en) 2017-02-08 2019-09-03 Texas Instruments Incorporated Apparatus and mechanism to bypass PCIe address translation by using alternative routing
US10963171B2 (en) * 2017-10-16 2021-03-30 Red Hat, Inc. Compressibility instrumented dynamic volume provisioning
US10747659B2 (en) * 2018-02-06 2020-08-18 Western Digital Technologies, Inc. Flash fast program mode for high definition video recording and high resolution camera burst mode recording
US11029872B2 (en) * 2018-12-18 2021-06-08 Western Digital Technologies, Inc. Non-volatile storage system with data shaping memory partitions
CN114072759A (zh) * 2019-07-26 2022-02-18 华为技术有限公司 存储系统中数据处理方法、装置及计算机存储可读存储介质
CN114631075A (zh) * 2019-07-30 2022-06-14 华为技术有限公司 基于数据指纹整合的去重
US11106580B2 (en) 2020-01-27 2021-08-31 Hewlett Packard Enterprise Development Lp Deduplication system threshold based on an amount of wear of a storage device
TWI766431B (zh) * 2020-06-22 2022-06-01 慧榮科技股份有限公司 資料處理方法及對應之資料儲存裝置
CN113900582A (zh) 2020-06-22 2022-01-07 慧荣科技股份有限公司 数据处理方法及对应的数据储存装置
KR20220077208A (ko) 2020-11-30 2022-06-09 삼성전자주식회사 데이터 중복 제거 기능을 갖는 스토리지 장치, 스토리지 장치의 동작 방법, 및 스토리지 서버의 동작 방법

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6374266B1 (en) * 1998-07-28 2002-04-16 Ralph Shnelvar Method and apparatus for storing information in a data processing system
TW200828014A (en) * 2006-12-28 2008-07-01 Genesys Logic Inc Flash memory management method with low RAM utilization
US8086799B2 (en) * 2008-08-12 2011-12-27 Netapp, Inc. Scalable deduplication of stored data
US8554743B2 (en) * 2009-12-08 2013-10-08 International Business Machines Corporation Optimization of a computing environment in which data management operations are performed
US20120095968A1 (en) * 2010-10-17 2012-04-19 Stephen Gold Storage tiers for different backup types
JP5851047B2 (ja) * 2011-12-08 2016-02-03 エンパイア テクノロジー ディベロップメント エルエルシー ユーザ間重複排除を可能にするためのストレージディスカウント
TWI486767B (zh) * 2012-06-22 2015-06-01 Phison Electronics Corp 資料儲存方法、記憶體控制器與記憶體儲存裝置
US9495287B2 (en) * 2012-09-26 2016-11-15 International Business Machines Corporation Solid state memory device logical and physical partitioning
US9141554B1 (en) * 2013-01-18 2015-09-22 Cisco Technology, Inc. Methods and apparatus for data processing using data compression, linked lists and de-duplication techniques

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20150088089A (ko) * 2014-01-23 2015-07-31 삼성전자주식회사 저장 장치 및 그것의 동작 방법
KR20180015565A (ko) * 2016-08-03 2018-02-13 삼성전자주식회사 메모리 모듈 및 그것의 동작 방법
KR20180034842A (ko) * 2016-09-28 2018-04-05 에스케이하이닉스 주식회사 메모리 제어장치 및 방법

Also Published As

Publication number Publication date
US20140281361A1 (en) 2014-09-18

Similar Documents

Publication Publication Date Title
KR20140114515A (ko) 불휘발성 메모리 장치 및 그것의 중복 데이터 제거 방법
US20150161000A1 (en) Nonvolatile memory device, distributed disk controller, and deduplication method thereof
KR102580820B1 (ko) 데이터 저장 장치 및 그것의 동작 방법
US9189397B2 (en) Data storage device including buffer memory
US9128618B2 (en) Non-volatile memory controller processing new request before completing current operation, system including same, and method
US20110296084A1 (en) Data storage apparatus and method of writing data
US9785384B2 (en) Semiconductor storage device and method for controlling nonvolatile semiconductor memory
JP6459644B2 (ja) ストレージ制御装置、制御システム及び制御プログラム
US8458394B2 (en) Storage device and method of managing a buffer memory of the storage device
US20150058534A1 (en) Managing method for cache memory of solid state drive
US8281042B2 (en) Memory device and management method of memory device
US20200218653A1 (en) Controller, data storage device, and operating method thereof
WO2017148242A1 (zh) 一种访问叠瓦式磁记录smr硬盘的方法及服务器
US10564862B2 (en) Wear leveling method, memory control circuit unit and memory storage apparatus
JP4992835B2 (ja) ディスク記憶装置およびプログラム
KR20140032789A (ko) 불휘발성 메모리 장치의 컨트롤러 및 그것의 커멘드 스케줄링 방법
KR20200121645A (ko) 컨트롤러 및 그것의 동작 방법과 메모리 시스템
CN111356991B (zh) 逻辑块寻址范围冲突爬虫
US9652172B2 (en) Data storage device performing merging process on groups of memory blocks and operation method thereof
KR20210144249A (ko) 저장 장치 및 이의 동작 방법
US11409473B2 (en) Data storage device and operating method thereof
CN114168067A (zh) 使用虚设虚拟功能的NVMe简单复制命令支持
KR20210028405A (ko) 서치 회로 및 컨트롤러
KR20210018570A (ko) 컨트롤러, 컨트롤러의 동작 방법 및 이를 포함하는 저장 장치
CN110389708B (zh) 平均磨损方法、存储器控制电路单元与存储器存储装置

Legal Events

Date Code Title Description
WITN Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid