KR100377301B1 - 비휘발성 메모리에 데이터를 저장하는 방법 - Google Patents

비휘발성 메모리에 데이터를 저장하는 방법 Download PDF

Info

Publication number
KR100377301B1
KR100377301B1 KR10-2000-0009012A KR20000009012A KR100377301B1 KR 100377301 B1 KR100377301 B1 KR 100377301B1 KR 20000009012 A KR20000009012 A KR 20000009012A KR 100377301 B1 KR100377301 B1 KR 100377301B1
Authority
KR
South Korea
Prior art keywords
segment
value
data
ram
memory
Prior art date
Application number
KR10-2000-0009012A
Other languages
English (en)
Other versions
KR20000062616A (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 KR20000062616A publication Critical patent/KR20000062616A/ko
Application granted granted Critical
Publication of KR100377301B1 publication Critical patent/KR100377301B1/ko

Links

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/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
    • G11C16/105Circuits or methods for updating contents of nonvolatile memory, especially with 'security' features to ensure reliable replacement, i.e. preventing that old data is lost before new data is reliably written
    • 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/1433Saving, restoring, recovering or retrying at system level during software upgrading
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Memory System (AREA)

Abstract

비휘발성 재기록불능 메모리(106, 108, 110)가 가변 데이터 저장에 사용된다. 실시예에서는, 세그먼트형 플래시메모리를 사용하는데, 개별 세그먼트가 소거될 수 있다. 적어도 두 세그먼트가 사용된다. 세그먼트가 거의 풀이거나(222) 혹은 세그먼트가 파손될 때(224), 최근 값이 새로운 세그먼트에 기록된다(226). 초기화 동안, 관심의 대상인 모든 변수를 디폴트 값으로써 RAM에 기록한다(204). 사용되는 플래시 세그먼트는 가장 오래된 엔트리로부터 최신 엔트리로 순차적으로 판독되고, 플래시메모리로부터의 값은 RAM에 값(값에 대한 포인터)을 중복기록하는데 사용된다(216). 그후, RAM은 모든 변수에 대해 가장 최근의 값을 포함한다(혹은 가리킨다). 새로운 세그먼트를 기록할 때, 새로운 세그먼트는 RAM으로부터의 값을 이용하여 기록된다(236). 본 발명의 방법은 각 저장된 정보 아이템에 대한 최근(현재) 값의 식별을 제공하고, 새 유형의 데이터를 추가시키고 구 유형의 데이터를 소거하고, 메모리 세그먼트가 풀일 때 동작을 제공하고, 전원 장애로부터 복구를 제공한다.

Description

비휘발성 메모리에 데이터를 저장하는 방법{USE OF ERASABLE NON-VOLATILE MEMORY FOR STORAGE OF CHANGING INFORMATION}
본 발명은 컴퓨터 프로세서 기반의 시스템에 관한 것으로, 특히 변경 정보(changing information)의 비휘발성 저장소에 관한 것이다.
컴퓨터 시스템은 통상적으로 데이터를 랜덤 액세스 메모리(RAM)에 저장한다. RAM에서 메모리 위치(memory locations)는 신속히 중복기록될 수 있다. RAM은 전형적으로 휘발성으로, 이는 전원이 오프되면 모든 정보를 잃게 된다는 것을 의미한다. 예전에는, 컴퓨터 프로세서 기반의 시스템을 위한 불변경 소프트웨어(이른바, 펌웨어)를 종종 비휘발성인 소거불능의 판독전용 메모리(ROM)에 저장하였다. 소프트웨어를 변경할 필요가 있다면, ROM을 교체시켰다. 최근에는, 각종 프로그램가능 혹은 소거가능한 비휘발성 메모리 기술이 개발되어 왔다. 전형적으로, 펌웨어 갱신을 위해 소거가능한 비휘발성 메모리 장치를 제거할 필요가 없다. 예를 들면, 플래시메모리(flash memory)로 지칭되는 프로그램 가능 판독전용 메모리(PROM), 및 전기적으로 소거가능한 프로그램가능 판독전용 메모리(EEPROM)가 있다. 플래시메모리칩은 전기적으로 소거가능하며, 각 소거된 메모리 위치는 한 번 기록될 수 있다. 메모리 위치의 내용을 변경하기 위해서는 전체 칩(또는 소정 버전에서는 칩의 큰 세그먼트 또는 블록)을 소거하고 내용을 재기록해야만 한다.
일부 정보는 시간에 따라 변하므로, 비휘발성 메모리에 저장해야만 한다. 예를 들면, 전자기계적 컴퓨터 주변 시스템은 예방적인 유지보수를 위해 유닛이 파워온된 시간량을 추적할 필요가 있을 수 있다. 일반적인 방안은 매 시간마다 파워온 데이터를 갱신하는 것이다. 파워온 정보를 비휘발성 메모리에 저장해야 한다. 하나의 일반적 방안은 시스템이 파워오프될 때 정적 RAM에 전력을 유지시키는 배터리를 가진 저 전력 정적 RAM에 이러한 데이터를 저장하는 것이다. 이 방안은 비교적 고가이고, 신뢰도는 배터리 전하의 무결성 및 회로상의 전력 스위치에 좌우된다.
따라서, 변경 데이터를 위한 비휘발성 저장이 점점 더 필요해지고 있다.
가변 데이터를 저장하는데 비휘발성인 재기록불능(write once) 메모리를 사용한다. 본 발명의 실시예에서, 세그먼트형 플래시메모리를 사용하는데, 그 메모리에서는 개별 세그먼트가 소거가능하다. 적어도 두 세그먼트를 사용한다. 하나의 세그먼트가 거의 풀(full)이거나 혹은 세그먼트가 파손되었을 때, 최근 값을 새로운 세그먼트에 기록한다. 초기화 동안, 관심의 대상인 모든 변수를 디폴트값으로써 RAM에 기록한다. 사용되는 플래시 세그먼트는 가장 오래된 엔트리로부터 최신 엔트리로 순차적으로 판독되고, 플래시메모리로부터의 값은 RAM에 값(또는 값에 대한 포인터)를 중복기록하는데 사용된다. 그러면, RAM은 모든 변수에 대해 가장 최근 값을 포함한다(또는 가리킨다). 새로운 세그먼트를 기록할 때, RAM으로부터의 값을 이용하여 이 새로운 세그먼트를 기록한다. 본 발명의 방법은 각 저장된 정보 아이템마다 최근(현재)값의 식별을 제공하고, 새 유형의 데이터를 추가시키고 구 유형의 데이터를 삭제하며, 메모리 세그먼트가 풀일 때 동작(action)을 제공하고, 전원 장애시 복구한다.
도 1은 본 발명에 따르는 프로세서 기반의 시스템을 도시한 블록도,
도 2a는 본 발명에 따르는 방법의 흐름도의 제 1 부분으로서, 초기 조건을 설정하는 것을 도시하는 흐름도,
도 2b는 본 발명에 따르는 방법의 흐름도의 제 2 부분으로서, 비휘발성 메모리로부터 RAM으로의 복사를 도시하는 흐름도,
도 2c는 도 2b의 흐름도에 이어지는, 스위칭 세그먼트를 도시하는 흐름도,
도 2d는 도 2c의 블록(226)에 대해 보다 상세히 도시하는 흐름도.
도면의 주요 부분에 대한 부호의 설명
100 : 프로세서 102 : 펌웨어
104 : RAM 106-110 : 소거가능한 비휘발성 메모리
도 1은 본 발명에 따르는 프로세서 기반의 시스템을 도시한 블록도이다. 프로세서(100)는 ROM에 있을 수 있는 펌웨어(102)에 의해 제어된다. 또한, 시스템은 휘발성 RAM(104)을 사용한다. 또한, 시스템은 비휘발성 메모리(106, 108, 110)를 사용한다. 본 발명의 특정한 실시예에서, 세그먼트형 (혹은 블록형) 플래시메모리를 사용하고, 각 위치에 단 한 번만 기록될 수 있지만, 전 세그먼트 또는 블록이 소거가능하다. 즉, 소거할 수 있는 최소 부분은 세그먼트(106) 또는 세그먼트(108), 또는 세그먼트(110)이다. 또한, 다른 유형의 소거가능한 비휘발성 재기록불능 메모리가 동일하게 적합할 수 있다. 다음의 설명에서, "소거된 값"이라는 표현은 소거된 후에 비휘발성 세그먼트에서 메모리 위치에 저장된 값을 의미한다. 특정한 실시예에서, 비휘발성 세그먼트를 소거시에, 각 메모리 위치는 십육진수 FFFF로 설정된다.
변경 매개변수를 저장하는데 소거가능한 재기록불능의 세그먼트형 메모리를 사용하기 위해서는 다음의 문제를 해결해야 한다:
각 저장된 정보 아이템에 대한 최근(현재) 값의 식별;
새 유형의 데이터를 추가시키고, 구 유형의 데이터를 소거하기 위한 준비;
메모리 세그먼트가 충만 상태일 때 동작에 대한 준비;
한 메모리 세그먼트로부터 다른 메모리 세그먼트로 데이터를 전송하는 동안 또는 데이터를 기록하는 동안에 전원이 나가는 경우에 데이터를 손실하지 않도록 보장하기 위한, 전원 장애에 대한 준비.
본 발명은 전술한 문제의 각각을 해결하며, 후술되는 바와 같은 부가적인 특징을 제공한다.
본 발명의 실시예에서, 메모리 관리의 편리성을 위하여, 저장할 정보 아이템의 각각을 매개변수로 지칭되는 데이터 구조로 패킷화하고, 여기서 매개변수는 데이터 식별, 데이터 길이 및 실제 데이터를 포함한다. 실시예에서, 각 매개변수는 매개변수 ID를 포함한다. 매개변수 ID는 정보 아이템을 식별하고, 정보 아이템의 길이를 명시한다. 메모리에서 매개변수 ID의 바로 뒤에 식별된 데이터가 있다. 특정한 실시예에서, 매개변수 ID는 하나의 16 비트 워드이고, 매개변수 ID의 최 상위 2비트는 세 ID 클래스중의 하나를 명시한다:
00 16 비트 데이터 필드;
01 32 비트 데이터 필드;
10 가변길이 데이터 필드(다음 워드는 길이를 명시).
본 발명의 특정 실시예에서, 본 발명은 착탈형 저장매체를 가진 대량 메모리 드라이브 매카니즘에 사용된다. 비휘발성 메모리에 저장하기 위한 관심의 대상인 데이터는 (제조시에 결정된) 드라이브 시리얼 번호, 제조 일자, 드라이브가 파워온된 시간량, 매체가 드라이브로 로딩된 횟수(로드 카운트), 및 드라이브의 수명에 걸쳐 판독 및 기록된 데이터량(판독 카운터)을 포함한다. 이들 유형의 데이터는 유지보수 및 예방적인 유지보수에 유용하다. 드라이브가 잠시 사용되고 나면, 적절한 매개변수를 저장하는데 사용되는 비휘발성 메모리의 세그먼트는 다음의 예에서와 같이 나타날 수 있다:
전술한 예에서, 로드 카운트 및 판독 카운트 매개변수는 비휘발성 메모리 세그먼트에 처음 기록되었던 이래 보다 새로운 정보와 함께 갱신되었다. 본 발명의 실시예에서, 저장될 매개변수는 펌웨어로 코딩된다. 초기화 동안, 펌웨어는 관심의 대상인 모든 매개변수를 위한 비휘발성 RAM에 엔트리를 생성하고, 각 매개변수에 디폴트값을 할당한다. 그후, 펌웨어는 개시로부터 비휘발성 메모리 세그먼트를 판독하고, 각 매개변수에 대한 값을 판독하고, RAM에 이 값을 중복기록한다. 매개변수의 후속값을 발견한 경우, RAM의 이전 값을 교체시킨다. 비휘발성 메모리 세그먼트를 통해 이러한 점진적인 작업을 수행하므로써, RAM에서 최종 결과 정보는 모든 매개변수에 대한 가장 최근의 값이 된다. 본 발명의 특정한 실시예에서, 십육진수 FFFF의 소거 값은 매개변수 ID에 대해 유효하지 않으므로, 초기화 펌웨어가 매개변수 ID가 기대되는 FFFF의 값을 만날 때, 펌웨어는 레코딩된 정보의 종료에 도달했음을 인지한다.
바람직하게, 펌웨어는 매개변수마다 RAM의 알려진 위치를 예약한다. 펌웨어는 각 데이터 항목에 대한 알려진 고정 위치를 참조할 수 있는데, 이는 보통 컴파일된 코드에서 변수 참조에 의해 행해질 수 있기 때문이다. 또한, 각 매개변수의 현 위치를 알아내기 위한 참조 조사(reference look-up)가 필요없으므로, 매개변수에 대한 신속한 판독 액세스가 제공된다. 그러나, RAM의 공간을 절약하는 것이 보다 바람직한 경우, 비휘발성 메모리의 가장 최근 위치에 대한 포인터가 RAM에 저장될 수 있다. 그러면, 액세스는 보다 느려지지만, RAM의 상당량을 소비하는 큰 길이를 가지는 매개변수 혹은 드물게 변경되는 매개변수에 대해 용인될 수 있다. 휘발성 RAM에서 데이터 구조는 비휘발성 메모리에서 데이터 구조와 동일하거나, 혹은 RAM에서 데이터 구조가 상이할 수 있다. 유일한 요건은 펌웨어가 관심의 대상인 모든 매개변수에 대해 RAM 위치를 알아야 한다는 것이다. 이것은 직접 컴파일된 참조 또는 룩업/해시 테이블의 실시예에 의해 행해질 수 있다.
갱신된 매개변수 값은 비휘발성 메모리 세그먼트에 첨부되므로, 세그먼트는 결국 채워질 것이다. 본 발명의 실시예에서, 하나의 세그먼트가 충만 상태가 될 때(혹은 사전결정된 임계치에 도달했거나, 혹은 매개변수 갱신 동작 동안 전원 장애로 인하여 세그먼트가 파손되었을 때), RAM에 저장된 매개변수의 가장 최근의 값이 사용되지 않은 비휘발성 메모리 세그먼트로 복사(copy)된다. 그후, 이전에 사용된 세그먼트를 소거할 수 있다. 시스템은 변경 매개변수를 위한 두 세그먼트를 확보할 수 있고, 두 세그먼트 사이를 교번할 수 있다. 이 대신에, 시스템은 다른 선택 알고리즘을 사용할 수 있는데, 유일한 요건은 휘발성 RAM으로부터 복사를 위해 하나의 미사용 세그먼트를 사용해야 한다는 것이다.
비휘발성 메모리 세그먼트를 통해 연속적으로 작업한 후에, 휘발성 RAM의 각 매개변수는 그의 최근 값(디폴트 값 또는 비휘발성 메모리로부터의 그의 최근 값)을 가진다. 매개변수가 갱신될 때 마다 혹은, 새로운 세그먼트가 기록될 때 마다, 그의 최근 값을 가진 매개변수가 비휘발성 메모리에 기록된다. 유사하게, 매개변수가 새 버전의 펌웨어에서 소거되는 경우, 펌웨어는 삭제된 매개변수를 위한 RAM 위치를 할당하지 않으며, 매개변수는 비휘발성 메모리로부터 휘발성 RAM으로 복사되지 않는다. 새로운 비휘발성 세그먼트가 기록될 때, 소거된 매개변수는 새로운 비휘발성 세그먼트에 기록되지 않는다. 결과적으로, 펌웨어가 갱신되고 새로운 매개변수가 추가 또는 삭제되는 경우, 그들은 자동적으로 매개변수에 추가되거나 혹은 비휘발성 메모리에서 매개변수로부터 소거된다.
새로운 세그먼트가 기록될 때 까지 원래의 세그먼트는 삭제되지 않는다. 새로운 세그먼트를 기록하는 동안 전력이 손실되는 경우, 새로운 세그먼트는 파손 상태로 남겨질 수 있다. 따라서, 두 세그먼트가 초기화동안 매개변수 데이터를 포함하는 경우, 시스템은 두 세그먼트중의 유효한 현재 세그먼트를 결정하기 위한 방법을 가져야만 한다. 이와같이, 값이 비휘발성 메모리로 기록되는 동안 전력이 손실되면, 세그먼트가 파손 상태로 남겨질 수 있다. 본 발명에 따르는 방법은 비휘발성 메모리에 매개변수를 기록하는 동안에 전력 손실로부터의 복구를 제공하고, 새로운 세그먼트의 기록 동안에 전력 손실로부터 복구를 제공하는데, 이는 도 2a 내지 도 2d에 도시되어 있다.
도 2a 내지 도 2d는 본 발명에 따라서 변경 데이터를 저장하기 위한 소거가능한 비휘발성 메모리를 사용하는 방법에 대한 흐름도이다. 도 2a는 초기 조건의 설정을 도시하는데, 이는 제조동안 일어나거나 혹은 시스템이 가동되는 초기에 발생될 수 있다. 단계(200)에서, 변경 데이터의 비휘발성 저장에 사용하기 위해 두 세그먼트를 지명한다. 제 1 세그먼트는 채워질 때 까지 사용될 것이며, 제 2 세그먼트도 사용될 것이다. (시스템이 두 세그먼트사이에 앞뒤로 스위칭하면서) 변경 데이터의 비휘발성 저장을 위해 두 세그먼트가 사용될 수 있으며, 또는 다른 알고리즘을 사용하여 사용될 수 있는 적어도 두 세그먼트를 식별할 수 있다. 초기에 두 세그먼트를 소거해야 한다. 단계(202)에서, 사용할 제 1 세그먼트의 제 1 워드에 시퀀스 번호를 기록한다. 보다 상세히 후술하는 바와 같이, 새로운 세그먼트를 사용할 때 마다, 시퀀스 번호는 증분되고, 새로운 세그먼트의 제 1 워드로서 기록된다.
도 2b는 시스템 전원이 인가될 때 혹은 하드 리셋후에 실행되는 프로세서를 위한 초기화 과정을 도시한다. 단계(204)에서, 펌웨어는 관심의 대상인 모든 매개변수에 대해 RAM 위치를 지명하고, RAM의 값을 가진 각 매개변수에 대해 RAM에 디폴트 값을 기록한다(소정의 가변 길이 매개변수의 경우, RAM은 비휘발성 메모리에서 위치에 대한 포인터를 포함할 수 있다). 단계(206)에서, 각 지명된 세그먼트의 제 1 워드를 판독하고, 단계(208)에서 정확하게 하나의 세그먼트가 시퀀스 번호를 포함하는 지를 판정한다(단지 하나의 세그먼트가 소거된 값과 동일하지 않은 제 1 워드에서의 값을 가지는 지의 여부를 판정). 두 세그먼트의 제 1 워드가 소거된 값인 경우(단계 210), 단계(212)에서 에러 상황이 발생된다. 두 세그먼트가 시퀀스 번호를 포함하는 경우(각 세그먼트의 제 1 워드가 소거된 값이 아닌 경우), 전력은 하나의 세그먼트를 기록하는 손실될 수 있다. 단계(214)에서, 최저 시퀀스 번호를 가진 세그먼트가 유효 데이터를 여전히 가지며 다른 세그먼트는 파손되었다고 가정하여, 최저 시퀀스 번호를 가진 세그먼트를 선택한다. 단계(216)에서, 현재 사용되는 세그먼트로부터 매개변수를 순차적으로 판독하고, RAM에 값을 중복기록한다.
도 2c에서, 단계(218)에서, 사용되지 않는 세그먼트가 소거되지 않는다면(제 1 워드가 소거 값이 아닌 경우), 세그먼트가 보다 일찍 기록되었고 전력은 기록동안 손실되었다고 가정한다. 따라서, 단계(220)에서 세그먼트를 소거하고, 단계(226)에서 스위칭 세그먼트의 처리를 다시 개시한다. 단계(222)에서, 하나의 세그먼트가 거의 충만 상태인 경우, 단계(226)에서 스위칭 세그먼트의 처리를 개시한다. 단계(222)에서 검사는 세그먼트의 소정 퍼센트를 사용한 것과 같은 사전결정된 임계치이거나 혹은, 또다른 매개변수를 저장할 공간이 없다고 단순히 판정할 수 있다.
매개변수를 비휘발성 메모리에 저장시에, 먼저 값을 저장하고 매개변수 ID를 저장한다. 결과적으로, 매개변수가 저장되는 동안 전력 손실이 있는 경우, 매개변수 ID에 대한 위치는 소거될 값을 가질 것이며, 매개변수 ID의 위치를 지나서(beyond) 저장된 소거 값과 다른 데이터가 있을 것이다. 단계(224)에서, 첫 소거 값 너머의 위치를 검사하여, 소거 값과 동일한지를 조사한다. 그렇지 않은 경우, 마지막 매개변수의 기록 동안 전력이 손실될 수 있다. 제 1 소거 값 너머로 소거값과 다른 위치가 있는 경우, 세그먼트는 파손된다. 즉, 세그먼트 ID가 없이는 예상 길이 또는 데이터의 타당성을 판정할 방법이 없다. 따라서, 단계(226)에서 모든 매개변수에 대해 마지막으로 알려진 값을 가진 새로운 세그먼트를 기록한다.
도 2d는 세그먼트 스위칭 단계(226)(도 2c)의 확장이다. 단계(228)에서, 시퀀스 번호를 증분한다. 단계(230)에서, 새로운 시퀀스 번호를 새로운 세그먼트의 제 1 워드에 기록한다. 단계(232)에서, 세그먼트의 제 2 워드를 가리키도록 기록 포인터를 설정한다. 본 발명의 특정한 실시예에서, 사용되는 소거가능한 비휘발성 메모리는 판독 모드 또는 기록 모드로 배치될 수 있지만, 동시에 두 모드일 수는 없다. 가변 길이 매개변수가 RAM내에 복사되지 않을 경우, 비휘발성 메모리로부터 가변 길이 데이터를 판독하고, 가변 길이 데이터를 새로운 세그먼트에 기록하기 위해서는 판독 모드와 기록 모드 사이에서 앞뒤로 메모리를 전환시킬 필요가 있다. 따라서, 단계(234)에서, RAM에 일반적으로 복사되지 않은 모든 매개변수를 RAM으로 복사한다. 단계(236)에서, RAM에서의 모든 매개변수를 새로운 세그먼트에 복사한다. 단계(238)에서 기록 포인트를 새로운 매개변수 값을 기록하도록 배치한다. 단계(238)후에, 구 세그먼트는 확실히 소거되며, 이것은 단계(240)에서 행해진다.
시퀀스 번호는 16진수 FFFF에서 부터 0000까지를 포함할 수 있다. FFFF는 소거 값이므로 유효하지 않은 시퀀스 번호이다. 따라서, FFFF 및 0000은 시퀀스 번호를 증분 및 기록시에(도 2d, 단계(228) 및 단계(230)), 그리고, 두 세그먼트중에 가장 오래된 것을 선택할 때(도 2b, 단계 214) 검사해야 하는 특별한 경우이다.
모든 세그먼트가 사용가능한 지의 여부에 대해 또다른 고려해야할 사항이 있다. 제조 검사 동안, 비휘발성 메모리에 하나 또는 그이상의 메모리 위치가 불완전한 지의 여부를 판정할 수 있다. 이 대신에, 제품의 수명 동안, 세그먼트내에 하나 또는 그이상의 메모리 위치가 고장날 수 있다. 부분적으로 작동하는 세그먼트는 여전히 사용가능할 수 있다. 불완전한 위치에 도달할 때 까지 단순히 기록하거나 혹은, 마지막 불완전한 위치를 넘어서 기록을 시작하거나 혹은, 불완전한 위치 둘레를 매핑할 수 있다. 비휘발성 메모리에 저장된 하나의 매개변수는 특정한 세그먼트에 대한 알려진 불완전한 위치의 맵일 수 있다. 세그먼트를 기록하고, 세그먼트를 판독하고, 세그먼트를 스위칭할 때를 판정할 때에 불완전한 위치를 식별하는 매개변수를 고려해야 만 한다. 플래시메모리의 불완전한 처리에 대한 예는 미국 특허출원 제 5,200,959 호를 참조한다.
본 발명의 전술한 설명은 예시 및 설명을 위한 것이다. 개시된 특정 형태로 본 발명을 제한하려는 것은 아니며, 다른 변경 및 변형이 가능하다. 전술한 실시예는 본 발명의 원리를 설명하기 위하여 선택하여 기술한 것이며, 당업자라면 본 발명을 활용하여 고려되는 특정 사용에 적합하도록 다양한 실시예 및 다양한 변경을 행할 수 있다는 것을 알 수 있을 것이다. 첨부된 특허청구의 범위는 종래기술에 의해 제한되지 않으며 본 발명의 또다른 실시예를 포함한다.
가변 데이터를 저장하는데 비휘발성인 재기록불능 메모리를 사용한다. 본 발명의 실시예에서, 세그먼트형 플래시메모리를 사용하는데, 개별 세그먼트가 소거가능하다. 적어도 두 세그먼트를 사용한다. 하나의 세그먼트가 거의 충만 상태이거나 혹은 세그먼트가 파손되었을 때, 최근 값을 새로운 세그먼트에 기록한다. 초기화 동안, 관심의 대상인 모든 변수를 디폴트값으로써 RAM에 기록한다. 사용되는 플래시 세그먼트는 가장 오래된 엔트리로부터 최신 엔트리로 순차적으로 판독되고, 플래시메모리로부터의 값은 RAM에 값(또는 값에 대한 포인터)를 중복기록하는데 사용된다. 그러면, RAM은 모든 변수에 대해 가장 최근 값을 포함한다(또는 가리킨다). 새로운 세그먼트를 기록할 때, RAM으로부터의 값을 이용하여 이 새로운 세그먼트를 기록한다. 본 발명의 방법은 각 저장된 정보 아이템에 대해 최근(현재)값의 식별을 제공하고, 새 유형의 데이터를 추가시키고 구 유형의 데이터를 삭제하며, 메모리 세그먼트가 충만 상태일 때 동작을 제공하고, 전원 장애로부터 복구를 제공한다.

Claims (4)

  1. 소거가능하지만 중복기록할 수 없는 비휘발성 메모리에 데이터를 저장하기 위한 방법에 있어서,
    (가) 상기 데이터를 위한 휘발성 메모리의 위치를 정의하는 단계와,
    (나) 상기 데이터가 변경될 때, 상기 휘발성 메모리에 상기 데이터를 중복기록하고, 상기 비휘발성 메모리의 제 1 부분에 새 버전의 데이터를 기록하는 단계와,
    (다) 상기 비휘발성 메모리의 상기 제 1 부분이 사전 결정된 임계치에 도달한 상태인지 여부를 판정하는 단계와,
    (라) 상기 비휘발성 메모리의 상기 제 1 부분이 사전 결정된 임계치에 도달한 상태라고 판정하면, 상기 휘발성 메모리로부터 상기 비휘발성 메모리의 제 2 부분으로 상기 데이타를 복사하는 단계
    를 포함하는 비휘발성 메모리에 데이터를 저장하는 방법.
  2. 제 1 항에 있어서,
    단계(가) 이후에,
    (가 1) 상기 데이터를 위하여 휘발성 메모리에서 정해진 위치에 디폴트값을 기록하는 단계와,
    (가 2) 상기 비휘발성 메모리로부터 상기 데이터를 판독하는 단계와,
    (가 3) 상기 비휘발성 메모리로부터 판독된 데이터로 상기 휘발성 메모리에 상기 디폴트 값을 중복기록하는 단계
    를 더 포함하는 비휘발성 메모리에 데이터를 저장하는 방법.
  3. 제 1 항에 있어서,
    단계(가) 이후에,
    (가 1) 상기 비휘발성 메모리의 두 부분이 데이터를 포함할 수 있는 지의 여부를 판정하는 단계와,
    (가 2) 단계(가 1)에서 식별된 상기 두 부분들중에 하나가 먼저 기록되었음을 판정하고, 상기 먼저 기록된 부분을 상기 단계(나)에서 사용하기 위한 제 1 부분으로서 지명하는 단계
    를 더 포함하는 비휘발성 메모리에 데이터를 저장하는 방법.
  4. 제 1 항에 있어서,
    단계(나)는,
    상기 비휘발성 메모리의 상기 제 1 부분에 상기 데이터를 기록한 다음, 상기 비휘랍성 메모리의 상기 제 1 부분에서, 상기 데이터에 대응하는 식별(identification)을 기록하는 단계
    를 더 포함하는 비휘발성 메모리에 데이터를 저장하는 방법.
KR10-2000-0009012A 1999-02-26 2000-02-24 비휘발성 메모리에 데이터를 저장하는 방법 KR100377301B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US09/258,582 1999-02-26
US9/258,582 1999-02-26
US09/258,582 US6104638A (en) 1999-02-26 1999-02-26 Use of erasable non-volatile memory for storage of changing information

Publications (2)

Publication Number Publication Date
KR20000062616A KR20000062616A (ko) 2000-10-25
KR100377301B1 true KR100377301B1 (ko) 2003-03-26

Family

ID=22981204

Family Applications (1)

Application Number Title Priority Date Filing Date
KR10-2000-0009012A KR100377301B1 (ko) 1999-02-26 2000-02-24 비휘발성 메모리에 데이터를 저장하는 방법

Country Status (5)

Country Link
US (1) US6104638A (ko)
EP (1) EP1031929A3 (ko)
JP (1) JP2000250820A (ko)
KR (1) KR100377301B1 (ko)
TW (1) TW446950B (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100520172B1 (ko) * 2002-06-03 2005-10-10 삼성전자주식회사 개인 정보 단말기에서 데이터 보존 장치 및 방법

Families Citing this family (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6449683B1 (en) * 1999-12-14 2002-09-10 Intel Corporation Using non-volatile memory for power management in a computer
US6442067B1 (en) * 2000-05-23 2002-08-27 Compaq Information Technologies Group, L.P. Recovery ROM for array controllers
JP2001331327A (ja) * 2000-05-24 2001-11-30 Matsushita Electric Ind Co Ltd 電子機器
JP2001356925A (ja) * 2000-06-12 2001-12-26 Nec Corp 携帯電話機
US6658438B1 (en) * 2000-08-14 2003-12-02 Matrix Semiconductor, Inc. Method for deleting stored digital data from write-once memory device
US20020048203A1 (en) * 2000-10-19 2002-04-25 Findling Patrick M. Extending total write cycles of non-volatile memory for rolling codes
JP3709338B2 (ja) 2000-11-22 2005-10-26 日本電気株式会社 携帯電話のユーザー設定情報管理方法とユーザー設定情報管理システム
KR100365725B1 (ko) * 2000-12-27 2002-12-26 한국전자통신연구원 플래시 메모리를 이용한 파일 시스템에서 등급별 지움정책 및 오류 복구 방법
EP1286267B1 (en) * 2001-08-17 2017-08-16 Sony Deutschland GmbH Mobile communication device and memory management method
GB0123415D0 (en) 2001-09-28 2001-11-21 Memquest Ltd Method of writing data to non-volatile memory
US20050036387A1 (en) * 2002-04-24 2005-02-17 Seal Brian K. Method of using flash memory for storing metering data
DE10227255B4 (de) * 2002-06-19 2008-06-26 Hyperstone Gmbh Verfahren zur Wiederherstellung von Verwaltungsdatensätzen eines blockweise löschbaren Speichers
US6941411B2 (en) * 2002-08-21 2005-09-06 Micron Technology, Inc. Non-contiguous address erasable blocks and command in flash memory
KR100490603B1 (ko) * 2002-12-06 2005-05-27 (주) 라모스테크놀러지 플래시 메모리 동작 제어 방법 및 장치
US6925523B2 (en) * 2003-03-03 2005-08-02 Agilent Technologies, Inc. Managing monotonically increasing counter values to minimize impact on non-volatile storage
US8341371B2 (en) * 2005-01-31 2012-12-25 Sandisk Il Ltd Method of managing copy operations in flash memories
WO2007066909A1 (en) * 2005-12-08 2007-06-14 Electronics And Telecommunications Research Institute Method for guarantying data storing space using dual journaling
KR100848315B1 (ko) * 2005-12-08 2008-07-24 한국전자통신연구원 이중 저널링을 이용한 데이터 저장 공간 확보 방법
US7882301B2 (en) * 2007-05-09 2011-02-01 Stmicroelectronics S.R.L. Wear leveling in storage devices based on flash memories and related circuit, system, and method
US8041883B2 (en) * 2007-05-09 2011-10-18 Stmicroelectronics S.R.L. Restoring storage devices based on flash memories and related circuit, system, and method
US20080282024A1 (en) * 2007-05-09 2008-11-13 Sudeep Biswas Management of erase operations in storage devices based on flash memories
US7991942B2 (en) * 2007-05-09 2011-08-02 Stmicroelectronics S.R.L. Memory block compaction method, circuit, and system in storage devices based on flash memories
US7743203B2 (en) * 2007-05-11 2010-06-22 Spansion Llc Managing flash memory based upon usage history
DE102007026693A1 (de) 2007-06-08 2008-12-11 Robert Bosch Gmbh Verfahren und Vorrichtung zum Umorganisieren von Daten in einem Speichersystem, insbesondere für Steuergeräte in Kraftfahrzeugen
ES2692209T3 (es) 2007-08-29 2018-11-30 Lifescan Scotland Limited Sistema de gestión de datos y método
US7917803B2 (en) * 2008-06-17 2011-03-29 Seagate Technology Llc Data conflict resolution for solid-state memory devices
JP2010020586A (ja) * 2008-07-11 2010-01-28 Nec Electronics Corp データ処理装置
US7872929B2 (en) * 2009-04-28 2011-01-18 Lsi Corporation Accessing memory cells in a memory circuit
JP5398795B2 (ja) * 2011-08-08 2014-01-29 古野電気株式会社 情報処理装置及び情報処理プログラム
US11368760B2 (en) 2012-08-17 2022-06-21 Flextronics Ap, Llc Applications generating statistics for user behavior
US20160119675A1 (en) 2012-09-06 2016-04-28 Flextronics Ap, Llc Programming user behavior reporting
CN103748530A (zh) 2012-08-17 2014-04-23 弗莱克斯电子有限责任公司 媒体中心
WO2014092812A1 (en) * 2012-12-13 2014-06-19 Flextronics Ap, Llc Report database intelligent television
KR20160042224A (ko) 2014-10-07 2016-04-19 에스케이하이닉스 주식회사 데이터 저장 장치 및 그것의 동작 방법
US9569641B2 (en) 2015-03-24 2017-02-14 Nxp Usa, Inc. Data processing system with temperature monitoring for security
US10420928B2 (en) 2015-12-14 2019-09-24 Medtronic, Inc. Implantable medical device having a scheme for managing storage of data

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS61201356A (ja) * 1985-03-01 1986-09-06 Nippon Telegr & Teleph Corp <Ntt> 記憶装置
US4752871A (en) * 1985-09-30 1988-06-21 Motorola, Inc. Single-chip microcomputer having a program register for controlling two EEPROM arrays
US4931997A (en) * 1987-03-16 1990-06-05 Hitachi Ltd. Semiconductor memory having storage buffer to save control data during bulk erase
US5210854A (en) * 1989-06-14 1993-05-11 Digital Equipment Corporation System for updating program stored in eeprom by storing new version into new location and updating second transfer vector to contain starting address of new version
US5200959A (en) * 1989-10-17 1993-04-06 Sundisk Corporation Device and method for defect handling in semi-conductor memory
FR2666425A1 (fr) * 1990-08-31 1992-03-06 Gemplus Card Int Procede et dispositif de mise a jour d'informations dans une memoire et leur utilisation dans les cartes a memoire.
US5303198A (en) * 1990-09-28 1994-04-12 Fuji Photo Film Co., Ltd. Method of recording data in memory card having EEPROM and memory card system using the same
GB2251323B (en) * 1990-12-31 1994-10-12 Intel Corp Disk emulation for a non-volatile semiconductor memory
US5596738A (en) * 1992-01-31 1997-01-21 Teac Corporation Peripheral device control system using changeable firmware in a single flash memory
JP2856621B2 (ja) * 1993-02-24 1999-02-10 インターナショナル・ビジネス・マシーンズ・コーポレイション 一括消去型不揮発性メモリおよびそれを用いる半導体ディスク装置
US5566335A (en) * 1993-03-16 1996-10-15 Hewlett-Packard Company Method and apparatus for firmware upgrades in embedded systems
GB2317722B (en) * 1996-09-30 2001-07-18 Nokia Mobile Phones Ltd Memory device
US5818755A (en) * 1996-10-16 1998-10-06 Fujitsu Limited Storage apparatus having a nonvolatile storage device capable of retaining data after an incomplete write operation and method of accessing same

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100520172B1 (ko) * 2002-06-03 2005-10-10 삼성전자주식회사 개인 정보 단말기에서 데이터 보존 장치 및 방법

Also Published As

Publication number Publication date
TW446950B (en) 2001-07-21
US6104638A (en) 2000-08-15
JP2000250820A (ja) 2000-09-14
KR20000062616A (ko) 2000-10-25
EP1031929A3 (en) 2002-10-02
EP1031929A2 (en) 2000-08-30

Similar Documents

Publication Publication Date Title
KR100377301B1 (ko) 비휘발성 메모리에 데이터를 저장하는 방법
JP4268396B2 (ja) 1回プログラム可能な不揮発性メモリデバイスのファイル管理
US6038636A (en) Method and apparatus for reclaiming and defragmenting a flash memory device
KR100493732B1 (ko) 비휘발성 메모리내의 코드/데이터 경계를 조정가능하게하는 장치 및 방법
US6513095B1 (en) File system with assured integrity incorporating semiconductor memory device
KR101110785B1 (ko) 프로그램 가능한 내구력을 가진 플래시 메모리
US6865658B2 (en) Nonvolatile data management system using data segments and link information
US6839823B1 (en) Increased reliability of data stored on flash memory in applications sensitive to power-loss
KR100849446B1 (ko) 기억 장치, 메모리 관리 장치, 메모리 관리 방법, 및 컴퓨터-판독가능한 기록 매체
JP4215746B2 (ja) 情報処理装置および寿命監視方法
KR100370893B1 (ko) 일괄 소거형 비휘발성 메모리 장치
US20010054129A1 (en) Method, system and computer program
JPH11161563A (ja) データの記憶および再生方法
JP2005242897A (ja) フラッシュディスク装置
WO2005059966A2 (en) Rotational use of memory to minimize write cycles
KR20040017276A (ko) 불휘발성 메모리 및 불휘발성 메모리의 데이터 재기록 방법
US20110040931A1 (en) Memory control method and device, memory access control method, computer program, and recording medium
EP2267725A1 (en) Memory device for managing the recovery of a non volatile memory
JPH08315596A (ja) 半導体記憶装置
US7313648B2 (en) Corruption tolerant method and system for deploying and modifying data in flash memory
JP3583639B2 (ja) メモリ装置のデータ更新方法
JPH07201190A (ja) 不揮発性メモリファイルシステム
US8010737B2 (en) Method and device for reorganizing data in a memory system, in particular for control devices in motor vehicles
US20100011157A1 (en) Device and method for backing up data on non- volatile memory media, of the nand flash type, designed for onboard computers
US20080307159A1 (en) Method and control device for operating a non-volatile memory, in particular for use in motor vehicles

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: 20130225

Year of fee payment: 11

FPAY Annual fee payment

Payment date: 20140221

Year of fee payment: 12

FPAY Annual fee payment

Payment date: 20150223

Year of fee payment: 13

FPAY Annual fee payment

Payment date: 20160223

Year of fee payment: 14

FPAY Annual fee payment

Payment date: 20170223

Year of fee payment: 15

FPAY Annual fee payment

Payment date: 20180223

Year of fee payment: 16

FPAY Annual fee payment

Payment date: 20190220

Year of fee payment: 17