KR102636039B1 - 불휘발성 메모리 장치 및 그것의 읽기 방법 및 카피백 방법 - Google Patents

불휘발성 메모리 장치 및 그것의 읽기 방법 및 카피백 방법 Download PDF

Info

Publication number
KR102636039B1
KR102636039B1 KR1020160058397A KR20160058397A KR102636039B1 KR 102636039 B1 KR102636039 B1 KR 102636039B1 KR 1020160058397 A KR1020160058397 A KR 1020160058397A KR 20160058397 A KR20160058397 A KR 20160058397A KR 102636039 B1 KR102636039 B1 KR 102636039B1
Authority
KR
South Korea
Prior art keywords
data
error
page buffer
source
memory device
Prior art date
Application number
KR1020160058397A
Other languages
English (en)
Other versions
KR20170128686A (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 KR1020160058397A priority Critical patent/KR102636039B1/ko
Priority to US15/446,665 priority patent/US10720945B2/en
Priority to CN201710266270.0A priority patent/CN107403645B/zh
Publication of KR20170128686A publication Critical patent/KR20170128686A/ko
Priority to US16/891,664 priority patent/US11362685B2/en
Application granted granted Critical
Publication of KR102636039B1 publication Critical patent/KR102636039B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/65Purpose and implementation aspects
    • H03M13/6566Implementations concerning memory access contentions
    • 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/1012Adding 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 codes or arrangements adapted for a specific type of error
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1673Details of memory controller using buffers
    • 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/44Indication or identification of errors, e.g. for repair
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/13Linear codes
    • H03M13/15Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
    • H03M13/151Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
    • H03M13/152Bose-Chaudhuri-Hocquenghem [BCH] codes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/13Linear codes
    • H03M13/15Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
    • H03M13/151Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
    • H03M13/1545Determination of error locations, e.g. Chien search or other methods or arrangements for the determination of the roots of the error locator polynomial
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7203Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks

Landscapes

  • Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Mathematical Physics (AREA)
  • General Physics & Mathematics (AREA)
  • Probability & Statistics with Applications (AREA)
  • General Engineering & Computer Science (AREA)
  • Algebra (AREA)
  • Pure & Applied Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Read Only Memory (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Microelectronics & Electronic Packaging (AREA)

Abstract

본 발명의 실시 예에 따른 불휘발성 메모리 장치의 읽기 방법은, 선택된 메모리 셀들을 센싱한 결과로 생성된 센싱 데이터를 페이지 버퍼에 저장하는 단계, 상기 센싱 데이터의 에러를 검출하고, 에러가 검출되면 검출된 에러를 정정하여 상기 페이지 버퍼에 덮어쓰는 에러 디코딩 단계, 그리고 상기 에러 디코딩이 완료된 후에, 시드를 사용하여 상기 페이지 버퍼에 저장된 데이터를 디-랜덤화하는 단계를 포함한다.

Description

불휘발성 메모리 장치 및 그것의 읽기 방법 및 카피백 방법{NONVOLATILE MEMORY DEVICE AND READ METHOD AND COPY-BACK METHOD THEREOF}
본 발명은 반도체 메모리 장치에 관한 것으로, 좀 더 구체적으로는 읽기 성능 개선 및 높은 데이터 신뢰성의 구현이 가능한 불휘발성 메모리 장치 및 그것의 읽기 방법 및 카피백 방법에 관한 것이다.
반도체 메모리 장치는 크게 휘발성 반도체 메모리 장치(Volatile semiconductor memory device)와 불휘발성 반도체 메모리 장치(Non-volatile semiconductor memory device)로 구분될 수 있다. 휘발성 반도체 메모리 장치는 읽고 쓰는 속도가 빠르지만 전원 공급이 끊기면 저장된 내용이 사라져 버리는 단점이 있다. 반면에, 불휘발성 반도체 메모리 장치는 전원 공급이 중단되더라도 그 내용을 보존한다. 그러므로 불휘발성 반도체 메모리 장치는 전원이 공급되었는지의 여부에 관계없이 보존되어야 할 내용을 저장하는 데 쓰인다.
불휘발성 메모리 장치의 대표적인 예로 플래시 메모리 장치가 있다. 플래시 메모리 장치는 컴퓨터, 휴대폰, 스마트폰, PDA, 디지털카메라, 캠코더, 보이스 리코더, MP3 플레이어, 개인용 휴대 단말기(PDA), 휴대용 컴퓨터(Handheld PC), 게임기, 팩스, 스캐너, 프린터 등과 같은 정보기기들의 음성 및 영상 데이터 저장 매체로서 널리 사용되고 있다. 최근, 스마트폰과 같은 모바일 장치들에 탑재하기 위하여 불휘발성 메모리 장치의 고용량, 고속 입출력, 저전력화 기술들이 활발하게 연구되고 있다. 더불어, 높은 데이터 신뢰성을 제공하기 위한 온칩 ECC(On-Chip Error Correction Code)와 온칩 랜더마이저(On-Chip Randomizer)를 구비한 불휘발성 메모리 장치가 연구되고 있다.
에러 검출 및 정정 연산과 랜덤화 연산이 불휘발성 메모리 장치의 내부에서 수행되는 경우, 실질적으로 데이터의 읽기 또는 쓰기 속도의 저하가 발생할 수 있다. 따라서, 에러 검출 및 정정 연산과 랜덤화 연산이 불휘발성 메모리 장치의 내부에서 수행되더라도 높은 읽기 및 쓰기 성능을 제공할 수 있는 기술에 대한 요구가 절실한 실정이다.
본 발명의 목적은 읽기 속도 및 신뢰도를 향상시킬 수 있는 온칩 ECC 및 온칩 랜더마이저를 구비한 불휘발성 메모리 장치 및 그것의 동작 방법을 제공하는 데 있다.
상기 목적을 달성하기 위한 본 발명의 실시 예에 따른 불휘발성 메모리 장치의 읽기 방법은, 선택된 메모리 셀들을 센싱한 결과로 생성된 센싱 데이터를 페이지 버퍼에 저장하는 단계, 상기 센싱 데이터의 에러를 검출하고, 에러가 검출되면 검출된 에러를 정정하여 상기 페이지 버퍼에 덮어쓰는 에러 디코딩 단계, 그리고 상기 에러 디코딩이 완료된 후에, 시드를 사용하여 상기 페이지 버퍼에 저장된 데이터를 디-랜덤화하는 단계를 포함한다.
상기 목적을 달성하기 위한 본 발명에 따른 불휘발성 메모리 장치의 카피백 방법은, 소스 영역으로부터 소스 데이터를 센싱하여 페이지 버퍼에 저장하는 단계, 상기 소스 데이터를 업데이트하기 위한 추가 데이터를 입력받는 단계, 상기 추가 데이터를 소스 시드를 사용하여 랜덤화하는 단계, 그리고 상기 랜덤화된 추가 데이터를 사용하여 상기 페이지 버퍼에 저장된 상기 소스 데이터를 업데이트하는 단계를 포함한다.
상기 목적을 달성하기 위한 본 발명의 불휘발성 메모리 장치는, 행들과 열들로 배열된 메모리 셀들을 포함하는 셀 어레이, 상기 셀 어레이에 데이터를 기입하거나, 상기 셀 어레이에 저장된 데이터를 센싱하여 저장하는 페이지 버퍼, 상기 셀 어레이에 기입될 데이터를 랜덤화하여 상기 페이지 버퍼에 제공하거나, 상기 페이지 버퍼로부터 출력되는 데이터를 디-랜덤화하는 스크램블 블록, 상기 센싱된 데이터에 대한 에러 정정 디코딩을 수행하는 에러 정정 블록, 그리고 외부로부터의 명령어 또는 제어 신호에 응답하여 상기 페이지 버퍼, 상기 스크램블 블록, 그리고 상기 에러 정정 블록을 제어하는 제어 로직을 포함하되, 상기 제어 로직은 데이터 읽기 동작시, 상기 페이지 버퍼에 저장된 데이터가 상기 에러 정정 블록에 의해서 디코딩되도록, 상기 디코딩된 데이터가 상기 페이지 버퍼에 덮어쓰기되도록 상기 페이지 버퍼와 상기 스크램블 블록을 제어하고, 상기 페이지 버퍼에 덮어쓰기된 데이터가 출력되는 시점에 디-랜덤화 연산을 수행하도록 상기 스크램블 블록을 제어한다.
이상과 같은 본 발명의 실시 예에 따르면, 불휘발성 메모리 장치에서 에러가 검출되지 않은 데이터의 출력 시간을 감소시킬 수 있다. 더불어, 카피백 동작에서 일부 데이터를 업데이트하거나 추가로 데이터를 기입하는 경우에도 랜덤화 연산 및 에러 정정 연산이 충돌없이 수행될 수 있는 온칩 ECC 및 온칩 랜덤화 블록을 구비한 불휘발성 메모리 장치가 제공될 것이다.
도 1은 본 발명의 실시 예에 따른 불휘발성 메모리 장치를 보여주는 블록도이다.
도 2는 도 1의 불휘발성 메모리 장치에서 쓰기 데이터의 처리 과정을 간략히 보여주는 블록도이다.
도 3은 본 발명의 랜더마이저/디-랜더마이저(150)의 간략한 구성을 보여주는 블록도이다.
도 4는 도 1의 불휘발성 메모리 장치에서 읽기 데이터의 처리 과정을 간략히 보여주는 블록도이다.
도 5는 본 발명의 실시 예에 따른 불휘발성 메모리 장치(100)의 읽기 방법을 간략히 보여주는 순서도이다.
도 6은 본 발명의 실시 예에 불휘발성 메모리 장치에서 읽기 방법을 예시적으로 보여주는 타이밍도이다.
도 7은 본 발명의 실시 예에 따른 에러 정정 블록을 보여주는 블록도이다.
도 8은 에러 정정 블록(140)에 전달되는 부호어에 대한 에러 디코딩 결과에 대응하는 ECC 플레임을 간략히 보여주는 테이블이다.
도 9는 에러 어드레스 발생기의 구조를 예시적으로 보여주는 도면이다.
도 10은 에러가 검출된 ECC 플레임의 예를 간략히 보여준다.
도 11a은 도 10의 ECC 플레임 조건에서의 페이지 버퍼(130)로의 덮어쓰기 동작을 예시적으로 보여주는 타이밍도이다.
도 11b는 에러가 존재하지 않는 부호어에 대한 처리 방법을 보여주는 타이밍도이다.
도 12는 본 발명의 실시 예에 따른 불휘발성 메모리 장치를 보여주는 블록도이다.
도 13은 본 발명의 실시 예에 불휘발성 메모리 장치에서 업데이트 카피백을 수행하기 위한 명령어 시퀀스를 보여주는 타이밍도이다.
도 14는 도 12의 불휘발성 메모리 장치에서 본 발명의 업데이트 카피백 동작을 수행하는 과정을 보여주는 블록도이다.
도 15는 본 발명의 업데이트 카피백 방법을 보여주는 순서도이다.
도 16은 본 발명의 다른 실시 예에 따른 불휘발성 메모리 장치를 보여주는 블록도이다.
도 17은 복수의 쓰기 단위로 구분되는 하나의 페이지 영역을 보여주는 도면이다.
도 18은 도 16의 NOP 레지스터를 활용한 업데이트 카피백 동작을 보여주는 테이블이다.
도 19는 본 발명의 또 다른 실시 예에 따른 불휘발성 메모리 장치를 보여주는 블록도이다.
도 20은 도 1, 도 12, 도 16, 도 19의 메모리 셀 어레이에 포함된 메모리 블록들 중 어느 하나의 예를 보여주는 회로도이다.
도 21은 본 발명의 실시 예들에 따른 불휘발성 메모리 시스템이 적용된 메모리 카드 시스템을 보여주는 블록도이다.
도 22는 본 발명에 따른 불휘발성 메모리 시스템이 적용된 SSD(Solid State Drive) 시스템을 예시적으로 보여주는 블록도이다.
도 23은 본 발명에 따른 불휘발성 메모리 시스템이 적용된 사용자 시스템을 보여주는 블록도이다.
앞의 일반적인 설명 및 다음의 상세한 설명 모두 예시적이라는 것이 이해되어야 하며, 청구된 발명의 부가적인 설명이 제공되는 것으로 여겨져야 한다. 참조 부호들이 본 발명의 바람직한 실시 예들에 상세히 표시되어 있으며, 그것의 예들이 참조 도면들에 표시되어 있다. 가능한 어떤 경우에도, 동일한 참조 번호들이 동일한 또는 유사한 부분을 참조하기 위해서 설명 및 도면들에 사용된다.
이하에서는, 낸드형 플래시 메모리 장치가 본 발명의 특징 및 기능을 설명하기 위한 불휘발성 메모리 장치의 예로서 사용될 것이다. 하지만, 이 기술 분야에 정통한 사람은 여기에 기재된 내용에 따라 본 발명의 다른 이점들 및 성능을 쉽게 이해할 수 있을 것이다. 예를 들면, 본 발명의 기술은 PRAM, MRAM, ReRAM, FRAM, NOR 플래시 메모리 등에도 사용될 수 있다.
본 발명은 다른 실시 예들을 통해 또한, 구현되거나 적용될 수 있을 것이다. 게다가, 상세한 설명은 본 발명의 범위, 기술적 사상 그리고 다른 목적으로부터 상당히 벗어나지 않고 관점 및 응용에 따라 수정되거나 변경될 수 있다.
도 1은 본 발명의 실시 예에 따른 불휘발성 메모리 장치를 보여주는 블록도이다. 도 1을 참조하면, 불휘발성 메모리 장치(100)는 셀 어레이(110), 행 디코더(120), 페이지 버퍼(130), 에러 정정 블록(140), 랜더마이저/디-랜더마이저(150), 입출력 버퍼(160), 제어 로직(170), 그리고 전압 발생기(180)를 포함할 수 있다.
셀 어레이(110)는 워드 라인들(WLs) 또는 선택 라인들(SSL, GSL)을 통해 행 디코더(120)에 연결된다. 셀 어레이(110)는 비트 라인들(BLs)을 통해서 페이지 버퍼(130)에 연결된다. 셀 어레이(110)는 복수의 낸드형 셀 스트링들(NAND Cell Strings)을 포함한다. 셀 스트링들 각각의 채널은 수직 또는 수평 방향으로 형성될 수 있다. 본 발명의 셀 어레이(110)는 낸드 셀 스트링을 형성하는 복수의 메모리 셀들을 포함할 것이다. 복수의 메모리 셀들은 비트 라인(BLs)이나, 워드 라인(WLs)으로 제공되는 전압에 의해서 프로그램되거나, 소거되거나, 독출될 수 있다. 프로그램 동작은 페이지 단위나, 페이지 단위보다 작은 쓰기 단위(예를 들면, NOP 단위)로, 소거 동작은 도시된 블록들(BLK0~BLKi) 단위로 수행될 수 있다.
본 발명의 개념에 따른 실시 예로서, 셀 어레이(110)는 3차원 메모리 어레이로 제공될 수 있다. 3차원 메모리 어레이는, 실리콘 기판 및 메모리 셀들의 동작에 연관된 회로의 위에 배치되는 활성 영역을 갖는 메모리 셀들의 어레이들의 하나 또는 그 이상의 물리 레벨들에 모놀리식으로(Monolithically) 형성될 수 있다. 메모리 셀들의 동작에 연관된 회로는 기판 내에 또는 기판 위에 위치할 수 있다. 모놀리식(Monolithical)이란 용어는, 3차원 어레이의 각 레벨의 층들이 3차원 어레이의 하위 레벨의 층들 위에 직접 증착됨을 의미한다.
본 발명의 개념에 따른 실시 예로서, 3차원 메모리 어레이는 수직의 방향성을 가져, 적어도 하나의 메모리 셀이 다른 하나의 메모리 셀 위에 위치하는 수직 NAND 스트링들을 포함한다. 적어도 하나의 메모리 셀은 전하 트랩 층을 포함한다. 각각의 수직 NAND 스트링은 메모리 셀들 위에 위치하는 적어도 하나의 선택 트랜지스터를 포함할 수 있다. 적어도 하나의 선택 트랜지스터는 메모리 셀들과 동일한 구조를 갖고, 메모리 셀들과 함께 모놀리식으로 형성될 수 있다.
3차원 메모리 어레이가 복수의 레벨들로 구성되고, 레벨들 사이에 공유된 워드 라인들 또는 비트 라인들을 갖고, 3차원 메모리 어레이에 적합한 구성은 미국등록특허공보 제7,679,133호, 미국등록특허공보 제8,553,466호, 미국등록특허공보 제8,654,587호, 미국등록특허공보 제8,559,235호, 그리고 미국공개특허공보 제2011/0233648호에 개시되어 있으며, 본 발명의 레퍼런스로 포함된다.
행 디코더(120)는 어드레스(ADD)에 응답하여 셀 어레이(110)의 메모리 블록들 중 어느 하나를 선택할 수 있다. 행 디코더(120)는 어드레스(ADD)에 응답하여 선택된 메모리 블록의 워드 라인들 중 어느 하나를 선택할 수 있다. 행 디코더(120)는 선택된 메모리 블록의 워드 라인에 동작 모드에 대응하는 전압을 전달한다. 프로그램 동작시 행 디코더(120)는 선택 워드 라인(Selected WL)에 프로그램 전압(Vpgm)과 검증 전압(Vfy)을, 비선택 워드 라인(Unselected WL)에는 패스 전압(Vpass)을 전달한다. 읽기 동작시 행 디코더(120)는 선택 워드 라인(Selected WL)에 선택 읽기 전압(Vrd)을, 비선택 워드 라인(Unselected WL)에는 비선택 읽기 전압(Vread)을 전달한다.
페이지 버퍼(130)는 기입 드라이버로 또는 감지 증폭기로 동작한다. 프로그램 동작시, 페이지 버퍼(130)는 셀 어레이(110)의 비트 라인으로 프로그램될 데이터에 대응하는 비트 라인 전압을 전달한다. 읽기 동작 또는 검증 읽기 동작시, 페이지 버퍼(130)는 선택된 메모리 셀에 저장된 데이터를 비트 라인(BL)을 통해서 감지한다. 더불어, 페이지 버퍼(130)는 에러 정정 블록(140)이나 랜더마이저/디-랜더마이저(150)의 인코딩 또는 디코딩시 버퍼 기능을 제공할 수 있다. 예를 들면, 랜덤화 연산시 랜덤화된 데이터가 랜덤화되지 않은 소스 데이터에 덮어쓰기될 수 있다. 이러한 페이지 버퍼(130)의 버퍼 기능은 에러 정정 연산 시에도 제공될 수 있다.
에러 정정 블록(140) 및 랜더마이저/디-랜더마이저(150)는 페이지 버퍼(130)에 로드된 데이터에 대한 에러 정정 및 스크램블링(Scrambling)을 위한 인코딩 및 디코딩을 수행한다. 메모리 셀(110)에 데이터가 프로그램되는 경우에, 쓰기 데이터는 먼저 입출력 버퍼(160)로부터 페이지 버퍼(130)에 전달된다. 그리고 페이지 버퍼(130)에 저장된 쓰기 데이터는 랜더마이저/디-랜더마이저(150)에 의해서 랜덤화 처리된다. 랜덤화 처리된 쓰기 데이터는 이어서 에러 정정 블록(140)에 의해서 에러 정정을 위해 인코딩된다. 에러 정정 인코딩된 데이터는 다시 페이지 버퍼(130)에 전달된다. 페이지 버퍼(130)에 전달된 랜덤화 및 에러 정정 인코딩된 데이터는, 이후 목적 영역에 프로그램될 것이다.
더불어, 읽기 동작시 페이지 버퍼(130)에 의해서 센싱된 데이터는 먼저 에러 정정 블록(140)에 전달되어 디코딩된다. 즉, 페이지 버퍼(130)로부터 제공된 센싱된 데이터는 에러 정정 블록(140)에 의해서 에러가 존재하는지 검출된다. 만약, 센싱된 데이터에 에러가 존재하는 것으로 검출되면, 에러 정정 블록(130)은 페이지 버퍼(130)의 에러 위치를 참조하여 에러를 정정한다. 그리고 에러가 정정된 페이지 버퍼(130)에 저장된 읽기 데이터는 입출력 버퍼(160)에 전달되는 중에 또는 입출력 버퍼(160)를 통해서 출력되는 중에 디-랜덤화될 수 있다.
읽기 데이터에 대한 에러 디코딩 및 디-랜덤화 연산이 상술한 시퀀스에 따라 처리됨에 따라 페이지 버퍼(130)에 풀 페이지 덮어쓰기는 최소화될 수 있다. 왜냐하면, 디-랜덤화 연산이 에러 정정된 데이터가 페이지 버퍼(130)로부터 입출력 버퍼(160)에 전달되는 과정에서 수행되기 때문이다. 만일, 디-랜덤화 연산이 에러 정정된 데이터에 대해서 수행된 후에, 디-랜덤화된 데이터가 페이지 버퍼(130)에 저장되어야 하는 경우라면, 페이지 버퍼(130)는 풀 페이지의 데이터가 덮어쓰기 되어야 한다. 왜냐하면, 페이지 버퍼(130)에 의해서 센싱 및 래치된 데이터는 디-랜덤화 연산에 의해서 완전히 배열이 변경되기 때문이다. 하지만, 본 발명의 에러 정정 블록(140) 및 랜더마이저/디-랜더마이저(150)에 의하면, 디-랜덤화 연산을 위해 페이지 버퍼(130)에 대한 풀페이지 덮어쓰기는 필요하지 않게 된다. 더불어, 본 발명의 에러 정정 블록(140)은 에러가 존재할 경우에만 에러 위치에 대응하는 특정 단위의 데이터만을 덮어쓰기할 수 있다. 따라서, 에러가 존재하지 않은 경우에는 에러 정정을 위한 오버헤드(Overhead)가 최소화될 수 있다. 이러한 기능은 후술하는 도면들을 통해서 상세히 설명될 것이다.
입출력 버퍼(160)는 외부에서 제공되는 데이터를 페이지 버퍼(130)로 제공한다. 입출력 버퍼(160)는 외부에서 제공되는 명령어(iCMD)를 제어 로직(170)에 제공할 수 있다. 입출력 버퍼(160)는 외부에서 제공된 어드레스(ADD)를 제어 로직(170)이나 행 디코더(120)에 제공할 수 있다. 더불어, 입출력 버퍼(160)는 페이지 버퍼(130)에 의해서 센싱 및 래치된 데이터를 외부로 출력할 수 있다.
제어 로직(170)은 외부로부터 전달되는 명령어(iCMD) 또는 제어 신호(CNTL)에 응답하여 페이지 버퍼(130), 에러 정정 블록(140) 및 랜더마이저/디-랜더마이저(150)를 제어한다. 제어 로직(170)은 명령어(iCMD)에 따라 선택된 메모리 셀에 대한 프로그램, 읽기, 그리고 소거 동작을 수행하도록 페이지 버퍼(130), 에러 정정 블록(140) 및 랜더마이저/디-랜더마이저(150)를 제어할 수 있다.
특히, 제어 로직(170)은 데이터 읽기 동작시, 에러 디코딩된 데이터가 페이지 버퍼(130)에 저장된 후에 디-랜덤화 연산이 수행되도록 랜더마이저/디-랜더마이저(150)를 제어할 수 있다. 예를 들면, 읽기 인에이블 신호(/RE)의 토글링에 따라 페이지 버퍼(130)에 저장된 에러 정정 디코딩된 데이터는 랜더마이저/디-랜더마이저(150)에 전달될 수 있다. 그리고 랜더마이저/디-랜더마이저(150)에 의해서 디-랜덤화된 데이터는 입출력 버퍼(160)를 경유하여 외부로 출력될 것이다. 여기서, 랜더마이저/디-랜더마이저(150)는 페이지 버퍼(130)로부터 순차적으로 제공되는 데이터의 열 어드레스에 따라 시드(Seed)를 즉시 생성 가능한 시드 발생 회로를 구비할 수 있을 것이다.
전압 발생기(180)는 제어 로직(170)의 제어에 따라 각각의 워드 라인들로 공급될 다양한 종류의 워드 라인 전압들과, 메모리 셀들이 형성된 벌크(예를 들면, 웰 영역)로 공급될 전압을 생성한다. 각각의 워드 라인들로 공급될 워드 라인 전압들로는 프로그램 전압(Vpgm), 패스 전압(Vpass), 선택 및 비선택 읽기 전압들(Vrd, Vread) 등이 있다.
이상의 본 발명에 따른 불휘발성 메모리 장치(100)에 따르면, 데이터 읽기 동작시 에러 정정 연산이 적용된 데이터는 디-랜덤화 연산없이 페이지 버퍼(130)에 덮어쓰기 된다. 그리고 소스 시드(Source seed)를 사용한 디-랜덤화 연산은 페이지 버퍼(130)로부터 입출력 버퍼(160)로 출력되는 데이터에 대해서 수행된다. 일반적으로 데이터 읽기 동작시, 에러 정정 연산과 디-랜덤화 연산이 모두 적용된 데이터를 페이지 버퍼(130)에 덮어쓰기하는 경우, 데이터에 에러가 존재하지 않아도 랜덤화 연산에 따라 배열이 변경된 데이터는 풀페이지 단위로 덮어쓰기 되어야 한다. 이 경우, 페이지 버퍼(130)와 에러 정정 블록(140), 랜더마이저/디-랜더마이저(150) 사이의 데이터 전송은 열 선택 회로(미도시)와 열 리페어 회로(Column repair circuit) 등을 경유하게 된다. 이러한 구성은 페이지 버퍼(130)와 입출력 버퍼(160)의 입출력 라인들을 사용하게 됨에 따라 큰 오버헤드로 작용하게 된다.
하지만, 본 발명의 실시 예와 같이 디-랜덤화 연산을 페이지 버퍼(130)로부터 외부로 출력되는 데이터에 대해서 수행하면, 에러가 존재하지 않는 경우에는 덮어쓰기가 최소화될 수 있다. 더불어, 본 발명의 에러 정정 블록(140)은 에러가 존재하는 부분 데이터(Partial data)만을 에러 정정하여 페이지 버퍼(130)에 덮어쓰기할 수 있다. 따라서, 본 발명의 실시 예에 따르면, 읽기 동작시 에러 정정 및 디-랜덤화 연산에 의해서 야기되는 다양한 지연이 최소화될 수 있다. 따라서, 본 발명의 실시 예가 적용되면, 온칩 버퍼(예를 들면, SRAM)를 구비하지 않은 불휘발성 메모리 장치(100)의 읽기 성능이 획기적으로 개선될 수 있을 것으로 기대된다.
도 2는 도 1의 불휘발성 메모리 장치에서 쓰기 데이터의 처리 과정을 간략히 보여주는 블록도이다. 도 2를 참조하면, 불휘발성 메모리 장치(100)의 외부로부터 쓰기 명령어(Write Command), 어드레스(Address), 그리고 쓰기 데이터(W_Data)가 입력될 것이다.
도시되지는 않았지만, 쓰기 명령어(Write Command), 어드레스(Address)는 입출력 버퍼(160)로부터 제어 로직(170), 행 디코더(120) 또는 열 디코더(미도시) 등으로 전달될 것이다. 그리고 쓰기 데이터(W_Data)는 입출력 버퍼(160)로부터 페이지 버퍼(130)로 전달된다. 쓰기 데이터(W_Data)는 열 선택 회로(미도시)에 의해서 순차적으로 선택되어 페이지 버퍼(130)에 로드될 것이다. 페이지 버퍼(130)에 로드된 데이터는, 예를 들면, 4 Kbyte 단위를 구성할 수도 있을 것이다. 입출력 버퍼(160)로부터 페이지 버퍼(130)로의 쓰기 데이터(W_Data)의 이동 절차는 식별번호 ①로 도시하였다.
페이지 버퍼(130)에 로드된 쓰기 데이터(W_Data)는 랜덤화 연산을 위해서 랜더마이저(150a)에 전송된다. 쓰기 데이터(W_Data)의 랜더마이저(150a)로의 전송은 식별번호 ②로 도시하였다. 여기서, 랜더마이저(150a)는 랜더마이저/디-랜더마이저(150)의 일부 기능 또는 일부 구성일 수 있다. 즉, 랜더마이저(150a)는 쓰기 데이터(W_Data)를 특정 랜덤 시퀀스(Random Sequence)를 사용하여 스크램블링하는 구성이다. 셀 어레이(110)에 포함되는 메모리 셀들의 문턱 전압(또는, 문턱 전압 산포)은 인접한 메모리 셀들 간에 미치는 간섭에 의해 변화될 수 있다. 이러한 간섭의 크기는 쓰기 데이터(W_Data)의 패턴에 따라 다양하게 나타날 수 있다. 랜덤화 연산에 의하여 스크램블링된 데이터의 패턴에 의해서 셀들간의 간섭은 상대적으로 감소할 수 있다. 따라서 랜덤화 연산에 의해서, 불휘발성 메모리 장치(100)의 읽기 마진 또는 신뢰성이 향상될 수 있다. 더불어, 스크램블링에 의해서 보안 성능의 향상도 기대될 수 있다.
랜더마이저(150a)에 의해서 랜덤화된 쓰기 데이터(W_Data)는 에러 정정 인코딩을 위해서 에러 정정 블록(140)에 전달된다. 이러한 절차는 식별번호 ③으로 도시하였다. 에러 정정 블록(140)은 랜덤화된 쓰기 데이터(W_Data)를 부호어(Codeword) 단위로 인코딩하고, 그 결과로 패리티를 생성할 수 있다. 에러 정정 부호화 방식에는 다양한 방식이 적용될 수 있을 것이다. 예를 들면, 에러 정정 블록(140)의 에러 부호화 방식으로 BCH 부호(Bose-Chaudhuri Hocquenghem code), Hamming 부호(Hamming code), 리드 솔로몬 부호(Reed-Solomon code), 터보 부호(Turbo code), LDPC 부호(Low-density parity-check codes) 들 중 적어도 하나가 사용될 수 있을 것이다.
에러 정정 블록(140)에 의해서 부호화된 쓰기 데이터(W_Data')는 다시 페이지 버퍼(130)에 덮어쓰기 된다. 이러한 절차는 식별번호 ④로 도시하였다. 결국, 최초에 페이지 버퍼(130)에 로드된 쓰기 데이터(W_Data)의 배열과, 랜덤화 및 에러 정정 인코딩에 의해서 처리된 쓰기 데이터(W_Data')는 서로 다른 배열을 가지게 된다.
이후, 랜덤화 및 에러 정정 인코딩에 의해서 처리된 쓰기 데이터(W_Data')는 셀 어레이(110)의 목적 영역에 프로그램된다. 이러한 절차는 식별번호 ⑤로 도시하였다.
이상에서는 본 발명의 불휘발성 메모리 장치(100)에서 쓰기 데이터의 처리 과정을 간략히 설명되었다. 목적 페이지에 기입된 쓰기 데이터(W_Data')는 랜덤화 연산 및 에러 정정 인코딩에 의해서 최초에 페이지 버퍼(130)에 로드된 쓰기 데이터(W_Data)와 다른 배열을 갖는다. 이러한 배열은 읽기 동작시 에러 디코딩 및 디-랜덤화(De-randomize) 연산을 통해서 복구될 수 있다.
도 3은 본 발명의 랜더마이저/디-랜더마이저(150)의 간략한 구성을 보여주는 블록도이다. 도 3을 참조하면, 본 발명의 실시 예에 따른 랜더마이저/디-랜더마이저(150)는 시드 생성기(152)와 랜덤열 생성기(154), 그리고 믹서(156)를 포함할 수 있다.
시드 생성기(152)는 랜덤화 또는 디-랜덤화할 데이터에 대응하는 시드(Seed)를 고속으로 생성할 수 있다. 예를 들면, 시드 생성기(152)는 선택된 페이지의 행 어드레스(R_ADD) 및 열 어드레스(C_ADD, 또는 오프셋 정보)를 사용하여 페이지보다 작은 단위의 데이터를 랜덤화 또는 디-랜덤화하기 위한 시드(Seed)를 생성할 수 있다. 즉, 시드 생성기(152)는 페이지 버퍼(130)에 저장된 복수의 부분 데이터들 중 임의의 하나의 데이터를 랜덤화 또는 디-랜덤화하기 위한 시드(Seed)를 고속으로 생성할 수 있다.
랜덤열 생성기(154)는 시드(Seed)를 사용하여 랜덤열(Random Sequence: 이하, RS)을 생성한다. 랜덤열 생성기(154)는 입력되는 시드(Seed)를 초기값으로 하는 랜덤 시퀀스(RS)를 생성한다. 랜덤열 생성기(154)는, 예를 들면, 피보나치 방식(Fibonacci configuration)으로 동작하는 선형 궤환 시프트 레지스터로 구성될 수 있다.
믹서(156)는 랜덤화 연산 또는 디-랜덤화 연산을 위해서 제공되는 입력 데이터(Din)를 랜덤열(RS)과 믹싱하여 출력 데이터(Dout)로 출력한다. 여기서, 랜덤 시퀀스(RS)와 입력 데이터(Din)는 배타적 논리합(XOR) 연산에 의하여 믹싱되어 출력 데이터(Dout)로 출력될 수 있다.
상술한 본 발명의 랜더마이저/디-랜더마이저(150)의 구성을 통해서 랜덤화 또는 디-랜덤화될 데이터에 대한 고속의 시드 생성이 가능하다. 예를 들면, 디-랜덤화할 부분 데이터(Partial data)가 하나의 페이지 내에서 상대적으로 후반부의 칼럼 어드레스에 대응하는 경우, 본 발명의 시드 생성기(152)에 의해서 고속으로 시드의 생성이 가능하다.
도 4는 도 1의 불휘발성 메모리 장치에서 읽기 데이터의 처리 과정을 간략히 보여주는 블록도이다. 도 4를 참조하면, 불휘발성 메모리 장치(100)는 읽기 명령어 (Read command)및 어드레스(Address)에 응답하여 읽기 요청된 데이터를 출력한다.
페이지 버퍼(130)는 셀 어레이(110)로부터 어드레스(Address)에 대응하는 읽기 요청된 데이터를 센싱한다. 센싱된 데이터는 페이지 버퍼(130)에 구비된 래치들에 저장될 것이다. 이러한 절차는 식별번호 ⑥으로 도시하였다.
페이지 버퍼(130)에 래치된 읽기 데이터(R_Data)는 먼저 에러 정정 디코딩을 위해 에러 정정 블록(140)에 전송된다. 예를 들면, 읽기 데이터(R_Data)는 부호어(Codeword) 단위로 에러 정정 블록(140)에 전송될 수 있을 것이다. 이러한 절차는 식별번호 ⑦로 나타내었다.
에러 정정 블록(140)은 페이지 버퍼(130)로부터 전송된 데이터에 대한 에러의 존재 여부를 검출할 것이다. 하나의 부호어(Codeword)에는 에러를 검출할 수 있는 패리티가 포함되며, 패리티를 사용하여 에러 검출이 수행된다. BCH 부호(Bose-Chaudhuri Hocquenghem code)를 사용하는 에러 디코딩에서는, 패리티를 사용하여 에러 비트와 에러 위치가 검출될 수 있다. 에러 위치가 검출되면, 에러 정정 블록(140)은 페이지 버퍼(130) 상에서 에러 위치에 대응하는 비트를 정정된 비트로 덮어쓰기(예를 들면, 비트 전환)하는 방식으로 에러가 정정될 수 있다. 본 발명의 에러 정정 블록(140)은 이러한 에러가 존재하는 데이터 영역에 대해서만 에러 정정 처리를 수행하게 될 것이다. 이러한 절차는 식별번호 ⑧로 도시하였다. 따라서, 에러가 존재하지 않는 경우, 에러 정정 블록(140)에 의한 페이지 버퍼(130)로의 덮어쓰기는 생략될 수 있다. 이것이 가능한 이유는 읽기 데이터(R_Data)에 대한 디-랜덤화 연산이 페이지 버퍼(130)로부터 입출력 버퍼(160)로 출력되는 단계에서 수행되기 때문이다.
페이지 버퍼(130)에 저장된 에러 정정된 읽기 데이터(R_Data)는 출력 요청(또는 읽기 인에이블 신호 /RE의 토글링)에 따라 특정 데이터 단위로 디-랜더마이저(150b)에 전달된다. 예를 들면, 하나의 페이지 크기의 읽기 데이터(R_Data)는 I/O 핀 단위의 작은 사이즈로 분할되어 디-랜더마이저(150b)에 복수의 클록 사이클 동안에 전달될 수 있을 것이다. 이러한 절차는 식별번호 ⑨로 도시되었다. 디-랜더마이저(150b)는 랜더마이저/디-랜더마이저(150)의 일부 기능 또는 일부 구성일 수 있다.
디-랜더마이저(150b)는 전달된 읽기 데이터(R_Data)에 대해서 고속의 디-랜덤화 연산을 수행한다. 앞서 설명된 도 3의 구조를 통해서, 디-랜더마이저(150b)는 전달된 읽기 데이터의 행 어드레스(R_ADD)와 열 어드레스(C_ADD)를 이용하여 고속으로 시드를 생성할 수 있다. 그리고 디-랜더마이저(150b)는 생성된 시드로부터 랜덤화 연산시에 적용된 랜덤열(RS)을 생성한다. 그리고 디-랜더마이저(150b)는 생성된 랜덤열과 읽기 데이터(R_Data)를 사용한 고속의 디-랜덤화 연산을 수행할 것이다. 이러한 디-랜덤화 연산에 의해서 생성된 읽기 데이터(R_Data)는 입출력 버퍼(160)에 제공된다. 이러한 절차는 식별번호 ⑩으로 나타내었다.
상술한 본 발명의 실시 에에 따른 읽기 절차에 따르면, 읽기 데이터(R_Data)는 페이지 버퍼(130)에 먼저 래치된다. 그리고 읽기 데이터(R_Data)는 에러 정정 디코딩에 의해서 처리된 이후에 다시 페이지 버퍼(130)에 덮어쓰기 된다. 그리고 읽기 데이터(R_Data)에 대한 디-랜덤화 연산은 페이지 버퍼(130)로부터 입출력 버퍼(160)로 출력되는 시점에 수행된다. 이러한 읽기 절차에 따르면, 읽기 데이터(R_Data)에 대한 디-랜덤화 연산은 에러 정정 디코딩된 데이터가 페이지 버퍼(130)로부터 외부로 출력되는 시점에 수행된다. 따라서, 디-랜덤화 연산에 의해서 발생하는 데이터 배열의 변경 문제는 더 이상 고려될 필요가 없게 된다. 더불어, 본 발명의 에러 정정 블록(140)은 에러가 존재하는 데이터에 대해서만 페이지 버퍼(130)로의 덮어쓰기를 수행할 수 있다. 따라서, 에러가 존재하지 않는 경우에는 덮어쓰기가 스킵될 수도 있다.
도 5는 본 발명의 실시 예에 따른 불휘발성 메모리 장치(100)의 읽기 방법을 간략히 보여주는 순서도이다. 도 5를 참조하면, 읽기 동작시 에러 정정 디코딩시에는 에러가 존재하는 경우에만 페이지 버퍼(130, 도 1 참조)로의 덮어쓰기가 수행된다. 더불어, 읽기 데이터(R_Data)에 대한 디-랜덤화 연산은 페이지 버퍼(130)로부터 외부로 출력되는 시점에 수행된다.
S110 단계에서, 불휘발성 메모리 장치(100, 도 1 참조)는 읽기 명령어(Read command)를 외부로부터 수신한다. 불휘발성 메모리 장치(100)는 읽기 명령어(Read command)와 더불어 어드레스(Address)를 수신할 것이다. 제어 로직(170, 도 1 참조)은 읽기 명령어(Read command), 어드레스(Address)와 더불어 외부로부터 제공되는 제어 신호(CNTL)에 따라 읽기 동작을 준비할 것이다.
S120 단계에서, 제어 로직(170)은 어드레스(Address)에 의해서 셀 어레이(110)의 선택된 메모리 셀들로부터 데이터를 센싱하도록 행 디코더(120) 및 페이지 버퍼(130)를 제어할 것이다. 페이지 버퍼(130)는 비트 라인들을 통하여 선택된 메모리 셀들에 저장된 데이터를 센싱하고, 센싱된 데이터를 래치한다.
S130 단계에서, 제어 로직(170)은 페이지 버퍼(130)에 래치된 읽기 데이터(R_Data)가 에러 정정 블록(140)으로 전송되도록 페이지 버퍼(130) 및 에러 정정 블록(150)을 제어할 것이다. 페이지 버퍼(130)에 저장된 읽기 데이터(R_Data)는 예를 들면 패리티 필드를 포함하는 부호어 단위(Codeword unit)로 에러 정정 블록(140)에 전달될 수 있을 것이다. 그러면 에러 정정 블록(140)은 전달된 부호어에 대한 에러 검출을 수행한다. 만일, 에러가 존재하는 경우, 에러 정정 블록(140)은 신드롬(Syndrome)을 사용하여 에러 위치 정보를 획득한다. 그리고 에러 위치에 대응하는 페이지 버퍼(130)의 래치에 정정된 데이터를 덮어쓰기할 수 있다. 만일, 부호어에 에러가 존재하지 않는 경우, 이러한 정정 데이터의 덮어쓰기는 스킵될 것이다. 페이지 버퍼(130)에 래치된 모든 데이터에 대한 이러한 에러 검출 및 정정 연산이 수행되면, 페이지 버퍼(130)에는 에러가 정정된 풀 페이지 데이터가 준비된다.
S140 단계에서, 에러의 검출 및 정정이 완료된 데이터가 페이지 버퍼(130)에 저장되면, 제어 로직(170)은 외부로부터 읽기 인에이블 신호(/RE)의 입력 여부를 검출한다. 읽기 인에이블 신호(/RE)가 제공되지 않은 것으로 판단되면, 제어 로직(170)은 읽기 인에이블 신호(/RE)가 입력될 때까지 또는 또 다른 제어 신호가 입력되는 검출할 것이다. 읽기 인에이블 신호(/RE)가 입력되는 것으로 검출되면, 절차는 S150 단계로 이동한다.
S150 단계에서, 제어 로직(170)은 페이지 버퍼(130)에 저장된 데이터를 디-랜덤화하기 위해 랜더마이저/디-랜더마이저(150)에 전달한다. 랜더마이저/디-랜더마이저(150)는 읽기 인에이블 신호(/RE)에 동기되어 전달되는 출력 데이터 열에 대한 디-랜덤화 연산을 수행하여 입출력 버퍼(160)에 전달할 것이다.
S160 단계에서, 랜더마이저/디-랜더마이저(150)에 의해서 디-랜덤화된 출력 데이터는 입출력 버퍼(160)에 전달되고, 외부로 출력될 것이다.
이상에서는 본 발명의 불휘발성 메모리 장치(100)에서 수행되는 읽기 방법이 간략히 설명되었다. 읽기 동작시, 페이지 버퍼(130)를 통해서 센싱된 데이터는, 에러 검출 및 정정이 완료된 이후에 디-랜덤화 처리없이 페이지 버퍼(130)에 모두 기입된다. 그리고 디-랜덤화 연산은 페이지 버퍼(130)로부터 외부로 출력되는 데이터에 대해서 수행된다. 이러한 특징에 따라 에러 정정된 데이터에 대해서 수행되는 디-랜덤화 연산의 경우, 데이터 배열의 변경에 따른 페이지 버퍼(130)의 덮어쓰기 오버헤드가 감소될 수 있다. 더불어, 본 발명의 에러 정정 블록(140)에 따라 에러가 존재하지 않는 데이터의 경우, 페이지 버퍼(130)로의 덮어쓰기 절차가 스킵될 수 있다. 따라서, 본 발명의 읽기 방법에 따르면 읽기 퍼포먼스의 획기적 향상이 기대된다.
도 6은 본 발명의 실시 예에 불휘발성 메모리 장치에서 읽기 방법을 예시적으로 보여주는 타이밍도이다. 도 6을 참조하면, 불휘발성 메모리 장치(100)는 외부로부터의 읽기 명령어에 응답하여 본 발명의 에러 정정 연산 및 디-랜덤화 연산을 수행한다. 좀더 자세히 설명하면 다음과 같다.
T0 시점에서, 불휘발성 메모리 장치(100)는 외부(예를 들면, 메모리 컨트롤러)로부터 읽기 명령어를 수신할 것이다. 예를 들면, 불휘발성 메모리 장치(110)는 입출력 데이터 라인(I/Oi)를 통해서 읽기 명령어('00h')를 수신한다. 즉, 명령어 래치 인에이블 신호(CLE)의 하이(High) 구간에서 쓰기 인에이블 신호(/WE)가 토글링되면 불휘발성 메모리 장치(100)에 읽기 명령어('00h')가 입력된다.
T1 시점에서, 어드레스(ADD)가 입력된다. 예를 들면, 읽기 요청되는 데이터의 행 어드레스와 열 어드레스가 어드레스 래치 인에이블 신호(ALE)의 하이(High) 구간에서 쓰기 인에이블 신호(/WE)가 토글링되면 불휘발성 메모리 장치(100)에 입력된다. 여기서, 읽기 어드레스(ADD)를 입력하기 위한 쓰기 인에이블 신호(/WE)의 클록 사이클은 예시적으로 도시된 것일 뿐임은 잘 이해될 것이다.
T2 시점에서, 읽기 어드레스(ADD)의 입력이 완료되면, 불휘발성 메모리 장치(100)는 레디/비지 신호(R/B)를 비지 상태(예를 들면, 논리 로우)로 천이시킨다. 그리고 불휘발성 메모리 장치(100)는 입력된 어드레스(ADD)에 대응하는 메모리 셀들을 센싱하고, 센싱된 데이터를 페이지 버퍼(130)에 래치한다.
T3 시점에서, 불휘발성 메모리 장치(100)는 페이지 버퍼(130)에 래치된 읽기 데이터에 대한 에러 디코딩을 수행할 것이다. 즉, 페이지 버퍼(130)에 래치된 읽기 데이터(R_Data)가 부호어 단위로 에러 정정 블록(140)에 전달하면, 에러 정정 블록(140)은 전달된 부호어에 대해서 에러를 검출하고, 검출된 에러에 대한 정정을 수행할 것이다. 에러 정정 블록(140)에 의해서 에러가 검출된 데이터는 정정되고, 정정된 데이터는 페이지 버퍼(130)에 덮어쓰기될 것이다. 이러한, 에러 검출 및 정정 처리는 T4 시점까지 수행될 것이다.
T4 시점에서, 읽기 인에이블 신호(/RE)의 토글링에 응답하여 페이지 버퍼(130)에 래치된 데이터는 입출력 단위로 디-랜덤화되어 입출력 버퍼(160)에 전달된다. 그리고 입출력 버퍼(160)에 전달된 데이터는 입출력 패드를 통해서 외부로 출력될 것이다.
상술한 타이밍도에서 나타난 본 발명의 특징에 따르면, 읽기 퍼포먼스를 나타내는 시간(tR)에서 디-랜덤화 연산에 소요되는 시간은 포함되지 않는다. 디-랜덤화 연산은 페이지 버퍼(130)로부터 입출력 버퍼를 통하여 출력되는 시점에 수행되기 때문에, 읽기 인에이블 신호(/RE)의 토글링 시점에 동기되어 발생할 것이다. 따라서, 읽기 요청된 데이터의 센싱 및 디코딩에 소요되는 시간(tR)은 획기적으로 감소될 수 있음을 알 수 있다. 더불어, 에러 디코딩에 소요되는 시간(tECC)은 본 발명의 에러 정정 블록(140)의 적용에 따라 대폭 감소될 수 있다. 즉, 에러가 존재하는 데이터에 대해서만 선택적으로 페이지 버퍼(130)로의 덮어쓰기가 발생하기 때문이다.
도 7은 본 발명의 실시 예에 따른 에러 정정 블록을 보여주는 블록도이다. 도 7을 참조하면, 에러 정정 블록(140)은 BCH 부호(Bose-Chaudhuri Hocquenghem code)를 사용하여 신드롬을 생성하고, 신드롬을 사용하여 에러 위치를 검출하는 방식을 예로 설명될 것이다. 하지만, 에러 위치를 검출할 수 있는 다양한 에러 정정 부호들이 본 발명의 기술에 사용될 수 있음은 잘 이해될 것이다. 에러 정정 블록(140)은 읽기 버퍼(141), 신드롬 계산 블록(142), 치엔 서치 블록(143), 에러 어드레스 발생기(144), 정정부(145), 그리고 쓰기 버퍼(146)를 포함할 수 있다.
읽기 버퍼(141)에는 페이지 버퍼(130)로부터 전송되는 부호어 단위의 데이터R(x)를 저장한다. 읽기 버퍼(141)에 저장된 데이터 R(x)는 신드롬 계산 블록(142)에 제공될 것이다.
신드롬 계산 블록(142)은 데이터 R(x)를 제공받아 신드롬 S(x)를 계산한다. 예를 들면, 신드롬 S(x)는 제공되는 독출 데이터 R(x)에 패리티 검출 다항식 H(x)를 곱함으로써 계산될 수 있다. 패리티 검출 다항식 H(x)은 생성 다항식 G(x)의 근을 적용하여 만들어진다. 신드롬 S(x)을 통해서, 독출 데이터 R(x)의 에러 존재 여부가 검출된다. 신드롬 S(x)은 데이터 R(x)에 대한 제반 에러 정보를 포함한다. 즉, 신드롬 S(x)에는 에러의 위치와 패턴 및 에러의 크기까지 포함된다. 따라서, 신드롬 S(x)를 통해서 독출 데이터 R(x)에 대한 제반 에러 비트의 검출, 에러의 정정 가능성 판단, 에러의 정정 연산이 이루어질 수 있다.
치엔 서치 블록(143)은 신드롬 S(x)를 사용하여 에러 정정 벡터 E(x)를 생성할 수 있다. 신드롬 계산 블록(142)에 의해서 계산된 신드롬 S(x)는 도시되지는 않았지만, KES 블록(Key Equation Solver Block)으로 전달될 수 있다. KES 블록에 의해서 신드롬 S(x)로부터 에러 위치 다항식(Error Location Polynomial) σ(x)와 에러 패턴 다항식 ω(x)이 생성될 수 있다. 치엔 서치 블록(143)은 에러 위치 다항식의 근을 계산한다. 그리고 에러 위치 다항식을 통해서 검색된 에러 위치들 각각에 대응하는 에러의 크기를 계산한다. 치엔 서치 블록(143은 치엔 서치 알고리즘(Chien Search Algorithm)을 통해 독출 데이터 R(x)의 에러 위치와 에러 크기를 구하면, 이러한 에러를 정정하기 위한 에러 정정 벡터 E(x)를 출력한다. 에러 정정 벡터 E(x)에는 전달된 부호어 상에서의 에러 위치 정보를 포함한다.
에러 어드레스 발생기(144)는 에러 정정 벡터 E(x)를 사용하여 페이지 버퍼(130)에서 덮어쓰기되어야 할 부분 데이터의 어드레스 정보를 생성할 수 있다. 에러 어드레스 발생기(144)의 구체적인 구성은 후술하는 도 9에서 상세히 설명될 것이다. 에러 어드레스 발생기(144)는 검출된 에러의 위치 및 크기에 따른 쓰기 클록(W_CLK)을 생성하여 페이지 버퍼(130)에 전달할 수 있다. 에러 어드레스 발생기(144)는 정정된 데이터로 덮어쓰기되어야 하는 페이지 버퍼(130)의 위치에 대응하는 페이지 버퍼 어드레스(PB_ADD)를 생성한다.
정정부(145)는 에러 정정 벡터 E(x)를 이용하여 에러가 존재하는 데이터를 정정한다. 정정부(145)는 읽기 버퍼(141)에 저장된 독출 데이터 R(x)와 치엔 서치 블록(143)에 의해서 계산된 에러 정정 벡터 E(x)에 대한 배타적 논리합(XOR) 연산을 수행하여 독출 데이터 R(x)에 포함된 에러를 정정할 수 있다. 에러가 정정된 데이터는 쓰기 버퍼(146)에 저장된 후에 페이지 버퍼(130)에 덮어쓰기될 수 있다.
이상에서는 본 발명의 에러 정정 블록(140)의 구성이 예시적으로 설명되었다. 에러 정정 블록(140)은 에러 위치를 참조하여 페이지 버퍼(130)의 에러가 존재하는 부분 데이터만을 덮어쓰기함으로서 에러 정정을 수행할 수 있다. 만일, 처리되는 부호어에 에러가 존재하지 않는 것으로 검출되면, 대응하는 부호어가 저장된 페이지 버퍼(130)의 래치들은 덮어쓰기될 필요가 없다.
도 8은 에러 정정 블록(140)에 전달되는 부호어에 대한 에러 디코딩 결과에 대응하는 ECC 플레임(ECC flame)을 간략히 보여주는 테이블이다. 도 8을 참조하면, ECC 플레임은 페이지 버퍼 어드레스(PB_ADD), 에러 정정 비트(ECC BIT)와 에러 위치 정보에 대응하는 치엔 비트(CHIEN BIT)를 포함하게 된다.
여기서, 페이지 버퍼 어드레스(PB_ADD)는 에러 검출을 위해서 전달된 부호어의 페이지 버퍼 상에서의 위치에 대응한다. 에러 정정 비트(ECC BIT)는 ECC 플레임 내에서의 비트 위치를 나타낸다. 그리고 치엔 비트(CHIEN BIT)는 에러 검출 연산을 통해서 검출된 에러의 위치를 나타낸다. 예를 들면, 치엔 비트(CHIEN BIT)의 논리값이 '1'인 경우에는 에러가 존재하는 위치로 판단될 수 있을 것이다.
도 9는 에러 어드레스 발생기의 구조를 예시적으로 보여주는 도면이다. 도 9를 참조하면, 상술한 도 8의 ECC 플레임 구조에서, 에러가 발생된 페이지 버퍼 어드레스(PB_ADD)를 검출하기 위한 에러 어드레스 발생기(144)가 예시적으로 도시되어 있다.
하나의 부호어에 대한 에러 검출 연산의 결과로 제공되는 치엔 비트들(CHIEN BIT)을 사용하여 덮어쓰기 되어야 할 페이지 버퍼의 어드레스가 결정될 수 있다. 제 1 게이트(144a)에는 치엔 비트들(CHIEN BIT<0>~CHIEN BIT<7>)이 입력된다. 어느 하나의 치엔 비트라도 논리 '1'인 경우, ECC 비트(ECC BIT<0>~ECC BIT<7>)에 대응하는 페이지 버퍼 영역은 에러 정정된 데이터로 덮어쓰기될 것이다. 즉, 페이지 버퍼<0>에 대한 히트 정보는 '1'로 출력될 수 있다.
제 2 게이트(144b)에는 치엔 비트들(CHIEN BIT<8>~CHIEN BIT<15>)이 입력된다. 치엔 비트들(CHIEN BIT<8>~CHIEN BIT<15>) 중에서 어느 하나라도 논리 '1'인 경우, ECC 비트(ECC BIT<8>~ECC BIT<15>)에 대응하는 페이지 버퍼 영역은 에러 정정된 데이터로 덮어쓰기될 것이다. 즉, 페이지 버퍼<1>에 대한 히트 정보는 '1'로 출력될 수 있다.
제 3 게이트(144c)에는 치엔 비트들(CHIEN BIT<16>~CHIEN BIT<23>)이 입력된다. 치엔 비트들(CHIEN BIT<16>~CHIEN BIT<23>) 중에서 어느 하나라도 논리 '1'인 경우, ECC 비트(ECC BIT<16>~ECC BIT<23>)에 대응하는 페이지 버퍼 영역은 에러 정정된 데이터로 덮어쓰기될 것이다. 즉, 페이지 버퍼<2>에 대한 히트 정보는 '1'로 출력될 수 있다.
제 4 게이트(144d)에는 치엔 비트들(CHIEN BIT<24>~CHIEN BIT<31>)이 입력된다. 치엔 비트들(CHIEN BIT<24>~CHIEN BIT<31>) 중에서 어느 하나라도 논리 '1'인 경우, ECC 비트(ECC BIT<24>~ECC BIT<31>)에 대응하는 페이지 버퍼 영역은 에러 정정된 데이터로 덮어쓰기될 것이다. 즉, 페이지 버퍼<3>에 대한 히트 정보는 '1'로 출력될 수 있다.
도 10은 에러가 검출된 ECC 플레임의 예를 간략히 보여준다. 도 10을 참조하면, 에러가 발생한 위치는 ECC 비트(<4>, <17>, <20>, <44>)라 가정하기로 한다. 이때, 에러 검출 결과 치엔 비트(<4>, <17>, <20>, <44>)의 논리값이 논리 '1'이고 나머지 치엔 비트들은 논리 '0'으로 출력된 것으로 가정하기로 한다.
도 11a은 도 10의 ECC 플레임 조건에서의 페이지 버퍼(130)로의 덮어쓰기 동작을 예시적으로 보여주는 타이밍도이다. 도 11a를 참조하면, 페이지 버퍼(130)로부터 에러 검출 및 정정을 위한 부호어의 읽기 단계(t0~t7)와 검출된 에러 위치에 정정된 데이터를 덮어쓰기 하는 단계(t7~t9)로 나눌 수 있다. 시점 t9 이후는 다른 부호어의 읽기 동작에 해당한다.
먼저 t0 시점으로부터 t7 시점까지 읽기 버퍼(141)에 에러 검출의 대상이 되는 부호어가 전달된다. 읽기 클록(Read CLK)에 동기되어 부호어는 페이지 버퍼(130)로부터 읽기 버퍼(141)에 전송될 것이다. 그러면, 에러 검출 연산 및 정정 연산이 수행되어 도 10에서 설명된 형태의 ECC 플레임의 생성될 것이다. 치엔 비트(<4>, <17>, <20>, <44>)가 논리 '1'이므로 에러가 존재하는 페이지 버퍼 어드레스 (PB<0>, PB<2>)에 대해서만 정정된 데이터의 덮어쓰기가 수행될 것이다. 히트 정보가 4비트로 제공된다면, '1010'으로 제공될 수 있다. 즉, 히트 정보 1010'는 페이지 버퍼 어드레스 (PB<0>, PB<2>)에 대해서만 덮어쓰기가 수행됨을 의미한다. 따라서, 쓰기 클록(W_CLK)은 2 사이클만 페이지 버퍼(130)에 제공될 것이다. 즉, 에러가 정정되어야 하는 부분 페이지만이 페이지 버퍼(130)에 덮어쓰기될 것이다.
도 11b는 에러가 존재하지 않는 부호어에 대한 처리 방법을 보여주는 타이밍도이다. 도 11b를 참조하면, 페이지 버퍼(130)로부터 독출된 부호어에 에러가 검출되지 않으면, 페이지 버퍼(130)로의 정정된 데이터의 덮어쓰기 동작은 스킵(Skip)될 수 있다.
먼저 t0 시점으로부터 t7 시점까지 읽기 버퍼(141)에 에러 검출의 대상이 되는 부호어가 전달된다. 읽기 클록(Read CLK)에 동기되어 부호어는 페이지 버퍼(130)로부터 읽기 버퍼(141)에 전송될 것이다. 그러면, 에러 검출 연산 및 정정 연산이 수행되어 ECC 플레임의 생성될 것이다. 이때, 에러 검출 동작의 결과로 생성되는 ECC 플레임에서 논리 '1'인 치엔 비트가 존재하지 않는 경우, 히트 정보(Hit PB)는 논리 '0000'으로 생성될 수 있다. 즉, 히트 정보 '0000'는 전달된 부호어에 에러가 존재하지 않음을 나타내며, 페이지 버퍼(130)에 정정된 데이터를 덮어쓰기할 필요가 없음을 나타낸다. 따라서, 쓰기 클록(W_CLK)은 비활성화 상태로 유지될 것이다. t7 시점부터는 또 다른 부호어가 페이지 버퍼(130)로부터 에러 정정 블록(140)으로 전달된다.
이상에서는 본 발명의 에러 정정 블록(140)의 특징이 설명되었다. 본 발명의 에러 정정 블록(140)은 에러가 존재하는 경우에만 페이지 버퍼(130)의 일부 영역에 대한 덮어쓰기를 수행할 수 있다. 따라서, 에러가 존재하지 않는 경우에는 페이지 버퍼(130)에 대한 덮어쓰기에 따른 오버헤드가 획기적으로 감소될 수 있다.
도 12는 본 발명의 실시 예에 따른 불휘발성 메모리 장치를 보여주는 블록도이다. 도 12를 참조하면, 불휘발성 메모리 장치(200)는 셀 어레이(210), 행 디코더(220), 페이지 버퍼(230), 에러 정정 블록(240), 랜더마이저/디-랜더마이저(250), 입출력 버퍼(260), 그리고 제어 로직(270)을 포함할 수 있다. 여기서, 셀 어레이(210), 행 디코더(220), 페이지 버퍼(230), 에러 정정 블록(240), 랜더마이저/디-랜더마이저(250), 입출력 버퍼(260) 등은 앞서 설명된 도 1의 그것들과 실질적으로 동일하다. 따라서, 이것들에 대한 구체적인 설명은 생략하기로 한다.
불휘발성 메모리 장치(200)는 소스 영역으로부터 읽혀진 데이터에 대해 랜덤화 연산 및 에러 정정 연산을 적용하여 목적 영역으로 카피할 수 있다. 특히, 본 발명의 불휘발성 메모리 장치(200)는 소스 영역으로부터 읽혀진 소스 데이터의 일부를 업데이트하여 목적 영역에 저장할 수 있다. 이하에서는 이러한 카피백 동작을 업데이트 카피백 동작(Update copy-back operation)이라 칭하기로 한다.
카피백 동작시 소스 페이지와 목적 페이지는 서로 다른 행 어드레스를 가진다. 행 어드레스를 기준으로 시드(Seed)를 생성하는 랜더마이저/디-랜더마이저(250)를 온칩 상에 구현한 불휘발성 메모리 장치(200)의 경우, 소스 페이지의 시드와 목적 페이지의 시드(Seed)가 달라진다. 따라서, 업데이트 카피백 동작을 수행할 경우 페이지 버퍼(230)에 저장된 소스 페이지의 시드(Seed)와, 외부에서 입력된 추가 데이터의 시드(Seed)는 다른 값을 가져야 한다. 따라서, 소스 페이지의 랜덤화 배열과 추가 데이터의 랜덤화 배열을 일치시키기 위한 처리가 없이는 업데이트 카피백 동작은 수행되기 어렵다.
셀 어레이(210)는 복수의 메모리 블록들을 포함한다. 그리고 각각의 메모리 블록은 복수의 페이지 영역들로 구분된다. 카피백 동작시 어느 하나의 페이지 영역으로부터 읽혀진 소스 데이터는 페이지 버퍼(230)에 일시 저장된다. 이때, 소스 데이터는 불휘발성 메모리 장치(200)의 외부로부터 제공되는 추가 데이터(Supplement data)에 의해서 업데이트될 수 있다. 추가 데이터는 하나의 페이지 사이즈보다 작은 사이즈일 수 있다.
제어 로직(270)은 카피백 동작시 소스 데이터를 업데이트하기 위한 추가 데이터가 존재하는 경우에, 다음의 처리 절차를 수행한다. 여기서, 소스 데이터는 제 1 페이지 영역(Page_1, 212)으로부터 독출된 데이터이고, 목적 영역은 제 3 페이지 영역(Page_3, 214)라 가정하기로 한다. 카피백을 소스 데이터의 읽기 명령이 제공되면, 제어 로직(270)은 제 1 페이지 영역(Page_1)으로부터 소스 데이터를 센싱 및 래치하도록 페이지 버퍼(230)를 제어할 것이다. 그리고 소스 데이터를 업데이트할 추가 데이터가 존재하는 것으로 검출되면, 제어 로직(270)은 추가 데이터에 대한 랜덤화 연산을 수행한다. 랜덤화 연산은 소스 데이터와 동일한 시드를 사용하여 수행될 것이다. 랜덤화된 추가 데이터는 페이지 버퍼(230)에 저장된 소스 데이터에 덮어쓰기될 것이다.
이후, 제어 로직(270)은 업데이트된 소스 데이터를 목적 영역인 제 3 페이지 영역(Page_3)에 프로그램하기 위한 랜덤화 처리 및 에러 정정 인코딩을 수행하도록 에러 정정 블록(240) 및 랜더마이저/디-랜더마이저(250)를 제어할 것이다. 먼저, 랜더마이저/디-랜더마이저(250)는 추가 데이터로 업데이트된 소스 데이터를 소스 시드를 사용하여 디-랜덤화한다. 디-랜덤화된 데이터는 이번에는 목적 영역에 대응하는 목적 시드(Destination Seed)로 랜덤화된다. 이어서, 목적 시드로 랜덤화된 데이터는 에러 정정 블록(240)에 의해서 에러 정정 인코딩을 선택적으로 수행할 수도 있을 것이다. 에러 정정 인코딩을 통해서 처리된 데이터는 페이지 버퍼(230)에 덮어쓰기 되고, 이후 목적 영역에 프로그램될 것이다.
이상에서는 업데이트 카피백 동작을 위한 불휘발성 메모리 장치(200)의 기능이 간략히 설명되었다. 업데이트 카피백 동작은 소스 데이터를 업데이트하기 위한 추가 데이터가 존재할 때 트리거될 수 있다. 추가 데이터가 검출되면, 소스 시드를 사용하여 추가 데이터의 랜덤화 연산이 수행되고, 랜덤화된 추가 데이터가 소스 데이터에 덮어쓰기됨으로써 업데이트될 수 있다. 이후, 업데이트된 소스 데이터는 소스 시드에 의한 디-랜덤화 및 목적 시드에 의한 랜덤화 처리를 거쳐서 목적 영역에 기입될 것이다. 이때, 에러 정정 인코딩이 수행될 수 있음은 잘 이해될 것이다. 상술한 랜덤화 방식을 적용하면, 카피백 동작시 소스 데이터의 용이한 업데이트가 가능하다.
도 13은 본 발명의 실시 예에 불휘발성 메모리 장치에서 업데이트 카피백을 수행하기 위한 명령어 시퀀스를 보여주는 타이밍도이다. 도 13을 참조하면, 업데이트 카피백을 위해서 소스 데이터(S_Data)의 읽기 명령과, 소스 데이터를 업데이트하기 위한 추가 데이터(D1, D2)가 입력될 것이다.
먼저, 본 발명의 업데이트 카피백 동작을 위해서 소스 데이터(S_Data)를 읽기 위한 명령어 시퀀스가 제공된다. 예를 들면, 레디/비지 신호(R/B)가 레디 상태('High')인 구간에서 명령어 시퀀스('00h'-'S_ADD'-'35h')가 입력될 수 있다. 여기서, 소스 어드레스(261)는 카피백될 소스 데이터의 어드레스이다. 불휘발성 메모리 장치(200)는 명령어 시퀀스('00h'-'S_ADD'-'35h')에 응답하여 레디/비지 신호(R/B)를 비지 상태('Low')로 천이시키고, 소스 영역의 데이터를 센싱하여 페이지 버퍼(230)에 래치한다.
페이지 버퍼(230)에 래치된 소스 데이터(S_Data)는 읽기 인에이블 신호(미도시)에 응답하여 외부로 출력될 수도 있다. 입출력 라인(I/Oi) 라인을 통해서 외부로 출력되는 소스 데이터(262)가 예시적으로 도시되었다. 하지만, 소스 데이터(S_Data)의 출력은 업데이트 카피백 동작에서 반드시 필요한 절차가 아님은 잘 이해될 것이다.
이어서, 소스 데이터(S_Data)가 기입될 목적 영역의 어드레스 및 추가 데이터(D1, D2)의 입력이 진행된다. 여기서, 명령어 시퀀스('85h'-'D_ADD1'-'D1')에서 목적 영역의 어드레스(D_ADD1, 263)와 추가 데이터(D1, 264)가 입력될 수 있다. 어드레스(D_ADD1, 263)에는 목적 영역의 행 어드레스와 추가 데이터(D1, 264)에 대응하는 열 어드레스가 포함될 수 있다. 더불어, 명령어 시퀀스('85h'-'D_ADD2'-'D2')를 통해서 추가 데이터(D2, 266)가 제공된다. 어드레스(D_ADD2, 265)에는 추가 데이터(D2, 266)에 대응하는 열 어드레스가 포함될 수 있다. 이후, 컨펌 명령어('10h')가 제공되면, 불휘발성 메모리 장치(200)는 본 발명의 실시 예에 따른 소스 데이터(S_Data)를 업데이트하기 위한 랜덤화 연산, 디-랜덤화 연산을 수행할 것이다. 여기서, 추가 데이터(D1, D2)의 입력 회수는 사용자에 의해서 다양하게 변경될 수 있을 것이다.
도 14는 도 12의 불휘발성 메모리 장치에서 본 발명의 업데이트 카피백 동작을 수행하는 과정을 보여주는 블록도이다. 도 14를 참조하면, 불휘발성 메모리 장치(200)의 외부로부터 카피백 명령어와 함께, 목적 어드레스 및 추가 데이터(D1, D2)가 입력된다. 여기서, 소스 영역으로부터 소스 데이터(S_Data)는 이미 페이지 버퍼(230)에 래치된 상태라 가정하기로 한다.
추가 데이터(D1, D2)가 입출력 버퍼(260)를 경유하여 입력되면, 추가 데이터(D1, D2)는 랜더마이저(250a)에 제공될 것이다. 랜더마이저(250a)는 랜더마이저/디-랜더마이저(250)의 일부 기능 또는 일부 구성일 수 있다. 추가 데이터(D1, D2)의 랜더마이저(250a)로의 전송 절차는 식별번호 ①로 도시하였다.
랜더마이저(250a)는 추가 데이터(D1, D2) 각각에 대한 랜덤화 연산을 수행할 것이다. 이때, 추가 데이터(D1, D2)는 소스 데이터(S_Data)의 랜덤화 연산에 사용되는 소스 시드(S_Seed)를 사용하여 랜덤화된다. 이때, 추가 데이터(D1, D2)를 랜덤화하기 위해, 소스 시드(S_Seed)와 열 어드레스를 사용한 고속의 랜덤열 생성 방식이 사용될 수 있을 것이다. 소스 시드(S_Seed)를 이용하여 랜덤화된 추가 데이터(D1, D2)는 페이지 버퍼(230)에 래치된 소스 데이터(S_Data)에 덮어쓰기될 것이다. 이러한 절차는 식별번호 ②로 도시하였다.
페이지 버퍼(230) 상에서 랜덤화된 추가 데이터(D1, D2)로 덮어쓰기된 소스 데이터(S_Data)는 동일한 소스 시드(S_Seed)를 통해서 랜덤화된 풀 페이지 데이터에 해당한다. 따라서, 소스 데이터(S_Data)와 추가 데이터(D1, D2) 사이의 랜덤화 처리의 불일치로 인한 문제는 해소된 상태이다. 이어서, 업데이트된 소스 데이터(S_Data)는 디-랜더마이저(250b)로 전달된다. 이러한 절차는 식별번호 ③으로 도시하였다.
디-랜더마이저(250b)는 소스 시드(S_Seed)를 사용하여 업데이트된 소스 데이터(S_Data)를 디-랜덤화한다. 이후, 업데이트 및 디-랜덤화된 소스 데이터(S_Data)는 랜더마이저(250a)로 전달된다. 이러한 절차는 식별번호 ④로 도시하였다.
랜더마이저(250a)는 업데이트 및 디-랜덤화된 소스 데이터(S_Data)에 대한 랜덤화 연산을 수행할 것이다. 이때, 업데이트 및 디-랜덤화된 소스 데이터(S_Data)는 목적 시드(D_Seed)를 사용하여 랜덤화된다. 목적 시드(D_Seed)에 의해서 랜덤화된 소스 데이터(S_Data)는 에러 정정 블록(240)에 전달될 수 있다. 이러한 절차는 식별번호 ⑤로 도시하였다.
에러 정정 블록(240)은 목적 시드(D_Seed)에 의해서 랜덤화된 소스 데이터(S_Data)에 대한 에러 정정 인코딩을 수행한다. 에러 정정 블록(240)은 에러 정정 인코딩을 통해서 처리된 소스 데이터(S_Data)를 다시 페이지 버퍼(230)에 덮어쓰기할 것이다. 이러한 절차는 식별번호 ⑥으로 도시하였다. 여기서, 에러 정정 블록(240)에 의한 인코딩은 선택적으로 수행될 수 있을 것이다. 만일, 에러 정정 블록(240)을 온칩상에 구비하지 못한 경우, 업데이트 카피백 동작시에 에러 정정 인코딩은 스킵될 수 있을 것이다.
페이지 버퍼(230)에 로드된 소스 데이터(S_Data)는 셀 어레이의 목적 영역에 기입된다. 이러한 절차는 식별번호 ⑦로 도시하였다.
이상에서는 본 발명의 불휘발성 메모리 장치(200)에서 업데이트 카피백 동작이 간략히 설명되었다. 업데이트를 위한 추가 데이터의 소스 시드를 사용한 랜덤화 처리가 수행되면, 추가 데이터와 소스 데이터 사이에 랜덤화 연산에 의한 배열의 이질성 문제는 해결될 수 있다.
도 15는 본 발명의 업데이트 카피백 방법을 보여주는 순서도이다. 도 15를 참조하면, 외부로부터 카피백 명령어, 소스 어드레스, 목적 어드레스 및 추가 데이터가 입력되면, 불휘발성 메모리 장치(200)의 업데이트 카피백 동작을 수행한다. 이하에서는 도 14와 도 15를 참조하여 본 발명의 업데이트 카피백 절차가 설명될 것이다.
S210 단계에서, 불휘발성 메모리 장치(200)는 카피백 명령어와 함께 입력되는 소스 어드레스(S_ADD)를 수신한다. 소스 어드레스(S_ADD)는 소스 데이터(S_Data)가 저장된 소스 영역의 페이지 어드레스를 포함할 수 있다.
S215 단계에서, 불휘발성 메모리 장치(200)는 페이지 버퍼(230)를 사용하여 소스 영역으로부터 데이터를 센싱한다. 그리고 불휘발성 메모리 장치(200)는 센싱된 소스 데이터(S_Data)를 페이지 버퍼(230)에 래치한다.
S220 단계에서, 불휘발성 메모리 장치(200)는 외부로부터 목적 어드레스(D_ADD) 및 추가 데이터를 수신한다. 목적 어드레스(D_ADD)는 추가 데이터로 업데이트된 소스 데이터가 카피될 행 어드레스를 포함할 수 있다. 더불어, 목적 어드레스(D_ADD)는 추가 데이터의 열 어드레스를 포함할 수 있다.
S225 단계에서, 불휘발성 메모리 장치(200)는 추가 데이터(Supplement data)에 대한 랜덤화 연산을 수행할 것이다. 이때, 추가 데이터는 소스 데이터(S_Data)의 랜덤화 연산에 사용되는 소스 시드(S_Seed)를 사용하여 랜덤화 된다.
S230 단계에서, 불휘발성 메모리 장치(200)는 랜덤화된 추가 데이터(Supplement data)를 페이지 버퍼(230)에 래치된 소스 데이터(S_Data)에 덮어쓰기할 것이다. 이때, 덮어쓰기에 의해서 소스 데이터(S_Data)의 업데이트는 완료된 셈이다. 페이지 버퍼(230) 상에서 랜덤화된 추가 데이터로 덮어쓰기된 소스 데이터(S_Data)는 동일한 소스 시드(S_Seed)를 통해서 랜덤화된 페이지 데이터에 해당한다.
S235 단계에서, 불휘발성 메모리 장치(200)는 추가 데이터로 업데이트된 소스 데이터(S_Data)를 목적 영역으로 기입하기 위한 추가 절차를 수행한다. 먼저, 불휘발성 메모리 장치(200)는 추가 데이터로 업데이트된 소스 데이터(S_Data)를 소스 시드(S_Seed)를 사용하여 디-랜덤화한다.
S240 단계에서, 불휘발성 메모리 장치(200)는 디-랜덤화된 소스 데이터(S_Data)를 목적 시드(D_Seed)를 사용하여 랜덤화한다. 목적 시드(D_Seed)는 카피백 명령어와 함께 제공된 목적 어드레스로부터 생성될 수 있다.
S245 단계에서, 불휘발성 메모리 장치(200)는 목적 시드(D_Seed)에 의해서 랜덤화된 소스 데이터(S_Data)에 대한 에러 정정 인코딩을 수행한다. 소스 데이터(S_Data)에 대한 에러 정정 인코딩은 선택적으로 수행될 수 있을 것이다.
S250 단계에서, 불휘발성 메모리 장치(200)는 에러 정정 인코딩된 데이터를 페이지 버퍼(230)에 덮어쓰기할 것이다.
S255 단계에서, 불휘발성 메모리 장치(200)는 페이지 버퍼(230)에 로드된 업데이트 및 랜덤화된 소스 데이터(S_Data)를 셀 어레이의 목적 영역에 기입하도록 페이지 버퍼(230)를 제어할 것이다.
이상에서는 본 발명의 불휘발성 메모리 장치(200)에서 업데이트 카피백 동작의 절차가 설명되었다. 업데이트 카피백 동작을 위해서는, 업데이트를 위해 입력되는 추가 데이터에 대한 소스 시드(S_Seed)를 사용한 랜덤화 처리가 우선되어야 한다.
도 16은 본 발명의 다른 실시 예에 따른 불휘발성 메모리 장치를 보여주는 블록도이다. 도 16을 참조하면, 불휘발성 메모리 장치(300)는 셀 어레이(310), 행 디코더(320), 페이지 버퍼(330), 에러 정정 블록(340), 랜더마이저/디-랜더마이저(350), 입출력 버퍼(360), 그리고 제어 로직(370)을 포함할 수 있다. 셀 어레이(310), 행 디코더(320), 페이지 버퍼(330), 에러 정정 블록(340), 랜더마이저/디-랜더마이저(350), 입출력 버퍼(360)는 앞서 설명된 도 12의 그것들과 실질적으로 동일하다. 따라서, 이것들에 대한 구체적인 설명은 생략하기로 한다.
불휘발성 메모리 장치(300)는 소스 영역으로부터 읽혀진 데이터에 대해 랜덤화 연산 및 에러 정정 연산을 적용하여 목적 영역으로 카피할 수 있다. 특히, 불휘발성 메모리 장치(300)는 하나의 페이지를 복수의 쓰기 단위로 관리할 수 있다. 여기서, 하나의 페이지는 복수의 쓰기 단위(NOP1, NOP2, NOP3, NOP4)로 구분된다.
본 발명의 불휘발성 메모리 장치(300)는 카피백 동작시 페이지 버퍼(330)에 저장된 소스 데이터를 쓰기 단위로 랜덤화 및 업데이트할 수 있다. 더불어, 업데이트된 데이터를 쓰기 단위로 메모리 셀 어레이(310)에 프로그램할 수 있다. 이러한 쓰기 단위의 업데이트 카피백 동작을 위해서 불휘발성 메모리 장치(300)는 NOP 레지스터(375)를 포함할 수 있다. NOP 레지스터(375)의 상태는 업데이트 카피백 동작의 진행 상황에 따라 업데이트될 수 있다. 그리고 NOP 레지스터(375)의 상태에 따라 최종적으로 목적 영역에 업데이트된 데이터가 저장될 것이다. 이때, NOP 레지스터(375)의 상태에 따라 목적 영역은 풀페이지가 아닌 일부 페이지만이 프로그램될 수도 있다.
도 17은 복수의 쓰기 단위로 구분되는 하나의 페이지 영역을 보여주는 도면이다. 도 17을 참조하면, 하나의 페이지 영역은 예시적으로 4개의 쓰기 단위들(NOP1~NOP4)과 4개의 쓰기 단위들(NOP1~NOP4) 각각의 상태를 저장하는 플레그 영역을 포함할 수 있다. 쓰기 단위들(NOP1~NOP4)은 각각 독립적으로 프로그램될 수 있다. 어떤 페이지 영역의 경우에는 어느 하나의 쓰기 단위만이 프로그램된 상태이고, 나머지 쓰기 단위들은 소거 상태일 수 있다. 플레그 영역에는 이러한 쓰기 단위들(NOP1~NOP4)의 상태 정보가 저장된다.
업데이트 카피백 동작시, 추가 데이터로 업데이트되어야 하는 쓰기 단위나, 업데이트는 되지 않더라도 랜덤화 연산이 되는 쓰기 단위만이 셀 어레이(310)의 목적 영역에 프로그램될 것이다. 따라서, 소스 데이터에서 소거 상태로 존재하고, 목적 영역에도 소거 상태로 존재하는 쓰기 단위에 대해서는 프로그램이 수행될 필요가 없다. 본 발명의 불휘발성 메모리 장치(300)는 업데이트 카피백 동작시에 NOP 레지스터(375)를 활용하여 쓰기 단위로 추가 데이터를 업데이트할 수 있다. 그리고 불휘발성 메모리 장치(300)는 쓰기 단위로 셀 어레이(310)에 업데이트된 페이지 데이터를 프로그램할 수 있다. 따라서, 카피백 동작에 소요되는 시간이 감소할 수 있다.
도 18은 도 16의 NOP 레지스터를 활용한 업데이트 카피백 동작을 보여주는 테이블이다. 도 18을 참조하면, NOP 레지스터(375)는 업데이트 카피백 동작이 수행되는 각 시점마다 쓰기 단위들(NOP1, NOP2, NOP3, NOP4) 각각에 대한 상태 정보를 저장한다. 그리고 제어 로직(370)은 이러한 NOP 레지스터(375)에 저장된 상태 정보에 따라 페이지 버퍼(330)에 저장된 소스 데이터의 업데이트 및 목적 영역으로의 프로그램 동작을 수행할 수 있다. 이하에서는 NOP 레지스터(375)를 참조하여 업데이트 카피백 동작을 수행하는 절차가 단계별로 설명될 것이다.
먼저, NOP 레지스터의 상태 번호(1)의 필드 값은 카피백을 위해 읽기 요청되는 소스 영역의 상태를 나타낸다. 예를 들면, 쓰기 단위들(NOP1, NOP2)은 데이터가 프로그램된 상태이고, 쓰기 단위들(NOP3, NOP4)은 소거 상태를 나타낸다. 이 경우, 상태 번호(2)의 각 쓰기 단위들(NOP1, NOP2, NOP3, NOP4)은 'TTFF'로 저장될 수 있을 것이다.
상태 번호(3)에는 업데이트를 위해 입력되는 추가 데이터(Din)가 쓰기 단위들(NOP1, NOP2, NOP3, NOP4) 중에서 어느 것에 대응하는지를 나타낸다. 추가 데이터(Din)의 열 어드레스가 각각 쓰기 단위들(NOP2, NOP3)에 대응하는 경우, 상태 번호(3)의 값은 'FTTF'로 설정된다.
상태 번호(4)의 레지스터에는 추가 데이터에 대응하는 쓰기 단위들(NOP2, NOP3)의 랜덤화 처리 여부가 저장될 수 있다. 쓰기 단위(NOP2)의 경우, 추가 데이터에 의해서 기존의 소스 페이지의 데이터가 업데이트되어야 한다. 따라서, 소스 시드를 사용하여 쓰기 단위(NOP2)에 업데이트되는 추가 데이터에 대해서는 랜덤화 연산이 적용되어야 한다. 하지만, 쓰기 단위(NOP3)의 경우에는 소스 데이터가 소거 상태이기 때문에 소스 시드를 사용한 랜덤화 연산은 적용될 필요가 없다. 따라서, 페이지 버퍼(330)에는 쓰기 단위들(NOP1, NOP3, NOP4)에 대응하는 데이터는 소스 데이터 상태로 유지된다. 반면, 페이지 버퍼(330)의 쓰기 단위(NOP2)에 대응하는 래치들에는 랜덤화된 추가 데이터가 덮어쓰기될 것이다.
상태 번호(5)의 레지스터에는 추가 데이터에 의해서 업데이트되는 쓰기 단위의 위치 정보가 저장될 수 있다. 즉, 추가 데이터에 의해서 업데이트되는 쓰기 단위들(NOP2, NOP3)에 대해서는 'T'의 상태값을 할당받을 수 있다.
상태 번호(6)의 레지스터에는 디-랜덤화 연산이 적용되어야 하는 쓰기 단위가 지정된다. 소스 시드를 사용하여 디-랜덤화할 쓰기 단위는 소스 시드를 사용하여 랜덤화된 쓰기 단위에 대해서만 적용되면 된다. 따라서, 랜더마이저/디-랜더마이저(350)는 페이지 버퍼(330)로부터 쓰기 단위들(NOP1, NOP2)에 대응하는 데이터만 제공받아 소스 시드를 사용하여 디-랜덤화를 수행할 것이다.
상태 번호(7)의 레지스터에는 목적 시드(Destination Seed)를 사용하여 랜덤화할 쓰기 단위가 지정된다. 소스 시드를 사용하여 디-랜덤화된 쓰기 단위들(NOP1, NOP2)과, 랜덤화 및 디-랜덤화 연산이 적용되지 않은 쓰기 단위(NOP3)에 대응하는 데이터가 목적 시드를 사용하여 랜덤화되어야 한다. 따라서, 상태 번호(7)의 레지스터에서는 쓰기 단위들(NOP1, NOP2, NOP3)이 'T'로 지정된다.
상태 번호(8)의 레지스터에는 목적 영역에 실질적으로 프로그램되는 쓰기 단위들이 지정된다. 쓰기 단위들(NOP1, NOP2, NOP3)에 대응하는 페이지 영역에는 데이터가 프로그램될 것이다. 하지만, 쓰기 단위(NOP4)에 대응하는 메모리 영역은 소거 상태를 유지하게 될 것이다.
이상에서는 하나의 페이지 영역을 복수의 쓰기 단위로 구분하는 경우에 본 발명의 업데이트 카피백 동작을 적용한 예가 설명되었다. 이 경우, 소거 상태로 유지되는 쓰기 단위에 대해서는 쓰기 동작이 생략될 수 있다. 더불어, 랜더마이저/디-랜더마이저(350)에 의해서 소거된 쓰기 영역에 업데이트되는 추가 데이터에 대한 랜덤화 및 디-랜덤화 연산은 생략될 수 있다.
도 19는 본 발명의 또 다른 실시 예에 따른 불휘발성 메모리 장치를 보여주는 블록도이다. 도 19를 참조하면, 불휘발성 메모리 장치(400)는 셀 어레이(410), 행 디코더(420), 페이지 버퍼(430), 에러 정정 블록(440), 랜더마이저/디-랜더마이저(450), 입출력 버퍼(460), 그리고 제어 로직(470)을 포함할 수 있다. 셀 어레이(410), 행 디코더(420), 페이지 버퍼(430), 에러 정정 블록(440), 랜더마이저/디-랜더마이저(450), 입출력 버퍼(460)는 앞서 설명된 도 1, 도 12, 그리고 도 16의 그것들과 실질적으로 동일하다. 따라서, 이것들에 대한 구체적인 설명은 생략하기로 한다.
불휘발성 메모리 장치(400)는 본 발명의 랜덤화 연산 또는 디-랜덤화 연산을 수행할 소스 시드(Source Seed)와 목적 시드(Destination Seed)를 저장하기 위한 시드 램(475)을 포함할 수 있다. 시드 램(475)에는 명령어 시퀀스를 통해서 입력된 어드레스로부터 획득되는 소스 시드나 목적 시드를 저장한다. 하나의 페이지 영역에 대해 특정 칼럼 어드레스에 대응하는 시드를 신속하기 제공하기 위해, 시드 램(475)에는 테이블 형태나 다양한 형태로 시드값들이 저장될 수 있을 것이다.
본 발명의 불휘발성 메모리 장치(300)는 카피백 동작시 페이지 버퍼(330)에 저장된 소스 데이터를 쓰기 단위로 랜덤화 및 업데이트할 수 있다. 더불어, 업데이트된 데이터를 쓰기 단위로 메모리 셀 어레이(310)에 프로그램할 수 있다. 이러한 쓰기 단위의 업데이트 카피백 동작을 위해서 불휘발성 메모리 장치(300)는 NOP 레지스터(375)를 포함할 수 있다. NOP 레지스터(375)의 상태는 업데이트 카피백 동작의 진행 상황에 따라 업데이트될 수 있다. 그리고 NOP 레지스터(375)의 상태에 따라 최종적으로 목적 영역에 업데이트된 데이터가 저장될 것이다. 이때, NOP 레지스터(375)의 상태에 따라 목적 영역은 풀페이지가 아닌 일부 페이지만이 프로그램될 수도 있다.
도 20은 도 1, 도 12, 도 16, 도 19의 메모리 셀 어레이에 포함된 메모리 블록들 중 어느 하나의 예를 보여주는 회로도이다. 예시적으로, 도 20을 참조하여 3차원 구조의 제 1 메모리 블록(BLK1)이 설명된다. 도 20을 참조하면, 제 1 메모리 블록(BLK1)은 복수의 셀 스트링들(CS11, CS12, CS21, CS22)을 포함한다. 복수의 셀 스트링들(CS11, CS12, CS21, CS22)은 행 방향(row direction) 및 열 방향(column direction)을 따라 배치되어 행들 및 열들을 형성할 수 있다.
예를 들어, 셀 스트링들(CS11, CS12)은 스트링 선택 라인들(SSL1a, SSL1b)와 연결되어, 제 1 행을 형성할 수 있다. 셀 스트링들(CS21, CS22)은 스트링 선택 라인들(SSL2a, SSL2b)와 연결되어 제 2 행을 형성할 수 있다. 예를 들어, 셀 스트링들(CS11, CS21)은 제 1 비트라인(BL1)과 연결되어 제 1 열을 형성할 수 있다. 셀 스트링들(CS12, CS22)은 제 2 비트라인(BL2)과 연결되어 제 2 열을 형성할 수 있다.
복수의 셀 스트링들(CS11, CS12, CS21, CS22) 각각은 복수의 셀 트랜지스터들을 포함한다. 예를 들어, 복수의 셀 스트링들(CS11, CS12, CS21, CS22) 각각은 스트링 선택 트랜지스터들(SSTa, SSTb), 복수의 메모리 셀들(MC1~MC8), 접지 선택된 트랜지스터들(GSTa, GSTb), 및 더미 메모리 셀들(DMC1, DMC2)을 포함할 수 있다. 예시적으로, 복수의 셀 스트링들(CS11, CS12, CS21, CS22)에 포함된 복수의 셀 트랜지스터들 각각은 전하 트랩형 플래시(CTF; charge trap flash) 메모리 셀일 수 있다.
복수의 메모리 셀들(MC1~MC8)은 직렬 연결되며, 행 방향 및 열 방향에 의해 형성된 평명에 수직 방향인 높이 방향(height direction)으로 적층된다. 스트링 선택 트랜지스터들(SSTa, SSTb)은 직렬 연결되고, 직렬 연결된 스트링 선택 트랜지스터들(SSTa, SSTb)은 복수의 메모리 셀들(MC1~MC8) 및 비트라인(BL) 사이에 제공된다. 접지 선택된 트랜지스터들(GSTa, GSTb)은 직렬 연결되고, 직렬 연결된 접지 선택된 트랜지스터들(GSTa, GSTb)은 복수의 메모리 셀들(MC1~MC8) 및 공통 소스 라인(CSL) 사이에 제공된다.
예시적으로, 복수의 메모리 셀들(MC1~MC8) 및 접지 선택된 트랜지스터들(GSTa, GSTb) 사이에 제 1 더미 메모리 셀(DMC1)이 제공될 수 있다. 예시적으로, 복수의 메모리 셀들(MC1~MC8) 및 스트링 선택 트랜지스터들(SSTa, SSTb) 사이에 제 2 더미 메모리 셀(DMC2)이 제공될 수 있다.
셀 스트링들(CS11, CS12, CS21, CS22)의 접지 선택된 트랜지스터들(GSTa, GSTb)은 접지 선택 라인(GSL)에 공통으로 연결될 수 있다. 예시적으로, 동일한 행의 접지 선택된 트랜지스터들은 동일한 접지 선택 라인에 연결될 수 있고, 다른 행의 접지 선택된 트랜지스터들은 다른 접지 선택 라인에 연결될 수 있다. 예를 들어, 제 1 행의 셀 스트링들(CS11, CS12)의 제 1 접지 선택된 트랜지스터들(GSTa)은 제1 접지 선택 라인에 연결될 수 있고, 제 2 행의 셀 스트링들(CS21, CS22)의 제 1 접지 선택된 트랜지스터들(GSTa)은 제 2 접지 선택 라인에 연결될 수 있다.
예시적으로, 도면에 도시되지는 않았으나, 기판(미도시)으로부터 동일한 높이에 제공되는 접지 선택 트랜지스터들은 동일한 접지 선택 라인에 연결될 수 있고, 다른 높이에 제공되는 접지 선택된 트랜지스터들은 다른 접지 선택 라인에 연결될 수 있다. 예를 들어, 셀 스트링들(CS11, CS12, CS21, CS22)의 제 1 접지 선택된 트랜지스터들(GSTa)은 제 1 접지 선택 라인에 연결되고, 제 2 접지 선택 트랜지스터들(GSTb)은 제 2 접지 선택 라인에 연결될 수 있다.
기판(또는 접지 선택 트랜지스터(GSTa, GSTb))으로부터 동일한 높이의 메모리 셀들은 동일한 워드라인에 공통으로 연결되고, 서로 다른 높이의 메모리 셀들은 서로 다른 워드라인에 연결된다. 예를 들어, 셀 스트링들(CS11, CS12, CS21, CS22)의 제 1 내지 제 8 메모리 셀들(MC8)은 제 1 내지 제 8 워드라인들(WL1~WL8)에 각각 공통으로 연결된다.
동일한 높이의 제 1 스트링 선택 트랜지스터들(SSTa) 중 동일한 행의 스트링 선택 트랜지스터들은 동일한 스트링 선택 라인과 연결되고, 다른 행의 스트링 선택 트랜지스터들은 다른 스트링 선택 라인과 연결된다. 예를 들어, 제 1 행의 셀 스트링들(CS11, CS12)의 제 1 스트링 선택 트랜지스터들(SSTa)은 스트링 선택 라인(SSL1a)과 공통으로 연결되고, 제 2 행의 셀 스트링들(CS21, CS22)의 제 1 스트링 선택 트랜지스터들(SSTa)은 스트링 선택 라인(SSL1a)과 공통으로 연결된다.
마찬가지로, 동일한 높이의 제 2 스트링 선택 트랜지스터들(SSTb) 중 동일한 행의 스트링 선택 트랜지스터들은 동일한 스트링 선택 라인과 연결되고, 다른 행의 스트링 선택 트랜지스터들은 다른 스트링 선택 라인과 연결된다. 예를 들어, 제 1 행의 셀 스트링들(CS11, CS12)의 제 2 스트링 선택 트랜지스터들(SSTb)은 스트링 선택 라인(SSL1b)과 공통으로 연결되고, 제 2 행의 셀 스트링들(CS21, CS22)의 제 2 스트링 선택 트랜지스터들(SSTb)은 스트링 선택 라인(SSL2b)과 공통으로 연결된다.
비록 도면에 도시되지는 않았으나, 동일한 행의 셀 스트링들의 스트링 선택 트랜지스터들은 동일한 스트링 선택 라인에 공통으로 연결될 수 있다. 예를 들어, 제 1 행의 셀 스트링들(CS11, CS12)의 제 1 및 제 2 스트링 선택 트랜지스터들(SSTa, SSTb)은 동일한 스트링 선택 라인에 공통으로 연결될 수 있다. 제 2 행의 셀 스트링들(CS21, CS22)의 제 1 및 제 2 스트링 선택 트랜지스터들(SSTa, SSTb)은 동일한 스트링 선택 라인에 공통으로 연결될 수 있다.
예시적으로, 동일한 높이의 더미 메모리 셀들은 동일한 더미 워드라인과 연결되고, 다른 높이의 더미 메모리 셀들은 다른 더미 워드라인과 연결된다. 예를 들어, 제 1 더미 메모리 셀들(DMC1)은 제 1 더미 워드라인(DWL1)과 연결되고, 제 2 더미 메모리 셀들(DMC2)은 제 2 더미 워드라인(DWL2)과 연결된다.
제 1 메모리 블록(BLK1)에서, 읽기 및 쓰기는 행 단위로 수행될 수 있다. 예를 들어, 스트링 선택 라인들(SSL1a, SSL1b, SSL2a, SSL2b)에 의해 메모리 블록(BLKa)의 하나의 행이 선택될 수 있다. 예를 들어, 스트링 선택 라인들(SSL1a, SSL1b)이 턴-온 전압이 공급되고 스트링 선택 라인들(SSL2a, SSL2b)에 턴-오프 전압이 공급될 때, 제 1 행의 셀 스트링들(CS11, CS12)이 비트 라인들(BL1, BL2)에 연결된다. 스트링 선택 라인들(SSL2a, SSL2b)에 턴-온 전압이 공급되고 스트링 선택 라인들(SSL1a, SSL1B)에 턴-오프 전압이 공급될 때, 제 2 행의 셀 스트링들(CS21, CS22)이 비트 라인들(BL1, BL2)에 연결되어 구동된다. 워드라인을 구동함으로써 구동되는 행의 셀 스트링의 메모리 셀들 중 동일한 높이의 메모리 셀들이 선택된다. 선택된 메모리 셀들에서 읽기 및 쓰기 동작이 수행될 수 있다. 선택된 메모리 셀들은 물리 페이지 단위를 형성할 수 있다.
제 1 메모리 블록(BLK1)에서, 소거는 메모리 블록 단위 또는 서브 블록의 단위로 수행될 수 있다. 메모리 블록 단위로 소거가 수행될 때, 제 1 메모리 블록(BLK1)의 모든 메모리 셀들(MC)이 하나의 소거 요청에 따라 동시에 소거될 수 있다. 서브 블록의 단위로 수행될 때, 제1 메모리 블록(BLK1)의 메모리 셀들(MC) 중 일부는 하나의 소거 요청에 따라 동시에 소거되고, 나머지 일부는 소거 금지될 수 있다. 소거되는 메모리 셀들에 연결된 워드 라인에 저전압(예를 들어, 접지 전압)이 공급되고, 소거 금지된 메모리 셀들에 연결된 워드 라인은 플로팅될 수 있다.
도 20에 도시된 제 1 메모리 블록(BLK1)은 예시적인 것이며, 셀 스트링들의 개수는 증가 또는 감소할 수 있으며, 셀 스트링들의 개수에 따라 셀 스트링들이 구성하는 행들 및 열들의 개수는 증가 또는 감소할 수 있다. 또한, 제 1 메모리 블록(BLK1)의 셀 트랜지스터들(GST, MC, DMC, SST 등)의 개수들는 각각 증가 또는 감소될 수 있으며, 셀 트랜지스터들의 개수들에 따라 제 1 메모리 블록(BLK1)의 높이가 증가 또는 감소할 수 있다. 또한, 셀 트랜지스터들의 개수들에 따라 셀 트랜지스터들과 연결된 라인들(GSL, WL, DWL, SSL 등)의 개수들이 증가 또는 감소될 수 있다.
도 21은 본 발명의 실시 예들에 따른 불휘발성 메모리 시스템이 적용된 메모리 카드 시스템을 보여주는 블록도이다. 도 21을 참조하면, 메모리 카드 시스템(1000)은 메모리 컨트롤러(1100), 불휘발성 메모리(1200), 및 커넥터(1300)를 포함한다.
메모리 컨트롤러(1100)는 불휘발성 메모리(1200)와 연결된다. 메모리 컨트롤러(1100)는 불휘발성 메모리(1200)를 액세스하도록 구성된다. 예를 들어, 메모리 컨트롤러(1100)는 불휘발성 메모리(1200)의 읽기, 쓰기, 소거, 그리고 배경(background) 동작을 제어하도록 구성된다. 배경(background) 동작은 마모도 관리, 가비지 콜렉션 등과 같은 동작들을 포함한다.
메모리 컨트롤러(1100)는 불휘발성 메모리(1200) 및 호스트(Host) 사이에 인터페이스를 제공하도록 구성된다. 메모리 컨트롤러(1100)는 불휘발성 메모리(1200)를 제어하기 위한 펌웨어(firmware)를 구동하도록 구성된다. 예시적으로, 메모리 컨트롤러(1100)는 램(RAM, Random Access Memory), 프로세싱 유닛(processing unit), 호스트 인터페이스(host interface), 메모리 인터페이스(memory interface), 에러 정정부와 같은 구성 요소들을 포함할 수 있다.
메모리 컨트롤러(1100)는 커넥터(1300)를 통해 외부 장치와 통신할 수 있다. 메모리 컨트롤러(1100)는 특정한 통신 규격에 따라 외부 장치(예를 들어, 호스트)와 통신할 수 있다. 예시적으로, 메모리 컨트롤러(1100)는 USB (Universal Serial Bus), MMC (multimedia card), eMMC(embedded MMC), 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), 파이어와이어(Firewire), UFS(Universal Flash Storage), NVMe (Nonvolatile Memory express) 등과 같은 다양한 통신 규격들 중 적어도 하나를 통해 외부 장치와 통신하도록 구성된다. 예시적으로, 상술된 통신 규격들에 의해 정의된 쓰기 커맨드는 쓰기 데이터의 사이즈 정보를 포함할 수 있다.
불휘발성 메모리(1200)는 EPROM (Electrically Erasable and Programmable ROM), 낸드 플래시 메모리, 노어 플래시 메모리, PRAM (Phase-change RAM), ReRAM (Resistive RAM), FRAM (Ferroelectric RAM), STT-MRAM(Spin-Torque Magnetic RAM) 등과 같은 다양한 불휘발성 메모리 소자들로 구현될 수 있다.
예시적으로, 메모리 컨트롤러(1100) 및 불휘발성 메모리(1200)는 하나의 반도체 장치로 집적될 수 있다. 예시적으로, 메모리 컨트롤러(1100) 및 불휘발성 메모리(1200)는 하나의 반도체 장치로 집적되어 솔리드 스테이트 드라이브(SSD, Solid State Drive)를 구성할 수 있다. 메모리 컨트롤러(1100) 및 불휘발성 메모리(1200)는 하나의 반도체 장치로 집적되어, 메모리 카드를 구성할 수 있다. 예를 들면, 메모리 컨트롤러(1100) 및 불휘발성 메모리(1200)는 하나의 반도체 장치로 집적되어 PC 카드(PCMCIA, personal computer memory card international association), 컴팩트 플래시 카드(CF), 스마트 미디어 카드(SM, SMC), 메모리 스틱, 멀티미디어 카드(MMC, RS-MMC, MMCmicro, eMMC), SD 카드(SD, miniSD, microSD, SDHC), 유니버설 플래시 기억장치(UFS) 등과 같은 메모리 카드를 구성할 수 있다.
도 22는 본 발명에 따른 불휘발성 메모리 시스템이 적용된 SSD(Solid State Drive) 시스템을 예시적으로 보여주는 블록도이다. 도 22를 참조하면, SSD 시스템(2000)은 호스트(2100) 및 SSD(2200)를 포함한다. SSD(2200)는 신호 커넥터(2001)를 통해 호스트(2100)와 신호를 교환하고, 전원 커넥터(2002)를 통해 전원을 제공받는다. SSD(2200)는 SSD 컨트롤러(2210), 복수의 플래시 메모리들(2221~222n), 보조 전원 장치(2230), 및 버퍼 메모리(2240)를 포함한다.
SSD 컨트롤러(2210)는 호스트(2100)로부터 수신된 신호에 응답하여 복수의 플래시 메모리들(2221~222n)을 제어할 수 있다.
보조 전원 장치(2230)는 전원 커넥터(2002)를 통해 호스트(2100)와 연결된다. 보조 전원 장치(2230)는 호스트(2100)로부터 전원을 입력받고, 충전할 수 있다. 보조 전원 장치(2230)는 호스트(2100)로부터의 전원 공급이 원활하지 않을 경우, SSD 시스템(2000)의 전원을 제공할 수 있다. 예시적으로, 보조 전원 장치(2230)는 SSD(2200) 내에 위치할 수도 있고, SSD(2200) 밖에 위치할 수도 있다. 예를 들면, 보조 전원 장치(2230)는 메인 보드에 위치하며, SSD(2200)에 보조 전원을 제공할 수도 있다.
버퍼 메모리(2240)는 SSD(2200)의 버퍼 메모리로 동작한다. 예를 들어, 버퍼 메모리(2240)는 호스트(2100)로부터 수신된 데이터 또는 복수의 플래시 메모리들(2221~222n)로부터 수신된 데이터를 임시 저장하거나, 플래시 메모리들(2221~222n)의 메타 데이터(예를 들어, 매핑 테이블)를 임시 저장할 수 있다. 버퍼 메모리(2240)는 DRAM, SDRAM, DDR SDRAM, LPDDR SDRAM, SRAM 등과 같은 휘발성 메모리 또는 FRAM ReRAM, STT-MRAM, PRAM 등과 같은 불휘발성 메모리들을 포함할 수 있다.
도 23은 본 발명에 따른 불휘발성 메모리 시스템이 적용된 사용자 시스템을 보여주는 블록도이다. 도 23을 참조하면, 사용자 시스템(3000)은 애플리케이션 프로세서(3100), 메모리 모듈(3200), 네트워크 모듈(3300), 스토리지 모듈(3400), 및 사용자 인터페이스(3500)를 포함한다.
애플리케이션 프로세서(3100)는 사용자 시스템(3000)에 포함된 구성 요소들, 운영체제(OS; Operating System)를 구동시킬 수 있다. 예시적으로, 애플리케이션 프로세서(3100)는 사용자 시스템(3000)에 포함된 구성 요소들을 제어하는 컨트롤러들, 인터페이스들, 그래픽 엔진 등을 포함할 수 있다. 애플리케이션 프로세서(3100)는 시스템-온-칩(SoC; System-on-Chip)으로 제공될 수 있다.
메모리 모듈(3200)은 사용자 시스템(3000)의 주메모리, 동작 메모리, 버퍼 메모리 또는 캐쉬 메모리로 동작할 수 있다. 메모리 모듈(3200)은 DRAM, SDRAM, DDR SDRAM, DDR2 SDRAM, DDR3 SDRAM, LPDDR SDARM, LPDDR3 SDRAM, LPDDR3 SDRAM 등과 같은 휘발성 랜덤 액세스 메모리 또는 PRAM, ReRAM, MRAM, FRAM 등과 같은 불휘발성 랜덤 액세스 메모리를 포함할 수 있다.
네트워크 모듈(3300)은 외부 장치들과 통신을 수행할 수 있다. 예시적으로, 네트워크 모듈(3300)은 CDMA(Code Division Multiple Access), GSM(Global System for Mobile communication), WCDMA(wideband CDMA), CDMA-2000, TDMA(Time Dvision Multiple Access), LTE(Long Term Evolution), Wimax, WLAN, UWB, 블루투스, WI-DI 등과 같은 무선 통신을 지원할 수 있다. 예시적으로, 네트워크 모듈(3300)은 애플리케이션 프로세서(3100)에 포함될 수 있다.
스토리지 모듈(3400)은 데이터를 저장할 수 있다. 예를 들어, 스토리지 모듈(3400)은 애플리케이션 프로세서(3100)로부터 수신한 데이터를 저장할 수 있다. 또는 스토리지 모듈(3400)은 스토리지 모듈(3400)에 저장된 데이터를 애플리케이션 프로세서(3100)로 전송할 수 있다. 예시적으로, 스토리지 모듈(3400)은 PRAM(Phase-change RAM), MRAM(Magnetic RAM), RRAM(Resistive RAM), NAND flash, NOR flash, 3차원 구조의 NAND 플래시 등과 같은 불휘발성 반도체 메모리 소자로 구현될 수 있다.
사용자 인터페이스(3500)는 애플리케이션 프로세서(3100)에 데이터 또는 명령어를 입력하거나 또는 외부 장치로 데이터를 출력하는 인터페이스들을 포함할 수 있다. 예시적으로, 사용자 인터페이스(3500)는 키보드, 키패드, 버튼, 터치 패널, 터치 스크린, 터치 패드, 터치 볼, 카메라, 마이크, 자이로스코프 센서, 진동 센서, 압전 소자 등과 같은 사용자 입력 인터페이스들을 포함할 수 있다. 사용자 인터페이스(3500)는 LCD (Liquid Crystal Display), OLED (Organic Light Emitting Diode) 표시 장치, AMOLED (Active Matrix OLED) 표시 장치, LED, 스피커, 모터 등과 같은 사용자 출력 인터페이스들을 포함할 수 있다.
이상에서와 같이 도면과 명세서에서 실시 예가 개시되었다. 여기서 특정한 용어들이 사용되었으나, 이는 단지 본 발명을 설명하기 위한 목적에서 사용된 것이지 의미 한정이나 특허 청구범위에 기재된 본 발명의 범위를 제한하기 위하여 사용된 것은 아니다. 그러므로 본 기술분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시 예가 가능하다는 점을 이해할 것이다. 따라서 본 발명의 진정한 기술적 보호 범위는 첨부된 특허 청구범위의 기술적 사상에 의해 정해져야 할 것이다.

Claims (20)

  1. 불휘발성 메모리 장치의 읽기 방법에 있어서:
    선택된 메모리 셀들을 센싱한 결과로 생성된 센싱 데이터를 페이지 버퍼에 저장하는 단계;
    상기 센싱 데이터의 에러를 검출하고, 에러가 검출되면 검출된 에러를 정정하여 상기 페이지 버퍼에 덮어쓰는 에러 디코딩 단계; 그리고
    상기 에러 디코딩이 완료된 후에, 시드를 사용하여 상기 페이지 버퍼에 저장된 데이터를 디-랜덤화하는 단계를 포함하되,
    상기 불휘발성 메모리 장치는 상기 에러 디코딩 단계가 완료되면, 레디/비지 신호를 레디 상태로 출력하고,
    상기 디-랜덤화하는 단계는, 상기 불휘발성 메모리 장치로 읽기 인에이블 신호가 입력되는 시점에 실행되는 읽기 방법.
  2. 제 1 항에 있어서,
    상기 에러 디코딩 단계는;
    상기 센싱 데이터를 복수의 정정 단위들로 구분되는 부호어 단위로 전달받아 에러 위치를 계산하는 단계;
    상기 에러 위치에 해당하는 정정 단위의 에러를 정정하는 단계; 그리고
    상기 복수의 정정 단위들 중 상기 에러가 정정된 정정 단위를 상기 페이지 버퍼에 덮어쓰기하는 단계를 포함하는 읽기 방법.
  3. 제 2 항에 있어서,
    상기 에러 위치는 BCH 부호(Bose-Chaudhuri Hocquenghem code) 방식으로 계산되는 읽기 방법.
  4. 제 2 항에 있어서,
    상기 에러 디코딩 단계에서, 상기 부호어에 에러가 존재하지 않는 것으로 검출되면, 상기 페이지 버퍼로의 덮어쓰기는 생략되는 읽기 방법.
  5. 삭제
  6. 삭제
  7. 제 1 항에 있어서,
    상기 디-랜덤화하는 단계에서, 상기 시드는 디-랜덤화되는 데이터에 대응하는 열 어드레스로부터 생성되는 읽기 방법.
  8. 제 1 항에 있어서,
    상기 디-랜덤화된 데이터를 상기 불휘발성 메모리 장치의 외부로 출력하는 단계를 더 포함하는 읽기 방법.
  9. 불휘발성 메모리 장치의 카피백 방법에 있어서:
    소스 영역으로부터 소스 데이터를 센싱하여 페이지 버퍼에 저장하는 단계;
    상기 소스 데이터의 에러를 검출하고, 에러가 검출되면 검출된 에러를 정정하여 상기 페이지 버퍼에 덮어쓰는 에러 디코딩 단계;
    상기 에러 디코딩이 완료된 후에, 소스 시드를 사용하여 상기 페이지 버퍼에 저장된 데이터를 디-랜덤화하는 단계;
    상기 소스 데이터를 업데이트하기 위한 추가 데이터를 입력받는 단계;
    상기 추가 데이터를 상기 소스 시드를 사용하여 랜덤화하는 단계; 그리고
    상기 랜덤화된 추가 데이터를 사용하여 상기 페이지 버퍼에 저장된 상기 소스 데이터를 업데이트하는 단계를 포함하는 카피백 방법.
  10. 제 9 항에 있어서,
    상기 추가 데이터는 상기 업데이트된 소스 데이터가 카피될 목적 영역의 어드레스와 함께 입력되는 카피백 방법.
  11. 제 9 항에 있어서,
    상기 페이지 버퍼에서 상기 랜덤화된 추가 데이터로 업데이트된 소스 데이터를 상기 소스 시드를 사용하여 디-랜덤화하는 단계; 그리고
    상기 디-랜덤화된 데이터를 목적 영역에 대응하는 목적 시드를 사용하여 랜덤화하는 단계를 포함하는 카피백 방법.
  12. 제 11 항에 있어서,
    상기 목적 시드로 랜덤화된 데이터에 대한 에러 정정 인코딩을 수행하는 단계를 더 포함하는 카피백 방법.
  13. 제 12 항에 있어서,
    상기 에러 정정 인코딩에 의해서 처리된 데이터를 상기 목적 영역에 프로그램하는 단계를 더 포함하는 카피백 방법.
  14. 제 9 항에 있어서,
    상기 추가 데이터의 랜덤화 및 상기 페이지 버퍼에 저장된 소스 데이터의 업데이트는 페이지 단위보다 작은 쓰기 단위로 수행되는 카피백 방법.
  15. 제 14 항에 있어서,
    상기 쓰기 단위는 NOP(Number of Program) 단위에 대응하는 카피백 방법.
  16. 행들과 열들로 배열된 메모리 셀들을 포함하는 셀 어레이;
    상기 셀 어레이에 데이터를 기입하거나, 상기 셀 어레이에 저장된 데이터를 센싱하여 저장하는 페이지 버퍼;
    상기 셀 어레이에 기입될 데이터를 랜덤화하여 상기 페이지 버퍼에 제공하거나, 상기 페이지 버퍼로부터 출력되는 데이터를 디-랜덤화하는 스크램블 블록;
    상기 센싱된 데이터에 대한 에러 정정 디코딩을 수행하는 에러 정정 블록; 그리고
    외부로부터의 명령어 또는 제어 신호에 응답하여 상기 페이지 버퍼, 상기 스크램블 블록, 그리고 상기 에러 정정 블록을 제어하는 제어 로직을 포함하되,
    상기 제어 로직은 데이터 읽기 동작시, 상기 페이지 버퍼에 저장된 데이터가 상기 에러 정정 블록에 의해서 디코딩되도록, 상기 디코딩된 데이터가 상기 페이지 버퍼에 덮어쓰기되도록 상기 페이지 버퍼와 상기 스크램블 블록을 제어하고, 상기 페이지 버퍼에 덮어쓰기된 데이터가 출력되는 시점에 디-랜덤화 연산을 수행하도록 상기 스크램블 블록을 제어하되,
    상기 에러 정정 블록은 디코딩시 상기 페이지 버퍼에 저장된 데이터 중에서 에러가 포함된 데이터 단위를 정정하여 덮어쓰기하고,
    상기 제어 로직은 읽기 인에이블 신호가 활성화되는 시점에 상기 디-랜덤화 연산을 활성화하도록 상기 스크램블 블록을 제어하는 불휘발성 메모리 장치.
  17. 삭제
  18. 삭제
  19. 제 16 항에 있어서,
    상기 제어 로직은 소스 데이터를 업데이트하기 위한 카피백 동작시 입력된 추가 데이터에 대해서 상기 소스 데이터에 대응하는 소스 시드를 사용하여 랜덤화하고, 상기 랜덤화된 추가 데이터를 사용하여 상기 페이지 버퍼에 저장된 소스 데이터를 업데이트하는 불휘발성 메모리 장치.
  20. 제 16 항에 있어서,
    상기 메모리 셀들은 각각 전하 트랩 층을 포함하고, 상기 셀 어레이는 3차원 메모리 어레이로 형성되는 불휘발성 메모리 장치.
KR1020160058397A 2016-05-12 2016-05-12 불휘발성 메모리 장치 및 그것의 읽기 방법 및 카피백 방법 KR102636039B1 (ko)

Priority Applications (4)

Application Number Priority Date Filing Date Title
KR1020160058397A KR102636039B1 (ko) 2016-05-12 2016-05-12 불휘발성 메모리 장치 및 그것의 읽기 방법 및 카피백 방법
US15/446,665 US10720945B2 (en) 2016-05-12 2017-03-01 Nonvolatile memory device and read and copy-back methods thereof
CN201710266270.0A CN107403645B (zh) 2016-05-12 2017-04-21 非易失性存储器器件及其读取和拷回方法
US16/891,664 US11362685B2 (en) 2016-05-12 2020-06-03 Nonvolatile memory device and read and copy-back methods thereof

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020160058397A KR102636039B1 (ko) 2016-05-12 2016-05-12 불휘발성 메모리 장치 및 그것의 읽기 방법 및 카피백 방법

Publications (2)

Publication Number Publication Date
KR20170128686A KR20170128686A (ko) 2017-11-23
KR102636039B1 true KR102636039B1 (ko) 2024-02-14

Family

ID=60295221

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160058397A KR102636039B1 (ko) 2016-05-12 2016-05-12 불휘발성 메모리 장치 및 그것의 읽기 방법 및 카피백 방법

Country Status (3)

Country Link
US (2) US10720945B2 (ko)
KR (1) KR102636039B1 (ko)
CN (1) CN107403645B (ko)

Families Citing this family (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
ITMI20071012A1 (it) * 2007-05-18 2008-11-19 St Microelectronics Srl Dispositivo di memoria migliorato a veloce programmazione
KR102511459B1 (ko) * 2016-03-17 2023-03-17 삼성전자주식회사 비휘발성 메모리 장치 및 그 동작 방법
KR102636039B1 (ko) 2016-05-12 2024-02-14 삼성전자주식회사 불휘발성 메모리 장치 및 그것의 읽기 방법 및 카피백 방법
KR102648774B1 (ko) * 2016-11-10 2024-03-19 에스케이하이닉스 주식회사 랜더마이즈 동작을 수행하는 반도체 메모리 장치
US10529439B2 (en) 2017-10-24 2020-01-07 Spin Memory, Inc. On-the-fly bit failure detection and bit redundancy remapping techniques to correct for fixed bit defects
US10481976B2 (en) 2017-10-24 2019-11-19 Spin Memory, Inc. Forcing bits as bad to widen the window between the distributions of acceptable high and low resistive bits thereby lowering the margin and increasing the speed of the sense amplifiers
US10656994B2 (en) * 2017-10-24 2020-05-19 Spin Memory, Inc. Over-voltage write operation of tunnel magnet-resistance (“TMR”) memory device and correcting failure bits therefrom by using on-the-fly bit failure detection and bit redundancy remapping techniques
US10489245B2 (en) 2017-10-24 2019-11-26 Spin Memory, Inc. Forcing stuck bits, waterfall bits, shunt bits and low TMR bits to short during testing and using on-the-fly bit failure detection and bit redundancy remapping techniques to correct them
US11561860B2 (en) * 2017-11-13 2023-01-24 Weka.IO Ltd. Methods and systems for power failure resistance for a distributed storage system
US10725862B2 (en) * 2018-07-06 2020-07-28 Macronix International Co., Ltd. Data recovery method to error correction code in memory
KR102650603B1 (ko) * 2018-07-24 2024-03-27 삼성전자주식회사 불휘발성 메모리 장치, 불휘발성 메모리 장치의 동작 방법 및 불휘발성 메모리 장치를 제어하는 메모리 컨트롤러의 동작 방법
CN110910938A (zh) * 2018-09-17 2020-03-24 北京兆易创新科技股份有限公司 一种数据纠正方法、装置、存储设备及存储介质
KR102599188B1 (ko) 2018-11-09 2023-11-08 삼성전자주식회사 호스트 메모리를 사용하는 스토리지 장치 및 그것의 동작 방법
WO2020170069A1 (ja) * 2019-02-22 2020-08-27 株式会社半導体エネルギー研究所 エラー検出機能を有する記憶装置、半導体装置、および、電子機器
KR20200117746A (ko) * 2019-04-05 2020-10-14 삼성전자주식회사 비휘발성 메모리 장치, 비휘발성 메모리 장치의 동작 방법 및 비휘발성 메모리 장치를 포함하는 메모리 시스템
US10866858B2 (en) * 2019-04-16 2020-12-15 Samsung Electronics Co., Ltd. Memory systems having reduced memory channel traffic and methods for operating the same
US11150985B2 (en) * 2019-10-02 2021-10-19 SK Hynix Inc. Decoder for memory system and method thereof
US11327884B2 (en) 2020-04-01 2022-05-10 Micron Technology, Inc. Self-seeded randomizer for data randomization in flash memory
US11256617B2 (en) * 2020-04-01 2022-02-22 Micron Technology, Inc. Metadata aware copyback for memory devices
JP6886547B1 (ja) 2020-05-13 2021-06-16 ウィンボンド エレクトロニクス コーポレーション 半導体記憶装置およびecc関連情報の読出し方法
US11170870B1 (en) * 2020-05-28 2021-11-09 Western Digital Technologies, Inc. On-chip-copy for integrated memory assembly
CN111739574B (zh) * 2020-06-05 2022-08-05 北京时代民芯科技有限公司 一种基于随机二进制序列的静态随机存取存储器验证方法
KR102208497B1 (ko) 2020-07-01 2021-01-27 주식회사 파두 메모리 컨트롤러 및 이를 포함하는 스토리지 디바이스

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050149587A1 (en) * 2004-01-05 2005-07-07 International Business Machines Corporation Breaking read barrier to apply optimizations

Family Cites Families (46)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100266748B1 (ko) * 1997-12-31 2000-10-02 윤종용 반도체 메모리 장치 및 그 장치의 에러 정정 방법
JP3595495B2 (ja) * 2000-07-27 2004-12-02 Necマイクロシステム株式会社 半導体記憶装置
JP4418153B2 (ja) * 2002-12-27 2010-02-17 株式会社ルネサステクノロジ 半導体装置
US7159069B2 (en) 2004-06-23 2007-01-02 Atmel Corporation Simultaneous external read operation during internal programming in a flash memory device
JP2006048783A (ja) * 2004-08-02 2006-02-16 Renesas Technology Corp 不揮発性メモリおよびメモリカード
US7849381B2 (en) 2004-12-21 2010-12-07 Sandisk Corporation Method for copying data in reprogrammable non-volatile memory
US7409473B2 (en) 2004-12-21 2008-08-05 Sandisk Corporation Off-chip data relocation
US8127200B2 (en) 2006-12-24 2012-02-28 Sandisk Il Ltd. Flash memory device and system with randomizing for suppressing errors
KR101449673B1 (ko) * 2006-12-24 2014-10-13 샌디스크 아이엘 엘티디 에러 억제를 위해 랜더마이징하는 플래시 메모리 디바이스, 시스템 및 방법
KR101226685B1 (ko) 2007-11-08 2013-01-25 삼성전자주식회사 수직형 반도체 소자 및 그 제조 방법.
US8301912B2 (en) 2007-12-31 2012-10-30 Sandisk Technologies Inc. System, method and memory device providing data scrambling compatible with on-chip copy operation
KR101552210B1 (ko) 2009-03-10 2015-09-10 삼성전자주식회사 불휘발성 메모리 장치 및 그것의 읽기 방법
KR20100111990A (ko) * 2009-04-08 2010-10-18 삼성전자주식회사 플래시 메모리 장치 및 그것의 데이터 랜덤화 방법
JP5492679B2 (ja) 2009-06-30 2014-05-14 パナソニック株式会社 記憶装置およびメモリコントローラ
KR101691092B1 (ko) 2010-08-26 2016-12-30 삼성전자주식회사 불휘발성 메모리 장치, 그것의 동작 방법, 그리고 그것을 포함하는 메모리 시스템
US8553466B2 (en) 2010-03-04 2013-10-08 Samsung Electronics Co., Ltd. Non-volatile memory device, erasing method thereof, and memory system including the same
US8819332B2 (en) 2010-03-26 2014-08-26 Panasonic Corporation Nonvolatile storage device performing periodic error correction during successive page copy operations
US9536970B2 (en) 2010-03-26 2017-01-03 Samsung Electronics Co., Ltd. Three-dimensional semiconductor memory devices and methods of fabricating the same
KR101682666B1 (ko) 2010-08-11 2016-12-07 삼성전자주식회사 비휘발성 메모리 장치, 그것의 채널 부스팅 방법, 그것의 프로그램 방법 및 그것을 포함하는 메모리 시스템
US8751729B2 (en) 2010-12-23 2014-06-10 Samsung Electronics Co., Ltd. Flash memory device and memory system including the same
KR101736337B1 (ko) 2011-02-28 2017-05-30 삼성전자주식회사 비휘발성 메모리 장치, 상기 메모리 장치를 제어하는 컨트롤러, 및 상기 컨트롤러 동작 방법
KR101893143B1 (ko) 2011-03-16 2018-08-31 삼성전자주식회사 비휘발성 메모리 장치, 그것의 프로그램 방법 및 읽기 방법, 및 그것을 포함하는 메모리 시스템
KR101818209B1 (ko) * 2011-04-15 2018-01-16 삼성전자주식회사 플래시 메모리 장치 및 그것을 포함한 메모리 시스템
JP2012226822A (ja) * 2011-04-15 2012-11-15 Samsung Electronics Co Ltd 不揮発性メモリ装置
KR101818671B1 (ko) 2011-04-19 2018-02-28 삼성전자주식회사 불휘발성 메모리 장치, 불휘발성 메모리 시스템 및 그것의 랜덤 데이터 읽기 방법
KR101678919B1 (ko) * 2011-05-02 2016-11-24 삼성전자주식회사 메모리 시스템 및 에러 정정 방법
KR101767649B1 (ko) 2011-05-11 2017-08-14 삼성전자주식회사 시드 생성 방법과 그것을 이용한 플래시 메모리 장치 및 메모리 시스템
KR101873526B1 (ko) * 2011-06-09 2018-07-02 삼성전자주식회사 에러 정정회로를 구비한 온 칩 데이터 스크러빙 장치 및 방법
KR20130043534A (ko) 2011-10-20 2013-04-30 삼성전자주식회사 플래시 메모리 장치 및 플래시 메모리 장치의 프로그램 방법
KR20130049332A (ko) 2011-11-04 2013-05-14 삼성전자주식회사 메모리 시스템 및 그것의 동작 방법
KR20130052971A (ko) 2011-11-14 2013-05-23 삼성전자주식회사 비휘발성 메모리 장치의 동작 방법
KR20130052811A (ko) 2011-11-14 2013-05-23 에스케이하이닉스 주식회사 불휘발성 메모리 장치, 그것의 동작 방법 및 그것을 포함하는 데이터 저장 장치
KR20130060795A (ko) * 2011-11-30 2013-06-10 삼성전자주식회사 불휘발성 메모리 장치 및 그것의 동작 방법
KR101893145B1 (ko) * 2011-12-06 2018-10-05 삼성전자주식회사 메모리 시스템들 및 그것들의 블록 복사 방법들
KR20140049448A (ko) * 2012-10-16 2014-04-25 삼성전자주식회사 랜덤화된 데이터를 저장하는 dram 및 이의 동작 방법
US9013921B2 (en) * 2012-12-06 2015-04-21 Samsung Electronics Co., Ltd. Semiconductor memory device
JP2014137834A (ja) 2013-01-17 2014-07-28 Samsung R&D Institute Japan Co Ltd 半導体記憶装置
KR101862379B1 (ko) * 2013-04-19 2018-07-05 삼성전자주식회사 Ecc 동작과 리던던시 리페어 동작을 공유하는 메모리 장치
KR102133542B1 (ko) 2013-12-03 2020-07-14 에스케이하이닉스 주식회사 랜더마이저 및 디랜더마이저를 포함하는 메모리 시스템
KR102195298B1 (ko) 2014-02-13 2020-12-24 삼성전자주식회사 비휘발성 메모리 장치의 부분 페이지 프로그램 방법
KR102112024B1 (ko) 2014-04-14 2020-05-19 삼성전자주식회사 데이터 스토리지 시스템에서의 스트로브 신호 성형방법 및 그에 따른 스트로브 신호 성형장치
US10116336B2 (en) * 2014-06-13 2018-10-30 Sandisk Technologies Llc Error correcting code adjustment for a data storage device
US10395753B2 (en) * 2014-08-28 2019-08-27 Winbond Electronics Corp. Semiconductor memory device and programming method thereof
KR20160105625A (ko) * 2015-02-27 2016-09-07 에스케이하이닉스 주식회사 데이터 저장 장치 및 그것의 동작 방법
US10067825B2 (en) * 2015-09-14 2018-09-04 Samsung Electronics Co., Ltd. Memory device and method of controlling ECC operation in the same
KR102636039B1 (ko) 2016-05-12 2024-02-14 삼성전자주식회사 불휘발성 메모리 장치 및 그것의 읽기 방법 및 카피백 방법

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050149587A1 (en) * 2004-01-05 2005-07-07 International Business Machines Corporation Breaking read barrier to apply optimizations

Also Published As

Publication number Publication date
US11362685B2 (en) 2022-06-14
CN107403645B (zh) 2023-03-28
US20170329667A1 (en) 2017-11-16
US10720945B2 (en) 2020-07-21
KR20170128686A (ko) 2017-11-23
US20200295788A1 (en) 2020-09-17
CN107403645A (zh) 2017-11-28

Similar Documents

Publication Publication Date Title
KR102636039B1 (ko) 불휘발성 메모리 장치 및 그것의 읽기 방법 및 카피백 방법
KR102681659B1 (ko) 메모리 시스템 및 메모리 시스템의 동작 방법
US9690654B2 (en) Operation method of nonvolatile memory system
KR102529696B1 (ko) 메모리 시스템 및 메모리 시스템의 동작 방법
KR102285994B1 (ko) 불휘발성 메모리 시스템 및 메모리 컨트롤러의 동작 방법
KR102615593B1 (ko) 메모리 시스템 및 메모리 시스템의 동작 방법
US20180102172A1 (en) Memory device and operating method of the memory device
KR102664674B1 (ko) 메모리 시스템 및 메모리 시스템의 동작방법
KR102218722B1 (ko) 불휘발성 메모리 시스템 및 메모리 컨트롤러의 동작 방법
KR102684983B1 (ko) 메모리 시스템 및 메모리 시스템의 동작방법
KR102593352B1 (ko) 메모리 시스템 및 메모리 시스템의 동작 방법
KR102415385B1 (ko) 불휘발성 메모리 장치 및 그것을 포함하는 저장 장치
US11289165B2 (en) Memory device and method of operating the same
KR102578153B1 (ko) 메모리 시스템 및 메모리 시스템의 동작 방법
KR102653389B1 (ko) 메모리 시스템 및 메모리 시스템의 동작 방법
US10409515B2 (en) Nonvolatile memory device for performing at least one of randomization operation and error correction operation
KR20190115310A (ko) 메모리 시스템 및 메모리 시스템의 동작 방법
KR20190118030A (ko) 메모리 시스템 및 메모리 시스템의 동작방법
US10353626B2 (en) Buffer memory management method and write method using the same
KR102671760B1 (ko) 컨트롤러 및 컨트롤러의 동작 방법
KR20190102431A (ko) 메모리 시스템 및 메모리 시스템의 동작 방법
KR102475798B1 (ko) 메모리 시스템 및 메모리 시스템의 동작 방법
CN112908370B (zh) 存储器装置和操作该存储器装置的方法
KR102684994B1 (ko) 메모리 시스템 및 그의 동작 방법
KR20200001310A (ko) 메모리 시스템 및 메모리 시스템의 동작방법

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