KR20110087036A - 덮어쓰기 가능한 불휘발성 메모리 장치 및 그것의 데이터 쓰기 방법 - Google Patents

덮어쓰기 가능한 불휘발성 메모리 장치 및 그것의 데이터 쓰기 방법 Download PDF

Info

Publication number
KR20110087036A
KR20110087036A KR1020100006476A KR20100006476A KR20110087036A KR 20110087036 A KR20110087036 A KR 20110087036A KR 1020100006476 A KR1020100006476 A KR 1020100006476A KR 20100006476 A KR20100006476 A KR 20100006476A KR 20110087036 A KR20110087036 A KR 20110087036A
Authority
KR
South Korea
Prior art keywords
data
read
overwrite
command
memory device
Prior art date
Application number
KR1020100006476A
Other languages
English (en)
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 KR1020100006476A priority Critical patent/KR20110087036A/ko
Priority to US13/005,184 priority patent/US8448043B2/en
Publication of KR20110087036A publication Critical patent/KR20110087036A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1048Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/005Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor comprising combined but independently operative RAM-ROM, RAM-PROM, RAM-EPROM cells
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C13/00Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00
    • G11C13/0002Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements
    • G11C13/0021Auxiliary circuits
    • G11C13/0069Writing or programming circuits or methods
    • 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
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C13/00Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00
    • G11C13/0002Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements
    • G11C13/0021Auxiliary circuits
    • G11C13/0069Writing or programming circuits or methods
    • G11C2013/0076Write operation performed depending on read result
    • 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/19Single error correction without using particular properties of the cyclic codes, e.g. Hamming codes, extended or generalised Hamming codes

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Computer Hardware Design (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

본 발명에 따른 불휘발성 메모리 장치의 데이터 쓰기 방법은, 명령어를 디코딩하여 덮어쓰기 또는 프로그램 명령인지를 판단하는 단계, 상기 명령어가 상기 덮어쓰기 명령으로 판단되면, 선택된 셀 영역에 저장된 데이터를 독출하는 단계, 상기 독출된 데이터와 입력되는 덮어쓰기 데이터를 결합하여 패리티 비트를 생성하는 단계, 그리고 상기 덮어쓰기 데이터와 상기 패리티 비트를 상기 선택된 셀 영역에 기입하는 단계를 포함한다.

Description

덮어쓰기 가능한 불휘발성 메모리 장치 및 그것의 데이터 쓰기 방법{OVER WRITABLE NONVOLATILE MEMORY DEVICE AND DATA WRITE METHOD THEREOF}
본 발명은 반도체 메모리 장치에 관한 것으로, 좀 더 구체적으로는 덮어쓰기가 가능한 불휘발성 메모리 장치 및 그것의 데이터 쓰기 방법에 관한 것이다.
반도체 메모리 장치(Semiconductor Memory Device)는 크게 휘발성 메모리 장치(Volatile Memory Device)와 불휘발성 메모리 장치(Non-volatile Memory Device)로 구분된다. 휘발성 메모리 장치는 읽고 쓰는 속도가 빠르지만 외부 전원 공급이 끊기면 저장된 내용이 사라져 버리는 단점이 있다. 반면에 불휘발성 메모리 장치는 외부 전원 공급이 중단되더라도 그 내용을 보존한다. 그러므로 불휘발성 메모리 장치는 전원이 공급되었는지의 여부에 관계없이 보존되어야 할 내용을 기억시키는 데 쓰인다.
불휘발성 메모리 장치로는 마스크 롬(Mask Read-Only Memory: MROM), 프로그램 가능한 롬(Programmable Read-Only Memory: PROM), 소거 및 프로그램 가능한 롬(Erasable Programmable Read-Only Memory: EPROM), 전기적으로 소거 및 프로그램 가능한 롬(Electrically Erasable Programmable Read-Only Memory: EEPROM) 등이 있다.
최근에는, 랜덤 액세스(Random access)가 가능하고 저전력, 고속 및 대용량을 실현할 수 있는 불휘발성 메모리 장치에 대한 수요가 날로 증가하고 있다. 예를 들면, 랜덤 액세스가 가능한 불휘발성 메모리 장치를 XIP(EXecute In Place) 메모리로 사용하기 위한 연구가 활발히 이루어지고 있다. 따라서, 덮어쓰기 가능한 불휘발성 메모리(Over writable NVM) 소자에 대한 연구가 지속되고 있다.
덮어쓰기 가능한 불휘발성 메모리 소자의 예로, 강유전체 커패시터를 이용한 강유전체 램(Ferroelectric RAM: FRAM), 티엠알(TMR: Tunneling magneto-resistive) 막을 이용한 마그네틱 램(Magnetic RAM: MRAM), 칼코겐 혼합물(Chalcogenide alloys)을 이용한 상 변화 메모리 장치(Phase change memory device) 그리고 가변 저항 물질막을 데이터 저장매체로 사용하는 저항성 램(Resistive RAM: ReRAM) 등이 있다.
최근까지는 덮어쓰기 가능한 불휘발성 메모리 장치의 에러 검출 및 정정(Error Detection and Correction) 기술은 크게 부각되지 못했다. 왜냐하면, 덮어쓰기 가능한 불휘발성 메모리 장치는 플래시 메모리(Flash Memory)에 비하여 상대적으로 에러 발생 확률이 낮았기 때문이다. 하지만, 집적도 증가와 소자 기술의 발전에 따라 덮어쓰기 가능한 불휘발성 메모리 장치에서도 에러의 검출과 정정을 위한 기술이 요구되고 있는 실정이다.
본 발명의 목적은 상술한 제반 문제점을 해결하기 위해 제안된 것으로, 덮어쓰기 가능한 불휘발성 메모리 장치의 에러 정정 방법 및 에러 정정 기술을 이용한 데이터 쓰기 방법을 제공하는 데 있다.
상기 목적을 달성하기 위한 본 발명에 따른 불휘발성 메모리 장치의 데이터 쓰기 방법은, 명령어를 디코딩하여 덮어쓰기 또는 프로그램 명령인지를 판단하는 단계, 상기 명령어가 상기 덮어쓰기 명령으로 판단되면, 선택된 셀 영역에 저장된 데이터를 독출하는 단계, 상기 독출된 데이터와 입력되는 덮어쓰기 데이터를 결합하여 패리티 비트를 생성하는 단계, 그리고 상기 덮어쓰기 데이터와 상기 패리티 비트를 상기 선택된 셀 영역에 기입하는 단계를 포함한다.
상기 목적을 달성하기 위한 본 발명의 불휘발성 메모리 장치는, 덮어쓰기 가능한 메모리 셀들을 포함하는 셀 어레이, 입력되는 쓰기 명령어를 디코딩하여 덮어쓰기 명령인지 또는 프로그램 명령인지를 판단하는 제어 로직, 그리고 상기 제어 로직의 판단에 따라 상기 셀 어레이의 선택 영역에 저장된 데이터를 독출하고, 상기 독출된 데이터와 덮어쓰기 데이터를 결합하여 패리티 비트를 생성하여 상기 셀 어레이에 저장하는 읽기/쓰기 회로를 포함한다.
이상과 같은 본 발명에 따른 덮어쓰기 가능한 불휘발성 메모리 장치 및 그것의 데이터 쓰기 방법에 따르면, 덮어쓰기 동작시에 덮어쓰기 데이터에 대응하는 패리티가 생성되어 덮어쓰기 데이터와 함께 기입될 수 있다. 따라서, 성능의 저하없이 고신뢰성을 갖는 덮어쓰기 가능한 불휘발성 메모리 장치를 구현할 수 있다.
도 1은 본 발명의 실시 예에 따른 불휘발성 메모리 장치를 보여주는 블록도;
도 2는 도 1의 제어 로직의 구성을 보여주는 블록도;
도 3은 도 1의 읽기/쓰기 회로의 구성을 보여주는 블록도;
도 4는 본 발명의 덮어쓰기 동작을 보여주는 도면;
도 5는 본 발명의 프로그램 동작시의 패리티 생성 방법을 보여주는 도면;
도 6은 본 발명의 덮어쓰기 동작시의 패리티 생성 방법을 보여주는 도면;
도 7은 본 발명의 쓰기 동작을 보여주는 순서도; 그리고
도 8은 본 발명의 덮어쓰기 가능한 불휘발성 메모리 장치를 포함하는 컴퓨터 시스템을 보여주는 블록도;
도 9는 본 발명의 덮어쓰기 가능한 불휘발성 메모리 장치의 적용의 일 예를 보여주는 블록도;
도 10은 본 발명의 덮어쓰기 가능한 불휘발성 메모리 장치가 장착되는 메모리 카드의 예를 보여주는 블록도;
도 11은 호스트가 본 발명의 덮어쓰기 가능한 불휘발성 메모리 장치에 직접 연결되는 적용 예를 보여주는 블록도;
도 12는 도 10의 메모리 카드가 장착되는 컴퓨터 시스템을 보여주는 블록도;
도 13은 발명의 덮어쓰기 가능한 불휘발성 메모리 장치가 중앙 처리 장치에 직접 연결되는 컴퓨터 시스템을 보여주는 블록도;
도 14는 본 발명에 따른 덮어쓰기 가능한 불휘발성 메모리 장치를 사용하는 휴대용 시스템의 블록도;
도 15는 본 발명에 따른 덮어쓰기 가능한 불휘발성 메모리 장치를 포함하는메모리 시스템의 일 예를 보여주는 블록도;
도 16은 본 발명에 따른 덮어쓰기 가능한 불휘발성 메모리 장치를 포함하는메모리 시스템의 다른 예를 보여주는 블록도; 그리고
도 17은 본 발명에 따른 덮어쓰기 가능한 불휘발성 메모리 장치를 포함하는메모리 시스템의 또 다른 예를 보여주는 블록도.
앞의 일반적인 설명 및 다음의 상세한 설명 모두 예시적이라는 것이 이해되어야 하며, 청구된 발명의 부가적인 설명이 제공되는 것으로 여겨져야 한다. 참조 부호들이 본 발명의 바람직한 실시 예들에 상세히 표시되어 있으며, 그것의 예들이 참조 도면들에 표시되어 있다. 가능한 어떤 경우에도, 동일한 참조 번호들이 동일한 또는 유사한 부분을 참조하기 위해서 설명 및 도면들에 사용된다.
이하에서는, 덮어쓰기 가능한 불휘발성 메모리 장치로 상변환 메모리 장치(PRAM)가 본 발명의 특징 및 기능을 설명하기 위한 한 예로서 사용될 것이다. 하지만, 이 기술 분야에 정통한 사람은 여기에 기재된 내용에 따라 본 발명의 다른 이점들 및 성능을 쉽게 이해할 수 있을 것이다. 본 발명은 다른 실시 예들을 통해 또한, 구현되거나 적용될 수 있을 것이다. 게다가, 상세한 설명은 본 발명의 범위, 기술적 사상 그리고 다른 목적으로부터 상당히 벗어나지 않고 관점 및 응용에 따라 수정되거나 변경될 수 있다. 이하, 본 발명에 따른 실시예를 첨부된 도면을 참조하여 상세히 설명한다.
도 1은 본 발명의 실시 예에 따른 불휘발성 메모리 장치를 보여주는 블록도이다. 도 1을 참조하면, 본 발명의 실시 예에 따른 불휘발성 메모리 장치(100)는 셀 어레이(110), 어드레스 디코더(120), 제어 로직(130), 읽기/쓰기 회로(140) 및 입출력 버퍼(150)를 포함한다.
셀 어레이(110)는, 비록 도면에는 도시되지 않았지만, 행들(또는 워드 라인들)과 열들(또는 비트 라인들)로 배열된 복수의 메모리 셀들이 포함된다. 각 메모리 셀은 불휘발성 메모리 소자들로 형성될 것이다. 특히, 본 발명의 실시 예에 따르면, 셀 어레이(110)는 메인 영역(111)과 스페어 영역(112)으로 구분될 수 있다. 메인 영역(111)에는 유저 데이터(User data)가 저장된다. 스페어 영역(112)에는 메인 영역(111)에 저장된 유저 데이터(User data)의 패리티 비트(Parity bit)가 저장된다. 유저 데이터(User data)와 유저 데이터(User data)로부터 생성된 패리티 비트(Parity bit)를 통틀어 쓰기 유닛(Write Unit)이라 칭하기로 한다.
셀 어레이(110)를 구성하는 메모리 셀들은 덮어쓰기 가능한 소자들로 구성될 수 있다. 일반적으로, 덮어쓰기 가능한 불휘발성 메모리 장치에서 하나의 쓰기 유닛(Write Unit)은 동일한 행에 기입된다. 즉, 셀 어레이(110)의 하나의 행(Row)에는 하나 혹은 그 이상의 쓰기 유닛(Write Unit)들이 기입될 수 있다.
어드레스 디코더(120)는 입력되는 어드레스(ADDR)를 디코딩하여 행(Row)과 열(Column)을 선택한다. 어드레스 디코더(120)는 데이터의 쓰기 동작시 입력되는 행 어드레스(Row address)에 대응하는 워드 라인(Word line)을 선택한다. 어드레스 디코더(120)는 입력되는 열 어드레스(Column address)에 대응하는 비트 라인(Bit line)을 선택한다.
제어 로직(130)은 외부에서 제공되는 명령어(CMD)를 디코딩하여 읽기/쓰기 회로(140) 및 입출력 버퍼(150)를 제어한다. 명령어(CMD)에는 읽기 명령어(Read Command), 소거 명령어(Erase Command) 그리고 쓰기 명령어(Write Command)가 포함된다. 특히, 본 발명의 실시 예에 따르면, 쓰기 명령어(Write Command)에는 덮어쓰기 명령어(Over Write Command)와 프로그램 명령어(Program Command)가 포함된다. 프로그램 명령어(Program Command)는 이미 소거된 메모리 셀들에 하나의 쓰기 유닛을 기입하는 동작을 의미한다. 덮어쓰기 명령어(Over Write Command)는 이미 데이터가 기입된 셀 어레이 영역에 적어도 1-비트 이상의 데이터를 기입하는 동작을 의미한다.
제어 로직(130)은 명령어(CMD)를 제공받아 디코딩한다. 제어 로직(130)은 명령어(CMD)의 디코딩 결과에 따라 선택된 영역에 대한 읽기, 소거, 프로그램 또는 덮어쓰기를 실행하도록 읽기/쓰기 회로(140)를 제어한다. 명령어(CMD)의 디코딩 결과가 읽기(Read)에 대응하는 경우, 제어 로직(130)은 선택된 영역에 저장된 데이터를 읽어내도록 읽기/쓰기 회로(140)를 제어한다. 명령어(CMD)의 디코딩 결과가 소거(Erase)에 대응하는 경우, 제어 로직(130)은 선택된 영역에 저장된 데이터를 삭제하도록 읽기/쓰기 회로(140)를 제어한다.
명령어(CMD)의 디코딩 결과가 프로그램(Program)에 대응하는 경우, 제어 로직(130)은 입력되는 데이터(Data)를 셀 어레이(110)의 선택된 영역에 기입하도록 읽기/쓰기 회로(140)를 제어한다. 반면, 명령어(CMD)의 디코딩 결과가 덮어쓰기(Over Write)에 대응하는 경우, 제어 로직(130)은 본 발명의 실시 예에 따른 패리티 비트(Parity bit)의 업데이트를 포함하는 덮어쓰기 동작을 수행하도록 읽기/쓰기 회로(140)를 제어한다.
읽기/쓰기 회로(140)는 제어 로직(130)의 제어에 따라 셀 어레이(110)에 저장된 데이터를 읽거나 입력되는 데이터를 셀 어레이(110)에 기입한다. 덮어쓰기 동작시, 읽기/쓰기 회로(140)는 입력되는 적어도 1-비트 이상의 데이터를 선택된 영역에 덮어쓴다. 덮어쓰기를 위해서, 읽기/쓰기 회로(140)는 어드레스(ADDR)에 의해서 셀 어레이(110)의 선택된 영역을 센싱한다. 읽기/쓰기 회로(140)는 센싱된 데이터에 포함되는 패리티 비트를 이용하여 읽어낸 데이터의 에러를 검출 및 정정한다.
읽기/쓰기 회로(140)는 에러가 정정된 데이터와 입력되는 덮어쓰기 데이터를 결합한다. 읽기/쓰기 회로(140)는 에러가 정정된 데이터와 덮어쓰기 데이터의 결합데이터로부터 새로운 패리티 비트를 생성한다. 읽기/쓰기 회로(140)는 입력되는 덮어쓰기 데이터를 메인 영역(111)의 선택된 영역에 덮어쓰고, 생성된 새로운 패리티 비트를 스페어 영역(112)의 선택 영역에 기입한다.
반면, 프로그램 동작시 읽기/쓰기 회로(140)는 선택된 영역에 대한 센싱 동작을 수행하지 않는다. 읽기/쓰기 회로(140)는 외부에서 입력되는 쓰기 데이터만으로 패리티 비트(Parity bit)를 생성한다. 그리고 읽기/쓰기 회로(140)는 생성된 패리티 비트와 입력되는 쓰기 데이터를 셀 어레이(110)의 선택 영역에 기입한다. 읽기/쓰기 회로(140)는 제어 로직(130)의 제어에 따라 선택된 영역에 대한 소거 및 읽기 동작을 수행한다.
입출력 버퍼(150)는 제어 로직(130)의 제어에 따라 외부로부터 제공되는 데이터를 일시 저장한다. 입출력 버퍼(150)에 일시 저장된 데이터는 셀 어레이(110)에 기입되기 위하여 읽기/쓰기 회로(140)에 제공된다. 입출력 버퍼(150)는 읽기/쓰기 회로(140)로부터 제공되는 읽기 데이터를 일시 저장한다. 입출력 버퍼(150)는 저장된 읽기 데이터를 요청한 외부 장치로 전달한다. 다른 실시 예로서, 입출력 버퍼(150)는 또한 외부로부터의 명령어나 어드레스를 일시 저장하여 제어 로직(130) 또는 어드레스 디코더(120)에 전달할 수 있다.
이상의 설명에 따르면, 본 발명의 불휘발성 메모리 장치(100)는 덮어쓰기 명령어가 제공되면, 입력된 덮어쓰기 데이터와 선택된 영역으로부터 읽혀진 데이터를 결합하여 새로운 패리티 비트를 생성한다. 그리고, 불휘발성 메모리 장치(100)는 입력된 덮어쓰기 데이터와 생성된 패리티 비트를 선택된 영역에 기입한다. 따라서, 덮어쓰기 동작시에도 에러의 검출 및 정정을 위한 패리티 비트의 업데이트가 가능하다.
도 2는 도 1의 제어 로직(130)의 간략한 구성을 보여주는 블록도이다. 도 2를 참조하면, 제어 로직(130)은 명령어 디코더(131), 프로그램 컨트롤러(132), 덮어쓰기 컨트롤러(133), 소거 컨트롤러(134) 및 읽기 컨트롤러(135)를 포함한다.
명령어 디코더(131)는 외부에서 제공되는 명령어(CMD)를 디코딩한다. 명령어 디코더(131)는 디코딩된 결과에 따라서 프로그램 컨트롤러(132), 덮어쓰기 컨트롤러(133), 소거 컨트롤러(134) 및 읽기 컨트롤러(135)들 중 어느 하나를 활성화한다. 명령어(CMD)의 디코딩 결과가 프로그램에 대응하는 경우, 명령어 디코더(131)는 프로그램 컨트롤러(132)를 활성화한다. 명령어(CMD)의 디코딩 결과가 덮어쓰기에 대응하는 경우, 명령어 디코더(131)는 덮어쓰기 컨트롤러(133)를 활성화한다. 명령어(CMD)의 디코딩 결과가 소거에 대응하는 경우, 명령어 디코더(131)는 소거 컨트롤러(134)를 활성화한다.
프로그램 컨트롤러(132)는 입력되는 프로그램 데이터(Program data)를 소거 상태로 존재하는 메모리 셀들에 기입하도록 읽기/쓰기 회로(140)를 제어한다. 프로그램 컨트롤러(132)는 읽기/쓰기 회로(140)에서 입력되는 프로그램 데이터로부터 패리티 비트를 생성하도록, 그리고 입력된 프로그램 데이터와 패리티 비트를 해당 셀 영역에 기입하도록 읽기/쓰기 회로(140)를 제어한다.
덮어쓰기 컨트롤러(133)는 덮어쓰기 동작을 수행하도록 읽기/쓰기 회로(140)를 제어한다. 덮어쓰기 컨트롤러(133)가 활성화되면, 덮어쓰기 컨트롤러(133)는 먼저 입력된 어드레스(ADDR)에 대응하는 셀 영역에 저장된 데이터를 읽어내도록 읽기/쓰기 회로(140)를 제어한다. 덮어쓰기 컨트롤러(133)는 선택된 영역으로부터 읽혀진 데이터에 포함될 수 있는 에러를 검출 또는 정정하도록 읽기/쓰기 회로(140)를 제어한다. 덮어쓰기 컨트롤러(133)는 에러가 정정된 데이터와 입력된 덮어쓰기 데이터를 결합하여 새로운 패리티를 생성하도록 읽기/쓰기 회로(140)를 제어한다. 덮어쓰기 컨트롤러(133)는 입력된 덮어쓰기 데이터와 새로운 패리티를 선택된 셀 영역에 기입하도록 읽기/쓰기 회로(140)를 제어한다.
소거 컨트롤러(134)는 어드레스(ADDR)에 의해서 선택된 메모리 영역을 소거하도록 읽기/쓰기 회로(140)를 제어한다. 읽기 컨트롤러(135)는 어드레스(ADDR)에 의해서 선택된 메모리 영역을 읽어내도록 읽기/쓰기 회로(140)를 제어한다.
이상에서 설명된 제어 로직(130)의 구성은 본 발명의 기술적 특징을 구현하기 위한 예시에 불과하다. 명령어의 디코딩 및 디코딩된 명령어에 대응하는 동작을 활성화하는 제어 로직(130)은 다양한 구성들이나 또는 알고리즘들로 구현될 수 있을 것이다.
도 3은 도 1의 읽기/쓰기 회로(140)의 상세한 구성을 예시적으로 보여주는 블록도이다. 도 3을 참조하면, 읽기/쓰기 회로(140)는 감지 증폭기(141), 읽기 버퍼(142), 에러 정정 회로(143), 쓰기 버퍼(144), 및 쓰기 드라이버(145)를 포함한다.
감지 증폭기(141)는 메모리 셀을 센싱하여 독출 데이터(Read data)를 출력한다. 감지 증폭기(141)는 메모리 셀의 저항 크기에 대응하는 전기적 신호를 이용하여 메모리 셀에 저장된 데이터를 감지할 수 있다. 가변 저항 소자로 구성되는 메모리 셀의 경우, 감지 증폭기(141)는 메모리 셀에 인가되는 전압에 대응하는 전류의 크기를 센싱하여 논리 '1' 또는 논리 '0'로 판정할 수 있다.
읽기 버퍼(142)는 감지 증폭기(141)에 의해서 센싱된 데이터를 일시 저장한다. 읽기 버퍼(142)와 감지 증폭기(141)는 셀 어레이(110, 도 1 참조)의 메인 영역(111)과 스페어 영역(112) 각각에 대해서 구비되어야 할 것이다.
에러 정정 회로(143)는 제어 로직(130)의 제어에 따라 쓰기 데이터(프로그램 데이터 또는 덮어쓰기 데이터)의 패리티 비트를 생성한다. 에러 정정 회로(143)는 제어 로직(130)의 제어에 따라 독출 데이터의 에러를 검출하고, 검출된 에러를 정정한다. 특히, 덮어쓰기 동작시 에러 정정 회로(143)는 덮어쓰기 영역으로부터 센싱된 데이터의 에러를 검출 및 정정한다. 에러 정정 회로(143)는 에러가 정정된 센싱 데이터에 덮어쓰기 데이터를 결합하여 패리티 비트를 재생성한다. 에러 정정 회로(143)는 입력되는 덮어쓰기 데이터와 재생성된 패리티 비트를 선택된 영역에 기입하기 위하여 쓰기 버퍼(144)에 제공한다.
쓰기 버퍼(144)는 셀 어레이(110)에 기입될 데이터를 일시 저장하고, 저장된 데이터를 쓰기 드라이버(145)에 전달한다. 쓰기 드라이버(145)는 제공되는 데이터를 셀 어레이(110)의 선택된 셀 영역에 기입한다.
상술한 읽기/쓰기 회로(140)의 덮어쓰기 동작은 제어 로직(130)으로부터 제공되는 제어 신호(Control Signal)에 응답하여 수행된다. 이상에서 읽기/쓰기 회로(140)의 덮어쓰기 동작에 대해서 기술하였다. 하지만, 읽기/쓰기 회로(140)는 제어 신호(Control signal)에 응답하여 소거, 읽기, 그리고 프로그램 동작들 중 어느 하나의 동작을 수행할 수 있다.
도 4는 본 발명의 실시 예에 따른 덮어쓰기 동작을 간략하게 보여주는 도면이다. 도 4를 참조하면, 본 발명의 실시 예에 따른 불휘발성 메모리 장치(100, 도 1 참조)는 덮어쓰기 동작시에도 에러의 검출과 정정을 위한 패리티 비트를 업데이트(Update)할 수 있다. 즉, 덮어쓰기 데이터(201, 202)가 입력되면, 불휘발성 메모리 장치(100)는 덮어쓰기 데이터(201, 202)가 적용된 유저 데이터(200)를 구성한다. 그리고 불휘발성 메모리 장치(100)는 유저 데이터(200)로부터 패리티 비트(205)를 생성할 수 있다. 좀더 자세히 설명하면 다음과 같다.
프로그램 동작시에는 하나의 쓰기 유닛(Write Unit)에 대응하는 데이터가 셀 어레이(110)에 기입된다. 즉, 프로그램 동작시, 하나의 쓰기 유닛에 포함되는 유저 데이터(예를 들면, 256-비트) 및 패리티 비트(9-비트, 해밍 코드 적용시)가 메인 영역(111)과 스페어 영역(112)에 각각 기입된다.
덮어쓰기 동작시, 외부로부터 입력되는 덮어쓰기 데이터는 최악의 경우에는 1-비트가 될 수도 있다. 도면에서, 2-비트의 덮어쓰기 데이터(201, 202)가 입력되는 경우를 가정하기로 한다. 덮어쓰기 동작시에는 실질적으로 선택된 셀 영역에는 2-비트의 덮어쓰기 데이터(201, 202)와 새롭게 생성된 패리티 비트(205)만 기입된다. 패리티 비트(205)는 덮어쓰기 동작이 실시될 때마다 업데이트될 수 있다.
패리티 비트(205)는 덮어쓰기 데이터(201, 202)를 적용한 유저 데이터(200)로부터 생성된다. 그러므로 패리티 비트(205)의 생성을 위해서는 유저 데이터(200)의 구성이 선행되어야 할 것이다. 유저 데이터(200)에서 덮어쓰기 데이터(201, 202)를 제외한 비트들은 선택된 셀 영역에 이미 기입된 데이터이다. 따라서, 덮어쓰기 동작시 유저 데이터(200)를 구성하기 위한 읽기 동작이 필요하다.
결국, 덮어쓰기 동작시 선택된 셀 영역으로부터 데이터가 읽혀진다. 그리고 읽혀진 데이터의 패리티 비트를 사용하여 에러가 검출 또는 정정된다. 에러가 정정된 데이터에 덮어쓰기 데이터(201, 202)를 결합(Mix)하면, 새로운 패리티 비트(205)의 생성을 위한 유저 데이터(200)의 구성이 완료된다. 패리티 비트 생성 연산을 통해서 덮어쓰기 데이터(201, 202)가 결합된 유저 데이터(200)로부터 패리티 비트(205)가 생성된다.
이상에서는 하나의 쓰기 유닛(200, 205)에 대한 1회의 덮어쓰기 동작이 설명되었다. 하지만, 또 다른 덮어쓰기 데이터가 입력되어 덮어쓰기 동작이 반복되더라도 매 덮어쓰기 동작시마다 패리티 비트가 새롭게 생성되어 덮어쓰기 데이터와 함께 선택된 셀 영역에 기입될 것이다. 따라서, 본 발명의 불휘발성 메모리 장치(100)는 지속적으로 새로운 패리티 비트를 업데이트할 수 있다. 그리고 생성된 패리티 비트는 덮어쓰기 동작 때마다 스페어 영역(112)의 해당 위치에 기입될 수 있다.
도 5는 본 발명의 실시 예에 따른 프로그램 동작을 보여주는 도면이다. 도 5를 참조하면, 프로그램을 위해서 불휘발성 메모리 장치(100)에 제공되는 프로그램 데이터(210)는 패리티 비트(220)와 결합하여 하나의 쓰기 유닛(230)을 구성한다. 좀더 자세히 설명하면 다음과 같다.
먼저, 외부로부터 프로그램 명령(Program CMD)과 어드레스가 제공되면, 제어 로직(130)은 프로그램 명령(Program CMD)을 디코딩하여 프로그램 컨트롤러(132)를 활성화한다. 프로그램 컨트롤러(132)의 제어에 따라, 에러 정정 회로(143)는 프로그램 데이터(210)로부터 패리티 비트(220)를 생성한다. 패리티 비트(220)는, 예를 들면, 해밍 코드(Hamming Code)에 의해서 생성될 수 있다. 하지만, 본 발명의 패리티 비트의 생성 방식은 이에 국한되지 않는다. 패리티 비트(220)를 생성하기 위해서 다양한 에러 정정 연산이 적용될 수 있다.
프로그램 데이터(210)와 패리티 비트(220)는 하나의 쓰기 유닛(Write Unit)을 구성한다. 프로그램 데이터(210)와 패리티 비트(220)의 의해서 구성된 쓰기 유닛(Write Unit)은 쓰기 버퍼(144)에 제공된다. 쓰기 버퍼(144)에 저장된 프로그램 데이터(210)와 패리티 비트(220)로 구성된 쓰기 유닛(Write Unit, 230)은 쓰기 드라이버(145)에 의해서 선택된 셀 영역에 기입된다.
이상에서 설명된 본 발명의 실시 예에 따른 프로그램 동작에 의하면, 에러 정정 회로(143)에 의해서 패리티 비트(220)가 생성된다. 패리티 비트(220)는 프로그램 데이터(210)와 함께 하나의 쓰기 유닛(230)을 구성한다. 하나의 쓰기 유닛(230)은 선택된 셀 영역에 프로그램된다.
도 6은 본 발명의 실시 예에 따른 덮어쓰기 동작을 보여주는 도면이다. 도 6을 참조하여, 덮어쓰기 동작을 위하여 외부로부터 제공되는 데이터가 1-비트 사이즈인 경우를 가정하여 본 발명의 이점을 설명하기로 한다.
덮어쓰기 동작을 위하여 외부로부터 명령어(CMD)와 어드레스(Address)가 제공될 것이다. 명령어와 어드레스의 입력에 뒤따라 덮어쓰기 데이터(310)가 제공된다. 덮어쓰기를 위하여 입력되는 덮어쓰기 데이터(310)는 하나의 쓰기 유닛(예를 들면, 256-비트) 이하의 비트 수로 제공될 수 있다. 최악의 경우에는 단 1-비트의 덮어쓰기 데이터가 제공될 수도 있을 것이다.
덮어쓰기 동작을 지시하는 명령어(Over write CMD)에 의해서 제어 로직(130)의 덮어쓰기 컨트롤러(133)가 활성화되면, 읽기/쓰기 회로(140)는 어드레스(Address)에 대응하는 셀 영역을 읽어낸다. 읽혀진 독출 데이터(320)에는 유저 데이터(User data, 321)와 패리티 비트(Parity bit, 322)가 포함된다. 에러 정정 회로(143)는 패리티 비트(322)를 참조하여 유저 데이터(321)에 포함되는 에러를 검출 및 정정한다.
구체적으로, 에러 정정 회로(143)는 독출 데이터(320)의 패리티 비트(Parity bit)를 이용하여 유저 데이터(User data)의 신드롬(Syndrome)을 계산한다. 신드롬(Syndrome)은 유저 데이터(User data)에 에러가 존재하는지의 여부와 에러의 위치 정보를 포함한다. 에러 정정 회로(143)는 신드롬(Syndrome)을 참조하여 유저 데이터에 에러가 존재하는지의 여부와, 그리고 에러가 존재하는 경우에는 에러의 정정 가능 여부를 판단하게 될 것이다.
에러 정정 회로(143)는 유저 데이터(321)에 에러가 존재하지 않는 경우에는 유저 데이터(User data)를 변경하지 않는다. 만일, 에러가 존재하고 정정 가능한 것으로 판단되면, 에러 정정 회로(143)는 신드롬(Syndrome)의 값을 참조하여 유저 데이터의 에러 위치를 찾아 정정한다. 만일, 신드롬(Syndrome)의 값이 정정 불가한 에러를 나타내는 경우, 에러 정정 회로(143)는 해당 셀 영역을 재독출하도록 설정될 수 있다.
독출 데이터(320)에 대한 에러 검출 및 정정 연산에 의하여 에러가 없는 유저 데이터(Error free user data, 330)가 생성된다. 이어서, 유저 데이터(330)와 외부에서 입력된 덮어쓰기 데이터(310)가 결합(Mixing)된다. 유저 데이터(330)의 비트들 중 덮어쓰기될 비트 위치에 덮어쓰기 데이터(310)가 삽입된다. 그러면, 업데이트된 하나의 새로운 유저 데이터(340)가 구성된다.
에러 정정 회로(143)는 하나의 유저 데이터(340)에 대한 패리티 생성(Parity generation) 연산을 실시한다. 패리티 생성 연산에 의해서 덮어쓰기 데이터(310)가 적용된 유저 데이터(340)의 패리티 비트(350)가 생성된다. 패리티 비트(350)는 이전의 독출 데이터(320)에 포함된 패리티 비트(322)와는 다른 값으로 생성될 것이다.
덮어쓰기를 위한 패리티 비트(350)의 생성이 완료되면, 덮어쓰기 데이터(310)와 새롭게 생성된 패리티 비트(350)를 선택된 셀 영역에 저장하기 위한 덮어쓰기 동작이 실행된다. 덮어쓰기 동작시, 하나의 쓰기 유닛(360)은 덮어쓰기 데이터(361)와 새롭게 생성된 패리티 비트(362)가 포함된다. 즉, 유저 데이터(User data)에 대응하는 셀 영역에는 덮어쓰기 데이터(361)가 기입될 것이다. 그리고 패리티 비트가 저장될 셀 영역에는 새롭게 생성된 패리티 비트(362)가 저장될 것이다. 덮어쓰기 동작시에 셀 영역에는 실질적으로 쓰기 유닛(360)에 포함되는 비트들만 기입된다.
만일 덮어쓰기를 위하여 제공된 입력 데이터가 1-비트라면, 최종적으로 셀 어레이(320)에 기입되는 쓰기 데이터(360)는 1-비트의 유저 데이터(User data)와 새롭게 생성된 패리티 비트(Parity bit, 예를 들면 9-bit)를 포함한다.
이상에서 설명된 덮어쓰기 방식에 따라 외부로부터 명령어와 덮어쓰기 데이터가 입력되면 덮어쓰기 데이터에 대응하는 새로운 패리티 비트들이 생성되어 셀 영역에 업데이트될 수 있다. 따라서, 덮어쓰기 가능한 불휘발성 메모리 장치의 데이터 신뢰도를 획기적으로 높일 수 있다.
도 7은 본 발명의 실시 예에 따른 데이터 쓰기 방법을 보여주는 순서도이다. 도 7을 참조하면, 외부로부터 불휘발성 메모리 장치(100, 도 1 참조)에 명령어(CMD)가 제공되면 본 발명에 따른 쓰기 절차가 시작된다.
단계 S110에서, 외부로부터 명령어가 입력되면, 불휘발성 메모리 장치(100)의 제어 로직(130, 도 1 참조)은 입력되는 명령어(CMD)와 어드레스(Address)를 수신한다. 수신된 명령어(CMD)는 제어 로직(130)으로 전달되고, 어드레스(Address)는 어드레스 디코더(120, 도 1 참조)에 전달될 것이다. 도시되지는 않았지만, 불휘발성 메모리 장치(100)의 쓰기 동작(프로그램 또는 덮어쓰기 동작)에서 데이터는 명령어(CMD)와 어드레스(Address)에 뒤따라 입력될 수 있다. 셀 영역에 기록될 데이터는 불휘발성 메모리 장치(100)의 내부의 입출력 버퍼(150, 도 1 참조)에 저장된다.
단계 S120에서, 제어 로직(130)은 수신된 명령어(CMD)를 디코딩하여 프로그램 컨트롤러(131) 또는 덮어쓰기 컨트롤러(132)를 활성화한다. 프로그램 동작의 경우, 제어 로직(130)에 포함되는 프로그램 컨트롤러(131)가 활성화될 것이다. 프로그램 동작을 위해서 절차는 단계 S130으로 이동한다. 덮어쓰기 동작의 경우, 제어 로직(130)에 포함되는 덮어쓰기 컨트롤러(132)가 활성화될 것이다. 덮어쓰기 동작을 위하여 절차는 단계 S150으로 이동한다.
단계 S130에서, 프로그램 동작을 위하여 읽기/쓰기 회로(140, 도 3 참조)는 입력된 프로그램 데이터로부터 패리티 비트(Parity bit)를 생성한다. 특히, 에러 정정 회로(143)는 제공되는 프로그램 데이터(Program data)로부터 에러를 검출 및 정정하기 위한 패리티 생성 연산(Parity generation operation)을 수행한다.
단계 S140에서, 프로그램 데이터에 대한 패리티 비트의 생성이 완료되면, 에러 정정 회로(143)는 쓰기 버퍼(144)에 프로그램 데이터와 생성된 패리티 비트를 전달한다. 쓰기 버퍼(144)에 전달된 쓰기 유닛은 쓰기 드라이버(145)에 의해서 타깃 셀 영역(선택된 셀 영역)에 기입된다. 타깃 셀 영역에 프로그램 데이터와 대응하는 패리티 비트가 성공적으로 기입되면 외부로부터 입력된 프로그램 명령에 대한 동작은 종료된다.
덮어쓰기 동작을 위한 단계 S150에서, 에러 정정 회로(143)는 입력되는 덮어쓰기 데이터를 선택된 셀 영역에 쓰기 이전에 선택된 영역에 저장된 유저 데이터 및 패리티 비트를 독출한다. 그리고 에러 정정 회로(143)는 독출된 데이터에 대한 에러 검출 및 정정 연산을 수행한다. 좀더 구체적으로, 에러 정정 회로(143)는 독출된 유저 데이터와 패리티 비트를 참조하여 신드롬(Syndrome)을 생성한다. 생성된 신드롬(Syndrome)이 에러가 없음을 지시하면, 에러 정정 회로(143)는 독출된 데이터를 새로운 패리티를 생성하기 위한 데이터로 사용한다. 신드롬(Syndrome)이 유저 데이터에 정정 가능한 에러가 존재하는 것으로 나타나면, 에러 정정 회로(143)는 에러의 위치를 계산한다. 그리고 에러 정정 회로(143)는 독출된 유저 데이터의 에러 위치에 대응하는 비트의 논리값을 전환함으로써 에러를 정정할 수 있다.
반면, 생성된 신드롬(Syndrome)이 정정 불가능한 에러가 포함된 것으로 나타나는 경우, 에러 정정 회로(143)는 타깃 영역에 대한 재독출이나, 또 다른 에러 정정 부호를 적용할 수 있다.
단계 S160에서, 에러 정정 회로(143)는 에러가 정정된 유저 데이터와 덮어쓰기 데이터를 결합(Mixing)한다. 덮어쓰기 데이터는 독출된 유저 데이터 상에서 덮어 쓰여지는 위치(Over written location)에 삽입될 수 있다. 덮어쓰기 데이터와 독출된 유저 데이터의 결합은 단지 새로운 패리티 비트의 생성에 그 목적이 있다.
단계 S170에서, 에러 정정 회로(143)는 에러 정정된 독출 데이터와 덮어쓰기 데이터가 결합된 데이터로부터 패리티 비트를 생성한다. 덮어쓰기 데이터에 대응하는 비트가 1-비트만이라도 입력되면, 에러 정정 회로(143)는 지속적으로 패리티를 생성하여 업데이트하게 될 것이다.
단계 S180에서, 패리티 비트의 생성이 완료되면, 에러 정정 회로(143)는 생성된 패리티 비트와 입력된 덮어쓰기 데이터만을 선택된 셀 영역에 기입한다. 결국, 해당 셀 영역으로부터 독출된 데이터와 패리티 비트는 새로운 패리티 비트의 생성 후에는 버려진다.
이상에서는 본 발명의 쓰기 방법이 기술되었다. 본 발명의 쓰기 방법은 명령어와 어드레스의 입력이 쓰기 데이터의 입력 이전에 제공되어야 가능하다. 일반적으로 덮어쓰기 가능한 반도체 메모리 장치에서는, 덮어쓰기 데이터가 입력되어 쓰기 컨펌(Write confirm)이 이루어지기 이전에 명령어와 어드레스에 대응하는 셀 영역의 독출이 가능하다. 그리고 명령어와 어드레스의 입력으로부터 덮어쓰기 데이터의 쓰기 컨펌(Write confirm)이 발생하기까지의 시간 동안 독출된 데이터의 에러 정정 및 새로운 패리티 비트의 생성이 가능하다.
도 8은 본 발명의 실시 예에 따른 불휘발성 메모리 장치(1100)를 포함하는 컴퓨팅 시스템(1000)이 개략적으로 도시되어 있다. 본 발명에 따른 컴퓨팅 시스템(1000)은 시스템 버스(1600)에 전기적으로 연결된 불휘발성 메모리 장치(1100), 마이크로프로세서(1200), 램(1300), 사용자 인터페이스(1400), 베이스밴드 칩셋(Baseband chipset)과 같은 모뎀(1500)을 포함한다. 여기서, 불휘발성 메모리 장치(1100)는 덮어쓰기 가능한 불휘발성 메모리 셀들을 포함한다.
본 발명에 따른 컴퓨팅 시스템(1000)이 모바일 장치인 경우, 컴퓨팅 시스템(1000)의 동작 전압을 공급하기 위한 배터리(미도시됨)가 추가적으로 제공될 것이다. 비록 도면에는 도시되지 않았지만, 본 발명에 따른 컴퓨팅 시스템(1000)에는 응용 칩셋(Application chipset), 카메라 이미지 프로세서(Camera Image Processor: CIS), 모바일 디램 등이 더 제공될 수 있음은 이 분야의 통상적인 지식을 습득한 자들에게 자명하다. 불휘발성 메모리 장치(1100)는 도 1에서 설명된 불휘발성 메모리 장치(100)와 실질적으로 동일한 덮어쓰기 가능한 불휘발성 메모리 장치이다.
도 9는 본 발명의 덮어쓰기 가능한 불휘발성 메모리 장치의 적용을 예시적으로 보여주는 블록도이다. 도 9를 참조하면, 본 발명의 예시적인 적용은 메모리 장치(2010)와 메모리 장치(2010)에 전기적으로 연결되는 메모리 컨트롤러(2020)를 포함한다. 메모리 장치(2010)는 앞서 설명된 덮어쓰기 가능한 불휘발성 메모리 장치와 실질적으로 동일하다. 메모리 컨트롤러(2020)는 메모리 장치(2010)를 제어하기 위한 신호를 제공한다. 예를 들면, 메모리 컨트롤러(2020)는 메모리 장치(2010)를 액세스하기 위한 명령어와 어드레스를 제공할 수 있다.
메모리 컨트롤러(2020)는 메모리 인터페이스, 호스트 인터페이스, ECC 회로, 중앙 처리 장치, 그리고 버퍼 메모리를 포함할 수 있다. 메모리 인터페이스는 버퍼 메모리로부터 전달된 데이터를 메모리(2010)로 제공하거나, 메모리(2010)로부터 읽은 데이터를 버퍼 메모리로 전달한다. 또한, 메모리 인터페이스는 외부 호스트로부터 전달된 커맨드나 어드레스를 메모리로 제공할 수 있다.
호스트 인터페이스는 USB(Universal Serial Bus), SCSI(Small Computer System Interface), PCI express, ATA, PATA(Parallel ATA), SATA(Serial ATA), SAS(Serial Attached SCSI) 등을 이용하여 외부 호스트와 통신할 수 있다.
본 발명의 실시 예에 따른 메모리 컨트롤러(2020)는 ECC 회로를 포함할 수 있다. ECC 회로는 메모리(2010)로 전송되는 데이터로부터 에러 정정 코드(ECC)를 생성한다. 그렇게 생성된 에러 정정 코드(ECC)는 데이터와 함께 메모리(2010)의 특정 영역에 저장될 수 있다. ECC 회로는 메모리(2010)로부터 읽혀진 데이터의 에러를 검출한다. 만약 검출된 에러가 정정 범위 내이면, ECC 회로는 검출된 에러를 정정한다.
중앙 처리 장치는 외부 호스트로부터 입력된 신호를 분석하고 처리한다. 중앙 처리 장치는 호스트 인터페이스나 메모리 인터페이스를 통해 외부 호스트나 메모리(2010)를 제어한다. 중앙 처리 장치는 메모리를 구동하기 위한 펌웨어에 따라서 메모리(2010)의 쓰기, 읽기, 소거 동작 등을 제어할 수 있다. 버퍼 메모리는 외부 호스트로부터 제공되는 쓰기 데이터 또는 메모리(2010)로부터 읽은 데이터를 임시로 저장한다.
도 10은 본 발명의 덮어쓰기 가능한 불휘발성 메모리 장치의 다른 적용을 예시적으로 보여주는 블록도이다. 도 10의 실시 예는 메모리 장치(2010)와 메모리 컨트롤러(2020)가 메모리 카드(2000)에 실장된다는 점을 제외하면 실질적으로 도 9와 동일하다. 메모리 카드(2000)는 디지털 카메라, PMP, 모바일 폰, 노트북 컴퓨터와 같은 정보 처리 장치에 장착될 수 있다. 메모리 카드(2000)는 MMC 카드(Multimedia Card), SD 카드(Secure Digital Card), 마이크로 SD 카드, 메모리 스틱(Memory Stick), ID 카드, PCMCIA 카드, 칩 카드(Chip Card), USB 카드, 스마트 카드(Smart Card), CF 카드(Compact Flash Card) 등으로 더 구성될 수 있다.
도 11은 본 발명의 덮어쓰기 가능한 불휘발성 메모리 장치의 또 다른 적용을 보여주는 블록도이다. 도 11을 참조하면, 메모리 장치(2010)는 호스트(2100)에 연결된다. 호스트(2100)는 디지털 카메라, PMP, 모바일 폰, 노트북 컴퓨터와 같은 정보 처리 장치로 구성될 수 있다. 호스트(2100)는 메모리 장치(2010)를 제어하기 위한 제어 신호를 제공한다. 예를 들면, 호스트(2100)는 메모리 장치(2010)를 액세스하기 위한 명령어와 어드레스를 제공할 수 있다. 메모리 장치(2010)는 도 1에서 설명된 불휘발성 메모리 장치(100)와 실질적으로 동일한 덮어쓰기 가능한 불휘발성 메모리 장치이다.
도 12는 호스트(2100)가 도 10의 메모리 카드(2000)와 전기적으로 연결된 실시 예를 보여준다. 이 실시 예에서, 호스트(2100)는 메모리 컨트롤러(2020)에 명령어, 어드레스 그리고 데이터를 제공할 수 있다. 그러면, 메모리 컨트롤러(2020)는 메모리 장치(2010)를 액세스하기 위한 제어 신호를 메모리 장치(2010)에 제공할 것이다.
도 13은 메모리 장치(2210)가 중앙 처리 장치(2220)에 연결되는 적용을 보여주는 블록도이다. 도 13을 참조하면, 컴퓨터 시스템(2200)에 포함되는 메모리 장치(2210)는 데이터 버스(Data bus)와 같은 연결 수단에 의해서 중앙 처리 장치(2220)에 전기적으로 직접 연결될 수 있다. 컴퓨터 시스템(2200)은 디지털 카메라, PMP, 모바일 폰, 데스크탑 컴퓨터, 노트북 컴퓨터와 같은 정보 처리 장치로 구성될 수 있다.
도 14는 본 발명의 또 다른 실시 예에 따른 덮어쓰기 가능한 불휘발성 메모리 장치의 적용 예를 보인 휴대용 시스템의 블록도이다. 휴대용 시스템(3000)은 버스 라인(3600)을 통하여 마이크로 프로세서(3200)와 연결된 메모리 장치(3100)는 휴대용 시스템(3000)의 메인 메모리로 구동될 수 있다. 배터리(3400)는 전원 라인(3500)을 통해 마이크로 프로세서(3200), 입출력 장치(3300), 그리고 메모리 장치(3100)에 전원을 공급한다.
외부로부터 입출력 장치(3300)에 데이터(Data)가 제공되면, 마이크로 프로세서(3200)는 버스 라인(3600)을 통해 수신 데이터를 입력받아 처리한 후, 버스 라인(3600)을 통해 메모리 장치(3100)에 수신 또는 처리된 데이터를 공급한다. 메모리 장치(100)는 버스 라인(3600)을 통해 인가되는 데이터를 메모리 셀에 저장한다. 또한, 메모리 셀에 저장된 데이터는 마이크로 프로세서(3200)에 의해 읽혀지고 입출력 장치(3300)를 통해 외부로 출력된다.
배터리(3400)의 전원이 전원 라인(3500)에 공급되지 않는 경우에도 메모리 장치(3100)의 메모리 셀에 저장된 데이터는 소멸하지 않는다. 이는 메모리 장치(3100)가 디램(DRAM)과는 달리 불휘발성이기 때문이다. 이외에도 메모리 장치(3100)는 다른 메모리 장치에 비해 동작 속도가 빠르고, 전력 소비가 적다는 장점이 있다.
도 15는 본 발명의 덮어쓰기 가능한 불휘발성 메모리(또는, Storage Class Memory: 이하, SCM)가 플래시 메모리를 대신하여 사용되는 메모리 시스템 구조를 예시적으로 보여준다. 도 15를 참조하면, 메모리 시스템(4100)은 CPU(4110), SDRAM(4120), 그리고 SCM(4130)을 포함한다. 여기에서, SCM(4130)은 플래시 메모리를 대신하여 데이터 저장 메모리로 사용된다.
도 15에 도시된 메모리 시스템(4100)에서, SCM(4130)은 플래시 메모리에 비해 데이터 접근 속도가 빠르다. 예를 들어, CPU(4110)가 4GHz로 동작하는 PC 환경에서, SCM(4130)의 한 종류인 상 변화 메모리 장치(PRAM)는 플래시 메모리보다 접근 속도가 약 32배 정도 빠르다. 따라서 SCM(4130)을 탑재한 메모리 시스템(4100)은 플래시 메모리를 탑재한 메모리 시스템보다 빠른 접근 이득을 얻을 수 있다.
도 16은 본 발명의 덮어쓰기 가능한 불휘발성 메모리(SCM)가 SDRAM을 대신하여 사용되는 메모리 시스템 구조를 예시적으로 보여준다. 도 16을 참조하면, 메모리 시스템(4200)은 CPU(4210), SCM(4220), 그리고 플래시 메모리(4230)를 포함한다. 여기에서, SCM(4130)은 SDRAM을 대신하여 메인 메모리로 사용된다.
도 16에 도시된 메모리 시스템(4200)에서, SCM(4220)은 SDRAM에 비해 전력 소모가 적다. 컴퓨터 시스템에서 메인 메모리가 소비하는 에너지는 전체의 40%에 달한다. 이에 따라 메인 메모리의 전력 소비를 줄이려는 노력이 활발하게 진행되고 있다. SCM(4220)은 DRAM에 비해 동적 에너지 소비를 평균 53%, 전력 누출에 따른 에너지 소비를 평균 73% 줄일 수 있다. 따라서 SCM(4220)을 탑재한 메모리 시스템(4200)은 SDRAM을 탑재한 메모리 시스템에 비해, 전력 소모를 줄일 수 있다.
도 17은 본 발명의 덮어쓰기 가능한 불휘발성 메모리(SCM)가 SDRAM과 Flash memory를 모두 대체하는 메모리 시스템 구조를 예시적으로 보여준다. 도 17을 참조하면, 메모리 시스템(4300)은 CPU(4310)과 SCM(4320)를 포함한다. 여기에서, SCM(4130)은 SDRAM을 대신하여 메인 메모리로 사용되고, 플래시 메모리(Flash memory)를 대신하여 데이터 저장 메모리로 사용된다. 이러한 구조를 갖는 메모리 시스템(4300)은 데이터 접근 속도, 저전력, 공간 활용, 그리고 비용 측면에서 장점을 갖는다.
본 발명에 따른 덮어쓰기 가능한 불휘발성 메모리 장치는 다양한 형태들의 패키지를 이용하여 실장될 수 있다. 예를 들면, 본 발명에 따른 덮어쓰기 가능한 불휘발성 메모리 장치는 PoP(Package on Package), Ball grid arrays(BGAs), Chip scale packages(CSPs), Plastic Leaded Chip Carrier(PLCC), Plastic Dual In-Line Package(PDIP), Die in Waffle Pack, Die in Wafer Form, Chip On Board(COB), Ceramic Dual In-Line Package(CERDIP), Plastic Metric Quad Flat Pack(MQFP), Thin Quad Flatpack(TQFP), Small Outline(SOIC), Shrink Small Outline Package(SSOP), Thin Small Outline(TSOP), Thin Quad Flatpack(TQFP), System In Package(SIP), Multi Chip Package(MCP), Wafer-level Fabricated Package(WFP), Wafer-Level Processed Stack Package(WSP), 등과 같은 패키지들을 이용하여 실장될 수 있다.
이상에서와 같이 도면과 명세서에서 최적 실시예가 개시되었다. 여기서 특정한 용어들이 사용되었으나, 이는 단지 본 발명을 설명하기 위한 목적에서 사용된 것이지 의미 한정이나 특허청구범위에 기재된 본 발명의 범위를 제한하기 위하여 사용된 것은 아니다. 그러므로 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시 예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 특허청구범위의 기술적 사상에 의해 정해져야 할 것이다.
110 : 셀 어레이
120 : 어드레스 디코더
130 : 제어 로직
131 : 명령어 디코더
132 : 프로그램 컨트롤러
133 : 덮어쓰기 컨트롤러
134 : 소거 컨트롤러
135 : 읽기 컨트롤러
140 : 읽기/쓰기 회로
141 : 감지 증폭기
142 : 읽기 버퍼
143 : 에러 정정 회로
144 : 쓰기 버퍼
145 : 쓰기 드라이버
150 : 입출력 버퍼
1100 : 불휘발성 메모리 장치
1200 : CPU
1300 : RAM
1400 : 유저 인터페이스
1500 : 모뎀
1600 : 시스템 버스
2000 : 메모리 카드
2010 : 메모리 장치
2020 : 메모리 컨트롤러
2100 : 호스트
2200 : 정보 처리 시스템
3000 : 휴대용 시스템
3100 : 메모리 장치
3200 : 중앙 처리 장치
3300 : 입출력 장치
3400 : 배터리
4100, 4200, 4300 : 메모리 시스템
4110, 4210, 4310 : 중앙 처리 장치
4120 : SDRAM
4130, 4220, 4320 : SCM

Claims (10)

  1. 불휘발성 메모리 장치의 데이터 쓰기 방법에 있어서:
    명령어를 디코딩하여 덮어쓰기 또는 프로그램 명령인지를 판단하는 단계;
    상기 명령어가 상기 덮어쓰기 명령으로 판단되면, 선택된 셀 영역에 저장된 데이터를 독출하는 단계;
    상기 독출된 데이터와 입력되는 덮어쓰기 데이터를 결합하여 패리티 비트를 생성하는 단계; 그리고
    상기 덮어쓰기 데이터와 상기 패리티 비트를 상기 선택된 셀 영역에 기입하는 단계를 포함하는 데이터 쓰기 방법.
  2. 제 1 항에 있어서,
    상기 독출된 데이터에 대한 에러의 검출 또는 검출된 에러를 정정하는 단계를 더 포함하는 데이터 쓰기 방법.
  3. 제 2 항에 있어서,
    상기 독출된 데이터는, 유저 데이터와 상기 유저 데이터의 에러를 검출 또는 정정하기 위한 또 다른 패리티 비트를 포함하는 데이터 쓰기 방법.
  4. 제 3 항에 있어서,
    상기 패리티 비트를 생성하는 단계에서,
    상기 패리티 비트는 상기 덮어쓰기 데이터와 상기 유저 데이터를 결합한 데이터로부터 생성되는 데이터 쓰기 방법.
  5. 제 1 항에 있어서,
    상기 명령어가 상기 프로그램 명령으로 판단되는 경우,
    프로그램 데이터를 참조하여 패리티 생성 연산을 수행하는 단계; 그리고
    상기 프로그램 데이터와 상기 패리티 생성 연산에 따라 생성된 패리티 비트를 상기 선택된 셀 영역에 기입하는 단계를 더 포함하는 데이터 쓰기 방법.
  6. 덮어쓰기 가능한 메모리 셀들을 포함하는 셀 어레이;
    입력되는 쓰기 명령어를 디코딩하여 덮어쓰기 명령인지 또는 프로그램 명령인지를 판단하는 제어 로직; 그리고
    상기 제어 로직의 판단에 따라 상기 셀 어레이의 선택 영역에 저장된 데이터를 독출하고, 상기 독출된 데이터와 덮어쓰기 데이터를 결합하여 패리티 비트를 생성하여 상기 셀 어레이에 저장하는 읽기/쓰기 회로를 포함하는 불휘발성 메모리 장치.
  7. 제 6 항에 있어서,
    상기 쓰기 명령어가 덮어쓰기 명령으로 판단되는 경우, 상기 읽기/쓰기 회로는 상기 선택 영역에 저장된 데이터를 독출하는 불휘발성 메모리 장치.
  8. 제 7 항에 있어서,
    상기 읽기/쓰기 회로는 상기 독출된 데이터에 대한 에러 검출 및 정정 연산을 수행하는 불휘발성 메모리 장치.
  9. 제 8 항에 있어서,
    상기 독출된 데이터에 에러가 존재하는 경우, 상기 읽기/쓰기 회로는 상기 독출된 데이터의 에러를 정정하여 상기 덮어쓰기 데이터와 결합하는 불휘발성 메모리 장치.
  10. 제 8 항에 있어서,
    상기 독출된 데이터에 정정 불가능한 에러가 존재하는 경우, 상기 읽기/쓰기 회로는 상기 선택 영역에 저장된 데이터를 재독출하는 불휘발성 메모리 장치.
KR1020100006476A 2010-01-25 2010-01-25 덮어쓰기 가능한 불휘발성 메모리 장치 및 그것의 데이터 쓰기 방법 KR20110087036A (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020100006476A KR20110087036A (ko) 2010-01-25 2010-01-25 덮어쓰기 가능한 불휘발성 메모리 장치 및 그것의 데이터 쓰기 방법
US13/005,184 US8448043B2 (en) 2010-01-25 2011-01-12 Overwritable nonvolatile memory device and related data write method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020100006476A KR20110087036A (ko) 2010-01-25 2010-01-25 덮어쓰기 가능한 불휘발성 메모리 장치 및 그것의 데이터 쓰기 방법

Publications (1)

Publication Number Publication Date
KR20110087036A true KR20110087036A (ko) 2011-08-02

Family

ID=44309905

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020100006476A KR20110087036A (ko) 2010-01-25 2010-01-25 덮어쓰기 가능한 불휘발성 메모리 장치 및 그것의 데이터 쓰기 방법

Country Status (2)

Country Link
US (1) US8448043B2 (ko)
KR (1) KR20110087036A (ko)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20140131851A (ko) * 2013-05-06 2014-11-14 삼성전자주식회사 반도체 메모리 장치 및 메모리 시스템
KR20150015808A (ko) * 2013-08-01 2015-02-11 삼성전자주식회사 불휘발성 메모리 장치를 제어하는 메모리 컨트롤러의 동작 방법
US9672147B2 (en) 2012-08-31 2017-06-06 Samsung Electronics Co., Ltd. Memory controller, method of operating memory controller, and system comprising memory controller

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9026757B2 (en) 2013-01-25 2015-05-05 Sandisk Technologies Inc. Non-volatile memory programming data preservation
US8913428B2 (en) * 2013-01-25 2014-12-16 Sandisk Technologies Inc. Programming non-volatile storage system with multiple memory die
FR3015103B1 (fr) 2013-12-12 2017-05-26 Commissariat Energie Atomique Systeme d'ecriture de donnees dans une memoire
KR102127287B1 (ko) * 2014-02-11 2020-06-26 삼성전자주식회사 메모리 컨트롤러 및 메모리 컨트롤러가 불휘발성 메모리로부터 데이터를 읽는 데이터 읽기 방법
KR102249810B1 (ko) * 2014-07-23 2021-05-11 삼성전자주식회사 스토리지 장치 및 스토리지 장치의 동작 방법
US9947399B2 (en) 2015-03-26 2018-04-17 Sandisk Technologies Llc Updating resistive memory
US9904595B1 (en) 2016-08-23 2018-02-27 Texas Instruments Incorporated Error correction hardware with fault detection
DE102016123689B4 (de) 2016-12-07 2022-02-24 Infineon Technologies Ag Speicherschaltung und Verfahren zum Betreiben einer Speicherschaltung
KR102398201B1 (ko) * 2017-06-30 2022-05-17 삼성전자주식회사 프로세서의 개입 없이 단순 작업을 관리하는 스토리지 장치

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3542002B2 (ja) 1996-09-24 2004-07-14 株式会社ルネサステクノロジ システム
JP3849942B2 (ja) 2004-02-23 2006-11-22 株式会社ルネサステクノロジ 強誘電体メモリを含むシステム
US7392456B2 (en) * 2004-11-23 2008-06-24 Mosys, Inc. Predictive error correction code generation facilitating high-speed byte-write in a semiconductor memory
JP2007242162A (ja) * 2006-03-09 2007-09-20 Toshiba Corp 半導体記憶装置
US7861138B2 (en) * 2006-12-05 2010-12-28 Qimonda Ag Error correction in memory devices
JP4343945B2 (ja) * 2006-12-28 2009-10-14 三菱電機株式会社 電子制御装置
JP4957997B2 (ja) 2007-04-17 2012-06-20 日本電気株式会社 半導体記憶装置
US7830726B2 (en) * 2008-09-30 2010-11-09 Seagate Technology Llc Data storage using read-mask-write operation

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9672147B2 (en) 2012-08-31 2017-06-06 Samsung Electronics Co., Ltd. Memory controller, method of operating memory controller, and system comprising memory controller
KR20140131851A (ko) * 2013-05-06 2014-11-14 삼성전자주식회사 반도체 메모리 장치 및 메모리 시스템
KR20150015808A (ko) * 2013-08-01 2015-02-11 삼성전자주식회사 불휘발성 메모리 장치를 제어하는 메모리 컨트롤러의 동작 방법

Also Published As

Publication number Publication date
US8448043B2 (en) 2013-05-21
US20110185259A1 (en) 2011-07-28

Similar Documents

Publication Publication Date Title
KR20110087036A (ko) 덮어쓰기 가능한 불휘발성 메모리 장치 및 그것의 데이터 쓰기 방법
US9262266B2 (en) Nonvolatile memory devices with age-based variability of read operations and methods of operating same
US10838858B2 (en) Controller and operating method of the same
KR101598382B1 (ko) 상태 기반 불휘발성 메모리 장치 및 그것의 에러 정정 방법
KR102050896B1 (ko) 메모리 컨트롤러 및 그것의 동작 방법
KR20130023984A (ko) 데이터 신뢰성을 개선하는 데이터 관리 방법 및 그에 따른 데이터 저장 장치
US20200371885A1 (en) Memory system and method for operating the same
US20180108419A1 (en) Memory system with file level secure erase and operating method thereof
CN105389122B (zh) 数据储存器件的操作方法
US11461226B2 (en) Storage device including memory controller
CN107544925B (zh) 存储器***及加速引导时间的方法
US11853206B2 (en) Memory system and operation method thereof
TW201911025A (zh) 記憶體系統及其操作方法
KR102511341B1 (ko) 메모리 장치, 메모리 컨트롤러 및 이들을 포함하는 메모리 시스템과, 이들의 동작 방법
KR20220046299A (ko) 스토리지 장치 및 그 동작 방법
US11848057B2 (en) Memory system and method of operating the same
CN112582011A (zh) 存储器设备及其操作方法
KR102634809B1 (ko) 전자 장치 및 그것의 동작 방법
KR20230037240A (ko) 호스트 장치, 메모리 컨트롤러 및 이를 포함하는 컴퓨팅 시스템
US9588708B2 (en) Semiconductor memory device, operating method thereof, and data storage device including the same
US20210287751A1 (en) Data storage device and method of operating the same
KR20210157544A (ko) 메모리 시스템, 메모리 컨트롤러 및 메모리 시스템의 동작 방법
KR102281966B1 (ko) 데이터 스토리지 장치 및 그 동작 방법
US20150149740A1 (en) Data storage device and data processing system including the same
CN109947360A (zh) 存储器***及其操作方法

Legal Events

Date Code Title Description
WITN Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid