KR102149668B1 - 비휘발성 메모리 장치의 데이터 디코딩 방법 - Google Patents

비휘발성 메모리 장치의 데이터 디코딩 방법 Download PDF

Info

Publication number
KR102149668B1
KR102149668B1 KR1020140047903A KR20140047903A KR102149668B1 KR 102149668 B1 KR102149668 B1 KR 102149668B1 KR 1020140047903 A KR1020140047903 A KR 1020140047903A KR 20140047903 A KR20140047903 A KR 20140047903A KR 102149668 B1 KR102149668 B1 KR 102149668B1
Authority
KR
South Korea
Prior art keywords
decoding
data
hard decision
read
soft decision
Prior art date
Application number
KR1020140047903A
Other languages
English (en)
Other versions
KR20150121835A (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 KR1020140047903A priority Critical patent/KR102149668B1/ko
Priority to US14/693,446 priority patent/US9672942B2/en
Publication of KR20150121835A publication Critical patent/KR20150121835A/ko
Application granted granted Critical
Publication of KR102149668B1 publication Critical patent/KR102149668B1/ko

Links

Images

Classifications

    • 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
    • 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
    • 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
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/37Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
    • H03M13/45Soft decoding, i.e. using symbol reliability information
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/63Joint error correction and other techniques
    • H03M13/6325Error control coding in combination with demodulation
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Quality & Reliability (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Read Only Memory (AREA)

Abstract

비휘발성 메모리 장치의 데이터를 디코딩하는 방법이 개시된다. 본 발명의 데이터 디코딩 방법은 비휘발성 메모리 장치로부터 제1 경판정 리드 레벨을 이용하여 제1 경판정 데이터를 독출하고, 상기 제1 경판정 데이터를 이용하여 디코딩하는 제1 디코딩 단계, 상기 제1 디코딩 단계에서 디코딩 실패인 경우, 상기 비휘발성 메모리 장치로부터 제1 연판정 데이터(soft decision data)를 독출하고, 상기 제1 연판정 데이터를 이용하여 디코딩하는 제2 디코딩 단계, 및 상기 제2 디코딩 단계에서 디코딩 실패인 경우, 상기 제1 경판정 리드 레벨을 제2 경판정 리드 레벨로 변경하고, 상기 제2 경판정 리드 레벨을 이용하여 제2 경판정 데이터를 독출하고, 상기 제2 경판정 데이터 및 상기 제1 연판정 데이터를 함께 이용하여 디코딩하는 제3 디코딩 단계를 포함한다.

Description

비휘발성 메모리 장치의 데이터 디코딩 방법{Data decoding method of Non-volatile memory device}
본 발명은 비휘발성 메모리 장치에 관한 것으로, 보다 상세하게는 비휘발성 메모리 장치의 데이터 디코딩 방법, 및 이를 수행하는 장치에 관한 것이다.
비휘발성 메모리 시스템, 예컨대, 플래시 메모리 시스템에서 리드아웃(readout) 데이터의 신뢰성을 보장하기 위하여 경판정(hard decision) 데이터를 이용한 오류정정 방법뿐만 아니라 연판정(soft decision) 데이터를 이용하는 오류정정 방법이 제시되고 또한 사용되고 있다. 경판정 데이터를 이용하는 오류 정정에 비하여 연판정 데이터를 이용하여 오류 정정은 데이터에 포함된 오류를 보다 많이 정정할 가능성이 있다. 즉, 오류 정정 능력이 더 높다. 그러나, 플래시 메모리 시스템에서 연판정 데이터를 얻기 위해서는 여러 번의 읽기(read) 과정이 수반된다. 따라서, 연판정 데이터를 사용함으로써 데이터의 신뢰성은 향상되지만 이로 인하여 제품의 리드아웃 성능은 감소할 수 있다.
본 발명이 이루고자 하는 기술적인 과제는 오류 정정 단계를 여러 단계로 구성하고 선택적으로 적용함으로써, 오류 정정 능력 및 데이터 복원에 소요되는 시간을 최적화할 수 있는 비휘발성 메모리 장치의 데이터 디코딩 방법 및 이를 수행하는 장치를 제공하는 것이다.
상기 기술적 과제를 달성하기 위한 본 발명의 실시예에 따르면, 비휘발성 메모리 장치로부터 제1 경판정 리드 레벨을 이용하여 제1 경판정 데이터를 독출하고, 상기 제1 경판정 데이터를 이용하여 디코딩하는 제1 디코딩 단계; 상기 제1 디코딩 단계에서 디코딩 실패인 경우, 상기 비휘발성 메모리 장치로부터 제1 연판정 데이터(soft decision data)를 독출하고, 상기 제1 연판정 데이터를 이용하여 디코딩하는 제2 디코딩 단계; 및 상기 제2 디코딩 단계에서 디코딩 실패인 경우, 상기 제1 경판정 리드 레벨을 제2 경판정 리드 레벨로 변경하고, 상기 제2 경판정 리드 레벨을 이용하여 제2 경판정 데이터를 독출하고, 상기 제2 경판정 데이터 및 상기 제1 연판정 데이터를 함께 이용하여 디코딩하는 제3 디코딩 단계를 포함하는 비휘발성 메모리 장치의 데이터 디코딩 방법이 제공된다.
상기 제3 디코딩 단계는 상기 제 2 경판정 데이터를 이용하여 디코딩하거나 상기 제2 경판정 데이터 및 상기 제1 연판정 데이터를 함께 이용하여 디코딩하는 제3-1 디코딩 단계; 및 상기 제3-1 디코딩 단계에서 디코딩 실패인 경우, 상기 제2 경판정 리드 레벨에 기초한 제 2 연판정 데이터를 독출하고, 상기 제2 경판정 데이터 및 상기 제 2 연판정 데이터를 이용하여 디코딩하는 제3-2 디코딩 단계를 포함할 수 있다.
상기 제3-1 디코딩 단계는, 제1 리드 레벨 트래킹 기법을 이용하여 상기 제2 경판정 리드 레벨을 찾는 단계를 포함할 수 있다.
상기 제2 디코딩 단계는 상기 제1 경판정 리드 레벨로부터 제1 연판정 옵셋만큼 차이를 갖는 제1 연판정 리드 레벨과 상기 제1 경판정 리드 레벨로부터 제2 연판정 옵셋만큼 차이를 갖는 제2 연판정 리드 레벨을 이용하여 상기 제1 연판정 데이터를 독출하는 단계를 포함할 수 있다.
상기 제3-2 디코딩 단계는 상기 제2 경판정 리드 레벨로부터 제3 연판정 옵셋만큼 차이를 갖는 제3 연판정 리드 레벨과 상기 제2 경판정 리드 레벨로부터 제4 연판정 옵셋만큼 차이를 갖는 제4 연판정 리드 레벨을 이용하여 상기 제2 연판정 데이터를 독출하는 단계를 포함하며, 상기 제3 및 제4 연판정 옵셋 각각은 상기 제1 및 제2 연판정 옵셋과 같은 값이거나, 또는 다른 값일 수 있다.
상기 제3-1 디코딩 단계는 상기 제2 경판정 리드 레벨이 상기 제1 경판정 리드 레벨로부터 일정한 범위 밖에 위치하는 경우에는 상기 제2 경판정 데이터를 이용하여 경판정 디코딩을 수행하는 단계; 및 상기 제2 경판정 리드 레벨이 상기 제1 경판정 리드 레벨로부터 상기 일정한 범위 내에 위치하는 경우에는 상기 제2 경판정 데이터 및 상기 제1 연판정 데이터를 이용하여 연판정 디코딩을 수행하거나, 다음 디코딩 단계로 이동하는 단계를 포함할 수 있다.
상기 방법은 상기 제3 디코딩 단계에서 디코딩 실패인 경우 수행되는 제4 디코딩 단계를 더 포함할 수 있다.
상기 제4 디코딩 단계는 상기 제2 경판정 리드 레벨을 제3 경판정 리드 레벨로 변경하고, 상기 제3 경판정 리드 레벨을 이용하여 제3 경판정 데이터를 독출하고, 상기 제 3 경판정 데이터를 이용하여 디코딩을 수행 하거나, 상기 제3 경판정 데이터 및 이전에 독출된 연판정 데이터를 함께 이용하여 디코딩하는 제4-1 디코딩 단계; 및 상기 제4-1 디코딩 단계에서 디코딩 실패인 경우, 상기 제3 경판정 리드 레벨에 기초한 제3 연판정 데이터를 독출하고, 상기 제3 연판정 데이터를 이용하여 디코딩하는 제4-2 디코딩 단계를 더 포함할 수 있다.
상기 제4-1 디코딩 단계는 제2 리드 레벨 트래킹 기법을 이용하여 상기 제3 경판정 리드 레벨을 찾는 단계를 포함할 수 있다.
상기 제3-1 디코딩 단계에서의 상기 제1 리드 레벨 트래킹 기법 및 상기 제4-1 디코딩 단계에서의 상기 제2 리드 레벨 트래킹 기법은 서로 다른 기법을 적용할 수 있다.
상기 제 4-1 디코딩 단계는 상기 제3 경판정 리드 레벨이 상기 제2 경판정 리드 레벨로부터 일정한 범위 밖에 위치하는 경우에는 상기 제3 경판정 데이터를 이용하여 경판정 디코딩을 수행하는 단계; 및 상기 제3 경판정 리드 레벨이 상기 제2 경판정 리드 레벨로부터 상기 일정한 범위 내에 위치하는 경우에는 상기 제3 경판정 데이터 및 상기 제2 연판정 데이터를 함께 이용하여 연판정 디코딩을 수행하는 단계를 포함할 수 있다.
상기 제 3 연판정 데이터(soft decision data) 독출을 위한 연판정 옵셋은 상기 제1 연판정 데이터 독출을 위한 상기 제1 및 제2 연판정 옵셋과 같은 값이거나, 상기 제 2 연판정 데이터 독출을 위한 제3 및 제4 연판정 옵셋과 같은 값 또는, 상기 제1 내지 제4 연판정 옵셋과 다른 값일 수 있다.
상기 방법은 상기 제4 디코딩 단계에서 디코딩 실패인 경우, 연판정 리드 레벨의 수를 증가시킴으로써 상기 비휘발성 메모리 장치로부터 추가 데이터 리드 과정을 통하여 독출한 연판정 데이터의 비트수를 증가시키고, 상기 증가된 연판정 데이터를 이용하여 디코딩하는 제5 디코딩 단계를 더 포함할 수 있다.
상기 제5 디코딩 단계는 특정 연판정 데이터 비트수에 대하여, 연판정 리드 레벨을 결정하기 위한 미리 설정된 연판정 오프셋 세트 각각을 적용하여 상기 특정 연판정 데이터 비트수를 가지는 상기 연판정 데이터를 독출하고, 독출한 연판정 데이터를 이용하여 디코딩 하는 단계를 포함할 수 있다.
상기 제1 내지 제5 디코딩 단계들은 다음 단계로 갈수록 디코딩에 필요한 데이터 독출 수행 시간은 증가하지만,기대되는 오류정정 능력이 더 높은 디코딩 방법을 적용한 것을 특징으로 할 수 있다.
상기 제1 리드 레벨 트래킹 기법은 상기 제1 경판정 데이터와 상기 제 1 연판정 데이터를 이용하여, 상기 비휘발성 메모리 장치의 산포 변화 정도를 예측하여 상기 제2 경판정 리드 레벨을 산출할 수 있다.
상기 제3 디코딩 단계는 디코딩이 성공할 때까지 상기 제3-1 디코딩 단계와 상기 제3-2 디코딩 단계를 순차적으로 미리 설정된 최대 반복 회수(Max_loop) 이하로 수행될 수 있다.
상기 방법은 상기 제1 디코딩 단계와 상기 제2 디코딩 단계 사이에, (a) 상기 제1 디코딩 단계에서 디코딩 실패인 경우, 상기 비휘발성 메모리에서 이전 독출한 데이터의 디코딩 과정에서 디코딩이 성공한 경판정 리드 레벨을 제3 경판정 리드 레벨로 설정하고, 상기 제3 경판정 리드 레벨을 이용하여 제3 경판정 데이터를 독출하고, 상기 제3 경판정 데이터를 이용하여 디코딩하는 단계; 또는 (b) 상기 제3 경판정 데이터를 이용하여 디코딩하는 단계에서 디코딩 실패인 경우, 제4 경판정 리드 레벨을 미리 설정된 하나 이상의 리드 레벨들 중 하나로 설정하고, 상기 제4 경판정 리드 레벨을 이용하여 제4 경판정 데이터를 독출하고, 상기 제4 경판정 데이터를 이용하여 디코딩하는 단계 중 적어도 어느 하나의 단계를 더 포함할 수 있다.
상기 성공한 경판정 리드 레벨은 현재 디코딩 과정의 직전 디코딩 과정에서 디코딩 성공한 경우에 적용되었던 경판정 리드 레벨 또는 현재 디코딩 과정이 진행중인 비휘발성 메모리가 속한 영역에서 디코딩 성공한 경우에 적용되었던 경판정 리드 레벨일 수 있다.
상기 비휘발성 메모리가 속한 영역은 현재 디코딩 과정이 진행중인 비휘발성 메모리와 동일 페이지, 동일 워드라인, 동일 데이터 블록, 동일 매트, 동일 플레인, 또는 동일 칩일 수 있다.
상기 기술적 과제를 달성하기 위한 본 발명의 다른 실시예에 따르면, 복수(2이상)의 디코딩 모드들을 설정하는 단계; 및 상기 비휘발성 메모리 장치의 열화 지표에 따라 상기 복수의 디코딩 모드들 중 하나를 선택하여 수행하는 단계를 포함하는 비휘발성 메모리 장치의 데이터 디코딩 방법이 제공된다.
상기 복수의 디코딩 모드들 각각은 다음 단계로 갈수록 독출 수행 시간은 증가하지만 오류정정 능력은 더 높은 복수(2이상)의 디코딩 단계들을 포함할 수 있다.
상기 복수의 디코딩 모드들 각각은 리드 레벨 변경 방법, 디코딩 방법, 오류 정정 능력, 및 데이터 독출 시간 중 적어도 하나가 서로 다른 복수(2이상)의 미리 설정된 디코딩 단계들을 포함할 수 있다.
상기 복수의 디코딩 모드들은 제1 및 제2 디코딩 모드를 포함할 수 있다.
상기 복수의 디코딩 모드들 중 하나를 선택하여 수행하는 단계는 상기 비휘발성 메모리 장치 초기에는 상기 제1 디코딩 모드를 수행하는 단계; 상기 제1 디코딩 모드에서 상기 열화 지표가 제2 임계치 보다 크면 상기 제2 디코딩 모드로 변경하여 수행하는 단계; 및 상기 제2 디코딩 모드에서 상기 열화 지표가 제1 임계치 보다 작으면 상기 제1 디코딩 모드로 복귀하는 단계를 포함할 수 있다.
상기 복수의 디코딩 모드들은 제3 디코딩 모드를 더 포함할 수 있다.
상기 복수의 디코딩 모드들 중 하나를 선택하여 수행하는 단계는 상기 제2 디코딩 모드에서 상기 열화 지표가 제3 임계치 보다 크면 상기 제3 디코딩 모드로 변경하여 수행하는 단계를 더 포함할 수 있다.
상기 열화 지표는 오류 정정 복호기의 반복 복호 횟수, 프로그램-소거 싸이클(Program- Erase Cycle), 리드 싸이클(Read Cycle), ECC 디코딩 성공/실패, ECC 디코딩 성공시의 코드워드(codeword) 내 에러 개수, 디코딩 과정 중 일정 기간내의 평균 에러 개수, 디코딩 과정 중 일정 기간내의 평균 반복(iteration) 회수, 상기 비휘발성 메모리 장치에 특정 모니터링 데이터를 기록 후 상기 모니터링 데이터의 산포, 및 특정 리드 레벨에서의 셀 개수의 변화 중 적어도 하나를 포함할 수 있다.
상술한 바와 같이, 본 발명의 실시예에 따르면, 오류 정정 단계를 여러 단계로 구성하고 선택적으로 적용함으로써, 오류 정정 능력 및 데이터 복원에 소요되는 시간을 최적화할 수 있다.
도 1은 본 발명의 일 실시예에 따른 전자 시스템의 개략적인 구성 블록도이다.
도 2는 도 1에 도시된 컨트롤러의 구성의 일 예를 나타내는 블록도이다.
도 3은 본 발명의 실시예에 따른 비휘발성 메모리 시스템의 구조를 개략적으로 나타내는 도면이다.
도 4는 본 발명의 실시예에 따른 비휘발성 메모리 시스템의 계층적인 구조를 나타내는 도면이다.
도 5는 본 발명의 일 실시예에 따른 비휘발성 메모리 소자를 구체적으로 나타낸 블록도이다.
도 6은 도 5에 도시된 메모리 셀 어레이를 구체적으로 나타낸 일실시예다.
도 7은 도 5에 도시된 메모리 셀 어레이를 구체적으로 나타낸 다른 실시예이다.
도 8은 본 발명의 실시에에 따른 데이터 디코딩 방법을 나타내는 플로우차트이다.
도 9a내지 도 9m은 각각 본 발명의 실시예에 따른 데이터 디코딩 방법을 나타내는 플로우챠트이다.
도 10a 내지 도 10d는 본 발명의 실시예에 따른 단계별 데이터 디코딩 방법을 좀 더 구체적으로 나타내는 플로우차트이다.
도 11은 경판정 데이터의 독출 및 메모리 열화에 따른 산포 변화를 설명하기 위한 도면이다.
도 12는 연판정 데이터의 독출을 설명하기 위한 도면이다.
도 13은 본 발명의 실시예에 따른 코오스 리드 레벨 트래킹 방법을 설명하기 위한 그래프이다.
도 14는 도 13에 도시된 코오스 리드 레벨 트래킹에 의해 정해진 새로운 경판정 리드 레벨 및 이를 이용한 데이터 독출을 설명하기 위한 도면이다.
도 15 a 및 도 15b 각각은 본 발명의 실시예에 따른 3-비트 연판정 옵셋들을 설명하기 위한 도면이다.
도 16은 본 발명의 실시예에 따른 데이터 디코딩 모드 변경 방법을 나타내는 플로우차트이다.
도 17은 플래시 메모리의 열화 지표에 따라 선택되는 디코딩 모드의 변화를 나타낸다.
도 18은 본 발명의 실시예에 따른 비휘발성 메모리 시스템을 포함하는 전자 시스템의 다른 실시 예를 나타낸다.
도 19는 본 발명의 실시예에 따른 비휘발성 메모리 시스템을 포함하는 전자 시스템의 또 다른 실시 예를 나타낸다.
도 20은 본 발명의 실시예에 따른 비휘발성 메모리 시스템을 포함하는 전자 시스템의 또 다른 실시 예를 나타낸다.
도 21은 본 발명의 실시예에 따른 비휘발성 메모리 시스템을 포함하는 전자 시스템의 또 다른 실시 예를 나타낸다.
본 명세서 또는 출원에 개시되어 있는 본 발명의 실시 예들에 대해서 특정한 구조적 내지 기능적 설명들은 단지 본 발명에 따른 실시 예를 설명하기 위한 목적으로 예시된 것으로, 본 발명에 따른 실시 예들은 다양한 형태로 실시될 수 있으며 본 명세서 또는 출원에 설명된 실시 예들에 한정되는 것으로 해석되어서는 아니 된다.
본 발명에 따른 실시 예는 다양한 변경을 가할 수 있고 여러 가지 형태를 가질 수 있으므로 특정실시 예들을 도면에 예시하고 본 명세서 또는 출원에 상세하게 설명하고자 한다. 그러나, 이는 본 발명의 개념에 따른 실시 예를 특정한 개시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다.
제1 및/또는 제2 등의 용어는 다양한 구성 요소들을 설명하는데 사용될 수 있지만, 상기 구성 요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성 요소를 다른 구성 요소로부터 구별하는 목적으로만, 예컨대 본 발명의 개념에 따른 권리 범위로부터 이탈되지 않은 채, 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소는 제1 구성요소로도 명명될 수 있다.
어떤 구성요소가 다른 구성요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다. 구성요소들 간의 관계를 설명하는 다른 표현들, 즉 "~사이에"와 "바로 ~사이에" 또는 "~에 이웃하는"과 "~에 직접 이웃하는" 등도 마찬가지로 해석되어야 한다.
본 명세서에서 사용한 용어는 단지 특정한 실시 예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, "포함하다" 또는 "가지다" 등의 용어는 설시된 특징, 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미이다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미인 것으로 해석되어야 하며, 본 명세서에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
이하, 첨부한 도면을 참조하여 본 발명의 바람직한 실시 예를 설명함으로써, 본 발명을 상세히 설명한다. 각 도면에 제시된 동일한 참조부호는 동일한 부재를 나타낸다.
경판정(Hard decision) 데이터와 연판정(soft decision) 데이터에 대하여 모두 디코딩이 가능한 ECC 디코더를 채용한 NAND 플래시 메모리 시스템의 경우에는 한가지 이상의 방법으로 낸드(NAND) 플래시 메모리에 저장된 데이터를 읽어들일 수 있다.
일반적인 경우에 NAND 플래시 메모리에서 독출한 경판정 데이터를 이용하여 오류정정을 수행하는 것 보다 연판정 데이터를 이용하여 오류정정을 수행하는 것이 플래시 메모리에서 읽은 데이터에 포함된 오류를 보다 많이 정정할 가능성이 있다.
그러나, NAND 플래시 메모리에서 연판정 데이터를 얻어내는 것은 경판정 데이터를 얻어내기 위해 NAND에서 수행되는 리드 타임(read time) 대비 더 많은 시간을 소비해야 되는 단점이 존재한다.
이는 NAND 플래시 메모리 시스템의 리드아웃(readout) 성능이 낮아지게 되는 주요 요인으로, 사용자가 기록한 데이터의 신뢰성은 높아질 수 있으나 사용자가 데이터를 요청하였을 경우 처리되는 시간이 길어져 제품의 경쟁력이 떨어져 문제가 될 수 있다.
도 1은 본 발명의 일 실시예에 따른 전자 시스템의 개략적인 구성 블록도이다. 도 2는 도 1에 도시된 메모리 컨트롤러의 구성 블록도이다.
도 1을 참조하면, 전자 시스템(1)은 호스트(10)와 비휘발성 메모리 시스템(20)을 포함한다. 호스트(10)와 연결되는 비휘발성 메모리 시스템(20)은 메모리 컨트롤러(100) 및 비휘발성 메모리 장치(200)를 포함한다.
본 발명의 실시예에 따른 비휘발성 메모리 시스템(20)은 솔리드 스테이트 드라이브(Solid State Drive, 이하 'SSD'라 함), MMC(Multimedia card), eMMC(embedded Multimedia card) 또는 SD(secure digital) 카드일 수 있으나, 이에 한정되지 않는다. 또한, 비휘발성 메모리 장치(200)는 플래시 메모리 장치일 수 있으나, 이에 한정되지 않으며, PRAM, MRAM, ReRAM, 또는 FeRAM 장치일 수 있다. 비휘발성 메모리 장치(200)가 플래시 메모리 장치인 경우, 플로팅 게이트 방식의 NAND 플래시 메모리 장치 또는 CTF(Charge Trap Flash) 방식의 NAND 플래시 메모리 장치일 수 있다. 비휘발성 메모리 장치(200)의 메모리 셀 트랜지스터들은 2차원적으로 배열된 구조를 가질 수도 있고, 또는 3차원적으로 배열된 구조를 가질 수도 있다. 이에 대해서는 자세히 후술하기로 한다.
컨트롤러(100)는 메모리 시스템(20)의 동작을 전반적으로 제어하며, 또한 호스트(10)와 비휘발성 메모리 장치(200) 간의 제반 데이터 교환을 제어한다. 예컨대, 컨트롤러(100)는 호스트(10)의 요청에 따라 비휘발성 메모리 장치(200)를 제어하여 데이터를 쓰거나 데이터를 독출한다. 또한, 컨트롤러(100)는 비휘발성 메모리 장치(200)의 특성이나 비휘발성 메모리 장치(200)의 효율적인 관리를 위하여 필요한 일련의 내부 동작(예컨대, 성능 조절, 머지, 웨어 레벨링 등)을 제어한다.
비휘발성 메모리 장치(200)는 데이터를 비휘발적으로 저장하기 위한 저장 장소로서, OS(Operating System), 각종 프로그램들, 및 각종 데이터를 저장할 수 있다.
도 2를 참조하여 컨트롤러(100)의 구성을 보다 세부적으로 살펴보면, 컨트롤러(100)는 버퍼 메모리(110), CPU(120), 호스트 인터페이스(130), 메모리 인터페이스(140), ECC 블록(에러 정정 블록, 150) 및 버스(160)를 포함할 수 있다.
버퍼 메모리(110)는 휘발성 메모리로서, 예컨대 SRAM, DRAM 등일 수 있으나, 이에 한정되지 않는다. 버퍼 메모리(110)는 비휘발성 메모리 장치(200)에 저장될 데이터 및 비휘발성 메모리 장치(200)로부터 독출된 데이터를 일시적으로 저장하는 버퍼 역할을 수행한다. 본 실시예에서는, 버퍼 메모리(110)가 컨트롤러(100)의 내부에 구현되나 이에 한정되지 않으며, 컨트롤러(100)의 외부에 구현될 수도 있다.
호스트 인터페이스(130)는 호스트와 통신하기 위하여 인터페이스 프로토콜을 구비한다. 호스트와의 인터페이스 프로토콜은 UHS(UHS-I 또는 UHS-II), PCI-E(peripheral component interconnect - express), ATA(Advanced Technology Attachment), SATA(serial ATA), PATA(parallel ATA), 또는 SAS(serial attached SCSI)와 같은 인터페이스 프로토콜일 수 있다. 그러나, 호스트(10)와 메모리 시스템(20)간의 인터페이스 프로토콜들은 상술한 예에 한정되지 않으며, USB(Universal Serial Bus), MMC(multi-media card), ESDI(enhanced small disk interface), 또는 IDE(Integrated Drive Electronics) 등과 같은 다른 인터페이스 프로토콜들 중 하나일 수 있다.
비휘발성 메모리 인터페이스(140)는 비휘발성 메모리 장치(200)와 메모리 컨트롤러(100) 사이에서 데이터의 교환을 인터페이스할 수 있다.
CPU(120)는 비휘발성 메모리 장치(200)로/로부터 데이터 기록/독출을 위한 제반 제어 동작을 수행한다. CPU(120)는 버스(160)를 통하여 버퍼 메모리(110), 호스트 인터페이스(130), ECC 블록(150), 및 비휘발성 메모리 인터페이스(140) 사이에서 데이터의 교환을 제어할 수 있다. CPU(120)는 또한, FTL(Flash Translation Layer)을 구동할 수 있다.
ECC(error correction code) 블록(150)은 비휘발성 메모리 장치(200)에 저장될 데이터를 인코딩하고 비휘발성 메모리 장치(200)로부터 읽혀진 데이터를 디코딩함으로써 독출된 데이터에 포함된 에러를 검출하고 정정할 수 있다. 즉, ECC 블록(150)은 비휘발성 메모리 장치(200)에 저장될 데이터를 인코딩하는 ECC 인코더(151) 및 비휘발성 메모리 장치(200)로부터 독출한 데이터를 디코딩하는 ECC 디코더(152)를 포함할 수 있다.
ECC 디코더(152)는 비휘발성 메모리 장치(200)로부터 독출한 경판정(hard decision) 데이터를 이용하여 경판정 디코딩을 수행할 수 있다. ECC 디코더(152)는 또한, 비휘발성 메모리 장치(200)로부터 독출한 연판정(soft decision) 데이터를 이용하여 연판정 디코딩을 수행할 수도 있다. 실시예에 따라, 경판정 디코딩을 수행하는 디코더 엔진과 연판정 디코딩을 수행하는 디코더 엔진이 각각 별도로 구현될 수도 있고, 하나로 구현될 수도 있다.
비록 도면에는 도시되지 않았지만, 비휘발성 메모리 시스템(20)은 메모리 시스템(20)의 파워-온(power-on)시 실행되는 코드 데이터를 저장하는 ROM(read only memory), 클럭 신호를 발생하는 클럭 모듈, 타이머 등의 구성요소를 더 구비할 수 있다.
도 3은 본 발명의 실시예에 따른 비휘발성 메모리 시스템(20A)의 구조를 개략적으로 나타내는 도면이다.
이를 참조하면, 컨트롤러(100A)는 낸드 플래시 컨트롤러일 수 있고, 비휘발성 메모리 장치(200A)는 다수의 낸드 플래시 메모리 소자들(200-1~200-4, 201-1~201-4)을 포함할 수 있다. 도 3에는 2-채널(2-channel)/ 4-뱅크(4-bank) 방식의 하드웨어 구조를 갖는 비휘발성 메모리 시스템(20A)이 예시적으로 도시되나, 본 발명이 이에 한정되는 것은 아니다. 각 낸드 플래시 메모리 소자는 낸드 플래시 칩으로 구현될 수 있다.
도 3에 도시된 비휘발성 메모리 시스템(10A)에서, 컨트롤러(100A)와 비휘발성 메모리 장치(200A)는 2개의 채널(Channel 0, Channel 1)로 연결되며, 각 채널에는 4개의 플래시 메모리 소자들 연결되는 구조이다. 예컨대, 제1 채널(Channel 0)에는 4개의 플래시 메모리 소자들(200-1~200-4)이 연결되고, 제2 채널(Channel 1)에는 4개의 플래시 메모리 소자들(201-1~201-4)이 연결된다. 동일한 채널에 연결된 플래시 메모리 소자들은 I/O 버스와 컨트롤 신호를 공유한다. 채널의 수 및 뱅크의 수는 상술한 예에 한정되지 않고 변경될 수 있음은 당연하다.
도 4는 본 발명의 실시예에 따른 비휘발성 메모리 시스템(1A)의 계층적인 구조를 나타내는 도면이다.
호스트 시스템(10A)은 OS(operating system)과 OS 상에서 동작하는 응용 프로그램(Applicaion1~ApplicationN)을 포함할 수 있다. 플래시 컨트롤러(100A)는 FTL(Flash Translation Layer, 170)과 로우 레벨 드라이버(140A)를 포함할 수 있다. 메모리 장치 드라이버(140A)는 도 2에 도시된 메모리 인터페이스(140) 또는 그 일부일 수 있다.
FTL(170)은 플래시 메모리 장치(200A)를 관리하기 위한 소프트웨어 계층이다. FTL(170)은 호스트(10A)와 메모리 장치 드라이버(140A) 사이에 위치하여 파일 시스템의 수정 없이 플래시 메모리(200A)를 사용할 수 있도록 한다. FTL(170)은 주소 매핑 테이블을 이용하여 파일시스템의 논리적 주소와 플래시 메모리(200A)의 물리적 주소를 연결하는 논리-물리 주소 매핑 기능, 플래시 메모리(200A)의 블록 내의 유효한 페이지를 관리하기 위한 가비지 콜렉션(garbage collection) 기능, 블록들의 삭제 가능 횟수를 최대한 비슷하게 관리하여 특정 블록이 빨리 수명이 닳아 사용하지 못하는 상황이 발생하지 않도록 하는 웨어 레벨링(wear-leveling) 기능, 인터리링(interleaving) 기능 및 갑작스런 전원 차단에 대한 데이터 손상을 복구할 수 있는 파워-오프 복구 기능 등을 수행할 수 있다.
LLD(140A)는 플래시 메모리(200A)에 직접 접근할 수 있도록 낸드 플래시 인터페이스를 제공하는 계층이다.
도 5는 본 발명의 일 실시예에 따른 비휘발성 메모리 소자를 구체적으로 나타낸 블록도이다. 도 6은 도 5에 도시된 메모리 셀 어레이를 구체적으로 나타낸 일실시예이고, 도 7은 도 5에 도시된 메모리 셀 어레이를 구체적으로 나타낸 다른 실시예이다.
도 5를 참조하면, 비휘발성 메모리 소자(200-1)는 메모리 셀 어레이(210)와 액세스 회로(212)를 포함한다.
메모리 셀 어레이(210)는 각 비트라인에 접속된 각 NAND 메모리 셀 스트링을 포함하고, 상기 각 NAND 메모리 셀 스트링은 직렬로 접속된 다수의 비휘발성 메모리 셀들을 포함한다. 각 NAND 메모리 셀 스트링은 도 6에 도시된 바와 같이, 2차원적으로 동일한 평면(또는 레이어(layer))에 배치(또는 구현)될 수 있다. 실시예에 따라, 메모리 셀 어레이(210)는 웨이퍼 적층(wafer stack), 칩 적층(chip stack) 또는 셀 적층(cell stack)을 통하여 도 7에 도시된 바와 같이 3차원적으로 구현될 수 있다.
도 5 내지 도 7을 참조하면, NAND 메모리 셀 스트링은 비트라인에 접속된 스트링 선택 트랜지스터(ST1)와 공통소스라인(Common Source Line; CSL)에 접속된 접지 선택 트랜지스터(ST2) 사이에, 직렬로 접속된 다수의 비휘발성 메모리 셀들을 포함한다.
상기 스트링 선택 트랜지스터(ST1)의 게이트는 스트링 선택 라인(string selection line ; SSL)에 접속되고, 다수의 비휘발성 메모리 셀들 각각의 게이트는 다수의 워드라인들 각각에 접속되고, 상기 접지 선택 트랜지스터(ST2)의 게이트는 접지 선택 라인(ground selection line; GSL)에 접속된다. 상기 NAND 메모리 셀 스트링 각각은 각 페이지 버퍼(도 6의 221-11 내지 221-1m 또는 도 7의 221-1 내지 221-m)에 연결된다. 이때 실시예에 따라 워드라인들의 개수는 다양하게 구현될 수 있다.
각 NAND 메모리 셀 스트링에 포함된 다수의 비휘발성 메모리 셀들 각각은 1 비트 이상을 저장할 수 있는 플래시 EEPROM(Electrically Erasable Programmable Read-Only Memory)으로 구현될 수 있다.
따라서 다수의 비휘발성 메모리 셀들 각각은 1비트 이상을 저장할 수 있는 NAND 플래시 메모리 셀, 예컨대 MLC(Multi-Level Cell)로 구현될 수 있다.
액세스 회로(212)는 외부, 예컨대 메모리 컨트롤러(100)로부터 출력된 명령 (또는 명령 세트들(command sets))과 어드레스에 따라 데이터 액세스 동작, 예컨대 프로그램 동작, 리드 동작, 또는 이레이즈 동작을 수행하기 위하여 메모리 셀 어레이(210)를 액세스한다. 액세스 회로(212)는 전압 발생기(240), 로우 디코더(250), 컨트롤 로직(260), 컬럼 디코더(270), 페이지 버퍼 & 감지 증폭기 블록(220), Y 게이팅 회로(230) 및 입출력 블록(280)을 포함할 수 있다.
전압 발생기(240)는 컨트롤 로직(260)에 의해 생성된 제어 코드(CMD)에 따라 데이터 액세스 동작에 필요한 전압을 생성할 수 있다. 전압 발생기(240)는 프로그램 동작을 수행하기 위해 필요한 프로그램 전압과 프로그램 검증 전압을 생성하고, 리드 동작을 수행하기 위하여 필요한 리드 전압들을 생성하고, 이레이즈 동작을 수행하기 위하여 필요한 이레이즈 전압과 이레이즈 검증 전압을 생성하고, 각 동작을 수행하기 위하여 필요한 전압을 로우 디코더(250)로 출력한다. 리드 전압은 경판정 데이터(hard decision data)를 얻기 위한 경판정 리드 전압 및 연판정 데이터(soft decision data)를 얻기 위한 연판정 리드 전압을 포함한다. 경판정 리드 전압 및 연판정 리드 전압에 대해서는 후술한다.
컨트롤 로직(260)은 메모리 컨트롤러(100)로부터 출력된 제어신호(CMD)에 따라 액세스 회로(212)의 전반적인 동작을 제어한다. 예컨대, 컨트롤 로직(260)은 메모리 리드 동작 동안 메모리 리드 상태 정보를 센싱하고, 리드 데이터를 메모리 컨트롤러(100)로 출력하도록 제어할 수 있다.
컬럼 디코더(270)는 컨트롤 로직(260)의 제어 하에 컬럼 어드레스(YADD)들을 디코딩하여 다수의 선택신호들을 Y 게이팅 회로(230)로 출력한다.
페이지 버퍼 & 감지 증폭기 블록(220)은 다수의 페이지 버퍼(Page Buffer; PB)들을 포함한다. 다수의 페이지 버퍼들(PB) 각각은 다수의 비트라인들 각각에 접속된다.
다수의 페이지 버퍼들(PB) 각각은 컨트롤 로직(260)의 제어에 따라 리드 동작 동안에 다수의 비트라인들 각각의 전압 레벨을 감지 증폭할 수 있는 감지 증폭할 수 있는 감지 증폭기로써 동작할 수 있다. 또한 다수의 페이지 버퍼들(PB) 각각은 감지 증폭한 데이터, 즉 메모리 셀 어레이(210)에서 리드(read)된 데이터(이하, 리드 데이터)를 임시로 저장하기 위한 래치로써 동작할 수 있다. 리드 데이터는 경판정 데이터일 수도 있고, 연판정 데이터일 수도 있다. 다수의 페이지 버퍼들(PB) 각각은 경판정 데이터를 저장하기 위한 버퍼와 연판정 데이터를 저장하기 위한 버퍼를 별도로 구비할 수도 있고, 공유할 수도 있다.
Y 게이팅 회로(230)는 컬럼 디코더(270)로부터 출력된 다수의 선택신호들에 응답하여 페이지 버퍼 & 감지 증폭기 블록(220)과 입출력 블록(280) 사이에서 데이터(DATA)의 전송을 제어할 수 있다.
입출력 블록(280)은 외부로부터 입력된 데이터(DATA)를 Y 게이팅 회로(230)로 전송하거나 또는 Y 게이팅 회로(230)로부터 출력된 데이터(DATA)를 다수의 입출력 핀들(또는 데이터 버스)를 통하여 메모리 컨트롤러(100)로 전송할 수 있다.
도 8은 본 발명의 실시예에 따른 데이터 디코딩 방법을 나타내는 플로우챠트이다. 본 발명의 실시예에 따른 데이터 디코딩 방법은 도 1에 도시된 메모리 시스템(200)에서 수행될 수 있다. 이를 참조하면, 본 발명의 실시예에 따른 데이터 디코딩 방법은 복수(2이상)의 디코딩 단계들을 포함한다. 먼저, 플래시 메모리(200)로부터 경판정 데이터를 독출하고, 독출된 경판정 데이터를 이용하여 디코딩하는 제1 디코딩 단계를 수행한다(S10).
플래시 메모리 시스템(20)에서는 경판정(hard decision) 데이터를 얻기 위해 소요되는 시간이 연판정(soft decision) 데이터를 얻어내는 시간보다 짧다. 다만 연판정 데이터를 이용하여 디코딩을 수행하는 것보다 오류정정 능력은 떨어지게 된다. 그러나, 플래시 메모리 시스템(20)의 사용 초기에는 대부분 데이터 독출시 오류가 적기 때문에 경판정 데이터만 사용하여 디코딩을 수행하여도 충분할 수 있다. 따라서 플래시 메모리 시스템(20)에서의 독출 성능을 최대한 높일 수 있다.
제1 디코딩 단계(S10)에서 독출 데이터를 복구하지 못하였을 경우 다음 단계(즉, 제2 디코딩 단계)로 이동하여 데이터를 복구하도록 시도한다.
제2 디코딩 단계(S20)는 연판정 데이터(soft decision data)를 독출하고, 독출된 연판정 데이터를 이용하여 디코딩하는 단계이다.
제2 디코딩 단계(S20)는 제1 디코딩 단계(S10)에 대비하여 추가로 독출 동작이 수행되는 단계이다. 그러므로 제2 디코딩 단계(S20)에서 데이터를 복구하기 위한 시간은 제1 디코딩 단계(S10)에 비해 더 길다. 그러나, 오류 정정 관점으로 보면 제1 디코딩 단계(S10)보다 오류를 보다 많이 정정할 수 있게 된다.
제3 디코딩 단계(S30)는 플래시 메모리 시스템(20)이 더 열화되어 제2 디코딩 단계(S20)에서도 복구하지 못할 정도의 오류가 포함된 경우에 진입되는 단계이다.
제3 디코딩 단계(S30)는 경판정 리드 레벨을 새롭게 변경하고, 변경된 경판정 리드 레벨, 즉 새로운 경판정 리드 레벨을 이용하여 독출한 경판정 데이터를 이용하여 디코딩하는 단계이다. 제3 디코딩 단계(S30)에서는, 이전 단계(예컨대, 제2 디코딩 단계)에서 독출한 데이터를 재사용할 수 있다. 예컨대, 제3 디코딩 단계(S30)에서는 새로운 경판정 리드 레벨을 이용하여 독출한 경판정 데이터와 제2 디코딩 단계(S20)에서 기 독출한 연판정 데이터를 함께 이용하여 디코딩을 수행할 수 있다. 새로운 경판정 리드 레벨을 찾기 위하여, 미리 정해진 리드 레벨 트래킹(예컨대, 코오스 리드 레벨 트래킹(coarse read level tracking) 및 파인 리드 레벨 트래킹(fine read level tracking) 중 적어도 하나) 기법이 사용될 수 있다.
이와 같이, 본 발명의 실시예에 따르면, 다음 단계로 갈수록 독출 수행 시간은 증가하지만 오류정정 능력은 더 높은 복수(2이상)의 디코딩 단계들을 포함한다. 또한, 본 발명의 실시예에 따르면, 각 단계별 디코딩을 시도할 경우 이전 단계에서 독출하였던 데이터의 적어도 일부를 재사용하고, 리드 레벨 트래킹(read level tracking)을 수행할 경우 리드 레벨을 찾기 위하여 추가 독출 동작을 수행하는 것이 아니라 이전 독출 데이터의 적어도 일부를 사용하여 리드 레벨을 추정할 수 있다. 이에 따라, 디코딩 단계가 진행될수록 증가하는 소요 시간을 줄여줌으로써, 리드아웃 성능 감소를 줄일 수 있다.
상기와 같이 단계별 디코딩을 수행함으로써, 플래시 메모리 시스템(20)의 초기 수명구간에서 리드 데이터의 오류가 적을 경우 빠른 리드아웃 성능을 유지하고 오류가 점차 증가할 경우에도 리드아웃 성능 감소를 최소로 유지할 수 있다.
도 9a내지 도 9m은 각각 본 발명의 실시예에 따른 데이터 디코딩 방법을 나타내는 플로우챠트이다. 도 9a내지 도 9m에 도시된 본 발명의 실시예에 따른 데이터 디코딩 방법은 도 1에 도시된 메모리 시스템(200)에서 수행될 수 있다.
먼저, 도 9a를 참조하면, 제1 및 제2 디코딩 단계(S100 및 S200)은 도 8에 도시된 제1 및 제2 디코딩 단계(S10 및 S20)와 동일하므로, 이에 대한 설명은 생략한다.
도 9a의 S300 및 S350 단계는 도 8의 제3 디코딩 단계(S30)의 일 실시예이므로, 설명의 편의상 제3-1 단계(S300), 제 3-2 단계(S350)라 칭한다.
도 9a의 실시예에서, 제3-1 디코딩 단계(S300)에서는 코오스 리드 레벨 트래킹 기법을 사용하여 경판정 리드 레벨을 새롭게 변경하고, 변경된 경판정 리드 레벨, 즉 새로운 경판정 리드 레벨을 이용하여 독출한 경판정 데이터를 이용하여 디코딩할 수 있다. 이 때, 제3-1 디코딩 단계(S300)에서 독출한 경판정 데이터와 제2 디코딩 단계(S200)에서 기 독출한 연판정 데이터를 함께 이용하여 디코딩을 수행할 수 있다.
리드 레벨 트래킹 기법은 플래시 메모리에 기록된 산포가 초기 산포로부터 변화되었을 경우 변화된 산포에서 데이터 독출 오류를 줄이기 위한 리드 레벨을 찾는 방법이다. 따라서, 플래시 메모리로부터 데이터를 독출하는 과정에서 리드 레벨 트래킹 기법을 이용하여 새롭게 얻은 경판정 리드 레벨을 적용하면 독출된 데이터는 이전 독출 데이터의 오류의 양보다 적은 데이터 오류를 기대할 수 있다.
제 3-1 디코딩 단계(S300)에서 새로운 경판정 데이터를 사용하여 디코딩을 수행한 결과 디코딩 실패로 판단된 경우, 새로운 경판정 리드 레벨을 기준으로 연판정 리드를 수행하여 새로운 연판정 데이터를 독출 할 수 있다(S350). 이렇게 얻은 연판정 데이터를 사용하여 연판정 디코딩을 수행하는 과정(S350)을 통하여 보다 많은 오류를 복구할 수 있게 된다.
도 9b는 본 발명의 다른 실시예에 따른 데이터 디코딩 방법을 나타내는 플로우챠트이다. 도 9b에 도시된 본 발명의 다른 실시예에 따른 데이터 디코딩 방법은 도 9a에 도시된 데이터 디코딩 방법에 비하여 제4 디코딩 단계(S400 및 S450)를 더 포함한다. 제4 디코딩 단계(S400 및 S450)는 제3 디코딩 단계(S300 및 S350)와 유사하게 경판정 리드 레벨을 변경하고, 변경된 경판정 리드 레벨, 즉 새로운 경판정 리드 레벨을 이용하여 독출한 데이터를 이용하여 디코딩한다. 다만, 제4 디코딩 단계(S400 및 S450)에서 새로운 경판정 리드 레벨을 찾기 위하여 사용하는 리드 레벨 트래킹(예컨대, 파인 리드 레벨 트래킹) 기법은 제3 디코딩 단계(S300 및 S350)에서 새로운 경판정 리드 레벨을 찾기 위하여 사용하는 리드 레벨 트래킹(예컨대, 코오스 리드 레벨 트래킹) 기법과 다르다.
파인 리드 레벨 트래킹 기법은 고차(예컨대, 2차 혹은 3차) regression 방법을 이용할 수 있으나, 이에 한정되는 것은 아니다.
도 9c는 본 발명의 다른 실시예에 따른 데이터 디코딩 방법을 나타내는 플로우챠트이다. 도 9c에 도시된 본 발명의 다른 실시예에 따른 데이터 디코딩 방법은 도 9b에 도시된 데이터 디코딩 방법에 비하여 제5 디코딩 단계(S500)를 더 포함한다.
제5 디코딩 단계(S500)는 연판정 디코딩 파라미터들을 변경하여 연판정 디코딩을 수행한다. 일 실시예에 따르면, 연판정 디코딩을 수행하는 ECC 디코더의 파라미터들을 변경하여, 디코딩을 수행한다. 예를 들어, ECC 디코더는 N-비트 양자화 레벨(quantization level)로 동작되는 디코더일 수 있다. 이 경우, 양자화 레벨(quantization level)을 순차적으로 증가시키면서 연판정 디코딩을 수행할 수 있다. 양자화 레벨의 증가는 연판정을 위한 리드 레벨의 개수 증가를 의미한다. 이러한 양자화 레벨의 증가는 플래시 메모리로부터 데이터를 읽는 경우, 보다 많은 연판정 데이터를 얻어낼 수 있어 연판정 디코딩의 오류정정 능력을 증가시킬 수 있다.
제 5 디코딩 단계(S500)에서의 또 다른 실시예로 플래시 메모리의 특정 열화 산포에 해당하는 다양한 연판정 옵셋 세트를 준비하고 디코딩이 성공할 때까지 매 디코딩 과정에서 연판정 옵셋을 변경하여 연판정 데이터를 독출하는 과정을 수행 할 수 있다. 플래시 메모리의 모든 산포 열화에 대하여 단 하나의 연판정 옵셋을 적용하는 경우보다 특정 산포에 최적화 된 연판정 옵셋을 적용하는 것이 디코딩 시 오류정정 능력을 증가 시킬 수 있는 방법이다.
도 9d는 본 발명의 또 다른 실시예에 따른 데이터 디코딩 방법을 나타내는 플로우챠트이다. 도 9d에 도시된 본 발명의 다른 실시예에 따른 데이터 디코딩 방법은 도 9a에 도시된 데이터 디코딩 방법에 비하여 S150 단계를 더 포함한다. S150 단계에서는, 이전의 디코딩 성공시의 경판정 리드 레벨을 적용하여 경판정 데이터를 얻어낸 후 경판정 디코딩을 수행한다.
S100 단계에서는, 기본(기준) 리드 레벨을 적용하여 경판정 데이터를 둑출하고 이를 이용하여 경판정 디코딩을 수행할 수 있다.
S150 단계에서는 새롭게 경판정 데이터를 얻기 위해 S100 단계에서 적용된 기본(기준) 리드 레벨이 아닌 새로운 경판정 리드 레벨을 적용해야 한다. S150 단계에서는 이러한 새로운 경판정 리드 레벨을 이전 디코딩 성공시 적용되었던 경판정 리드 레벨로 적용하는 방법을 사용한다. 이전 디코딩 성공시 적용된 리드 레벨은 플래시 메모리의 전 영역에 대하여 가장 최근 디코딩 성공시의 경판정 리드 레벨일 수 도 있고, 각 데이터 블록에 대하여 디코딩 성공시 하나의 경판정 리드 레벨을 저장하여 사용할 수 도 있다. 다른 실시예에서는 각 페이지에 대하여 디코딩 성공시의 경판정 리드 레벨을 적용할 수 도 있을 것이다.
이를 위하여 플래시 메모리 전체에 대해서, 또는 영역(예컨대, 데이터 블록, 페이지 등)별로 디코딩 성공시의 경판정 리드 레벨이 메모리 컨트롤러에 의해 관리될 수 있다.
도 9e는 본 발명의 또 다른 실시예에 따른 데이터 디코딩 방법을 나타내는 플로우챠트이다. 도 9e에 도시된 본 발명의 다른 실시예에 따른 데이터 디코딩 방법은 도 9a에 도시된 데이터 디코딩 방법에 비하여 S160 단계를 더 포함한다.
S160 단계에서는, 미리 정해진 하나 이상의 경판정 리드 레벨 중에서 하나를 적용하여 경판정 데이터를 얻어내고, 이렇게 얻어진 경판정 데이터를 사용하여 경판정 디코딩을 수행할 수 있다. 미리 정해진 하나 이상의 경판정 리드 레벨은 플래시 메모리의 대표적인(예컨대, 가장 일반적이며 많이 발생되는) 산포 열화 정도에 따라 설정될 수 있다.
즉, S160단계에서, 새로운 경판정 리드 레벨은 사전에 플래시 메모리의 테스트를 통하여 가장 많이 발생되는 열화 상황들에 맞는 특정 경판정 리드 레벨들을 설정해 두고, 미리 설정된 경판정 리드 레벨 리스트 중에서 하나를 적용한다. 경판정 리드 레벨 리스트 개수는 1개 이상으로 특정한 개수로 한정되지는 않는다.
연판정 데이터를 얻어내기 위해서는 경판정 데이터를 얻어내는 경우 보다 많은 수의 리드 회수가 필요하게 된다. 따라서, S100단계에서의 기본(기준) 경판정 리드 레벨로 얻어진 경판정 데이터를 사용한 디코딩이 실패하였을 경우, S200단계, 즉 추가적인 리드를 수행하여 연판정 데이터를 얻어내는 단계로 가기 전에 도 9d의 S150 단계나 도 9e의 S160 단계를 통해 경판정 리드 레벨을 변경하여 데이터 독출시의 리드 회수가 연판정 데이터를 얻는 경우보다 적은 경판정 데이터를 독출하여 디코딩을 수행하는 것이 보다 효과적으로 디코딩 시간을 줄일 수도 있다.
도 9f는 본 발명의 또 다른 실시예에 따른 데이터 디코딩 방법을 나타내는 플로우챠트이다. 도 9f에 도시된 데이터 디코딩 방법은 도 9d에 도시된 데이터 디코딩 방법에 비하여 S160 단계를 더 포함한다.
즉, 도 9f에 도시된 데이터 디코딩 방법은 제1 디코딩 단계(S100)과 제2 디코딩 단계(S200) 사이에 도 9d 및 도 9e에 도시된 S150 단계 및 S160 단계가 삽입될 수 있다.
따라서, 도 9f에 도시된 데이터 디코딩 방법에 따르면, 제1 디코딩 단계(S100)에서의 디코딩이 실패하면, 이전 디코딩 성공시 적용되었던 경판정 리드 레벨을 적용하여 새로운 경판정 데이터를 독출하고, 독출된 경판정 데이터를 이용하여 경판정 디코딩을 수행할 수 있다(S150). S150 단계에서의 디코딩이 실패하면, 미리 정해진 하나 이상의 경판정 리드 레벨을 이용하여 새로운 경판정 데이터를 독출하고 독출된 경판정 데이터를 이용하여 경판정 디코딩을 수행할 수 있다(S160). S160 단계에서의 디코딩이 실패하면, 제2 디코딩 단계(S200)를 수행할 수 있다.
도 9g는 본 발명의 또 다른 실시예에 따른 데이터 디코딩 방법을 나타내는 플로우챠트이다. 도 9g에 도시된 데이터 디코딩 방법은 도 9b에 도시된 데이터 디코딩 방법에 비하여 S150 및 S160 단계를 더 포함한다.
즉, 도 9g에 도시된 데이터 디코딩 방법은 도 9f에 도시된 데이터 디코딩 방법과 마찬가지로, 제1 디코딩 단계(S100)과 제2 디코딩 단계(S200) 사이에 S150 단계 및 S160 단계가 삽입될 수 있다.
도 9h는 본 발명의 또 다른 실시예에 따른 데이터 디코딩 방법을 나타내는 플로우챠트이다. 도 9h에 도시된 데이터 디코딩 방법은 도 9c에 도시된 데이터 디코딩 방법에 비하여 S150 및 S160 단계를 더 포함한다.
즉, 도 9h에 도시된 데이터 디코딩 방법은 도 9f 및 도 9g에 도시된 데이터 디코딩 방법과 마찬가지로, 제1 디코딩 단계(S100)과 제2 디코딩 단계(S200) 사이에 S150 단계 및 S160 단계가 삽입될 수 있다.
도 9i는 본 발명의 또 다른 실시예에 따른 데이터 디코딩 방법을 나타내는 플로우챠트이다. 도 9i에 도시된 데이터 디코딩 방법은 도 9a에 도시된 데이터 디코딩 방법에 비하여 S250 단계를 더 포함한다.
도 9i에 도시된 데이터 디코딩 방법에 따르면, 제2디코딩 단계(S200) 이후에, 이전의 디코딩 성공시의 경판정 리드 레벨을 적용하여 경판정 데이터를 얻어낸 후 경판정 디코딩을 수행하고, 디코딩 실패의 경우 추가로 연판정 데이터를 독출하고 연판정 디코딩을 수행할 수 있다(S250).
S250 단계는 상술한 S150 단계와 유사하나, S200 단계 이후에 수행된다는 점에서 차이가 있을 수 있다. 또한, S150 단계에서 적용되는 이전 디코딩 성공시 적용되었던 리드 레벨은 경판정 리드 레벨을 포함할 수 있고, 경판정 리드 레벨과 연판정 리드 레벨 (혹은 연판정 옵셋)의 쌍을 포함할 수도 있다.
S250 단계에서의 다른 실시 예로, 경판정 디코딩 수행 이후에 디코딩 실패시 추가로 연판정 디코딩을 수행하는 방식이 아니라 이전 디코딩 성공시 적용된 리드 레벨(경판정 및 연판정 리드 레벨)을 적용하여 경판정 및 연판정 데이터를 독출하고 연판정 디코딩만을 수행할 수도 있다.
S250 단계에서 적용되는 새로운 리드 레벨은 이전 디코딩 성공시 적용되었던 경판정 리드 레벨 및 연판정 리드 레벨을 저장하여 사용한다. 이전 디코딩 성공시 적용된 경판정 및 연판정 리드 레벨은 플래시 메모리의 전 영역에 대하여 가장 최근 디코딩 성공시의 경판정 및 연판정 리드 레벨일 수 도 있고, 각 데이터 블록에 대하여 디코딩이 성공한 하나의 경판정 및 연판정 리드 레벨을 저장하여 사용할 수 도 있다. 다른 실시예에서는 각 페이지에 대하여 디코딩 성공시의 경판정 및 연판정 리드 레벨을 적용할 수 도 있을 것이다.
이를 위하여 플래시 메모리 전체에 대해서, 또는 영역(예컨대, 데이터 블록, 페이지 등)별로 디코딩 성공시의 경판정 및 연판정 리드 레벨이 메모리 컨트롤러에 의해 관리될 수 있다.
도 9j는 본 발명의 또 다른 실시예에 따른 데이터 디코딩 방법을 나타내는 플로우챠트이다. 도 9j에 도시된 데이터 디코딩 방법은 도 9a에 도시된 데이터 디코딩 방법에 비하여 S260 단계를 더 포함한다.
도 9j에 도시된 데이터 디코딩 방법에 따르면, 제2디코딩 단계(S200) 이후에, 미리 정해진 하나 이상의 경판정 리드 레벨 중에서 하나를 적용하여 경판정 데이터를 얻어내고, 이렇게 얻어진 경판정 데이터를 사용하여 경판정 디코딩을 수행하고, 경판정 디코딩 실패시 추가로 연판정 데이터를 독출하여 연판정 디코딩을 수행할 수 있다(S260).
S260 단계에서 적용되는 미리 설정된 하나 이상의 리드 레벨은 하나 이상의 경판정 리드 레벨을 포함할 수 있고, 경판정 리드 레벨과 연판정 리드 레벨(혹은 연판정 옵셋)의 쌍을 포함할 수도 있다.
미리 설정된 리드 레벨은 사전에 플래시 메모리의 테스트를 통하여 가장 많이 발생되는 열화 상황들에 따라 결정될 수 있다.
S260 단계는 상술한 S160 단계와 유사하나, S200 단계 이후에 수행된다는 점에서 차이가 있을 수 있다.
S260 단계에서의 다른 실시 예로, 경판정 디코딩 수행 이후에 디코딩 실패시 추가로 연판정 디코딩을 수행하는 방식이 아니라 미리 정해진 경판정 리드 레벨과 쌍으로 이루어진 연판정 리드 레벨(혹은 연판전 옵셋)을 적용하여 경판정 및 연판정 데이터를 독출하고 연판정 디코딩만을 수행 할 수도 있다.
도 9k는 본 발명의 또 다른 실시예에 따른 데이터 디코딩 방법을 나타내는 플로우챠트이다. 도 9k에 도시된 데이터 디코딩 방법은 도 9i에 도시된 데이터 디코딩 방법에 비하여 S260 단계를 더 포함한다.
즉, 도 9k에 도시된 데이터 디코딩 방법은 제2 디코딩 단계(S200)과 제3-1 디코딩 단계(S300) 사이에 도 9i 및 도 9j에 도시된 S250 단계 및 S260 단계가 삽입될 수 있다.
따라서, 도 9k에 도시된 데이터 디코딩 방법에 따르면, 제2 디코딩 단계(S200)에서의 디코딩이 실패하면, 이전 디코딩 성공시 적용되었던 경판정 리드 레벨을 적용하여 새로운 경판정 데이터를 독출하고, 독출된 경판정 데이터를 이용하여 경판정 디코딩을 수행하고, 경판정 디코딩이 실패할 경우 추가로 연판정 리드 레벨을 적용하여 연판정 디코딩을 수행할 수 있다(S250). S250 단계에서의 디코딩이 실패하면, 미리 정해진 하나 이상의 경판정 리드 레벨을 이용하여 새로운 경판정 데이터를 독출하고 독출된 경판정 데이터를 이용하여 경판정 디코딩을 수행하며, 경판정 디코딩 실패시 추가로 연판정 데이터를 독출하여 연판정 디코딩을 수행할 수 있다(S260). S260 단계에서의 디코딩이 실패하면, 제3-1 디코딩 단계(S300)를 수행할 수 있다.
도 9l은 본 발명의 또 다른 실시예에 따른 데이터 디코딩 방법을 나타내는 플로우챠트이다. 도 9l에 도시된 데이터 디코딩 방법은 도 9b에 도시된 데이터 디코딩 방법에 비하여 S250 및 S260 단계를 더 포함한다.
즉, 도 9l에 도시된 데이터 디코딩 방법은 도 9k에 도시된 데이터 디코딩 방법과 마찬가지로, 제2 디코딩 단계(S100)과 제3-1 디코딩 단계(S300) 사이에 S250 단계 및 S260 단계가 삽입될 수 있다.
도 9m은 본 발명의 또 다른 실시예에 따른 데이터 디코딩 방법을 나타내는 플로우챠트이다. 도 9m에 도시된 데이터 디코딩 방법은 도 9c에 도시된 데이터 디코딩 방법에 비하여 S250 및 S260 단계를 더 포함한다.
즉, 도 9m에 도시된 데이터 디코딩 방법은 도 9k 및 도 9l에 도시된 데이터 디코딩 방법과 마찬가지로, 제2 디코딩 단계(S100)과 제3-1 디코딩 단계(S300) 사이에 S250 단계 및 S260 단계가 삽입될 수 있다.
상술한 바와 같이, S150과 S250 단계는 이전 단계에서의 디코딩 실패시 새로운 데이터 독출을 위한 리드 레벨을 이전에 디코딩 성공시의 리드 레벨로 우선 적용함으로써 디코딩 성공 확률을 높이고자 하는 단계이며, S160과 S260 단계는 플래시 메모리에 대한 사전 테스트를 통하여 가장 많이 발생되는 열화 상황에 적합한 리드 레벨들을 선정하여, 그 리드 레벨을 우선 적용함으로써 디코딩 성공 확률을 높이고자 하는 것을 특징으로 한다.
따라서, 본 발명의 실시예에서는 디코딩 능력(즉, 오류정정 능력)과 디코딩에 소요되는 시간(즉, 데이터 복원 시간)이 서로 다른 단계를 복수(2이상) 개 구비하여 리드 성능 및 데이터 신뢰성을 최적화 하도록 단계별로 구성하도록 한다.
각 디코딩 단계별로 플래시 메모리(200)로부터 읽어들이는 데이터의 종류, 오류를 정정하는 방법, 리드 레벨 트래킹 기법 등은 각각의 플래시 메모리를 적용하는 메모리 시스템의 제품 요구 사항에 따라 적절히 선택하여 결정될 수 있다.
본 발명에서 상술한 디코딩 단계의 실시예는 도 9a내지 9m의 디코딩 플로우 차트와 같이 구성될 수 있으나, 이것은 하나의 실시예일뿐, 도 9a 내지 9의 플로우 차트를 구성하는 개별 디코딩 단계의 임의의 조합으로 구성될 수 도 있다.
도 10a 내지 도 10d는 본 발명의 실시예에 따른 단계별 데이터 디코딩 방법을 좀 더 구체적으로 나타내는 플로우차트이다. 도 10a는 도 9a내지 도 9c에 도시된 제1 및 제2 디코딩 단계들(S100, S200)를 보다 구체적으로 나타내는 실시예이다.
도 1 내지 도 10a를 참조하면, 제1 디코딩 단계(S100)는 경판정 데이터 독출 단계(S110) 및 경판정 데이터를 이용한 디코딩 단계(S120)를 포함할 수 있다.
제1 디코딩 단계(S100)는 플래시 메모리 시스템(20)의 리드아웃 성능을 우선시하는 디코딩 단계이다. 도 11은 경판정 데이터의 독출을 설명하기 위한 도면으로, 메모리 셀의 산포 및 경판정 리드 레벨(VHD1)을 나타내는 도면이다.
도 11을 참조하면, 경판정 데이터(HD data)는 하나의 기준 전압 레벨인 경판정 리드 레벨(VHD1)을 이용하여 메모리 셀에 저장된 데이터를 '0'과 '1'로 판정하는 데이터이다. 예를 들어, 해당 메모리 셀에 접속된 워드라인에 경판정 리드 레벨(VHD1)을 인가하고, 다른 워드라인에는 미리 설정된 패스 전압을 인가한 후, 해당 메모리 셀에 접속된 비트라인에 흐르는 전류의 유무에 따라 해당 메모리 셀의 데이터를 '0' 또는 '1'로 판정할 수 있다. 도 11에서는 두 개의 인접 산포들만이 도시되나, 산포들의 수는 달라질 수 있다. 인접하는 산포들은 소거 상태 및 프로그램 상태를 나타낼 수도 있고, 서로 다른 프로그램 상태들을 나타낼 수도 있다.
이와 같이, 인접하는 산포를 구분하기 위해 하나의 리드 레벨을 이용하여 독출한 데이터를 경판정 데이터라 할 수 있다.
ECC 디코더(152)는 연판정 데이터를 이용하여 오류를 정정할 수 있고, 또한 경판정 데이터만을 입력받아도 오류 정정을 수행할 수 있다. 경판정 데이터만으로 오류 정정을 수행하는 경우 연판정 데이터를 입력받아 오류를 정정하는 경우보다 오류정정 능력은 낮아진다. 그러나, 플래시 메모리 시스템(20)의 경우 사용 초기(플래시 메모리 시스템의 수명 기간 중 초기 기간)에는 대부분 플래시 메모리(200)의 상태가 좋기 때문에 메모리(200)로부터 읽어 들인 데이터에는 오류가 적게 존재한다.
또한, 플래시 메모리 시스템(20)에서 연판정 데이터를 얻어내기 위해서는 경판정 데이터를 얻어내기 위하여 데이터를 독출하는 시간보다 더 많은 독출 시간이 요구된다. 그러므로 제1 디코딩 단계(S100)에서부터 연판정 데이터를 사용하여 디코딩을 수행한다면 플래시 메모리 시스템의 리드아웃(readout) 성능은 사용 초기부터 감소되어 운영될 수 밖에 없다. 그러므로, 본 발명의 일 실시예에 따른 제1 디코딩 단계(S100)에서는 경판정 데이터만을 독출하고, 그 정보를 이용하여 디코딩을 수행한다.
다시 도 10a를 참조하면, 제2 디코딩 단계(S200)는 제1 디코딩 단계(S100)에서 데이터를 복구하지 못할 경우(S210에서 'No' 인 경우)에 진입하는 단계이다.
제2 디코딩 단계(S200)는 연판정 데이터 독출 단계(S220)와 연판정 데이터를 이용한 디코딩 단계(S230)를 포함할 수 있다. 제1 디코딩 단계(S100)가 완료되면, 디코딩 성공 여부를 체크하고(S210), 체크 결과 성공이면(S210에서 'Yes' 인 경우) 디코딩은 종료된다(S710). 반면, 제1 디코딩 단계(S100)에서의 디코딩이 실패, 즉 데이터 오류를 정정하지 못한 경우(S210에서 'No' 인 경우)에는, 연판정 데이터 독출 단계(S220)를 수행한다.
도 12은 경판정 데이터의 독출을 설명하기 위한 도면으로, 메모리 셀의 산포 및 연판정 리드 레벨(VSD1, VSD2)을 나타내는 도면이다.
연판정 데이터는 제1 및 제2 연판정 리드 레벨(VSD1, VSD2)을 이용하여 메모리셀로부터 독출한 데이터이다. 제1 및 제2 연판정 리드 레벨(VSD1, VSD2) 각각은 제1 경판정 리드 레벨(VHD1)에 비하여 제1 및 제2 연판정 옵셋(VOFF1, VOFF2)만큼 차이를 갖는 레벨일 수 있다. 예컨대, 제1 연판정 리드 레벨(VSD1)은 제1 경판정 리드 레벨(VHD1)에 제1 연판정 옵셋(VOFF1)을 더한 레벨이고, 제2 연판정 리드 레벨(VSD2)은 제1 경판정 리드 레벨(VHD1)에 제2 연판정 옵셋(VOFF2)을 뺀 리드 레벨일 수 있다. 제1 및 제2 연판정 옵셋(VOFF1, VOFF2)은 미리 지정될 수 있다. 제1 및 제2 연판정 옵셋(VOFF1, VOFF2)은 서로 같은 값일 수도 있고, 다른 값일 수도 있다.
연판정 데이터를 이용한 디코딩 단계(S230)에서는, 연판정 데이터 독출 단계(S220)에서 플래시 메모리로부터 독출한 연판정 데이터(SD data)뿐만 아니라, 경판정 데이터 독출 단계(S110)에서 미리 읽어 들인 경판정 데이터(HD data)도 함께 이용하여 연판정 디코딩을 수행 한다.
연판정 데이터 독출 단계(S200)에서 플래시 메모리로부터 독출한 연판정 데이터(SD data)는 이전에 읽어 들인 경판정 데이터의 신뢰도를 나타내는 데이터 이다. 경판정 리드 레벨 주위의 일정한 영역의 데이터는 인접한 산포가 서로 겹쳐 있는 구간으로 경판정 리드 수행 시 오류가 발생할 확률이 높은 구간일 것이다. 따라서, 연판정 데이터는 경판정 리드 레벨 주위의 특정한 구간을 제1 및 제2 연판정 옵셋(VOFF1, VOFF2)로 지정하고, 지정된 구간에 속한 경판정 데이터는 신뢰성이 다른 구간에 비해 낮고 구간 외에 속한 경판정 데이터는 신뢰성이 보다 높다는 것을 표현하게 된다.
플래시 메모리 시스템(20)에서 읽어 들인 데이터에 포함된 오류의 개수는 플래시 메모리 시스템(20)의 사용 시간이 점차적으로 증가할수록, 즉 쓰기 및 읽기 회수가 증가할수록, 플래시 메모리(200)의 상태가 열화되어 점진적으로 증가한다. 그러므로 제1 디코딩 단계(S100)의 경판정 데이터를 이용한 디코딩 방법(이하, 경판정 디코딩이라 함)으로 복구하지 못한 오류는 제2 디코딩 단계(S200)의 연판정 데이터를 이용한 디코딩 방법(이하, 연판정 디코딩이라 함)으로 복구할 확률이 매우 높다.
도 10b는 도 9a내지 도 9m에 도시된 제3 디코딩 단계(S300)를 보다 구체적으로 나타내는 실시예이다. 제3 디코딩 단계(S300)는 플래시 메모리 상태가 더 열화되어, 리드 데이터에 연판정 디코딩으로도 복구하지 못할 정도의 오류가 포함된 경우에 진입되는 단계이다. 도 11을 다시 참조하면, 도 11의 (a)는 플래시 메모리의 초기 상태의 산포를 나타낸다. 도 11의 (a)에 도시된 바와 같이, 플래시 메모리의 초기 산포는 디폴트 리드 레벨(예컨대, 제1 경판정 리드 레벨(VHD1)이 좌우 산포의 중심에 위치하고 좌/우의 산포 형태가 유사하다.
도 11 (b)는 플래시 메모리가 열화되어 플래시 메모리에 프로그램된 산포가 변화된 상태를 나타낸다. 도 11 (b)와 같이 플래시 메모리의 열화가 많이 진행되어 산포의 골(valley)의 위치가 이전 경판정 리드 레벨(VHD1)에서 많이 벗어난 경우, 이전 경판정 리드 레벨(예컨대, 제1 경판정 리드 레벨(VHD1))을 적용하여 데이터를 독출할 경우 독출한 데이터에 오류가 많이 포함된다. 따라서, 도 11 (b)와 같이 산포의 형태가 많이 변화한 경우에는 연판정 디코딩을 수행하더라도 기대하는 오류정정 성능을 발휘할 수 없을 수도 있다.
따라서, 제3 디코딩 단계(S300)에서는 리드 레벨을 트래킹(read level tracking)하여(S330), 경판정 리드 레벨을 변경하는 것이 오류 정정에 도움이 될 수 있다(S340). 예컨대, 산포의 골(두 개의 산포의 교차하는 레벨)을 찾아서(S330), 찾은 레벨로 경판정 리드 레벨을 변경한다(S340).
리드 레벨을 찾기 위한 방법은 여러 가지 있을 수 있다. 본 발명의 일 실시예에서는 리드아웃 성능 열화를 최대한 줄이면서 최대한의 오류정정 성능을 도출하는 코오스 리드 레벨 트래킹(coarse read level tracking) 기법이 사용된다. 예컨대, 제3 디코딩 단계(S300)에서 사용되는 코오스 리드 레벨 트래킹 방법은 리드 레벨을 찾기 위한 추가 리드(read)를 수행하지 않고도 리드 레벨의 추정이 가능한 방법이다. 이러한 방법의 일 예가 한국특허출원 제10-2013-0004037호에 개시되어 있다. 이에 따라, 한국특허출원 제10-2013-0004037호를 레퍼런스로 참조한다.
도 13는 코오스 리드 레벨 트래킹 방법을 설명하기 위한 그래프이다.
도 13에 도시된 바와 같이, 제1 디코딩 단계(S100)에서 제1 경판정 리드레벨(VHD1)을 기준으로 데이터 독출을 수행하여 경판정 데이터(HD data)를 얻고, 제2 디코딩 단계(S200)에서는 제1 경판정 리드 레벨(VHD1)을 기준으로 그 주위에 미리 정해진 간격(연판정 옵셋)만큼 이동하여 추가 데이터 리드를 수행하여 연판정 데이터(SD data)를 얻은 상태이다. 제1디코딩 단계(S100)와 제2디코딩 단계(S200)를 진행하면서 얻어진 경판정 데이터(HD data) 및 연판정 데이터(SD data)를 적절히 연산하여 도 13와 같이 CA, CB 구간에 해당하는 메모리셀들의 개수(nCA, nCB)를 얻어 낼 수 있다.
예컨대, CA 구간은 제1 경판정 리드 레벨(VHD1)을 이용하여 독출한 경판정 데이터(HD data)는 '1'이고, 제1 및 제2 연판정 리드 레벨(VSD1, VSD2)을 이용하여 독출한 연판정 데이터(SD data)는 '0'인 메모리 셀들의 그룹이고, B 구간은 제1 경판정 리드 레벨(VHD1)을 이용하여 독출한 경판정 데이터(HD data)는 '0'이고, 제1 및 제2 연판정 리드 레벨(VSD1, VSD2)을 이용하여 독출한 연판정 데이터(SD data)는 '0'인 메모리 셀들의 그룹이다.
이렇게 얻어진 CA, CB 구간의 메모리 셀 개수를 이용하면 플래시 메모리의 산포 열화 정도를 개략적으로 추정할 수 있다.
이 산포 열화 추정 값을 바탕으로 리드 레벨을 대략적으로 찾아내는 방법이 도 13에 도시된 코오스 리드 레벨 트래킹 방법이다.
예컨대, 산포의 변화 정도(ΔVth)는 다음의 수학식에 의해 산출될 수 있다.
Figure 112014038115917-pat00001
여기서, α, β는 특정한 값을 가지는 상수이고, nCB는 CB 구간에 속하는 셀들의 수이고, nCA는 CA구간에 속하는 셀들의 수이다.
제 3 디코딩 단계(S300)에서는 코오스 리드 레벨 트래킹을 통해 예측한 산포의 골 위치를 새로운 경판정 리드 레벨(VHD2, 이하 제2 경판정 리드 레벨이라 함)로 정하고(S330, S340), 도 14에 도시된 바와 같이 제2 경판정 리드 레벨(VHD2)을 이용하여 경판정 데이터를 독출한다(S360). 도 13에 도시된 바와 같이, 제2 경판정 리드 레벨(VHD2)은 제1 경판정 리드 레벨(VHD1)에서 산포의 변화 정도(ΔVth)를 뺀 레벨일 수 있다, 실시예에 따라, 제2 경판정 리드 레벨(VHD2)과 제1 경판정 리드 레벨(VHD1) 간의 변화량, 즉 산포의 변화 정도(ΔVth)가 미리 정해진 최소 변화량(Min_delta)보다 작은지 비교하여(S350), 작으면(S350에서, 'Yes'인 경우), 다음 단계(제4 디코딩 단계)로 진행하고, 크거나 같으면(S350에서, 'No'인 경우), 제2 경판정 리드 레벨(VHD2)을 이용하여 경판정 데이터를 독출할 수 있다(S360).
다음으로, 새롭게 독출한 경판정 데이터(new HD data)를 이용하여 디코딩을 수행한다(S385, S380). 디코딩시, 새롭게 독출한 경판정 데이터(new HD data)만을 사용하여 경판정 디코딩을 수행할 수도 있고, 새롭게 독출한 경판정 데이터(new HD data)와 이전 연판정 데이터(old SD data)를 함께 이용하여 연판정 디코딩을 수행할 수도 있다(S380). S380 단계의 경우, 이전에 독출한 데이터(old SD data)를 연판정 디코딩에 활용함으로서 추가 데이터 독출없이 오류 정정능력을 높일 수 있다.
산포의 골의 이동 정도가 제1디코딩 단계(S100)에서 사용된 제1 경판정 리드 레벨(VHD1)과 비교하였을 때 많이 이동하지 않는 경우가 존재할 수 있다. 이 경우 코오스 리드 레벨 트래킹으로 찾은 새로운 경판정 리드 레벨, 즉 제2 경판정 리드 레벨(VHD2)이 제1 경판정 리드 레벨(VHD1)에 인접한 일정 범위 내에 위치하는 경우(S370에서 'Yes'인 경우) 이전의 단계에서 읽었던 연판정 데이터(old(1st) SD data)는 제2 경판정 리드 레벨(VHD2)을 적용한 경판정 데이터의 신뢰성을 나타내는 것으로도 볼 수 있다, 이 경우 이전 단계에서 독출한 연판정 데이터(old(1st) SD data)를 그림 13와 같이 사용하여 연판정 디코딩을 수행할 수 있다(S380). 연판정 디코딩을 수행하는 경우 경판정 디코딩을 수행하는 경우보다 많은 오류가 정정될 수 있으므로, 새롭게 독출한 경판정 데이터 만을 이용하여 디코딩을 수행하는 것 보다, 이전의 단계에서 독출한 연판정 데이터가 의미가 있는 데이터일 경우 가급적 이전 데이터를 활용하여 연판정 디코딩을 수행하는 것이 보다 높은 확률로 디코딩 성공을 기대할 수 있을 것이다.
만약 산포의 열화 정도가 심하여 코오스 리드 레벨 트래킹으로 찾은 새로운 경판정 리드 레벨, 즉 제2 경판정 리드 레벨(VHD2)이 제1 경판정 리드 레벨(VHD1)로부터 일정한 범위 밖에 위치하는 경우에는(S370에서 'No'인 경우) 이전 단계에서 사용하였던 연판정 데이터(old SD data) 는 더 이상 새로운 경판정 리드 레벨(VHD2)을 적용하여 독출한 경판정 데이터의 신뢰성을 나타낼 수 없다. 따라서 이와 같은 경우에는 이전 단계에서 독출하였던 연판정 데이터(old SD data)를 사용하여 연판정 디코딩을 수행할 수 없다. 이 때는 새로운 경판정 데이터(New HD data)만을 이용한 하드 디코딩을 적용하여 오류정정을 수행한다(S385).
S380 또는 S385 단계의 디코딩 결과 디코딩이 성공하면(S390에서 'Yes' 인 경우) 디코딩 성공으로 종료된다(S710). 반면, S380 또는 S385 단계에서의 디코딩이 실패, 즉 데이터 오류를 정정하지 못한 경우(S390에서 'No' 인 경우)에는, 새롭게 찾은 경판정 리드 레벨(VHD2)를 기준으로 새로운 연판정 리드 레벨을 결정하여 새로운 연판정 데이터를 독출하게 되며(S220), 이 단계에서의 제3 및 제 4 연판정 옵셋(미도시)은 이전 단계의 제1 및 제2 연판정 옵셋(VOFF1, VOFF2)과 같은 값일 수도 있고, 다른 값일 수도 있다. 이와 같이 새로운 연판정 리드 레벨을 사용하여 얻어낸 새로운 연판정 데이터, 즉 제2 연판정 데이터는 제 2 경판정 리드 레벨(VHD2)로 독출한 제2 경판정 데이터와 함께 연판정 디코딩을 수행하는데 사용하게 된다(S230).
제 3 디코딩 단계(S300)에서 코오스 리드 레벨 트래킹으로 찾은 경판정 리드레벨을 적용하여 경판정 혹은 연판정 디코딩을 수행하여도 디코딩에 실패를 하는 경우, 실시예에 따라, 디코딩이 성공 될 때 까지 코오스 리드 레벨 트래킹 및 경판정 혹은 연판정 디코딩이 반복적으로 수행 될 수 있다. 코오스 리드 레벨 트래킹은 미리 설정된 최대 반복 횟수(Max_loop)만큼 반복적으로 수행될 수 있으며, 이를 위해서, 코오스 서치 카운트(Coarse Search Count)를 미리 설정된 최대 반복 횟수(Max_loop) 보다 큰지 비교하여(S320), 크면(S320에서, 'Yes'인 경우), 다음 단계(제4 디코딩 단계)로 진행하고, 작거나 같으면(S320에서, 'No'인 경우), 코오스 리드 레벨 트래킹을 수행한다(S330). 코오스 서치 카운트(Coarse Search Count)는 코오스 리드 레벨 트래킹의 반복 횟수를 나타내는 정보이다.
본 실시예에서는, S380 또는 S385 단계에서의 디코딩이 실패인 경우(S390에서 'No' 인 경우)에는, 이전의 디코딩 단계(S200)로 되돌아가 코오스 리드 레벨 트래킹과 디코딩 과정을 반복적으로 수행하지만, 한 번의 코오스 리드 레벨 트래킹 후 디코딩 과정을 거쳐 디코딩이 실패하였을 경우 반복적으로 코오스 리드 레벨 트리킹을 수행하지 않고 제4 디코딩 단계(S400)로 넘어갈 수도 있다.
이와 같이, 본 발명의 실시예에 따르면, 복수의 단계들 중 적어도 하나의 단계가 복수 회 수행될 수 있다. 예를 들어, 플래시 메모리(200)가 점차 열화되어 감에 따라 산포가 점차 이동할 것이므로, 추가 데이터 독출의 개입없이도 산포의 이동 정도를 어느 정도 정확도로 찾아내는 코오스 리드 레벨 트래킹을 몇 차례 반복 수행할 수도 있다.
도 10c는 도 9b내지 도 9c에 도시된 제4 디코딩 단계(S400)를 보다 구체적으로 나타내는 실시예이다.
제4 디코딩 단계(S400)는 플래시 메모리의 열화 정도가 심하여 제3 디코딩 단계(S300)의 코오스 리드 레벨 트래킹 및 이에 따른 디코딩을 수행하였음에도 불구하고 오류를 복구하지 못한 경우에 수행되는 단계로서, 최종적으로 산포의 골을 정확하게 찾는 파인 리드 레벨 트래킹(fine read level tracking) 방법을 적용하여 리드 레벨을 정밀하게 추정한다(S410). 파인 리드 레벨 트래킹 방법으로는 여러 가지 방법이 있을 수 있으나 본 발명의 일 실시예에서는, 2차 혹은 3차 리그레션(regression) 방법을 이용하여 최소한의 데이터 독출 회수로 산포의 골을 정확하게 찾는 방법을 사용할 수 있다(S410). 이러한 방법의 일 예가 한국특허출원 제10-2012-0119106호에 개시되어 있다. 이에 따라, 한국특허출원 제10-2012-0119106호를 레퍼런스로 참조한다.
즉, 제4 디코딩 단계(S400)에서는 파인 리드 레벨 트래킹으로 경판정 리드 레벨을 찾아서(S410), 경판정 리드 레벨을 변경한다(S420).
그리고, S420 단계에서 변경된 경판정 리드 레벨(이하, 제3 경판정 리드 레벨(VHD3)이라 함)을 이용하여 경판정 데이터를 독출한다(S430)
다음으로, 새롭게 독출한 경판정 데이터(new HD data)를 이용하여 디코딩을 수행한다(S450 또는 S460). 디코딩시, 새롭게 독출한 경판정 데이터(new HD data)만을 사용하여 경판정 디코딩을 수행할 수도 있고(S460), 새롭게 독출한 경판정 데이터(new HD data)와 이전 제 3 단계 디코딩 단계(S300)에서 독출한 연판정 데이터(old SD data)를 함께 이용하여 연판정 디코딩을 수행할 수도 있다(S450). S450 단계의 경우, 이전에 독출한 데이터(old SD data)를 연판정 디코딩에 활용함으로서 추가 데이터 독출없이 오류 정정능력을 높일 수 있다.
예컨대, 파인 리드 레벨 트래킹으로 찾은 새로운 경판정 리드 레벨, 즉 제3 경판정 리드 레벨(VHD3)이 이전 경판정 리드 레벨, 즉, 제2 경판정 리드 레벨(VHD2)로부터 일정한 범위 내에 위치하는 경우(S440에서 'Yes'인 경우) 이전의 단계에서 읽었던 연판정 데이터(old SD data)와 제3 경판정 리드 레벨(VHD3)을 이용하여 독출한 경판정 데이터를 함께 사용하여 연판정 디코딩을 수행할 수 있다(S450).
만약 파인 리드 레벨 트래킹으로 찾은 새로운 경판정 리드 레벨, 즉 제3 경판정 리드 레벨(VHD3)이 이전 경판정 리드 레벨, 즉, 제2 경판정 리드 레벨(VHD2)로부터 일정한 범위 밖에 위치하는 경우에는(S440에서 'No'인 경우) 이전 단계에서 사용하였던 연판정 데이터(old SD data)를 사용하여 연판정 디코딩을 수행할 수 없다. 이 때는 새로운 경판정 데이터(New HD data)만을 이용한 하드 디코딩을 적용하여 오류정정을 수행한다(S460).
즉, S300 단계와 유사하게, S400 단계에서도 최대한 이전 데이터를 활용하여 연판정 디코딩을 수행함으로써 오류 정정 가능성을 높인다.
S450 또는 S460 단계의 디코딩 결과 디코딩이 성공하면(S470에서 'Yes' 인 경우) 디코딩 성공으로 종료된다(S710). 반면, S450 또는 S460 단계에서의 디코딩이 실패, 즉 데이터 오류를 정정하지 못한 경우(S470에서 'No' 인 경우)에는, 새로운 연판정 데이터를 독출하고(S480), 독출한 연판정 데이터 및 이전에 독출한 경판정 데이터를 이용하여 연판정 디코딩을 수행한다(S490).
S480 및 S490 단계는 도 10a에 도시된 S220 및 S230 단계와 유사하다.
S480단계에서는, 제3 경판정 리드 레벨(VHD3)로부터 일정한 연판정 옵셋을 가지는 연판정 리드 레벨들을 이용하여 메모리셀로부터 데이터를 독출한다(S480). S480단계에서의 연판정 옵셋은 제1 및 제2 연판정 옵셋(VOFF1, VOFF2)과 같을 수도 있고, 다를 수도 있다.
S490 단계에서는, S480단계에서 플래시 메모리로부터 독출한 연판정 데이터(SD data)뿐만 아니라, S430 단계에서 플래시 메모리로부터 독출한 경판정 데이터도 함께 이용하여 연판정 디코딩을 수행 한다(S490).
도 10d는 도 9c에 도시된 제5 디코딩 단계(S500)를 보다 구체적으로 나타내는 실시예이다. 제5 디코딩 단계(S500)는 ECC 디코더(152)에서 채용할 수 있는 여러 가지 선택사항(option)들을 추가 적용하여 디코딩을 수행하는 단계이다. 연판정 디코딩을 수행하는 ECC 디코더(152)에서 N(2이상의 자연수)-비트 양자화 레벨(quantization level)로 동작이 가능한 경우 점진적으로 양자화 레벨을 늘려가며 연판정 디코딩을 수행할 수 있다.
양자화 레벨을 늘리기 위해서는 추가로 데이터 독출이 수행되어야 하므로 리드아웃 성능은 낮아지게 되지만 연판정 디코딩시 정정능력은 향상되게 되어 오류를 복구할 확률이 높아지게 된다.
제4 디코딩 단계(S400)에서 디코딩 실패인 경우(S510에서 'No'인 경우), 먼저, N-비트 양자화 레벨을 위한 연판정 옵셋(SD offset) 세트를 준비하고(S520), n을 초기화한다(S530). 연판정 옵셋(SD offset) 세트를 준비하는 단계(S520)는 디코딩을 수행하기 전, 즉 S100 단계 이전에, 혹은 메모리 시스템의 초기화 단계 등에서 수행될 수도 있다. 여기서, n은 연판정 데이터의 비트수를 나타내는 정보로서, 도 10d에 도시된 실시예에서는, 초기값인 3에서부터 시작하여 순차적으로 1씩 증가시켜 최대 N까지 증가시키나, 본 발명의 실시예가 이에 한정되는 것은 아니다.
연판정 옵셋 세트는 n-비트 양자화 레벨을 위한 연판정 옵셋들, (n+1)-비트 양자화 레벨을 위한 연판정 옵셋들, ..., N-비트 양자화 레벨을 위한 연판정 옵셋들을 포함할 수 있다. 연판정 옵셋 세트는 플래시 메모리 또는 메모리 컨트롤러에 미리 저장될 수 있다. 예컨대, 연판정 옵셋 세트는 메모리 컨트롤러에서 실행되는 프로그램 코드 또는 펌웨어에 미리 포함될 수도 있고, 메모리 컨트롤러 내의 메모리나 플래시 메모리에 테이블 형태로 저장될 수도 있다.
다음으로, n-비트 양자화 레벨을 위한 연판정 옵셋들을 설정한다(S540).
3-비트 연판정 옵셋들의 일 실시예가 도 15 a 및 도 15b에 도시된다.
먼저, 도 15a및 도 15b를 참조하면, 3-비트 연판정 옵셋들은 특정 경판정 리드 레벨(VHD3)로부터의 각 연판정 리드 레벨(도 15a의 VSD3~VSD6, 또는 도 15b의 VSD3~VSD8 )까지의 옵셋(즉, 차이)일 수 있다.
따라서, n-비트 양자화 레벨을 위한 연판정 옵셋들이 설정되면, n-비트 양자화 레벨을 갖는 연판정 데이터를 독출하기 위한 연판정 리드 레벨들이 결정된다. 결정된 연판정 리드 레벨들을 이용하여 n-비트 연판정 데이터(n-th SD data)를 독출한다(S550). 도 15a에 도시된 실시예에서는, 연판정 리드 레벨(VSD3~VSD6)은 4-레벨이다. 이에 따라, 연판정 리드 레벨(VSD3~VSD6)을 적용하여 독출한 연판정 데이터(3rd SD data)는 셀 산포가 속하는 구간(E1~E6)에 따라 서로 다른 6가지 값을 가질 수 있으며, 3-비트 데이터로 표현될 수 있다.
도 15b에 도시된 실시예에서는, 연판정 리드 레벨(VSD3~VSD8)은 6-레벨이다. 이에 따라, 연판정 리드 레벨(VSD3~VSD8)을 적용하여 독출한 연판정 데이터(3rd SD data)는 셀 산포가 속하는 구간(F1~F8)에 따라 서로 다른 8가지 값을 가질 수 있으며, 역시 3-비트 데이터로 표현될 수 있다.
이와 같은 방식으로, n-비트 연판정 데이터(n-th SD data)가 독출되면, 독출한 n-비트 연판정 데이터(n-th SD data)를 이용하여 연판정 디코딩을 수행한다(S560). S560 단계에서, n-비트 연판정 데이터(n-th SD data)와 함께, 이전 데이터, 예컨대, 경판정 데이터 및 1 내지 (n-1)차 연판정 데이터가 연판정 디코딩에 사용될 수 있다.
S560 단계에서의 디코딩 결과, 디코딩이 성공하면(S390에서 'Yes' 인 경우) 디코딩 성공으로 종료된다(S710). 반면, S560 단계에서의 디코딩이 실패, 즉 데이터 오류를 정정하지 못한 경우(S570에서 'No' 인 경우)에는, n이 N에 도달했는지를 체크하여(S580), n이 N보다 작은 경우(S580에서 'No'인 경우)에는 n을 1 증가시켜(S590), S540 단계로 되돌아간다.
n이 N에 도달한 경우(S580에서 'Yes'인 경우)에는 S610 단계로 진행한다.
S610 단계에서는, K개의 특정 연판정 옵셋 세트들을 준비하고(S610), m을 초기화한다(S610). 플래시 메모리의 열화가 일반적으로 기대되는 형태가 아닌 특별한 형태로 열화가 진행된 경우, K개의 특정 열화 산포의 형태에 최적화된 K개의 특정 연판정 옵셋 세트가 미리 준비될 수 있다. K개의 연판정 옵셋(SD offset) 세트를 준비하는 단계(S610)는 디코딩을 수행하기 전, 즉 S100 단계 이전에, 혹은 메모리 시스템의 초기화 단계 등에서 수행될 수도 있다. 여기서, m은 반복 횟수를 나타내는 정보로서, 초기값인 1에서부터 시작하여 순차적으로 1씩 증가시켜 최대 K까지 증가되나, 본 발명의 실시예가 이에 한정되는 것은 아니다.
K 개의 특정 연판정 옵셋 세트는 플래시 메모리 또는 메모리 컨트롤러에 미리 저장될 수 있다. 예컨대, K개의 연판정 옵셋 세트는 메모리 컨트롤러에서 실행되는 프로그램 코드 또는 펌웨어에 미리 포함될 수도 있고, 메모리 컨트롤러 내의 메모리나 플래시 메모리에 테이블 형태로 저장될 수도 있다.
다음으로, m번째 연판정 옵셋들을 설정한다(S630). m번째 연판정 옵셋들이 설정되면, 이에 따른 연판정 데이터를 독출하기 위한 연판정 리드 레벨들이 결정된다. 결정된 연판정 리드 레벨들을 이용하여 연판정 데이터(m-th SD data)를 독출한다(S640).
다음으로, 독출한 연판정 데이터(m-th SD data)를 이용하여 연판정 디코딩을 수행한다(S650). S650 단계에서, 연판정 데이터(m-th SD data)와 함께, 이전 데이터, 예컨대, 경판정 데이터 및 1 내지 (m-1)차 연판정 데이터가 연판정 디코딩에 사용될 수 있다.
S650 단계에서의 디코딩 결과, 디코딩이 성공하면(S660에서 'Yes' 인 경우) 디코딩 성공으로 종료된다(S710). 반면, S650 단계에서의 디코딩이 실패, 즉 데이터 오류를 정정하지 못한 경우(S660에서 'No' 인 경우)에는, m이 K에 도달했는지를 체크하여(S670), m이 K보다 작은 경우(S670에서 'Yes'인 경우)에는 m을 1 증가시켜(S590) S630 단계로 되돌아간다.
m이 K에 도달한 경우(S670에서 'No'인 경우)에는 디코딩 실패로 종료된다(S720).
도 10d의 실시예에서 S610 내지 S680 단계는 일반적으로 열화된다고 예상되는 산포의 양상과 다른 형태로 열화가 진행된 산포의 경우에도 오류를 정정하기 위한 단계들이다. 예측 가능한 산포의 열화가 진행된 경우에는 S610 이전 단계에서 최대한 오류가 정정될 것이다. 그러나 예측하지 못한 산포의 형태 혹은 드물게 발생되나 알려진 특정 형태의 산포 열화 정도에서도 오류를 정정하기 위하여 S610 내지 S680 단계들에서, 특정 연판정 옵셋 세트(예컨대, S610단계의 K개의 연판정 옵셋 세트들) 여러 가지(예컨대, K개)를 준비하여 각 연판정 옵셋 세트를 적용하여 데이터를 독출하고, 독출한 연판정 데이터를 이용하여 연판정 디코딩을 수행한다.
도 10d의 실시예에서는, ECC 디코더(152)의 양자화 레벨을 변경하면서 디코딩을 수행(S520 내지 S590)한 이후에 특정의 연판정 옵셋 세트들을 순차적으로 적용해 가면서 디코딩을 수행(S610 내지 S680)하는 것으로 도시하였으나, 이는 하나의 예로 도시한 것이며 본 발명의 실시예가 이에 한정되는 것은 아니다.
본 발명의 다른 실시예에서는, ECC 디코더의 다른 선택사항(option)들을 변경시켜가며 디코딩을 수행할 수도 있고, 여러 가지 선택사항들을 조합하여 사용할 수도 있다.
본 발명의 실시예에 따르면, 플래시 메모리 시스템의 전 수명 기간 동안 상술한 본 발명의 실시예에 따른 하나의 디코딩 방법(예컨대, 도 9a, 8b 또는 8c에 도시된 디코딩 방법)이 사용될 수 있다.
하지만, 본 발명의 다른 실시예에 따르면, 플래시 메모리 시스템의 전 수명 기간을 두 가지 이상의 구간으로 나누어, 구간에 따라 서로 다른 디코딩 방법을 사용할 수도 있다. 예컨대, 플래시 메모리 시스템의 전 수명 기간 중 전반기 동안에는 본 발명의 실시예에 따른 하나의 디코딩 방법(예컨대, 도 9a)을 사용하고, 플래시 메모리 시스템의 전 수명 기간 중 후반기 동안에는 플래시 메모리의 열화 정도가 더 진행되어 경판정 디코딩 단계 즉, 도 9a에서 제 1 디코딩 단계(S100)에서 디코딩 성공을 기대할 수 없을 수도 있다. 따라서, 플래시 메모리의 후반기 수명 기간에는 도 9a의 제 1 디코딩 단계(S100)에서의 디코딩 성공 확률이 매우 낮아 의미가 없을 수 있기 때문에, 후반기 동안에는 도 9a의 디코딩 방법 중에서 제 1 디코딩 단계(S100)을 제외한 나머지 디코딩 단계를 진행 하는 것이 플래시 메모리의 디코딩 시간에 도움을 줄 수 있을 것이다.
도 16는 본 발명의 실시예에 따른 데이터 디코딩 방법을 나타내는 플로우차트이다. 도 17은 플래시 메모리의 열화 지표(Iavg)에 따라 선택되는 디코딩 모드들을 나타낸다. 도 16 및 도 17을 참조하면, 플래시 메모리 시스템의 수명기간 동안 플래시 메모리의 열화 정도에 따라 구간을 나누고, 구간에 따라 서로 다른 디코딩 모드를 적용할 수 있다. 각 디코딩 모드는 본 발명의 실시예에 따른 복수(2이상)의 디코딩 단계들을 포함할 수 있다.
도 16를 참조하면, 먼저, 플래시 메모리 시스템의 초기에는 디코딩 모드 A를 수행한다(S810). 디코딩 모드 A는 복수(2이상)의 디코딩 단계들(예컨대, 도 9a에 도시된 S100 및 S200 단계들, 또는 도 9a에 도시된 S100 내지 S300 단계들)을 포함할 수 있다.
디코딩 모드 A에서 정기적/부정기적으로 플래시 메모리의 열화 지표(Iavg)가 특정 임계치(I2) 보다 작은지 비교하여(S820), 열화 지표(Iavg)가 특정 임계치(I2) 보다 작으면(S820에서 'Yes'인 경우), 계속하여 디코딩 모드 A를 수행하고, 그렇지 않으면(S820에서 'No'인 경우), 디코딩 모드 B를 수행한다(S830). 디코딩 모드 B는 복수(2이상)의 디코딩 단계들(예컨대, 도 9a에 도시된 S200 및 S300 단계들, 또는 도 9b에 도시된 S200 내지 S400 단계들)을 포함할 수 있다. 이 때, 디코딩 모드 B의 디코딩 단계들과 디코딩 모드 디코딩 단계들 중 일부 단계는 일치할 수 있어도 모든 단계가 동일하지는 않다. 디코딩 모드 B에서 플래시 메모리의 열화 지표(Iavg)를 복수의 임계치들과 비교하고(S840), 비교 결과에 따라, 디코딩 모드 B를 계속 수행하거나, 디코딩 모드 A로 복귀하거나, 또는 디코딩 모드 C를 수행할 수 있다.
예컨대, S840 단계에서의 비교 결과, 열화 지표(Iavg)가 특정 임계치(I1) 보다 작으면 디코딩 모드 A로 복귀하고, 열화 지표(Iavg)가 특정 임계치(I3) 보다 크면 디코딩 모드 C를 수행하고, 열화 지표(Iavg)가 특정 임계치(I3)와 특정 임계치(I2) 사이이면 디코딩 모드 B를 계속 수행할 수 있다.
도 16 및 도 17의 실시예에서는, 3가지의 디코딩 모드를 구비하고, 플래시 메모리의 열화정도를 파악하여 각 디코딩 모드를 선택 운영한다. 그러나, 본 발명의 실시예가 이에 한정되는 것은 아니다. 또한, 플래시 메모리의 열화정도를 나타내는 열화 지표(Iavg)로 ECC 디코더(152)의 반복 복호 횟수(Iavg)가 사용되나, 본 발명의 실시예가 이에 한정되는 것은 아니다. 예를 들어, 프로그램-소거 싸이클(Program- Erase Cycle), 리드 싸이클(Read Cycle), ECC 디코딩 성공/실패, ECC 디코딩 성공시의 코드워드(codeword) 내 에러 개수, 디코딩 과정중 일정 기간내의 평균 에러 개수, 디코딩 과정 중 일정 기간내의 평균 반복(iteration) 회수, NAND의 열화 상태를 확인하기 위하여 특정 모니터링 데이터를 기록 후 모니터링 데이터의 산포 혹은 특정 리드 레벨에서의 셀 개수의 변화 측정 중 적어도 하나를 열화 지표로 사용할 수 있다.
도 18는 본 발명의 실시예에 따른 비휘발성 메모리 시스템을 포함하는 전자 시스템의 다른 실시 예를 나타낸다. 도 18을 참조하면, 전자 시스템(400)은 이동 전화기(cellular phone), 스마트 폰(smart phone), PDA(personal digital assistant), 또는 무선 통신 장치로 구현될 수 있다. 전자 시스템(400)은 비휘발성 메모리 장치(200)와 비휘발성 메모리 장치(200)의 동작을 제어할 수 있는 메모리 컨트롤러(100)를 포함한다. 메모리 컨트롤러(100)는 프로세서(410)의 제어에 따라 비휘발성 메모리 장치(200)의 데이터 액세스 동작, 예컨대 프로그램(program) 동작, 이레이즈(erase) 동작, 또는 리드(read) 동작을 제어할 수 있다.
비휘발성 메모리 장치(200)에 프로그램된 데이터는 프로세서(410) 및/또는 메모리 컨트롤러(100)의 제어에 따라 디스플레이(420)를 통하여 디스플레이될 수 있다.
무선 송수신기(430)는 안테나(ANT)를 통하여 무선 신호를 주거나 받을 수 있다. 예컨대, 무선 송수신기(430)는 안테나(ANT)를 통하여 수신된 무선 신호를 프로세서(410)에서 처리될 수 있는 신호로 변경할 수 있다.
따라서, 프로세서(410)는 무선 송수신기(430)로부터 출력된 신호를 처리하고 처리된 신호를 메모리 컨트롤러(100) 또는 디스플레이(420)로 전송할 수 있다. 메모리 컨트롤러(450)는 프로세서(410)에 의하여 처리된 신호를 비휘발성 메모리 장치(200)에 프로그램할 수 있다.
또한, 무선 송수신기(430)는 프로세서(410)로부터 출력된 신호를 무선 신호로 변경하고 변경된 무선 신호를 안테나(ANT)를 통하여 외부 장치로 출력할 수 있다.
입력 장치(440)는 프로세서(410)의 동작을 제어하기 위한 제어 신호 또는 프로세서(410)에 의하여 처리될 데이터를 입력할 수 있는 장치로서, 터치 패드(touch pad)와 컴퓨터 마우스(computer mouse)와 같은 포인팅 장치(pointing device), 키패드(keypad), 또는 키보드로 구현될 수 있다.
프로세서(410)는 메모리 컨트롤러(100)로부터 출력된 데이터, 무선 송수신기 (430)로부터 출력된 데이터, 또는 입력 장치(440)로부터 출력된 데이터가 디스플레이(420)를 통하여 디스플레이될 수 있도록 디스플레이(420)의 동작을 제어할 수 있다.
실시 예에 따라, 비휘발성 메모리 장치(200)의 동작을 제어할 수 있는 메모리 컨트롤러(100)는 프로세서(410)의 일부로서 구현될 수 있고 또한 프로세서(410)와 별도의 칩으로 구현될 수 있다.
도 19은 본 발명의 실시예에 따른 비휘발성 메모리 시스템을 포함하는 전자 시스템의 또 다른 실시 예를 나타낸다. 도 19에 도시된 전자 시스템(600)은 메모리 카드 (memory card) 또는 스마트 카드(smart card)로 구현될 수 있다. 전자 시스템(600)은 비휘발성 메모리 장치(200), 메모리 컨트롤러(100), 및 카드 인터페이스(620)를 포함한다.
메모리 컨트롤러(100)는 메모리 장치(100)와 카드 인터페이스(620) 사이에서 데이터의 교환을 제어할 수 있다.
실시 예에 따라, 카드 인터페이스(620)는 SD(secure digital) 카드 인터페이스 또는 MMC(multi-media card) 인터페이스일 수 있으나 이에 한정되는 것은 아니다. 카드 인터페이스(620)는 호스트(630)의 프로토콜에 따라 호스트(630)와 메모리 컨트롤러(100) 사이에서 데이터 교환을 인터페이스할 수 있다.
실시 예에 따라 카드 인터페이스(620)는 USB(Universal Serial Bus) 프로토콜, IC(InterChip)-USB 프로토콜을 지원할 수 있다. 여기서, 카드 인터페이스라 함은 호스트(630)가 사용하는 프로토콜을 지원할 수 있는 하드웨어, 상기 하드웨어에 탑재된 소프트웨어, 또는 신호 전송 방식을 의미할 수 있다.
전자 시스템(600)이 PC, 태블릿 PC, 디지털 카메라, 디지털 오디오 플레이어, 이동 전화기, 콘솔 비디오 게임 하드웨어, 또는 디지털 셋-탑 박스와 같은 호스트(630)의 호스트 인터페이스(650)와 접속될 때, 호스트 인터페이스(650)는 마이크로프로세서(640)의 제어에 따라 카드 인터페이스(620)와 메모리 컨트롤러(100)를 통하여 비휘발성 메모리 장치(200)와 데이터 통신을 수행할 수 있다.
도 20는 본 발명의 실시예에 따른 비휘발성 메모리 시스템을 포함하는 전자 시스템의 또 다른 실시 예를 나타낸다. 도 20를 참조하면, 전자 시스템(900)은 SSD(solid state drive)와 같은 데이터 처리 장치로 구현될 수 있다. 전자 시스템(900)은 다수의 메모리 장치들(200), 다수의 메모리 장치들(200) 각각의 데이터 처리 동작을 제어할 수 있는 메모리 컨트롤러(100), DRAM과 같은 휘발성 메모리 장치(930), 메모리 컨트롤러(100)와 호스트(940) 사이에서 주고받는 데이터를 휘발성 메모리 장치(930)에 저장하는 것을 제어하는 버퍼 매니저(920)를 포함할 수 있다.
도 21는 본 발명의 실시예에 따른 비휘발성 메모리 시스템을 포함하는 데이터 처리 시스템의 또 다른 실시 예를 나타낸다. RAID(redundant array of independent disks) 시스템으로 구현될 수 있는 데이터 처리 시스템(1000)은 RAID 컨트롤러(1010)와 다수의 메모리 시스템들(900-1~900-n; n는 자연수)을 포함할 수 있다.
다수의 메모리 시스템들(900-1~900-n) 각각은 도 20에 도시된 시스템 (900)일 수 있다. 다수의 메모리 시스템들(900-1~900-n)은 RAID 어레이를 구성할 수 있다. 데이터 처리 장치(1000)는 PC(personal computer) 또는 SSD로 구현될 수 있다.
프로그램 동작 동안, RAID 컨트롤러(1010)는 호스트(HOST)로부터 출력된 프로그램 명령에 따라 호스트(HOST)로부터 출력된 프로그램 데이터를 RAID 레벨에 따라 다수의 메모리 시스템들(900-1~900-n) 중에서 적어도 어느 하나의 메모리 시스템로 출력할 수 있다.
리드 동작 동안, RAID 컨트롤러(1010)는 호스트(HOST)로부터 출력된 리드 명령에 따라 다수의 메모리 시스템들(900-1~900-n) 중에서 적어도 어느 하나의 메모리 시스템으로부터 읽혀진 데이터를 호스트(HOST)로 전송할 수 있다.
본 발명은 또한 컴퓨터로 읽을 수 있는 기록매체에 컴퓨터가 읽을 수 있는 코드로서 구현하는 것이 가능하다. 컴퓨터가 읽을 수 있는 기록매체는 컴퓨터 시스템에 의하여 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록장치를 포함한다.
컴퓨터가 읽을 수 있는 기록매체의 예로는 ROM, RAM, CD-ROM, 자기 테이프, 플로피 디스크, 광 데이터 저장장치 등이 있다.
또한 컴퓨터가 읽을 수 있는 기록매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어, 분산방식으로 컴퓨터가 읽을 수 있는 코드가 저장되고 실행될 수 있다. 그리고 본 발명을 구현하기 위한 기능적인(functional) 프로그램, 코드 및 코드 세그먼트들은 본 발명이 속하는 기술분야의 프로그래머들에 의해 용이하게 추론될 수 있다.
상기 본 발명의 내용은 도면에 도시된 실시 예를 참고로 설명되었으나 이는 예시적인 것에 불과하며, 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시 예가 가능하다는 점을 이해할 것이다. 따라서 본 발명의 진정한 기술적 보호 범위는 첨부된 특허청구범위의 기술적 사상에 의해 정해져야 할 것이다.
메모리 시스템: 10
컨트롤러 : 100
비휘발성 메모리 장치 : 200
호스트 인터페이스 : 110
메모리: 120
메모리 인터페이스: 140
CPU : 150

Claims (21)

  1. 비휘발성 메모리 장치의 데이터를 디코딩하는 방법에 있어서,
    상기 비휘발성 메모리 장치로부터 제1 경판정 리드 레벨을 이용하여 제1 경판정 데이터를 독출하고, 상기 제1 경판정 데이터를 이용하여 디코딩하는 제1 디코딩 단계;
    상기 제1 디코딩 단계에서 디코딩 실패인 경우, 상기 비휘발성 메모리 장치로부터 제1 연판정 데이터(soft decision data)를 독출하고, 상기 제1 연판정 데이터를 이용하여 디코딩하는 제2 디코딩 단계; 및
    상기 제2 디코딩 단계에서 디코딩 실패인 경우, 상기 제1 경판정 리드 레벨을 제2 경판정 리드 레벨로 변경하고, 상기 제2 경판정 리드 레벨을 이용하여 제2 경판정 데이터를 독출하고, 상기 제 2 경판정 데이터를 이용하여 디코딩하거나 상기 제2 경판정 데이터 및 상기 제1 연판정 데이터를 함께 이용하여 디코딩하는 제3 디코딩 단계를 포함하는 비휘발성 메모리 장치의 데이터 디코딩 방법.
  2. 제1항에 있어서, 상기 제3 디코딩 단계는
    상기 제 2 경판정 데이터를 이용하여 디코딩하거나 상기 제2 경판정 데이터 및 상기 제1 연판정 데이터를 함께 이용하여 디코딩하는 제3-1 디코딩 단계; 및
    상기 제3-1 디코딩 단계에서 디코딩 실패인 경우, 상기 제2 경판정 리드 레벨에 기초한 제 2 연판정 데이터를 독출하고, 상기 제2 경판정 데이터 및 상기 제 2 연판정 데이터를 이용하여 디코딩하는 제3-2 디코딩 단계를 포함하는 비휘발성 메모리 장치의 데이터 디코딩 방법.
  3. 제2항에 있어서, 상기 제3-1 디코딩 단계는
    제1 리드 레벨 트래킹 기법을 이용하여 상기 제2 경판정 리드 레벨을 찾는 단계를 포함하는 비휘발성 메모리 장치의 데이터 디코딩 방법.
  4. 제3항에 있어서, 상기 제2 디코딩 단계는
    상기 제1 경판정 리드 레벨로부터 제1 연판정 옵셋만큼 차이를 갖는 제1 연판정 리드 레벨과 상기 제1 경판정 리드 레벨로부터 제2 연판정 옵셋만큼 차이를 갖는 제2 연판정 리드 레벨을 이용하여 상기 제1 연판정 데이터를 독출하는 단계를 포함하는 비휘발성 메모리 장치의 데이터 디코딩 방법.
  5. 제4항에 있어서, 상기 제3-2 디코딩 단계는
    상기 제2 경판정 리드 레벨로부터 제3 연판정 옵셋만큼 차이를 갖는 제3 연판정 리드 레벨과 상기 제2 경판정 리드 레벨로부터 제4 연판정 옵셋만큼 차이를 갖는 제4 연판정 리드 레벨을 이용하여 상기 제2 연판정 데이터를 독출하는 단계를 포함하며,
    상기 제3 및 제4 연판정 옵셋 각각은 상기 제1 및 제2 연판정 옵셋과 같은 값이거나, 또는 다른 값인 비휘발성 메모리 장치의 데이터 디코딩 방법.
  6. 제3항에 있어서, 상기 제3-1 디코딩 단계는
    상기 제2 경판정 리드 레벨이 상기 제1 경판정 리드 레벨로부터 일정한 범위 밖에 위치하는 경우에는 상기 제2 경판정 데이터를 이용하여 경판정 디코딩을 수행하는 단계; 및
    상기 제2 경판정 리드 레벨이 상기 제1 경판정 리드 레벨로부터 상기 일정한 범위 내에 위치하는 경우에는 상기 제2 경판정 데이터 및 상기 제1 연판정 데이터를 이용하여 연판정 디코딩을 수행하거나, 다음 디코딩 단계로 이동하는 단계를 포함하는 비휘발성 메모리 장치의 데이터 디코딩 방법.
  7. 제3항에 있어서, 상기 방법은
    상기 제3 디코딩 단계에서 디코딩 실패인 경우 수행되는 제4 디코딩 단계를 더 포함하고,
    상기 제4 디코딩 단계는
    상기 제2 경판정 리드 레벨을 제3 경판정 리드 레벨로 변경하고, 상기 제3 경판정 리드 레벨을 이용하여 제3 경판정 데이터를 독출하고, 상기 제 3 경판정 데이터를 이용하여 디코딩을 수행 하거나, 상기 제3 경판정 데이터 및 이전에 독출된 연판정 데이터를 함께 이용하여 디코딩하는 제4-1 디코딩 단계; 및
    상기 제4-1 디코딩 단계에서 디코딩 실패인 경우, 상기 제3 경판정 리드 레벨에 기초한 제3 연판정 데이터를 독출하고, 상기 제3 연판정 데이터를 이용하여 디코딩하는 제4-2 디코딩 단계를 더 포함하는 비휘발성 메모리 장치의 데이터 디코딩 방법.
  8. 제7항에 있어서,
    상기 제4-1 디코딩 단계는 제2 리드 레벨 트래킹 기법을 이용하여 상기 제3 경판정 리드 레벨을 찾는 단계를 포함하며,
    상기 제3-1 디코딩 단계에서의 상기 제1 리드 레벨 트래킹 기법 및 상기 제4-1 디코딩 단계에서의 상기 제2 리드 레벨 트래킹 기법은 서로 다른 기법을 적용하는 것을 특징으로 하는 비휘발성 메모리 장치의 데이터 디코딩 방법.
  9. 제7항에 있어서, 상기 제 4-1 디코딩 단계는
    상기 제3 경판정 리드 레벨이 상기 제2 경판정 리드 레벨로부터 일정한 범위 밖에 위치하는 경우에는 상기 제3 경판정 데이터를 이용하여 경판정 디코딩을 수행하는 단계; 및
    상기 제3 경판정 리드 레벨이 상기 제2 경판정 리드 레벨로부터 상기 일정한 범위 내에 위치하는 경우에는 상기 제3 경판정 데이터 및 상기 제2 연판정 데이터를 함께 이용하여 연판정 디코딩을 수행하는 단계를 포함하는 비휘발성 메모리 장치의 데이터 디코딩 방법.
  10. 제7항에 있어서, 상기 제 3 연판정 데이터(soft decision data) 독출을 위한 연판정 옵셋은 상기 제1 연판정 데이터 독출을 위한 상기 제1 및 제2 연판정 옵셋과 같은 값이거나, 상기 제 2 연판정 데이터 독출을 위한 제3 및 제4 연판정 옵셋과 같은 값 또는, 상기 제1 내지 제4 연판정 옵셋과 다른 값인 비휘발성 메모리 장치의 데이터 디코딩 방법.
  11. 제7항에 있어서, 상기 방법은
    상기 제4 디코딩 단계에서 디코딩 실패인 경우, 연판정 리드 레벨의 수를 증가시킴으로써 상기 비휘발성 메모리 장치로부터 추가 데이터 리드 과정을 통하여 독출한 연판정 데이터의 비트수를 증가시키고, 상기 비트수가 증가된 상기 연판정 데이터를 이용하여 디코딩하는 제5 디코딩 단계를 더 포함하고,
    상기 제5 디코딩 단계는
    특정 연판정 데이터 비트수에 대하여, 연판정 리드 레벨을 결정하기 위한 미리 설정된 연판정 오프셋 세트 각각을 적용하여 상기 특정 연판정 데이터 비트수를 가지는 상기 연판정 데이터를 독출하고, 독출한 연판정 데이터를 이용하여 디코딩 하는 단계를 포함하는 비휘발성 메모리 장치의 데이터 디코딩 방법.
  12. 제3항에 있어서, 상기 제1 리드 레벨 트래킹 기법은
    상기 제1 경판정 데이터와 상기 제 1 연판정 데이터를 이용하여, 상기 비휘발성 메모리 장치의 산포 변화 정도를 예측하여 상기 제2 경판정 리드 레벨을 산출하는 것을 특징으로 하는 비휘발성 메모리 장치의 데이터 디코딩 방법.
  13. 제2항에 있어서, 상기 제3 디코딩 단계는
    디코딩이 성공할 때까지 상기 제3-1 디코딩 단계와 상기 제3-2 디코딩 단계를 순차적으로 미리 설정된 최대 반복 회수(Max_loop) 이하로 수행하는 것을 특징으로 하는 비휘발성 메모리 장치의 데이터 디코딩 방법.
  14. 제2항에 있어서, 상기 방법은
    상기 제1 디코딩 단계와 상기 제2 디코딩 단계 사이에,
    (a) 상기 제1 디코딩 단계에서 디코딩 실패인 경우, 상기 비휘발성 메모리에서 이전 독출한 데이터의 디코딩 과정에서 디코딩이 성공한 경판정 리드 레벨을 제3 경판정 리드 레벨로 설정하고, 상기 제3 경판정 리드 레벨을 이용하여 제3 경판정 데이터를 독출하고, 상기 제3 경판정 데이터를 이용하여 디코딩하는 단계; 또는
    (b) 상기 제3 경판정 데이터를 이용하여 디코딩하는 단계에서 디코딩 실패인 경우, 제4 경판정 리드 레벨을 미리 설정된 하나 이상의 리드 레벨들 중 하나로 설정하고, 상기 제4 경판정 리드 레벨을 이용하여 제4 경판정 데이터를 독출하고, 상기 제4 경판정 데이터를 이용하여 디코딩하는 단계 중 적어도 어느 하나의 단계를 더 포함하는 비휘발성 메모리 장치의 데이터 디코딩 방법.
  15. 제 14 항에 있어서, 상기 성공한 경판정 리드 레벨은
    현재 디코딩 과정의 직전 디코딩 과정에서 디코딩 성공한 경우에 적용되었던 경판정 리드 레벨 또는 현재 디코딩 과정이 진행중인 비휘발성 메모리가 속한 영역에서 디코딩 성공한 경우에 적용되었던 경판정 리드 레벨인 비휘발성 메모리 장치의 데이터 디코딩 방법.
  16. 제2항에 있어서, 상기 방법은
    상기 제2 디코딩 단계와 상기 제3 디코딩 단계 사이에,
    (c) 상기 제2 디코딩 단계에서 디코딩 실패인 경우, 상기 비휘발성 메모리에서 이전 독출한 데이터의 디코딩 과정에서 디코딩이 성공한 경판정 리드 레벨을 제3 경판정 리드 레벨로 설정하고, 상기 제3 경판정 리드 레벨을 이용하여 제3 경판정 데이터를 독출하고, 상기 제3 경판정 데이터를 이용하여 디코딩하고, 디코딩 실패시 상기 비휘발성 메모리에서 이전 독출한 데이터의 디코딩 과정에서 디코딩이 성공한 연판정 리드 레벨을 제3 연판정 리드 레벨로 설정하여 제3 연판정 데이터를 독출하고, 상기 제 3 연판정 데이터를 이용하여 디코딩하는 단계; 또는
    (d) 상기 제3 연판정 데이터를 이용하여 디코딩하는 단계에서 디코딩 실패인 경우, 제4 경판정 리드 레벨을 미리 설정된 하나 이상의 리드 레벨 세트들 중 하나로 설정하고, 상기 제4 경판정 리드 레벨을 이용하여 제4 경판정 데이터를 독출하고, 상기 제4 경판정 데이터를 이용하여 디코딩하고, 디코딩 실패시 제4 연판정 리드 레벨을 미리 설정된 하나 이상의 리드 레벨 세트들 중 하나로 설정하여 제4 연판정 데이터를 독출하고, 상기 제4 연판정 데이터를 이용하여 디코딩하는 단계 중 적어도 어느 하나의 단계를 더 포함하는 비휘발성 메모리 장치의 데이터 디코딩 방법.
  17. 비휘발성 메모리 장치의 데이터 디코딩 방법에 있어서,
    버퍼 메모리와 함께 동작하는 메모리 컨트롤러를 이용하여 복수(2이상)의 디코딩 모드들을 설정하는 단계; 및
    상기 메모리 컨트롤러를 이용하여, 상기 비휘발성 메모리 장치의 열화 지표에 따라 상기 복수의 디코딩 모드들 중 적어도 하나를 선택하여 수행하는 단계를 포함하되,
    상기 복수의 디코딩 모드들은 제1 디코딩 모드 및 제2 디코딩 모드를 포함하고,
    상기 복수의 디코딩 모드들 중 적어도 하나를 선택하여 수행하는 단계는:
    상기 비휘발성 메모리 장치 초기에는 상기 제1 디코딩 모드를 수행하는 단계;
    상기 제1 디코딩 모드에서 상기 열화 지표가 제2 임계치 보다 크면 상기 제2 디코딩 모드로 변경하여 수행하는 단계; 및
    상기 제2 디코딩 모드에서 상기 열화 지표가 상기 제2 임계치 보다 작은 제1 임계치 보다 작으면 상기 제1 디코딩 모드로 복귀하는 단계를 포함하고,
    상기 열화 지표는 프로그램-소거 싸이클, 리드 싸이클, ECC 디코딩 성공 및 실패의 여부, ECC 디코딩 성공시의 코드워드 내 에러 개수, 제1 특정 기간 내의 평균 에러들의 수, 제2 특정 기간 내의 평균 반복 횟수, 제1 모니터링 데이터의 산포의 변화량, 그리고 제2 모니터링 데이터의 특정 리드 레벨의 셀 개수의 변화 중 적어도 두 개에 기반하는 비휘발성 메모리 장치의 데이터 디코딩 방법.
  18. 제17항에 있어서,
    상기 제2 디코딩 모드에서 수행되는 제 2 디코딩 동작에서의 데이터 독출 시간은 상기 제1 디코딩 모드에서 수행되는 제1 디코딩 동작에서의 데이터 독출 시간보다 크지만,
    상기 제2 디코딩 동작이 제공하는 오류정정 능력(error correction performance)은 상기 제1 디코딩 동작이 제공하는 오류정정 능력보다 큰 비휘발성 메모리 장치의 데이터 디코딩 방법.
  19. 제18항에 있어서,
    상기 제 1 디코딩 모드의 리드 레벨 변경 방법, 디코딩 방법, 오류 정정 능력, 및 데이터 독출 시간 중 적어도 하나는 각각 상기 제 2 디코딩 모드의 상기 적어도 하나와 상이한 비휘발성 메모리 장치의 데이터 디코딩 방법.
  20. 삭제
  21. 제17항에 있어서,
    상기 제1 디코딩 모드 또는 상기 제2 디코딩 모드에서, 상기 열화 지표가 상기 제1 임계치 보다 크고 상기 제2 임계치 보다 작으면 제3 디코딩 모드로 변경하여 수행하는 단계를 포함하는 비휘발성 메모리 장치의 데이터 디코딩 방법.
KR1020140047903A 2014-04-22 2014-04-22 비휘발성 메모리 장치의 데이터 디코딩 방법 KR102149668B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020140047903A KR102149668B1 (ko) 2014-04-22 2014-04-22 비휘발성 메모리 장치의 데이터 디코딩 방법
US14/693,446 US9672942B2 (en) 2014-04-22 2015-04-22 Data decoding method of non-volatile memory device and apparatus for performing the method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020140047903A KR102149668B1 (ko) 2014-04-22 2014-04-22 비휘발성 메모리 장치의 데이터 디코딩 방법

Publications (2)

Publication Number Publication Date
KR20150121835A KR20150121835A (ko) 2015-10-30
KR102149668B1 true KR102149668B1 (ko) 2020-08-31

Family

ID=54322877

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020140047903A KR102149668B1 (ko) 2014-04-22 2014-04-22 비휘발성 메모리 장치의 데이터 디코딩 방법

Country Status (2)

Country Link
US (1) US9672942B2 (ko)
KR (1) KR102149668B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102345067B1 (ko) * 2021-08-25 2021-12-29 삼성전자주식회사 스토리지 장치 및 스토리지 컨트롤러의 구동 방법

Families Citing this family (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9032271B2 (en) * 2012-12-07 2015-05-12 Western Digital Technologies, Inc. System and method for lower page data recovery in a solid state drive
KR20160014976A (ko) * 2014-07-30 2016-02-12 에스케이하이닉스 주식회사 메모리 장치 및 이를 포함하는 메모리 시스템
KR20160102738A (ko) * 2015-02-23 2016-08-31 에스케이하이닉스 주식회사 컨트롤러, 반도체 메모리 시스템 및 그것의 동작 방법
KR102500616B1 (ko) * 2016-02-26 2023-02-17 에스케이하이닉스 주식회사 데이터 저장 장치 및 그것의 동작 방법
US10395754B2 (en) * 2016-03-21 2019-08-27 Nandext Srl Method for decoding bits in a solid state drive, and related solid state drive
KR102683257B1 (ko) * 2017-01-17 2024-07-11 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작방법
KR20180086816A (ko) * 2017-01-23 2018-08-01 에스케이하이닉스 주식회사 사전-검사된 에러율에 따른 적응형 에러정정을 수행하는 메모리장치 및 전자장치와, 메모리장치의 동작방법
US10901656B2 (en) * 2017-11-17 2021-01-26 SK Hynix Inc. Memory system with soft-read suspend scheme and method of operating such memory system
US10740177B2 (en) 2018-01-16 2020-08-11 International Business Machines Corporation Optimizing error correcting code in three-dimensional stacked memory
US10552259B2 (en) * 2018-03-15 2020-02-04 Western Digital Technologies, Inc. Recovery combining hard decoding, soft decoding and artificial codeword generation
KR102571747B1 (ko) * 2018-04-06 2023-08-29 에스케이하이닉스 주식회사 데이터 저장 장치 및 그것의 동작 방법
US10636493B2 (en) * 2018-06-27 2020-04-28 Western Digital Technologies, Inc. Relaxed erase parameters for block erasures in non-volatile storage media
US10985779B2 (en) * 2018-08-27 2021-04-20 Polaran Haberlesme Teknolojileri Anonim Sirketi Method and system for decoding data using compressed channel output information
JP2020047337A (ja) 2018-09-18 2020-03-26 キオクシア株式会社 メモリシステム
US11128314B2 (en) 2019-06-24 2021-09-21 SK Hynix Inc. Error characteristic estimation for NAND flash
KR20220103227A (ko) * 2021-01-14 2022-07-22 삼성전자주식회사 비휘발성 메모리 장치, 그것을 제어하는 제어기, 그것을 갖는 저장 장치, 및 그것의 리드 방법
US11556416B2 (en) * 2021-05-05 2023-01-17 Apple Inc. Controlling memory readout reliability and throughput by adjusting distance between read thresholds
US11847342B2 (en) 2021-07-28 2023-12-19 Apple Inc. Efficient transfer of hard data and confidence levels in reading a nonvolatile memory
US11894068B2 (en) * 2021-09-16 2024-02-06 Sandisk Technologies Llc Efficient sensing of soft bit data for non-volatile memory
US11971829B2 (en) 2021-09-16 2024-04-30 Sandisk Technologies Llc On-the-fly compression scheme for soft bit data in non-volatile memory
US11971826B2 (en) 2021-09-16 2024-04-30 Sandisk Technologies Llc Architecture and data path options for compression of soft bit data in non-volatile memories
US11907545B2 (en) 2021-09-16 2024-02-20 Sandisk Technologies Llc On-the-fly multiplexing scheme for compressed soft bit data in non-volatile memories
US11901019B2 (en) 2021-09-16 2024-02-13 Sandisk Technologies Llc Use of data latches for compression of soft bit data in non-volatile memories
KR102532038B1 (ko) * 2021-12-15 2023-05-12 삼성전자주식회사 에러 정정 코드(ecc) 디코딩 방법 및 이를 수행하는 메모리 시스템
US20230342244A1 (en) * 2022-04-20 2023-10-26 Western Digital Technologies, Inc. Read Look Ahead Optimization According To NVMe Dataset Management Hints

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090319859A1 (en) * 2008-06-24 2009-12-24 Sandisk Il Ltd. Method and apparatus for error correction according to erase counts of a solid-state memory

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101202537B1 (ko) 2006-05-12 2012-11-19 애플 인크. 메모리 디바이스를 위한 결합된 왜곡 추정 및 에러 보정 코딩
US7533328B2 (en) 2006-07-04 2009-05-12 Sandisk Il, Ltd. Method of error correction in a multi-bit-per-cell flash memory
US7975192B2 (en) 2006-10-30 2011-07-05 Anobit Technologies Ltd. Reading memory cells using multiple thresholds
US7814401B2 (en) 2006-12-21 2010-10-12 Ramot At Tel Aviv University Ltd. Soft decoding of hard and soft bits read from a flash memory
US7966550B2 (en) 2007-03-31 2011-06-21 Sandisk Technologies Inc. Soft bit data transmission for error correction control in non-volatile memory
US7966546B2 (en) 2007-03-31 2011-06-21 Sandisk Technologies Inc. Non-volatile memory with soft bit data transmission for error correction control
US7894264B2 (en) 2007-11-07 2011-02-22 Micron Technology, Inc. Controlling a memory device responsive to degradation
WO2009072103A2 (en) 2007-12-05 2009-06-11 Densbits Technologies Ltd. Flash memory apparatus and methods using a plurality of decoding stages including optional use of concatenated bch codes and/or designation of 'first below' cells
US8321757B2 (en) * 2008-06-22 2012-11-27 Sandisk Il Ltd. Method and apparatus for error correction
US8169825B1 (en) 2008-09-02 2012-05-01 Anobit Technologies Ltd. Reliable data storage in analog memory cells subjected to long retention periods
US8418021B2 (en) 2009-03-27 2013-04-09 Mediatek Inc. Storage controller with encoding/decoding circuit programmable to support different ECC requirements and related method thereof
US8724387B2 (en) 2009-10-22 2014-05-13 Densbits Technologies Ltd. Method, system, and computer readable medium for reading and programming flash memory cells using multiple bias voltages
TWI594256B (zh) 2010-04-19 2017-08-01 慧榮科技股份有限公司 用來進行記憶體存取管理之方法以及記憶裝置及其控制器
US8539311B2 (en) 2010-07-01 2013-09-17 Densbits Technologies Ltd. System and method for data recovery in multi-level cell memories
US20140223255A1 (en) * 2012-12-18 2014-08-07 Western Digital Technologies, Inc. Decoder having early decoding termination detection
TWI512732B (zh) * 2013-08-30 2015-12-11 Phison Electronics Corp 解碼方法、記憶體儲存裝置與非揮發性記憶體模組
TWI523018B (zh) * 2013-12-31 2016-02-21 群聯電子股份有限公司 解碼方法、記憶體儲存裝置、記憶體控制電路單元

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090319859A1 (en) * 2008-06-24 2009-12-24 Sandisk Il Ltd. Method and apparatus for error correction according to erase counts of a solid-state memory

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102345067B1 (ko) * 2021-08-25 2021-12-29 삼성전자주식회사 스토리지 장치 및 스토리지 컨트롤러의 구동 방법

Also Published As

Publication number Publication date
KR20150121835A (ko) 2015-10-30
US9672942B2 (en) 2017-06-06
US20150303948A1 (en) 2015-10-22

Similar Documents

Publication Publication Date Title
KR102149668B1 (ko) 비휘발성 메모리 장치의 데이터 디코딩 방법
KR101979734B1 (ko) 메모리 장치의 독출 전압 제어 방법 및 이를 이용한 데이터 독출 방법
KR102201697B1 (ko) 리텐션 드리프트 이력 기반 비휘발성 메모리 판독 임계치 최적화
US10102059B2 (en) Data storage device capable of preventing a data retention fail of a nonvolatile memory device and operating method thereof
KR102081415B1 (ko) 비휘발성 메모리 장치의 llr 최적화 방법 및 비휘발성 메모리 장치의 에러 정정 방법
US9009390B2 (en) Method for changing read parameter for improving read performance and apparatuses using the same
US9916906B2 (en) Periodically updating a log likelihood ratio (LLR) table in a flash memory controller
TWI474330B (zh) 用來進行記憶體存取管理之方法以及記憶裝置及其控制器
CN107622783B (zh) 译码方法、存储器存储装置及存储器控制电路单元
CN107015886B (zh) 操作存储设备的方法和操作包括其的数据处理***的方法
KR101756111B1 (ko) 메모리 컨트롤러 구동방법, 메모리 컨트롤러, 메모리 장치 및 메모리 시스템
US10381089B2 (en) Semiconductor memory system performing read operation based on counted memory cells and operating method thereof
CN106257594B (zh) 读取干扰收回策略
US20170242748A1 (en) Decoding method, memory storage device and memory control circuit unit
KR102002385B1 (ko) 데이터 저장 장치의 동작 방법
KR101716716B1 (ko) 플래그 셀들을 갖는 플래시 메모리 장치 및 그것의 프로그램 동작 방법
US9530509B2 (en) Data programming method, memory storage device and memory control circuit unit
US8593884B2 (en) Data storage system and a data retention method thereof
US9870830B1 (en) Optimal multilevel sensing for reading data from a storage medium
US20160027524A1 (en) Data storage device and operating method thereof
CN107146638B (zh) 译码方法、存储器储存装置及存储器控制电路单元
CN108428467B (zh) 读取电压追踪方法、存储器储存装置及控制电路单元
JP2018160056A (ja) メモリコントローラ、メモリシステムおよび制御方法
KR102333746B1 (ko) 재사용 주기에 따라 마모도를 관리하는 저장 장치의 동작 방법
US9218885B2 (en) System to control a width of a programming threshold voltage distribution width when writing hot-read data

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant