KR102438988B1 - 랜덤화 연산을 수행하는 불휘발성 메모리 장치 - Google Patents

랜덤화 연산을 수행하는 불휘발성 메모리 장치 Download PDF

Info

Publication number
KR102438988B1
KR102438988B1 KR1020160042806A KR20160042806A KR102438988B1 KR 102438988 B1 KR102438988 B1 KR 102438988B1 KR 1020160042806 A KR1020160042806 A KR 1020160042806A KR 20160042806 A KR20160042806 A KR 20160042806A KR 102438988 B1 KR102438988 B1 KR 102438988B1
Authority
KR
South Korea
Prior art keywords
segments
error correction
programmed
data
control logic
Prior art date
Application number
KR1020160042806A
Other languages
English (en)
Other versions
KR20170115644A (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 KR1020160042806A priority Critical patent/KR102438988B1/ko
Priority to US15/401,294 priority patent/US10409515B2/en
Priority to CN201710212175.2A priority patent/CN107274929B/zh
Publication of KR20170115644A publication Critical patent/KR20170115644A/ko
Application granted granted Critical
Publication of KR102438988B1 publication Critical patent/KR102438988B1/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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • 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
    • 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/1068Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0658Controller construction arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/04Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS
    • G11C16/0483Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS comprising cells having several storage transistors connected in series
    • 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/26Sensing or reading circuits; Data output circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/52Protection of memory contents; Detection of errors in memory contents
    • 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/0409Online test
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Quality & Reliability (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Computer Security & Cryptography (AREA)
  • Read Only Memory (AREA)

Abstract

본 발명의 실시 예에 따른 불휘발성 메모리 장치는, 쓰기 데이터가 프로그램 되는 복수의 제 1 세그먼트들, 및 각각의 제 1 세그먼트가 프로그램 되는지 여부에 대한 정보가 프로그램 되는 복수의 제 2 세그먼트들을 포함하는 메모리 셀 어레이, 및 프로그램 동작 시, 메모리 컨트롤러로부터 수신된 어드레스들을 참조하여, 쓰기 데이터에 대해 제 1 세그먼트 단위로 랜덤화 연산의 수행 여부를 결정하거나, 읽기 동작 시, 제 2 세그먼트들에 프로그램 된 정보를 참조하여, 제 1 세그먼트들에 프로그램 된 데이터에 대해 제 1 세그먼트 단위로 디랜덤화 연산의 수행 여부를 결정하는 제어로직을 포함할 수 있다. 본 발명의 실시 예에 따른 불휘발성 메모리 장치는 프로그램 동작 시 또는 읽기 동작 시에 랜더마이저 또는 에러 정정 회로의 동작을 페이지 내 세그먼트들에 따라 각각 제어하여 동작 속도를 높일 수 있고 소모 전력을 감소시킬 수 있다.

Description

랜덤화 연산을 수행하는 불휘발성 메모리 장치{NONVOLATILE MEMORY DEVICE FOR PERFORMING A RANDOMIZED OPERATION}
본 발명은 불휘발성 메모리 장치에 관한 것으로, 좀 더 자세하게는 랜덤화 연산을 수행하는 불휘발성 메모리 장치에 관한 것이다.
불휘발성 메모리 장치는 전원이 공급되지 않아도 저장된 정보를 계속 보존한다. 불휘발성 메모리 장치의 대표적인 예로 플래시 메모리 장치가 있다. 플래시 메모리 장치는 컴퓨터, 휴대폰, 스마트폰(Smart Phone), 디지털카메라(Digital Camera), 캠코더, 보이스 레코더(Voice Recorder), MP3 플레이어, 개인용 휴대 단말기(PDA), 휴대용 컴퓨터(Handheld PC), 게임기, 팩스(Fax), 스캐너(Scanner), 프린터(Printer) 등과 같은 정보기기들의 저장 매체로서 널리 사용되고 있다.
불휘발성 메모리 장치는 온칩 랜더마이저(On-Chip Randomizer) 또는 온칩 에러 정정 회로(On-Chip Error Correction Circuit)를 포함할 수 있다. 랜더마이저 또는 에러 정정 회로는 불휘발성 메모리 장치 내부에 온칩 형태로 구현될 수 있다. 랜더마이저는 불휘발성 메모리 장치에 입력된 쓰기 데이터에 대해 랜덤화 연산을 수행할 수 있다. 에러 정정 회로는 에러 정정 코드를 이용하여 불휘발성 메모리 장치에 저장된 데이터의 에러를 정정할 수 있다.
불휘발성 메모리 장치는 스마트폰과 같은 모바일 장치(Mobile device)에 탑재될 수 있다. 이를 위해, 온칩 랜더마이저 또는 온칩 에러 정정 회로를 제어하여 동작 속도를 높이거나 소모 전력을 감소시키는 기술이 필요하다.
본 발명은 상술한 기술적 과제를 해결하기 위한 것으로, 본 발명의 목적은 고속 및 저전력 특성을 갖는 랜덤화 연산을 수행하는 불휘발성 메모리 장치를 제공하는데 있다.
본 발명의 실시 예에 따른 불휘발성 메모리 장치는, 쓰기 데이터가 프로그램 되는 복수의 제 1 세그먼트들, 및 각각의 제 1 세그먼트가 프로그램 되는지 여부에 대한 정보가 프로그램 되는 복수의 제 2 세그먼트들을 포함하는 메모리 셀 어레이, 쓰기 데이터에 대해 랜덤화 연산을 수행하는 랜더마이저, 랜덤화된 데이터에 대해 에러 정정 연산을 수행하는 에러 정정 회로, 프로그램 동작 시, 메모리 컨트롤러로부터 수신된 어드레스를 참조하여, 제 1 세그먼트들 중 프로그램 되는 세그먼트를 판단하고, 판단 결과를 참조하여, 랜더마이저 및 에러 정정 회로의 동작 여부를 결정하는 제어 로직, 및 에러 정정 연산이 수행된 데이터 및 판단 결과가 저장되는 페이지 버퍼를 포함할 수 있다.
본 발명의 실시 예에 따른 불휘발성 메모리 장치는, 쓰기 데이터가 프로그램 되는 복수의 제 1 세그먼트들, 및 각각의 제 1 세그먼트가 프로그램 되는지 여부에 대한 정보가 프로그램 되는 복수의 제 2 세그먼트들을 포함하는 메모리 셀 어레이, 및 프로그램 동작 시, 메모리 컨트롤러로부터 수신된 어드레스들을 참조하여, 쓰기 데이터에 대해 제 1 세그먼트 단위로 랜덤화 연산의 수행 여부를 결정하거나, 읽기 동작 시, 제 2 세그먼트들에 프로그램 된 정보를 참조하여, 제 1 세그먼트들에 프로그램 된 데이터에 대해 제 1 세그먼트 단위로 디랜덤화 연산의 수행 여부를 결정하는 제어로직을 포함할 수 있다.
본 발명의 실시 예에 따른 불휘발성 메모리 장치는 프로그램 동작 시 또는 읽기 동작 시에 랜더마이저 또는 에러 정정 회로의 동작을 페이지 내 세그먼트들에 따라 각각 제어하여 동작 속도를 높일 수 있고 소모 전력을 감소시킬 수 있다.
본 발명의 실시 예들은 제한적인 방법으로서가 아니라 예로서 도시되었으며, 첨부 도면에서 유사한 참조 번호는 유사한 요소를 참조한다.
도 1은 일반적인 메모리 시스템을 예시적으로 보여주는 블록도이다.
도 2는 본 발명의 실시 예에 따른 불휘발성 메모리 장치를 예시적으로 보여주는 블록도이다.
도 3 및 도 4는 메모리 셀 어레이의 구성을 예시적으로 보여주는 도면이다.
도 5는 도 2에 도시된 제어 로직을 예시적으로 보여주는 블록도이다.
도 6은 본 발명의 실시 예에 따른 불휘발성 메모리 장치를 예시적으로 보여주는 블록도이다.
도 7은 본 발명에 따른 불휘발성 메모리 장치의 프로그램 동작을 예시적으로 보여주는 순서도이다.
도 8은 본 발명에 따른 불휘발성 메모리 장치의 프로그램 동작의 일부를 예시적으로 보여주는 순서도이다.
도 9는 본 발명에 따른 불휘발성 메모리 장치의 읽기 동작을 예시적으로 보여주는 순서도이다.
도 10은 본 발명에 따른 불휘발성 메모리 장치의 읽기 동작의 일부를 예시적으로 보여주는 순서도이다.
도 11은 본 발명의 실시 예에 따른 불휘발성 메모리 장치의 프로그램 동작을 예시적으로 보여주는 타이밍도이다.
도 12는 본 발명의 실시 예에 따른 불휘발성 메모리 장치의 읽기 동작을 예시적으로 보여주는 타이밍도이다.
도 13은 본 발명의 실시 예에 따른 불휘발성 메모리 장치를 예시적으로 보여주는 블록도이다.
도 14는 본 발명의 실시 예들에 따른 불휘발성 메모리 장치가 적용된 메모리 카드 시스템을 예시적으로 보여주는 블록도이다.
도 15는 본 발명에 따른 불휘발성 메모리 장치가 적용된 SSD(Solid State Drive) 시스템을 예시적으로 보여주는 블록도이다.
도 16은 본 발명에 따른 불휘발성 메모리 장치가 적용된 사용자 시스템을 예시적으로 보여주는 블록도이다.
앞의 일반적인 설명 및 다음의 상세한 설명 모두 예시적이라는 것이 이해되어야 하며, 청구된 발명의 부가적인 설명이 제공되는 것으로 여겨져야 한다. 참조 부호들이 본 발명의 바람직한 실시 예들에 상세히 표시되어 있으며, 그것의 예들이 참조 도면들에 표시되어 있다. 가능한 어떤 경우에도, 동일한 참조 번호들이 동일한 또는 유사한 부분을 참조하기 위해서 설명 및 도면들에 사용된다. 본 발명은 다른 실시 예들을 통해 구현되거나 적용될 수 있을 것이다. 게다가, 상세한 설명은 본 발명의 범위, 기술적 사상 그리고 다른 목적으로부터 상당히 벗어나지 않고 관점 및 응용에 따라 수정되거나 변경될 수 있다.
도 1은 일반적인 메모리 시스템을 예시적으로 보여주는 블록도이다. 도 1을 참조하면, 메모리 시스템(10)은 메모리 컨트롤러(11) 또는 불휘발성 메모리 장치(NVM, 12)를 포함할 수 있다. 메모리 컨트롤러(11)는 호스트(Host)의 제어에 응답하여 불휘발성 메모리 장치(12)를 제어할 수 있다. 메모리 컨트롤러(11)는 불휘발성 메모리 장치(12)에 명령들, 어드레스들, 저장될 데이터 등을 제공할 수 있다. 불휘발성 메모리 장치(12)는 메모리 컨트롤러(11)의 제어에 응답하여 저장된 데이터 등을 메모리 컨트롤러(11)로 제공할 수 있다. 본 발명은 불휘발성 메모리 장치(12)에 관한 것이다.
도 2는 본 발명의 실시 예에 따른 불휘발성 메모리 장치를 예시적으로 보여주는 블록도이다. 도 2를 참조하면, 불휘발성 메모리 장치(100)는 메모리 셀 어레이(110), 행 디코더(120), 페이지 버퍼(130), 랜더마이저(140), 입출력 버퍼(150), 또는 제어 로직(160)을 포함할 수 있다.
메모리 셀 어레이(110)는 워드 라인들(WL[0:X-1])을 통해 행 디코더(120)에 연결된다. 메모리 셀 어레이(110)는 비트 라인들(BL[0:Y-1])을 통해서 페이지 버퍼(130)에 연결된다. 메모리 셀 어레이(110)는 낸드 셀 스트링들(NAND Cell Strings)을 포함할 수 있다. 메모리 셀 어레이(110)는 노아(NOR) 셀들을 포함할 수도 있다. 낸드 셀 스트링들은 기판에 수직 또는 수평 방향으로 형성될 수 있다. 메모리 셀 어레이(110)는 낸드 셀 스트링을 형성하는 메모리 셀들을 포함할 수 있다. 메모리 셀들은 비트 라인과 워드 라인 전압에 의해서 프로그램(Program), 읽기(Read), 또는 소거(Erase) 동작이 수행될 수 있다. 메모리 셀 어레이(110)를 구성하는 메모리 셀들 각각은 하나의 메모리 셀에 적어도 2 비트(Bit)가 저장되는 멀티 레벨 셀(MLC, Multi-level cell)일 수 있다.
메모리 셀 어레이(110)는 페이지(Page, 도 2 미도시)들을 포함할 수 있다. 페이지란 하나의 워드라인으로 연결된 메모리 셀들의 집합을 의미한다. 페이지는 N개의 세그먼트들(Segments)로 나뉠 수 있다. 각 세그먼트는 메모리 셀들을 포함할 수 있다. 본 발명에 따르면, 후술할 랜더마이저 또는 에러 정정 회로의 동작 여부는 세그먼트 단위로 판단될 수 있다.
예를 들어, N이 4인 경우, 페이지 내 4개의 세그먼트들의 메모리 셀들 모두에 대해 프로그램이 수행될 수 있다. 혹은 페이지 내 4개의 세그먼트들 중 일부 세그먼트들의 메모리 셀들에 대해 프로그램이 수행될 수 있다.
메모리 컨트롤러로부터 수신된 RA(Row Address)는 메모리 셀 어레이(110)의 워드 라인들(WL[0:X-1]) 중 적어도 하나를 선택하기 위해 불휘발성 메모리 장치(100)로 입력될 수 있다. 메모리 컨트롤러로부터 수신된 CA(Column Address)는 선택된 페이지의 세그먼트들 중 적어도 하나를 선택하기 위해 불휘발성 메모리 장치(100)로 입력될 수 있다. 페이지는 어느 세그먼트의 메모리 셀들이 프로그램 되었는지에 대한 정보를 저장하기 위해 추가적인 메모리 셀들을 포함할 수 있다. 추가적인 메모리 셀들은 다른 세그먼트들을 구성할 수 있다. 메모리 셀 어레이(110)의 페이지 또는 세그먼트들에 대한 상세한 내용은 도 3에서 후술한다.
행 디코더(120)는 제어 로직(160)의 제어에 응답하여 메모리 셀 어레이(110)의 페이지들 중 어느 하나를 선택할 수 있다. 행 디코더(120)는 제어 로직(160)의 제어에 응답하여 워드 라인들(WL[0:X-1]) 중 어느 하나를 선택할 수 있다. 선택된 페이지(Selected Page)는 선택된 워드 라인(Selected WL)에 연결된 메모리 셀들을 의미한다.
행 디코더(120)는 워드 라인들(WL[0:X-1])에 다양한 전압을 인가할 수 있다. 프로그램 동작 시, 행 디코더(120)는 선택된 워드 라인에 프로그램 전압(Vpgm)과 검증 전압(Vfy)을, 비선택된 워드 라인(Unselected WL)에는 패스 전압(Vpass)을 전달할 수 있다. 읽기 동작 시 행 디코더(120)는 선택된 워드 라인에 선택 읽기 전압(Vrd)을, 비선택된 워드 라인에는 비선택 읽기 전압(Vread)을 전달할 수 있다.
페이지 버퍼(130)는 기입 드라이버 또는 감지 증폭기로 동작할 수 있다. 프로그램 동작 시, 페이지 버퍼(130)는 입출력 버퍼(150)로부터 쓰기 데이터를 전달받을 수 있다. 프로그램 동작 시, 페이지 버퍼(130)는 메모리 셀 어레이(110)의 선택된 비트 라인으로 프로그램될 데이터에 대응하는 비트 라인 전압을 전달할 수 있다. 읽기 동작 시, 페이지 버퍼(130)는 선택된 세그먼트의 메모리 셀들에 프로그램된 데이터를 비트 라인들(BL[0:Y-1])을 통해서 감지할 수 있다. 읽기 동작 시, 페이지 버퍼(130)는 감지한 데이터를 입출력 버퍼(150)로 전달할 수 있다.
전술한 바와 같이, 페이지는 복수의 세그먼트들로 나뉠 수 있다. 본 발명에 따른 페이지 버퍼(130)는 프로그램 동작 시, 어느 세그먼트의 메모리 셀들이 프로그램 될 것인지 여부에 대한 정보를 제어 로직(160)으로부터 전달받을 수 있다. 페이지 버퍼(130)는 상술한 정보를 메모리 셀 어레이(110)의 추가적인 메모리 셀들에 프로그램 할 수 있다.
본 발명에 따른 페이지 버퍼(130)는 읽기 동작 시, 어느 세그먼트의 메모리 셀들이 프로그램 되었는지 여부에 대한 정보를 메모리 셀 어레이(110)의 추가적인 메모리 셀들로부터 전달받을 수 있다. 페이지 버퍼(130)는 상술한 정보를 제어 로직(160)으로 전달할 수 있다.
랜더마이저(140)는 프로그램 동작 시, 선택된 세그먼트의 메모리 셀들에 프로그램될 데이터에 대해 랜덤화 연산을 수행할 수 있다. 랜더마이저(140)는 읽기 동작 시, 선택된 세그먼트의 메모리 셀들로부터 센싱(Sensing)되어 페이지 버퍼(130)에 저장된 데이터에 대해 디랜덤화(De-Randomization) 연산을 수행할 수 있다. 본 발명의 실시 예에 따르면, 랜더마이저(140)는 불휘발성 메모리 장치(100)의 내부에 온칩(On-chip) 형태로 구현될 수 있다. 랜더마이저(140)는 후술할 제어 로직(160) 안에 포함될 수도 있다.
랜더마이저(140)는 프로그램 동작 시, 쓰기 데이터에 동일한 비트 값(“0” 또는 1)이 반복되는 문제를 해결할 수 있다. 메모리 셀의 문턱 전압 산포의 변화는 랜더마이저(140)의 랜덤화 연산을 통해 억제될 수 있다. 랜더마이저(140)의 상세한 구조는 본 발명의 기술 분야에 널리 알려져 있으므로, 이에 대한 설명은 생략하기로 한다.
랜더마이저(140)는 프로그램 동작 시, 랜덤화 연산을 수행할 수 있다. 예를 들어, 랜더마이저(140)는 메모리 컨트롤러로부터 제공되는 어드레스들로부터 시드(Seed)를 생성할 수 있다. 랜더마이저(140)는 시드를 참조하여 랜덤열(RS, Random sequence)을 생성할 수 있다. 랜더마이저(140)는 생성된 랜덤열(RS)을 이용하여 페이지 버퍼(130)에 저장된 데이터를 랜덤화한다. 페이지 버퍼(130)는 랜덤화된 데이터를 선택된 세그먼트의 메모리 셀들에 프로그램 할 수 있다.
랜더마이저(140)는 읽기 동작 시, 디랜덤화 연산을 수행할 수 있다. 랜더마이저(140)는 페이지 버퍼(130)에 저장된 읽기 데이터를 랜덤화 연산 시 사용한 랜덤열(RS)을 이용하여 디랜덤화 연산을 할 수 있다. 디랜덤화된 데이터는 입출력 버퍼(150)를 통해서 메모리 컨트롤러로 출력될 수 있다.
입출력 버퍼(150)는 프로그램 동작 시, 메모리 컨트롤러에서 입력 받은 데이터를 페이지 버퍼(130)로 전달할 수 있다. 입출력 버퍼(150)는 읽기 동작 시, 페이지 버퍼(130)에 저장된 데이터를 메모리 컨트롤러로 출력할 수 있다. 입출력 버퍼(150)는 메모리 컨트롤러에서 입력 받은 어드레스들 또는 명령어들을 제어 로직(160)으로 전달할 수 있다.
제어 로직(160)은 메모리 컨트롤러에서 입력 받은 명령에 응답하여 행 디코더(120), 페이지 버퍼(130), 랜더마이저(140), 또는 입출력 버퍼(150)를 제어할 수 있다. 프로그램 동작 시, 제어 로직(160)은 페이지를 선택하기 위해 메모리 컨트롤러에서 입력 받은 어드레스들을 행 디코더(120)로 전달할 수 있다. 제어 로직(160)은 쓰기 데이터를 페이지 버퍼(130)로 전달하기 위해 입출력 버퍼(150)를 제어할 수 있다. 제어 로직(160)은 쓰기 데이터를 선택된 세그먼트의 메모리 셀들로 전달하기 위해 페이지 버퍼(130)를 제어할 수 있다.
제어 로직(160)은 프로그램 동작 시, 메모리 컨트롤러에서 입력 받은 어드레스들을 참조하여 랜더마이저(140)의 동작 여부를 결정하는 신호들(CTRL_F[0:N-1])을 생성할 수 있다. 신호들(CTRL_F[0:N-1])은 랜더마이저(140)의 동작 여부를 결정할 수 있다. 여기서, N은 페이지가 분할된 세그먼트들의 개수를 의미한다.
예를 들어, N이 4인 경우, 제어 로직(160)은 메모리 컨트롤러에서 입력 받은 어드레스들을 참조하여 신호들(CTRL_F[0:3])을 생성할 수 있다. 페이지는 4개의 세그먼트들로 나뉠 수 있다. 만약, 첫 번째 세그먼트의 메모리 셀들에 대해서만 프로그램이 수행될 경우, 제어 로직(160)은 신호(CTRL_F[0])를 활성화 할 수 있고, 나머지 신호들(CTRL_F[1:3])은 비활성화 할 수 있다. 프로그램 동작 시, 제어 로직(160)이 신호들(CTRL_F[0:3])을 생성하는 것에 대한 상세한 설명은 후술한다.
제어 로직(160)은 프로그램 동작 시, 신호들(CTRL_F[0:N-1])을 페이지 버퍼(130) 또는 랜더마이저(140)로 전달할 수 있다. 제어 로직(160)은 페이지 버퍼(130)로 신호들(CTRL_F[0:N-1])을 전달하여, 어느 세그먼트의 메모리 셀들이 프로그램 되었는지에 대한 정보를 페이지 내의 추가적인 메모리 셀들에 프로그램 할 수 있다.
제어 로직(160)은 프로그램 동작 시, 페이지 버퍼(130)에 저장된 쓰기 데이터에 대해 랜덤화 연산이 수행될 수 있도록 랜더마이저(140)를 제어할 수 있다. 랜덤화 연산 수행 후, 제어 로직(160)은 선택된 세그먼트의 메모리 셀들에 랜덤화된 데이터가 전달되도록 페이지 버퍼(130)를 제어할 수 있다.
제어 로직(160)은 읽기 동작 시, 제어 로직(160)은 페이지를 선택하기 위해 메모리 컨트롤러에서 입력 받은 어드레스들을 행 디코더(120)로 전달할 수 있다. 제어 로직(160)은 선택된 세그먼트의 메모리 셀들에 저장된 읽기 데이터가 페이지 버퍼(130)로 전달되도록 페이지 버퍼(130)를 제어할 수 있다. 제어 로직(160)은 읽기 데이터가 입출력 버퍼(150)로 전달되도록 페이지 버퍼(130)를 제어할 수 있다. 제어 로직(160)은 읽기 데이터가 메모리 컨트롤러로 출력되도록 입출력 버퍼(150)를 제어할 수 있다.
제어 로직(160)은 읽기 동작 시 프로그램 동작 경우와 달리 메모리 컨트롤러에서 입력 받은 어드레스들 대신에 신호들(CORE_F[0:N-1])을 참조하여, 랜더마이저(140)의 동작 여부를 결정하는 신호들(CTRL_F[0:N-1])을 생성할 수 있다. 여기서, N은 페이지가 분할된 세그먼트들의 개수를 의미한다.
예를 들어, N이 4인 경우, 제어 로직(160)은 프로그램 동작 경우와 달리 신호들(CORE_F[0:3])을 참조하여, 신호들(CTRL_F[0:3])을 생성할 수 있다. 페이지는 4개의 세그먼트들로 나뉠 수 있다. 신호들(CORE_F[0:3])은 4개의 세그먼트 중 어느 세그먼트의 메모리 셀들이 프로그램 되었는지를 나타낼 수 있다. 신호들(CORE_F[0:3])의 생성 과정에 대한 상세한 설명은 후술한다. 만약, 첫 번째 세그먼트의 메모리 셀들에 대해서만 프로그램이 수행된 경우, 제어 로직(160)은 신호(CTRL_F[0])를 활성화 할 수 있고, 나머지 신호들(CTRL_F[1:3])은 비활성화 할 수 있다.
제어 로직(160)은 읽기 동작 시, 페이지 버퍼(130)에 저장된 읽기 데이터에 대해 디랜덤화 연산이 수행될 수 있도록 랜더마이저(140)를 제어할 수 있다. 디랜덤화 연산 수행 후, 제어 로직(160)은 읽기 데이터가 메모리 컨트롤러로 출력될 수 있도록 페이지 버퍼(130) 또는 입출력 버퍼(150)를 제어할 수 있다.
이상의 본 발명에 따른 불휘발성 메모리 장치(100)에서는 제어 로직(160)을 통해 프로그램 동작 또는 읽기 동작 시, 페이지의 각 세그먼트에 따라 랜더마이저(140)의 동작이 수행되거나 생략될 수 있다. 본 발명의 불휘발성 메모리 장치(100)에 따르면, 랜더마이저(140)의 동작을 생략할 수 있는 만큼, 프로그램 시간 및 읽기 시간이 줄어들 수 있고, 소모 전력이 감소될 수 있다.
도 3 및 도 4는 메모리 셀 어레이의 구성을 예시적으로 보여주는 도면이다. 도 3 및 도 4를 참조하면, 메모리 셀 어레이(110)은 낸드 셀 스트링(Nand Cell String, NS)들을 포함할 수 있다. 메모리 셀 어레이(110)의 낸드 셀 스트링(NS)들은 각각 스트링 선택 트랜지스터(SST)를 통해서 비트 라인(BL[0:Y-1])과 연결된다. 그리고 낸드 셀 스트링(NS)들은 각각 접지 선택 트랜지스터(GST)를 통해서 공통 소스 라인(CSL)과 연결된다.
프로그램 동작 시, 선택된 워드 라인(예를 들어, WL[K])에는 프로그램 전압(Vpgm)과 검증 전압(Vfy)이 인가된다. 비선택 워드 라인들에는 패스 전압(Vpass)이 인가된다. 읽기 동작 시, 선택된 워드 라인(예를 들어, WL[K])에는 선택 읽기 전압(Vrd)을, 비선택 워드 라인들에는 비선택 읽기 전압(Vread)이 인가된다.
도 3을 참조하면, 선택된 워드 라인(WL[K])에 의해 선택된 페이지는 제 1 영역(111) 또는 제 2 영역(112)를 포함할 수 있다. 실시 예에 따라서, 제 1 영역(111) 또는 제 2 영역(112)은 논리적으로 지정될 수도 있다.
제 1 영역(111)은 세그먼트들(111a, 111b)을 포함할 수 있다. 각각의 세그먼트는 메모리 셀들을 포함할 수 있다. 여기서, 메모리 셀은 적어도 2 비트(Bit)가 저장되는 멀티-레벨 셀(MLC)일 수 있다. 도 3을 참조하면, N이 2인 경우, 제 1 영역은 세그먼트들(111a, 111b)을 포함할 수 있다. 도 4를 참조하면, N이 4인 경우, 제 1 영역은 세그먼트들(111a, 111b, 111c, 111d)을 포함할 수 있다. 다시 도 3을 참조하면, 프로그램 동작 시, 세그먼트(111a)의 메모리 셀들에 쓰기 데이터가 프로그램될 수 있다. 이후, 세그먼트(111b)의 메모리 셀들에 다른 쓰기 데이터가 프로그램될 수도 있고 안될 수도 있다.
제 2 영역(112)은 세그먼트들(112a, 112b)을 포함할 수 있다. 각각의 세그먼트는 메모리 셀들을 포함할 수 있다. 제 2 영역 내 세그먼트들의 개수는 제 1 영역 내 세그먼트들의 개수와 일치한다. 즉, 제 2 영역 내 세그먼트들의 개수는 N이다. 도 3을 참조하면, N이 2인 경우, 제 2 영역은 세그먼트들(112a, 112b)을 포함할 수 있다. 도 4를 참조하면, N이 4인 경우, 제 2 영역은 세그먼트들(112a, 112b, 112c, 112d)을 포함할 수 있다.
다시 도 3을 참조하면, 제 2 영역 내에 세그먼트(112a)의 메모리 셀들에는 제 1 영역 내에 세그먼트(111a)의 메모리 셀들이 프로그램 되었는지 여부에 대한 정보가 프로그램 될 수 있다. 제 2 영역 내에 세그먼트(112b)의 메모리 셀들에는 제 1 영역 내에 세그먼트(111b)의 메모리 셀들이 프로그램 되었는지 여부에 대한 정보가 프로그램 될 수 있다. 즉, 제 2 영역 내에 세그먼트들(112a, 112b)은 제 1 영역 내에 세그먼트들(111a, 111b)과 각각 대응될 수 있다. 제 2 영역의 각 세그먼트에 포함된 메모리 셀들의 개수는 제 1 영역의 각 세그먼트에 포함된 메모리 셀들의 개수에 비해 작을 수 있다.
읽기 동작 시, 제 2 영역(112)의 세그먼트들에 포함된 메모리 셀들로부터 읽혀진 데이터들도 페이지 버퍼(130)로 전달될 수 있다. 페이지 버퍼(130)는 페이지 버퍼(130)로 전달된 데이터에 응답하여 신호들(CORE_F[0:N-1])을 생성하고 이를 제어 로직(160)으로 전달할 수 있다. 신호들(CORE_F[0:N-1])은 제 1 영역(111)의 세그먼트들 중 어느 세그먼트의 메모리 셀들이 프로그램 되었는지를 나타낼 수 있다. 예를 들어 읽기 동작 시 N이 2인 경우, 페이지 버퍼(130)는 신호들(CORE_F[0:1])을 생성할 수 있다. 예를 들어 읽기 동작 시 N이 4인 경우, 페이지 버퍼(130)는 신호들(CORE_F[0:3])을 생성할 수 있다.
도 3 및 도 4를 참조하면, 제 2 영역(112)은 제 1 영역(111)과 인접하여 지정될 수 있다. 도시되진 않았으나, 제 2 영역(112)은 제 1 영역(111) 사이에 제 지정될 수 있다. 도 3을 참조하면, 선택된 페이지는 세그먼트(111a), 세그먼트(111b), 세그먼트(112a), 및 세그먼트(112b)를 순차적으로 포함한다. 도시되진 않았으나, 선택된 페이지는 세그먼트(111a), 세그먼트(112a), 세그먼트(111b), 및 세그먼트(112b)를 순차적으로 포함할 수 있다.
도 3 및 도 4는 각각 N이 2 및 4인 경우를 각각 도시하고 있으나, N은 이에 한정되지 않는다. 만약 N이 M인 경우, 제 1 영역은 M개의 세그먼트들을 포함할 수 있고, 제 2 영역도 M개의 세그먼트들을 포함할 수 있다.
도 5는 도 2에 도시된 제어 로직을 예시적으로 보여주는 블록도이다. 도 5를 참조하면, 제어 로직(160)은 어드레스 체크 회로(161), 제 1 레지스터(162), 제 2 레지스터(163), 또는 선택 회로(164)를 포함할 수 있다. 도 5의 제어 로직(160)은 N이 4인 경우를 도시한다. 도 5는 도 4를 참조하여 설명될 것이다.
어드레스 체크 회로(161)는 프로그램 동작 시, 선택된 페이지의 제 1 영역(111)에서 세그먼트들(111a, 111b, 111c, 111d)을 선택하는 어드레스들(ADD[S, T])을 입력 받을 수 있다. 프로그램 동작 시, 어드레스 체크 회로(161)는 어드레스들(ADD[S, T])을 참조하여, 선택된 페이지의 제 1 영역(111)에서 어느 세그먼트의 메모리 셀들이 프로그램 될지를 판단할 수 있다. 어드레스 체크 회로(161)는 판단 결과들을 제 1 레지스터(162)로 전달할 수 있다.
어드레스 체크 회로(161)는 프로그램 동작 시, 프로그램 모드 신호(PGM_MODE)를 입력 받을 수 있다. 프로그램 모드 신호(PGM_MODE)는 불휘발성 메모리 장치(100)가 프로그램 동작을 수행하고 있음을 나타낼 수 있다. 프로그램 모드 신호(PGM_MODE)는 프로그램 동작 시 제어 로직(160)에 의해 생성될 수 있다. 어드레스 체크 회로(161)가 프로그램 동작 시에 동작되고 그 외에는 동작이 차단되면, 어드레스들(ADD[S, T])의 변화에 따른 불필요한 전력 소모를 줄일 수 있다.
어드레스 체크 회로(161)는 어드레스들(ADD[S, T])에 따라 아래와 같이 동작할 수 있다. 예를 들어, 어드레스들(ADD[S, T])이 모두 0인 경우, 어드레스 체크 회로(161)는 세그먼트(111a)의 메모리 셀들이 프로그램 될 것임을 확인할 수 있다. 예를 들어, 어드레스들(ADD[S, T])이 모두 1인 경우, 어드레스 체크 회로(161)는 세그먼트(111d)의 메모리 셀들이 프로그램 될 것임을 확인할 수 있다. 만약 세그먼트들의 개수가 증가하면, 어드레스 체크 회로(161)가 입력 받는 어드레스들의 개수는 증가할 수 있다. 만약 세그먼트들의 개수가 감소하면, 어드레스 체크 회로(161)가 입력 받는 어드레스들의 개수는 감소할 수 있다.
제 1 레지스터(162)는 세그먼트들의 개수(N)만큼 레지스터들을 포함할 수 있다. 제 1 레지스터는 프로그램 동작 시 어드레스 체크 회로(161)의 판단 결과들을 저장할 수 있다. 도 5를 참조하면, 예를 들어 N이 4 인 경우, 제 1 레지스터(162)는 4개의 레지스터들(R1, R2, R3, R4)을 포함할 수 있다. 제 1 레지스터(162)는 프로그램 래치 신호(PGM_LAT)에 응답하여 어드레스 체크 회로(161)의 결과들을 저장할 수 있다. 프로그램 래치 신호(PGM_LAT)는 프로그램 동작 시, 어드레스 체크 회로(161)의 결과들이 출력되는 시간을 고려하여 제어 로직(160)에 의해 생성될 수 있다. 제 1 리셋 신호(RESET1)는 프로그램 동작이 종료된 후, 제어 로직(160)에 의해 생성될 수 있다.
제 2 레지스터(163)는 세그먼트들의 개수(N)만큼 레지스터들을 포함할 수 있다. 제 2 레지스터는 읽기 동작 시, 페이지 버퍼(130)가 출력한 신호들(CORE_F[0:N-1])을 입력 받을 수 있다. 신호들(CORE_F[0:N-1])은 전술한 대로, N개의 세그먼트들 중 어느 세그먼트의 메모리 셀들이 프로그램 되었는지 여부에 대한 정보를 나타낸다.
도 5를 참조하면, N이 4 인 경우, 제 2 레지스터(163)는 4개의 레지스터들(R5, R6, R7, R8)을 포함할 수 있다. 제 2 레지스터(163)는 읽기 래치 신호(RD_LAT)에 응답하여 신호들(CORE_F[0:3])을 통해 4개의 세그먼트들(111a, 111b, 111c, 111d) 중 어느 세그먼트의 메모리 셀들이 프로그램 되었는지 여부에 대한 정보를 저장할 수 있다. 읽기 래치 신호(RD_LAT)는 읽기 동작 시, 신호들(CORE_F[0:3])이 출력되는 시간을 고려하여 제어 로직(160)에 의해 생성될 수 있다. 제 2 리셋 신호(RESET2)는 읽기 동작이 종료된 후, 제어 로직(160)에 의해 생성될 수 있다.
선택 회로(164)는 세그먼트들의 개수와 동일한 수의 멀티플렉서(Multiplexer)들을 포함할 수 있다. 멀티플렉서 회로들은 제 1 레지스터(162) 또는 제 2 레지스터(163)의 출력 결과들을 입력으로 하여, 랜더마이저(140)의 동작 여부를 결정하는 신호들(CTRL_F[0:N-1])을 출력할 수 있다. 도 5를 참조하면, N이 4인 경우, 선택 회로(164)는 4개의 멀티플렉서들(M1, M2, M3, M4)을 포함할 수 있다. 선택 회로(164)는 신호들(CTRL_F[0:3])을 출력할 수 있다.
선택 회로(164)는 프로그램 모드 신호(PGM_MODE) 또는 읽기 모드 신호(RD_MODE)를 입력 받을 수 있다. 프로그램 모드 신호(PGM_MODE)가 활성화된 경우, 선택 회로(164)는 제 1 레지스터의 출력 결과들을 선택하여 출력할 수 있다. 읽기 모드 신호(RD_MODE)가 활성화된 경우, 선택 회로(164)는 제 2 레지스터의 출력 결과들을 선택하여 출력할 수 있다. 여기서, 읽기 모드 신호(RD_MODE)는 불휘발성 메모리 장치(100)가 읽기 동작을 수행하고 있음을 나타낼 수 있다. 제어 로직(160)은 읽기 명령에 응답하여 읽기 모드 신호(RD_MODE)를 생성할 수 있다.
N이 4인 경우, 제어 회로(160)는 랜더마이저(140)의 동작 여부를 결정하는 신호 들(CTRL_F[0:3])을 프로그램 동작 시 또는 읽기 동작 시에 따라 별도로 구비할 수 있다. 이 경우, 도 5에 도시된 경우보다, 랜더마이저(140)의 동작 여부를 결정하는 신호들의 개수는 두 배, 즉 8개(CTRL_F_PGM[0:3], CTRL_F_RD[0:3], 도 5 미도시)로 증가한다. 제어 회로(160)는 선택 회로(164)를 이용하면, 도 5에 도시된 경우와 같이 랜더마이저(140)의 동작 여부를 결정하는 신호들(CTRL_Flag[0:3]) 4개만 필요하다. 즉, 선택회로(164)는 신호(CTRL_F[0:N-1])들이 불필요하게 증가되는 것을 방지할 수 있다.
도 6은 본 발명의 실시 예에 따른 불휘발성 메모리 장치를 예시적으로 보여주는 블록도이다. 도 6을 참조하면, 불휘발성 메모리 장치(200)는 메모리 셀 어레이(210), 행 디코더(220), 페이지 버퍼(230), 랜더마이저(240), 에러 정정 회로(250), 입출력 버퍼(260), 또는 제어 로직(270)을 포함할 수 있다. 랜더마이저(240) 또는 에러 정정 회로(250)는 제어 로직(270)안에 포함될 수 있다. 불휘발성 메모리 장치(200)의 메모리 셀 어레이(210), 행 디코더(220), 페이지 버퍼(230), 랜더마이저(240), 및 입출력 버퍼(260)는 앞서 설명한 불휘발성 메모리 장치(100)의 메모리 셀 어레이(110), 행 디코더(120), 페이지 버퍼(130), 랜더마이저(140), 및 입출력 버퍼(150)와 각각 동일한 기능을 수행하므로 이에 대한 설명은 생략하기로 한다.
에러 정정 회로(250)는 프로그램 동작 시, 페이지 버퍼(230)에 저장된 데이터를 이용하여, 에러 정정 코드(ECC, Error Correction Code)의 패리티 비트들(Parity bits)을 생성할 수 있다. 패리티 비트들은 랜덤화된 데이터와 함께 선택된 페이지에 함께 저장될 수 있다. 예를 들어, 도 3 또는 도 4를 참조하면, 패리티 비트들은 제 2 영역(112)의 메모리 셀들에 저장될 수 있다.
에러 정정 회로(250)는 읽기 동작 시, 선택된 페이지에 저장된 패리티 비트들을 이용하여, 선택된 세그먼트로부터 읽은 데이터의 에러를 검출 및 정정 할 수 있다. 에러 정정 회로(250)의 에러 정정 동작이 종료된 후, 랜더마이저(240)는 페이지 버퍼(230)에 저장된 데이터에 대해 디랜덤화 연산을 수행할 수 있다.
본 발명의 실시 예에 따른 불휘발성 메모리 장치(200)는 에러 정정 회로(250)를 내부에 온칩 형태로 구현할 수 있다. 에러 정정 회로(250)의 상세한 구조 및 동작은 본 발명의 기술 분야에 널리 알려져 있으므로, 이에 대한 설명은 생략하기로 한다.
제어 로직(270)은 도 5에서 상술한 제어 로직(160)과 동일한 기능을 수행할 수 있다. 즉, 제어 로직(270)은 도 5에서 상술한 제어 로직(160)의 어드레스 체크 회로(161), 제 1 레지스터(162), 제 2 레지스터(163), 또는 선택 회로(164)를 동일하게 포함할 수 있다. 제어 로직(270)은 불휘발성 메모리 장치(200)가 에러 정정 회로(250)를 더 포함함에 따라, 에러 정정 회로(250)를 추가로 제어할 수 있다.
제어 로직(270)은 프로그램 동작 시, 메모리 컨트롤러에서 입력 받은 어드레스들을 참조하여 랜더마이저(240) 및 에러 정정 회로(250)의 동작 여부를 결정하는 신호들(CTRL_F[0:N-1])을 생성할 수 있다. 예를 들어, N이 4인 경우, 제어 로직(160)은 메모리 컨트롤러에서 입력 받은 어드레스들을 참조하여 신호들(CTRL_F[0:3])을 생성할 수 있다. 제어 로직(270)은 프로그램 동작 시, 신호들(CTRL_F[0:N-1])을 페이지 버퍼(230), 랜더마이저(240), 또는 에러 정정 회로(250)로 전달할 수 있다.
제어 로직(270)은 프로그램 동작 시, 페이지 버퍼(230)에 저장된 데이터에 대해 랜덤화 연산이 수행될 수 있도록 랜더마이저(240)를 제어할 수 있다. 이후, 제어 로직(270)은 랜덤화 연산이 수행된 데이터에 대해 에러 정정 연산이 수행될 수 있도록 에러 정정 회로(250)를 제어할 수 있다. 여기서, 랜덤화 연산과 에러 정정 연산의 순서는 바뀔 수도 있다. 랜덤화 연산 및 에러 정정 연산이 수행된 데이터는 페이지 버퍼(230)를 통해 선택된 세그먼트의 메모리 셀들에 프로그램 될 수 있다.
제어 로직(270)은 읽기 동작 시, 프로그램 동작 경우와 달리 신호들(CORE_F[0:N-1])을 참조하여, 랜더마이저(240) 및 에러 정정 회로(250)의 동작 여부를 결정하는 신호들(CTRL_F[0:N-1])을 생성할 수 있다.
제어 로직(270)은 읽기 동작 시, 페이지 버퍼(230)에 저장된 읽기 데이터에 대해 에러 정정 연산이 수행될 수 있도록 에러 정정 회로(250)를 제어할 수 있다. 에러 정정 연산 수행 후, 제어 로직(270)은 에러 정정 연산이 수행된 데이터에 대해 디랜덤화 연산이 수행할 수 있도록 랜더마이저(240)를 제어할 수 있다. 에러 정정 연산 및 디랜덤화 연산 수행 후, 제어 로직(270)은 메모리 컨트롤러에 읽기 데이터를 출력할 수 있도록 페이지 버퍼(230) 또는 입출력 버퍼(260)를 제어할 수 있다.
여기서, 에러 정정 연산 및 디랜덤화 연산의 순서는 프로그램 동작 시 랜더마이저(240) 및 에러 정정 회로(250)의 동작 순서에 의존할 수 있다. 즉, 제어 로직(270)이 프로그램 동작 시 랜더마이저(240)를 동작하고 에러 정정 회로(250)를 동작한 경우, 제어 로직(270)은 읽기 동작 시 에러 정정 회로(250)를 동작하고 랜더마이저(240)를 동작시킬 수 있다. 반대로, 제어 로직(270)이 프로그램 동작 시 에러 정정 회로(250)를 동작하고 랜더마이저(240)를 동작한 경우, 제어 로직(270)은 읽기 동작 시 랜더마이저(240)를 동작하고 에러 정정 회로(250)를 동작시킬 수 있다.
이상의 본 발명에 따른 불휘발성 메모리 장치(200)에서는 제어 로직(270)을 통해 프로그램 동작 또는 읽기 동작 시, 각 세그먼트에 따라 랜더마이저(240) 및 에러 정정 회로(250)의 동작이 수행되거나 생략될 수 있다. 본 발명의 불휘발성 메모리 장치(200)에 따르면, 랜더마이저(240) 및 에러 정정 회로(250)의 동작을 생략할 수 있는 만큼, 프로그램 시간 및 읽기 시간이 줄어들 수 있고, 소모 전력이 감소될 수 있다.
도 7은 본 발명에 따른 불휘발성 메모리 장치의 프로그램 동작을 예시적으로 보여주는 순서도이다. 도 7을 참조하면, 도 6에 도시된 불휘발성 메모리 장치(200)의 프로그램 동작이 예시적으로 도시되어 있다.
S110 단계에서, 불휘발성 메모리 장치(200)는 메모리 컨트롤러로부터 프로그램 명령, 쓰기 데이터 및 어드레스들을 입력 받을 수 있다. 제어 로직(270)은 프로그램 명령에 응답하여, 쓰기 데이터를 페이지 버퍼(230)로 전달할 수 있다. 페이지 버퍼(230)로 전달된 쓰기 데이터는 곧바로 메모리 셀 어레이(210)로 전달되기 전에, 랜더마이저(240) 및 에러 정정 회로(250)에 의해 랜덤화 연산 및 에러 정정 연산이 각각 수행될 수 있다.
S120 단계에서, 제어 로직의 어드레스 체크 회로(161)는 프로그램 동작 시, 선택된 페이지의 제 1 영역에서 세그먼트들을 구분하는 어드레스들을 입력 받을 수 있다. 어드레스 체크 회로(161)는 상술한 어드레스들을 참조하여, 선택된 페이지의 제 1 영역에서 어느 세그먼트의 메모리 셀들이 프로그램 되는지를 판단할 수 있다. 제어 로직의 제 1 레지스터(162)는 어드레스 체크 회로(161)의 판단 결과들을 저장할 수 있다. 제어 로직(270)은 프로그램 동작 시, 제 1 레지스터(162)의 저장 결과들을 참조하여 랜더마이저(240) 및 에러 정정 회로(250)의 동작 여부를 결정하는 신호들(CTRL_F[0:N-1])을 생성할 수 있다. 신호들(CTRL_F[0:N-1])은 제어 로직(270)에 의해 랜더마이저(240) 및 에러 정정 회로(250)로 전달될 수 있다.
S130 단계에서, 페이지 버퍼에 저장된 쓰기 데이터는 선택적으로 랜덤화 연산이 수행될 수 있고, 에러 정정 연산이 수행될 수 있다. S130 단계의 상세한 설명은 도 8에서 후술한다.
S140 단계에서, 랜덤화 연산이 수행되고, 에러 정정 연산이 수행된 데이터는 메모리 셀 어레이(210)로 프로그램될 수 있다. 이후, 불휘발성 메모리 장치(200)의 프로그램 동작은 종료된다.
도 8은 본 발명에 따른 불휘발성 메모리 장치의 프로그램 동작의 일부를 예시적으로 보여주는 순서도이다. 도 8을 참조하면, 도 7에 도시된 S130 단계의 상세한 동작이 예시적으로 도시되어 있다.
S131 단계에서, j번째 세그먼트가 프로그램 될 지 여부가 판단될 수 있다. 프로그램 동작 시, 최초로 S131 단계에 진입하는 경우 j는 1이 될 수 있다. 이를 위해, 제어 로직(270)은 신호(CTRL_F[0])가 활성화 되었는지를 판단할 수 있다. j번째 세그먼트가 프로그램 될 경우(Yes), S132 단계에서, 첫 번째 세그먼트의 메모리 셀들에 프로그램될 쓰기 데이터는 랜더마이저(240)에 의해 랜덤화 연산이 수행될 수 있다. 이후, S133 단계에서, 랜덤화 연산이 수행된 데이터는 에러 정정 회로(250)에 의해 에러 정정 연산이 수행될 수 있다. 이후, S134 단계가 수행된다. j번째 세그먼트가 프로그램 되지 않을 경우(No), S132 단계 및 S133 단계는 생략되고, S134 단계가 수행된다. 전술한대로, S132 단계와 S133 단계는 바뀔 수 있다.
S134 단계에서, j번째 세그먼트의 j가 순차적으로 증가될 수 있다. 이를 위해, 카운터 회로(미도시)는 신호(CTRL_F[i])의 i를 순차적으로 증가시킬 수 있다. 제어 로직(270)은 신호들(CTRL_F[0:N-1])이 활성화 되었는지 판단하기 위해, 카운터 회로를 포함할 수 있다. 카운터 회로의 상세한 구조는 본 발명의 기술 분야에 널리 알려져 있으므로, 그것에 대한 설명은 생략하기로 한다.
S135 단계에서, 마지막 세그먼트에 대해 S131 ~ S134의 단계가 수행되었는지 판단될 수 있다(j = N + 1?). j는 1부터 시작하였으므로 j가 N+1에 도달하면, 모든 세그먼트들에 대해 S131 ~ S134의 단계가 수행되었음을 의미한다. 마지막 세그먼트에 대해 S131 ~ S134의 단계가 수행된 경우(Yes), S130 단계는 종료된다. 마지막 세그먼트에 대해 S131 ~ S134의 단계가 수행되지 않은 경우(No), 다음 세그먼트에 대해 S131 단계가 수행된다.
도 7 및 도 8을 참조하면, 도 6에 도시된 불휘발성 메모리 장치(200)의 프로그램 동작이 예시적으로 도시되어 있다. 만약 도 7의 순서도의 S130 단계에서 에러 정정 연산 단계를 생략하고, 도 8의 순서도에서 S133의 단계를 생략하는 경우, 도 7 및 도 8의 순서도는 도 2에 도시된 불휘발성 메모리 장치(100)의 프로그램 동작도 예시적으로 도시할 수 있다.
도 9는 본 발명에 따른 불휘발성 메모리 장치의 읽기 동작을 예시적으로 보여주는 순서도이다. 도 9를 참조하면, 도 6에 도시된 불휘발성 메모리 장치(200)의 읽기 동작이 예시적으로 도시되어 있다.
S210 단계에서, 불휘발성 메모리 장치(200)는 메모리 컨트롤러로부터 읽기 명령을 입력 받을 수 있다. 불휘발성 메모리 장치(200)는 입출력 버퍼(260)를 통해 어드레스 정보를 입력 받을 수 있다. 읽기 명령에 응답하여, 행 디코더(220)는 메모리 셀 어레이(210)의 선택된 워드 라인(WL[K])을 활성화 할 수 있다. 선택된 세그먼트로부터 읽혀진 데이터는 페이지 버퍼(230)에 저장될 수 있다. 페이지 버퍼(230)에 저장된 데이터는 곧바로 입출력 버퍼(260)로 전달되기 전에, 에러 정정 회로(250) 및 랜더마이저(240)에 의해 에러 정정 연산 및 디랜덤화 연산이 각각 수행될 수 있다.
S220 단계에서, 페이지 버퍼(230)는 제어 로직(270)의 제어에 응답하여, 신호들(CORE_F[0:N-1])을 제어 로직(270)으로 출력할 수 있다. 전술한대로, 신호들(CORE_F[0:N-1])은 제 1 영역(111)의 세그먼트들 중 어느 세그먼트의 메모리 셀들이 프로그램 되었는지를 나타낼 수 있다. 신호들(CORE_F[0:N-1])은 제어 로직(270)의 제 2 레지스터(163)에 저장될 수 있다.
S230 단계에서, 페이지 버퍼에 저장된 읽기 데이터는 선택적으로 에러 정정 연산이 수행될 수 있고, 디랜덤화 연산이 수행될 수 있다. S230 단계의 상세한 설명은 도 9에서 후술한다.
S240 단계에서, 에러 정정 연산이 수행되고, 디랜덤화 연산이 수행된 데이터는 메모리 컨트롤러로 출력될 수 있다. 이후, 불휘발성 메모리 장치(200)의 프로그램 동작은 종료된다.
도 10은 본 발명에 따른 불휘발성 메모리 장치의 읽기 동작의 일부를 예시적으로 보여주는 순서도이다. 도 10을 참조하면, 도 9에 도시된 S230 단계의 상세한 동작이 예시적으로 도시되어 있다.
S231 단계에서, j번째 세그먼트가 프로그램 되었는지 여부가 판단될 수 있다. 읽기 동작 시, 최초로 S231 단계에 진입하는 경우 j는 1이 될 수 있다. 이를 위해, 제어 로직(270)은 신호(CTRL_F[i])가 활성화 되었는지를 판단할 수 있다. j번째 세그먼트가 프로그램 된 경우(Yes), S232 단계에서, 페이지 버퍼(230)에 저장된 읽기 데이터는 에러 정정 회로(250)에 의해 에러 정정 연산이 수행될 수 있다. 이후, S233 단계에서, 에러 정정 연산이 수행된 데이터는 랜더마이저(240)에 의해 디랜덤화 연산이 수행될 수 있다. 이후, S234 단계가 수행된다. j번째 세그먼트가 프로그램 되지 않은 경우(No), S232 단계 및 S233 단계는 생략되고, S234 단계가 수행된다. S234 단계는, 전술한 S134 단계와 동일하므로 이에 대한 설명은 생략하기로 한다. 전술한대로, S232 단계와 S233 단계가 바뀔 수 있다.
S235 단계에서, 마지막 세그먼트에 대해 S231 ~ S234의 단계가 수행되었는지 판단될 수 있다(j = N + 1?). j는 1부터 시작하였으므로 j가 N+1에 도달하면, 모든 세그먼트들에 대해 S231 ~ S234의 단계가 수행되었음을 의미한다. 마지막 세그먼트에 대해 S231 ~ S234의 단계가 수행된 경우(Yes), S230 단계는 종료된다. 마지막 세그먼트에 대해 S231 ~ S234의 단계가 수행되지 않은 경우(No), 다음 세그먼트에 대해 S231 단계가 수행된다.
도 9 및 도 10을 참조하면, 도 9에 도시된 불휘발성 메모리 장치(200)의 읽기 동작이 예시적으로 도시되어 있다. 만약 도 9의 순서도의 S230 단계에서 에러 정정 연산 단계를 생략하고, 도 10의 순서도에서 S232의 단계를 생략하는 경우, 도 9 및 도 10의 순서도는 도 2에 도시된 불휘발성 메모리 장치(100)의 읽기 동작도 예시적으로 도시할 수 있다.
도 11은 본 발명의 실시 예에 따른 불휘발성 메모리 장치의 프로그램 동작을 예시적으로 보여주는 타이밍도이다. 도 11은 도 4 또는 도 5를 함께 참조하여 설명될 것이다. 도 11에서는 N이 4일 때 제 1 영역(111)의 모든 세그먼트들(111a, 111b, 111c, 111d)의 메모리 셀들이 프로그램 되는 경우 및 제 1 영역(111)의 일부 세그먼트들(111a, 111d)의 메모리 셀들이 프로그램 되는 경우가 도시되었다. PGM(Program Mode)은 호스트가 생성한 프로그램 명령을 의미할 수 있다. CA(Column Address)는 선택된 페이지를 구분할 수 있는 어드레스들을 의미할 수 있다. RA(Row Address)는 페이지를 선택하는 어드레스들을 의미할 수 있다. 그리고 가로축은 시간을 의미한다.
첫 번째 케이스는 제 1 영역(111) 내 모든 세그먼트들(111a, 111b, 111c, 111d)의 메모리 셀들이 프로그램 되는 경우를 나타낸다. 이 경우, 신호들(CTRL_F[0:3])은 CA(도 5의 ADD[S, T])를 참조하여 제어 로직(270)에 의해 모두 활성화 될 수 있다. 모든 세그먼트들(111a, 111b, 111c, 111d)의 메모리 셀들에 프로그램될 쓰기 데이터는 순차적으로 랜덤화 연산 및 에러 정정 연산이 수행될 수 있다.
두 번째 케이스는 제 1 영역(111) 내 일부 세그먼트들(111a, 111d)의 메모리 셀들이 프로그램 되는 경우를 나타낸다. 이 경우, 신호들(CTRL_F[0, 3])은 CA(도 5의 ADD[S, T])를 참조하여 제어 로직(270)에 의해 활성화 될 수 있다. 일부 세그먼트들(111a, 111d)의 메모리 셀들에 프로그램될 쓰기 데이터는 순차적으로 랜덤화 연산 및 에러 정정 연산이 수행될 수 있다.
도 11을 참조하면, 두 번째 케이스의 동작 방법에 의하면, 첫 번째 케이스에 비하여 점선 부분에 해당하는 만큼 프로그램 시간을 줄일 수 있고, 소모 전력을 감소시킬 수 있다.
도 12는 본 발명의 실시 예에 따른 불휘발성 메모리 장치의 읽기 동작을 예시적으로 보여주는 타이밍도이다. 도 12는 도 4를 함께 참조하여 설명될 것이다. 도 12에서는 N이 4일 때 제 1 영역(111)의 모든 세그먼트들(111a, 111b, 111c, 111d)의 메모리 셀들을 읽는 경우 및 제 1 영역(111)의 일부 세그먼트들(111a, 111d)의 메모리 셀들을 읽는 경우를 비교할 수 있다. RD(Read)는 호스트가 생성한 읽기 명령을 의미할 수 있다. CA 및 RA는 도 11에서 상술한 바와 같다. 그리고 가로축은 시간을 의미한다.
첫 번째 케이스는 제 1 영역(111) 내 모든 세그먼트들(111a, 111b, 111c, 111d)의 메모리 셀들을 읽는 경우를 나타낸다. 이 경우, 신호들(CTRL_F[0:3])은 신호들(CORE_F[0:3])을 참조하여 제어 로직(270)에 의해 모두 활성화 될 수 있다. 모든 세그먼트들(111a, 111b, 111c, 111d)의 메모리 셀들에 프로그램 된 데이터는 페이지 버퍼(230)로 전달된다. 페이지 버퍼(230)로 전달된 데이터는 순차적으로 에러 정정 연산 및 디랜덤화 연산이 수행될 수 있다.
두 번째 케이스는 제 1 영역(111) 내 일부 세그먼트들(111a, 111d)의 메모리 셀들을 읽는 경우를 나타낸다. 이 경우, 신호들(CTRL_F[0, 3])은 신호들(CORE_F[0:3])을 참조하여 제어 로직(270)에 의해 활성화 될 수 있다. 세그먼트들(111a, 111d)의 메모리 셀들에 프로그램 된 데이터는 페이지 버퍼(230)로 전달된다. 페이지 버퍼(230)로 전달된 데이터는 순차적으로 에러 정정 연산 및 디랜덤화 연산이 수행될 수 있다.
도 12를 참조하면, 두 번째 케이스의 동작 방법에 의하면, 첫 번째 케이스에 비하여 점선 부분에 해당하는 만큼 읽기 시간을 줄일 수 있고, 소모 전력을 감소시킬 수 있다.
도 13은 본 발명의 실시 예에 따른 불휘발성 메모리 장치를 예시적으로 보여주는 블록도이다. 도 13을 참조하면, 불휘발성 메모리 장치(300)는 메모리 셀 어레이(310), 행 디코더(320), 페이지 버퍼(330), 에러 정정 회로(340), 입출력 버퍼(350), 또는 제어 로직(360)을 포함할 수 있다. 에러 정정 회로(340)는 제어 로직(360)안에 포함될 수 있다.
불휘발성 메모리 장치(300)의 메모리 셀 어레이(310), 행 디코더(320), 페이지 버퍼(330), 입출력 버퍼(350), 및 제어 로직(360)은 앞서 설명한 불휘발성 메모리 장치(100)의 메모리 셀 어레이(110), 행 디코더(120), 페이지 버퍼(130), 입출력 버퍼(150), 및 제어 로직(160)과 각각 동일한 기능을 수행하므로 이에 대한 설명은 생략하기로 한다. 불휘발성 메모리 장치의 에러 정정 회로(340)는 앞서 설명한 불휘발성 메모리 장치(200)의 에러 정정 회로(250)과 동일한 기능을 수행하므로 이에 대한 설명은 생략하기로 한다.
도 13을 참조하면, 불휘발성 메모리 장치(300)는 도 6에서 도시한 불휘발성 메모리 장치(200)와 비교하여 랜더마이저(240)를 포함하지 않는다. 앞서 설명한 불휘발성 메모리 장치(100)의 원리와 동일하게, 불휘발성 메모리 장치(300)는 프로그램 동작이나 읽기 동작 시, 페이지의 각 세그먼트의 메모리 셀들의 쓰기 데이터 또는 읽기 데이터에 대해서 에러 정정 연산을 생략할 수 있다. 불휘발성 메모리 장치(300)는 생략한 만큼 프로그램 시간 또는 읽기 시간을 줄일 수 있고, 소모 전력을 감소시킬 수 있다.
도 14는 본 발명의 실시 예들에 따른 불휘발성 메모리 장치가 적용된 메모리 카드 시스템을 예시적으로 보여주는 블록도이다. 도 14를 참조하면, 메모리 카드 시스템(1000)은 메모리 컨트롤러(1100), 불휘발성 메모리 장치(1200), 또는 커넥터(1300)를 포함한다.
메모리 컨트롤러(1100)는 불휘발성 메모리 장치(1200)와 연결된다. 메모리 컨트롤러(1100)는 불휘발성 메모리 장치(1200)를 액세스하도록 구성된다. 예를 들어, 메모리 컨트롤러(1100)는 불휘발성 메모리 장치(1200)의 읽기, 프로그램, 소거, 그리고 배경(Background) 동작을 제어하도록 구성된다. 배경 동작은 마모도 관리, 가비지 콜렉션(Garbage Collection) 등과 같은 동작들을 포함한다.
메모리 컨트롤러(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 Random Access Memory), ReRAM(Resistive Random Access Memory), FeRAM(Ferroelectric Random Access Memory), STT-MRAM(Spin-Torque Magnetic Random Access Memory) 등과 같은 다양한 불휘발성 메모리 소자들로 구현될 수 있다.
예시적으로, 메모리 컨트롤러(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) 등과 같은 메모리 카드를 구성할 수 있다.
도 15는 본 발명에 따른 불휘발성 메모리 장치가 적용된 SSD(Solid State Drive) 시스템을 예시적으로 보여주는 블록도이다. 도 15를 참조하면, SSD 시스템(2000)은 호스트(2100) 또는 SSD(2200)를 포함한다. SSD(2200)는 신호 커넥터(2001)를 통해 호스트(2100)와 신호(SIG)를 주고 받고, 전원 커넥터(2002)를 통해 전원(PWR)을 입력 받는다. SSD(2200)는 SSD 컨트롤러(2210), 불휘발성 메모리 장치들(2221~222n), 보조 전원 장치(2230), 또는 버퍼 메모리(2240)를 포함한다.
SSD 컨트롤러(2210)는 호스트(2100)로부터 수신된 신호(SIG)에 응답하여 불휘발성 메모리 장치들(2221~222n)을 제어할 수 있다.
보조 전원 장치(2230)는 전원 커넥터(2002)를 통해 호스트(2100)와 연결된다. 보조 전원 장치(2230)는 호스트(2100)로부터 전원(PWR)을 입력 받고, 충전할 수 있다. 보조 전원 장치(2230)는 호스트(2100)로부터의 전원 공급이 원활하지 않을 경우, SSD 시스템(2000)의 전원을 제공할 수 있다. 예시적으로, 보조 전원 장치(2230)는 SSD(2200) 내에 위치할 수도 있고, SSD(2200) 밖에 위치할 수도 있다. 예를 들면, 보조 전원 장치(2230)는 메인 보드에 위치하며, SSD(2200)에 보조 전원을 제공할 수도 있다.
버퍼 메모리(2240)는 SSD(2200)의 버퍼 메모리로 동작한다. 예를 들어, 버퍼 메모리(2240)는 호스트(2100)로부터 수신된 데이터 또는 불휘발성 메모리 장치들(2221~222n)로부터 수신된 데이터를 임시 저장하거나, 불휘발성 메모리 장치들(2221~222n)의 메타 데이터(예를 들어, 매핑 테이블)를 임시 저장할 수 있다. 버퍼 메모리(2240)는 DRAM(Dynamic Random Access Memory), SRAM(Static Random Access Memory) 등과 같은 휘발성 메모리 또는 FRAM ReRAM, STT-MRAM, PRAM 등과 같은 불휘발성 메모리들을 포함할 수 있다.
도 16은 본 발명에 따른 불휘발성 메모리 장치가 적용된 사용자 시스템을 예시적으로 보여주는 블록도이다. 도 16을 참조하면, 사용자 시스템(3000)은 애플리케이션 프로세서(3100), 메모리 모듈(3200), 네트워크 모듈(3300), 스토리지 모듈(3400), 또는 사용자 인터페이스(3500)를 포함한다.
애플리케이션 프로세서(3100)는 사용자 시스템(3000)에 포함된 구성 요소들, 운영체제(OS; Operating System)를 구동시킬 수 있다. 예시적으로, 애플리케이션 프로세서(3100)는 사용자 시스템(3000)에 포함된 구성 요소들을 제어하는 컨트롤러들, 인터페이스들, 그래픽 엔진 등을 포함할 수 있다. 애플리케이션 프로세서(3100)는 시스템-온-칩(SoC; System-on-Chip)으로 제공될 수 있다.
메모리 모듈(3200)은 사용자 시스템(3000)의 주 메모리, 동작 메모리, 버퍼 메모리 또는 캐쉬 메모리로 동작할 수 있다. 메모리 모듈(3200)은 DRAM, SRAM 등과 같은 휘발성 메모리 또는 PRAM, ReRAM, MRAM, FRAM 등과 같은 불휘발성 메모리들을 포함할 수 있다.
네트워크 모듈(3300)은 외부 장치들과 통신을 수행할 수 있다. 예시적으로, 네트워크 모듈(3300)은 CDMA(Code Division Multiple Access), GSM(Global System for Mobile Communication), WCDMA(Wideband CDMA), CDMA-2000, TDMA(Time Division Multiple Access), LTE(Long Term Evolution), Wimax(Worldwide Interoperability for Microwave Access), WLAN(Wireless LAN), UWB(Ultra Wide Band), 블루투스(Bluetooth), WI-DI(Wireless Display) 등과 같은 무선 통신을 지원할 수 있다. 예시적으로, 네트워크 모듈(3300)은 애플리케이션 프로세서(3100)에 포함될 수 있다.
스토리지 모듈(3400)은 데이터를 저장할 수 있다. 예를 들어, 스토리지 모듈(3400)은 애플리케이션 프로세서(3100)로부터 수신한 데이터를 저장할 수 있다. 또는 스토리지 모듈(3400)은 스토리지 모듈(3400)에 저장된 데이터를 애플리케이션 프로세서(3100)로 전달할 수 있다. 예시적으로, 스토리지 모듈(3400) EPROM, 낸드 플래시 메모리, 노어 플래시 메모리, PRAM, ReRAM, FeRAM, STT-MRAM 등과 같은 불휘발성 반도체 메모리 소자로 구현될 수 있다.
사용자 인터페이스(3500)는 애플리케이션 프로세서(3100)에 데이터 또는 명령어를 입력하거나 또는 외부 장치로 데이터를 출력하는 인터페이스들을 포함할 수 있다. 예시적으로, 사용자 인터페이스(3500)는 키보드, 키패드, 버튼, 터치 패널, 터치 스크린, 터치 패드, 터치 볼, 카메라, 마이크, 자이로스코프 센서(Gyroscope sensor), 진동 센서, 압전 소자 등과 같은 사용자 입력 인터페이스들을 포함할 수 있다. 사용자 인터페이스(3500)는 LCD(Liquid Crystal Display), OLED(Organic Light Emitting Diode) 표시 장치, AMOLED(Active Matrix OLED) 표시 장치, LED(Light Emitting Diode), 스피커, 모터 등과 같은 사용자 출력 인터페이스들을 포함할 수 있다.
본 발명에 따른 메모리 카드, 불휘발성 메모리 장치, 카드 컨트롤러는 다양한 형태들의 패키지를 이용하여 실장될 수 있다. 예를 들면, 본 발명에 따른 플래시 메모리 장치 그리고/또는 메모리 컨트롤러는 PoP(Package on Package), CSP(Chip Scale Package), PDIP(Plastic Dual in Line Package), CERDIP(Ceramic Dual in Line Package), TQFP(Thin Quad Flat Package), SSOP(Shrink Small Outline Package), TSOP(Thin Small Outline Package), WFP(Wafer-level Fabricated Package), WSP(Wafer-level Processed Stack Package) 등과 같은 패키지들을 이용하여 실장 될 수 있다.
이상에서와 같이 도면과 명세서에서 실시 예가 개시되었다. 여기서 특정한 용어들이 사용되었으나, 이는 단지 본 발명을 설명하기 위한 목적에서 사용된 것이지 의미 한정이나 특허 청구범위에 기재된 본 발명의 범위를 제한하기 위하여 사용된 것은 아니다. 그러므로 본 기술분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시 예가 가능하다는 점을 이해할 것이다. 따라서 본 발명의 진정한 기술적 보호 범위는 첨부된 특허 청구범위의 기술적 사상에 의해 정해져야 할 것이다.
10: 메모리 시스템
100, 200, 300: 불휘발성 메모리 장치
110, 210 310: 메모리 셀 어레이
120, 220, 320: 행 디코더
130, 230, 330: 페이지 버퍼
140, 240: 랜더마이저
250, 340: 에러 정정 회로
150, 260, 350: 입출력 버퍼
160, 270, 360: 제어 로직
1000: 메모리 카드 시스템
2000: SSD(Solid State Drive) 시스템
3000: 사용자 시스템

Claims (10)

  1. 쓰기 데이터가 프로그램 되는 복수의 제 1 세그먼트들, 및 각각의 제 1 세그먼트가 프로그램 되는지 여부에 대한 정보가 프로그램 되는 복수의 제 2 세그먼트들을 포함하는 메모리 셀 어레이;
    상기 쓰기 데이터에 대해 랜덤화 연산을 수행하는 랜더마이저;
    상기 랜덤화된 데이터에 대해 에러 정정 연산을 수행하는 에러 정정 회로;
    프로그램 동작 시, 메모리 컨트롤러로부터 수신된 어드레스들을 참조하여, 상기 복수의 제 1 세그먼트들 중 프로그램 되는 세그먼트를 판단하고, 상기 판단 결과를 참조하여, 상기 랜더마이저 및 상기 에러 정정 회로의 동작 여부를 결정하는 제어 로직; 및
    상기 에러 정정 연산이 수행된 데이터 및 상기 판단 결과가 저장되는 페이지 버퍼를 포함하는 불휘발성 메모리 장치.
  2. 제 1 항에 있어서,
    상기 제어 로직은:
    상기 프로그램 동작 시, 상기 어드레스들을 참조하여, 상기 각각의 제 1 세그먼트가 프로그램 되는지 여부를 체크하는 어드레스 체크 회로; 및
    상기 어드레스 체크 회로의 결과들이 저장되는 레지스터를 포함하는 불휘발성 메모리 장치.
  3. 제 1 항에 있어서,
    읽기 동작 시,
    상기 페이지 버퍼는 상기 복수의 제 2 세그먼트들에 프로그램 된 상기 정보를 상기 제어 로직으로 전달하고,
    상기 제어 로직은 상기 페이지 버퍼로부터 전달된 상기 정보를 저장하고, 상기 저장된 정보를 참조하여, 상기 에러 정정 회로 및 상기 랜더마이저의 동작 여부를 결정하고,
    상기 에러 정정 회로는 상기 제어 로직의 제어에 응답하여, 상기 복수의 제 1 세그먼트들에 프로그램 된 데이터에 대해 에러 정정 연산을 수행하고,
    상기 랜더마이저는 상기 제어 로직의 제어에 응답하여, 상기 에러 정정된 데이터에 대해 디랜덤화 연산을 수행하는 불휘발성 메모리 장치.
  4. 제 3 항에 있어서,
    상기 제어 로직은:
    상기 프로그램 동작 시, 상기 어드레스들을 참조하여 상기 각각의 제 1 세그먼트가 프로그램 되는지 여부를 체크하는 어드레스 체크 회로;
    상기 어드레스 체크 회로의 결과들이 저장되는 제 1 레지스터; 및
    상기 페이지 버퍼로부터 전달된 상기 정보가 저장되는 제 2 레지스터를 포함하는 불휘발성 메모리 장치.
  5. 쓰기 데이터가 프로그램 되는 복수의 제 1 세그먼트들, 및 각각의 제 1 세그먼트가 프로그램 되는지 여부에 대한 정보가 프로그램 되는 복수의 제 2 세그먼트들을 포함하는 메모리 셀 어레이; 및
    프로그램 동작 시, 메모리 컨트롤러로부터 수신된 어드레스들을 참조하여, 상기 쓰기 데이터에 대해 제 1 세그먼트 단위로 랜덤화 연산의 수행 여부를 결정하거나, 읽기 동작 시, 상기 복수의 제 2 세그먼트들에 프로그램 된 상기 정보를 참조하여, 상기 복수의 제 1 세그먼트들에 프로그램 된 데이터에 대해 상기 제 1 세그먼트 단위로 디랜덤화 연산의 수행 여부를 결정하는 제어로직을 포함하는 불휘발성 메모리 장치.
  6. 제 5 항에 대해서,
    상기 쓰기 데이터에 대해 상기 랜덤화 연산을 수행하거나, 상기 복수의 제 1 세그먼트들에 프로그램 된 데이터에 대해 상기 디랜덤화 연산을 수행하는 랜더마이저를 더 포함하는 불휘발성 메모리 장치.
  7. 제 6 항에 있어서,
    상기 프로그램 동작 시, 상기 랜덤화된 데이터가 저장되거나, 상기 읽기 동작 시, 상기 디랜덤화된 데이터가 저장되는 페이지 버퍼를 더 포함하는 불휘발성 메모리 장치.
  8. 제 5 항에 있어서,
    상기 제어 로직은, 상기 프로그램 동작 시, 상기 어드레스들을 참조하여, 상기 쓰기 데이터에 대해 상기 제 1 세그먼트 단위로 에러 정정 연산의 수행 여부를 결정하거나, 상기 읽기 동작 시, 상기 복수의 제 2 세그먼트들에 프로그램 된 상기 정보를 참조하여, 상기 복수의 제 1 세그먼트들에 프로그램 된 데이터에 대해 상기 제 1 세그먼트 단위로 에러 정정 연산의 수행 여부를 결정하는 불휘발성 메모리 장치.
  9. 제 8 항에 대해서,
    상기 쓰기 데이터에 대해 랜덤화 연산을 수행하는 랜더마이저; 및
    상기 프로그램 동작 시, 상기 랜덤화된 데이터에 대해 상기 에러 정정 연산을 수행하는 에러 정정 회로를 포함하되,
    상기 읽기 동작 시, 상기 에러 정정 회로는 상기 복수의 제 1 세그먼트들에 프로그램 된 데이터에 대해 상기 에러 정정 연산을 수행하고, 상기 랜더마이저는 상기 에러 정정 연산된 데이터에 대해 상기 디랜덤화 연산을 수행하는 불휘발성 메모리 장치.
  10. 제 9 항에 있어서,
    상기 프로그램 동작 시, 상기 에러 정정 연산이 수행된 데이터가 저장되거나, 상기 읽기 동작 시, 상기 디랜덤화된 데이터가 저장되는 페이지 버퍼를 더 포함하는 불휘발성 메모리 장치.

KR1020160042806A 2016-04-07 2016-04-07 랜덤화 연산을 수행하는 불휘발성 메모리 장치 KR102438988B1 (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020160042806A KR102438988B1 (ko) 2016-04-07 2016-04-07 랜덤화 연산을 수행하는 불휘발성 메모리 장치
US15/401,294 US10409515B2 (en) 2016-04-07 2017-01-09 Nonvolatile memory device for performing at least one of randomization operation and error correction operation
CN201710212175.2A CN107274929B (zh) 2016-04-07 2017-04-01 用于执行随机操作的非易失性存储器装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020160042806A KR102438988B1 (ko) 2016-04-07 2016-04-07 랜덤화 연산을 수행하는 불휘발성 메모리 장치

Publications (2)

Publication Number Publication Date
KR20170115644A KR20170115644A (ko) 2017-10-18
KR102438988B1 true KR102438988B1 (ko) 2022-09-02

Family

ID=59999382

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160042806A KR102438988B1 (ko) 2016-04-07 2016-04-07 랜덤화 연산을 수행하는 불휘발성 메모리 장치

Country Status (3)

Country Link
US (1) US10409515B2 (ko)
KR (1) KR102438988B1 (ko)
CN (1) CN107274929B (ko)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10706920B2 (en) * 2017-11-02 2020-07-07 Samsung Electronics Co., Ltd. Memory device
FR3074317B1 (fr) * 2017-11-27 2019-11-22 Idemia Identity & Security France Procede d'acces a une zone memoire non volatile de type flash d'un element securise, tel qu'une carte a puce
US10606743B2 (en) 2017-12-05 2020-03-31 Micron Technology, Inc. Data movement operations in non-volatile memory
US10636459B2 (en) 2018-05-30 2020-04-28 Micron Technology, Inc. Wear leveling
KR20200089547A (ko) * 2019-01-17 2020-07-27 에스케이하이닉스 주식회사 저장 장치 및 그 동작 방법
CN111899783B (zh) * 2019-05-06 2022-06-03 上海磁宇信息科技有限公司 一种利用写检测的高速mram芯片及其数据读写方法

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140313835A1 (en) 2013-04-17 2014-10-23 Yongkyu Lee Semiconductor Memory Device and Data Programming Method Thereof

Family Cites Families (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100632952B1 (ko) * 2004-09-30 2006-10-11 삼성전자주식회사 정전으로 인한 프로그램 페일의 유무를 판별할 수 있는방법 및 장치
EP1853363A2 (en) 2005-01-24 2007-11-14 Wizards of the Coast, Inc. Game, such as collectable card game employing customizable features
US7451380B2 (en) * 2005-03-03 2008-11-11 International Business Machines Corporation Method for implementing enhanced vertical ECC storage in a dynamic random access memory
KR100704628B1 (ko) * 2005-03-25 2007-04-09 삼성전자주식회사 다수의 스트링을 사용하여 상태 정보를 저장하는 방법 및비휘발성 저장 장치
US8370561B2 (en) * 2006-12-24 2013-02-05 Sandisk Il Ltd. Randomizing for suppressing errors in a flash memory
KR101393622B1 (ko) * 2007-08-30 2014-05-13 삼성전자주식회사 멀티 비트 플래시 메모리 장치를 포함하는 시스템 및그것의 데이터 처리 방법
JP4334590B2 (ja) 2007-12-12 2009-09-30 株式会社東芝 情報再生装置及び情報再生方法
JP2009157836A (ja) 2007-12-27 2009-07-16 Toshiba Corp メモリシステム
KR101554159B1 (ko) * 2008-10-08 2015-09-21 삼성전자주식회사 데이터 저장 장치 및 이를 포함하는 데이터 저장 시스템
KR101516577B1 (ko) 2008-11-10 2015-05-06 삼성전자주식회사 비휘발성 반도체 메모리 장치, 그를 포함하는 메모리 카드와 메모리 시스템 및 그의 리드 전압 추정 방법
KR101504338B1 (ko) 2009-03-04 2015-03-23 삼성전자주식회사 불휘발성 메모리 장치의 동작 방법
KR20100111990A (ko) 2009-04-08 2010-10-18 삼성전자주식회사 플래시 메모리 장치 및 그것의 데이터 랜덤화 방법
KR101650130B1 (ko) 2010-05-14 2016-08-24 삼성전자주식회사 불휘발성 메모리 장치를 포함하는 저장 장치 및 그것의 카피-백 방법
KR101678915B1 (ko) 2010-12-27 2016-11-23 삼성전자주식회사 플래시 메모리 장치, 그것의 데이터 랜덤화 방법, 및 그것을 포함하는 메모리 시스템
KR20120095609A (ko) 2011-02-21 2012-08-29 삼성전자주식회사 반도체 메모리 시스템 및 이의 프로그램 방법
KR101736337B1 (ko) * 2011-02-28 2017-05-30 삼성전자주식회사 비휘발성 메모리 장치, 상기 메모리 장치를 제어하는 컨트롤러, 및 상기 컨트롤러 동작 방법
US9195537B2 (en) * 2011-03-02 2015-11-24 Sandisk Technologies Inc. Method of data storage in non-volatile memory
KR101893143B1 (ko) 2011-03-16 2018-08-31 삼성전자주식회사 비휘발성 메모리 장치, 그것의 프로그램 방법 및 읽기 방법, 및 그것을 포함하는 메모리 시스템
JP2012226822A (ja) 2011-04-15 2012-11-15 Samsung Electronics Co Ltd 不揮発性メモリ装置
KR20130049332A (ko) 2011-11-04 2013-05-14 삼성전자주식회사 메모리 시스템 및 그것의 동작 방법
JP2013122804A (ja) 2011-12-12 2013-06-20 Toshiba Corp 半導体記憶装置
US8581622B1 (en) 2012-05-16 2013-11-12 Hitachi, Ltd. Semiconductor device
KR102069864B1 (ko) 2012-11-05 2020-01-23 에스케이하이닉스 주식회사 반도체 메모리 장치 및 이의 동작 방법
KR102048765B1 (ko) * 2013-01-15 2020-01-22 삼성전자주식회사 메모리 시스템의 동작 방법 및 메모리 시스템
KR20140094668A (ko) * 2013-01-17 2014-07-30 삼성전자주식회사 리던던시 회로 및 이를 포함하는 반도체 메모리 장치
KR102068342B1 (ko) 2013-03-07 2020-01-20 삼성전자주식회사 메모리 제어기 및 그것을 포함하는 메모리 시스템
KR20150049217A (ko) 2013-10-29 2015-05-08 에스케이하이닉스 주식회사 랜더마이저 및 디랜더마이저를 포함하는 메모리 시스템
KR102133542B1 (ko) 2013-12-03 2020-07-14 에스케이하이닉스 주식회사 랜더마이저 및 디랜더마이저를 포함하는 메모리 시스템
KR102174030B1 (ko) * 2014-05-13 2020-11-05 삼성전자주식회사 불휘발성 메모리 장치를 포함하는 저장 장치 및 그것의 읽기 방법

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140313835A1 (en) 2013-04-17 2014-10-23 Yongkyu Lee Semiconductor Memory Device and Data Programming Method Thereof

Also Published As

Publication number Publication date
US20170293449A1 (en) 2017-10-12
KR20170115644A (ko) 2017-10-18
CN107274929A (zh) 2017-10-20
CN107274929B (zh) 2023-03-10
US10409515B2 (en) 2019-09-10

Similar Documents

Publication Publication Date Title
US9478300B2 (en) Operation method of nonvolatile memory system
KR102438988B1 (ko) 랜덤화 연산을 수행하는 불휘발성 메모리 장치
KR20160017167A (ko) 메모리 컨트롤러의 동작 방법 및 불휘발성 메모리 시스템
US11289165B2 (en) Memory device and method of operating the same
US11422905B2 (en) Storage device and method of operating the same
KR20200066882A (ko) 저장 장치 및 그 동작 방법
CN114078543A (zh) 存储器控制器及其操作方法
CN111916134B (zh) 存储装置及其操作方法
KR20200060155A (ko) 저장 장치 및 그 동작 방법
US20220189557A1 (en) Memory device and method of operating the same
US11422739B2 (en) Memory controller and method of operating the same
KR20210038189A (ko) 저장 장치 및 그 동작 방법
US9230638B1 (en) Semiconductor memory device including plurality of memory cells and method of operating the same
US11404100B2 (en) Memory device and method of operating the same
US11055019B2 (en) Storage device and method of operating the same
CN112527189A (zh) 存储器装置及其操作方法
US20200201547A1 (en) Storage device and method of operating the same
US11693771B2 (en) Storage device for storing randomized data and operating method of the same
US11366725B2 (en) Storage device and method of operating the same
US11003392B2 (en) Memory controller and method of operating the memory controller
US20200264959A1 (en) Storage device and method of operating the same
US11482291B2 (en) Memory device and method of operating the same
US11282570B2 (en) Storage device and method of operating the same
US11513946B2 (en) Memory controller generating mapping data and method of operating the same
KR20230168889A (ko) 메모리 장치 및 그것의 동작 방법

Legal Events

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