KR20220072398A - 메모리 장치 및 메모리 시스템 - Google Patents

메모리 장치 및 메모리 시스템 Download PDF

Info

Publication number
KR20220072398A
KR20220072398A KR1020200159958A KR20200159958A KR20220072398A KR 20220072398 A KR20220072398 A KR 20220072398A KR 1020200159958 A KR1020200159958 A KR 1020200159958A KR 20200159958 A KR20200159958 A KR 20200159958A KR 20220072398 A KR20220072398 A KR 20220072398A
Authority
KR
South Korea
Prior art keywords
data
soft
memory device
alphabets
memory
Prior art date
Application number
KR1020200159958A
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 KR1020200159958A priority Critical patent/KR20220072398A/ko
Priority to US17/324,579 priority patent/US20220164143A1/en
Priority to CN202110763317.0A priority patent/CN114550784A/zh
Publication of KR20220072398A publication Critical patent/KR20220072398A/ko

Links

Images

Classifications

    • 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/26Sensing or reading circuits; Data output circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/56Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
    • G11C11/5621Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency using charge storage in a floating gate
    • G11C11/5642Sensing or reading circuits; Data output circuits
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • 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/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1012Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
    • 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/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1068Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
    • 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/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1072Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in multilevel memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/174Redundancy elimination performed by the file system
    • G06F16/1744Redundancy elimination performed by the file system using compression, e.g. sparse files
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0608Saving storage space on storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/52Protection of memory contents; Detection of errors in memory contents
    • 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
    • G11C7/1006Data managing, e.g. manipulating data before writing or reading out, data bus switches or control circuits therefor
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/40Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
    • H03M7/4031Fixed length to variable length coding
    • H03M7/4037Prefix coding
    • H03M7/4081Static prefix coding
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/60General implementation details not specific to a particular type of compression
    • H03M7/6041Compression optimized for errors
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/60General implementation details not specific to a particular type of compression
    • H03M7/6064Selection of Compressor
    • H03M7/6082Selection strategies
    • H03M7/6094Selection strategies according to reasons other than compression rate or data type
    • 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
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/56Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/04Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS
    • G11C16/0483Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS comprising cells having several storage transistors connected in series
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C2029/0411Online error correction
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C2207/00Indexing scheme relating to arrangements for writing information into, or reading information out from, a digital store
    • G11C2207/10Aspects relating to interfaces of memory device to external buses
    • G11C2207/102Compression or decompression of data before storage
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/40Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code

Abstract

메모리 장치는, 복수의 메모리 셀들; 컨트롤러로부터 수신된, 상기 복수의 메모리 셀들에 대한 소프트 리드 커맨드에 응하여 메이저 심볼들 및 마이너 심볼들을 포함하는 소프트 데이터를 생성하는 소프트 리드부; 상기 소프트 데이터에 포함되는 복수의 소스 알파벳들 중 상기 메이저 심볼이 제1 길이만큼 연속하는 메이저 소스 알파벳들을 제2 길이의 코드 알파벳들로 부호화하고, 상기 메이저 심볼이 상기 제1 길이보다 짧은 길이만큼 연속하고 하나의 마이너 심볼이 후속하는 마이너 소스 알파벳들을 상기 제2 길이보다 긴 길이의 코드 알파벳들로 부호화함으로써 압축 데이터를 생성하는 압축부; 및 상기 압축 데이터를 상기 컨트롤러로 제공하는 인터페이스를 포함한다.

Description

메모리 장치 및 메모리 시스템{MEMORY DEVICE AND MEMORY SYSTEM}
본 발명은 메모리 장치 및 상기 메모리 장치를 포함하는 메모리 시스템에 관한 것이다.
시스템 반도체 장치는 데이터 연산, 제어 등의 정보를 처리하는 역할을 수행하고, 메모리 반도체 장치는 데이터를 저장하는 역할을 수행한다. 메모리 반도체 장치는 데이터를 임시 저장하기 위해 사용되는 휘발성(volatile) 메모리 장치와 데이터를 영구 저장하기 위해 사용되는 비휘발성(non-volatile) 메모리 장치를 포함할 수 있다.
자기 디스크와 기계적인 구동장치(예, mechanical arm)을 포함하는 하드 디스크와 비교하면, 비휘발성 메모리 장치는 반도체 공정 기술의 발달로 작은 면적에 많은 데이터를 저장할 수 있을 뿐만 아니라 기계적인 구동장치를 사용할 필요가 없어 데이터를 액세스하는 속도가 빠르고 전력 소모가 적을 수 있다. 이러한 장점을 갖는 비휘발성 메모리 장치를 포함하는 메모리 시스템의 예로서, USB(Universal Serial Bus) 메모리 장치, 다양한 인터페이스를 갖는 메모리 카드, 솔리드 스테이트 드라이브(SSD: Solid State Drive) 등이 있다.
본 발명의 일 실시예는 메모리 시스템의 복잡도 및 성능 저하를 피하고, 메모리 장치의 사용 효율을 개선하여, 메모리 장치에 저장되는 데이터를 안전하게 보호하고 신속하게 처리할 수 있는 메모리 시스템, 데이터 처리 시스템, 혹은 그것의 동작 방법을 제공할 수 있다.
또한, 본 발명의 일 실시예는 가변 길이 인코딩(variable length encoding)을 이용하여 소프트 데이터를 압축함으로써, 메모리 장치와 컨트롤러 간의 소프트 데이터 전송 효율을 향상시킬 수 있으며, 메모리 장치와 컨트롤러 간의 인터페이스에서의 전력 소모를 감소시킬 수 있는 방법 및 장치를 제공할 수 있다.
본 발명에서 이루고자 하는 기술적 과제들은 이상에서 언급한 기술적 과제들로 제한되지 않으며, 언급하지 않은 또 다른 기술적 과제들은 아래의 기재로부터 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에게 명확하게 이해될 수 있을 것이다.
본 발명의 실시 예에 따른 메모리 장치는, 복수의 메모리 셀들; 컨트롤러로부터 수신된, 상기 복수의 메모리 셀들에 대한 소프트 리드 커맨드에 응하여 메이저 심볼들 및 마이너 심볼들을 포함하는 소프트 데이터를 생성하는 소프트 리드부; 상기 소프트 데이터에 포함되는 복수의 소스 알파벳들 중 상기 메이저 심볼이 제1 길이만큼 연속하는 메이저 소스 알파벳들을 제2 길이의 코드 알파벳들로 부호화하고, 상기 메이저 심볼이 상기 제1 길이보다 짧은 길이만큼 연속하고 하나의 마이너 심볼이 후속하는 마이너 소스 알파벳들을 상기 제2 길이보다 긴 길이의 코드 알파벳들로 부호화함으로써 압축 데이터를 생성하는 압축부; 및 상기 압축 데이터를 상기 컨트롤러로 제공하는 인터페이스를 포함한다.
본 발명의 실시 예에 따른 메모리 시스템은, 메모리 장치; 및 상기 메모리 장치로 소프트 리드 커맨드 및 에러율 정보를 제공하는 컨트롤러를 포함하고, 상기 메모리 장치는 상기 소프트 리드 커맨드에 응하여 복수의 심볼들을 포함하는 소프트 데이터를 생성하고, 소스 알파벳들 및 코드 알파벳들의 관계를 나타내는 복수의 압축 테이블 중 어느 하나를 상기 소프트 리드 커맨드 및 상기 에러율 정보에 기초하여 선택하고, 상기 소프트 데이터로부터 검출된 소스 알파벳들을 코드 알파벳으로 복호화함으로써 압축 데이터를 생성하고, 상기 생성된 압축 데이터를 상기 컨트롤러로 제공하고, 상기 소스 알파벳들은 서로 접두어가 되지 않으며, 상기 소스 알파벳들 중 발생 확률이 가장 높은 메이저 소스 알파벳의 길이가 가장 길고, 상기 메이저 소스 알파벳에 대응하는 코드 알파벳은 상기 코드 알파벳들 중 길이가 가장 짧다.
본 발명의 일 실시예는 허프만 코드를 적용하여 복수의 개별 심볼(또는 심볼)들의 발생 확률에 따라 개별 심볼들을 표현하는 압축데이터(부호)를 사용하여 소프트 데이터를 압축함으로써, 메모리 장치와 컨트롤러 간의 소프트 데이터 전송 효율 향상시킬 수 있으며, 메모리 장치와 컨트롤러 간의 인터페이스에서의 전력 소모를 감소시킬 수 있는 방법 및 장치를 제공할 수 있다.
본 발명에서 얻을 수 있는 효과는 이상에서 언급한 효과들로 제한되지 않으며 언급하지 않은 또 다른 효과들은 아래의 기재로부터 본 발명이 속하는 분야에서 통상의 지식을 가진 자에게 명확하게 이해될 수 있을 것이다.
도 1은 본 발명의 일실시예에 따른 데이터 처리 시스템을 설명한다.
도 2는 본 발명의 다른 실시예에 따른 메모리 시스템을 설명한다.
도 3은 메모리 셀들의 문턱전압 분포를 설명하기 위한 도면이다.
도 4는 2-비트 소프트 리드 동작에서, 각각의 리드 전압 및 소프트 데이터 형성을 보여주는 도면이다. 
도 5는 본 발명의 실시 예에 따른 제1 압축 테이블을 예시한다.
도 6은 소프트 데이터 및 압축 데이터를 예시한다.
도 7은 본 발명의 실시 예에 따른 제1 압축 해제 테이블을 예시한다.
도 8은 압축 데이터 및 압축 해제 데이터를 예시한다.
도 9는 본 발명의 실시 예에 따른 종료 데이터를 설명하기 위한 도면이다.
도 10a 내지 도 10c는 제1 소프트 데이터 생성 방식 및 제1 유형의 압축 테이블을 설명하기 위한 도면이다.
도 11a 및 도 11b는 제2 소프트 데이터 생성 방식 및 제2 유형의 압축 테이블을 설명하기 위한 도면이다.
도 12a 및 도 12b는 제3 소프트 데이터 생성 방식 및 제3 유형의 압축 테이블을 설명하기 위한 도면이다.
도 13은 본 발명의 실시 예에 따른 메모리 시스템을 나타낸다.
도 14는 본 발명의 실시 예에 따른 메모리 시스템의 동작을 개략적으로 도시한 순서도이다.
이하, 본 발명에 따른 바람직한 실시 예를 첨부한 도면을 참조하여 상세히 설명한다. 하기의 설명에서는 본 발명에 따른 동작을 이해하는데 필요한 부분만이 설명되며 그 이외 부분의 설명은 본 발명의 요지를 흩뜨리지 않도록 생략될 것이라는 것을 유의하여야 한다.
이하, 도면들을 참조하여 본 발명의 실시 예들에 대해서 보다 구체적으로 설명하기로 한다.
도 1은 본 발명의 일실시예에 따른 데이터 처리 시스템을 설명한다.
도 1을 참조하면, 데이터 처리 시스템(100)은 호스트(102) 및 메모리 시스템(110)을 포함한다. 예를 들면, 호스트(102)와 메모리 시스템(110)은 데이터 버스(data bus), 호스트 케이블(host cable) 등과 같은 데이터 전달 수단을 통해 연결되어, 데이터를 송수신할 수 있다.
호스트(102)는 전자 장치, 예컨대 휴대폰, MP3 플레이어, 랩탑 컴퓨터 등과 같은 휴대용 전자 장치들, 또는 데스크탑 컴퓨터, 게임기, TV, 프로젝터 등과 같은 비휴대용 전자 장치들을 포함할 수 있다. 예를 들어, 호스트(102)는 컴퓨팅 장치 혹은 유무선 전자 장치들을 포함할 수 있다.
또한, 호스트(102)는, 적어도 하나의 운영 시스템(OS: operating system)를 포함하며, 운영 시스템은, 호스트(102)의 기능 및 동작을 전반적으로 관리 및 제어하고, 데이터 처리 시스템(100) 또는 메모리 시스템(110)을 사용하는 사용자와 호스트(102) 간에 상호 동작을 제공한다. 여기서, 운영 시스템은, 사용자의 사용 목적 및 용도에 상응한 기능 및 동작을 지원하며, 예컨대, 호스트(102)의 이동성(mobility)에 따라 일반 운영 시스템과 모바일 운용 시스템으로 구분할 수 있다. 또한, 운영 시스템에서의 일반 운영 시스템 시스템은, 사용자의 사용 환경에 따라 개인용 운영 시스템과 기업용 운영 시스템으로 구분할 수 있으며, 일 예로, 개인용 운영 시스템은 일반 사용자를 위한 서비스 제공 기능을 지원하도록 특성화된 시스템을 포함할 수 있고, 기업용 운영 시스템은 고성능을 확보 및 지원하도록 특성화된 시스템을 포함할 수 있다. 한편, 호스트(102)는 복수의 운영 시스템들을 포함할 수 있으며, 또한 사용자 요청(user request)에 상응한 메모리 시스템(110)과의 동작 수행을 위해 운영 시스템을 실행한다. 호스트(102)는 사용자 요청에 해당하는 복수의 커맨드들을 메모리 시스템(110)으로 전송하며, 메모리 시스템(110)에서는 복수의 커맨드들에 해당하는 동작들(즉, 사용자 요청에 상응하는 동작들)을 수행한다.
메모리 시스템(110) 내 컨트롤러(130)는 호스트(102)로부터의 요청에 응답하여 메모리 장치(150)를 제어할 수 있다. 예를 들면, 컨트롤러(130)는 읽기 동작을 수행하여 메모리 장치(150)로부터 리드된 데이터를 호스트(102)로 제공할 수 있고, 쓰기 동작(프로그램 동작)을 수행하여 호스트(102)로부터 제공된 데이터를 메모리 장치(150)에 저장할 수 있다. 이러한 데이터 입출력 동작을 수행하기 위해, 컨트롤러(130)는 리드, 프로그램(program), 이레이즈(erase) 등의 동작을 제어할 수 있다.
실시예에 따라, 컨트롤러(130)는 호스트 인터페이스(132), 프로세서(134), 에러 정정부(138), 파워 관리 유닛(Power Management Unit, PMU)(140), 메모리 인터페이스(142), 및 메모리(144)를 포함할 수 있다. 도 3에서 설명한 컨트롤러(130)에 포함된 구성 요소들은 메모리 시스템(110)의 구현 형태, 동작 성능 등에 따라 달라질 수 있다. 예를 들면, 메모리 시스템(110)은 솔리드 스테이트 드라이브(SSD: Solid State Drive), MMC, eMMC(embedded MMC), RS-MMC(Reduced Size MMC), micro-MMC 형태의 멀티 미디어 카드(MMC: Multi Media Card), SD, mini-SD, micro-SD 형태의 시큐어 디지털(SD: Secure Digital) 카드, USB(Universal Storage Bus) 저장 장치, UFS(Universal Flash Storage) 장치, CF(Compact Flash) 카드, 스마트 미디어(Smart Media) 카드, 메모리 스틱(Memory Stick) 등과 같은 다양한 종류의 저장 장치들 중 어느 하나로 구현될 수 있다. 컨트롤러(130)의 내부에 포함되는 구성 요소들은 메모리 시스템(110)의 구현 형태에 따라 추가되거나 제거될 수 있다.
호스트(102)와 메모리 시스템(110)은 약속된 규격에 대응하여 신호, 데이터 등을 송수신하기 위한 컨트롤러 혹은 인터페이스를 포함할 수 있다. 예를 들면, 메모리 시스템(110) 내 호스트 인터페이스(132)는 호스트(102)에 신호, 데이터 등을 송신하거나 호스트(102)로부터 전달되는 신호, 데이터 등을 수신할 수 있는 장치를 포함할 수 있다.
컨트롤러(130)에 포함된 호스트 인터페이스(132)는 호스트(102)로부터 전달되는 신호, 커맨드(command) 또는 데이터를 수신할 수 있다. 즉, 호스트(102)와 메모리 시스템(110)은 서로 약속된 규격을 통해 데이터를 송수신할 수 있다. 데이터를 송수신하기 위한 약속된 규격의 예로서 USB(Universal Serial Bus), MMC(Multi-Media Card), PATA(Parallel Advanced Technology Attachment), SCSI(Small Computer System Interface), ESDI(Enhanced Small Disk Interface), IDE(Integrated Drive Electronics), PCIE(Peripheral Component Interconnect Express), SAS(Serial-attached SCSI), SATA(Serial Advanced Technology Attachment), MIPI(Mobile Industry Processor Interface) 등과 같은 다양한 인터페이스 프로토콜이 있다. 실시예에 따라, 호스트 인터페이스(132)는 호스트(102)와 데이터를 주고받는 영역으로 호스트 인터페이스 계층(HIL: Host Interface Layer, 이하 'HIL'이라 칭하기로 함)이라 불리는 펌웨어(firmware)를 통해 구현되거나 구동될 수 있다.
데이터를 송수신하기 위한 규격 중 하나인 IDE(Integrated Drive Electronics) 혹은 ATA(Advanced Technology Attachment)는 40개의 선이 병렬로 연결된 케이블을 사용하여 호스트(102)와 메모리 시스템(110) 간의 데이터의 송수신을 지원할 수 있다. 하나의 호스트(102)에 복수의 메모리 시스템(110)이 연결되는 경우, 복수의 메모리 시스템(110)이 연결되는 위치 혹은 딥스위치를 이용하여 복수의 메모리 시스템(110)을 마스터 혹은 슬레이브로 구분할 수 있다. 마스터로 설정된 메모리 시스템(110)이 주된 메모리 장치로 사용될 수 있다. IDE(ATA)는 Fast-ATA, ATAPI, EIDE(Enhanced IDE) 방식 등으로 발전해왔다.
SATA(Seral Advanced Technology Attachment, S-ATA)는 IDE(Integrated Drive Electronics) 장치의 접속 규격인 병렬 데이터 송수신 방식의 각종 ATA 규격과 호환성을 갖는 직렬 데이터 송수신 방식으로서, 연결선은 병렬 신호 40개에서 직렬 신호 6개로 줄일 수 있다. SATA는 IDE보다 데이터 송수신 속도가 빠르고, 데이터 송수신에 사용되는 호스트(102) 내 자원을 소모가 적은 이유로 널리 사용되어 왔다. SATA는 호스트(102)에 포함된 하나의 송수신 장치에 최대 30개의 외부 장치를 연결할 수 있다. 또한, SATA는 데이터 통신이 실행 중에도 외부 장치를 탈착할 수 있는 핫 플러깅을 지원하기 때문에, 호스트(102)에 전원이 공급된 상태에서도 유니버설 시리얼 버스(USB)처럼 메모리 시스템(110)을 추가 장치로서 연결하거나 분리할 수 있다. 예를 들어, eSATA 포트가 있는 장치의 경우, 호스트(102)에 메모리 시스템(110)을 외장 하드처럼 자유롭게 탈착할 수 있다.
SCSI(Small Computer System Interface)는 컴퓨터, 서버 등과 주변 장치를 연결하는 데 사용하는 직렬 연결 방식으로서, IDE 및 SATA와 같은 인터페이스에 비하여 전송 속도가 빠른 장점이 있다. SCSI에서는 호스트(102)와 복수의 주변 장치(예, 메모리 시스템(110)이 직렬로 연결되지만, 호스트(102)와 각 주변 장치 간 데이터 송수신은 병렬 데이터 송수신 방식으로 구현될 수 있다. SCSI에서는 호스트(102)에 메모리 시스템(110)과 같은 장치의 연결과 분리가 쉽다. SCSI는 호스트(102)에 포함된 하나의 송수신 장치에 15개의 외부 장치가 연결되는 것을 지원할 수 있다.
SAS(Serial Attached SCSI)는 SCSI의 직렬 데이터 송수신 버전으로 이해할 수 있다. SAS는 호스트(102)와 복수의 주변 장치가 직렬로 연결될 뿐만 아니라, 호스트(102)와 각 주변 장치간 데이터 송수신도 직렬 데이터 송수신 방식으로 수행될 수 있다. SAS는 많은 연결선을 포함하는 넓은 병렬 케이블 대신 시리얼 케이블로 연결하여 장비 관리가 쉽고 신뢰성과 성능이 개선될 수 있다. SAS는 호스트(102)에 포함된 하나의 송수신 장치에 최대 8개의 외부 장치를 연결할 수 있다.
NVMe(Non-volatile memory express)는 비휘발성 메모리 시스템(110)을 탑재한 서버, 컴퓨팅 장치 등의 호스트(102)의 성능 향상과 설계 유연성을 높일 수 있도록 만든 PCIe(Peripheral Component Interconnect Express, PCI Express) 인터페이스 기반의 프로토콜을 가리킬 수 있다. 여기서, PCIe는 컴퓨팅 장치와 같은 호스트(102)와 컴퓨팅 장치와 연결되는 주변 장치와 같은 메모리 시스템(110)을 연결하기 위한 슬롯(slot) 혹은 특정 케이블을 이용하여, 복수의 핀(예, 18개, 32개, 49개, 82개 등)과 적어도 하나의 배선(예, x1, x4, x8, x16 등)을 통해 배선 당 초당 수백 MB이상(예, 250 MB/s, 500 MB/s, 984.6250 MB/s, 1389 MB/s 등)의 대역폭을 가질 수 있다. 이를 통해, PCIe는 초당 수십~수백 Gbit의 대역폭을 구현할 수 있다. NVMe는 하드 디스크보다 더 빠른 속도로 동작하는 SSD와 같은 비휘발성 메모리 시스템(110)의 속도를 지원할 수 있다.
실시예에 따라, 호스트(102)와 메모리 시스템(110)은 범용 직렬 버스(Universal Serial Bus, USB)를 통해 연결될 수 있다. 범용 직렬 버스(USB)는 키보드, 마우스, 조이스틱, 프린터, 스캐너, 저장 장치, 모뎀, 화상 회의 카메라 등과 같은 주변 장치에 대한 경제적인 표준 연결을 보장하는 확장성이 뛰어난 핫 플러그형 플러그 앤 플레이 직렬 인터페이스를 포함할 수 있다. 호스트(102)에 포함된 하나의 송수신 장치에 메모리 시스템(110)과 같은 복수의 주변 장치를 연결할 수 있다.
도 1을 참조하면, 컨트롤러(130) 내 에러 정정부(error correction circuitry, 138)는 메모리 장치(150)에서 처리되는 데이터의 에러 비트를 정정할 수 있다. 실시예에 따라, 에러 정정부(138)는 ECC 인코더와 ECC 디코더를 포함할 수 있다. 여기서, ECC 인코더(ECC encoder)는 메모리 장치(150)에 프로그램될 데이터를 에러 정정 인코딩(error correction encoding)하여, 패리티(parity) 비트가 부가된 데이터를 생성할 수 있다. 패리티 비트가 부가된 데이터는 메모리 장치(150)에 저장될 수 있다. ECC 디코더(ECC decoder)는, 메모리 장치(150)에 저장된 데이터를 리드할 경우, ECC 유닛(138)은 메모리 장치(150)로부터 리드한 데이터를 에러 정정 디코딩(error correction decoding)한 후, 에러 정정 디코딩의 성공 여부를 판단하고, 판단 결과에 따라 지시 신호, 예컨대 에러 정정 성공(success)/실패(fail) 신호를 출력하며, ECC 인코딩 과정에서 생성된 패리티(parity) 비트를 사용하여 리드된 데이터의 에러 비트를 정정할 수 있다. ECC 유닛(138)은 에러 비트 개수가 정정 가능한 에러 비트 한계치 이상 발생하면, 에러 비트를 정정할 수 없으며, 에러 비트를 정정하지 못함에 상응하는 에러 정정 실패 신호를 출력할 수 있다.
실시예에 따라, 에러 정정부(138)는 LDPC(low density parity check) 코드(code), BCH(Bose, Chaudhri, Hocquenghem) 코드, 터보 코드(turbo code), 리드-솔로몬 코드(Reed-Solomon code), 컨벌루션 코드(convolution code), RSC(recursive systematic code), TCM(trellis-coded modulation), BCM(Block coded modulation) 등의 코디드 모듈레이션(coded modulation)을 사용하여 에러 정정을 수행할 수 있으며, 이에 한정되는 것은 아니다. 또한, 에러 정정부(138)는 데이터에 포함된 에러를 정정하기 위한 프로그램, 회로, 모듈, 시스템, 또는 장치를 포함할 수 있다.
예를 들어, ECC 디코더(ECC decoder)는 메모리 장치(150)에서 전달된 데이터에 대해 경판정 복호(hard decision decoding) 혹은 연판정 복호(soft decision decoding)를 수행할 수 있다. 여기서, 경판정 복호(hard decision decoding)는 에러 정정을 크게 구분한 두 가지 방법 중 하나로 이해할 수 있다. 경판정 복호(hard decision decoding)는 '0' 또는 '1'의 디지털 데이터를 메모리 장치(150) 내 비휘발성 메모리 셀에서 읽어서 에러를 정정하는 동작을 포함할 수 있다. 경판정 복호(hard decision decoding)는 2진의 논리 신호를 다루기 때문에, 회로 또는 알고리즘의 설계가 간단할 수 있고, 처리 속도가 빠를 수 있다.
한편, 경판정 복호(hard decision decoding)와 구별되는 연판정 복호(soft decision decoding)는 메모리 장치(150) 내 비휘발성 메모리 셀의 문턱 전압을 2 이상의 양자화된 값(예, 여러 비트 데이터, 근사값, 또는 아날로그값 등)에 근거해서 에러를 정정하는 동작을 포함할 수 있다. 컨트롤러(130)는 메모리 장치(150) 내 복수의 비휘발성 메모리 셀로부터 2 이상의 양자화된 값을 수신한 후, 양자화된 값들을 조건확률 또는 우도 등 정보의 조합으로 특징지어 생성된 정보들을 토대로 복호(decoding)를 수행할 수 있다.
실시예에 따라, ECC 디코더(ECC decoder)는 연판정 복호(soft decision decoding)를 위한 방법 중 LDPC-GM(low-density parity-check and generator matrix) 코드를 사용할 수 있다. 여기서, LDPC(low-density parity-check) 코드는 메모리 장치(150)에서 데이터의 값을 단순히 1 또는 0이 아니라(경판정 복호가 아니라) 신뢰도에 따라 여러 비트로 읽고, 이를 메시지 교환 방식을 통해서 반복적으로 신뢰도 정보를 향상시켜서 1 또는 0의 최종값을 결정할 수 있는 알고리즘을 사용한다. 예를 들어, LDPC 코드를 이용한 복호 알고리즘은 확률적 복호법(probabilistic decoding)으로 이해할 수 있으며, 메모리 장치(150)에서 일어날 수 있는 에러인 비트 반전(Bit-flipping)에 대해 비휘발성 메모리 셀에서 출력되는 값을 0 또는 1로 부호화한 경판정 복호(hard-decision decoding)에 비하여, 비휘발성 메모리 셀에 저장된 값을 확률적 정보를 기초로 판단할 수 있기 때문에, 복구 가능성을 높일 수 있고 정정되는 정보의 신뢰성과 안정성을 높일 수 있다. LDPC-GM 코드는 내부 LDGM 코드들이 고속의 LDPC 코드들에 직렬로 연쇄(concatenated)될 수 있는 구조(scheme)을 가질 수 있다.
실시예에 따라, ECC 디코더(ECC decoder)는 연판정 복호(soft decision decoding)를 위한 방법 중 LDPC-CCs(low-density parity-check conventional convolutional codes) 코드를 사용할 수 있다. 여기서, LDPC-CCs 코드는 가변 블록 길이, 시프트 레지스터를 기반으로 하는 선형 시간 인코딩 및 파이프 라인 디코딩을 이용하는 구조를 가질 수 있다.
실시예에 따라, ECC 디코더(ECC decoder)는 연판정 복호(soft decision decoding)를 위한 방법 중 LLR-TC(Log Likelihood Ratio Turbo Code)를 사용할 수 있다. 여기서, LLR(Log Likelihood Ratio)은 샘플링된 값(sampled value)과 이상적인 값(ideal value) 사이의 거리(distance)에 대한 비선형 함수(non-linear function)로 계산될 수 있다. 또한, TC(Turbo Code)는 간단한 부호(예를 들면 Hamming code 등)를 이차원 또는 삼차원으로 구성하고 횡 방향 (row direction)과 열 방향 (column direction)의 디코딩을 반복해서 역시 신뢰도를 개선하는 구조를 가질 수 있다.
한편, 도시되지 않았지만, 컨트롤러(130)는 데이터를 메모리 장치(150)에 쓰거나, 메모리 장치(150)에 저장된 데이터를 읽는 과정에서 이레이저 코딩(erasure coding, EC)을 통해 데이터를 인코딩(encoding) 혹은 디코딩(decoding)할 수 있다. 여기서, 이레이저 코딩(erasure coding, EC)은 이레이저 코드(Erasure Code)를 이용하여 데이터를 인코딩하고, 데이터 손실시 디코딩 과정을 거쳐 원본 데이터를 복구하는 데이터 복구 기법으로 이해할 수 있다. 소거 코드(Erasure Codes)로 생성된 패리티가 데이터 복제본 생성보다 적은 저장공간을 차지하므로, 이레이저 코딩(EC)은 메모리 시스템(110)의 신뢰성을 제공하면서 저장공간 효율성을 높일 수 있다. 사용되는 이레이저 코드(Erasure Code)는 다양할 수 있다. 예를 들어, 이레이저 코드로는 리드 솔로몬 부호(Reed-Solomon Code), 타호-LAFS(Tahoe-LAFS, Tahoe Least-Authority File System), 에베노드 코드(EVENODD code), 위버 코드(Weaver code), 엑스 코드(X-code) 등이 있다. 소거 코드(Erasure Codes) 별로 다른 알고리즘이 사용될 수 있으며, 컨트롤러(130)는 연산 복잡도를 줄이면서 복구 성능을 높이기 위한 이레이저 코드를 사용할 수 있다.
PMU(140)는 메모리 시스템(110)에 인가되는 전원(예, 컨트롤러(130)에 공급되는 전압)을 감시하고, 컨트롤러(130)에 포함된 구성 요소들에 파워를 제공할 수 있다. PMU(140)는 전원의 온(On) 혹은 오프(Off)를 감지할 뿐만 아니라, 공급되는 전압 레벨이 불안정한 경우, 메모리 시스템(110)이 긴급하게 현재 상태를 백업할 수 있도록 트리거 신호를 생성할 수 있다. 실시예에 따라, PMU(140)는 긴급 상황에서 사용될 수 있는 전력을 축적할 수 있는 장치를 포함할 수 있다.
메모리 인터페이스(142)는, 컨트롤러(130)가 호스트(102)로부터의 요청에 응답하여 메모리 장치(150)를 제어하기 위해, 컨트롤러(130)와 메모리 장치(150) 간의 신호, 데이터를 송수신할 수 있다. 메모리 장치(150)가 플래시 메모리(예, NAND 플래시 메모리)일 경우, 메모리 인터페이스(142)는 NAND 플래시 컨트롤러(NAND Flash Controller, NFC)를 포함할 수 있다. 프로세서(134)의 제어에 따라, 메모리 인터페이스(142)는 메모리 장치(150)의 동작을 제어하기 위한 신호를 생성할 수 있고, 메모리 장치(150)에서 출력된 데이터를 수신하거나, 메모리 장치(150)에 저장될 데이터를 송신할 수 있다. 실시예에 따라, 메모리 인터페이스(142)는 메모리 장치(150) 간 데이터 입출력을 지원하며, 메모리 장치(150)와 데이터를 주고받는 영역으로 플래시 인터페이스 계층(FIL: Flash Interface Layer, 이하 'FIL'이라 칭하기로 함)이라 불리는 펌웨어(firmware)를 통해 구현되거나 구동될 수 있다.
실시예에 따라, 메모리 인터페이스(142)는 메모리 장치(150) 간 데이터 입출력을 위해 Open NAND Flash Interface(ONFi), 토글(toggle) 모드 등을 지원할 수 있다. 예를 들면, ONFi는 8-비트 혹은 16-비트의 단위 데이터에 대한 양방향(bidirectional) 송수신을 지원할 수 있는 신호선을 포함하는 데이터 경로(예, 채널, 웨이 등)를 사용할 수 있다. 컨트롤러(130)와 메모리 장치(150) 사이의 데이터 통신은 비동기식 SDR(Asynchronous Single Data Rate), 동기식 DDR(Synchronous Double Data Rate) 및 토글 DDR(Toggle Double Data Rate) 중 적어도 하나에 대한 인터페이스(interface)를 지원하는 장치를 통해 수행될 수 있다.
메모리(144)는 메모리 시스템(110) 및 컨트롤러(130)의 동작 메모리(working memory)로서, 메모리 시스템(110) 및 컨트롤러(130)의 구동을 위해 필요한 데이터 혹은 구동 중 발생한 데이터를 저장할 수 있다. 예를 들어, 메모리(144)는 컨트롤러(130)가 호스트(102)로부터의 요청에 응답하여 메모리 장치(150)로부터 제공된 리드 데이터를 호스트(102)로 제공하기 전 임시 저장할 수 있다. 또한, 컨트롤러(130)는 호스트(102)로부터 제공된 쓰기 데이터를 메모리 장치(150)에 저장하기 전, 메모리(144)에 임시 저장할 수 있다. 메모리 장치(150)의 리드, 라이트, 프로그램, 이레이즈(erase) 등의 동작을 제어할 경우, 메모리 시스템(110) 내 컨트롤러(130)와 메모리 장치(150) 사이에 전달되거나 발생하는 데이터는 메모리(144)에 저장될 수 있다. 리드 데이터 또는 쓰기 데이터뿐만 아니라, 메모리(144)는 호스트(102)와 메모리 장치(150) 간 데이터 라이트 및 리드 등의 동작을 수행하기 위해 필요한 정보(예, 맵 데이터, 리드 커맨드, 프로그램 커맨드 등)를 저장할 수 있다. 메모리(144)는 커맨드큐(command queue), 프로그램 메모리, 데이터 메모리, 라이트 버퍼(buffer)/캐시(cache), 리드 버퍼/캐시, 데이터 버퍼/캐시, 맵(map) 버퍼/캐시 등을 포함할 수 있다. 여기서, 맵 버퍼/캐시는 도 1에서 설명한 맵 정보를 저장하기 위한 장치 혹은 영역일 수 있다.
실시예에 따라, 메모리(144)는 휘발성 메모리로 구현될 수 있으며, 예컨대 정적 랜덤 액세스 메모리(SRAM: Static Random Access Memory), 또는 동적 랜덤 액세스 메모리(DRAM: Dynamic Random Access Memory) 등으로 구현될 수 있다. 아울러, 메모리(144)는, 도 3에서 도시한 바와 같이, 컨트롤러(130)의 내부에 존재하거나, 또는 컨트롤러(130)의 외부에 존재할 수 있으며, 이때 메모리 인터페이스를 통해 컨트롤러(130)로부터 데이터가 입출력되는 외부 휘발성 메모리로 구현될 수도 있다.
프로세서(134)는 컨트롤러(130)의 동작을 제어할 수 있다. 호스트(102)로부터의 라이트 요청 또는 리드 요청에 응답하여, 프로세서(134)는 메모리 장치(150)에 대한 프로그램 동작 또는 읽기 동작을 수행할 수 있다. 프로세서(134)는, 컨트롤러(130)의 데이터 입출력 동작을 제어하기 위해 플래시 변환 계층(FTL: Flash Translation Layer, 이하 'FTL'이라 칭하기로 함)이라 불리는 펌웨어(firmware)를 구동할 수 있다. 실시예에 따라, 프로세서(134)는 마이크로프로세서 또는 중앙 처리 장치(CPU) 등으로 구현될 수 있다.
또한, 실시예에 따라, 프로세서(134)는 서로 구별되는 연산 처리 영역인 코어(core)가 두 개 이상이 집적된 회로인 멀티 코어(multi-core) 프로세서로 구현될 수도 있다. 예를 들어, 멀티 코어 프로세서 내 복수의 코어는 복수의 플래시 변환 계층(FTL)을 각각 구동하면, 메모리 시스템(110)의 데이터 입출력 속도를 향상시킬 수 있다.
컨트롤러(130) 내 프로세서(134)는 호스트(102)로부터 입력된 커맨드에 대응하는 동작을 수행할 수도 있고, 호스트(102)와 같은 외부 장치에서 입력되는 커맨드와 무관하게 메모리 시스템(110)이 독립적으로 동작을 수행할 수도 있다. 통상적으로 호스트(102)로부터 전달된 커맨드에 대응하여 컨트롤러(130)가 수행하는 동작이 포그라운드(foreground) 동작으로 이해될 수 있고, 호스트(102)로부터 전달된 커맨드와 무관하게 컨트롤러(130)가 독립적으로 수행하는 동작이 백그라운드(background) 동작으로 이해될 수 있다. 포그라운드(foreground) 동작 또는 백그라운드(background) 동작으로, 컨트롤러(130)는 메모리 장치(150)에 저장된 데이터에 대한 읽기(read), 쓰기(write) 혹은 프로그램(program), 삭제(erase) 등을 위한 동작을 수행할 수도 있다. 또한, 호스트(102)로부터 전달된 셋 커맨드(set command)로 셋 파라미터 커맨드(set parameter command) 또는 셋 픽쳐 커맨드(set feature command)에 해당하는 파라미터 셋 동작 등도 포그라운드 동작으로 이해될 수 있다. 한편, 호스트(102)에서 전달되는 커맨드없이 백그라운드 동작으로, 메모리 장치(150)에 포함된 복수의 메모리 블록들(152, 154, 156)과 관련하여, 메모리 시스템(110)은 가비지 컬렉션(Garbage Collection, GC), 웨어 레벨링(Wear Leveling, WL), 배드 블록을 확인하여 처리하는 배드 블록 관리(bad block management) 등을 위한 동작들을 수행할 수도 있다.
한편, 포그라운드(foreground) 동작 또는 백그라운드(background) 동작으로 실질적으로 유사한 동작이 수행될 수도 있다. 예를 들어, 메모리 시스템(110)이 호스트(102)의 커맨드에 대응하여 수동 가비지 컬렉션(Manual GC)을 수행하면 포그라운드 동작으로 이해될 수 있고, 메모리 시스템(110)이 독립적으로 자동 가비지 컬렉션(Auto GC)을 수행하면 백그라운드 동작으로 이해될 수 있다.
메모리 장치(150)가 비휘발성 메모리 셀을 포함하는 복수의 다이(dies) 혹은 복수의 칩(chips)으로 구성된 경우, 컨트롤러(130)는 메모리 시스템(110)의 성능 향상을 위해 호스트(102)에서 전달된 요청 혹은 커맨드들을 메모리 장치(150) 내 복수의 다이(dies) 혹은 복수의 칩(chips)에 나누어 동시에 처리할 수 있다. 컨트롤러(130) 내 메모리 인터페이스(142)은 메모리 장치(150) 내 복수의 다이(dies) 혹은 복수의 칩(chips)과 적어도 하나의 채널(channel)과 적어도 하나의 웨이(way)를 통해 연결될 수 있다. 컨트롤러(130)가 비휘발성 메모리 셀로 구성되는 복수의 페이지에 대응하는 요청 혹은 커맨드를 처리하기 위해 데이터를 각 채널 혹은 각 웨이를 통해 분산하여 저장할 경우, 해당 요청 혹은 커맨드에 대한 동작이 동시에 혹은 병렬로 수행될 수 있다. 이러한 처리 방식 혹은 방법을 인터리빙(interleaving) 방식으로 이해할 수 있다. 메모리 장치(150) 내 각 다이(die) 혹은 각 칩(chip)의 데이터 입출력 속도보다 인터리빙 방식으로 동작할 수 있는 메모리 시스템(110)의 데이터 입출력 속도는 빠를 수 있으므로, 메모리 시스템(110)의 데이터 입출력 성능을 향상시킬 수 있다.
컨트롤러(130)는 메모리 장치(150)에 포함된 복수의 메모리 다이들과 연결된 복수의 채널들 또는 웨이들의 상태를 확인할 수 있다. 예컨대, 채널들 또는 웨이들의 상태는 비지(busy) 상태, 레디(ready) 상태, 액티브(active) 상태, 아이들(idle) 상태, 정상(normal) 상태, 비정상(abnormal) 상태 등으로 구분할 수 있다. 컨트롤러(130)가 커맨드, 요청 및/또는 데이터가 전달되는 채널 또는 웨이에 대응하여, 저장되는 데이터의 물리 주소가 결정될 수 있다. 한편, 컨트롤러(130)는 메모리 디바이스 (150)로부터 전달된 디스크립터(descriptor)를 참조할 수 있다. 디스크립터는 미리 결정된 포맷 또는 구조를 갖는 데이터로서, 메모리 장치(150)에 관한 무언가를 기술하는 파라미터의 블록 또는 페이지를 포함할 수 있다. 예를 들어, 디스크립터는 장치 디스크립터, 구성 디스크립터, 유닛 디스크립터 등을 포함할 수 있다. 컨트롤러(130)는 커맨드 또는 데이터가 어떤 채널(들) 또는 방법(들)을 통해 교환되는지를 결정하기 위해 디스크립터를 참조하거나 사용한다.
메모리 시스템(110) 내 메모리 장치(150)는 복수의 메모리 블록(152, 154, 156)을 포함할 수 있다. 복수의 메모리 블록(152, 154, 156) 각각은 복수의 비휘발성 메모리 셀을 포함한다. 도시되지 않았지만, 실시예에 따라, 복수의 메모리 블록(152, 154, 156) 각각은 3차원(dimension) 입체 스택(stack) 구조를 가질 수 있다.
메모리 장치(150)에 포함된 복수의 메모리 블록들(152, 154, 156)은, 하나의 메모리 셀에 저장 또는 표현할 수 있는 비트의 수에 따라, 단일 레벨 셀(Single Level Cell, SLC) 메모리 블록 및 멀티 레벨 셀(Multi Level Cell, MLC) 메모리 블록 등으로 구분될 수 있다. SLC 메모리 블록은 하나의 메모리 셀에 1 비트 데이터를 저장하는 비휘발성 메모리 셀들로 구현된 복수의 페이지들을 포함할 수 있다. MLC 메모리 블록에 비하여, SLC 메모리 블록은 데이터 연산 성능이 빠르며 내구성이 높을 수 있다. MLC 메모리 블록은 하나의 메모리 셀에 멀티 비트 데이터(예를 들면, 2 비트 또는 그 이상의 비트)를 저장하는 메모리 셀들로 구현된 복수의 페이지들을 포함할 수 있다 SLC 메모리 블록에 비하여, MLC 메모리 블록은 동일한 면적, 공간에 더 많은 데이터를 저장할 수 있다. 메모리 장치(150)에 포함된 MLC 메모리 블록은 하나의 메모리 셀에 2 비트 데이터를 저장할 수 있는 메모리 셀들에 의해 구현된 복수의 페이지들을 포함하는 더블 레벨 셀(Double Level Cell, DLC), 하나의 메모리 셀에 3 비트 데이터를 저장할 수 있는 메모리 셀들에 의해 구현된 복수의 페이지들을 포함하는 트리플 레벨 셀(Triple Level Cell, TLC), 하나의 메모리 셀에 4 비트 데이터를 저장할 수 있는 메모리 셀들에 의해 구현된 복수의 페이지들을 포함하는 쿼드러플 레벨 셀(Quadruple Level Cell, QLC), 또는 하나의 메모리 셀에 5 비트 또는 그 이상의 비트 데이터를 저장할 수 있는 메모리 셀들에 의해 구현된 복수의 페이지들을 포함하는 다중 레벨 셀(multiple level cell) 등을 포함할 수 있다.
실시예에 따라, 컨트롤러(130)는 메모리 시스템(150)에 포함된 멀티 레벨 셀(MLC) 메모리 블록을 하나의 메모리 셀에 1 비트 데이터를 저장하는 SLC 메모리 블록과 같이 운용할 수 있다. 예를 들어, 멀티 레벨 셀(MLC) 메모리 블록의 일부에서 다른 블록에 비하여 더 빠를 수 있는 데이터 입출력 속도를 활용하여, 컨트롤러(130)는 멀티 레벨 셀(MLC) 메모리 블록의 일부를 SLC 메모리 블록으로 운용함으로써 데이터를 임시로 저장하기 위한 버퍼(buffer)로 사용할 수도 있다.
또한, 실시예에 따라, 컨트롤러(130)는 메모리 시스템(150)에 포함된 멀티 레벨 셀(MLC) 메모리 블록에 삭제 동작 없이 복수 번 데이터를 프로그램할 수 있다. 일반적으로, 비휘발성 메모리 셀은 덮어 쓰기(overwrite)를 지원하지 않는 특징을 가지고 있다. 하지만, 멀티 레벨 셀(MLC) 메모리 블록이 멀티 비트 데이터를 저장할 수 있는 특징을 이용하여, 컨트롤러(130)는 비휘발성 메모리 셀에 1비트 데이터를 복수 번 프로그램할 수도 있다. 이를 위해, 컨트롤러(130)는 비휘발성 메모리 셀에 데이터를 프로그램한 횟수를 별도의 동작 정보로 저장할 수 있고, 동일한 비휘발성 메모리 셀에 다시 프로그램하기 전 비휘발성 메모리 셀의 문턱 전압의 레벨을 균일하게 하기 위한 균일화(uniformity) 동작을 수행할 수도 있다.
실시예에 따라, 메모리 장치(150)는 ROM(Read Only Memory), MROM(Mask ROM), PROM(Programmable ROM), EPROM(Erasable ROM), EEPROM(Electrically Erasable ROM), FRAM(Ferromagnetic ROM), PRAM(Phase change RAM), MRAM(Magnetic RAM), RRAM(Resistive RAM), NAND 혹은 NOR 플래시 메모리(flash memory), 상변환 메모리(PCRAM: Phase Change Random Access Memory), 저항 메모리(RRAM(ReRAM): Resistive Random Access Memory), 강유전체 메모리(FRAM: Ferroelectrics Random Access Memory), 또는 스핀 주입 자기 메모리(STT-RAM(STT-MRAM): Spin Transfer Torque Magnetic Random Access Memory) 등과 같은 메모리 장치로 구현될 수 있다.
도 2는 본 발명의 다른 실시예에 따른 메모리 시스템을 설명한다.
도 2를 참조하면, 호스트(102) 및 메모리 장치(150)와 연동하는 컨트롤러(130)는 호스트 인터페이스(132), 플래시 변환 계층(FTL, 240), 메모리 인터페이스(142) 및 메모리(144)를 포함할 수 있다. 도 2에서 설명하는 플래시 변환 계층(Flash Translation Layer (FTL), 240)의 하나의 실시예로서, 플래시 변환 계층(FTL, 240)은 메모리 시스템(110)의 동작 성능에 따라 다양한 형태로 구현될 수 있다.
호스트 인터페이스(132)은 호스트(102)로부터 전달되는 커맨드, 데이터 등을 주고받기 위한 것이다. 예를 들어, 호스트 인터페이스 유닛(132)은 호스트(102)로부터 전달되는 커맨드, 데이터 등을 순차적으로 저장한 뒤, 저장된 순서에 따라 출력할 수 있는 커맨드큐(56), 커맨드큐(56)로부터 전달되는 커맨드, 데이터 등을 분류하거나 처리 순서를 조정할 수 있는 버퍼관리자(52), 및 버퍼관리자(52)로부터 전달된 커맨드, 데이터 등의 처리를 위한 이벤트를 순차적으로 전달하기 위한 이벤트큐(54)를 포함할 수 있다.
호스트(102)로부터 커맨드, 데이터는 동일한 특성의 복수개가 연속적으로 전달될 수도 있고, 서로 다른 특성의 커맨드, 데이터가 뒤 섞여 전달될 수도 있다. 예를 들어, 데이터를 읽기 위한 커맨드어가 복수 개 전달되거나, 읽기 및 프로그램 커맨드가 교번적으로 전달될 수도 있다. 호스트 인터페이스(132)은 호스트(102)로부터 전달된 커맨드, 데이터 등을 커맨드큐(56)에 먼저 순차적으로 저장한다. 이후, 호스트(102)로부터 전달된 커맨드, 데이터 등의 특성에 따라 컨트롤러(130)가 어떠한 동작을 수행할 지를 예측할 수 있으며, 이를 근거로 커맨드, 데이터 등의 처리 순서나 우선 순위를 결정할 수도 있다. 또한, 호스트(102)로부터 전달된 커맨드, 데이터 등의 특성에 따라, 호스트 인터페이스(132) 내 버퍼관리자(52)는 커맨드, 데이터 등을 메모리(144)에 저장할 지, 플래시 변환 계층(FTL, 240)으로 전달할 지도 결정할 수도 있다. 이벤트큐(54)는 호스트(102)로부터 전달된 커맨드, 데이터 등에 따라 메모리 시스템 혹은 컨트롤러(130)가 내부적으로 수행, 처리해야 하는 이벤트를 버퍼관리자(52)로부터 수신한 후, 수신된 순서대로 플래시 변환 계층(FTL, 240)에 전달할 수 있다.
실시예에 따라, 플래시 변환 계층(FTL, 240)은 이벤트큐(54)로부터 수신된 이벤트를 관리하기 위한 호스트 요구 관리자(Host Request Manager(HRM), 46), 맵 데이터를 관리하는 맵데이터 관리자(Map Manger(MM), 44), 가비지 컬렉션 또는 웨어 레벨링을 수행하기 위한 상태 관리자(42), 메모리 장치 내 블록에 커맨드를 수행하기 위한 블록 관리자(48)를 포함할 수 있다. 도 2에서 도시되지 않았지만, 실시예에 따라, 도 1에서 설명한 ECC 유닛(138)은 플래시 변환 계층(FTL, 240)에 포함될 수 있다. 실시예에 따라, ECC 유닛(138)은 컨트롤러(130) 내 별도의 모듈, 회로, 또는 펌웨어 등으로 구현될 수도 있다.
호스트 요구 관리자(HRM, 46)는 맵데이터 관리자(MM, 44) 및 블록 관리자(48)를 사용하여 호스트 인터페이스(132)으로부터 수신된 읽기 및 프로그램 커맨드, 이벤트에 따른 요청을 처리할 수 있다. 호스트 요구 관리자(HRM, 46)는 전달된 요청의 논리 주소에 해당하는 물리 주소를 파악하기 위해 맵데이터 관리자(MM, 44)에 조회 요청을 보내고, 맵데이터 관리자(MM, 44)는 주소 변환(address translation)을 수행할 수 있다. 호스트 요구 관리자(HRM, 46)는 물리 주소에 대해 메모리 인터페이스 유닛(142)에 플래시 읽기 요청을 전송하여 읽기 요청을 처리할 수 있다. 한편, 호스트 요구 관리자(HRM, 46)는 먼저 블록 관리자(48)에 프로그램 요청을 전송함으로써 미기록된(데이터가 없는) 메모리 장치의 특정 페이지에 데이터를 프로그램한 다음, 맵데이터 관리자(MM, 44)에 프로그램 요청에 대한 맵 갱신(update) 요청을 전송함으로써 논리-물리 주소의 매핑 정보에 프로그램한 데이터에 대한 내용을 업데이트할 수 있다.
여기서, 블록 관리자(48)는 호스트 요구 관리자(HRM, 46), 맵데이터 관리자(MM, 44), 및 상태 관리자(42)가 요청한 프로그램 요청을 메모리 장치(150)를 위한 프로그램 요청으로 변환하여 메모리 장치(150) 내 블록을 관리할 수 있다. 메모리 시스템(110, 도 1 참조)의 프로그램 혹은 쓰기 성능을 극대화하기 위해 블록 관리자(48)는 프로그램 요청을 수집하고 다중 평면 및 원샷 프로그램 작동에 대한 플래시 프로그램 요청을 메모리 인터페이스(142)으로 보낼 수 있다. 또한, 다중 채널 및 다중 방향 플래시 컨트롤러의 병렬 처리(예, 인터리빙 동작)를 최대화하기 위해 여러 가지 뛰어난 플래시 프로그램 요청을 메모리 인터페이스(142)으로 전송할 수도 있다.
한편, 블록 관리자(48)는 유효 페이지 수에 따라 플래시 블록을 관리하고 여유 블록이 필요한 경우 유효한 페이지가 없는 블록을 선택 및 지우고, 쓰레기(garbage) 수집이 필요한 경우 가장 적게 유효한 페이지를 포함하고 있는 블록을 선택할 수 있다. 블록 관리자(48)가 충분한 빈 블록을 가질 수 있도록, 상태 관리자(42)는 가비지 수집을 수행하여 유효 데이터를 모아 빈 블록으로 이동시키고, 이동된 유효 데이터를 포함하고 있었던 블록들을 삭제할 수 있다. 블록 관리자(48)가 상태 관리자(42)에 대해 삭제될 블록에 대한 정보를 제공하면, 상태 관리자(42)는 먼저 삭제될 블록의 모든 플래시 페이지를 확인하여 각 페이지가 유효한지 여부를 확인할 수 있다. 예를 들어, 각 페이지의 유효성을 판단하기 위해, 상태 관리자(42)는 각 페이지의 스페어(Out Of Band, OOB) 영역에 기록된 논리 주소를 식별한 뒤, 페이지의 실제 주소와 맵 관리자(44)의 조회 요청에서 얻은 논리 주소에 매핑된 실제 주소를 비교할 수 있다. 상태 관리자(42)는 각 유효한 페이지에 대해 블록 관리자(48)에 프로그램 요청을 전송하고, 프로그램 작업이 완료되면 맵 관리자(44)의 갱신을 통해 매핑 테이블이 업데이트될 수 있다.
맵 관리자(44)는 논리-물리 매핑 테이블을 관리하고, 호스트 요구 관리자(HRM, 46) 및 상태 관리자(42)에 의해 생성된 조회, 업데이트 등의 요청을 처리할 수 있다. 맵 관리자(44)는 전체 매핑 테이블을 플래시 메모리에 저장하고, 메모리(144) 용량에 따라 매핑 항목을 캐시할 수도 있다. 조회 및 업데이트 요청을 처리하는 동안 맵 캐시 미스가 발생하면, 맵 관리자(44)는 메모리 인터페이스(142)에 읽기 요청을 전송하여 메모리 장치(150)에 저장된 매핑 테이블을 로드(load)할 수 있다. 맵 관리자(44)의 더티 캐시 블록 수가 특정 임계 값을 초과하면 블록 관리자(48)에 프로그램 요청을 보내서 깨끗한 캐시 블록을 만들고 더티 맵 테이블이 메모리 장치(150)에 저장될 수 있다.
한편, 가비지 컬렉션이 수행되는 경우, 상태 관리자(42)가 유효한 페이지를 복사하는 동안 호스트 요구 관리자(HRM, 46)는 페이지의 동일한 논리 주소에 대한 데이터의 최신 버전을 프로그래밍하고 업데이트 요청을 동시에 발행할 수 있다. 유효한 페이지의 복사가 정상적으로 완료되지 않은 상태에서 상태 관리자(42)가 맵 업데이트를 요청하면 맵 관리자(44)는 매핑 테이블 업데이트를 수행하지 않을 수도 있다. 맵 관리자(44)는 최신 맵 테이블이 여전히 이전 실제 주소를 가리키는 경우에만 맵 업데이트를 수행하여 정확성을 보장할 수 있다.
도 3은 메모리 셀들의 문턱전압 분포를 설명하기 위한 도면이다. 3을 참조하면, 각 그래프의 가로 축은 문턱전압의 크기, 세로 축은 메모리 셀들의 개수를 나타낸다. 그래프 (a) 내지 (d)는 하나의 메모리 셀이 저장하는 데이터 비트의 개수가 1개 내지 4개인 경우를 가정하여 설명한다. 다만, 하나의 메모리 셀이 저장하는 데이터 비트의 개수는 본 실시 예에 제한되지 않는다.
도 3(a)는 하나의 메모리 셀이 하나의 데이터 비트를 저장하는 싱글 레벨 셀(Single Level Cell, SLC)의 문턱 전압 분포를 나타낸다. 싱글 레벨 셀은 소거 상태(E) 또는 프로그램 상태(P1) 중 어느 하나의 상태를 가질 수 있다. 리드 전압(Va1)은 소거 상태(E) 및 프로그램 상태(P1)를 구분하기 위한 리드 전압일 수 있다. 소거 상태(E)를 갖는 싱글 레벨 셀은 리드 전압(Va1)으로 리드시, 온 셀(On Cell)로 리드될 수 있다. 프로그램 상태(P1)를 갖는 싱글 레벨 셀은 리드 전압(Va1)으로 리드시, 오프 셀(Off Cell)로 리드될 수 있다.
도 3(b)는 하나의 메모리 셀이 두 개의 데이터 비트를 저장하는 멀티 레벨 셀(Multi Level Cell, MLC)를 나타낸다. 멀티 레벨 셀은 소거 상태(E) 또는 제1 내지 제3 프로그램 상태들(P1~P3) 중 어느 하나의 상태를 가질 수 있다. 제1 내지 제3 리드 전압들(Vb1~Vb3)은 소거 상태(E) 또는 제1 내지 제3 프로그램 상태들(P1~P3) 각각을 구분하기 위한 리드 전압들일 수 있다. 제1 리드 전압(Vb1)은 소거 상태(E) 및 제1 프로그램 상태(P1)를 구분하기 위한 리드 전압일 수 있다. 제2 리드 전압(Vb2)은 제1 프로그램 상태(P1) 및 제2 프로그램 상태(P2)를 구분하기 위한 리드 전압일 수 있다. 제3 리드 전압(Vb3)은 제2 프로그램 상태(P2) 및 제3 프로그램 상태(P3)를 구분하기 위한 리드 전압일 수 있다. 멀티 레벨 셀은 제1 내지 제3 리드 전압들(Vb1~Vb3)로 리드된 결과에 따라, 소거 상태(E) 또는 제1 내지 제3 프로그램 상태들(P1~P3) 중 어느 하나의 상태로 구분될 수 있다.
도 3(c)는 하나의 메모리 셀이 세 개의 데이터 비트를 저장하는 트리플 레벨 셀(Triple Level Cell, TLC)를 나타낸다. 트리플 레벨 셀은 소거 상태(E) 또는 제1 내지 제7 프로그램 상태들(P1~P7) 중 어느 하나의 상태를 가질 수 있다. 제1 내지 제7 리드 전압들(Vc1~Vc7)은 소거 상태(E) 또는 제1 내지 제7 프로그램 상태들(P1~P7) 각각을 구분하기 위한 리드 전압들일 수 있다. 제1 리드 전압(Vc1)은 소거 상태(E) 및 제1 프로그램 상태(P1)를 구분하기 위한 리드 전압일 수 있다. 제2 리드 전압(Vc2)은 제1 프로그램 상태(P1) 및 제2 프로그램 상태(P2)를 구분하기 위한 리드 전압일 수 있다. 마찬가지 방식으로 제7 리드 전압(Vc7)은 제6 프로그램 상태(P6) 및 제7 프로그램 상태(P7)를 구분하기 위한 리드 전압일 수 있다. 트리플 레벨 셀은 제1 내지 제7 리드 전압들(Vc1~Vc7)로 리드된 결과에 따라, 소거 상태(E) 또는 제1 내지 제7 프로그램 상태들(P1~P7) 중 어느 하나의 상태로 구분될 수 있다.
도 3(d)는 하나의 메모리 셀이 네 개의 데이터 비트를 저장하는 쿼드 레벨 셀(Quad Level Cell, QLC)를 나타낸다. 쿼드 레벨 셀은 소거 상태(E) 또는 제1 내지 제15 프로그램 상태들(P1~P15) 중 어느 하나의 상태를 가질 수 있다. 제1 내지 제15 리드 전압들(Vd1~Vd15)은 소거 상태(E) 또는 제1 내지 제15 프로그램 상태들(P1~P15) 각각을 구분하기 위한 리드 전압들일 수 있다. 제1 리드 전압(Vd1)은 소거 상태(E) 및 제1 프로그램 상태(P1)를 구분하기 위한 리드 전압일 수 있다. 제2 리드 전압(Vd2)은 제1 프로그램 상태(P1) 및 제2 프로그램 상태(P2)를 구분하기 위한 리드 전압일 수 있다. 마찬가지 방식으로 제15 리드 전압(Vd15)은 제14 프로그램 상태(P14) 및 제15 프로그램 상태(P15)를 구분하기 위한 리드 전압일 수 있다. 쿼드 레벨 셀은 제1 내지 제15 리드 전압들(Vd1~Vd15)로 리드된 결과에 따라, 소거 상태(E) 또는 제1 내지 제15 프로그램 상태들(P1~P15) 중 어느 하나의 상태로 구분될 수 있다.
도 3(a) 내지 (d)를 비교하면, 하나의 메모리 셀이 저장하는 데이터 비트의 개수가 증가할수록, 하나의 메모리 셀이 나타낼 수 있는 프로그램 상태들의 개수 및 각 프로그램 상태를 구분하기 위한 리드 전압의 개수가 증가할 수 있다. 하나의 메모리 셀이 나타낼 수 있는 프로그램 상태들의 개수가 증가할수록, 각 프로그램 상태에 대응하는 문턱전압 분포가 위치하는 전체 폭은 증가할 수 있다. 반면, 하나의 메모리 셀이 나타낼 수 있는 프로그램 상태들의 개수가 증가할수록, 각 프로그램 상태에 대응하는 문턱전압 분포의 폭은 감소할 수 있다.
도 4는 2-비트 소프트 리드 동작에서, 각각의 리드 전압 및 소프트 데이터 형성을 보여주는 도면이다. 
도 4를 설명하기 이전에, 컨트롤러(130)에 포함된 프로세서(134)는 호스트(102)로부터 전달받은 커맨드를 해석하고 해석 결과에 따라 메모리 장치(150)의 전반적인 동작을 제어하기 위해, 커맨드를 발생하여 메모리 장치(150)에 인가할 수 있다. 일례로, 프로세서(134)는 호스트(102)로부터 리드 커맨드를 전달받으면, 리드 커맨드를 처리하기 위해 메모리 장치(150)에 리드 커맨드를 인가할 수 있다. 여기서, 프로세서(134)는 하드 리드 커맨드(경판정 리드 커맨드)와 소프트 리드 커맨드(연판정 리드 커맨드)를 메모리 장치(150)로 제공할 수 있다. 메모리 장치(150)는 전달받은 리드 커맨드를 기반으로 하드 리드 커맨드와 소프트 리드 커맨드를 수행할 수 있다.
도 4를 참조하면, 하드 리드 동작은 기 설정된 하드 리드 전압을 이용하여 복수의 메모리 셀에 프로그램된 데이터를 리드하는 동작을 말하며, 하드 리드 전압 인가 시 메모리 셀의 온 상태 또는 오프 상태에 따라 데이터를 1 또는 0으로 리드하는 것이다. 여기서, 하드 리드 전압은 R2를 나타내고, 상기 하드리드전압(R2)인가 시에 메모리 셀이 온(on) 상태이면 하드 데이터(2-1)가 '1'이 되며, 오프(off) 상태이면 하드 데이터가 '0'이 된다. 즉, 하드 데이터는, 하드 리드 전압에 근거한 하드 리드 동작을 통해 메모리 셀들(MC)로부터 리드된 데이터로서, 프로그램 동작을 통해 메모리 셀들(MC)에 저장된 데이터를 의미할 수 있다. 하드 데이터는, 메모리 셀의 문턱 전압이 하드 리드 전압보다 큰지/작은지에 따라 해당 메모리 셀에 대해 "0" 또는 "1"로 리드 될 수 있다.
다음으로, 소프트 리드 동작은, 하드리드전압(R2)을 기준으로 소정의 전압 차를 가지는 복수의 가변 읽기 전압(소프트 리드 전압)을 인가하여, 하드 데이터에 신뢰도를 부가하는 정보를 형성하는 것을 말한다. 즉, 소프트 리드 전압들은 소프트 리드 동작에서 메모리 셀들(MC)로부터 소프트 데이터를 리드하기 위해 사용될 수 있다. 소프트 데이터는 메모리 셀의 문턱 전압이 소프트 리드 전압들보다 큰지/작은지에 따라 리드될 수 있다. 일례로, 2-비트 소프트 디시전(soft decision) 리드 동작의 경우, 소프트 디시전 리드 전압들 각각은 제1 소프트 리드 전압(R2-1) 및 제2 소프트 리드 전압(R2-2)이 된다. 제1 소프트 리드 전압(R2-1) 인가 시에 메모리 셀의 온(on) 또는 오프(off)에 따라 판단된 제1 소프트 리드 값(2-2)은 1, 0, 0, 0이 될 수 있다. 제2 소프트 리드 전압(R2-2) 인가 시에 메모리 셀의 온(on) 또는 오프(off)에 따라 판단된 된 제2 소프트 리드 값(2-3)은 1, 1, 1, 0이 될 수 있다.
그리고, 제1소프트리드값(2-2)과 제2소프트리드값(2-3)을 논리 게이트(logic gate)연산을 수행하여, 소프트 데이터(2-4)를 형성한다. 구체적으로는 XOR 연산을 수행하여 소프트 데이터를 생성할 수 있다. 여기서, 제1 소프트 리드 값과 제2 소프트 리드 값을 XOR연산 할 때, 동일한 위치의 값들이 일치하는 경우 '0'으로 나타낼 수 있으며, 일치하지 않는 경우에는 '1'로 나타낼 수 있다. 따라서, 생성된 소프트 데이터(2-4)는 0,1,0이 될 수 있다. 생성된 소프트 데이터(2-4)는 컨트롤러(도 5 참조, 130)에 포함된 ECC 디코더(1301)로 제공된다. 소프트 데이터는 하드 데이터에 대해서 신뢰도를 부가할 수 있다. 즉, 소프트 데이터(2-4)가 '0'이면 하드 데이터의 신뢰도가 강함(strong)을 의미하며, '1'이면 하드 데이터의 신뢰도가 약함(weak)을 의미할 수 있다. 즉, 하드 데이터 및 소프트 데이터에 근거한 신뢰성 데이터(2-5)는 구간 ①, ②, ③ 및 ④에 대해 각각 10, 11, 01 및 00의 값을 가질 수 있다. 다만, 이에 한정되는 것은 아니고, 하드 데이터(HDTA) 및 소프트 데이터(SDT)에 근거한 신뢰성 데이터(2-5)는 다른 값으로 설정될 수도 있다. 메모리 시스템은 신뢰성 데이터가 10로 식별되는 구간 ①에 포함되는 문턱 전압을 갖는 메모리 셀로부터 리드된 데이터(비트)를 스트롱 1(strong 1: 해당 데이터(비트) 값이 1로 식별되고 1일 확률이 높음을 나타냄)로 처리할 수 있다. 즉, 메모리 시스템은 신뢰성 데이터(2-5)가 10으로 식별되는 구간 ①에 포함되는 문턱 전압을 갖는 메모리 셀로부터 독출된 데이터(비트)에 대해 스트롱 1이라는 가중치를 부여할 수 있다. 그리고, 메모리 시스템(MSYS)은 신뢰성 데이터(2-5)가 11로 식별되는 구간 ②에 포함되는 문턱 전압을 갖는 메모리 셀로부터 리드된 데이터(비트)를 위크 1(weak 1: 해당 데이터(비트) 값이 1로 식별되나 1일 확률이 낮음을 나타냄)로 처리할 수 있다. 즉, 메모리 시스템(110)은 신뢰성 데이터(2-5)가 11으로 식별되는 구간 ②에 포함되는 문턱 전압을 갖는 메모리 셀로부터 독출된 데이터(비트)에 대해 위크 1이라는 가중치를 부여할 수 있다. 마찬가지로, 메모리 시스템(110)은 신뢰성 데이터(2-5)가 01으로 식별되는 구간 ③에 포함되는 문턱 전압을 갖는 메모리 셀로부터 독출된 데이터(비트)를 위크0(해당 데이터(비트) 값이 0으로 식별되고 0일 확률이 낮음을 나타냄)으로 가중치를 부여하여 처리할 수 있다. 그리고, 신뢰성 데이터(2-5)가 00로 식별되는 구간 ④에 포함되는 문턱 전압을 갖는 메모리 셀로부터 독출된 데이터(비트)를 스트롱 0(해당 데이터(비트) 값이 0으로 식별되고 0일 확률이 높음을 나타냄)으로 가중치를 부여하여 처리할 수 있다.
메모리 장치(150)가 소프트 리드 동작을 통해 복수의 메모리 셀들로부터 리드된 소프트 데이터를 컨트롤러(130)로 전달하면, 컨트롤러(130)는 상기 소프트 데이터를 사용하여 하드 데이터의 에러를 검출 및 정정할 수 있다.
메모리 장치(150)가 컨트롤러(130)로 상기 소프트 데이터를 압축한 후 전달한다면, 상기 소프트 데이터를 압축하지 않고 전달하는 경우에 비해 소프트 데이터의 정보 전송 효율이 높아질 수 있으며 메모리 장치(150)와 컨트롤러(130)의 파워 소모는 감소할 수 있다. 상기 복수의 메모리 셀들의 대부분은 신뢰도가 강한 메모리 셀들일 수 있으며, 상기 소프트 데이터에서 신뢰도가 강함을 의미하는 데이터 값이 대부분을 차지할 수 있다. 예를 들어, 도 4를 참조하여 설명된 소프트 데이터(2-4)에서는 비트 '0'이 대부분을 차지할 수 있다. 메모리 장치(150)가 상기 소프트 데이터를 압축하여 압축 데이터를 생성할 때 연속하는 '0' 비트들을 짧은 길이의 데이터로 압축할수록 상기 압축 데이터의 압축률이 향상될 수 있다.
본 발명의 실시 예에 따르면, 메모리 장치(150)는 소프트 데이터에서 제1 길이만큼 연속하는 '0' 비트들을 1비트 데이터로 압축하고, 상기 제1 길이보다 짧은 길이만큼 연속하는 '0' 비트들 및 연속하는 '1' 비트를 1비트보다 긴 제2 길이의 데이터로 압축함으로써 압축 데이터를 생성할 수 있다. 메모리 장치(150)가 소프트 데이터에 기초하여 향상된 압축률을 갖는 압축 데이터를 생성하고, 상기 압축 데이터를 컨트롤러(130)로 제공하면, 소프트 데이터의 정보 전송 효율이 높아지고 메모리 장치(150)와 컨트롤러(130)의 파워 소모는 감소할 수 있다.
본 발명의 실시 예에 따른 소프트 데이터의 압축 방법 및 압축 데이터의 압축 해제 방법의 예는 도 5 내지 도 9를 참조하여 자세히 설명된다.
도 4를 참조하여 설명된 소프트 데이터는 이진수(binary) 데이터일 수 있다. 이진수 소프트 데이터는 복수의 소스 심볼(source symbol)들을 포함할 수 있으며, 각 소스 심볼은 '0' 또는 '1' 값을 가질 수 있다. 소프트 데이터에서 심볼 '0'과 심볼 '1'은 서로 다른 발생 확률을 가질 수 있다. 예를 들어, 소프트 데이터에서 신뢰도가 강함을 의미하는 심볼이 '0', 신뢰도가 약함을 의미하는 심볼이 '1'인 경우 소프트 데이터의 심볼들의 대부분은 '0'이고, 일부분은 '1'일 수 있다. 이하에서, 소프트 데이터에서 발생 확률이 가장 높은 심볼 값을 갖는 심볼은 메이저 심볼(major symbol), 메이저 심볼을 제외한 심볼들은 마이너 심볼(minor symbol)로 지칭될 수 있다.
메모리 장치(150)는 소프트 데이터를 압축하기 위해 소프트 데이터를 사전 결정된 복수의 소스 알파벳(source alphabet)들로 분할하고, 상기 소스 알파벳들을 엔트로피 코딩 기법을 사용하여 코드 알파벳(code alphabet)으로 부호화함으로써 압축 데이터를 생성할 수 있다.
복수의 소스 알파벳들 각각은 하나 이상의 소스 심볼을 포함할 수 있다. 본 발명의 실시 예에 따르면, 사전 결정된 소스 알파벳들은 서로 접두어(prefix)가 되지 않을 수 있다. 복수의 소스 알파벳들이 서로 접두어가 되지 않는다는 것은, 온전한 소스 알파벳이 다른 소스 알파벳의 접두어가 되지 않는다는 것을 의미한다. 예를 들어, 복수의 소스 알파벳들은 각각 '1', '01', '001', '0001', '0000'값을 가질 수 있다. 상기 예에서 소스 알파벳 '1'은 다른 소스 알파벳 '01', '001', '0001', '0000' 중 어느 것의 접두어에도 해당하지 않는다. 마찬가지로, 소스 알파벳 '01', '001', '0001', '0000' 중 어느 것도 다른 소스 알파벳의 접두어에 해당하지 않는다.
복수의 소스 알파벳들이 서로 접두어가 되지 않기 때문에, 메모리 장치(150)는 소프트 데이터를 순시적으로(instantaneously), 유일하게(uniquely) 부호화할 수 있다. 즉, 메모리 장치(150)는 소프트 데이터의 각 심볼을 순시적으로 검사하여 상기 소프트 데이터로부터 복수의 소스 알파벳들을 검출하고, 상기 복수의 소스 알파벳들을 코드 알파벳들로 부호화함으로써 압축 데이터를 생성할 수 있다. 상기 소프트 데이터 및 상기 압축 데이터는 일대일 대응 관계를 가질 수 있다.
그리고, 메모리 장치(150)는 소프트 데이터를 압축하기 위해 엔트로피 부호화 기법을 사용할 수 있다. 엔트로피 부호화 기법은 데이터에 포함된 소스 알파벳들 중 발생 확률이 더 높은 소스 알파벳을 더 짧은 길이의 코드 알파벳으로 부호화함으로써 데이터를 압축하는 압축 기법을 지칭한다. 예를 들어, 메모리 장치(150)가 소프트 데이터를 복수의 소스 알파벳들로 분할하는 경우, 상기 소프트 데이터에서 소스 알파벳 '0000'의 발생 확률이 다른 소스 알파벳 '1', '01', '001', '0001'의 발생 확률에 비해 높을 수 있다. 메모리 장치(150)는 소스 알파벳 '0000'을 가장 짧은 길이의 코드 알파벳으로 부호화할 수 있다.
메모리 장치(150)는 복수의 소스 알파벳들 및 상기 복수의 소스 알파벳들에 대응하는 코드 알파벳들을 포함하는 압축 테이블을 저장할 수 있다.도 5는 본 발명의 실시 예에 따른 제1 압축 테이블(500)을 예시한다.제1 압축 테이블(500)은 '1', '01', '001', … '0000000000000000' 등 17개의 소스 알파벳들을 예시한다. 소스 알파벳들은 서로 접두어가 되지 않을 수 있다. 메모리 장치(150)는 소프트 데이터의 각 심볼들을 순시적으로 검사하여 상기 소프트 데이터를 복수의 소스 알파벳들로 분할할 수 있다.
예를 들어, 메모리 장치(150)는 소프트 데이터의 심볼들을 순시적으로 검사한 결과 '0' 값의 심볼이 16개 연속하는 경우 16개의 연속하는 심볼들을 소스 알파벳 '0000000000000000'으로 결정할 수 있다. 메모리 장치(150)는 '0' 값의 심볼이 5개 연속한 후 '1' 값의 심볼이 후속하는 경우 총 6개의 연속하는 심볼들을 알파벳 '000001'로 결정할 수 있다.
메모리 장치(150)는 소스 알파벳들 중 발생 확률이 가장 높은 소스 알파벳을 가장 짧은 코드 알파벳으로 부호화할 수 있다. 소스 알파벳들의 발생 확률은 하기 수학식 1로 나타낼 수 있다.
[수학식 1]
Figure pat00001
여기서,
Figure pat00002
는 소스 알파벳을 나타내고,
Figure pat00003
는 소스 알파벳
Figure pat00004
의 발생 확률을 나타낼 수 있다.
Figure pat00005
는 소프트 데이터에서 메이저 심볼, 예를 들어 '0' 값의 심볼이 발생할 확률을 나타내고,
Figure pat00006
는 소프트 데이터에서 마이너 심볼, 예를 들어 '1' 값의 심볼이 발생할 확률을 나타낼 수 있다.
Figure pat00007
는 소스 알파벳의 최대 길이, 즉 소스 알파벳이 포함하는 심볼의 최대 개수를 나타낼 수 있다.
Figure pat00008
는 소프트 데이터에서 모든 심볼이 메이저 심볼인 알파벳이 발생할 확률을 나타낼 수 있다. 예를 들어, 압축 테이블에서 소스 알파벳이 최대 16개의 심볼을 갖는 경우, 16개의 심볼이 모두 '0' 값을 갖는 소스 알파벳의 발생 확률은
Figure pat00009
일 수 있다.
Figure pat00010
Figure pat00011
개의 메이저 심볼이 연속하고, 1개의 마이너 심볼이 후속하는 소스 알파벳의 발생 확률을 나타낼 수 있다. 예를 들어, 알파벳 '0001'이 발생할 확률은
Figure pat00012
일 수 있다.
소프트 데이터에 포함된 심볼들이 대부분 메이저 심볼인 경우, 마이너 심볼이 발생할 확률
Figure pat00013
Figure pat00014
보다 작은 값을 가질 수 있다. 상기 수학식 1에 따르면, 복수의 소스 알파벳들 중 모든 심볼이 메이저 심볼인 소스 알파벳 '0000000000000000'의 발생 확률이 가장 클 수 있다. 제1 압축 테이블(500)의 복수의 코드 알파벳들 중, 발생 확률이 가장 큰 소스 알파벳에 대응하는 코드 알파벳이 가장 짧은 길이를 가질 수 있다. 도 5의 예에서, 소스 알파벳 '0000000000000000'에 대응하는 코드 알파벳은 '0'으로, 단지 1비트 길이를 갖도록 사전 결정될 수 있다. 반면에, 소스 알파벳들 중 '0000000000000000'을 제외한 나머지 16개의 소스 알파벳들에 대응하는 코드 알파벳들은 5비트 길이를 갖도록 사전 결정될 수 있다. 5비트 길이의 코드 알파벳들의 첫 자리는 '1'일 수 있으며, 나머지 자리들은 각 소스 알파벳들마다 서로 다른 값으로 임의로 배정될 수 있다. 한편, 복수의 소스 알파벳들 중 발생 확률이 가장 높은 소스 알파벳은 메이저 소스 알파벳, 나머지 소스 알파벳은 마이너 소스 알파벳으로 지칭될 수 있다.
도 6은 소프트 데이터 및 압축 데이터를 예시한다. 구체적으로, 도 6의 압축 데이터는 메모리 장치(150)가 제1 압축 테이블(500)에 기초하여 소프트 데이터를 압축한 경우 생성되는 압축 데이터일 수 있다.
도 6의 소프트 데이터는 '00000 00000 00000 00010 00000 00000 00000 00001 00001 00001' 값을 가질 수 있다. 메모리 장치(150)는 상기 소프트 데이터를 복수의 소스 알파벳들로 분할할 수 있다. 소스 알파벳들은 서로 접두어가 되지 않기 때문에, 메모리 장치(150)는 소프트 데이터의 각 심볼들을 순시적으로 검사하여 상기 소프트 데이터를 복수의 알파벳들로 분할할 수 있다. 예를 들어, 메모리 장치(150)는 상기 소프트 데이터를 '00000 00000 00000 0', '001', '00000 00000 00000 0', '00001', '00001', '00001'의 총 6개의 소스 알파벳으로 분할할 수 있다.
메모리 장치(150)는 제1 압축 테이블(500)을 참조하여 상기 6개의 소스 알파벳을 6개의 코드 알파벳 '0', '10010', '0', '10011', '10011', '10011'로 부호화할 수 있다. 즉, 메모리 장치(150)는 상기 6개의 소스 알파벳을 6개의 코드 알파벳으로 부호화함으로써 '0100100100111001110011'의 압축 데이터를 생성할 수 있다. 도 6의 예에서, 50비트인 소프트 데이터가 22비트인 압축 데이터로 표현될 수 있다.
본 발명의 실시 예에 따르면, 메모리 장치(150)는 복수의 소스 알파벳들 중 발생 확률이 가장 높은 소스 알파벳을 가장 짧은 코드 알파벳으로 부호화할 수 있다. 게다가, 상기 발생 확률이 가장 높은 소스 알파벳은 복수의 소스 알파벳들 중 가장 긴 길이를 가질 수 있다. 따라서, 메모리 장치(150)는 가장 긴 길이를 갖는 소스 알파벳을 가장 짧은 코드 알파벳으로 부호화할 수 있으므로, 소프트 데이터의 압축률을 향상시킬 수 있다.
메모리 장치(150)는 소프트 데이터를 압축함으로써 생성된 압축 데이터를 컨트롤러(130)로 제공할 수 있다. 컨트롤러(130)는 상기 압축 데이터의 압축을 해제함으로써 압축 해제 데이터(decompressed data)를 생성할 수 있다. 컨트롤러(130)는 상기 압축 해제 데이터에 기초하여 소프트 디시전 디코딩을 수행할 수 있다.
컨트롤러(130)는 복수의 코드 알파벳들 및 상기 복수의 코드 알파벳들에 대응하는 소스 알파벳들을 포함하는 압축 해제 테이블을 저장할 수 있다. 컨트롤러(130)는 상기 압축 해제 테이블을 참조하여 메모리 장치(150)로부터 수신한 압축 데이터의 압축을 해제할 수 있다.
도 7은 본 발명의 실시 예에 따른 제1 압축 해제 테이블(700)을 예시한다.
제1 압축 해제 테이블(700)은 도 5를 참조하여 설명된 제1 압축 테이블(500)과 동일한 소스 알파벳들 및 코드 알파벳들을 포함할 수 있다. 제1 압축 테이블(500)은 소스 알파벳을 코드 알파벳으로 부호화하기 위한 테이블인 반면, 제1 압축 해제 테이블(700)은 코드 알파벳을 소스 알파벳으로 복호화하기 위한 테이블일 수 있다.
한편, 코드 알파벳들도 서로 접두어가 되지 않도록 사전 결정될 수 있다. 도 7의 예에서, 복수의 코드 알파벳들 중 코드 알파벳 '0'을 제외한 나머지 코드 알파벳들은 '1'로 시작할 수 있다. 따라서, 코드 알파벳 '0'은 나머지 코드 알파벳들의 접두어가 되지 않을 수 있다. 그리고, '1'로 시작하는 코드 알파벳들은 각각 5비트의 동일한 길이를 가지며 서로 상이한 값을 가지므로, 서로 접두어가 되지 않을 수 있다. 코드 알파벳들이 서로 접두어가 되지 않으므로, 컨트롤러(130)는 압축 데이터를 순시적으로, 유일하게 복호화할 수 있다.
도 8은 압축 데이터 및 압축 해제 데이터를 예시한다.
구체적으로, 도 8의 압축 데이터는 도 6에 예시된 압축 데이터와 동일할 수 있다. 도 8의 압축 해제 데이터는 컨트롤러(130)가 압축 해제 테이블(700)에 기초하여 도 8의 압축 데이터를 압축 해제한 경우 생성되는 데이터일 수 있다.
코드 알파벳들이 서로 접두어가 되지 않으므로, 컨트롤러(130)는 압축 데이터 '0100100100111001110011'를 순시적으로 검사하여 복수의 코드 알파벳들로 분할할 수 있다. 구체적으로, '0'으로 시작하는 코드 알파벳은 '0'이 유일하므로, 컨트롤러(130)는 압축 데이터의 첫 번째 비트 '0'을 리드하면 해당 비트 '0'을 코드 알파벳 '0'으로 결정할 수 있다. '1'로 시작하는 코드 알파벳들은 모두 5비트의 길이를 가지므로, 컨트롤러(130)는 압축 데이터의 두 번째 비트 '1'을 리드하면 해당 비트부터 총 5개의 비트 '10010'을 하나의 코드 알파벳으로 결정할 수 있다. 그리고, 컨트롤러(130)는 '10010' 다음의 비트 '0'을 코드 알파벳 '0'으로 결정할 수 있다. 최종적으로, 압축 데이터 '0100100100111001110011'은 '0', '10010', '0', '10011', '10011', '10011'의 총 6개의 코드 알파벳으로 분할될 수 있다.
컨트롤러(130)는 압축 해제 테이블(700)을 참조하여 상기 6개의 코드 알파벳을 '00000 00000 00000 0', '001', '00000 00000 00000 0', '00001', '00001', '00001'의 소스 알파벳들로 복호화할 수 있다. 컨트롤러(130)는 상기 소스 알파벳들에 기초하여 '00000 00000 00000 00010 00000 00000 00000 00001 00001 00001'의 압축 해제 데이터를 생성할 수 있다.
한편, 소프트 데이터를 순시적으로 검사하여 소스 알파벳들로 분할한 결과, 압축 테이블(500)의 소스 알파벳들 중 어느 것에도 해당하지 않는 나머지 심볼들이 발생할 수 있다. 예를 들어, 소프트 데이터를 순시적으로 검사하여 소스 알파벳들을 검출하면, 상기 소프트 데이터의 마지막 부분에 예를 들면 '000000'과 같이 상기 소스 알파벳들 중 어느 것에도 해당하지 않는 나머지 심볼들이 발생할 수 있다.
본 발명의 실시 예에 따르면, 메모리 장치(150)는 소프트 데이터에 종료 데이터를 부가하고, 상기 종료 데이터가 부가된 소프트 데이터를 압축하여 압축 데이터를 생성할 수 있다. 메모리 장치(150)는 소프트 데이터에 종료 데이터를 부가함으로써 나머지 심볼들을 제거할 수 있다. 나머지 심볼들 및 종료 데이터에 대해서는 도 9를 참조하여 자세히 설명된다.
도 9는 본 발명의 실시 예에 따른 종료 데이터를 설명하기 위한 도면이다.
구체적으로, 도 9는 종료 데이터가 부가된 소프트 데이터, 상기 소프트 데이터의 압축 데이터 및 상기 압축 데이터의 압축 해제 데이터를 예시한다.
도 9의 예에서, 소프트 데이터는 '00000 00000 00000 00010 00000 00000 00000 00001 00001 00000'일 수 있다. 메모리 장치(150)가 상기 소프트 데이터의 심볼들을 순시적으로 검사하여 소스 알파벳으로 분할하는 경우, 앞의 45개의 심볼 '00000 00000 00000 00010 00000 00000 00000 00001 00001'은 '00000 00000 00000 0', '001', '00000 00000 00000 0', '00001', '00001'으로 분할할 수 있다. 그러나, 마지막 5개의 심볼 '00000'은 압축 테이블(500)의 소스 알파벳들 중 어느 것에도 해당하지 않는 나머지 심볼들일 수 있다. 상기 나머지 심볼들은 압축 테이블(500)을 사용하여 압축하기 어려울 수 있다.
메모리 장치(150)는 압축 테이블(500)을 사용하여 나머지 심볼들까지 압축하기 위해 소프트 데이터에 마이너 심볼을 포함하는 종료 데이터를 부가할 수 있다.
예를 들어, 메모리 장치(150)가 소프트 데이터에 종료 데이터 '1'을 부가하면, 마지막 6개의 심볼은 '000001'이 될 수 있다. '000001'은 압축 테이블(500)의 소스 알파벳에 해당하므로, 메모리 장치(150)는 압축 테이블(500)을 참조하여 '000001'을 '10101'로 압축할 수 있다. 즉, 메모리 장치(150)가 소프트 데이터에 정해진 종료 데이터를 부가하면 나머지 심볼이 발생하지 않고, 모든 심볼들을 정상적으로 압축할 수 있다. 본 발명의 실시 예에 따르면, 종료 데이터는 하나의 마이너 심볼, 예를 들어 '1'로 구성될 수 있다.
한편, 소프트 데이터에 상기 종료 데이터를 부가하는 경우, 상기 종료 데이터를 부가하지 않는 경우에 비해 압축 데이터의 길이가 수 비트정도 길어지는 경우도 있다. 구현에 따라, 소프트 데이터 및 압축 데이터는 수천 내지 수만 비트에 이를 수 있다. 따라서, 압축 데이터에 수 비트의 데이터가 더 부가되더라도 메모리 장치(150)가 컨트롤러(130)로 압축 데이터를 전송하는 오버헤드는 거의 증가하지 않을 수 있다.
컨트롤러(130)는 메모리 장치(150)로부터 수신된 압축 데이터를 순시적으로 압축 해제하여 압축 해제 데이터를 생성할 수 있다. 상기 압축 데이터가 정상적으로 수신된 경우, 상기 압축 해제 데이터는 종료 데이터가 부가된 소프트 데이터와 동일할 수 있다. 소프트 데이터는 낸드 플래시 메모리(170)의 페이지 크기에 따라 정해진 크기를 가질 수 있다. 따라서, 정상적인 압축 해제 데이터는 정해진 길이를 가질 수 있다.
컨트롤러(130)는 압축 해제 데이터가 정상적인 압축 해제 데이터인지 판단하기 위해, 순시적으로 생성되는 압축 해제 데이터의 비트 수를 카운트할 수 있다. 컨트롤러(130)는 카운트된 비트 수가 정해진 수에 해당하면, 압축 해제 데이터의 마지막 비트가 상기 종료 데이터와 동일한지 여부를 판단할 수 있다. 컨트롤러(130)는 상기 마지막 비트가 상기 종료 데이터와 동일한 경우 상기 압축 해제 데이터를 정상적인 압축 해제 데이터로 판단하고, 상기 압축 해제 데이터를 사용하여 소프트 디시전 디코딩을 수행할 수 있다.
도 9의 예에서, 컨트롤러(130)는 순시적으로 생성되는 압축 해제 데이터의 비트 수가 51비트에 해당하고, 51비트의 데이터 중 마지막 한 비트의 데이터가 '1' 값을 갖는 경우 압축 데이터가 정상적으로 수신된 것으로 판단할 수 있다.
한편, 메모리 장치(150)는 하나 이상의 압축 테이블을 저장하고, 컨트롤러(130)는 상기 압축 테이블에 대응하는 하나 이상의 압축 해제 테이블을 저장할 수 있다. 메모리 장치(150)가 복수의 압축 테이블들을 저장하는 경우, 메모리 장치(150)는 하드 데이터의 신뢰도 및 소프트 데이터 생성 방식에 기초하여 상기 복수의 압축 테이블들 중 어느 하나를 선택할 수 있다. 메모리 장치(150)의 복수의 소프트 데이터 생성 방식들 및 압축 테이블들의 다양한 예들이 도 10a 내지 도 12b를 참조하여 자세히 설명된다.
도 10a 내지 도 10c는 제1 소프트 데이터 생성 방식 및 제1 유형의 압축 테이블을 설명하기 위한 도면이다.
도 10a는 제1 소프트 데이터 생성 방식을 설명하기 위한 도면이다.
메모리 장치(150)가 한 쌍의 소프트 리드 전압들을 사용하여 2개의 소프트 리드 값을 획득하고, 2개의 소프트 리드 값의 XOR 연산을 수행하여 소프트 데이터를 생성하는 방식이 제1 소프트 데이터 생성 방식으로 지칭될 수 있다. 제1 소프트 데이터 생성 방식은 도 4를 참조하여 설명된 소프트 리드 동작과 실질적으로 동일하다. 제1 소프트 데이터 생성 방식을 이용하여 생성된 제1 소프트 데이터의 비트들 중 '0'은 신뢰도가 강함을 나타내고, '1'은 신뢰도가 약함을 나타낼 수 있다. 즉, 제1 소프트 데이터 생성 방식에 의해 생성된 소프트 데이터는 메모리 셀당 한 비트의 신뢰도 정보를 포함할 수 있다.
메모리 장치(150)는 컨트롤러(130)의 제어에 따라, 복수의 소프트 리드 전압들 중 어느 한 쌍의 소프트 리드 전압을 사용할 수 있다. 도 10a는 제1 내지 제6 소프트 리드 전압(R2-1~R2-6)을 도시한다. 도 10a는 메모리 장치(150)가 제1 및 제2 소프트 리드 전압(R2-1, R2-2)을 사용한 경우, 제3 및 제4 소프트 리드 전압(R2-3, R2-4)을 사용한 경우 및 제5 및 제6 소프트 리드 전압(R2-5, R2-6)을 사용한 경우 각각에 대해, 메모리 셀들의 문턱 전압에 따른 소프트 데이터 비트 값을 도시한다. 도 10a의 그래프들에서 음영이 도시된 문턱 전압 구간은 신뢰도가 약한 메모리 셀들을 포함할 수 있으며, 해당 구간의 메모리 셀들에 대응하는 소프트 데이터 비트는 '1' 값을 가질 수 있다. 반면에, 음영이 도시되지 않은 문턱 전압 구간은 신뢰도가 강한 메모리 셀들을 포함할 수 있으며, 해당 구간의 소프트 데이터 비트는 '0' 값을 가질 수 있다.
도 10a의 그래프들을 참조하면, 어느 소프트 리드 전압들을 이용하여 생성된 소프트 데이터라도 심볼 '0' 및 심볼 '1'을 포함할 수 있다. 그리고, 메이저 심볼은 '0', 마이너 심볼은 '1'일 수 있다. 그러나, 소프트 데이터가 어느 소프트 리드 전압들을 이용하여 생성되었는지에 따라 소프트 데이터에서 '0' 값의 심볼, 즉 메이저 심볼이 차지하는 비율은 달라질 수 있다. 예를 들어, 제1 및 제2 소프트 리드 전압(R2-1, R2-2)을 사용하여 생성된 소프트 데이터에서 심볼 '0'이 차지하는 비율이 가장 높고, 제5 및 제6 소프트 리드 전압(R2-5, R2-6)을 사용하여 생성된 소프트 데이터에서 메이저 심볼이 차지하는 비율이 가장 낮을 수 있다.
소프트 데이터에서 메이저 심볼이 차지하는 비율에 따라, 메이저 심볼이 정해진 길이 이상 연속할 확률이 달라질 수 있다. 메모리 장치(150)가 동일 압축 테이블을 사용하여 소프트 데이터를 압축하더라도 소프트 데이터의 메이저 심볼이 정해진 길이 이상 연속할 확률에 따라 소프트 데이터의 압축률이 달라질 수 있다. 예를 들어, 도 5에 도시된 제1 압축 테이블(500)을 사용하여 소프트 데이터를 압축하는 경우, 소프트 데이터에서 메이저 심볼이 차지하는 비율이 낮아질수록 메이저 심볼이 16개 이상 연속할 확률은 감소할 수 있다. 따라서, 소프트 데이터에서 메이저 심볼이 차지하는 비율이 낮아질수록 1비트로 압축 가능한 알파벳들이 감소하여 상기 소프트 데이터의 압축률이 낮아질 수 있다.
본 발명의 실시 예에 따르면, 메모리 장치(150)는 소프트 데이터에서 메이저 심볼이 차지하는 비율에 따라 다른 압축 테이블을 사용하여 소프트 데이터를 압축할 수 있다.
도 10b는 제2 압축 테이블(1000)을 예시한다.
제2 압축 테이블(1000)은 복수의 소스 알파벳들 및 상기 소스 알파벳들에 대응하는 복수의 코드 알파벳들을 포함할 수 있다.
도 10b는 '1', '01', '001', …'00000000' 등 9개의 소스 알파벳들을 예시한다. 상기 소스 알파벳들은 서로 접두어가 되지 않을 수 있다.
도 5를 참조하여 설명된 것과 유사하게, 복수의 소스 알파벳들 중 발생 확률이 가장 큰 소스 알파벳에 대응하는 코드 알파벳들이 상기 복수의 코드 알파벳들 중 가장 짧은 길이를 가질 수 있다. 예를 들어, 복수의 알파벳들 중 모든 심볼이 메이저 심볼인 소스 알파벳 '00000000'의 발생 확률이 가장 클 수 있다. 소스 알파벳 '00000000'에 대응하는 코드 알파벳은 '0'으로, 단지 1비트 길이를 갖도록 사전 결정될 수 있다. 반면에, 소스 알파벳들 중 '00000000'을 제외한 나머지 8개의 소스 알파벳들에 대응하는 코드 알파벳들은 4비트 길이를 갖도록 사전 결정될 수 있다. 4비트 길이의 코드 알파벳들의 첫 자리는 '1'일 수 있으며, 나머지 자리들은 각 소스 알파벳들마다 서로 다른 값으로 임의로 배정될 수 있다. 코드 알파벳들은 서로 접두어가 되지 않을 수 있다.
소프트 데이터에서 메이저 심볼이 차지하는 비율이 낮을수록, 제2 압축 테이블(1000)을 사용하여 압축하는 경우의 압축률이 제1 압축 테이블(500)을 사용하여 압축하는 경우보다 높을 수 있다.
도 10c는 소프트 데이터 및 압축 데이터를 예시한다. 구체적으로, 도 10c의 소프트 데이터는 도 6에 예시된 소프트 데이터와 동일할 수 있다. 도 10c의 압축 데이터는 제2 압축 테이블(1000)에 기초하여 상기 소프트 데이터를 압축한 경우 생성되는 압축 데이터일 수 있다.
메모리 장치(150)는 소프트 데이터 '00000 00000 00000 00010 00000 00000 00000 00001 00001 00001'를 8개의 소스 알파벳들 '00000 000', '00 00000 0', '001', '0 00000 00', '000 00000', '00001', '00001', '00001'로 분할할 수 있다. 메모리 장치(150)는 제2 압축 테이블(1000)을 참조하여 상기 8개의 소스 알파벳을 8개의 코드 알파벳 '0', '0', '1010', '0', '0', '1100', '1100', '1100'으로 부호화할 수 있다. 도 10c의 예에서, 50비트인 소프트 데이터가 20비트인 압축 데이터로 표현될 수 있다. 즉, 동일한 소프트 데이터를 압축하더라도 어느 압축 테이블을 선택하여 압축하는지에 따라 소프트 데이터의 압축률이 달라질 수 있다.
제1 압축 테이블(500) 및 제2 압축 테이블(1000)을 제1 유형의 압축 테이블로 일반화할 수 있다. 제1 유형의 압축 테이블은 n=2m-1(n, m은 자연수)개의 메이저 심볼, 예를 들면 '0' 값의 심볼이 연속하는 소스 알파벳을 포함할 수 있다. 상기 메이저 심볼들로만 구성된 소스 알파벳의 발생 확률이 가장 높을 수 있으며, 상기 소스 알파벳은 메이저 소스 알파벳으로 지칭될 수 있다. 상기 메이저 소스 알파벳은 코드 알파벳 '0'에 대응할 수 있다.
상기 제1 유형의 압축 테이블은 n개 이하의 메이저 심볼이 연속하고, 마이너 심볼이 후속하는 소스 알파벳들을 더 포함할 수 있다. 압축 테이블에 포함된 소스 알파벳들 중 상기 메이저 소스 알파벳을 제외한 알파벳들은 마이너 소스 알파벳으로 지칭될 수 있다. 상기 마이너 소스 알파벳들은 m의 길이를 가지며 첫 자리가 '1'인 코드 알파벳들과 대응할 수 있다. 제1 및 제2 압축 테이블(500, 1000)은 제1 유형의 압축 테이블의 특수한 경우로서, 각각 n=16에 해당하는 압축 테이블 및 n=8에 해당하는 압축 테이블일 수 있다.
메모리 장치(150)는 서로 다른 n값에 해당하는 복수의 제1 유형의 압축 테이블들을 저장할 수 있다. 메모리 장치(150)가 동일한 소프트 데이터를 압축하기 위해 서로 다른 n값에 해당하는 압축 테이블을 사용하면, 소프트 데이터의 압축률이 달라질 수 있다. 메모리 장치(150)는 소프트 데이터에서 메이저 심볼이 차지하는 비율이 낮을수록 상기 제1 유형의 압축 테이블들 중 더 작은 n값에 해당하는 압축 테이블을 사용하여 상기 소프트 데이터를 압축할 수 있다.
예를 들어, 메모리 장치(150)는 도 10a의 예에서 제5 및 제6 소프트 리드 전압(R2-5~R2-6)을 사용하여 생성된 소프트 데이터를 압축할 때, 제1 및 제2 소프트 리드 전압(R2-1~R2-2)을 사용하여 생성된 소프트 데이터를 압축할 때보다 더 작은 n값에 해당하는 압축 테이블을 사용할 수 있다.
한편, 소프트 데이터에서 메이저 심볼이 차지하는 비율은 메모리 장치(150)가 어느 소프트 리드 전압들을 사용하여 소프트 데이터를 생성하는지에 따라서 달라질 수도 있지만, 다른 요인으로도 달라질 수 있다. 예를 들어, 소프트 데이터에서 메이저 심볼 '0'이 차지하는 비율은 메모리 셀들의 비트 에러율에 따라서도 달라질 수 있다. 예를 들어, 메모리 셀들의 비트 에러율이 높을수록 소프트 데이터에서 신뢰성이 강함을 나타내는 심볼 '0'이 차지하는 비율이 감소할 수 있다.
메모리 장치(150)는 컨트롤러(130)로부터 수신되는 소프트 데이터 생성 방식 정보, 소프트 리드 전압 정보 및 에러율 정보에 기초하여 복수의 압축 테이블들 중 어느 하나를 선택하고, 상기 선택된 압축 테이블을 사용하여 소프트 데이터를 압축할 수 있다.
예를 들어, 메모리 장치(150)는 도 10a를 참조하여 설명된 제1 유형의 소프트 데이터 생성 방식으로 소프트 데이터를 생성하는 경우, 다양한 n값의 제1 유형의 압축 테이블들 중 어느 하나를 선택할 수 있다. 제1 유형의 압축 테이블의 n값은 소프트 리드 전압 정보 및 에러율 정보에 기초하여 선택될 수 있다.
에러율 정보의 제1 예는, 컨트롤러(130)에서 이전에 리드된 데이터에 에러 정정 디코딩을 수행한 결과에 따라 검출된 에러 비트 개수 정보일 수 있다. 에러율 정보의 제2 예는, 컨트롤러(130)에서 이전에 수신된 압축 데이터의 길이 정보를 포함할 수 있다. 동일한 방식으로 생성된 소프트 데이터의 길이는 동일할 수 있으므로, 메모리 장치(150)는 압축 데이터의 길이에 따라 소프트 데이터의 압축률을 추정할 수 있다. 메모리 장치(150)는 압축 데이터의 길이가 임계값 이상이면 소프트 데이터가 충분히 압축되지 못하는 것으로 판단하여 현재 선택된 압축 테이블과는 다른 압축 테이블을 선택할 수 있다. 컨트롤러(130)는 제1 예의 에러율 정보 및 제2 예의 에러율 정보 중 적어도 일부의 에러율 정보를 메모리 장치(150)로 제공할 수 있다.
도 11a 및 도 11b는 제2 소프트 데이터 생성 방식 및 제2 유형의 압축 테이블을 설명하기 위한 도면이다.
도 11a는 제2 소프트 데이터 생성 방식을 설명하기 위한 도면이다.
도 11a는 메모리 셀들의 문턱 전압 분포들을 도시한다. 메모리 장치(150)가 6개의 소프트 리드 전압들(R2-1~R2-6)을 사용하여 6개의 소프트 리드 값을 획득하는 경우, 상기 6개의 소프트 리드 값의 연산결과에 따라 메모리 셀들의 문턱 전압 구간이 7개로 나누어질 수 있다.
메모리 셀들의 문턱 전압과 하드 리드 전압(R2)의 차이에 따라 메모리 셀들의 신뢰도가 결정될 수 있다. 메모리 장치(150)는 메모리 셀이 상기 7개의 문턱 전압 구간 중 어느 구간에 속하는지에 따라 해당 메모리 셀의 신뢰도를 '00', '01', '10', '11' 중 어느 하나로 결정할 수 있다. 즉, 하나의 메모리 셀에 대한 신뢰도가 2비트 데이터로 결정될 수 있다. 도 11a에서, 2비트 데이터의 왼쪽 비트는 LMB(left-most bit), 오른쪽 비트는 RMB(right-most bit)로 도시된다.
하드 리드 전압(R2)으로부터 멀리 떨어진 문턱 전압 구간일수록 해당 문턱 전압 구간에 속하는 메모리 셀들의 신뢰도가 높아질 수 있다. 도 11a에서, 신뢰도가 가장 낮은 문턱 전압 구간부터 가장 높은 문턱 전압 구간까지 '00', '01', '10', '11' 순으로 신뢰도를 부여할 수 있다.
메모리 장치(150)는 소프트 리드 동작 대상인 메모리 셀들의 신뢰도 정보에 기초하여 소프트 데이터를 생성할 수 있다. 메모리 장치(150)가 여러 쌍의 소프트 리드 전압들을 사용하여 리드된 여러 개의 소프트 리드 값에 기초하여 각 메모리 셀들의 신뢰도를 복수 비트의 데이터로 나타내는 소프트 데이터를 생성하는 방식은 제2 소프트 데이터 생성 방식으로 지칭될 수 있다.
도 11a를 참조하면, 복수의 메모리 셀들 중 신뢰도가 '11'인 메모리 셀들이 가장 많을 수 있다. 제2 소프트 데이터 생성 방식을 사용하여 생성된 제2 소프트 데이터는 '0'비트 또는 '1'비트를 포함할 수 있으며, 상기 제2 소프트 데이터에서 '0'비트가 차지하는 비율보다 '1'비트가 차지하는 비율이 높을 수 있다. 즉, 상기 제2 소프트 데이터의 메이저 심볼은 '1' 값의 심볼이고, 마이너 심볼은 '0' 값의 심볼일 수 있다.
한편, 제2 소프트 데이터는 LMB 데이터 및 RMB 데이터를 포함할 수 있다. 예를 들어, 어떤 메모리 셀들의 신뢰도가 각각 '00', '01', '10', '11'인 경우, 상기 메모리 셀들의 제2 소프트 데이터의 LMB 데이터는 '0, 0, 1, 1'일 수 있으며, RMB 데이터는 '0, 1, 0, 1'일 수 있다. LMB 데이터 및 RMB 데이터에서 '1' 값의 심볼이 메이저 심볼일 수 있으나, 상기 메이저 심볼이 차지하는 비율은 서로 다를 수 있다. 본 발명의 실시 예에 따르면, 메모리 장치(150)는 LMB 데이터 및 RMB 데이터의 심볼들 중 메이저 심볼이 차지하는 비율에 따라 LMB 데이터 및 RMB 데이터를 서로 다른 압축 테이블들을 사용하여 압축할 수 있다.
도 11a에서는 소프트 데이터가 메모리 셀당 2비트의 신뢰도 정보를 포함하는 경우를 예로 들어 설명하였으나, 본 발명은 이에 제한되지 않는다. 예를 들어, 메모리 장치(150)는 메모리 셀당 3비트 이상의 신뢰도 정보를 포함하는 소프트 데이터를 생성할 수도 있으며, 상기 소프트 데이터를 상기 신뢰도 정보의 자릿수에 따라 나누고, 상기 자릿수에 따라 나누어진 데이터를 서로 다른 압축 테이블들을 사용하여 압축할 수 있다.
상기 제2 소프트 데이터를 압축하기 위한 서로 다른 압축 테이블들은 도 11b 및 및 11c를 참조하여 설명된다.
도 11b는 제3 압축 테이블(1100)을 예시한다.
제3 압축 테이블(1100)은 제2 유형의 압축 테이블의 제1 예이다. 제3 압축 테이블(1100)은 메이저 심볼 '1' 및 마이너 심볼 '0' 중 적어도 하나를 포함하는 복수의 소스 알파벳들을 포함할 수 있다. 도 11b는 '0', '10', '110', …'1111111111111111' 등 17개의 소스 알파벳들을 예시한다. 상기 소스 알파벳들은 서로 접두어가 되지 않을 수 있다.제3 압축 테이블(1100)은 메이저 심볼이 '1'이고, 마이너 심볼이 '0'으로 바뀐 것을 제외하면 제1 압축 테이블(500)과 유사한 소스 알파벳들 및 코드 알파벳들을 포함할 수 있다. 예를 들어, 복수의 소스 알파벳들 중 메이저 소스 알파벳 '1111111111111111'에 대응하는 코드 알파벳은 '0'으로 사전 결정될 수 있다. 반면에, 소스 알파벳들 중 마이너 소스 알파벳들에 대응하는 코드 알파벳들은 각각 5비트 길이를 가질 수 있으며, 첫 자리는 '1'일 수 있다.
도 11c는 제4 압축 테이블(1150)을 예시한다.
제4 압축 테이블(1150)은 제2 유형의 압축 테이블의 제2 예이다. 제4 압축 테이블(1150)은 '0', '10', '110', …'11111111' 등 9개의 소스 알파벳들을 예시한다. 상기 소스 알파벳들은 서로 접두어가 되지 않을 수 있다.
복수의 소스 알파벳들 중 메이저 소스 알파벳 '11111111'에 대응하는 코드 알파벳은 '0'으로 사전 결정될 수 있다. 그리고, 복수의 소스 알파벳들 중 마이너 소스 알파벳들에 대응하는 코드 알파벳들은 각각 4비트 길이를 가질 수 있으며, 첫 자리는 '1'일 수 있다.
메모리 장치(150)는 복수의 제1 유형의 압축 테이블과 유사하게, 서로 다른 n값에 대응하는 복수의 제2 유형의 압축 테이블들을 저장할 수 있다. 메모리 장치(150)는 LMB 데이터 및 RMB 데이터 각각에서 심볼 '1'이 차지하는 비율에 따라 서로 다른 n값에 대응하는 제2 유형의 압축 테이블들을 사용하여 LMB 데이터 및 RMB 데이터를 따로 압축할 수 있다. 예를 들어, 메모리 장치(150)는 제3 압축 테이블(1100)을 사용하여 LMB 데이터를 압축하고, 제4 압축 테이블(1150)을 사용하여 RMB 데이터를 압축함으로써 제2 소프트 데이터를 압축할 수 있다.
도 12a 및 도 12b는 제3 소프트 데이터 생성 방식 및 제3 유형의 압축 테이블을 설명하기 위한 도면이다.
도 12a는 제3 소프트 데이터 생성 방식을 설명하기 위한 도면이다.
도 12a는 메모리 셀들의 문턱 전압 분포들을 도시한다. 도 12a에 도시된 문턱 전압 분포들은 도 11a에 도시된 문턱 전압 분포들과 동일할 수 있다. 메모리 장치(150)는 6개의 소프트 리드 전압들(R2-1~R2-6)을 사용하여 6개의 소프트 리드 값을 획득하고, 상기 6개의 소프트 리드 값의 연산결과에 따라 메모리 셀들의 신뢰도를 '0', '1', '2', '3' 중 어느 하나로 결정할 수 있다.
하드 리드 전압(R2)으로부터 멀리 떨어진 문턱 전압 구간일수록 해당 문턱 전압 구간에 속하는 메모리 셀들의 신뢰도가 높아질 수 있다. 도 12a에서, '0', '1', '2', '3' 순으로 더욱 강한 신뢰도를 나타낼 수 있다.
메모리 장치(150)는 소프트 리드 동작 대상인 메모리 셀들의 신뢰도를 심볼로 하여 소프트 데이터를 생성할 수 있다. 메모리 장치(150)가 여러 쌍의 소프트 리드 전압들을 사용하여 리드된 여러 개의 소프트 리드 값에 기초하여 각 메모리 셀들의 신뢰도를 비이진(non-binary) 데이터로 나타내는 소프트 데이터를 생성하는 방식은 제3 소프트 데이터 생성 방식으로 지칭될 수 있다.
제3 소프트 데이터 생성 방식을 사용하여 생성된 제3 소프트 데이터의 심볼 값은 '0', '1', '2', '3' 중 어느 하나일 수 있다. 도 12a를 참조하면, 복수의 메모리 셀들 중 신뢰도가 '3'인 메모리 셀들이 가장 많을 수 있다. 따라서, 제3 소프트 데이터의 메이저 심볼은 '3'이고, 마이너 심볼은 '0', '1', '2'일 수 있다.
상기 제3 소프트 데이터를 압축하기 위한 제3 유형의 압축 테이블은 도 12b를 참조하여 설명된다.
도 12b는 제5 압축 테이블(1200)을 예시한다.
제5 압축 테이블(1200)은 제3 유형의 압축 테이블의 일 예이다. 제3 유형의 압축테이블은 메이저 심볼 '3' 및 마이너 심볼 '0', '1', '2' 중 적어도 하나를 포함하는 복수의 소스 알파벳들을 포함할 수 있다. 상기 소스 알파벳들은 서로 접두어가 되지 않을 수 있다.
제5 압축 테이블(1200)은 상기 소스 알파벳들에 대응하는 코드 알파벳들을 더 포함할 수 있다. 예를 들어, 복수의 소스 알파벳들 중 발생 확률이 가장 큰 '33333'에 대응하는 코드 알파벳은 '0'으로 사전 결정될 수 있다.
제3 유형의 압축 테이블은 n개의 메이저 심볼, 예를 들면 심볼 '3'이 연속하는 소스 알파벳을 포함할 수 있다. 상기 메이저 심볼 '3'으로만 구성된 소스 알파벳이 메이저 소스 알파벳에 해당할 수 있다. 상기 메이저 소스 알파벳은 코드 알파벳 '0'에 대응할 수 있다.
상기 제3 유형의 압축 테이블은 n개 이하의 메이저 심볼이 연속하고, 마이너 심볼이 후속하는 소스 알파벳들을 더 포함할 수 있다. 상기 마이너 소스 알파벳들은 k의 길이를 가지며, 첫 자리가 '1'인 코드 알파벳들과 대응할 수 있다.
m값은 마이너 소스 알파벳 값들의 총 개수에 기초하여 결정될 수 있다. 상기 마이너 소스 알파벳 값들의 총 개수는 상기 마이너 심볼 값의 개수 및 알파벳의 최대 길이에 따라 결정될 수 있다. 예를 들어, 마이너 소스 제3 소프트 데이터가 4개의 심볼을 갖고, 알파벳의 최대 길이가 n개인 경우 마이너 소스 알파벳 값의 개수는 3n개일 수 있다. n값이 결정되면, m값은 3n
Figure pat00015
2m-1을 만족하는 자연수 중에 최솟값으로 선택될 수 있다.
메모리 장치(150)는 서로 다른 n값에 해당하는 복수 개의 제3 유형의 테이블을 저장할 수 있다. 메모리 장치(150)는 제3 소프트 데이터에서 메이저 심볼이 차지하는 비율에 따라 상기 복수 개의 제3 유형의 테이블들 중 어느 하나를 참조하여 상기 제3 소프트 데이터를 압축할 수 있다.
도 13은 본 발명의 실시 예에 따른 메모리 시스템(110)을 나타낸다.
도 13을 참조하면, 메모리 시스템(110)은 메모리 장치(150) 및 컨트롤러(130)를 포함할 수 있다. 도 13의 메모리 장치(150) 및 컨트롤러(130)는 도 1 및 도 2를 참조하여 설명된 메모리 장치(150) 및 컨트롤러(130)에 대응할 수 있다.
컨트롤러(130)는 ECC 디코더(1301) 및 압축 해제부(1302)를 포함할 수 있다.
ECC 디코더(1301)는 메모리 장치(150)로부터 압축된 소프트 데이터, 즉 압축 데이터를 획득하기 위해, 메모리 장치(150)로 소프트 리드 커맨드, 소프트 리드 전압 정보 및 에러율 정보를 제공할 수 있다. 상기 소프트 리드 커맨드는 소프트 데이터 생성 방식 정보를 포함할 수 있다. 상기 소프트 리드 전압 정보는 상기 소프트 리드 커맨드에 응하여 소프트 리드 동작을 수행하기 위해 사용되는 소프트 리드 전압들의 정보를 지칭할 수 있다.
압축 해제부(1302)는 이하에서 자세히 설명된다.
메모리 장치(150)는 압축회로(160), 낸드 플래시 메모리(170) 및 인터페이스(180)를 포함할 수 있다.
낸드 플래시 메모리(170)는 메모리 셀 트랜지스터들로 구성된 메모리 셀 어레이에 데이터를 저장할 수 있다. 낸드 플래시 메모리(170)는 메모리 다이, 플레인, 메모리 블록 및 페이지 계층 구조를 가질 수 있다. 하나의 메모리 다이는 한 번에 하나의 커맨드를 수신할 수 있다. 플래시 메모리는 복수의 메모리 다이를 포함할 수 있다. 하나의 메모리 다이는 복수의 플레인을 포함할 수 있으며, 상기 복수의 플레인은 상기 메모리 다이가 수신한 커맨드를 병렬로 처리할 수 있다. 각 플레인은 복수의 메모리 블록을 포함할 수 있다. 메모리 블록은 이레이즈 동작의 최소 단위일 수 있다. 하나의 메모리 블록은 복수의 페이지를 포함할 수 있다. 페이지는 라이트 동작의 최소 단위일 수 있다.
압축회로(160)는 리드부(1601) 및 압축부(1602)를 포함할 수 있다.
리드부(1601)는 컨트롤러(130)로부터 소프트 리드 커맨드 및 소프트 리드 전압 정보를 수신할 수 있다. 리드부(1601)는 소프트 리드 커맨드에 기초하여 소프트 데이터 생성 방식을 판단하고, 상기 소프트 데이터 생성 방식 및 소프트 리드 전압 정보에 기초하여 낸드 플래시 메모리(170)가 소프트 리드 전압들을 인가하도록 제어할 수 있다. 리드부(1601)는 상기 소프트 리드 커맨드에 포함된 소프트 데이터 생성 방식에 따라 소프트 데이터를 생성할 수 있다. 리드부(1601)가 사용할 수 있는 다양한 소프트 데이터 생성 방식의 예들이 도 10a, 도 11a 및 도 12a를 참조하여 자세히 설명되었다.
압축부(1602)는 리드부(1601)로부터 생성된 소프트 데이터를 압축하여 압축 데이터를 생성할 수 있다. 압축부(1602)는 압축방식선택부(1602A), 압축수행부(1602B)를 포함할 수 있다.
압축방식선택부(1602A)는 메모리 장치(150)에 저장된 복수의 압축 테이블들 중 리드부(1601)로부터 생성된 소프트 데이터를 압축하기 위해 사용할 압축 테이블을 선택할 수 있다. 압축방식선택부(1602A)는 컨트롤러(130) 로부터 전달받은 소프트 리드 커맨드, 소프트 리드 전압 정보 및 에러정보를 기반으로 상기 압축 테이블을 선택할 수 있다. 압축방식선택부(1602A)가 선택할 수 있는 다양한 압축 테이블들의 예가 도 5, 도 10b, 도 11b, 도 11c 및 도 12b를 참조하여 자세히 설명되었다.
압축수행부(1602B)는 압축방식선택부(1602A)에 의해 선택된 압축 테이블을 이용하여, 리드부(1601)에 의해 생성된 소프트 데이터를 압축함으로써 압축 데이터를 생성할 수 있다. 압축 데이터를 생성하는 방법의 예들이 도 5, 도 6 및 도 9 등을 참조하여 자세히 설명되었다. 예를 들어, 압축수행부(1602B)는 리드부(1601)에 의해 생성된 소프트 데이터에 종료 데이터를 부가하고, 상기 종료 데이터가 부가된 데이터를 압축함으로써 압축 데이터를 생성할 수 있다.
인터페이스(180)는 압축수행부(1602B)에 의해 생성된 압축 데이터를 컨트롤러(130)로 제공할 수 있다.
컨트롤러(130)의 압축해제부(130S2)는 메모리 장치(150)로부터 전달받은 압축 데이터를 압축 해제 테이블을 이용하여 압축 해제함으로써 압축 해제 데이터를 생성할 수 있다. 압축 데이터를 압축 해제함으로써 압축 해제 데이터를 생성하는 방법의 예가 도 7 내지 도 8를 참조하여 자세히 설명되었다.
압축해제부(1302)는 상기 압축 데이터를 압축하는 데 사용된 압축 테이블과 동일한 소스 알파벳들 및 코드 알파벳들을 포함하는 압축 해제 테이블을 사용하여 데이터를 압축 해제할 수 있다. 예를 들어, 압축수행부(1602B)가 도 5의 제1 압축 테이블(500)을 사용하여 소프트 데이터를 압축한 경우, 압축해제부(1302)는 도 7의 압축 해제 테이블(700)을 사용하여 압축 데이터를 압축 해제할 수 있다.
구현에 따라, 압축해제부(1302)는 상기 소프트 데이터를 생성하기 위해 사용된 소프트 데이터 생성 방식, 소프트 리드 전압 및 에러율 정보에 기초하여 상기 압축 테이블에 대응하는 압축 해제 테이블을 선택하거나, 상기 압축 데이터의 데이터 패턴에 기초하여 압축 해제 테이블을 선택하고, 상기 선택된 압축 해제 테이블을 사용하여 데이터를 압축 해제할 수 있다.
구현에 따라, 압축해제부(1302)는 압축 해제 데이터가 정해진 길이에 도달하면, 상기 압축 해제 데이터의 마지막 부분이 종료 데이터를 포함하는지 여부에 따라 메모리 장치(150)로부터 압축 데이터가 정상적으로 수신되었는지 여부를 판단할 수 있다.
압축 해제부(1302)는 압축 데이터가 정상적으로 수신되지 못했다고 판단되는 경우, 메모리 장치(150)로 압축 데이터의 재전송을 요청할 수 있다. 메모리 장치(150)는 상기 재전송 요청에 응하여 기존 압축 데이터를 메모리 장치(150)로 다시 제공할 수도 있고, 새로운 소프트 데이터 및 압축 데이터를 생성하여 상기 생성된 압축 데이터를 메모리 장치(150)로 제공할 수 있다.압축 해제부(1302)는 압축 데이터가 정상적으로 수신되었다고 판단되는 경우 ECC 디코더(1301)로 상기 압축 해제 데이터를 제공할 수 있다. ECC 디코더(1301)는 상기 압축 해제 데이터를 소프트 데이터로 사용하여 소프트 디시전 디코딩을 수행할 수 있다.
도 14는 본 발명의 실시 예에 따른 메모리 시스템(110)의 동작을 개략적으로 도시한 순서도이다.
단계 S1402에서, 컨트롤러(130)는 메모리 장치(150)로 압축된 소프트 데이터, 즉 압축 데이터를 요청할 수 있다. 컨트롤러(130)는 압축 데이터를 요청하기 위해 메모리 장치(150)로 소프트 리드 데이터, 소프트 리드 전압 정보 및 에러율 정보를 제공할 수 있다.
단계 S1404에서, 메모리 장치(150)는 컨트롤러(130)로부터의 소프트 리드 커맨드에 응하여 소프트 리드 동작을 수행함으로써 소프트 데이터를 생성할 수 있다.
메모리 장치(150)는 도 10a, 도 11a, 도 12a를 참조하여 설명된 것과 같은 여러 가지 방법들 중에서 선택된 방법으로 소프트 데이터를 생성할 수 있다. 예를 들어, 메모리 장치(150)는 컨트롤러(130)로부터의 소프트 리드 커맨드에 기초하여 어느 방법으로 소프트 데이터를 생성할지를 판단할 수 있다. 메모리 장치(150)는 소프트 데이터를 생성하기 위해, 컨트롤러(130)로부터의 소프트 리드 전압 정보에 따라 소프트 리드 전압들을 낸드 플래시 메모리(170)에 인가할 수 있다.
단계 S1406에서, 메모리 장치(150)는 상기 소프트 데이터를 압축하기 위해 복수의 압축 테이블들 중 어느 하나의 압축 테이블을 선택할 수 있다.
상기 압축 테이블은 사전 결정되어 메모리 장치(150)에 저장될 수 있다. 상기 압축 테이블은 상기 소프트 데이터를 구성하는 복수의 소스 알파벳들 및 상기 소스 알파벳들에 대응하는 코드 알파벳들을 포함할 수 있다. 복수의 소스 알파벳들은 서로의 접두어에 해당하지 않고, 복수의 코드 알파벳들도 서로의 접두어에 해당하지 않을 수 있다.
상기 복수의 소스 알파벳들 각각은 메이저 심볼 및 마이너 심볼 중 적어도 어느 하나를 포함할 수 있다. 상기 복수의 소스 알파벳들은, 메이저 소스 알파벳 및 상기 메이저 소스 알파벳을 제외한 마이너 소스 알파벳들을 포함할 수 있다.
상기 메이저 소스 알파벳은 제1 내지 제5 테이블(500, 1000, 1100, 1150, 1200)에 예시된 것과 같이 n개의 메이저 심볼들로만 구성될 수 있으며, 복수의 소스 알파벳들 중 가장 긴 길이를 가질 수 있다. 상기 메이저 소스 알파벳에 대응하는 코드 알파벳은 복수의 코드 알파벳들 중 가장 짧은 길이를 가질 수 있다. 예를 들어, 상기 코드 알파벳은 비트 '0'만을 포함할 수 있다.
마이너 소스 알파벳은 n보다 작은 수의 연속하는 메이저 심볼들 및 하나의 마이너 심볼로 구성될 수 있다. 상기 마이너 소스 알파벳에 대응하는 코드 알파벳은 m비트 길이를 가질 수 있다. 예를 들어, 상기 코드 알파벳은 비트 '1'로 시작할 수 있다. 마이너 심볼의 개수를 s라 할 때, n과 m은
Figure pat00016
의 관계를 갖는 자연수일 수 있다.
메모리 장치(150)는 소프트 데이터 생성 방법에 따라 여러 가지 유형의 압축 테이블들을 포함할 수 있다. 각 유형의 압축 테이블은 서로 다른 n값에 대응하는 복수의 압축 테이블들을 포함할 수 있다.
메모리 장치(150)는 컨트롤러(130)로부터의 소프트 데이터 생성 방식, 소프트 리드 전압 정보 및 에러율 정보에 기초하여 상기 압축 테이블을 선택할 수 있다.
단계 S1408에서, 메모리 장치(150)는 상기 선택된 압축 테이블을 사용하여 상기 소프트 데이터를 압축할 수 있다.
예를 들어, 메모리 장치(150)는 상기 압축 테이블을 참조하여 상기 소프트 데이터를 복수의 소스 알파벳들로 분할할 수 있다. 메모리 장치(150)는 상기 복수의 소스 알파벳들을 코드 알파벳들로 부호화하고, 상기 복수의 코드 알파벳들에 기초하여 압축 데이터를 생성할 수 있다.
메모리 장치(150)는 소스 알파벳들 중 가장 긴 길이를 갖고 소프트 데이터에서 가장 발생 확률이 높은 메이저 소스 알파벳을 가장 짧은 코드 알파벳으로 부호화할 수 있으므로, 소프트 데이터의 압축률이 향상될 수 있다.
구현에 따라, 메모리 장치(150)는 소프트 데이터의 모든 심볼들을 압축하기 위해, 소프트 데이터에 종료 데이터를 부가하고, 종료 데이터가 부가된 소프트 데이터에 기초하여 압축 데이터를 생성할 수 있다.
단계 S1410에서, 메모리 장치(150)는 컨트롤러(130)로 상기 압축 데이터를 제공할 수 있다.
단계 S1412에서, 컨트롤러(130)는 상기 압축 데이터를 압축 해제함으로써 압축 해제 데이터를 생성할 수 있다.
예를 들어, 컨트롤러(130)는 상기 압축 해제 데이터를 생성하기 위해, 단계 S1406에서 선택된 압축 테이블에 대응하는 압축 해제 테이블을 사용할 수 있다. 컨트롤러(130)는 메모리 장치(150)로 제공한 소프트 리드 커맨드, 소프트 리드 전압 및 에러 정보에 기초하여 상기 압축 해제 테이블을 선택하거나, 상기 압축 데이터의 데이터 패턴에 기초하여 압축 해제 테이블을 선택할 수 있다.
단계 S1414에서, 컨트롤러(130)는 상기 압축 해제 데이터가 정상적인 압축 데이터인지 여부를 판단할 수 있다.
예를 들어, 컨트롤러(130)는 종료 데이터가 부가된 소프트 데이터에 기초하여 생성된 압축 데이터를 메모리 장치(150)로부터 수신할 수 있다. 압축 데이터가 정상적으로 수신된 경우, 압축 해제 데이터는 종료 데이터가 부가된 소프트 데이터의 포맷을 가질 수 있다.
컨트롤러(130)는 상기 압축 해제 데이터가 정상적인 데이터인지 판단하기 위해, 상기 압축 해제 데이터가 정해진 길이의 데이터이고, 마지막 비트가 상기 종료 데이터에 해당하는지 여부를 판단할 수 있다.
압축 해제 데이터가 정상적인 데이터인 경우(단계 S1414에서, “”컨트롤러(130)는 단계 S1416에서 상기 압축 해제 데이터를 사용하여 소프트 디시전 디코딩을 수행할 수 있다.
압축 해제 데이터가 정상적인 데이터가 아닌 경우(단계 S1414에서, “NO”컨트롤러(130)는 단계 S1418에서 메모리 장치(150)로 압축 데이터를 재요청할 수 있다.
한편, 본 발명의 상세한 설명에서는 구체적인 실시 예에 관해 설명하였으나, 본 발명의 범위에서 벗어나지 않는 한도 내에서 여러 가지 변형이 가능함은 물론이다. 그러므로, 본 발명의 범위는 설명된 실시 예에 국한되어 정해져서는 안되며 후술하는 특허청구의 범위뿐만 아니라 이 특허청구의 범위와 균등한 것들에 의해 정해져야 한다.
110: 메모리 시스템
130: 컨트롤러
150: 메모리 장치

Claims (21)

  1. 메모리 장치에 있어서,
    복수의 메모리 셀들;
    컨트롤러로부터 수신된, 상기 복수의 메모리 셀들에 대한 소프트 리드 커맨드에 응하여 메이저 심볼들 및 마이너 심볼들을 포함하는 소프트 데이터를 생성하는 소프트 리드부;
    상기 소프트 데이터에 포함되는 복수의 소스 알파벳들 중 상기 메이저 심볼이 제1 길이만큼 연속하는 메이저 소스 알파벳들을 제2 길이의 코드 알파벳들로 부호화하고, 상기 메이저 심볼이 상기 제1 길이보다 짧은 길이만큼 연속하고 하나의 마이너 심볼이 후속하는 마이너 소스 알파벳들을 상기 제2 길이보다 긴 길이의 코드 알파벳들로 부호화함으로써 압축 데이터를 생성하는 압축부; 및
    상기 압축 데이터를 상기 컨트롤러로 제공하는 인터페이스
    를 포함하는 메모리 장치.
  2. 제1항에 있어서,
    상기 압축부는
    상기 소스 알파벳들 및 상기 코드 알파벳들의 관계를 나타내는 압축 테이블을 사용하여 상기 압축 데이터를 생성하는
    메모리 장치.
  3. 제2항에 있어서,
    소스 알파벳들 및 코드 알파벳들의 관계를 나타내는 복수의 압축 테이블들을 저장하고, 상기 메이저 심볼의 값, 마이너 심볼의 값 및 상기 제1 길이의 값에 따라 상기 복수의 압축 테이블들 중 상기 압축부에서 사용될 압축 테이블을 선택하는 압축 방식 선택부
    를 더 포함하는 메모리 장치.
  4. 제3항에 있어서,
    상기 압축 방식 선택부는
    에러율 정보에 기초하여 상기 제1 길이의 값을 결정하고,
    상기 에러율 정보는
    상기 소프트 리드부에 의해 이전에 생성된 압축 데이터의 길이 정보 또는 상기 컨트롤러에서 이전에 리드된 데이터에 대해 에러 정정 디코딩을 수행한 결과 검출된 에러 비트 개수 정보 중 적어도 어느 하나를 포함하는
    메모리 장치.
  5. 제4항에 있어서,
    상기 압축 방식 선택부는
    상기 컨트롤러로부터 수신되는 소프트 리드 전압 값 정보에 기초하여 상기 제1 길이의 값을 결정하는
    메모리 장치.
  6. 제3항에 있어서,
    상기 압축 방식 선택부는
    상기 소프트 리드 커맨드에 포함된 소프트 데이터 생성 방식 정보에 기초하여 메이저 심볼의 값 및 마이너 심볼의 값을 결정하는
    메모리 장치.
  7. 제6항에 있어서,
    상기 소프트 리드부는
    하나의 메모리 셀 당 복수 비트의 신뢰도 정보를 포함하는 복수 비트 소프트 데이터를 생성하고,
    상기 압축 방식 선택부는
    상기 신뢰도 정보의 자릿수에 따른 에러율 정보에 기초하여 복수의 압축 테이블을 선택하고,
    상기 압축부는
    상기 소프트 데이터를 상기 신뢰도 정보의 자릿수에 따라 나누고, 상기 자릿수에 따라 나누어진 데이터를 상기 복수의 압축 테이블들을 사용하여 압축하는
    메모리 장치.
  8. 제6항에 있어서,
    상기 소프트 리드부는
    하나의 메모리 셀 당 비이진(non-binary) 신뢰도 정보를 포함하는 비이진 소프트 데이터를 생성하고,
    상기 압축 방식 선택부는
    상기 비이진 신뢰도 정보를 나타내기 위한 심볼 값들의 개수 및 에러율 정보에 기초하여 압축 테이블을 선택하는
    메모리 장치.
  9. 제1항에 있어서,
    상기 코드 알파벳들은 서로의 접두어가 되지 않는
    메모리 장치.
  10. 제9항에 있어서,
    상기 메이저 소스 알파벳에 대응하는 코드 알파벳은 '0'이고,
    상기 마이너 소스 알파벳들에 대응하는 코드 알파벳들의 첫 자리는 '1'인
    메모리 장치.
  11. 제10항에 있어서,
    상기 마이너 소스 알파벳들에 대응하는 코드 알파벳들의 길이는
    상기 제1 길이에 따라 결정되는 상기 마이너 소스 알파벳 값들의 총 개수에 기초하여 결정되는
    메모리 장치.
  12. 제1항에 있어서,
    상기 메이저 심볼은 상기 소프트 데이터에서 발생 확률이 가장 높은 값의 심볼이고, 상기 마이너 심볼은 상기 복수 종류의 심볼들 중 상기 메이저 심볼을 제외한 심볼인
    메모리 장치.
  13. 제12항에 있어서,
    상기 메이저 심볼은 상기 복수 종류의 심볼들 중 신뢰도가 가장 강함을 나타내는 심볼인
    메모리 장치.
  14. 제1항에 있어서,
    상기 압축부는
    상기 소프트 데이터에 종료 데이터를 부가하고, 상기 소프트 데이터에서 상기 메이저 소스 알파벳 및 마이너 소스 알파벳 중 어디에도 해당하지 않는 나머지 심볼들과 상기 종료 데이터를 코드 알파벳으로 부호화하는
    메모리 장치.
  15. 제14항에 있어서,
    상기 종료 데이터는 하나의 마이너 심볼로 구성되는
    메모리 장치.
  16. 제1항에 있어서,
    상기 압축부는
    상기 소프트 데이터의 복수의 심볼들을 순시적으로(instantaneously) 검사하여 상기 소프트 데이터로부터 상기 메이저 소스 알파벳들 및 마이너 소스 알파벳들을 검출하는
    메모리 장치.
  17. 메모리 시스템에 있어서,
    메모리 장치; 및
    상기 메모리 장치로 소프트 리드 커맨드 및 에러율 정보를 제공하는 컨트롤러를 포함하고,
    상기 메모리 장치는
    상기 소프트 리드 커맨드에 응하여 복수의 심볼들을 포함하는 소프트 데이터를 생성하고, 소스 알파벳들 및 코드 알파벳들의 관계를 나타내는 복수의 압축 테이블 중 어느 하나를 상기 소프트 리드 커맨드 및 상기 에러율 정보에 기초하여 선택하고, 상기 소프트 데이터로부터 검출된 소스 알파벳들을 코드 알파벳으로 복호화함으로써 압축 데이터를 생성하고, 상기 생성된 압축 데이터를 상기 컨트롤러로 제공하고,
    상기 소스 알파벳들은 서로 접두어가 되지 않으며, 상기 소스 알파벳들 중 발생 확률이 가장 높은 메이저 소스 알파벳의 길이가 가장 길고, 상기 메이저 소스 알파벳에 대응하는 코드 알파벳은 상기 코드 알파벳들 중 길이가 가장 짧은
    메모리 시스템.
  18. 제17항에 있어서,
    상기 컨트롤러는
    상기 선택된 압축 테이블에 대응하는 압축 해제 테이블을 사용하여 상기 메모리 장치로부터의 압축 데이터의 압축을 해제함으로써 압축 해제 데이터를 생성하고, 상기 압축 해제 데이터에 기초하여 소프트 디시전 디코딩을 수행하는
    메모리 시스템.
  19. 제17항에 있어서,
    상기 메모리 장치는
    상기 소프트 데이터에서 소스 알파벳들 중 어디에도 해당하지 않는 나머지 데이터에 정해진 종료 데이터를 부가함으로써 상기 나머지 데이터를 소스 알파벳으로 변경하고, 상기 변경된 소스 알파벳을 코드 알파벳으로 부호화하는
    메모리 시스템.
  20. 제19항에 있어서,
    상기 컨트롤러는
    상기 메모리 장치로부터의 상기 압축 데이터의 압축을 해제함으로써 압축 해제 데이터를 생성하고, 상기 압축 해제 데이터가 정해진 길이에 해당하며 상기 압축 해제 데이터의 마지막 부분이 상기 종료 데이터에 해당하는 경우 상기 압축 해제 데이터에 기초하여 소프트 디시전 디코딩을 수행하고,
    상기 정해진 길이는 상기 소프트 데이터의 길이 및 상기 종료 데이터의 길이의 합인
    메모리 시스템.
  21. 제20항에 있어서,
    상기 컨트롤러는
    상기 압축 해제 데이터가 상기 정해진 길이에 해당하지 않거나 상기 압축 해제 데이터의 마지막 부분이 상기 종료 데이터에 해당하지 않는 경우 상기 메모리 장치로 상기 압축 데이터를 재요청하는
    메모리 시스템.
KR1020200159958A 2020-11-25 2020-11-25 메모리 장치 및 메모리 시스템 KR20220072398A (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020200159958A KR20220072398A (ko) 2020-11-25 2020-11-25 메모리 장치 및 메모리 시스템
US17/324,579 US20220164143A1 (en) 2020-11-25 2021-05-19 Memory device and memory system
CN202110763317.0A CN114550784A (zh) 2020-11-25 2021-07-06 存储器装置和存储器系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020200159958A KR20220072398A (ko) 2020-11-25 2020-11-25 메모리 장치 및 메모리 시스템

Publications (1)

Publication Number Publication Date
KR20220072398A true KR20220072398A (ko) 2022-06-02

Family

ID=81658236

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020200159958A KR20220072398A (ko) 2020-11-25 2020-11-25 메모리 장치 및 메모리 시스템

Country Status (3)

Country Link
US (1) US20220164143A1 (ko)
KR (1) KR20220072398A (ko)
CN (1) CN114550784A (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11847342B2 (en) * 2021-07-28 2023-12-19 Apple Inc. Efficient transfer of hard data and confidence levels in reading a nonvolatile memory

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9882678B2 (en) * 2014-09-23 2018-01-30 Cavium, Inc. Method and apparatus for improving data integrity using compressed soft information
US10733047B2 (en) * 2018-09-28 2020-08-04 Sandisk Technologies Llc Hard and soft bit data from single read
US11036582B2 (en) * 2019-09-27 2021-06-15 Western Digital Technologies, Inc. Uncorrectable error correction code (UECC) recovery time improvement
US11620050B2 (en) * 2020-09-25 2023-04-04 Sandisk Technologies Llc Soft data compression for non-volatile memory

Also Published As

Publication number Publication date
US20220164143A1 (en) 2022-05-26
CN114550784A (zh) 2022-05-27

Similar Documents

Publication Publication Date Title
JP6606039B2 (ja) メモリシステムおよび制御方法
KR20220001222A (ko) 베드 블록을 처리하는 메모리 시스템 및 동작 방법
KR20220021186A (ko) 데이터 처리 시스템 내 데이터를 공유하는 장치 및 방법
US11184033B2 (en) Data storage device
US11275525B2 (en) Apparatus and method for improving write throughput of memory system
US20210279180A1 (en) Apparatus and method for controlling map data in a memory system
US10733094B2 (en) Memory system, controller, method of operating a controller, and method of operating a memory system for processing big data by using compression and decompression
US11756643B2 (en) Apparatus and method for correcting an error in data transmission of a data processing system
US11245420B2 (en) Apparatus and method for recovering a data error in a memory system
KR20210092957A (ko) 메모리 시스템 내 데이터 오류를 처리하는 장치 및 방법
US11360697B2 (en) Apparatus and method for encoding and decoding operations to protect data stored in a memory system
US20220171564A1 (en) Apparatus and method for maintaining data stored in a memory system
US11194661B1 (en) Memory system for accessing data in stripe form and operating method thereof
KR20220103378A (ko) 메모리 시스템에 저장된 데이터를 처리하는 장치 및 방법
KR20220072398A (ko) 메모리 장치 및 메모리 시스템
KR20210124705A (ko) 메모리 시스템 내 맵 정보를 제어하는 장치 및 방법
US20230073200A1 (en) Apparatus and method for controlling a shared memory in a data processing system
US11442811B1 (en) Apparatus and method for using an error correction code in a memory system
US11645002B2 (en) Apparatus and method for controlling and storing map data in a memory system
KR20220049230A (ko) 메모리 시스템에서 비휘발성 메모리 장치 내 오류를 확인하는 장치 및 방법
KR20210150779A (ko) 위임된 작업을 처리하는 메모리 시스템 및 동작 방법
US20240126462A1 (en) Apparatus and method for managing map data between host and memory system
US11854657B2 (en) Memory device and memory system supporting interleaving operation and operation method thereof
KR20220108342A (ko) 메모리 시스템 내 프리 블록을 확보하는 장치 및 방법
CN117234413A (zh) 存储器装置、存储器系统及其操作方法以及可读介质