KR100704628B1 - 다수의 스트링을 사용하여 상태 정보를 저장하는 방법 및비휘발성 저장 장치 - Google Patents

다수의 스트링을 사용하여 상태 정보를 저장하는 방법 및비휘발성 저장 장치 Download PDF

Info

Publication number
KR100704628B1
KR100704628B1 KR1020050024970A KR20050024970A KR100704628B1 KR 100704628 B1 KR100704628 B1 KR 100704628B1 KR 1020050024970 A KR1020050024970 A KR 1020050024970A KR 20050024970 A KR20050024970 A KR 20050024970A KR 100704628 B1 KR100704628 B1 KR 100704628B1
Authority
KR
South Korea
Prior art keywords
state information
cell
storing
strings
data
Prior art date
Application number
KR1020050024970A
Other languages
English (en)
Other versions
KR20060102908A (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 KR1020050024970A priority Critical patent/KR100704628B1/ko
Priority to CNB2006100570265A priority patent/CN100550201C/zh
Priority to JP2006072733A priority patent/JP4455524B2/ja
Priority to US11/385,804 priority patent/US7457911B2/en
Priority to DE602006001237T priority patent/DE602006001237D1/de
Priority to EP06111631A priority patent/EP1708203B1/en
Priority to AT06111631T priority patent/ATE396483T1/de
Publication of KR20060102908A publication Critical patent/KR20060102908A/ko
Application granted granted Critical
Publication of KR100704628B1 publication Critical patent/KR100704628B1/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
    • 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/22Safety or protection circuits preventing unauthorised or accidental access to memory cells

Landscapes

  • Engineering & Computer Science (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Computer Security & Cryptography (AREA)
  • Read Only Memory (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Debugging And Monitoring (AREA)
  • Communication Control (AREA)

Abstract

다수의 스트링을 사용하여 상태 정보를 저장하는 방법 및 비휘발성 저장 장치에 관한 것이다.
본 발명의 일 실시예에 따른 다수의 스트링을 사용하여 상태 정보를 저장하는 비휘발성 메모리는 1 비트 이상의 데이터가 저장가능한 셀, 상기 둘 이상의 셀이 직렬로 연결된 다수의 스트링들, 및 상기 셀들의 집합인 다수의 페이지들을 포함하며, 상기 다수의 스트링들은, 상기 셀에 데이터를 저장하는 스트링들로 구성된 메인 스트링 그룹과 상기 메인 스트링 그룹에 저장된 데이터의 상태 정보를 저장하는 둘 이상의 스트링들을 포함하는 여분 스트링 그룹으로 구성된다.
비휘발성 메모리, 상태 정보, 스트링, 셀, 오류

Description

다수의 스트링을 사용하여 상태 정보를 저장하는 방법 및 비휘발성 저장 장치{Method and apparatus for storing status information using plural strings}
도 1은 NAND 플래시 메모리의 구성을 나타내는 도면이다.
도 2는 도 1의 플래시 메모리의 구성을 도식화하여 나타낸 도면이다.
도 3은 NAND 플래시 메모리의 구조를 보여주는 구성도이다.
도 4는 종래의 플래시 메모리의 특정 셀에 프로그램시에 같은 스트링에 있는 다른 셀이 영향을 받는 경우를 보여주는 예시도이다.
도 5는 본 발명의 일 실시예에 따른 소블록 플래시 메모리에서 데이터를 프로그램시 발생하는 오류를 없애기 위해 한 스트링에 하나의 셀을 사용하는 예시도이다.
도 6은 도 5의 소블록 플래시 메모리에서의 여분 스트링의 각 셀을 테이블의 한 셀로 하여 나타낸 도면이다.
도 7은 본 발명의 일 실시예에 따른 대블록 플래시 메모리에서 데이터를 프로그램시 발생하는 오류를 없애기 위해 한 스트링에 하나의 셀을 사용하는 예시도이다.
도 8은 도 7의 소블록 플래시 메모리에서의 여분 스트링의 각 셀을 테이블의 한 셀로 하여 나타낸 도면이다.
도 9는 본 발명의 일 실시예에 따른 데이터를 저장하고 한 스트링의 한 셀에 상태 정보를 저장하는 과정을 보여주는 순서도이다.
도 10은 본 발명의 일 실시예에 따른 섹터의 유효성을 검사하는 과정을 보여주는 순서도이다.
도 11은 본 발명의 일 실시예에 따른 소블록 플래시 메모리에서 데이터를 프로그램시 발생하는 오류를 없애기 위해 다수의 셀을 이용하여 상태 정보를 저장하는 예시도이다.
도 12는 도 11의 실시예에 따른 소블록 메모리에 상태 정보가 저장된 상태를 보여주는 예시도이다.
도 13은 본 발명의 일 실시예에 따른 대블록 플래시 메모리에서 데이터를 프로그램시 발생하는 오류를 없애기 위해 다수의 셀을 이용하여 상태 정보를 저장하는 예시도이다.
도 14는 도 13의 실시예에 따른 대블록 메모리에 상태 정보가 저장된 상태를 보여주는 예시도이다.
도 15는 본 발명의 일 실시예에 따른 데이터를 저장하고 다수의 셀에 상태 정보를 저장하는 과정을 보여주는 순서도이다.
도 16은 본 발명의 일 실시예에 따른 다수의 상태 비트를 통해 섹터의 유효성을 검사하는 과정을 보여주는 순서도이다.
도 17은 본 발명의 일 실시예에 따른 다수의 스트링에 상태 정보를 저장하는 비휘발성 저장 장치의 구성도이다.
<도면의 주요 부분에 대한 부호의 설명>
100 : 셀 200 : 페이지
300 : 스트링 400 : 섹터
500 : 블록 910 : 메모리 제어부
920 : 저장부 1000 : 비휘발성 저장 장치
다수의 스트링을 사용하여 상태 정보를 저장하는 방법 및 비휘발성 저장 장치에 관한 것이다.
멀티미디어 기술의 발달로 데이터가 대용량화되고 있다. 또한, 컴퓨터가 아닌 디지털 카메라, 디지털 캠코더, 디지털 녹음기 등 멀티미디어 데이터의 저장을 필요로 하는 기기가 다양화되면서 멀티미디어 데이터를 저장하는 비휘발성 저장장치에 대한 관심도 증가하고 있다. 이러한 비휘발성 저장장치 중에서는 NAND 플래시 메모리와 같이 쓰기 작업을 수행하기 전에 삭제 작업을 필요로 하는 메모리가 있다.
통상의 메모리는 특정 영역에 전하의 존재 유무로 1 또는 0을 표시한다. 이러한 메모리 소자들이 결합되어 하나의 메모리 디바이스를 이룬다. 한편, 메모리에는 여러가지 방식으로 입/출력을 할 수 있다. 멀티 레벨 셀 메모리(Multi-level Cell Memory)는 멀티 레벨의 셀로 이루어진 메모리로, 멀티 레벨은 각 셀의 전하의 충전 상태가 여러 레벨을 가지는 것을 의미한다. 예를 들어 4 단계 레벨의 전하 충전 상태가 가능하고 레벨이 0 내지 3까지 존재한다면, 레벨 0은 전하가 없는 상태, 레벨 1은 전하가 V1 이하로 채워진 상태이며, 레벨 2는 전하가 V1 에서 V2 사이에 채워진 상태를 의미하며, 레벨 3은 전하가 V2에서 완전히 채워진 상태 사이를 의미한다. 멀티 레벨 셀은 1 비트 이상의 정보를 나타낼 수 있다. 셀이 데이터를 저장하는 하나의 단위가 되며, 이들 셀들의 연결관계와 셀들이 구성하는 입출력 단위 또는 삭제 단위등에 따라 다양한 플래시 메모리(플래시 저장 장치)가 존재한다.
플래시 저장 장치는 전기적으로 소거 가능하고 프로그래밍 가능한 비휘발성 메모리로, 전력 소비가 적고 부피가 작다는 장점이 있다. 그러나, 플래시 메모리등의 경우 데이터를 저장하기 위해서는 삭제를 선행해야 한다. 그 결과, 삭제된 상태(Erased)와 삭제가 되지 않은 상태(Nonerased) 두 가지가 존재한다. 한번에 삭제를 하는 단위(블록)가 한번에 저장하는 단위(페이지)보다 큰 경우가 있는데, 플래시 메모리는 한번에 한 블록을 삭제한다는 의미로 붙여진 이름이다.
도 1은 NAND 플래시 메모리의 구성을 나타내는 도면이다. 정보를 저장하기 위한 최소 단위는 셀(Cell, 100)이며 이들 셀들을 직렬로 연결한 것이 스트링(310)이다. 셀(100)을 상세히 살펴보면, 컨트롤 게이트(Control Gate)와 부동게이트(Floating Gate), 그리고 소스(Source)와 드레인(Drain)으로 구성된다. 부동게이트에 음이온이 축적될 수 있으며, 이때의 상태를 0 또는 1로 정한다. 한편 여러 셀에서 컨트롤 게이트를 묶은 단위를 WL(WordLine)이라 한다. WL은 NAND 플래시의 페이지 단위가 되며, 데이터를 입출력할 경우, 페이지를 선택할 수 있도록 한다. 해당 페이지의 특정 셀의 정보는 하나의 비트가 될 수 있으며, 이는 비트라인(BitLine, BL)을 통해 읽거나 프로그램할 수 있다. SSL(String Selection Line), GSL(Ground Selection Line), CSL(Common Source Line)들은 셀에 데이터를 쓰거나 읽을 경우, 또는 블록 내의 데이터를 모두 삭제할 때 셀들을 제어하기 위한 것이다.
도 2는 도 1의 플래시 메모리의 구성을 도식화하여 나타낸 도면이다. 도 1에서 살펴본 셀은 도 2와 같이 원으로 나타내며, 스트링에서 셀들이 연결된 것을 나타내기 위해 셀을 나타내는 원들 사이를 선으로 연결하였다.
전술한 바와 같이 블록은 플래시 메모리에서 한번에 삭제하는 단위가 되며, 다수의 블록으로 플래시 메모리가 구성된다. 블록(500)은 여러 개의 스트링(String, 310, 320)들로 구성된다. 스트링은 여러 개의 셀(Cell)들이 연결되어 있다. NAND 형 또는 AND 형 플래시 메모리의 경우 도 1에서 살펴본 바와 같이, 제 1셀의 드레인과 제 2셀의 소스가 연결되어 있으며, 이러한 연결은 다수의 셀들로 확장된다.
블록을 구성하는 또다른 요소인 페이지(Page, 210, 220)는 도 1의 워드라인(Wordline)을 의미한다. 이는 데이터를 입출력하는 단위가 된다. 페이지는 다수의 스트링에 존재하는 특정 위치의 셀들로 구성된다. 예를 들어, 페이지 A(210)는 스트링 1(310), 스트링 2(330) 등의 첫번째 셀로 구성된다. 다음으로 페이지 B(220)는 스트링 1(310), 스트링 2(330) 등의 세번째 셀로 구성된다. 플래시 메모리의 경우, 각 셀은 전술한 바와 같이 1비트 이상의 정보를 저장할 수 있다. 데이터를 쓰는(프로그램 하는) 단위는 페이지가 되며, 데이터를 쓰기 전에 삭제하는 작업을 필 요로 한다. 여기서 데이터를 삭제하는 단위가 블록이 된다. 그런데, 스트링(310, 320, 330)들은 도 1, 2에서 알 수 있듯이, 연결된 셀들의 집합이다. 따라서, 페이지 A(210)에 데이터를 프로그램 하는 경우, 페이지 A의 셀들과 같은 스트링에 속하는 다른 셀들에게 영향을 미칠 수 있다.
도 3은 NAND 플래시 메모리의 구조를 보여주는 구성도이다. 도 2에서 살펴본 블록들이 플래시 메모리를 구성한다. 블록은 다수의 페이지로 구성되며, 페이지는 메인 스트링(Main String)들로 구성된 메인 스트링 그룹과 여분 스트링(Spare String)들로 구성된 여분 스트링 그룹으로 나뉘어진다. 그리고 메인 스트링들의 셀은 하나 이상의 섹터(Sector)를 구성한다. 여분 스트링 그룹은 데이터를 저장하지 않는 공간으로, 추후 데이터를 저장하거나, 혹은 특정 셀에 오류가 발생할 때 여분으로 사용할 수 있도록 생성된 공간이다. 통상 페이지당 오류가 발생할 수 있는 비트수는 메인 스트링 그룹과 여분 스트링 그룹의 셀들에서 오류가 발생하는 셀수(비트수)를 의미한다. 페이지는 논리적인 입출력의 단위가 되며, 스트링은 물리적인 셀들의 결합을 의미한다.
도 4는 종래의 플래시 메모리의 특정 셀에 프로그램시에 같은 스트링에 있는 다른 셀이 영향을 받는 경우를 보여주는 예시도이다. 페이지 A(210)에 데이터를 저장하기 위해 셀 1(110)이 프로그램 된다. 그런데, 셀 1(110)과 셀 2(120)는 같은 스트링 1(310)을 구성하므로, 셀 2(120)도 프로그램 될 수 있다. 즉, BL2에 3.3V를 인가하고, 데이터를 저장할 셀이 포함된 페이지 A(210)에 18V를 인가한다. 18V는 셀 1(110)의 컨트롤 게이트에 인가되며, BL2에 3.3V가 인가되므로 셀 1의 소스에 있는 음전하(음이온)는 드레인으로 이동중에 셀 1(110)의 부동게이트에 축적된다. 그런데 원래는 페이지 B(220)의 셀인 셀 2(120)에는 음이온이 축적되지 않도록 되는데, 전하가 이동하면서 셀 2(120)에도 음전하가 축적되는 경우가 발생한다. 그 결과 페이지 B(220)의 셀 2(120)에도 예기치않게 1 (또는 0)이 저장되는 경우가 발생한다.
이러한 경우를 예기치 않은 데이터 장애(unexpected data disturbance)라 한다. 그런데, 셀 2(120)는 페이지 B(220)에 속하므로 결과적으로 페이지 A를 쓰는 도중에 페이지 B가 프로그램 되는 상황이 발생한다.
과거에는 특정 페이지에 데이터를 저장하는 도중에 전원이 공급되지 않아 오류가 발생할 수 있는 경우를 방지하기 위해 각 페이지에 데이터를 저장한 후에 해당 페이지의 저장 여부를 알리는 상태 정보를 따로 두는 방법이 제안되었다(미국 특허 6549457B1). 그러나 이는 특정 페이지의 저장 여부를 상태 정보를 통해 알려주지만, 상태 정보를 저장시에 발생하는 에러를 막을 수는 없다. 특히, 상태 정보가 메모리의 특정 셀에 저장되며, 특정 셀을 프로그램시 다른 셀에 영향을 줄 수 있는 스트링 구조에서는 상기 방식으로는 상태 정보를 저장하는 과정에서 발생하는 오류를 막을 수 없다는 문제점이 있다.
예를 들어, 도 4에서, 여분 스트링에 속하는 스트링 1을 상태 정보를 저장하도록 설정한다. 페이지 A(210)에 데이터를 프로그램한 후 셀 1(110)의 값을 0으로 바꾸면 셀 1(110)의 값만을 보고 페이지 A(210)에 데이터가 저장되었는지 알 수 있다. 그런데, 셀 1(110)에 상태 정보를 프로그램하는 과정에서 셀 2(120)가 프로그 램될 수 있는데, 이는 셀 1(110)과 셀 2(120)는 같은 스트링에 존재하기 때문이다. 따라서 셀 2(120)가 0으로 프로그램될 경우, 페이지 B(220) 역시 데이터가 저장된 것으로 판단하는 오류가 발생한다.
따라서, 상태 정보를 저장하는 경우에 오류가 발생하지 않도록 하여, 데이터가 저장된 상태를 오류없이 판단할 수 있도록 하는 것이 필요하다. 상태 정보는 그 자체의 오류보다 페이지 또는 섹터에 대해 잘못된 정보를 전달한다는 점에서 오류가 발생하지 않도록 하는 것이 중요하다. 특히, 데이터를 저장하는 도중에 전원의 공급이 중단됨으로 인해 다른 페이지에까지 데이터가 저장된 것으로 알리는 잘못된 상태 정보가 저장되지 않도록 하는 것이 필요하다.
본 발명의 기술적 과제는 다수의 스트링의 셀을 사용하여 상태 정보를 저장하는 것에 있다.
본 발명의 다른 기술적 과제는 상태 정보를 저장하는데 있어 다른 스트링에 영향을 미치지 않도록 하여 데이터 저장시 발생하는 오류를 줄이는 것에 있다.
본 발명의 목적들은 이상에서 언급한 목적들로 제한되지 않으며, 언급되지 않은 또 다른 목적들은 아래의 기재로부터 당업자에게 명확하게 이해될 수 있을 것이다.
다수의 스트링을 사용하여 상태 정보를 저장하는 방법 및 비휘발성 저장 장치에 관한 것이다.
본 발명의 일 실시예에 따른 다수의 스트링을 사용하여 상태 정보를 저장하는 비휘발성 메모리는 1 비트 이상의 데이터가 저장가능한 셀, 상기 둘 이상의 셀이 직렬로 연결된 다수의 스트링들, 및 상기 셀들의 집합인 다수의 페이지들을 포함하며, 상기 다수의 스트링들은, 상기 셀에 데이터를 저장하는 스트링들로 구성된 메인 스트링 그룹과 상기 메인 스트링 그룹에 저장된 데이터의 이진 상태 정보를 저장하는 둘 이상의 스트링들을 포함하는 여분 스트링 그룹으로 구성된다.
본 발명의 일 실시예에 따른 다수의 스트링을 사용하여 상태 정보를 저장하는 비휘발성 저장 장치는 1 비트 이상의 데이터가 저장가능한 셀, 상기 둘 이상의 셀이 직렬로 연결된 다수의 스트링들, 및 상기 셀들의 집합인 다수의 페이지를 포함하는 비휘발성의 저장부, 및 상기 데이터를 상기 저장부의 셀에 저장시 상기 셀을 선택하는 메모리 제어부를 포함하며, 상기 메모리 제어부는 상기 다수의 스트링들이 상기 셀에 데이터를 저장하는 스트링들로 구성된 메인 스트링 그룹과 상기 메인 스트링 그룹에 저장된 데이터의 상태 정보를 저장하는 둘 이상의 스트링들을 포함하는 여분 스트링 그룹으로 구성되도록 제어한다.
본 발명의 일 실시예에 따른 다수의 스트링을 사용하여 상태 정보를 저장하는 방법은 데이터의 저장을 위한 주소 정보와 데이터를 수신하는 단계, 메인 스트링 그룹에서 상기 주소를 구성하는 셀에 상기 데이터를 저장하는 단계, 상기 데이터가 저장된 셀을 포함하는 페이지의 상태 정보를 저장하기 위해 여분 스트링 그룹에서 셀을 선택하는 단계, 및 상기 선택된 셀에 상기 상태 정보를 저장하는 단계를 포함하며, 상기 여분 스트링 그룹은 상기 메인 스트링 그룹에 저장된 데이터의 상 태 정보를 저장하는 셀이 포함된 둘 이상의 스트링들로 구성된다.
기타 실시예들의 구체적인 사항들은 상세한 설명 및 도면들에 포함되어 있다.
본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 개시되는 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 수 있으며, 단지 본 실시예들은 본 발명의 개시가 완전하도록 하고, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다. 명세서 전체에 걸쳐 동일 참조 부호는 동일 구성 요소를 지칭한다.
이하, 첨부된 도면을 참조하여 본 발명의 바람직한 실시예를 상세히 설명하기로 한다.
설명에 앞서 본 명세서에서 사용하는 용어의 의미를 간략히 설명한다. 그러나 용어의 설명은 본 명세서의 이해를 돕기 위한 것으로서 명시적으로 본 발명을 한정하는 사항으로 기재하지 않은 경우에 본 발명의 기술적 사상을 한정하는 의미로 사용하는 것이 아님을 주의해야 한다.
- 플래시 메모리(Flash memory)
플래시 메모리는 비휘발성 메모리(Nonvolatile Memory)의 일종으로, 데이터가 저장된 후에 전원이 공급되지 않아도 데이터를 유지한다. 플래시 메모리에는 NAND, NOR, AND 형 등이 존재한다. 플래시 메모리는 크게 블록으로 나뉘어지며, 각 블록은 둘 이상의 페이지를 포함한다. 각 페이지들은 다시 섹터로 나뉘어 지는데 한 페이지에 하나 이상의 섹터가 할당된다. 또한 페이지는 실제 데이터를 저장하는 부분(Main String)와 여분 스트링(Spare String)로 구성된다. 여분 스트링은 통상 해당 페이지에 대한 정보를 저장하거나 데이터를 저장한다.
- 프로그램(Program)
플래시 메모리와 같이 데이터를 저장하는 것을 프로그램이라 말한다. 프로그램된 셀은 추후 삭제(소거)하는 작업(Erasing)을 거쳐야 다시 데이터를 저장할 수 있다.
- 소블록 플래시 메모리와 대블록 플래시 메모리
하나의 섹터로 페이지가 구성되는 것을 소블록 플래시 메모리라 하며, 둘 이상의 섹터로 페이지가 구성되는 것을 대블록 플래시 메모리라 한다.
- 셀(Cell)과 스트링(String)
셀은 정보를 저장하는 소자이다. nMOS, pMOS, CMOS 등의 여러 소자를 사용할 수 있다. 셀들은 통상 1비트 이상의 정보를 저장할 수 있으며, 도 1에서 살펴본 바와 같이, 플로팅 게이트에 음전하가 있는지, 또는 양전하가 있는지 등으로 데이터가 저장된 것을 표현한다. 스트링은 셀들의 소스(Source)와 드레인(Drain)이 결합된, 셀들이 직렬로 연결되어 있는 단위를 의미한다. 페이지는 다수의 스트링에 소속된 여러 셀들 중에서 하나의 셀을 취하여 정보를 구성한다. 페이지는 다수의 스트링에서 특정한 셀(예를 들어 특정 위치)들을 취합한다. 통상의 플래시 메모리에서는 셀들의 컨트롤 게이트들에 동일한 전원을 부가하도록 한 단위를 페이지라 한 다.
전술한 바와 같이 본 발명의 일 실시예는 다수의 스트링에 존재하는 셀을 사용하여 상태 정보를 저장하기 위해, 각 스트링에 하나의 셀을 취하여 상태 정보를 저장하는 방식을 취하거나, 또는 둘 이상의 스트링의 셀들에 동일한 상태 정보를 중복하여 저장하여 오류를 검출하고, 데이터가 저장되었는지 여부를 판별할 수 있도록 한다.
도 5는 본 발명의 일 실시예에 따른 소블록 플래시 메모리에서 데이터를 프로그램시 발생하는 오류를 없애기 위해 한 스트링에 하나의 셀을 사용하는 예시도이다.
소블록 플래시 메모리는 하나의 섹터로 페이지가 구성된다. 도 3에서 살펴본 바와 같이, 하나의 페이지는 메인 스트링 그룹과 여분 스트링 그룹에 포함된 셀들로 구성되며, 메인 스트링 그룹의 셀들은 섹터(400)를 구성한다. 하나의 셀은 1bit 이상의 정보를 포함할 수 있으며, 도 5에서는 하나의 셀이 1 bit를 나타내는 경우를 보여준다. 페이지 A(210)는 섹터(400)와 다수의 여분 스트링에 속하는 셀들로 구성된다. 하나의 페이지(또는 섹터)에 데이터를 저장하고, 그 페이지 또는 그 섹터에 대한 데이터 저장 여부를 알려주는 상태 정보가 저장된 셀과 다른 페이지 또는 다른 섹터의 상태 정보가 저장된 셀이 동일한 스트링에 존재하지 않도록 한다. 그 결과, 상태 정보를 저장시에 스트링의 다른 셀을 변경하는 오류로 인해, 페이지에 대한 잘못된 정보를 제공하는 것을 막을 수 있다.
상태 정보가 1인 경우는 초기화된 경우를 의미하며, 상태 정보가 0인 경우는 해당 섹터가 프로그램되었음을 의미하는 경우를 가정한다. 이 때, 페이지 A(210)의 섹터(400)에 데이터를 프로그램시 데이터가 저장되었는지 여부를 알려주는 상태 정보를 스트링 1(310)의 첫번째 셀(101)에 저장할 수 있다. 상태 정보는 첫번째 셀(101)의 값을 0으로 변경하는 것을 통해 저장된다. 또한 페이지 B(220)의 섹터에 데이터를 프로그램하고 상태 정보를 스트링 2(320)의 두번째 셀(102)에 저장할 수 있다. 역시 두번째 셀(102)은 0의 값을 가지도록 한다. 이후 전원이 나가거나, 추가 작업이 발생하여도, 101 셀을 통해 페이지 A의 섹터에 데이터가 저장되어 있으며, 102 셀을 통해 페이지 B의 섹터에 데이터가 저장되었음을 알 수 있다.
도 5에서 예시한 방식을 통해 상태 정보를 저장할 경우, 전술한 스트링의 특정 셀을 프로그램시 다른 셀에 영향을 줄 수 있어도, 상태 정보에 오류가 발생하지는 않는다. 도 5에서 페이지 A의 상태 정보를 셀 1(101)에 저장시 스트링 1(310)의 다른 셀들이 영향을 받을 수 있다. 그러나, 앞에서 살펴본 바와 같이, 하나의 스트링에는 하나의 섹터에 대한 상태 정보만을 저장하므로 오류를 발생시키지 않는다.
즉, 페이지 A(210)의 상태 정보를 셀 1(101)에 저장하고, 페이지 B(220)의 상태 정보를 셀 3(102)에 저장하였다. 따라서, 셀 1(101)에 페이지 A(210)의 상태 정보를 저장시 오류가 발생하여 셀 3(102)까지 영향을 주어, 페이지 B(220)에 데이터가 저장된 것으로 오류가 발생할 수 있다. 그러나, 본 발명의 일 실시예에 따라, 하나의 스트링에 하나의 섹터 또는 페이지에 대한 상태 정보를 저장하므로, 셀 1(101)에 상태 정보를 저장하는 도중에 셀 3(103)의 정보가 바뀐다 하여도, 페이지 B(220)에 대한 상태 정보는 셀 2(102)를 참조하므로 오류가 발생하지 않는다.
도 6은 도 5의 소블록 플래시 메모리에서의 여분 스트링의 각 셀을 테이블의 한 셀로 하여 나타낸 도면이다. 섹터 0에 대한 상태 정보는 bit 0(s0)에 저장한다. 섹터 1에 대한 상태 정보는 bit 1(s1)에 저장한다. 이러한 방식으로 섹터 31에 대한 상태 정보를 저장할 수 있다. bit 0과 bit 1, ..., bit n-1 까지는 각기 다른 스트링에 포함되므로, 특정 비트에 상태 정보를 저장시 다른 상태 정보를 변화시키지 않는다. 상태 정보에 오류가 발생하지 않고, 그 결과, 페이지 또는 섹터에 오류가 발생했는지 여부를 알 수 있다.
오류 없이 섹터 0을 프로그램한 경우의 블록(501)은 대각선 방향에 존재하는 셀들이 상태 정보를 저장한다. 굵게 표시된 셀이 상태 정보를 나타낸다. 섹터 0을 프로그램하고, 첫번째 스트링의 첫번째 셀(101)이 0으로 변경되어 있다.
한편, 섹터 0을 프로그램 중에 오류가 발생할 수 있다. 굵게 표시된 셀이 상태 정보를 나타낸다. 블록(502)에서 섹터 0의 상태 정보를 셀 1(101)에 저장하는 도중, 같은 스트링에 존재하는 셀 3(103)의 값이 변경될 수 있다. 그러나 섹터 1의 상태 정보는 셀 2(102)에 저장되므로 셀 3(103)의 값이 변경되는지 여부와 상관없다.
도 5와 같이 하나의 스트링이 하나의 비트를 나타내고, 한 페이지가 528 바이트의 정보를 포함하는 경우, 실제 데이터를 저장하는 데에는 516 바이트를 사용하고, 나머지 16 바이트는 여분의 공간으로 둔다. 따라서 하나의 스트링에 총 32개의 셀이 구성된 경우, 여분의 공간은 16 x 8로, 총 128개의 스트링이 존재할 수 있으므로, 이중에서 32개의 스트링을 상태 비트로 사용할 수 있다. 여분 공간이 몇 개의 스트링으로 구성되는지는 구현에 따라 달라질 수 있다. 예를 들어, 도 2에서 나타난 바와 같이 하나의 스트링이 16개의 셀로 구성될 수도 있고, 이와 달리, 하나의 스트링이 32개의 셀로 구성될 수 있다. 하나의 스트링이 몇 개의 셀을 포함하는 가에 따라, 중복을 피해야 하는 경우의 수가 달라진다.
도 7은 본 발명의 일 실시예에 따른 대블록 플래시 메모리에서 데이터를 프로그램시 발생하는 오류를 없애기 위해 한 스트링에 하나의 셀을 사용하는 예시도이다.
도 7은 64개의 페이지로 한 블록을 구성하며, 한 페이지는 네 개의 섹터를 포함한다. 하나의 스트링은 32개의 셀을 포함한다. 하나의 페이지가 4개의 섹터를 포함하므로, 섹터별로 상태 정보를 저장할 경우, 총 4 개의 비트가 필요하다. 페이지 A(210)의 첫번째 섹터에 대한 상태 정보는 스트링 1(310)의 첫번째 셀인 셀 1(101)에 저장한다. 두번째 섹터에 대한 상태 정보는 스트링 2(320)의 첫번째 셀인 셀 2(102)에 저장한다. 이러한 방식으로 저장되는 모습을 테이블의 형식으로 살펴보면 도 8과 같다.
도 8은 도 7의 소블록 플래시 메모리에서의 여분 스트링의 각 셀을 테이블의 한 셀로 하여 나타낸 도면이다. 섹터 0에 대한 상태 정보는 bit 0(s0)에 저장한다. 섹터 1에 대한 상태 정보는 bit 1(s1)에 저장한다. 이러한 방식으로 섹터 255에 대한 상태 정보를 저장할 수 있다. bit 0과 bit 1, ..., bit n-1 까지는 각기 다른 스트링에 포함되므로, 특정 비트에 상태 정보를 저장시 다른 상태 정보를 변화시키지 않는다. 상태 정보에 오류가 발생하지 않고, 그 결과, 페이지 또는 섹터에 오류 가 발생했는지 여부를 알 수 있다. 섹터 0 내지 섹터 3까지 데이터가 프로그램 된 상태는 블록(510)과 같다. 굵게 테두리가 진 셀이 상태 정보를 나타내는 셀이다. 하나의 스트링에 한 셀만이 상태 정보를 나타내므로, 다른 셀의 변경으로 인해 잘못된 정보가 기입되지 않는다.
도 9는 본 발명의 일 실시예에 따른 데이터를 저장하고 한 스트링의 한 셀에 상태 정보를 저장하는 과정을 보여주는 순서도이다.
먼저 플래시 메모리에 특정 섹터를 선택하여 데이터를 프로그램(저장)한다(S101). 저장한 후에 해당 섹터에 대한 상태 정보를 저장하는 스트링의 셀을 선택한다. 이때, 다른 섹터에 대한 상태 정보를 저장하는 셀을 포함하지 않는 스트링에서 하나의 셀을 선택한다(S102). 즉, 하나의 스트링에 하나의 셀만이 섹터에 대한 상태 정보를 저장하도록 선택한다. 그리고 섹터에 데이터가 프로그램되었음을 알리는 정보(0)를 해당 셀에 저장한다. 다른 섹터에 데이터를 저장(프로그램)하는 경우에도, 도 9의 과정을 통해 상태 정보를 저장하면, 한 섹터에 대해 하나의 스트링에 존재하는 셀이 상태 정보를 제공한다. 어떤 스트링을 선택할 것인지, 또는 어떤 셀을 선택할 것인지는 구현에 따라 달라질 수 있다. 바람직한 실시예로 데이터가 저장된 섹터와 같은 페이지에 존재하는 셀을 선택할 수 있다. 전술한 바와 같이 대각선의 형태로 선택할 수 있다.
도 10은 본 발명의 일 실시예에 따른 섹터의 유효성을 검사하는 과정을 보여주는 순서도이다. 섹터에 대한 상태 정보를 저장하는 셀을 선택한다(S111). 이는 도 9의 과정에서 상태 정보를 저장하는 셀을 선택한 방식을 따른다. 선택한 셀에 저장된 정보가 1인지 판단한다(S112). 0이라면 해당 섹터에 데이터가 프로그램된 것으로 판단한다(S116). 한편 1이라면 해당 섹터에 데이터가 프로그램되지 않은 것으로 판단한다(S117).
도 9와 도 10에서 상태 비트가 0인 경우 데이터가 프로그램 된 것을 의미하며, 이와 달리 메모리 장치에 따라 1로 설정할 수도 있다. 또한, 멀티 레벨 셀의 경우에는 상태 비트를 00 또는 11 등 여러 비트를 사용할 수 있다.
도 11은 본 발명의 일 실시예에 따른 소블록 플래시 메모리에서 데이터를 프로그램시 발생하는 오류를 없애기 위해 다수의 셀을 이용하여 상태 정보를 저장하는 예시도이다.
설명의 편의를 위해 도 6과 도 8에서 사용한 테이블 형식의 표기를 통해 플래시 메모리를 나타내고자 한다. 통상 플래시 메모리와 같은 비휘발성 메모리는 페이지당 장애가 발생할 수 있는 비트의 수(셀의 수)를 명시하고 있다. 통상 하나의 셀이 1 bit의 데이터를 저장하는 경우에는 페이지당 장애가 발생할 수 있는 셀의 수가 곧 비트의 수가 된다. 셀이 다수의 bit 정보를 저장하는 경우는 오류가 발생할 수 있는 셀의 수에 의해 비트의 수가 달리 계산될 수 있다. 따라서, 이러한 비트수를 고려하여 상태 정보를 저장한다면, 데이터를 프로그램 시에 에러가 발생하는 것을 상태 정보를 통해 알 수 있다.
도 11과 같이 소블록 플래시 메모리의 경우는 페이지에 하나의 섹터가 존재한다. 첫번째 페이지(210)에 존재하는 섹터 0에 데이터를 프로그램 한 후에, 여분 스트링의 N개의 스트링 중에서 첫번째 페이지(100)에 존재하는 셀의 데이터를 0으 로 프로그램한다. 섹터 0에 대한 상태 정보는 s0이며, 상태 정보를 중복하여 다수의 셀에 저장한다. 상태 정보가 다수의 셀을 통해 알 수 있으므로, 어느 한 셀이 나타내는 상태 정보에 오류가 발생하여 데이터가 저장된 것으로 나타내어도, 다른 셀이 나타내는 상태 정보가 그러하지 않다면, 데이터가 저장되지 않은 것으로 판단할 수 있다.
상태 정보에서 데이터가 프로그램되지 않은 경우를 1로, 데이터가 프로그램된 경우를 0으로 하는 경우를 가정한다. 첫번째 페이지(210)의 섹터 0에 데이터를 저장하고, 데이터가 저장되었음을 알리기 위해 상태 정보를 0으로 설정하는 과정에서, 두번째 페이지(220)에 속하는 s1 셀의 일부가 0으로 설정될 수 있다. 즉, 스트링 0의 bit0에 해당하는 s1이 1에서 0으로 바뀔 수 있다.
만약 종래의 방식처럼 한 셀 또는 한 비트만을 가지고 상태 정보를 표시한다면, 두번째 페이지(220)에는 데이터가 저장된 것으로 판단하는 오류가 발생한다. 그러나, 본 발명의 일 실시예에 따라 N개의 스트링에 존재하는 N개의 셀을 가지고 상태 정보를 표시하므로, 어느 한 셀에 오류가 발생하여도 데이터가 저장되지 않은 것으로 판별할 수 있다. 도 10에서, 스트링 0의 s1 셀이 오류에 의해 0으로 바뀌어도, 스트링 1의 s1 셀, 스트링 2의 s1 셀, ... , 스트링 N-1의 s1 셀이 모두 1로 존재하므로 두번째 페이지(220)에 데이터가 저장되지 않은 것으로 판단할 수 있다.
또한, 한 페이지에서 오류가 발생할 수 있는 비트수(셀의 수)가 K라 할 때, 상태 정보를 나타내기 위해 K보다 큰 N 값을 취하여 N개의 스트링으로 상태 정보를 나타낸다면 오류를 피할 수 있다. 예를 들어 한 페이지에 오류가 발생할 수 있는 비트수가 2라면, 2보다 큰 5비트를 상태 정보를 위해 할당할 경우, 2 비트가 모두 에러가 발생하여도 나머지 3비트를 통해서도 데이터가 저장되었는지 여부를 판단할 수 있다.
N 개의 각 스트링에 존재하는 셀들로 상태 정보를 나타낼 경우, 검토 단계에서 동일한 상태 정보를 가지는 셀이 반드시 N개일 필요는 없다. 구현에 따라, N개 보다 적은 경우지만 오류가 발생할 수 있는 셀의 수를 넘는 경우에는 일부의 셀로 판단 가능하다. 예를 들어, 총 10개의 셀에 상태 정보를 저장하며, 해당 페이지에서 평균적으로, 또는 최대 2개의 셀이 오류가 나는 경우를 가정한다. 이 경우, 총 10개의 셀에서 9개의 셀이 동일한 상태 정보를 저장하고 있다면, 나머지 한 개의 셀이 오류가 발생한 것으로 파악하여, 나머지 9개의 셀의 정보로 데이터 저장 여부를 판단할 수 있다.
도 12는 도 11의 실시예에 따른 소블록 메모리에 상태 정보가 저장된 상태를 보여주는 예시도이다. 첫번째 페이지(210)의 섹터를 저장하고, N개의 비트(셀)의 값을 0으로 변경한다. 그런데 스트링 0의 첫번째 셀(101)을 0으로 변경하는 과정에서 스트링 0의 두번째 셀(102)의 값이 1에서 0으로 변경되었다. 그러나 두번째 페이지(220)의 섹터의 프로그램 여부를 저장하는 상태 정보를 나타내는 다른 셀들(140)의 값이 1로 존재하므로, 두번째 페이지(220)의 섹터가 프로그램 되지 않았음을 알 수 있다.
도 13은 본 발명의 일 실시예에 따른 대블록 플래시 메모리에서 데이터를 프로그램시 발생하는 오류를 없애기 위해 다수의 셀을 이용하여 상태 정보를 저장하 는 예시도이다.
한 페이지에 네 개의 섹터가 있으며, 상태 정보는 3 bit로 표현한다. 그 결과 한 페이지의 상태 정보를 저장하는데 총 12bit가 소요된다. 하나의 셀이 한 비트를 나타낼 경우, 총 12개의 스트링이 소요된다. 특정 셀의 상태 정보를 저장하는 중에 같은 스트링에 위치하는 다른 셀의 값을 변경시켜도 하나의 섹터에 대해 3개의 셀이 상태 정보를 나타내므로, 나머지 2개의 셀을 통해 섹터에 데이터가 저장되었는지 유무를 판단할 수 있다.
도 14는 도 13의 실시예에 따른 대블록 메모리에 상태 정보가 저장된 상태를 보여주는 예시도이다. 각 섹터에 대한 상태 정보는 3비트로 표현하며, 한 페이지에 4개의 섹터가 존재하므로, 한 페이지에 상태 정보는 총 12개의 비트로 표현된다. 하나의 셀이 하나의 비트를 나타낼 경우, 여분 스트링 중에서 총 12개의 스트링으로 상태 정보를 나타내는데 사용된다. 도 14에서 알 수 있듯이 섹터 0에 대한 상태 정보는 스트링 0, 스트링 1, 스트링 2의 첫번째 셀에 저장된다. 섹터 1에 대한 상태 정보는 스트링 3, 스트링 4, 스트링 5의 첫번째 셀에 저장되며, 이하 각 섹터에 대한 상태 정보를 저장하는 셀들은 세 개씩 존재한다. 섹터 4에 대한 상태 정보는 섹터 0에 대한 상태 정보가 저장된 셀과 같은 스트링에 위치하므로, 섹터 4의 상태 정보는 스트링 0, 스트링 1, 스트링 2의 두번째 셀에 저장된다.
도 14는 섹터 0에서 섹터 7까지 두 페이지에 데이터가 저장된 상태를 보여준다. 만약, 섹터 4에 대한 상태 정보를 저장하는 도중에 스트링 0의 두번째 셀(111)을 0으로 프로그램하면서 오류가 발생하여, 스트링 0의 세번째 셀(112)을 0으로 프 로그램할 수 있다. 스트링 0의 세번째 셀(112)는 섹터 8에 대한 상태 정보를 저장하는 셀이다. 기존의 방식에서는 세번째 셀(112)만으로 섹터 8의 데이터 저장 여부를 판단하므로 세번째 셀(112)에 오류가 발생하면 섹터 8에 데이터가 저장된 것으로 판단한다. 그러나, 지금은 스트링 0, 스트링 1, 스트링 2의 세번째 셀들이 모두 0으로 된 경우에 데이터가 저장된 것으로 판단하므로, 스트링 0의 세번째 셀(112)에 오류가 발생하여도 섹터 8에 데이터가 저장되지 않은 것을 알 수 있다.
또한, 한 페이지당 오류가 일어날 수 있는 비트수보다 많은 비트를 상태 정보에 할당하므로 다른 오류의 발생에 의해 상태 정보가 모두 잘못될 가능성이 현저히 낮다. 예를 들어, 한 페이지당 오류가 일어날 수 있는 비트수가 최대 2비트라면, 도 13과 같이 한 섹터에 세 비트를 할당할 수 있다. 한 섹터에 대한 세 비트중 2 비트가 오류가 발생하여 0으로 바뀌어도, 나머지 한 비트가 1로 남아있게 되므로 해당 섹터에 데이터가 저장되지 않음을 알 수 있다.
도 15는 본 발명의 일 실시예에 따른 데이터를 저장하고 다수의 셀에 상태 정보를 저장하는 과정을 보여주는 순서도이다. 먼저 특정 섹터에 데이터를 프로그램한다(S151). 프로그램한 뒤에 해당 페이지를 구성하는 여분 스트링에서 N개의 셀이 나타내는 상태 비트들에 0을 기록한다(S152). 이로써, N개의 셀에 상태 정보가 저장된다.
도 16은 본 발명의 일 실시예에 따른 다수의 상태 비트를 통해 섹터의 유효성을 검사하는 과정을 보여주는 순서도이다. 먼저 해당 섹터에 대한 N개의 상태 비트를 검토하여 모두 0인지 살펴본다(S161). 오류가 발생하지 않았다면, 데이터가 프로그램 된 경우에는 모두 0이고, 그렇지 않을 경우 모두 1이 된다. 전체 비트가 0인 경우에는 데이터가 저장된 것으로 판단한다(S166). 한편 전체 비트가 모두 0이 아닌 경우, 즉, 일부가 0이거나 전부 1인 경우에는 섹터에 데이터가 프로그램되지 않은 것으로 판단한다(S167). 일부가 0인 경우는 다른 섹터의 상태 정보를 저장하는 중에 오류가 발생한 것이다. 그러나 다른 비트가 1로 존재하므로, 섹터에 데이터가 저장되지 않음을 판별할 수 있다.
한편, S161 단계에서 판단시, N개의 상태 비트가 모두 0인지 판단하는 것은 일 실시예이다. 도 11에서 설명한 바와 같이, N개의 상태 비트중 일부 비트가 0이라도, 오류가 발생할 수 있는 비트의 수와 비교하여, 충분히 상태 정보를 저장하고 있는 것으로 판단 시에는 일부 비트가 0을 나타내어도 데이터가 프로그램 된 것으로 판단할 수 있다. 예를 들어, 총 10개의 셀에 상태 정보를 저장하며, 해당 페이지에서 평균적으로, 또는 최대 2개의 셀이 오류가 나는 경우를 가정한다. 이 경우, 총 10개의 셀에서 9개의 셀이 동일한 상태 정보를 저장하고 있다면, 나머지 한 개의 셀이 오류가 발생한 것으로 파악하여, 나머지 9개의 셀의 정보로 데이터 저장 여부를 판단할 수 있다. 이는 메모리를 구성하는 소자의 특성에 따라, N개의 셀 모두가 같은 상태 정보일 경우 데이터가 프로그램 된 것으로 판단할 수 있고, 이와는 달리 N개의 셀 중 약 90%의 셀이 같은 상태 정보일 경우 데이터가 프로그램 된 것으로 판단할 수 있다. 이는 구현에 따라 각각 달라질 수 있다.
도 17은 본 발명의 일 실시예에 따른 다수의 스트링에 상태 정보를 저장하는 비휘발성 저장 장치의 구성도이다.
본 실시예에서 사용되는 '~부'라는 용어, 즉 '~모듈' 또는 '~테이블' 등은 소프트웨어, FPGA 또는 ASIC과 같은 하드웨어 구성요소를 의미하며, 모듈은 어떤 기능들을 수행한다. 그렇지만 모듈은 소프트웨어 또는 하드웨어에 한정되는 의미는 아니다. 모듈은 어드레싱할 수 있는 저장 매체에 있도록 구성될 수도 있고, 하나 또는 그 이상의 프로세서들을 재생시키도록 구성될 수도 있다. 따라서, 일 예로서 모듈은 소프트웨어 구성요소들, 객체지향 소프트웨어 구성요소들, 클래스 구성요소들 및 태스크 구성요소들과 같은 구성요소들과, 프로세스들, 함수들, 속성들, 프로시저들, 서브루틴들, 프로그램 코드의 세그먼트들, 드라이버들, 펌웨어, 마이크로코드, 회로, 데이터, 데이터베이스, 데이터 구조들, 테이블들, 어레이들, 및 변수들을 포함한다. 구성요소들과 모듈들 안에서 제공되는 기능은 더 작은 수의 구성요소들 및 모듈들로 결합되거나 추가적인 구성요소들과 모듈들로 더 분리될 수 있다. 뿐만 아니라, 구성요소들 및 모듈들은 디바이스 내의 하나 또는 그 이상의 CPU들을 재생시키도록 구현될 수도 있다.
비휘발성 메모리(1000)는 크게 메모리 제어부(910)와 저장부(920)로 구성된다. 메모리 제어부(910)는 저장부(920)로부터 어떤 데이터를 읽고 저장할 것인지를 제어한다. 또한 플래시 메모리의 경우, 데이터를 저장하기 전에 삭제하는 작업도 수행한다. 한편, 전술한 바와 같이, 특정 섹터 또는 특정 페이지에 데이터를 저장(프로그램)하면서 이에 대한 상태 정보를 저장부(920)의 어느 영역에 저장할 것인지를 판단한다. 예를 들어, 하나의 독립된 비트를 사용하며, 하나의 스트링에 하나의 비트를 사용하는 방식을 적용하는 경우, 메모리 제어부(910)는 저장될 섹터 또는 페이지에 대한 상태 정보를 어느 스트링에 저장할 것인지 선택한다. 또한 여러 개의 셀을 가지고 다수의 상태 정보를 저장할 경우에는, 몇 개의 셀이 할당되는지를 결정한다. 이때, 페이지당 오류가 발생할 수 있는 비트수보다 많은 비트로 상태 정보를 나타내도록 한다.
저장부(920)는 데이터가 저장되는 영역이다. 다수의 블록(510, 520, ...)으로 구성되며, 각 블록은 다시 페이지(211, 212, 221, 222)로 구성된다. 한편 여러 페이지의 셀들은 스트링을 구성한다. 스트링들은 크게 메인 스트링 그룹과 여분 스트링 그룹으로 나뉘어지며, 메인 스트링의 셀에 데이터가 프로그램된다. 여분 스트링 그룹을 구성하는 둘 이상의 스트링들은 페이지 또는 섹터에 대한 상태 정보를 저장한다. 도 17에서는 굵은 선으로 상태 정보를 제공하는 스트링을 표시하고 있다. 둘 이상의 스트링을 상태 정보를 저장하는데 제공하므로, 어느 한 스트링에서 발생할 수 있는 에러가 다른 스트링에 영향을 주지 않으며, 그 결과, 상태 정보에서 발생하는 오류를 해결할 수 있다.
메모리 제어부(910)는 상태 정보에 따라 독립된 비트로 저장할 것인지 혹은 다수의 비트를 사용할 것인지를 결정한다. 여분 스트링이 많은 경우에는 독립된 비트로 하여 저장하고, 여분 스트링이 적은 경우에는 다수의 비트를 사용한다. 독립된 비트로 하여 저장시에는 페이지 수 또는 섹터 수에 비례하여 많은 스트링이 필요할 수 있다. 그러나 다수의 N 비트를 사용할 것이라고 결정하면, 그 N 비트만큼의 스트링만을 필요로 하므로 상태 정보에 할당되는 스트링의 개수가 줄어들 수 있다.
본 발명이 속하는 기술분야의 통상의 지식을 가진 자는 본 발명이 그 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다. 본 발명의 범위는 상기 상세한 설명보다는 후술하는 특허청구의 범위에 의하여 나타내어지며, 특허청구의 범위의 의미 및 범위 그리고 그 균등 개념으로부터 도출되는 모든 변경 또는 변형된 형태가 본 발명의 범위에 포함되는 것으로 해석되어야 한다.
본 발명을 구현함으로써 다수의 스트링의 셀을 사용하여 상태 정보를 저장할 수 있다.
본 발명을 구현함으로써 상태 정보를 저장하는데 있어 다른 스트링에 영향을 미치지 않도록 하여 데이터 저장시 발생하는 오류를 줄일 수 있다.

Claims (23)

1 비트 이상의 데이터가 저장가능한 셀;
상기 둘 이상의 셀이 직렬로 연결된 다수의 스트링들; 및
상기 셀들의 집합인 다수의 페이지들을 포함하며,
상기 다수의 스트링들은, 상기 셀에 데이터를 저장하는 스트링들로 구성된 메인 스트링 그룹과 상기 메인 스트링 그룹에 저장된 데이터의 이진 상태 정보를 저장하는 둘 이상의 스트링들을 포함하는 여분 스트링 그룹으로 구성되는, 다수의 스트링을 사용하여 상태 정보를 저장하는 비휘발성 메모리.
제 1항에 있어서,
상기 각 여분 스트링은 상기 이진 상태 정보를 저장하는 하나의 셀과 상기 이진 상태 정보를 저장하지 않는 다수의 셀들로 연결된, 다수의 스트링을 사용하여 상태 정보를 저장하는 비휘발성 메모리.
제 1항에 있어서,
상기 페이지는 다수의 섹터들을 포함하며,
상기 각 여분 스트링은 상기 다수의 섹터들 중 적어도 하나의 섹터의 이진 상태 정보를 저장하는 하나의 셀과 이진 상태 정보를 저장하지 않는 다수의 셀들로 연결된, 다수의 스트링을 사용하여 상태 정보를 저장하는 비휘발성 메모리.
제 1항에 있어서,
상기 페이지의 데이터 저장 여부는 상기 페이지에 해당하는 여분 스트링 그룹 내의 상기 이진 상태 정보를 저장한 셀의 값으로 판단되는, 다수의 스트링을 사용하여 상태 정보를 저장하는 비휘발성 메모리.
제 1항에 있어서,
상기 여분 스트링 그룹 내의 동일 페이지에 포함된 적어도 일부 셀들은 동일한 이진 상태 정보를 저장하는, 다수의 스트링을 사용하여 상태 정보를 저장하는 비휘발성 메모리.
제 5항에 있어서,
한 페이지에 대한 이진 상태 정보를 저장한 셀들 중 동일한 값을 가지는 셀들이 존재할 때, 상기 페이지에 데이터가 저장된 것으로 판단되는, 다수의 스트링을 사용하여 상태 정보를 저장하는 비휘발성 메모리.
제 1항에 있어서,
상기 비휘발성 메모리는 플래시 메모리를 포함하는, 다수의 스트링을 사용하여 상태 정보를 저장하는 비휘발성 메모리.
제 7항에 있어서,
상기 플래시 메모리는 NAND 또는 AND 형 플래시 메모리를 포함하는, 다수의 스트링을 사용하여 상태 정보를 저장하는 비휘발성 메모리.
1 비트 이상의 데이터가 저장가능한 셀;
상기 둘 이상의 셀이 직렬로 연결된 다수의 스트링들; 및
상기 셀들의 집합인 다수의 페이지를 포함하는 비휘발성의 저장부; 및
상기 데이터를 상기 저장부의 셀에 저장시 상기 셀을 선택하는 메모리 제어부를 포함하며,
상기 메모리 제어부는 상기 다수의 스트링들이 상기 셀에 데이터를 저장하는 스트링들로 구성된 메인 스트링 그룹과 상기 메인 스트링 그룹에 저장된 데이터의 상태 정보를 저장하는 둘 이상의 스트링들을 포함하는 여분 스트링 그룹으로 구성되도록 제어하는, 다수의 스트링을 사용하여 상태 정보를 저장하는 비휘발성 저장 장치.
제 9항에 있어서,
상기 여분 스트링은 상기 상태 정보를 저장하는 하나의 셀과 상기 상태 정보를 저장하지 않는 다수의 셀들로 연결된, 다수의 스트링을 사용하여 상태 정보를 저장하는 비휘발성 저장 장치.
제 9항에 있어서,
상기 페이지는 다수의 섹터를 포함하며,
상기 각 여분 스트링은 상기 다수의 섹터들 중 적어도 하나의 섹터의 상태 정보를 저장하는 하나의 셀과 상태 정보를 저장하지 않는 다수의 셀들로 연결된, 다수의 스트링을 사용하여 상태 정보를 저장하는 비휘발성 저장 장치.
제 9항에 있어서,
상기 메모리 제어부는 상기 페이지의 데이터 저장 여부를 상기 여분 스트링 그룹 내의 상기 상태 정보를 저장한 셀의 값으로 판단되는, 다수의 스트링을 사용하여 상태 정보를 저장하는 비휘발성 저장 장치.
제 9항에 있어서,
상기 메모리 제어부는 상기 여분 스트링 그룹 내의 동일 페이지에 포함된 적어도 일부 셀들은 동일한 상태 정보를 저장하는, 다수의 스트링을 사용하여 상태 정보를 저장하는 비휘발성 저장 장치.
제 13항에 있어서,
상기 메모리 저장부는 한 페이지에 대한 상태 정보를 저장한 셀들 중 동일한 값을 가지는 셀들이 존재할 때, 상기 페이지에 데이터가 저장된 것으로 판단되는, 다수의 스트링을 사용하여 상태 정보를 저장하는 비휘발성 저장 장치.
제 9항에 있어서,
상기 비휘발성 저장 장치는 플래시 메모리를 포함하는, 다수의 스트링을 사용하여 상태 정보를 저장하는 비휘발성 저장 장치.
제 15항에 있어서,
상기 플래시 메모리는 NAND 또는 AND 형 플래시 메모리를 포함하는, 다수의 스트링을 사용하여 상태 정보를 저장하는 비휘발성 저장 장치.
(a) 데이터의 저장을 위한 주소 정보와 데이터를 수신하는 단계;
(b) 메인 스트링 그룹에서 상기 주소를 구성하는 셀에 상기 데이터를 저장하는 단계;
(c) 상기 데이터가 저장된 셀을 포함하는 페이지의 상태 정보를 저장하기 위해 여분 스트링 그룹에서 셀을 선택하는 단계; 및
(d) 상기 선택된 셀에 상기 상태 정보를 저장하는 단계를 포함하며,
상기 여분 스트링 그룹은 상기 메인 스트링 그룹에 저장된 데이터의 상태 정보를 저장하는 셀이 포함된 둘 이상의 스트링들로 구성된, 다수의 스트링을 사용하여 상태 정보를 저장하는 방법.
제 17항에 있어서,
상기 셀은 1 비트 이상의 데이터를 저장가능하며,
상기 스트링은 둘 이상의 셀이 직렬로 연결되어 있으며,
상기 페이지는 컨트롤 게이트들이 연결된 셀들의 집합인, 다수의 스트링을 사용하여 상태 정보를 저장하는 방법.
제 17항에 있어서,
상기 (d) 단계는,
상기 상태 정보를 저장하는 셀이 상기 각 스트링에 하나만 존재하도록 저장하는 단계를 포함하는, 다수의 스트링을 사용하여 상태 정보를 저장하는 방법.
제 17항에 있어서,
상기 페이지는 다수의 섹터를 포함하며,
상기 (d) 단계는 상기 섹터의 상태 정보를 저장하는 셀이 상기 각 여분 스트링에 하나만 존재하도록 저장하는 단계를 포함하는, 다수의 스트링을 사용하여 상태 정보를 저장하는 방법.
제 17항에 있어서,
상기 상태 정보를 저장한 셀의 값으로 상기 페이지의 데이터 저장 여부를 판단하는 단계를 더 포함하는, 다수의 스트링을 사용하여 상태 정보를 저장하는 방법.
제 17항에 있어서,
상기 (d) 단계는 다수의 스트링의 적어도 일부 셀들에 동일한 상기 상태 정보를 저장하는 단계를 포함하는, 다수의 스트링을 사용하여 상태 정보를 저장하는 방법.
제 22항에 있어서,
한 페이지에 대한 상태 정보를 저장한 셀들 중 동일한 값을 가지는 셀들이 존재할 때, 상기 페이지에 데이터가 저장된 것으로 판단되는, 다수의 스트링을 사용하여 상태 정보를 저장하는 방법.
KR1020050024970A 2005-03-25 2005-03-25 다수의 스트링을 사용하여 상태 정보를 저장하는 방법 및비휘발성 저장 장치 KR100704628B1 (ko)

Priority Applications (7)

Application Number Priority Date Filing Date Title
KR1020050024970A KR100704628B1 (ko) 2005-03-25 2005-03-25 다수의 스트링을 사용하여 상태 정보를 저장하는 방법 및비휘발성 저장 장치
CNB2006100570265A CN100550201C (zh) 2005-03-25 2006-03-13 使用多个串存储状态信息的非易失性存储器装置和方法
JP2006072733A JP4455524B2 (ja) 2005-03-25 2006-03-16 複数のストリングを使用して状態情報を保存する方法及び不揮発性保存装置
US11/385,804 US7457911B2 (en) 2005-03-25 2006-03-22 Nonvolatile memory device and method for storing status information using multiple strings
DE602006001237T DE602006001237D1 (de) 2005-03-25 2006-03-23 Nichtflüchtige Speichervorrichtung und Verfahren zur Speicherung von Statusinformationen unter Verwendung mehrfacher Strings
EP06111631A EP1708203B1 (en) 2005-03-25 2006-03-23 Nonvolatile memory device and method for storing status information using multiple strings
AT06111631T ATE396483T1 (de) 2005-03-25 2006-03-23 Nichtflüchtige speichervorrichtung und verfahren zur speicherung von statusinformationen unter verwendung mehrfacher strings

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020050024970A KR100704628B1 (ko) 2005-03-25 2005-03-25 다수의 스트링을 사용하여 상태 정보를 저장하는 방법 및비휘발성 저장 장치

Publications (2)

Publication Number Publication Date
KR20060102908A KR20060102908A (ko) 2006-09-28
KR100704628B1 true KR100704628B1 (ko) 2007-04-09

Family

ID=36579802

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020050024970A KR100704628B1 (ko) 2005-03-25 2005-03-25 다수의 스트링을 사용하여 상태 정보를 저장하는 방법 및비휘발성 저장 장치

Country Status (7)

Country Link
US (1) US7457911B2 (ko)
EP (1) EP1708203B1 (ko)
JP (1) JP4455524B2 (ko)
KR (1) KR100704628B1 (ko)
CN (1) CN100550201C (ko)
AT (1) ATE396483T1 (ko)
DE (1) DE602006001237D1 (ko)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006302342A (ja) * 2005-04-15 2006-11-02 Toshiba Corp 不揮発性半導体メモリ装置とメモリシステム
US7568135B2 (en) 2006-05-15 2009-07-28 Apple Inc. Use of alternative value in cell detection
US7511646B2 (en) * 2006-05-15 2009-03-31 Apple Inc. Use of 8-bit or higher A/D for NAND cell value
US8000134B2 (en) 2006-05-15 2011-08-16 Apple Inc. Off-die charge pump that supplies multiple flash devices
US7551486B2 (en) * 2006-05-15 2009-06-23 Apple Inc. Iterative memory cell charging based on reference cell value
US7639531B2 (en) * 2006-05-15 2009-12-29 Apple Inc. Dynamic cell bit resolution
US7613043B2 (en) * 2006-05-15 2009-11-03 Apple Inc. Shifting reference values to account for voltage sag
US7701797B2 (en) * 2006-05-15 2010-04-20 Apple Inc. Two levels of voltage regulation supplied for logic and data programming voltage of a memory device
US7852690B2 (en) * 2006-05-15 2010-12-14 Apple Inc. Multi-chip package for a flash memory
US7911834B2 (en) * 2006-05-15 2011-03-22 Apple Inc. Analog interface for a flash memory die
US7639542B2 (en) * 2006-05-15 2009-12-29 Apple Inc. Maintenance operations for multi-level data storage cells
JP4660520B2 (ja) * 2007-09-03 2011-03-30 株式会社東芝 不揮発性半導体記憶装置およびその駆動方法
US8261174B2 (en) 2009-01-13 2012-09-04 International Business Machines Corporation Protecting and migrating memory lines
KR101616099B1 (ko) * 2009-12-03 2016-04-27 삼성전자주식회사 플래시 메모리 장치 및 그것의 프로그램 방법
CN105989898B (zh) * 2014-10-08 2018-11-27 光宝科技股份有限公司 存储器阵列中故障地址的数据结构及故障地址的编码方法
KR102438988B1 (ko) * 2016-04-07 2022-09-02 삼성전자주식회사 랜덤화 연산을 수행하는 불휘발성 메모리 장치

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20050024970A (ko) * 2003-09-05 2005-03-11 한국원자력연구소 지진 안전성 평가시스템 및 그 방법

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3155847B2 (ja) 1993-01-13 2001-04-16 株式会社東芝 不揮発性半導体記憶装置およびこれを用いた記憶システム
JPH07122080A (ja) * 1993-08-31 1995-05-12 Sony Corp 半導体不揮発性記憶装置
US5603001A (en) 1994-05-09 1997-02-11 Kabushiki Kaisha Toshiba Semiconductor disk system having a plurality of flash memories
JP2848300B2 (ja) 1995-12-27 1999-01-20 日本電気株式会社 不揮発性半導体記憶装置
KR100206709B1 (ko) * 1996-09-21 1999-07-01 윤종용 멀티비트 불휘발성 반도체 메모리의 셀 어레이의 구조 및 그의 구동방법
US6975425B1 (en) * 1998-02-26 2005-12-13 Canon Kabushiki Kaisha Information processing apparatus and information processing method
JP3822081B2 (ja) 2001-09-28 2006-09-13 東京エレクトロンデバイス株式会社 データ書込装置、データ書込制御方法及びプログラム
KR100454119B1 (ko) 2001-10-24 2004-10-26 삼성전자주식회사 캐쉬 기능을 갖는 불 휘발성 반도체 메모리 장치 및 그것의 프로그램, 읽기, 그리고 페이지 카피백 방법들
US6740940B2 (en) 2001-11-27 2004-05-25 Samsung Electronics Co., Ltd. Semiconductor memory devices having dummy active regions
JP2003196142A (ja) 2001-12-25 2003-07-11 Sony Corp ライトワンス型メモリ装置及びファイル管理方法
US6549457B1 (en) 2002-02-15 2003-04-15 Intel Corporation Using multiple status bits per cell for handling power failures during write operations
JP3935139B2 (ja) 2002-11-29 2007-06-20 株式会社東芝 半導体記憶装置

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20050024970A (ko) * 2003-09-05 2005-03-11 한국원자력연구소 지진 안전성 평가시스템 및 그 방법

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
1020050024970 - 679480

Also Published As

Publication number Publication date
EP1708203B1 (en) 2008-05-21
US20060215454A1 (en) 2006-09-28
EP1708203A1 (en) 2006-10-04
KR20060102908A (ko) 2006-09-28
DE602006001237D1 (de) 2008-07-03
JP2006277921A (ja) 2006-10-12
CN100550201C (zh) 2009-10-14
US7457911B2 (en) 2008-11-25
ATE396483T1 (de) 2008-06-15
JP4455524B2 (ja) 2010-04-21
CN1838319A (zh) 2006-09-27

Similar Documents

Publication Publication Date Title
KR100704628B1 (ko) 다수의 스트링을 사용하여 상태 정보를 저장하는 방법 및비휘발성 저장 장치
US20240005999A1 (en) Nonvolatile semiconductor memory device including a memory cell array and a control circuit applying a reading voltage
US7768828B2 (en) Flash memory device capable of storing multi-bit data and single-bit data
CN101807432B (zh) 用于操作闪存器件的方法
JP4270994B2 (ja) 不揮発性半導体記憶装置
KR101660985B1 (ko) 반도체 메모리 장치 및 그 동작 방법
JP2006294126A (ja) 半導体記憶装置
JP2008047273A (ja) 半導体記憶装置およびその制御方法
US9489143B2 (en) Method for accessing flash memory and associated controller and memory device
CN109036488B (zh) 存储器控制器、操作该存储器控制器的方法以及存储器系统
JP2005108273A (ja) 不揮発性半導体記憶装置
KR20190009630A (ko) 비휘발성 메모리의 ecc 제어 방법 및 이를 수행하는 메모리 시스템
JP2010218637A (ja) 半導体記憶装置およびその制御方法
JP5336053B2 (ja) 不揮発性メモリ装置及びその動作方法
JP2006164408A (ja) 不揮発性半導体記憶装置及びそのデータ消去方法。
US20120063237A1 (en) Nonvolatile memory device and method of operating the same
JP5731622B2 (ja) フラッシュメモリ、バッドブロックの管理方法および管理プログラム
JP4467371B2 (ja) 不揮発性半導体記憶装置及び不揮発性半導体記憶装置の置換情報の設定方法
CN112037837B (zh) 存储器系统、存储器控制器和存储器设备
US10446258B2 (en) Methods and apparatus for providing redundancy in memory
JP2004030849A (ja) データの一部書き換え機能を有する半導体不揮発性メモリ
US20240126642A1 (en) Storage device
CN114201110B (zh) 存储器系统及其操作方法
JP4332108B2 (ja) メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法
JP2005293177A (ja) メモリコントローラ及びフラッシュメモリシステム

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

Payment date: 20190329

Year of fee payment: 13