[go: up one dir, main page]
More Web Proxy on the site http://driver.im/

KR101602316B1 - 반도체 메모리 장치 및 그것의 데이터 처리 방법 - Google Patents

반도체 메모리 장치 및 그것의 데이터 처리 방법 Download PDF

Info

Publication number
KR101602316B1
KR101602316B1 KR1020090010219A KR20090010219A KR101602316B1 KR 101602316 B1 KR101602316 B1 KR 101602316B1 KR 1020090010219 A KR1020090010219 A KR 1020090010219A KR 20090010219 A KR20090010219 A KR 20090010219A KR 101602316 B1 KR101602316 B1 KR 101602316B1
Authority
KR
South Korea
Prior art keywords
data
memory
programmed
state
program
Prior art date
Application number
KR1020090010219A
Other languages
English (en)
Other versions
KR20100090966A (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 KR1020090010219A priority Critical patent/KR101602316B1/ko
Priority to US12/654,578 priority patent/US8806302B2/en
Publication of KR20100090966A publication Critical patent/KR20100090966A/ko
Application granted granted Critical
Publication of KR101602316B1 publication Critical patent/KR101602316B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C13/00Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00
    • 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
    • G11C13/00Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00
    • G11C13/0002Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements
    • G11C13/0021Auxiliary circuits
    • G11C13/0033Disturbance prevention or evaluation; Refreshing of disturbed memory data
    • 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/3418Disturbance prevention or evaluation; Refreshing of disturbed memory data
    • G11C16/3427Circuits or methods to prevent or reduce disturbance of the state of a memory cell when neighbouring cells are read or written
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1006Data managing, e.g. manipulating data before writing or reading out, data bus switches or control circuits therefor

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Read Only Memory (AREA)

Abstract

본 발명에 따른 반도체 메모리 장치의 데이터 처리 방법은, 비휘발성 메모리의 행과 열에 프로그램될 데이터를 행 또는 열 방향에 따라 배열하는 단계; 및 상기 비휘발성 메모리의 서로 인접한 셀들이 제 1 상태 및 제 2 상태로 프로그램되는 경우를 회피하도록 상기 프로그램될 데이터를 상기 행 또는 열 방향에 따라 변조 코드로 부호화하는 단계를 포함한다.

Description

반도체 메모리 장치 및 그것의 데이터 처리 방법{SEMICONDUCTOR MEMORY DEVICE AND DATA PROCESSING METHOD THEREOF}
본 발명은 전자 장치에 관한 것으로, 좀 더 구체적으로는 반도체 반도체 메모리 장치 및 그것의 데이터 처리 방법에 관한 것이다.
반도체 메모리는, 일반적으로, 위성에서 소비자 전자 기술까지의 범위에 속하는 마이크로프로세서를 기반으로 한 응용 및 컴퓨터와 같은 디지털 로직 설계의 가장 필수적인 마이크로 전자 소자이다. 그러므로, 높은 집적도 및 빠른 속도를 위한 축소(Scaling)를 통해 얻어지는 프로세스 향상 및 기술 개발을 포함한 반도체 메모리의 제조 기술의 진보는 다른 디지털 로직 계열의 성능 기준을 확립하는 데 도움이 된다.
반도체 메모리 장치는 크게 휘발성 반도체 메모리 장치와 비휘발성 반도체 메모리 장치로 나뉘어진다. 비휘발성 반도체 메모리 장치는 전원이 차단되어도 데이터를 저장할 수 있다. 비휘발성 메모리에 저장되는 데이터는 메모리 제조 기술에 따라 영구적이거나 재프로그램 가능하다. 비휘발성 반도체 메모리 장치는 컴퓨터, 항공 전자 공학, 통신, 그리고 소비자 전자 기술 산업과 같은 넓은 범위의 응용에 서 프로그램 및 마이크로 코드의 저장을 위해서 사용된다.
비휘발성 메모리 장치의 대표적인 예로 플래시 메모리 장치가 있다. 최근 들어 메모리 장치에 대한 고집적 요구가 증가함에 따라, 하나의 메모리 셀에 멀티 비트를 저장하는 멀티-비트 메모리 장치들이 보편화되고 있다. 멀티-비트 플래시 메모리 장치의 메모리 셀들은 문턱 전압 분포들 간의 간격이 조밀하게 제어되어야 한다. 즉, 데이터 보유 특성(Data retention characteristics)은 데이터의 신뢰성과 관련하여 가장 중요한 관심사이다. 그러나 메모리 셀의 문턱 전압은 다양한 원인들로 인하여 변할 수 있다. 플로팅 게이트(Floating gate)에 저장된 전하(또는 전자)는 절연막의 결함으로 인한 열이온 방출 및 전하 확산, 이온 불순물, 프로그램 디스터브 스트레스 등과 같은 다양한 페일 메커니즘들을 통해 누설될 수 있다. 이는 문턱 전압의 변화(Shift)를 야기할 것이다. 메모리 셀의 제어 게이트가 소정 전압(예를 들면, 전원 전압 또는 읽기 전압)으로 유지된 상태에서 플로팅 게이트가 서서히 전하들을 얻을 때, 즉, 읽기 디스터브(Read disturbance)로 인해서 전하 획득의 효과가 생길 수 있다. 이는 문턱 전압의 증가를 야기한다. 상술한 다양한 요인들로 메모리 셀들의 문턱 전압은 스테이트별로 증가하거나 낮아질 수 있다. 특히, 전하 트랩형 플래시(Charge Trapping Flash: CTF) 메모리 장치에서, 측면 전하 확산(Lateral Charge Spreading)과 같은 문제가 중요하게 대두되고 있다. 하나의 메모리 셀에 점점 더 많은 비트 수의 데이터를 저장하기 위한 멀티-비트 메모리 장치에서 이러한 문제를 해결하기 위한 기술이 절실한 실정이다.
본 발명은 에러 발생 확률을 줄일 수 있는 플래시 메모리 장치 및 그것의 데이터 관리 방법을 제공하는데 그 목적이 있다.
상기 목적을 달성하기 위한 본 발명의 반도체 메모리 장치의 데이터 처리 방법은, 비휘발성 메모리의 행과 열에 프로그램될 데이터를 행 또는 열 방향에 따라 배열하는 단계; 및 상기 비휘발성 메모리의 서로 인접한 셀들이 제 1 상태 및 제 2 상태로 프로그램되는 경우를 회피하도록 상기 프로그램될 데이터를 상기 행 또는 열 방향에 따라 변조 코드로 부호화하는 단계를 포함한다.
상기 목적을 달성하기 위한 반도체 메모리 장치는, 행과 열로 배열된 메모리 셀들을 갖는 비휘발성 메모리; 및 상기 비휘발성 메모리를 제어하기 위한 메모리 컨트롤러를 포함하되, 상기 메모리 컨트롤러는 상기 비휘발성 메모리의 행과 열에 프로그램될 데이터를 행 또는 열 방향에 따라 배열하고, 서로 인접한 메모리 셀들이 제 1 상태 및 제 2 상태로 프로그램되는 경우를 회피하도록 상기 프로그램될 데이터를 상기 행 또는 열 방향에 따라 변조 코드로 부호화하고, 상기 부호화된 데이터를 프로그램한다.
본 발명의 구성 및 메모리 관리 방법에 따르면, 메모리 셀들의 프로그램 상태를 에러 발생을 야기할 수 있는 배열이 회피되도록 프로그램할 수 있다. 따라서, 메모리 장치에 저장되는 데이터에 대한 신뢰성을 높일 수 있다.
앞의 일반적인 설명 및 다음의 상세한 설명 모두 예시적이라는 것이 이해되어야 하며, 청구된 발명의 부가적인 설명이 제공되는 것으로 여겨져야 한다. 참조 부호들이 본 발명의 바람직한 실시예들에 상세히 표시되어 있으며, 그것의 예들이 참조 도면들에 표시되어 있다. 가능한 어떤 경우에도, 동일한 참조 번호들이 동일한 또는 유사한 부분을 참조하기 위해서 설명 및 도면들에 사용된다.
아래에서, 플래시 메모리 장치가 본 발명의 특징 및 기능을 설명하기 위한 비휘발성 메모리의 한 예로서 사용된다. 하지만, 이 기술 분야에 정통한 사람은 여기에 기재된 내용에 따라 본 발명의 다른 이점들 및 성능을 쉽게 이해할 수 있을 것이다. 예를 들면, 저장 매체로서 PRAM, MRAM, ReRAM, FRAM, NOR 플래시 메모리 등이 사용될 수 있으며, 이종의 메모리 장치들이 혼용되는 메모리 시스템에도 적용될 수 있다. 그리고, 2-비트 멀티 레벨 셀(MLC)을 본 발명의 특징을 설명하기 위한 예로 사용되었다. 하지만, 하나의 메모리 셀에 3-비트 이상의 데이터를 기입하는 멀티 비트 메모리 장치에 본 발명의 기술들이 쉽게 적용될 수 있을 것이다.
또한, 본 발명은 다른 실시 예들을 통해 구현되거나 적용될 수 있을 것이다. 게다가, 상세한 설명은 본 발명의 범위, 기술적 사상 그리고 다른 목적으로부터 상당히 벗어나지 않고 관점 및 사용에 따라 수정되거나 변경될 수 있다.
이하에서는 본 발명의 상세한 설명에서는 런길이 제한 코드(Run-Length Limited Code: RLL)를 변조 코드(Modulation Code)의 한 예로 본 발명의 기술적 특 징들이 설명될 것이다. 그러나, 변조 코드의 예가 런길이 제한 코드(RLL)에만 한정되지는 않는다.
도 1은 멀티-비트 플래시 메모리 장치의 문턱 전압 분포를 예시적으로 보여주는 도면이다. 도 1을 참조하면, 하나의 메모리 셀에 2-비트가 저장되는 메모리 셀의 문턱 전압이 도시되어 있다.
데이터 '11'에 대응하는 소거 상태(E0)는 가장 낮은 문턱 전압 레벨을 갖는다. 그리고 데이터 '10'에 대응하는 프로그램 상태(P1), 데이터 '00'에 대응하는 프로그램 상태(P2) 및 데이터 '01'에 대응하는 프로그램 상태(P3)들로 각각의 2-비트 데이터와 프로그램 상태들이 배열될 수 있다. 여기서, 프로그램 상태들(E0, P1, P2, P3) 각각에 대응하는 2-비트 데이터의 대응 관계는 예시에 지나지 않는다. 메모리 장치의 설계 방식에 따라 프로그램 상태들(E0, P1, P2, P3)과 그에 대응하는 2-비트 데이터는 다양하게 변경될 수 있다.
플래시 메모리 장치에서, 인접한 메모리 셀과 다른 문턱 전압을 갖는 경우 메모리 셀들은 서로 영향을 미친다. 예를 들면, 측면 전하 확산(Lateral Charge Spreading)과 같이 인접한 메모리 셀의 문턱 전압에 따라 메모리 셀의 문턱 전압은 증가하거나 낮아질 수 있다. 특히, 메모리 셀들 중 소거 상태(E0)로 프로그램된 메모리 셀과 가장 높은 문턱 전압을 갖는 프로그램 상태(P3)로 프로그램된 메모리 셀 사이에서 이러한 측면 전하 확산(Lateral Charge Spreading) 현상이 현저하다.
앞서 설명된 바와 같이, 문턱 전압의 이동은 측면 전하 확산(Lateral Charge Spreading) 뿐만 아니라, 프로그램 디스터브, 커플링 등과 같은 다양한 원인들에 의해서도 발생한다.
도 2는 플래시 메모리 장치의 셀 어레이(10)의 일부분을 간략히 보여주는 도면이다. 도 2를 참조하면, 프로그램 동작시에 메모리 셀은 인접하거나 또는 주변에 분포하는 메모리 셀들에 의해서 물리적인 영향을 받는다. 이러한 주변에 위치하며 물리적인 영향을 주는 셀들(MC1, MC3, MC5, MC7) 때문에, 직접 프로그램되지 않더라도 메모리 셀(MC4)의 문턱 전압은 가변된다. 이하에서는, 영향을 주는 메모리 셀들(예를 들면, MC1, MC3, MC5, MC7)을 공격 셀(Aggress cell), 영향을 받는 셀(예를 들면, MC4)을 희생 셀(Victim cell)이라 칭하기로 한다.
메모리 셀의 문턱 전압을 이동시키는 대표적인 현상으로 측면 전하 확산(Lateral Charge Spreading)이 있다. 또한, 커플링 효과에 의해서 희생 셀(MC4, Victim cell)의 문턱 전압은 원래의 프로그램된 문턱 전압으로부터 일정 수준 시프트(Shift)된다. 희생 셀(MC4, Victim cell)의 문턱 전압 시프트의 일예로 커플링이나 측면 전하 확산 등이 예시적으로 설명되었다. 하지만, 이들 현상뿐만 아니라 메모리 셀들의 문턱 전압은 다양한 원인들로 인하여 시프트된다. 예를 들면, 시간의 경과, 고온 스트레스(Hot Temperature Stress: HTS), 프로그램/소거 사이클(P/E cycle)의 증대에 따른 산화막의 열화 등에 의하여 메모리 셀들의 문턱 전압은 변화(예를 들면, 낮아짐)한다. 또는, 주변 셀들의 프로그램에 따른 프로그램 디스터브(Program disturbance)에 의해 희생 셀(MC4)의 문턱 전압은 높아질 수 있다. 그리고 희생 셀이 공격 셀들에 의해서 받는 물리적인 영향으로, 공격 셀들(MC1, MC3, MC5, MC7)의 전하 손실에 따른 희생 셀(MC0)의 문턱 전압의 변화가 고려될 수 있을 것이다. 특히, 차지 트랩형 플래시(CTF) 메모리는 전하 포획층과 같이 소자 특성상 주변 셀들로 전하가 이동하는 측면 전하 확산(Lateral charge spreading) 현상으로 인해 산포가 열화될 수도 있다. 측면 전하 확산 현상은 워드 라인 방향으로 발생할 수도 있지만, 비트 라인 방향으로도 발생한다. 따라서, 이러한 문제를 해결하기 위해서는 워드 라인 방향에 대한 해결 수단뿐 아니라 비트 라인 방향에 대한 해결 수단이 동반되어야 한다.
이상에서 설명된 다양한 요인들로 인해 메모리 셀들의 문턱 전압은 이동한다. 따라서, 비휘발성 메모리 장치의 독출 동작시에는 상술한 문턱 전압의 이동으로 읽기 마진(Read margin)이 감소하여 이웃하는 두 문턱 전압의 산포들이 겹쳐질 수 있다. 이 경우, 독출된 데이터에는 다수 비트의 에러가 포함될 수 있다. 그러나 본 발명에 코딩 방법 방법에 따르면, 문턱 전압의 이동으로 인하여 발생할 수 있는 문제들을 해결할 수 있다.
도 3은 본 발명의 메모리 시스템(100)을 보여주는 블록도이다. 도 3을 참조하면, 본 발명에 따른 메모리 시스템(100)은 비휘발성 메모리 장치(120)와 비휘발성 메모리 장치(120)에 저장될 데이터를 변조 코딩 방식으로 부호화하는 변조 코딩부(110)를 포함한다.
변조 코딩부(110)는 호스트(Host)로부터 제공되는 프로그램 데이터(Program data)를 변조 코딩 방식으로 부호화(Encoding)하여 비휘발성 메모리 장치(120)로 제공한다. 변조 코딩부(110)는 비휘발성 메모리 장치(120)로부터 출력되는 독출 데이터(Read data)를 복호화(Decoding)하여 호스트(Host)로 전달한다. 변조 코딩 부(110)는 비휘발성 메모리 장치(120)와 호스트(Host)를 인터페이싱하는 메모리 컨트롤러(미도시됨)에 포함될 수 있다. 일반적으로 메모리 컨트롤러는 호스트(Host)로부터의 읽기/쓰기 요청에 응답하여 비휘발성 메모리 장치(120)로부터 저장된 데이터를 독출 또는 기입하도록 비휘발성 메모리 장치(120)를 제어한다. 변조 코딩부(110)는 하드웨어 형태의 구성으로 또는 펌웨어와 같은 소프트웨어 형태로 상술한 메모리 컨트롤러에 포함될 수 있을 것이다. 그러나, 변조 코딩부(110)가 속하는 위치는 상술한 예시들에 국한되지 않는다.
비휘발성 메모리 장치(120)는 변조 코딩부(110)로부터 제공되는 프로그램 데이터(Program data)를 셀 어레이(121)의 비휘발성 메모리 셀들에 기입한다. 변조 코딩부(110)에 의해서 부호화된 프로그램 데이터(Program data)는 비휘발성 메모리 장치(120)의 페이지 버퍼(122)에 일시 로드된다. 페이지 버퍼(122)에 로드된 프로그램 데이터(Program data)는 셀 어레이(121)에 기입된다. 호스트(Host)로부터 읽기 명령이 제공되는 경우, 비휘발성 메모리 장치(120)는 셀 어레이(121)의 위치에 저장된 데이터를 센싱하여 페이지 버퍼(122)에 저장한다. 페이지 버퍼(122)에 저장된 독출 데이터(Read data)는 변조 코딩부(110)에 전달된다. 변조 코딩부(110)는 독출 데이터(Read data)를 복호하여 호스트(Host)로 전달하게 될 것이다.
본 발명의 변조 코딩부(110)는 다차원 변조 코딩(Multidimensional modulation conding)을 적용하여 호스트로부터 제공되는 프로그램 데이터를 부호화한다. 즉, 셀 어레이(121)의 워드 라인 방향으로 나타나는 측면 전하 확산(Lateral Charge Spreading)을 고려한 X-방향 런길이 제한(X-Run Length Limited: 이하, X- RLL) 코딩을 적용한다. 그리고, 워드 라인 방향과는 독립적으로 비트 라인 방향(Y-Direction)으로 발생하는 측면 전화 확산(Lateral Charge Spreading)을 비롯한 전하 이동에 대처하기 위한 런길이 제한(Y-Run Length Limited: 이하, Y-RLL) 코딩을 적용한다. 각각의 방향에 대해 적용되는 런길이 제한(RLL) 코딩 동작은 상호 독립적이다. 프로그램 동작시, 변조 코딩부(110)는 런길이 제한 코딩이 적용된 프로그램 데이터를 비휘발성 메모리 장치(120)에 제공한다. 읽기 동작시, 변조 코딩부(110)는 비휘발성 메모리 장치(120)로부터 제공되는 독출 데이터로부터 런길이 제한 코딩을 해제하는 디코딩을 적용한다. 디코딩된 독출 데이터는 호스트(Host)로 전달될 것이다.
도 4는 변조 코드의 예로서 다차원 런길이 제한 코딩(Multi-dimensional Run Length Limited coding)을 예시적으로 보여주는 도면이다.
도 4를 참조하면, 호스트(Host)로부터 제공되는 프로그램 데이터는 워드 라인 방향의 행과 비트 라인 방향의 열을 구성한다. 즉, 입력되는 프로그램 데이터는 (m×n) 행렬을 구성하게 될 것이다. 그러나, 하나의 메모리 셀에 복수 비트의 데이터가 저장되는 멀티 레벨 셀을 포함하는 경우, 입력되는 프로그램 데이터는 각각의 페이지에 대응하는 (m×n) 행렬을 구성할 수 있다. 도 4에서는 하나의 페이지 데이터 또는 메모리 셀들에 대한 (m×n) 행렬을 표시하였다. 그러나, 프로그램 데이터는 2-비트 MLC의 경우에는 LSB 페이지 행렬(LSB page matrix)과 MSB 페이지 행렬(MSB page matrix)을 별도로 구성할 수 있다. 만일, 3-비트 MLC를 포함하는 셀 어레이에서는 3개의 페이지 각각에 대응하는 행렬이 형성될 수도 있을 것이다.
변조 코딩부(110, 도 3 참조)는 (m×n) 행렬로 구성되는 프로그램 데이터에 대해서 행과 열 각각에 대한 런길이 제한 코딩을 실시한다. 여기서, 열의 크기를 정의하는 n은 런길이 제한 코딩의 부호율(Code rate)을 참조하여 결정된다. 즉, 런길이 제한 코딩에 의해서 증가되는 비트 수를 고려하여, 열의 크기 n은 하나의 페이지 또는 하나의 섹터보다 작은 값으로 결정되어야 할 것이다. 마찬가지로, 행의 크기를 정의하는 m도 런길이 제한 코딩의 부호율을 참조하여 결정될 것이다. 열 방향으로 런길이 제한 코딩에 의해서 증가되는 비트수를 고려하여 데이터 행렬에서의 행의 크기 m이 결정되어야 한다.
즉, (m×n) 행렬이 하나의 메모리 블록(Memory block)에 프로그램될 데이터라면, m과 n은 각각 메모리 블록의 행 및 열의 메모리 셀들 수보다 충분히 작아야 한다. 그래야만, 런길이 제한 코딩에 따라 증가된 비트 수의 프로그램 데이터들이 행과 열 방향으로 수용될 수 있다. 그러나, (m×n) 행렬이 메모리 블록에 대해서 충분히 마진을 갖지 않더라도, 또 다른 가용 메모리 블록을 이용하여 런길이 제한 코딩에 따라 증가된 비트들을 수용할 수도 있을 것이다.
(m×n) 행렬의 구성이 완료되면, 변조 코딩부(110)는 전체 (m×n) 데이터 행렬에 대한 행 방향 및 열 방향의 이차원 런길이 제한 코딩을 실시할 수 있다. 여기서, (m×n) 행렬의 구성이 완료된 이후에 행 방향 및 열 방향에 대한 이차원 런길이 제한 코딩이 설명되었으나, 본 발명은 이에 국한되지 않는다. 즉, (m×n) 행렬이 구성되지 않고 하나의 행만이 입력되더라도, 변조 코딩부(110)는 입력된 하나의 행에 대한 행 방향 런길이 제한 코딩(X-RLL)을 실행할 수 있다. 그리고 이어서 입 력되는 행에 대해서 이전에 입력된 행의 데이터 값을 참조하여 행 방향 및 열 방향 런길이 제한 코딩을 진행하도록 알고리즘이 구성될 수 있다. 즉, 열 방향 런길이 제한 코딩(Y-RLL)을 실행하기 위해서는 연속되는 적어도 2개의 워드 라인 단위의 데이터가 축적되어 있어야 한다.
이상의 도 4에서 행과 열 방향 각각에 대한 이차원 런길이 제한 코딩에 대해서 설명되었다. 그러나, 복수의 페이지 행렬들 각각에 대해서 상술한 이차원 런길이 제한 코딩이 이루어질 수도 있으며, 부호율을 고려하여 어느 하나의 페이지 행렬에 대해서만 런길이 제한 코딩이 적용될 수 있다. 예를 들면, 도 1의 프로그램 상태 및 데이터의 대응 관계를 갖는 비휘발성 메모리 장치에 대해서는 MSB 페이지 행렬(MSB page matrix)에 대한 런길이 제한 코딩을 적용함으로써 본 발명의 목적을 달성할 수 있다. 이러한 예를 후술하는 도 5에서 상세히 설명하기로 한다.
도 5는 런길이 제한 코딩(RLL coding)의 예를 단계적으로 보여주는 표들이다. 도 5를 참조하여, 하나의 워드 라인에 대응하는 데이터(m 행들 중 어느 하나) 또는 하나의 비트 라인에 대응하는 데이터(n 열들 중 어느 하나)에 대해서 런길이 제한 코딩의 예가 설명될 것이다. 이러한 코딩에 의하여 워드 라인 방향 또는 비트 라인 방향에서 인접한 메모리 셀들의 문턱 전압이 소거 상태(EO)와 프로그램 상태(P3)를 갖게 되는 경우를 회피할 수 있다. 여기서, 설명의 편의를 위해서 횡측으로 메모리 셀들이 분포하는 것으로 표현되었으나, 열 방향에 대해서도 동일한 알고리즘이 적용된다.
표 (a)는 런길이 제한 코딩이 이루어지기 전의 프로그램 데이터를 간략히 보여주는 표이다. 2-비트 멀티 레벨 셀(MLC)들을 포함하는 어느 하나의 워드 라인에 프로그램될 2개의 페이지(LSB, MSB) 데이터의 일부가 도시되었다.
소거 상태(EO)와 최상위 프로그램 상태(P3)가 인접하는 메모리 셀들은 각각 쌍들(MC1-MC2, MC3-MC4, MC5-MC6)로 이루어짐을 확인할 수 있다. 즉, 메모리 셀(MC1)에 프로그램될 데이터는 LSB와 MSB가 모두 논리 '1'로서 소거 상태(E0)에 대응한다. 메모리 셀(MC2)에 프로그램될 데이터는 논리 '0'의 LSB와 논리 '1'의 MSB로서 프로그램 상태(P3)에 대응한다. 따라서, 메모리 셀들(MC1, MC2)은 런길이 제한 코딩이 필요한 프로그램 상태 조건(E0-P3, 210)에 해당된다.
메모리 셀(MC3)에 프로그램될 데이터는 논리 '0'의 LSB와 논리 '1'의 MSB로서 프로그램 상태(P3)에 대응한다. 메모리 셀(MC4)에 프로그램될 데이터는 논리 '1'의 LSB와 논리 '1'의 MSB로서 소거 상태(E0)에 대응한다. 따라서, 메모리 셀들(MC3, MC4)은 런길이 제한 코딩이 필요한 프로그램 상태 조건(P3-E0, 220)에 해당된다.
메모리 셀(MC5)에 프로그램될 데이터는 논리 '1'의 LSB와 논리 '1'의 MSB로서 소거 상태(E0)에 대응한다. 메모리 셀(MC6)에 프로그램될 데이터는 논리 '0'의 LSB와 논리 '1'의 MSB로서 프로그램 상태(P3)에 대응한다. 따라서, 메모리 셀들(MC5, MC6)은 런길이 제한 코딩이 필요한 프로그램 상태 조건(E0-P3, 230)에 해당된다. 반면에, 메모리 셀들(MC7, MC8, MC9)은 소거 상태와 최상위 문턱 전압에 대응하는 프로그램 상태(P3)와 인접한 프로그램 조건을 포함하지 않는다.
이상의 표 (a)를 관찰하면, 소거 상태(E0)와 프로그램 상태(P3)가 인접하게 되는 조건을 관찰할 수 있다. 즉, 소거 상태(E0)와 프로그램 상태(P3)에 대응하는 데이터의 MSB는 모두 논리 '1'이라는 특징이 있다. 따라서, 소거 상태(E0)와 프로그램 상태(P3)가 인접한 데이터 상태는 MSB가 논리 '1'인 메모리 셀들이 인접하는 경우에 발생한다. 즉, 인접한 메모리 셀들에 프로그램되는 데이터의 MSB가 연속적으로 논리 '1'인 경우에 소거 상태(E0)와 프로그램 상태(P3)의 인접 조건이 발생한다. 이러한 MSB의 조건을 인용부호(240)으로 도시하였다.
결국, 소거 상태(E0)와 프로그램 상태(P3)의 인접 조건을 회피하기 위해서는 프로그램되는 인접한 메모리 셀들의 MSB가 연속적으로 논리 '1'이 되지 않도록 처리하는 행 방향 런길이 제한 코딩(X-RLL)을 수행해야 한다. 표 (a)에서는 행 방향으로 배열된 메모리 셀들에 대해서 설명되었으나, 비트 라인 방향, 즉 열 방향에 대해서도 동일하게 적용될 수 있다.
표 (b)는 논리 '1'이 인접하지 않도록 구성되는 2진 런길이 제한 코드(Binary RLL coding)의 예로서 (d, k) 코드를 간략히 보여준다. 여기서, 'd'는 두개의 논리 '1' 사이에 허용되는 논리 '0'의 최소 개수를 의미한다. 'k'는 두개의 논리 '1' 사이에 허용되는 논리 '0'의 최대 개수를 의미한다. 표 (b)에서는 (d=1, k=∞)의 조건으로 3-비트 입력 5-비트 출력의 런길이 제한 코드가 룩업 테이블 방식으로 구성된 예를 보여준다. 만일, 동일 워드 라인에 차례대로 인접한 메모리 셀들에 프로그램될 MSB 페이지의 일부 데이터가 '010'이라면, 변조 코딩부(110, 도 3 참조)는 런길이 제한 코딩을 적용하여 데이터 '00010'을 출력한다. 프로그램될 MSB 페이지의 3-비트 데이터가 '111'이라면, 변조 코딩부(110, 도 3 참조)는 런길이 제 한 코딩(RLL)을 적용하여 데이터 '01010'을 출력할 것이다. 런길이 제한 코딩의 방식은 표 (b)에 도시된 룩업 테이블 방식에만 국한되지는 않는다.
표 (c)는 표 (a)에 도시된 메모리 셀들의 MSB 페이지에 표 2에 도시된 (d, k) 런길이 제한 코드를 적용한 결과이다. LSB 페이지는 런길이 제한 코딩이 적용되기 이전의 값과 동일하다. 그러나, MSB 페이지는 런길이 제한 코딩에 의하여 3-비트 길이의 데이터가 5-비트 길이로 증가하여, 행 방향 메모리 셀들로 순차적으로 시프트되었다. 즉, 런길이 제한 코딩이 실시되기 이전에 메모리 셀들(MC1, MC2, MC3)에 프로그램될 MSB 데이터는 '111'이었다. 그러나, 런길이 제한 코딩에 따라 MSB 페이지의 데이터 '111'은 '01010'(250)으로 부호화된다. 따라서, 5-비트 데이터를 프로그램하기 위해, 메모리 셀들(MC1, MC2, MC3, MC4, MC5)이 사용된다. 런길이 제한 코딩이 실시되기 이전에 메모리 셀들(MC4, MC5, MC6)에 프로그램될 MSB 데이터 또한 '111'이었다. 그러나, 런길이 제한 코딩에 따라 MSB 페이지의 데이터 '111'은 '01010'(260)으로 부호화된다. 따라서, 5-비트 데이터를 프로그램하기 위해, 메모리 셀들(MC6, MC7, MC8, MC9, MC10)이 사용된다. 런길이 제한 코딩이 실시되기 이전에 메모리 셀들(MC7, MC8, MC9)에 프로그램될 MSB 데이터 또한 '100'이었다. 그러나, 런길이 제한 코딩에 따라 MSB 페이지의 데이터 '100'은 '00101'(270)으로 부호화된다. 따라서, 5-비트 데이터를 프로그램하기 위해, 메모리 셀들(MC11, MC12, MC13, MC14, MC15)이 사용된다.
표 (c)에 나타난 결과와 같이, MSB 페이지에 대한 런길이 제한 코딩의 적용에 의하여, 인접한 메모리 셀들 사이에서 소거 상태(E0)와 프로그램 상태(P3)가 인 접하는 경우를 방지할 수 있다. 여기서, MSB 페이지에 대한 런길이 제한 코딩만을 적용하였으나, 본 발명은 이에 국한되지 않는다. 즉, LSB 페이지에 대해서 런길이 제한 코딩을 적용할 수도 있을 것이다. 메모리 셀들(MC11, MC12, MC13, MC14, MC15)의 LSB 및 스테이트(State)는 (X)로 표기하였다. 이것은 메모리 셀들(MC11, MC12, MC13, MC14, MC15)의 LSB 데이터 값은 런길이 제한 코딩을 적용하지 않기 때문이다. 런길이 제한 코딩이 적용된 MSB 데이터의 값에 따라 스테이트(State)는 가변된다.
이상에서, MSB 페이지에 대해서만 런길이 제한 코딩을 적용하는 것으로 표현되었으나 본 발명은 이에 국한되지 않는다. 부호율은 감소하겠지만, LSB 페이지와 MSB 페이지에 대해서 동시에 런길이 제한 코딩을 적용할 수 있다. 설명의 편의를 위해서 행 방향으로 이루어지는 런길이 제한 코딩이 표들 (a), (b) 및 (c)를 통해서 설명되었으나, 열 방향에 대해서도 동일하게 적용된다.
도 6은 M진(M-ary) 런길이 제한 코딩(RLL coding)의 예를 보여주는 스테이트 다이어그램이다. 도 6을 참조하면, 데이터를 워드 라인 단위로 처리하는 경우, 인접한 메모리 셀들의 상태 천이의 양상이 도시된 바와 같이 구성된다.
소거 상태(E0)로 프로그램되는 메모리 셀에 인접한 메모리 셀이 프로그램 가능한 상태는 소거 상태(E0), 프로그램 상태(P1) 및 프로그램 상태(P2)이다. 프로그램 상태(P1)로 프로그램되는 메모리 셀에 인접한 메모리 셀이 프로그램 가능한 상태는 소거 상태(E0), 프로그램 상태(P1), 프로그램 상태(P2) 및 프로그램 상태(P3)이다. 프로그램 상태(P2)로 프로그램되는 메모리 셀에 인접한 메모리 셀이 프로그 램 가능한 상태는 소거 상태(E0), 프로그램 상태(P1), 프로그램 상태(P2) 및 프로그램 상태(P3)이다. 프로그램 상태(P3)로 프로그램되는 메모리 셀에 인접한 메모리 셀이 프로그램 가능한 상태는 프로그램 상태(P1), 프로그램 상태(P2) 및 프로그램 상태(P3)이다. 즉, 스테이트 다이어그램은 소거 상태(E0)로 프로그램되는 메모리 셀과 인접한 메모리 셀들은 프로그램 상태(P3)를 제외한 나머지 상태로 프로그램될 수 있음을 보여준다. 그리고 스테이트 다이어그램은 프로그램 상태(P3)로 프로그램되는 메모리 셀과 인접한 메모리 셀들이 소거 상태(E0)를 제외한 프로그램 상태들로 프로그램될 수 있음을 보여준다.
도 7은 상술한 다차원 런길이 제한 코딩을 사용하는 경우에 부호율(Code rate)을 높이기 위한 다른 실시예를 보여주는 블록도이다. 도 7을 참조하면, 플래시 메모리 장치와 같은 비휘발성 메모리에서 프로그램 순서와 위치에 따라 프로그램 디스터브(Program disturbance)의 영향이 다르다는 것이 알려져 왔다. 따라서, 프로그램되는 메모리 셀의 위치에 따라서 선택적으로 런길이 제한 코딩을 적용하는 기술이 도 7의 실시예에서 설명될 것이다.
프로그램 디스터브(Program disturbance)의 영향은 일반적으로 먼저 프로그램되는 로 워드 라인 영역(320)에서 현저하게 나타난다. 따라서, 변조 코딩부(110, 도 2 참조)는 프로그램 데이터가 기입되는 위치가 로 워드 라인 영역(320)에 대응하는지를 검출하여 런길이 제한 코딩의 실시 여부를 판단하게 될 것이다. 프로그램 데이터와 함께 입력되는 행 어드레스가 하이 워드 라인 영역(310)에 대응하는 경우, 변조 코딩부(110)는 런길이 제한 코딩을 적용하지 않는다.
이러한 선택적인 런길이 제한 코딩의 적용을 통해서 부가되는 알고리즘에 따른 시스템의 오버헤드를 줄일 수 있다.
도 8a 및 도 8b는 도 7에서 설명된 선택적인 런길이 제한 코딩을 보여주는 순서도이다. 도 8a는 비휘발성 메모리로의 데이터 기입을 보여주는 순서도이고, 도 8b는 비휘발성 메모리로부터 데이터를 독출하는 동작을 보여주는 순서도이다.
도 8a을 참조하면, 메모리 컨트롤러에 의해서 프로그램 데이터와 함께 입력되는 행 어드레스를 참조하여 런길이 제한 코딩의 실행 여부가 결정된다. 호스트(Host)로부터 프로그램 명령과 함께 프로그램 데이터와 어드레스가 입력되면, 메모리 컨트롤러(미도시됨)는 프로그램 데이터의 기입을 위한 제반 데이터 처리를 실시한다. 예를 들면, 메모리 컨트롤러는 호스트로부터 제공되는 논리 어드레스(Logical address)를 비휘발성 메모리 장치의 물리적 어드레스(Physical address)로 전환하는 어드레스 맵핑 연산을 실시할 수 있다. 또는, 메모리 컨트롤러는 에러 정정 코딩을 통하여 패리티 비트를 프로그램 데이터에 삽입할 수 있다(S10).
이어서, 어드레스 맵핑을 통해서 결정된 프로그램 데이터가 기입되는 메모리 블록과 메모리 블록 내에서의 행 어드레스(Row address)에 대한 검출이 이루어진다. 행 어드레스가 메모리 블록에서 로 워드 라인 영역에 대응되는지 또는 하이 워드 라인 영역에 대응되는지가 검출된다(S20). 행 어드레스(Row address)가 로 워드 라인 영역에 대응하는 경우와 그렇지 않은 경우에 따라서 런길이 제한 인코딩(RLL encoding)을 실시할지 또는 실시하지 않을지가 결정된다(S30).
만일, 행 어드레스(Row address)가 로 워드 라인 영역에 대응하는 경우라면, 절차는 입력되는 프로그램 데이터에 대한 런길이 제한 코딩을 적용하는 단계로 이동한다. 즉, 메모리 컨트롤러는 런길이 제한 인코딩(RLL encoding)을 실시하도록 변조 코딩부(110, 도 3 참조)를 제어할 것이다(S40). 반면에, 행 어드레스가 로 워드 라인 영역에 포함되지 않는 경우, 즉 행 어드레스가 하이 워드 라인 영역에 대응하는 경우에는 런길이 제한 인코딩(RLL encoding)은 생략된다.
행 어드레스에 따라, 런길이 제한 코딩이 적용된 프로그램 데이터, 또는 런길이 제한 코딩의 적용없이 호스트로부터 제공된 데이터에 대한 프로그램이 실시된다(S50). 프로그램 데이터에 대한 기입 동작이 완료되면, 선택적인 런길이 제한 코딩을 적용하는 프로그램 동작은 종료된다.
도 8b는 도 8a에 도시된 절차에 따라 프로그램된 데이터를 독출하는 방법을 간략히 보여준다. 먼저, 비휘발성 메모리로의 액세스 명령(예를 들면, 읽기 명령)에 응답하여 메모리 컨트롤러는 비휘발성 메모리 장치로부터 데이터를 제공받는다(S110). 이어서, 메모리 컨트롤러는 제공받은 읽기 데이터의 행 어드레스를 검출한다(S120).
독출된 데이터의 메모리 블록 상에서의 행 어드레스가 로 워드 라인 영역에 대응되는지 또는 하이 워드 라인 영역에 대응되는지가 검출된다(S130). 독출된 데이터의 행 어드레스가 로 워드 라인 영역에 포함되는 경우, 절차는 런길이 제한 디코딩을 위한 단계(S140)로 이동한다. 런길이 제한 디코딩이 완료되면, 독출 데이터는 외부 또는 호스트(Host)로 출력될 것이다(S150). 반면에, 독출된 데이터의 행 어드레스가 로 워드 라인 영역과 대응하지 않으면, 절차는 런길이 제한 디코딩을 생략한다. 그리고, 비휘발성 메모리로부터 독출된 데이터가 직접 출력될 것이다(S150).
이상에서 설명된 흐름도들(도 8a, 도 8b)은 런길이 제한 코딩의 선택적 실시를 구현하는 실시예를 보여준다. 프로그램 디스터브(Program disturbance)는 로 워드 라인 영역에서 현저하기 때문에 문제가 되는 영역에서만 런길이 제한 코딩을 적용함으로써, 런길이 제한 코딩의 전체적인 부호율을 높일 수 있다.
도 9는 본 발명에 따른 메모리 시스템(400)을 간략히 보여주는 블록도이다. 도 9를 참조하면, 본 발명에 따른 메모리 시스템(400)은 비휘발성 메모리 장치(420)와 메모리 컨트롤러(410)를 포함한다.
비휘발성 메모리 장치(420)는 앞서 설명된 도 3에 도시된 셀 어레이(121)와 페이지 버퍼(122)를 갖는 플래시 메모리 장치로 구성될 수 있다. 메모리 컨트롤러(410)는 비휘발성 메모리 장치(420)를 제어하도록 구성될 것이다. 비휘발성 메모리 장치(420)와 메모리 컨트롤러(410)의 결합에 의해 메모리 카드 또는 반도체 디스크 장치(Solid State Disk: SSD)로 제공될 수 있을 것이다. SRAM(411)은 프로세싱 유닛(412)의 동작 메모리로써 사용된다. 변조 인코더/디코더(413)는 행 방향 및 열 방향에 대해서 소거 상태(E0)와 프로그램 상태(P3)가 인접하지 못하도록 프로그램 데이터를 처리한다. 또한, 독출된 데이터를 디코딩하여 변조 코딩된 데이터를 원래의 데이터로 복구한다. 변조 인코더/디코더(413)는 앞서 설명된 도 3의 변조 코딩부(110)와 실질적으로 동일한 기능을 수행한다. 변조 인코더/디코더(413)는 하 드웨어로 구성될 수 있지만, 펌웨어와 같은 소프트웨어로 구성될 수 있다.
호스트 인터페이스(414)는 메모리 시스템(400)과 접속되는 호스트의 데이터 교환 프로토콜을 구비한다. 에러 정정 블록(415)은 비휘발성 메모리 장치(420)로부터 독출된 데이터에 포함되는 에러를 검출 및 정정한다. 메모리 인터페이스(416)는 본 발명의 비휘발성 메모리 장치(420)와 인터페이싱 한다. 프로세싱 유닛(412)은 메모리 컨트롤러(410)의 데이터 교환을 위한 제반 제어 동작을 수행한다. 비록 도면에는 도시되지 않았지만, 본 발명에 따른 메모리 시스템(400)은 호스트(Host)와의 인터페이싱을 위한 코드 데이터를 저장하는 ROM(미도시됨) 등이 더 제공될 수 있음은 이 분야의 통상적인 지식을 습득한 자들에게 자명하다. 비휘발성 메모리 장치(420)는 복수의 플래시 메모리 칩들로 구성되는 멀티-칩 패키지로 제공될 수도 있다. 이상의 본 발명의 메모리 시스템(400)은 에러의 발생 확률이 낮은 고신뢰성의 저장 매체로 제공될 수 있다. 특히, 최근 활발히 연구되고 있는 반도체 디스크 장치(Solid State Disk: 이하 SSD)와 같은 메모리 시스템에서 본 발명의 플래시 메모리 장치가 구비될 수 있다. 이 경우, 메모리 컨트롤러(410)는 USB, MMC, PCI-E, SATA, PATA, SCSI, ESDI, 그리고 IDE 등과 같은 다양한 인터페이스 프로토콜들 중 하나를 통해 외부(예를 들면, 호스트)와 통신하도록 구성될 것이다.
여기서, 메모리 컨트롤러(410)는 상술한 실시예들에 의해서 설명된 방식으로 비휘발성 메모리 장치(420)를 액세스한다. 즉, 변조 인코더/디코더(413)는 행 어드레스에 대해서 선택적으로 런길이 제한 코딩을 실시하도록 설정될 수 있다.
도 10은 앞서 설명된 다양한 실시예들에 따라 프로그램 동작을 수행하는 퓨 전 메모리 장치 또는 퓨전 메모리 시스템(500)을 간략히 보여주는 블록도이다. 예를 들면, 퓨전 메모리 장치로서 원낸드 플래시 메모리 장치(500)에 본 발명의 기술적 특징이 적용될 수 있다.
원낸드 플래시 메모리 장치(500)는 서로 다른 프로토콜을 사용하는 장치와의 각종 정보 교환을 위한 호스트 인터페이스(510)와, 메모리 장치를 구동하기 위한 코드를 내장하거나 데이터를 일시적으로 저장하는 버퍼 램(520)과, 외부에서 주어지는 제어 신호와 명령어에 응답하여 읽기와 프로그램 및 모든 상태를 제어하는 제어부(530)와, 명령어와 어드레스, 메모리 장치 내부의 시스템 동작 환경을 정의하는 설정(Configuration) 등의 데이터가 저장되는 레지스터(540) 및 비휘발성 메모리 셀과 페이지 버퍼로 구성된 낸드 플래시 셀 어레이(550)를 포함한다. 호스트로부터의 쓰기 요청에 응답하여 원낸드 플래시 메모리 장치는 공격 셀들의 물리적 영향을 차단하기 위한 본 발명의 프로그램 절차들에 따라 데이터를 낸드 플래시 셀 어레이(550)에 기입하게 될 것이다. 앞서 설명된 실시예들의 런길이 제한 코딩은 원낸드 플래시 메모리 장치(500)의 내부에 포함되는 제어부(530)에서 수행될 수 있다. 또는, 원낸드 플래시 메모리 장치을 제어하기 위한 별도의 메모리 컨트롤러에서 런길이 제한 코딩을 수행할 수도 있다.
도 11에는 본 발명에 따른 플래시 메모리 장치(612)를 포함한 컴퓨팅 시스템(600)이 개략적으로 도시되어 있다. 본 발명에 따른 컴퓨팅 시스템(600)은 시스템 버스(660)에 전기적으로 연결된 마이크로프로세서(620), 램(630), 사용자 인터페이스(640), 베이스밴드 칩셋(Baseband chipset)과 같은 모뎀(650) 및 메모리 시 스템(610)을 포함한다. 메모리 시스템(610)은 도 9 또는 도 10에 도시된 것과 실질적으로 동일하게 구성될 것이다. 본 발명에 따른 컴퓨팅 시스템(600)이 모바일 장치인 경우, 컴퓨팅 시스템(600)의 동작 전압을 공급하기 위한 배터리(미도시됨)가 추가적으로 제공될 것이다. 비록 도면에는 도시되지 않았지만, 본 발명에 따른 컴퓨팅 시스템(600)에는 응용 칩셋(Application chipset), 카메라 이미지 프로세서(Camera Image Processor: CIS), 모바일 디램, 등이 더 제공될 수 있음은 이 분야의 통상적인 지식을 습득한 자들에게 자명하다. 메모리 시스템(610)은, 예를 들면, 데이터를 저장하는 데 비휘발성 메모리를 사용하는 SSD(Solid State Drive/Disk)를 구성할 수 있다. 또는, 메모리 시스템(610)은, 퓨전 플래시 메모리(예를 들면, 원낸드 플래시 메모리)로 제공될 수 있다.
본 발명에 따른 플래시 메모리 장치 그리고/또는 메모리 컨트롤러는 다양한 형태들의 패키지를 이용하여 실장될 수 있다. 예를 들면, 본 발명에 따른 플래시 메모리 장치 그리고/또는 메모리 컨트롤러는 PoP(Package on Package), Ball grid arrays(BGAs), Chip scale packages(CSPs), Plastic Leaded Chip Carrier(PLCC), Plastic Dual In-Line Package(PDIP), Die in Waffle Pack, Die in Wafer Form, Chip On Board(COB), Ceramic Dual In-Line Package(CERDIP), Plastic Metric Quad Flat Pack(MQFP), Thin Quad Flatpack(TQFP), Small Outline(SOIC), Shrink Small Outline Package(SSOP), Thin Small Outline(TSOP), Thin Quad Flatpack(TQFP), System In Package(SIP), Multi Chip Package(MCP), Wafer-level Fabricated Package(WFP), Wafer-Level Processed Stack Package(WSP), 등과 같은 패키지들을 이용하여 실장될 수 있다.
이상에서와 같이 도면과 명세서에서 최적 실시예가 개시되었다. 여기서 특정한 용어들이 사용되었으나, 이는 단지 본 발명을 설명하기 위한 목적에서 사용된 것이지 의미 한정이나 특허청구범위에 기재된 본 발명의 범위를 제한하기 위하여 사용된 것은 아니다. 그러므로 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 특허청구범위의 기술적 사상에 의해 정해져야 할 것이다.
도 1은 멀티-비트 플래시 메모리 장치의 문턱 전압 분포를 보여주는 도면;
도 2는 다차원 방향에서 발생하는 측면 전하 확산 현상을 보여주는 도면;
도 3은 본 발명의 메모리 시스템을 보여주는 블록도;
도 4는 다차원 런길이 제한 코딩(Multi-dimensional Run Length Limited coding)을 보여주는 도면;
도 5는 런길이 제한 코딩(RLL coding)의 예를 단계적으로 보여주는 표들;
도 6은 M진 런길이 제한 코딩(M-ary RLL coding)을 적용하기 위한 스테이트 다이어그램;
도 7은 선택적인 런길이 제한 코딩의 적용 방법을 보여주는 블록도;
도 8a 및 도 8b는 선택적인 런길이 제한 코딩을 보여주는 순서도;
도 9는 본 발명의 데이터 처리 방법에 따라 데이터를 저장하거나 독출하는 메모리 시스템을 보여주는 블록도;
도 10은 본 발명의 데이터 처리 방법에 따라 데이터를 저장하거나 독출하는 원낸드 플래시 메모리 장치를 보여주는 블록도; 및
도 11은 본 발명의 데이터 처리 방법에 따라 동작하는 메모리 카드를 포함하는 컴퓨팅 시스템을 보여주는 블록도.
*도면의 주요 부분에 대한 부호의 설명*
110 : 변조 코딩부 120 : 비휘발성 메모리 장치
121 : 셀 어레이 122 : 페이지 버퍼
410 : 메모리 컨트롤러 411 : 에스램
412 : 중앙처리장치 413 : 변조 인코더/디코더
414 : 호스트 인터페이스 415 : 에러정정코드
416 : 메모리 인터페이스 420 : 비휘발성 메모리 장치
510 : 호스트 인터페이스 520 : 버퍼램
530 : 컨트롤러 540 : 레지스터
550 : 낸드 셀 어레이 610 : 메모리 카드
611 : 메모리 컨트롤러 612 : 비휘발성 메모리 장치
620 : 프로세싱 유닛 630 : 램
640 : 유저 인터페이스 650 : 모뎀
660 : 시스템 버스

Claims (10)

  1. 비휘발성 메모리의 행과 열에 프로그램될 데이터를 행 또는 열 방향에 따라 배열하는 단계; 및
    상기 비휘발성 메모리의 서로 인접한 셀들이 복수의 프로그램 상태들 중 제 1 상태 및 제 2 상태로 프로그램되는 경우를 차단하도록 상기 프로그램될 데이터를 상기 행 또는 열 방향에 따라 변조 코드로 부호화하는 단계를 포함하되,
    상기 프로그램될 데이터는 상기 비휘발성 메모리의 셀들에 프로그램되는 복수의 페이지들에 대응하는 복수의 행렬들로 구성되며, 상기 서로 인접한 셀들 각각에는 동일 비트 수의 데이터가 저장되고,
    상기 부호화하는 단계는 상기 비휘발성 메모리의 워드 라인 위치에 따라 선택적으로 실행되고,
    상기 비휘발성 메모리는 멀티 레벨 셀이고, 상기 제 1 상태는 소거 상태, 상기 제 2 상태는 상기 복수의 프로그램 상태들 중 가장 높은 문턱 전압에 대응하는 최상위 프로그램 상태이며,
    상기 복수의 행렬들 중 최상위 비트(MSB) 페이지에 대응하는 행렬의 행과 열 각각을 변조 코드로 부호화되는 반도체 메모리 장치의 데이터 처리 방법.
  2. 삭제
  3. 삭제
  4. 삭제
  5. 제 1 항에 있어서,
    상기 행렬은 워드 라인 방향에 대응하는 행 방향과, 비트 라인 방향에 대응하는 열 방향의 2차원 행렬로 배열되는 반도체 메모리 장치의 데이터 처리 방법.
  6. 제 1 항에 있어서,
    상기 행과 열 방향으로 배열된 프로그램될 데이터를 프로그램 순서에 따라 적어도 2개의 서브 행렬로 구분하는 단계를 더 포함하되,
    상기 적어도 2개의 서브 행렬은 제 1 워드 라인에 대응하는 제 1 서브 행렬과 상기 제 1 워드 라인보다 프로그램 우선 순위가 낮은 제 2 워드 라인에 대응하는 제 2 서브 행렬을 포함하는 것을 특징으로 하는 반도체 메모리 장치의 데이터 처리 방법.
  7. 제 6 항에 있어서,
    상기 변조 코드로 부호화하는 단계에서, 상기 적어도 2개의 서브 행렬들 중 상기 제 1 서브 행렬만 상기 변조 코드로 부호화하는 반도체 메모리 장치의 데이터 처리 방법.
  8. 제 6 항에 있어서,
    상기 적어도 2개의 서브 행렬로 구분하는 동작은 상기 프로그램될 데이터에 대응하는 행 어드레스를 참조하여 실시되는 반도체 메모리 장치의 데이터 처리 방법.
  9. 제 1 항에 있어서,
    상기 변조 코드로 부호화된 프로그램 데이터를 상기 비휘발성 메모리에 프로그램하는 단계를 더 포함하는 반도체 메모리 장치의 데이터 처리 방법.
  10. 행과 열로 배열된 메모리 셀들을 갖는 비휘발성 메모리; 및
    상기 비휘발성 메모리를 제어하기 위한 메모리 컨트롤러를 포함하되, 상기 메모리 컨트롤러는 상기 비휘발성 메모리의 행과 열에 프로그램될 데이터를 행 또는 열 방향에 따라 배열하고, 서로 인접한 메모리 셀들이 제 1 상태 및 제 2 상태로 프로그램되는 경우를 차단하도록 상기 프로그램될 데이터를 상기 행 또는 열 방향에 따라 런길이 제한 코드로 부호화하고, 상기 부호화된 데이터를 프로그램하되,
    상기 서로 인접한 메모리 셀들 각각에는 동일 비트 수의 데이터가 저장되고,
    상기 런길이 제한 코드로의 부호화는 상기 비휘발성 메모리의 워드 라인 위치에 따라 선택적으로 실행되고,
    상기 프로그램될 데이터 중 최상위 비트(MSB) 페이지에 대응하는 행과 열 각각이 상기 런길이 제한 코드로 부호화되는 반도체 메모리 장치.
KR1020090010219A 2009-02-09 2009-02-09 반도체 메모리 장치 및 그것의 데이터 처리 방법 KR101602316B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020090010219A KR101602316B1 (ko) 2009-02-09 2009-02-09 반도체 메모리 장치 및 그것의 데이터 처리 방법
US12/654,578 US8806302B2 (en) 2009-02-09 2009-12-23 Semiconductor memory device and data processing method thereof

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020090010219A KR101602316B1 (ko) 2009-02-09 2009-02-09 반도체 메모리 장치 및 그것의 데이터 처리 방법

Publications (2)

Publication Number Publication Date
KR20100090966A KR20100090966A (ko) 2010-08-18
KR101602316B1 true KR101602316B1 (ko) 2016-03-22

Family

ID=42540286

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020090010219A KR101602316B1 (ko) 2009-02-09 2009-02-09 반도체 메모리 장치 및 그것의 데이터 처리 방법

Country Status (2)

Country Link
US (1) US8806302B2 (ko)
KR (1) KR101602316B1 (ko)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101436506B1 (ko) * 2008-07-23 2014-09-02 삼성전자주식회사 메모리 장치 및 메모리 데이터 프로그래밍 방법
US8023345B2 (en) * 2009-02-24 2011-09-20 International Business Machines Corporation Iteratively writing contents to memory locations using a statistical model
US8386739B2 (en) * 2009-09-28 2013-02-26 International Business Machines Corporation Writing to memory using shared address buses
JP5060574B2 (ja) * 2010-03-16 2012-10-31 株式会社東芝 メモリシステム
US8463985B2 (en) * 2010-03-31 2013-06-11 International Business Machines Corporation Constrained coding to reduce floating gate coupling in non-volatile memories
US9229804B2 (en) 2010-08-17 2016-01-05 Technion Research And Development Foundation Ltd. Mitigating inter-cell coupling effects in non volatile memory (NVM) cells
US8984369B2 (en) * 2012-11-21 2015-03-17 Micron Technology, Inc. Shaping codes for memory
KR102068519B1 (ko) 2013-07-01 2020-01-21 삼성전자주식회사 저장 장치, 그것의 쓰기 방법 및 읽기 방법
US9312886B2 (en) * 2013-09-20 2016-04-12 Seagate Technology Llc Storage device with multiple coding redundancies
US11437112B2 (en) 2018-12-06 2022-09-06 Micron Technology, Inc. Multi-level signaling for a memory device
US11487611B2 (en) * 2020-10-02 2022-11-01 Western Digital Technologies, Inc. LDPC encoding for memory cells with arbitrary number of levels

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080158948A1 (en) 2006-12-31 2008-07-03 Sandisk Il Ltd. Avoiding errors in a flash memory by using substitution transformations
WO2013033375A1 (en) 2011-08-31 2013-03-07 Micron Technology, Inc. Apparatuses and methods of operating for memory endurance
KR101508665B1 (ko) 2013-11-27 2015-04-08 서울대학교산학협력단 비휘발성 메모리 장치, 이를 위한 메모리 제어기 및 동작 방법

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09102747A (ja) 1995-10-06 1997-04-15 Pioneer Electron Corp 情報データのrll符号化方法及び符号化装置
JP3394127B2 (ja) 1995-12-05 2003-04-07 株式会社東芝 ディジタルデータの伝送方法
JP2000134101A (ja) 1998-10-23 2000-05-12 Sanyo Electric Co Ltd 符号化回路
AU2003226594A1 (en) 2002-04-18 2003-10-27 Koninklijke Philips Electronics N.V. Signal, storage medium, method and device for encoding, method and device for decoding
JP4430343B2 (ja) 2003-06-26 2010-03-10 株式会社日立製作所 メモリモジュールおよびバスシステム
US20070001151A1 (en) * 2005-01-12 2007-01-04 Sapochak Linda S Organic materials with tunable electric and electroluminescent properties
EP1892720B1 (en) * 2006-08-24 2011-07-27 STMicroelectronics Srl A non-volatile, electrically-programmable memory with a plurality of storage densities and data transfer speeds
KR20080071647A (ko) 2007-01-31 2008-08-05 윤태소 보강 패드
JP5028577B2 (ja) * 2007-02-19 2012-09-19 株式会社メガチップス メモリ制御方法およびメモリシステム
JP2009134799A (ja) * 2007-11-29 2009-06-18 Toshiba Corp メモリシステム
KR101518199B1 (ko) * 2008-05-23 2015-05-06 삼성전자주식회사 오류 정정 장치, 그 방법 및 상기 장치를 포함하는 메모리장치
KR101403314B1 (ko) * 2008-05-23 2014-06-05 삼성전자주식회사 메모리 장치 및 데이터 비트 저장 방법
JP5710475B2 (ja) * 2008-07-01 2015-04-30 エルエスアイ コーポレーション フラッシュ・メモリにおけるソフト・デマッピングおよびセル間干渉軽減のための方法および装置
KR101436506B1 (ko) * 2008-07-23 2014-09-02 삼성전자주식회사 메모리 장치 및 메모리 데이터 프로그래밍 방법
KR101518033B1 (ko) * 2008-11-18 2015-05-06 삼성전자주식회사 멀티-레벨 비휘발성 메모리 장치, 상기 장치를 포함하는 메모리 시스템 및 그 동작 방법
US8139075B2 (en) * 2008-12-10 2012-03-20 Microsoft Corp. Color packing glyph textures with a processor
US8868821B2 (en) * 2009-08-26 2014-10-21 Densbits Technologies Ltd. Systems and methods for pre-equalization and code design for a flash memory

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080158948A1 (en) 2006-12-31 2008-07-03 Sandisk Il Ltd. Avoiding errors in a flash memory by using substitution transformations
WO2013033375A1 (en) 2011-08-31 2013-03-07 Micron Technology, Inc. Apparatuses and methods of operating for memory endurance
KR101508665B1 (ko) 2013-11-27 2015-04-08 서울대학교산학협력단 비휘발성 메모리 장치, 이를 위한 메모리 제어기 및 동작 방법

Also Published As

Publication number Publication date
KR20100090966A (ko) 2010-08-18
US20100202198A1 (en) 2010-08-12
US8806302B2 (en) 2014-08-12

Similar Documents

Publication Publication Date Title
KR101602316B1 (ko) 반도체 메모리 장치 및 그것의 데이터 처리 방법
KR101519626B1 (ko) 반도체 메모리 장치 및 그것의 데이터 처리 방법
TWI483255B (zh) 具改善讀取可靠度之包含多位元記憶胞的快閃記憶體裝置
KR100842680B1 (ko) 플래시 메모리 장치의 오류 정정 컨트롤러 및 그것을포함하는 메모리 시스템
KR101635506B1 (ko) 데이터 저장 시스템 및 그것의 읽기 방법
US9535620B2 (en) Flash memory system and method controlling same
US8621266B2 (en) Nonvolatile memory system and related method of performing erase refresh operation
US8255643B2 (en) Memory system and data processing method thereof
KR101633048B1 (ko) 메모리 시스템 및 그것의 데이터 처리 방법
US20190252035A1 (en) Decoding method, memory storage device and memory control circuit unit
KR101941270B1 (ko) 멀티-레벨 메모리 장치를 제어하는 메모리 제어기 및 그것의 에러 정정 방법
US20100241928A1 (en) Data Processing System Having ECC Encoding and Decoding Circuits Therein with Code Rate Selection Based on Bit Error Rate Detection
US20120221775A1 (en) Non-volatile memory device and read method thereof
US20090234792A1 (en) Memory devices and data decision methods
KR101678404B1 (ko) 사전 확률 정보를 사용하는 메모리 시스템 및 그것의 데이터 처리 방법
KR101785007B1 (ko) 멀티-비트 메모리 장치를 포함한 데이터 저장 시스템 및 그것의 온-칩 버퍼 프로그램 방법
US9478298B2 (en) Memory system and method of reading data thereof
KR20090101887A (ko) 치환 변환을 사용하여 플래시 메모리 내의 에러를 피하는 방법
KR20150091693A (ko) 플래쉬 메모리 읽기 방법
KR102089570B1 (ko) 저장 장치 및 그것의 데이터 처리 방법
US10186302B2 (en) Semiconductor systems performing double-write operations and methods of operating the same
US20170228299A1 (en) Data Recovery in Three Dimensional Non-Volatile Memory Array After Word Line Short
CN108701491B (zh) 用于错误率降低的方法和设备
WO2015085260A1 (en) Misprogramming prevention in solid-state memory
US11088713B1 (en) Solid state drive implementing a rate-compatible polar code

Legal Events

Date Code Title Description
A201 Request for examination
AMND Amendment
E902 Notification of reason for refusal
AMND Amendment
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
AMND Amendment
J201 Request for trial against refusal decision
B701 Decision to grant
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20190228

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20200228

Year of fee payment: 5