KR101888074B1 - 저장 장치 및 불휘발성 메모리 장치, 그리고 그것의 동작 방법 - Google Patents

저장 장치 및 불휘발성 메모리 장치, 그리고 그것의 동작 방법 Download PDF

Info

Publication number
KR101888074B1
KR101888074B1 KR1020120002559A KR20120002559A KR101888074B1 KR 101888074 B1 KR101888074 B1 KR 101888074B1 KR 1020120002559 A KR1020120002559 A KR 1020120002559A KR 20120002559 A KR20120002559 A KR 20120002559A KR 101888074 B1 KR101888074 B1 KR 101888074B1
Authority
KR
South Korea
Prior art keywords
compressed data
size
data
written
user area
Prior art date
Application number
KR1020120002559A
Other languages
English (en)
Other versions
KR20130081534A (ko
Inventor
심호준
송제혁
이광구
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Priority to KR1020120002559A priority Critical patent/KR101888074B1/ko
Priority to DE102012112354A priority patent/DE102012112354A1/de
Priority to US13/724,011 priority patent/US9176808B2/en
Priority to CN201310007947.0A priority patent/CN103197897B/zh
Publication of KR20130081534A publication Critical patent/KR20130081534A/ko
Application granted granted Critical
Publication of KR101888074B1 publication Critical patent/KR101888074B1/ko

Links

Images

Classifications

    • 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/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • 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
    • G11C16/10Programming or data input circuits
    • 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/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1004Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum
    • 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
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • 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/1032Reliability improvement, data loss prevention, degraded operation etc
    • 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/40Specific encoding of data in memory or cache
    • G06F2212/401Compressed data
    • 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/7203Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks
    • 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/7207Details relating to flash memory management management of metadata or control data

Abstract

본 발명은 저장 장치에 관한 것으로, 좀 더 자세하게는 불휘발성 메모리 장치 및 그것의 동작 방법에 관한 것이다. 본 발명의 실시 예에 따른 저장 장치는 사용자 영역, 상기 사용자 영역에 쓰여질 압축 데이터를 임시로 저장하는 버퍼 영역, 및 상기 버퍼 영역에 저장된 압축 데이터가 상기 사용자 영역에 쓰여지도록, 상기 사용자 영역 및 상기 버퍼 영역을 제어하는 압축 데이터 관리 로직을 포함하며, 상기 압축 데이터 관리 로직은 상기 사용자 영역에 쓰여질 압축 데이터를 ECC 블록 단위로 관리한다. 본 발명의 실시 예에 따른 저장 장치는 저장된 데이터를 ECC 블록 단위로 관리함으로써, 저장 장치의 저장 영역의 활용을 극대화할 수 있다.

Description

저장 장치 및 불휘발성 메모리 장치, 그리고 그것의 동작 방법{STORAGE DEVICE AND NONVOLATILE MEMORY DEVICE AND OPERATION METHOD THEREROF}
본 발명은 저장 장치에 관한 것으로, 좀더 자세하게는 불휘발성 메모리 장치 및 그것의 동작 방법에 관한 것이다.
저장 장치로 주로 사용되는 반도체 메모리 장치에는 DRAM, SRAM 등과 같은 휘발성 메모리와 EEPROM, FRAM, PRAM, MRAM, Flash Memory 등과 같은 불휘발성 메모리 등이 있다. 휘발성 메모리는 전원이 차단될 때 저장된 데이터를 잃지만, 불휘발성 메모리는 전원이 차단되더라도 저장된 데이터를 보존한다.
최근 들어 불휘발성 메모리를 사용하는 장치들이 증가하고 있다. 예를 들면 MP3 플레이어, 디지털 카메라, 휴대전화, 캠코더, 플래시 카드 및 SSD(Solid State Disk) 등은 저장장치로 불휘발성 메모리를 사용하고 있다. 불휘발성 메모리들 중에서도 플래시 메모리는 전기적으로 셀의 데이터를 일괄적으로 소거하는 기능을 가지기 때문에, 하드디스크를 대신하여 플래시 메모리가 저장장치로 널리 사용되고 있다.
사용자가 필요로 하는 저장 용량이 늘어남에 따라, 플래시 메모리의 저장 공간을 효율적으로 사용하기 위한 방법이 요구되고 있다.
본 발명의 목적은 데이터 압축 동작을 통하여 저장 장치의 저장 영역을 효율적으로 사용하고, 동시에 압축 데이터에 대한 모아 쓰기 동작을 지원함으로써 저장 장치의 저장 영역의 활용을 극대화하는데 있다.
본 발명의 실시 예에 따른 저장 장치는 사용자 영역; 상기 사용자 영역에 쓰여질 압축 데이터를 임시로 저장하는 버퍼 영역; 및 상기 버퍼 영역에 저장된 압축 데이터가 상기 사용자 영역에 쓰여지도록, 상기 사용자 영역 및 상기 버퍼 영역을 제어하는 압축 데이터 관리 로직을 포함하며, 상기 압축 데이터 관리 로직은 상기 사용자 영역에 쓰여지는 압축 데이터를 ECC 블록 단위로 관리한다.
실시 예로써, 상기 ECC 블록 단위는 상기 사용자 영역에 쓰여지는 압축 데이터의 신뢰성을 보장하는 단위이다.
실시 예로써, 상기 ECC 블록은 유저 데이터 정보인 데이터 비트 및 상기 데이터 비트의 에러를 정정하는 ECC 비트를 포함한다.
실시 예로써, 상기 버퍼 영역에 저장된 압축 데이터는 프로그램 동작 시에, 상기 ECC 블록 단위보다 큰 프로그램 단위로 상기 사용자 영역에 쓰여진다.
실시 예로써, 상기 프로그램 단위는 상기 ECC 블록 단위의 정수 배이다.
실시 예로써, 상기 버퍼 영역은 제 1 및 제 2 압축 데이터를 임시로 저장하며, 상기 압축 데이터 관리 로직은 상기 제 1 및 제 2 압축 데이터를 상기 사용자 영역의 동일한 페이지에 프로그램한다.
실시 예로써, 쓰기 요청된 로우 데이터를 압축하는 압축기; 및 상기 압축기에 의하여 압축된 로우 데이터에 ECC 비트를 부가함으로써, 상기 사용자 영역에 쓰여질 압축 데이터를 생성하는 ECC 회로를 더 포함한다.
실시 예로써, 상기 사용자 영역에 저장된 압축 데이터에 대한 위치 정보를 관리하는 압축 데이터 관리 테이블을 더 포함하며, 상기 압축 데이터 관리 테이블은 상기 압축 데이터 관리 로직의 제어에 응답하여, 상기 사용자 영역에 저장된 압축 데이터에 대한 위치 정보를 프로그램 단위보다 작은 ECC 블록 단위로 관리한다.
실시 예로써, 상기 압축 데이터 관리 테이블은 상기 사용자 영역에 저장된 압축 데이터의 물리 주소에 관한 정보, 상기 사용자 영역에 저장된 압축 데이터의 ECC 블록 시작 번호에 관한 정보 및 상기 사용자 영역에 저장된 압축 데이터의 ECC 블록 길이에 관한 정보를 관리한다.
실시 예로써, 상기 압축 데이터 관리 테이블은 상기 사용자 영역에 저장된 압축 데이터의 물리 주소에 대응하는 논리 주소에 관한 정보를 함께 관리한다.
실시 예로써, 상기 압축 데이터 관리 테이블은 상기 사용자 영역에 저장된 제 1 및 제 2 압축 데이터의 물리 주소에 관한 정보를 관리하며, 상기 제 1 및 제 2 압축 데이터는 동일한 물리 주소를 갖는다.
실시 예로써, 상기 압축 데이터 관리 로직은 제 1 압축 데이터에 대한 여분의 공간의 크기에 기초하여, 제 2 압축 데이터를 상기 제 1 압축 데이터와 함께 상기 사용자 영역에 프로그램할 지의 여부를 결정한다.
실시 예로써, 상기 제 1 압축 데이터에 대한 여분의 공간의 크기가 상기 제 2 압축 데이터의 크기보다 큰 경우, 상기 제 1 및 제 2 압축 데이터는 상기 사용자 영역의 동일한 페이지에 프로그램된다.
실시 예로써, 상기 제 1 압축 데이터에 대한 여분의 공간의 크기가 상기 제 2 압축 데이터보다 작은 경우, 상기 제 1 압축 데이터는 상기 사용자 영역에 프로그램된다.
실시 예로써, 상기 제 1 압축 데이터가 쓰기 요청된 시점은 상기 제 2 압축 데이터가 쓰기 요청된 시점에 우선한다.
실시 예로써, 상기 버퍼 영역은 복수의 압축 데이터들을 임시로 저장하는 대기 영역을 포함하며, 상기 압축 데이터 관리 로직은 쓰기 요청된 압축 데이터의 크기를 상기 대기 영역에 저장된 복수의 압축 데이터들에 대한 여분의 공간들과 각각 비교한다.
실시 예로써, 상기 쓰기 요청된 압축 데이터의 크기가 상기 대기 영역에 저장된 복수의 압축 데이터들의 여분의 공간들 중 선택된 압축 데이터의 여분의 공간보다 작은 경우, 상기 압축 데이터 관리 로직은 상기 쓰기 요청된 압축 데이터와 상기 선택된 압축 데이터를 상기 사용자 영역의 동일한 페이지에 프로그램한다.
실시 예로써, 상기 쓰기 요청된 압축 데이터의 크기가 상기 대기 영역에 저장된 복수의 압축 데이터들의 여분의 공간들보다 큰 경우, 상기 압축 데이터 관리 로직은 상기 쓰기 요청된 압축 데이터를 상기 대기 영역에 전송한다.
실시 예로써, 상기 압축 데이터 관리 로직은 상기 대기 영역의 크기를 기준 크기와 비교하고, 상기 대기 영역의 크기가 상기 기준 크기보다 큰 경우에 상기 대기 영역에 저장된 복수의 압축 데이터들 중 선택된 압축 데이터를 상기 사용자 영역에 프로그램한다.
실시 예로써, 상기 압축 데이터 관리 로직은 제 1 압축 데이터에 대한 여분의 공간의 크기와 제 2 압축 데이터의 크기를 비교하고, 상기 제 1 압축 데이터에 대한 여분의 공간의 크기가 상기 제 2 압축 데이터의 크기보다 큰 경우에 상기 제 2 압축 데이터를 분할한다.
실시 예로써, 상기 압축 데이터 관리 로직은 상기 제 2 압축 데이터를 제 1 및 제 2 분할 압축 데이터로 분할하고, 상기 제 1 분할 압축 데이터의 크기는 상기 제 1 압축 데이터에 대한 여분의 공간의 크기보다 작다.
실시 예로써, 상기 압축 데이터 관리 로직은 상기 제 1 압축 데이터 및 상기 제 1 분할 압축 데이터를 상기 사용자 영역의 동일한 페이지에 프로그램한다.
실시 예로써, 상기 압축 데이터 관리 로직은 상기 제 2 분할 압축 데이터를 상기 버퍼 영역에 임시로 저장한다.
실시 예로써, 상기 압축 데이터 관리 로직은 상기 버퍼 영역에 저장된 적어도 하나의 압축 데이터들을 상기 사용자 영역의 복수의 페이지들에 동시에 프로그램한다.
본 발명의 실시 예에 따른 불휘발성 메모리 장치는 복수의 페이지 단위로 프로그램 동작을 수행하는 불휘발성 메모리; 상기 불휘발성 메모리에 프로그램될 압축 데이터를 임시로 저장하는 버퍼 메모리; 및 상기 버퍼 메모리에 저장된 압축 데이터가 상기 불휘발성 메모리에 프로그램되도록 상기 불휘발성 메모리 및 상기 버퍼 메모리를 제어하며, 상기 불휘발성 메모리의 페이지 단위보다 작은 ECC 블록 단위로 상기 불휘발성 메모리에 저장된 압축 데이터를 관리하는 압축 데이터 관리 로직을 포함한다.
실시 예로써, 상기 버퍼 메모리는 복수의 압축 데이터들을 포함하며, 상기 버퍼 메모리에 저장된 복수의 압축 데이터들의 크기가 상기 복수의 페이지 단위보다 작은 경우, 상기 버퍼 메모리에 저장된 복수의 압축 데이터들은 상기 불휘발성 메모리에 동시에 프로그램된다.
실시 예로써, 상기 불휘발성 메모리에 저장된 압축 데이터에 대한 위치 정보를 관리하는 압축 데이터 관리 테이블을 더 포함하며, 상기 압축 데이터 관리 테이블은 상기 압축 데이터 관리 로직의 제어에 응답하여, 상기 사용자 영역에 저장된 압축 데이터에 대한 위치 정보를 페이지 단위보다 작은 ECC 단위로 관리한다.
실시 예로써, 상기 압축 데이터 관리 테이블은 상기 불휘발성 메모리에 저장된 압축 데이터의 물리 주소에 관한 정보, 상기 불휘발성 메모리에 저장된 압축 데이터의 ECC 블록 시작 번호에 관한 정보 및 상기 사용자 영역에 저장된 압축 데이터의 ECC 블록 길이에 관한 정보를 관리한다.
실시 예로써, 상기 압축 데이터 관리 테이블은 상기 불휘발성 메모리에 저장된 압축 데이터의 논리 주소에 관한 정보를 함께 관리한다.
실시 예로써, 상기 불휘발성 메모리 장치는 한 번의 프로그램 동작에 의하여 프로그램된 복수의 압축 데이터들을 포함하며, 상기 복수의 압축 데이터들 중 소정의 압축 데이터는 상기 불휘발성 메모리의 적어도 두 개의 페이지들에 분할되어 저장된다.
본 발명의 실시 예에 따른 불휘발성 메모리 장치의 동작 방법은 쓰기 요청된 데이터를 압축하는 단계; 상기 압축된 데이터를 램에 수집하는 단계; 상기 램에 수집된 압축 데이터를 불휘발성 메모리에 프로그램하는 단계; 및 상기 불휘발성 메모리에 저장된 압축 데이터를 ECC 블록 단위로 관리하는 압축 데이터 관리 테이블을 업데이트하는 단계를 포함한다.
실시 예로써, 상기 쓰기 요청된 데이터의 크기를 이전에 압축된 데이터에 대한 여분의 공간의 크기와 비교하는 단계를 더 포함하며, 상기 쓰기 요청된 데이터의 크기가 상기 이전에 압축된 데이터에 대한 여분의 공간의 크기보다 작은 경우, 상기 쓰기 요청된 데이터 및 상기 이전에 압축된 데이터는 상기 불휘발성 메모리의 동일한 페이지에 프로그램된다.
실시 예로써, 상기 쓰기 요청된 데이터의 크기를 상기 램에 저장된 복수의 압축 데이터들에 대한 여분의 공간들의 크기와 각각 비교하는 단계를 더 포함하며, 상기 쓰기 요청된 데이터의 크기가 상기 램에 저장된 복수의 압축 데이터들 중 선택된 압축 데이터에 대한 여분의 공간의 크기보다 작은 경우, 상기 쓰기 요청된 데이터 및 상기 선택된 압축 데이터는 상기 불휘발성 메모리 장치의 동일한 페이지에 프로그램된다.
실시 예로써, 상기 쓰기 요청된 데이터의 크기가 상기 램에 저장된 복수의 압축 데이터들에 대한 여분의 공간의 크기보다 큰 경우, 상기 쓰기 요청된 데이터는 상기 램에 저장된다.
실시 예로써, 상기 쓰기 요청된 데이터를 상기 램에 저장한 후에, 상기 램에 저장된 압축 데이터들의 크기를 기준 크기와 비교하는 단계를 더 포함하며, 상기 램에 저장된 압축 데이터들의 크기가 기준 크기보다 큰 경우, 상기 램에 저장된 압축 데이터들 중 소정의 압축 데이터를 상기 불휘발성 메모리에 프로그램한다.
본 발명의 실시 예에 따른 저장 장치는 저장된 데이터를 ECC 블록 단위로 관리하며, 압축된 데이터에 대한 모아 쓰기 동작을 지원하다. 따라서, 저장 장치의 저장 영역의 활용을 극대화할 수 있다.
도 1은 본 발명의 실시 예에 따른 메모리 시스템을 보여주는 블록도이다.
도 2는 도 1의 메모리 시스템의 동작을 보여주는 순서도이다.
도 3은 본 발명의 실시 예에 따른 플래시 메모리 시스템을 보여주는 블록도이다.
도 4는 도 3의 셀 어레이 및 페이지 버퍼를 좀더 자세히 보여주는 도면이다.
도 5는 도 4에 도시된 하나의 페이지에 저장된 데이터의 논리 구조를 좀 더 자세히 보여주는 도면이다.
도 6 내지 도 8은 도 3의 플래시 메모리 시스템의 동작의 제 1 실시 예를 보여주는 도면들이다.
도 9는 도 6 내지 도 8을 참조하여 설명된, 도 3의 플래시 메모리 시스템의 동작을 보여주는 순서도이다.
도 10은 도 3의 플래시 메모리 시스템의 동작의 제 2 실시 예를 보여주는 순서도이다.
도 11은 도 3의 램의 일 실시 예를 보여주는 블록도이다.
도 12는 도 3의 플래시 메모리 시스템의 동작의 제 3 실시 예를 보여주는 순서도이다.
도 13 및 도 14는 도 3의 플래시 메모리 시스템 동작의 제 4 실시 예를 보여주는 도면이다.
도 15는 도 3의 플래시 메모리 및 페이지 버퍼의 다른 구성 예를 보여주는 도면이다.
도 16 및 도 17은 복수의 페이지들에 대한 프로그램 동작이 동시에 수행되는 경우에, 도 3의 플래시 메모리 시스템의 동작의 제 5 실시 예를 보여주는 도면들이다.
도 18 및 도 20은 본 발명의 실시 예에 따른 메모리 시스템의 다양한 적용 예를 보여주는 블록도이다.
도 21은 본 발명의 실시 예에 따른 메모리 시스템을 메모리 카드 시스템에 적용한 예를 보여주는 블록도이다.
도 22는 본 발명의 실시 예에 따른 메모리 시스템을 솔리드 스테이트 드라이브(SSD) 시스템에 적용한 예를 보여주는 블록도이다.
도 23은 도 22에 도시된 SSD 컨트롤러의 구성을 예시적으로 보여주는 블록도이다.
도 24는 본 발명의 실시 예에 따른 메모리 시스템을 전자 장치로 구현한 예를 보여주는 블록도이다.
도 25는 본 발명에 사용되는 플래시 메모리를 예시적으로 보여주는 블록도이다.
도 26은 도 25에 도시된 메모리 블록(BLK1)의 3차원 구조를 예시적으로 보여주는 사시도이다.
이하, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 본 발명의 기술적 사상을 용이하게 실시할 수 있을 정도로 상세히 설명하기 위하여, 본 발명의 실시 예 또는 적용 예를 첨부된 도면을 참조하여 설명하기로 한다.
Ⅰ. 압축된 데이터의 모아 쓰기 동작을 지원하는 메모리 시스템
도 1은 본 발명의 실시 예에 따른 메모리 시스템(100)을 보여주는 블록도이다. 도 1을 참조하면, 메모리 시스템(100)은 호스트(110) 및 저장 장치(120)를 포함하며, 저장 장치(120)는 컨트롤러(121)와 불휘발성 메모리(125)를 포함한다.
컨트롤러(121)는 호스트(110)의 요청에 응답하여, 저장 장치(120)의 전반적인 동작을 제어한다. 예를 들어, 컨트롤러(121)는 호스트(110)의 읽기 또는 쓰기 요청에 응답하여, 불휘발성 메모리(125)에 대한 읽기 또는 쓰기 동작을 제어한다.
불휘발성 메모리(125)는 컨트롤러(121)에 의해서 제어되며, 컨트롤러(121)의 요청에 대응하는 동작들(예를 들면, 읽기 또는 쓰기 동작)을 수행한다. 불휘발성 메모리(125)는 사용자 영역(126)을 포함하며, 사용자 영역(126)은 데이터를 저장하는데 사용된다.
본 발명의 실시 예에 따른 메모리 시스템(100)은 ECC 블록 단위로 압축된 데이터를 관리한다. 또한, 본 발명의 실시 예에 따른 메모리 시스템(100)은 데이터에 대한 압축 동작 및 압축된 데이터에 대한 모아 쓰기 동작(collective write operation for compressed data, 이하 압축 모아 쓰기 동작)을 지원한다.
여기서, 압축 모아 쓰기 동작(compressing collective write operation)은 압축된 데이터를 버퍼 메모리(124)에 수집하고, 버퍼 메모리(124)에 수집된 하나 이상의 압축 데이터들을 사용자 영역(126)의 프로그램 단위에 맞춰 함께 프로그램하는 일련의 동작을 의미한다. 이를 위하여, 본 발명의 실시 예에 따른 컨트롤러(121)는 압축기(122), 압축 데이터 관리 로직(123), 그리고 버퍼 메모리(124)를 포함한다.
압축기(122)는 호스트(110)로부터 전송된 데이터를 압축한다. 압축기(122)에 의하여 압축된 데이터는 버퍼 메모리(124)에 임시로 저장된다. 압축 데이터 관리 로직(123)은 버퍼 메모리(124) 및 사용자 영역(126)에 저장된 압축 데이터를 ECC 블록 단위로 관리한다. 여기서, ECC 블록 단위는 데이터의 신뢰성을 보장하는 최소의 단위를 의미한다.
본 발명의 실시 예에 따른 메모리 시스템(100)은 ECC 블록 단위로 압축 데이터를 관리하고 압축된 데이터들에 대한 압축 모아 쓰기 동작을 지원함으로써, 사용자 영역(126)의 저장 공간의 활용을 극대화할 수 있다. 동시에, 본 발명의 실시 예에 따른 메모리 시스템(100)은 압축된 데이터를 사용자 영역(126)에 프로그램하는 프로그램 동작의 횟수를 최소화할 수 있다.
이하에서는, 본 발명의 실시 예에 따른 메모리 시스템(100)의 효과가 좀더 자세히 설명된다. 또한, 좀더 명확한 설명을 위하여, 본 발명과 같이 ECC 블록 단위(예를 들어, 1 킬로 바이트(1 KB))로 압축 데이터를 관리하는 경우와 ECC 블록 단위보다 큰 단위(예를 들어, 8 KB)로 압축 데이터를 관리하는 경우가 대비적으로 설명된다.
설명의 편의상, 버퍼 메모리(124)는 제 1 단위(8 KB)의 크기를 가지며, 버퍼 메모리(124)에 저장된 데이터는 사용자 영역(126)의 제 1 단위의 저장 공간(즉, 8 KB의 저장 공간)에 프로그램된다고 가정하자. 또한, ECC 블록 단위는 제 1 단위보다 작은 제 2 단위(예를 들어, 1 KB)라고 가정하자. 또한, 제 1 단위보다 작으며 제 2 단위보다 큰 크기를 갖는 제 1 및 제 2 압축 데이터(예를 들어, 각각 5 KB 및 2 KB)가 사용자 영역(126)에 프로그램된다고 가정하자.
버퍼 메모리(124) 및 사용자 영역(126)에 저장된 데이터가 제 1 단위(8 KB)로 관리되는 경우, 제 1 및 제 2 압축 데이터는 각각 독립적으로 사용자 영역(126)에 프로그램되어야 한다. 이 경우, 제 1 및 제 2 압축 데이터가 사용자 영역(126)의 동일한 저장 공간(즉, 8 KB의 저장 공간)에 프로그램된다면, 컨트롤러(121)가 제 1 및 제 2 압축 데이터를 구분할 수 없기 때문이다. 이는 사용자 영역(126)의 저장 공간이 낭비됨을 의미한다. 예를 들어, 제 1 압축 데이터의 크기는 5 KB인 경우, 8 KB에서 5 KB를 뺀 3 KB의 저장 공간이 낭비된다.
이러한 문제를 해결하기 위하여, 본 발명의 실시 예에 따른 저장 장치(120)는 제 2 단위(즉, ECC 블록 단위, 1 KB)로 압축된 데이터를 관리한다. 제 2 단위(1 KB)로 압축된 데이터를 관리하기 때문에, 제 1 및 제 2 압축 데이터가 사용자 영역(126)의 동일한 저장 공간(즉, 8 KB의 저장 공간)에 프로그램되더라도, 컨트롤러(121)는 제 1 및 제 2 압축 데이터를 정확히 구분할 수 있다.
또한, 제 1 및 제 2 압축 데이터가 버퍼 메모리(124)에 수집된 후에 하나의 프로그램 명령에 응답하여 사용자 영역(126)에 프로그램되기 때문에, 본 발명의 실시 예에 따른 저자 장치(120)는 제 1 단위로 압축된 데이터를 관리하는 경우에 비하여 프로그램 횟수를 감소시킬 수 있다.
도 2는 도 1의 메모리 시스템(100)의 동작을 보여주는 순서도이다.
S110 단계에서, 호스트(110)로부터 저장 장치(120)로 소스 데이터가 수신된다.
S120 단계에서, 저장 장치(120)의 압축기(122)는 로우 데이터(raw data)에 대한 압축 동작을 수행한다. 여기서, 로우 데이터는 압축기(122)에 의하여 압축되지 않은 데이터를 의미하며, 압축기(122)의 압축 단위에 일치하는 데이터를 의미한다. 만약, 소스 데이터가 압축기(122)의 압축 단위보다 크다면, 컨트롤러(121)는 소스 데이터를 압축 단위로 분할하여 로우 데이터를 생성하고, 이 후 압축기(122)가 로우 데이터를 압축하는 동작을 수행한다.
S130 단계에서, 압축기(122)에 의하여 압축된 데이터가 버퍼 메모리(124)에 수집된다. 만약 버퍼 메모리(124)의 크기가 8 KB이고 제 1 및 제 2 압축 데이터의 크기가 각각 5 KB 및 2 KB라면, 제 1 및 제 2 압축 데이터는 버퍼 메모리(124)에 순차적으로 수집될 수 있다.
S140 단계에서, 버퍼 메모리(124)에 수집된 복수의 압축된 데이터가 사용자 영역(126)에 프로그램된다. 예를 들어, 버퍼 메모리(124)에 수집된 제 1 및 제 2 압축 데이터는 한 번의 프로그램 명령에 의하여 사용자 영역(126)에 동시에 프로그램될 수 있다. 이 경우, 제 1 및 제 2 압축 데이터는 압축 데이터 관리 로직(123)에 의해 ECC 블록 단위(1 KB)로 관리되므로, 압축 데이터 관리 로직(123)은 제 1 및 제 2 압축 데이터가 각각 저장된 사용자 영역(126)의 위치를 정확히 파악할 수 있다.
상술한 바와 같이, 본 발명의 실시 예에 따른 저장 장치(100)는 압축된 데이터의 모아 쓰기 동작을 지원하며, ECC 블록 단위로 사용자 영역(126)에 저장된 데이터를 관리한다. 따라서, 사용자 영역(126)의 저장 공간을 효율적으로 사용할 수 있다.
한편, 도 1의 저장 장치(100)는 ECC 회로를 더 포함할 수 있다. 불휘발성 메모리(125)에 데이터가 프로그램되는 경우, ECC 회로는 ECC 블록 단위로 인코딩(encoding) 동작을 수행한다. 불휘발성 메모리(125)로부터 데이터를 읽는 경우, ECC 회로는 ECC 블록 단위로 디코딩(decoding) 동작을 수행한다. 따라서, 상술한 바와 같이, ECC 블록 단위로 데이터를 관리하는 경우, 데이터의 신뢰성을 보장할 수 있으며, 동시에 사용자 영역(126)의 저장 공간의 활용을 극대화할 수 있다.
한편, 도 1의 불휘발성 메모리(120)는 다양한 메모리로 구현될 수 있다. 예를 들어, 불휘발성 메모리는 플래시 메모리(flash memory), MRAM(Magnetic RAM), 스핀전달토크 MRAM(Spin-Transfer Torgue MRAM), Conductive bridging RAM(CBRAM), FeRAM(Ferroelectric RAM), OUM(Ovonic Unified Memory)라고도 불리는 PRAM(Phase RAM), 저항 메모리(Resistive RAM: RRAM 또는 Re-RAM), 나노퓨브 RAM(Nanottube RAM), 폴리머 RAM(Polymer RAM: PoRAM), 나노 부유 게이트 메모리(Nano Floating Gate Memory: NFGM), 홀로그래픽 메모리(holographic memory), 분자 전자 메모리 소자(Molecular Electronics Memory) 또는 절연 저항 변화 메모리(Insulator Resistance Change Memory)일 수 있다.
이하에서는 도 1의 불휘발성 메모리(125)가 플래시 메모리로 구현되는 본 발명의 실시 예가 자세히 설명된다.
Ⅱ. 압축 모아 쓰기 동작을 지원하는 플래시 메모리 시스템
도 3은 본 발명의 실시 예에 따른 플래시 메모리 시스템(1000)을 보여주는 블록도이다. 도 3의 플래시 메모리 시스템(1000)은 호스트(1100) 및 플래시 저장 장치(1200)를 포함한다. 플래시 메모리(1400)의 저장 공간을 효율적으로 사용하기 위하여, 도 3의 플래시 저장 장치(1200)는 압축 모아 쓰기 동작을 지원하며, ECC 블록 단위로 플래시 메모리(1400)에 저장된 데이터를 관리한다.
도 3을 참조하면, 플래시 저장 장치(1200)는 컨트롤러(1300) 및 플래시 메모리(1400)를 포함한다. 컨트롤러(1300)는 호스트(1100)의 요청에 응답하여, 플래시 메모리(1400)의 전반적인 동작을 제어한다. 예를 들어, 컨트롤러(1300)는 플래시 메모리(1400)에 대한 읽기 동작 또는 쓰기 동작을 제어한다. 컨트롤러(1300)는 호스트 인터페이스(1310), 저장 매체 인터페이스(1320), 중앙 처리 장치(1330), 램(1340), ECC 회로(1350), 압축기(1360) 그리고 압축 데이터 관리 로직(1370)을 포함한다.
호스트 인터페이스(1310)는 호스트(1100)와의 인터페이스를 제공하고, 저장 매체 인터페이스(1320)는 플래시 메모리(1400)와의 인터페이스를 제공한다. 호스트 인터페이스(1310)는 하나 또는 그보다 많은 채널들(또는 포트들)(도시되지 않음)을 통해 호스트(1100)에 연결될 수 있다. 예를 들어, 호스트 인터페이스(1310)는 PATA 버스(parallel AT attachment bus)와 SATA 버스(serial AT attachment) 중 어느 하나 또는 이들 모두를 통해 호스트와 연결될 수 있다. 또는, 호스트 인터페이스(1310)는 SCSI, USB 등을 통해 호스트(1100)와 연결될 수 있다.
중앙 처리 장치(1330)는 플래시 저장 장치(1200)에 대한 전반적인 동작을 제어한다. 비록 도면에는 도시되지 않았지만, 중앙 처리 장치(1330)는 프로세서(processor), 에스램, DMA 제어기 등을 포함하도록 구현될 수 있다.
램(1340)은 중앙 처리 장치(1330) 또는 압축 데이터 관리 로직(1370)의 제어에 따라 동작하며, 워크 메모리(work memory), 버퍼 메모리(buffer memory), 캐시 메모리(cache memory) 등으로 사용될 수 있다. 램(1340)은 하나의 칩으로 구성되거나, 복수의 칩들로 구성될 수 있다.
램(1340)이 워크 메모리로 사용되는 경우에, 중앙 처리 장치(1330)에 의해서 처리되는 데이터가 임시 저장될 수 있다.
램(1340)이 버퍼 메모리로 사용되는 경우에는, 플래시 메모리(1400)에 전송될 데이터 또는 플래시 메모리(1400)로부터 전송받은 데이터를 임시로 저장하는데 사용될 수 있다. 예를 들어, 램(1340)은 플래시 메모리(1400)에 전송될 하나 이상의 압축 데이터들을 임시로 저장하는데 사용될 수 있다.
또한, 램(1340)은 플래시 변환 계층(FTL)을 구동하기 위한 구동 메모리로 사용될 수 있다. 플래시 변환 계층(FTL)은 호스트(1100)로부터의 논리 주소(LA; Logical Address)를 셀 어레이(1410)의 물리 주소(PA; Physical Address)로 변환하며, 플래시 메모리의 머지 동작(merge operation)이나 맵핑 테이블(mapping table) 등을 관리하는 데 사용된다. 램(1340)은 플래시 변환 계층(FTL)에 의한 맵핑 테이블을 저장하는데 사용되거나, 압축 데이터 관리 로직(1370)에 의한 압축 데이터 관리 테이블(compressed data manage table)을 저장하는데 사용될 수 있다. 또한, 램(1340)은 맵핑 테이블과 압축 관리 테이블이 결합된 통합 맵핑 테이블(unified mapping table)을 저장하는데 사용될 수 있다.
ECC 회로(1350)는 플래시 메모리(1400)로부터 수신한 데이터의 에러 비트를 정정하기 위한 에러 정정 코드(ECC)를 생성한다. ECC 회로(1350)는 플래시 메모리(1400)로 제공되는 데이터의 오류 정정 인코딩을 수행하여, ECC 비트(또는, 패리티(parity) 비트)가 부가된 데이터를 형성한다. ECC 비트는 셀 어레이(1410)의 메타 영역(meta region)에 저장될 수 있다. 또한, ECC 회로(1350)는 출력된 데이터에 대하여 에러 정정 디코딩을 수행하고, 수행 결과에 따라 에러 정정 디코딩의 성공 여부를 판단할 수 있다. ECC 회로(1350)는 판단 결과에 따라 지시 신호를 출력하고, ECC 비트를 사용하여 데이터의 에러 비트를 정정할 수 있다.
ECC 회로(1350)는 LDPC(low density parity check) code, BCH code, turbo code, 리드-솔로몬 코드(Reed-Solomon code), convolution code, RSC(recursive systematic code), TCM(trellis-coded modulation), BCM(Block coded modulation) 등의 코디드 모듈레이션(coded modulation)을 사용하여 에러 정정을 할 수 있다. ECC 회로(125)는 오류 정정을 위한 회로, 시스템 또는 장치를 포함할 수 있다.
압축기(1360)는 중앙 처리 장치(1330)의 제어(또는 압축 데이터 관리 로직(1370)의 제어)에 응답하여 동작하며, 압축 단위에 따라 호스트(1100)로부터 제공된 데이터를 순차적으로 압축한다. 예를 들어, 호스트(1100)로부터 제공된 데이터는 램(1340)에 저장되고, 램(1340)에 저장된 데이터는 중앙 처리 장치(1330)의 제어(또는 압축 데이터 관리 로직(1370)의 제어)에 따라 압축 단위로 분할된다. 압축기(1360)는 압축단위에 따라 분할된 데이터를 순차적으로 압축한다.
압축기(1360)에 의하여 압축된 데이터에는 ECC 회로(1350)에 의하여 ECC 비트가 부가되며, 램(1340)의 소정 영역에 수집된다. 이 후, 램(1340)에 수집된 압축 데이터는 페이지 버퍼(1420)를 통하여 셀 어레이(1410)에 프로그램된다. 또한, 압축기(1360)는 중앙 처리 장치(1330)의 제어(또는 압축 데이터 관리 로직(1370)의 제어)에 응답하여 동작하며, 플래시 메모리(1400)로부터 읽혀진 데이터의 압축을 해제하도록 구성될 수 있다.
압축 데이터 관리 로직(1370)은 ECC 블록 단위에 기초하여, 플래시 메모리(1400)에 저장된 압축 데이터를 관리한다. 여기서, ECC 블록 단위는 플래시 메모리(1400)에 저장된 데이터의 신뢰성을 보장할 수 있는 최소의 단위를 의미한다. 예를 들어, 8 KB의 크기를 갖는 압축된 데이터에 ECC 비트들이 부가된다고 가정하자. 이 경우, 압축된 데이터는 1 KB 단위로 ECC 비트에 의하여 신뢰성이 보장될 수 있다. 이 경우 ECC 블록 단위는 1 KB 이다.
압축 데이터 관리 로직(1370)은 플래시 메모리(1400)에 저장된 압축 데이터를 ECC 블록 단위로 관리한다. 압축 데이터 관리 로직(1370)은 압축기(1360)에 의하여 압축된 복수의 압축 데이터들을 램(1340)에 수집하고, 램(1340)에 수집된 복수의 압축 데이터가 페이지 버퍼(1420)를 통하여 셀 어레이(1410)에 프로그램되도록 플래시 메모리(1400)를 제어한다.
압축 데이터 관리 로직(1370)은 셀 어레이(1410)에 저장된 압축 데이터의 위치 정보(또는, 물리 주소(PA) 정보)를 압축 데이터 관리 테이블(compressed data manage table)을 통하여 관리한다. 다른 예로, 압축 데이터 관리 로직(1370)은 압축 데이터 관리 테이블을 플래시 변환 계층(FTL)에 의하여 관리되는 맵핑 테이블과 통합함으로써, 셀 어레이(1410)에 저장된 압축 데이터의 위치 정보를 관리할 수 있다. 계속해서 도 3을 참조하면, 플래시 메모리(1400)는 셀 어레이(1410) 및 페이지 버퍼(1420)를 포함한다.
셀 어레이(1410)는 호스트(1100)로부터 전송된 데이터 또는 압축기(1360)에 의하여 압축된 데이터를 저장한다. 페이지 버퍼(1420)는 플래시 메모리(1420)에 저장될 데이터를 임시로 저장하거나, 플래시 메모리(1420)로부터 읽혀진 데이터를 임시로 저장한다. 셀 어레이(1410) 및 페이지 버퍼(1420)는 도 4 및 도 5를 참조하여, 좀더 자세히 설명된다.
도 4는 도 3의 셀 어레이(1410) 및 페이지 버퍼(1420)를 좀더 자세히 보여주는 도면이다. 도 4에서는 설명의 편의상, 셀 어레이(1410)는 하나의 플래인(PL; Plane)으로 구현되는 것으로 가정된다. 도 4를 참조하면, 셀 어레이(1410)는 하나의 플래인(1411)을 포함하며, 하나의 플래인(1411)은 복수의 메모리 블록들(1412, 1413)을 포함한다. 또한, 각 메모리 블록은 복수의 페이지들을 포함한다.
프로그램 동작이 수행되는 경우, 페이지 버퍼(1420)에 저장된 데이터는 페이지 단위로 셀 어레이(1410)에 저장된다. 또한, 읽기 동작이 수행되는 경우, 셀 어레이(1410)의 하나의 페이지에 저장된 데이터는 페이지 단위로 페이지 버퍼(1420)로 읽혀진다.
만약 셀 어레이(1410)에 저장된 데이터가 페이지 단위로 관리된다면, 서로 다른 데이터는 서로 다른 페이지에 저장되어야 한다. 이는 서로 다른 데이터가 하나의 페이지에 프로그램된 후에 읽기 동작이 수행될 때, 서로 다른 데이터가 하나의 데이터로 인식되는 것을 방지하기 위함이다. 셀 어레이(1410)에 저장된 데이터가 페이지 단위로 관리되는 경우, 각 페이지의 저장 공간의 낭비가 발생할 수 있다.
이러한 문제를 해결하기 위하여, 본 발명의 실시 예에 따른 압축 데이터 관리 로직(1370)은 ECC 블록 단위로 셀 어레이(1410)에 저장된 데이터를 관리한다.
도 5는 도 4에 도시된 하나의 페이지에 저장된 데이터의 구조를 좀 더 자세히 보여주는 도면이다. 도 5에서는, 예시적으로, 도 4의 메모리 블록(1412) 중 제 1 페이지(page 1)가 도시되어 있다. 설명의 편의상, 하나의 페이지(page)는 8 개의 ECC 블록(ECC block)을 포함한다고 가정된다.
도 5를 참조하면, 제 1 페이지(page 1)는 8 개의 ECC 블록을 포함한다. 각 ECC 블록은 데이터 비트(data bit)와 ECC 비트(ECC bit)를 포함한다. 데이터 비트는 호스트(1100)로부터 쓰기 요청된 데이터를 의미하고, ECC 비트는 데이터 비트의 신뢰성을 보장하기 위하여 ECC 회로(1350, 도 3 참조)에 의하여 부가된 패러티 비트(parity bit)를 의미한다.
예를 들어, 제 1 페이지(page 1)에 8 KB의 데이터가 저장되어 있는 경우, 각 데이터 비트는 1 KB의 크기를 가지며, 1 KB의 데이터 비트에는 각각 ECC 비트가 부가된다. 이 경우, ECC 블록의 크기는 1 KB와 ECC 비트의 합이며, 제 1 페이지(page 1)에 저장된 데이터의 신뢰성은 ECC 블록 단위로 보장된다. 그러나, 일반적으로, ECC 비트의 크기는 데이터 비트의 크기에 비하여 무시할 수 있을 정도로 작다. 따라서, 이하에서는, ECC 블록의 크기는 데이터 비트의 크기와 유사하다는 가정하에, 본 발명의 기술적 사상이 설명된다.
ECC 블록 단위로 셀 어레이(1410, 도 4 참조)에 저장된 데이터가 관리되는 경우, 하나의 페이지에 서로 다른 압축 데이터들이 저장될 수 있다. 이는 하나의 물리 페이지에 복수의 압축 데이터들이 저장될 수 있음을 의미한다.
예를 들어, 제 1 및 제 2 압축 데이터가 각각 5 KB 및 2 KB의 크기를 갖는다고 가정하자. 또한, 제 1 및 제 2 압축 데이터가 램(1340, 도 4 참조)에 수집된 후, 제 1 페이지(page 1)의 제 1 내지 제 7 ECC 블록들(ECC block 1~ECC block 7)에 프로그램된다고 가정하자.
이 경우, ECC 블록 단위로 데이터를 관리하기 때문에, 압축 데이터 관리 로직(1370)은 제 1 페이지의 제 1 및 제 5 ECC 블록(ECC block 1~ECC block 2)에 제 1 압축 데이터가 저장되어 있음을 알 수 있다. 또한, 압축 데이터 관리 로직(1370)은 제 1 페이지의 제 6 및 제 7 ECC 블록(ECC block 6~ECC block 7)에 제 2 압축되어 저장되어 있음을 알 수 있다.
도 3 내지 도 5를 참조하여 설명된 바와 같이, 본 발명의 실시 예에 따른 저장 장치(1200)는 플래시 메모리에 저장된 압축 데이터를 ECC 블록 단위로 관리하며, 압축된 데이터에 대한 모아 쓰기 동작(즉, 압축 모아 쓰기 동작)을 지원하도록 구성된다. 따라서, 본 발명의 실시 예에 따른 저장 장치(1200)는 셀 어레이(1410)의 저장 공간의 낭비를 최소화할 수 있다.
한편, 압축 데이터의 크기는 ECC 블록 단위보다 작을 수 있다. 예를 들어, 압축 데이터의 크기는 900 메가 바이트(MB)일 수 있다. 또한, 압축 데이터의 크기는 ECC 블록 단위와 정확히 일치하지 않을 수 있다. 예를 들어, 압축 데이터의 크기는 1.9 KB 일 수 있다. 이 경우에도, 본 발명의 실시 예에 따른 저장 장치(1200)는 데이터의 신뢰성을 확보하기 위하여, ECC 블록 단위로 압축 데이터를 관리한다. 즉, 900 MB의 압축 데이터는 하나의 ECC 블록에 해당하는 압축 데이터로 관리되며, 1.9 KB의 압축 데이터는 두 개의 ECC 블록에 해당하는 압축 데이터로 관리된다.
한편, 본 발명에 따른 저장 장치(1200) 및 본 발명에 따른 압축 모아 쓰기 동작에 대한 다양한 실시 예들이 존재할 수 있다. 이하에서는, 이러한 본 발명의 실시 예들이 좀더 자세히 설명된다.
Ⅲ. 페이지 단위로 프로그램 동작을 수행하는 플래시 메모리 시스템
도 6 내지 도 8은 도 3의 플래시 메모리 시스템(1000)의 동작의 제 1 실시 예를 보여주는 도면들이다. 이하에서는 도 3을 참조하여, 하나의 페이지 단위로 프로그램 동작이 수행되는 경우의 실시 예가 설명된다.
설명의 편의상, 페이지의 크기 및 램(1340)의 공간 중 압축 데이터를 수집하기 위하여 할당된 공간의 크기는 모두 8 KB라고 가정된다. 또한, ECC 블록 단위는 1 KB 라고 가정된다. 저장 장치(1200)는 호스트(1100)로부터 순차적으로 제 1 쓰기 요청(first write request) 및 제 2 쓰기 요청(second write request)을 수신한다고 가정된다.
도 6을 참조하면, 먼저, 호스트(1100)로부터 제 1 쓰기 요청(first write request) 및 이에 대응하는 제 1 소스 데이터(source data 1)가 컨트롤러(1300)에 수신된다. 컨트롤러(1300)는 제 1 쓰기 요청에 응답하여, 제 1 소스 데이터를 압축하고, 압축된 제 1 소스 데이터를 램(1340)에 수집하는 동작을 제어한다.
자세히 설명하면, 제 1 소스 데이터는 램(1340)에 임시로 저장된다. 제 1 소스 데이터는 압축 데이터 관리 로직(1370)의 제어(또는, 중앙 처리 장치(1330)의 제어)에 응답하여, 압축기(1360)의 압축 단위로 분할된다. 압축기(1360)의 압축 단위에 따라 분할된 소스 데이터는 가공되지 않은 데이터(Raw data, 이하 로우 데이터)라 칭해질 수 있다.
간략한 설명을 위하여, 압축기(1360)의 압축 단위는 페이지 단위(즉, 8 KB)와 일치한다고 가정된다. 또한, 제 1 소스 데이터는 8 KB의 크기를 갖는다고 가정된다. 이 경우, 도 6에 도시된 바와 같이, 제 1 소스 데이터는 제 1 로우 데이터(raw data 1)로 변환된다.
이 후, 압축기(1360)는 제 1 로우 데이터를 압축하고, ECC 회로(1350, 도 3참조)는 압축된 데이터에 ECC 비트를 부가한다. 따라서, 제 1 압축 데이터(CD 1)가 생성된다. 예를 들어, 도 6에 도시된 바와 같이, 8 KB의 제 1 로우 데이터는 압축기(1360)에 의하여 5 KB의 제 1 압축 데이터(CD 1)로 변환될 수 있다. 이 후, 제 1 압축 데이터(CD 1)는 압축 데이터 관리 로직(1370)의 제어에 따라, 램(1340)에 저장된다.
제 1 쓰기 요청에 의한 제 1 소스 데이터가 램(1340)에 저장된 후, 제 2 쓰기 요청(second write request) 및 이에 대응하는 제 2 소스 데이터(source data 2)가 컨트롤러(1300)에 수신된다. 제 1 소스 데이터와 동일한 방식에 의하여, 제 2 소스 데이터는 제 2 로우 데이터(raw data 2)로 변환된다. 제 2 로우 데이터는 압축기(1360)에 의하여 압축되고, 압축된 데이터에는 ECC 회로(1350)에 의하여 ECC 비트가 부가된다. 따라서, 도 6에 도시된 바와 같이, 8 KB의 제 2 로우 데이터는 2 KB의 제 2 압축 데이터(CD 2)로 변환될 수 있다. 제 2 압축 데이터(CD 2)는 압축 데이터 관리 로직(1370)의 제어에 따라, 램(1340)에 저장된다.
제 1 및 제 2 압축 데이터가 램(1340)에 순차적으로 수집된 후, 램(1340)에 수집된 제 1 및 제 2 압축 데이터는 셀 어레이(1410)로 프로그램된다. 예를 들어, 도 6에 도시된 바와 같이, 제 1 및 제 2 압축 데이터는 메모리 블록(1412)의 제 1 페이지(page 1)에 프로그램된다.
이 후, 압축 데이터 관리 로직(1370)은 제 1 및 제 2 압축 데이터에 대한 위치 정보를 업데이트한다. 예를 들어, 도 7에 도시된 바와 같이, 압축 데이터 관리 로직(1370)은 압축 데이터 관리 테이블(compressed data manage table)을 업데이트함으로써, 제 1 및 제 2 압축 데이터에 대한 위치 정보를 관리한다.
좀더 자세히 설명하면, 도 6에 도시된 바와 같이, 제 1 압축 데이터는 제 1 페이지(page 1)의 제 1 내지 제 5 ECC 블록(ECC block 1~ECC block 5)에 프로그램된다. 여기서, 제 1 페이지의 물리 주소(PA)가 '1' 이라고 가정된다. 이 경우, 압축 데이터 관리 로직(1370)은 도 7에 도시된 바와 같이, "물리 주소(PA) = 1", "ECC 블록 시작 번호(SNE, Start Number of ECC block) = 1", "ECC 블록 길이(EBL) = 5"가 되도록 압축 데이터 관리 테이블을 업데이트한다. 따라서, 압축 데이터 관리 로직(1370)은 제 1 로우 데이터(Raw data 1)에 대응하는 제 1 압축 데이터(CD 1)가 저장된 위치를 압축 데이터 관리 테이블을 통하여 정확히 파악할 수 있다.
마찬가지로, 제 2 압축 데이터는 제 1 페이지(page 1)의 제 6 및 제 7 ECC 블록(ECC block 6~ECC block 7)에 프로그램된다. 따라서, 압축 데이터 관리 로직(1370)은 도 7에 도시된 바와 같이, "물리 주소(PA) = 1", "ECC 블록 시작 번호(SNE) = 6", "ECC 블록 길이(EBL) = 2"가 되도록 압축 데이터 관리 테이블을 업데이트한다. 따라서, 압축 데이터 관리 로직(1370)은 제 2 로우 데이터(Raw data 1)에 대응하는 제 2 압축 데이터(CD 2)가 저장된 위치를 압축 데이터 테이블을 통하여 정확히 파악할 수 있다.
한편, 도 7의 압축 데이터 관리 테이블은 예시적인 것으로 이해되어야 할 것이며, 본 발명의 기술적 사상은 이에 한정되지 않는다. 예를 들어, 압축 데이터 관리 로직(1370)은 압축 데이터 관리 테이블을 별도로 생성하지 않고, 플래시 변환 계층(FTL)에 의하여 관리되는 맵핑 테이블(mapping table)과 통합적으로 관리할 수 있다. 즉, 도 8에 도시된 바와 같이, 플래시 변화 계층(FTL)의 맵핑 테이블과 도 7의 압축 데이터 관리 테이블은 하나로 통합되어, 도 8의 통합 맵핑 테이블(unified mapping table)로 구현될 수 있다.
이 경우, 도 8에 도시된 바와 같이, 통합 맵핑 테이블은 압축되지 않은 데이터에 대한 맵핑 정보를 함께 관리할 수 있다. 또한, 통합 맵핑 테이블은 압축 여부에 대한 정보(CI, Compression Information)도 함께 관리할 수 있다. 여기서, 압축 정보(CI)가 "Y"인 경우는 해당 데이터가 압축된 데이터임을 나타내며, 압축 정보(CI)가 "N"인 경우는 해당 데이터가 압축되지 않은 데이터임을 나타낸다.
좀더 자세히 설명하면, 제 1 로우 데이터(Raw data 1)의 논리 주소(LA)가 '1'이며, 제 2 로우 데이터(Raw data 2)의 논리 주소가 '2'라고 가정된다. 또한, 제 1 페이지의 물리 주소(PA)가 '1'이라고 가정된다.
도 6에 도시된 바와 같이, 제 1 로우 데이터는 제 1 압축 데이터에 대응하며, 제 1 압축 데이터는 제 1 페이지의 제 1 내지 제 5 ECC 블록(ECC block 1~ECC block 5)에 프로그램된다. 이 후, 압축 데이터 관리 로직(1370)은 도 8에 도시된 바와 같이, "논리 주소(LA)"=1", "물리 주소(PA) = 1", "ECC 블록 시작 번호(SNE) = 1", "ECC 블록 길이(EBL) = 5"가 되도록 압축 데이터 관리 테이블을 업데이트한다. 따라서, 논리 주소 '1'에 대응하는 데이터(즉, 제 1 로우 데이터)가 제 1 페이지의 제 1 내지 제 5 ECC 블록에 저장되어 있음을 알 수 있다. 또한, 압축 데이터 관리 로직(1370)은 압축 정보(CI)에 관한 정보를 "Y"로 업데이트한다. 따라서, 논리 주소 "1"에 대응하는 데이터(즉, 제 1 로우 데이터)가 압축된 상태로 저장되어 있음을 알 수 있다.
마찬가지로, 도 6을 참조하면, 제 2 로우 데이터는 제 2 압축 데이터에 대응하며, 제 2 압축 데이터는 제 1 페이지(page 1)의 제 6 및 제 7 ECC 블록(ECC block 6~ECC block 7)에 프로그램된다. 따라서, 압축 데이터 관리 로직(1370)은 도 8에 도시된 바와 같이, "논리 주소(LA)=2", "물리 주소(PA) = 1", "ECC 블록 시작 번호(SNE) = 6", "ECC 블록 길이(EBL) = 2"가 되도록 압축 데이터 관리 테이블을 업데이트한다. 따라서, 논리 주소 '2'에 대응하는 데이터(즉, 제 2 로우 데이터)가 제 1 페이지의 제 6 및 제 7 ECC 블록에 저장되어 있음을 알 수 있다. 또한, 압축 데이터 관리 로직(1370)은 압축 정보(CI)에 관한 정보를 "Y"로 업데이트한다. 따라서, 논리 주소 "2"에 대응하는 데이터(즉, 제 2 로우 데이터)가 압축된 상태로 저장되어 있음을 알 수 있다.
도 6 및 도 8을 참조하여 설명된 바와 같이, 본 발명의 실시 예에 따른 플래시 저장 장치(1200)는 압축 데이터 관리 테이블 또는 통합 맵핑 테이블을 통하여 압축된 데이터를 ECC 블록 단위로 관리한다. 따라서, 플래시 저장 장치(1200)는 압축 데이터들을 하나의 페이지에 저장할 수 있고, 셀 어레이(1410)의 저장 공간의 낭비를 최소화할 수 있다.
도 9는 도 6 내지 도 8을 참조하여 설명된, 도 3의 플래시 메모리 시스템(1000)의 동작을 보여주는 순서도이다.
S210 단계에서, 소스 데이터가 플래시 저장 장치(1200)에 전달된다. 만약, 소스 데이터가 압축기(1360)의 압축 단위와 일치하지 않는다면, 소스 데이터는 압축 데이터 관리 로직(1370)의 제어(또는, 중앙 처리 장치(1330)의 제어)에 따라, 압축 단위로 분할된다.
S220 단계에서, 로우 데이터에 대한 압축 동작 및 압축된 데이터에 대한 ECC 비트 부가 동작이 수행된다. 여기서, 로우 데이터는 압축 단위와 일치하는 소스 데이터를 의미한다. 즉, 압축기(1360)는 소스 데이터(또는, 압축 단위로 분할된 소스 데이터)를 압축하고, ECC 회로(1350)는 압축된 데이터에 ECC 비트를 부가한다. 따라서, 압축 데이터(compressed data)가 생성된다.
S230 단계에서, 압축된 데이터가 램(1340)에 수집된다. 예를 들어, 도 6 내지 도 8을 참조하여 설명된 바와 같이, 압축기(1360)에 의하여 압축된 서로 다른 데이터가 램(1340)에 수집된다.
S240 단계에서, 램(1340)에 수집된 압축 데이터가 셀 어레이(1410)로 프로그램된다. 예를 들어, 램(1340)에 복수의 압축 데이터들이 수집되어 있는 경우, 복수의 압축 데이터들은 셀 어레이(1410)의 동일한 페이지로 프로그램된다.
S250 단계에서, 압축 데이터 관리 테이블이 업데이트된다. 즉, 압축 데이터 관리 로직(1370)은 압축 데이터 관리 테이블을 통하여 셀 어레이(1410)에 저장된 데이터를 ECC 블록 단위로 관리하며, 새롭게 프로그램된 압축 데이터의 위치 정보를 포함하도록 압축 데이터 관리 테이블을 업데이트한다.
한편, 도 9에서 설명된 플래시 메모리 시스템(1000)의 동작 방법은 예시적인 것이며, 본 발명의 기술적 사상은 이에 한정되지 않는다. 예를 들어, 도 9에서는, 램(1340)에 수집된 압축 데이터가 셀 어레이(1410)로 프로그램된 후에(S240 단계), 압축 데이터 관리 테이블이 업데이트된다(S250 단계). 이는 예시적인 것으로 이해되어야 하며, 다른 예로, 압축 데이터 관리 테이블이 먼저 업데이트되고, 이 후 램(1340)에 수집된 압축 데이터가 셀 어레이(1410)로 프로그램될 수 있다.
Ⅳ. 압축된 데이터의 크기 및 여분의 공간의 크기의 비교 결과에 기초하여 모아 쓰기 동작을 수행하는 플래시 메모리 시스템
도 10은 도 3의 플래시 메모리 시스템(1000)의 동작의 제 2 실시 예를 보여주는 순서도이다. 도 10에서 설명될 플래시 메모리 시스템(1000)의 동작은 도 6 내지 도 9에서 설명된 플래시 메모리 시스템(1000)의 동작과 유사하다. 따라서, 이하에서는 차이점이 중점적으로 설명된다.
설명의 편의상, 이하에서는, 이전의 쓰기 요청에 응답하여 압축기(1360)에 의하여 압축된 데이터는 이전의 압축 데이터(previous compressed data)라 칭해지고, 현재의 쓰기 요청에 응답하여 압축기(1360)에 의하여 압축된 데이터는 새로운 압축 데이터(new compressed data)라 칭해진다. 또한, 압축 데이터가 수집되는 램(1340)의 크기는 프로그램 단위(예를 들어, 8 KB)와 일치한다고 가정된다.
S310 단계에서, 소스 데이터가 플래시 저장 장치(1200)에 전달된다.
S320 단계에서, 압축기(1360)는 로우 데이터(raw data)를 압축하고, ECC 회로(1350)는 압축된 데이터에 ECC 비트를 부가한다. 따라서, 새로운 압축 데이터(new compressed data)가 생성된다.
S330 단계에서, 압축 데이터 관리 로직(1370)은 압축된 데이터의 크기와 여분의 공간(empty size)의 크기를 비교한다. 여기서, 여분의 공간은 한번에 프로그램될 수 있는 데이터의 크기(즉, 프로그램 단위)와 램(1340)에 수집된 이전의 압축 데이터의 크기의 차를 의미한다. 예를 들어, 도 6 내지 도 9에서 설명된 바와 같이, 페이지 단위로 프로그램 동작을 수행하는 경우, 여분의 공간은 페이지(page)의 크기와 램(1340)에 수집된 이전의 압축 데이터의 크기의 차를 의미한다. 예를 들어, 페이지의 크기가 8 KB이며, 램(1340)에 수집된 이전의 압축 데이터의 크기가 5 KB인 경우, 여분의 공간의 크기는 3 KB 이다.
만약 새로운 압축 데이터의 크기가 여분의 공간의 크기보다 작거나 같다면, 새로운 압축 데이터는 램(1340)에 수집된다(S340 단계). 이 후, 램(1340)에 수집된 새로운 압축 데이터와 이전의 압축 데이터는 셀 어레이(1410)의 동일한 페이지에 프로그램된다(S350 단계). 이 후, 압축 데이터 관리 로직(1370)은 압축 데이터 관리 테이블(또는, 통합 맵핑 테이블)을 업데이트한다(S360 단계).
만약 새로운 압축 데이터의 크기가 여분의 공간보다 크다면, 램(1340)에 저장된 이전의 압축 데이터(previous compressed data)가 셀 어레이(1410)의 소정 페이지에 프로그램된다(S370 단계). 이 후, 압축 데이터 관리 데이블이 업데이트되고(S380 단계), 이 후 새로운 압축 데이터가 램(1340)에 수집된다(S390 단계).
상술한 바와 같이, 본 발명의 일 실시 예에 따른 플래시 메모리 장치(1000)는 압축된 데이터의 크기와 페이지 버퍼(1420)의 여분의 공간의 비교 결과에 기초하여, 모아 쓰기 동작의 진행 여부를 결정할 수 있다.
한편, 상술한 설명은 예시적인 것으로 이해되어야 하며, 본 발명의 기술적 사상은 이에 한정되지 않는다. 예를 들어, 도 10에서는 설명의 편의상, 압축 데이터가 수집되는 램(1340)의 크기가 프로그램 단위와 일치하는 것으로 가정된다. 이는 예시적인 것이며, 압축 데이터를 수집하는 램(1340)의 크기는 프로그램 단위보다 크도록 구현될 수 있다. 이하에서는, 압축 데이터를 수집하는 램(1340)의 크기가 프로그램 단위보다 큰 경우에, 본 발명의 기술적 사상에 따른 실시 예가 설명된다.
Ⅴ. 새로운 압축 데이터의 크기와 복수의 이전의 압축 데이터들의 여분의 공간들의 크기를 비교하는 플래시 메모리 시스템
도 11은 도 3의 램(1340)의 일 실시 예를 보여주는 도면이다. 도 11을 참조하면, 램(1340)의 일부 영역은 대기 영역(waiting region, 1341)으로 할당되며, 대기 영역(1341)에는 이전의 압축 데이터들이 임시로 저장된다. 예를 들어, 도 11에서는 제 1 및 제 2 이전의 압축 데이터들(Previous CD 1, Previous CD 2)이 대기 영역(1341)에 임시로 저장되어 있다고 가정된다.
본 발명의 실시 예에 있어서, 압축 데이터 관리 로직(1370)은 새로운 압축 데이터의 크기와 대기 영역(1341)에 저장된 이전의 압축 데이터들의 여분의 공간들의 크기를 각각 비교한다. 만약, 새로운 압축 데이터의 크기가 이전의 압축 데이터들의 여분의 공간들 중 소정의 이전의 압축 데이터의 여분의 공간의 크기보다 작다면, 새로운 압축 데이터와 선택된 이전의 압축 데이터는 하나의 페이지에 함께 프로그램된다.
여기서, 새로운 압축 데이터는 현재의 쓰기 요청에 응답하여 압축기(1360)에 의하여 압축된 데이터를 의미하며, 이전의 압축 데이터는 이전의 쓰기 요청에 응답하여 압축기(1360)에 의하여 압축된 데이터를 의미한다. 또한, 이전의 압축 데이터의 여분의 공간은 한번에 프로그램될 수 있는 데이터의 크기(즉, 프로그램 단위)와 이전의 압축 데이터의 크기의 차를 의미한다.
예를 들어, 페이지 단위로 프로그램 동작을 수행하는 경우, 이전의 압축 데이터의 여분의 공간은 페이지(page)의 크기와 이전의 압축 데이터의 크기의 차를 의미한다. 예를 들어, 페이지(page)의 크기가 8 KB이며, 제 1 이전의 압축 데이터(Previous CD 1)의 크기가 5 KB인 경우, 제 1 이전의 압축 데이터에 대한 여분의 공간은 3 KB이다.
도 12는 도 3의 플래시 메모리 시스템(1000)의 동작의 제 3 실시 예를 보여주는 순서도이다. 도 12의 플래시 메모리 시스템(1000)의 램(1340)은 도 11과 같이 대기 영역(1341)을 포함한다. 도 12에서 설명될 플래시 메모리 시스템(1000)의 동작은 도 10에서 설명된 플래시 메모리 시스템(1000)의 동작과 유사하다. 따라서, 이하에서는 차이점이 중점적으로 설명된다.
S410 단계에서, 소스 데이터가 플래시 저장 장치(1200)에 전달된다.
S420 단계에서, 압축기(1360)는 로우 데이터(raw data)를 압축하고, ECC 회로(1350)는 압축된 데이터에 ECC 비트를 부가한다. 따라서, 새로운 압축 데이터(new compressed data, new CD)가 생성된다.
S425 단계에서, 압축 데이터 관리 로직(1370)은 새로운 압축 데이터의 크기를 대기 영역(1341)에 저장된 적어도 하나의 이전의 압축 데이터의 여분의 공간의 크기와 비교한다. 예를 들어, 도 11과 같이, 대기 영역(1341)에 두 개의 이전의 압축 데이터들(previous CD1, previous CD2)이 저장되어 있는 경우, 압축 데이터 관리 로직(1370)은 새로운 압축 데이터의 크기와 제 1 및 제 2 이전의 압축 데이터들의 여분의 공간들의 크기를 각각 비교한다.
만약 새로운 압축 데이터의 크기가 대기 영역(1341)에 저장된 복수의 이전의 압축 데이터들 중 소정의 압축 데이터의 여분의 공간보다 작다면, 새로운 압축 데이터 및 해당 이전의 압축 데이터는 램(1340)에 수집된다. 이 후, 램(1340)에 수집된 새로운 압축 데이터 및 이전의 압축 데이터는 셀 어레이(1410)의 하나의 페이지에 프로그램된다(S432 단계). 이 후, 압축 데이터 관리 로직(1370)은 압축 데이터 관리 테이블(또는 통합 맵핑 테이블)을 업데이트한다(S433 단계).
한편, 만약 새로운 압축 데이터의 크기가 대기 영역(1341)에 저장된 모든 압축 데이터들의 여분의 공간들보다 크다면, 새로운 압축 데이터는 대기 영역(1341)으로 전송된다(S440 단계). 이 후, 압축 데이터 관리 로직(1370)은 대기 영역(1341)에 저장된 압축 데이터들의 크기와 기준 크기(ref.size)를 비교한다(S445 단계).
만약 대기 영역(1341)에 저장된 압축 데이터들의 크기가 기준 크기(ref.size)보다 크면, 압축 데이터 관리 로직(1370)은 대기 영역(1341)의 크기를 줄이기 위한 일련의 동작을 수행한다. 구체적으로, 대기 영역(1341)에 저장된 이전의 압축 데이터들 중 소정의 압축 데이터가 셀 어레이(1410)로 프로그램된다(S451 단계). 이 후, 압축 데이터 관리 테이블(또는 통합 맵핑 테이블)이 업데이트된다(S452 단계).
한편, 만약 대기 영역(1341)에 저장된 압축 데이터들의 크기가 기준 크기(ref.size)보다 작으면, 저장 장치(1200)는 다음 프로그램 명령을 수신하기 위한 대기 상태(waiting state)를 유지한다.
상술한 바와 같이, 본 발명의 일 실시 예에 따른 플래시 메모리 시스템(1000)는 대기 영역(1341)에 저장된 이전의 압축 데이터들의 여분의 공간의 크기들과 새로운 압축 데이터의 크기를 비교하고, 비교 결과에 기초하여 모아 쓰기 동작의 진행 여부를 결정할 수 있다. 또한, 대기 영역(1341)의 크기가 기준 크기보다 큰 경우, 대기 영역(1341)의 크기를 줄이기 위한 일련의 동작을 수행할 수 있다.
Ⅵ. 여분의 공간의 크기에 기초하여 압축된 데이터를 분할하는 플래시 메모리 시스템
도 13은 도 3의 플래시 메모리 시스템(1000) 동작의 제 4 실시 예를 보여주는 도면이다. 새로운 압축 데이터(New CD)의 크기가 여분의 공간(empty region)보다 큰 경우, 본 발명의 실시 예에 따른 압축 데이터 관리 로직(1370)은 여분의 공간의 크기를 측정하고, 측정된 크기를 바탕으로 새로운 압축 데이터를 분할할 수 있다.
여기서, 여분의 공간은 한번에 프로그램될 수 있는 데이터의 크기(즉, 프로그램 단위)와 램(1340)에 수집된 압축 데이터의 크기의 차를 의미한다. 예를 들어, 도 6 내지 도 9에서 설명된 바와 같이, 페이지 단위로 프로그램 동작을 수행하는 경우, 여분의 공간은 페이지(page)의 크기와 램(1340)에 수집된 압축 데이터의 크기의 차를 의미한다.
간략한 설명을 위하여, 도 13에 도시된 바와 같이, 새로운 압축 데이터의 ECC 블록 길이(EBL)는 '5'라고 가정된다. 또한, 램(1340)의 여분의 공간의 ECC 블록 길이(EBL)는 '2'라고 가정된다. 이 경우, 압축 데이터 관리 로직(1370)은 새로운 압축 데이터를 '3'의 ECC 블록 길이를 갖는 제 2 새로운 압축 데이터(new CD 2)와 '2'의 ECC 블록 길이를 갖는 제 1 새로운 압축 데이터(new CD 1)로 분할한다. 이 후, 압축 데이터 관리 로직(1370)은 이전의 압축 데이터(previous CD) 및 제 1 새로운 압축 데이터(new CD 1)에 대한 프로그램 동작을 수행할 수 있다.
도 14는 도 3의 플래시 메모리 시스템(1000)의 동작의 제 4 실시 예를 보여주는 순서도이다. 도 14에서 설명될 플래시 메모리 시스템(1000)의 동작은 도 10에서 설명된 플래시 메모리 시스템(1000)의 동작과 일부 유사하다. 따라서, 이하에서는 차이점이 중점적으로 설명된다.
S510 단계에서, 소스 데이터가 플래시 저장 장치(1200)에 전달된다. S520 단계에서, 압축기(1360)는 로우 데이터(raw data)를 압축하고, ECC 회로(1350)는 압축된 데이터에 ECC 비트를 추가한다. 따라서, 압축 데이터(compressed data)가 생성된다.
S530 단계에서, 압축 데이터 관리 로직(1370)은 여분의 공간의 크기를 체크한다. S540 단계에서, 압축 데이터 관리 로직(1370)은 여분의 공간의 크기에 기초하여, 압축 데이터를 분할한다. S550 단계에서, 분할된 압축 데이터 중 선택된 데이터와 이전의 압축 데이터가 셀 어레이(1410)로 프로그램된다. 이 후, S560 단계에서, 압축 데이터 관리 테이블(또는, 통합 맵핑 테이블)에 대한 업데이트 동작이 수행된다.
상술한 바와 같이, 본 발명의 일 실시 예에 따른 플래시 메모리 시스템(1000)은 페이지 버퍼(1420)의 여분의 공간의 크기에 기초하여 압축 데이터를 분할함으로써, 모아 쓰기 동작을 수행할 수 있다.
한편, 도 6 내지 도 14에서 설명된 플래시 메모리 시스템(1000)의 동작은 하나의 페이지 단위로 프로그램 동작을 수행한다. 다만, 이는 예시적인 것으로 이해되어야 할 것이며, 본 발명의 기술적 사상은 이에 한정되지 않는다. 예를 들어, 본 발명의 실시 예에 따른 플래시 메모리 시스템(1000)의 셀 어레이(1410)는 복수의 플래인들을 포함할 수 있으며, 복수의 페이지들이 동시에 프로그램될 수 있다.
복수의 페이지들이 동시에 프로그램되는 경우, 한번에 프로그램되는 페이지들의 집합은 슈퍼 페이지(super page)라 칭해질 수 있다. 이하에서는, 슈퍼 페이지 단위로 프로그램 동작을 수행하는 본 발명의 다른 실시 예가 좀더 자세히 설명된다.
Ⅶ. 슈퍼 페이지 단위로 프로그램 동작을 수행하는 플래시 메모리 시스템
도 15는 도 3의 셀 어레이(1410)의 다른 구성 예를 보여주는 도면이다. 도 4의 셀 어레이와 달리, 도 15의 셀 어레이는 복수의 플래인들을 포함한다. 설명의 편의상, 도 15의 셀 어레이는 두 개의 플래인들을 포함한다고 가정된다. 다만 이는 예시적인 것이며, 도 15의 셀 어레이는 두 개 이상의 플래인들을 포함할 수 있다.
도 15를 참조하면, 셀 어레이(1410)는 제 1 및 제 2 플래인(1411, 1412)을 포함한다. 제 1 및 제 2 플래인(1411, 1412)은 각각 복수의 메모리 블록들을 포함한다. 또한, 각 메모리 블록은 복수의 페이지들을 포함한다.
페이지 버퍼 블록(1420)은 제 1 및 제 2 페이지 버퍼(1421, 1422)를 포함한다. 제 1 페이지 버퍼(1421)는 제 1 플래인(1411)에 대응한다. 제 1 페이지 버퍼(1421)는 제 1 플래인(1411)의 페이지에 프로그램될 데이터를 임시로 저장하거나, 제 1 플래인(1411)의 페이지로부터 읽은 데이터를 임시로 저장한다. 마찬가지로, 제 2 페이지 버퍼(1422)는 제 2 플래인(1412)에 대응하며, 제 2 플래인(1412)의 페이지에 프로그램될 데이터를 임시로 저장하거나, 제 2 플래인(1412)의 페이지로부터 읽은 데이터를 임시로 저장한다.
프로그램 동작이 수행되는 경우, 제 1 페이지 버퍼(1421)에 저장된 데이터 및 제 2 페이지 버퍼(1422)에 저장된 데이터는 셀 어레이(1410)로 동시에 프로그램된다. 즉, 셀 어레이(1410)의 두 개의 페이지들에 대한 프로그램동작이 동시에 수행된다. 이 경우, 프로그램 단위는 두 개의 페이지들의 크기의 합에 해당한다.
복수의 페이지들에 대한 프로그램 동작이 동시에 수행되는 경우에도, 본 발명의 기술적 사상이 적용될 수 있다. 즉, 복수의 페이지들에 대한 프로그램 동작이 동시에 수행되는 경우에도, 본 발명의 실시 예에 따른 압축 데이터 관리 로직(1370)은 ECC 블록 단위로 셀 어레이(1410)에 저장된 데이터를 관리하며, 복수의 압축된 데이터들이 제 1 및 제 2 페이지 버퍼(1421, 1422)를 통하여 동시에 프로그램되도록 플래시 메모리(1400)를 제어할 수 있다.
도 16 및 도 17은 복수의 페이지들에 대한 프로그램 동작이 동시에 수행되는 경우에, 도 3의 플래시 메모리 시스템(1000)의 동작을 보여주는 일 실시 예이다. 도 16 및 도 17에서 설명될 플래시 메모리 시스템(1000)의 동작은 도 6 및 도 7에서 설명된 플래시 메모리 시스템(1000)의 동작과 유사하다. 따라서, 이하에서는 차이점이 중점적으로 설명된다.
설명의 편의상, 호스트(1100)로부터 제 1 내지 제 3 쓰기 요청(first write request~third write request)이 순차적으로 컨트롤러(1300)에 제공된다고 가정된다. 또한, 각 페이지 및 페이지 버퍼의 크기는 모두 8 KB라고 가정된다. 또한, 압축 데이터가 수집되는 램(1340, 도 3 참조)의 크기는 16 KB라고 가정된다. 또한, 두 개의 페이지에 대한 프로그램 동작이 동시에 수행된다고 가정된다.
도 16을 참조하면, 먼저, 호스트(1100)로부터 제 1 쓰기 요청(first write request) 및 이에 대응하는 제 1 소스 데이터(source data 1)가 컨트롤러(1300)에 수신된다. 컨트롤러(1300)는 압축기(1360)의 압축 단위로 제 1 소스 데이터를 분할한다. 간략한 설명을 위하여, 제 1 소스 데이터와 제 1 로우 데이터는 모두 8 KB의 크기를 갖는다고 가정된다.
이 후, 압축기(1360)는 제 1 로우 데이터를 압축하고, 제 1 압축 데이터(CD 1)를 생성한다. 예를 들어, 도 16에 도시된 바와 같이, 8 KB의 제 1 로우 데이터는 압축기(1360)에 의하여 6 KB의 제 1 압축 데이터(CD 1)로 압축될 수 있다. 이 후, 제 1 압축 데이터(CD 1)는 압축 데이터 관리 로직(1370)의 제어에 따라, 램(1340)에 수집된다.
제 1 압축 데이터가 램(1340)에 수집된 후, 제 2 쓰기 요청(second write request) 및 이에 대응하는 제 2 소스 데이터(source data 2)가 컨트롤러(1300)에 수신된다. 제 1 소스 데이터와 동일한 방식에 의하여, 제 2 소스 데이터는 제 2 압축 데이터(CD 2)로 압축된다. 예를 들어, 도 16에 도시된 바와 같이, 제 2 압축 데이터(CD 2)는 4 KB의 크기를 가지며, 램(1340)에 수집된다.
이 후, 제 3 쓰기 요청(third write request) 및 이에 대응하는 제 3 소스 데이터(source data 3)가 수신된다. 동일한 방식에 의하여, 예를 들어 도 16에 도시된 바와 같이, 6 KB의 제 3 압축 데이터(CD 3)가 램(1340)에 저장된다.
제 1 내지 제 3 압축 데이터(CD 1~ CD 3)가 램(1340)에 수집된 후, 제 1 내지 제 3 압축 데이터(CD 1~ CD 3)는 페이지 버퍼 블록(1420, 도 15 참조)를 통하여 셀 어레이(1410)로 동시에 프로그램된다. 예를 들어, 도 16에 도시된 바와 같이, 제 1 및 내지 3 압축 데이터(CD 1~CD 3)는 메모리 블록(1413)의 제 1 페이지(page 1) 및 메모리 블록(1415)의 제 1 페이지(page 1)로 동시에 프로그램된다.
이 후, 압축 데이터 관리 로직(1370)은 제 1 내지 제 3 압축 데이터(CD 1~CD 3)에 대한 위치 정보를 업데이트한다. 예를 들어 도 17에 도시된 바와 같이, 압축 데이터 관리 로직(1370)은 통합 맵핑 테이블(unified mapping table)을 업데이트한다.
구체적으로, 도 16을 참조하면, 제 1 압축 데이터(CD 1)는 제 1 페이지(page 1)의 제 1 내지 제 6 ECC 블록(ECC block 1~ECC block 6)에 저장되어 있다. 따라서, 제 1 페이지의 물리 주소(PA)가 '1'인 경우, 압축 데이터 관리 로직(1370)은 도 17에 도시된 바와 같이, "물리 주소(PA) = 1", "ECC 블록 시작 번호(SNE) = 1", "ECC 블록 길이(EBL) = 6"이 되도록 통합 맵핑 테이블을 업데이트한다.
또한, 도 16을 참조하면, 제 2 압축 데이터(CD 2)는 제 1 페이지(page 1)의 제 7 및 제 8 ECC 블록(ECC block 7, ECC block 8)과 제 2 페이지의 제 1 및 제 2 ECC 블록(ECC block 1, ECC block 2)에 저장되어 있으며, '4'의 ECC 블록 길이(EBL)를 갖는다. 따라서, 압축 데이터 관리 로직(1370)은 도 17에 도시된 바와 같이, "물리 주소(PA) = 1", "ECC 블록 시작 번호(SNE) = 7", "ECC 블록 길이(EBL) = 4"가 되도록 통합 맵핑 테이블을 업데이트한다.
마찬가지로, 제 3 압축 데이터(CD 3)의 위치 정보가 "물리 주소(PA) = 2", "ECC 블록 시작 번호(SNE) = 3", "ECC 블록 길이(EBL) = 6"이 되도록, 압축 데이터 관리 로직(1370)은 통합 맵핑 테이블을 업데이트한다.
따라서, 제 1 내지 제 3 로우 데이터(Raw data 1~Raw data 2)에 대한 읽기 요청이 있는 경우, 압축 데이터 관리 로직(1370)은 통합 맵핑 테이블을 참조하여, 제 1 내지 제 3 로우 데이터가 저장된 위치를 정확히 파악할 수 있다.
Ⅷ. 메모리 시스템의 다른 구현 예들
도 18 및 도 20은 본 발명의 실시 예에 따른 메모리 시스템의 다양한 적용 예를 보여주는 블록도이다. 도 18 내지 도 20을 참조하면, 메모리 시스템(2000, 3000, 4000)은 호스트(2100, 3100, 4100) 및 저장 장치(2200, 3200, 4200)를 포함한다. 저장 장치(2200, 3200, 4200)는 컨트롤러(2210, 3210, 4210) 및 불휘발성 메모리(2220, 3220, 4220)를 포함한다.
저장 장치(2200, 3200, 4200)는 메모리 카드(예를 들면, SD, MMC 등)나 착탈 가능한 이동식 저장 장치(예를 들면, USB 메모리 등)와 같은 저장 매체를 포함한다. 저장 장치(2200, 3200, 4200)는 호스트(2100, 3100, 4100)와 연결되어 사용될 수 있다. 저장 장치(2200, 3200, 4200)는 호스트 인터페이스를 통해 호스트(2100, 3100, 4100)와 데이터를 주고 받는다. 저장 장치(2200, 3200, 4200)는 호스트(2100, 3100, 4100)로부터 전원을 공급받아서 내부 동작을 수행할 수 있다.
도 18을 참조하면, 압축 데이터 관리 로직(2230)은 하드 웨어(H/W)가 아닌 소프트웨어(S/W) 또는 펌웨어로 구현되며, 휘발성 메모리 상에서 구동될 수 있다. 도 19를 참조하면, 압축 데이터 관리 로직(3230)은 저장 매체(3220)에 포함되도록 구현될 수 있다. 도 20을 참조하면, 압축기(4240)는 호스트(4100)내에 구비되며, 컨트롤러(4210)는 압축된 데이터를 수신할 수도 있다.
본 발명의 실시 예에 따른 메모리 시스템(2000, 3000, 4000)은 ECC 블록 단위로 불휘발성 메모리(2220, 3220, 4200)에 저장된 데이터를 관리하고, 압축된 데이터의 모아 쓰기 동작을 지원함으로써, 저장 매체(2220, 3220, 4200)의 저장 공간을 효율적으로 사용할 수 있다.
Ⅸ. 메모리 시스템의 적용 예들
도 21은 본 발명의 실시 예에 따른 메모리 시스템을 메모리 카드 시스템에 적용한 예를 보여주는 블록도이다. 메모리 카드 시스템(5000)은 호스트(5100)와 메모리 카드(5200)를 포함한다. 호스트(5100)는 호스트 컨트롤러(5110), 호스트 접속 유닛(5120), 그리고 디램(5130)을 포함한다.
호스트(5100)는 메모리 카드(5200)에 데이터를 쓰거나, 메모리 카드(5200)에 저장된 데이터를 읽는다. 호스트 컨트롤러(5110)는 커맨드(예를 들면, 쓰기 커맨드), 호스트(5100) 내의 클록 발생기(도시되지 않음)에서 발생한 클록 신호(CLK), 그리고 데이터(DAT)를 호스트 접속 유닛(5120)을 통해 메모리 카드(5200)로 전송한다. 디램(5130)은 호스트(5100)의 메인 메모리이다.
메모리 카드(5200)는 카드 접속 유닛(5210), 카드 컨트롤러(5220), 그리고 플래시 메모리(5230)를 포함한다. 카드 컨트롤러(5220)는 카드 접속 유닛(5210)을 통해 수신된 커맨드에 응답하여, 카드 컨트롤러(5220) 내에 있는 클록 발생기(도시되지 않음)에서 발생한 클록 신호에 동기하여 데이터를 플래시 메모리(5230)에 저장한다. 플래시 메모리(5230)는 호스트(5100)로부터 전송된 데이터를 저장한다. 예를 들어, 호스트(5100)가 디지털 카메라인 경우에는 영상 데이터를 저장한다.
도 21에 도시된 메모리 카드 시스템(5000)은 호스트 컨트롤러(5110), 카드 컨트롤러(5220), 또는 플래시 메모리(5230) 내에 압축 데이터 관리 로직 및 압축기(도시되지 않음)를 포함할 수 있다. 앞에서 설명한 바와 같이, 본 발명은 ECC 블록 단위로 데이터를 관리하고, 압축된 데이터의 모아 쓰기 동작을 지원함으로써, 저장 공간을 효율적으로 사용할 수 있다.
도 22는 본 발명의 실시 예에 따른 메모리 시스템을 솔리드 스테이트 드라이브(SSD) 시스템에 적용한 예를 보여주는 블록도이다. 도 22를 참조하면, SSD 시스템(6000)은 호스트(6100)와 SSD(6200)를 포함한다. 호스트(6100)는 호스트 인터페이스(4111), 호스트 컨트롤러(6120), 그리고 디램(6130)을 포함한다.
호스트(6100)는 SSD(6200)에 데이터를 쓰거나, SSD(6200)에 저장된 데이터를 읽는다. 호스트 컨트롤러(6120)는 커맨드, 어드레스, 제어 신호 등의 신호(SGL)를 호스트 인터페이스(4111)를 통해 SSD(6200)로 전송한다. 디램(6130)은 호스트(6100)의 메인 메모리이다.
SSD(6200)는 호스트 인터페이스(6211)를 통해 호스트(6100)와 신호(SGL)를 주고 받으며, 전원 커넥터(power connector, 6221)를 통해 전원을 입력받는다. SSD(6200)는 복수의 불휘발성 메모리(6201~620n), SSD 컨트롤러(6210), 그리고 보조 전원 장치(6220)를 포함할 수 있다. 여기에서, 복수의 불휘발성 메모리(6201~620n)는 낸드 플래시 메모리 이외에도 PRAM, MRAM, ReRAM, FRAM 등으로 구현될 수 있다.
복수의 불휘발성 메모리(6201~620n)는 SSD(6200)의 저장 매체로서 사용된다. 복수의 불휘발성 메모리(6201~620n)는 복수의 채널(CH1~CHn)을 통해 SSD 컨트롤러(6210)와 연결될 수 있다. 하나의 채널에는 하나 또는 그 이상의 불휘발성 메모리가 연결될 수 있다. 하나의 채널에 연결되는 불휘발성 메모리는 동일한 데이터 버스에 연결될 수 있다.
SSD 컨트롤러(6210)는 호스트 인터페이스(6211)를 통해 호스트(6100)와 신호(SGL)를 주고 받는다. 여기에서, 신호(SGL)에는 커맨드, 어드레스, 데이터 등이 포함될 수 있다. SSD 컨트롤러(6210)는 호스트(6100)의 커맨드에 따라 해당 불휘발성 메모리에 데이터를 쓰거나 해당 불휘발성 메모리로부터 데이터를 읽어낸다. SSD 컨트롤러(6210)의 내부 구성은 도 23를 참조하여 상세하게 설명된다.
보조 전원 장치(6220)는 전원 커넥터(6221)를 통해 호스트(6100)와 연결된다. 보조 전원 장치(6220)는 호스트(6100)로부터 전원(PWR)을 입력받고, 충전할 수 있다. 한편, 보조 전원 장치(6220)는 SSD(6200) 내에 위치할 수도 있고, SSD(6200) 밖에 위치할 수도 있다. 예를 들면, 보조 전원 장치(6220)는 메인 보드에 위치하며, SSD(6200)에 보조 전원을 제공할 수도 있다.
도 23은 도 22에 도시된 SSD 컨트롤러(6210)의 구성을 예시적으로 보여주는 블록도이다. 도 23을 참조하면, SSD 컨트롤러(6210)는 NVM 인터페이스(6211), 호스트 인터페이스(6212), 마모도 제어 로직(6213), 제어 유닛(6214), 에스램(6215), 그리고 DRAM(6216)을 포함한다.
NVM 인터페이스(6211)는 호스트(6100)의 메인 메모리로부터 전달된 데이터를 각각의 채널들(CH1~CHn)로 스캐터링(Scattering)한다. 그리고 NVM 인터페이스(6211)는 불휘발성 메모리(6201~620n)로부터 읽은 데이터를 호스트 인터페이스(6212)를 경유하여 호스트(6100)로 전달한다.
호스트 인터페이스(6212)는 호스트(6100)의 프로토콜에 대응하여 SSD(6200)와의 인터페이싱을 제공한다. 호스트 인터페이스(6212)는 USB(Universal Serial Bus), SCSI(Small Computer System Interface), PCI express, ATA, PATA(Parallel ATA), SATA(Serial ATA), SAS(Serial Attached SCSI) 등을 이용하여 호스트(6100)와 통신할 수 있다. 또한, 호스트 인터페이스(6212)는 호스트(6100)가 SSD(6200)를 하드 디스크 드라이브(HDD)로 인식하도록 지원하는 디스크 에뮬레이션(Disk Emulation) 기능을 수행할 수 있다.
압축 데이터 관리 로직(6213)은 앞에서 설명한 바와 같이 ECC 블록 단위로 불휘발성 메모리(6201~620n)에 저장된 데이터를 관리하며, 압축된 데이터의 모아 쓰기 동작을 지원한다. 제어 유닛(6214)은 호스트(6100)로부터 입력된 신호(SGL)를 분석하고 처리한다. 제어 유닛(6214)은 호스트 인터페이스(6212)나 NVM 인터페이스(6211)를 통해 호스트(6100)나 불휘발성 메모리(6201~620n)를 제어한다. 제어 유닛(6214)은 SSD(6200)을 구동하기 위한 펌웨어에 따라서 불휘발성 메모리(6201~620n)의 동작을 제어한다.
에스램(6215)은 불휘발성 메모리(6201~620n)의 효율적 관리를 위해 사용되는 소프트웨어(S/W)를 구동하는 데 사용될 수 있다. 또한, 에스램(6215)은 호스트(6100)의 메인 메모리로부터 입력받은 메타 데이터를 저장하거나, 캐시 데이터를 저장할 수 있다. 서든 파워 오프 동작 시에, 에스램(6215)에 저장된 메타 데이터나 캐시 데이터는 보조 전원 장치(6220)를 이용하여 불휘발성 메모리(6201~620n)에 저장될 수 있다.
DRAM(6216)은 압축된 데이터를 임시로 저장하며, 압축된 데이터를 수집하는 공간을 제공한다. 또한, 앞에서 살펴본 바와 같이, DRAM(6216)의 일부 공간은 대기 영역(waiting region)으로 설정될 수도 있다. 다시 도 22를 참조하면, 본 발명의 실시 예에 따른 SSD 시스템(6000)은 ECC 블록 단위로 데이터를 관리하고, 압축된 데이터의 모아 쓰기 동작을 지원함으로써, 저장 공간을 효율적으로 사용할 수 있다.
한편, 도 23에서 DRAM(6216)은 SSD 컨트롤러(6210) 내부에 위치한다. 다만, 이는 예시적인 것으로 이해되어야 할 것이며, 본 발명의 기술적 사상은 이에 한정되지 않는다. 예를 들어, DRAM(6216)은 SSD 컨트롤러(6210)의 위부에 위치하도록 구현될 수도 있다. 또한, 도 22 및 도 23에서 SRAM(6215) 및 DRAM(6216)은 불휘발성 메모리로 대체될 수도 있다. 즉, 본 발명의 다른 실시 예에 따른 SSD 시스템(6000)은 SRAM(6215) 및 DRAM(6216)의 역할을 플래시 메모리, PRAM, RRAM, MRAM 등의 불휘발성 메모리가 수행하도록 구현될 수도 있다.
도 24는 본 발명의 실시 예에 따른 메모리 시스템을 전자 장치로 구현한 예를 보여주는 블록도이다. 여기에서, 전자 장치(7000)는 퍼스널 컴퓨터(PC)로 구현되거나, 노트북 컴퓨터, 휴대폰, PDA(Personal Digital Assistant), 그리고 카메라 등과 같은 휴대용 전자 장치로 구현될 수 있다.
도 24를 참조하면, 전자 장치(7000)는 메모리 시스템(7100), 전원 장치(7200), 보조 전원 장치(7250), 중앙처리장치(7300), 디램(7400), 그리고 사용자 인터페이스(7500)를 포함한다. 메모리 시스템(7100)은 플래시 메모리(7110) 및 메모리 컨트롤러(7120)를 포함한다. 메모리 시스템(7100)은 전자 장치(7000)에 내장될 수 있다.
앞에서 설명한 바와 같이, 본 발명에 따른 전자 장치(7000)는 ECC 블록 단위로 데이터를 관리하고, 압축된 데이터의 모아 쓰기 동작을 지원함으로써, 저장 공간을 효율적으로 사용할 수 있다.
본 발명의 실시 예에 따른 메모리 시스템은 2차원 구조를 갖는 플래시 메모리 뿐만 아니라, 3차원 구조를 갖는 플래시 메모리에도 적용될 수 있다.
도 25는 본 발명에 사용되는 플래시 메모리를 예시적으로 보여주는 블록도이다. 도 25를 참조하면, 플래시 메모리(8000)는 3차원 셀 어레이(8110), 데이터 입출력 회로(8120), 어드레스 디코더(8130), 그리고 제어 로직(8140)을 포함한다.
3차원 셀 어레이(8110)는 복수의 메모리 블록(BLK1~BLKz)을 포함한다. 각각의 메모리 블록은 3차원 구조 (또는 수직 구조)를 가질 수 있다. 2차원 구조 (또는 수평 구조)를 갖는 메모리 블록에서는, 메모리 셀들이 기판과 수평 방향으로 형성된다. 그러나 3차원 구조를 갖는 메모리 블록에서는, 메모리 셀들이 기판과 수직 방향으로 형성된다. 각각의 메모리 블록은 플래시 메모리(6100)의 소거 단위를 이룬다.
데이터 입출력 회로(8120)는 복수의 비트 라인(BLs)을 통해 3차원 셀 어레이(8110)와 연결된다. 데이터 입출력 회로(8120)는 외부로부터 데이터(DATA)를 입력받거나, 3차원 셀 어레이(8110)로부터 읽은 데이터(DATA)를 외부로 출력한다. 어드레스 디코더(8130)는 복수의 워드 라인(WLs) 및 선택 라인(GSL, SSL)을 통해 3차원 셀 어레이(8110)와 연결된다. 어드레스 디코더(8130)는 어드레스(ADDR)를 입력받고 워드 라인을 선택한다.
제어 로직(8140)은 플래시 메모리(8000)의 프로그램, 읽기, 소거 등의 동작을 제어한다. 예를 들면, 제어 로직(8140)은 프로그램 동작 시에, 어드레스 디코더(8130)를 제어함으로 선택 워드 라인으로 프로그램 전압이 제공되도록 하고, 데이터 입출력 회로(8120)를 제어함으로 데이터가 프로그램되도록 할 수 있다.
도 26은 도 25에 도시된 메모리 블록(BLK1)의 3차원 구조를 예시적으로 보여주는 사시도이다. 도 26을 참조하면, 메모리 블록(BLK1)은 기판(SUB)과 수직 방향으로 형성되어 있다. 기판(SUB)에는 n+ 도핑 영역이 형성된다. 기판(SUB) 위에는 게이트 전극막(gate electrode layer)과 절연막(insulation layer)이 교대로 증착된다. 그리고 게이트 전극막(gate electrode layer)과 절연막(insulation layer) 사이에는 전하 저장막(charge storage layer)이 형성될 수 있다.
게이트 전극막과 절연막을 수직 방향으로 패터닝(vertical patterning)하면, V자 모양의 필라(pillar)가 형성된다. 필라는 게이트 전극막과 절연막을 관통하여 기판(SUB)과 연결된다. 필라(Pillar)의 외곽 부분(O)은 채널 반도체로 구성될 수 있고, 내부(I)는 실리콘 산화물(Silicon Oxide)과 같은 절연 물질로 구성될 수 있다.
계속해서 도 26을 참조하면, 메모리 블록(BLK1)의 게이트 전극막(gate electrode layer)은 접지 선택 라인(GSL), 복수의 워드 라인(WL1~WL8), 그리고 스트링 선택 라인(SSL)에 연결될 수 있다. 그리고 메모리 블록(BLK1)의 필라(pillar)는 복수의 비트 라인(BL1~BL3)과 연결될 수 있다. 도 26에서는, 하나의 메모리 블록(BLK1)이 2개의 선택 라인(GSL, SSL), 8개의 워드 라인(WL1~WL8), 그리고 3개의 비트 라인(BL1~BL3)을 갖는 것으로 도시되어 있으나, 실제로는 이것들보다 더 많거나 적을 수 있다.
삭제
삭제
삭제
본 발명의 범위 또는 기술적 사상을 벗어나지 않고 본 발명의 구조가 다양하게 수정되거나 변경될 수 있음은 이 분야에 숙련된 자들에게 자명하다. 상술한 내용을 고려하여 볼 때, 만약 본 발명의 수정 및 변경이 아래의 청구항들 및 동등물의 범주 내에 속한다면, 본 발명이 이 발명의 변경 및 수정을 포함하는 것으로 여겨진다.
Source data: 소스 데이터
Raw data: 로우 데이터 또는 압축기에 의하여 압축되지 않은 데이터
CD: 압축 데이터
LA: 논리 주소
PA: 물리 주소
SNE: ECC 블록의 시작 번호
EBL: 소정 데이터에 대응하는 ECC 블록들의 길이
CI: 압축 정보

Claims (35)

  1. 메모리 셀 어레이의 사용자 영역;
    상기 사용자 영역에 쓰여질 압축 데이터를 임시로 저장하는 버퍼 영역; 및
    상기 버퍼 영역에 저장된 압축 데이터가 상기 사용자 영역에 쓰여지도록, 상기 사용자 영역 및 상기 버퍼 영역을 제어하는 컨트롤러를 포함하되,
    상기 컨트롤러는 상기 사용자 영역에 쓰여질 압축 데이터에 대한 위치 정보를 프로그램 단위보다 작은 ECC 블록 단위로 관리하고,
    쓰기 동작 시, 상기 버퍼 영역에 저장된 압축 데이터는 상기 프로그램 단위로 상기 사용자 영역에 쓰여지는 저장 장치.
  2. 제 1 항에 있어서,
    상기 ECC 블록 단위는 상기 사용자 영역에 쓰여질 압축 데이터의 신뢰성을 보장하는 단위이고,
    상기 ECC 블록은 유저 데이터 정보인 데이터 비트 및 상기 데이터 비트의 에러를 정정하는 ECC 비트를 포함하는 저장 장치.
  3. 제 1 항에 있어서,
    상기 프로그램 단위는 상기 ECC 블록 단위의 정수배인 저장 장치.
  4. 제 1 항에 있어서,
    상기 버퍼 영역은 제 1 및 제 2 압축 데이터를 임시로 저장하며,
    상기 컨트롤러는 상기 제 1 및 제 2 압축 데이터를 상기 사용자 영역의 동일한 페이지에 프로그램하는 저장 장치.
  5. 제 1 항에 있어서,
    쓰기 요청된 로우 데이터를 압축하는 압축기; 및
    상기 압축기에 의하여 압축된 로우 데이터에 ECC 비트를 부가함으로써, 상기 사용자 영역에 쓰여질 압축 데이터를 생성하는 ECC 회로를 더 포함하는 저장 장치.
  6. 제 1 항에 있어서,
    상기 컨트롤러는 상기 컨트롤러의 제어에 따라 상기 사용자 영역에 저장된 압축 데이터에 대한 위치 정보를 프로그램 단위보다 작은 ECC 블록 단위로 관리하는 압축 데이터 관리 테이블을 포함하고,
    상기 압축 데이터 관리 테이블은 상기 사용자 영역에 저장된 압축 데이터의 물리 주소에 관한 정보, 상기 사용자 영역에 저장된 압축 데이터의 ECC 블록 시작 번호에 관한 정보, 및 상기 사용자 영역에 저장된 압축 데이터의 ECC 블록 길이에 관한 정보를 관리하는 저장 장치.
  7. 제 6 항에 있어서,
    상기 압축 데이터 관리 테이블은 상기 사용자 영역에 저장된 압축 데이터의 물리 주소에 대응하는 논리 주소에 관한 정보를 함께 관리하는 저장 장치.
  8. 제 7 항에 있어서,
    상기 압축 데이터 관리 테이블은 상기 사용자 영역에 저장된 제 1 및 제 2 압축 데이터의 물리 주소에 관한 정보를 관리하며, 상기 제 1 및 제 2 압축 데이터는 동일한 물리 주소를 갖는 저장 장치.
  9. 제 1 항에 있어서,
    상기 컨트롤러는 제 1 압축 데이터에 대한 여분의 공간의 크기에 기초하여, 제 2 압축 데이터를 상기 제 1 압축 데이터와 함께 상기 사용자 영역에 프로그램할 지의 여부를 결정하되,
    상기 제 1 압축 데이터에 대한 여분의 공간의 크기가 상기 제 2 압축 데이터의 크기보다 큰 경우, 상기 제 1 및 제 2 압축 데이터는 상기 사용자 영역의 동일한 페이지에 프로그램되며, 그리고
    상기 제 1 압축 데이터에 대한 여분의 공간의 크기가 상기 제 2 압축 데이터보다 작은 경우, 상기 제 1 압축 데이터는 상기 사용자 영역에 프로그램되는 저장 장치.
  10. 제 1 항에 있어서,
    상기 버퍼 영역은 복수의 압축 데이터들을 임시로 저장하는 대기 영역을 포함하며,
    상기 컨트롤러는 쓰기 요청된 압축 데이터의 크기를 상기 대기 영역에 저장된 복수의 압축 데이터들에 대한 여분의 공간들과 각각 비교하는 저장 장치.
  11. 제 10 항에 있어서,
    상기 쓰기 요청된 압축 데이터의 크기가 상기 대기 영역에 저장된 복수의 압축 데이터들의 여분의 공간들 중 선택된 압축 데이터의 여분의 공간보다 작은 경우, 상기 컨트롤러는 상기 쓰기 요청된 압축 데이터와 상기 선택된 압축 데이터를 상기 사용자 영역의 동일한 페이지에 프로그램하며, 그리고
    상기 쓰기 요청된 압축 데이터의 크기가 상기 대기 영역에 저장된 복수의 압축 데이터들의 여분의 공간들보다 큰 경우, 상기 컨트롤러는 상기 쓰기 요청된 압축 데이터를 상기 대기 영역에 전송하는 저장 장치.
  12. 제 10 항에 있어서,
    상기 컨트롤러는 상기 대기 영역의 크기를 기준 크기와 비교하고, 상기 대기 영역의 크기가 상기 기준 크기보다 큰 경우에 상기 대기 영역에 저장된 복수의 압축 데이터들 중 선택된 압축 데이터를 상기 사용자 영역에 프로그램하는 저장 장치.
  13. 제 1 항에 있어서,
    상기 컨트롤러는 제 1 압축 데이터에 대한 여분의 공간의 크기와 제 2 압축 데이터의 크기를 비교하고, 상기 제 1 압축 데이터에 대한 여분의 공간의 크기가 상기 제 2 압축 데이터의 크기보다 큰 경우에 상기 제 2 압축 데이터를 분할하는 저장 장치.
  14. 제 13 항에 있어서,
    상기 컨트롤러는 상기 제 2 압축 데이터를 제 1 및 제 2 분할 압축 데이터로 분할하되, 상기 제 1 분할 압축 데이터의 크기가 상기 제 1 압축 데이터에 대한 여분의 공간의 크기보다 작으며,
    상기 컨트롤러는 상기 제 1 압축 데이터 및 상기 제 1 분할 압축 데이터를 상기 사용자 영역의 동일한 페이지에 프로그램하는 저장 장치.
  15. 제 1 항에 있어서,
    상기 컨트롤러는 상기 버퍼 영역에 저장된 적어도 둘 이상의 압축 데이터들을 상기 사용자 영역의 복수의 페이지들에 동시에 프로그램하는 저장 장치.
  16. 쓰기 요청된 데이터를 압축하는 단계;
    상기 압축된 데이터를 램에 수집하는 단계;
    상기 램에 수집된 압축 데이터를 불휘발성 메모리에 프로그램하는 단계; 및
    상기 불휘발성 메모리에 저장된 압축 데이터를 ECC 블록 단위로 관리하는 압축 데이터 관리 테이블을 업데이트하는 단계를 포함하되,
    상기 램에 수집된 압축 데이터는 상기 ECC 블록 단위보다 큰 프로그램 단위로 상기 불휘발성 메모리에 프로그램되는 불휘발성 메모리 장치의 동작 방법.
  17. 제 16 항에 있어서,
    상기 쓰기 요청된 데이터의 크기를 상기 램에 저장된 복수의 압축 데이터들에 대한 여분의 공간들과 각각 비교하는 단계를 더 포함하되,
    상기 쓰기 요청된 데이터의 크기가 상기 램에 저장된 복수의 압축 데이터들의 여분의 공간들 중 선택된 압축 데이터의 여분의 공간보다 작은 경우, 상기 쓰기 요청된 데이터와 상기 선택된 압축 데이터는 상기 불휘발성 메모리의 동일한 페이지에 프로그램되는 불휘발성 메모리 장치의 동작 방법.
  18. 복수의 페이지들에 대응하는 프로그램 단위로 프로그램 동작을 수행하는 적어도 하나의 불휘발성 메모리 장치; 및
    상기 적어도 하나의 불휘발성 메모리 장치에 쓰여질 압축 데이터를 임시로 저장하는 버퍼 메모리를 포함하며, 상기 버퍼 메모리에 저장된 압축 데이터가 상기 적어도 하나의 불휘발성 메모리 장치에 쓰여지도록, 상기 버퍼 메모리 및 상기 적어도 하나의 불휘발성 메모리 장치를 제어하는 컨트롤러를 포함하되,
    상기 컨트롤러는 상기 적어도 하나의 불휘발성 메모리 장치에 쓰여질 압축 데이터에 대한 위치 정보를 상기 프로그램 단위보다 작은 ECC 블록 단위로 관리하고,
    프로그램 동작 시, 상기 버퍼 메모리에 저장된 압축 데이터는 상기 프로그램 단위로 상기 적어도 하나의 불휘발성 메모리 장치에 쓰여지는 솔리드 스테이트 디스크.
  19. 제 18 항에 있어서,
    상기 버퍼 메모리는 복수의 압축 데이터들을 저장하며, 상기 버퍼 메모리에 저장된 복수의 압축 데이터들은, 상기 버퍼 메모리에 저장된 복수의 압축 데이터들의 크기가 상기 복수의 페이지들에 대응하는 프로그램 단위보다 작은 경우, 상기 적어도 하나의 불휘발성 메모리 장치의 미리 정해진 페이지로 동시에 프로그램되는 솔리드 스테이트 디스크.
  20. 3차원 메모리 셀 어레이를 포함하는 불휘발성 메모리 장치; 및
    상기 불휘발성 메모리 장치를 제어하는 메모리 컨트롤러를 포함하되,
    상기 메모리 컨트롤러는 상기 불휘발성 메모리 장치에 쓰여질 압축 데이터를 임시로 저장하는 버퍼 메모리를 포함하며, 상기 버퍼 메모리에 저장된 압축 데이터가 상기 불휘발성 메모리 장치에 쓰여지도록, 상기 버퍼 메모리 및 상기 불휘발성 메모리 장치를 제어하고,
    상기 메모리 컨트롤러는 상기 불휘발성 메모리 장치에 쓰여질 압축 데이터에 대한 위치 정보를 프로그램 단위보다 작은 ECC 블록 단위로 관리하고,
    프로그램 동작 시, 상기 버퍼 메모리에 저장된 압축 데이터는 상기 프로그램 단위로 상기 불휘발성 메모리 장치에 쓰여지는 저장 장치.
  21. 삭제
  22. 삭제
  23. 삭제
  24. 삭제
  25. 삭제
  26. 삭제
  27. 삭제
  28. 삭제
  29. 삭제
  30. 삭제
  31. 삭제
  32. 삭제
  33. 삭제
  34. 삭제
  35. 삭제
KR1020120002559A 2012-01-09 2012-01-09 저장 장치 및 불휘발성 메모리 장치, 그리고 그것의 동작 방법 KR101888074B1 (ko)

Priority Applications (4)

Application Number Priority Date Filing Date Title
KR1020120002559A KR101888074B1 (ko) 2012-01-09 2012-01-09 저장 장치 및 불휘발성 메모리 장치, 그리고 그것의 동작 방법
DE102012112354A DE102012112354A1 (de) 2012-01-09 2012-12-17 Speichervorrichtung und nichtflüchtige Speichervorrichtung sowie Betriebsverfahren davon
US13/724,011 US9176808B2 (en) 2012-01-09 2012-12-21 Storage device and nonvolatile memory device and operating method thereof
CN201310007947.0A CN103197897B (zh) 2012-01-09 2013-01-09 存储装置和非易失性存储器装置及其操作方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020120002559A KR101888074B1 (ko) 2012-01-09 2012-01-09 저장 장치 및 불휘발성 메모리 장치, 그리고 그것의 동작 방법

Publications (2)

Publication Number Publication Date
KR20130081534A KR20130081534A (ko) 2013-07-17
KR101888074B1 true KR101888074B1 (ko) 2018-08-13

Family

ID=48652578

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020120002559A KR101888074B1 (ko) 2012-01-09 2012-01-09 저장 장치 및 불휘발성 메모리 장치, 그리고 그것의 동작 방법

Country Status (4)

Country Link
US (1) US9176808B2 (ko)
KR (1) KR101888074B1 (ko)
CN (1) CN103197897B (ko)
DE (1) DE102012112354A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2022173121A1 (ko) * 2021-02-15 2022-08-18 삼성전자 주식회사 이형 메모리들을 포함하는 전자 장치 및 그것의 이형 메모리들 간 압축 데이터 이동 방법

Families Citing this family (41)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015022516A (ja) * 2013-07-19 2015-02-02 ソニー株式会社 記憶制御装置、記憶装置、情報処理システムおよび記憶制御方法
US9898365B2 (en) 2013-07-31 2018-02-20 Hewlett Packard Enterprise Development Lp Global error correction
WO2015016877A1 (en) * 2013-07-31 2015-02-05 Hewlett-Packard Development Company, L.P. Memory unit
US9740621B2 (en) 2014-05-21 2017-08-22 Qualcomm Incorporated Memory controllers employing memory capacity and/or bandwidth compression with next read address prefetching, and related processor-based systems and methods
US10838862B2 (en) 2014-05-21 2020-11-17 Qualcomm Incorporated Memory controllers employing memory capacity compression, and related processor-based systems and methods
US10503661B2 (en) * 2014-05-21 2019-12-10 Qualcomm Incorporated Providing memory bandwidth compression using compressed memory controllers (CMCs) in a central processing unit (CPU)-based system
US9710199B2 (en) 2014-11-07 2017-07-18 International Business Machines Corporation Non-volatile memory data storage with low read amplification
US10162700B2 (en) * 2014-12-23 2018-12-25 International Business Machines Corporation Workload-adaptive data packing algorithm
KR102295223B1 (ko) * 2015-01-13 2021-09-01 삼성전자주식회사 속도 모드 관리자를 포함하는 저장 장치 및 사용자 장치
US9710324B2 (en) * 2015-02-03 2017-07-18 Qualcomm Incorporated Dual in-line memory modules (DIMMs) supporting storage of a data indicator(s) in an error correcting code (ECC) storage unit dedicated to storing an ECC
KR20160148952A (ko) * 2015-06-17 2016-12-27 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
KR20170008339A (ko) * 2015-07-13 2017-01-24 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
CN106354615B (zh) * 2015-07-21 2021-06-01 北京忆恒创源科技有限公司 固态硬盘日志生成方法及其装置
US9712190B2 (en) 2015-09-24 2017-07-18 International Business Machines Corporation Data packing for compression-enabled storage systems
US10402323B2 (en) * 2015-10-28 2019-09-03 Nvidia Corporation Organizing memory to optimize memory accesses of compressed data
US9870285B2 (en) 2015-11-18 2018-01-16 International Business Machines Corporation Selectively de-straddling data pages in non-volatile memory
US10877544B2 (en) * 2016-01-12 2020-12-29 Smart Modular Technologies, Inc. Memory management system with backup system and method of operation thereof
US10191850B2 (en) 2016-03-31 2019-01-29 Qualcomm Incorporated Providing memory bandwidth compression using multiple last-level cache (LLC) lines in a central processing unit (CPU)-based system
US10067706B2 (en) 2016-03-31 2018-09-04 Qualcomm Incorporated Providing memory bandwidth compression using compression indicator (CI) hint directories in a central processing unit (CPU)-based system
KR102525061B1 (ko) 2016-07-19 2023-04-21 에스케이하이닉스 주식회사 입력 데이터를 압축하여 저장하는 데이터 저장 장치
US10043573B2 (en) * 2016-08-04 2018-08-07 Intel Corporation Apparatus and method for endurance friendly programming using lower voltage thresholds
US10176090B2 (en) 2016-09-15 2019-01-08 Qualcomm Incorporated Providing memory bandwidth compression using adaptive compression in central processing unit (CPU)-based systems
CN106527984A (zh) * 2016-11-02 2017-03-22 郑州云海信息技术有限公司 一种用于固态硬盘的存储方法及其系统
US10387305B2 (en) * 2016-12-23 2019-08-20 Intel Corporation Techniques for compression memory coloring
CN106776109B (zh) * 2016-12-26 2020-01-24 湖南国科微电子股份有限公司 固态硬盘读错误检测装置及读不可纠错误原因的检测方法
US10732896B2 (en) * 2017-06-12 2020-08-04 Western Digital Technologies, Inc. Method and system for reading data during control sync operations
TWI720246B (zh) * 2017-08-30 2021-03-01 慧榮科技股份有限公司 資料儲存裝置以及其操作方法
KR102490104B1 (ko) * 2017-10-30 2023-01-19 삼성전자주식회사 데이터 보호를 사용하는 인-밴드 메모리에 액세스하기 위한 장치 및 방법
KR20190052366A (ko) * 2017-11-08 2019-05-16 에스케이하이닉스 주식회사 컨트롤러 및 컨트롤러의 동작방법
KR102384759B1 (ko) * 2017-11-13 2022-04-11 삼성전자주식회사 호스트 메모리 버퍼를 사용하기 위해 호스트 장치와 속성 정보를 공유하는 스토리지 장치 및 그것을 포함하는 전자 장치
CN108334287A (zh) * 2018-01-30 2018-07-27 江苏华存电子科技有限公司 一种提高闪存每单位写入的资料量的方法及装置
US10514980B2 (en) * 2018-03-22 2019-12-24 Winbond Electronics Corp. Encoding method and memory storage apparatus using the same
US10990463B2 (en) 2018-03-27 2021-04-27 Samsung Electronics Co., Ltd. Semiconductor memory module and memory system including the same
KR102505913B1 (ko) * 2018-04-04 2023-03-07 삼성전자주식회사 메모리 모듈 및 메모리 모듈을 포함하는 메모리 시스템
KR102530369B1 (ko) * 2018-04-23 2023-05-10 에스케이하이닉스 주식회사 저장 장치 및 그 동작 방법
CN110333965B (zh) * 2019-05-30 2023-05-26 深圳市博德越科技有限公司 一种固态硬盘控制器装置及固态硬盘数据校验方法
US10963336B2 (en) 2019-08-29 2021-03-30 Micron Technology, Inc. Semiconductor device with user defined operations and associated methods and systems
US11200118B2 (en) 2019-08-29 2021-12-14 Micron Technology, Inc. Semiconductor device with modified command and associated methods and systems
US11042436B2 (en) 2019-08-29 2021-06-22 Micron Technology, Inc. Semiconductor device with modified access and associated methods and systems
US11587620B2 (en) * 2020-06-05 2023-02-21 Samsung Electronics Co., Ltd. Automatic program voltage selection network
CN114490172B (zh) * 2022-04-02 2022-07-12 武汉杰开科技有限公司 数据存储系统及方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070088904A1 (en) 2005-10-13 2007-04-19 Sinclair Alan W Memory system storing transformed units of data in fixed sized storage blocks
US20110154160A1 (en) * 2009-12-23 2011-06-23 Sandisk Corporation System and method of error correction of control data at a memory device
US8898548B1 (en) 2012-08-24 2014-11-25 Western Digital Technologies, Inc. Methods, data storage devices and systems having variable size ECC page size

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5237460A (en) 1990-12-14 1993-08-17 Ceram, Inc. Storage of compressed data on random access storage devices
US5778411A (en) 1995-05-16 1998-07-07 Symbios, Inc. Method for virtual to physical mapping in a mapped compressed virtual storage subsystem
US6115787A (en) 1996-11-05 2000-09-05 Hitachi, Ltd. Disc storage system having cache memory which stores compressed data
KR100242996B1 (ko) 1996-12-30 2000-02-01 김영환 압축데이타 저장방법
JP2001093226A (ja) * 1999-09-21 2001-04-06 Sony Corp 情報通信システムおよび方法、ならびに、情報通信装置および方法
US7111142B2 (en) * 2002-09-13 2006-09-19 Seagate Technology Llc System for quickly transferring data
US7612803B2 (en) * 2003-06-10 2009-11-03 Zoran Corporation Digital camera with reduced image buffer memory and minimal processing for recycling through a service center
US7424482B2 (en) 2004-04-26 2008-09-09 Storwize Inc. Method and system for compression of data for block mode access storage
KR20070031647A (ko) 2005-09-15 2007-03-20 삼성전자주식회사 플래시 메모리 장치에 압축 데이터를 기록하는 방법 및상기 기록된 데이터를 읽는 방법, 그리고 상기 방법을이용하는 플래시 메모리 장치
KR100772393B1 (ko) * 2006-02-08 2007-11-01 삼성전자주식회사 에러 정정 블록, 에러 정정 블록의 생성 방법 및 장치,에러 정정 방법
KR20080023191A (ko) * 2006-09-08 2008-03-12 삼성전자주식회사 퓨전메모리 장치 및 방법
US8151082B2 (en) * 2007-12-06 2012-04-03 Fusion-Io, Inc. Apparatus, system, and method for converting a storage request into an append data storage command
US8495292B2 (en) * 2006-12-06 2013-07-23 Fusion-Io, Inc. Apparatus, system, and method for an in-server storage area network
KR100924021B1 (ko) 2007-10-02 2009-10-28 주식회사 휴원 플래시 메모리의 사상 관리 방법
TWI476676B (zh) 2008-09-29 2015-03-11 Sandisk Il Ltd 用於使用不同叢集尺寸的儲存裝置之檔案系統
US8341501B2 (en) * 2009-04-30 2012-12-25 International Business Machines Corporation Adaptive endurance coding of non-volatile memories
KR20110016324A (ko) 2009-08-11 2011-02-17 주식회사 유니듀 플래시 메모리에 데이터를 기록하는 방법
KR20110113420A (ko) 2010-04-09 2011-10-17 삼성전자주식회사 저장 매체에 데이터를 저장하는 방법, 그를 이용한 데이터 저장 장치, 및 그것을 포함한 시스템
KR20110113421A (ko) 2010-04-09 2011-10-17 삼성전자주식회사 저장 매체에 데이터를 저장하는 방법, 그를 이용한 데이터 저장 장치, 및 그것을 포함한 시스템
WO2012025974A1 (ja) * 2010-08-23 2012-03-01 富士通株式会社 データ記憶装置およびデータ記憶装置制御方法
KR20120090194A (ko) * 2011-02-07 2012-08-17 삼성전자주식회사 데이터 처리 장치 및 이를 포함하는 데이터 처리 시스템
WO2012168960A1 (en) * 2011-06-07 2012-12-13 Hitachi, Ltd. Semiconductor storage apparatus and method of controlling semiconductor storage apparatus
KR20130084469A (ko) * 2012-01-17 2013-07-25 삼성전자주식회사 데이터 압축 저장 방법 및 이를 이용한 저장 장치

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070088904A1 (en) 2005-10-13 2007-04-19 Sinclair Alan W Memory system storing transformed units of data in fixed sized storage blocks
US20110154160A1 (en) * 2009-12-23 2011-06-23 Sandisk Corporation System and method of error correction of control data at a memory device
US8898548B1 (en) 2012-08-24 2014-11-25 Western Digital Technologies, Inc. Methods, data storage devices and systems having variable size ECC page size

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2022173121A1 (ko) * 2021-02-15 2022-08-18 삼성전자 주식회사 이형 메모리들을 포함하는 전자 장치 및 그것의 이형 메모리들 간 압축 데이터 이동 방법

Also Published As

Publication number Publication date
US20130179752A1 (en) 2013-07-11
US9176808B2 (en) 2015-11-03
CN103197897B (zh) 2018-01-23
DE102012112354A8 (de) 2013-09-12
DE102012112354A1 (de) 2013-07-11
CN103197897A (zh) 2013-07-10
KR20130081534A (ko) 2013-07-17

Similar Documents

Publication Publication Date Title
KR101888074B1 (ko) 저장 장치 및 불휘발성 메모리 장치, 그리고 그것의 동작 방법
US10282252B2 (en) RAID storage device and method of management thereof
KR101888009B1 (ko) 저장 장치
CN107179996B (zh) 数据存储装置和其操作方法
US9852061B2 (en) Memory device and operating method of memory device
US10838858B2 (en) Controller and operating method of the same
JP2013114679A (ja) ウェアレベル制御ロジックを含むメモリシステム
KR20180034842A (ko) 메모리 제어장치 및 방법
CN106649144B (zh) 数据储存设备及其操作方法
KR20200074464A (ko) 데이터 저장 장치 및 동작 방법, 이를 포함하는 스토리지 시스템
KR102475798B1 (ko) 메모리 시스템 및 메모리 시스템의 동작 방법
CN110618786A (zh) 存储器系统及存储器系统的操作方法
CN110825316A (zh) 控制器及该控制器的操作方法
KR102593552B1 (ko) 컨트롤러, 메모리 시스템 및 그의 동작 방법
CN110703983B (zh) 控制器及其操作方法
KR20210156010A (ko) 저장 장치 및 그 동작 방법
US10691352B2 (en) Data storage device and method of operating the same
US11586379B2 (en) Memory system and method of operating the same
KR102234725B1 (ko) 컨트롤러 및 메모리 시스템 및 메모리 시스템의 동작 방법
US10515693B1 (en) Data storage apparatus and operating method thereof
CN114968856A (zh) 存储器系统及其操作方法
CN112711377A (zh) 分布式存储系统的存储节点及其操作方法
CN114527941B (zh) 存储器控制方法、存储器存储装置及存储器控制电路单元
TWI813362B (zh) 部分抹除管理方法、記憶體儲存裝置及記憶體控制電路單元
US11693574B2 (en) Method of writing data in storage device and storage device performing the same

Legal Events

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