KR20110128436A - 비휘발성 메모리 장치의 리드 레벨 추정 방법 및 이를 수행하는 메모리 컨트롤러, 및 기록매체 - Google Patents

비휘발성 메모리 장치의 리드 레벨 추정 방법 및 이를 수행하는 메모리 컨트롤러, 및 기록매체 Download PDF

Info

Publication number
KR20110128436A
KR20110128436A KR1020100047886A KR20100047886A KR20110128436A KR 20110128436 A KR20110128436 A KR 20110128436A KR 1020100047886 A KR1020100047886 A KR 1020100047886A KR 20100047886 A KR20100047886 A KR 20100047886A KR 20110128436 A KR20110128436 A KR 20110128436A
Authority
KR
South Korea
Prior art keywords
information
cells
threshold level
level
state
Prior art date
Application number
KR1020100047886A
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 KR1020100047886A priority Critical patent/KR20110128436A/ko
Priority to US13/114,337 priority patent/US8516183B2/en
Publication of KR20110128436A publication Critical patent/KR20110128436A/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/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • 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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • 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
    • 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
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • G11C16/3404Convergence or correction of memory cell threshold voltages; Repair or recovery of overerased or overprogrammed cells
    • 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/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • G11C16/349Arrangements for evaluating degradation, retention or wearout, e.g. by counting erase cycles
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7209Validity control, e.g. using flags, time stamps or sequence numbers

Abstract

본 발명에 따른 비휘발성 메모리 장치의 리드 레벨 추정 방법은 (a) 프로그램 동작시에 프로그램 데이터 중 특정 로직 레벨을 갖는 셀 개수에 관한 정보 및 특정 셀 상태를 갖는 셀 개수에 관한 정보 중 적어도 하나의 정보(이하, 제1 정보라 함)를 산출하여 저장하는 단계; (b) 설정된 임계 레벨에 따라 상기 프로그램 데이터를 리드하고, 리드된 데이터 중 상기 설정된 임계 레벨에 의해 구분되는 적어도 하나의 상태를 갖는 셀 개수에 관한 정보(이하, 제2 정보라 함)를 산출하는 단계; (c) 상기 제2 정보에 상응하는 정보에 해당하는 상기 적어도 하나의 상태를 갖는 셀 개수에 관한 정보(이하, 제3 정보라 함)를 상기 제1 정보를 이용한 확률 값을 통하여 추정하는 단계; (d) 상기 제2 정보 및 제3 정보를 비교하는 단계; 및 (e) 상기 비교 결과에 따라, 상기 임계 레벨의 변경 여부를 결정하는 단계를 포함한다.

Description

비휘발성 메모리 장치의 리드 레벨 추정 방법 및 이를 수행하는 메모리 컨트롤러, 및 기록매체{METHOD FOR TRACKING READ LEVEL FOR NON-VOLATILE MEMORY, MEMORY CONTROLLER PERFORMING THE SAME AND RECORDING MEDIUM}
본 발명은 리드 레벨 추정 방법 및 그 시스템에 관한 것으로, 보다 구체적으로는 데이터 비트 수 또는 그 확률을 이용하여 리드 레벨을 추정하는 방법 및 이를 수행하는 메모리 컨트롤러 및 기록매체에 관한 것이다.
메모리의 집적도를 더욱 향상시키기 위해서 한 개의 메모리 셀에 복수의 데이터를 저장하는 멀티-레벨 메모리에 대한 연구가 활발하다. 멀티-레벨 메모리의 메모리 셀에는 2 비트 이상의 멀티-비트가 저장될 수 있다. 이렇게 멀티-비트를 저장하는 메모리 셀을 멀티-레벨 셀(multi-level cell: MLC)이라 하고, 이에 대해 단일-비트를 저장하는 메모리 셀을 단일-레벨 셀(single-level cell: SLC)이라 한다. 멀티-레벨 셀의 문턱 전압 분포는 시간이 지남에 따라 이웃셀과의 커플링(coupling), 전하 손실(charge loss) 등으로 인하여 변경된다.
이로써, 비휘발성 메모리에서는 비트오류율(BER:Bit Error Rate)을 최소화하기 위하여 리드 레벨을 비교적 정확하게 추정하는 것이 바람직하다.
리드(Read) 레벨 추정을 위해서 다양한 알고리즘이 제안되어 왔다. 일반적으로 비트오류율 개선을 주요 목적으로 하는 알고리즘들은 메모리 자체의 리드 회수 증가 및 데이터 트랜스퍼(data transfer) 증가에 따른 스피드 성능(speed performance)이 저하되는 문제점이 있다.
이러한 문제점을 개선하기 위하여 스피드 성능 저하를 최소화하는 방향으로 알고리즘을 제안할 경우, 신뢰도가 좋지 않아 비트오류율이 증가하는 문제점이 발생한다.
따라서, 비트오류율과 스피드 성능을 모두 고려할 수 있는 리드 레벨 추정 방법이 요구된다.
따라서, 본 발명이 해결하려는 과제는 비트오류율과 스피드 성능을 모두 고려할 수 있는 확률을 이용한 리드 레벨 추정 방법 및 이를 수행하는 메모리 컨트롤러, 및 기록매체를 제공하는 것이다.
본 발명의 실시예에 따른 비휘발성 메모리 장치의 리드 레벨 추정 방법은
(a) 프로그램 동작시에 프로그램 데이터 중 특정 로직 레벨을 갖는 셀 개수에 관한 정보 및 특정 셀 상태를 갖는 셀 개수에 관한 정보 중 적어도 하나의 정보(이하, 제1 정보라 함)를 산출하여 저장하는 단계; (b) 설정된 임계 레벨에 따라 상기 프로그램 데이터를 리드하고, 리드된 데이터 중 상기 설정된 임계 레벨에 의해 구분되는 적어도 하나의 상태를 갖는 셀 개수에 관한 정보(이하, 제2 정보라 함)를 산출하는 단계; (c) 상기 제2 정보에 상응하는 정보에 해당하는 상기 적어도 하나의 상태를 갖는 셀 개수에 관한 정보(이하, 제3 정보라 함)를 상기 제1 정보를 이용한 확률 값을 통하여 추정하는 단계; (d) 상기 제2 정보 및 제3 정보를 비교하는 단계; 및 (e) 상기 비교 결과에 따라, 상기 임계 레벨의 변경 여부를 결정하는 단계를 포함할 수 있다.
상기 특정 셀 상태는 멀티-비트를 저장할 수 있는 멀티-레벨 셀이 가질 수 있는 상태들 중 적어도 하나를 포함하고, 상기 제1 정보는 특정 비트(LSB 또는 MSB)가 제1 로직 레벨인 멀티-레벨 셀의 수이며, 상기 제2 정보 및 제3 정보 각각은 상기 특정 셀 상태를 가지는 멀티-레벨 셀의 수 또는 상기 특정 셀 상태를 가지는 멀티-레벨 셀의 수를 이용하여 산출된 수치일 수 있다.
상기 제1 정보는 상기 비휘발성 메모리 장치의 스페어 영역 또는 메모리 컨트롤러 내부의 버퍼에 저장될 수 있다.
또한, 상기 (e) 단계는 상기 비교 결과, 상기 제2 정보와 상기 제3 정보 간의 차이에 따라 상기 임계 레벨의 변경 여부를 결정하는 단계를 포함할 수 있다.
또한, 상기 방법은 상기 차이가 미리 정해진 값 이내일 경우에는 상기 임계 레벨을 변경하지 않고, 상기 미리 정해진 값 초과일 경우에는 다른 임계 레벨을 설정하여 상기 (b) 내지 (d)단계를 반복하는 단계를 포함할 수 있다.
본 발명의 실시예에 따른 메모리 컨트롤러는 임계 레벨을 설정하고 상기 메모리 장치를 제어하는 제어 모듈; 상기 제어 모듈에 연결되고 상기 메모리 장치에 프로그램될 프로그램 데이터 중 특정 로직 레벨을 갖는 셀 개수에 관한 정보 및 특정 셀 상태를 갖는 셀 개수에 관한 정보 중 적어도 하나의 정보(이하, 제1 정보라 함)를 산출하고, 설정된 임계 레벨에 따라 리드된 데이터 중 상기 설정된 임계 레벨에 의해 구분되는 적어도 하나의 상태를 갖는 셀 개수에 관한 정보(이하, 제2 정보라 함)를 산출하고, 상기 제2 정보에 상응하는 정보에 해당하는 상기 적어도 하나의 상태를 갖는 셀 개수에 대한 정보(이하, 제3 정보라 함)를 상기 제1 정보를 이용한 확률 값을 통하여 산출하는 정보 산출부; 및 상기 제어 모듈 및 상기 정보 산출부에 연결되고, 상기 제2 정보 및 제3 정보를 비교하는 비교기를 포함할 수 있다.
상기 제어 모듈은 상기 비교기의 비교 결과, 상기 제2 정보와 상기 제3 정보간의 차이에 따라 상기 임계 레벨의 변경 여부를 결정할 수 있다.
상기 메모리 컨트롤러는 상기 제1 정보를 저장하기 위한 버퍼를 더 포함할 수 있다.
또한, 상기 제어 모듈은 상기 차이가 미리 정해진 값 초과일 경우에는 다시 임계 레벨을 설정할 수 있다.
또한, 상기 제어 모듈은 상기 비교기의 상기 비교 결과, 상기 차이가 미리 정해진 값 이내일 경우에는 상기 설정된 임계 레벨을 상기 버퍼에 저장하도록 할 수 있다.
또한, 상기 제어 모듈은 상기 차이가 미리 정해진 값 이내일 경우에는 이전에 저장된 임계 레벨을 기준으로 새로 찾은 임계 레벨까지의 간격 값을 미리 정해진 값과 비교할 수 있다.
또한, 상기 제어 모듈은 상기 비교 결과, 이전에 저장된 임계 레벨을 기준으로 새로 찾은 임계 레벨까지의 간격 값이 기준 값보다 클 경우 이전의 임계 레벨을 적용하고, 작을 경우 새로 찾은 임계 레벨을 저장 및 적용할 수 있다.
본 발명에 따른 메모리 시스템은 메모리 장치; 및 상기 설명된 메모리 컨트롤러를 포함할 수 있다.
또한, 상기 메모리 장치는 상기 제1 정보를 저장하기 위한 스페어 영역을 포함할 수 있다.
또한, 상기 메모리 컨트롤러는 상기 비교기의 상기 비교 결과, 상기 차이가 미리 정해진 값 이내일 경우에는 상기 설정된 임계 레벨을 상기 스페어 영역에 저장하도록 할 수 있다.
본 발명에 따른 리드 레벨 추정 방법 및 이를 수행하는 메모리 컨트롤러에 따르면, 스피드 성능을 보장하기 위하여 데이터 입출력 시간을 줄일 수 있고, 셀 오버헤드(cell overhead) 및 비트오류율(BER:Bit Error Rate)을 최소화할 수 있는 장점이 있다.
도 1a은 본 발명의 일 예에 따른 비휘발성 메모리 시스템의 블록도이다.
도 1b는 도 1a의 PR 모듈을 나타내기 위한 도면이다.
도 2a 내지 도 2c는 본 발명에 일 실시예에 따른 리드 레벨 추정 방법을 설명하기 위한 도면이다.
도 3a 및 도 3b는 본 발명에 다른 실시예에 따른 리드 레벨 추정 방법을 설명하기 위한 도면이다.
도 4는 본 발명의 일 예에 따른 리드 레벨 추정 방법과 일반적인 리드 레벨 추정 방법의 시뮬레이션에 따른 비트오류율을 나타낸다.
도 5a는 본 발명의 일 실시예에 따른 리드 레벨 추정 방법을 설명하기 위한 흐름도이다.
도 5b는 본 발명의 다른 실시예에 따른 리드 레벨 추정 방법을 설명하기 위한 흐름도이다.
도 6은 본 발명의 실시예에 따른 전자 시스템의 블록도이다.
도 7a 내지 도 7c 각각은 본 발명의 일 실시예에 따른 메모리 모듈을 나타내는 블록도이다.
본 명세서 또는 출원에 개시되어 있는 본 발명의 실시 예들에 대해서 특정한 구조적 내지 기능적 설명들은 단지 본 발명에 따른 실시 예를 설명하기 위한 목적으로 예시된 것으로, 본 발명에 따른 실시 예들은 다양한 형태로 실시될 수 있으며 본 명세서 또는 출원에 설명된 실시예들에 한정되는 것으로 해석되어서는 아니 된다.
본 발명에 따른 실시예는 다양한 변경을 가할 수 있고 여러가지 형태를 가질 수 있으므로 특정실시 예들을 도면에 예시하고 본 명세서 또는 출원에 상세하게 설명하고자 한다. 그러나, 이는 본 발명의 개념에 따른 실시 예를 특정한 개시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다.
제1 및/또는 제2 등의 용어는 다양한 구성 요소들을 설명하는데 사용될 수 있지만, 상기구성 요소들은 상기용어들에 의해 한정되어서는 안된다. 상기 용어들은 하나의 구성 요소를 다른 구성 요소로부터 구별하는 목적으로만, 예컨대 본 발명의 개념에 따른 권리 범위로부터 이탈되지 않은 채, 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소는 제1 구성요소로도 명명될 수 있다.
어떤 구성요소가 다른 구성요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다. 구성요소들 간의 관계를 설명하는 다른 표현들, 즉 "~사이에"와 "바로 ~사이에" 또는 "~에 이웃하는"과 "~에 직접 이웃하는" 등도 마찬가지로 해석되어야 한다.
본 명세서에서 사용한 용어는 단지 특정한 실시예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, "포함하다" 또는 "가지다" 등의 용어는 설시된 특징, 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가지고 있다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 가지는 것으로 해석되어야 하며, 본 명세서에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
이하, 첨부한 도면을 참조하여 본 발명의 바람직한 실시 예를 설명함으로써, 본 발명을 상세히 설명한다. 각 도면에 제시된 동일한 참조부호는 동일한 부재를 나타낸다.
도 1a는 본 발명의 일 예에 따른 비휘발성 메모리 시스템의 블록도이다. 이를 참조하면, 비휘발성 메모리 시스템(100)은 비휘발성 메모리 장치(120) 및 상기 메모리 장치(120)를 컨트롤하는 메모리 컨트롤러(110)를 포함한다.
메모리 장치(120)는 메모리 셀 어레이(Memory Array)(230), 디코더(Decoder)(240), 기입 드라이버/센스앰프(Write Driver/SA)회로(250), 칩 컨트롤러(Chip Controller)(260), 전압 발생기(Analog Voltage Generator)(270) 및 입출력 회로(I/O Circuit)(280)를 포함하고, 메모리 컨트롤러(110)는 SRAM(111), CPU(112), Host I/F(113), PR 모듈(Program/Read Module)(114) 및 Memory I/F(115)를 포함한다. 이때, 상기 SRAM(111), CPU(112), Host I/F(113), 및 Memory I/F(115)에 대해서는 통상 지식을 갖춘 자들은 용이하게 기능을 알 수 있는바 설명은 생략하고, PR 모듈(114)에 대한 구체적 설명은 도 1b의 설명에서 하기로 한다.
메모리 셀 어레이(230)는 메인 영역(231)와 스페어(Spare) 영역(232)을 포함한다.
메인 영역(231)은 사용자 데이터를 저장하는데 사용될 수 있어 사용자 데이터 영역이라고도 칭하며, 스페어 영역은 ECC(error correcting code) 정보 데이터 및 PR 모듈(114)에 의해 카운트된 프로그램할 데이터의 '0' 또는 '1'의 비트 수(또는 셀 개수)에 대한 확률 값을 저장하는데 사용될 수 있다.
디코더(240)는 로우 어드레스들에 응답하여 다수의 워드라인들 중에서 하나의 워드라인을 선택하고, 선택된 워드 라인으로 제1동작 전압을 공급하고 비선택된 워드라인들 각각으로 제2동작 전압을 공급할 수 있다. 예컨대, 프로그램 동작 모드에서, 디코더(240)는 선택된 워드라인으로 제1동작 전압(예컨대, 프로그램 전압)을 공급하고 비선택된 워드라인들 각각으로 제2동작 전압(예컨대, 패스 전압)을 공급할 수 있다. 또한, 읽기 동작 모드에서 디코더(240)는 선택된 워드라인으로 제1동작 전압(예컨대, 접지 전압)을 공급하고 비선택된 워드라인들 각각으로 제2동작 전압(예컨대, 읽기 전압)을 공급할 수 있다.
기입 드라이버/센스앰프 회로(250)는 다수의 비트라인들에 선택적으로 연결되어, 지정된 메모리 셀들로 데이터를 기입(즉, 프로그램)하거나 지정된 메모리 셀들로부터 데이터를 감지 증폭함으로써 리드(Read)한다. 기입 드라이버/센스앰프회로(250)는 프로그램 동작시 프로그램될 데이터 셋을 저장하고, 읽기 동작시 메모리 셀들로부터 리드된 데이터 셋를 저장하기 위한 다수의 데이터 저장 장치들(미도시)을 구비할 수 있다. 다수의 데이터 저장 장치들(미도시) 각각은 다수의 래치들로 구현될 수 있다. 다수의 데이터 저장 장치들(미도시)은 또한 프로그램 검증 동작시 리드된 데이터 셋을 저장할 수 있다.
기입 드라이버/센스앰프 회로(250)와 메모리셀 어레이(230) 사이에는 기입 드라이버 또는 센스앰프를 다수의 비트라인들에 선택적으로 연결하기 위한 스위칭 블록(미도시)이 더 구비될 수 있다.
칩 컨트롤러(260)는 외부에서 제공된 커맨드에 응답하여 메모리 장치의 동작(예컨대, 프로그램 동작, 소거 동작, 리드 동작 등)을 제어하기 위한 내부 제어 신호들(미도시)을 출력한다. 전압 발생기(270)는 메모리 장치(120)의 동작에 필요한 전압(예컨대, 프로그램 전압, 패스 전압, 읽기 전압 등)을 생성한다.
입출력 회로(280)는 외부(예컨대, 메모리 컨트롤러(110))와의 인터페이스 기능을 수행한다. 구체적으로는 외부로부터 커맨드 및 프로그램할 데이터를 수신하고, 상태 신호 및 리드된 데이터를 외부로 전송할 수 있다.
메모리 컨트롤러(110)는 호스트(Host)와 메모리 장치(120)간의 제반 데이터 교환을 제어한다. 예컨대, 메모리 컨트롤러(110)는 호스트(Host)의 제어에 따라 메모리 장치(120)를 제어하여 데이터를 기록하거나 데이터를 리드한다.
상기 설명에서는 스페어 영역(232)은 '0' 또는 '1' 비트의 확률 값이 저장된다고 기재하였으나 본 발명의 범위가 이에 한정되는 것은 아니다. 예컨대, 상기 확률 값을 산출하기 위한 '0' 또는 '1' 비트 수(또는 셀 개수)가 저장될 수도 있다.
도 1b는 도 1a의 PR 모듈을 나타내기 위한 도면이다. 도 1b를 참고하면, 상기 PR 모듈(114)은 비교기(comparator)(1141), 제어 모듈(control module)(1142) 및 정보 산출부를 구비한다.
정보 산출부는 메모리 장치(120)의 프로그램 동작시 프로그램할 데이터의 '0' 또는 '1' 비트를 카운트하는 카운터(1143)로 구현될 수 있지만, 이에 한정되는 것은 아니다. 예컨대, 프로그램할 데이터를 페이지 단위로 나누고 각 페이지 내에서 '0' 로직 레벨을 갖는 셀 개수('0' 비트 수) 또는 '1' 로직 레벨을 갖는 셀 개수('1' 비트 수)를 카운트할 수 있다.
상기 정보 산출부는 상기 셀 개수(또는 비트 수) 또는 상기 셀 개수에 대한 확률 값을 스페어 영역(232) 또는 메모리 컨트롤러(110)의 내부나 PR 모듈(114)의 내부의 버퍼(미도시)에 저장하도록 할 수 있다. 예컨대, PR 모듈(114)이 '0' 비트의 확률 값을 산출한다고 가정하고, LSB의 '0' 비트 셀 개수를 N10이라고 한다면, LSB의 '0' 비트의 확률 값은
Figure pat00001
(이때, N은 '0' 및 '1' 비트의 총 셀 개수)이 된다. 따라서, 산술적으로 LSB의 '1' 비트의 확률 값은
Figure pat00002
가 된다. 마찬가지로 MSB의 '0' 비트를 갖는 셀 개수를 N20이라고 한다면, MSB의 '0' 비트의 확률 값은
Figure pat00003
(이때, N은 '0' 및 '1' 비트를 갖는 총 셀 개수)이 되고, MSB의 '1' 비트의 확률 값은
Figure pat00004
가 된다.
비교기(1141)는 제어 모듈(1142) 및 카운터(1143)에 연결되고, 제어 모듈(1142)이 리드 동작을 제어하는 경우, 프로그램 동작 시의 상기 셀 개수에 대한 확률 값과 리드를 수행할 임계 레벨(예컨대, 문턱전압)에 따른 '0' 또는 '1' 비트의 확률 값을 비교하거나, 상기 프로그램 동작 시의 상기 셀 개수에 대한 확률 값에 기초한 '0' 또는 '1' 비트 셀 개수와 리드를 수행할 임계 레벨에 따른 '0' 또는 '1' 비트의 확률 값에 기초한 셀 개수를 비교하여 리드 레벨을 더 정확하게 추정하도록 할 수 있다. 이에 대해 도 2a 내지 도 2c에서 보다 구체적으로 설명하기로 한다.
상기 제어 모듈(1142)은 메모리 장치(120)의 프로그램 동작 및 리드 동작을 제어하고, 프로그램 동작시 상기 카운터가 프로그램할 데이터의 '0' 또는 '1' 비트를 카운트하도록 제어한다.
상기 제어 모듈(1142)은 리드 동작시 리드를 수행할 임계 레벨(예컨대, 문턱전압)을 설정하고, 상기 비교기(1141)에 따른 비교 결과 차이가 미리 정해진 값보다 크다고 판단되면 다시 임계 레벨을 설정하여 상기 비교기(1141)가 다시 설정된 임계 레벨에 따른 비교를 하도록 한다.
또한, 상기 제어 모듈(1142)은 모든 페이지 데이터를 사용하여 상태별 셀 개수(즉, 상태 수)를 카운트하도록 제어할 수도 있다.
각 메모리셀은 해당 메모리셀에 저장된 혹은 저장될 LSB와 MSB가 '0'인지 '1'인지에 따라 4가지 상태 중 하나의 상태로 결정되기 때문에, "상태" 혹은 "셀 상태" 는 하나의 멀티-레벨 메모리셀에 저장될 수 있는 비트들(2비트 이상)의 조합을 의미할 수 있다. 예컨대, MSB 및 LSB의 조합이 '11'인 경우 소거 상태 또는 "E"라 하고, '01'인 경우, 제1 프로그램 상태 또는 "P1"이라 하고, '00'인 경우 제2 프로그램 상태 또는 "P2"라 하며 '10'인 경우 제3 프로그램 상태 또는 "P3"라고 할 수 있지만, 이에 한정되지 않으며 MSB 및 LSB의 조합에 대한 따른 상태 정의는 달라질 수 있다. 이때에는, 상기 카운터(1143)는 모든 페이지 데이터에 대하여 4가지 상태("11', '01', '10' 및 '00') 각각의 수가 몇 개인지를 카운트하고, 상기 비교기(1141)는 상태 수를 비교할 수 있다.
상기 비교기(1141) 및 카운터(1143)는 모두 메모리 컨트롤러(110) 내부의 PR 모듈(114)에 위치하는 것으로 작성되었으나, 본 발명의 범위가 이에 한정되는 것은 아니다. 예컨대, 상기 비교기(1141) 및 카운터(1143)는 메모리 장치(120) 내부에 위치할 수도 있다.
도 2a 내지 도 2c는 본 발명의 일 실시예에 따른 리드 레벨 추정 방법을 설명하기 위한 도면이다. 본 발명의 일 실시예에 따른 리드 레벨 추정 방법은 도 1에 도시된 메모리 컨트롤러(110)에 의하여 수행될 수 있다.
도 2a 내지 도 2c에서는 2-비트 MLC(Multi Level Cell)의 프로그램 동작 및 리드 동작에 기초하여 본 발명의 일 실시예에 따른 리드 레벨 추정 방법이 설명된다. 이하, 도 2a 내지 도 2c의 설명에서 표현되는 여러가지 셀 개수들, 즉, 프로그램 동작시 프로그램할 데이터의 '0' 비트를 갖는 셀 개수, 임계 레벨 설정에 기초하여 구분되는 적어도 하나의 상태(예컨대, 제1상태 내지 제4상태)를 갖는 셀 개수, 및 상기 적어도 하나의 상태를 갖는 상태를 갖는 셀 개수에 상응하는 값을 상기 프로그램할 데이터의 '0' 비트를 갖는 셀 개수를 이용한 확률 값을 통해 산출한 값(셀 개수)은 각각 제1 정보, 제2 정보 및 제3 정보에 해당한다. 결국, 제3 정보는 제2 정보에 상응하는 값이며, 제1정보를 이용한 확률 값을 통해 산출된다.
도 2a 내지 도 2c를 참고하면, 앞서 설명한 바와 같이 카운터(1143)는 메모리 장치(120)의 프로그램 동작시 프로그램할 데이터의 '0' 비트를 갖는 셀 개수(제1 정보)를 카운트하고, 이에 대한 확률 값은 스페어 영역(232)에 저장되는 것으로 가정한다. 또는, 상기 정보 산출부에 따라 산출된 상기 프로그램할 데이터의 '0' 비트를 갖는 셀 개수가 스페어 영역(232)에 저장될 수도 있다.
상기 프로그램할 데이터의 '0' 비트를 갖는 셀 개수에 대한 확률 값을 계산해보면, LSB(Least Significant Bit)의 '0' 비트의 개수는 N10이고, LSB의 '0' 비트의 확률은
Figure pat00005
, LSB의 '1' 비트의 확률은
Figure pat00006
, MSB(Most Significant Bit)의 '0' 비트를 갖는 셀 개수를 N20고, MSB의 '0' 비트의 확률은
Figure pat00007
, 및 MSB의 '1' 비트의 확률은
Figure pat00008
가 된다.
상기 스페어 영역(232)은 '0' 비트 개수에 대한 확률 값인
Figure pat00009
Figure pat00010
을 저장할 수도 있고,
Figure pat00011
,
Figure pat00012
,
Figure pat00013
Figure pat00014
을 모두 저장할 수도 있다.
도 2a를 참고하면, 메모리 장치(120)의 리드 동작시 LSB의 경우, 메모리 컨트롤러(110)의 PR 모듈(114)에 의해 설정된 임계 레벨(R10)에 따라 리드된 LSB 비트들 중 '0' 비트 셀 개수(제2 정보)(NR10)를, 상기 스페어 영역(232)에 저장된 LSB에 대한 '0' 비트 확률 값에 기초한 '0' 비트 셀 개수(제3 정보)와 상기 비교기(1141)를 통해 비교할 수 있고, '0' 비트가 아닌 '1' 비트 수를 비교하여 판단해도 무방하다. 이때, 임계 레벨(R10)은 LSB가 '1' 비트를 나타내는 제1상태(state 1) 및 제2상태(state 2)와, LSB가 '0' 비트를 나타내는 제3상태(state 3) 및 제4상태(state 4)를 구분하기 위한 레벨에 해당한다.
비교결과, 미리 정해진 범위 값을 초과하는 경우, 임계 레벨(R10)을 재설정하여 다시 비교 판단하고, 미리 정해진 점위 값 이내라고 판단이 된다면 MSB를 판단한다.
하지만, 본 발명의 범위가 이에 한정되는 것은 아니다. 예컨대, 비교 결과 상기 차이의 부호(예컨대, + 또는 -)가 달라지는 지점까지 임계 레벨을 재설정하여 다시 비교 판단하고, 상기 부호가 달라지는 지점 및 달라지기 직전의 지점 사이의 비교 결과의 절대적인 차이를 이용하여 임계 레벨을 결정할 수도 있다.
도 2b 및 도 2c를 참고하면, MSB의 경우, 임계 레벨들(R20 및 R21) 설정에 기초하여 도 2a의 경우와 마찬가지로 비교 판단할 수 있다.
MSB의 경우 '1' 비트를 나타내는 제1상태(state 1) 및 제4상태(state 4)와 '0' 비트를 나타내는 제2상태(state 2) 및 제3상태(state 3)을 구분하기 위하여 임계 레벨들(R20 및 R21)의 설정이 필요하다.
도 2b를 참고하면, 임계 레벨(R20) 설정에 기초한 제2상태(state 2) 내지 제4상태(state 4)의 셀 개수(제2 정보)(NR20)는, 상기 스페어 영역(232)에 저장된 '0' 비트 확률 값에 기초한 상기 각 상태별 '0' 비트 셀 개수(제3 정보)의 합과 상기 비교기(1141)를 통해 비교할 수 있다.
상기 스페어 영역(232)에 저장된 '0' 비트 확률 값에 기초한 제2상태 내지 제4상태의 '0' 비트 셀 개수(제3 정보)는, LSB가 '0' 비트인 제3상태(state3) 및 제4상태(state 4)의 셀 개수(
Figure pat00015
)에 제2상태(state 2)의 셀 개수를 플러스함으로써 알 수 있는데, 상기 제2상태(state 2)의 셀 개수는 LSB가 '1' 비트이면서 MSB가 '0' 비트인 셀 개수(
Figure pat00016
)를 계산하여 얻을 수 있다.
도 2c를 참고하면, 임계 레벨(R21) 설정에 기초한 제4상태(state 4)의 셀 개수(제2 정보)(NR21)를, 상기 스페어 영역(232)에 저장된 '0' 비트 확률 값에 기초한 상기 제4상태별 셀 개수(제3 정보)와 상기 비교기(1141)를 통해 비교할 수 있다.
상기 스페어 영역(232)에 저장된 '0' 비트 확률 값에 기초한 상기 제4상태(state 4)의 '0' 비트 셀 개수는, LSB가 '0' 비트이면서 MSB가 '1' 비트인 셀 개수(
Figure pat00017
)를 계산하여 얻을 수 있다.
하지만, MSB 임계 레벨(R20, R21)을 찾기 위해 필요한 상태별 셀 개수를 나타낸 수식값은 확률적으로 추정된 값으로 실제 정확한 상태별 셀 개수와는 차이가 있을 수 있다. 하지만, 정확한 상태별 셀 개수를 알기 위해서는 프로그램 전에 LBS/MSB 페이지(PAGE)의 데이터를 모두 정확히 알고 있어야 하므로 프로그램 방법 및 스피드 성능 측면에서 여러 가지 문제점을 갖는다. 본 발명은 이러한 스피드 성능 저하 문제점을 보완하는 방법으로, 페이지별로 임계 레벨을 찾기 위한 비교군을 찾는 방법을 제안한 것이다.
본 발명에 따르면, 전체 페이지의 데이터 사이즈(N)가 점차 커짐에 따라 확률적으로 추정된 값과 실제 값과의 오류도 점차 작아지게 되어 신뢰도 손실(loss)이 감소될 수 있는 장점이 있다.
도 2a 내지 도 2c에서 설명된 셀 개수의 비교(즉, 제2 정보와 제3 정보의 비교)는 각각 수학식 1 내지 수학식 3과 같이 표현될 수 있다.
Figure pat00018
Figure pat00019
Figure pat00020
여기서, NR10은 임계 레벨 설정에 따른 제3상태 및 제4상태의 셀 개수, NR20은 임계 레벨 설정에 따른 제2상태 내지 제4상태의 셀 개수, NR21은 임계 레벨 설정에 따른 제4상태의 셀 개수, N은 전체 셀 개수, OFF1 내지 OFF3은 미리 정해진 임의값에 해당하며, N10은 LSB에서의 '0' 비트 셀 개수, N20은 MSB에서의 '0' 비트 셀 개수를 의미한다.
도 3a 및 도 3b는 본 발명의 다른 실시예에 따른 리드 레벨 추정 방법을 설명하기 위한 도면이다. 본 발명의 다른 실시예에 따른 리드 레벨 추정 방법은 상기 본 발명의 일 실시예(도 2a 내지 도 2c)에 기초하여 적용된다. 상기 다른 실시예에 따른 리드 레벨 추정 방법은 2 비트 이상의 MLC의 리드 동작시에 적용될 수 있으나, 본 발명의 범위가 이에 한정되는 것은 아니다.
앞에서 설명한대로 상기 본 발명의 일 실시예에 기초한 확률 값을 이용한 리드 레벨에 의한 각 상태별 셀의 개수는 각 상태별 정확한 셀의 개수와 비교하여 오차가 발생할 수 있다.
제1상태(state 1) 내지 제4상태(state 4)에서 정확한 셀 개수를 각각 N1 내지 N4라고 가정하고, 오차를 각각 E1 내지 E4라고 가정하면, 상기 확률 값을 이용한 리드 레벨에 의한 각 상태별 셀의 개수는 각각 N1+E1, N2+E2, N3+E3 및 N4+E4가 되며, 이를 수학식4 내지 7로 나타내면 이하와 같다.
Figure pat00021
Figure pat00022
Figure pat00023
Figure pat00024
여기서, C1 내지 C4는 상기 일 실시예에 기초한 확률 값을 이용한 리드 레벨에 의한 각 상태별 셀의 개수, N1 내지 N4는 제1상태(state 1) 내지 제4상태(state 4)에서의 정확한 셀 개수, E1 내지 E4는 제1상태(state 1) 내지 제4상태(state 4)에서의 오차에 해당하며, N, N10 및 N20은 상기 수학식 1 내지 3에서의 N, N10 및 N20과 같다
N20은 제2상태(state 2) 및 제3상태(state 3)에서의 셀 개수의 합과 같기 때문에
Figure pat00025
가 성립하고,
Figure pat00026
를 통하여
Figure pat00027
가 됨을 알 수 있다.
또한, N10은 제3상태(state 3) 및 제4상태(state 4)에서의 셀 개수의 합과 같기 때문에
Figure pat00028
가 성립하고,
Figure pat00029
를 통하여
Figure pat00030
가 됨을 알 수 있다.
마찬가지로 계산해보면,
Figure pat00031
가 됨을 알 수 있다.
따라서, 상기와 같은 결과에 따라 제1상태(state 1)의 셀 개수를 N1+a1로 추정할 경우, 제2상태(state 2)의 셀 개수는 N2-a1, 제3상태(state 3)의 셀 개수는 N3+a1, 제4상태(state 4)의 셀 개수는 N4-a1으로 추정할 수 있다. 이로써, 2 비트 MLC의 경우, 리드 레벨을 보다 효과적으로 추정할 수 있다. 위에서는 2비트 MLC를 기준으로 설명하였지만, 2비트 이상의 MLC의 경우에도 역시 효과적이다.
이와 같은 경향성에 기초하여, 도 3a 및 도 3b를 참고하면, 도 3a는 임계 레벨(R20)을 실제보다 작게 추정한 경우에 해당하고, 이를 보정하기 위해 좌측으로 시프트할 수 있다. 상기 경향성에 따라 임계 레벨(R21)도 좌측으로 시프트할 수 있다.
도 3b는 임계 레벨(R20)을 실제보다 크게 추정한 경우에 해당하고, 이를 보정하기 위해 우측으로 시프트할 수 있다. 상기 경향성에 따라 임계 레벨(R21)도 우측으로 시프트할 수 있다.
임계 레벨(R20 및 R21)의 추정시에 기존에 저장된 리드 레벨을 기준으로 새로운 리드 레벨까지의 간격이 특정 조건(미리 정해진 값)보다 클 경우(즉, 예상보다 많은 리드 레벨의 이동이 있을 경우) 이전에 추정된 임계 레벨을 적용하여 리드 동작을 수행할 수도 있다. 이때, 상기 이전에 추정된 임계 레벨은 상기 스페어 영역(232) 또는 메모리 컨트롤러(110) 내부 또는 PR 모듈(114) 내부의 버퍼(미도시)에 저장되어 있을 수 있다.
도 4는 본 발명의 일 예에 따른 리드 레벨 추정 방법과 일반적인 리드 레벨 추정 방법(제1방법)의 시뮬레이션에 따른 비트오류율을 나타낸다. 상기 일반적인 리드 레벨 추정 방법(제1방법)은 신뢰도 확보를 위해 사용하는 랜더마이저(randomizer) 기술을 고려하여 상태별 셀 개수가 모두 같다고 가정한다.
일반적인 메모리 장치에서 비트 에러가 발생하는 정도를 나타내는 수치로서, 비트오류율(BER;Bit Error Rate)이 사용될 수 있다. 본래 상기 BER은 통신 중에 에러가 발생한 비트의 수를 총 전송한 비트의 수로 나눈 것을 의미하지만, 메모리 장치에서도 총 셀의 개수 대비 에러가 발생한 셀의 개수를 의미하는 지표로서 사용될 수 있다. 따라서, 상기 BER 값이 작을수록 에러가 발생한 셀들의 개수가 적은 것을 의미한다.
본 명세서에서는 메모리 장치에서 발생하는 리드 에러의 정도를 측정하기 위한 하나의 수치로서 BER을 예시하고 있지만, 본 발명에 따른 실시예는 이에 한정되지 않고 에러 발생의 정도를 나타내는 임의의 수치, 표현, 공식 등을 모두 포함할 수 있다.
도 4를 참고하면, 상기 일반적인 리드 레벨 추정 방법(제1방법)에 의한 비트오류율 그래프(G1)는 비트오류율이 본 발명에 따른 리드 레벨 추정 방법에 의한 비트오류율 그래프(G2) 보다 위에 있는 것을 알 수 있다. 즉, 본 발명에 따른 리드 레벨 추정 방법이 더 비트오류율이 적다는 것을 알 수 있다.
또한, 본 발명에 따른 리드 레벨 추정 방법과 정확한 상태별 셀 개수를 알고 리드 레벨을 추정하는 리드 레벨 추정 방법(제2방법)과 비교해볼 경우, 본 발명에 따른 리드 레벨 추정 방법이 '0' 비트를 갖는 셀 개수만을 카운트하기 때문에 스피드 성능이 더 빠른 것을 알 수 있다.
따라서, 본 발명에 따른 리드 레벨 추정 방법은 비트오류율을 최소화하면서, 스피드 성능도 충족시킬 수 있는 효과를 갖는다.
또한, 본 발명에 따른 메모리 컨트롤러(110)는 상기 설명된 본 발명에 따른 리드 레벨 추정 방법, 상기 제1방법 및 상기 제2방법을 병합하여 리드 레벨을 추정할 수도 있다.
도 5a는 본 발명의 일 실시예에 따른 리드 레벨 추정 방법을 설명하기 위한 흐름도이다. 도 5a에 설명되는 리드 레벨 추정 방법은 도 1에 도시된 메모리 시스템(100)을 통하여 수행될 수 있다.
도 5a를 참고하면, 카운터(1143)가 메모리 장치(120)의 프로그램 동작시 프로그램할 데이터의 '0' 비트를 갖는 셀 개수를 카운트하고 이에 대한 확률 값을 스페어 영역(232) 또는 메모리 컨트롤러(110) 내부의 버퍼(미도시)에 저장한다(S110). 이때, 상기 카운터(1143)는 '0' 비트를 갖는 셀 개수가 아닌 '1' 비트를 갖는 셀 개수를 카운트해도 무방하며, 확률 값이 아닌 셀 개수가 저장될 수도 있다.
이후, 메모리 장치(120)의 리드 동작시 임계 레벨을 설정하고, 이에 기초한 '0' 비트 셀 개수와 상기 스페어 영역(232)에 저장된 확률 값에 따른 '0' 비트 셀 개수를 비교기(1141)를 통해 비교한다(S120).
비교결과(S130), 그 차이가 미리 정해진 값 이내인 경우에는 그에 따라 리드 동작을 수행하며, 이때, 상기 임계 레벨을 스페어 영역(232) 또는 메모리 컨트롤러(110) 내부의 버퍼(미도시)에 저장할 수도 있다(S140). 만일 상기 차이가 미리 정해진 값을 초과하는 경우에는 임계 레벨을 다시 설정하여 S120을 다시 수행한다.
도 5b는 본 발명의 다른 실시예에 따른 리드 레벨 추정 방법을 설명하기 위한 흐름도이다. 도 5b에 설명되는 리드 레벨 추정 방법은 도 1에 도시된 메모리 시스템(100)을 통하여 수행될 수 있다.
도 5b를 참고하면, 카운터(1143)가 메모리 장치(120)의 프로그램 동작시 프로그램할 데이터의 '0' 비트를 갖는 셀 개수를 카운트하고 이에 대한 확률 값을 스페어 영역(232) 또는 메모리 컨트롤러(110) 내부의 버퍼(미도시)에 저장한다(S210). 이때, 상기 카운터(1143)는 '0' 비트를 갖는 셀 개수가 아닌 '1' 비트를 갖는 셀 개수를 카운트해도 무방하며, 확률 값이 아닌 셀 개수가 저장될 수도 있다.
이후, 메모리 장치(120)의 리드 동작시 임계 레벨을 설정하고, 이에 기초한 '0' 비트 셀 개수와 상기 스페어 영역(232)에 저장된 확률 값에 따른 '0' 비트 셀 개수를 비교기(1141)를 통해 비교한다(S220).
비교결과(S230), 그 차이가 미리 정해진 값 이내인 경우에는 이전 임계 레벨과 상기 새로 설정된 임계 레벨까지의 간격 값을 계산한다(S240). 이때, 상기 이전 임계 레벨은 이전 리드 동작을 수행하기 위해 설정된 임계 레벨로서, 스페어 영역(232) 또는 상기 메모리 컨트롤러(110) 내부 버퍼(미도시)에 저장된 임계 레벨에 해당한다.
LSB 페이지(PAGE)에 해당하는 리드 레벨을 찾는 과정인지 여부를 검토하고(S250), 만일 그렇다면 새로운 임계 레벨을 적용하여 리드 동작을 수행하고(S260), 만일 그렇지 않다면, 상기 S240에서 계산된 간격 값이 기준 값보다 작은지 여부를 비교한다(S270). 상기 S270에서 비교결과, 상기 S240에서 계산된 간격 값이 기준 값보다 작다면 새로운 임계 레벨을 적용하여 리드 동작을 수행하고(S260), 만일, 그렇지 않다면, 이전 임계 레벨을 적용하여 리드 동작을 수행한다(S280).
도 6은 본 발명의 실시예에 따른 전자 시스템의 블록도이다. 도 6을 참조하면, 모바일 기기, 노트북, 데스크 톱 컴퓨터와 같은 시스템에 장착될 수 있는 전자 시스템(10)은 본 발명의 일 실시예에 따른 비휘발성 메모리 시스템(Memory System)(100), 전원부(power supply)(200), 중앙 처리 장치(CPU)(300), 램(RAM)(400), 유저 인터페이스(User Interface)(500) 및 이들 구성요소들을 전기적으로 연결하는 시스템 버스(600)를 포함할 수 있다.
CPU(300)는 시스템(10)의 전체적인 동작을 제어하고, RAM(400)은 시스템(10)의 동작을 위해 필요한 정보들을 저장하고, 유저 인터페이스(500)는 시스템(10)과 사용자와의 인터페이스를 제공한다. 전원부(200)는 내부의 구성 요소들(즉, CPU(300), 램(RAM)(400), 유저 인터페이스(500), 메모리 시스템(100) 등)으로 전원을 공급한다. 본 발명의 실시예에 따른 비휘발성 메모리 시스템(100)의 구성 및 동작은 도 1에 설명한 바와 같으므로, 설명의 중복을 피하기 위하여 생략한다.
또한 비록 도면에는 도시되지 않았지만, 상기 전자 시스템(10)에는 응용 칩셋(application chipset), 카메라 이미지 프로세서(Camera Image Processor: CIS), 모바일 디램 등이 더 제공될 수 있음은 이 분야의 통상적인 지식을 습득한 자들에게 자명하다.
도 7a 내지 도 7c 각각은 본 발명의 일 실시예에 따른 메모리 모듈을 나타내는 블록도이다. 도 7a에 도시된 메모리 모듈(700a)은 UDIMM(unbuffered dual in-line memory module)의 일 예이다.
메모리 모듈(700a)은 메모리 컨트롤러(730)로부터 입력되는 커맨드/어드레스 신호(CA)를 수신하며 클락신호(DQ_CLK)에 응답하여 데이터(DQ)를 입출력할 수 있는 복수 개의 반도체 메모리 장치(750)를 포함한다. 메모리 모듈(700a)은 또한 복수 개의 반도체 메모리 장치 각각에 연결되어 외부와 데이터(DQ)의 입출력 통로가 되는 데이터 배선, 커맨드/어드레스 신호(CA)를 반도체 메모리 장치(750)로 전달하기 위한 커맨드/어드레스 배선, 클락신호(DQ_CLK)를 반도체 메모리 장치(750)에 공급하기 위한 클락 배선을 포함할 수 있다.
클락신호(DQ_CLK), 커맨드/어드레스 신호(CA) 및 데이터(DQ)는 메모리 컨트롤러(530)로부터 별도의 버퍼를 거치지 않고 메모리 모듈(700a)의 각 메모리 장치(550)로 입력된다.
도 7b에 도시된 메모리 모듈(700b)은 RDIMM(registered dual in-line memory module)의 일 예이다. 커맨드/어드레스 신호(CA)는 레지스터 회로(REG, 731)를 거쳐 메모리 모듈(700b)의 각 메모리 장치(750)로 입력되는 한편, 클락신호(DQ_CLK)와 데이터(DQ)는 레지스터/PLL 회로(REG, 731)를 거치지 않고 메모리 모듈(700b)의 각 메모리 장치(750)로 입력된다. 레지스터 회로(731)는 커맨드/어드레스 신호(CA)를 버퍼링하기 위한 레지스터를 포함할 수 있다. 레지스터 회로(731)는 경우에 따라 메모리 모듈(700b)이 아닌 칩 셋 상에 구현될 수 있고, 이 경우 메모리 모듈(700b)에서 삭제될 수 있다.
도 7c에 도시된 메모리 모듈(700c)은 FBDIMM(Fully Buffered DIMM)의 일 예로서, 메모리 모듈상에 버퍼(BUFFER, 732)를 갖는 메모리 모듈의 실시예이다. 도 12c에 보인 것처럼, 버퍼(BUFFER, 732)를 포함한 메모리 모듈(700c)은 하나의 채널(CH)을 이용하여 외부(메모리 컨트롤러(730))와 연결되고, 채널(CH)과 연결된 버퍼(732)를 통해서만 외부와 통신이 가능하다. 즉, 메모리 모듈(700c)상의 모든 반도체 메모리 장치(750)는 채널(CH)과 연결된 버퍼(732)를 통해서만 메모리 컨트롤러(730)로부터 클락신호(DQ_CLK), 커맨드/어드레스 신호(CA)와 데이터(DQ)를 입력받고, 또한 데이터(DQ)를 외부로 출력할 수 있다.
본 발명은 또한 컴퓨터로 읽을 수 있는 기록매체에 컴퓨터가 읽을 수 있는 코드로서 구현하는 것이 가능하다. 컴퓨터가 읽을 수 있는 기록매체는 컴퓨터 시스템에 의하여 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록장치를 포함한다.
컴퓨터가 읽을 수 있는 기록매체의 예로는 ROM, RAM, CD-ROM, 자기 테이프, 플로피 디스크, 광 데이터 저장장치 등이 있으며, 또한 본 발명에 따른 객체 정보 추정 방법을 수행하기 위한 프로그램 코드는 캐리어 웨이브(예를 들어, 인터넷을 통한 전송)의 형태로 전송될 수도 있다.
또한 컴퓨터가 읽을 수 있는 기록매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어, 분산방식으로 컴퓨터가 읽을 수 있는 코드가 저장되고 실행될 수 있다. 그리고 본 발명을 구현하기 위한 기능적인(functional) 프로그램, 코드 및 코드 세그먼트들은 본 발명이 속하는 기술분야의 프로그래머들에 의해 용이하게 추론될 수 있다.
본 발명은 도면에 도시된 일 실시 예를 참고로 설명되었으나 이는 예시적인 것에 불과하며, 본 기술 분야의 통상의 지식을 가진자라면 이로부터 다양한 변형 및 균등한 타 실시 예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 등록청구범위의 기술적 사상에 의해 정해져야 할 것이다.
100: 비휘발성 메모리 시스템, 110: 메모리 컨트롤러
111: SRAM, 112: CPU
113: Host I/F, 114: PR 모듈
115: Memory I/F, 120: 메모리 장치,
140: 비교기, 230: 메모리 셀 어레이
231: 메인 영역, 232: 스페어 영역
240: 디코더, 250: 기입 드라이버/센스앰프 회로
260: 칩 컨트롤러, 270: 전압 발생기
280: 입출력 회로

Claims (10)

  1. (a) 프로그램 동작시에 프로그램 데이터 중 특정 로직 레벨을 갖는 셀 개수에 관한 정보 및 특정 셀 상태를 갖는 셀 개수에 관한 정보 중 적어도 하나의 정보(이하, 제1 정보라 함)를 산출하여 저장하는 단계;
    (b) 설정된 임계 레벨에 따라 상기 프로그램 데이터를 리드하고, 리드된 데이터 중 상기 설정된 임계 레벨에 의해 구분되는 적어도 하나의 상태를 갖는 셀 개수에 관한 정보(이하, 제2 정보라 함)를 산출하는 단계;
    (c) 상기 제2 정보에 상응하는 정보에 해당하는 상기 적어도 하나의 상태를 갖는 셀 개수에 관한 정보(이하, 제3 정보라 함)를 상기 제1 정보를 이용한 확률 값을 통하여 추정산출하는 단계;
    (d) 상기 제2 정보 및 제3 정보를 비교하는 단계; 및
    (e) 상기 비교 결과에 따라, 상기 임계 레벨의 변경 여부를 결정하는 단계를 포함하는 비휘발성 메모리 장치의 리드 레벨 추정 방법.
  2. 제1항에 있어서,
    상기 특정 셀 상태는 멀티-비트를 저장할 수 있는 멀티-레벨 셀이 가질 수 있는 상태들 중 적어도 하나를 포함하고,
    상기 제1 정보는 특정 비트(LSB 또는 MSB)가 제1 로직 레벨인 멀티-레벨 셀의 수이며,
    상기 제2 정보 및 제3 정보 각각은 상기 특정 셀 상태를 가지는 멀티-레벨 셀의 수 또는 상기 특정 셀 상태를 가지는 멀티-레벨 셀의 수를 이용하여 산출된 수치인 비휘발성 메모리 장치의 리드 레벨 추정 방법.
  3. 제1항에 있어서, 상기 제1 정보는
    상기 비휘발성 메모리 장치의 스페어 영역 또는 메모리 컨트롤러 내부의 버퍼에 저장되는 비휘발성 메모리 장치의 리드 레벨 추정 방법.
  4. 제1항에 있어서, 상기 (e) 단계는
    상기 비교 결과, 상기 제2 정보와 상기 제3 정보 간의 차이에 따라 상기 임계 레벨의 변경 여부를 결정하는 단계를 포함하는 비휘발성 메모리 장치의 리드 레벨 추정 방법.
  5. 제4항에 있어서, 상기 방법은
    상기 차이가 미리 정해진 값 이내일 경우에는 상기 임계 레벨을 변경하지 않고, 상기 미리 정해진 값 초과일 경우에는 다른 임계 레벨을 설정하여 상기 (b) 내지 (d)단계를 반복하는 단계를 포함하는 비휘발성 메모리 장치의 리드 레벨 추정 방법.
  6. 제4항에 있어서, 상기 방법은
    상기 차이가 미리 정해진 값 이내일 경우에는 상기 설정된 임계 레벨을 저장하는 단계를 더 포함하는 비휘발성 메모리 장치의 리드 레벨 추정 방법.
  7. 제6항에 있어서, 상기 방법은
    상기 차이가 미리 정해진 값 이내일 경우에는 이전에 저장된 임계 레벨을 기준으로 새로 찾은 임계 레벨까지의 간격 값을 기준 값과 비교하는 단계를 더 포함하는 리드 레벨 추정 방법.
  8. 제7항에 있어서, 상기 방법은
    상기 비교 결과, 이전에 저장된 임계 레벨을 기준으로 새로 찾은 임계 레벨까지의 간격 값이 기준 값보다 클 경우 이전의 임계 레벨을 적용하고, 작을 경우 새로 찾은 임계 레벨을 저장 및 적용하는 단계를 더 포함하는 리드 레벨 추정 방법.
  9. 제1항 내지 제8항 중 어느 한 항의 방법을 실현시키기 위한 프로그램이 저장된 기록 매체.
  10. 메모리 장치를 제어하는 메모리 컨트롤러에 있어서,
    임계 레벨을 설정하고 상기 메모리 장치를 제어하는 제어 모듈;
    상기 제어 모듈에 연결되고 상기 메모리 장치에 프로그램될 프로그램 데이터 중 특정 로직 레벨을 갖는 셀 개수에 관한 정보 및 특정 셀 상태를 갖는 셀 개수에 관한 정보 중 적어도 하나의 정보(이하, 제1 정보라 함)를 산출하고, 설정된 임계 레벨에 따라 리드된 데이터 중 상기 설정된 임계 레벨에 의해 구분되는 적어도 하나의 상태를 갖는 셀 개수에 관한 정보(이하, 제2 정보라 함)를 산출하고, 상기 제2 정보에 상응하는 정보에 해당하는 상기 적어도 하나의 상태를 갖는 셀 개수에 대한 정보(이하, 제3 정보라 함)를 상기 제1 정보를 이용한 확률 값을 통하여 산출하는 정보 산출부; 및
    상기 제어 모듈 및 상기 정보 산출부에 연결되고, 상기 제2 정보 및 제3 정보를 비교하는 비교기를 포함하는 메모리 컨트롤러.
KR1020100047886A 2010-05-24 2010-05-24 비휘발성 메모리 장치의 리드 레벨 추정 방법 및 이를 수행하는 메모리 컨트롤러, 및 기록매체 KR20110128436A (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020100047886A KR20110128436A (ko) 2010-05-24 2010-05-24 비휘발성 메모리 장치의 리드 레벨 추정 방법 및 이를 수행하는 메모리 컨트롤러, 및 기록매체
US13/114,337 US8516183B2 (en) 2010-05-24 2011-05-24 Method of estimating read level for a memory device, memory controller therefor, and recording medium

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020100047886A KR20110128436A (ko) 2010-05-24 2010-05-24 비휘발성 메모리 장치의 리드 레벨 추정 방법 및 이를 수행하는 메모리 컨트롤러, 및 기록매체

Publications (1)

Publication Number Publication Date
KR20110128436A true KR20110128436A (ko) 2011-11-30

Family

ID=44973432

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020100047886A KR20110128436A (ko) 2010-05-24 2010-05-24 비휘발성 메모리 장치의 리드 레벨 추정 방법 및 이를 수행하는 메모리 컨트롤러, 및 기록매체

Country Status (2)

Country Link
US (1) US8516183B2 (ko)
KR (1) KR20110128436A (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20160108656A (ko) * 2015-03-04 2016-09-20 에스케이하이닉스 주식회사 반도체 장치

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102038408B1 (ko) 2012-10-25 2019-10-30 삼성전자주식회사 회귀 분석법을 사용하는 메모리 시스템 및 그것의 읽기 방법
US9530515B2 (en) 2013-03-13 2016-12-27 Sandisk Technologies Llc Determining read voltages for reading memory
KR102238592B1 (ko) 2014-08-08 2021-04-09 삼성전자주식회사 비휘발성 메모리 장치의 디폴트 독출 전압 설정 방법 및 비휘발성 메모리 장치의 데이터 독출 방법
KR102397016B1 (ko) 2014-11-24 2022-05-13 삼성전자주식회사 불휘발성 메모리 시스템의 동작 방법
KR102282947B1 (ko) 2014-12-15 2021-07-30 삼성전자주식회사 스토리지 장치 및 스토리지 장치의 동작 방법
KR102609130B1 (ko) 2016-02-17 2023-12-05 삼성전자주식회사 읽기 전압 서치 유닛을 포함하는 데이터 저장 장치

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6532556B1 (en) * 2000-01-27 2003-03-11 Multi Level Memory Technology Data management for multi-bit-per-cell memories
US7742339B2 (en) 2006-01-10 2010-06-22 Saifun Semiconductors Ltd. Rd algorithm improvement for NROM technology
DE102006010979B3 (de) 2006-03-09 2007-04-12 Infineon Technologies Flash Gmbh & Co. Kg Verfahren zum Einstellen einer Lesespannung und Halbleiterschaltungsanordnung
JP5095131B2 (ja) 2006-05-31 2012-12-12 株式会社東芝 半導体記憶装置
US7903468B2 (en) 2007-04-23 2011-03-08 Ramot At Telaviv University Ltd. Adaptive dynamic reading of flash memories
KR101423052B1 (ko) * 2008-06-12 2014-07-25 삼성전자주식회사 메모리 장치 및 읽기 레벨 제어 방법
US8000135B1 (en) * 2008-09-14 2011-08-16 Anobit Technologies Ltd. Estimation of memory cell read thresholds by sampling inside programming level distribution intervals

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20160108656A (ko) * 2015-03-04 2016-09-20 에스케이하이닉스 주식회사 반도체 장치

Also Published As

Publication number Publication date
US8516183B2 (en) 2013-08-20
US20110289278A1 (en) 2011-11-24

Similar Documents

Publication Publication Date Title
KR101578511B1 (ko) 리드 전압 설정 방법
US8832526B2 (en) Data reading method, memory controller, and memory storage device
US11762599B2 (en) Self adapting iterative read calibration to retrieve data from memory cells
US8495467B1 (en) Switchable on-die memory error correcting engine
TWI447733B (zh) 計算補償電壓與調整門檻值電壓之方法及記憶體裝置與控制器
TWI474330B (zh) 用來進行記憶體存取管理之方法以及記憶裝置及其控制器
JP5732147B2 (ja) データセンシングのための方法、装置、およびシステム
US8578245B2 (en) Data reading method, memory storage apparatus, and controller thereof
KR20110128436A (ko) 비휘발성 메모리 장치의 리드 레벨 추정 방법 및 이를 수행하는 메모리 컨트롤러, 및 기록매체
US10714186B2 (en) Method and apparatus for dynamically determining start program voltages for a memory device
US11693582B2 (en) Automatic read calibration operations
US8391076B2 (en) Nonvolatile memory device using interleaving technology and programming method thereof
US20170262198A1 (en) Semiconductor device, and information-processing device
US10628082B2 (en) Data reading method and storage controller
KR20080074585A (ko) 메모리 셀에 멀티 비트 데이터를 저장하는 플래시 메모리를포함한 메모리 시스템
US10877692B2 (en) Memory system
US20200234786A1 (en) Data reading method, storage controller and storage device
US20170371779A1 (en) Method and apparatus for reducing data program completion overhead in nand flash
CN115731971A (zh) 存储器装置的裸片上交叉温度管理
US20230063666A1 (en) Cell statistics generator for nvm devices
US11733911B2 (en) Storage device and storage device management method
US11978524B2 (en) Cumulative wordline dispersion and deviation for read sense determination
CN107025940B (zh) 非易失性存储器装置及其实时自适应读取电压调整方法
US20230326528A1 (en) Read threshold calibration for cross-temperature long, sequential reads
US9026890B2 (en) Memory with guard value dependent error correction

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right