KR20050096947A - 비휘발성 메모리의 내구 한계 카운팅 방법 - Google Patents

비휘발성 메모리의 내구 한계 카운팅 방법 Download PDF

Info

Publication number
KR20050096947A
KR20050096947A KR1020057013506A KR20057013506A KR20050096947A KR 20050096947 A KR20050096947 A KR 20050096947A KR 1020057013506 A KR1020057013506 A KR 1020057013506A KR 20057013506 A KR20057013506 A KR 20057013506A KR 20050096947 A KR20050096947 A KR 20050096947A
Authority
KR
South Korea
Prior art keywords
cells
state
lsg
cell
counter
Prior art date
Application number
KR1020057013506A
Other languages
English (en)
Inventor
케리 디 마렛스키
Original Assignee
아트멜 코포레이숀
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 아트멜 코포레이숀 filed Critical 아트멜 코포레이숀
Publication of KR20050096947A publication Critical patent/KR20050096947A/ko

Links

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K21/00Details of pulse counters or frequency dividers
    • H03K21/40Monitoring; Error detection; Preventing or correcting improper counter operation
    • H03K21/403Arrangements for storing the counting state in case of power supply interruption
    • 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
    • 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/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • G11C16/349Arrangements for evaluating degradation, retention or wearout, e.g. by counting erase cycles
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K23/00Pulse counters comprising counting chains; Frequency dividers comprising counting chains
    • H03K23/004Counters counting in a non-natural counting order, e.g. random counters
    • H03K23/005Counters counting in a non-natural counting order, e.g. random counters using minimum change code, e.g. Gray Code

Landscapes

  • Read Only Memory (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Transmission And Conversion Of Sensor Element Output (AREA)

Abstract

저장 셀로서 비휘발성 메모리(12,16,18,...)를 사용하는 디지털 카운터(예, 도 1)에서, 저장 셀은 2개의 그룹, 즉 카운트의 하위 부분을 추적하는 로터리 카운터(20,22)와 상위 부분을 추적하는 이진 카운터(10)등 2개의 그룹으로 세분된다. 로터리 카운터는, 각 셀의 각 상태 변경이 하나의 카운터로서 기록되고 로터리 카운터의 모든 셀들은 매 사이클에서 상태의 2번의 상태 변화를 겪도록 보장함으로써 메모리의 내구 한계(endurance limit)에 도달하기 전에 획득될 수 있는 카운트를 최대화하는 카운팅 방법을 실행한다.

Description

비휘발성 메모리의 내구 한계 카운팅 방법 {METHOD FOR COUNTING BEYOND ENDURANCE LIMITATIONS OF NON VOLATILE MEMORIES}
본 발명은 일반적으로 디지털 카운터 및 특히 비휘발성 메모리를 사용하는 그러한 디지털 카운터에서 실행되는 카운팅 방법에 관한 것이다.
무정전 전원 장치를 필요로 하지 않고 장기간 동안 계수치를 보유(保有)하는 디지털 카운터는 현대의 전자 장치의 필수불가결한 부품이다. 이들 용도의 몇 가지 전형적인 예로는, 디지털 자동차 주행 기록계, 상업적인 기기용 디지털 사용량 측정기(usage meters) 및 부정한 시스템 액세스를 방지하기 위해 각 트랜잭션마다 고유의 수치 탭을 필요로 하는 암호 시스템이 있다. 어떤 추가적인 전력을 필요로 하지 않고 영구적으로 정보를 저장할 수 있는, EEPROM 및 플래시 메모리 같은 비휘발성 메모리는 그러한 용도에 적합할 것이다.
그러나, 카운팅 용도에 비휘발성 메모리를 사용하는 것과 관련된 한계가 있다. EEPROM 및 플래시 메모리는 부유 게이트(floating gate)에 전자를 주사하고 그 부유 게이트로부터 전자를 방출함으로써 프로그램되고 소거되는데, 이들 부유 게이트는 통상 폴리실리콘으로 제조되는 반도체 구조이다. 부유 게이트의 반복된 프로그래밍과 소거는 전하가 폴리실리콘 내에 영구적으로 트랩(trap)되게 하여, 시간이 경과함에 따라 한계 전압의 드리프트(drift)를 초래할 수 있다. 결국, 이들 트랩된 전자들은 추가적인 재프로그래밍을 방해하여 장치의 오동작을 야기한다. 프로그래밍 에러가 예상되기 전에 메모리 셀이 견딜 수 있는 최대 사이클 수를 일반적으로 내구 사이클 정격(endurance cycle rating)이라 부른다. 이 내구 사이클 정격은 통상 광범위한 특성화와 인증 과정을 통해 얻어진다. 한 번의 프로그래밍 단계와 이에 이어지는 한 번의 소거 단계가 하나의 내구 사이클을 구성한다. 현재의 비휘발성 메모리 설계 및 제조 기술은 만 내지 백만 사이의 내구 사이클 정격을 갖는 EEPROM과 플래시 메모리를 제조한다. 일반적인 EEPROM 임플러먼테이션에 있어서, 한 그룹의 비트를 기록하면, 그 그룹 내의 복수의 비트 상태가 바뀌지 않은 경우에도 이들 복수의 비트에 의해 내구 사이클이 "확장"될 수 있다. 이것은 전형적인 임플러먼테이션이 전체 그룹을 리세팅한 후 최종 상태에서 세팅되어야 할 비트들을 세팅할 수 있기 때문이다.
다양한 카운팅 방법의 기술과 설명을 용이하게 하기 위해서, 이후에는, 메모리 프로그래밍과 소거에 대하여 다음과 같이 약속한다. 프로그래밍은 부유 게이트에 전자를 주사하는 것을 나타내는 것인 반면, 소거는 부유 게이트로부터 전자가 방출되는 것을 나타낸다. 이진 표현이 사용되는 경우, 프로그램된 상태는 이진수 "0"으로 표현되는 반면, 소거된 상태는 이진수 "1"로 표현된다. 메모리 셀이 1 에서 0으로 상태를 바꾸는 경우를 이하에서는 셀의 세팅이라 부를 것이다. 메모리 셀이 0에서 1로 상태를 바꾸는 경우를 이하에서는 셀의 리세팅이라 부를 것이다.
내구 사이클에 의해서 부과되는 한계 때문에, EEPROM 혹은 플래시 메모리 셀이 디지털 카운터용 카운팅 비트로서 사용될 때는 언제든지, 사용되는 메모리의 내구성을 고려해야 한다. 예를 들어, 전형적인 이진 카운터에서, 최하위 비트(LSB)는 각 카운트 마다 0에서 1로 혹은 1에서 0으로 전환되고, 제2 LSB는 그 LSB가 1에서 0으로 전환될 때마다 상태가 변경되고, 제3 LSB는 제2 LSB가 1에서 0으로 전환될 때마다 상태가 변경되며, 계속 이러한 방식으로 진행한다. 이진 카운터의 LSB가 상태를 가장 많이 변경하는 것이므로, 대개 최초로 장애가 발생하게 되는 것도 그것이다. 그러한 용도에 사용되는 EEPROM 셀이 십만 사이클의 내구 사이클 정격을 갖는다고 가정하면, 그러한 카운터는 약 2 십만 최대 카운트 한계를 가지며, 이후에는 LSB 프로그래밍 장애로 인하여 카운팅 에러가 발생하는 것을 예상할 수 있다. 대안으로, 이진 카운터의 최상위 비트가 반복적으로 0으로 세팅되어 장애가 발생할 수 있다.
보통의 이진 카운팅 방법이 주어진 EEPROM 카운터의 내구 사이클의 최대화를 위한 최적의 방법이 아닌 것은 분명한데, 그 이유는 주어진 문자열의 비트에 대해, 최하위 비트가 다른 비트보다 훨씬 전에 그것의 내구 사이클들을 소모하여, 심지어 대부분의 비트들이 여전히 많은 내구 사이클들을 남기고 있음에도 불구하고, 카운터를 쓸모없게 만든다. 주어진 EEPROM 셀의 수의 카운트를 최대화하거나 원하는 최대 카운트를 위하여 필요한 EEPROM 셀의 수를 최소화하기 위해서, 모든 EEPROM 셀들 중에 대해서 보다 균일하게 프로그래밍 사이클을 분산시키는 카운팅 방법을 안출할 수도 있다. 예를 들면, 통상적인 그레이 코드 수 표현(Gray code number representation)으로 카운팅하면 보통 이진 수 표현으로 카운팅 하는 것보다 수명이 2배이다.
"비휘발성 메모리를 이용하여 카운팅하는 방법 및 장치(Method and Apparatus for Counting with Nonvolatile Memory)"를 발명의 명칭으로 하는 리프먼 등(Lipmann et al.)의 명의의 미국 특허 제4,947,410호와 "플래시 메모리에 대해 최적화되는 디지털 카운터를 구현하는 방법 및 시스템(Method and System for Implementing a Digital Counter Optimized for Flash Memory)"을 발명의 명칭으로 하는 웰스(Wells) 명의의 미국 특허 제6,249,562호가 그러한 카운팅 방법의 전형적인 예이다. 그러나, 전술한 특허 공보에서 설명된 카운팅 방법은 사용된 메모리가 개별적으로 비트 프로그램 가능하고 개별적으로 비트 소거 가능할 것을 필요로 한다. 다시 말해서, 이들 방법은 개별적인 비트 소거를 지원하지 않는 EEPROM에 적용할 수 없다. 시리얼 EEPROM 메모리 같은 가장 표준적인 제품 EEPROM 메모리는 개별적으로 비트 소거를 지원하지 않으므로, 그러한 메모리에 적절한 카운팅 방법을 갖추는 것이 바람직하다.
전술한 카운팅 방법에 관한 또 다른 한계는 그 카운팅 방법이 통상 프로그래밍 장애를 복구하기 위해서 병렬로 동작하는 이중 카운터를 필요로 한다는 사실에 있다. 중복적인 회로를 필요로 하지 않고 복구할 수 있는 카운팅 방법을 갖추는 것은 바람직하다.
도 1은 4 셀 로터리 서브 카운터가 8개 서수를 표현하는 방법 및 16 셀 이진 서브 카운터와 4 셀 로터리 서브 카운터가 함께 작동하여 최대 800,000개의 카운트를 생성하는 방법을 보여주는 한 세트의 도표이다.
도 2는 24 셀 로터리 서브 카운터에서 48개의 서수로 표현하기 위해 셀들을 세팅 및 리세팅하는 시퀀스를 보여주는 한 세트의 도표이다.
도 3은 본 발명의 대안적인 실시예를 구현하는 12 셀 로터리 서브 카운터에서 셀들을 교번적으로 세팅 및 리세팅하는 시퀀스를 보여주는 한 세트의 도표이다.
본 발명의 목적은 장애 발생 가능성을 고려하여, 또는 임의의 최대 카운트에 도달하는 데 필요한 메모리 셀을 최소화함으로써, 주어진 카운터 사이즈의 총 카운트를 최대화할 수 있는, 비휘발성 메모리를 기반으로 한 디지털 카운터를 제공하는 것이다. 본 발명의 다른 목적은 한 번의 비트 소거를 지원하지 않는 비휘발성 메모리에 적용될 수 있는 카운팅 방법을 제공하는 것이다. 본 발명의 또 다른 목적은 중복적인 회로를 필요로 하지 않고 기록/소거 장애에 의해 초래된 것을 복구할 수 있는 카운팅 방법을 제공하는 것이다.
본 발명은 비휘발성 메모리를 기반으로 한 디지털 카운터로서, 모든 셀 사이에서 카운팅 로드를 균등하게 분배하고 모든 셀의 매 번의 상태 변화가 반드시 하나의 카운트에 상당하게 함으로써 주어진 수의 메모리 셀의 카운팅 용량을 최대화하는 디지털 카운터에 관한 것이다. 본 발명에 따른 카운터는 2개의 서브 카운터, 즉 일반적인 방법으로 작동하는 보통의 이진 카운터, 그레이 코드 카운터 또는 이진화 십진 표기 카운터(binary-coded-decimal counter)로서, 카운트의 상위 부분을 추적하는 주 서브카운터와, 카운트의 하위의 부분을 추적하는 로터리 서브 카운터로 구성된다. 로터리 서브 카운터에서, 각각의 회전은 카운터의 모든 셀을 한 번 세팅하는 것과 한 번 리세팅하는 것을 포함한다. K개의 셀을 가진 그러한 로터리 서브 카운터는 일 회전 당 2K개의 총 카운트를 제공하게 된다.
로터리 서브 카운터는 아래와 같이 개괄되는 상태 변화의 패턴을 따른다. 로터리 카운터의 셀에서 1 상태인 동일한 수의 셀들의 그룹들로 편성되는 경우, 제1 그룹의 제1 셀에서 상태를 0으로 세팅함으로써 제1 서수가 표현된다. 후속하는 세트의 서수들은 나머지 셀 그룹들에 유사하게 위치한 셀들을 연속적으로 세팅함으로써 표현된다. 다음 세트의 서수들은 최종 그룹의 정해진 셀을 제외한 나머지 셀을 1들로 리세팅함으로써 표현되고 있다. 다음 2개의 서수는 제1 그룹의 제2 셀을 먼저 0으로 세팅한 후, 이전 그룹의 최종 셀을 다시 모두 1로 리세팅함으로써 표현되고 있다. 로터리 서브 카운터의 모든 셀이 세팅과 리세팅으로 이루어지는 1 사이클을 정확하게 마칠때까지, 전술한 바와 동일한 패턴의 셀의 세팅과 리세팅을 단순히 반복함으로써 로터리 세트의 나머지 서수들이 표현되며, 이 시점에서 이진 서브 카운터는 1개의 카운트를 기록하고, 제1 서수가 전술한 바와 같이 제1 셀 패턴에 의해서 표현되는 것을 시작으로 로터리 서브 카운터가 완전히 다시 시작한다. 각 셀에 대해 동일한 회수의 세팅 및 리세팅이 이루어지기 때문에, 전체적인 로터리 카운터의 마모는 균일하다.
도 1에는, 4개의 셀(12, 14, 16, 18)로 구성된 로터리 서브 카운터가 16개의 셀을 갖는 이진 서브 카운터(10)와 나란히 도시되어 있다. 로터리 서브 카운터의 셀들은 각각의 로터리 사이클 내에서 8개의 비트 패턴 변화를 겪는데, 각각의 패턴은 8개의 서수 중 하나를 나타낸다. 각각의 연속 패턴 변화는 단 하나의 셀의 상태 변화를 포함한다. 로터리 서브 카운터의 셀들은 제1 셀(12,16)을 갖는 제1 그룹(20) 및 제2 셀(16,18)을 갖는 제2 그룹(22)으로 편성된다. 서수 1은, 0 상태인 제1 그룹(20) 내의 제1 셀(12)을 제외한 모든 셀에서 1 상태를 가짐으로써 표현되고 있다. 서수 2는 제1 그룹의 셀 패턴을 제2 그룹에 복사하여 제2 그룹(22)의 제1 셀(16)을 0 상태로 세팅함으로써 표현되고 있다. 그 특정 셀의 상태 변화를 나타내기 위하여 제2 그룹(22)의 제1 셀(16)이 음영 처리되어 있다. 서수 3은 제1 그룹(20)의 제1 셀(12)의 0을 다시 1로 리세팅함으로써 표현되고 있다. 개별적인 셀 소거(리세팅)를 허용하지 않는 이들 비휘발성 메모리의 경우, 제1 그룹(20)의 제1 셀(12)은 그 제1 그룹(20) 전체 음영 처리하여 나타낸 바와 같이, 전체 그룹을 리세팅함으로써 리세팅될 수 있다. 제1 그룹의 나머지 셀은 이미 1 상태이므로, 이러한 그룹 와이즈(group-wise) 리세팅 단계에 의해 어떠한 추가적인 내구 사이클 패널티(endurance cycle penalty)도 부과되지 않는다.
서수 4는 제1 그룹(20)의 제2 셀(14)을 1 상태에서 0 상태로 세팅함으로써 표현되고 있다. 서수 5는 제2 그룹(22)의 전체 셀을 다시 1 상태로 리세팅함으로써 표현되고 있다. 서수 6은 제1 그룹(20)의 셀 상태 패턴을 제2 그룹(22)에 복사하여 제2 그룹의 제2 셀을 0 상태로 세팅함으로써 표현되고 있다. 서수 7은 제1 그룹(20)의 셀을 다시 1 상태로 리세팅함으로써 표현되고 있고, 서수 8은 제1 그룹(20)의 제1 셀(12)을 0 상태로 세팅함으로써 표현되고 있다. 이 시점에서, 4개의 셀을 이용하는 본 발명의 카운트 방법에서 허용되는 모든 순열이 사용되었으며, 따라서, 이진 카운터(10)는 1 카운트를 기록하였다. 다음 서수인 9는, 이진 서브 카운트의 1과, 로터리 서브 카운터의 1110에 의해 표현되고 있다. 같은 이유로, 서수 17은 이진 서브 카운터의 10과, 로터리 서브 카운터의 1110으로 표현된다. 이 카운터에 사용된 메모리 셀이 100,000 사이클의 내구 정격을 가지고 있고, 각 싸이클이 한 번의 세팅과 한 번의 리세팅을 포함한다고 가정하면, 이 카운터의 최대 카운트는 800,000(100K × 2 ×4)이 된다. 로터리 서브 카운터에 부과되는 각각의 부가적인 셀은 최대 가능 카운트에 200K를 추가시킨다.
전술한 장점에 덧붙여, 본 발명은 중복적인 회로를 필요로 하지 않고 기록 동작하는 중에 전력 손실에 기인하는 카운트의 복구를 가능하게 한다. 이러한 전력 장애가 발생하는 경우, 그 시스템이 그 후 다음 번의 카운터 값을 확인해보고, 그것이 중단된 기록인지를 판정하여 후속의 카운트 이벤트가 수행되기 전에 그 문제를 해결한다. 복구를 위해 카운터가 해야 할 것은 샘플 그룹을 배치하고 샘플 그룹 안에 있는 상태 패턴을 결함 그룹에 복사하는 것이다. 그 이유는 로터리 서브카운터에는 그 회전을 위해 0 상태 위치를 유지하는 적어도 한 그룹의 셀들이 항상 존재하기 때문이다. 에러 복구 과정의 일반적인 개요는 에러 바이트를 격리시킨 다음, 그 바이트가 기록된 위치를 카운팅 시퀀스에서 검색하여, 인접 바이트(그 시퀀스 내에서) 중의 하나로 세팅하여 시스템의 상태를 매칭시키는 것이다. 에러 복구 절차가 수행되는 경우, 전력에 장애가 발생했을 때 기록이 얼마나 진행되었는가에 따라, 최종 값은 중단된 카운트가 시작되기 전의 값, 즉 행해진 카운트가 완료된 카운트가 된다.
본 발명의 바람직한 실시예에서, 로터리 서브 카운트의 셀들은 도 2에 도시된 바와 같이 바이트 사이즈 그룹으로 편성된다. 간단하게 하기 위해, 오직 3 바이트만 사용하는 로터리 카운터의 카운팅을 설명하기로 한다. 그러나, 일단 카운팅 방법이 설명되면, 용도에 필요한 만큼 많은 바이트를 수용하기 위한 카운팅 방법을 쉽게 늘릴 수 있다.
도 2에 도시된 로터리 서브 카운터에서는, 24개의 셀들이 셀의 제1 바이트(30)의 셀들, 제2 바이트(32)의 셀들 및 제3 바이트(34)의 셀들을 포함하는 3 바이트 와이드 그룹의 셀들로 편성된다. 24개의 셀들로, 로터리 사이클 당 48개의 서수가 표현된다. 각 셀에 대해 100K의 내구 사이클을 가정하면, 이 카운터에 대해 가능한 최대 카운트는 480만개이다. 제1 서수는 로터리 서브 카운터의 나머지 셀이 1 상태에 있는 동안 제1 바이트(30)의 최우측 셀이 0 상태를 가짐으로써 다시 표현된다. 제2 서수 및 제3 서수는 각각의 바이트(32, 34)의 최우측 셀을 연속적으로 0상태로 세팅하여, 제1 바이트의 패턴을 각각의 다른 바이트에 차례로 복사함으로써 표현된다. 제4 서수 및 제5 서수는 제1 바이트 및 제2 바이트(30 및 32)를 연속적으로 모두 1로 리세팅하여, 제3(마지막) 바이트(34)만 상이한 패턴으로 남겨둠으로써 표현된다. 다음 2개의(제6 및 제7) 서수는 제1 바이트(30)의 우측에서 2번째 셀을 0 상태로 세팅한 후, 제3 바이트(34)를 모두 1들로 다시 리세팅함으로써 표현된 다. 다음 서수들은 제1 바이트(30)의 새로운 패턴을 다른 각각의 바이트(제3 바이트 또는 마지막 바이트를 포함함)에 복사한 후 마지막 바이트를 제외한 모두 1로 연속해서 리세팅하며, 제1 바이트(30)내의 0 상태의 단일 비트를 갖는 새로운 패턴을 세팅하고, 마지막 바이트를 모두 1들로 리세팅하며, 이러한 시퀀스를 반복함으로써 계속해서 표현된다. 이러한 과정은 모든 바이트 내의 모든 셀 또는 비트가 정확히 한 번의 내구 사이클을 진행할 때까지(한 번의 세팅하는 것과 한 번의 리세팅하는 것) 유사한 방법으로 계속된다.
제1 바이트, 제2 바이트 등에서 최종 바이트와 같은 특정 바이트의 지정은 임의적이고, 즉 세팅 및 리세팅을 위한 바이트 시퀀스는 어떤 임의의 순서가 될 수 있다. 실제, 세팅 및 리세팅 양자에 있어서 제1 바이트 및 마지막 바이트가 서로 동일하면, 그 세팅 및 리세팅 순서가 심지어 다를 수도 있다. 마찬가지로, 지정이 전체 로터리 사이클 전반에 걸쳐 일관성이 있으면, 임의의 바이트내의 0으로 세팅될 제1, 제2 등의 비트의 지정은 임의적이며, 임의의 지정된 순서로 행해질 수 있다. 이러한 카운팅 방법을 실제로 구현함에 있어서, 소프트웨어 루틴 혹은 하드웨어 배선(wiring)을 이용하여, 코딩 및 설계 단계 중에 카운트에 있어서의 세팅 및 리세팅 순서를 임의로 결정할 수 있다.
원하는 내구성 향상에 따라, 로터리 카운터의 셀들 또는 비트의 수 n은 구현하는 것마다 다를 수 있다. 셀은 둘 이상의 셀로 이루어지는 동일 사이즈 그룹으로 균분될 수 있다. 로터리 사이클의 서수들의 수는 항상 2·n 개이다.
전술한 예는 각 바이트의 1상태의 셀들을 통한 0상태의 시프팅에 의한 카운터의 기능을 보여주고 있지만, 달리 표현하면, 각 바이트의 0상태의 셀들을 통한 1상태의L 시프팅이 있는 것으로 쉽게 설명될 수 있다. 본 발명의 한 가지 중요한 양태는 카운트당 단 하나의 셀 변경이 있다는 사실이다. 본 발명의 다른 한 가지 중요한 양태는 셀의 리세팅 단계가 내구 사이클 상의 어떠한 패널티도 없이 전체 바이트를 리세팅함으로써 구현될 수 있다는 사실에 있다. 본 발명의 또 다른 양태는 모든 서수적인 표현에 있어서, 그 회전 내에서 0 상태의 위치를 추적하는 적어도 하나의 바이트가 존재한다는 사실에 있다. 그 결과, 단일 바이트 상의 프로그래밍 장애에 기인한 카운팅 에러는 정확한 시퀀스를 갖는 바이트의 위치를 결정하고 그 시퀀스를 장애가 발생된 바이트에 복사함으로써 보정될 수 있다.
또한, 전술한 예들에서는 제1 그룹의 비트 패턴을 각각의 다른 그룹에 복사 하는 시퀀스는, 이들 그룹을 리세팅하는 단계들의 시퀀스로부터 분리되지만, 제1 그룹상의 신규한 비트 패턴이 최종 그룹의 리세팅 전에 설정되는 것을 제외하고는 복사와 리세팅이 삽입되는 사이클을 구성할 수도 있다. 즉, 제1 비트 패턴이 최종 그룹에 복사될 때까지는, 제1 비트 패턴이 제1 그룹에 설정되고, 그 제1 비트 패턴은 제2 그룹에 복사되며, 제1 그룹이 리세팅되고, 제1 복사 패턴이 제3 그룹에 복사되며, 제2 그룹이 리세팅 되는 등의 과정이 이어지고, 로터리 카운터에 있는 모든 비트가 한번 세팅 및 리세팅될 때까지, 마지막 다음 그룹(next-to-last group)이 리세팅되고, 제2 비트 패턴이 제1 그룹에 설정되며, 최종 그룹이 리세팅되고, 제 2 패턴을 이용하여 복사 및 리세팅 시퀀스가 계속되는 등의 시퀀스가 정해질 수 있다. 또한, 소정 그룹 내의 각 비트 패턴은 그 그룹에 대하여 단 하나의 비트 또는 셀에서 0인 것을 특징으로 한다. 종전처럼, 그러한 그룹의 각 비트는 사이클 당 한 번만 1에서 0으로, 그리고 그 역으로 바뀐다.
예를 들어, 도 3에서, 12개의 셀들이 4개의 3비트 그룹(40, 42, 44, 46)으로 편성된다. 제1의 서수는 다시 나머지 셀들이 1 상태에 있는 동안 제1 그룹(40) 내에 0 상태의 최우측 셀을 가짐으로써 표현된다. 제2 및 제3 서수들은 제2 그룹(42) 내의 최우측 셀을 연속해서 세팅한 후 제1 그룹(40) 내의 모든 셀들은 리세팅함으써 표현된다. 제3 셀 그룹(44)과 제4 셀 그룹(46)에 대해서 동일한 세팅 및 리세팅 패턴이 반복되는데, 각 세팅/리세팅은 새로운 서수를 표현한다. 최종(제4) 그룹(46) 내의 최우측 셀이 일단 세팅되면, 이어서 제3 그룹 내의 모든 셀들이 리세팅되고, 그 다음 서수(이 예에서는 수 8)는 제1 그룹 내의 제2 셀을 세팅함으로써 표현된다. 이러한 프로세스는 각 그룹 내의 모든 셀이 정확히 한 번의 내구 사이클을 겪을 때까지 그렇게 택일적으로 세팅 및 리세팅하는 시퀀스로 계속된다.
이들 모든 예에 있어서, 이진 서브 카운터는 평소처럼 작동하지만, 그것은 단지 카운트의 보다 상위 비트를 추적하기 때문에, 그것의 내구성은 2·n의 인수(식중, n은 비트 사이즈임)만큼 연장된다. 이진 서브 카운터는 각 로터리 카운트 사이클 후에 단지 상태를 바꾼다. 그 이진 서브 카운터에는 임의의 공지된 카운팅 방법이 사용될 수 있다. 보통의 이진 카운터에 추가하여, 그레이 코드 카운터, 이진화 십진 코드 카운터, 선형 피드백 시프트 레지스터 카운터 및 그 외의 더 많은 것들이 사용될 수 있다.
전술한 디지털 카운터는 보안 칩의 암호 처리 모듈을 구현하는 데 아주 적합하다. 그러한 암호 시스템들은 ("오래된" 정보가 부정하게 재사용될 수 있는 경우에) 다양한 종류의 되풀이 공격(replay attack)을 방지하기 위하여 트랜잭션마다 식별 태그(unique tag)를 부여하는 것을 필요로 한다. 본 발명의 비휘발성 디지털 카운터는 개인 암호 트랜잭션들을 태깅(to tag)하는 데 사용될 수 있다. 예를 들면, 7년 동안 중단없이 초당 한 번씩 카운트를 제공할 필요가 있는 시스템을 구현하기 위해서는, 카운터가 22억(또는 228 보다 약간 작은 수)까지 카운트할 수 있어야 한다. 사용되는 비휘발성 메모리가 십만 프로그래밍 사이클로 특징지워지고 그 사이클에 적합한 것으로 가정하면, 16비트 이진 서브 카운터는 최대 십만 내구 사이클들을 미리 계산해 두어야 하고, 1100비트의 로터리 서브 카운터는 2200개의 서수들을 표현하는 것이 필요하다. 바이트 와이즈 메모리 시스템을 사용하여 그러한 카운터를 구현하기 위해서는, 로터리 서브 카운터에 138 바이트의 비활성 메모리들이 필요하게 된다. 암호 시스템에는 이들 형태의 단조 카운터(monotonic counter)에 대한 다른 용도가 있음은 물론이다. 예를 들면, 그 단조 카운터들은 주어진 자원을 이용하여 수행되는 트랜잭션의 수를 제한하는 데 사용될 수 있다. 그 단조 카운터들은 다양한 알고리즘을 식별 초기화 벡터(unique initialization vectors) 스트림을 형성하는 데에도 사용될 수 있다.

Claims (16)

  1. 제1 상태 또는 제2 상태를 저장할 수 있는 저장 셀들로서 비휘발성 메모리를 이용하는 디지털 카운터를 이용하는 카운팅 방법으로서,
    a) 상기 셀들을, 카운터로서 기능하는 J개의 셀들을 구비한 상위 그룹(MSG) 및 로터리 카운터로서 기능하는 K개의 셀들을 구비한 하위 그룹(LSG)-J는 1보다 큰 임의의 정수이고, K는 3보다 큰 임의의 정수임-등 두 그룹으로 편성하는 단계와;
    b) 상기 LSG를 각기 M개의 셀을 구비한 L개의 서브 그룹들(LSG 서브 그룹들)-M은 1보다 큰 임의의 정수이고, M과 L의 곱은 K이며, 모든 LSG 서브 그룹 내의 모든 셀은 제1 상태임-으로 편성하는 단계와;
    c) 제1 LSG 서브 그룹 내의 제1 셀을 제2 상태로 세팅함으로써 제1 서수를 표현하는 단계;
    d) 각각의 나머지 LSG 서브 그룹 내의 제1 셀을 제2 상태로 계속해서 세팅함으로써 후속 세트의 서수들을 표현하는 단계와;
    e) 제1 LSG 서브 그룹의 제1 셀을 역으로 제1 상태로 리세팅한 후, L번째 LBG 서브 그룹을 제외한 나머지 모든 LSG 서브 그룹에 대하여 그러한 리세팅을 계속함으로써 다음 세트의 서수들을 표현하는 단계와;
    f) 제1 LBG 그룹 내의 제2 비트를 순차적으로 제2 상태로 세팅한 후 그 L번째 LBG 서브 그룹 내의 제1 셀을 역으로 제1 상태로 리세팅함으로써 다음 2개의 서수들을 표현하는 단계와;
    g) 모든 LSG 서브 그룹 내의 모든 셀이 정확하게 한 번 세팅 및 리세팅 될 때까지 각 LSG 서브 그룹 내의 특정 셀의 세팅 및 리세팅 패턴을 반복함으로써 후속 서수들을 표현하는 단계와;
    h) LSG 로터리 카운터가 단계 c에서 설명된 제1 서수로 시작하여 다시 시작하는 동안, 카운트를 상기 MSG 카운터에 1씩 증분시키는 단계
    를 포함하는 카운팅 방법.
  2. 제1항에 있어서, M은 8의 배수인 카운팅 방법.
  3. 제1항에 있어서, 제1 LBG 서브 그룹 내의 제1 비트를 제2 상태로 세팅하는 단계는 제1 바이트를 리세팅하는 단계에 후속하여, 그러나 최종 바이트의 리세팅 전에 수행되는 것인 카운팅 방법.
  4. 제1항에 있어서, LSG 서브 그룹 내의 모든 셀이 사용되는 비휘발성 메모리 셀들의 내구 사이클과 동일한 수의 세팅-리세팅 사이클들을 거쳤을 때 최대 카운트에 도달하는 것인 카운팅 방법.
  5. 제4항에 있어서, 상기 값 J는 내구 사이클 한계까지 이진 카운팅을 허용할 수 있을 만큼 충분히 큰 것인 카운팅 방법.
  6. 제1항에 있어서, 비휘발성 메모리는 각 셀의 제1 상태로부터 제1 상태로의 세팅을 허용하지만, 리세팅은 전체 서브 그룹을 단위로 하여 한 번만 행해질 수 있는 것인 카운팅 방법.
  7. 제1항에 있어서, 상기 카운팅 방법은 소프트웨어 프로그램으로 엔코딩되는 것인 카운팅 방법.
  8. 제1항에 있어서, 상기 카운팅 방법은 로직 하드웨어 소자들로 구현되는 것인 카운팅 방법.
  9. 각기 제1 상태 또는 제2 상태를 저장할 수 있는 저장 셀들로서 비휘발성 메모리를 이용하는 디지털 카운터를 이용하는 카운팅 방법으로서,
    a) 상기 셀들을, 카운터로서 기능하는 J개의 셀들을 구비한 상위 그룹(MSG)과 로터리 카운터로서 기능하는 K개의 셀들을 구비한 하위 그룹(LSG)- J는 1 보다 큰 임의의 정수이고, K는 3보다 큰 임의의 정수-등 두 그룹으로 편성하는 단계와;
    b) 상기 LSG를 각기 M개의 셀을 구비한 L개의 서브 그룹들(LSG 서브 그룹들)-M은 1보다 큰 임의의 정수이고, M과 L의 곱은 K이며, 모든 LSG 서브 그룹 내의 모든 셀은 제1 상태임-으로 편성하는 단계와;
    c) 제1 LSG 서브 그룹 내의 제1 셀을 제2 상태로 세팅함으로써 제1 서수를 표현하는 단계;
    d) 다음 서브 그룹 내의 제1 셀을 제2 상태로 계속해서 세팅하고, 이어서 선행 서브 그룹 내의 모든 셀들을 제1 세트로 세팅함으로써, 후속되는 서수들을 표현하는 단계와;
    e) 일단 최종 그룹 내의 제1 셀이 제2 상태로 세팅되고, 제2 그룹에서 최종 그룹 내의 셀들이 리세팅되면, 제1 그룹 내의 제2 셀을 계속해서 제2 상태로 세팅하고 최종 그룹 내의 모든 셀들을 리세팅함으로써, 다음의 두 서수들을 표현하는 단계와;
    f) 각 그룹 내의 모든 셀이 정확히 한번 세팅 및 리세팅될 때까지 각 LBG 서브 그룹 내의 특정 셀의 전술한 세팅 및 리세팅 패턴을 반복함으로써 후속 서수들을 표현하는 단계와;
    g) LSG 로터리 카운터가 단계 c에서 설명된 제1 서수로 시작하여 다시 시작하는 동안, 카운트를 상기 MSG 카운터에 1씩 증분시키는 단계
    를 포함하는 카운팅 방법.
  10. 제9항에 있어서, M은 8의 배수인 것인 카운팅 방법.
  11. 제9항에 있어서, 제1 LSG 서브 그룹 내의 제1 비트를 제2 상태로 세팅하는 단계는 제1 바이트를 리세팅하는 단계에 후속하여, 그러나 최종 바이트의 리세팅 전에 수행되는 것인 카운팅 방법.
  12. 제9항에 있어서, LSG 서브 그룹 내의 모든 셀이 사용되는 비휘발성 메모리 셀들의 내구 사이클과 동일한 수의 세팅-리세팅 사이클들을 거쳤을 때 최대 카운트에 도달하는 것인 카운팅 방법.
  13. 제12항에 있어서, 상기 값 J는 내구 사이클 한계까지의 이진 카운팅을 허용할 수 있을 만큼 충분히 큰 것인 카운팅 방법.
  14. 제9항에 있어서, 상기 비휘발성 메모리는 각 셀의 제1 상태로부터 제1 상태로의 세팅을 허용하지만, 리세팅은 전체 서브 그룹을 단위로 하여 한 번만 행해질 수 있는 것인 카운팅 방법.
  15. 제9항에 있어서, 상기 카운팅 방법은 소프트웨어 프로그램으로 엔코딩되는 것인 카운팅 방법.
  16. 제9항에 있어서, 상기 카운팅 방법은 로직 하드웨어 소자들로 구현되는 것인 카운팅 방법.
KR1020057013506A 2003-01-21 2003-12-16 비휘발성 메모리의 내구 한계 카운팅 방법 KR20050096947A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/348,782 2003-01-21
US10/348,782 US6792065B2 (en) 2003-01-21 2003-01-21 Method for counting beyond endurance limitations of non-volatile memories

Publications (1)

Publication Number Publication Date
KR20050096947A true KR20050096947A (ko) 2005-10-06

Family

ID=32712624

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020057013506A KR20050096947A (ko) 2003-01-21 2003-12-16 비휘발성 메모리의 내구 한계 카운팅 방법

Country Status (11)

Country Link
US (1) US6792065B2 (ko)
EP (1) EP1588320B1 (ko)
JP (1) JP2006513507A (ko)
KR (1) KR20050096947A (ko)
CN (1) CN1322469C (ko)
AU (1) AU2003300961A1 (ko)
CA (1) CA2513734A1 (ko)
DE (1) DE60313807T2 (ko)
NO (1) NO20053908L (ko)
TW (1) TW200414024A (ko)
WO (1) WO2004068273A2 (ko)

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7551706B2 (en) * 2004-12-03 2009-06-23 Kyocera Mita Corporation Counter device and counting method
WO2007076492A2 (en) * 2005-12-28 2007-07-05 Sandisk Corporation Methods and systems for writing non-volatile memories for increased endurance
US20070150644A1 (en) * 2005-12-28 2007-06-28 Yosi Pinto System for writing non-volatile memories for increased endurance
DE102007024410B4 (de) * 2007-05-25 2009-04-23 Siemens Ag Verfahren zum Betreiben eines Zählers und Zähler-Schaltungsanordnung
CN101339807B (zh) * 2007-07-02 2010-09-15 晶豪科技股份有限公司 非易失性半导体存储器的编程方法及其电路
US7573969B2 (en) * 2007-09-27 2009-08-11 Sandisk Il Ltd. Counter using shift for enhanced endurance
US7526059B1 (en) 2007-12-27 2009-04-28 Sandisk Il Ltd. Balanced Grey code utilization to increase NVM endurance
JP5200688B2 (ja) * 2008-06-19 2013-06-05 コニカミノルタビジネステクノロジーズ株式会社 カウントデータ記録装置、および、カウントデータ記録方法
US20110103540A1 (en) * 2009-10-29 2011-05-05 Wassermann Gary M Multiple base counter representation
US8189732B1 (en) * 2010-11-17 2012-05-29 Atmel Corporation Non-volatile memory counter
US8761332B2 (en) * 2012-09-24 2014-06-24 Texas Instruments Incorporated Dynamic prescaling counters
US9030883B2 (en) * 2013-07-16 2015-05-12 Freescale Semiconductor, Inc. Adaptive erase recovery for non-volatile memory (NVM) systems
KR102282962B1 (ko) * 2014-12-22 2021-07-30 삼성전자주식회사 스토리지 장치 및 스토리지 장치의 동작 방법
US10585610B1 (en) * 2016-09-30 2020-03-10 EMC IP Holding Company LLC Locking data structures with locking structures in flash memory by setting bits in the locking structures
JP2019057172A (ja) * 2017-09-21 2019-04-11 東芝メモリ株式会社 メモリシステムおよび制御方法
US10810060B2 (en) * 2017-10-26 2020-10-20 SK Hynix Inc. Event management for embedded systems
US11056192B2 (en) * 2018-12-21 2021-07-06 Micron Technology, Inc. Monotonic counters in memories
US11579784B2 (en) * 2019-11-27 2023-02-14 Micron Technology, Inc. Refresh counters in a memory system
US11567691B2 (en) * 2020-01-22 2023-01-31 Infineon Technologies LLC Continuous monotonic counter for memory devices
FR3120760B1 (fr) 2021-03-15 2023-03-03 Proton World Int Nv Compteur Monotone
FR3120759B1 (fr) * 2021-03-15 2023-02-17 Proton World Int Nv Compteur monotone
US11901899B2 (en) 2021-04-26 2024-02-13 Winbond Electronics Corp. Monotonic counter memory system

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4947410A (en) 1989-02-23 1990-08-07 General Motors Corporation Method and apparatus for counting with a nonvolatile memory
US6084935A (en) 1998-08-13 2000-07-04 Microchip Technology Incorporated Binary counter and method for counting to extend lifetime of storage cells
US6249562B1 (en) * 1999-08-23 2001-06-19 Intel Corporation Method and system for implementing a digit counter optimized for flash memory

Also Published As

Publication number Publication date
CN1322469C (zh) 2007-06-20
US20040141580A1 (en) 2004-07-22
TW200414024A (en) 2004-08-01
CA2513734A1 (en) 2004-08-12
EP1588320B1 (en) 2007-05-09
EP1588320A2 (en) 2005-10-26
WO2004068273A3 (en) 2004-12-09
DE60313807D1 (de) 2007-06-21
NO20053908L (no) 2005-10-20
NO20053908D0 (no) 2005-08-22
US6792065B2 (en) 2004-09-14
EP1588320A4 (en) 2006-03-29
DE60313807T2 (de) 2008-01-24
CN1754180A (zh) 2006-03-29
AU2003300961A1 (en) 2004-08-23
JP2006513507A (ja) 2006-04-20
AU2003300961A8 (en) 2004-08-23
WO2004068273A2 (en) 2004-08-12

Similar Documents

Publication Publication Date Title
KR20050096947A (ko) 비휘발성 메모리의 내구 한계 카운팅 방법
JP4653738B2 (ja) フラッシュメモリセルの動作方法、およびフラッシュメモリデバイス
CN102918599B (zh) 具有基本程序序列和写中止检测的非易失性存储器和方法
US7716413B2 (en) Method of making a multi-bit-cell flash memory
US6781877B2 (en) Techniques for reducing effects of coupling between storage elements of adjacent rows of memory cells
USRE46995E1 (en) Programming non-volatile storage using binary and multi-state programming processes
US7984360B2 (en) Avoiding errors in a flash memory by using substitution transformations
US6542407B1 (en) Techniques of recovering data from memory cells affected by field coupling with adjacent memory cells
US6549457B1 (en) Using multiple status bits per cell for handling power failures during write operations
US20070147168A1 (en) Methods for writing non-volatile memories for increased endurance
CN101999116A (zh) 通过交叉页面扇区、多页面编码以及每一页面编码将数据存储在多级单元闪速存储器装置中的方法和设备
US20070150644A1 (en) System for writing non-volatile memories for increased endurance
KR20050027216A (ko) 저장된 데이터의 품질에 관한 정보를 사용함으로써 에러정정 코드들의 효율성을 증가시키고 멀티-레벨 메모리시스템들을 오퍼레이팅하는 방법
CN102394101A (zh) 具有自适应容量的存储设备
WO2013016393A1 (en) Data recovery for defective word lines during programming of non-volatile memory arrays
US7257668B2 (en) Method and system for enhancing the endurance of memory cells
CN110795270A (zh) 固态储存装置及其读取重试方法
KR101270685B1 (ko) 비휘발성 메모리의 데이터 처리 장치 및 방법
US6807610B2 (en) Method and apparatus for virtually partitioning an integrated multilevel nonvolatile memory circuit
US8472246B2 (en) Method of programming a multi-bit per cell non-volatile memory
KR101227368B1 (ko) 낸드 플래시 메모리 소자의 프로그래밍 방법 및 데이터읽기 방법.
Jiang et al. Information representation and coding for flash memories

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E601 Decision to refuse application