KR100531192B1 - 비휘발성 메모리의 제어방법 - Google Patents

비휘발성 메모리의 제어방법 Download PDF

Info

Publication number
KR100531192B1
KR100531192B1 KR10-2003-7002895A KR20037002895A KR100531192B1 KR 100531192 B1 KR100531192 B1 KR 100531192B1 KR 20037002895 A KR20037002895 A KR 20037002895A KR 100531192 B1 KR100531192 B1 KR 100531192B1
Authority
KR
South Korea
Prior art keywords
data
block
written
flag
page
Prior art date
Application number
KR10-2003-7002895A
Other languages
English (en)
Other versions
KR20040014971A (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 마쯔시다덴기산교 가부시키가이샤
Publication of KR20040014971A publication Critical patent/KR20040014971A/ko
Application granted granted Critical
Publication of KR100531192B1 publication Critical patent/KR100531192B1/ko

Links

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits
    • G11C16/102External programming circuits, e.g. EPROM programmers; In-circuit programming or reprogramming; EPROM emulators
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1441Resetting or repowering
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7209Validity control, e.g. using flags, time stamps or sequence numbers

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Read Only Memory (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Memory System (AREA)

Abstract

블록을 겹쳐쓰기 하고 있는 도중에, 기억장치의 전원차단이나 리세트명령 등으로 강제적인 중단이 발생한 경우라도, 소거했을 것인 데이터가 소거되어 있거나, 기입했을 것인 데이터가 소실되는 경우가 아닌 비휘발성 메모리의 제어방법을 제공한다.
블록의 최종 페이지에 데이터를 기입할 때, 그 블록의 최종 페이지의 용장(冗長)영역에 설치한 블록데이터 유효화 플래그를 0(유효)으로 하는 것에 의해, 그 블록을 유효화한다. 또한, 신구판정용의 카운터를 설치하는 것에 의해 상기해결수단에 있어서 대처할 수 없는 경우라도 데이터를 보호할 수가 있다.

Description

비휘발성 메모리의 제어방법{NON-VOLATILE MEMORY CONTROL METHOD}
본 발명은, 비휘발성 반도체메모리 및 비휘발성 반도체메모리의 제어방법에 관한 것이다.
최근, 음악이나 영상데이터를 취급하는 휴대기기의 기억장치로서, 플래시메모리 등의 비휘발성 메모리를 사용한 기억장치가 주목받고 있다.
플래시메모리의 구조에 대해서, 512M비트 NAND형 플래시의 경우를 예로 들어 설명한다.
도 2는, 512M비트 플래시메모리의 물리블록구성 예이다. 1 플래시메모리는 4096개의 블록에 의해 구성되어 있다. 이 블록은 소거의 기본단위로 되어 있다. 1 블록은 또한 32페이지로 분할되고, 1 페이지는 읽어내기, 기입의 기본단위로 된다. 1 페이지의 용량은 528바이트이고, 그 중 512바이트는 데이터영역, 남은 16바이트는 용장(冗長)영역이다. 데이터영역은 사용자가 사용하는 영역이고, 용장영역은 비휘발성 메모리 기억장치의 시스템제어부가 사용하는 영역이다.
실시예의 플래시메모리의 각 데이터는, 소거상태(소거된 것으로 기억되지 않음)에 있어서 1 이다. 따라서 플래시메모리에 1 을 기입하지 않는 것을 아무것도 쓰지 않는 것으로 바꿔 놓더라도 좋다.
도 3은, 종래의 플래시메모리의 물리 블록내의 구성도 예이다. 도 3은, 1 물리블록의 용장영역에 쓰여져 있는 주된 데이터를 나타내고 있다. 최초의 페이지의 용장영역에, 기입이 끝난 플래그(101), 논리어드레스(102), 블록데이터 무효화플래그인 플래그 1(103)의 3가지가 배치되어 있다. 이들의 각 데이터에 대해서는 후에 설명한다.
도 4는, 논리어드레스와 물리어드레스의 관계를 나타내는 도면이다. 플래시메모리를 사용한 비휘발성 메모리 기억장치에 있어서는, 외부에서 지정되는 논리어드레스와, 플래시메모리 내에 배치되는 물리어드레스는 일반적으로 일치하지 않는다. 일치시키면, 플래시메모리 안에서 불량이 발생한 블록의 어드레스를 사용할 수 없고, 어플리케이션에 부담이 되거나, 혹은 특정어드레스에 기입이 빈발하는 시스템에서는, 그 어드레스에 해당하는 블록이 단기간에 고쳐 쓰기 보증회수를 상회하여 수명이 짧게 되어버린다는 문제가 생기기 때문이다.
따라서 도 3과 같이, 물리블록은 자신이 어떤 논리어드레스에 할당되고 있는지 용장영역(Area)안에 기억하고 있다. 일반적으로 비휘발성 메모리 기억장치의 시스템 제어부는, 전원투입시에 전체 플래시메모리의 용장영역에 쓰여져 있는 논리어드레스정보를 읽어 내어, 도 5와 같은 논리어드레스와 물리어드레스를 변환하는 논리물리 어드레스변환 테이블을 램(RAM)상에 작성한다. 시스템 제어부는, 코멘드처리시에, 외부에서 지정되는 논리 어드레스에 대하여, 그 논리물리어드레스변환 테이블로 물리어드레스를 특정하여, 그 물리어드레스에 대하여 억세스를 한다.
도 6에서 도 8을 사용하여, 종래의 일반적인 기입순서에 대해서 설명한다. 도 6은, 1 블록 기입처리 개요 플로차트이다. 도 7은, 도 6의 스텝(603)에 있어서의 신(新) 데이터 기입처리부의 상세 플로차트이다. 도 8은, 도 7의 스텝(706)에 있어서의 용장영역 데이터 작성처리부의 상세 플로차트이다.
도 6에 있어서, 스텝(601)에서 엔트리 테이블보다 소거된 블록을 검색한다. 엔트리테이블은 소거된 기입되지 않은 블록의 일람표이다. 엔트리 테이블은, 상기 논리물리어드레스변환 테이블과 같이, 전원투입시에 전체 플래시메모리의 용장영역에 쓰여져 있는 기입이 끝난 플래그를 읽어 내어, 램(RAM)상에 작성되는 테이블이다. 스텝(602)으로 엔트리테이블을 갱신하여, 소거된 블록을 확보한다. 스텝 (603)으로 확보한 블록에 데이터를 기입한다(상세한 것은 도 7, 도 8). 스텝(604)에서 구(舊)블록이 존재하는지 아닌지 논리물리어드레스변환 테이블로부터 판단한다. 존재하는 경우는, 스텝(605)에 진행한다. 스텝(605)으로 구블록의 선두 페이지의 용장영역에 있는 플래그(1)에 0(무효)을 오버라이트(Overwrite)하여, 구블록을 무효화한다. 존재하지 않은 경우는, 스텝(605)을 생략하고 스텝(606)으로 진행한다. 스텝(606)으로 논리물리어드레스변환 테이블의 구(舊)블록의 물리어드레스를 신(新)블록의 물리어드레스로 고쳐 쓰고, 이 플로차트를 종료한다.
또, 구데이터의 소거에 있어서는, 물리적으로 소거하는 방법과, 데이터가 무효인 것을 나타내는 플래그에 마킹함에 의해 외견상 소거하여 다른 타이밍으로 물리소거를 하는 방법이 있다. 후자 쪽이 일반적으로 행하여지고 있고, 상기 도 6의 플로차트도 이 방식으로 설명하였다. 이것은 플래시메모리가 물리적 소거보다도 플래그의 오버라이트 쪽이 빠르기 때문이다. 또한 복수의 플래시 메모리칩으로 구성된 비휘발성 메모리기억장치에 있어서는, 다른 플래시 메모리칩의 기입을 하고 있는 동안에, 무효 마킹된 블록을 동시에 물리소거하면, 그 기입과 소거를 동시에 행하고 있는 시간만큼, 전체적으로 기입속도가 고속으로 되기 때문이다.
도 7에 있어서, 스텝(701)으로 램(RAM)상에 설치된 페이지 카운터를 초기값 (1)으로 설정한다. 스텝(702)에서 호스트로부터 부여된 데이터를 쓰는 페이지인지 아닌지 판단한다. 호스트로부터 부여된 데이터를 쓰는 페이지이면, 스텝(703)으로 진행하여 호스트로부터 데이터를 1 페이지 입력한다. 호스트로부터 부여된 데이터를 쓰는 페이지가 아니면, 스텝(704)으로 진행하여 구블록으로부터 데이터를 1 페이지 읽어낸다. 스텝(705)으로 데이터영역에 데이터를 세트하고, 스텝(706)으로 용장영역에 데이터를 세트한다(상세한 것은 도 8). 스텝(707)으로 1 페이지 기입한다. 스텝(708)에서 페이지 카운터를 1 가산한다. 스텝(709)에서 페이지카운터가 33 이상인지 아닌지 판단한다. 페이지 카운터가 33미만인 동안은 스텝(702)으로부터 스텝(709)을 반복한다. 페이지 카운터가 33이 되면 이 플로우챠트를 종료한다.
상기 도면 7의 스텝(702)으로부터 스텝(704)은, 기입 단위가 페이지이고, 소거단위가 블록이기 때문에 발생하는 처리로, 끌어넣기처리라고 불리고 있다. 요컨대 외부로부터 기입데이터가 페이지단위로 받았을 때, 그 이외의 페이지에 관해서는, 종래 데이터를 그대로 유지할 필요가 있기 때문에, 변경하는 구블록으로부터 읽어 내어, 그 데이터를 합성하여 1 블록만큼의 기입을 하고 있다. 기입 시작페이지, 종료페이지에 의해, 전반 끌어넣기처리와 후반의 끌어넣기처리가 있다.
도 8에 있어서, 스텝(801)에서 선두 페이지인지 아닌지 판단한다. 선두 페이지의 경우는 스텝(802)으로 진행하여 기입이 끝난 플래그(101)에 0(기입됨)을 세트한다. 스텝(803)에서 논리어드레스(102)에 호스트에서 지시된 논리어드레스를 세트한다. 스텝(804)에서 플래그(1103)에 1(무효가 아님)을 세트하여, 이 플로차트를 종료한다. 스텝(801)에서 선두 페이지가 아닌 경우는 이 플로차트를 종료한다.
이러한 시스템에 있어서, 블록을 겹쳐쓰기하고 있는 도중에, 기억장치의 전원차단이나 기억장치로의 리세트명령 등으로 강제적인 중단이 발생한 경우, 동일 논리어드레스에 2개의 물리어드레스가 존재하게 된다. 이 현상은 상술한 순서 중, 신(新)블록데이터의 기입(스텝(603))도중, 또는 신(新)블록데이터의 기입(스텝(603 ))이 완료하여 구(舊)블록데이터가 무효화(스텝(604))가 행하여지기 전에 중단한 경우에 발생한다.
이 현상이 발생한 후의 초기시의 논리물리어드레스변환 테이블작성에서, 어느 한쪽 블록의 물리어드레스를 논리물리어드레스변환 테이블에 등록하고, 다른 쪽의 블록데이터와 논리어드레스가 기입된 블록을 방치하는 방법을 생각해 본다. 이 경우, 상기 상태로 등록한 블록을 소거하여 전원을 재투입하였을 때, 새롭게 램 (RAM)상에 생성되는 논리물리어드레스변환 테이블에 있어서, 소거했을 것인 논리어드레스에 다른 블록(방치한 블록)의 물리 어드레스가 등록된다. 결과로서 소거했을 것인 어드레스가 소거되어 있지 않는 현상이 발생한다.
또한, 오래된 블록데이터가 기입된 블록과, 새로운 블록데이터가 기입된 블록과, 동일한 논리어드레스를 기입한 상태로 중단하여, 다음에 전원을 재투입한 경우, 오래된 블록데이터가 기입된 블록의 물리어드레스가 논리물리어드레스변환 테이블에 등록될 가능성이 있다. 이 경우 새로운 블록데이터가 소실한 것으로 된다. 어떻든지 시스템으로서 치명적인 현상이 발생한다.
따라서 종래는, 초기시의 논리물리변환 테이블의 작성시, 동일 논리어드레스에 물리어드레스의 중복이 발견된 경우, 한쪽의 블록을 무효화하여 중복을 해소하는 처리가 행하여져 왔다. 양 블록의 선택방법은, 양 블록의 데이터 읽어내기를 하여, 페이지마다 설치된 에러정정부호를 확인하여 에러가 없는 블록을 선택하는, 혹은 최종 페이지까지 기입된 블록을 선택한다는 방법이 취해져 왔다.
그러나, 최근의 플래시메모리 및 비휘발성 메모리 기억장치의 대용량화에 따른, 논리물리어드레스변환 테이블작성처리를 고속으로 행할 필요성이 나왔지만, 상기 어드레스 중복해소처리가 고속화의 큰 장해가 되고 있다. 하드웨어에 의한 논리물리어드레스변환 테이블작성이 일반적이지만, 어드레스 중복정보를 소프트웨어에 이어받아 처리를 하는 방법은 논리물리어드레스변환 테이블작성의 속도를 크게 저하시킨다. 하드웨어로 모두 처리하더라도, 어드레스 중복해소에 종래의 복잡한 판단처리를 하면, 그 처리에 따르는 하드웨어면적이 증대하여, 가격의 상승으로 이어져 버린다.
또한, 중복한 양쪽의 블록이 물리적으로 최종 페이지까지 바르게 기입된 상태에서도 데이터영역의 내용에 의해 바른 블록을 선택해야만 하는 경우가 있다. 예를 들면, 겹쳐쓰기 처리에 있어서, 신데이터의 기입이 행하여진 후, 그 데이터 안에 포함되는 에러정정부호를 확인하거나, 혹은 그 데이터의 값을 이상 값인지 아닌지 판정하여, 정당성을 확인하여 처음으로 구데이터를 무효화한다는 처리가 필요한 데이터의 경우이다.
이러한 경우, 단순히 기입시기의 새로운 쪽의 데이터를 선택한다는 방법으로는 해결할 수 없다. 예를 들면, 데이터 개개의 사정에 따라서 데이터영역까지 주사하여, 바른 블록을 판단, 선택하는 처리를 할 필요가 있지만, 이들 모든 처리를 하드웨어로 실현하는 것은 곤란하다.
본 발명은, 이러한 문제점에 비추어 행해진 것으로서, 간단한 구조의 추가로, 신뢰성을 확보하면서 논리물리어드레스변환 테이블이 고속으로 작성 가능한 기억장치를 제공하는 것을 목적으로 한다.
도 1은, 본 발명의 실시예 1의 플래시메모리 물리블록내의 구성도예이다.
도 2는, 종래의 플래시메모리 물리블록 구성예이다.
도 3은, 종래의 플래시메모리 물리블록내의 구성도예이다.
도 4는, 논리어드레스와 물리어드레스의 관계를 나타내는 도면이다.
도 5는, 논리물리 어드레스변환 테이블의 예이다.
도 6은, 1 블록 기입처리 개략 플로차트이다.
도 7은, 도 6에 있어서의 신데이터 기입처리부의 상세 플로차트이다.
도 8은, 종래의 도 7에 있어서의 용장영역 데이터 작성처리부의 상세 플로차트이다.
도 9는, 본 발명의 실시예 1의 도 7에 있어서의 용장영역 데이터 작성처리부의 상세 플로차트이다.
도 10은, 본 발명의 실시예 1의 전원투입시의 논리물리어드레스변환 테이블작성처리 개략 플로차트이다.
도 11은, 본 발명의 실시예 2의 1블록기입처리 개략 플로차트이다.
도 12는, 본 발명의 실시예 2의 도 7에 있어서의 용장영역데이터 작성처리부의 상세 플로차트이다.
도 13은, 본 발명의 실시예 4의 플래시메모리물리 블록내의 구성도 예이다.
도면의 일부 또는 전부는, 도시를 목적으로 한 개요적 표현에 의해 나타내고 있으며, 반드시 거기에 나타난 요소의 실제적인 상대적 크기나 위치를 충실히 묘사하고 있는 것으로 한정하지 않는 점에 대한 고려를 부탁하고 싶다.
상기 과제를 해결하기 위해서, 본 발명은 아래에 기술된 구성을 갖는다.
본 발명의 하나의 관점에 의한 비휘발성 메모리의 제어방법은, 복수의 블록을 갖고, 상기 블록은 복수의 페이지를 갖고, 상기 페이지는 데이터를 기입하는 데이터영역과 용장영역을 갖고, 상기 블록의 최초의 상기 페이지의 상기 용장영역은, 그 블록에 기입된 상기 데이터가 무효인지 아닌지 나타내고 또한 비휘발성 메모리가 소거된 상태에 있어서 상기 데이터가 무효가 아닌 것을 나타내는 블록데이터 무효화 플래그를 갖고, 상기 블록의 최후의 상기 페이지의 상기 용장영역은, 그 블록에 기입된 상기 데이터가 유효인지 아닌지 나타내고 또한 비휘발성 메모리가 소거된 상태에 있어서 상기 데이터가 유효인지 아닌지 나타내는 블록데이터 유효화 플래그를 갖는 비휘발성 메모리의 제어방법으로서, 상기 데이터영역에 데이터를 기입하는 데이터기입스텝과, 상기 데이터를 기입하는 상기 데이터영역을 갖는 상기 블록의 상기 블록데이터 유효화 플래그를, 상기 데이터가 유효인 것을 나타내도록 하는 유효화 스텝을 갖는다.
본 발명의 다른 관점에 의한 상기의 비휘발성 메모리의 제어방법은, 상기 유효화 스텝을 상기 데이터기입스텝과 동시 또는 연속하여 실행하는 방법과, 상기 데이터기입스텝 후 데이터정당성체크를 하여 상기 유효화 스텝을 실행하는 방법을, 하드웨어 또는 소프트웨어에 의해 선택하는 선택스텝을 더욱 갖는다.
본 발명의 별도의 관점에 의한 상기의 비휘발성 메모리의 제어방법은, 원래의 데이터를 새로운 데이터로 갱신할 경우에, 상기 새로운 데이터를 기입한 상기 블록에 대하여 행하는 유효화 스텝과, 상기 원래의 데이터가 기입된 상기 블록의 상기 블록데이터 유효화플래그를 상기 원래의 데이터가 무효인 것을 나타내도록 하는 무효화스텝을 동시에 실행한다.
본 발명의 또 다른 관점에 의한 상기의 비휘발성 메모리의 제어방법은, 상기 용장영역은 논리어드레스와, 상기 블록에 기입된 상기 데이터의 이력정보를 더욱 갖고, 동일한 상기 논리어드레스를 갖는 복수의 블록이 있는 경우에는, 상기 이력정보에 따라서 어떤 블록의 데이터가 현재 유효인지를 판단하는 판단스텝을 더욱 갖는다.
"이력정보"란, 데이터의 신구(新舊)를 명확히 하는 정보이다. 예를 들면, 카운터값이나 일시(日時)이다.
본 발명의 또 다른 관점에 의한 비휘발성 메모리는, 복수의 블록을 갖고, 상기 블록은 복수의 페이지를 갖고, 상기 페이지는 데이터를 기입하는 데이터영역과 용장영역을 갖고, 상기 블록의 최초의 상기 페이지의 상기 용장영역은, 그 블록에 기입된 상기 데이터가 무효인지 아닌지 나타내고 또한 비휘발성 메모리가 소거된 상태에 있어서 상기 데이터가 무효가 아닌 것을 나타내는 블록데이터 무효화 플래그를 갖고, 상기 블록의 최후의 상기 페이지의 상기 용장영역은, 그 블록에 기입된 상기 데이터가 유효인지 아닌지 나타내고 또한 비휘발성 메모리가 소거된 상태에 있어서 상기 데이터가 유효가 아닌 것을 나타내는 블록데이터 유효화 플래그를 갖고, 적어도 1개의 상기 블록의 블록데이터 유효화 플래그가, 상기 데이터가 유효인 것을 나타낸다.
본 발명의 또 다른 관점에 의한 상기의 비휘발성 메모리는, 상기 용장영역은 논리어드레스와, 상기 블록에 기입된 상기 데이터의 이력정보를 더욱 갖는다.
본 발명에 의해, 겹쳐쓰기 도중의 중단에 의한 동일 논리어드레스에 대한 물리 어드레스의 중복의 위험성을 크게 경감시켜, 신뢰성을 확보하면서 고속동작 가능한 기억장치의 제어를 실현할 수가 있다.
발명의 신규인 특징은 첨부의 청구의 범위에 특히 기재한 것 이외로는 되지 않지만, 구성 및 내용의 양쪽에 관해서 본 발명은, 다른 목적이나 특징과 함께, 도면과 함께 이해되는 바의 이하의 상세한 설명으로부터, 보다 잘 이해되어 평가될 것이다.
이하, 본 발명의 실시를 하기 위한 최선의 형태를 구체적으로 나타낸 실시예에 대해서, 도면과 함께 기재한다.
(실시예 1)
도 1, 6, 7, 9를 사용하여, 본 발명의 실시예 1의 기억장치를 설명한다.
도 1은, 본 발명의 실시예 1의 플래시메모리의 물리블록내의 구성도예이다. 도 1은, 1 물리블록의 용장영역에 쓰여져 있는 주된 데이터를 나타내고 있다. 최초의 페이지의 용장영역에, 기입이 끝난 플래그(101), 논리어드레스(102), 블록데이터 무효화 플래그인 플래그 1(103)의 3가지가 배치되어 있다. 최후의 페이지의 용장영역에, 블록데이터 유효화 플래그인 플래그 2(104)가 배치되어 있다. 종래 예(도 3)와의 차이는, 플래그 2(104)가 추가된 점이다.
기입이 끝난 플래그(101)는, 이 블록에 기입이 있었던 것을 나타내는 플래그이다. 기입이 끝난 플래그(101)는, 1일 때 그 블록이 미기입인 것을 나타내고, 0을 기입하였을 때 그 블록이 기입이 끝난 것을 나타낸다. 선두 페이지에 기입할 때에, 합쳐서 기입이 끝난 플래그(101)에 고정값 0을 기입하면 그 블록을 기입이 끝나게 할 수 있다. 1 블록데이터의 기입 중에 중단하는 것을 생각하면, 기입이 끝난 플래그(101)는 기입을 하는 최초의 페이지에 있는 것이 필요조건이다.
논리어드레스(102)는, 그 물리블록이 현재 할당되어 있는 논리어드레스를 나타낸다. 이것은 반드시 선두 페이지에 배치하는 필요는 없지만, 논리어드레스 (102)가 전술의 기입이 끝난 플래그(101)를 겸용하면, 선두 페이지에 배치하는 것이 필요하게 된다. 예를 들면 16비트로 논리어드레스를 표현하는 경우에서는, 논리어드레스(102)의 값이 소거상태의 0xffff일 때를 미기입으로 할당하여, 논리어드레스(102)의 값이 0xffff 이외의 값이면 기입되었다고 판단한다. 실제의 논리어드레스에서는 그 수치이외의 값을 취하도록 규칙을 정하면, 논리어드레스(102)가 기입이 끝난 플래그를 겸용하는 것이 가능하다.
플래그 1(103)는, 블록데이터 무효화 플래그이다. 플래그 1(103)는, 1 일 때 그 물리블록이 무효가 아닌 것을 나타내고, 0 을 기입하였을 때 그 물리블록이 무효인 것을 나타낸다. 신데이터를 기입할 때는 1 그대로로 하고, 그 데이터에 겹쳐쓰기가 발생한 경우(그 블록에 쓰여진 데이터가 오래된 데이터가 된 경우), 이 플래그만을 오버라이트에 의해 0 으로 함으로써 뒤로부터 무효화할 수 있다. 플래시메모리의 오버라이트는, 데이터를 소거하지 않고, 그대로 겹쳐쓰기를 하는 것이다.
플래그 2(104)는, 블록데이터 유효화 플래그이다. 플래그 2(104)는, 1 일 때 그 물리블록이 유효가 아닌 것을 나타내고, 0 을 기입하였을 때 그 물리블록이 유효인 것을 나타낸다. 최종 페이지에 기입할 때에, 합쳐서 플래그 2(104)에 0 을 기입하면 그 블록을 유효화 할 수 있다. 1 블록데이터의 기입 중에 중단하는 것을 생각하면, 플래그 2(104)는 기입을 하는 최종 의 페이지에 있는 것이 필요조건이다.
전술한 바와 같이, 기입이 끝난 플래그를 선두 페이지, 플래그 2를 최종 페이지에 할당할 필요가 있기 때문에, 논리어드레스, 및 플래그 1도, 그 어느 하나에 할당하는 쪽이 효율적이다. 즉, 초기의 논리물리어드레스변환 테이블작성에 있어서는, 주사하는 페이지가 적은 쪽이 읽어 내는 시간이 짧아지기 때문에 테이블작성시간을 단축할 수 있기 때문이다.
도 6, 7, 9를 사용하여, 본 발명의 실시예 1의 메모리 시스템의 기입 순서에 대해서 설명한다. 도 6은, 본 발명의 실시예 1의 1 블록기입처리의 개요 플로차트이다. 도 7은, 본 발명의 실시예 1의 도 6의 스텝(603)에 있어서의 신데이터 기입처리부의 상세 플로차트이다. 도 9는, 본 발명의 실시예 1의 도 7의 스텝(706)에 있어서의 용장영역데이터 작성처리부의 상세 플로차트이다.
도 6에 있어서, 스텝(601)에서 엔트리테이블로부터 소거된 블록을 검색한다. 스텝(602)에서 엔트리테이블을 갱신하여, 소거된 블록을 확보한다. 스텝(603)에서 확보한 블록에 데이터를 기입한다(상세한 것은 도 7, 9). 스텝(604)에서 구블록이 존재하는지 하지 않는지 논리물리어드레스 변환테이블로부터 판단한다. 존재하는 경우는, 스텝(605)으로 진행한다. 스텝(605)에서 구블록의 선두 페이지의 용장영역에 있는 플래그 1에 0(무효)을 오버라이트 하여, 구블록을 무효화한다. 존재하지 않는 경우는, 스텝 (605)을 생략하고 스텝(606)으로 진행한다. 스텝(606)에서 논리물리어드레스 변환테이블의 구블록의 물리어드레스를 신블록의 물리어드레스에 고쳐 쓰고, 이 플로차트를 종료한다.
또, 구데이터의 소거에 있어서는, 물리적으로 소거하는 방법과, 데이터가 무효인 것을 나타내는 플래그에 마킹함으로써 외견상 소거하여 다른 타이밍으로 물리소거를 하는 방법이 있다. 후자 쪽이 일반적으로 행하여지고 있고, 도 6의 플로차트도 이 방식으로 설명하였다. 이것은 플래시메모리가 물리적소거보다도 플래그의 오버라이트 쪽이 빠르기 때문이다. 또한 복수의 플래시메모리칩으로 구성된 비휘발성 메모리 기억장치에 있어서는, 다른 플래시 메모리칩의 기입을 하고 있는 사이에, 무효마킹된 블록을 동시에 물리소거하면, 그 기입과 소거를 동시에 행하고 있는 시간만큼, 전체적으로 기입속도가 고속으로 되기 때문이다.
도 7에 있어서, 스텝(701)에서 램(RAM) 상에 설치된 페이지 카운터를 초기값 (1)으로 설정한다. 스텝(702)에서 호스트로부터 부여된 데이터를 쓰는 페이지인지 아닌지 판단한다. 호스트로부터 부여된 데이터를 쓰는 페이지이면, 스텝(703)으로 진행하여 호스트에서 데이터를 1 페이지 입력한다. 호스트로부터 부여된 데이터를 쓰는 페이지가 아니면, 스텝(704)으로 진행하여 구블록으로부터 데이터를 1 페이지 읽어낸다. 스텝(705)에서 데이터영역에 데이터를 세트하여, 스텝(706)에서 용장영역에 데이터를 세트한다(상세한 것은 도 9). 스텝(707)으로 1 페이지 기입한다. 스텝(708)에서 페이지 카운터를 1 가산한다. 스텝(709)에서 페이지 카운터가 33 이상인지 아닌지 판단한다. 페이지 카운터가 33 미만인 때는 스텝(702)으로부터 스텝(709)을 반복한다. 페이지 카운터가 33이 되면 이 플로차트를 종료한다.
기입단위가 페이지이고, 소거단위가 블록이기 때문에, 블록에 만족하지 않는 데이터의 기입에 있어서는, 끌어넣기라고 불리는 처리가 발생한다. 요컨대 외부에서 기입데이터가 페이지단위로 받았을 때, 그 이외의 페이지에 관해서는, 종래 데이터를 그대로 유지할 필요가 있기 때문에, 변경하는 구블록으로부터 읽어 내어, 그 데이터를 합성하여 1 블록분의 기입을 하고 있다. 그것이 스텝(702)에서 스텝 (704)이다. 기입 시작페이지, 종료페이지에 의해, 전반 끌어넣기처리와 후반 끌어넣기처리가 있다.
도 9에 있어서, 스텝(901)에서 선두 페이지인지 아닌지 판단한다. 선두 페이지인 경우는 스텝(902)으로 진행하여 기입이 끝난 플래그(101)에 0(기입 됨)을 세트한다. 스텝(903)으로 논리어드레스(102)에 호스트로부터 부여된 논리어드레스를 세트한다. 스텝(904)에서 플래그 1(103)에 1(무효가 아님)을 세트하여, 이 플로차트를 종료한다. 스텝(901)에서 선두 페이지가 아닌 경우는, 스텝(905)으로 진행하여 최종 페이지인지 아닌지 판단한다. 최종 페이지인 경우는, 스텝(906)으로 진행하여 플래그 2(104)에 0(유효)을 세트하여, 이 플로차트를 종료한다. 최종 페이지가 아닌 경우는 이 플로차트를 종료한다.
또 본 설명에서는 전술의 플래그, 논리어드레스데이터만으로 설명하고 있지만, 실제의 시스템에 있어서는 데이터에러검출 정정부호 등, 그 외에도 데이터를 기입하는 것이 일반적으로 행하여지고 있다. 단지 이들의 데이터는 본 발명과 관계하지 않기 때문에 생략한다.
종래 예인 도 6으로부터 도 8과의 차이는, 도 9에서 나타낸 바와 같이 용장영역의 데이터작성에 있어서 플래그 2(104)에 0(유효)을 기입하는 처리가 추가된 점이다. 데이터작성시간은 약간 다르지만 플래시메모리에의 물리적인 기입에 요하는 시간은 동일하다.
다음에 플래그 1, 2를 사용한 블록데이터의 판정방법에 대해서 설명한다. 종래는 플래그 1뿐이지만, 플래그 1, 2의 조합에 의해 아래와 같이 판단을 할 수 있다.
그 블록이 기입되었다고 한 경우, 우선 플래그 1 = 1 (무효가 아님) 또한 플래그 2 = 0(유효)일 때만이 유효블록이라고 판단한다.
플래그 1 = 1(무효가 아님) 또한 플래그 2 = 1(유효가 아님)의 경우는, 기입 도중에서 중단하여, 최종 페이지까지 기입할 수 없었던 무효블록이라고 간주한다. 이 경우에, 상기의 순서로 말하면 구블록이 무효화를 하기 전이기 때문에, 전원 재투입한 경우에는 구블록이 선택되고, 신데이터의 기입 자체가 없던 것으로 된다.
플래그 1 = 0(무효) 또는 플래그 2 = 0 (유효)의 경우는, 겹쳐쓰기에 의해 무효화된 블록을 나타낸다.
플래그 1 = 0(무효) 또는 플래그 2 = 1(유효가 아님)의 경우는, 정상적인 순서에서는 있을 수 없는 무효블록이라고 간주한다.
이상과 같이, 기입시의 중단이 발생하더라도, 2개의 플래그에 의해 그 블록데이터의 유효, 무효를 판단할 수가 있다.
도 10을 사용하여, 본 발명의 실시예 1의 전원투입시의 테이블작성순서에 대해서 설명한다. 도 10은, 논리물리어드레스변환 테이블작성처리의 플로차트이다.
도 10에 있어서, 우선 처음에 테이블작성을 위해 테이블영역을 초기화한다. 스텝(1001)에서 논리물리어드레스 변환테이블을 초기화한다. 논리물리어드레스 변환테이블 상에서, 전체 논리블록을 미할당상태로 설정한다. 스텝(1002)에서 엔트리테이블을 초기화한다. 엔트리테이블상에서 전체 물리블록을 소거된 상태로 설정한다. 스텝(1003)에서 무효테이블을 초기화한다. 무효테이블 상에서 전체 물리블록을 무효로 설정한다. 무효테이블은, 기입된 데이터가 무효로서 미소거의 블록을 나타내는 램(RAM)상에 설치된 테이블이다.
스텝(1004)에서 램(RAM)상에 설치된 블록카운터를 초기화한다(블록카운터= 0). 스텝(1005)에서 기입이 끝난 플래그(101) = 1(미기입)인지 아닌지 판단한다. 기입이 끝난 플래그(101) = 1(미기입)인 경우는, 엔트리 테이블의 해당 비트를 소거되는 것으로 한다. 본 플로차트에서는 처음으로 엔트리 테이블을 모두 초기화(소거됨)로 하고 있기 때문에, 이 처리는 불필요하다. 스텝(1010)으로 진행하여 무효테이블의 해당 비트를 유효하게 한다. 해당 블록의 처리를 종료하여, 스텝 (1011)으로 진행한다. 스텝(1005)의 판단에 있어서 기입이 끝난 플래그를 논리어드레스데이터로 겸용하고 있는 경우도 같다. 또, 미기입의 경우는 최종 페이지를 읽어 낼 필요는 없다.
스텝(1005)에서 기입이 끝난 플래그 = 0(기입됨)의 경우는, 스텝(1006)으로 진행하여 엔트리 테이블의 해당 비트를 사용종료로 한다.
스텝(1007)에서 플래그 1 = 1(무효가 아님)인지 아닌지 판단한다. 플래그 1 = 0(무효)인 경우는, 해당 블록의 처리를 종료하여 스텝(1011)으로 진행한다. 플래그 1 = 1(무효가 아님)인 경우는, 스텝(1008)으로 진행하여 플래그 2 = 0(유효)인지 아닌지 판단한다. 플래그 2 = 1(유효가 아님)인 경우는, 해당 블록의 처리를 종료하여 스텝(1011)으로 진행한다. 플래그 2 = 0(유효)인 경우는, 그 블록을 유효라고 간주하고, 스텝(1009)으로 진행하여 논리물리어드레스변환테이블에 등록한다. 스텝(1010)에서 무효테이블의 해당 비트를 유효하게 한다. 스텝(1011)에서 블록카운터에 1을 가산한다. 스텝(1012)에서 최종 블록인지 아닌지 판단한다. 최종 블록이 아닌 경우는, 스텝(1005)으로 돌아가서 다음 블록의 처리를 한다. 최종 블록의 경우는, 이 플로차트를 종료한다.
이와 같이 도 10의 처리는, 물리어드레스에 따라서 순서대로 최종 블록까지 선두 페이지와 최종 페이지의 용장영역을 읽어 내어, 논리물리어드레스 변환테이블, 엔트리테이블 및 무효테이블을 작성하는 처리이고, 스텝(1008)의 판단이 종래의 처리에 추가된 만큼의 구조로 되어 있다.
또 실제의 제어에 있어서는, 본 플로차트와 같이, 기입되어 무효인 블록을 기억해 두는 테이블(무효테이블)을 준비하는 시스템이 일반적이다. 이것은 소거해야 할 블록의 리스트라고 해야할 것으로, 겹쳐쓰기한 경우에 물리적으로 소거하지 않고, 전술의 플래그 1에 의해 무효화 마킹하는 시스템에 있어서는, 다른 블록의 기입처리의 시간을 이용하여 병렬로 무효화된 블록의 소거처리를 할 필요가 있다. 이 경우에, 소거해야 할 블록을 검색하는 경우에 사용된다. 따라서, 초기시 뿐만이 아니라 겹쳐쓰기할 때에도, 구블록의 무효화에 합쳐서, 테이블상의 데이터도 갱신되어 있다.
이상과 같이, 종래의 기입순서, 논리물리어드레스 변환테이블 작성순서로부터 큰 변경, 추가를 하는 일없이, 겹쳐쓰기 도중의 중단에 의한 동일논리어드레스에 대한 물리어드레스의 중복의 위험성을 크게 저감시킬 수 있다.
(실시예 2)
도 7, 11, 12를 사용하여, 본 발명의 실시예 2의 메모리 시스템의 기입 순서에 대해서 설명한다. 도 11은, 본 발명의 실시예 2의 1 블록기입처리의 개요 플로차트이다. 실시예 1(도 6)과의 차이는, 데이터종류의 판정(스텝(1103)으로부터 스텝(1105))과 신블록의 유효화(스텝(1107)으로부터 스텝(1110))를 추가한 점이다. 도 12는, 본 발명의 실시예 2의 도 7의 스텝(706)에 있어서의 용장영역데이터 작성처리부의 상세 플로차트이다. 실시예 1(도 9)과의 차이는, 유효확인 플래그에 의해 플래그(2)를 설정하는 점(스텝(1206)으로부터 스텝(1207))이다.
도 11에 있어서, 스텝(1101)에서 엔트리 테이블로부터 소거된 블록을 검색한다. 스텝(1102)에서 엔트리테이블을 갱신하여, 소거된 블록을 확보한다. 스텝(11 03)에서 기입을 한 후에 정당성의 확인이 필요한가 않은가 데이터의 종류를 판단한다. 필요한 경우는, 스텝(1104)으로 진행하여 램(RAM)상에 설치한 유효확인 플래그를 1 로 설정한다. 불필요한 경우는, 스텝(1105)으로 진행하여 유효확인 플래그를 0 으로 설정한다. 유효확인 플래그는, 프로그램 실행상 가령 설정한 플래그로서 해당 플래그는 플래시메모리상에 기입하는 것은 아니다. 스텝(1106)에서 확보한 블록에 데이터를 기입한다(상세한 것은 도 7, 12).
스텝(1107)에서 유효확인 플래그가 1(필요)인지 아닌지 판단한다. 유효확인 플래그 = 1(필요)인 경우, 스텝(1108)으로 진행하여 호스트에서 받아들인 데이터의 정당성체크를 한다. 예를 들면, 데이터의 정정부호, 취할 수 있는 값인지 아닌지를 체크한다. 스텝(1109)에서 그 데이터의 정당성 체크에 따라서 분기한다. 데이터가 유효인 경우는, 스텝(1110)으로 진행하여 신블록의 최종 페이지의 플래그 2에 0(유효)을 오버라이트 하여, 신블록을 유효화한다. 스텝(1107)에서 유효확인 플래그 = 0(불필요)인 경우, 스텝(1106)에서 데이터기입시에 신 블록이 유효화를 하고 있기 때문에(후술하는 도 12의 설명참조), 스텝(1111)으로 진행한다. 스텝(1111)으로부터 스텝(1113)은 도 6의 스텝(604)으로부터 스텝(606)과 같으므로 설명을 생략한다. 스텝(1109)에서 데이터가 유효가 아닌 경우는, 이 플로차트를 종료한다.
스텝(1106)(도 11)에 있어서, 도 7에 나타내는 처리를 한다. 도 7에 있어서는 실시예 1과 같으므로 설명을 생략한다.
실시예 2의 스텝(706)(도 7)에 있어서, 도 12에 나타내는 처리를 한다. 도 12에 있어서, 스텝(1201)에서 스텝(1205)은 실시예 1(도 9)의 스텝(901)으로부터 스텝(905)과 같으므로 설명을 생략한다. 스텝(1205)에서 최종 페이지인 경우는, 스텝(1206)으로 진행하여 유효확인 플래그가 1(필요)인지 아닌지 판단한다. 유효확인 플래그 = 1(필요)인 경우는, 스텝(1207)으로 진행하여 플래그(2)에 1(유효가 아님)을 세트하여, 이 플로차트를 종료한다. 유효확인 플래그 = 0(불필요)인 경우는, 스텝(1208)으로 진행하여 플래그(2)에 0(유효)을 세트하여, 이 플로차트를 종료한다.
실시예 2는, 실시예 1과 비교하면 데이터의 판별처리, 확인처리, 플래그(2)의 오버라이트만큼 기입처리가 대부분 발생한다. 이에 따라, 실시예 2는 기입처리전체로부터 보면 속도가 저하한다. 속도를 우선할지 확실성을 우선할지 데이터의 종류에 의해 선택이 필요하다.
이상과 같이, 정당성을 판단한 후에 유효화해야 하는 데이터도, 실시예 1의 방법을 응용함으로써, 간단한 조작으로 대응하는 것이 가능하다.
(실시예 3)
본 발명의 실시예 3의 기억장치를 설명한다. 실시예 3은 신데이터를 기입한 블록이 유효화와 구데이터에 저장되어 있는 블록의 무효화에 관한 것이다.
본 발명의 실시예 2에 있어서, 도 11의 스텝(1110)에서 신블록이 유효화를 하여, 스텝(1112)에서 구블록이 무효화를 하고 있다. 이 때, 엄밀히 말하면 양 블록 모두 효율적으로 되는 시간이 일순 존재한다. 만일 스텝(1110)을 실행을 끝내고, 스텝(1112)을 실행하는 직전에서 기입이 중단한 경우, 신구블록 모두 효율적으로 되어 버리기 때문에, 신구블록을 동시에 기입을 하는 시스템제어방법을 제안한다.
요컨대, 비휘발성 메모리 기억장치는 복수의 플래시 메모리칩으로 구성되어 있는 경우가 많지만, 동일 논리어드레스에 있어서의 겹쳐쓰기에 있어서, 신블록을 구블록과 다른 칩을 선택하는 규칙을 설치하여, 신블록이 유효화와 동시에 구블록이 무효화를 실시한다. 복수 플래시 메모리칩 구성으로, 또한 복수 플래시 메모리칩으로의 처리를 동시에 할 수 있는 것이 전제이지만, 최근의 고속, 대용량화처리에 따라, 병렬처리는 일반적인 구조로 되어 있다.
이 처리에 의해 동일논리어드레스에 신구 블록이 할당되는 위험성을 더욱 줄일 수 있다.
(실시예 4)
본 발명의 실시예 4의 기억장치를 설명한다. 본 발명의 실시예 1에서 3은, 동일논리어드레스에 물리어드레스가 중복하는 위험성을 간단한 구조로 크게 줄이는 것을 목적으로 하고 있었지만, 실시예 4는 그럼에도 불구하고 중복한 경우의 보호처리에 관한 것이다.
도 13을 사용하여, 본 발명의 실시예 4의 기억장치를 설명한다.
도 13은, 본 발명의 실시예 4의 플래시메모리의 물리블록내의 구성도예이다. 1물리블록의 용장영역에 쓰여져 있는 주된 데이터를 나타내고 있다. 최초의 페이지의 용장영역에, 기입이 끝난 플래그(101), 논리어드레스(102), 블록데이터 무효화 플래그인 플래그 1(103)의 3가지가 배치되어 있다. 최후의 페이지의 용장영역에, 블록데이터 유효화 플래그인 플래그 2(104), 신구판정용의 카운터(105)가 배치되어 있다. 종래 예인 도 3과의 차이는, 플래그 2(104), 카운터(105)가 추가된 점이다. 본 설명은 8비트카운터로서 설명한다.
우선 신 블록을 기입할 때, 구블록의 용장영역에서 카운터값을 읽어 낸다. 그리고 신데이터에 기입을 할 때, 그 카운터값에 1 을 가산한 값을 기입한다. 예를 들면, 구블록의 카운터값이 4일 때, 신 블록의 카운터값은 5가 된다. 따라서, 만약 중복한 신구블록이, 양쪽 모두 플래그(101, 103, 104)가 유효상태이고 또한 데이터의 정당성을 확인할 수 있으면, 이 카운터값에 의해 신구가 명확하게 되어, 데이터의 용도에 따라서 어느 쪽인가의 블록을 선택하는 판정재료로 할 수 있다. 일반적으로는 새로운 데이터가 기입완료되어 있으면, 구데이터를 소거하기 직전에 기입이 중단된 것으로 판단하여 새로운 데이터를 선택한다.
또, 당연히 카운터가 오버플로우일 때의 대응처리는 하는 것으로 한다. 전술의 예로 말하면, 카운터값이 큰 쪽의 블록을 유효로 하지만, 카운터값이 0xff라는 값과 0x00이라는 값일 때에는, 0x00의 블록을 선택한다.
또한, 이 카운터값은 새로운 블록의 카운터값이 1 을 가산한 값을 기입하도록 설명하고 있지만, 이것은 일례로서 1 을 감산하더라도 좋다. 또한, 카운터값 대신에 일시(日時)를 기입하더라도 좋고, 신구가 명확하게 되면 어떤 수치의 할당에서도 응용 가능하다.
이상 설명한 바와 같이, 실시예 1에서 3의 발명에 의해, 동일 논리어드레스에 할당되는 물리블록이 중복하는 위험성을 대폭 줄일 수 있지만, 그럼에도 불구하고 중복한 경우, 실시예 4의 보호처리로 대응할 수 있다. 초기의 테이블 작성처리를 하드웨어로 실현하여, 어드레스중복을 검출한 경우는 소프트웨어가 처리를 한다. 이러한 분담을 하면, 신뢰성을 확보하면서 고속동작 가능한 실현성이 있는 시스템을 구축 가능하다.
또한 본 발명은 전술의 실시예에 한정되지 않는다. 발명의 주지(主旨)를 일탈하지 않은 범위에서 변경이 가능하다.
상기 실시예에서는, 플래그를 1 비트에서 1 또는 0 으로 나타내었지만, 극성은 플래시의 소거레벨에 의해 변경 가능하고, 복수비트를 사용하여, 다수결처리를 하여 판정한다는 수단도 가능하다.
또한 데이터의 기입단위를 블록으로 하여 설명하고 있지만, 복수블록을 1 개의 기입단위로서 취급하는 경우도 응용 가능하다. 또한 플래시로의 기입을 1 페이지마다 행하고 있는 예로 기술하였지만, 플래시메모리에 의해서는 복수페이지 동시기입이 가능하고, 복수 플래시 메모리칩으로의 동시기입도 있을 수 있기 때문에, 그 멀티페이지 기입 방식에 있어서도, 최초에 기입하는 페이지 중 어느 한 쪽으로 최후에 기입하는 페이지 중 어느 하나로 바꾸는 것이 가능하다.
또한, 데이터에 관한 유효화 플래그, 무효화 플래그라는 설명을 하고 있지만, 데이터에만 한정하지 않는다. 용장영역에 있는 원래의 사용자데이터와는 다른 시스템이 사용하는 다른 데이터에 관해서도, 겹쳐쓰기를 함으로써 신데이터의 유효화와 구데이터의 무효화를 할 필요가 있는 것에는 응용 가능하다.
본 발명에 의하면, 종래의 기입순서, 논리물리어드레스 변환테이블 작성순서부터 큰 변경, 추가를 하지 않고, 겹쳐쓰기 도중의 중단에 의한 동일 논리어드레스에 대한 물리어드레스의 중복의 위험성을 크게 저감시켜, 신뢰성을 확보하면서 고속동작 가능한 시스템을 구축할 수 있다.
발명을 어느 정도의 상세함을 갖고 바람직한 형태에 대해서 설명하였지만, 이 바람직한 형태의 현 개시내용은 구성의 세부에 있어서 당연히 변화해야 하는 것으로, 각 요소의 편성이나 순서의 변화는 청구된 발명의 범위 및 사상을 일탈하지 않고 실현할 수 있는 것이다.
이상과 같이, 본 발명에 의한 비휘발성 메모리의 제어방법은, 데이터의 읽기 및 쓰기를 하는 비휘발성 메모리의 제어방법으로서 유용하다.

Claims (6)

  1. 복수의 블록을 갖고,
    상기 블록은 복수의 페이지를 갖고,
    상기 페이지는 데이터를 기입하는 데이터영역과 용장영역을 갖고,
    상기 블록의 최초의 상기 페이지의 상기 용장영역은, 그 블록에 기입된 상기 데이터가 무효인지 아닌지 나타내고 또한 비휘발성 메모리가 소거된 상태에 있어서 상기 데이터가 무효가 아닌 것을 나타내는 블록데이터 무효화 플래그를 갖고,
    상기 블록의 최후의 상기 페이지의 상기 용장영역은, 그 블록에 기입된 상기 데이터가 유효인지 아닌지 나타내고 또한 비휘발성 메모리가 소거된 상태에 있어서 상기 데이터가 유효가 아닌 것을 나타내는 블록데이터 유효화 플래그를 갖는 비휘발성 메모리의 제어방법으로서,
    상기 데이터영역에 데이터를 기입하는 데이터기입스텝과,
    상기 데이터를 기입한 상기 데이터영역을 갖는 상기 블록의 상기 블록데이터 유효화 플래그를, 상기 데이터가 유효인 것을 나타내도록 하는 유효화 스텝을 갖는 것을 특징으로 하는 비휘발성 메모리의 제어방법.
  2. 제 1 항에 있어서, 상기 유효화 스텝을 상기 데이터기입스텝과 동시 또는 연속하여 실행하는 방법과, 상기 데이터기입스텝 후 데이터정당성 체크를 하여 상기 유효화 스텝을 실행하는 방법을, 하드웨어 또는 소프트웨어에 의해 선택하는 선택스텝을 더욱 갖는 것을 특징으로 하는 비휘발성 메모리의 제어방법.
  3. 제 1 항에 있어서, 원래의 데이터를 새로운 데이터로 갱신하는 경우에, 상기 새로운 데이터를 기입한 상기 블록에 관해서 행하는 유효화 스텝과, 상기 원래의 데이터가 기입된 상기 블록의 상기 블록데이터 무효화 플래그를 상기 원래의 데이터가 무효인 것을 나타내도록 하는 무효화 스텝을 동시에 실행하는 것을 특징으로 하는 비휘발성 메모리의 제어방법.
  4. 제 1 항에 있어서, 상기 용장영역은 논리어드레스와, 상기 블록에 기입된 상기 데이터의 신구를 명확히 하는 이력정보를 더욱 갖고, 동일한 상기 논리어드레스를 갖는 복수의 블록이 있는 경우에는, 상기 이력정보에 따라서 어떤 블록의 데이터가 현재 유효인지를 판단하는 판단스텝을 더욱 갖는 것을 특징으로 하는 비휘발성 메모리의 제어방법.
  5. 복수의 블록을 갖고,
    상기 블록은 복수의 페이지를 갖고,
    상기 페이지는 데이터를 기입한 데이터영역과 용장영역을 갖고,
    상기 블록의 최초의 상기 페이지의 상기 용장영역은, 그 블록에 기입된 상기 데이터가 무효인지 아닌지 나타내고 또한 비휘발성 메모리가 소거된 상태에 있어서 상기 데이터가 무효가 아닌 것을 나타내는 블록데이터 무효화 플래그를 갖고,
    상기 블록의 최후의 상기 페이지의 상기 용장영역은, 그 블록에 기입된 상기 데이터가 유효인지 아닌지 나타내고 또한 비휘발성 메모리가 소거된 상태에 있어서 상기 데이터가 유효가 아닌 것을 나타내는 블록데이터 유효화 플래그를 갖고,
    적어도 1개의 상기 블록의 블록데이터 유효화 플래그가, 상기 데이터가 유효인 것을 나타낸 것을 특징으로 하는 비휘발성 메모리.
  6. 제 5 항에 있어서, 상기 용장영역은 논리 어드레스와, 상기 블록에 기입된 상기 데이터의 신구를 명확히 하는 이력정보를 더욱 갖는 것을 특징으로 하는 비휘발성 메모리.
KR10-2003-7002895A 2001-06-28 2002-06-24 비휘발성 메모리의 제어방법 KR100531192B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JPJP-P-2001-00197388 2001-06-28
JP2001197388A JP3692313B2 (ja) 2001-06-28 2001-06-28 不揮発性メモリの制御方法
PCT/JP2002/006313 WO2003003219A1 (en) 2001-06-28 2002-06-24 Non-volatile memory control method

Publications (2)

Publication Number Publication Date
KR20040014971A KR20040014971A (ko) 2004-02-18
KR100531192B1 true KR100531192B1 (ko) 2005-11-28

Family

ID=19035002

Family Applications (1)

Application Number Title Priority Date Filing Date
KR10-2003-7002895A KR100531192B1 (ko) 2001-06-28 2002-06-24 비휘발성 메모리의 제어방법

Country Status (8)

Country Link
US (1) US6879528B2 (ko)
EP (1) EP1403771A4 (ko)
JP (1) JP3692313B2 (ko)
KR (1) KR100531192B1 (ko)
CN (1) CN1232912C (ko)
CA (1) CA2420986C (ko)
TW (1) TWI242711B (ko)
WO (1) WO2003003219A1 (ko)

Families Citing this family (71)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6922350B2 (en) * 2002-09-27 2005-07-26 Intel Corporation Reducing the effect of write disturbs in polymer memories
DE60319718D1 (de) * 2002-10-02 2008-04-24 Matsushita Electric Ind Co Ltd Steuerverfahren für eine nichtflüchtige speichereinrichtung
US8463998B1 (en) 2002-12-13 2013-06-11 Open Text S.A. System and method for managing page variations in a page delivery cache
US8312222B1 (en) * 2002-12-13 2012-11-13 Open Text, S.A. Event-driven regeneration of pages for web-based applications
US6845061B2 (en) * 2003-02-05 2005-01-18 Megawin Technology Co., Ltd. Method for quickly detecting the state of a nonvolatile storage medium
JP3928724B2 (ja) * 2003-02-20 2007-06-13 ソニー株式会社 記録媒体の記録制御方法および記録媒体の記録制御装置
JP2006519444A (ja) 2003-03-04 2006-08-24 深▲せん▼市朗科科技有限公司 フラッシュメモリーのデータ管理方法
US7003621B2 (en) * 2003-03-25 2006-02-21 M-System Flash Disk Pioneers Ltd. Methods of sanitizing a flash-based data storage device
TWI220193B (en) * 2003-05-28 2004-08-11 Genesys Logic Inc Dynamic adjustment method of redundant block in non-volatile memory and related device thereof
DE10340010B4 (de) * 2003-08-29 2005-07-28 Infineon Technologies Ag Verfahren und Vorrichtung zum sicheren Speichern von Daten
JP2005108273A (ja) 2003-09-26 2005-04-21 Toshiba Corp 不揮発性半導体記憶装置
JP2005107608A (ja) * 2003-09-29 2005-04-21 Nec Electronics Corp 電子機器、不揮発性メモリ及び不揮発性メモリのデータ書き換え方法
JP2005190288A (ja) * 2003-12-26 2005-07-14 Tdk Corp メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びに、フラッシュメモリの制御方法
US7299314B2 (en) * 2003-12-31 2007-11-20 Sandisk Corporation Flash storage system with write/erase abort detection mechanism
KR100704618B1 (ko) 2004-01-19 2007-04-10 삼성전자주식회사 플래시 메모리의 데이터 복구 장치 및 방법
DE102004005290B3 (de) * 2004-02-03 2005-07-21 Giesecke & Devrient Gmbh Verfahren und Vorrichtung zur Absicherung von Daten in einem nichtflüchtigen Datenspeicher
JP3924568B2 (ja) 2004-02-20 2007-06-06 Necエレクトロニクス株式会社 フラッシュメモリにおけるデータアクセス制御方法、データアクセス制御プログラム
WO2005083573A1 (ja) * 2004-02-27 2005-09-09 Matsushita Electric Industrial Co., Ltd. 半導体メモリ装置
US7849382B2 (en) * 2004-05-19 2010-12-07 Panasonic Corporation Memory control circuit, nonvolatile storage apparatus, and memory control method
US7480749B1 (en) * 2004-05-27 2009-01-20 Nvidia Corporation Main memory as extended disk buffer memory
KR100632946B1 (ko) 2004-07-13 2006-10-12 삼성전자주식회사 불 휘발성 메모리 장치 및 그것의 프로그램 방법
JP4660316B2 (ja) * 2004-09-03 2011-03-30 パナソニック株式会社 不揮発性メモリ装置
KR100645044B1 (ko) * 2004-09-17 2006-11-10 삼성전자주식회사 높은 신뢰도를 갖는 불 휘발성 메모리 장치의 프로그램 방법
JP2006107326A (ja) * 2004-10-08 2006-04-20 Oki Electric Ind Co Ltd 半導体集積回路
KR100631765B1 (ko) 2004-10-18 2006-10-09 삼성전자주식회사 플래시 메모리의 데이터 처리 장치 및 방법
CN100345123C (zh) * 2004-11-27 2007-10-24 鸿富锦精密工业(深圳)有限公司 延长非易失性存储器使用寿命的装置及方法
US7366826B2 (en) * 2004-12-16 2008-04-29 Sandisk Corporation Non-volatile memory and method with multi-stream update tracking
JP4667092B2 (ja) * 2005-03-17 2011-04-06 富士通株式会社 情報処理装置、情報処理装置におけるデータ制御方法
US8244958B2 (en) * 2005-05-09 2012-08-14 Sandisk Il Ltd. Method and system for facilitating fast wake-up of a flash memory system
US7797479B2 (en) * 2005-06-30 2010-09-14 Intel Corporation Technique to write to a non-volatile memory
US9092361B2 (en) 2005-07-15 2015-07-28 Panasonic Intellectual Property Management Co., Ltd. Nonvolatile storage device, memory controller, and defective region detection method
US20070083697A1 (en) * 2005-10-07 2007-04-12 Microsoft Corporation Flash memory management
JP4692231B2 (ja) * 2005-11-04 2011-06-01 株式会社デンソー 車両用の電子制御装置
WO2007066720A1 (ja) * 2005-12-09 2007-06-14 Matsushita Electric Industrial Co., Ltd. 不揮発性記憶装置並びにデータ書込み方法及びデータ読み出し方法
KR100703806B1 (ko) * 2006-02-16 2007-04-09 삼성전자주식회사 비휘발성 메모리, 이를 위한 데이터 유효성을 판단하는장치 및 방법
CN101288056A (zh) 2006-03-13 2008-10-15 松下电器产业株式会社 闪速存储器用的存储控制器
JP4501881B2 (ja) * 2006-03-23 2010-07-14 Tdk株式会社 メモリコントローラ及びフラッシュメモリシステム
JP4984666B2 (ja) * 2006-06-12 2012-07-25 ソニー株式会社 不揮発性メモリ
US7711923B2 (en) * 2006-06-23 2010-05-04 Microsoft Corporation Persistent flash memory mapping table
US8307148B2 (en) * 2006-06-23 2012-11-06 Microsoft Corporation Flash management techniques
KR100736103B1 (ko) 2006-06-27 2007-07-06 삼성전자주식회사 비휘발성 메모리, 상기 비휘발성 메모리의 데이터 유효성을판단하는 장치 및 방법
US20090265403A1 (en) * 2006-08-31 2009-10-22 Keiji Fukumoto File system
KR100827695B1 (ko) 2006-11-03 2008-05-07 삼성전자주식회사 연약 셀을 표식자로서 활용하는 불휘발성 반도체 메모리장치
US8151060B2 (en) 2006-11-28 2012-04-03 Hitachi, Ltd. Semiconductor memory system having a snapshot function
US7934050B2 (en) * 2006-12-07 2011-04-26 Denso Corporation Microcomputer for flash memory rewriting
JP4743182B2 (ja) * 2006-12-07 2011-08-10 株式会社デンソー マイクロコンピュータ
JP4301301B2 (ja) 2007-02-05 2009-07-22 ソニー株式会社 不揮発性半導体記憶装置およびその管理方法
US20100180072A1 (en) * 2007-06-22 2010-07-15 Shigekazu Kogita Memory controller, nonvolatile memory device, file system, nonvolatile memory system, data writing method and data writing program
US8572307B2 (en) * 2007-07-20 2013-10-29 Panasonic Corporation Memory controller, memory card, and nonvolatile memory system
JP4497184B2 (ja) * 2007-09-13 2010-07-07 ソニー株式会社 集積装置およびそのレイアウト方法、並びにプログラム
JP2009080884A (ja) * 2007-09-26 2009-04-16 Panasonic Corp 不揮発性半導体記憶装置
JP5142685B2 (ja) * 2007-11-29 2013-02-13 株式会社東芝 メモリシステム
KR100963775B1 (ko) * 2008-08-01 2010-06-14 한양대학교 산학협력단 비휘발성 메모리의 데이터 보호 장치 및 방법
JP5267052B2 (ja) * 2008-10-30 2013-08-21 富士通株式会社 不揮発性メモリ・ドライバ
TWI396202B (zh) * 2008-11-14 2013-05-11 Phison Electronics Corp 錯誤校正控制器及其快閃記憶體晶片系統與錯誤校正方法
JP5317690B2 (ja) * 2008-12-27 2013-10-16 株式会社東芝 メモリシステム
US9612954B2 (en) 2008-12-31 2017-04-04 Micron Technology, Inc. Recovery for non-volatile memory after power loss
TWI469148B (zh) * 2009-05-15 2015-01-11 Chi Mei Comm Systems Inc 快閃記憶體資料擦除系統及方法
KR101097245B1 (ko) * 2009-09-28 2011-12-21 삼성에스디아이 주식회사 배터리 팩, 및 데이터 플래시 동작 제어 방법
JP5360216B2 (ja) 2009-12-22 2013-12-04 トヨタ自動車株式会社 情報管理装置、及び情報管理方法
CN102841819A (zh) * 2011-06-20 2012-12-26 富泰华工业(深圳)有限公司 电子装置及其防止数据丢失的方法
JP5435107B2 (ja) * 2012-11-22 2014-03-05 富士通株式会社 不揮発性メモリ・ドライバ
US9047172B2 (en) 2012-11-29 2015-06-02 Intel Corporation Adaptive power control of memory map storage devices
CN104252883B (zh) * 2013-06-26 2017-06-13 深圳市江波龙电子有限公司 闪存管理方法和***
CN103559138B (zh) * 2013-10-09 2016-03-30 华为技术有限公司 固态硬盘及其空间管理方法
US20150169438A1 (en) * 2013-12-18 2015-06-18 Infineon Technologies Ag Method and device for incrementing an erase counter
JP2016012335A (ja) * 2014-06-05 2016-01-21 株式会社Genusion 記憶装置及び記憶装置システム並びに情報端末
KR20160024530A (ko) * 2014-08-26 2016-03-07 에스케이하이닉스 주식회사 반도체 장치 및 이의 동작 방법
CN106782660A (zh) * 2016-11-28 2017-05-31 湖南国科微电子股份有限公司 片上***芯片过烧写保护方法及片上***芯片
CN109920462B (zh) * 2019-03-01 2021-01-22 中国科学院微电子研究所 一种数据写入控制电路和控制方法
KR20220020143A (ko) * 2020-08-11 2022-02-18 삼성전자주식회사 오버라이트 처리를 수행하는 스토리지 시스템, 스토리지 시스템을 제어하는 호스트 시스템 및 스토리지 시스템의 동작 방법

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2582487B2 (ja) * 1991-07-12 1997-02-19 インターナショナル・ビジネス・マシーンズ・コーポレイション 半導体メモリを用いた外部記憶システム及びその制御方法
JP3171901B2 (ja) * 1992-02-05 2001-06-04 セイコーインスツルメンツ株式会社 不揮発性メモリカードの書換え方法
JPH05233426A (ja) * 1992-02-20 1993-09-10 Fujitsu Ltd フラッシュ・メモリ使用方法
JP2856621B2 (ja) * 1993-02-24 1999-02-10 インターナショナル・ビジネス・マシーンズ・コーポレイション 一括消去型不揮発性メモリおよびそれを用いる半導体ディスク装置
KR970008188B1 (ko) * 1993-04-08 1997-05-21 가부시끼가이샤 히다찌세이사꾸쇼 플래시메모리의 제어방법 및 그것을 사용한 정보처리장치
JP3411186B2 (ja) * 1997-06-06 2003-05-26 シャープ株式会社 不揮発性半導体記憶装置
JPH11282765A (ja) 1998-03-27 1999-10-15 Hitachi Ltd フラッシュメモリを使用した外部記憶装置
JP2000330850A (ja) 1999-05-19 2000-11-30 Casio Comput Co Ltd フラッシュメモリ制御方法

Also Published As

Publication number Publication date
WO2003003219A1 (en) 2003-01-09
US20030189860A1 (en) 2003-10-09
US6879528B2 (en) 2005-04-12
JP3692313B2 (ja) 2005-09-07
CA2420986A1 (en) 2003-02-27
CA2420986C (en) 2006-09-12
TWI242711B (en) 2005-11-01
EP1403771A1 (en) 2004-03-31
EP1403771A4 (en) 2008-02-27
CN1232912C (zh) 2005-12-21
JP2003015929A (ja) 2003-01-17
CN1465012A (zh) 2003-12-31
KR20040014971A (ko) 2004-02-18

Similar Documents

Publication Publication Date Title
KR100531192B1 (ko) 비휘발성 메모리의 제어방법
US7295479B2 (en) Apparatus and method for managing bad blocks in a flash memory
US7472331B2 (en) Memory systems including defective block management and related methods
CN110908925B (zh) 高效能垃圾收集方法以及数据存储装置及其控制器
KR101165429B1 (ko) 반도체 기억장치 및 그 액세스 방법 및 메모리 제어 시스템
JP4956068B2 (ja) 半導体記憶装置およびその制御方法
US20100082878A1 (en) Memory controller, nonvolatile storage device, nonvolatile storage system, and data writing method
WO1999044113A9 (en) Increasing the memory performance of flash memory devices by writing sectors simultaneously to multiple flash memory devices
EP3057100B1 (en) Memory device and operating method of same
JPH07153284A (ja) 不揮発性半導体記憶装置及びその制御方法
JP2008117299A (ja) 記憶媒体制御装置
KR100654344B1 (ko) 플래시 메모리를 이용한 기억장치 및 그 에러 복구 방법
KR100654343B1 (ko) 플래시 메모리를 이용한 기억장치 및 그 에러 복구 방법
JP4972410B2 (ja) フラッシュメモリ内でのアクセスを制御するための方法、およびこのような方法の実施のためのシステム
US8312205B2 (en) Method for identifying a page of a block of flash memory, and associated memory device
JP4580724B2 (ja) 不揮発性メモリの制御方法
JP4254930B2 (ja) メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法
US8200937B2 (en) Method of managing flash memory allocation in an electronic token
JP2009211152A (ja) 情報処理装置、メモリシステムおよびその制御方法
JP4332108B2 (ja) メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法
JP2008117003A (ja) 不揮発性半導体記憶装置およびその制御方法
CN113312273A (zh) 一种基于nand flash的序列号和mac地址储存方法
US20080005449A1 (en) Generalized flash memory and method thereof
US20080059691A1 (en) Memory management module
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

Payment date: 20121102

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20131101

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20141104

Year of fee payment: 10

FPAY Annual fee payment

Payment date: 20151016

Year of fee payment: 11

FPAY Annual fee payment

Payment date: 20161020

Year of fee payment: 12

FPAY Annual fee payment

Payment date: 20180328

Year of fee payment: 17