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

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

Info

Publication number
KR20100097961A
KR20100097961A KR1020090016868A KR20090016868A KR20100097961A KR 20100097961 A KR20100097961 A KR 20100097961A KR 1020090016868 A KR1020090016868 A KR 1020090016868A KR 20090016868 A KR20090016868 A KR 20090016868A KR 20100097961 A KR20100097961 A KR 20100097961A
Authority
KR
South Korea
Prior art keywords
data
error correction
memory
correction code
nonvolatile memory
Prior art date
Application number
KR1020090016868A
Other languages
English (en)
Other versions
KR101519626B1 (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 KR1020090016868A priority Critical patent/KR101519626B1/ko
Priority to US12/702,353 priority patent/US8321760B2/en
Publication of KR20100097961A publication Critical patent/KR20100097961A/ko
Application granted granted Critical
Publication of KR101519626B1 publication Critical patent/KR101519626B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1072Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in multilevel memories
    • GPHYSICS
    • 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
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • 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
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/38Response verification devices
    • G11C29/42Response verification devices using error correcting codes [ECC] or parity check

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Read Only Memory (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

본 발명에 따른 반도체 메모리 장치는 복수의 메모리 셀들에 데이터를 저장하는 불휘발성 메모리; 및 상기 복수의 메모리 셀들 상호간의 간섭을 줄이기 위해 데이터를 변조 코드 연산 등의 다양한 연산에 따라 재배열하는, 그리고 상기 데이터를 에러 정정 코드 연산에 따라 처리하는 메모리 컨트롤러를 포함한다.

Description

반도체 메모리 장치 및 그것의 데이터 처리 방법{SEMICONDUCTOR MEMORY DEVICE AND DATA PROCESSING METHOD THEREOF}
본 발명은 전자 장치에 관한 것으로, 좀 더 구체적으로는 반도체 메모리 장치 및 그것의 데이터 처리 방법에 관한 것이다.
반도체 메모리는, 일반적으로, 위성에서 소비자 전자 기술까지의 범위에 속하는 마이크로프로세서를 기반으로 한 응용 및 컴퓨터와 같은 디지털 로직 설계의 가장 필수적인 마이크로 전자 소자이다. 그러므로, 높은 집적도 및 빠른 속도를 위한 축소(Scaling)를 통해 얻어지는 프로세스 향상 및 기술 개발을 포함한 반도체 메모리의 제조 기술의 진보는 다른 디지털 로직 계열의 성능 기준을 확립하는 데 도움이 된다.
반도체 메모리 장치는 크게 휘발성 반도체 메모리 장치와 불휘발성 반도체 메모리 장치로 나누어진다. 불휘발성 반도체 메모리 장치는 전원이 차단되어도 데이터를 저장할 수 있다. 불휘발성 메모리에 저장되는 데이터는 메모리 제조 기술에 따라 영구적이거나 재프로그램 가능하다. 불휘발성 반도체 메모리 장치는 컴퓨터, 항공 전자 공학, 통신, 그리고 소비자 전자 기술 산업과 같은 넓은 범위의 응용에 서 데이터 및 프로그램 코드의 저장을 위해서 사용된다.
불휘발성 메모리 장치의 대표적인 예로 플래시 메모리 장치가 있다. 최근 들어 메모리 장치에 대한 고집적 요구가 증가함에 따라, 하나의 메모리 셀에 멀티 비트를 저장하는 멀티-비트 메모리 장치들이 보편화되고 있다. 멀티-비트 플래시 메모리 장치의 메모리 셀들은 문턱 전압 분포들 간의 간격이 조밀하게 제어되어야 한다. 즉, 데이터 보유 특성(Data retention characteristics)은 데이터의 신뢰성과 관련하여 가장 중요한 관심사이다. 그러나 메모리 셀의 문턱 전압은 다양한 원인들로 인하여 변할 수 있다. 플로팅 게이트(Floating gate)에 저장된 전하(또는 전자)는 절연막의 결함으로 인한 열이온 방출 및 전하 확산, 이온 불순물, 프로그램 디스터브(Program distrub) 스트레스 등과 같은 다양한 페일 메커니즘들을 통해 누설될 수 있다. 이는 문턱 전압의 변화(Shift)를 야기할 것이다. 메모리 셀의 제어 게이트가 소정 전압(예를 들면, 전원 전압 또는 읽기 전압)으로 유지된 상태에서 플로팅 게이트가 서서히 전하들을 얻을 때, 즉, 읽기 디스터브(Read disturbance)로 인해서 전하 획득의 효과가 생길 수 있다. 이는 문턱 전압의 증가를 야기한다. 상술한 다양한 요인들로 메모리 셀들의 문턱 전압은 스테이트별로 증가하거나 낮아질 수 있다. 특히, 전하 트랩형 플래시(Charge Trapping Flash: CTF) 메모리 장치에서, 측면 전하 확산(Lateral Charge Spreading)과 같은 문제가 중요하게 대두되고 있다. 하나의 메모리 셀에 점점 더 많은 비트 수의 데이터를 저장하기 위한 멀티-비트 메모리 장치에서 이러한 문제를 해결하기 위한 기술이 절실한 실정이다.
본 발명은 에러 발생 확률을 줄일 수 있는 반도체 메모리 장치 및 그것의 데이터 처리 방법을 제공하는데 그 목적이 있다.
상기 목적을 달성하기 위한 본 발명의 반도체 메모리 장치는, 복수의 메모리 셀들에 데이터를 저장하는 불휘발성 메모리; 및 상기 복수의 메모리 셀들 상호간의 간섭을 줄이기 위해 상기 데이터를 변조 코드 연산 등의 다양한 연산에 따라 재배열하는, 그리고 상기 데이터를 에러 정정 코드 연산에 따라 처리하는 메모리 컨트롤러를 포함한다.
상기 목적을 달성하기 위한 본 발명의 불휘발성 메모리를 포함하는 메모리 시스템의 데이터 처리 방법은, 상기 불휘발성 메모리에 기입될 데이터를 메모리 셀들 상호간의 간섭을 줄이기 위한 배열로 재구성하는 단계; 및 상기 재구성된 데이터에 에러 정정 코딩 연산에 의해 생성되는 패리티를 부가하는 단계를 포함한다.
상기 목적을 달성하기 위한 본 발명의 또 다른 특징에 따른 불휘발성 메모리를 포함하는 메모리 시스템의 데이터 처리 방법은, 상기 불휘발성 메모리에 기입될 데이터에 에러 정정 코딩 연산에 의해 생성되는 패리티를 부가하는 단계; 및 상기 패리티가 부가된 기입될 데이터를 메모리 셀들 상호간의 간섭을 줄이기 위한 배열로 재구성하는 단계를 포함하되, 상기 에러 정정 코딩 연산은 메시지 비트들의 배열이 변경되는 비체계적 에러 정정 코드(Non-Systematic ECC) 연산인 것을 특징으로 한다.
상기 목적을 달성하기 위한 본 발명의 메모리 시스템은, 불휘발성 메모리; 상기 불휘발성 메모리에 기입될 데이터를 메모리 셀들 상호간의 간섭을 줄이기 위한 배열로 재구성하는 데이터 배열 처리부; 그리고 상기 재구성된 데이터로부터 에러의 검출 및 정정을 위한 패리티 비트를 추가하여 상기 불휘발성 메모리로 제공하는 에러 정정 코드부를 포함한다.
본 발명의 구성 및 데이터 관리 방법에 따르면, 데이터 배열에 영향을 미치는 데이터 처리 방법을 에러 정정 코드와 유기적으로 연계하여 사용할 수 있다. 따라서, 플래시 메모리와 같은 불휘발성 메모리를 포함하는 반도체 메모리 장치에서 에러 정정 코드를 사용하고도 에러 발생 가능성을 줄일 수 있는 데이터 배열이 가능하다. 따라서, 메모리 장치에 저장되는 데이터에 대한 신뢰성을 높일 수 있다.
앞의 일반적인 설명 및 다음의 상세한 설명 모두 예시적이라는 것이 이해되어야 하며, 청구된 발명의 부가적인 설명이 제공되는 것으로 여겨져야 한다. 참조 부호들이 본 발명의 바람직한 실시예들에 상세히 표시되어 있으며, 그것의 예들이 참조 도면들에 표시되어 있다. 가능한 어떤 경우에도, 동일한 참조 번호들이 동일한 또는 유사한 부분을 참조하기 위해서 설명 및 도면들에 사용된다.
아래에서, 플래시 메모리 장치가 본 발명의 특징 및 기능을 설명하기 위한 불휘발성 메모리의 한 예로서 사용된다. 하지만, 이 기술 분야에 정통한 사람은 여기에 기재된 내용에 따라 본 발명의 다른 이점들 및 성능을 쉽게 이해할 수 있을 것이다. 예를 들면, 저장 매체로서 PRAM, MRAM, ReRAM, FRAM, NOR 플래시 메모리 등이 사용될 수 있으며, 이종의 메모리 장치들이 혼용되는 메모리 시스템에도 적용될 수 있다. 그리고, 2-비트 멀티 레벨 셀(MLC)을 본 발명의 특징을 설명하기 위한 예로 사용되었다. 하지만, 하나의 메모리 셀에 3-비트 이상의 데이터를 기입하는 멀티 비트 메모리 장치에 본 발명의 기술들이 쉽게 적용될 수 있을 것이다.
또한, 본 발명은 다른 실시 예들을 통해 구현되거나 적용될 수 있을 것이다. 게다가, 상세한 설명은 본 발명의 범위, 기술적 사상 그리고 다른 목적으로부터 상당히 벗어나지 않고 관점 및 사용에 따라 수정되거나 변경될 수 있다.
이하의 본 발명의 상세한 설명에서는 런길이 제한 코드(Run-Length Limited Code: RLL) 또는 변조 코드(Modulation Code)가 본 발명의 데이터 배열 처리 연산의 한 예로 설명될 것이다. 그러나, 본 발명의 데이터 배열 처리 연산의 예가 변조 코드(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-비트 데이터는 다양하게 변경될 수 있다. 또한, 설명의 편의를 위해서 2-비트 MLC를 예시적으로 도시되어 있으나, 3-비트, 4-비트 MLC에서도 본 발명과 동일한 기술적 특징이 적용될 수 있음은 자명하다.
플래시 메모리 장치에서, 인접한 메모리 셀과 다른 문턱 전압을 갖는 경우 메모리 셀들은 서로 영향을 미친다. 예를 들면, 프로그램 디스터브(Program distrubance)나 측면 전하 확산(Lateral Charge Spreading)과 같이 인접한 메모리 셀의 문턱 전압에 따라 메모리 셀의 문턱 전압은 증가하거나 낮아질 수 있다. 특히, 메모리 셀들 중 소거 상태(E0)로 프로그램된 메모리 셀과 가장 높은 문턱 전압을 갖는 프로그램 상태(P3)로 프로그램된 메모리 셀 사이에서 이러한 측면 전하 확산(Lateral Charge Spreading)이나 프로그램 디스터브(Program distrubance) 현상이 현저하다.
최초 메모리 셀이 프로그램되면, 메모리 셀들의 문턱 전압 산포는 실선으로 도시된 산포들(10, 20, 30, 40)을 형성하게 될 것이다. 그러나, 측면 전하 확산이나 프로그램 디스터브 현상에 따라 산포 (10)에 대응하는 메모리 셀들의 산포는 산포 (15)로 이동한다. 산포 (40)에 대응하는 메모리 셀들은 측면 전하 확산이나 프로그램 디스터브 현상에 따라 산포 (45)로 이동한다. 측면 전하의 확산 현상에 따라, 소거 상태 (E0)로 프로그램된 메모리 셀들의 문턱 전압은 높아진다. 그리고, 프로그램 상태 (P3)로 프로그램된 메모리 셀들은 측면 전하 확산이나 프로그램 디스터브에 의하여 그 문턱 전압이 낮아진다. 특히, 소거 상태(E0)와 가장 높은 문턱 전압을 갖는 프로그램 상태(P3)가 인접한 경우에는 각각의 메모리 셀들이 가장 큰 측면 전하 확산이나 프로그램 디스터브에 노출된다. 따라서, 소거 상태(E0)와 프로그램 상태(P3)로 프로그램된 메모리 셀들이 인접하게 되는 조건을 차단하기 위한 추가 데이터 처리가 필요하다.
도 2는 본 발명의 메모리 시스템(100)을 보여주는 블록도이다. 도 2를 참조하면, 본 발명에 따른 메모리 시스템(100)은 불휘발성 메모리 장치(120)와 불휘발성 메모리 장치(120)와 호스트를 인터페이싱하는 메모리 컨트롤러(110)를 포함한다.
불휘발성 메모리 장치(120)는, 예를 들면 플래시 메모리 장치로 구성될 수 있다. 메모리 컨트롤러(110)는 불휘발성 메모리 장치(120)를 제어하도록 구성될 것이다. 불휘발성 메모리 장치(120)와 메모리 컨트롤러(110)의 결합에 의해 메모리 카드 또는 반도체 디스크 장치(Solid State Disk: SSD)로 제공될 수 있을 것이다.
SRAM(111)은 프로세싱 유닛(112)의 동작 메모리로써 사용된다. 데이터 배열 처리 인코더/디코더(113)는 행 방향 및 열 방향에 대해서 소거 상태(E0)와 프로그램 상태(P3)가 인접하지 못하도록 프로그램 데이터를 처리한다. 또한, 독출된 데이터를 디코딩하여 원래의 데이터로 복구한다. 데이터 배열 처리 인코더/디코더(113)는 하드웨어로 구성될 수 있지만, 펌웨어와 같은 소프트웨어로 구성될 수 있다.
호스트 인터페이스(114)는 메모리 시스템(100)과 접속되는 호스트의 데이터 교환 프로토콜을 구비한다. 에러 정정 블록(115)은 불휘발성 메모리 장치(120)로부터 독출된 데이터에 포함되는 에러를 검출 및 정정한다. 메모리 인터페이스(116)는 본 발명의 불휘발성 메모리 장치(120)와 인터페이싱 한다. 프로세싱 유닛(112)은 메모리 컨트롤러(110)의 데이터 교환을 위한 제반 제어 동작을 수행한다. 비록 도면에는 도시되지 않았지만, 본 발명에 따른 메모리 시스템(100)은 호스트(Host)와의 인터페이싱을 위한 코드 데이터를 저장하는 ROM(미도시됨) 등이 더 제공될 수 있음은 이 분야의 통상적인 지식을 습득한 자들에게 자명하다. 불휘발성 메모리 장치(120)는 복수의 플래시 메모리 칩들로 구성되는 멀티-칩 패키지로 제공될 수도 있다.
이상의 본 발명의 메모리 시스템(100)은 에러의 발생 확률이 낮은 고신뢰성의 저장 매체로 제공될 수 있다. 특히, 최근 활발히 연구되고 있는 반도체 디스크 장치(Solid State Disk: 이하 SSD)와 같은 메모리 시스템에서 본 발명의 플래시 메모리 장치가 구비될 수 있다. 이 경우, 메모리 컨트롤러(110)는 USB, MMC, PCI-E, SATA, PATA, SCSI, ESDI, 그리고 IDE 등과 같은 다양한 인터페이스 프로토콜들 중 하나를 통해 외부(예를 들면, 호스트)와 통신하도록 구성될 것이다.
여기서, 메모리 컨트롤러(110)는 에러 정정 블록(115)의 동작에 따라 데이터 배열 처리 인코더/디코더(113)와의 데이터 처리 우선 순위를 제어한다. 만일, 에러 정정 블록(115)이 쓰기 데이터의 배열에 영향을 주는 데이터 처리 방식이라면, 데이터 배열 처리는 에러 정정 연산 이후에 실시될 것이다. 그러나, 에러 정정 연산이 데이터의 배열에 크기 영향을 주지 않을 경우, 데이터 배열 처리 인코더/디코 더(113)에 의한 데이터 배열 처리 연산은 에러 정정 연산보다 선행되어 실시될 수 있다.
데이터 배열 처리 인코더/디코더(113)는 호스트(Host)로부터 제공되는 프로그램 데이터(Program data)를 데이터 배열 처리 방식으로 부호화(Encoding)하여 불휘발성 메모리 장치(120)로 제공한다. 데이터 배열 처리 인코더/디코더(113)는 불휘발성 메모리 장치(120)로부터 출력되는 독출 데이터(Read data)를 복호화(Decoding)하여 호스트(Host)로 전달한다. 데이터 배열 처리 인코더/디코더(113)는 불휘발성 메모리 장치(120)와 호스트(Host)를 인터페이싱하는 메모리 컨트롤러(미도시됨)에 포함될 수 있다. 일반적으로 메모리 컨트롤러는 호스트(Host)로부터의 읽기/쓰기 요청에 응답하여 불휘발성 메모리 장치(120)로부터 저장된 데이터를 독출 또는 기입하도록 불휘발성 메모리 장치(120)를 제어한다. 데이터 배열 처리 인코더/디코더(113)는 하드웨어 형태의 구성으로 또는 펌웨어와 같은 소프트웨어 형태로 상술한 메모리 컨트롤러에 포함될 수 있을 것이다. 그러나, 데이터 배열 처리 인코더/디코더(113)가 속하는 위치는 상술한 예시들에 국한되지 않는다.
불휘발성 메모리 장치(120)는 데이터 배열 처리 인코더/디코더(113)로부터 제공되는 쓰기 데이터(Write data)를 메모리 셀에 저장한다. 호스트(Host)로부터 읽기 명령이 제공되는 경우, 불휘발성 메모리 장치(120)는 셀 어레이에 저장된 데이터를 센싱하여 독출 데이터(Read data)로 출력한다. 데이터 배열 처리 인코더/디코더(113)는 독출 데이터(Read data)를 복호하여 호스트(Host)로 전달하게 될 것이다.
도 3은 데이터 배열 처리의 한 예로서 런길이 제한 코딩(Run Length Limited Coding)을 예시적으로 보여주는 도면이다. 도 3을 참조하여, 하나의 워드 라인에 대응하는 데이터 또는 하나의 비트 라인에 대응하는 데이터에 대해서 런길이 제한 코딩의 예가 설명될 것이다. 이러한 코딩에 의하여 워드 라인 방향 또는 비트 라인 방향에서 인접한 메모리 셀들의 문턱 전압이 소거 상태(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'이 되지 않도록 처리하는 런길이 제한 코딩(RLL)을 수행해야 한다.
표 (b)는 논리 '1'이 인접하지 않도록 구성되는 2진 런길이 제한 코드(Binary RLL coding)의 예로서 (d, k) 코드를 간략히 보여준다. 여기서, 'd'는 두 개의 논리 '1' 사이에 허용되는 논리 '0'의 최소 개수를 의미한다. 'k'는 두 개의 논리 '1' 사이에 허용되는 논리 '0'의 최대 개수를 의미한다. 표 (b)에서는 (d=1, k=∞)의 조건으로 3-비트 입력 5-비트 출력의 런길이 제한 코드가 룩업 테이블 방식으로 구성된 예를 보여준다. 만일, 동일 워드 라인에 차례대로 인접한 메모리 셀들에 프로그램될 MSB 페이지의 일부 데이터가 '010'이라면, 데이터 배열 처리인코더/디코더(113, 도 2 참조)는 런길이 제한 코딩을 적용하여 데이터 '00010'을 출력한다. 프로그램될 MSB 페이지의 3-비트 데이터가 '111'이라면, 데이터 배열 처리인코더/디코더(113)는 런길이 제한 코딩(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 페이지 모두에 대해 또는 어느 하나에 대해 런길이 제한 코딩(RLL coding)을 적용할 수 있다.
도 4a 및 도 4b는 본 발명의 데이터 배열 처리 방식을 적용하는 메모리 시스템의 실시예들을 보여주는 블록도이다. 데이터 배열 처리 코딩(Encoding or Decoding)에 의해서 출력되는 부호어는 코딩 이전 데이터에 비해서 메시지 비트들 의 배열이 바뀌게 된다. 따라서, 데이터의 배열에 영향을 주는 데이터 처리 연산(예를 들면, 에러 정정)은 반드시 데이터 배열 처리 연산과의 순서를 고려하여 실시되어야 한다. 특히, 도 4a 및 도 4b는 체계적인 에러 정정 부호(Systematic ECC) 방식을 사용하는 메모리 시스템들(300, 300′)을 보여준다.
도 4a의 메모리 시스템(300)은 체계적인 부호화 방식(Systematic coding scheme)에 따라 부호어(Code word)가 생성되는 에러 정정 부호(ECC) 블록을 포함한다. 입력되는 메시지 데이터 행렬이 [10101]이라 가정할 때, 체계적 부호화 방식에 따라 처리된 부호어는 [10101│010]와 같이 출력된다. 즉, 출력되는 부호어는 메시지 비트들 '10101'의 배열은 보존되고 패리티 비트들 '010'만 추가되는 방식의 처리를 의미한다. 따라서, 데이터 배열 처리 방식에 따라 처리된 데이터의 배열은 체계적 에러 정정 코드(Systematic ECC) 연산에 의해서 유지될 수 있다. 좀더 자세히 설명하면 다음과 같다.
쓰기 데이터(Din)가 입력되면, 먼저 데이터 배열 인코더(310)에 의해서 쓰기 데이터(Din)는 데이터의 배열이 변경된다. 예를 들면, 런길이 제한 코딩(RLL coding)에 의해서 쓰기 데이터(Din)는 메모리 셀에 프로그램된 이후에 소거 상태(E0)와 프로그램 상태(P3)가 인접하는 조건이 제거된다. 도 3의 런길이 제한 부호(d=1, k=∞) 인코더가 적용되는 경우를 예로 들자. 데이터(Din)가 데이터 [110]이라면, 제 1 쓰기 부호어(CW1)는 [01001]로 출력될 것이다.
체계적 에러 정정 부호 인코더(320)는 제 1 쓰기 부호어(CW1)에 대해서 에러의 검출 및 정정을 위한 패리티 생성 연산을 수행하여 제 2 쓰기 부호어(CW2)를 출 력한다. 만일, 체계적 에러 정정 부호 인코더(320)가 (n=8, k=5) 선형 블록 부호 방식으로 부호화한다면, 제 2 쓰기 부호어(CW2)는 제 1 쓰기 부호어(CW1)에 3-비트(n-k=3)의 패리티 비트들이 추가된 형태로 출력될 것이다. 설명의 편의를 위하여, 제 1 쓰기 부호어(CW1)가 [01001]이라면, 패리티 생성 연산에 의해서 출력되는 제 2 쓰기 부호어(CW2)는 [01001│010]이라 가정하자. 즉, 메시지 비트 '01001'은 그대로 비트 배열이 유지된다.
제 2 쓰기 부호어(CW2)는 불휘발성 메모리 장치(330)에 프로그램된다. 제 2 쓰기 부호어(CW2)는 실질적으로 소거 상태(E0)와 프로그램 상태(P3)가 인접하는 조건이 제거된 데이터이다. 따라서, 불휘발성 메모리 장치(330)에 프로그램된 이후에도 앞서 도 1에서 설명된 형태의 측면 전하 확산(Lateral Charge Spreading)이나 프로그램 디스터브(Program Disturbance)로 인한 메모리 셀들간의 간섭은 차단될 수 있다. 호스트로부터 읽기 명령이 제공되면, 불휘발성 메모리 장치(330)는 제 2 쓰기 부호어(CW2)가 프로그램된 메모리 셀들을 센싱하여 제 2 읽기 부호어(CW2′)로 출력한다.
제 2 읽기 부호어(CW2′)는 체계적 에러 정정 부호 디코더(340)에 제공될 것이다. 체계적 에러 정정 부호 디코더(340)는 제 2 읽기 부호어(CW2′)에 포함된 에러의 존재 여부 및 정정 가능 여부를 검출한다. 만일 독출된 데이터에 에러가 존재하면, 에러 정정 부호 디코더(340)는 패리티 비트들을 이용하여 에러를 정정한다. 에러의 검출 및 정정 연산을 거쳐 에러 정정 부호 디코더(340)는 패리티 비트들이 제거된 제 1 읽기 부호어(CW1′)를 출력하게 될 것이다. 즉, 제 2 읽기 부호어(CW2 ′)가 [01001│010] 이라면, 제 1 읽기 부호어(CW1′)는 패리티 비트들 '010'이 제거되고 메시지 비트들만을 포함하는 [01001]로 출력된다.
데이터 배열 디코더(350)는 제 1 읽기 부호어(CW1′)를 데이터 배열 인코더(310)에서 실행된 부호화의 역연산을 수행한다. 예를 들면 도 3b에 도시된 런길이 제한 부호(d=1, k=∞)방식으로 데이터를 복호하는 경우, 제 1 읽기 부호어(CW1′)가 [01001]라면, 독출 데이터(Dout)는 데이터 배열 디코더(350)에 의하여 [110]으로 출력될 것이다.
도 4b의 메모리 시스템(300′)은 도 4a와 마찬가지로 체계적인 부호화 방식(Systematic coding scheme)에 따라 부호어(Code word)가 생성되는 에러 정정 부호(ECC) 블록을 포함한다. 즉, 쓰기 데이터(Din)가 입력되면, 체계적 에러 정정 부호 인코더(360)는 쓰기 데이터(Din)에 대한 에러 정정 연산을 수행한다. 체계적 에러 정정 부호 인코더(360)는 체계적 에러 정정 연산을 통해서 패리티 비트들이 추가된 제 1 쓰기 부호어(CW1)를 출력한다. 여기서, 제 1 쓰기 부호어(CW1)의 메시지 비트들의 배열은 유지될 것이다.
이어서, 데이터 배열 인코더(370)는 제 1 쓰기 부호어(CW1)를 전달받아 데이터 배열 부호화를 실행한다. 예를 들면, 도 3에서 설명된 런길이 제한 코딩이 사용될 수 있다. 데이터 배열 부호화에 의해서 제 1 쓰기 부호어(CW1)는 데이터 배열이 변경된 제 2 쓰기 부호어(CW2)로 출력될 것이다.
제 2 쓰기 부호어(CW2)는 불휘발성 메모리 장치(330)에 프로그램된다. 제 2 쓰기 부호어(CW2)는 실질적으로 소거 상태(E0)와 프로그램 상태(P3)가 인접하는 조 건이 제거된 데이터이다. 따라서, 불휘발성 메모리 장치(330)에 프로그램된 이후에도 앞서 도 1에서 설명된 형태의 측면 전하 확산(Lateral Charge Spreading)이나 프로그램 디스터브(Program Disturbance)로 인한 메모리 셀들간의 간섭은 차단될 수 있다.
호스트로부터 읽기 명령이 제공되면, 불휘발성 메모리 장치(330)는 제 2 쓰기 부호어(CW2)가 프로그램된 메모리 셀들을 센싱하여 제 2 읽기 부호어(CW2′)로 출력한다. 그리고, 데이터 배열 디코더(380) 및 체계적 에러 정정 부호 디코더(390)에 의해서 제 2 읽기 부호어(CW2′)는 제 1 읽기 부호어(CW1′) 및 독출 데이터(Dout)로 복호될 것이다.
도 4a 및 도 4b에서는, 메시지 데이터의 배열이 유지되는 체계적인 에러 정정 연산이 적용되는 메모리 시스템들이 도시되었다. 이 경우, 데이터 배열 부호 방식의 데이터 처리의 순서는 에러 정정 연산에 우선할 수도 있고, 에러 정정 연산의 이후에 수행될 수도 있다.
도 5에는 비체계적 부호화(Non-Systematic coding) 방식의 에러 정정 부호 (ECC) 블록을 포함하는 메모리 시스템(400)이 도시되어 있다. 비체계적 부호화 방식은 입력되는 메시지 데이터의 배열을 보존하지 않는 데이터 처리 방식을 말한다. 즉, 입력되는 메시지 행렬이 [10101]이라 가정할 때, 비체계적 부호화 방식으로 처리된 부호어는 메시지 행렬의 배열을 유지하지 않는다. 따라서, 비체계적 방식의 에러 정정 연산이 데이터 배열 인코딩보다 나중에 수행된다면, 메모리 셀들간의 간섭은 차단하기 위해 수행되는 데이터 배열 인코딩의 효과는 보장되지 않는다. 따라 서, 비체계적 에러 정정 부호 인코더/디코더를 포함하는 시스템에서는 데이터 배열인코더/디코더와의 연산 순서가 충분히 고려되어야 한다.
도 5를 참조하면, 쓰기 데이터(Din)가 제공되면, 비체계적 에러 정정 부호 인코더(410)는 쓰기 데이터(Din)에 대한 에러 정정 연산을 수행한다. 비체계적 에러 정정 부호 인코더(410)는 비체계적 에러 정정 연산을 통해서 패리티 비트들이 추가된 제 1 쓰기 부호어(CW1)를 출력한다.
이어서, 데이터 배열 인코더(420)는 제 1 쓰기 부호어(CW1)을 전달받아 데이터 배열 부호화를 실행한다. 예를 들면, 도 3에서 설명된 런길이 제한 코딩이 사용될 수 있다. 데이터 배열 부호화에 의해서 제 1 쓰기 부호어(CW1)는 데이터 배열이 변경된 제 2 쓰기 부호어(CW2)로 출력될 것이다.
제 2 쓰기 부호어(CW2)는 불휘발성 메모리 장치(430)에 프로그램된다. 제 2 쓰기 부호어(CW2)는 실질적으로 소거 상태(E0)와 프로그램 상태(P3)가 인접하는 조건이 제거된 데이터이다. 따라서, 불휘발성 메모리 장치(430)에 프로그램된 이후에도 앞서 도 1에서 설명된 형태의 측면 전하 확산(Lateral Charge Spreading)이나 프로그램 디스터브(Program Disturbance)로 인한 메모리 셀들간의 간섭은 차단될 수 있다.
호스트로부터 읽기 명령이 제공되면, 불휘발성 메모리 장치(430)는 제 2 쓰기 부호어(CW2)가 프로그램된 메모리 셀들을 센싱하여 제 2 읽기 부호어(CW2′)로 출력한다. 그리고, 데이터 배열 디코더(440) 및 비체계적 에러 정정 부호 디코더(450)에 의해서 제 2 읽기 부호어(CW2′)는 독출 데이터(Dout)로 출력될 수 있 다.
도 5에서는 메시지 데이터의 배열이 재구성되는 비체계적 에러 정정 부호를 사용하는 메모리 시스템(400)에 대해서 본 발명의 실시예가 설명되었다. 메시지 데이터의 배열이 재구성되는 비체계적 에러 정정 부호 방식에서, 데이터 쓰기 동작시 에러 정정 부호 인코딩은 반드시 데이터 배열 인코딩에 우선되어야 할 것이다. 그리고, 데이터 독출 동작시, 비체계적 에러 정정 부호 디코딩은 데이터 배열 디코딩 이후에 실시되어야 한다.
도 6은 본 발명의 데이터 처리 방법의 다른 실시예를 보여주는 블록도이다. 도 6을 참조하면, 도 4b 또는 도 5의 변경된 실시예로 간주할 수 있다. 즉, 쓰기 동작시에는 데이터 배열 인코딩을 최후에 처리하고, 읽기 동작시에는 데이터 배열디코딩을 가정 먼저 실시하는 실시예이다. 특히, 랜더마이저(510), 디랜더마이저(570)에 의한 연산이 더 포함된다.
쓰기 데이터(Din)가 입력되면, 랜더마이저(510)에 의해서 데이터는 재구성된다. 이어서, 랜더마이저(510)로부터 출력된 데이터에는 에러 정정 부호 인코더(520)에 의해서 에러 검출 및 정정을 위한 패리티가 생성되어 추가된다. 그리고, 불휘발성 메모리 장치(540)에 기입되기 이전에, 최종적으로 데이터 배열 인코더(530)에 의해서 셀간의 간섭을 줄이기 위한 데이터 처리가 실시된다. 데이터 배열 인코더(530)로부터 출력되는 데이터는 불휘발성 메모리 장치(540)에 프로그램된다. 독출 데이터(Dout)의 출력은 쓰기 데이터(Din)에 대한 처리의 역과정으로 진행된다. 데이터 배열 디코더(550)에 제공된 독출 데이터는 변조 부호화 이전의 데이 터 배열로 복구된다. 그리고, 독출 데이터는 에러 정정 부호 디코더(560)에 의해서 에러의 검출 및 정정 연산에 의해서 패리티가 제거된 상태로 출력된다. 마지막으로, 디랜더마이저(570)에 의해서 처리된 독출 데이터는 출력된다.
이상에서 도 6의 실시예는 에러 정정 부호가 체계적이든 비체계적이든 관계없이 적용 가능하다. 또한, 랜더마이저(510)/디랜더마이저(570)와 에러 정정 부호 인코더(520)/에러 정정 부호 디코더(560)의 위치는 교환될 수 있다. 게다가, 도시되지는 않았지만, 추가적인 데이터 처리 수단(예를 들면, 인터리버/디인터리버)이 데이터 배열 인코더(530)/데이터 배열 디코더(550)의 전단 임의의 위치에 더 포함될 수 있다.
도 7은 도 4a의 변경된 실시예로 간주할 수 있다. 즉, 체계적 에러 정정 부호 연산을 사용하는 메모리 시스템에서 "데이터 배열 인코더(620)-체계적 에러 정정 부호 인코더(630)" 연산 순서를 유지하면서 랜더마이저(610)가 그 전단에 포함된다. 데이터의 쓰기 동작시, 데이터 배열 인코더(620)에 의해서 처리된 부호어는 체계적 에러 정정 부호 인코더(630)에 의해 재구성 되더라도 메시지 비트들의 배열에는 영향을 주지 않는다. 따라서, 데이터 배열 인코더(620)에 의해서 처리된 셀들간의 간섭을 줄이기 위한 데이터 배열은 에러 정정 부호 인코더(630)의 출력시에도 유지될 수 있다.
불휘발성 메모리 장치(640)로부터 데이터의 독출 과정은 쓰기 과정과는 반대의 처리 절차에 따른다. 즉, 셀들간의 간섭을 줄이기 위한 배열로 프로그램된 데이터는 읽기 명령에 의해서 불휘발성 메모리 장치(640)로부터 체계적 에러 정정 부호 디코더(650)에 전달된다. 체계적 에러 정정 부호 디코더(650)는 불휘발성 메모리 장치(640)로부터 출력된 데이터로부터 에러의 검출 및 정정을 실시하고, 패리티 비트들이 제거된 메시지 비트들만을 데이터 배열 디코더(660)로 출력하게 될 것이다. 데이터 배열 디코더(660)는 전달되는 메시지 비트들을 해당하는 디코딩 스킴에 따라서 메시지 비트의 배열을 복구한다. 그리고, 디랜더마이저(670)는 최종적으로 전달된 데이터를 처리하여 독출 데이터(Dout)로 출력하게 될 것이다.
도 8은 본 발명의 또 다른 실시예를 보여주는 블록도이다. 도 8의 경우, 데이터 배열 처리 방식의 연산을 2회 처리하는 메모리 시스템(700)에서의 데이터의 쓰기 및 읽기 절차를 보여준다.
쓰기 데이터(Din)는 랜더마이저(710)를 통해서 랜덤 처리 과정을 거친다. 그리고 제 1 데이터 배열 인코더(720)에 전달된다. 제 1 데이터 배열 인코더(720)로부터 출력된 데이터는 에러 정정 부호 인코더(730)로 전달되어 에러 정정 부호 연산을 통해서 패리티가 추가될 것이다. 그 이후, 에러 정정 연산에 의해서 패리티가 추가된 부호어는 제 2 데이터 배열 인코더(740)에 전달되어 셀들 간의 간섭을 줄이기 위한 데이터 처리 과정을 거친다. 제 2 데이터 배열 인코더(740)에 의해서 처리된 데이터는 제 1 데이터 배열 인코더(720)와 함께 불휘발성 메모리 장치(750)에 프로그램된다.
읽기 과정은 쓰기 과정의 반대 절차에 의해서 실시된다. 즉, 불휘발성 메모리 장치(750)에 의해서 독출된 데이터는 제 2 데이터 배열 디코더(760)에 의해서 1차적으로 데이터 배열이 전환될 것이다. 이어서, 에러 정정 부호 디코더(770)에 의 해서 에러가 검출 및 정정되고, 패리티가 제고된 메시지 비트들이 제 1 데이터 배열 디코더(780)에 전달될 것이다. 제 1 데이터 배열 디코더(780)는 불휘발성 메모리 장치(750)와 에러 정정 부호 디코더(770)로부터 출력되는 데이터에 대해서 추가적인 복호를 실시한다. 마지막으로, 디랜더마이저(790)에 의해서 처리된 데이터는 독출 데이터(Dout)로 출력될 것이다.
이상에서 설명된 실시예에 따르면, 데이터 배열 인코더들(720, 740)은 항상 불휘발성 메모리 장치(750)의 프론트 엔드(Front End)측에 위치해야 함을 알 수 있다. 데이터 배열 디코더들(760, 780) 또한 데이터 배열 인코더들(720, 740) 각각에 대응하는 위치에서 역연산을 수행해야 할 것이다.
도 9a, 9b, 9c는 각각 본 발명의 다른 실시예들을 가략히 보여주는 블록도들이다. 도 9a는 복수의 데이터 배열 인코더들(810, 820, 830)이 에러 정정 부호 인코더(840)의 전단에 위치하는 실시예를 보여준다. 그리고 복수의 데이터 배열 디코더들(870, 880, 890)이 에러 정정 부호 디코더(860)의 후단에 위치한다. 여기서, 복수의 데이터 배열 인코더들(810, 820, 830) 및 복수의 데이터 배열 디코더들(870, 880, 890)은 각각 랜더마이저, 인터리버, 변조 코딩 연산부 등과 같은 데이터 배열을 변경하는 연산 블록에 대응될 수 있다.
도 9b는 상술한 복수의 데이터 배열 인코더/디코더들 사이에 에러 정정 연산이 연쇄적으로 수행되는 경우(Concatenate ECC)를 보여준다. 복수의 데이터 배열 인코더들(910, 920, 930) 및 복수의 데이터 배열 디코더들(960, 970, 980) 사이에 에러 정정 부호 인코더들(915, 925) 및 에러 정정 부호 디코더들(965, 975)이 위치 한다.
도 9c는 연쇄적으로 수행되는 에러 정정 부호 연산(Concatenate ECC)의 위치가 다양하게 가변될 수 있음을 보여주기 위한 블록도이다. 복수의 데이터 배열 인코더들(1010, 1020, 1040) 및 복수의 데이터 배열 디코더들(1060, 1080, 1090) 사이에 에러 정정 부호 인코더들(1030, 1035) 및 에러 정정 부호 디코더들(1065, 1070)이 위치한다.
이상에서는 데이터 처리 방식이 불휘발성 메모리 장치(NVM)에 기입되는 데이터에 한정해서 설명되었으나 본 발명은 이에 국한되지 않는다. 즉, 상술한 데이터 처리 방법은 다양한 시스템에서 적용 또는 응용이 가능하다.
도 10은 상술한 데이터 배열 인코더/데이터 배열 디코더를 사용하는 경우에 부호율(Code rate)을 높이기 위한 다른 실시예를 보여주는 블록도이다. 도 9를 참조하면, 플래시 메모리와 같은 불휘발성 메모리 장치에서 프로그램 순서와 위치에 따라 프로그램 디스터브(Program disturbance)의 영향이 다르다는 것이 알려져 왔다. 따라서, 프로그램되는 메모리 셀의 위치에 따라서 선택적으로 데이터 배열 처리 연산을 적용할 수 있을 것이다.
프로그램 디스터브(Program disturbance)의 영향은 셀 어레이(1100)에서 일반적으로 먼저 프로그램되는 로 워드 라인 영역(1120)에서 현저하게 나타난다. 따라서, 데이터 배열 인코더/데이터 배열 디코더는 프로그램 데이터가 기입되는 위치가 로 워드 라인 영역(1120)에 대응하는지를 검출하여 데이터 배열 연산의 실시 여부를 판단하게 될 것이다. 프로그램 데이터와 함께 입력되는 행 어드레스가 하이 워드 라인 영역(1110)에 대응하는 경우, 데이터 배열 인코더/디코더는 데이터 배열 인코딩 또는 디코딩 처리를 적용하지 않는다.
도 11은 본 발명에 따른 플래시 메모리 장치(1212)를 포함한 컴퓨팅 시스템(1200)이 개략적으로 도시되어 있다. 본 발명에 따른 컴퓨팅 시스템(1200)은 시스템 버스(1260)에 전기적으로 연결된 마이크로프로세서(1220), 램(1230), 사용자 인터페이스(1240), 베이스밴드 칩셋(Baseband chipset)과 같은 모뎀(1250) 및 메모리 시스템(1210)을 포함한다. 메모리 시스템(1210)은 도 2에 도시된 것과 실질적으로 동일하게 구성될 것이다. 본 발명에 따른 컴퓨팅 시스템(1200)이 모바일 장치인 경우, 컴퓨팅 시스템(1200)의 동작 전압을 공급하기 위한 배터리(미도시됨)가 추가적으로 제공될 것이다. 비록 도면에는 도시되지 않았지만, 본 발명에 따른 컴퓨팅 시스템(900)에는 응용 칩셋(Application chipset), 카메라 이미지 프로세서(Camera Image Processor: CIS), 모바일 디램, 등이 더 제공될 수 있음은 이 분야의 통상적인 지식을 습득한 자들에게 자명하다. 메모리 시스템(1210)은, 예를 들면, 데이터를 저장하는 데 불휘발성 메모리를 사용하는 SSD(Solid State Drive/Disk)를 구성할 수 있다. 또는, 메모리 시스템(1210)은, 퓨전 플래시 메모리(예를 들면, 원낸드 플래시 메모리)로 제공될 수 있다.
본 발명에 따른 플래시 메모리 장치 그리고/또는 메모리 컨트롤러는 다양한 형태들의 패키지를 이용하여 실장될 수 있다. 예를 들면, 본 발명에 따른 플래시 메모리 장치 그리고/또는 메모리 컨트롤러는 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은 런길이 제한 코딩(Run Length Limited coding)의 예를 보여주는 도면;
도 4a 및 4b는 본 발명에 따른 데이터 배열 처리 방식의 데이터 처리 절차를 보여주는 블록도;
도 5는 비체계적 부호화 방식의 에러 정정 코드를 사용하는 메모리 시스템의 데이터 처리 절차를 보여주는 블록도;
도 6 및 도 7은 랜더마이저를 포함하는 본 발명의 데이터 처리 절차의 실시예들을 보여주는 블록도들;
도 8은 2개의 데이터 배열 처리 블록을 포함하는 메모리 시스템의 데이터 처리 절차를 보여주는 블록도;
도 9a, 9b, 9c는 본 발명의 데이터 배열 처리 연산의 다양한 실시예들을 보여주는 블록도들;
도 10은 셀의 위치에 따른 데이터 배열 처리 방식의 데이터 처리 방법을 보여주기 위한 블록도; 및
도 11은 본 발명의 데이터 처리 방법에 따라 동작하는 메모리 카드를 포함하는 컴퓨팅 시스템을 보여주는 블록도.

Claims (10)

  1. 복수의 메모리 셀들에 데이터를 저장하는 불휘발성 메모리; 및
    상기 복수의 메모리 셀들 상호간의 간섭을 줄이기 위해, 데이터 재배열 연산과 에러 정정 부호 연산을 수행하는 메모리 컨트롤러를 포함하는 반도체 메모리 장치.
  2. 제 1 항에 있어서,
    상기 에러 정정 부호 연산은 데이터에 에러의 검출 및 정정을 위한 패리티를 추가하되, 메시지 비트들의 배열은 보존하는 체계적인 에러 정정 부호(Systematic ECC) 방식인 것을 특징으로 하는 반도체 메모리 장치.
  3. 제 1 항에 있어서,
    상기 에러 정정 부호 연산은 데이터에 에러의 검출 및 정정을 위한 패리티를 추가하되, 메시지 비트들의 배열이 변경되는 비체계적인 에러 정정 부호(Non-Systematic ECC) 방식인 것을 특징으로 하는 반도체 메모리 장치.
  4. 제 3 항에 있어서,
    상기 메모리 컨트롤러는 상기 에러 정정 부호 연산을 상기 데이터 재배열 연산보다 먼저 실행하는 반도체 메모리 장치.
  5. 제 1 항에 있어서,
    상기 데이터 재배열 연산은 런길이 제한 코드(Run-Length Limited code), 랜덤 연산 방식, 그리고 인터리빙 연산 들 중 적어도 하나 이상으로 데이터의 배열을 재구성하는 반도체 메모리 장치.
  6. 제 1 항에 있어서,
    읽기 동작시, 상기 메모리 컨트롤러는 상기 에러 정정 부호 연산 절차에 따라 상기 불휘발성 메모리로부터 제공되는 독출 데이터의 에러를 검출 및 정정하고, 상기 데이터 재배열 연산 절차에 따라 상기 독출 데이터의 데이터 배열을 복구하는 반도체 메모리 장치.
  7. 제 1 항에 있어서,
    상기 데이터 재배열 연산은 상기 복수의 메모리 셀들 중 일부에 대해서만 적용하는 반도체 메모리 장치.
  8. 불휘발성 메모리를 포함하는 메모리 시스템의 데이터 처리 방법에 있어서:
    상기 불휘발성 메모리에 기입될 데이터를 메모리 셀들 상호간의 간섭을 줄이기 위한 배열로 재구성하는 단계; 및
    상기 재구성된 데이터에 에러 정정 부호 연산에 의해 생성되는 패리티를 부 가하는 단계를 포함하는 데이터 처리 방법.
  9. 제 8 항에 있어서,
    상기 에러 정정 부호 연산은 재구성된 데이터의 메시지 비트들의 배열을 보존하는 체계적인 에러 정정 부호(Systematic ECC) 연산인 것을 특징으로 하는 데이터 처리 방법.
  10. 불휘발성 메모리를 포함하는 메모리 시스템의 데이터 처리 방법에 있어서:
    상기 불휘발성 메모리에 기입될 데이터에 에러 정정 부호 연산에 의해 생성되는 패리티를 부가하는 단계; 및
    상기 패리티가 부가된 데이터를 메모리 셀들 상호간의 간섭을 줄이기 위한 배열로 재구성하는 단계를 포함하되,
    상기 에러 정정 부호 연산은 메시지 비트들의 배열이 변경되는 비체계적 에러 정정 코드(Non-Systematic ECC) 연산인 것을 특징으로 하는 데이터 처리 방법.
KR1020090016868A 2009-02-27 2009-02-27 반도체 메모리 장치 및 그것의 데이터 처리 방법 KR101519626B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020090016868A KR101519626B1 (ko) 2009-02-27 2009-02-27 반도체 메모리 장치 및 그것의 데이터 처리 방법
US12/702,353 US8321760B2 (en) 2009-02-27 2010-02-09 Semiconductor memory device and data processing method thereof

Applications Claiming Priority (1)

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

Publications (2)

Publication Number Publication Date
KR20100097961A true KR20100097961A (ko) 2010-09-06
KR101519626B1 KR101519626B1 (ko) 2015-05-14

Family

ID=42667799

Family Applications (1)

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

Country Status (2)

Country Link
US (1) US8321760B2 (ko)
KR (1) KR101519626B1 (ko)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20150015808A (ko) * 2013-08-01 2015-02-11 삼성전자주식회사 불휘발성 메모리 장치를 제어하는 메모리 컨트롤러의 동작 방법
KR101508665B1 (ko) * 2013-11-27 2015-04-08 서울대학교산학협력단 비휘발성 메모리 장치, 이를 위한 메모리 제어기 및 동작 방법
KR20150043127A (ko) * 2013-10-14 2015-04-22 삼성전자주식회사 메모리 시스템에서의 코딩 방법 및 디코딩 방법
KR20150121671A (ko) * 2014-04-21 2015-10-29 실리콘 모션 인코포레이티드 플래시 메모리 내에 저장되어 있는 데이터를 판독하는 방법, 메모리 컨트롤러, 및 메모리 시스템

Families Citing this family (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8023345B2 (en) 2009-02-24 2011-09-20 International Business Machines Corporation Iteratively writing contents to memory locations using a statistical model
KR101824227B1 (ko) * 2009-08-07 2018-02-05 삼성전자주식회사 메모리 시스템 및 그것의 프로그램 방법
US8386739B2 (en) * 2009-09-28 2013-02-26 International Business Machines Corporation Writing to memory using shared address buses
KR20110055178A (ko) * 2009-11-19 2011-05-25 삼성전자주식회사 플래시 메모리 장치 및 그것을 포함한 메모리 시스템
US8463985B2 (en) * 2010-03-31 2013-06-11 International Business Machines Corporation Constrained coding to reduce floating gate coupling in non-volatile memories
KR101438072B1 (ko) * 2010-04-15 2014-09-03 라모트 앳 텔-아비브 유니버시티 리미티드 소거 없는 플래시 메모리의 다중 프로그래밍
JP5204186B2 (ja) * 2010-09-24 2013-06-05 株式会社東芝 メモリシステム
KR101678915B1 (ko) * 2010-12-27 2016-11-23 삼성전자주식회사 플래시 메모리 장치, 그것의 데이터 랜덤화 방법, 및 그것을 포함하는 메모리 시스템
CN102063342A (zh) * 2010-12-28 2011-05-18 深圳市江波龙电子有限公司 一种闪存存储设备数据的管理方法及系统
KR101678919B1 (ko) 2011-05-02 2016-11-24 삼성전자주식회사 메모리 시스템 및 에러 정정 방법
WO2013089715A1 (en) * 2011-12-14 2013-06-20 Intel Corporation Storage of codeword portions
KR102005709B1 (ko) * 2012-10-22 2019-08-01 삼성전자 주식회사 메모리 장치 구동 방법 및 메모리 시스템
KR102068519B1 (ko) 2013-07-01 2020-01-21 삼성전자주식회사 저장 장치, 그것의 쓰기 방법 및 읽기 방법
KR101767018B1 (ko) 2013-09-27 2017-08-09 인텔 코포레이션 비휘발성 메모리에서의 오류 정정
US9588882B2 (en) 2013-12-02 2017-03-07 Intel Corporation Non-volatile memory sector rotation
US9830219B2 (en) * 2014-09-15 2017-11-28 Western Digital Technologies, Inc. Encoding scheme for 3D vertical flash memory
US10007573B2 (en) * 2015-04-27 2018-06-26 Invensas Corporation Preferred state encoding in non-volatile memories
US10089241B2 (en) 2016-03-10 2018-10-02 Toshiba Memory Corporation Memory system
KR101949482B1 (ko) * 2017-03-09 2019-02-18 성균관대학교산학협력단 에러 정정 기능을 갖는 메모리 장치, 메모리 장치의 에러 정정 인코딩 방법 및 메모리 장치의 에러 정정 디코딩 방법
US10938419B2 (en) * 2018-03-16 2021-03-02 SK Hynix Inc. Encoding method and system for memory device including QLC cells
US10956259B2 (en) * 2019-01-18 2021-03-23 Winbond Electronics Corp. Error correction code memory device and codeword accessing method thereof
US11172455B2 (en) 2019-07-16 2021-11-09 Microsoft Technology Licensing, Llc Peak to average power output reduction of RF systems utilizing error correction
US11086719B2 (en) 2019-07-16 2021-08-10 Microsoft Technology Licensing, Llc Use of error correction codes to prevent errors in neighboring storage
US10911284B1 (en) 2019-07-16 2021-02-02 Microsoft Technology Licensing, Llc Intelligent optimization of communication systems utilizing error correction
US11075656B2 (en) 2019-07-16 2021-07-27 Microsoft Technology Licensing, Llc Bit error reduction of communication systems using error correction
US11031961B2 (en) 2019-07-16 2021-06-08 Microsoft Technology Licensing, Llc Smart symbol changes for optimization of communications using error correction
US11063696B2 (en) 2019-07-16 2021-07-13 Microsoft Technology Licensing, Llc Increasing average power levels to reduce peak-to-average power levels using error correction codes
US11044044B2 (en) 2019-07-16 2021-06-22 Microsoft Technology Licensing, Llc Peak to average power ratio reduction of optical systems utilizing error correction
KR20210013397A (ko) 2019-07-24 2021-02-04 삼성전자주식회사 스토리지 장치
EP3783611B1 (en) * 2019-07-24 2023-02-22 Samsung Electronics Co., Ltd. Storage device that performs state shaping of data
US10911141B1 (en) 2019-07-30 2021-02-02 Microsoft Technology Licensing, Llc Dynamically selecting a channel model for optical communications
JP2021149991A (ja) * 2020-03-19 2021-09-27 キオクシア株式会社 メモリシステムおよび方法

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4993029A (en) * 1989-03-13 1991-02-12 International Business Machines Corporation Method and apparatus for randomizing data in a direct access storage device
US5627935A (en) * 1994-11-11 1997-05-06 Samsung Electronics Co., Ltd. Error-correction-code coding & decoding procedures for the recording & reproduction of digital video data
JP3480244B2 (ja) 1997-06-02 2003-12-15 松下電器産業株式会社 データ処理制御装置
US6041001A (en) * 1999-02-25 2000-03-21 Lexar Media, Inc. Method of increasing data reliability of a flash memory device without compromising compatibility
JP2003223765A (ja) 2002-01-25 2003-08-08 Sharp Corp 復調装置
EP1500198A2 (en) 2002-04-18 2005-01-26 Koninklijke Philips Electronics N.V. Signal, storage medium, method and device for encoding, method and device for decoding
US8219886B1 (en) 2006-01-20 2012-07-10 Marvell International Ltd. High density multi-level memory
US7844879B2 (en) * 2006-01-20 2010-11-30 Marvell World Trade Ltd. Method and system for error correction in flash memory
US20070300130A1 (en) * 2006-05-17 2007-12-27 Sandisk Corporation Method of Error Correction Coding for Multiple-Sector Pages in Flash Memory Devices
WO2008068706A1 (en) * 2006-12-07 2008-06-12 Nxp B.V. Method and device for reconfiguration of reliability data in flash eeprom storage pages
US7849383B2 (en) * 2007-06-25 2010-12-07 Sandisk Corporation Systems and methods for reading nonvolatile memory using multiple reading schemes
US8154918B2 (en) * 2008-06-30 2012-04-10 Sandisk Il Ltd. Method for page- and block based scrambling in non-volatile memory
US8228728B1 (en) 2009-09-14 2012-07-24 Marvell International Ltd. Programming method for multi-level cell flash for minimizing inter-cell interference

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20150015808A (ko) * 2013-08-01 2015-02-11 삼성전자주식회사 불휘발성 메모리 장치를 제어하는 메모리 컨트롤러의 동작 방법
KR20150043127A (ko) * 2013-10-14 2015-04-22 삼성전자주식회사 메모리 시스템에서의 코딩 방법 및 디코딩 방법
KR101508665B1 (ko) * 2013-11-27 2015-04-08 서울대학교산학협력단 비휘발성 메모리 장치, 이를 위한 메모리 제어기 및 동작 방법
KR20150121671A (ko) * 2014-04-21 2015-10-29 실리콘 모션 인코포레이티드 플래시 메모리 내에 저장되어 있는 데이터를 판독하는 방법, 메모리 컨트롤러, 및 메모리 시스템
US9601219B2 (en) 2014-04-21 2017-03-21 Silicon Motion Inc. Method, memory controller, and memory system for reading data stored in flash memory
US9959165B2 (en) 2014-04-21 2018-05-01 Silicon Motion Inc. Method, memory controller, and memory system for reading data stored in flash memory
US10599516B2 (en) 2014-04-21 2020-03-24 Silicon Motion, Inc. Method, memory controller, and memory system for reading data stored in flash memory
US11144390B2 (en) 2014-04-21 2021-10-12 Silicon Motion, Inc. Method, memory controller, and memory system for reading data stored in flash memory
US11537469B2 (en) 2014-04-21 2022-12-27 Silicon Motion, Inc. Method, memory controller, and memory system for reading data stored in flash memory
US11822428B2 (en) 2014-04-21 2023-11-21 Silicon Motion, Inc. Method, memory controller, and memory system for reading data stored in flash memory

Also Published As

Publication number Publication date
US20100223530A1 (en) 2010-09-02
KR101519626B1 (ko) 2015-05-14
US8321760B2 (en) 2012-11-27

Similar Documents

Publication Publication Date Title
KR101519626B1 (ko) 반도체 메모리 장치 및 그것의 데이터 처리 방법
US10437668B2 (en) Memory controller, memory system, and method for controlling memory system
KR100842680B1 (ko) 플래시 메모리 장치의 오류 정정 컨트롤러 및 그것을포함하는 메모리 시스템
US8713411B2 (en) Encoding and/or decoding memory devices and methods thereof
KR100845529B1 (ko) 플래시 메모리 장치의 이씨씨 제어기 및 그것을 포함한메모리 시스템
CN109815045B (zh) 存储系统以及在存储系统中处理数据的方法
US8732553B2 (en) Memory system and control method thereof
US8200607B2 (en) Memory devices and data decision methods
CN107408069B (zh) 用于检测和缓解闪速存储器中的位线开路的装置和方法
US20100241928A1 (en) Data Processing System Having ECC Encoding and Decoding Circuits Therein with Code Rate Selection Based on Bit Error Rate Detection
KR101602316B1 (ko) 반도체 메모리 장치 및 그것의 데이터 처리 방법
US8386890B2 (en) Error correction for multilevel flash memory
US9405624B2 (en) On-die error detection and correction during multi-step programming
WO2014130557A1 (en) Bandwidth optimization in a non-volatile memory system
KR20110097439A (ko) 사전 확률 정보를 사용하는 메모리 시스템 및 그것의 데이터 처리 방법
US10186302B2 (en) Semiconductor systems performing double-write operations and methods of operating the same
US9715430B2 (en) Controller for a solid-state drive, and related solid-state drive
KR20200038320A (ko) 플래시 메모리를 위한 코드 레이트 스위칭 메커니즘
EP3417457B1 (en) Error rate reduction
US10951238B1 (en) Memory system and method for controlling non-volatile memory
KR20210010807A (ko) 비휘발성 메모리의 불량 행 관리를 수행하는 메모리 시스템 및 이의 동작 방법
CN111597071A (zh) 数据存储设备中的纠错
US10673465B2 (en) Memory controller, memory system, and control method
US20170004059A1 (en) Controller for a solid-state drive, and related solid-state drive
KR101172672B1 (ko) 부호길이 동기화가 적용된 메모리 장치 및 이의 부호길이 동기화 방법

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20180430

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20190429

Year of fee payment: 5