KR20130031046A - 플래시 메모리 장치 및 플래시 메모리 장치의 데이터 관리 방법 - Google Patents

플래시 메모리 장치 및 플래시 메모리 장치의 데이터 관리 방법 Download PDF

Info

Publication number
KR20130031046A
KR20130031046A KR1020110094724A KR20110094724A KR20130031046A KR 20130031046 A KR20130031046 A KR 20130031046A KR 1020110094724 A KR1020110094724 A KR 1020110094724A KR 20110094724 A KR20110094724 A KR 20110094724A KR 20130031046 A KR20130031046 A KR 20130031046A
Authority
KR
South Korea
Prior art keywords
data
cold
flash memory
compressed
compression
Prior art date
Application number
KR1020110094724A
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 KR1020110094724A priority Critical patent/KR20130031046A/ko
Publication of KR20130031046A publication Critical patent/KR20130031046A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING; 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; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/40Specific encoding of data in memory or cache
    • G06F2212/401Compressed data
    • GPHYSICS
    • G06COMPUTING; CALCULATING; 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

본 발명은 불휘발성 메모리 장치애 관한 것으로, 좀더 자세하게는 플래시 메모리 장치 및 플래시 메모리 장치의 데이터 관리 방법에 관한 것이다. 본 발명의 실시 예에 따른 플래시 메모리 장치의 데이터 관리 방법은 콜드 리스트 테이블에 기초하여, 플래시 메모리에 저장된 데이터 중 콜드 데이터를 휘발성 메모리에 수집하는 단계; 상기 수집된 콜드 데이터를 압축하는 단계; 및 상기 압축된 콜드 데이터를 상기 플래시 메모리에 저장하는 단계를 포함한다. 본 발명의 실시 예에 따른 플래시 메모리 장치의 데이터 관리 방법은 플래시 메모리의 저장 영역을 효율적으로 사용하고, 동시에 데이터 압축 및 압축 해제 동작에 따른 시간 소모를 최소화하도록 한다.

Description

플래시 메모리 장치 및 플래시 메모리 장치의 데이터 관리 방법{FLASH MEMORY DEVICE AND DATA MANAGE METHOD THEREROF}

본 발명은 불휘발성 메모리 장치에 관한 것으로, 좀더 자세하게는 플래시 메모리 장치 및 플래시 메모리 장치의 데이터 관리 방법에 관한 것이다.

반도체 메모리 장치에는 DRAM, SRAM 등과 같은 휘발성 메모리와 EEPROM, FRAM, PRAM, MRAM, Flash Memory 등과 같은 불휘발성 메모리 등이 있다. 휘발성 메모리는 전원이 차단될 때 저장된 데이터를 잃지만, 불휘발성 메모리는 전원이 차단되더라도 저장된 데이터를 보존한다.

최근 들어 불휘발성 메모리를 사용하는 장치들이 증가하고 있다. 예를 들면 MP3 플레이어, 디지털 카메라, 휴대전화, 캠코더, 플래시 카드 및 SSD(Solid State Disk) 등은 저장장치로 불휘발성 메모리를 사용하고 있다. 불휘발성 메모리들 중에서도 플래시 메모리는 전기적으로 셀의 데이터를 일괄적으로 소거하는 기능을 가지기 때문에, 하드디스크를 대신하여 플래시 메모리가 저장장치로 널리 사용되고 있다.

플래시 메모리는 데이터 기입 전에 반드시 소거 동작이 선행되어야 하며, 플래시 메모리의 이러한 특징은 플래시 메모리의 성능을 저해하는 요인이 된다. 한편, 사용자가 필요로 하는 저장 용량이 늘어남에 따라, 플래시 메모리의 저장 공간을 효율적으로 사용하기 위한 방법이 요구되고 있다.

본 발명의 목적은 데이터 압축 동작을 통하여 플래시 메모리의 저장 영역을 효율적으로 사용하며, 동시에 데이터 압축 및 압축 해제 동작에 따른 시간 소모를 최소화하는 플래시 메모리 장치 및 그것의 데이터 관리 방법을 제공하는 데 있다.

본 발명의 실시 예에 따른 플래시 메모리 장치의 데이터 관리 방법은 콜드 리스트 테이블에 기초하여, 플래시 메모리에 저장된 데이터 중 콜드 데이터를 휘발성 메모리에 수집하는 단계; 상기 수집된 콜드 데이터를 압축하는 단계; 및 상기 압축된 콜드 데이터를 상기 플래시 메모리에 저장하는 단계를 포함한다.

실시 예로써, 상기 콜드 데이터가 상기 휘발성 메모리에 수집된 후, 상기 콜드 데이터가 저장된 페이지를 무효화하는 단계를 더 포함한다.

실시 예로써, 상기 무효화된 페이지가 속하는 블록의 페이지들이 모두 무효화된 페이지들인지의 여부를 판단하는 단계를 더 포함하며, 상기 무효화된 페이지가 속하는 블록의 페이지들이 모두 무효화된 페이지들인 경우, 상기 무효화된 페이지가 속하는 블록에 대한 소거 동작을 수행한다.

실시 예로써, 상기 무효화된 페이지가 속하는 블록의 페이지들이 모두 무효화된 페이지들이 아닌 경우, 가비지 블록을 생성하기 위한 병합 동작을 수행한다.

실시 예로써, 상기 콜드 리스트 테이블은 상기 플래시 메모리에 대한 엑세스 요청이 있을 때마다 업데이트된다.

실시 예로써, 상기 콜드 리스트 테이블은 엑세스 요청 시점에 관한 정보, 데이터 생성 시점에 관한 정보, 읽기 요청된 횟수에 관한 정보 중 적어도 하나를 이용하여 결정된 상기 콜드 데이터에 대한 콜드 값을 관리한다.

실시 예로써, 상기 콜드 데이터에 대한 콜드 값이 클수록 콜드 데이터에 대한 압축률이 증가하는 것을 특징으로 한다.

실시 예로써, 상기 압축된 콜드 데이터를 상기 플래시 메모리에 저장한 후, 상기 압축된 콜드 데이터에 대한 압축 정보를 관리하는 압축 데이터 테이블을 업데이트하는 단계를 더 포함한다.

실시 예로써, 상기 압축 데이터 테이블은 압축률에 관한 정보, 압축 크기에 관한 정보, 압축 로직에 관한 정보들 중 적어도 하나의 정보를 포함한다.

실시 예로써, 상기 압축된 콜드 데이터에 대한 읽기 요청이 있는 경우, 상기 압축 데이터 테이블의 압축 정보를 이용하여 압축 해제 동작을 수행한다.

실시 예로써, 상기 압축 데이터 테이블은 상기 압축된 콜드 데이터가 플래시 메모리에 저장될 될 때마다 업데이트된다.

본 발명의 실시 예에 따른 플래시 메모리 장치는 플래시 메모리; 그리고 상기 플래시 메모리를 제어하는 제어 유닛을 포함하며, 상기 제어 유닛은 상기 플래시 메모리의 저장 단위들 중 콜드 데이터를 압축한 후에 상기 플래시 메모리에 다시 저장하고, 동시에 상기 콜드 데이터를 무효함으로써 가비지 블록을 생성한다.

실시 예로써, 상기 제어 유닛은 상기 플래시 메모리의 저장 단위들 중 콜드 데이터가 저장된 저장 단위를 관리하는 콜드 리스트 테이블; 및 상기 플래시 메모리에 저장된 압축된 콜드 데이터에 대한 압축 정보를 관리하는 압축 데이터 테이블을 포함한다.

실시 예로써, 상기 콜드 리스트 테이블은 플래시 메모리의 저장 단위들에 대한 엑세스 요청 시점에 관한 정보, 데이터 생성 시점에 관한 정보, 그리고 읽기 요청된 횟수에 관한 정보 중 적어도 하나의 정보를 이용하여 결정된 콜드 데이터의 콜드 값에 관한 정보를 관리한다.

실시 예로써, 상기 콜드 리스트 테이블은 상기 플래시 메모리에 대한 엑세스 요청이 있을 때마다 업데이트되는 것을 특징으로 한다.

실시 예로써, 상기 압축 데이터 테이블은 상기 압축된 콜드 데이터에 대한 압축률에 관한 정보, 압축 크기에 관한 정보, 압축 로직에 관한 정보 중 적어도 하나의 정보를 포함하는 것을 특징으로 한다.

실시 예로써, 상기 압축 데이터 테이블은 상기 압축된 콜드 데이터가 상기 플래시 메모리에 저장될 때마다 업데이트되는 것을 특징으로 한다.

실시 예로써, 상기 제어 유닛은 상기 콜드 데이터를 임시로 저장하는 워크 메모리; 및 상기 워크 메모리에 임시로 저장된 콜드 데이터를 압축하는 압축기를 포함한다.

실시 예로써, 상기 압축기는 상기 워크 메모리에 임시로 저장된 콜드 데이터의 콜드 정도에 따라 서로 다른 압축률로 압축 동작을 수행한다.

실시 예로써, 상기 압축기는 제 1 압축률을 제공하는 제 1 압축 로직; 및 상기 제 1 압축률보다 높은 제 2 압축률을 제공하는 제 2 압축 로직을 포함하며, 상기 워크 메모리에 임시로 저장된 콜드 데이터는 콜드 정도에 따라 상기 제 1 압축 로직 또는 제 2 압축 로직 중 어느 하나에 의하여 선택적으로 압축된다.

본 발명의 실시 예에 따른 플래시 메모리 장치는 압축 가비지 컬렉션 동작을 지원한다. 따라서, 본 발명의 실시 예에 따른 플래시 메모리 장치는 플래시 메모리의 저장 영역을 효율적으로 사용하며, 동시에 데이터 압축 및 압축 해제 동작에 따른 시간 소모를 최소화한다.

도 1은 본 발명의 실시 예에 따른 메모리 시스템을 보여주는 블록도이다.
도 2는 본 발명의 실시 예에 따른 플래시 메모리 시스템을 보여주는 블록도이다.
도 3은 도 2의 플래시 메모리 시스템의 데이터 관리 동작을 설명하기 위한 순서도이다.
도 4 내지 도 7은 도 2의 플래시 메모리 시스템의 콜드 리스트 테이블의 업데이트 동작을 설명하기 위한 도면들이다.
도 8 내지 도 13은 도 2의 플래시 메모리 시스템의 압축 가비지 컬렉션 동작을 설명하기 위한 도면들이다.
도 14는 도 2의 플래시 메모리 시스템의 압축 가비지 컬렉션 동작의 일 실시 예를 보여주는 도면이다.
도 15는 도 2의 플래시 메모리 시스템의 압축 가비지 컬렉션 동작의 일 실시 예를 보여주는 도면이다.
도 16은 도 2의 압축기의 동작을 좀더 자세히 설명하기 위한 도면이다.
도 17은 도 16의 압축기의 일 구현 예를 보여주는 도면이다.
도 18은 도 16의 압축기의 다른 구현 예를 보여주는 도면이다.
도 19는 도 16의 압축기의 다른 구현 예를 보여주는 도면이다.
도 20은 도 2의 플래시 메모리 장치의 엑세스 동작을 설명하기 위한 도면이다.
도 21은 도 2의 플래시 메모리 시스템의 일 응용 예를 보여주는 도면이다.
도 22는 본 발명의 실시 예에 따른 플래시 메모리 시스템을 메모리 카드에 적용한 예를 보여준다.
도 23은 본 발명의 실시 예에 따른 압축 가비지 컬렉션 기법을 솔리드 스테이트 드라이브(SSD)에 적용한 예를 보여준다.
도 24는 도 23에 도시된 SSD 컨트롤러의 구성을 예시적으로 보여주는 블록도이다.
도 25는 본 발명의 실시 예에 따른 압축 가비지 컬렉션 기법을 플래시 메모리 모듈에 구현한 예를 보여주는 블록도이다.

이하, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 본 발명의 기술적 사상을 용이하게 실시할 수 있을 정도로 상세히 설명하기 위하여, 본 발명의 실시 예 또는 적용 예를 첨부된 도면을 참조하여 설명하기로 한다.

Ⅰ. 압축된 콜드 데이터를 저장하는 메모리 시스템

도 1은 본 발명의 실시 예에 따른 메모리 시스템(100)을 보여주는 블록도이다. 도 1을 참조하면, 메모리 시스템(100)은 호스트(110) 및 저장 장치(120)를 포함하며, 저장 장치(120)는 제어 유닛(121)과 저장 유닛(122)을 포함한다.

저장 장치(120)는 호스트(110)의 읽기 요청 또는 쓰기 요청에 응답하여, 저장 유닛(122)에 저장된 데이터를 독출하거나 저장 유닛(122)에 데이터를 기입한다. 이 경우, 저장 장치(122)에 저장된 데이터에 대한 접근 빈도는 데이터의 중요성 등에 의하여 다를 수 있다. 예를 들어, 저장 유닛(122)에 저장된 데이터 중 특정 데이터는 호스트(110)에 의하여 수시로 읽기 요청될 수 있으며, 저장 유닛(122)에 저장된 데이터 중 특정 데이터는 긴 시간 동안 읽기 요청되지 않을 수 있다. 이 경우, 수시로 접근 요청되는 데이터는 핫 데이터(Hot data), 긴 시간 동안 접근 요청되지 않는 데이터는 콜드 데이터(Cold data)라 각각 칭해질 수 있다.

한편, 저장 유닛(122)에 저장할 수 있는 공간은 한정되어 있다. 저장 유닛(122)의 저장 공간을 효과적으로 활용하기 위하여, 본 발명의 실시 예에 따른 저장 장치(120)는 콜드 데이터를 압축하고, 압축된 콜드 데이터를 저장 유닛(122)에 저장한다. 또한, 콜드 데이터의 분류 및 압축을 지원하기 위하여, 본 발명의 실시 예에 따른 저장 장치(120)는 콜드 리스트 테이블(123) 및 압축 데이터 테이블(124)을 이용하여, 콜드 데이터를 관리한다.

콜드 리스트 테이블(123)은 저장 유닛(122)에 저장된 데이터들을 콜드 값에 따라 분류한다. 여기서, 콜드 값은 데이터에 대한 접근 빈도, 접근 시간 등에 따른 해당 데이터의 활용도를 의미한다. 예를 들어, 콜드 값이 큰 데이터는 접근 횟수가 적거나, 접근 시기가 오래된 데이터를 의미한다. 콜드 값이 작은 데이터는 접근 횟수가 많거나, 접근 시기가 최근인 데이터를 의미한다.

콜드 값이 소정 기준 값보다 큰 경우, 제어 유닛(121)은 콜드 리스트 테이블(123)을 참조하여 해당 콜드 데이터를 압축한다. 압축된 콜드 데이터는 다시 저장 유닛(122)에 저장된다. 이 경우, 압축된 콜드 데이터에 대한 정보는 압축 데이터 테이블(124)에서 관리된다.

압축 데이터 테이블(124)은 압축된 콜드 데이터에 대한 정보를 관리한다. 예를 들어, 압축 데이터 테이블(124)은 압축된 콜드 데이터의 압축률, 압축된 콜드 데이터의 크기 등에 대한 정보를 관리한다. 압축된 콜드 데이터의 압축 해제 요청 시에, 제어 유닛(121)은 압축 데이터 테이블(121)을 참조하여 압축된 콜드 데이터에 대한 압축 해제 동작을 수행한다. 예를 들어, 호스트(110)로부터 압축된 콜드 데이터에 대한 읽기 요청이 있는 경우, 제어 유닛(121)은 압축 데이터 테이블(124)을 참조하여 압축된 콜드 데이터에 대한 압축 해제 동작을 수행하고, 압축 해제된 콜드 데이터에 대한 정보를 호스트(110)에 제공한다.

상술한 바와 같이, 본 발명의 실시 예에 따른 메모리 시스템(100)은 콜드 데이터를 압축하고, 압축된 콜드 데이터를 저장 유닛(122)에 저장한다. 따라서, 메모리 시스템(100)은 저장 유닛(122)의 저장 공간을 효과적으로 사용할 수 있다. 또한, 접근 빈도가 낮은 콜드 데이터에 대하여 압축 및 압축 해제 동작을 수행함으로써, 메모리 시스템(100)은 압축 및 압축 해제에 필요한 시간 소모를 줄일 수 있다.

한편, 본 발명의 실시 예에 따른 메모리 시스템(100)은 다양한 저장 장치(120)로 다양한 메모리 장치를 사용할 수 있다. 예를 들어, 메모리 시스템(100)의 저장 장치(120)로는 플래시 메모리(Flash Memory), DRAM, RRAM, FRAM, PRAM, MRAM 등이 사용될 수 있다.

이 중, 플래시 메모리는 데이터를 기입하기 위해서는 삭제 연산이 반드시 선행되어야 하고, 기입되는 데이터의 단위보다 삭제되는 데이터의 단위가 큰 특징들을 갖는다. 이러한 특징들로 인하여, 플래시 메모리는 플래시 변환 계층(Flash Translation Layer, 이하 FTL)을 구비하고, 블록 전체가 무효화된 데이터로 채워진 가비지 블록(garbage block)을 생성할 수 있다. 가비지 블록을 생성하는 동작은 일반적으로 가비지 컬렉션(garbage collection) 동작이라 칭해질 수 있다.

도 1의 저장 장치(120)로 플래시 메모리가 사용되는 경우, 본 발명의 실시 예에 따른 메모리 시스템(100)은 소요되는 시간을 최소화하기 위하여 콜드 데이터의 압축 및 압축된 콜드 데이터를 저장하는 동작을 가비지 컬렉션 동작과 동시에 수행한다. 이는 압축 가비지 컬렉션(compressed garbage collection) 동작이라 칭해질 수 있다. 이하에서는 압축 가비지 컬렉션 동작을 지원하는 플래시 메모리 시스템의 실시 예가 보다 자세히 설명된다.

Ⅱ. 압축 가비지 컬렉션 동작을 지원하는 플래시 메모리 시스템

도 2는 본 발명의 실시 예에 따른 플래시 메모리 시스템(1000)을 보여주는 블록도이다. 도 2를 참조하면, 플래시 메모리 시스템(1000)은 호스트(1100) 및 플래시 저장 장치(1200)를 포함하며, 플래시 저장 장치(1200)는 제어 유닛(1300) 및 플래시 메모리(1400)를 포함한다.

제어 유닛(1300)은 호스트(1100)로부터 플래시 메모리(1400)에 대한 엑세스가 요청될 때, 플래시 메모리(1400)를 제어한다. 예를 들어, 제어 유닛(1300)은 플래시 메모리(1400)의 읽기 동작, 쓰기 동작, 또는 소거 동작을 제어한다.

또한, 제어 유닛(1300)은 호스트(1100)가 플래시 메모리(1400)를 하드디스크처럼 읽기 동작, 쓰기 동작 및 소거 동작을 수행하도록 플래시 메모리(1400)의 맵핑 정보를 관리한다. 제어 유닛(1300)은 호스트 인터페이스(1310), 중앙 처리 장치(320), 워크 메모리(1330), 압축기(1340), 버퍼 메모리(1350), 그리고 플래시 메모리(1360)를 포함한다.

호스트 인터페이스(1310)는 플래시 저장 장치(1200)와 호스트(1100) 사이의 인터페이스 기능을 제공한다. 중앙 처리 장치(1320)는 플래시 저장 장치(1200)의 전반적인 동작을 제어한다.

워크 메모리(1330)는 FTL 기능을 수행하는데 필요한 소프트웨어를 저장하는데 사용된다. 또한, 워크 메모리(1330)는 플래시 메모리(1400)의 맵핑 정보를 저장하는데 사용된다. 이를 위하여, 워크 메모리(1330)는 맵핑 테이블(1331)을 포함한다.

맵핑 테이블(1331)은 호스트(1100)로부터 요청된 논리 주소(Logical Address, LA)와 플래시 메모리(1400)의 물리 주소(Physical Address, PA) 사이의 맵핑 정보를 관리한다. 맵핑 테이블(1331)은 블록 맵핑 기법, 페이지 맵핑 기법, 그리고 혼합 맵핑 기법 중 어느 하나의 기법을 사용하여 맵핑 정보를 관리할 수 있다.

또한, 맵핑 테이블(1331)은 호스트(1100)로부터 요청된 데이터가 압축된 콜드 데이터인지의 여부에 대한 정보를 관리한다. 예를 들어, 호스트(1100)로부터 읽기 요청이 있는 경우, 제어 유닛(1300)은 맵핑 테이블(1331)을 참조하여, 논리 주소(LA)에 대응하는 물리 주소(PA)의 데이터가 압축된 콜드 데이터인지의 여부를 판단한다.

계속해서, 워크 메모리(1330)는 콜드 데이터를 압축하는 동작 및 압축된 콜드 데이터를 압축 해제하는 동작을 수행하기 위한 정보를 관리한다. 이를 위하여, 워크 메모리(1330)는 콜드 리스트 테이블(1332) 및 압축 데이터 테이블(1333)을 포함한다.

콜드 리스트 테이블(1332)은 데이터가 저장된 플래시 메모리(1400)의 각 블록 또는 페이지의 콜드 값에 대한 정보를 관리한다. 예를 들어, 플래시 메모리(1400)에 저장된 데이터가 블록 단위로 관리되는 경우, 콜드 리스트 테이블(1332)은 각 블록에 대응하는 콜드 값에 대한 정보를 관리한다. 이 경우, 콜드 값은 각 블록에 대한 접근 빈도, 접근 시간, 생성 시간 등에 기초하여 결정될 수 있다.

압축 가비지 컬렉션 동작이 수행되는 경우, 제어 유닛(1300)은 콜드 리스트 테이블(1332)을 참조하여, 플래시 메모리의 블록들(또는 페이지들) 중 콜드 데이터가 저장된 블록(또는 페이지)를 수집(collect)한다. 콜드 리스트 테이블(1332)에서 관리되는 각 블록(또는 페이지)의 콜드 값에 대한 정보는 호스트(1100)로부터 각 블록(또는 페이지)의 엑세스 요청이 있을 때마다 업데이트 된다.

압축 데이터 테이블(1333)은 압축된 콜드 데이터에 대한 압축 정보를 관리한다. 예를 들어, 압축 가비지 컬렉션 동작이 수행되는 경우, 압축 데이터 테이블(1333)은 압축된 콜드 데이터에 대한 압축률, 압축 크기 등의 정보를 관리한다. 호스트(1100)로부터 압축된 콜드 데이터에 대한 엑세스 요청이 있는 경우, 제어 유닛(1300)은 압축 데이터 테이블(1333)을 참조하여, 압축된 콜드 데이터에 대한 압축 해제 동작을 수행한다.

압축기(1340)는 압축 가비지 컬렉션이 수행되는 경우에 수집된 콜드 데이터에 대한 압축 동작을 수행한다. 압축기(1340)에 의하여 압축된 콜드 데이터는 버퍼 메모리(1350)를 통하여 플래시 메모리(1400)에 저장된다. 압축된 콜드 데이터가 저장된 플래시 메모리(1400)의 블록은 압축 블록(CB, Compressed Block)이라 칭해질 수 있다. 압축기(1340)는 콜드 데이터의 콜드 값에 따라 서로 다른 압축률을 갖도록 다양하게 구현될 수 있으며, 이는 이하의 도 16 내지 도 19에서 좀더 자세히 설명된다.

계속해서 도 2를 참조하면, 버퍼 메모리(1350)는 플래시 메모리(1400)에 데이터를 저장하는 경우 또는 플래시 메모리(1400)로부터 데이터를 읽는 경우에 임시로 데이터를 저장하는데 사용된다. 버퍼 메모리(1350)는, 예를 들어, 플래시 메모리(1400)의 페이지 사이즈에 대응하는 저장 용량을 가질 수 있다. 버퍼 메모리(1350)와 워크 메모리(1330)는 각각 휘발성 메모리(예를 들면, SRAM, DRAM)로 구현될 수 있다. 또한, 버퍼 메모리(1350)와 워크 메모리(1330)는 하나의 휘발성 메모리(예를 들면, SRAM, DRAM)로 구현될 수도 있다.

플래시 컨트롤러(1350)는 중앙 처리 장치(1320)의 제어 하에 플래시 메모리의 엑세스 동작(예를 들면, 읽기/쓰기/소거 동작들)을 제어하도록 구현된다.

플래시 메모리(1400)는 복수의 메모리 블록들로 구성된 메모리 셀 어레이를 포함한다. 각 메모리 블록은 복수의 페이지들로 구성된다. 도 2에서는 3개의 메모리 블록들(1411~1413)이 예시적으로 도시되어 있다. 각 메모리 블록은 4개의 페이지들을 갖는 것으로 예시적으로 도시되어 있다. 플래시 메모리(1400)의 하나의 메모리 셀에는 한 비트 또는 두 비트 이상의 데이터가 저장될 수 있다.

플래시 메모리(1400)의 메모리 블록들은 데이터 영역, 로그 영역, 그리고 메타 영역으로 구분될 수 있다. 예를 들어, 맵핑 테이블(1331), 콜드 리스트 테이블(1332), 그리고 압축 데이터 테이블(1333)의 정보들은 유휴 시간(idle time) 또는 소정 시간 간격마다 플래시 메모리(1400)의 메타 영역에 저장될 수 있다. 메타 영역에 저장된 맵핑 테이블(1331), 콜드 리스트 테이블(1332), 그리고 압축 데이터 테이블(1333)의 정보들은 파워-업(power up) 동작 시에 워크 메모리(1330)로 자동 로딩 될 수 있다. 다만, 이는 예시적인 것이며, 플래시 메모리(1400)의 메모리 블록들은 FTL의 맵핑 기법에 따라 다양하게 구분될 수 있다.

본 발명의 실시 예에 따른 플래시 메모리 시스템(1000)은 압축 가비지 컬렉션 동작을 지원한다. 즉, 플래시 메모리 시스템(1000)은 콜드 데이터들이 저장된 페이지(또는 블록)을 무효화함으로써 가비지 블록(garbage block)을 생성하고, 동시에 수집된 콜드 데이터들을 압축하여 플래시 메모리에 다시 저장한다.

구체적으로, 압축 가비지 컬렉션 동작이 수행되는 경우, 플래시 메모리 시스템(1000)은 콜드 리스트 테이블(1332)을 참조하여 콜드 데이터들을 수집하고, 콜드 데이터들에 대응하는 페이지(또는 블록)을 무효화함으로써 가비지 블록을 생성한다. 또한, 플래시 메모리 시스템(1000)은 수집된 콜드 데이터들을 압축기(1340)를 이용하여 압축하고, 압축된 콜드 데이터를 플래시 메모리의 일정 영역(예를 들어, 압축 영역(CB))에 저장한다.

압축 가비지 컬력션 동작을 지원함으로써, 플래시 메모리 시스템(1000)은 콜드 데이터의 압축 동작에 따른 시간 소모를 최소화함과 동시에, 플래시 메모리(1400)의 저장 영역을 효과적으로 사용할 수 있다.

도 3은 도 2의 플래시 메모리 시스템(1000)의 데이터 관리 동작을 설명하기 위한 순서도이다.

도 2에서 설명된 바와 같이, 플래시 메모리 시스템(1000)은 압축 가비지 컬렉션 동작을 지원한다. 압축 가비지 컬렉션 동작을 지원하기 위하여, 플래시 메모리 시스템(1000)은 콜드 리스트 테이블(1332)을 업데이트하는 단계(S10 단계), 콜드 리스트 테이블(1332)을 참조하여 압축 가비지 컬렉션 동작을 수행하는 단계(S20 단계), 그리고 맵핑 테이블(1331) 및 압축 데이터 테이블(1333)을 참조하여 압축 해제 동작을 수행하는 단계에 따라 플래시 메모리(1400)에 저장된 데이터를 관리한다. 이하에서는, 각 단계에서의 플래시 메모리 시스템(1000)의 동작이 좀더 구체적으로 설명된다.

Ⅲ. 콜드 리스트 테이블의 업데이트 동작

도 4 내지 도 7은 도 2의 플래시 메모리 시스템(1000)의 콜드 리스트 테이블(1332)의 업데이트 동작을 설명하기 위한 도면들이다. 도 2에서 설명된 바와 같이, 콜드 리스트 테이블(1332)은 플래시 메모리(1400)에 대한 엑세스 요청이 있을 때마다 업데이트 된다. 이하에서는 도 2를 참조하여, 콜드 리스트 테이블(1332)의 업데이트 동작이 자세히 설명된다. 설명의 편의상, FTL은 페이지 맵핑 기법에 따라 데이터를 관리한다고 가정된다.

도 4를 참조하면, S110 단계에서, 플래시 메모리(1400)에 대한 엑세스 동작이 요청된다. 예를 들어, 호스트(1100)로부터 플래시 메모리(400)에 저장된 데이터에 대한 읽기 동작, 새로운 데이터의 쓰기 동작, 또는 기존 데이터에 대한 업데이트 동작 등이 요청된다.

S120 단계에서, 엑세스 요청된 데이터에 대응하는 페이지의 엑세스 정보(access information)가 업데이트 된다.

예를 들어, 도 5에 도시된 바와 같이, 엑세스 정보는 해당 페이지에 대한 접근 요청 시기(Time Stamp), 해당 페이지의 데이터 저장 시기(Age), 해당 페이지에 저장된 데이터에 대한 읽기 요청 횟수(Read Count), 해당 페이지에 저장된 데이터에 대한 쓰기 또는 업데이트 요청 횟수(Write Count) 등의 요소들(factor)을 포함할 수 있다. 또한, 요소들에는 가중치(weight)들이 각각 부여된다. 엑세스 정보의 각 요소 및 가중치는 설계자에 따라 다양하게 정의될 수 있으며, 각 요소 및 이에 대한 가중치는 콜드 값을 결정하는 데 사용된다.

한편, 엑세스 정보(1330)는 플래시 메모리(1400)의 메타 영역에 저장될 수 있으며, 파워-업 동작 시에 워크 메모리(1330)에 자동 로딩될 수 있다. 플래시 메모리(1400)에 대한 엑세스 동작이 요청되는 경우, 제어 유닛(1300)은 엑세스 요청된 페이지에 관한 엑세스 정보의 각 요소의 값을 업데이트 한다. 업데이트된 엑세스 정보는 워크 메모리(1330)에 다시 저장된다.

계속해서 도 4를 참조하면, S130 단계에서, 콜드 리스트 테이블(1332)이 업데이트 된다.

예를 들어, 도 6에 도시된 바와 같이, 콜드 리스트 테이블(1332)은 엑세스 요청된 페이지의 물리 주소(PA, Physical Address) 및 콜드 값(CV, Cold Value)을 포함한다. 콜드 값은 도 5의 엑세스 정보의 각 요소 및 가중치에 따라 결정되며, 콜드 값을 결정하는 수식은 설계자에 따라 다양하게 정의될 수 있다. 도 6에서, 콜드 값이 큰 페이지는 해당 페이지에 대한 접근 빈도가 낮은 것을 의미하고, 콜드 값이 작은 페이지는 해당 페이지에 대한 접근 빈도가 높은 것을 의미한다.

제어 유닛(1330)은 업데이트된 엑세스 정보에 기초하여 해당 페이지의 콜드 값을 다시 계산하고, 페이지들을 콜드 값에 따라 순차적으로 정리한다. 이 경우, 기준 콜드 값(CVref)보다 높은 콜드 값을 갖는 페이지들은 콜드 데이터이며, 콜드 데이터는 압축 가비지 컬렉션 동작의 대상이 된다.

예를 들어, 도 6 및 도 7에 도시된 바와 같이, 기준 콜드 값(CVref)이 '5'로 설정되는 경우, '5'보다 높은 콜드 값을 갖는 페이지들(제 1 블록(1411)의 제 1 및 제 3 페이지(page1, page3), 제2 블록(1412)의 제 2 페이지(page2), 제3 블록(1413)의 제 3 페이지(page3))은 콜드 데이터들이며, 콜드 데이터들은 압축 가비지 컬렉션 동작의 대상이 된다.

상술한 바와 같이, 플래시 메모리(1400)에 대한 엑세스 요청이 있을 때마다, 콜드 리스트 테이블(1332)은 업데이트 된다. 따라서, 이후에 압축 가비지 컬렉션 동작이 수행되는 경우, 제어 유닛(1300)은 콜드 리스트 테이블(1332)을 참조하여, 콜드 데이터들을 판단할 수 있다.

Ⅳ. 압축 가비지 컬렉션 동작

도 8 내지 도 13은 도 2의 플래시 메모리 시스템(1000)의 압축 가비지 컬렉션 동작을 설명하기 위한 도면들이다. 도 2에서 설명된 바와 같이, 압축 가비지 컬렉션 동작이 수행되는 경우, 플래시 메모리 시스템(1000)은 콜드 데이터들을 무효화함으로써 가비지 블록을 생성하고, 동시에 콜드 데이터들을 압축하여 플래시 메모리(1400)에 저장한다. 따라서, 콜드 데이터의 압축 동작에 따른 시간 소모가 최소화됨과 동시에, 플래시 메모리(1400)의 저장 영역이 효과적으로 사용될 수 있다.

이하에서는 도 2를 참조하여, 플래시 메모리 시스템(1000)의 압축 가비지 컬렉션 동작이 자세히 설명된다. 설명의 편의상, FTL은 페이지 맵핑 기법에 따라 데이터를 관리한다고 가정된다. 또한, 설명의 편의상, 도 6 및 7에 도시된 바와 같이, 가준 콜드 값은 '5'이며, 콜드 페이지들은 제 1 블록(1411)의 제 1 및 제 3 페이지들(page1, page3), 제2 블록(1412)의 제 2 페이지(page2), 그리고 제 3 블록(1413)의 제 3 페이지(page3)라고 가정된다. 또한, 제 1 블록(1411)의 제 2 및 제 4 페이지(page2, page4)에 저장된 데이터는 무효 데이터(invalid data)라고 가정된다.

도 8을 참조하면, S210 단계에서, 가비지 컬렉션(garbage collection) 동작이 요청된다. 즉, 플래시 메모리(1400)에 데이터가 쓰여지지 않은 빈 블록(empty block)이 충분하지 않은 경우, 플래시 저장 장치(1200)는 빈 블록을 생성하기 위한 가비지 컬렉션 동작을 시작한다.

본 발명의 실시 예에 있어서, 가비지 블록을 생성하는 동작과 콜드 데이터를 압축하는 동작이 동시에 수행된다. 따라서, 본 발명의 가비지 컬렉션 동작은 압축 가비지 컬렉션 동작이라 칭해질 수 있다. 한편, 가비지 컬렉션 동작은 플래시 저장 장치(1200)의 유휴 시간(idle time)에 수행될 수 있다.

S220 단계에서, 제어 유닛(1320)은 콜드 리스트 테이블(1332)을 참조하여, 콜드 데이터들을 탐지(detect)한다.

예를 들어, 도 9에 도시된 바와 같이, 제어 유닛(1300)은 콜드 리스트 테이블(1332)을 참조하여, '5' 이상의 콜드 값을 갖는 제 1 블록(1411)의 제 1 및 제 3 페이지(page1, page3), 제 2 블록(1412)의 제 2 페이지(page2), 제 3 블록(1413)의 제 3 페이지(page3)를 콜드 페이지들로 판단한다.

S230 단계에서, 콜드 데이터들이 워크 메모리(1330)에 수집된다. 또한, 콜드 데이터들이 저장된 원 페이지들 무효화 처리됨으로써, 가비지 블록이 생성된다.

예를 들어, 도 9에 도시된 바와 같이, 제어 유닛(1300)은 제 1 블록(1411)의 제 1 및 제 3 페이지(page1, page3), 제 2 블록(1412)의 제 2 페이지(page2), 제 3 블록(1413)의 제 3 페이지(page3)에 저장된 데이터들(즉, 콜드 데이터들)을 워크 메모리(1330)에 수집한다.

콜드 데이터들이 워크 메모리(1330)에 수집되면, 콜드 데이터들이 저장된 원 페이지들은 무효화(invalid) 된다. 이 경우, 도 10에 도시된 바와 같이, 제 1 블록(1411)의 페이지들에 저장된 데이터는 모두 무효화이다. 따라서, 제어 유닛(1300)은 제 1 블록(1411)을 가비지 블록으로 판단하고, 제 1 블록(1411)에 대한 소거 동작을 수행함으로써 빈 블록을 생성한다.

S240 단계에서, 워크 메모리(1330)에 수집된 콜드 데이터들에 대한 압축 동작이 수행된다.

예를 들어, 도 11에 도시된 바와 같이, 압축기(1340)는 워크 메모리(1330)에 수집된 콜드 데이터들을 압축한다. 이 경우, 압축기(1340)는 기준 콜드 값의 레벨에 따라 다양한 압축률을 갖도록 구현될 수 있다. 예를 들어, 기준 콜드 값이 클수록, 압축기(1340)는 큰 압축률을 갖도록 구현될 수 있다.

S250 단계에서, 압축기(1340)에 의하여 압축된 콜드 데이터들이 플래시 메모리(1400)의 일정 영역에 저장된다. 이 경우, 압축된 콜드 데이터들이 저장되는 메모리 블록은 압축 블록(CB)이라 칭해질 수 있다.

예를 들어, 도 11에 도시된 바와 같이, 압축기(1340)에 의하여 압축된 콜드 데이터들은 플래시 메모리(1400)의 제 4 블록(1414)의 제 4 페이지에 저장될 수 있고, 제 4 블록(1414)은 압축 블록이라 칭해질 수 있다.

S260 단계에서, 맵핑 테이블(1331) 및 압축 데이터 테이블(1333)에 대한 업데이트 동작이 수행된다.

예를 들어, 도 11에 도시된 바와 같이, 콜드 데이터들은 압축된 후에 제 4 블록(1414)의 제 4 페이지(page4)에 저장된다. 따라서, 제어 유닛(1300)은, 도 12에 도시된 바와 같이, 콜드 데이터들에 대응하는 논리 주소(LA 1~4)가 압축된 콜드 데이터들에 대응하는 물리 주소(PA 44)에 대응하도록 맵핑 테이블(1331)을 업데이트 한다. 또한, 제어 유닛(1330)은 물리 주소(PA 44)에 저장된 데이터가 압축 데이터임을 나타내는 압축 상태 정보(CSI, Compressed State Information)를 업데이트 한다.

또한, 도 13에 도시된 바와 같이, 제어 유닛(1333)은 압축된 콜드 데이터들의 압축 정보가 저장되도록, 압축 데이터 테이블(1333)을 업데이트 한다. 예를 들어, 압축 데이터 테이블(1333)은 도 13에 도시된 바와 같이 압축된 콜드 데이터들이 저장된 페이지의 물리 주소(PA), 압축률(Compression Rate), 압축 크기(Compression Rate) 등의 정보를 관리할 수 있다. 압축 데이터 테이블(1333)에서 관리되는 압축 정보는 압축기(1340)의 구현 방법에 따라 다양하게 정의될 수 있다.

맵핑 테이블(1331) 및 압축 데이터 테이블(1333)에서 관리되는 정보는 향후 압축된 콜드 데이터에 대한 엑세스 요청이 있는 경우, 압축 해제 동작을 수행하기 위하여 사용된다.

상술한 바와 같이, 플래시 메모리(1400)에 빈 블록이 생성될 필요가 있는 경우, 플래시 저장 장치(1200)는 압축 가비지 컬렉션 동작을 수행함으로써 가비지 블록을 생성할 수 있다. 압축 가비지 컬력션 동작을 지원함으로써, 플래시 메모리 시스템(1000)은 콜드 데이터의 압축 동작에 따른 시간 소모를 최소화함과 동시에, 플래시 메모리(1400)의 저장 영역을 효과적으로 사용할 수 있다.

한편, 상술한 설명은 예시적인 것으로 이해되어야 하며, 본 발명의 실시 예는 이에 한정되지 않는다. 예를 들어, 콜드 데이터들은 워크 메모리(1330)를 이용하지 않고, 버퍼 메모리(1350)를 이용하여 수집 및 압축될 수 있다. 이하에서는, 본 발명의 다른 실시 예에 따른 압축 가비지 컬렉션 동작이 좀더 자세히 설명된다.

도 14는 도 2의 플래시 메모리 시스템(1000)의 압축 가비지 컬렉션 동작의 일 실시 예를 보여주는 도면이다. 도 14의 압축 가비지 컬렉션 동작은 도 8의 압축 가비지 컬렉션 동작과 유사하다. 따라서, 이하에서는 도 8의 압축 가비지 컬렉션 동작과의 차이점이 중점적으로 설명된다.

도 14를 참조하면, 가비지 컬렉션 동작의 요청이 있으면(S310 단계), 제어 유닛(1300)은 콜드 리스트 테이블(1332)을 참조하여 콜드 데이터들을 감지하고(S320 단계), 콜드 데이터들을 워크 메모리(1330)에 수집한다(S330 단계). 이 경우, 콜드 데이터들이 저장된 원 페이지들은 무효화 된다.

이 후, 새로운 가비지 블록이 생성되었는 지의 여부가 판단된다(S340 단계).

새로운 가비지 블록이 생성된 경우, 제어 유닛(1330)은 콜드 데이터들을 압축하고(S360 단계), 압축된 콜드 데이터들을 압축 블록에 저장하며(S370 단계), 맵핑 테이블(1331) 및 압축 데이터 테이블(1333)을 업데이트 한다(S380 단계). 새로운 가비지 블록이 생성되는 경우의 동작은 도 8의 동작과 유사하므로 자세한 설명은 생략된다.

새로운 가비지 블록이 생성되지 않은 경우, 제어 유닛(1330)은 일반적인 합병 동작(merge operation)을 수행한다. 즉, 도 8과 달리, 콜드 데이터들이 저장된 페이지들을 무효화하는 것으로 가비지 블록이 생성되지 않는 경우, 제어 유닛(1330)은 가비지 블록을 생성하기 위하여 일반적인 합병 동작을 수행한다. 이러한 합병 동작은 새로운 가비지 블록이 생성될 때까지 반복된다. 새로운 가비지 블록이 생성된 경우, 가비지 블록에 대한 소거 동작이 수행된다. 한편, 워크 메모리(1330)에 수집된 콜드 데이터들은 압축되고(S360 단계), 압축된 콜드 데이터들은 압축 블록에 저장되며(S370 단계), 맵핑 테이블(1331) 및 압축 데이터 테이블(1333)은 업데이트 된다(S380 단계).

도 15는 도 2의 플래시 메모리 시스템(1000)의 압축 가비지 컬렉션 동작의 일 실시 예를 보여주는 도면이다. 도 15의 압축 가비지 컬렉션 동작은 새로운 가비지 블록이 생성되지 않은 경우에 기준 콜드 값(CVref)을 조정하는 점을 제외하면, 도 14의 압축 가비지 컬렉션 동작과 동일하다. 따라서, 이하에서는 도 14의 압축 가비지 컬렉션 동작과의 차이점이 중점적으로 설명된다.

도 15를 참조하면, 제어 유닛(1300)은 콜드 데이터들이 저장된 페이지들을 무효화한 후에 새로운 가비지 블록이 생성되었는 지의 여부를 판단한다(S440 단계).

새로운 가비지 블록이 생성되지 않은 경우, 제어 유닛(1300)은 가비지 블록을 생성하기 위하여 기준 콜드 값(CVref)을 조정한다(S450 단계). 이는 기준 콜드 값(CVref)이 낮을수록, 콜드 데이터들의 수가 증가하기 때문이다.

자세히 설명하면, 기준 콜드 값(CVref)을 낮게 조정하면, 콜드 데이터로 판정되는 페이지의 수가 증가한다. 예를 들어, 도 6을 참조하면, 기준 콜드 값을 '5'에서 '4'로 재설정하면, 콜드 데이터로 판정되는 페이지는 한 개 증가한다.

따라서, 제어 유닛(1300)은 기준 콜드 값(CVref)을 이전보다 낮게 재설정하고(S450 단계), 콜드 리스트 테이블(1332)로부터 콜드 데이터들을 다시 탐지한 후(S420 단계), 새로운 가비지 블록이 생성되었는 지의 여부를 다시 판단할 수 있다(S430 단계). 이 경우, 기준 콜드 값(CVref) 재설정 동작은 새로운 가비지 블록이 생성될 때까지 수행된다.

도 14 및 도 15를 참조하여 설명된 바와 같이, 본 발명의 실시 예에 따른 압축 가비지 컬렉션 동작은 다양하게 응용될 수 있다.

한편, 다시 도 2를 참조하면, 압축기(1340)는 설계자에 따라 다양한 방법으로 구현될 수 있다. 예를 들어, 압축기(1340)는 일정한 압축률을 갖도록 설계될 수 있고, 다른 예로, 압축기(1340)는 다양한 압축률을 제공하도록 설계될 수도 있다. 이하에서는, 본 발명의 실시 예에 따른 압축기(1340)의 동작 및 구현 예들이 좀더 자세히 설명될 것이다.

Ⅴ. 압축기의 구현 예

도 16은 도 2의 압축기(1340)의 동작을 좀더 자세히 설명하기 위한 도면이다. 도 16에서는 콜드 정도(Degree of Cold)에 따라 다양한 압축률을 갖는 압축기의 동작이 예시적으로 설명된다. 설명의 편의상, 도 16에서 압축기는 서로 다른 세 개의 압축률을 제공한다고 가정된다.

도 16을 참조하면, 압축기(1340)는 콜드 정도가 크면 높은 압축률을 갖고, 콜드 정도가 낮으면 낮은 압축률을 갖는다. 여기서, 콜드 정도는 워크 메모리(1330)에 수집된 콜드 데이터들의 평균적인 콜드 값의 레벨을 의미한다. 예를 들어, 기준 콜드 값(CVref)이 높으면 콜드 데이터들은 큰 콜드 정도를 갖고, 기준 콜드 값(CVref)이 낮으면 콜드 데이터들은 낮은 콜드 정도를 가진다.

콜드 정도가 큰 콜드 데이터들은 콜드 정도가 낮은 콜드 데이터들에 비하여 해당 콜드 데이터에 대한 엑세스 요청의 확률이 낮다. 또한, 일반적으로 압축률이 높으면 압축을 해제하는데 소요되는 시간이 길며, 압축률이 낮으면 압축을 해제하는데 소요되는 시간이 짧다.

따라서, 엑세스 요청의 확률이 낮은 콜드 데이터들은 상대적으로 큰 압축률을 적용하여 압축함으로써, 플래시 메모리(1400)의 저장 공간의 활용을 극대화할 수 있다. 반대로, 엑세스 요처의 확률인 높은 콜드 데이터들은 상대적으로 낮은 압축률을 적용하여 압축함으로써, 압축 해제에 소요되는 시간을 최소화할 수 있다.

즉, 본 발명의 실시 예에 따른 압축기(1340)는 콜드 정도(Degree of Cold) 또는 기준 콜드 값(CVref)에 따라 서로 다른 압축률을 제공함으로써, 압축 해제에 소요되는 시간 및 플래시 메모리(1400)의 저장 공간의 활용을 함께 고려할 수 있다.

도 17은 도 16의 압축기(1340)의 일 구현 예를 보여주는 도면이다. 설명의 편의상, 도 17의 압축기(1340)는 도 16과 같이 서로 다른 세 개의 압축률을 제공한다고 가정된다.

도 17을 참조하면, 압축기(1330)는 제 1 내지 제 3 압축 로직(1331~1333)을 포함한다. 제 1 내지 제 3 압축 로직(1331~1333)은 각각 서로 다른 압축률을 갖는다.

예를 들어, 제 1 압축 로직(1331)은 가장 작은 압축률을 갖는다. 따라서, 워크 메모리(1330)에 수집된 콜드 데이터들이 상대적으로 큰 콜드 정도(또는 기준 콜드 값)을 갖는다면, 압축기(1340)는 제 1 압축 로직(1331)을 이용하여 콜드 데이터들을 압축한다. 반대로, 제 3 압축 로직(1333)은 가장 큰 압축률을 갖는다. 따라서, 워크 메모리(1330)에 수집된 콜드 데이터들이 상대적으로 작은 콜드 정도(또는 기준 콜드 값)을 갖는다면, 압축기(1340)는 제 3 압축 로직(1333)을 이용하여 콜드 데이터들을 압축한다.

도 18은 도 16의 압축기(1340)의 다른 구현 예를 보여주는 도면이다. 설명의 편의상, 도 16과 유사하게, 도 18의 압축기(1340)를 이용하여 세 개의 서로 다른 압축률이 제공된다고 가정된다.

도 18을 참조하면, 압축기(1340)는 하나의 압축 로직(1344)만을 포함하며, 압축 동작의 반복 횟수를 조정함으로써 서로 다른 세 개의 압축률을 제공한다.

예를 들어, 워크 메모리(1330)에 수집된 콜드 데이터들이 상대적으로 큰 콜드 정도(또는 기준 콜드 값)을 갖는다면, 압축기(1340)는 세 번의 압축 동작을 반복하여 콜드 데이터들을 압축한다. 반대로, 워크 메모리(1330)에 수집된 콜드 데이터들이 상대적으로 작은 콜드 정도(또는 기준 콜드 값)을 갖는다면, 압축기(1340)는 한 번의 압축 동작만을 수행한다. 따라서, 도 18의 압축기(1340)는 압축 동작의 횟수를 조정함으로써, 콜드 데이터들을 콜드 정도(또는 기준 콜드 값)에 따라 서로 다른 압축률로 압축할 수 있다.

도 19는 도 16의 압축기(1340)의 다른 구현 예를 보여주는 도면이다. 설명의 편의상, 도 16과 유사하게, 도 19의 압축기(1340)를 이용하여 세 개의 서로 다른 압축률이 제공된다고 가정된다.

도 19를 참조하면, 압축기(1340)는 콜드 데이터들 중 일부의 데이터만을 압축함으로써, 서로 다른 세 개의 압축률을 제공할 수 있다. 예를 들어, 도 19에 도시된 바와 같이, 워크 메모리(1330)에 4개의 페이지들에 저장된 콜드 데이터들이 수집된다고 가정된다.

이 경우, 콜드 데이터들이 상대적으로 큰 콜드 정도(또는 기준 콜드 값)을 갖는다면, 압축기(1340)는 4개의 페이지들에 대응하는 콜드 데이터들을 모두 압축할 수 있다. 다른 예로, 콜드 데이터들이 상대적으로 작은 콜드 정도(또는 기준 콜드 값)을 갖는다면, 압축기(1340)는 수집된 콜드 데이터들 중 2개의 페이지들에 대응하는 콜드 데이터들만을 압축할 수 있다. 이 경우, 압축기(1340)를 통하여 부분 압축된 콜드 데이터들의 집합은 콜드 정도(또는 기준 콜드 값)에 따라 서로 다른 압축률을 갖는 효과가 있다.

상술한 바와 같이, 본 발명의 실시 예에 따른 압축기(1340)는 다양한 방법에 의하여 구현될 수 있다. 또한, 도 13에 도시된 압축 데이터 테이블(1333)의 압축 정보는 압축기(1340)의 구현 방법에 따라 다양하게 설정될 수 있다. 이하에서는, 압축된 콜드 데이터들에 대한 엑세스 요청이 있는 경우, 플래시 메모리 장치(1000)의 동작 방법이 자세히 설명된다.

Ⅵ. 플래시 메모리 장치의 엑세스 동작

도 20은 도 2의 플래시 메모리 장치(1000)의 엑세스 동작을 설명하기 위한 도면이다. 설명의 편의상, 도 20에서는, 호스트(1100)로부터 플래시 메모리 장치(1200)에 대한 읽기 동작이 요청된다고 가정된다.

S510 단계에서, 호스트(1100)로부터 읽기 동작이 요청된다.

S520 단계에서, 제어 유닛(1300)은 맵핑 테이블(1331)을 참조하여, 읽기 요청된 논리 주소(LA)에 대응하는 물리 주소(PA)를 체크한다.

S530 단계에서, 제어 유닛(1300)은 맵핑 테이블(1331)의 압축 상태 정보(CSI, 도 12 참조)를 확인하여, 읽기 요청된 데이터가 압축된 콜드 데이터인지의 여부를 판단한다.

읽기 요청된 데이터가 압축된 콜드 데이터인 경우, 제어 로직(1300)은 압축 블록(CB)에 저장된 데이터를 버퍼 메모리(1350)를 통하여 워크 메모리(1330)로 로딩한다(S550 단계). 이 후, 제어 로직(1300)은 압축 데이터 테이블(1333)을 참조하여 압축된 콜드 데이터들에 대한 압축 정보들을 확인한다(S560 단계). 이 후, 제어 로직(1300)은 압축된 콜드 데이터들에 대한 압축 정보를 기초로, 압축 해제 동작을 수행한다. 이 경우, 압축 해제 동작은 도 16 내지 도 19에서 설명된 압축 동작과 반대로 수행될 수 있으며, 자세한 설명은 생략된다.

한편, 읽기 요청된 데이터가 압축된 콜드 데이터가 아닌 경우, 일반적인 일기 동작이 수행된다(S540 단계).

도 2 내지 도 20을 참조하여 설명된 바와 같이, 도 1의 메모리 시스템(10)은 저장 유닛(122, 도 1 참조)으로 플래시 메모리를 사용할 수 있으며, 도 2의 플래시 메모리 시스템(1000)은 압축 가비지 컬력션 동작을 지원함으로써, 콜드 데이터의 압축 동작에 따른 시간 소모를 최소화함과 동시에, 플래시 메모리(1400)의 저장 영역을 효과적으로 사용할 수 있다.

다만, 상술한 설명은 예시적인 것으로 이해되어야 할 것이며, 본 발명의 기술적 사상은 이에 한정되지 않는다. 이하에서는, 도 1의 메모리 시스템(10) 또는 플래시 메모리 시스템(1000)의 다양한 응용 예 및 적용 예들이 좀더 자세히 설명된다.

Ⅶ. 압축 소프트웨어를 사용하여 압축 동작을 수행하는 플래시 메모리 시스템

도 21은 도 2의 플래시 메모리 시스템(1000)의 일 응용 예를 보여주는 도면이다. 도 20의 플래시 메모리 시스템(2000)은 도 2의 플래시 메모리 시스템(1000)과 유사하다. 따라서, 유사한 구성요소는 유사한 참조번호를 이용하여 설명된다. 도 20을 참조하면, 플래시 메모리 시스템(2000)은 호스트(2100) 및 플래시 저장 장치(2200)를 포함한다. 플래시 저장 장치(2200)는 제어 유닛(2300) 및 플래시 메모리(2400)를 포함한다.

도 2와 달리, 도 20의 제어 유닛(2300)은 워크 메모리(2330) 상에 압축 로직(2334)이 저장된다. 여기서, 압축 로직(2334)은 압축 가비지 컬렉션 동작이 수행되는 경우에, 콜드 데이터들의 압축 동작을 수행하는 소프트 웨어(S/W)를 의미한다. 압축 로직(2334)은 플래시 메모리(2400)의 메타 영역에 저장되며, 파워-업 동작 시에 워크 메모리(2330)로 자동 로딩 된다.

압축 로직(2334)은 콜드 데이터들을 일정한 압축률로 압축할 수 있다. 다른 예로, 압축 로직(2334)은 도 16 내지 도 19에서 설명된 바와 같이, 콜드 데이터들을 콜드 정도(또는, 기준 콜드 값)에 따라 서로 다른 압축률로 압축할 수 있다.

Ⅷ. 압축 가비지 컬렉션 동작을 지원하는 플래시 메모리 시스템의 적용 예

본 발명의 실시 예에 따른 도 2의 플래시 메모리 시스템(1000)은 여러 가지 제품에 적용 또는 응용될 수 있다. 호스트(1100)는 컴퓨터, 디지털 카메라, 휴대폰, MP3 플레이어, PMP, 게임기 등으로 구성될 수 있다. 플래시 저장 장치(1200)는 플래시 메모리를 기반으로 하는 솔리드 스테이트 드라이브(SSD), 플래시 메모리 카드, 또는 플래시 메모리 모듈 등으로 구성될 수 있다. 호스트(1100)와 플래시 저장 장치(1200)는 ATA, SATA, PATA, USB, SCSI, ESDI, PCI express 또는 IDE 인터페이스와 같은 표준 인터페이스(standardized interface)를 통해 연결될 수 있다.

도 22는 본 발명의 실시 예에 따른 플래시 메모리 시스템(1000)을 메모리 카드에 적용한 예를 보여준다. 메모리 카드 시스템(3000)은 호스트(3100)와 메모리 카드(3200)를 포함한다. 호스트(3100)는 호스트 컨트롤러(3110) 및 호스트 접속 유닛(3120)을 포함한다. 메모리 카드(3200)는 카드 접속 유닛(3210), 카드 컨트롤러(3220), 그리고 플래시 메모리(3230)를 포함한다.

호스트 접속 유닛(3120) 및 카드 접속 유닛(3210)은 복수의 핀으로 구성된다. 이들 핀에는 커맨드 핀, 데이터 핀, 클록 핀, 전원 핀 등이 포함되어 있다. 핀의 수는 메모리 카드(3200)의 종류에 따라 달라진다. 예로서, SD 카드는 9개의 핀을 갖는다.

호스트(3100)는 메모리 카드(3200)에 데이터를 쓰거나, 메모리 카드(3200)에 저장된 데이터를 읽는다. 호스트 컨트롤러(3110)는 커맨드(예를 들면, 쓰기 커맨드), 호스트(3100) 내의 클록 발생기(도시되지 않음)에서 발생한 클록 신호(CLK), 그리고 데이터(DAT)를 호스트 접속 유닛(3120)을 통해 메모리 카드(3200)로 전송한다.

카드 컨트롤러(3220)는 카드 접속 유닛(3210)을 통해 수신된 쓰기 커맨드에 응답하여, 카드 컨트롤러(3220) 내에 있는 클록 발생기(도시되지 않음)에서 발생한 클록 신호에 동기하여 데이터를 메모리(3230)에 저장한다. 메모리(3230)는 호스트(3100)로부터 전송된 데이터를 저장한다. 예를 들어, 호스트(3100)가 디지털 카메라인 경우에는 영상 데이터를 저장한다.

도 22에서, 카드 컨트롤러(3220)는 압축 가비지 컬렉션 동작을 이용하여 가비지 블록을 생성할 수 있다. 즉, 도 22에 도시된 메모리 카드 시스템은 위에서 설명한 압축 가비지 컬렉션 동작을 지원할 수 있다.

도 23은 본 발명의 실시 예에 따른 압축 가비지 컬렉션 기법을 솔리드 스테이트 드라이브(SSD)에 적용한 예를 보여준다. 도 23을 참조하면, SSD 시스템(4000)은 호스트(4100)와 SSD(4200)를 포함한다. SSD(4200)는 신호 커넥터(signal connector, 4231)를 통해 호스트(4100)와 신호를 주고 받으며, 전원 커넥터(power connector, 4221)를 통해 전원을 입력받는다. SSD(4200)는 복수의 불휘발성 메모리 장치(4201~420n), SSD 컨트롤러(4210), 그리고 보조 전원 장치(4220)를 포함한다.

복수의 불휘발성 메모리 장치(4201~420n)는 SSD(4200)의 저장 유닛로서 사용된다. 복수의 불휘발성 메모리 장치(4201~420n)는 대용량의 저장 능력을 가지는 플래시 메모리 장치로 구현될 수 있다. SSD(4200)는 주로 플래시 메모리(Flash memory)를 사용하고 있다.

복수의 불휘발성 메모리 장치(4201~420n)는 복수의 채널(CH1~CHn)을 통해 SSD 컨트롤러(4210)와 연결될 수 있다. 하나의 채널에는 하나 또는 그 이상의 메모리 장치가 연결될 수 있다. 하나의 채널에 연결되는 메모리 장치들은 동일한 데이터 버스에 연결될 수 있다. 이때 플래시 조각 모음은 복수의 메모리 블록을 하나로 연결하는 슈퍼 블록 형태로 수행되거나, 복수의 페이지를 하나로 연결하는 슈퍼 페이지 형태로 수행될 수 있다.

SSD 컨트롤러(4210)는 신호 커넥터(4231)를 통해 호스트(4100)와 신호(SGL)를 주고 받는다. 여기에서, 신호(SGL)에는 커맨드, 어드레스, 데이터 등이 포함될 수 있다. SSD 컨트롤러(4210)는 호스트(4100)의 커맨드에 따라 해당 메모리 장치에 데이터를 쓰거나 해당 메모리 장치로부터 데이터를 읽어낸다. SSD 컨트롤러(4210)의 내부 구성은 도 24을 참조하여 상세하게 설명된다.

보조 전원 장치(4220)는 전원 커넥터(4221)를 통해 호스트(4100)와 연결된다. 보조 전원 장치(4220)는 호스트(4100)로부터 전원(PWR)을 입력받고, 충전할 수 있다. 한편, 보조 전원 장치(4220)는 SSD(4200) 내에 위치할 수도 있고, SSD(4200) 밖에 위치할 수도 있다. 예를 들면, 보조 전원 장치(4220)는 메인 보드에 위치하며, SSD(4200)에 보조 전원을 제공할 수도 있다.

도 24은 도 23에 도시된 SSD 컨트롤러(4210)의 구성을 예시적으로 보여주는 블록도이다. 도 24을 참조하면, SSD 컨트롤러(4210)는 NVM 인터페이스(4211), 호스트 인터페이스(4212), ECC(4213), 중앙 처리 장치(CPU, 4214), 그리고 버퍼 메모리(4215)를 포함한다.

NVM 인터페이스(4211)는 버퍼 메모리(4215)로부터 전달된 데이터를 각각의 채널들(CH1~CHn)로 스캐터링(Scattering)한다. 그리고 NVM 인터페이스(4211)는 불휘발성 메모리 장치(4201~420n)로부터 읽은 데이터를 버퍼 메모리(4215)로 전달한다. 여기에서, NVM 인터페이스(4211)는 낸드 플래시 메모리의 인터페이스 방식을 사용할 수 있다. 즉, SSD 컨트롤러(4210)는 낸드 플래시 메모리 인터페이스 방식에 따라 프로그램, 읽기, 또는 소거 동작 등을 수행할 수 있다.

호스트 인터페이스(4212)는 호스트(4100)의 프로토콜에 대응하여 SSD(4200)와의 인터페이싱을 제공한다. 호스트 인터페이스(4212)는 USB(Universal Serial Bus), SCSI(Small Computer System Interface), PCI express, ATA, PATA(Parallel ATA), SATA(Serial ATA), SAS(Serial Attached SCSI) 등을 이용하여 호스트(4100)와 통신할 수 있다. 또한, 호스트 인터페이스(4212)는 호스트(4100)가 SSD(4200)를 하드 디스크(HDD)로 인식하도록 지원하는 디스크 에뮬레이션(Disk Emulation) 기능을 수행할 수 있다.

중앙 처리 장치(4214)는 호스트(4100, 도 19 참조)로부터 입력된 신호(SGL)를 분석하고 처리한다. 중앙 처리 장치(4214)는 호스트 인터페이스(4212)나 NVM 인터페이스(4211)를 통해 호스트(4100)나 불휘발성 메모리(4201~420n)를 제어한다. 중앙 처리 장치(4214)는 SSD(4200)을 구동하기 위한 펌웨어에 따라서 불휘발성 메모리 장치(4201~420n)의 동작을 제어한다.

버퍼 메모리(4215)는 호스트(4100)로부터 제공되는 쓰기 데이터 또는 불휘발성 메모리 장치로부터 읽은 데이터를 임시로 저장한다. 또한, 버퍼 메모리(4215)는 불휘발성 메모리 장치(4201~420n)에 저장될 메타 데이터나 캐시 데이터를 저장할 수 있다. 서든 파워 오프 동작 시에, 버퍼 메모리(4215)에 저장된 메타 데이터나 캐시 데이터는 불휘발성 메모리 장치(4201~420n)에 저장된다. 버퍼 메모리(4215)에는 DRAM, SRAM 등이 포함될 수 있다.

도 23 및 도 24에 도시된 솔리드 스테이트 드라이브(4000)는 앞에서 설명한 압축 가비지 컬렉션 동작을 모두 지원할 수 있다.

도 25는 본 발명의 실시 예에 따른 압축 가비지 컬렉션 기법을 플래시 메모리 모듈에 구현한 예를 보여주는 블록도이다. 여기에서, 플래시 메모리 모듈(5100)은 퍼스널 컴퓨터(PC), 노트북 컴퓨터, 휴대폰, PDA(Personal Digital Assistant), 그리고 카메라 등과 연결되어 사용될 수 있다.

도 25을 참조하면, 플래시 메모리 모듈(5000)은 메모리 시스템(5100), 전원 장치(5200), 보조 전원 장치(5250), 중앙처리장치(5300), 램(5400), 그리고 사용자 인터페이스(5500)를 포함한다. 도 25에 도시된 플래시 메모리 모듈(5000)은 앞에서 설명한 바와 같이, 압축 가비지 컬렉션 동작을 지원할 수 있다.

한편, 본 발명의 상세한 설명에서는 구체적인 실시 예에 관하여 설명하였으나, 본 발명의 범위에서 벗어나지 않는 한도 내에서 여러 가지 변형이 가능함은 물론이다. 그러므로 본 발명의 범위는 상술한 실시예에 국한되어 정해져서는 안되며 후술하는 특허청구범위 뿐만 아니라 이 발명의 특허청구범위와 균등한 것들에 의해 정해져야 한다.

100: 메모리 시스템
1000, 2000: 플래시 메모리 시스템
1300: 제어 유닛
1400: 플래시 메모리
1310: 호스트 인터페이스
1320: 중앙 처리 장치
1330: 워크 메모리
1340: 압축기
1350: 버퍼 메모리
1360: 플래시 컨트롤러

Claims (10)

  1. 콜드 리스트 테이블에 기초하여, 플래시 메모리에 저장된 데이터 중 콜드 데이터를 휘발성 메모리에 수집하는 단계;
    상기 수집된 콜드 데이터를 압축하는 단계; 및
    상기 압축된 콜드 데이터를 상기 플래시 메모리에 저장하는 단계를 포함하는 플래시 메모리 장치의 데이터 관리 방법.
  2. 제 1 항에 있어서,
    상기 콜드 데이터가 상기 휘발성 메모리에 수집된 후, 상기 콜드 데이터가 저장된 페이지를 무효화하는 단계를 더 포함하는 플래시 메모리 장치의 데이터 관리 방법.
  3. 제 2 항에 있어서,
    상기 무효화된 페이지가 속하는 블록의 페이지들이 모두 무효화된 페이지들인지의 여부를 판단하는 단계를 더 포함하며,
    상기 무효화된 페이지가 속하는 블록의 페이지들이 모두 무효화된 페이지들인 경우, 상기 무효화된 페이지가 속하는 블록에 대한 소거 동작을 수행하는 플래시 메모리 장치의 데이터 관리 방법.
  4. 제 3 항에 있어서,
    상기 무효화된 페이지가 속하는 블록의 페이지들이 모두 무효화된 페이지들이 아닌 경우, 가비지 블록을 생성하기 위한 병합 동작을 수행하는 플래시 메모리 장치의 데이터 관리 방법.
  5. 제 1 항에 있어서,
    상기 콜드 리스트 테이블은 상기 플래시 메모리에 대한 엑세스 요청이 있을 때마다 업데이트되는 플래시 메모리 장치의 데이터 관리 방법.
  6. 제 1 항에 있어서,
    상기 콜드 리스트 테이블은 엑세스 요청 시점에 관한 정보, 데이터 생성 시점에 관한 정보, 읽기 요청된 횟수에 관한 정보 중 적어도 하나를 이용하여 결정된 상기 콜드 데이터에 대한 콜드 값을 관리하는 플래시 메모리 장치의 데이터 관리 방법.
  7. 제 6 항에 있어서,
    상기 콜드 데이터에 대한 콜드 값이 클수록 콜드 데이터에 대한 압축률이 증가하는 것을 특징으로 하는 플래시 메모리 장치의 데이터 관리 방법.
  8. 제 1 항에 있어서,
    상기 압축된 콜드 데이터를 상기 플래시 메모리에 저장한 후, 상기 압축된 콜드 데이터에 대한 압축 정보를 관리하는 압축 데이터 테이블을 업데이트하는 단계를 더 포함하는 플래시 메모리 장치의 데이터 관리 방법.
  9. 제 8 항에 있어서,
    상기 압축 데이터 테이블은 압축률에 관한 정보, 압축 크기에 관한 정보, 압축 로직에 관한 정보들 중 적어도 하나의 정보를 포함하는 플래시 메모리 장치의 데이터 관리 방법.
  10. 제 8 항에 있어서,
    상기 압축된 콜드 데이터에 대한 읽기 요청이 있는 경우, 상기 압축 데이터 테이블의 압축 정보를 이용하여 압축 해제 동작을 수행하는 플래시 메모리 장치의 데이터 관리 방법.
KR1020110094724A 2011-09-20 2011-09-20 플래시 메모리 장치 및 플래시 메모리 장치의 데이터 관리 방법 KR20130031046A (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020110094724A KR20130031046A (ko) 2011-09-20 2011-09-20 플래시 메모리 장치 및 플래시 메모리 장치의 데이터 관리 방법

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR1020110094724A KR20130031046A (ko) 2011-09-20 2011-09-20 플래시 메모리 장치 및 플래시 메모리 장치의 데이터 관리 방법
US13/517,855 US20130073798A1 (en) 2011-09-20 2012-06-14 Flash memory device and data management method

Publications (1)

Publication Number Publication Date
KR20130031046A true KR20130031046A (ko) 2013-03-28

Family

ID=47881753

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020110094724A KR20130031046A (ko) 2011-09-20 2011-09-20 플래시 메모리 장치 및 플래시 메모리 장치의 데이터 관리 방법

Country Status (2)

Country Link
US (1) US20130073798A1 (ko)
KR (1) KR20130031046A (ko)

Families Citing this family (52)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8621137B2 (en) 2007-12-27 2013-12-31 Sandisk Enterprise Ip Llc Metadata rebuild in a flash memory controller following a loss of power
US8719529B2 (en) * 2011-01-14 2014-05-06 International Business Machines Corporation Storage in tiered environment for colder data segments
US9699263B1 (en) 2012-08-17 2017-07-04 Sandisk Technologies Llc. Automatic read and write acceleration of data accessed by virtual machines
JP2014052899A (ja) * 2012-09-07 2014-03-20 Toshiba Corp メモリシステムとその制御方法
US9501398B2 (en) 2012-12-26 2016-11-22 Sandisk Technologies Llc Persistent storage device with NVRAM for staging writes
US9612948B2 (en) 2012-12-27 2017-04-04 Sandisk Technologies Llc Reads and writes between a contiguous data block and noncontiguous sets of logical address blocks in a persistent storage device
US20160011782A1 (en) * 2013-02-27 2016-01-14 Hitachi, Ltd. Semiconductor storage
US9870830B1 (en) 2013-03-14 2018-01-16 Sandisk Technologies Llc Optimal multilevel sensing for reading data from a storage medium
US9524235B1 (en) 2013-07-25 2016-12-20 Sandisk Technologies Llc Local hash value generation in non-volatile data storage systems
US9639463B1 (en) 2013-08-26 2017-05-02 Sandisk Technologies Llc Heuristic aware garbage collection scheme in storage systems
US9442662B2 (en) 2013-10-18 2016-09-13 Sandisk Technologies Llc Device and method for managing die groups
WO2015065427A1 (en) * 2013-10-31 2015-05-07 Hewlett-Packard Development Company, L.P. Compressing and compacting memory on a memory device
US9703816B2 (en) 2013-11-19 2017-07-11 Sandisk Technologies Llc Method and system for forward reference logging in a persistent datastore
US9520197B2 (en) 2013-11-22 2016-12-13 Sandisk Technologies Llc Adaptive erase of a storage device
US9520162B2 (en) 2013-11-27 2016-12-13 Sandisk Technologies Llc DIMM device controller supervisor
US9582058B2 (en) 2013-11-29 2017-02-28 Sandisk Technologies Llc Power inrush management of storage devices
US9703636B2 (en) 2014-03-01 2017-07-11 Sandisk Technologies Llc Firmware reversion trigger and control
US9448876B2 (en) 2014-03-19 2016-09-20 Sandisk Technologies Llc Fault detection and prediction in storage devices
US9454448B2 (en) 2014-03-19 2016-09-27 Sandisk Technologies Llc Fault testing in storage devices
US9626399B2 (en) 2014-03-31 2017-04-18 Sandisk Technologies Llc Conditional updates for reducing frequency of data modification operations
US9626400B2 (en) 2014-03-31 2017-04-18 Sandisk Technologies Llc Compaction of information in tiered data structure
US9697267B2 (en) 2014-04-03 2017-07-04 Sandisk Technologies Llc Methods and systems for performing efficient snapshots in tiered data structures
US10372613B2 (en) 2014-05-30 2019-08-06 Sandisk Technologies Llc Using sub-region I/O history to cache repeatedly accessed sub-regions in a non-volatile storage device
US10146448B2 (en) 2014-05-30 2018-12-04 Sandisk Technologies Llc Using history of I/O sequences to trigger cached read ahead in a non-volatile storage device
US10114557B2 (en) 2014-05-30 2018-10-30 Sandisk Technologies Llc Identification of hot regions to enhance performance and endurance of a non-volatile storage device
US9703491B2 (en) 2014-05-30 2017-07-11 Sandisk Technologies Llc Using history of unaligned writes to cache data and avoid read-modify-writes in a non-volatile storage device
US10162748B2 (en) * 2014-05-30 2018-12-25 Sandisk Technologies Llc Prioritizing garbage collection and block allocation based on I/O history for logical address regions
US9652381B2 (en) 2014-06-19 2017-05-16 Sandisk Technologies Llc Sub-block garbage collection
US9454308B2 (en) 2014-06-27 2016-09-27 International Business Machines Corporation Page compression strategy for improved page out process
WO2016105241A1 (en) * 2014-12-23 2016-06-30 Emc Corporation Selective compression in data storage systems
CN105446653B (zh) 2014-08-27 2018-12-14 阿里巴巴集团控股有限公司 一种数据合并方法和设备
US9892054B2 (en) 2014-10-07 2018-02-13 Google Llc Method and apparatus for monitoring system performance and dynamically updating memory sub-system settings using software to optimize performance and power consumption
CN106663060B (zh) 2014-10-07 2019-11-19 谷歌有限责任公司 用于缓存线路去重的方法和系统
US10101938B2 (en) * 2014-12-30 2018-10-16 International Business Machines Corporation Data storage system selectively employing multiple data compression techniques
US10360144B2 (en) * 2015-02-27 2019-07-23 Hitachi, Ltd. Storage apparatus and non-volatile memory device including a controller to selectively compress data based on an update frequency level
US9875064B2 (en) 2015-03-11 2018-01-23 Toshiba Memory Corporation Storage system architecture for improved data management
US10204006B2 (en) 2015-10-28 2019-02-12 Avago Technologies International Sales Pte. Limited Systems and methods for side data based soft data flash memory access
US9740559B2 (en) 2015-10-28 2017-08-22 Avago Technologies General Ip (Singapore) Pte. Ltd. Systems and methods for compaction based flash memory data recovery
US10108489B2 (en) 2015-10-28 2018-10-23 Avago Technologies General Ip (Singapore) Pte. Ltd. Systems and methods for efficient soft data based flash memory data recovery
KR20180040769A (ko) * 2016-10-12 2018-04-23 삼성전자주식회사 저장 장치 및 그것의 동작 방법
CN106874213A (zh) * 2017-01-12 2017-06-20 杭州电子科技大学 一种融合多种机器学习算法的固态硬盘热数据识别方法
US10282127B2 (en) 2017-04-20 2019-05-07 Western Digital Technologies, Inc. Managing data in a storage system
US10359954B2 (en) 2017-05-31 2019-07-23 Alibaba Group Holding Limited Method and system for implementing byte-alterable write cache
US10303241B2 (en) 2017-06-19 2019-05-28 Alibaba Group Holding Limited System and method for fine-grained power control management in a high capacity computer cluster
US10503608B2 (en) 2017-07-24 2019-12-10 Western Digital Technologies, Inc. Efficient management of reference blocks used in data deduplication
US10423508B2 (en) * 2017-08-11 2019-09-24 Alibaba Group Holding Limited Method and system for a high-priority read based on an in-place suspend/resume write
US10303601B2 (en) 2017-08-11 2019-05-28 Alibaba Group Holding Limited Method and system for rearranging a write operation in a shingled magnetic recording device
US10496829B2 (en) 2017-09-15 2019-12-03 Alibaba Group Holding Limited Method and system for data destruction in a phase change memory-based storage device
US10503409B2 (en) 2017-09-27 2019-12-10 Alibaba Group Holding Limited Low-latency lightweight distributed storage system
US10445190B2 (en) 2017-11-08 2019-10-15 Alibaba Group Holding Limited Method and system for enhancing backup efficiency by bypassing encoding and decoding
US10496548B2 (en) 2018-02-07 2019-12-03 Alibaba Group Holding Limited Method and system for user-space storage I/O stack with user-space flash translation layer
US10402112B1 (en) 2018-02-14 2019-09-03 Alibaba Group Holding Limited Method and system for chunk-wide data organization and placement with real-time calculation

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5037952B2 (ja) * 2007-01-15 2012-10-03 株式会社日立製作所 ストレージシステム及びストレージシステムの制御方法
JP4399020B1 (ja) * 2008-08-26 2010-01-13 株式会社東芝 情報処理装置およびメモリ管理方法
US8402217B2 (en) * 2009-09-15 2013-03-19 Marvell International Ltd. Implementing RAID in solid state memory
US20110119462A1 (en) * 2009-11-19 2011-05-19 Ocz Technology Group, Inc. Method for restoring and maintaining solid-state drive performance
US8478731B1 (en) * 2010-03-31 2013-07-02 Emc Corporation Managing compression in data storage systems
US9183134B2 (en) * 2010-04-22 2015-11-10 Seagate Technology Llc Data segregation in a storage device
JP5520747B2 (ja) * 2010-08-25 2014-06-11 株式会社日立製作所 キャッシュを搭載した情報装置及びコンピュータ読み取り可能な記憶媒体
US8719529B2 (en) * 2011-01-14 2014-05-06 International Business Machines Corporation Storage in tiered environment for colder data segments
KR101811297B1 (ko) * 2011-03-15 2017-12-27 삼성전자주식회사 불휘발성 메모리를 제어하는 메모리 컨트롤러

Also Published As

Publication number Publication date
US20130073798A1 (en) 2013-03-21

Similar Documents

Publication Publication Date Title
US9753847B2 (en) Non-volatile semiconductor memory segregating sequential, random, and system data to reduce garbage collection for page based mapping
US8918580B2 (en) Storage device with buffer memory including non-volatile RAM and volatile RAM
KR101467939B1 (ko) 비휘발성 저장부에 대한 가변 오버­프로비저닝
US8001317B2 (en) Data writing method for non-volatile memory and controller using the same
TWI579692B (zh) 記憶體系統、資料儲存系統、使用者裝置及其資料管理方法
JP2009048613A (ja) ソリッドステートメモリ、それを含むコンピュータシステム及びその動作方法
CN101271379B (zh) 混合密度存储体储存装置及其控制方法
KR101699104B1 (ko) 비-휘발성 메모리를 구비한 시스템에 대한 전력 예산의 동적 할당
US9910597B2 (en) Memory system having a plurality of writing modes
US20100287217A1 (en) Host control of background garbage collection in a data storage device
US8103820B2 (en) Wear leveling method and controller using the same
US8626987B2 (en) Flash memory system and defragmentation method
KR101861170B1 (ko) 마이그레이션 관리자를 포함하는 메모리 시스템
US8166258B2 (en) Skip operations for solid state disks
US9454319B2 (en) Storage system data hardening
JP2014513848A (ja) Lsb及びmsbページにおける選択的データ記憶
US8560926B2 (en) Data writing method, memory controller and memory storage apparatus
US8166233B2 (en) Garbage collection for solid state disks
US8892842B2 (en) Memory systems and methods of operating the same
US8606987B2 (en) Data writing method for flash memory and controller using the same
TWI389125B (zh) 記憶體儲存裝置及其控制方法
US8291155B2 (en) Data access method, memory controller and memory storage system
US8386698B2 (en) Data accessing method for flash memory and storage system and controller using the same
DE102011086227A1 (de) Adress mapping method, data storage device and user device
KR20110119408A (ko) 데이터 저장 장치 및 그것의 동작 방법

Legal Events

Date Code Title Description
WITN Withdrawal due to no request for examination