KR102050896B1 - 메모리 컨트롤러 및 그것의 동작 방법 - Google Patents

메모리 컨트롤러 및 그것의 동작 방법 Download PDF

Info

Publication number
KR102050896B1
KR102050896B1 KR1020130017627A KR20130017627A KR102050896B1 KR 102050896 B1 KR102050896 B1 KR 102050896B1 KR 1020130017627 A KR1020130017627 A KR 1020130017627A KR 20130017627 A KR20130017627 A KR 20130017627A KR 102050896 B1 KR102050896 B1 KR 102050896B1
Authority
KR
South Korea
Prior art keywords
data
read
read data
memory device
partial data
Prior art date
Application number
KR1020130017627A
Other languages
English (en)
Other versions
KR20140103756A (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 KR1020130017627A priority Critical patent/KR102050896B1/ko
Priority to US14/175,342 priority patent/US9213598B2/en
Publication of KR20140103756A publication Critical patent/KR20140103756A/ko
Application granted granted Critical
Publication of KR102050896B1 publication Critical patent/KR102050896B1/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
    • 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/1048Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
    • 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/26Sensing or reading circuits; Data output circuits

Abstract

본 발명의 일 실시예에 따른 메모리 컨트롤러는 불휘발성 메모리 장치를 제어하는 메모리 컨트롤러에 있어서: 상기 불휘발성 메모리 장치로부터 전달되는 복수의 리드 데이터를 저장하는 메모리, 상기 복수의 리드 데이터 각각을 구성하는 부분 데이터의 에러 비트를 검출하고, 검출된 에러 비트에 기초하여 상기 부분 데이터의 정정 가능 여부를 판단하는 ECC 회로, 및 상기 ECC 회로의 판단 결과에 따라 정정 불가능한 부분 데이터를 분석하여 대표값을 결정하고, 상기 대표값을 상기 ECC 회로로 전달하는 프로세싱 유닛을 포함하고, 상기 복수의 리드 데이터는 동일한 논리 페이지에 대한 읽기 동작을 통해 읽혀진 리드 데이터들이다.

Description

메모리 컨트롤러 및 그것의 동작 방법{MEMORY CONTROLLER AND OPERATING METHOD OF THE SAME}
본 발명은 메모리 컨트롤러 및 그것의 동작 방법에 관한 것이다.
반도체 메모리 장치는 크게 휘발성 반도체 메모리 장치(Volatile semiconductor memory device)와 불휘발성 반도체 메모리 장치(Non-volatile semiconductor memory device)로 구분된다. 휘발성 반도체 메모리 장치는 읽고 쓰는 속도가 빠르지만 외부 전원 공급이 끊기면 저장된 내용이 사라져 버리는 단점이 있다. 반면에 불휘발성 반도체 메모리 장치는 외부 전원 공급이 중단되더라도 그 내용을 보존한다. 그러므로 불휘발성 반도체 메모리 장치는 전원이 공급되었는지의 여부에 관계없이 보존되어야 할 내용을 기억시키는 데 쓰인다.
일반적으로, MROM, PROM 및 EPROM은 시스템 자체적으로 소거 및 쓰기가 자유롭지 못해 일반 사용자들이 기억 내용을 갱신하기가 용이하지 않다. 이에 반해 EEPROM은 전기적으로 소거 및 쓰기가 가능하기 때문에, 계속적인 갱신이 필요한 시스템 프로그래밍(System programming)이나 보조 기억 장치로의 응용이 확대되고 있다. 특히 플래시(Flash) EEPROM(이하, '플래시 메모리 장치'라 칭함)은 기존의 EEPROM에 비해 집적도가 높아, 대용량 보조 기억 장치로의 응용에 매우 유리하다. 플래시 메모리 장치 중에서도 낸드형(NAND-type) 플래시 메모리 장치는 다른 플래시 EEPROM에 비해 집적도가 매우 높은 장점을 가진다.
플래시 메모리 장치의 수명은 프로그램/소거 횟수(P/E cycle)에 따라 결정된다. 프로그램/소거 횟수(P/E cycle)가 증가하면 메모리 셀의 문턱 전압 산포가 변하고, 데이터 리드 시 에러가 증가한다. 에러의 증가는 플래시 메모리 장치의 배드 블록(Bad Block)의 원인이 된다.
본 발명의 목적은 정정 불가능한 리드 데이터의 에러 비트를 복원할 수 있는 메모리 컨트롤러 및 그것의 동작 방법을 제공하는 데 있다.
본 발명의 일 실시예에 따른 메모리 컨트롤러는 불휘발성 메모리 장치를 제어하는 메모리 컨트롤러에 있어서: 상기 불휘발성 메모리 장치로부터 전달되는 복수의 리드 데이터를 저장하는 메모리, 상기 복수의 리드 데이터 각각을 구성하는 부분 데이터의 에러 비트를 검출하고, 검출된 에러 비트에 기초하여 상기 부분 데이터의 정정 가능 여부를 판단하는 ECC 회로, 및 상기 ECC 회로의 판단 결과에 따라 정정 불가능한 부분 데이터를 분석하여 대표값을 결정하고, 상기 대표값을 상기 ECC 회로로 전달하는 프로세싱 유닛을 포함하고, 상기 복수의 리드 데이터는 동일한 논리 페이지에 대한 읽기 동작을 통해 읽혀진 리드 데이터들이다.
일 실시예에서, 상기 복수의 리드 데이터는 동일한 읽기 전압을 이용하여 읽혀진 데이터일 수 있다.
일 실시예에서, 상기 부분 데이터는 상기 논리 페이지를 구성하는 섹터 단위의 데이터일 수 있다.
일 실시예에서, 상기 복수의 리드 데이터는 상기 불휘발성 메모리 장치의 읽기 동작에 따라 순차적으로 상기 메모리로 전달될 수 있다.
일 실시예에서, 상기 ECC 회로는 상기 복수의 리드 데이터가 상기 메모리에 저장된 순서에 따라 상기 부분 데이터의 에러 비트를 검출하고, 검출된 상기 에러 비트에 기초하여 상기 부분 데이터의 정정 가능 여부를 판단할 수 있다.
일 실시예에서, 상기 ECC 회로는 상기 복수의 리드 데이터 가운데 어느 하나의 리드 데이터의 상기 부분 데이터가 정정 가능한 경우, 다음 리드 데이터의 상기 부분 데이터에 대해서는 에러 비트 검출 동작이 생략될 수 있다.
일 실시예에서, 상기 ECC 회로는 상기 복수의 리드 데이터 가운데 어느 하나의 리드 데이터의 상기 부분 데이터가 정정 불가능한 경우, 다음 리드 데이터의 상기 부분 데이터에 대해서 에러 비트를 검출하고, 검출된 상기 에러 비트에 기초하여 상기 부분 데이터의 정정 가능 여부를 판단할 수 있다.
일 실시예에서, 상기 프로세싱 유닛은 상기 정정 불가능한 부분 데이터의 데이터 비트들 가운데 빈도가 높은 비트를 선택하여 상기 대표값을 결정할 수 있다.
일 실시예에서, 상기 프로세싱 유닛은 워드 라인 커플링을 고려하여 상기 대표값을 재결정할 수 있다.
본 발명의 일 실시예에 따른 메모리 컨트롤러의 동작 방법은 불휘발성 메모리 장치를 제어하는 메모리 컨트롤러의 동작 방법에 있어서: (a) 상기 불휘발성 메모리 장치로부터 전달된 복수의 리드 데이터 각각을 구성하는 부분 데이터의 에러 비트를 검출하는 단계, (b) 상기 에러 비트에 기초하여 상기 부분 데이터의 정정 가능 여부를 판단하는 단계, 및 (c) 상기 부분 데이터가 정정 불가능한 경우 상기 부분 데이터를 분석하여 대표값을 결정하는 단계를 포함하되, 상기 복수의 리드 데이터들은 동일한 논리 페이지에 대한 읽기 동작을 통해 읽혀진 리드 데이터들이고, 상기 (a) 및 (b) 단계는 상기 복수의 리드 데이터 각각에 대하여 반복적으로 수행된다.
일 실시예에서, 상기 (c) 단계는 상기 (a) 및 (b) 단계가 상기 복수의 리드 데이터 모두에 대하여 수행된 이후에 수행될 수 있다.
일 실시예에서, 상기 (c) 단계는 상기 복수의 리드 데이터 각각에 포함된 상기 부분 데이터가 모두 정정 불가능한 경우에 수행될 수 있다.
일 실시예에서, 상기 (c) 단계는 상기 정정 불가능한 부분 데이터의 데이터 비트들 가운데 빈도가 높은 비트를 선택하여 상기 대표값을 결정할 수 있다.
일 실시예에서, 워드 라인 커플링을 고려하여 상기 대표값을 재결정하는 단계를 포함할 수 있다.
일 실시예에서, 상기 부분 데이터는 상기 논리 페이지를 구성하는 섹터 단위의 데이터일 수 있다.
본 발명의 일 실시예에 따른 메모리 컨트롤러 및 그것의 동작 방법은 정정 불가능한 리드 데이터의 에러 비트를 복원할 수 있다.
본 발명의 일 실시예에 따른 메모리 컨트롤러 및 그것의 동작 방법은 정정 불가능한 리드 데이터의 발생으로 인한 배드 블록(Bad Block) 발생을 감소시킬 수 있다.
도 1은 본 발명의 일 실시예에 따른 메모리 시스템을 보여주는 블록도이다.
도 2는 도 1의 불휘발성 메모리 장치를 보여주는 블록도이다.
도 3은 도 2의 메모리 셀 어레이(121)의 제 1 메모리 블록(BLK0)을 보여주는 블록도이다.
도 4는 본 발명의 일 실시예에 따른 메모리 컨트롤러의 동작 방법을 보여주는 흐름도이다.
도 5 및 도 6은 프로그램/소거 사이클 수에 따른 셀 문턱 전압 산포의 변화를 보여준다.
도 7은 도 1의 에러 검출 및 정정 회로의 동작을 설명하기 위한 블록도이다.
도 8은 도 1의 프로세싱 유닛의 동작을 설명하기 위한 블록도이다.
도 9는 도 8의 대표값이 에러 검출 및 정정 회로를 통해 처리되는 것을 보여주는 블록도이다.
도 10은 본 발명의 다른 실시예에 따른 메모리 컨트롤러의 동작 방법을 보여주는 흐름도이다.
도 11 내지 도 14는 이웃 셀의 프로그램으로 인한 커플링 효과를 설명하기 위한 도면이다.
도 15는 도 10의 메모리 컨트롤러의 동작 방법을 설명하기 위한 블록도이다.
도 16은 도 1의 메모리 시스템의 응용 예를 보여주는 블록도이다.
도 17은 도 16을 참조하여 설명된 메모리 시스템을 포함하는 컴퓨팅 시스템을 보여주는 블록도이다.
본 명세서에 개시되어 있는 본 발명의 개념에 따른 실시 예들에 대해서 특정한 구조적 또는 기능적 설명들은 단지 본 발명의 개념에 따른 실시 예들을 설명하기 위한 목적으로 예시된 것으로서, 본 발명의 개념에 따른 실시 예들은 다양한 형태들로 실시될 수 있으며 본 명세서에 설명된 실시 예들에 한정되지 않는다.
본 발명의 개념에 따른 실시 예들은 다양한 변경들을 가할 수 있고 여러 가지 형태들을 가질 수 있으므로 실시 예들을 도면에 예시하고 본 명세서에 상세하게 설명하고자 한다. 그러나, 이는 본 발명의 개념에 따른 실시 예들을 특정한 개시 형태들에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물, 또는 대체물을 포함한다.
본 발명은 메모리 컨트롤러 및 그것의 동작 방법에 관한 것이다. 이하에서, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 본 발명의 기술적 사상을 용이하게 실시할 수 있을 정도로 상세히 설명하기 위하여, 본 발명의 실시예들을 첨부된 도면을 참조하여 설명하기로 한다.
도 1은 본 발명의 일 실시예에 따른 메모리 시스템을 보여주는 블록도이다.
도 1을 참조하면, 본 발명의 일 실시예에 따른 메모리 시스템(100)은 메모리 컨트롤러(110) 및 불휘발성 메모리 장치(120)를 포함한다.
이하에서는 설명의 편의를 위해, 불휘발성 메모리 장치(120)가 낸드 플래시 메모리 장치로 가정된다. 그러나 불휘발성 메모리 장치(120)가 낸드 플래시 메모리 장치에 국한될 필요는 없다. 불휘발성 메모리 장치(120)는 노어(NOR) 플래시 메모리 장치, 저항변화 메모리 장치(Resistive Random Access Memory, RRAM), 상변화 메모리 장치(Phase-change Memory, PRAM), 자기저항 메모리 장치(Magnetoresistive Random Access Memory, MRAM), 강유전체 메모리 장치(Ferroelectric Random Access Memory, FRAM) 등이 될 수 있다.
메모리 컨트롤러(110)는 호스트(Host) 및 불휘발성 메모리 장치(120)에 연결된다. 메모리 컨트롤러(110)는 불휘발성 메모리 장치(120) 및 호스트(Host) 사이에 인터페이스를 제공하도록 구성된다. 메모리 컨트롤러(110)는 불휘발성 메모리 장치(120)를 제어하기 위한 펌웨어(firmware)를 구동하도록 구성된다. 예시적으로, 메모리 컨트롤러(110)는 불휘발성 메모리 장치(120)에 제어 신호(CMD) 및 어드레스(ADD)를 제공한다. 그리고, 메모리 컨트롤러(1100)는 불휘발성 메모리 장치(120)와 데이터(DATA)를 교환한다.
호스트(Host)로부터의 요청에 응답하여, 메모리 컨트롤러(110)는 불휘발성 메모리 장치(120)를 액세스한다. 메모리 컨트롤러(110)는 불휘발성 메모리 장치(120)의 읽기, 쓰기, 소거, 그리고 배경(background) 동작을 제어할 수 있다. 읽기 동작 제어의 경우를 예로 들면, 메모리 컨트롤러(110)는 불휘발성 메모리 장치(120)에 읽기 제어 신호 및 어드레스를 전달할 것이다.
일 실시예에서, 메모리 컨트롤러(110)는 선택된 워드 라인에 동일한 읽기 전압을 인가하여 데이터를 읽도록 불휘발성 메모리 장치(120)를 제어할 수 있다. 불휘발성 메모리 장치(120)는 미리 정해진 레벨을 갖는 읽기 전압을 이용하여 저장된 데이터를 읽고, 데이터가 리드 될 때마다 리드 데이터(read data)를 메모리 컨트롤러(110)로 전달할 수 있다. 잘 알려진 바와 같이, 리드 데이터는 페이지(page) 단위로 메모리 컨트롤러(110)로 전달될 것이다.
메모리 컨트롤러(110)는 호스트 인터페이스(111), 메모리 인터페이스(112), 프로세싱 유닛(113), 에러 검출 및 정정 회로(ECC, 114), 및 버퍼(115)를 포함할 수 있다. 호스트 인터페이스(111), 메모리 인터페이스(112), 프로세싱 유닛(113), 에러 검출 및 정정 회로(ECC, 114), 및 버퍼(115)는 버스(bus)를 통하여 서로 접속되어 데이터를 주고받을 수 있다.
호스트 인터페이스(111)는 호스트(Host) 및 메모리 컨트롤러(110) 사이의 데이터 교환을 수행하기 위한 프로토콜을 포함한다. 예시적으로, 메모리 컨트롤러(110)는 USB (Universal Serial Bus) 프로토콜, MMC (multimedia card) 프로토콜, PCI (peripheral component interconnection) 프로토콜, PCI-E (PCI-express) 프로토콜, ATA (Advanced Technology Attachment) 프로토콜, Serial-ATA 프로토콜, Parallel-ATA 프로토콜, SCSI (small computer small interface) 프로토콜, ESDI (enhanced small disk interface) 프로토콜, 그리고 IDE (Integrated Drive Electronics) 프로토콜 등과 같은 다양한 인터페이스 프로토콜들 중 적어도 하나를 통해 외부(호스트)와 통신하도록 구성될 수 있다.
메모리 인터페이스(112)는 불휘발성 메모리 장치(120)와 인터페이싱한다. 예를 들면, 메모리 인터페이스(112)는 낸드 인터페이스 또는 노어 인터페이스를 포함할 수 있다.
램(113)은 불휘발성 메모리 장치(120) 및 호스트(Host) 사이의 캐시 메모리로 이용될 수 있다. 램(113)은 불휘발성 메모리 장치(120)로부터 전달되는 리드 데이터를 저장할 수 있다. 상술한 바와 같이, 불휘발성 메모리 장치(120)가 선택된 워드 라인에 동일한 읽기 전압을 인가하여 데이터를 읽는 경우, 램(113)은 불휘발성 메모리 장치(120)가 데이터를 읽을 때마다 전달되는 리드 데이터를 저장할 것이다. 또한, 램(113)은 프로세싱 유닛(115)의 동작 메모리, 그리고 불휘발성 메모리 장치(120) 및 호스트(Host) 사이의 버퍼 메모리 중 적어도 하나로서 이용될 수 있다.
에러 검출 및 정정 회로(114)는 에러 정정 코드(Error Correction Code)를 이용하여 램(113)에 저장된 데이터(즉, 불휘발성 메모리 장치(120)로부터 전달된 리드 데이터)의 에러 비트를 검출하고, 검출된 에러 비트를 정정하도록 구성될 수 있다. 에러 검출 및 정정 회로(114)는 에러 정정 코드로 데이터를 디코딩하도록 구현될 수 있다. 에러 검출 및 정정 회로(114)는 다양한 코드 디코더로 구현될 수 있다. 예를 들어, 비체계적 코드 디코딩을 수행하는 디코더 또는 체계적 코드 디코딩을 수행하는 디코더가 이용될 수 있다.
예를 들면, 에러 검출 및 정정 회로(114)는 리드 데이터들 각각에 대해 섹터 단위로 에러 비트를 검출할 수 있다. 즉, 각각의 리드 데이터는 복수의 섹터(sector)로 구성될 수 있다. 섹터(sector)는 플래시 메모리의 읽기 단위인 페이지(page)보다 더 작은 데이터 단위를 의미할 수 있다. 각각의 리드 데이터를 구성하는 섹터들은 어드레스를 매개로 서로 대응될 수 있다.
에러 검출 및 정정 회로(114)는 비트 에러율(Bit Error Rate, BER)을 산출하고, 섹터 단위로 정정 가능 여부를 판단할 것이다. 에러 검출 및 정정 회로(114)는 예를 들어, 비트 에러율(BER)이 기준값(reference value)보다 높은 경우 해당 섹터를 정정 불가능(Uncorrectable or Fail)으로 판단할 것이다. 반면에, 비트 에러율(BER)이 기준값보다 낮은 경우 해당 섹터를 정정 가능(Correctable or Pass)으로 판단할 것이다.
에러 검출 및 정정 회로(114)는 모든 리드 데이터들에 대해 순차적으로 에러 검출 및 정정 동작을 수행할 수 있다. 에러 검출 및 정정 회로(114)는 리드 데이터에 포함된 섹터가 정정 가능한 경우 다음 리드 데이터에 대해서는 해당 섹터에 대한 에러 검출 및 정정 동작을 생략할 수 있다. 이렇게 모든 리드 데이터들에 대한 에러 검출 및 정정 동작이 종료되면, 에러 검출 및 정정 회로(114)는 마지막까지 정정 불가능으로 판단된 섹터를 검출할 수 있다. 정정 불가능한 것으로 판단된 섹터는 하나 또는 그 이상일 수 있다. 에러 검출 및 정정 회로(114)는 정정 불가능으로 판단된 섹터에 대한 정보(ex. 어드레스 정보)를 프로세싱 유닛(115)으로 전달할 수 있다.
프로세싱 유닛(115)은 에러 검출 및 정정 회로(114)로부터 정정 불가능한 섹터 정보를 전달받는다. 프로세싱 유닛(115)은 램(113)에 액세스하여 리드 데이터 각각에 포함된 정정 불가능한 섹터의 데이터 비트들을 연산하여 대표값(representative value)을 결정할 수 있다. 구체적으로, 프로세싱 유닛(115)은 정정 불가능한 섹터의 데이터 비트들 가운데 빈도가 높은 비트를 각각 선택하여 대표값을 결정할 수 있다. 이는 이하의 도 8을 참조하여 더욱 상세하게 설명될 것이다.
프로세싱 유닛(115)은 추출된 대표값을 에러 검출 및 정정 회로(114)로 전달할 것이다. 에러 검출 및 정정 회로(114)는 대표값의 에러 비트를 검출하고, 검출된 에러 비트를 정정할 것이다.
상술한 바와 같이, 본 발명의 일 실시예에 따른 메모리 컨트롤러(110) 및 메모리 컨트롤러를 포함하는 메모리 시스템(100)은 정정 불가능한 리드 데이터의 에러 비트를 복원할 수 있다. 메모리 컨트롤러(110)는 정정 불가능한 섹터의 데이터 비트들 가운데 빈도가 높은 비트를 각각 선택하여 대표값을 추출하고, 대표값을 이용하여 에러 비트를 검출하고, 검출된 에러를 정정함으로써 가능할 수 있다. 나아가, 본 발명의 일 실시예에 따른 메모리 컨트롤러(110) 및 메모리 컨트롤러를 포함하는 메모리 시스템(100)은 정정 불가능한 리드 데이터의 발생으로 인한 배드 블록(Bad Block) 발생을 감소시킬 수 있다.
도 2는 도 1의 불휘발성 메모리 장치를 더욱 구체적으로 보여주는 블록도이다.
도 2를 참조하면, 본 발명의 일 실시예에 따른 불휘발성 메모리 장치(120)는 메모리 셀 어레이(121), 제어 로직(122), 행 디코더(123), 페이지 버퍼(124) 및 입/출력 버퍼(125)를 포함한다.
메모리 셀 어레이(121)는 복수의 메모리 블록(BLK0~BLKn-1)으로 구성된다. 각각의 메모리 블록(BLK0~BLKn-1)은 복수의 페이지로 구성된다. 각각의 페이지는 복수의 메모리 셀을 포함한다. 각각의 메모리 셀은 워드 라인(WL) 및 비트 라인(BL)이 교차하는 영역에 배치된다.
제어 로직(122)은 불휘발성 메모리 장치(120)의 전반적인 동작을 제어한다. 제어 로직(122)은 고전압 발생기(High Voltage Generator)를 포함하여 구성될 수 있다. 즉, 제어 로직(122)은 메모리 컨트롤러(110, 도 1 참조)로부터의 제어 신호(CMD)에 응답하여 프로그램, 읽기 및 소거 동작에 필요한 고전압들을 생성할 수 있다. 예를 들어, 읽기 동작 시, 제어 로직(122)은 읽기 전압(Vrd) 및 읽기 패스 전압(Vread)을 행 디코더(123)를 통해 메모리 셀 어레이(121)에 인가한다. 또한, 제어 로직(122)은 메모리 컨트롤러(110, 도 1 참조)로부터 전달되는 어드레스(ADD)를 행 디코더(123) 및 페이지 버퍼(124)에 각각 전달한다.
페이지 버퍼(124)는 동작 모드에 따라 쓰기 드라이버(write driver)로서 또는 감지 증폭기(Sense Amplifier)로서 동작한다. 예를 들어, 페이지 버퍼(124)는 읽기 동작시, 감지 증폭기로서 동작한다. 페이지 버퍼(124)는 읽기 동작시, 하나의 페이지 단위의 데이터를 메모리 셀 어레이(121)로부터 전달받는다. 구체적으로, 페이지 버퍼(124)는 메모리 셀 어레이(121)로부터 페이지 어드레스에 상응하는 하나의 페이지 단위의 최하위 비트(Least Significant Bit, LSB) 데이터 또는 최상위 비트(Most Significant Bit, MSB) 데이터를 전달받는다.
입/출력 버퍼(125)는 외부와 데이터를 교환하도록 구성된다. 외부로부터 수신되는 데이터는 데이터 라인들(DL)을 통해 페이지 버퍼(124)에 전달된다. 페이지 버퍼(124)로부터 전달되는 데이터는 외부(ex. 메모리 컨트롤러)로 출력된다. 예를 들어, 입/출력 버퍼(125)는 리드 데이터를 메모리 컨트롤러(110)로 전달할 것이다. 예시적으로, 입/출력 버퍼(125)는 데이터 버퍼 등과 같이 잘 알려진 구성 요소를 포함할 수 있다.
도 3은 도 2의 메모리 셀 어레이(121)의 제 1 메모리 블록(BLK0)을 보여주는 블록도이다. 제 1 메모리 블록(BLK0)은 복수의 메모리 셀 그룹들(미도시)을 포함한다.
하나의 행에 배치되는 메모리 셀들은 하나의 메모리 셀 그룹(예를 들면, 페이지)을 형성할 것이다. 그리고 그 메모리 셀 그룹은 워드 라인들(WL) 중 하나에 연결될 것이다.
예시적으로, 제 1 메모리 블록(BLK0)은 제 1 내지 제 m 페이지들(Page 1 ~ Page M)로 구성될 수 있다. 각각의 페이지는 제 1 내지 제 k 섹터들(sector 1 ~ sector k)로 구성될 수 있다. 각각의 섹터는 하나의 워드 라인(미도시)을 공유하는 복수의 메모리 셀들로 구성된다.
도 3에서는 제 1 메모리 블록(BLK0)만 도시되나, 제 1 내지 제 n 메모리 블록들(BLK0~BLKn-1)은 모두 동일하게 구성될 것이다. 낸드 플래시 메모리의 경우에, 읽기 및 프로그램 동작은 페이지 단위로 수행된다.
도 4는 본 발명의 일 실시예에 따른 메모리 컨트롤러의 동작 방법을 보여주는 흐름도이다.
도 4를 참조하면, S110 단계에서 변수(count)가 '1'로 설정될 것이다. 변수(count)는 불휘발성 메모리 장치(120)가 선택된 워드 라인에 읽기 전압을 인가하여 데이터를 리드하는 횟수를 나타내는 데 사용된다.
S120 단계에서, 메모리 컨트롤러(110)는 불휘발성 메모리 장치(120)로부터 리드 데이터를 전달받을 수 있다. 리드 데이터는 페이지 단위로 불휘발성 메모리 장치(120)로부터 메모리 컨트롤러(110)로 전달될 것이다. 전달된 리드 데이터는 메모리 컨트롤러(110)의 램(113)에 저장될 것이다.
S130 단계에서, 에러 검출 및 정정 회로(114)는 램(113)에 액세스하여 리드 데이터의 에러 비트를 검출할 것이다. 예를 들면, 에러 검출 및 정정 회로(114)는 섹터 단위로 리드 데이터의 에러 비트를 검출하고, 검출된 에러 비트를 정정할 수 있다.
S140 단계에서, 에러 검출 및 정정 회로(114)는 리드 데이터의 섹터 별로 정정 가능 여부를 판단할 수 있다. 즉, 에러 검출 및 정정 회로(114)는 리드 데이터의 섹터(sector0 ~ sector k-1, 도 3 참조)들 각각에 대해 정정 가능 여부를 판단할 수 있다. 적어도 하나의 섹터가 정정 가능하지 않은 경우, S150 단계로 진행할 것이다. 모든 섹터가 정정 가능한 경우, 절차가 종료될 것이다.
S150 단계에서, 변수(count)가 미리 설정된 횟수(n, n≥2, n은 자연수)에 도달했는지가 판별될 것이다. 변수(count)가 미리 설정된 횟수(n)에 도달한 경우, S220 단계로 진행할 것이다. 변수(count)가 미리 설정된 횟수(n)에 도달하지 않은 경우, S210 단계로 진행할 것이다.
S210 단계에서, 변수(count)의 값이 '1'만큼 증가될 것이다. 이후, S120 단계 내지 S150 단계가 반복적으로 수행될 것이다. 즉, S120 단계에서, 메모리 컨트롤러(110)로 전달되는 리드 데이터는 다음 읽기 동작에 의해 읽혀진 리드 데이터를 의미할 수 있다. 각각의 읽기 동작에서는, 상술한 바와 같이, 동일한 읽기 전압을 동일한 선택된 워드 라인에 인가하여 데이터를 리드하는 것으로 잘 이해될 것이다. S130 단계에서, 에러 검출 및 정정 회로(114)는 섹터 단위로 리드 데이터의 에러 비트를 검출하고, 검출된 에러 비트를 정정할 것이다.
다만, 에러 검출 및 정정 회로(114)는 이전의 읽기 동작에 의해 읽혀진 리드 데이터의 섹터들 가운데 정정 가능한 것으로 판단된 섹터에 대해서는 에러 검출 및 정정 동작을 수행하지 않을 수 있다. 즉, 변수(count)가 '2' 이상의 값을 가지는 루프에서 에러 검출 및 정정 회로(114)는 리드 데이터의 섹터들 가운데 정정 불가능한 것으로 판단된 섹터에 대해서만 에러 검출 및 정정 동작을 수행할 것이다.
상술한 과정에 기초하여, 변수(count)의 값이 미리 설정된 횟수(n)에 도달할 때까지 S120 단계 내지 S150 단계가 반복적으로 수행될 것이다. 변수(count)가 미리 설정된 횟수(n)에 도달한 경우, 에러 검출 및 정정 회로(114)는 정정 불가능한 것으로 판단된 섹터에 대한 정보를 프로세싱 유닛(115)으로 전달할 것이다. 정정 불가능한 것으로 판단된 섹터는 하나 또는 그 이상일 수 있다.
변수(count)가 미리 설정된 횟수(n)에 도달한 경우, S220 단계가 수행된다. S220 단계에서, 프로세싱 유닛(115)은 램(113)에 저장된 리드 데이터들 각각에 포함된 정정 불가능한 섹터들의 데이터 비트들을 연산하여 대표값을 결정할 수 있다. 대표값이 결정되는 과정은 이하의 도 8을 참조하여 더욱 구체적으로 설명될 것이다. 프로세싱 유닛(115)은 결정된 대표값을 에러 검출 및 정정 회로(114)에 전달할 것이다.
S230 단계에서, 에러 검출 및 정정 회로(114)는 대표값에 대한 에러 검출 및 정정 동작을 수행할 수 있다.
상술한 각 단계들은 이하의 도 5 내지 도 9를 통해 더욱 상세하게 설명될 것이다.
도 5 및 도 6은 프로그램/소거 사이클 수에 따른 셀 문턱 전압 산포의 변화를 보여준다.
먼저, 도 5를 참조하면, 프로그램/소거 사이클 수가 적은 경우의 셀 문턱 전압 산포가 도시된다. 도 5에 도시된 바와 같이, 읽기 전압(Vrd)을 이용하여 읽기 동작이 수행되는 경우 A와 같은 문턱 전압 산포를 갖는 셀들은 '1'로 리드되고, B와 같은 문턱 전압 산포를 갖는 셀들은 '0'으로 리드될 것이다. 동일한 읽기 전압(Vrd)을 이용하여 반복적으로 읽기 동작을 수행하는 경우 이러한 리드 결과는 거의 동일할 것이다.
도 6을 참조하면, 프로그램/소거 사이클 수가 많은 경우의 셀 문턱 전압 산포가 도시된다. 프로그램/소거 사이클 수가 증가하는 경우, 셀 문턱 전압 산포가 넓어지면서 셀 문턱 전압 산포가 서로 겹치는 영역(C)이 발생할 수 있다. 도 6에 도시된 바와 같이, 읽기 전압(Vrd)을 이용하여 읽기 동작이 수행되는 경우 A와 같은 문턱 전압 산포를 갖는 셀들은 '1'로 리드되고, B와 같은 문턱 전압 산포를 갖는 셀들은 '0'으로 리드될 것이다. 읽기 전압(Vrd)은 예를 들어, 도 5에 도시된 읽기 전압(Vrd)과 동일한 레벨을 가질 수 있다.
하지만, 오버랩된 영역(C)의 경우, 동일한 읽기 전압을 이용하여 읽기 동작이 반복적으로 수행되는 경우에 메모리 칩 내부 또는 외부 환경의 노이즈에 의해 리드 데이터 값이 변하는 비트 플립(Bit Flip) 현상이 발생될 수 있다. 예를 들면, C와 같은 문턱 전압 산포를 갖는 셀들 가운데 읽기 전압(Vrd)의 레벨과 유사한 문턱 전압을 갖는 셀들은 첫 번째 리드 시에는 '1'로 리드되고, 세 번째 리드 시에는 '0'으로 리드될 수 있다. 이러한 비트 플립 현상은 비트 에러율(BER) 증가의 원인이 된다.
도 7은 도 1의 에러 검출 및 정정 회로의 동작을 설명하기 위한 블록도이다.
도 7을 참조하면, 선택된 워드 라인에 동일한 읽기 전압을 인가하여 읽혀진 리드 데이터들이 도시된다. 선택된 워드 라인에 읽기 전압을 인가하여 데이터를 리드하는 것은 하나의 읽기 동작으로 정의될 수 있다. 읽기 동작에 의해 읽혀진 리드 데이터들은 복수의 섹터로 구성될 수 있다.
에러 검출 및 정정 회로(114, 도 1 참조)는 리드 데이터들 각각에 대해 섹터 단위로 에러 비트를 검출하고, 검출된 에러 비트를 정정할 수 있다. 에러 검출 및 정정 회로(114)는 비트 에러율(BER)을 산출하고, 섹터 별로 정정 가능 여부를 판단할 수 있다.
에러 검출 및 정정 회로(114)는 이전의 읽기 동작에 의해 읽혀진 리드 데이터의 섹터들 가운데 정정 가능한 것으로 판단된 섹터에 대해서는 에러 검출 및 정정 동작을 수행하지 않을 수 있다.
예를 들면, 첫 번째 읽기 동작(1st Read)에 의해 읽혀진 리드 데이터의 제 1 섹터(sector0)는 정정 가능(Pass)으로 판단될 수 있다. 에러 정정 및 검출 회로(114)는 첫 번째 읽기 동작(1st Read) 이후의 읽기 동작들(2nd Read~Nth Read)에 의해 읽혀진 리드 데이터들의 제 1 섹터(sector0)에 대해서는 에러 검출 및 정정 동작을 수행하지 않을 것이다.
이와 마찬가지로, 세 번째 읽기 동작(3rd Read)에 의해 읽혀진 리드 데이터의 제 2 섹터(sector1)는 정정 가능(Pass)로 판단될 수 있다. 에러 정정 및 검출 회로(114)는 세 번째 읽기 동작(3rd Read) 이후의 읽기 동작들(4th Read~Nth Read)에 의해 읽혀진 리드 데이터들의 제 1 섹터(sector0)에 대해서는 에러 검출 및 정정 동작을 수행하지 않을 것이다.
반면에, 제 3 섹터(sector2)는 각각의 리드 데이터 모두에서 정정 불가능(Fail)으로 판단될 수 있다. 에러 검출 및 정정 회로(114)는 제 3 섹터(sector2)에 대한 정보(ex. 어드레스 정보)를 프로세싱 유닛(115)으로 전달할 것이다.
도 8은 도 1의 프로세싱 유닛의 동작을 설명하기 위한 블록도이다.
도 8을 참조하면, 제 3 섹터(sector2)를 구성하는 데이터 비트들이 도시된다. 도 8에서는 예시적으로, 제 3 섹터(sector2)가 10개의 데이터 비트들로 구성되는 것으로 도시되나, 이에 한정되지 않음은 잘 이해될 것이다.
프로세싱 유닛(115)은 램(113)에 저장된 리드 데이터들 각각의 제 3 섹터(sector2)의 데이터 비트들을 연산하여 대표값을 결정할 수 있다. 예를 들면, 프로세싱 유닛(115)은 최다 빈도 알고리즘에 따라 대표값을 결정할 수 있다. 최다 빈도 알고리즘은 반복적으로 읽혀진 섹터의 데이터 비트들 각각에 대하여 가장 많은 빈도를 나타낸 값을 대표 비트로 결정하는 알고리즘으로 이해될 수 있다.
예를 들면, 프로세싱 유닛(115)은 제 3 섹터(sector2)의 데이터 비트들 가운데 a 데이터 비트의 경우 '1'을 대표 비트로 결정할 것이다. b 데이터 비트의 경우 '1'을 대표 비트로 결정할 것이다. c 데이터 비트의 경우 '0'을 대표 비트로 결정할 것이다. 나머지 데이터 비트들에 대해서도 동일한 방법으로 대표 비트가 결정될 것이다. 프로세싱 유닛(115)은 상술한 바와 같은 최다 빈도 알고리즘을 이용하여 제 3 섹터(sector2)의 데이터 비트들의 대표값을 결정할 것이다.
도 9는 도 8의 대표값이 에러 검출 및 정정 회로를 통해 처리되는 과정을 보여주는 블록도이다.
도 9를 참조하면, 프로세싱 유닛(115)에 의해 결정된 대표값은 에러 검출 및 정정 회로(114)로 전달될 것이다.
에러 검출 및 정정 회로(114)는 대표값의 에러 비트를 검출하고, 검출된 에러를 정정할 수 있다. 대표값의 경우 상술한 바와 같이, 읽혀진 데이터들 가운데 가장 빈도가 높은 데이터 비트들로 구성되므로 정정 가능한 섹터로 판단될 확률이 높을 것이다.
이하의 도 10 내지 도 15에서는 커플링 효과를 고려하여 대표값을 산출하는 실시예가 설명될 것이다.
도 10은 본 발명의 다른 실시예에 따른 메모리 컨트롤러의 동작 방법을 보여주는 흐름도이다.
도 10을 참조하면, S310 단계 내지 S350 단계는 각각 도 4를 참조하여 설명된 S110 단계 내지 S150 단계와 동일하게 수행될 수 있다. 다만, S320 단계에서, 메모리 컨트롤러(110)는 n번째 워드 라인(WLn)의 메모리 셀들의 리드 데이터를 불휘발성 메모리 장치(120)로부터 전달받을 수 있다.
S410 단계는 도 4를 참조하여 설명된 S210 단계와 동일하게 수행될 수 있다.
S420 단계에서, 메모리 컨트롤러(110)는 n+1번째 워드 라인(WLn+1)의 메모리 셀들의 리드 데이터를 불휘발성 메모리 장치(120)로부터 전달받을 수 있다. 전달된 리드 데이터는 램(113)에 저장될 수 있다.
S430 단계에서, 프로세싱 유닛(115)은 n번째 워드 라인(WLn)의 메모리 셀들의 리드 데이터들 각각에 포함된 정정 불가능한 섹터들의 데이터 비트들을 연산하여 대표값을 결정할 수 있다. 프로세싱 유닛(115)은 n번째 워드 라인(WLn)과 n+1번째 워드 라인(WLn+1)의 커플링을 고려하여 대표값을 결정할 수 있다. 예를 들면, 프로세싱 유닛(115)은 n번째 워드 라인(WLn)의 메모리 셀들의 리드 데이터의 정정 불가능한 섹터에 대응되는 n+1번째 워드 라인(WLn+1)의 메모리 셀들의 리드 데이터의 섹터(이하, '대응 섹터'라고 칭함)의 데이터 비트들을 참조하여 대표값을 결정할 수 있다. 대표값이 결정되는 과정은 이하의 도 14를 참조하여 더욱 구체적으로 설명될 것이다. 프로세싱 유닛(115)은 결정된 대표값을 에러 검출 및 정정 회로(114)에 전달할 것이다.
S440 단계에서, 에러 검출 및 정정 회로(114)는 대표값에 대한 에러 검출 및 정정 동작을 수행할 수 있다.
한편, 본 실시예에서는 프로세싱 유닛(115)이 워드 라인 사이의 커플링을 고려하여 대표값을 결정하는 과정이 설명되지만, 비트 라인 사이의 커플링을 고려하는 데까지 본 발명의 기술적 사상이 확장될 수 있음은 잘 이해될 것이다.
도 11 내지 도 14는 이웃 셀의 프로그램으로 인한 커플링 효과를 설명하기 위한 도면이다.
도 11을 참조하면, 워드 라인(WL1)과 비트 라인(BL2)의 교차점의 셀(이하, 기준셀이라 함)은 제 1 프로그램 상태(P1)로 프로그램된 셀을 나타낸다. P1 셀의 이웃셀들, 즉 워드 라인(WL1)과 비트 라인들(BL1 및 BL3)의 교차점들의 셀들 및 워드 라인(WL2)과 비트 라인들(BL1, BL2 및 BL3)의 교차점들의 셀들은 모두 소거된 상태(E)임을 나타낸다.
도 12는 도 11에 대응하는 셀 산포를 도시한 것으로 이해될 수 있다.
도 11의 경우에서 도 13과 같이 프로그램되는 경우가 가정된다. 즉, 제 1 프로그램 상태(P1)를 가지는 기준셀의 이웃셀들, 즉 워드 라인(WL1)과 비트 라인들(BL1 및 BL3)의 교차점들의 셀들 및 워드 라인(WL2)과 비트 라인들(BL1, BL2 및 BL3)의 교차점들의 셀들이 모두 제 3 프로그램 상태(P3)로 프로그램된다고 가정된다. 도 13에 도시된 커패시터는 기준셀과 이웃셀들간의 커플링 효과를 나타내기 위해 모델링된 커패시터이다.
도 13과 같이 기준셀의 이웃셀들이 제 3 프로그램 상태(P3)로 프로그램된 경우, 셀 산포는 도 14에 도시된 바와 같을 수 있다. 도 14에 도시된 바와 같이, 이웃셀들이 소거 상태에서 제 3 프로그램 상태(P3)로 프로그램됨에 따라 커플링 효과로 인하여, 제 1 프로그램 상태(P1)의 셀은 P1 에서 P1'로 변경된 산포를 갖게 된다. 즉, 커플링 디스터브(coupling disturb)에 의하여 문턱 전압의 산포가 "P1"에서 "P1'"로 변경된다.
즉, 기준셀과 인접하는 셀들이 특정 패턴(예컨대, P3-P1-P3)으로 프로그램되는 경우, 커플링 효과로 인해 기준 셀에 저장되는 상태는 변경될 수 있다.
도 15는 도 10의 메모리 컨트롤러의 동작 방법을 설명하기 위한 블록도이다. 이해를 돕기 위해, n번째 워드 라인(WLn)의 메모리 셀들의 리드 데이터는 도 8의 경우와 동일한 것으로 가정된다. 즉, 에러 검출 및 정정 회로(114)는 리드 데이터들 각각의 제 3 섹터(sector2)를 정정 불가능(Fail)한 것으로 판단할 것이다.
도 15를 참조하면, 제 3 섹터(sector2)를 구성하는 데이터 비트들이 도시된다. 도 15에서는 예시적으로, 제 3 섹터(sector2)가 10개의 데이터 비트들로 구성되는 것으로 도시되나, 이에 한정되지 않음은 잘 이해될 것이다.
프로세싱 유닛(115)은 램(113)에 저장된 n번째 워드 라인(WLn)의 메모리 셀들의 리드 데이터들 각각의 제 3 섹터(sector2)의 데이터 비트들을 연산하여 제 1 대표값(Reference value 1)을 결정할 수 있다. 예를 들면, 프로세싱 유닛(115)은 최다 빈도 알고리즘에 따라 제 1 대표값을 결정할 수 있다. 제 1 대표값을 결정하는 과정은 도 8을 참조하여 설명한 바와 동일할 수 있다.
프로세싱 유닛(115)은 n+1번째 워드 라인(WLn+1)의 메모리 셀들의 리드 데이터의 대응 섹터의 데이터 비트들을 고려하여 제 2 대표값(Reference value 2)을 결정할 수 있다. n+1번째 워드 라인(WLn+1)의 메모리 셀들의 리드 데이터의 대응 섹터의 데이터 비트들을 참조하면, '1'은 프로그램되지 않은 상태를 의미하고, '0'은 프로그램된 상태를 의미할 수 있다. 프로그램된 상태의 경우, 인접한 워드 라인에 커플링 영향을 줄 가능성이 크다. 따라서, 프로세싱 유닛(115)은 n+1번째 워드 라인(WLn+1)의 메모리 셀들의 리드 데이터의 대응 섹터의 데이터 비트가 '1'인지 또는 '0'인지에 따라 제 1 대표값에 대한 영향을 달리하여 제 2 대표값을 결정할 수 있다.
예를 들면, 프로세싱 유닛(115)은 제 2 대표값의 데이터 비트들 가운데 a 데이터 비트의 경우 '1'을 대표 비트로 결정할 것이다. 제 1 대표값의 a 데이터 비트가 프로그램되지 않은 상태이므로 커플링의 영향을 받지 않을 가능성이 크기 때문이다. b 데이터 비트의 경우 '1'을 대표 비트로 결정할 것이다. n+1번째 워드 라인(WLn+1)의 메모리 셀들의 리드 데이터의 대응 섹터의 데이터 비트가 프로그램되지 않은 상태이기 때문이다. c 데이터 비트의 경우 '1'을 대표 비트로 결정할 것이다. 제 1 대표값의 a 데이터 비트도 프로그램된 상태이고, n+1번째 워드 라인(WLn+1)의 메모리 셀들의 리드 데이터의 대응 섹터의 데이터 비트도 프로그램된 상태이므로 커플링의 영향을 받았을 가능성이 크기 때문이다.
나머지 데이터 비트들에 대해서도 동일한 방법으로 대표 비트가 결정될 것이다. 프로세싱 유닛(115)은 상술한 바와 같은 프로세스를 통해 n번째 워드 라인(WLn)의 메모리 셀들의 리드 데이터의 제 3 섹터(sector2)의 데이터 비트들의 제 2 대표값을 결정할 것이다.
상술한 바와 같이, 본 발명의 일 실시예에 따른 메모리 컨트롤러의 동작 방법은 정정 불가능한 리드 데이터의 에러 비트를 더욱 정확하게 복원할 수 있다.
도 16은 도 1의 메모리 시스템의 응용 예를 보여주는 블록도이다.
도 16을 참조하면, 메모리 시스템(1000)은 컨트롤러(1100) 및 불휘발성 메모리 장치(1200)를 포함한다. 불휘발성 메모리 장치(1200)는 복수의 불휘발성 메모리 칩들을 포함한다. 복수의 불휘발성 메모리 칩들은 복수의 그룹들로 분할된다. 복수의 불휘발성 메모리 칩들의 각 그룹은 하나의 공통 채널을 통해 컨트롤러(1100)와 통신하도록 구성된다.
도 16에서, 복수의 불휘발성 메모리 칩들은 제 1 내지 제 k 채널들(CH1~CHk)을 통해 컨트롤러(1100)와 통신하는 것으로 도시되어 있다. 각 불휘발성 메모리 칩은 도 2를 참조하여 설명된 불휘발성 메모리 장치(120)와 같이 구성된다. 그리고, 컨트롤러(1100)는 도 1을 참조하여 설명된 메모리 컨트롤러(110)와 같이 구성된다.
예시적으로, 컨트롤러(1100) 및 불휘발성 메모리 장치(1200)는 하나의 반도체 장치로 집적되어, 메모리 카드를 구성할 수 있다. 예를 들면, 컨트롤러(1100) 및 불휘발성 메모리 장치(1200)는 하나의 반도체 장치로 집적되어 PC 카드(PCMCIA, personal computer memory card international association), 컴팩트 플래시 카드(CF), 스마트 미디어 카드(SM, SMC), 메모리 스틱, 멀티미디어 카드(MMC, RS-MMC, MMCmicro), SD 카드(SD, miniSD, microSD, SDHC), 유니버설 플래시 기억장치(UFS) 등과 같은 메모리 카드를 구성할 수 있다.
예시적으로, 불휘발성 메모리 장치(1200) 또는 메모리 시스템(1000)은 다양한 형태들의 패키지로 실장될 수 있다. 예를 들면, 불휘발성 메모리 장치(1200) 또는 메모리 시스템(1000)은 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) 등과 같은 방식으로 패키지화되어 실장될 수 있다.
도 17은 도 16을 참조하여 설명된 메모리 시스템(1000)을 포함하는 컴퓨팅 시스템(2000)을 보여주는 블록도이다.
도 17을 참조하면, 컴퓨팅 시스템(2000)은 중앙 처리 장치(2100), 램(2200, RAM, Random Access Memory), 사용자 인터페이스(2300), 전원(2400), 그리고 메모리 시스템(1000)을 포함한다.
중앙 처리 장치(2100)는 컴퓨팅 시스템(2000)의 구성 요소들을 제어하고, 운영 체제 및 다양한 프로그램들을 실행하고, 논리 연산을 수행할 수 있다.
램(2200)은 컴퓨팅 시스템(2000)의 동작 메모리일 수 있다. 램(2200)은 예를 들어, DRAM, SRAM, PRAM, MRAM, RRAM, FRAM 등과 같은 랜덤 액세스 메모리들 중 적어도 하나를 포함할 수 있다.
사용자 인터페이스(2300)는 사용자와 신호를 교환할 수 있다. 사용자 인터페이스(2300)는 카메라, 마이크, 키보드, 마우스, 터치 패드, 터치 패널, 터치 스크린, 버튼, 스위치 등과 같은 사용자 입력 인터페이스들을 포함할 수 있다. 사용자 인터페이스(2300)는 디스플레이 장치, 스피커, 램프, 모터 등과 같은 사용자 출력 인터페이스들을 포함할 수 있다. 디스플레이 장치는 LCD, AMOLED 표시 장치, 빔 프로젝터 등을 포함할 수 있다.
전원(2400)은 컴퓨팅 시스템(2000)에 동작 전원을 공급할 수 있다. 한편, 컴퓨팅 시스템(2000)이 모바일 장치를 위해 구현되는 경우, 전원(2400)은 배터리(미도시)와 같은 형태로 구성될 수 있다.
메모리 시스템(1000)은 시스템 버스(2500)를 통해, 중앙처리장치(2100), 램(2200), 사용자 인터페이스(2300), 그리고 전원(2400)에 전기적으로 연결된다. 사용자 인터페이스(2300)를 통해 제공되거나, 중앙 처리 장치(2100)에 의해서 처리된 데이터는 메모리 시스템(1000)에 저장된다. 메모리 시스템(1000)은 도 1 또는 16을 참조하여 설명한 바와 같이 구성될 수 있다. 또한, 예시적으로, 컴퓨팅 시스템(3000)은 도 1 및 도 16을 참조하여 설명된 메모리 시스템들(100, 1000)을 모두 포함하도록 구성될 수 있다.
본 발명의 상세한 설명에서는 구체적인 실시 예에 관하여 설명하였으나, 본 발명의 범위와 기술적 사상에서 벗어나지 않는 한도 내에서 여러 가지 변형이 가능하다. 그러므로 본 발명의 범위는 상술한 실시예에 국한되어 정해져서는 안되며 후술하는 특허청구범위뿐만 아니라 이 발명의 특허청구범위와 균등한 것들에 의해 정해져야 한다.
110, 1100: 메모리 컨트롤러 120, 1200: 불휘발성 메모리 장치
111: 호스트 인터페이스 121: 메모리 셀 어레이
112: 메모리 인터페이스 122: 제어 로직
113: RAM 123: 행 디코더
114: 에러 검출 및 정정 회로 124: 페이지 버퍼
115: 프로세싱 유닛 125: 입/출력 버퍼
100, 1000, 2000: 메모리 시스템
2100: CPU
2200: RAM
2300: 사용자 인터페이스
2400: 전원
2500: 시스템 버스

Claims (10)

  1. 불휘발성 메모리 장치를 제어하는 메모리 컨트롤러에 있어서:
    상기 불휘발성 메모리 장치로부터 전달되는 복수의 리드 데이터를 저장하는 메모리;
    상기 복수의 리드 데이터 각각을 구성하는 부분 데이터의 에러 비트를 검출하고, 검출된 에러 비트에 기초하여 상기 부분 데이터의 정정 가능 여부를 판단하는 ECC 회로; 및
    상기 ECC 회로의 판단 결과에 따라 정정 불가능한 부분 데이터를 분석하여 대표값을 결정하고, 상기 대표값을 상기 ECC 회로로 전달하는 프로세싱 유닛을 포함하고,
    상기 복수의 리드 데이터는 동일한 논리 페이지에 대한 읽기 동작을 통해 읽혀진 리드 데이터들인 메모리 컨트롤러.
  2. 제 1 항에 있어서,
    상기 부분 데이터는 상기 논리 페이지를 구성하는 섹터 단위의 데이터인 메모리 컨트롤러.
  3. 제 1 항에 있어서,
    상기 복수의 리드 데이터는 상기 불휘발성 메모리 장치의 읽기 동작에 따라 순차적으로 상기 메모리로 전달되는 메모리 컨트롤러.
  4. 제 3 항에 있어서,
    상기 ECC 회로는 상기 복수의 리드 데이터가 상기 메모리에 저장된 순서에 따라 상기 부분 데이터의 에러 비트를 검출하고, 검출된 상기 에러 비트에 기초하여 상기 부분 데이터의 정정 가능 여부를 판단하는 메모리 컨트롤러.
  5. 제 4 항에 있어서,
    상기 ECC 회로는 상기 복수의 리드 데이터 가운데 어느 하나의 리드 데이터의 상기 부분 데이터가 정정 가능한 경우, 다음 리드 데이터의 상기 부분 데이터에 대해서는 에러 비트 검출 동작을 수행하지 않는 메모리 컨트롤러.
  6. 제 1 항에 있어서,
    상기 프로세싱 유닛은 상기 정정 불가능한 부분 데이터의 데이터 비트들 가운데 가장 높은 빈도의 비트를 선택하여 상기 대표값을 결정하는 메모리 컨트롤러.
  7. 불휘발성 메모리 장치를 제어하는 메모리 컨트롤러의 동작 방법에 있어서:
    (a) 상기 불휘발성 메모리 장치로부터 전달된 복수의 리드 데이터 각각을 구성하는 부분 데이터의 에러 비트를 검출하는 단계;
    (b) 상기 에러 비트에 기초하여 상기 부분 데이터의 정정 가능 여부를 판단하는 단계; 및
    (c) 상기 부분 데이터가 정정 불가능한 경우 상기 부분 데이터를 분석하여 대표값을 결정하는 단계를 포함하되,
    상기 복수의 리드 데이터들은 동일한 논리 페이지에 대한 읽기 동작을 통해 읽혀진 리드 데이터들이고, 상기 (a) 및 (b) 단계는 상기 복수의 리드 데이터 각각에 대하여 반복적으로 수행되는 메모리 컨트롤러의 동작 방법.
  8. 제 7 항에 있어서,
    상기 (c) 단계는 상기 (a) 및 (b) 단계가 상기 복수의 리드 데이터 모두에 대하여 수행된 이후에 수행되는 메모리 컨트롤러의 동작 방법.
  9. 제 8 항에 있어서,
    상기 (c) 단계는 상기 복수의 리드 데이터 각각에 포함된 상기 부분 데이터가 모두 정정 불가능한 경우에 수행되는 메모리 컨트롤러의 동작 방법.
  10. 제 7 항에 있어서,
    상기 (c) 단계는 상기 정정 불가능한 부분 데이터의 데이터 비트들 가운데 가장 높은 빈도의 비트를 선택하여 상기 대표값을 결정하는 메모리 컨트롤러의 동작 방법.
KR1020130017627A 2013-02-19 2013-02-19 메모리 컨트롤러 및 그것의 동작 방법 KR102050896B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020130017627A KR102050896B1 (ko) 2013-02-19 2013-02-19 메모리 컨트롤러 및 그것의 동작 방법
US14/175,342 US9213598B2 (en) 2013-02-19 2014-02-07 Nonvolatile memory device and method of operating the same

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020130017627A KR102050896B1 (ko) 2013-02-19 2013-02-19 메모리 컨트롤러 및 그것의 동작 방법

Publications (2)

Publication Number Publication Date
KR20140103756A KR20140103756A (ko) 2014-08-27
KR102050896B1 true KR102050896B1 (ko) 2019-12-02

Family

ID=51352206

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020130017627A KR102050896B1 (ko) 2013-02-19 2013-02-19 메모리 컨트롤러 및 그것의 동작 방법

Country Status (2)

Country Link
US (1) US9213598B2 (ko)
KR (1) KR102050896B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102216006B1 (ko) * 2020-07-01 2021-02-16 주식회사 파두 메모리 컨트롤러 및 이를 포함하는 스토리지 디바이스

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9350386B2 (en) * 2012-04-12 2016-05-24 Samsung Electronics Co., Ltd. Memory device, memory system, and method of operating the same
US9230689B2 (en) * 2014-03-17 2016-01-05 Sandisk Technologies Inc. Finding read disturbs on non-volatile memories
CN105989898B (zh) * 2014-10-08 2018-11-27 光宝科技股份有限公司 存储器阵列中故障地址的数据结构及故障地址的编码方法
KR20160057186A (ko) * 2014-11-13 2016-05-23 에스케이하이닉스 주식회사 반도체 메모리 시스템 및 그것의 동작 방법
KR101734623B1 (ko) 2014-11-25 2017-05-11 단국대학교 산학협력단 메모리 제어 장치 및 방법
KR20160073834A (ko) * 2014-12-17 2016-06-27 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템 동작 방법
KR102609130B1 (ko) * 2016-02-17 2023-12-05 삼성전자주식회사 읽기 전압 서치 유닛을 포함하는 데이터 저장 장치
KR102628239B1 (ko) * 2016-05-02 2024-01-24 삼성전자주식회사 스토리지 장치, 스토리지 장치의 동작 방법, 그리고 스토리지 장치 및 호스트 장치를 포함하는 컴퓨팅 장치의 동작 방법
KR102422478B1 (ko) * 2016-05-10 2022-07-19 삼성전자주식회사 불휘발성 메모리 장치의 독출 방법
JP6797727B2 (ja) * 2017-03-21 2020-12-09 キオクシア株式会社 半導体記憶装置
KR102347184B1 (ko) * 2017-05-23 2022-01-04 삼성전자주식회사 스토리지 장치 및 상기 스토리지 장치의 동작 방법
TWI628660B (zh) * 2017-09-19 2018-07-01 群聯電子股份有限公司 解碼方法、記憶體控制電路單元以及記憶體儲存裝置
US10824504B2 (en) * 2018-04-16 2020-11-03 International Business Machines Corporation Common high and low random bit error correction logic
US10877835B2 (en) 2018-07-19 2020-12-29 Micron Technology, Inc. Write buffer management
US10901839B2 (en) 2018-09-26 2021-01-26 International Business Machines Corporation Common high and low random bit error correction logic
US11024351B1 (en) * 2020-09-15 2021-06-01 Winbond Electronics Corp. Memory device and operating method for controlling non-volatile memory

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8370710B2 (en) 2008-09-19 2013-02-05 Samsung Electronics Co., Ltd. Non-volatile memory devices, systems, and data processing methods thereof
US8438455B2 (en) 2008-12-31 2013-05-07 Intel Corporation Error correction in a solid state disk
US8516354B2 (en) 2009-12-08 2013-08-20 Silicon Motion Inc. Method for reducing uncorrectable errors of a memory device regarding error correction code, and associated memory device and controller thereof
US8612830B2 (en) 2007-11-21 2013-12-17 Hitachi, Ltd. Method of correcting error of flash memory device, and, flash memory device and storage system using the same

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5241548A (en) * 1991-05-23 1993-08-31 Motorola, Inc. Method for error correction of a transmitted data word
KR20070094370A (ko) 2006-03-17 2007-09-20 삼성전자주식회사 불휘발성 반도체 메모리 장치의 프로그램 복원방법
US7707481B2 (en) 2006-05-16 2010-04-27 Pitney Bowes Inc. System and method for efficient uncorrectable error detection in flash memory
US20090292971A1 (en) 2008-05-21 2009-11-26 Chun Fung Man Data recovery techniques
KR101539002B1 (ko) 2009-01-02 2015-07-24 삼성전자주식회사 1-비트용 에러 정정 장치 및 그 방법
KR20100096616A (ko) 2009-02-25 2010-09-02 삼성전자주식회사 저항성 메모리 장치 및 저항성 메모리 장치에서의 입출력 제어 방법
KR20100104840A (ko) 2009-03-19 2010-09-29 삼성전자주식회사 셀 패턴에 따라 추가 ecc가 가능한 반도체 메모리 장치,상기 장치를 포함하는 전자 시스템
KR101578511B1 (ko) 2009-05-20 2015-12-18 삼성전자주식회사 리드 전압 설정 방법
KR101603099B1 (ko) 2009-10-01 2016-03-28 삼성전자주식회사 불안정 메모리 셀 산포를 검출하는 메모리 시스템 및 상기 불안정 메모리 셀 산포 검출방법
US8417899B2 (en) 2010-01-21 2013-04-09 Oracle America, Inc. System and method for controlling access to shared storage device
US8392810B2 (en) 2010-01-25 2013-03-05 Qualcomm Incorporated Majority vote error correction
KR101623119B1 (ko) 2010-02-01 2016-05-20 삼성전자주식회사 솔리드 스테이트 드라이브의 에러 제어 방법
US8935595B2 (en) 2010-03-12 2015-01-13 Lsi Corporation LDPC erasure decoding for flash memories
US8892981B2 (en) 2010-09-30 2014-11-18 Apple Inc. Data recovery using outer codewords stored in volatile memory

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8612830B2 (en) 2007-11-21 2013-12-17 Hitachi, Ltd. Method of correcting error of flash memory device, and, flash memory device and storage system using the same
US8370710B2 (en) 2008-09-19 2013-02-05 Samsung Electronics Co., Ltd. Non-volatile memory devices, systems, and data processing methods thereof
US8438455B2 (en) 2008-12-31 2013-05-07 Intel Corporation Error correction in a solid state disk
US8516354B2 (en) 2009-12-08 2013-08-20 Silicon Motion Inc. Method for reducing uncorrectable errors of a memory device regarding error correction code, and associated memory device and controller thereof
US8631310B2 (en) 2009-12-08 2014-01-14 Silicon Motion Inc. Method for reducing uncorrectable errors of a memory device regarding error correction code, and associated memory device and controller thereof

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102216006B1 (ko) * 2020-07-01 2021-02-16 주식회사 파두 메모리 컨트롤러 및 이를 포함하는 스토리지 디바이스
US11348658B2 (en) 2020-07-01 2022-05-31 FADU Inc. Memory controller and storage device including the same

Also Published As

Publication number Publication date
US9213598B2 (en) 2015-12-15
US20140237319A1 (en) 2014-08-21
KR20140103756A (ko) 2014-08-27

Similar Documents

Publication Publication Date Title
KR102050896B1 (ko) 메모리 컨트롤러 및 그것의 동작 방법
KR102025193B1 (ko) 메모리 컨트롤러 및 그것의 동작 방법, 메모리 컨트롤러를 포함하는 메모리 시스템
KR102290974B1 (ko) 불휘발성 메모리 장치, 메모리 컨트롤러 및 그것들을 포함하는 불휘발성 메모리 시스템의 동작 방법
US8705279B2 (en) Nonvolatile memory device and reading method thereof
KR102200493B1 (ko) 3차원 메모리 장치 및 그것을 포함하는 저장 장치
CN107025923B (zh) 半导体存储器装置及其操作方法
KR102452994B1 (ko) 반도체 메모리 장치 및 그 동작 방법
KR20160087430A (ko) 불휘발성 메모리 시스템 및 그것의 동작 방법
KR20160136675A (ko) 반도체 메모리 장치 및 그것의 동작 방법
KR102178141B1 (ko) 비휘발성 메모리 장치의 동작 방법
KR20180023190A (ko) 메모리 시스템 및 메모리 시스템의 동작 방법
KR102634799B1 (ko) 반도체 메모리 장치 및 이의 동작 방법
KR20110099570A (ko) 불휘발성 메모리 장치, 그것의 프로그램 방법, 그리고 그것을 포함하는 메모리 시스템
KR20180027660A (ko) 메모리 시스템 및 메모리 시스템의 동작 방법
US9836216B2 (en) Semiconductor memory device and operating method thereof
KR20220055717A (ko) 메모리 시스템 및 메모리 시스템의 동작 방법
KR20180028312A (ko) 반도체 메모리 장치 및 그 프로그램 방법
KR20200020269A (ko) 반도체 메모리 장치 및 그 동작 방법
KR20160089768A (ko) 반도체 메모리 장치 및 그것의 동작 방법
US20130301340A1 (en) Erasing method of resistive random access memory
KR20150034552A (ko) 반도체 메모리 장치 및 그것의 동작 방법
US8310869B2 (en) Nonvolatile memory device, system, and programming method
US20160172039A1 (en) Semiconductor memory device and method of operating the same
KR102106959B1 (ko) 멀티 레벨 셀 비휘발성 메모리 시스템
CN113806254B (zh) 存储器系统、存储器控制器及存储器系统的操作方法

Legal Events

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