KR20130134186A - 메모리 장치의 리라이트 방법 - Google Patents

메모리 장치의 리라이트 방법 Download PDF

Info

Publication number
KR20130134186A
KR20130134186A KR1020120057514A KR20120057514A KR20130134186A KR 20130134186 A KR20130134186 A KR 20130134186A KR 1020120057514 A KR1020120057514 A KR 1020120057514A KR 20120057514 A KR20120057514 A KR 20120057514A KR 20130134186 A KR20130134186 A KR 20130134186A
Authority
KR
South Korea
Prior art keywords
data signal
memory
memory cell
additional data
write
Prior art date
Application number
KR1020120057514A
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 KR1020120057514A priority Critical patent/KR20130134186A/ko
Priority to US13/803,390 priority patent/US9076533B2/en
Publication of KR20130134186A publication Critical patent/KR20130134186A/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
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • 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/5628Programming or writing circuits; Data input 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/10Programming or data input circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/04Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS
    • G11C16/0483Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS comprising cells having several storage transistors connected in series
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • 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

Abstract

메모리 장치의 리라이트 방법이 제공된다. 상기 메모리 장치의 리라이트 방법은 메모리 장치의 제1 메모리 셀에 데이터 신호를 라이트하고, 상기 제1 메모리 셀을 소거하지 않은 상태에서, 상기 제1 메모리 셀에 추가 데이터 신호를 라이트하는 것을 시도하고, 상기 추가 데이터 신호를 라이트하는 것을 실패할 경우, 상기 제1 메모리 셀을 블랭크로 마킹하는 것을 포함한다.

Description

메모리 장치의 리라이트 방법{Rewriting method of memory device}
본 발명은 메모리 장치의 리라이트 방법에 관한 것이다.
메모리 장치는 휘발성(volatile) 메모리 장치와 비휘발성(non-volatile) 메모리 장치로 구분할 수 있다. 휘발성 메모리 장치는 전원(power)이 제거될 때 데이터는 유지되지 않는다. 그러나, 비휘발성 메모리 장치는 전원이 제거되더라도 데이터는 유지된다. 비휘발성 메모리 장치는, 예를 들어, ROM(read only memory), EEPROM (Electrically Erasable Programmable Read-Only Memory), 플래시 메모리(flash memory) 등이 있다.
내구성(endurance)와 보유성(retention)은 데이터 충실도(data integrity)에 영향을 미친다. 내구성은 프로그램/소거(이하, P/E) 싸이클 숫자를 의미하고, 보유성은 얼마나 오랬동안 데이터를 저장할 수 있는지에 관한 것이다.
한편, 공정 미세화와 메모리 셀당 레벨 수의 증가는, 내구성과 보유성에 영향을 준다. 예를 들어, 싱글 레벨 메모리 셀(single level cell) NAND 플래시 메모리는 100,000 P/E 싸이클을 보장할 수 있는 반면, 멀티 레벨 메모리 셀(multi level cell) NAND 플래시 메모리는 단지 10,000 P/E 싸이클을 보장할 수 있다.
NAND 플래시 메모리에서, 가장 파괴적인 동작은 블록 소거(block erase) 이다. 이러한 블록 소거 과정에서, 예를 들어, 벌크(bulk)에 매우 높은 음전압이 인가되고, 컨트롤 게이트에는 0 볼트를 유지한다. 이와 같이 함으로써, 플로팅 게이트에 저장되어 있는 전하가 제거될 수 있다. 따라서, 소거 회수를 줄여야, 내구성이 증가될 수 있다.
본 발명이 해결하려는 과제는, 내구성(endurance)가 증가된 메모리 장치의 리라이트 방법을 제공하는 것이다.
본 발명이 해결하려는 과제들은 이상에서 언급한 과제로 제한되지 않으며, 언급되지 않은 또 다른 과제들은 아래의 기재로부터 당업자에게 명확하게 이해될 수 있을 것이다.
상기 과제를 해결하기 위한 본 발명의 메모리 장치의 리라이트 방법의 일 태양(aspect)은 메모리 장치의 제1 메모리 셀에 데이터 신호를 라이트하고, 상기 제1 메모리 셀을 소거하지 않은 상태에서, 상기 제1 메모리 셀에 추가(additional) 데이터 신호를 라이트하는 것을 시도하고, 상기 추가 데이터 신호를 라이트하는 것을 실패할 경우, 상기 제1 메모리 셀을 블랭크로 마킹하는 것을 포함한다.
상기 과제를 해결하기 위한 본 발명의 메모리 장치의 리라이트 방법의 다른 태양은 메모리 장치의 다수의 메모리 셀에 데이터 신호를 라이트하고, 상기 다수의 메모리 셀을 라이트하지 않은 상태에서, 상기 다수의 메모리 셀에 추가 데이터 신호를 라이트하는 것을 시도하고, 상기 다수의 메모리 셀 중 상기 추가 데이터 신호를 라이트하는 것을 실패한 몇몇 메모리 셀의 어드레스를 제공하는 것을 포함한다.
본 발명의 기타 구체적인 사항들은 상세한 설명 및 도면들에 포함되어 있다.
도 1 내지 도 3는 본 발명의 몇몇 실시예에 따른 메모리 장치의 리라이트 방법을 설명하기 위한 도면들이다.
도 4는 본 발명의 다른 몇몇 실시예에 따른 메모리 장치의 리라이트 방법을 설명하기 위한 도면이다.
도 5는 본 발명의 몇몇 실시예에 따른 메모리 컨트롤러가 적용되는 메모리 시스템을 도시한 블록도이다.
도 6 내지 도 11은 본 발명의 몇몇 실시예에 따른 메모리 컨트롤러를 포함하는 전자 장치의 블록도를 나타낸다.
본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 개시되는 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 것이며, 단지 본 실시예들은 본 발명의 개시가 완전하도록 하며, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다. 명세서 전체에 걸쳐 동일 참조 부호는 동일 구성 요소를 지칭한다.
하나의 소자(elements)가 다른 소자와 "접속된(connected to)" 또는 "커플링된(coupled to)" 이라고 지칭되는 것은, 다른 소자와 직접 연결 또는 커플링된 경우 또는 중간에 다른 소자를 개재한 경우를 모두 포함한다. 반면, 하나의 소자가 다른 소자와 "직접 접속된(directly connected to)" 또는 "직접 커플링된(directly coupled to)"으로 지칭되는 것은 중간에 다른 소자를 개재하지 않은 것을 나타낸다. 명세서 전체에 걸쳐 동일 참조 부호는 동일 구성 요소를 지칭한다. "및/또는"은 언급된 아이템들의 각각 및 하나 이상의 모든 조합을 포함한다.
비록 제1, 제2 등이 다양한 소자, 구성요소 및/또는 섹션들을 서술하기 위해서 사용되나, 이들 소자, 구성요소 및/또는 섹션들은 이들 용어에 의해 제한되지 않음은 물론이다. 이들 용어들은 단지 하나의 소자, 구성요소 또는 섹션들을 다른 소자, 구성요소 또는 섹션들과 구별하기 위하여 사용하는 것이다. 따라서, 이하에서 언급되는 제1 소자, 제1 구성요소 또는 제1 섹션은 본 발명의 기술적 사상 내에서 제2 소자, 제2 구성요소 또는 제2 섹션일 수도 있음은 물론이다.
본 명세서에서 사용된 용어는 실시예들을 설명하기 위한 것이며 본 발명을 제한하고자 하는 것은 아니다. 본 명세서에서, 단수형은 문구에서 특별히 언급하지 않는 한 복수형도 포함한다. 명세서에서 사용되는 "포함한다(comprises)" 및/또는 "포함하는(comprising)"은 언급된 구성요소, 단계, 동작 및/또는 소자는 하나 이상의 다른 구성요소, 단계, 동작 및/또는 소자의 존재 또는 추가를 배제하지 않는다.
다른 정의가 없다면, 본 명세서에서 사용되는 모든 용어(기술 및 과학적 용어를 포함)는 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 공통적으로 이해될 수 있는 의미로 사용될 수 있을 것이다. 또 일반적으로 사용되는 사전에 정의되어 있는 용어들은 명백하게 특별히 정의되어 있지 않는 한 이상적으로 또는 과도하게 해석되지 않는다.
이하에서 비휘발성 메모리 장치로써, 플래시 메모리 장치를 예로 들어 설명하나, 이에 한정되는 것은 아니다.
도 1 내지 도 3는 본 발명의 몇몇 실시예에 따른 메모리 장치의 리라이트 방법을 설명하기 위한 도면들이다.
우선, 도 1을 참조하면, x축은 전압이고, y축은 메모리 셀의 개수이다. 도 1에서는 예시적으로, 3개의 전압 분포(voltage distribution)를 도시하였다. 여기서, 3개의 전압 분포는, 제1 내지 제3 전압 분포(P1, P2, P3)로 구성될 수 있다. 또한, 제1 전압 분포(P1)는 소거 상태일 수 있다. 3개의 전압 분포는 2개의 검증 전압(Vver1, Vver2)에 의해서 구분될 수 있다. 도시된 2개의 검증 전압(Vver1, Vver2)의 전압 레벨은 예시적인 것이고, 이에 한정되지 않는다.
한편, 제1 및 제2 전압 분포(P1, P2)는 데이터 신호(data signal)에 대응되는 영역이고, 제3 전압 분포(P3)는 블랭킹 데이터 신호(blanking data signal)에 대응되는 영역일 수 있다.
도 1에서는 설명의 편의상, 3개의 전압 분포만을 도시하였으나, K+1개(단, K는 자연수)의 전압 분포로 확장할 수 있다. 예를 들어, 제1 내지 제K 전압 분포는 데이터 신호에 대응되는 영역이고, K+1개의 전압 분포 중 최상위에 위치하는 제K+1 전압 분포는 블랭킹 데이터 신호에 대응되는 영역일 수 있다.
본 발명의 몇몇 실시예에 따른 메모리 장치의 리라이트 방법에서, 소거 동작없이 바로 프로그램 싸이클이 연속적으로 이루어진다. 다만, 소거 동작없이 프로그램을 진행하다가 특정 메모리 셀을 라이트하지 못할 경우, 상기 특정 메모리 셀을 블랭크(blank) 처리한다. 도 2 및 도 3을 이용하여, 본 발명의 몇몇 실시예에서 사용되는 프로그램 방법 및 블랭크 처리 방법을 설명하도록 한다.
이하에서, 데이터 신호는 제1 프로그램 싸이클에서 메모리 셀에 저장되는 데이터 신호를 의미하고, 추가 데이터 신호는 제2 프로그램 싸이클에서 메모리 셀에 저장되는 데이터 신호를 의미한다. 또한, 제1 프로그램 싸이클은, 소거 동작 후 처음으로 실시하는 프로그램 싸이클을 의미한다. 반면, 제2 프로그램 싸이클은, 소거 동작없이 바로 실시하는 프로그램 싸이클을 의미한다. 예를 들어, 제1 프로그램 싸이클 후에, 여러 번의 제2 프로그램 싸이클이 진행될 수도 있다.
도 2를 참조하면, 제1 프로그램 싸이클(S10)에서, 제1 메모리 셀에 데이터 신호(x)를 라이트한다. 여기서, 데이터 신호(x)는 도시된 것과 같이, d1(예를 들어, 0)일 수 있다.
이어서, 제2 프로그램 싸이클(S20)에서, 제1 메모리 셀을 소거하지 않은 상태에서, 제1 메모리 셀에 추가 데이터 신호(y)를 라이트하는 것을 시도한다. 여기서, 추가 데이터 신호(y)는 d2(예를 들어, 1)일 수 있다. 구체적으로, 제1 메모리 셀에 기저장된 데이터 신호(x)와, 추가 데이터 신호(y)를 비교한다.
데이터 신호(x)와 추가 데이터 신호(y)를 비교하여, 추가 데이터 신호(y)가 데이터 신호(x)보다 동일하거나 큰 경우, 제1 메모리 셀에 추가 데이터 신호(y)를 라이트한다. 즉, 제2 프로그램 싸이클(S20)에서, 추가 데이터 신호(y)가 제1 메모리 셀에 저장된다. 이러한 경우를, "라이트 성공(success)"이라고 한다.
예를 들어, 추가 데이터 신호(y)가 데이터 신호(x)보다 큰 경우, 데이터 신호(x)와 추가 데이터 신호(y)의 차이만큼, 제1 메모리 셀에 추가적으로 라이트하여, 제1 메모리 셀에 추가 데이터 신호(y)를 라이트한다. 즉, 도 2에서, 데이터 신호(x)가 d1이고, 추가 데이터 신호(y)가 d2이기 때문에, "d2-d1"를 제1 메모리 셀에 라이트한다. 그러면, 기저장되어 있던 d1과 추가분 d2-d1 이 합쳐져서, 제1 메모리 셀에 d2가 저장된다. 전술한 것과 같이, 제1 메모리 셀은 플래시 메모리 셀일 수 있다. 따라서, 플래시 메모리 셀의 게이트, 소오스, 드레인, 벌크의 전압 레벨을 적절히 조절하여, 컨트롤 게이트에 저장되는 전하의 양을 조절할 수 있다. 따라서, 원하는 만큼의 전하를 플래시 메모리의 전하저장층(또는 전하트랩층)에 주입할 수 있다. 즉, 데이터 신호(x)와 추가 데이터 신호(y)의 차이에 해당하는 전하를 제1 메모리 셀에 라이트하여, 제1 메모리 셀에 추가 데이터 신호를 라이트한다.
데이터 신호(x)와 추가 데이터 신호(y)과 동일할 경우에는, 별도의 라이트 동작이 불필요하다.
도 3을 참조하면, 제1 프로그램 싸이클(S12)에서, 제1 메모리 셀 및 제2 메모리 셀에 데이터 신호(x)를 라이트한다. 제1 메모리 셀에 저장되는 데이터 신호(x)는 d2(예를 들어, 1)이고, 제2 메모리 셀에 저장되는 데이터 신호(x)는 d1(예를 들어, 0)일 수 있다.
이어서, 제2 프로그램 싸이클(S22)에서, 제1 메모리 셀을 소거하지 않은 상태(without erase procedure)에서, 제1 메모리 셀에 추가 데이터 신호(y)를 라이트하는 것을 시도한다. 여기서, 추가 데이터 신호(y)는 d1(예를 들어, 0)일 수 있다.
데이터 신호(x)와 추가 데이터 신호(y)를 비교하여, 추가 데이터 신호(y)가 데이터 신호(x)보다 작은 경우, 제1 메모리 셀에 추가 데이터 신호(y)를 라이트할 수 없다. 이러한 경우를, "라이트 실패(failure)"이라고 한다.
이러한 경우, 제1 메모리 셀을 블랭크(blank)로 마킹(marking)한다. 즉, 제1 메모리 셀에 기설정된 블랭킹 데이터 신호(blanking data signal)를 라이트한다. 여기서 기설정된 블랭킹 데이터 신호는, 다수의 전압 분포(P1, P2, P3) 중에서 최상위 전압 분포(P3)에 대응될 수 있으나, 이에 한정되지 않는다. 블랭크로 마킹된 제1 메모리 셀은 리드 동작시 생략된다(skipped). 즉, 리드 동작시 블랭킹 데이터 신호가 리드되면, 리드된 블랭킹 데이터 신호는 없는 데이터로 처리된다.
이어서, 제1 메모리 셀에 추가 데이터 신호(y)를 라이트하는 것을 실패할 경우, 제1 메모리 셀과 다른 제2 메모리 셀에 추가 데이터 신호(y)를 라이트하는 것을 시도한다.
구체적으로, 제2 메모리 셀에 저장되어 있는 데이터 신호(x)와, 추가 데이터 신호(y)를 비교한다. 제2 메모리 셀에 저장되어 있는 데이터 신호(x)은 d1이고, 추가 데이터 신호(y)은 d1이기 때문에, 서로 동일하다. 따라서, 제2 프로그램 싸이클(S22)에서, 추가 데이터 신호(y)는 제2 메모리 셀에 저장된다.
이하에서는, 지금까지 설명한 프로그램 동작 및 블랭크 처리 동작을 일반화하여 설명한다.
먼저, Ncell은 전체 메모리 셀들의 개수이고, 2≤K(1)≤K, 2≤K(2)≤K, K'(2)=K-K(2)+1 라고 가정하자. 또한, K'(2)<K(1)라고 가정하자. K(1)은 제1 프로그램 싸이클에서의 알파벳 크기이고, K(2)는 제2 프로그램 싸이클에서의 알파벳 크기일 수 있다. 제1 프로그램 싸이클에서, n-메모리 셀에 데이터 신호(xn)이 라이트된다. 여기서, xn은 S1={d1 , ... ,dK(1)}에서 선택되고, xn 은 S1 에서 균등 분포(uniform distribution)를 갖는다고 가정하자. d1 , ... ,dK (1) 은 프로그램 상태에 해당하고, d1< ... <dK (1) 일 수 있다.
추가 데이터 신호 {ym}1≤m≤M (ym S2 단, S2={dK' (2), ... , dK})는 제2 프로그램 사이클에서 저장된다. ym 은 S2 에서 균등 분포를 갖고, {xn}1≤n≤ Ncell ∪{ym}1≤m≤M은 pair-wise independent 이다.
제2 프로그램 싸이클이 시작된다.
제1 메모리 셀에 x1이 저장되어 있는 상태에서, y1>=x1이면, 제1 메모리 셀에 "y1-x1"를 추가 라이트하여, y1을 프로그램한다. 그리고, 제1 메모리 셀의 인덱스(index)를 "c(1)=1"으로 한다.
반면, y1<x1이면, 블랭킹 후 다음 메모리 셀로 넘어간다. y1 xc (1) 을 만족하는, 즉, 우리가 c(1)이라고 부를 수 있는 메모리 셀을 발견할 때까지 반복한다.
여기서, n≥2, 1≤c(1)<c(2)< ... <c(n-1), i=1,...,n-1이라고 가정하면,
- yi ≥ xc (i)
- c(i-1)<j<c(i), (c(0)=0)에 대해서, yi<xj 이고, 블랭킹 데이터 신호 dK +1 은 제2 프로그램 사이클에서 j번째 메모리 셀에 프로그램된다.
- yi 는 c(i)메모리 셀에 저장된다.
위의 내용을 예를 들면, 다음과 같다.
제1 메모리 셀 제2 메모리 셀 제3 메모리 셀 제4 메모리 셀
데이터 신호 x1 x2 x3 x4
인덱스 C(1)메모리 셀
(c(1)=1)
C(2)메모리 셀
(c(2)=2)
C(3)메모리 셀
(c(3)=4)
추가 데이터 신호 y1 y2 블랭킹 데이터 신호 y3
전술한 내용을 정리하면 다음과 같다.
추가 데이터 신호(yn)를 저장할 때, 만약, xc (n-1)+1 ≤yn이면, c(n)메모리 셀에 yn-xc(n)를 부가함으로써, yn을 프로그램한다. 그리고, c(n)=c(n-1)+1 로 세팅한다.
만약, xc (n-1)+1>yn 이면, 블랭킹한 후 다음 메모리 셀로 넘어간다. 즉, 우리가 c(n)이라고 부를 수 있는 메모리 셀을 발견하면, 유사하게 그 메모리 셀에 yn-xc (n)을 부가함으로써 yn 을 프로그램한다.
이하에서는, 위와 같은 프로그램 동작 및 블랭크 처리 동작을 수행하였을 때, 저장될 수 있는 데이터 신호의 양(즉, capacity)를 설명하도록 한다.
각 메모리 셀에 저장되어 있는 데이터 신호는 S에 대해서, 균일하게 분포된 랜덤 변수이다. 또한, 각 메모리 셀은, K-알파벳의 (수도) 랜덤 독립 순열((pseudo) random independent permutation of the K-alphabet)에 따른다고 가정한다. 즉, 우리는 각 메모리 셀 c에 대해서, 다른 메모리 셀과 독립적으로, 랜덤으로 샘플링되는 순열 πc: S → S를 가정할 수 있다. πc는 SK 에 대해서 균등 분포(uniform distribution)을 가지고 샘플링된다. 아래 수학식1과 같이, 시프트-순열(shift-permutation)이 이용될 수 있다. a∈{0,...,K-1}에 대해서, σc: S → S는 다음과 같이 정의된다.
[수학식 1]
sa(dk)= dmod *(a+k , K) (for, k∈{1,...,K}
예를 들어, K=4, k∈{1,2,3,4}, a는 2라고 할 때, σa(d1)= dmod *(2+1 , 4) = d3, σa(d2)= dmod *(2+2 , 4) = d4 일 수 있다.
여기서, mod* 는 모듈로 출력(modulo output) {1,...,K}를 나타낸다. σa- 순열은 덜 복잡하고, a=a(c) (단, c=메모리 셀의 인덱스)는 수도 랜덤(pseudo random)일 수 있다. 이것에 의해서, 추가 데이터 신호 y는 σa(c)(y) 로 변환될 수 있다.
이러한 가정하에서, 제2 프로그램 싸이클에서, 메모리 셀이 추가 데이터 신호를 저장할 확률(p)은 다음과 같다.
[수학식 2]
p=(1+1/K)/2
수학식 2는 다음과 같이 유도될 수 있다. 몇몇 메모리 셀에 데이터 신호 x∈{1,..,K}가 저장되어 있고, 제2 프로그램 싸이클에서 저장되어야 할 추가 데이터 신호는 y∈{1,..,K}라고 가정한다. 여기서, x, y는 서로 통계적으로 독립적이다. 또한, x, y는 균등 분포 {1,... ,K}로부터 샘플링된다. y≥x일 때마다, 제2 프로그램 싸이클이 수행되기 때문에, p는 y≥x 일 확률이다. 따라서, 다음과 같이 계산된다.
p = |{(x,y): x,y∈{1,…,K}, x≤y}|/K2 = (K(K+1)/2)/K2 = (1+1/K)/2
이어서, 제2 프로그램 싸이클에서, 추가 데이터 신호를 저장할 수 있는 메모리 셀들의 기대 개수(expected number)는 n×p 이다. 여기서, n은 프로그램 동작에 참여하는 메모리 셀의 전체 개수이다. 결과적으로, 2번의 프로그램 동작에서, 프로그램되는 raw bits의 기대 개수는 다음과 같다. 여기서, raw bits는 데이터 신호와 ECC 비트를 모두 포함하는 의미이다.
[수학식 3]
C=n*(p+1)*log2(K)
수학식 3은 다음과 같이 유도될 수 있다.
제1 프로그램 싸이클에서, 각 메모리 셀에 K symbol이 있고, 따라서 n개 메모리 셀의 블록에서는 Kn symbols가 있을 수 있다. N이 매우 클 때, 2C'=Kn 라고 할 수 있고, 따라서, C'=log2(Kn)=nlog2(K) bits 이다.
제2 프로그램 싸이클에서, 각각의 메모리 셀은 {1,..., K}로부터 K symbols 중 어느 하나를 균일 확률로 저장할 수 있다. 만약, n이 충분히 크다면, n×p (여기서, p는 제2 프로그램 싸이클에서 라이트 성공할 확률)개의 메모리 셀이 "라이트 성공"될 수 있다. 따라서, Kn×p symbols는 제2 프로그램 싸이클에서, n개 메모리 셀의 블록 내에 저장될 수 있다. 따라서, 대략적으로, C''=log2(Kn ×p)= n×p×log2(K) bits 이다.
결과적으로, 제1 및 제2 프로그램 싸이클에서, 기대되는 비트의 숫자는 C=C'+C'' = n(p+1)log2(K) 일 수 있다.
한편, 메모리 컨트롤러는, 몇번의 초기 스테이지 이후에, 특정 시간에서, 메모리 셀들의 상수 q(단, 0<q≤1/2)만큼이 제2 프로그램 사이클에 있도록 할 수 있다. 이와 같이 했을 때, 특정 시간에서 어떤 메모리 셀 내에 평균 R만큼의 비트가 저장될 수 있다.
[수학식 4]
R=log2(K)*(1-q+p*q) = log2(K)*(1-(1-p)*q)
또한, 2번의 소거 동작 사이에 저장되는 비트의 평균은 C만큼일 수 있다.
[수학식 5]
C= log2(K)*((1+p)*2q+1-2q) = log2(K)*(1+2p*q)
수학식 4와 수학식 5는 다음과 같이 유도될 수 있다.
우선, q=1/2인 경우를 예로 들어 생각해 보자. 짝수 프로그램 싸이클에서 홀수 메모리 셀은 제1 프로그램 싸이클에 있고 짝수 메모리 셀은 제2 프로그램 싸이클에 있다. 홀수 프로그램 싸이클에서 홀수 메모리 셀은 제2 프로그램 싸이클에 있고 짝수 메모리 셀은 제1 프로그램 싸이클에 있다고 가정하자 (이러한 스킴(scheme)을 짝수-홀수 스킴(even-odd scheme)이라고 하자). 이러한 경우, q=1/2이기 때문에, 다음과 같이 된다.
log2(K)*(1-q+p*q) = (1/2)*log2(K)(1+p) = R
C= log2(K)*(1+p)
보다 일반적인 케이스를 증명하기 위해서, q=1/2-δ (단, 0<δ<1/2)이고, N은 NAND 플래시 장치의 메모리 셀 숫자라고 가정하자.
2δ*N개의 메모리 셀은 전술한 블랭킹 동작을 하지 않고(일반적인 프로그램 동작을 수행함. 즉, 프로그램 동작 전에 반드시 소거 동작을 수행함), 나머지 (1-2δ)*N (=2q*N) 개의 메모리 셀은 블랭킹 동작을 수행한다고 하자.
또한, 블랭킹 동작을 하는 메모리 셀들의 반(즉, q*N)은 제1 프로그램 싸이클 중에 있고, 블랭킹 동작을 하는 메모리 셀들의 나머지 반(즉, q*N)은 제2 프로그램 싸이클 중에 있다.
그렇다면, 전술한 짝수-홀수 스킴(even-odd scheme)을 여기에 적용하면, 각 프로그램 싸이클에서, q*N개의 메모리 셀은 제2 프로그램 싸이클에 있고, (1-q)*N개의 메모리 셀은 제1 프로그램 싸이클에 있다. 따라서, 특정 시간에서, 메모리 셀 내에 저장되는 비트의 평균은 다음과 같다.
R = log2(K)*(1-q) + log2(K)*q*p
즉, R이 증명되었다.
또한, 다음과 같이, C', C1, C2를 가정하자.
C'≡log2(K)*((1 + p)*2q + 1 - 2q) = log2(K)*((1 + p)*(1-2δ) + 2δ),
C1 ≡N*log2(K)*(1 + p)*(1-2δ)
C2 ≡log2(K)*2δ.
전술한 수학식 3으로부터, 2번의 소거 사이에, 블랭킹 스킴에 참여하는 메모리 셀들에 저장되는 비트의 기대 숫자는 C1과 같다. 또한, 2번의 소거 사이에, 각 프로그램 후에 소거되는 메모리 셀 들 내에 저장되는 비트의 기대 숫자는 C2와 같다.
따라서, C1+C2=C'=C가 된다.
도 4는 본 발명의 다른 몇몇 실시예에 따른 메모리 장치의 리라이트 방법을 설명하기 위한 도면이다.
도 4에서는 도 1 내지 도 3을 이용하여 설명한 것과 달리, 블랭킹 동작을 사용하지 않는 방법을 설명한다.
만약, 제2 프로그램 싸이클에서 라이트되지 않을 확률 w가 매우 작으면, 최상위 전압 분포에 프로그램하는 것 대신에, 제2 프로그램 싸이클에서 라이트 실패한 메모리 셀(이하, "미사용 메모리 셀(unused memory cell)"이라 함)의 위치에 대해서 부가 정보(side information)을 만들 수 있다. 부가 정보의 사이즈(size)는 아래 식에 의해서 경계지워질 수 있다. 이것은, 정보 이론(information theory)으로부터 유추될 수 있다.
n*h2(w) = -n*(w*log2(w) + (1-w)*log2(1-w))
여기서, n은 프로그램된 메모리 셀의 숫자를 의미한다.
그런데, 미사용 메모리 셀의 어드레스는 적절히 리포팅되어야 한다. 따라서, 리포팅하는 방법을 설명하면 다음과 같다.
우선, 도 4에 도시된 것과 같이, 다수의 메모리 셀들은 r=2d 사이즈를 갖는 서브 블록(90)으로 구분된다. 여기서, d는 자연수이고, 2d ≥ 1/w ≥ 2d-1 일 수 있다.
각각의 서브 블록 내에서 미사용 메모리 셀의 위치를 쇼트 어드레스(short address)와 연관짓는다. 즉, 미사용 메모리 셀의 위치는, 미사용 메모리 셀이 포함되는 서브 블록 내에서 배정된 쇼트 어드레스를 이용하여 지시가능하다. 그리고, 쇼트 어드레스(short address)는 d bits일 수 있다. 이러한 쇼트 어드레스의 리스트의 길이는 d*n*w ≒ n*w*log(1/w) bits 정도로 예상된다. 이것은 연속된 bits stream으로 쓰여질 수 있다.
또한, 미사용 메모리 셀의 쇼트 어드레스를 제공하는 것과 함께, 각 서브 블록에 내에서 발생된 미사용 메모리 셀의 개수를 헤더(header) 내에 포함시켜 제공할 수 있다.
도 5는 본 발명의 몇몇 실시예에 따른 메모리 컨트롤러가 적용되는 메모리 시스템을 도시한 블록도이다.
도 5를 참조하면, 메모리 시스템(100)은 메모리 컨트롤러(110)와 비휘발성 메모리 장치(120)를 포함한다.
비휘발성 메모리 장치(120)로 낸드 플래시 메모리 장치를 예로 들었으나, 이에 한정되는 것은 아니다. 비휘발성 메모리 장치(120)는 다수의 낸드 플래시 메모리 장치를 포함할 수 있다. 비휘발성 메모리 장치(120)는 평면 구조일 수도 있고, 적층으로 형성된 3차원 메모리 셀 구조일 수 있다.
비휘발성 메모리 장치(120)는 셀 어레이(122), 행선택회로(121), 전압발생회로(125), 입출력 패드(Input/output pad, 127) 입출력 버퍼(Input output buffer, 124), 페이지 버퍼(123), 컨트롤 로직(126) 등을 포함할 수 있다.
메모리 셀 어레이(122)는 다수의 워드라인(W/L)과 다수의 비트라인(B/L)을 포함한다. 각 메모리 셀은 플로팅 게이트 또는 전하 트랩층과 같은 전하 저장층을 갖는 메모리 셀로 구현될 수 있다.
메모리 셀 어레이(122)는 다수의 블록 및 다수의 페이지를 포함할 수 있다. 하나의 블록은 다수의 페이지를 포함한다. 페이지는 프로그램 및 리드 동작의 단위가 될 수 있으며, 블록은 소거 동작의 단위가 될 수 있다.
컨트롤 로직(126)은 비휘발성 메모리 장치(120)의 동작을 전반적으로 제어한다. 컨트롤러(110)로부터 명령어(CMD)가 입력되면, 컨트롤 로직(126)은 명령어(CMD)를 해석을 하고 비휘발성 메모리 장치(120)가 해석된 명령어에 따른 동작, 예컨대 프로그램 동작, 리드 동작, 리드 리트라이(read retry) 동작, 소거 동작 등을 수행하도록 할 수 있다.
행선택회로(121)는 컨트롤 로직(126)에 의해서 제어되며, 로우 어드레스에 따라 메모리 셀 어레이(122)에 구현된 다수의 워드 라인들 중에서 적어도 하나의 워드 라인을 구동한다.
전압발생회로(125)는 컨트롤 로직(126)의 제어에 따라 프로그램 동작, 리드 동작 또는 소거 동작에 필요한 적어도 하나의 전압을 생성하고, 행선택회로(121)에 의하여 선택된 적어도 하나로 생성된 적어도 하나의 전압을 공급한다.
레지스터(128)는 컨트롤러(110)로부터 입력되는 정보들을 저장하는 공간이며, 다수의 래치(latch)들을 포함할 수 있다. 예를 들어, 레지스터(128)는 리드 전압 정보를 그룹핑하여 테이블로 형성한 정보를 저장할 수 있다.
페이지 버퍼 회로(123)는 컨트롤 로직(126)에 의해서 제어되며, 동작 모드, 예컨대 리드 동작 또는 프로그램 동작에 따라 감지 증폭기로서 또는 라이트 드라이버로서 동작한다.
입출력 패드(127), 입출력 버퍼(124)는 외부 장치, 예컨대 컨트롤러(110) 또는 호스트와 비휘발성 메모리 장치(120)사이에서 주고 받는 데이터의 입출력 경로가 될 수 있다.
메모리 컨트롤러(110)는 마이크로프로세서(microprocessor, 111), 롬(ROM, 113), 램(RAM, 112), ECC 디코더(ECC decoder, 115), ECC 인코더(ECC encoder, 114), 메모리 인터페이스(116), 버스(118)를 포함 할 수 있다. 메모리 컨트롤러(110)의 구성요소(111, 112, 113, 114, 115, 116)는 상기 버스(118)를 통하여 서로 전기적으로 연결될 수 있다.
마이크로프로세서(111)는 컨트롤러(110)를 포함한 메모리 시스템(100)의 동작을 전반적으로 제어한다. 메모리 시스템(100)에 전원이 인가되면, 마이크로 프로세서(111)는 롬(113)에 저장된 상기 메모리 시스템(100) 동작을 위한 펌웨어(firmware)를 램(112)상에서 구동시킴으로써 상기 메모리 시스템(100)의 전반적인 동작을 제어할 수 있다.
메모리 시스템(100)의 구동 펌웨어 코드는 롬(113)에 저장되나, 본 발명의 범위가 이에 한정되는 것은 아니다. 펌웨어 코드는 롬(113)이외의 다양한 비휘발성 메모리 장치(120)에 저장될 수도 있다. 따라서, 마이크로프로세서(111)의 제어 또는 개입이란, 마이크로 프로세서(111)의 직접적 제어뿐만 아니라, 마이크로프로세서(111)에 의해서 구동되는 소프트웨어인 펌웨어의 간섭도 포함 할 수 있다.
램(112)은 버퍼(buffer)역할을 하는 메모리로, 호스트로부터 입력되는 최초 명령어, 데이터, 각종 변수들 또는 비휘발성 메모리 장치(120)로부터 출력되는 데이터들을 저장할 수 있다. 비휘발성 메모리 장치(120)로 입력되고 출력되는 데이터, 각종 파라미터 및 변수들을 저장할 수 있다.
메모리 인터페이스(116)는 컨트롤러(110)와 비휘발성 메모리 장치(120) 사이의 인터페이스를 수행할 수 있다. 메모리 인터페이스(116)는 비휘발성 메모리 장치(120)의 I/O 패드(127)와 연결되어 있으며, 데이터를 주고 받을 수 있다. 또한 메모리 인터페이스(116)는 비휘발성 메모리에 적합한 명령어를 형성하고 I/O 패드(127)에 비휘발성 메모리 장치(120)에 적합한 명령어를 제공할 수 있다. 메모리 인터페이스(116)는 비휘발성 메모리 장치(120)가 수행하고자 하는 명령어와 비휘발성 메모리 장치(120)의 주소(ADD)를 제공해 준다. .
ECC 디코더(115) 및 ECC 인코더(114)는 에러 비트 정정을 수행한다. ECC 인코더(114)는 비휘발성 메모리 장치(120)으로 제공되는 데이터의 오류 정정 인코딩을 하여, 패리티(parity) 비트가 부가된 데이터를 형성한다. 패리티 비트는 비휘발성 메모리 장치(120)에 저장될 수 있다.
ECC 디코더(115)는 출력된 데이터에 대하여 에러 정정 디코딩을 수행하고 수행 결과에 따라 상기 에러 정정 디코딩의 성공 여부를 판단하고, 상기 판단 결과에 따라 지시 신호를 출력한다. 리드한 데이터는 ECC 디코더로 전송되고, ECC 디코더는 패리티(parity) 비트를 사용하여 데이터의 에러 비트를 정정 할 수 있다. 에러 비트 개수가 정정 가능한 에러 비트 한계치 이상 발생하면, ECC 디코더(115)는 에러 비트를 정정할 수 없고, 에러 정정 실패(fail)가 발생한다. ECC 인코더(114)와 ECC 디코더(115)는 LDPC(low density parity check) code, BCH code, turbo code, 리드-솔로몬 코드(Reed-Solomon code), convolution code, RSC(recursive systematic code), TCM(trellis-coded modulation), BCM(Block coded modulation) 등의 코디드 모듈레이션(coded modulation)을 사용하여 에러 정정을 할 수 있으며 이에 한정되는 것은 아니다.
ECC 인코더(114) 및 ECC 디코더(115)는 오류 정정을 위한 회로, 시스템 또는 장치를 모두 포함할 수 있다.
한편, 메모리 컨트롤러(110)는 도 1 내지 도 4를 이용하여 설명한 프로그램 동작 및 블랭킹 처리 동작을 수행할 수 있다.
예를 들어, 메모리 장치의 제1 메모리 셀에 데이터 신호를 라이트하고, 제1 메모리 셀을 소거하지 않은 상태에서 제1 메모리 셀에 추가 데이터 신호를 라이트하는 것을 시도하고, 추가 데이터 신호를 라이트하는 것을 실패할 경우 제1 메모리 셀을 블랭크로 마킹한다. 추가 데이터 신호가 데이터 신호보다 작은 경우에는, 추가 데이터 신호를 라이트하는 것을 실패할 수 있다. 제1 메모리 셀을 블랭크로 마킹하는 것은, 제1 메모리 셀에 기설정된 블랭킹 데이터 신호를 라이트하는 것이다. 기설정된 블랭킹 데이터 신호는 상기 최상위 전압 분포에 대응되는 신호일 수 있다.
또는, 추가 데이터 신호를 라이트하는 것을 실패한 몇몇 메모리 셀(즉, 미사용 메모리 셀)의 어드레스를 제공할 수 있다. 미사용 메모리 셀의 위치는, 미사용 메모리 셀이 포함되는 메모리 서브 블록 내에서 배정된 쇼트 어드레스(short adrress)를 이용하여 지시할 수 있다. 미사용 메모리 셀의 어드레스을 제공하는 것과 함께, 각 메모리 서브 블록 내의 미사용 메모리 셀의 개수를 헤더(header)내에 포함시켜 제공할 수 있다.도 6는 본 발명의 몇몇 실시예에 따른 메모리 컨트롤러를 포함하는 전자 장치의 블록도를 나타낸다.
도 6를 참조하면, 이동 전화기(cellular phone), 스마트 폰(smart phone), 또는 태블릿(tablet) PC와 같은 전자 장치(1100)는 플래시 메모리 장치로 구현될 수 있는 비휘발성 메모리 장치(1160)와, 비휘발성 메모리 장치(1160)의 동작을 제어할 수 있는 메모리 컨트롤러(1150)를 포함할 수 있다.
또한, 메모리 컨트롤러(1150)는 도 5에 도시된 컨트롤러(110)를 의미할 수 있다.
메모리 컨트롤러(1150)는 전자 장치(1100)의 전반적인 동작을 제어하는 프로세서(1140)에 의하여 제어된다.
비휘발성 메모리 장치(1160)에 저장된 데이터는 프로세서(1130)의 제어에 따라 동작하는 메모리 컨트롤러(1150)의 제어에 따라 디스플레이(1130)를 통하여 디스플레이될 수 있다.
무선 송수신기(1110)는 안테나(ANT)를 통하여 무선 신호를 주거나 받을 수 있다. 예컨대, 무선 송수신기(1110)는 안테나(ANT)를 통하여 수신된 무선 신호를 프로세서(1140)가 처리할 수 있는 신호로 변환할 수 있다. 따라서 프로세서(1140)는 무선 송수신기(1110)로부터 출력된 신호를 처리하고, 처리된 신호를 메모리 컨트롤러 (1150)를 통하여 비휘발성 메모리 장치(1160)에 저장하거나 또는 디스플레이(1130)를 통하여 디스플레이할 수 있다.
무선 송수신기(1110)는 프로세서(1110)로부터 출력된 신호를 무선 신호로 변환하고, 변환된 무선 신호를 안테나(ANT)를 통하여 외부로 출력할 수 있다.
입력 장치(140)는 프로세서(110)의 동작을 제어하기 위한 제어 신호 또는 프로세서(110)에 의하여 처리될 데이터를 입력할 수 있는 장치로서, 터치 패드 (touch pad)와 컴퓨터 마우스(computer mouse)와 같은 포인팅 장치(pointing device), 키패드(keypad), 또는 키보드로 구현될 수 있다.
프로세서(110)는 비휘발성 메모리 장치(1160)로부터 출력된 데이터, 무선 송수신기(120)로부터 출력된 무선 신호, 또는 입력 장치(1140)로부터 출력된 데이터가 디스플레이(1130)를 통하여 디스플레이될 수 있도록 디스플레이(130)를 제어할 수 있다.
도 7은 본 발명의 몇몇 실시예에 따른 메모리 컨트롤러를 포함하는 전자 장치의 블록도를 나타낸다.
도 7을 참조하면, PC(personal computer), 태블릿 컴퓨터(tablet computer), 넷-북(net-book), e-리더(e-reader), PDA(personal digital assistant), PMP(portable multimedia player), MP3 플레이어, 또는 MP4 플레이어와 같은 데이터 처리 장치로 구현될 수 있는 전자 장치(1200)는 플래시 메모리 장치와 같은 비휘발성 메모리 장치(1250)와, 비휘발성 메모리 장치(1250)의 동작을 제어할 수 있는 메모리 컨트롤러(1240)를 포함한다.
또한, 메모리 컨트롤러(1240)는 도 5에 도시된 컨트롤러(110)를 의미할 수 있다. 전자 장치(1200)는 전자 장치(1200)의 전반적인 동작을 제어하기 위한 프로세서(1220)를 포함할 수 있다. 메모리 컨트롤러(1240)는 프로세서(1220)에 의하여 제어된다.
프로세서(1220)는 입력 장치(1230)에 의하여 발생한 입력 신호에 따라 비휘발성 메모리 장치(1250)에 저장된 데이터를 디스플레이(1210)를 통하여 디스플레이할 수 있다. 예컨대, 입력 장치(1230)는 터치 패드 또는 컴퓨터 마우스와 같은 포인팅 장치, 키패드, 또는 키보드로 구현될 수 있다.
도 8는 본 발명의 몇몇 실시예에 따른 메모리 컨트롤러를 포함하는 전자 장치의 블록도를 나타낸다.
도 8를 참조하면, 전자 장치(1300)는 카드 인터페이스(1310), 메모리 컨트롤러(1320), 및 비휘발성 메모리 장치(1340), 예컨대 플래시 메모리 장치를 포함한다.
전자 장치(1300)는 카드 인터페이스(1310)를 통하여 호스트(HOST)와 데이터를 주거나 받을 수 있다. 실시 예에 따라, 카드 인터페이스(1310)는 SD(secure digital) 카드 인터페이스 또는 MMC(multi-media card) 인터페이스일 수 있으나 이에 한정되는 것은 아니다. 카드 인터페이스(1310)는 전자 장치(1300)와 통신할 수 있는 호스트(HOST)의 통신 프로토콜에 따라 호스트(HOST)와 메모리 컨트롤러(1320) 사이에서 데이터 교환을 인터페이스할 수 있다.
메모리 컨트롤러(1320)는 전자 장치(300)의 전반적인 동작을 제어하며, 카드 인터페이스(1310)와 비휘발성 메모리 장치(1340) 사이에서 데이터의 교환을 제어할 수 있다. 또한 메모리 컨트롤러(1320)의 버퍼 메모리(1330)는 카드 인터페이스(1310)와 비휘발성 메모리 장치(1340) 사이에서 주고받는 데이터를 버퍼링할 수 있다.
메모리 컨트롤러(1320)는 데이터 버스(DATA) 및 어드레스 버스(ADDRESS)를 통하여 카드 인터페이스(1310)와 비휘발성 메모리(1340)와 접속된다. 실시 예에 따라 메모리 컨트롤러(1320)는 카드 인터페이스(1310)로부터 리드 또는 라이트 하고자 하는 데이터의 어드레스를 어드레스 버스(ADDRESS)를 통하여 수신하고 이를 비휘발성 메모리 장치(1340)로 전송한다.
또한, 메모리 컨트롤러(1320)는 카드 인터페이스(1310) 또는 비휘발성 메모리 장치(1340) 각각에 접속된 데이터 버스(DATA)를 통하여 리드 또는 라이트하고자 하는 데이터를 수신하거나 전송한다. 또한, 메모리 컨트롤러(1150)는 도 5에 도시된 컨트롤러(110)를 의미할 수 있다.
도 8의 전자 장치(1300)가 PC, 태블릿 PC, 디지털 카메라, 디지털 오디오 플레이어, 이동 전화기, 콘솔 비디오 게임 하드웨어, 또는 디지털 셋-탑 박스와 같은 호스트(HOST)에 접속될 때, 호스트(HOST)는 카드 인터페이스(1310)와 메모리 컨트롤러(1320)를 통하여 비휘발성 메모리 장치(1340)에 저장된 데이터를 주거나 받을 수 있다.
도 9는 본 발명의 몇몇 실시예에 따른 메모리 컨트롤러를 포함하는 전자 장치의 블록도를 나타낸다.
도 9를 참조하면, 전자 장치(1400)는 카드 인터페이스(1410), 메모리 컨트롤러(1420), 및 비휘발성 메모리 장치(1450), 예컨대 플래시 메모리를 포함한다.
전자 장치(1400)는 카드 인터페이스(1410)를 통하여 호스트(HOST)와 데이터 통신을 수행할 수 있다. 실시 예에 따라, 카드 인터페이스(1410)는 SD 카드 인터페이스 또는 MMC 인터페이스일 수 있으나 이에 한정되는 것은 아니다. 카드 인터페이스(1410)는 전자 장치(1400)와 통신할 수 있는 호스트(HOST)의 통신 프로토콜에 따라 호스트(HOST)와 메모리 컨트롤러(1420) 사이에서 데이터 통신을 수행할 수 있다.
메모리 컨트롤러(1420)는 전자 장치(1400)의 전반적인 동작을 제어하며, 카드 인터페이스(1410)와 비휘발성 메모리 장치(1450) 사이에서 데이터의 교환을 제어할 수 있다.
또한, 메모리 컨트롤러(1420)에 포함된 버퍼 메모리(1425)는 전자 장치(1400)의 전반적인 동작을 제어하기 위하여 각종 데이터를 저장할 수 있다. 메모리 컨트롤러(1420)는 데이터 버스(DATA) 및 로지컬 어드레스 버스(LOGICAL ADDRESS)를 통하여 카드 인터페이스(1410)와 비휘발성 메모리(1450)와 접속될 수 있다.
실시 예에 따라 메모리 컨트롤러(1420)는 카드 인터페이스(1410)로부터 리드 데이터 또는 라이트 데이터의 어드레스를 로지컬 어드레스 버스(LOGICAL ADDRESS)를 통하여 수신하고, 피지컬 어드레스 버스(PHYSICAL ADDRESS)를 통하여 비휘발성 메모리(1450)로 전달할 수 있다.
또한, 메모리 컨트롤러(1420)는 카드 인터페이스(1410) 또는 비휘발성 메모리 (1450) 각각에 접속된 데이터 버스(DATA)를 통하여 리드 데이터 또는 라이트 데이터를 수신하거나 전송할 수 있다. 또한, 메모리 컨트롤러(1150)는 도 5에 도시된 컨트롤러(110)를 의미할 수 있다.
실시 예에 따라, 전자 장치(1400)의 메모리 컨트롤러(1420)는 버퍼 메모리 (1430) 내에 어드레스 변환 테이블(Address Translation Table; 1440)을 포함할 수 있다. 상기 어드레스 변환 테이블에는 외부로부터 입력된 로지컬 어드레스와 비휘발성 메모리(1450)에 액세스하기 위한 로지컬 어드레스가 포함될 수 있다. 라이트 동작시, 메모리 컨트롤러(1420)는 임의의 피지컬 어드레스에 새로운 데이터를 라이트하고, 상기 어드레스 변환 테이블을 업데이트할 수 있다.
메모리 컨트롤러(1420)는 어드레스 변환 테이블(1440)로부터 라이트 동작이 수행되는 데이터의 피지컬 어드레스를 참조함으로써 라이트 동작과 병행하여 리드 동작을 수행할 수 있는 피지컬 어드레스를 선택할 수 있다.
메모리 컨트롤러(1420)는 상기 라이트 동작과 상기 리드 동작을 병행하고, 상기 라이트 동작과 상기 리드 동작에 따라 어드레스 변환 테이블(1440)을 업-데이트할 수 있다. 따라서 전자 장치(1400)의 동작시간은 단축될 수 있다.
도 9의 전자 장치(1400)가 PC, 태블릿 PC, 디지털 카메라, 디지털 오디오 플레이어, 이동 전화기, 콘솔 비디오 게임 하드웨어, 또는 디지털 셋-탑 박스와 같은 호스트(HOST)에 접속될 때, 호스트(HOST)는 카드 인터페이스(1410)와 메모리 컨트롤러(1420)를 통하여 비휘발성 메모리(1450)에 저장된 데이터를 주거나 받을 수 있다.
도 10은 본 발명의 몇몇 실시예에 따른 메모리 컨트롤러를 포함하는 전자 장치의 블록도를 나타낸다.
도 10을 참조하면, 전자 장치(1500)는 플래시 메모리 장치와 같은 비휘발성 메모리 장치(1550), 비휘발성 메모리 장치(1550)의 데이터 처리 동작을 제어하기 위한 메모리 컨트롤러(1540), 및 전자 장치(1500)의 전반적인 동작을 제어할 수 있는 프로세서(1520)를 포함한다. 또한, 메모리 컨트롤러(1150)는 도 5에 도시된 컨트롤러(110)를 의미할 수 있다.
전자 장치(1500)의 이미지 센서(1510)는 광학 신호를 디지털 신호로 변환하고, 변환된 디지털 신호는 프로세서(1520)의 제어 하에 비휘발성 메모리 장치(1550)에 저장되거나 또는 디스플레이(1530)를 통하여 디스플레이된다. 또한, 비휘발성 메모리 장치(1550)에 저장된 디지털 신호는 프로세서(1520)의 제어하에 디스플레이(1530)를 통하여 디스플레이된다.
도 11은 본 발명의 몇몇 실시예에 따른 메모리 컨트롤러를 포함하는 전자 장치의 블록도를 나타낸다.
도 11을 참조하면, 전자 장치(1600)는 플래시 메모리 장치와 같은 비휘발성 메모리 장치(1670), 비휘발성 메모리 장치(1670)의 동작을 제어하기 위한 메모리 컨트롤러(1650), 및 전자 장치(1600)의 전반적인 동작을 제어할 수 있는 CPU(1620)를 포함한다.
전자 장치(1600)는 CPU(1620)의 동작 메모리(operation memory)로서 사용될 수 있는 메모리(1610)를 포함한다. 메모리(1610)는 ROM과 같은 비휘발성 메모리 또는 DRAM같은 휘발성 메모리로 구현될 수 있다.
전자 장치(1600)에 접속된 호스트(HOST)는 메모리 컨트롤러(1650)와 호스트 인터페이스(1630)를 통하여 비휘발성 메모리 장치(1670)와 데이터를 주거나 받을 수 있다. 이때 메모리 컨트롤러(1650)는 메모리 인터페이스, 예컨대 플래시 메모리 인터페이스의 기능을 수행할 수 있다. 또한, 메모리 컨트롤러(1150)는 도 5에 도시된 컨트롤러(110)를 의미할 수 있다.
실시 예에 따라 전자 장치(1600)는 ECC(error correction code) 블록(1630)을 더 포함할 수 있다. CPU(1620)의 제어에 따라 동작하는 ECC 블록(1640)은 메모리 컨트롤러(1650)를 통하여 비휘발성 메모리 장치(1670)로부터 리드된 데이터에 포함된 에러를 검출하고 정정할 수 있다.
CPU(1620)는 버스(1660)를 통하여 메모리 컨트롤러(1650), ECC 블록(1640), 호스트 인터페이스(1630), 및 메모리(1670) 사이에서 데이터의 교환을 제어할 수 있다. 전자 장치(1600)는 USB(Universal Serial Bus) 메모리 드라이브 또는 메모리 스틱(memory stick) 등으로 구현될 수 있다.
이상 첨부된 도면을 참조하여 본 발명의 실시예를 설명하였지만, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 본 발명이 그 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다.
110: 메모리 컨트롤러 120: 비휘발성 메모리 장치

Claims (10)

  1. 메모리 장치의 제1 메모리 셀에 데이터 신호를 라이트하고,
    상기 제1 메모리 셀을 소거하지 않은 상태에서, 상기 제1 메모리 셀에 추가(additional) 데이터 신호를 라이트하는 것을 시도하고,
    상기 추가 데이터 신호를 라이트하는 것을 실패할 경우, 상기 제1 메모리 셀을 블랭크로 마킹하는 것을 포함하는 메모리 장치의 리라이트 방법.
  2. 제 1항에 있어서,
    상기 제1 메모리 셀을 블랭크로 마킹하는 것은, 상기 제1 메모리 셀에 기설정된 블랭킹 데이터 신호를 라이트하는 것을 포함하는 메모리 장치의 리라이트 방법.
  3. 제 2항에 있어서,
    상기 기설정된 블랭킹 데이터 신호는 상기 최상위 전압 분포에 대응되는 신호인 메모리 장치의 리라이트 방법.
  4. 제 1항에 있어서,
    상기 제1 메모리 셀에 추가 데이터 신호를 라이트하는 것을 시도하는 것은, 상기 추가 데이터 신호와 상기 데이터 신호를 비교하는 것을 포함하는 메모리 장치의 리라이트 방법.
  5. 제 4항에 있어서,
    상기 추가 데이터 신호를 라이트하는 것을 실패하는 것은, 상기 추가 데이터 신호가 상기 데이터 신호보다 작은 경우인 메모리 장치의 리라이트 방법.
  6. 제 4항에 있어서,
    상기 추가 데이터 신호가 상기 데이터 신호보다 큰 경우에는, 상기 데이터 신호와 상기 추가 데이터 신호의 차이에 해당하는 전하를 상기 제1 메모리 셀에 추가적으로 라이트하여, 상기 제1 메모리 셀에 상기 추가 데이터 신호를 라이트하는 메모리 장치의 리라이트 방법.
  7. 제 1항에 있어서,
    리드 동작시, 상기 블랭크로 마킹된 제1 메모리 셀은 생략되는(skipped) 메모리 컨트롤러의 구동방법.
  8. 제 1항에 있어서,
    상기 제1 메모리 셀을 블랭크로 마킹한 후,
    상기 제1 메모리 셀과 다른 제2 메모리 셀에 상기 추가 데이터 신호를 라이트하는 것을 시도하는 것을 더 포함하는 메모리 장치의 리라이트 방법.
  9. 메모리 장치의 다수의 메모리 셀에 데이터 신호를 라이트하고,
    상기 다수의 메모리 셀을 라이트하지 않은 상태에서, 상기 다수의 메모리 셀에 추가 데이터 신호를 라이트하는 것을 시도하고,
    상기 다수의 메모리 셀 중 상기 추가 데이터 신호를 라이트하는 것을 실패한 몇몇 메모리 셀의 어드레스를 제공하는 것을 포함하는 메모리 장치의 리라이트 방법.
  10. 제 9항에 있어서,
    상기 다수의 메모리 셀은 둘 이상의 메모리 서브 블록으로 구분되고,
    상기 실패한 몇몇 메모리 셀의 위치는, 상기 실패한 몇몇 메모리 셀이 포함되는 메모리 서브 블록 내에서 배정된 쇼트 어드레스(short adrress)를 이용하여 지시하는 메모리 장치의 리라이트 방법.
KR1020120057514A 2012-05-30 2012-05-30 메모리 장치의 리라이트 방법 KR20130134186A (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020120057514A KR20130134186A (ko) 2012-05-30 2012-05-30 메모리 장치의 리라이트 방법
US13/803,390 US9076533B2 (en) 2012-05-30 2013-03-14 Method of reprogramming nonvolatile memory comprising marking some cells as blanks

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020120057514A KR20130134186A (ko) 2012-05-30 2012-05-30 메모리 장치의 리라이트 방법

Publications (1)

Publication Number Publication Date
KR20130134186A true KR20130134186A (ko) 2013-12-10

Family

ID=49670085

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020120057514A KR20130134186A (ko) 2012-05-30 2012-05-30 메모리 장치의 리라이트 방법

Country Status (2)

Country Link
US (1) US9076533B2 (ko)
KR (1) KR20130134186A (ko)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20160150036A (ko) * 2015-06-18 2016-12-28 삼성전자주식회사 부분 페이지 압축을 위한 메모리 시스템
US10490293B2 (en) 2017-09-29 2019-11-26 SK Hynix Inc. Non-volatile memory device, method for operating the same and data storage device including the same
US10803972B2 (en) * 2017-03-06 2020-10-13 Hitachi, Ltd. Flash memory module, storage system, and method of controlling flash memory

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2015037159A1 (ja) * 2013-09-13 2015-03-19 株式会社 東芝 半導体記憶装置及びメモリシステム
US10474567B2 (en) * 2016-05-25 2019-11-12 Samsung Electronics Co., Ltd. Multi-bit data representation framework to enable dual program operation on solid-state flash devices
US10671317B2 (en) 2016-05-25 2020-06-02 Samsung Electronics Co., Ltd. Block cleanup: page reclamation process to reduce garbage collection overhead in dual-programmable NAND flash devices
JP7153435B2 (ja) * 2017-10-12 2022-10-14 ラピスセミコンダクタ株式会社 不揮発性メモリのデータ書換方法及び半導体装置

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06349286A (ja) 1993-06-04 1994-12-22 Matsushita Electric Ind Co Ltd フラッシュメモリ用書き込み制御方法および制御装置
KR100566466B1 (ko) * 1995-01-31 2006-03-31 가부시끼가이샤 히다치 세이사꾸쇼 반도체 메모리 장치
JPH08221994A (ja) 1995-02-14 1996-08-30 Nec Corp 電気的に消去および書込み可能な不揮発性半導体メモリ
JP2001229073A (ja) 2000-02-16 2001-08-24 Hitachi Ltd フラッシュメモリ
JP4323707B2 (ja) * 2000-10-25 2009-09-02 富士通マイクロエレクトロニクス株式会社 フラッシュメモリの欠陥管理方法
JP2004220644A (ja) 2003-01-09 2004-08-05 Renesas Technology Corp フラッシュメモリ装置
JP2004310268A (ja) 2003-04-03 2004-11-04 Nec Micro Systems Ltd フラッシュメモリ内蔵の半導体装置、フラッシュメモリの制御方法およびそのプログラム
JP2005216455A (ja) 2004-02-02 2005-08-11 Matsushita Electric Ind Co Ltd 不揮発性半導体メモリ
KR100645044B1 (ko) * 2004-09-17 2006-11-10 삼성전자주식회사 높은 신뢰도를 갖는 불 휘발성 메모리 장치의 프로그램 방법
US7804718B2 (en) 2007-03-07 2010-09-28 Mosaid Technologies Incorporated Partial block erase architecture for flash memory
KR100909358B1 (ko) * 2007-04-16 2009-07-24 삼성전자주식회사 신뢰성 높은 초기화 데이터를 제공하는 플래시 메모리 장치및 그것의 초기화 방법
KR101544607B1 (ko) 2008-10-28 2015-08-17 삼성전자주식회사 메모리 장치 및 그 프로그램 방법
US8400854B2 (en) * 2009-09-11 2013-03-19 Sandisk Technologies Inc. Identifying at-risk data in non-volatile storage
KR101634340B1 (ko) * 2009-11-03 2016-06-28 삼성전자주식회사 반도체 메모리 장치의 프로그램 방법
US8638607B2 (en) * 2011-10-06 2014-01-28 Micron Technology, Inc. Disturb verify for programming memory cells

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20160150036A (ko) * 2015-06-18 2016-12-28 삼성전자주식회사 부분 페이지 압축을 위한 메모리 시스템
US10803972B2 (en) * 2017-03-06 2020-10-13 Hitachi, Ltd. Flash memory module, storage system, and method of controlling flash memory
US10490293B2 (en) 2017-09-29 2019-11-26 SK Hynix Inc. Non-volatile memory device, method for operating the same and data storage device including the same

Also Published As

Publication number Publication date
US9076533B2 (en) 2015-07-07
US20130322175A1 (en) 2013-12-05

Similar Documents

Publication Publication Date Title
US20190252035A1 (en) Decoding method, memory storage device and memory control circuit unit
US8830743B2 (en) Method of operating memory controller, memory controller, memory device and memory system
KR20130134186A (ko) 메모리 장치의 리라이트 방법
KR100546348B1 (ko) 플래시 메모리 시스템 및 그 데이터 저장 방법
US9177660B2 (en) Method of operating memory device
US9543983B2 (en) Decoding method, memory storage device and memory control circuit unit
KR101648531B1 (ko) 불휘발성 메모리 시스템과 이의 동작 방법
US20160306693A1 (en) Read voltage level estimating method, memory storage device and memory control circuit unit
US20120166906A1 (en) Memory system and control method thereof
CN108268337B (zh) 于记忆装置中进行数据管理的方法、记忆装置及其控制器
KR102081581B1 (ko) 메모리 장치 구동 방법
US20160070507A1 (en) Memory system and method of controlling memory device
KR20100124087A (ko) 메모리 컨트롤러, 그것을 포함하는 메모리 시스템 그리고 그것의 동작 방법
US20150067446A1 (en) Decoding method, memory storage device and rewritable non-volatile memory module
US10522234B2 (en) Bit tagging method, memory control circuit unit and memory storage device
US7543104B2 (en) Non-volatile semiconductor device for use in memory card and memory system
US9971523B2 (en) Memory controller with data compression and padding features, method of controlling nonvolatile memory and memory system
US9105339B2 (en) Methods of driving a memory
KR20180022175A (ko) 컨트롤러, 반도체 메모리 시스템 및 그것의 동작 방법
US11190217B2 (en) Data writing method, memory controlling circuit unit and memory storage device
US20140050024A1 (en) Data reading method, and circuit, rewritable non-volatile memory module and memory storage apparatus using the same
CN106708649B (zh) 解码方法、存储器储存装置及存储器控制电路单元
KR20180033740A (ko) 메모리 컨트롤러, 반도체 메모리 시스템 및 그것의 동작 방법
CN111383697A (zh) 用于部分页编程的位扫描方法,部分页编程方法及非易失性存储器
US20180138923A1 (en) Memory controller

Legal Events

Date Code Title Description
WITN Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid