KR101574208B1 - 불휘발성 메모리 장치, 그것을 포함하는 메모리 시스템, 그리고 그것의 동작 방법 - Google Patents

불휘발성 메모리 장치, 그것을 포함하는 메모리 시스템, 그리고 그것의 동작 방법 Download PDF

Info

Publication number
KR101574208B1
KR101574208B1 KR1020090027718A KR20090027718A KR101574208B1 KR 101574208 B1 KR101574208 B1 KR 101574208B1 KR 1020090027718 A KR1020090027718 A KR 1020090027718A KR 20090027718 A KR20090027718 A KR 20090027718A KR 101574208 B1 KR101574208 B1 KR 101574208B1
Authority
KR
South Korea
Prior art keywords
range
read
bits
read data
erase
Prior art date
Application number
KR1020090027718A
Other languages
English (en)
Other versions
KR20100109223A (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 KR1020090027718A priority Critical patent/KR101574208B1/ko
Priority to US12/656,762 priority patent/US8427870B2/en
Publication of KR20100109223A publication Critical patent/KR20100109223A/ko
Application granted granted Critical
Publication of KR101574208B1 publication Critical patent/KR101574208B1/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/10Programming or data input circuits
    • G11C16/14Circuits for erasing electrically, e.g. erase voltage switching circuits
    • 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
    • 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/08Address circuits; Decoders; Word-line control circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits
    • G11C16/14Circuits for erasing electrically, e.g. erase voltage switching circuits
    • G11C16/16Circuits for erasing electrically, e.g. erase voltage switching circuits for erasing blocks, e.g. arrays, words, groups
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • G11C16/3404Convergence or correction of memory cell threshold voltages; Repair or recovery of overerased or overprogrammed cells
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • 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
    • G11C2029/0411Online error correction

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

불휘발성 메모리 장치, 그것을 포함하는 메모리 시스템, 그리고 그것의 동작 방법{NONVOLATILE MEMORY DEVICE, MEMORY SYSTEM INCLUDING THE SAME AND OPERATING METHOD THEREOF}
본 발명은 반도체 메모리 장치에 관한 것으로, 더 상세하게는 불휘발성 메모리 장치, 그것을 포함하는 메모리 시스템, 그리고 그것의 동작 방법에 관한 것이다.
반도체 메모리 장치(semiconductor memory device)는 데이터를 저장해 두고 필요할 때 꺼내어 읽어볼 수 있는 기억장치이다. 반도체 메모리 장치는 크게 휘발성 메모리 장치(Volatile memory device)와 불휘발성 메모리 장치(Nonvolatile memory device)로 구분된다.
휘발성 메모리 장치는 전원 공급이 차단되면 저장하고 있던 데이터가 소멸되는 메모리 장치이다. 휘발성 메모리 장치에는 SRAM, DRAM, SDRAM 등이 있다. 불휘발성 메모리 장치는 전원 공급이 차단되어도 저장하고 있던 데이터가 소멸하지 않는 메모리 장치이다. 불휘발성 메모리 장치에는 ROM, PROM, EPROM, EEPROM, 플래시 메모리 장치, PRAM, MRAM, RRAM, FRAM 등이 있다. 플래시 메모리 장치는 크게 노어 타입과 낸드 타입으로 구분된다.
본 발명의 목적은 향상된 에러 정정 기능을 갖는 불휘발성 메모리 장치를 제공하는 데에 있다.
본 발명의 실시 예에 따른 불휘발성 메모리 장치의 동작 방법은 읽기 레벨을 이용하여 읽기 데이터를 읽고; 상기 읽기 데이터를 소거 디코딩하기 위한 논리 값들의 범위를 설정하고; 상기 읽기 데이터 중 상기 설정된 논리 값들의 범위에 대응하는 비트들을 소거 비트들로 설정하고; 그리고 소거 디코딩을 수행하는 것을 포함한다.
실시 예로서, 상기 논리 값들은 상기 메모리 셀들의 문턱 전압들을 나타낸다.
실시 예로서, 상기 소거 디코딩을 수행하기 위한 논리 값들의 범위는 상기 읽기 레벨 주변으로 설정된다.
실시 예로서, 상기 소거 디코딩을 수행하기 위한 논리 값의 범위는 미리 설정된 소거 비트의 수를 이용하여 설정되고, 상기 미리 설정된 소거 비트의 수는, 디코딩된 비트 에러율(decoded Bit Error Rate)이 특정값 이하가 될 때의 소거 비트의 수이다.
실시 예로서, 상기 소거 디코딩을 수행하기 위한 논리 값의 범위를 설정하는 것은 상기 읽기 데이터의 소거 비트의 수를 상기 미리 설정된 소거 비트의 수로부터 임계값 이내로 설정하는 것을 포함한다.
실시 예로서, 상기 소거 디코딩을 수행하기 위한 논리 값의 범위는 미리 설정된 논리 값의 범위를 이용하여 설정되고, 상기 미리 설정된 논리 값의 범위는, 디코딩된 비트 에러율(decoded Bit Error Rate)이 특정값 이하가 될 때의 논리 값의 범위이다.
실시 예로서, 상기 소거 디코딩을 수행하는 것은 상기 소거 디코딩을 수행하기 위한 논리 값들의 범위를 참조하여, 상기 읽기 데이터에 대응하는 적어도 두 개의 치환값들을 생성하는 것을 포함한다.
삭제
본 발명의 실시 예에 따른 불휘발성 메모리 장치는 메모리 셀 어레이; 상기 메모리 셀 어레이의 메모리 셀들의 제 1 및 제 2 논리 상태들을 판별하기 위한 읽기 레벨을 이용하여, 상기 메모리 셀들로부터 읽기 데이터를 읽도록 구성되는 읽기 쓰기 회로; 그리고 상기 읽기 레벨을 검출하고, 상기 읽기 데이터를 소거 디코딩하도록 구성되는 제어 로직을 포함하고, 상기 제어 로직은, 상기 소거 디코딩을 수행하기 위한 논리 값들의 범위를 설정하도록 구성되고, 그리고 상기 읽기 데이터 중 상기 설정된 논리 값들의 범위에 대응하는 비트들을 소거 비트들로 설정하도록 구성된다.
본 발명의 실시 예에 따른 메모리 시스템은 메모리 셀들의 제 1 및 제 2 논리 상태들을 판별하기 위한 읽기 레벨을 이용하여, 상기 메모리 셀들로부터 읽기 데이터를 읽도록 구성되는 불휘발성 메모리 장치; 그리고 상기 읽기 레벨을 검출하 도록 상기 불휘발성 메모리 장치를 제어하고, 그리고 상기 읽기 데이터를 소거 디코딩하도록 구성되는 컨트롤러를 포함하고, 상기 컨트롤러는, 상기 소거 디코딩을 수행하기 위한 논리 값들의 범위를 설정하도록 구성되고, 그리고 상기 읽기 데이터 중 상기 설정된 논리 값들의 범위에 대응하는 비트들을 소거 비트들로 설정하도록 구성된다.
실시 예로서, 상기 불휘발성 메모리 장치 및 상기 컨트롤러는 반도체 드라이브(SSD, Solid State Drive)를 형성한다.
본 발명에 따르면, 디코딩된 비트 에러율(decoded Bit Error Rate)이 최소가 될 때의 소거 비트의 수에 따라 소거 디코딩이 수행된다. 따라서, 불휘발성 메모리 장치의 에러 정정 기능이 향상된다.
이하에서, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 본 발명의 기술적 사상을 용이하게 실시할 수 있을 정도로 상세히 설명하기 위하여, 본 발명의 실시 예를 첨부된 도면을 참조하여 설명하기로 한다.
도 1은 본 발명의 제 1 실시 예에 따른 메모리 시스템(10)을 보여주는 블록도이다. 도 1을 참조하면, 본 발명의 제 1 실시 예에 따른 메모리 시스템(10)은 컨트롤러(100) 및 불휘발성 메모리 장치(200)를 포함한다.
컨트롤러(100)는 호스트(Host) 및 불휘발성 메모리 장치(200)에 연결된다. 컨트롤러(100)는 불휘발성 메모리 장치(200)로부터 읽은 데이터를 호스트(Host)에 전달하고, 호스트(Host)로부터 전달되는 데이터를 불휘발성 메모리 장치(200)에 저장하도록 구성된다.
컨트롤러(100)는 램, 프로세싱 유닛, 호스트 인터페이스, 그리고 메모리 인터페이스와 같은 잘 알려진 구성 요소들을 포함할 것이다. 램은 프로세싱 유닛의 동작 메모리로서 이용될 것이다. 프로세싱 유닛은 컨트롤러(100)의 제반 동작을 제어할 것이다.
호스트 인터페이스는 호스트(Host) 및 컨트롤러(100) 사이의 데이터 교환을 수행하기 위한 프로토콜을 포함할 것이다. 예시적으로, 컨트롤러(100)는 USB, MMC, PCI-E, ATA(Advanced Technology Attachment), Serial-ATA, Parallel-ATA, SCSI, ESDI, 그리고 IDE(Integrated Drive Electronics) 등과 같은 다양한 인터페이스 프로토콜들 중 하나를 통해 외부(호스트)와 통신하도록 구성될 것이다. 메모리 인터페이스는 불휘발성 메모리 장치(200)와 인터페이싱할 것이다.
불휘발성 메모리 장치(200)는 데이터를 저장하기 위한 메모리 셀 어레이, 메모리 셀 어레이에 데이터를 기입 및 독출하기 위한 읽기 쓰기 회로, 외부로부터 전달되는 어드레스를 디코딩하여 읽기 쓰기 회로에 전달하는 어드레스 디코더, 불휘발성 메모리 장치(200)의 제반 동작을 제어하기 위한 제어 로직 등을 포함할 것이다. 본 발명의 실시 예에 따른 불휘발성 메모리 장치(200)는 도 2를 참조하여 더 상세하게 설명된다.
컨트롤러(100) 및 불휘발성 메모리 장치(200)는 하나의 반도체 장치로 집적될 수 있다. 예시적으로, 컨트롤러(100) 및 불휘발성 메모리 장치(200)는 하나의 반도체 장치로 집적되어, 메모리 카드를 구성할 것이다. 예를 들면, 컨트롤러(100) 및 불휘발성 메모리 장치(200)는 하나의 반도체 장치로 집적되어 PC 카드(PCMCIA), 컴팩트 플래시 카드(CF), 스마트 미디어 카드(SM, SMC), 메모리 스틱, 멀티미디어 카드(MMC, RS-MMC, MMCmicro), SD 카드(SD, miniSD, microSD), 유니버설 플래시 기억장치(UFS) 등을 구성할 것이다.
다른 예로서, 컨트롤러(100) 및 불휘발성 메모리 장치(200)는 하나의 반도체 장치로 집적되어 반도체 드라이브(SSD, Solid State Drive)를 구성할 것이다. 반도체 드라이브(SSD)는 반도체 메모리에 데이터를 저장하도록 구성되는 장치를 포함할 것이다. 메모리 시스템(10)이 반도체 드라이브(SSD)로 이용되는 경우, 메모리 시스템(10)에 연결된 호스트(Host)의 동작 속도는 획기적으로 개선될 것이다.
다른 예로서, 메모리 시스템(10)은 컴퓨터, 휴대용 컴퓨터, UMPC, 워크스테이션, 넷북(net-book), PDA, 포터블(portable) 컴퓨터, 웹 타블렛(web tablet), 무선 전화기(wireless phone), 모바일 폰(mobile phone), 스마트폰(smart phone), 디지털 카메라(digital camera), 디지털 음성 녹음기(digital audio recorder), 디지털 음성 재생기(digital audio player), 디지털 영상 녹화기(digital picture recorder), 디지털 영상 재생기(digital picture player), 디지털 동영상 녹화기(digital video recorder), 디지털 동영상 재생기(digital video player), 정보를 무선 환경에서 송수신할 수 있는 장치, 홈 네트워크를 구성하는 다양한 전자 장치들 중 하나, 컴퓨터 네트워크를 구성하는 다양한 전자 장치들 중 하나, 텔레매틱스 네트워크를 구성하는 다양한 전자 장치들 중 하나, 또는 반도체 드라이브(SSD, Solid State Drive) 또는 메모리 카드와 같은 컴퓨팅 시스템을 구성하는 다양한 구성 요소들 중 하나에 적용될 것이다.
다른 예로서, 불휘발성 메모리 장치(200) 또는 메모리 시스템(10)은 다양한 형태들의 패키지로 실장 될 수 있다. 예를 들면, 불휘발성 메모리 장치(200) 또는 메모리 시스템(10)은 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) 등과 같은 방식으로 패키지화되어 실장될 것이다.
도 2는 도 1의 불휘발성 메모리 장치(200)를 보여주는 블록도이다. 도 2를 참조하면, 본 발명의 실시 예에 따른 불휘발성 메모리 장치(200)는 메모리 셀 어레이(210), 어드레스 디코더(220), 읽기 쓰기 회로(230), 저장 회로(240), 그리고 제어 로직(250)을 포함한다.
메모리 셀 어레이(210)는 워드 라인들(WL)을 통해 어드레스 디코더(220)에 연결되고, 비트 라인들(BL)을 통해 읽기 쓰기 회로(230)에 연결된다. 메모리 셀 어레이(210)는 복수의 메모리 셀들을 포함한다. 예시적으로, 메모리 셀들의 행들은 워드 라인들(WL)에 연결되고, 메모리 셀들의 열들은 비트 라인들(BL)에 연결될 것이다. 예시적으로, 메모리 셀들은 셀 당 하나 또는 그 이상의 비트를 저장할 수 있도록 구성될 것이다.
어드레스 디코더(220)는 워드 라인들(WL)을 통해 메모리 셀 어레이(210)에 연결된다. 어드레스 디코더(220)는 제어 로직(250)의 제어에 응답하여 동작한다. 어드레스 디코더(220)는 외부로부터 어드레스(ADDR)를 전달받는다. 예시적으로, 어드레스(ADDR)는 도 1의 컨트롤러(100)로부터 전달될 것이다.
어드레스 디코더(220)는 전달된 어드레스(ADDR) 중 행 어드레스를 디코딩하여 워드 라인들(WL)을 선택한다. 어드레스 디코더(220)는 전달된 어드레스(ADDR) 중 열 어드레스를 디코딩하여, 읽기 쓰기 회로(230)에 전달한다. 예시적으로, 어드레스 디코더(220)는 행 디코더, 열 디코더, 어드레스 버퍼 등과 같이 잘 알려진 구성 요소들을 포함할 것이다.
읽기 쓰기 회로(230)는 비트 라인들(BL)을 통해 메모리 셀 어레이(210)에 연결되고, 데이터 라인들(DL)을 통해 저장 회로(240)에 연결된다. 읽기 쓰기 회로(230)는 제어 로직(250)의 제어에 응답하여 동작한다. 읽기 쓰기 회로(230)는 어드레스 디코더(220)로부터 전달되는 디코딩된 열 어드레스에 응답하여 비트 라인들(BL)을 선택한다.
예시적으로, 읽기 쓰기 회로(230)는 저장 회로(240)로부터 전달되는 데이터를 메모리 셀 어레이(210)에 저장할 것이다. 다른 예로서, 읽기 쓰기 회로(230)는 메모리 셀 어레이(210)로부터 읽어지는 데이터를 저장 회로(240)에 전달할 것이다. 다른 예로서, 읽기 쓰기 회로(230)는 메모리 셀 어레이(210)의 제 1 저장 영역으로부터 읽어지는 데이터를, 메모리 셀 어레이(210)의 제 2 저장 영역에 저장할 것이다. 예를 들면, 읽기 쓰기 회로(230)는 카피-백(copy-back) 동작을 수행할 것이다.
예시적으로, 읽기 쓰기 회로(230)는 페이지 버퍼, 열 선택 회로 등과 같이 잘 알려진 구성 요소들을 포함할 것이다. 다른 예로서, 읽기 쓰기 회로(230)는 감지 증폭기, 쓰기 드라이버, 열 선택 회로 등과 같이 잘 알려진 구성 요소들을 포함할 것이다.
저장 회로(240)는 데이터 라인들(DL)을 통해 읽기 쓰기 회로(230)에 연결된다. 저장 회로(240)는 제어 로직(250)의 제어에 응답하여 동작한다. 저장 회로(240)는 외부와 데이터(DATA)를 교환한다. 예시적으로, 저장 회로(240)는 도 1의 컨트롤러(100)와 데이터를 교환할 것이다. 외부로부터 전달되는 데이터(DATA)는 데이터 라인들(DL)을 통해 읽기 쓰기 회로(230)에 전달될 것이다. 읽기 쓰기 회로로부터 전달되는 데이터(DATA)는 외부로 출력될 것이다.
제어 로직(250)은 어드레스 디코더(220), 읽기 쓰기 회로(230), 그리고 저장 회로(240)에 연결된다. 제어 로직(250)은 플래시 메모리 장치(200)의 제반 동작을 제어한다. 제어 로직(250)은 외부로부터 전달되는 제어 신호(CTRL)에 응답하여 동작한다. 예시적으로, 제어 신호(CTRL)는 도 1의 컨트롤러(100)로부터 전달될 것이다.
제어 로직(250)은 에러 정정부(251)를 포함한다. 에러 정정부(251)는 저장 회로(240)에 저장되어 있는 데이터의 에러를 정정하도록 구성된다. 예시적으로, 에 러 정정부(251)는 저장 회로(240)에 저장되어 있는 읽기 데이터의 에러를 정정하도록 구성될 것이다. 또한, 에러 정정부(251)는 저장 회로(240)에 저장되어 있는 데이터를 소거 디코딩(erasure decoding)하도록 구성될 것이다. 예시적으로, 에러 정정부(251)는 저장 회로(240)에 저장되어 있는 읽기 데이터를 소거 디코딩하도록 구성될 것이다. 예시적으로, 저장 회로(240)는 제어 로직(250)과 별도의 기능 블록으로서 제공될 것이다. 즉, 저장 회로(240)는 제어 로직(250) 외부에 위치할 것이다. 다른 예로서, 저장 회로(240)는 제어 로직(250)의 구성 요소로서 제공될 것이다. 즉, 저장 회로(240)는 제어 로직(250) 내부에 위치할 것이다. 에러 정정부(251)를 포함하는 제어 로직(250)의 동작은 도 3 내지 11을 참조하여 더 상세하게 설명된다.
도 2에서, 에러 정정부(251)는 제어 로직(250)의 구성 요소인 것으로 도시되어 있다. 그러나, 에러 정정부(251)는 제어 로직(250)의 구성 요소인 것으로 한정되지 않는다. 예시적으로, 에러 정정부(251)는 제어 로직(250)과 별도의 기능 블록을 형성할 수 있음이 이해될 것이다.
예시적으로, 에러 정정부(251)는 디지털 회로, 아날로그 회로, 또는 디지털 및 아날로그 회로들이 결합된 형태의 하드 웨어로 구현될 것이다. 다른 예로서, 에러 정정부(251)는 제어 로직(250)에서 구동되는 소프트 웨어의 형태로 구현될 것이다. 다른 예로서, 에러 정정부(251)는 하드 웨어 및 소프트 웨어가 조합된 형태로 구현될 수 있음이 이해될 것이다.
도 3은 도 2의 메모리 셀 어레이(210)의 메모리 셀들의 논리 값의 산포를 보여주는 다이어그램이다. 도 3에서, 가로 축은 논리 값을 나타내며, 세로 축은 메모리 셀들의 수를 나타낸다. 논리 값은 메모리 셀들의 논리 상태를 판별하기 위한 값일 것이다. 예를 들면, 특정 논리 상태로 프로그램되는 메모리 셀들은, 해당 논리 상태에 대응하는 논리 값을 갖도록 프로그램될 것이다. 도 3에서, 메모리 셀들은 제 1 논리 상태(P1) 및 제 2 논리 상태(P2)로 프로그램되는 것으로 도시되어 있다. 그러나, 본 발명의 실시 예에 따른 불휘발성 메모리 장치(200)는 제 1 논리 상태(P1) 및 제 2 논리 상태(P2)로 프로그램되는 것으로 한정되지 않는다.
예시적으로, 불휘발성 메모리 장치(200)가 EPROM, EEPROM, 플래시 메모리 장치 등과 같은 불휘발성 메모리 장치들 중 하나를 포함하면, 논리 값은 메모리 셀들의 문턱 전압을 나타낼 것이다. 다른 예로서, 불휘발성 메모리 장치(200)가 PRAM, MRAM, RRAM, FRAM 등과 같은 가변 저항 메모리 장치들 중 하나를 포함하면, 논리 값은 메모리 셀들의 저항값을 나타낼 것이다. 간결한 설명을 위하여, 논리 값은 문턱 전압(V)인 것으로 가정한다. 그러나, 본 발명의 실시 예에 따른 불휘발성 메모리 장치(200)의 메모리 셀들의 논리 값은 문턱 전압으로 한정되지 않음이 이해될 것이다.
예시적으로, 제 1 및 제 2 논리 상태들(P1, P2)을 판별하기 위하여, 전압(V1)에 대응하는 논리 값이 이용되는 것으로 가정하자. 즉, 메모리 셀들의 읽기 동작 시에, 전압(V1)에 대응하는 논리 값이 이용되는 것으로 가정하자. 예를 들면, 전압(V1)은 읽기 전압일 것이다.
도 3을 참조하면, 제 1 논리 상태(P1)로 프로그램된 메모리 셀들 중 일부(B) 는 전압(V1)보다 높은 논리 값(즉, 문턱 전압)을 갖는다. 읽기 동작 시에, 해당 메모리 셀들(B)은 논리 상태(P2)를 갖는 것으로 판별될 것이다. 즉, 메모리 셀들(B)은 읽기 에러를 유발할 것이다. 제 2 논리 상태(P2)로 프로그램된 메모리 셀들 중 일부(A)는 전압(V1)보다 낮은 논리 값(즉, 문턱 전압)을 갖는다. 읽기 동작 시에, 해당 메모리 셀들(A)은 논리 상태(P1)를 갖는 것으로 판별될 것이다. 즉, 메모리 셀들(A)은 읽기 에러를 유발할 것이다.
도 3에 도시된 바와 같이, 제 1 및 제 2 논리 상태들(P1, P2)로 프로그램된 메모리 셀들의 논리 값의 산포가 겹치면(overlap), 겹치는 영역에서 읽기 에러가 발생될 것이다. 읽기 에러가 에러 정정부(251, 도 2 참조)의 에러 정정 범위 이하이면, 에러 정정부(251)에 의해 에러가 정정될 것이다. 읽기 에러가 에러 정정부(251)의 에러 정정 범위보다 많으면, 에러 정정부(251)에 의해 에러가 정정되지 않을 것이다.
에러 정정부(251)에 의해 정정될 수 있는 에러의 범위를 확장하기 위하여, 본 발명의 실시 예에 따른 불휘발성 메모리 장치(200)는 소거 디코딩을 수행한다. 소거 디코딩은 에러 정정부(251)에 의해 수행될 것이다.
도 4는 본 발명의 실시 예에 따른 불휘발성 메모리 장치(200)의 소거 디코딩 동작을 설명하기 위한 다이어그램이다. 도 2 및 4를 참조하면, 부호어(codeword, c)가 메모리 셀 어레이(210)에 프로그램된다. 예시적으로, 프로그램되는 부호어(c)는 "1010001" 인 것으로 도시되어 있다.
읽기 동작 시에, 메모리 셀 어레이(210)로부터 수신값(r)이 읽어진다. 예시 적으로, 읽어진 수신값(r)는 "1010010" 인 것으로 도시되어 있다. 즉, 읽기 동작 시에, 수신값의 우측 2 비트에서 읽기 에러가 발생한 것으로 가정한다.
에러가 발생된 우측 2 비트를 소거 비트로 설정하는 것이 가능하면, 에러 정정부(251)는 수신값(r)의 소거 비트들을 제 1 비트들로 치환하여, 치환값(r0)을 생성한다. 예시적으로, 제 1 비트들은 "00" 인 것으로 도시되어 있다. 에러 정정부(251)는 수신값(r)의 에러 비트들을 제 2 비트들로 치환하여, 치환값(r1)을 생성한다. 제 2 비트들은 제 1 비트들과 상보적인 값을 가질 수 있다. 예시적으로, 제 2 비트들은 "11" 인 것으로 도시되어 있다.
이후에, 에러 정정부(251)는 치환값(r0)에 대해 에러 정정 동작을 수행하여, 결과값(c0)을 생성한다. 예시적으로, 에러 정정 동작을 통해, 치환값(r0)의 제 1 비트들은 "01" 로 변환된 것으로 도시되어 있다. 에러 정정부(251)는 치환값(r1)에 대해 에러 정정 동작을 수행하여, 결과값(c1)을 생성한다. 예시적으로, 에러 정정 동작을 통해, 치환값(r1)의 제 2 비트들은 "01"로 변환된 것으로 도시되어 있다.
에러 정정부(251)는, 에러 정정된 결과값들(c0, c1) 중 메모리 셀 어레이(210)로부터 읽어진 수신값(r)과 더 짧은 해밍 거리(Hamming distance)를 갖는 결과값을 최종 결과값으로 선택한다. 예시적으로, 에러 정정된 결과값들(c0, c1) 및 읽어진 수신값(r)은 동일한 것으로 도시되어 있다.
상술한 바와 같이, 읽기 에러가 발생된 위치가 식별되면, 해당 에러 비트들을 소거 비트로 설정하는 것이 가능하다. 즉, 소거 디코딩이 수행될 수 있다. 소거 디코딩 동작 시에, 위치가 식별된 소거 비트들을 상보적인 제 1 및 제 2 비트들로 치환함으로써, 두 개의 치환값들(r0, r1)이 생성된다. 생성된 치환값들(r0, r1)에 대해 에러 정정 동작이 수행되면, 에러가 정정된 두 개의 결과값들(c0, c1)이 생성된다. 에러가 정정된 결과값들(c0, c1) 및 읽어진 수신값(r) 사이의 해밍 거리를 비교함으로써, 최종 결과값이 선택된다. 즉, 소거 디코딩 동작이 수행되면, 에러 정정부(251)를 이용하여 읽기 에러를 정정하는 것에 더하여, 해밍 거리를 비교함으로써 읽기 에러를 정정하는 것이 가능하다. 따라서, 에러 정정부(251)의 에러 정정 범위보다 많은 에러를 정정하는 것이 가능함이 이해될 것이다.
도 4에서, 소거 비트들은 상보적인 비트들 "00" 및 "11"로 치환되는 것으로 도시되어 있다. 그러나, 소거 비트들은 "00" 및 "11"로 치환되는 것으로 한정되지 않음이 이해될 것이다. 예시적으로, 소거 비트들은 상보적인 비트들 "10" 및 "01" 로 치환될 수 있음이 이해될 것이다.
도 5는 본 발명의 실시 예에 따른 소거 디코딩 동작의 효과를 설명하기 위한 다이어그램이다. 도 5에서, 가로 축은 메모리 셀 어레이(210, 도 2 참조)로부터 읽어진 수신값의 비트 에러율(raw BER, Bit Error Rate, 이하에서, 비트 에러율이라 칭함)을 나타낸다. 예시적으로, 비트 에러율(raw BER)은 로그 스케일(log scale)로 나타내어진다. 예시적으로, 가로축 방향으로 진행할수록, 비트 에러율(raw BER)은 감소하는 것으로 도시되어 있다.
도 5에서, 세로 축은 디코딩된 비트 에러율(decoded BER)을 나타낸다. 예시적으로, 디코딩된 비트 에러율(decoded BER)은 에러 정정부(251)에 의해 에러 정정된 부호어의 비트 에러율을 포함할 것이다. 예시적으로, 디코딩된 비트 에러율(decoded BER)은 에러 정정부(251)에 의해 에러 정정 및 소거 디코딩되는 부호어의 비트 에러율을 포함할 것이다. 예시적으로, 디코딩된 비트 에러율(decoded BER)은 로그 스케일(log scale)로 나타내어진다. 예시적으로, 세로축 방향으로 진행할수록, 디코딩된 비트 에러율(decoded BER)은 증가하는 것으로 도시되어 있다.
곡선(C)은 에러 정정부(251)에 의한 에러 정정 동작이 수행된 때의 비트 에러율(raw BER) 및 디코딩된 비트 에러율(decoded BER)을 나타낸다. 예시적으로, 곡선(C)은, 에러 정정부(251)가 n 비트(n은 양의 정수) 정정 BCH (Bose Chaudhuri Hocquenghem) 코드를 이용하여 에러 정정 동작을 수행한 때의 비트 에러율(raw BER) 및 디코딩된 비트 에러율(decoded BER)을 나타낸다.
곡선(D)은 에러 정정부(251)에 의한 에러 정정 동작이 수행된 때의 비트 에러율(raw BER) 및 디코딩된 비트 에러율(decoded BER)을 나타낸다. 예시적으로, 곡선(D)은, 에러 정정부(251)가 m 비트(m은 n 보다 큰 양의 정수) 정정 BCH (Bose Chaudhuri Hocquenghem) 코드를 이용하여 에러 정정 동작을 수행한 때의 비트 에러율(raw BER) 및 디코딩된 비트 에러율(decoded BER)을 나타낸다.
곡선(E)은 에러 정정부(251)에 의한 에러 정정 동작 및 소거 디코딩 동작이 수행된 때의, 비트 에러율(raw BER) 및 디코딩된 비트 에러율(decoded BER)을 나타 낸다. 예시적으로, 곡선(E)은, 에러 정정부(251)가 n 비트 정정 BCH (Bose Chaudhuri Hocquenghem) 코드를 이용하여 에러 정정 동작 및 소거 디코딩 동작을 수행한 때의 비트 에러율(raw BER) 및 디코딩된 비트 에러율(decoded BER)을 나타낸다.
동일한 비트 에러율(raw BER)에서, n 비트 정정 BCH 코드를 이용한 에러 정정 동작 및 소거 디코딩 동작이 수행된 때의 디코딩된 비트 에러율(decoded BER)은, n 비트 정정 BCH 코드를 이용한 에러 정정 동작이 수행된 때의 디코딩된 비트 에러율(decoded BER)보다 낮다. 동일한 비트 에러율(raw BER)에서, n 비트 정정 BCH 코드를 이용한 에러 정정 동작 및 소거 디코딩 동작이 수행된 때의 디코딩된 비트 에러율(decoded BER)은, m 비트 정정 BCH 코드를 이용한 에러 정정 동작이 수행된 때의 디코딩된 비트 에러율(decoded BER)과 유사하게 나타난다.
즉, n 비트 정정 BCH 코드를 이용한 에러 정정 동작 및 소거 디코딩 동작을 수행되면, m 비트 정정 BCH 코드를 이용한 에러 정정 동작이 수행된 때와 유사한 에러 정정 효과가 제공됨이 이해될 것이다.
도 6은 본 발명의 실시 예에 따른 소거 디코딩 동작의 효과를 설명하기 위한 다이어그램이다. 도 6에서, 가로 축은 비트 에러율(raw BER)을 나타낸다. 도 5에 도시된 다이어그램과 달리, 도 6의 다이어그램의 비트 에러율(raw BER)은 로그 스케일로 나타내어지지 않는다. 예시적으로, 가로축 방향으로 진행할수록, 비트 에러율(raw BER)은 감소하는 것으로 도시되어 있다.
도 6에서, 세로 축은 디코딩된 비트 에러율(decoded BER)을 나타낸다. 예시 적으로, 디코딩된 비트 에러율(decoded BER)은 에러 정정부(251)에 의해 에러 정정된 부호어의 비트 에러율을 포함할 것이다. 예시적으로, 디코딩된 비트 에러율(decoded BER)은 에러 정정부(251)에 의해 에러 정정 및 소거 디코딩되는 부호어의 비트 에러율을 포함할 것이다. 예시적으로, 디코딩된 비트 에러율(decoded BER)은 로그 스케일(log scale)로 나타내어진다. 예시적으로, 세로축 방향으로 진행할수록, 비트 디코딩된 비트 에러율(decoded BER)은 증가하는 것으로 도시되어 있다.
도 5를 참조하여 설명된 바와 마찬가지로, 곡선(C)은 n 비트 정정 BCH 코드를 이용하여 에러 정정 동작이 수행된 때의 비트 에러율(raw BER)을 나타낸다. 곡선(E)은 n 비트 정정 BCH 코드를 이용한 에러 정정 동작 및 소거 디코딩 동작이 수행된 때의 디코딩된 비트 에러율(decoded BER)을 나타낸다. 도 5를 참조하여 설명된 바와 마찬가지로, 에러 정정 동작 및 소거 디코딩 동작이 수행된 때의 에러 정정 범위는 에러 정정 동작만이 수행된 때의 에러 정정 범위보다 큰 것으로 나타난다.
도 6을 참조하면, 비트 에러율(raw BER)이 감소할수록, 동일한 비트 에러율(raw BER)에서의 곡선들(C, E)의 디코딩된 비트 에러율(decoded BER)의 비율(C/E)은 증가한다. 즉, 비트 에러율(raw BER)이 낮을수록, 소거 디코딩의 효과가 증가됨이 이해될 것이다.
도 7은 소거 비트의 수에 따른 소거 디코딩의 효과를 설명하기 위한 다이어그램이다. 도 7에서, 가로 축은 소거 디코딩을 위한 소거 비트의 수를 나타낸다. 세로 축은 디코딩된 비트 에러율(decoded BER)을 나타내며, 로그 스케일로 나타내 어진다. 예시적으로, 도 7에서, n 비트 정정 BCH 코드를 이용한 에러 정정 동작 및 소거 디코딩 동작이 수행된 때의 디코딩된 비트 에러율(decoded BER)이 도시되어 있다.
소거 비트의 수가 0인 때의 디코딩된 비트 에러율(decoded BER)은 에러 정정 동작만 수행된 때의 디코딩된 비트 에러율(decoded BER)을 나타낼 것이다. 즉, 해당 디코딩된 비트 에러율(decoded BER)은, 메모리 셀 어레이(210, 도 2 참조)로부터 부호어가 읽어지고, 읽어진 부호어가 n 비트 정정 BCH 코드를 이용하여 경판정(hard decision)된 때의 디코딩된 비트 에러율(decoded BER)을 나타낼 것이다.
소거 비트의 수가 0으로부터 증가할수록, 디코딩된 비트 에러율(decoded BER)은 감소한다. 즉, n 비트 정정 BCH 코드를 이용한 에러 정정 동작 및 소거 디코딩 동작이 수행되면, 에러 정정 효과가 증대된다.
소거 비트의 수가 F1 보다 많아지면, 디코딩된 비트 에러율(decoded BER)은 더 이상 감소하지 않는다. 즉, 소거 비트의 수가 F1 보다 많아지면, 에러 정정 및 소거 디코딩의 효과는 더 이상 향상되지 않는다. 소거 비트의 수가 F1 으로부터 F2 까지의 범위 내의 값일 때, 디코딩된 비트 에러율(decoded BER)은 특정값(BER1) 이하의 값을 갖는다. 그리고, 디코딩된 비트 에러율(decoded BER)의 변독 폭은 상대적으로 작다. 즉, 소거 비트의 수가 F1 으로부터 F2 까지의 범위 내의 값일 때, 에러 정정 및 소거 디코딩의 효과는 유사한 것으로 이해될 수 있을 것이다.
소거 비트의 수가 F2 보다 많아지면, 디코딩된 비트 에러율(decoded BER)은 특정값(BER1) 으로부터 증가한다. 즉, 소거 비트의 수가 F2 보다 많아지면, 에러 정정 및 소거 디코딩의 효과는 감소하는 것으로 나타난다.
도 7에 도시된 바와 같이, 소거 비트의 수가 특정한 범위(예를 들면, F1~F2) 내의 값을 가질 때, 디코딩된 비트 에러율(decoded BER)은 특정값(예를 들면, BER1) 이하이다. 즉, 소거 비트의 수가 특정한 범위(예를 들면, F1~F2) 내의 값을 가질 때, 에러 정정 및 소거 디코딩의 효과는 최대화된다. 본 발명의 실시 예에 따른 불휘발성 메모리 장치(200, 도 2 참조)는 에러 정정 및 소거 디코딩의 효과가 최대화되도록 소거 비트의 수를 설정한다.
예시적으로, 소거 비트의 수가 F1 으로부터 F2 까지의 범위 내의 값일 때, 디코딩된 비트 에러율(decoded BER)이 특정값(예를 들면, BER1) 이하인 것으로 가정하자. 이때, 본 발명의 실시 예에 따른 불휘발성 메모리 장치(200)는 소거 비트의 수를 F1 내지 F2 사이의 값(예를 들면, 중간값)으로 설정할 것이다.
불휘발성 메모리 장치(200)의 열화 등으로 인해 비트 에러율(raw BER)이 변화되면, 디코딩된 비트 에러율(decoded BER)이 특정값(BER1) 이하가 되는 소거 비트의 수의 범위 또한 변화될 수 있을 것이다. 디코딩된 비트 에러율(decoded BER)이 특정값(BER1) 이하가 되는 소거 비트의 수의 범위(F1~F2) 내의 값(예를 들면, 중간값)을 이용하여 소거 디코딩을 수행하면, 디코딩된 비트 에러율(decoded BER)이 특정값(BER1) 이하가 되는 소거 비트의 수의 범위(F1~F2)의 변화에 대응하는 것이 가능할 것이다.
예시적으로, 도 7을 참조하여 설명된 바와 같이, 소거 비트의 수가 F1 내지 F2 중 하나일 때 디코딩된 비트 에러율(decoded BER)이 특정값(BER1) 이하인 것으 로 가정하자. 본 발명의 실시 예에 따른 불휘발성 메모리 장치(200)에서, 소거 비트의 수는 F1 내지 F2 사이의 값(예를 들면, 중간값)으로 설정될 것이다. 이때, 디코딩된 비트 에러율(decoded BER)이 특정값(BER1) 이하가 되는 소거 비트의 수의 범위가 특정 범위 이상 변화될 때까지, 디코딩된 비트 에러율(decoded BER)은 특정값(BER1) 이하일 수 있음이 이해될 것이다. 즉, 본 발명의 실시 예에 따른 불휘발성 메모리 장치(200)는, 디코딩된 비트 에러율(decoded BER)이 특정값(BER1) 이하가 되는 소거 비트의 수의 범위(F1~F2) 사이의 값(예를 들면, 중간값) 을 이용하여 소거 디코딩을 수행함으로써, 비트 에러율(raw BER)의 변화에 대응하는 것이 가능하다.
다른 예로서, 본 발명의 실시 예에 따른 불휘발성 메모리 장치(200)는, 소거 디코딩을 위한 소거 비트의 수들을 테이블화하여 유지할 수 있다. 소거 비트의 수들의 테이블은, 비트 에러율(raw BER)의 변화에 따른 최적의 소거 비트의 수를 저장하도록 구성될 것이다. 예시적으로, 비트 에러율(raw BER)이 제 1 값을 가질 때, 해당 비트 에러율에 대응하는 디코딩된 비트 에러율(decoded BER)이 특정값(예를 들면, BER1) 이하가 되는 소거 비트의 수들의 범위(예를 들면, F1~F2) 또는 범위(예를 들면, F1~F2) 내의 값(예를 들면, 중간값)이, 제 1 소거 비트의 수로서 테이블에 저장될 것이다. 비트 에러율(raw BER)이 제 2 값을 가질 때, 해당 비트 에러율에 대응하는 디코딩된 비트 에러율(decoded BER)이 특정값(예를 들면, BER1') 이하가 되는 소거 비트의 수들의 범위(예를 들면, F1'~F2') 또는 범위(예를 들면, F1'~F2') 내의 값(예를 들면, 중간값)이, 제 2 소거 비트의 수로서 테이블에 저장 될 것이다. 따라서, 본 발명의 실시 예에 따른 불휘발성 메모리 장치(200)는, 비트 에러율(raw BER)의 변화에 따라 소거 비트의 수를 설정하는 것이 가능함이 이해될 것이다.
도 8은 본 발명의 실시 예에 따른 불휘발성 메모리 장치(200)가 소거 비트를 설정하는 방법을 설명하기 위한 다이어그램이다. 도 8에서, 가로 축은 메모리 셀들의 논리 값(예를 들면, 문턱 전압)을 나타내며, 세로 축은 메모리 셀들의 수를 나타낸다. 메모리 셀들은 제 1 논리 상태(P1) 및 제 2 논리 상태(P2)로 프로그램되어 있는 것으로 도시되어 있다. 전압(V1)은 읽기 전압을 나타낸다.
본 발명의 실시 예에 따른 불휘발성 메모리 장치(200)는 읽기 전압(V1)을 참조하여 소거 디코딩을 수행하기 위한 논리 값들의 범위를 설정한다. 예시적으로, 소거 디코딩을 수행하기 위한 논리 값들의 범위는 읽기 전압(V1)을 중심으로 설정될 것이다. 예시적으로, 소거 디코딩을 수행하기 위한 소거 비트의 수는 15 개로 설정된 것으로 가정하자.
우선, 읽기 전압(V1)으로부터 제 1 범위(△V1) 내의 논리 값들에 대응하는 메모리 셀들의 수가 카운트될 것이다. 에러 정정부(251)는 카운트된 메모리 셀들의 수와 미리 설정된 소거 비트의 수를 비교한다.
제 1 범위(△V1) 내의 논리 값들에 대응하는 메모리 셀들의 수와 미리 설정된 소거 비트의 수의 차이가 제 1 오차 범위보다 작으면, 해당 범위(△V1) 내의 논리 값들에 대응하는 메모리 셀들로부터 읽어진 데이터가 소거 비트로 설정될 것이다.
제 1 범위(△V1) 내의 논리 값들에 대응하는 메모리 셀들의 수와 미리 설정된 소거 비트의 수의 차이가 제 1 오차 범위보다 크면, 제 2 범위(△V2) 내의 논리 값들에 대응하는 메모리 셀들의 수가 카운트된다. 제 1 범위(△V1) 내의 논리 값들에 대응하는 메모리 셀들의 수가 미리 설정된 소거 비트의 수보다 크면, 제 2 범위(△V2)는 제 1 범위(△V1) 보다 좁아질 것이다. 제 1 범위(△V1) 내의 논리 값들에 대응하는 메모리 셀들의 수가 미리 설정된 소거 비트의 수보다 작으면, 제 2 범위(△V2)는 제 1 범위(△V1) 보다 넓어질 것이다. 이후에, 에러 정정부(251)는 제 2 범위(△V2) 내의 논리 값들에 대응하는 메모리 셀들의 수와 미리 설정된 소거 비트의 수를 비교할 것이다.
예시적으로, 제 1 범위(△V1) 내의 논리 값들에 대응하는 메모리 셀들의 수가 미리 설정된 소거 비트의 수보다 작은 것으로 가정하자. 이때, 제 2 범위(△V2)는 제 1 범위(△V1) 보다 넓을 것이다. 예시적으로, 제 2 범위(△V2) 내의 논리 값들에 대응하는 메모리 셀들의 수와 미리 설정된 소거 비트의 수의 차이는 제 1 오차 범위보다 작은 것으로 가정하자. 에러 정정부(251)는 제 2 범위(△V2) 내의 논리 값들에 대응하는 메모리 셀들로부터 읽어진 비트들을 소거 비트들로 설정할 것이다. 이후에, 에러 정정부(251)에 의해 소거 디코딩 및 에러 정정 동작이 수행될 것이다.
상술한 바와 같이, 본 발명의 실시 예에 따른 불휘발성 메모리 장치(200)는 읽기 레벨(V1)을 참조하여 소거 디코딩을 위한 논리 값들의 범위를 설정한다. 더 상세하게는, 본 발명의 실시 예에 따른 불휘발성 메모리 장치(200)는 소거 디코딩 을 위한 논리 값들의 범위를 읽기 레벨(V1)을 중심으로 설정한다. 예시적으로, 제 1 및 제 2 논리 상태들(P1, P2) 사이에서, 대응하는 메모리 셀들의 수가 가장 적은 논리 값이 읽기 레벨(V1)로 설정될 것이다.
도 8에 도시된 바와 같이, 제 1 및 제 2 논리 상태들(P1, P2)은 읽기 레벨(V1)을 중심으로 판별된다. 즉, 읽기 레벨(V1)과 가까운 논리 값들에 대응하는 메모리 셀들에서 읽기 오류가 발생할 확률이, 읽기 레벨(V1)과 차이가 큰 논리 값들에 대응하는 메모리 셀들에서 읽기 오류가 발생할 확률이 더 높을 것이다. 도 8을 참조하여 설명된 바와 같이, 읽기 레벨(V1)을 참조하여 소거 디코딩을 위한 논리 값들의 범위가 설정되면, 읽기 오류가 발생될 확률이 상대적으로 높은 메모리 셀들로부터 읽어지는 비트들이 소거 비트들로 설정될 것이다. 따라서, 소거 디코딩의 효율이 향상됨이 이해될 것이다.
도 9는 소거 디코딩을 위한 읽기 레벨(V1)을 검출하는 방법을 설명하기 위한 다이어그램이다. 도 9에서, 가로 축은 메모리 셀들의 논리 값(예를 들면, 문턱 전압)을 나타내며, 세로 축은 메모리 셀들의 수를 나타낸다. 도 9에서, 메모리 셀들은 제 1 논리 상태(P1) 및 제 2 논리 상태(P2)로 프로그램된 것으로 도시되어 있다.
읽기 동작 시에, 미리 설정된 읽기 레벨(예를 들면, Vrd)을 이용하여 읽기 동작이 수행될 것이다. 그리고, 읽어진 데이터에 대하여 에러 정정 동작이 수행될 것이다. 읽어진 데이터의 에러 정정이 성공하면, 정정된 데이터는 최종 데이터로써 출력될 것이다. 즉, 경판정을 통해, 최종 데이터가 판별될 것이다. 에러 정정 동작 이 실패하면, 읽기 레벨을 가변하며 읽기 동작이 수행될 것이다. 예시적으로, 레벨들(V1~V4)을 이용하여 읽기 동작이 수행되는 것으로 가정하자.
레벨(Vrd)에서 읽어진 데이터 및 레벨(V2)에서 읽어진 데이터를 이용하여, 레벨들(Vrd, V2) 사이의 논리 값들에 대응하는 메모리 셀들을 판별하는 것이 가능할 것이다. 예시적으로, 레벨(Vrd)에서 읽어진 데이터와 레벨(V2)에서 읽어진 데이터 중 상보적인 값을 갖는 비트들에 대응하는 메모리 셀들은, 레벨들(Vrd, V2) 사이의 논리 값들에 대응하는 것으로 판별될 것이다.
마찬가지로, 레벨(Vrd)에서 읽어진 데이터 및 레벨(V1)에서 읽어진 데이터를 이용하여, 레벨들(Vrd, V1) 사이의 논리 값들에 대응하는 메모리 셀들을 판별하는 것이 가능할 것이다. 레벨(V1) 및 레벨(V3)에서 읽어진 데이터를 이용하여, 레벨들(V1, V3) 사이의 논리 값들에 대응하는 메모리 셀들을 판별하는 것이 가능할 것이다. 레벨(V3) 및 레벨(V4)에서 읽어진 데이터를 이용하여, 레벨들(V3, V4) 사이의 논리 값들에 대응하는 메모리 셀들을 판별하는 것이 가능할 것이다.
예시적으로, 레벨들(V1, V3) 사이의 논리 값들에 대응하는 메모리 셀들의 수는 레벨들(V3,V4) 사이의 논리 값들에 대응하는 메모리 셀들의 수보다 적을 것이다. 레벨들(V1, Vrd) 사이의 논리 값들에 대응하는 메모리 셀들의 수는 레벨들(Vrd, V2) 사이의 논리 값들에 대응하는 메모리 셀들의 수보다 적을 것이다. 이와 같이, 각 레벨들 사이의 논리 값들에 대응하는 메모리 셀들을 비교함으로써, 대응하는 메모리 셀들의 수가 가장 적은 레벨(V1)이 검출될 것이다. 그리고, 검출된 레벨(V1)이 읽기 레벨로 이용될 것이다.
이후에, 검출된 읽기 레벨(V1)을 이용하여 읽기 동작이 수행된다. 그리고, 에러 정정부(251)는 읽어진 데이터의 에러를 정정할 것이다. 에러 정정이 성공하면, 에러 정정된 데이터가 최종 데이터로써 출력될 것이다. 즉, 경판정된 데이터가 최종 데이터로써 출력될 것이다. 에러 정정이 실패하면, 소거 디코딩을 위한 논리 값들의 범위를 설정하는 동작이 수행될 것이다.
예시적으로, 소거 디코딩을 위한 논리값들의 범위를 설정하는 것은, 읽기 전압(V1)을 검출할 때 카운팅된 메모리 셀들의 수를 이용하여 수행될 것이다. 읽기 전압(V1)을 검출할 때, 레벨들(V1~V4, Vrd) 사이의 논리 값들에 대응하는 메모리 셀들의 수가 카운트된다. 카운트된 메모리 셀들의 수는 별도의 저장 회로(미도시)에 저장될 수 있을 것이다. 에러 정정부(251)는 메모리 셀들의 수를 카운트하는 대신, 저장되어 있는 메모리 셀들의 카운트값을 이용하여 소거 동작을 위한 논리 값들의 범위를 설정할 것이다. 즉, 소거 디코딩을 수행할 때, 소거 디코딩을 위한 논리 값들의 범위를 설정하기 위해 요구되는 시간이 감소될 수 있음이 이해될 것이다.
도 10은 본 발명의 실시 예에 따른 불휘발성 메모리 장치(200)의 에러 정정 및 소거 디코딩 동작을 설명하기 위한 순서도이다. 도 2 및 10을 참조하면, S110 단계에서, 읽기 레벨(V1)이 검출된다.
읽기 레벨(V1)을 검출하는 것은 읽기 레벨을 가변하며 메모리 셀들을 읽고, 가변되는 읽기 레벨들 사이의 논리 값들에 대응하는 메모리 셀들의 수를 카운트하고, 그리고 카운트된 메모리 셀들의 수를 이용하여, 가변되는 읽기 레벨들 중 대응 하는 메모리 셀들의 수가 최소인 레벨을 검출하는 것을 포함할 것이다. 제어 로직(250)은 읽기 전압이 가변되도록, 읽기 동작이 수행되도록, 그리고 메모리 셀들의 수가 카운트되도록 불휘발성 메모리 장치(200)를 제어할 것이다. 카운트된 메모리 셀들의 수는 저장 회로에 저장될 것이다.
S120 단계에서, 소거 디코딩을 위한 논리 값들의 범위가 설정된다. 예시적으로, 에러 정정부(251)는 저장되어 있는 메모리 셀들의 카운트값을 이용하여 논리 값들의 범위를 설정할 것이다. 에러 정정부(251)는 검출된 읽기 전압(V1)을 참조하여 논리 값들의 범위를 설정할 것이다. 더 상세하게는, 에러 정정부(251)는 논리 값들의 범위를 검출된 읽기 전압(V1)을 중심으로 설정할 것이다. 논리 값들의 범위는, 해당 범위 내의 논리 값들에 대응하는 메모리 셀들의 수와 미리 설정된 소거 비트의 수의 차이가 임계값보다 작아지도록 설정될 것이다. 예시적으로, 임계값은 디코딩된 비트 에러율이 특정값(BER1) 이하가 되는 소거 비트들의 수의 범위(F1~F2)를 이용하여 설정될 것이다. 예를 들면, 소거 디코딩을 위해 설정된 소거 비트들의 수 그리고 디코딩된 비트 에러율이 특정값(BER1) 이하가 되는 소거 비트들의 수의 범위(F1~F2)의 차이가 임계값으로 설정될 것이다. 예시적으로, 논리 값들의 범위는, 해당 범위 내의 논리 값들에 대응하는 메모리 셀들의 수와 미리 설정된 소거 비트의 수가 일치하도록 설정될 것이다.
예시적으로, 미리 설정된 소거 비트의 수는 해당 메모리 셀들의 비트 에러율(raw BER)을 참조하여 설정된 값일 것이다. 예시적으로, 미리 설정된 소거 비트의 수는 해당 메모리 셀들의 비트 에러율(raw BER)을 참조하여 설정된 값들 중 선 택된 값일 것이다.
S130 단계에서, 소거 비트들이 설정된다. 예시적으로, 에러 정정부(251)는 설정된 논리 값들의 범위 내의 논리 값들에 대응하는 메모리 셀들로부터 읽어진 데비트들을 소거 비트들로 설정할 것이다.
S140 단계에서, 소거 디코딩이 수행된다. 에러 정정부(251)는 읽어진 수신값의 소거 비트들을 치환하여 두 개의 치환값들을 생성할 것이다. 예시적으로, 읽어진 수신값의 소거 비트들을 상보적인 비트들로 치환함으로써, 두 개의 치환값들이 생성될 것이다. 예를 들면, 읽어진 수신값에 두 개의 소거 비트들이 존재하면, 소거 비트들을 "00" 및 "11"로 치환함으로써, 두 개의 치환값들이 생성될 것이다. 다른 예로써, 읽어진 수신값에 두 개의 소거 비트들이 존재하면, 소거 비트들을 "10" 및 "01"로 치환함으로써, 두 개의 치환값들이 생성될 것이다.
이후에, 에러 정정부(251)는 에러 정정 동작을 수행할 것이다. 에러 정정부(251)는 에러 정정된 두 개의 결과값들 및 읽어진 수신값 사이의 해밍 거리를 비교할 것이다.
예시적으로, 에러 정정된 두 개의 결과값들이 서로 다른 경우, 결과값들 중 읽어진 수신값와 가까운 해밍 거리를 갖는 결과값이 최종적으로 선택될 것이다. 다른 예로서, 두 개의 치환값들이 디코딩 될 때, 하나의 치환값의 디코딩이 성공하여 에러가 정정되면, 에러가 정정된 결과값이 최종적으로 선택되고, 소거 디코딩이 종료될 것이다.
다른 예로서, 소거 비트들을 상보적인 비트들로 치환하여 두 개의 치환값들 을 생성하고, 추가적인 치환값들을 더 생성하여 소거 디코딩을 수행하는 것이 가능하다. 예를 들면, 소거 비트들을 "00" 및 "11"로 치환하여 두 개의 치환값들이 생성될 것이다. 또한, 소거 비트들을 "10" 및 "01"로 치환하여 두 개의 치환값들이 추가적으로 생성될 것이다.
예시적으로, 소거 비트의 수가 x 개 이면, 최대 2x 개의 치환값들을 생성한 후 소거 디코딩을 수행하는 것이 가능할 것이다. 2x 개의 치환값들이 생성되면, 소거 디코딩이 수행될 것이다. 예를 들면, 2x 개의 치환값들을 모두 디코딩하고, 디코딩된 결과값들 중 수신값과 해밍 거리가 가낭 가까운 결과값이 최종적으로 선택될 것이다. 다른 예로서, 치환값들이 디코딩될 때, 하나의 치환값의 디코딩이 성공하여 에러가 정정되면, 에러가 정정된 결과값이 최종적으로 선택되고, 소거 디코딩이 종료될 것이다.
도 11은 소거 동작을 위한 논리 값들의 범위를 설정하는 다른 실시 예를 설명하기 위한 다이어그램이다. 도 11에서, 가로 축은 논리 값의 범위(D)를 나타낸다. 예시적으로, 가로 축은 읽기 레벨(V1)으로부터의 논리 값의 범위(D)를 나타낼 것이다. 예시적으로, 논리 값의 범위(D)는 소거 디코딩을 위한 논리 값의 범위를 나타낼 것이다.
도 11에서, 읽기 레벨(V1)으로부터의 논리 값의 범위는 0 내지 2인 것으로 도시되어 있다. 세로 축은 디코딩된 비트 에러율(decoded BER)을 나타내며, 로그 스케일로 나타내어진다. 예시적으로, 도 11에서, n 비트 정정 BCH 코드를 이용한 에러 정정 동작 및 소거 디코딩 동작이 수행된 때의 디코딩된 비트 에러율(decoded BER)이 도시되어 있다. 예시적으로, 논리 값의 범위(D)에 따른 디코딩된 비트 에러율(decoded BER)은 로그 우도비(log likelihood ratio)에 의해 계산된 결과를 나타낼 것이다.
도 8 및 11을 참조하면, 읽기 레벨(V1)로부터의 논리 값의 범위(D)가 0이면, 소거 디코딩을 위한 논리 값의 범위가 0이다. 읽기 레벨(V1)로부터의 논리 값의 범위(D)가 0이면, 소거 디코딩은 수행되지 않는다. 즉, 읽기 레벨(V1)로부터의 논리 값의 범위(D)가 0이면, 읽어진 데이터는 경판정될 것이다.
읽기 레벨(V1)로부터의 논리 값의 범위(D)가 증가하면, 소거 디코딩을 위한 논리 값의 범위가 증가한다. 즉, 소거 디코딩을 위한 소거 비트들의 수가 증가한다. 읽기 레벨(V1)로부터의 논리 값의 범위(D)가 증가하면, 디코딩된 비트 에러율(decoded BER)은 감소하는 것으로 도시되어 있다. 즉, 소거 비트의 수가 증가하면, 소거 디코딩 및 에러 정정 동작의 효과가 증가하는 것으로 도시되어 있다.
읽기 레벨(V1)로부터의 논리 값의 범위(D)가 D1 (예를 들면, 0.6) 보다 커지면, 디코딩된 비트 에러율(decoded BER)은 유사한 값을 유지한다. 읽기 레벨(V1)로부터의 논리 값의 범위(D)가 D1 (예를 들면, 0.6) 보다 커지면, 에러 정정 및 소거 디코딩의 효과는 더 이상 향상되지 않는다. 읽기 레벨(V1)로부터의 논리 값의 범위(D)가 D1 (예를 들면, 0.6) 내지 D2 (예를 들면, 0.8) 사이일 때, 디코딩된 비트 에러율(decoded BER)은 특정값(BER2) 이하의 값을 갖는다. 그리고, 디코딩된 비트 에러율(decoded BER)의 변독 폭은 상대적으로 작다.
즉, 읽기 레벨(V1)로부터의 논리 값의 범위(D)가 D1 (예를 들면, 0.6) 내지 D2 (예를 들면, 0.8) 사이이면, 에러 정정 및 소거 디코딩의 효과는 유사한 것으로 이해될 수 있을 것이다.
읽기 레벨(V1)로부터의 논리 값의 범위(D)가 D2 (예를 들면, 0.8) 보다 커지면, 디코딩된 비트 에러율(decoded BER)은 특정값(BER2)으로부터 증가한다. 즉, 읽기 레벨(V1)로부터의 논리 값의 범위(D)가 D2 (예를 들면, 0.8) 보다 커지면, 에러 정정 및 소거 디코딩의 효과는 감소하는 것으로 나타난다.
도 11에 도시된 바와 같이, 읽기 레벨(V1)로부터의 논리 값의 범위(D)가 특정한 범위(예를 들면, D1~D2) 이내일 때, 디코딩된 비트 에러율(decoded BER)은 특정값(예를 들면, BER2) 이하의 값을 갖는다. 즉, 읽기 레벨(V1)로부터의 논리 값의 범위(D)가 특정한 범위(D1~D2) 이내일 때, 에러 정정 및 소거 디코딩의 효과는 최대화된다. 본 발명의 실시 예에 따른 불휘발성 메모리 장치(200, 도 2 참조)는 에러 정정 및 소거 디코딩의 효과가 최대화되도록, 소거 디코딩을 위한 논리 값의 범위를 설정한다.
예시적으로, 읽기 레벨(V1)로부터의 논리 값의 범위(D)가 D1 (예를 들면, 0.6) 내지 D2 (예를 들면, 0.8) 이내일 때, 디코딩된 비트 에러율(decoded BER)이 특정값(BER2) 이하의 값을 갖는 것으로 가정하자. 이때, 본 발명의 실시 예에 따른 불휘발성 메모리 장치(200)는, 소거 디코딩을 위한 논리 값의 범위를 D1 (예를 들면, 0.6) 및 D2 (예를 들면, 0.8) 사이의 값(예를 들면, 중간 값)으로 설정할 것이다.
불휘발성 메모리 장치(200)의 열화 등으로 인해 비트 에러율(raw BER)이 변화되면, 디코딩된 비트 에러율(decoded BER)이 특정값(BER2) 이하의 값을 갖는 논리 값의 범위(D1~D2) 또한 변화될 수 있을 것이다. 디코딩된 비트 에러율(decoded BER)이 특정값(BER2) 이하의 값을 갖는 논리 값의 범위(D1~D2) 내의 값(예를 들면, 중간값)을 이용하여 소거 디코딩을 수행하면, 디코딩된 비트 에러율(decoded BER)이 특정값(BER2) 이하의 값을 갖는 논리 값의 범위(D1~D2)의 변화에 대응하는 것이 가능할 것이다.
예시적으로, 도 11을 참조하여 설명된 바와 같이, 읽기 레벨(V1)로부터의 논리 값의 범위(D)가 0.6 내지 0.8 사이일 때, 디코딩된 비트 에러율(decoded BER)이 특정값(BER2) 이하의 값을 갖는 것으로 가정하자. 본 발명의 실시 예에 따른 불휘발성 메모리 장치(200)에서, 소거 동작을 위한 논리 값(예를 들면, 문턱 전압 또는 로그 우도비의 절대값)의 범위는 0.6 및 0.8 내의 값(예를 들면, 중간값)인 0.7로 설정될 것이다. 이때, 디코딩된 비트 에러율(decoded BER)이 특정값(BER2)을 갖는 논리 값의 범위가 0.1 이상 변화될 때까지, 디코딩된 비트 에러율(decoded BER)은 특정값(BER2) 이하의 값을 가질 수 있음이 이해될 것이다. 즉, 본 발명의 실시 예에 따른 불휘발성 메모리 장치(200)는, 디코딩된 비트 에러율(decoded BER)이 특정값(BER2) 이하의 값을 갖는 논리 값의 범위(D1~D2) 내의 값(예를 들면, 중간값)을 이용하여 소거 디코딩을 수행함으로써, 비트 에러율(raw BER)의 변화에 대응하는 것이 가능하다.
다른 예로서, 본 발명의 실시 예에 따른 불휘발성 메모리 장치(200)는, 소거 디코딩을 위한 논리 값의 범위들을 테이블화하여 유지할 수 있다. 소거 디코딩을 위한 논리 값의 범위들을 저장하는 테이블은, 비트 에러율(raw BER)의 변화에 따른 최적의 읽기 레벨(V1)으로부터의 논리 값의 범위를 저장하도록 구성될 것이다. 예시적으로, 비트 에러율(raw BER)이 제 1 값을 가질 때, 해당 비트 에러율에 대응하는 디코딩된 비트 에러율(decoded BER)이 특정값(예를 들면, BER2) 이하의 값을 갖는 논리 값의 범위(예를 들면, D1~D2) 또는 범위(예를 들면, D1~D2) 내의 값(예를 들면, 중간값)이, 소거 디코딩을 위한 제 1 논리 값의 범위로서 테이블에 저장될 것이다.
비트 에러율(raw BER)이 제 2 값을 가질 때, 해당 비트 에러율에 대응하는 디코딩된 비트 에러율(decoded BER)이 특정값(예를 들면, BER2')을 갖는 논리 값의 범위(예를 들면, D1'~D2') 또는 범위(예를 들면, D1'~D2') 내의 값(예를 들면, 중간값)이, 소거 디코딩을 위한 제 2 논리 값의 범위로서 테이블에 저장될 것이다. 따라서, 본 발명의 실시 예에 따른 불휘발성 메모리 장치(200)는, 비트 에러율(raw BER)에 따라 소거 디코딩을 위한 논리 값의 범위를 설정하는 것이 가능함이 이해될 것이다.
상술한 실시 예에서, 에러 정정부(251)는 에러 정정 동작 및 소거 디코딩 동작을 수행하는 것으로 설명되었다. 그러나, 에러 정정 동작 및 소거 디코딩 동작은 별도의 기능 블록들에 의해 수행될 수 있음이 이해될 것이다. 예시적으로, 에러 정정부(251)는 에러 정정 동작을 수행하도록 구성되며, 소거 디코딩 동작을 수행하기 위한 별도의 기능 블록이 제공될 수 있음이 이해될 것이다.
상술한 실시 예에서, 소거 디코딩을 수행하기 위한 논리값들의 범위는 검출된 읽기 전압을 참조하여 설정되었다. 그러나, 소거 디코딩을 수행하기 위한 논리값들의 범위는 검출된 읽기 전압을 참조하지 않고 설정될 수도 있음이 이해될 것이다. 예시적으로, 소거 디코딩을 수행하기 위한 논리값들의 범위는, 미리 설정된 전압 레벨을 기준으로 설정될 수 있음이 이해될 것이다.
도 12는 본 발명의 다른 실시 예에 따른 메모리 시스템(20)을 보여주는 블록도이다. 도 12를 참조하면, 본 발명의 다른 실시 예에 따른 메모리 시스템(20)은 컨트롤러(300) 및 불휘발성 메모리 장치(400)를 포함한다.
컨트롤러(300)는 읽기 레벨을 검출하도록 불휘발성 메모리 장치(400)를 제어할 것이다. 컨트롤러(300)는 검출된 읽기 레벨을 이용하여 읽기 동작을 수행하도록 불휘발성 메모리 장치(400)를 제어할 것이다. 컨트롤러(300)는 저장 회로(310) 및 에러 정정부(320)를 포함한다. 저장 회로(310)는 불휘발성 메모리 장치(400)로부터 읽어지는 데이터를 저장하도록 구성된다. 에러 정정부(320)는 저장 회로(310)에 저장되어 있는 데이터의 에러를 정정하도록 구성된다. 또한, 에러 정정부(320)는 저장 회로(310)에 저장되어 있는 데이터를 소거 디코딩하도록 구성된다. 에러 정정부(320)는 검출된 읽기 레벨을 참조하여 소거 디코딩을 수행하기 위한 논리 값들의 범위를 설정하고, 그리고 읽어진 데이터 중 설정된 논리 값들의 범위에 대응하는 비트들을 소거 비트들로 설정할 것이다.
예시적으로, 에러 정정부(320)는 디지털 회로, 아날로그 회로, 또는 디지털 및 아날로그 회로들이 결합된 형태의 하드 웨어로 구현될 것이다. 다른 예로서, 에 러 정정부(320) 컨트롤러(300)에서 구동되는 소프트 웨어의 형태로 구현될 것이다. 다른 예로서, 에러 정정부(320)는 하드 웨어 및 소프트 웨어가 조합된 형태로 구현될 수 있음이 이해될 것이다.
저장 회로(310) 및 에러 정정부(320)는 도 1 내지 11을 참조하여 설명된 저장 회로(240) 및 에러 정정부(251)와 마찬가지로 동작하도록 구성된다. 따라서, 더 이상의 상세한 설명은 생략된다.
불휘발성 메모리 장치(400)는 메모리 셀들의 제 1 및 제 2 논리 상태들을 판별하기 위한 읽기 레벨을 이용하여, 메모리 셀들로부터 읽기 데이터를 읽도록 구성될 것이다. 불휘발성 메모리 장치(400)는 메모리 셀 어레이, 메모리 셀 어레이에 데이터를 기입 및 독출하기 위한 읽기 쓰기 회로, 외부로부터 전달되는 어드레스를 디코딩하여 읽기 쓰기 회로에 전달하는 어드레스 디코더, 불휘발성 메모리 장치(400)의 제반 동작을 제어하기 위한 제어 로직 등과 같이 잘 알려진 구성 요소들을 포함할 것이다. 불휘발성 메모리 장치(400)는 하나의 메모리 셀에 적어도 하나의 비트를 저장할 수 있도록 구성될 것이다. 불휘발성 메모리 장치(400)의 메모리 셀들은 상이한 문턱 전압 또는 저항 등을 갖도록 프로그램될 것이다.
예시적으로, 컨트롤러(300) 및 불휘발성 메모리 장치(400)는 하나의 반도체 장치로 집적될 수 있을 것이다. 예를 들면, 컨트롤러(300) 및 불휘발성 메모리 장치(400)는 하나의 반도체 장치로 집적되어, 메모리 카드를 형성할 것이다. 다른 예로서, 컨트롤러(300) 및 불휘발성 메모리 장치(400)는 하나의 반도체 장치로 집적되어 반도체 드라이브(SSD)를 형성할 것이다.
도 13은 도 1 및 12의 메모리 시스템(10, 20)을 포함하는 컴퓨팅 시스템(500)의 실시 예를 보여주는 블록도이다. 도 13을 참조하면, 본 발명의 실시 예에 따른 컴퓨팅 시스템(500)은 중앙 처리 장치(510), 램(520, RAM, Random Access Memory), 사용자 인터페이스(530), 전원(540), 그리고 메모리 시스템(10, 20)을 포함한다.
메모리 시스템(10, 20)은 시스템 버스(550)를 통해, 중앙처리장치(510), 램(520), 사용자 인터페이스(530), 그리고 전원(540)에 전기적으로 연결된다. 사용자 인터페이스(530)를 통해 제공되거나, 중앙 처리 장치(510)에 의해서 처리된 데이터는 메모리 시스템(10, 20)에 저장된다. 메모리 시스템(10, 20)은 컨트롤러(100, 300) 및 불휘발성 메모리 장치(200, 400)를 포함한다.
메모리 시스템(10)이 반도체 드라이브(SSD)로 장착되는 경우, 컴퓨팅 시스템(300)의 부팅 속도가 획기적으로 빨라질 수 있다. 도면에 도시되지 않았지만, 본 발명에 따른 시스템은 응용 칩셋(Application Chipset), 카메라 이미지 프로세서(Camera Image Processor) 등을 더 포함할 수 있음은 이 분야의 통상적인 지식을 습득한 자들에게 이해될 것이다.
본 발명의 상세한 설명에서는 구체적인 실시 예에 관하여 설명하였으나, 본 발명의 범위와 기술적 사상에서 벗어나지 않는 한도 내에서 여러 가지 변형이 가능함은 자명하다. 그러므로 본 발명의 범위는 상술한 실시 예에 국한되어 정해져서는 안되며 후술하는 특허청구범위뿐만 아니라 이 발명의 특허청구범위와 균등한 것들에 의해 정해져야 한다.
도 1은 본 발명의 제 1 실시 예에 따른 메모리 시스템을 보여주는 블록도이다.
도 2는 도 1의 불휘발성 메모리 장치를 보여주는 블록도이다.
도 3은 도 2의 메모리 셀 어레이의 메모리 셀들의 논리 값의 산포를 보여주는 다이어그램이다.
도 4는 본 발명의 실시 예에 따른 불휘발성 메모리 장치의 소거 디코딩 동작을 설명하기 위한 다이어그램이다.
도 5는 본 발명의 실시 예에 따른 소거 디코딩 동작의 효과를 설명하기 위한 다이어그램이다.
도 6은 본 발명의 실시 예에 따른 소거 디코딩 동작의 효과를 설명하기 위한 다이어그램이다.
도 7은 소거 비트의 수에 따른 소거 디코딩의 효과를 설명하기 위한 다이어그램이다.
도 8은 본 발명의 실시 예에 따른 불휘발성 메모리 장치가 소거 비트를 설정하는 방법을 설명하기 위한 다이어그램이다.
도 9는 소거 디코딩을 위한 읽기 레벨을 검출하는 방법을 설명하기 위한 다이어그램이다.
도 10은 본 발명의 실시 예에 따른 불휘발성 메모리 장치의 에러 정정 및 소거 디코딩 동작을 설명하기 위한 순서도이다.
도 11은 소거 동작을 위한 논리 값들의 범위를 설정하는 다른 실시 예를 설명하기 위한 다이어그램이다.
도 12는 본 발명의 다른 실시 예에 따른 메모리 시스템을 보여주는 블록도이다.

Claims (10)

  1. 불휘발성 메모리 장치의 동작 방법에 있어서:
    읽기 레벨을 이용하여 읽기 데이터를 읽고;
    상기 읽기 데이터를 소거 디코딩하기 위한 논리 값들의 범위를 설정하고;
    상기 읽기 데이터 중 상기 설정된 논리 값들의 범위에 대응하는 비트들을 소거 비트들로 설정하고; 그리고
    소거 디코딩을 수행하는 것을 포함하고,
    상기 논리 값들은 상기 메모리 셀들의 문턱 전압들을 나타내는 동작 방법.
  2. 삭제
  3. 불휘발성 메모리 장치의 동작 방법에 있어서:
    읽기 레벨을 이용하여 읽기 데이터를 읽고;
    상기 읽기 데이터를 소거 디코딩하기 위한 논리 값들의 범위를 설정하고;
    상기 읽기 데이터 중 상기 설정된 논리 값들의 범위에 대응하는 비트들을 소거 비트들로 설정하고; 그리고
    소거 디코딩을 수행하는 것을 포함하고,
    상기 소거 디코딩을 수행하기 위한 논리 값들의 범위는 상기 읽기 레벨 주변으로 설정되는 동작 방법.
  4. 불휘발성 메모리 장치의 동작 방법에 있어서:
    읽기 레벨을 이용하여 읽기 데이터를 읽고;
    상기 읽기 데이터를 소거 디코딩하기 위한 논리 값들의 범위를 설정하고;
    상기 읽기 데이터 중 상기 설정된 논리 값들의 범위에 대응하는 비트들을 소거 비트들로 설정하고; 그리고
    소거 디코딩을 수행하는 것을 포함하고,
    상기 소거 디코딩을 수행하기 위한 상기 논리 값들의 범위는 미리 설정된 소거 비트의 수를 이용하여 설정되고,
    상기 미리 설정된 소거 비트의 수는 디코딩된 비트 에러율(decoded Bit Error Rate)이 특정값 이하가 될 때의 소거 비트의 수인 동작 방법.
  5. 제 4 항에 있어서,
    상기 소거 디코딩을 수행하기 위한 상기 논리 값들의 범위를 설정하는 것은
    상기 읽기 데이터의 소거 비트의 수를 상기 미리 설정된 소거 비트의 수로부터 임계값 이내로 설정하는 것을 포함하는 동작 방법.
  6. 불휘발성 메모리 장치의 동작 방법에 있어서:
    읽기 레벨을 이용하여 읽기 데이터를 읽고;
    상기 읽기 데이터를 소거 디코딩하기 위한 논리 값들의 범위를 설정하고;
    상기 읽기 데이터 중 상기 설정된 논리 값들의 범위에 대응하는 비트들을 소거 비트들로 설정하고; 그리고
    소거 디코딩을 수행하는 것을 포함하고,
    상기 소거 디코딩을 수행하기 위한 상기 논리 값들의 범위는 미리 설정된 논리 값의 범위를 이용하여 설정되고,
    상기 미리 설정된 논리 값의 범위는, 디코딩된 비트 에러율(decoded Bit Error Rate)이 특정값 이하가 될 때의 논리 값의 범위인 동작 방법.
  7. 불휘발성 메모리 장치의 동작 방법에 있어서:
    읽기 레벨을 이용하여 읽기 데이터를 읽고;
    상기 읽기 데이터를 소거 디코딩하기 위한 논리 값들의 범위를 설정하고;
    상기 읽기 데이터 중 상기 설정된 논리 값들의 범위에 대응하는 비트들을 소거 비트들로 설정하고; 그리고
    소거 디코딩을 수행하는 것을 포함하고,
    상기 소거 디코딩을 수행하는 것은
    상기 소거 디코딩을 수행하기 위한 상기 논리 값들의 범위를 참조하여, 상기 읽기 데이터에 대응하는 적어도 두 개의 치환값들을 생성하는 것을 포함하는 동작 방법.
  8. 메모리 셀 어레이;
    상기 메모리 셀 어레이의 메모리 셀들의 제 1 및 제 2 논리 상태들을 판별하기 위한 읽기 레벨을 이용하여, 상기 메모리 셀들로부터 읽기 데이터를 읽도록 구성되는 읽기 쓰기 회로; 그리고
    상기 읽기 레벨을 검출하고, 상기 읽기 데이터를 소거 디코딩하도록 구성되는 제어 로직을 포함하고,
    상기 제어 로직은, 상기 소거 디코딩을 수행하기 위한 논리 값들의 범위를 설정하도록 구성되고, 그리고 상기 읽기 데이터 중 상기 설정된 논리 값들의 범위에 대응하는 비트들을 소거 비트들로 설정하도록 구성되고,
    상기 논리 값들은 상기 메모리 셀들의 문턱 전압들을 나타내는 불휘발성 메모리 장치.
  9. 메모리 셀들의 제 1 및 제 2 논리 상태들을 판별하기 위한 읽기 레벨을 이용하여, 상기 메모리 셀들로부터 읽기 데이터를 읽도록 구성되는 불휘발성 메모리 장치; 그리고
    상기 읽기 레벨을 검출하도록 상기 불휘발성 메모리 장치를 제어하고, 그리고 상기 읽기 데이터를 소거 디코딩하도록 구성되는 컨트롤러를 포함하고,
    상기 컨트롤러는, 상기 소거 디코딩을 수행하기 위한 논리 값들의 범위를 설정하도록 구성되고, 그리고 상기 읽기 데이터 중 상기 설정된 논리 값들의 범위에 대응하는 비트들을 소거 비트들로 설정하도록 구성되고,
    상기 논리 값들은 상기 메모리 셀들의 문턱 전압들을 나타내는 메모리 시스템.
  10. 제 9 항에 있어서,
    상기 불휘발성 메모리 장치 및 상기 컨트롤러는 반도체 드라이브(SSD, Solid State Drive)를 형성하는 메모리 시스템.
KR1020090027718A 2009-03-31 2009-03-31 불휘발성 메모리 장치, 그것을 포함하는 메모리 시스템, 그리고 그것의 동작 방법 KR101574208B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020090027718A KR101574208B1 (ko) 2009-03-31 2009-03-31 불휘발성 메모리 장치, 그것을 포함하는 메모리 시스템, 그리고 그것의 동작 방법
US12/656,762 US8427870B2 (en) 2009-03-31 2010-02-16 Nonvolatile memory device, method, system including the same, and operating method thereof

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020090027718A KR101574208B1 (ko) 2009-03-31 2009-03-31 불휘발성 메모리 장치, 그것을 포함하는 메모리 시스템, 그리고 그것의 동작 방법

Publications (2)

Publication Number Publication Date
KR20100109223A KR20100109223A (ko) 2010-10-08
KR101574208B1 true KR101574208B1 (ko) 2015-12-07

Family

ID=42784054

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020090027718A KR101574208B1 (ko) 2009-03-31 2009-03-31 불휘발성 메모리 장치, 그것을 포함하는 메모리 시스템, 그리고 그것의 동작 방법

Country Status (2)

Country Link
US (1) US8427870B2 (ko)
KR (1) KR101574208B1 (ko)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012063871A (ja) * 2010-09-14 2012-03-29 Univ Of Tokyo 制御装置およびデータ記憶装置
WO2012073071A1 (en) * 2010-12-02 2012-06-07 Freescale Semiconductor, Inc. Error correcting device, method for monitoring an error correcting device and data processing system
US8631288B2 (en) 2011-03-14 2014-01-14 Micron Technology, Inc. Methods, devices, and systems for data sensing in a memory system
KR20130136271A (ko) 2012-06-04 2013-12-12 삼성전자주식회사 비휘발성 메모리 장치 및 그것의 데이터 처리 방법
CN104298571B (zh) * 2013-07-17 2017-10-03 群联电子股份有限公司 数据保护方法、存储器储存装置与存储器控制器

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040022087A1 (en) 2002-08-02 2004-02-05 Kenichi Satori Semiconductor memory device
KR100697792B1 (ko) 2005-09-20 2007-03-21 가부시끼가이샤 도시바 기억 매체 재생 장치, 기억 매체 재생 방법, 및 기억 매체로부터 정보를 판독하기 위한 컴퓨터 판독가능 매체

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5898637A (en) * 1997-01-06 1999-04-27 Micron Technology, Inc. System and method for selecting shorted wordlines of an array having dual wordline drivers
US6621739B2 (en) 2002-01-18 2003-09-16 Sandisk Corporation Reducing the effects of noise in non-volatile memories through multiple reads
US6618297B1 (en) 2002-08-02 2003-09-09 Atmel Corporation Method of establishing reference levels for sensing multilevel memory cell states
US7372731B2 (en) 2003-06-17 2008-05-13 Sandisk Il Ltd. Flash memories with adaptive reference voltages
KR100617769B1 (ko) * 2004-03-24 2006-08-28 삼성전자주식회사 채널 부호화 장치 및 방법
CN1942864A (zh) * 2004-04-14 2007-04-04 皇家飞利浦电子股份有限公司 校正数据存储器中错误的数据处理设备
US8458536B2 (en) * 2008-07-17 2013-06-04 Marvell World Trade Ltd. Data recovery in solid state memory devices
KR101466270B1 (ko) * 2008-09-19 2014-11-28 삼성전자주식회사 비휘발성 메모리 시스템 및 그것의 데이터 처리 방법
KR101642465B1 (ko) * 2008-12-12 2016-07-25 삼성전자주식회사 불휘발성 메모리 장치의 액세스 방법

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040022087A1 (en) 2002-08-02 2004-02-05 Kenichi Satori Semiconductor memory device
KR100697792B1 (ko) 2005-09-20 2007-03-21 가부시끼가이샤 도시바 기억 매체 재생 장치, 기억 매체 재생 방법, 및 기억 매체로부터 정보를 판독하기 위한 컴퓨터 판독가능 매체

Also Published As

Publication number Publication date
US8427870B2 (en) 2013-04-23
US20100246286A1 (en) 2010-09-30
KR20100109223A (ko) 2010-10-08

Similar Documents

Publication Publication Date Title
KR100842680B1 (ko) 플래시 메모리 장치의 오류 정정 컨트롤러 및 그것을포함하는 메모리 시스템
US8499217B2 (en) Memory device and error control codes decoding method
US8560901B2 (en) Apparatus, method and memory device for error correction by increasing or decreasing a read voltage and analyzing frequency information for a read error pattern
CN107408069B (zh) 用于检测和缓解闪速存储器中的位线开路的装置和方法
US20190252035A1 (en) Decoding method, memory storage device and memory control circuit unit
US9639419B2 (en) Read voltage level estimating method, memory storage device and memory control circuit unit
KR102257050B1 (ko) 컨트롤러, 반도체 메모리 시스템 및 그것의 동작 방법
US20160372161A1 (en) Data storage device and operating method thereof
US9147483B2 (en) Apparatus and method of operating memory device
US8347183B2 (en) Flash memory device using ECC algorithm and method of operating the same
US10679707B2 (en) Voltage adjusting method, memory controlling circuit unit and memory storage device
US10985780B2 (en) Error correction circuit, and memory controller having the error correction circuit and memory system having the memory controller
KR20160090054A (ko) 플래시 메모리 시스템 및 그의 동작 방법
KR101618313B1 (ko) 불휘발성 메모리 장치의 프로그램 방법
CN110349616B (zh) 针对nand闪存中的位线故障的动态交织器变化
KR102617832B1 (ko) 메모리 컨트롤러, 반도체 메모리 시스템 및 그것의 동작 방법
KR101574208B1 (ko) 불휘발성 메모리 장치, 그것을 포함하는 메모리 시스템, 그리고 그것의 동작 방법
US9304851B2 (en) Decoding with log likelihood ratios stored in a controller
KR20180022175A (ko) 컨트롤러, 반도체 메모리 시스템 및 그것의 동작 방법
KR20180123393A (ko) Siso 복호 방법, 디코더 및 반도체 메모리 시스템
US11190217B2 (en) Data writing method, memory controlling circuit unit and memory storage device
US8448048B2 (en) Flash memory device and related programming method
US10396825B2 (en) Memory controller, semiconductor memory system and operating method thereof
US11146295B1 (en) Decoding method, memory storage device, and memory controlling circuit unit
US20210320673A1 (en) Error correction circuit and operating method thereof

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
FPAY Annual fee payment

Payment date: 20181031

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20191031

Year of fee payment: 5