[go: up one dir, main page]

KR20010005558A - 엔코딩 방법 및 메모리 장치 - Google Patents

엔코딩 방법 및 메모리 장치 Download PDF

Info

Publication number
KR20010005558A
KR20010005558A KR1019997008621A KR19997008621A KR20010005558A KR 20010005558 A KR20010005558 A KR 20010005558A KR 1019997008621 A KR1019997008621 A KR 1019997008621A KR 19997008621 A KR19997008621 A KR 19997008621A KR 20010005558 A KR20010005558 A KR 20010005558A
Authority
KR
South Korea
Prior art keywords
data
bit
bits
output
cell array
Prior art date
Legal status (The legal status 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 status listed.)
Granted
Application number
KR1019997008621A
Other languages
English (en)
Other versions
KR100535291B1 (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
Priority claimed from JP00995798A external-priority patent/JP4099844B2/ja
Priority claimed from JP995898A external-priority patent/JPH11212876A/ja
Application filed by 이데이 노부유끼, 소니 가부시끼 가이샤 filed Critical 이데이 노부유끼
Publication of KR20010005558A publication Critical patent/KR20010005558A/ko
Application granted granted Critical
Publication of KR100535291B1 publication Critical patent/KR100535291B1/ko
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1068Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1072Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in multilevel memories
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/56Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/56Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
    • G11C11/5621Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency using charge storage in a floating gate
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/38Response verification devices
    • G11C29/42Response verification devices using error correcting codes [ECC] or parity check
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1006Data managing, e.g. manipulating data before writing or reading out, data bus switches or control circuits therefor
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/13Linear codes
    • H03M13/15Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Algebra (AREA)
  • Mathematical Physics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Error Detection And Correction (AREA)
  • Read Only Memory (AREA)

Abstract

본 발명은 다중값 기록 플래시 메모리 등에 적용할 수 있는 메모리 장치등에 관한 것이다. 플래시 메모리(10)는 16개의 값(4비트)을 기록하도록 설계되어 있다. 기록 동작시에는, 엔코더(12)가 입력 데이터 Din을 단축 리드·솔로몬 코드로 변환하여 기록 데이터 WD를 제공한다. 변환기(13)가 이런 기록 데이터 WD를 4 비트 병렬 데이터로 변환하여 셀 어레이(11)에 공급하여, 셀 어레이(11)를 구성하는 각 메모리 셀에 차례로 기록한다. 판독 동작시에는, 변환기(14)가 셀 어레이(11)로부터 판독 데이터 RD를 1바이트(8비트) 병렬 데이터로 변환하여 바이트 단위의 에러 정정을 하기 위해 디코더(15)에 공급함으로써, 출력 데이터 Dout를 얻는다. 리드·솔로몬 코드를 사용하기 때문에, 제한된 에러 정정 수로도 충분한 성능을 얻을 수 있게 된다.

Description

엔코딩 방법 및 메모리 장치{ENCODING METHOD AND MEMORY DEVICE}
최근에는,플래시 메모리등의 반도체 메모리가 메모리 장치로서 널리 사용되고 있다. 플래시 메모리에서는, 반도체 기판상에 적층 형성된 부유 게이트(전하 축적층)및 제어 게이트로 이루어지는 다수의 메모리 셀로 이루어진 셀 어레이(통상은 6500만셀정도)를 이용하여 데이터를 기억하고 있다(도 16참조). 이 경우에, 부유 게이트에 저장된 전하량의 크기에 대응하는 데이터가 각각의 셀 어레이에 기억된다.
도 17 a 및 b는 플래시 메모리에 이용하는 메모리 셀(100)의 구조를 도시하고 있다. 즉, 메모리 셀(100)은, 반도체 기판(101)상의 전하 축적층(부유 게이트) (102) 및 제어 게이트(103)를 적층하도록 형성되어 있다. 데이터가 메모리 셀(100)에 기록된 때에는, 부유 게이트(102)에 축적된 전하량을 제어함으로써 전하량이 기억된 데이터("0" 또는“1")에 따라서 도 18에 도시된 2개의 임계치 전압중 하나에 도달한다. 한편, 2개의 임계치 전압의 사이에 설정된 기준 전압을 이용하여 메모리 셀(100)로부터 데이터를 판독하는 경우에는, 메모리 셀(100)의 임계치 전압이 기준 전압보다 높은지 낮은지에 따라서, 그 메모리 셀(100)의 데이터가 “0"인지“1"인지에 대한 판단이 이루어 진다.
고집적 및 고밀도 회로 구현에 수반하는 여러 가지의 영향에 의한 신뢰성 저하를 막는 것이 반도체 메모리에서는 중요한 과제로 되어 있다. 메모리 장치의 신뢰성을 유지하기 위한 노력으로서, 허밍 코드(hamming code)와 같은 에러 정정 코드를 이용한 에러 정정 회로를 반도체 메모리의 내부에 내장하는 것이 있는데, 이렇게 함으로서 기록 및 삭제 동작의 증가에 따르는 셀 불량과 같은 노쇠화에 의해 일어나는 불량의 방지할 수 있다.
에러 정정 코드는 정보 데이터에 부가된 검사 데이터라고 불리는 부수 코드(redundant code)이고, 이러한 검사 데이터를 이용함으로써 코드내의 에러를 정정한다. 예를 들면, 도 19에 도시한 바와 같은 10 비트의 검사 데이터가 정보 데이터의 512 비트 블럭에 대한 단축 허밍 코드에 부가되어 되어, 심지어 522 비트의 코드의 속에 하나의 에러가 생기더라도 그 에러를 정정하는 것이 가능하게 된다.
도 20은 허밍 코드를 이용한 에러 정정 회로를 포함하는 플래시 메모리(110)의 구성을 도시하고 있다. 이 플래시 메모리(110)는 다수의 메모리 셀을 구비한 셀 어레이(111), 입력 데이터 Din 을 단축 허밍 코드로 변환하여 셀 어레이(111)에 기록하기 위한 기록 데이터 WD를 얻는 엔코더(112), 및 셀 어레이(111)로부터 판독되는 판독 데이터 RD에 에러 정정 처리를 실시하여 출력 데이터 Dout를 얻는 허밍코드 디코더(113)를 포함한다. 이 경우에, 엔코더(112) 및 허밍 코드 디코더(113)는 에러 정정 회로를 구성하고 있다. 그리고, 엔코더(112)가 입력 데이터 Din의 512 비트 블럭마다 10 비트의 검사 데이터가 부가함으로써, 512 비트의 정보 데이터에 대한 단축 허밍 코드를 생성한다.
도 20에 도시된 플래시 메모리(110)에서의, 데이터의 기록은 아래와 같이 행하여진다. 즉, 입력 데이터 Din이 엔코더(112)에 입력된다. 그리고, 이 엔코더(112)는 입력 데이터 Din이 512비트의 정보 데이터에 대한 단축 허밍 코드로 변환시켜서 기록 데이터 WD을 발생시킨다. 엔코더(112)로부터 출력되는 기록 데이터 WD는 셀 어레이(111)에 공급되어 기록된다.
한편, 데이터의 판독은 다음과 같이 행하여진다. 셀 어레이(111)로부터 복원된 판독 데이터 RD는 허밍 코드 디코더(113)에 입력된다. 만약, 판독 데이터 RD의 하나의 코드에도 에러가 없으면 허밍 코드 디코더(113)는 정보 데이터를 그대로 출력 데이터 Dout로 출력시킨다. 만약, 판독 데이터 RD의 하나의 코드가 하나의 에러 비트를 가질 경우에는, 정보 데이터에 대해 에러를 정정한 후 출력 데이터 Dout로 출력시킨다.
또한, 단축 BCH 코드(Bose-Chaudhuri-Hocquenghem code)을 하나의 코드에 두개의 에러를 정정할 수 있는 에러 정정 코드로 사용하는 경우를 하나의 예로서 설명하겠다. BCH 코드 및 코드의 단축에 관하여는 하이데키 이마이(Hideki Imai) 저 "코드 이론"(일본 전자 정보 통신 학회)등의 문헌에 상세히 설명되어 있다. 예를 들면, 도 21에 도시된 512 비트 정보 데이터에 대한 단축 BCH 코드에는 20 비트의 검사 데이터가 부가됨으로써, 532 비트 코드의 속에 2 개의 에러가 생기더라도 에러를 정정하는 것이 가능하게 된다.
도 22는 BCH 코드를 이용한 에러 정정 회로를 포함한 플래시 메모리(120)의 구성을 도시하고 있다. 이 플래시 메모리(120)는 다수의 메모리 셀을 구비한 셀 어레이(121), 입력 데이터 Din을 단축 BCH 코드에 변환함으로써 셀 어레이121에 기록되는 기록 데이터 WD를 제공하는 엔코더(122), 및 셀 어레이(121)로부터 판독되는 판독 데이터 RD를 에러 정정 처리함으로써 출력 데이터 Dout를 제공하는 BCH 디코더(123)를 포함한다. 이 경우, 엔코더(122) 및 BCH 코드 디코더(123)는 에러 정정 회로를 구성하고 있다. 엔코더(122)는 입력 데이터 Din의 512 비트 블럭마다 20 비트의 검사 데이터를 부가함으로써, 512 비트의 정보 데이터에 대해 두개의 에러를 정정할 수 있는 단축 BCH 코드를 발생시킨다.
도 22에 도시된 플래시 메모리(120)에서의, 데이터 기록은 다음과 같이 행하여진다. 입력 데이터 Din이 엔코더(122)에 입력된다. 이 엔코더(122)가 입력 데이터 Din을 512비트의 정보 데이터에 대한 단축 BCH 코드로 변환하여 기록 데이터 WD를 발생시킨다. 엔코더(122)로부터 출력되는 기록 데이터 WD는 셀 어레이(121)에 공급되어 기록된다.
한편, 데이터의 판독은 다음과 같이 행하여진다. 셀 어레이(121)로부터 판독된 판독 데이터 RD는 BCH 코드 디코더(123)에 입력된다. BCH 코드 디코더(123)는 판독 데이터 RD의 하나의 코드내에 어떠한 에러도 없으면 정보 데이터를 그대로 출력 데이터 Dout로 출력한다. 만약, 판독 데이터 RD의 하나의 코드내의 에러의 비트 수가 1 또는 2일 경우에는, 정보 데이터에 대해 에러를 정정한 후에 출력 데이터 Dout로 출력한다.
도 20 및 22에 도시된 바와 같이, 플래시 메모리(110 또는 120)의 내부에 포함된 에러 정정 회로는 노쇠화에 의해서 어느 정도의 셀 불량이 일어나더라도, 기록된 데이터의 에러를 억제할 수 있다. 그러나, 일반적인 에러 정정 코드에서는 많은 수의 에러를 정정하기 위해서 부가 검사 데이터를 많이 갖게 되는데, 사용되는 메모리 셀의 수의 증가와 함께 에러 정정 회로의 크기도 커진다.
또한, 다수의 플래시 메모리(플래시 메모리 칩)로 구성된 메모리 카드에 대해서 설명하겠다. 단일 칩 플래시 메모리로는 취급할 수 없는 양의 데이터를 기억하기 위한 메모리 장치로서, 메모리 카드는 다수의 플래시 메모리 및 제어기를 포함한다.
도 23은 BCH 코드를 이용한 에러 정정 회로를 갖는 제어기를 포함하는 메모리 카드(130)의 구조를 도시하고 있다. 이 메모리 카드(130)는 2개의 플래시 메모리(131, 132) 및 이들 플래시 메모리(131, 132)에 대하여 데이터 기록 또는 판독을 위한 제어기(133)를 포함하고 있다.
제어기(133)는 카드 외부와의 데이터를 교환하기 위한 카드 인터페이스(134), 입력 데이터 Din을 단축 BCH 코드에 변환함으로써 플래시 메모리(131, 132)에 기록되는 기록 데이터 WD를 제공하는 엔코더(135), 플래시 메모리(131, 132)로부터 판독되는 판독 데이터 RD에 대해 에러 정정 처리를 실시하여 출력 데이터 Dout를 제공하는 BCH 코드 디코더(136), 및 플래시 메모리(131, 132)로/부터 데이터를 기록/판독하는 동작을 제어하는 플래시 인터페이스(137)를 포함하고 있다.
상기의 구성에서, 엔코더(135) 및 BCH 코드 디코더(136)는 에러 정정 회로를 구성하고 있다. 엔코더(135)는 입력 데이터 Din의 512 비트 블럭마다 20 비트의 검사 데이터가 부가함으로써, 512 비트의 정보 데이터에 대해 2개의 에러를 정정할 수 있는 단축 BCH 코드를 발생시킨다.
도 23에 도시된 메모리 카드(130)에서의, 데이터의 기록은 다음과 같이 행해진다. 입력 데이터 Din은 카드 인터페이스(134)에 의해 먼저 카드에 수용되어, 엔코더(135)에 제공된다. 이 엔코더(135)는 입력 데이터 Din를 512 비트의 정보 데이터에 대한 단축 BCH 코드로 변환함으로써 기록 데이터 WD를 발생시킨다. 엔코더(135)로부터 출력되는 기록 데이터 WD는 플래시 인터페이스(137)에 의해 제어되어 플래시 메모리(131 또는 132)에 기록된다.
한편, 데이터의 판독은 다음과 같이 행해진다. 플래시 인터페이스(137)는 플래시 메모리(131 또는 132)로부터 판독된 판독 데이터 RD가 BCH 코드 디코더(136)에 입력되도록 제어한다. BCH 코드 디코더(136)는 판독 데이터 RD 의 하나의 코드내에 어떠한 에러도 없으면, 정보 데이터가 그대로 출력 데이터 Dout로 출력한다. 만약, 판독 데이터 RD의 하나의 코드내의 에러 비트 수가 1 또는 2인 경우에는, 정보 데이터에 대하여 에러를 정정한 후에 출력 데이터 Dout로 출력한다. 이러한 방식에 따라서, BCH 코드 디코더(136)로부터 출력되는 출력 데이터 Dout는 카드 인터페이스(134)를 통해 카드 외부로 출력된다.
상기에서 진술한 바와 같이, 에러 정정 코드는 다수의 플래시 메모리로 구성된 메모리 카드에도 이용될 수 있다. 제어기로 에러 정정을 하는 경우, 플래시 메모리에 내장된 에러 정정 회로보다 큰 에러 정정 회로를 갖을 수 있기 위해서, 보다 많은 에러를 정정할 수 있다고 하는 특징이 있다.
또한, 플래시 메모리의 다중값 기록에 관해서 진술한다. 최근, 플래시 메모리의 기억 용량을 증대시키기 위해서 1개의 셀에 다중 비트를 기억하는 플래시 메모리가 제안되어 있다. 예를 들면, 도 24 a 내지 d에 도시된 바와 같이, 4 개의 다중값을 기록하는 플래시 메모리의 메모리 셀(100)에서 부유 게이트(102)에 축적된 전하 량을 제어함으로써, 저장된 데이터 항목(“11", "10", “01" 또는 "O0")를 나타내는 도 25에 도시된 4개의 임계치 전압중 하나를 얻을 수 있다. 데이터를 판독하기 위해서는, 각각의 임계치 전압의 사이에 각각 설치한 3개의 기준 전압을 이용한다. 메모리 셀(100)의 임계치 전압과 각각의 기준 전압을 비교함으로써, 메모리 셀(100)의 데이터을 판독한다. 이러한 배치에 의해서, 1개의 메모리 셀(100)에 2 비트의 정보를 저장할 수 있다.
2진 기록의 경우와 마찬가지로, 다중값 기록의 플래시 메모리도 에러 정정 회로를 이용할 수 있다. 도 26은 BCH 코드를 이용한 에러 정정 회로를 내부에 내장한 16 개의 값(4비트)을 저장할 수 있는 플래시 메모리(140)의 구조를 도시하고 있다. 플래시 메모리(140)는 다수의 메모리 셀을 갖는 셀 어레이(141), 입력 데이터 Din을 단축 BCH 코드로 변환함으로써 셀 어레이(141)에 기록되는 기록 데이터 WD를 제공하는 엔코더(142), 및 엔코더(142)로부터 출력되는 기록 데이터 WD를 직렬 데이터 포맷(serial data format)에서 4 비트 병렬 데이터 포맷으로 변환하여 셀 어레이(141)에 제공하기 위한 1 비트/4 비트 변환기(143)를 포함하고 있다.
또한, 플래시 메모리(140)는 셀 어레이(l41)로부터 복구되는 판독 데이터 RD를 4 비트 병렬 데이터 포맷에서 직렬 데이터 포맷으로 변환하는 4 비트/1 비트 변환기(144), 및 4 비트/1 비트 변환기(144)에 의해 직렬 데이터로 변환된 판독 데이터 RD에 대해 에러 정정 처리를 실시하여 출력 데이터 Dout를 얻는 BCH 코드 디코더(145)를 포함하고 있다. 이 경우, 엔코더(142) 및 BCH 코드 디코더(145)가 에러 정정 회로를 구성하고 있다. 그리고, 엔코더(142)는 입력 데이터 Din의 512 비트블럭마다 20 비트의 검사 데이터를 부가하여, 512 비트의 정보 데이터에 대한 두개의 에러를 정정할 수 있는 단축 BCH 코드를 발생시킨다.
도 26에 도시된 플래시 메모리(140)에 있어서, 데이터의 기록은 다음과 같이 행하여 진다. 입력 데이터 Din이 엔코더(142)에 입력 된다. 엔코더(142)는 입력 데이터 Din를 512 비트의 정보 데이터에 대한 단축 BCH 코드로 변환하여 기록 데이터 WD를 발생시킨다. 엔코더(142)로부터 출력되는 기록 데이터 WD는 1 비트/4 비트 변환기(143)에 의해 직렬 데이터 포맷에서 4 비트 병렬 데이터 포맷(메모리 셀에 저장하기 위한 4 비트 데이터)으로 변환하여 셀 어레이(141)에 제공되고, 셀 어레이(141)를 구성하는 각각 메모리 셀에 순서대로 저장된다.
한편, 데이터의 판독은 다음과 같이 행하여진다. 셀 어레이(141)로부터 복구된 판독 데이터 RD는 4 비트/1 비트 변환기(144)에 의해 4 비트 병렬 데이터 포맷에서 직렬 데이터 포맷으로 변환되어 BCH 코그 디코더(145)에 공급된다. BCH 코드 디코더(145)는 판독 데이터 RD의 하나의 코드내에 어떠한 에러도 없으면 정보 데이터를 그대로 출력 데이터 Dout로 출력한다. 만약, 판독 데이터 RD의 하나의 코드내의 에러 비트 수가 1 또는 2일 경우에는, 정보 데이터에 대해 에러를 정정한후에 출력 데이터 Dout로 출력한다.
도 26에 도시된 플래시 메모리(140)와 같은 다중값을 기록할 수 있는 플래시 메모리는 1 개의 셀 불량이 다수의 비트에 에러를 발생시킨다는 특징이 있다. 종래의 플래시 메모리는 1 개의 메모리 셀에 1 비트를 저장하기 때문에, 에러 정정 코드는 비트 에러를 정정하는 코드가 주로 사용되어 왔지만, 만약 단일 메모리 셀의 불량이 다수의 비트에 에러를 발생시킨다면, 비트 단위 에러를 정정하는 코드로서는 효율이 나빠지게 된다.
예를 들면, 하나의 메모리 셀에 4 비트 데이터를 저장하는 플래시 메모리에서는, 하나의 메모리 셀이 액세스 불능 상태가 된다면, 이러한 에러를 정정하기 위해서 4 정정 코드를 이용해야 한다. 상기에서 설명한 대로, 상술한 에러 정정 코드를 이용해서 많은 에러를 정정하고자 한다면, 에러 정정 회로가 커지기 때문에 회로 규모가 커지는 문제가 발생한다. 또한, 많은 에러를 정정하기 위해서는 보다 많은 부수 데이터를 부가해야 하기 때문에, 많은 메모리 셀이 필요하게 된다고 하는 문제도 생긴다.
본 발명의 목적은 규모가 작은 에러 정정 회로 및 적은 수의 메모리 셀을 사용하는 메모리장치를 제공하여, 적은 수의 정정 에러에 대해서 충분한 성능을 유지하도록 하는데 있다. 본 발명의 또 다른 목적은 외부와의 데이터의 교환을 예를 들면 바이트 단위로 행하여 코드 길이를 확장시킬 수 있는 엔코딩 방법 및 그 방법을 이용한 메모리 장치를 제공하는 것이다.
본 발명은 다중 값 기록 플래시 메모리(flash memory)나 그것을 사용한 메모리 카드등에 양호하게 적용가능한 엔코딩 방법 및 메모리 장치에 관한 것이다.
도 1는 본 발명의 제1 실시예에 따른 플래시 메모리의 블럭도.
도 2는 단축 리드·솔로몬 코드의 개략도.
도 3은 비트 변환 동작을 설명하기 위한 도면.
도 4는 본 발명의 제2 실시예에 따른 메모리 카드의 블럭도.
도 5는 셀 어레이로부터 데이터를 판독하는 방법을 설명하기 위한 도면.
도 6은 512 바이트 정보 데이터에 대하여 하나의 에러를 정정할 수 있는 4 단축 리드·솔로몬 코드의 개략도.
도 7은 디코딩된 데이터의 연속성을 설명하기 위한 도면.
도 8은 본 발명의 제3 실시예에 따른 플래시 메모리의 구조에 대한 블럭도.
도 9는 플래시 메모리내의 엔코더의 구조를 도시한 블럭도.
도 10은 엔코딩 및 디코딩시의 정보 데이터부의 8 비트/10 비트 변환의 동작을 설명하기 위한 도면.
도 11은 엔코딩 및 디코딩시의 검사 데이터부의 8 비트/10 비트 변환의 동작을 설명하기 위한 도면.
도 12는 플래시 메모리내의 디코더의 구조를 도시하는 블럭도.
도 13은 디코딩시의 10 비트/8 비트 변환의 동작을 설명하기 위한 도면.
도 14는 디코딩된 데이터의 연속성을 설명하기 위한 도면.
도 15는 본 발명에 따른 제4 실시예에 따른 메모리 카드의 구조를 도시하는 블럭도.
도 16은 셀 어레이의 구조를 도시한 계략도.
도 17 a 및 b는 메모리 셀의 구조를 도시한 계략도.
도 18은 메모리 셀의 전압 분포를 도시한 도면.
도 19는 단축 허밍 코드의 계략도.
도 20은 단축 허밍 코드를 이용한 에러 정정 회로를 포함하는 플래시 메모리의 구조를 도시하는 블럭도.
도 21은 단축 BCH 코드의 계략도.
도 22는 BCH 코드를 이용한 에러 정정 회로를 포함하는 플래시 메모리의 구조를 도시하는 블럭도.
도 23은 단축 BCH 코드를 이용한 에러 정정 회로를 제어기에 구비하는 메모리카드의 구조을 도시하는 블럭도.
도 24 a 내지 d는 다중값 기록을 하는 경우에 메모리 셀에 축적된 전하를 도시한 도면.
도 25는 다중값 기록을 하는 메모리 셀의 전압 분포를 도시한 도면.
도 26은 단축 BCH 코드를 이용한 에러 정정 회로를 포함하는 다중값 기록 플래시 메모리의 구조을 도시한 블럭도.
본 발명의 특징에 따른 메모리 장치는 각각이 다중 비트를 저장하는 다수의 메모리 셀을 갖는 셀 어레이, 입력 데이터를 리드·솔로몬 코드에 변환함으로써 셀 어레이에 기록되는 기록 데이터를 제공하는 엔코더, 및 셀 어레이로부터 복구되는 판독 데이터에 에러 정정 처리를 실시하여 출력 데이터를 얻는 리드·솔로몬 코드 디코더를 포함한다.
본 발명의 또 다른 특징에 따르면, 메모리 장치는 각각이 다중 비트를 저장하는 다수의 메모리 셀을 갖는 셀 어레이를 구비한 메모리부, 및 메모리부로/부터 데이터 기록 또는 판독을 제어하기 위한 제어기를 포함하는데, 이러한 제어기는 입력 데이터를 리드·솔로몬코드로 변환함으로써 메모리 부에 저장되는 기록 데이터를 제공하는 엔코더, 및 메모리부로부터 복구되는 판독 데이터에 대해 에러 정정 처리를 실시하여 출력 데이터를 얻는 리드·솔로몬 코드 디코더를 포함한다.
본 발명에 있어서, 셀 어레이의 각각의 메모리 셀은 다중 비트 데이터를 저장한다. 기록 동작에서는, 엔코더가 입력 데이터를 리드·솔로몬 코드로 변환하여, 이를 셀 어레이에 저장한다. 리드·솔로몬 코드는 다수의 비트를 통합하여 1바이트로 만들여, 바이트 단위로 에러 정정을 하는 에러 정정 코드이다. 판독 동작에서는, 셀 어레이의 각각의 메모리 셀에 저장된 다중 비트 데이터가 판독되어, 이 판독 데이터에 대하여 리드·솔로몬 코드 디코더로 에러 정정 처리를 실시하여 출력 데이터가 제공한다.
이와 같이, 바이트 단위로 에러 정정을 하는 리드·솔로몬 코드가 다중 비트 데이터를 저장하는 메모리 셀로 이루어지는 메모리 장치에 대한 에러 정정 코드로서 이용됨으로써, 적은 에러 정정 수로 충분한 성능을 얻을 수 있어서 에러 정정 회로의 규모를 작게함과 동시에 사용하는 메모리 셀의 수도 적게 하는 것이 가능해진다.
또한, 본 발명의 또 다른 특징에 따르면, 엔코딩 방법은 m 비트 데이터에 (n-m) 비트 데이터를 부가하여 n 비트의 데이터로 변환하고, 이 n 비트 데이터에 대하여 n 비트를 하나의 심볼로 하는 리드·솔로몬 코드를 이용하여 엔코딩하며, 정보 데이터에 관해서는 (n-m) 비트 데이터를 부가하는 종전의 m 비트 데이터를 출력하고, 검사 데이터에 관해서는 n 비트/m 비트 변환 결과의 m 비트의 데이터를 출력하는 단계를 포함하고 있다.
또한, 본 발명의 또 다른 특징에 따르면, 메모리 장치는 다수의 메모리 셀을 갖는 셀 어레이, 입력 데이터를 에러 정정 코드에 변환함으로서 상기 셀 어레이에 기록되는 기록 데이터를 제공하는 엔코더, 및 셀 어레이로부터 복구되는 판독 데이터에 대해 에러 정정 처리를 실시하여 출력 데이터를 제공하는 디코더를 포함하는데, 엔코더는 m 비트 입력 데이터에 (n-m) 비트 데이터를 부가하여 n 비트 데이터로 변환하고, 이 n 비트 데이터에 대하여 n 비트를 하나의 심볼로 하는 리드·솔로몬 코드를 이용하여 엔코딩하며, 정보 데이터에 관해서는 (n-m) 비트 데이터를 부가하는 종전의 m 비트 데이터를 출력하고, 검사 데이터에 관해서는 n 비트/m 비트변환 결과의 m 비트 데이터를 출력한다. 반면에, 디코더는 셀 어레이의 판독 데이터에 관하는 m 비트 데이터에 대하여, 정보 데이터부가 상기 n-m 비트 데이터를 부가하여 n 비트의 데이터에 변환하고, 검사 데이터부가 m 비트/n 비트 변환에 의해 n 비트의 데이터에 변환한 후에 에러 정정 처리를 하여, 정정 후의 n 비트 정보 데이터중 m 비트를 출력 데이터로 출력한다.
또한, 본 발명의 또 다른 특징에 따르면, 메모리 장치는 다수의 메모리 셀을 갖는 셀 어레이를 포함하는 메모리부, 및 메모리부에 대하여 데이터 기록 또는 판독을 하기 위한 제어기를 포함하는데, 제어기는 입력 데이터를 에러 정정 코드로 변환함으로써 메모리부에 기록되는 기록 데이터를 제공하는 엔코더, 및 메모리부로부터 복구되는 판독 데이터에 대해 에러 정정 처리를 실시하여 출력 데이터를 제공하는 디코더를 포함한다. 여기서, 엔코더는 m 비트의 상기 입력데 이터에 (n-m) 비트 데이터를 부가하여 n 비트 데이터로 변환하고, 이 n 비트 데이터에 대하여 n 비트를 하나의 심볼로 하는 리드·솔로몬 코드를 이용하여 엔코딩하며, 정보 데이터에 관해서는 (n-m) 비트 데이터를 부가하는 종전의 m 비트 데이터를 출력하고, 검사 데이터에 관해서는 n 비트/m 비트변환한 결과의 m 비트의 데이터를 출력한다. 반명, 메모리부의 판독 데이터에 관하는 디코더는 m 비트 데이터에 대하여, 정보 데이터부가 상기 n-m 비트 데이터를 부가하여 n 비트 데이터로 변환하고, 검사 데이터부는 m 비트/n 비트 변환에 의해 n 비트 데이터로 변환한 후에 에러 정정 처리를 하여 정정한 후의 n 비트 정보 데이터 중 m 비트를 출력 데이터로 출력한다.
본 발명에 따르면, 셀 어레이의 각 메모리 셀은 1 비트 또는 다중 비트의 데이터을 저장한다. 기록 동작에서는, m 비트 입력 데이터가 엔코더에 입력된다. 그리고, (n-m)비트(n〉 m)의 데이터, 예를 들면(n-m)비트의 O가 m 비트 입력 데이터에 부가되어 n 비트의 데이터로 변환된다. 예를 들면, 8비트의 입력 데이터는 2비트의 0이 부가되어 10 비트의 데이터로 변환된다. 다음에, 이 n 비트 데이터는 n 비트를 하나의 심볼로 하는 리드·솔로몬 코드로 변환되어, 정보 데이터에 관해서는 (n-m) 비트 데이터를 부가하는 종전의 m 비트 데이터가 출력되고, 검사 데이터에 관해서는 n 비트/m 비트 변환 결과의 m 비트 데이터가 출력된다. 엔코더로부터 출력되는 m 비트 데이터가 셀 어레이에 공급되어 각 셀에 차례로 저장된다.
리드·솔로몬 코드는 다수의 비트를 통합하여 하나의 심볼로 하여 심볼 단위로 에러 정정을 하는 에러 정정 코드이다. 판독 동작에서는, 셀 어레이의 판독데이터에 관하는 m 비트 데이터가 디코더에 입력된다. 그리고, m 비트 데이터의 정보 데이터부에 대해서는 상기 n-m 비트 데이터 m 비트 데이터가 부가되어 n 비트 데이터로 변환되고, 검사 데이터부는 m 비트/n 비트 변환에 의해 n 비트 데이터로 변환되며, 이렇게 함으로써, n 비트를 하나의 심볼로 하는 리드·솔로몬 코드가 재구성된다. 다음에, 재구성된 리드·솔로몬 코드에 대하여 에러 정정 처리를 실시한다. 그리고, 정정한 후의 n 비트 정보 데이터중 m 비트가 출력 데이터로 출력된다.
이와 같이, 입력 데이터 및 출력 데이터는 m 비트 데이터인 반면에, 엔코더는 n 비트 (n〉 m)를 하나의 심볼로 하는 리드·솔로몬 코드를 이용하여 엔코딩 동작을 수행한다. 그러므로, 외부와의 데이터 교환을 m 비트 단위로 하면서도 코드 길이를 확장시킬 수 있게 된다. 이에 따라, 소정 길이의 정보 데이터를 분할하여 엔코딩할 필요가 없고 검사 데이터(부가 데이터)를 적게 하는 것이 가능해는 반면에, 디코딩된 데이터의 연속성을 유지할 수도 있다.
도 1은 본 발명의 제1 실시예에 따른 플래시 메모리(10)의 구조을 보이고 있다. 이 플래시 메모리(10)는 두개의 에러를 정정할 수 있는 단축 리드·솔로몬 코드(Reed-Solomon Code)를 이용한 에러 정정 회로를 포함하는 16개의 값( 4비트)을기록하는 플래시 메모리이다. 리드·솔로몬 코드 및 단축 리드·솔로몬 코드는 다수의 비트를 통합하여 1 바이트로 하여, 바이트 단위로 에러 정정을 하는 코드이다. 리드·솔로몬 코드에 관해서도, 그 내용에 관해서는 전술의 히데키 이마이 저「코드이론」(일본 전자 정보 통신 학회)등의 문헌에서 설명되어 있다.
8 비트를 1 바이트로 하여, 128 바이트의 정보 데이터에 대해 두개의 에러 를 정정할 수 있는 단축 리드·솔로몬 코드를 예로 들어 설명한다. 이 경우, 도 2에 도시된 바 같이, 검사 데이터는 4 바이트여서, 코드 전체의 길이는 132 바이트 = 1056비트가 된다.
도 1에 있어서, 플래시 메모리(10)는 다수의 메모리 셀을 구비한 셀 어레이(11), 8 비트의 병렬 데이터인 입력 데이터 Din을 단축 리드·솔로몬 코드로 변환함으로서 셀 어레이(11)에 기록되는 기록 데이터 WD를 제공하는 엔코더(12), 및도 3에 도시된 바와 같이 이러한 엔코더(12)로부터 출력되는 기록 데이터 WD를 1 바이트(8비트)의 병렬 데이터에서 4 비트의 병렬 데이터(메모리 셀에 기억하기 위한 4비트 데이터)로 변환하여 셀 어레이(11)에 공급하는 8 비트/4 비트 변환기(13)를 포함하고 있다.
또한, 플래시 메모리(10)는 셀 어레이(11)로부터 복구되는 판독 데이터 RD를 도 3에 도시한 바와 같이 4 비트의 병렬 데이터에서 1 바이트(8비트)의 병렬 데이터로 변환하는 4 비트/8 비트 변환기(14), 및 이 4 비트/8 비트 변환기(14)에 의해 1 바이트 병렬 데이터로 변환된 판독 데이터 RD에 대해 에러 정정 처리를 실시하여 출력 데이터 Dout를 제공하는 리드·솔로몬 코드 디코더(15)를 포함하고 있다. 이 경우, 엔코더(12) 및 리드·솔로몬 코드 디코더(15)는 에러 정정 회로를 구성하고 있다. 그리고, 엔코더(12)는 입력 데이터 Din의 128 바이트 블럭마다 4 바이트의 검사 데이터가 부가시킴으로써, 128 바이트의 정보 데이터에 대해 두개의 에러를 정정할 수 있는 단축 리드·솔로몬 코드를 발생시킨다.
도 1에 도시하는 플래시 메모리(10)에 있어서, 데이터의 기록은 다음과 같이 행하여진다. 8 비트의 병렬 데이터인 입력 데이터 Din이 엔코더(12)에 입력 된다. 그리고, 이 엔코더(12)는 입력 데이터 Din을 128 바이트의 정보 데이터에 대한 단축 리드·솔로몬 코드로 변환시켜 기록 데이터 WD를 발생시킨다. 그리고, 엔코더(12)로부터 출력되는 기록 데이터 WD는 8 비트/4 비트 변환기(13)에 의해 1 바이트(8비트) 병렬 데이터에서 4 비트 병렬 데이터로 변환되어 셀 어레이(1l)에 공급되고, 이것이 셀 어레이(11)를 구성하는 각 메모리 셀에 차례로 기록된다.
한편, 데이터의 판독은 다음과 같이 행하여진다. 셀 어레이(11)로부터 복구된 4 비트 병렬 판독 데이터 RD는 4 비트/8 비트 변환기(14)에 의해 1 바이트(8 비트) 병렬 데이터에 변환되어 리드·솔로몬 코드 디코더(15)에 공급된다. 리드·솔로몬 코드 디코더(15)는 판독 데이터 RD의 하나의 코드내에 어떠한 에러도 없으면 정보 데이터를 그대로 바이트 단위 형태의 출력 데이터 Dout로 출력한다. 만약, 판독 데이터 RD의 하나의 코드내의 에러 바이트 수가 1 또는 2일 경우에는, 에러를 정정한 후의 정보 데이터를 바이트 단위 형태의 출력 데이터 Dout로 출력한다.
입력 데이터 Din이나 출력 데이터 Dout가 8 비트 병렬 데이터가 아닐 때는, 바람직하게는 엔코더(12)의 전단에 입력 데이터 Din을 8 비트의 병렬 데이터로 변환하는 비트 변환기가 설치되고, 리드·솔로몬 코드 디코더(15)의 후단에는 8 비트 병렬 데이터를 출력 데이터 Dout에 대응한 병렬 데이터 또는 직렬 데이터로 변환하는 비트 변환기를 배치한다.
이와 같은 본 발명의 제1 실시예에서는, 4 비트 데이터를 기억하는 메모리 셀로 이루어지는 셀 어레이(11)에 대한 에러 정정 코드로서 바이트 단위로 에러 정정을 하는 리드·솔로몬 코드가 이용되는데, 이를 통하여 적은 에러 정정 수로 충분한 성능을 얻을 수가 있다. 따라서, 에러 정정 회로의 규모를 작게 할 수 있으며, 사용하는 메모리 셀의 수도 적게 할 수 있게 된다.
이러한 제1 실시예에 있어서의 효과를 예를 들어서 설명한다. 65536개의 정보 데이터 셀을 1 블럭으로 하여, 셀 어레이는 1024 블럭으로 구성되고, 메모리에 대한 기록/판독은 블럭 단위로 행한다. 제조시에 정상이던 셀이 100 만회의 기록/소거후에 액세스 불능인 불량 셀로 되는 확률이 0.001% 라고 가정하고, 이러한 가정 하에서 100 만회의 기록/소거후에 블럭 불량이 일어나는 확률을 비교한다.
128 바이트, 즉 1024 비트의 정보 데이터에 대하여 8개의 에러를 정정할 수 있는 단축 BCH 코드를 이용한다면, 검사 데이터는 88 비트만 필요하게 된다. 여기서 하나의 셀의 불량에 대하여 4 비트의 정정이 필요하기 때문에, 8개의 에러를 정정할 수 있는 코드는 2개의 셀에 대해서 까지 불량을 정정할 수가 있다. 또한, 1112비트가 278셀에 기억되기 때문에, 1 블럭중에는 256 코드가 포함되므로, 이 경우의 불량 블럭이 발생할 확률은 하기의 수학식 1에 의해 계산된 바 대로, 약 0.000091% 정도 이다.
이어서는, 2개의 에러를 정정할 수 있는 단축 리드·솔로몬 코드를 이용한 경우의 불량 블럭의 발생 확률을 구해보자. 이 경우는 2 바이트까지의 불량을 정정할 수가 있다. 여기서, 4 비트/8 비트의 변환에 의해, 하나의 셀의 에러가 다수바이트에 영향을 미치지 않는다면, 2 셀의 정보 8 비트를 1 바이트로 하였을 경우의 바이트 에러 율은 하기의 수학식 2에 도시한 바와 같이 된다. 따라서, 불량 블럭 발생 확률은 하기의 수학식 3으로 부터 구해진 약 0.000077% 정도가 된다.
그러므로, 8개의 에러를 정정할 수 있는 단축 BCH 코드와 2개의 에러를 정정할 수 있는 단축 리드·솔로몬 코드는 거의 동등한 에러 정정 능력을 가지고 있는 것을 알 수 있다. 그러나, 리드·솔로몬 코드를 이용하는 것이 정정 수가 8개인 BCH 코드와 비교해서 2개의 정정으로 아주 적기 때문에, 에러 정정 회로의 규모를 작게 할 수가 있다. 또한, 부수 데이터도 88 비트에 비해 아주 작은 32 비트이기 때문에 사용하는 메모리 셀 수도 적게 할 수 있게 된다.
나아가, 본 발명의 제2 실시예에 관해서 설명 한다. 도 4는 제2 실시예에 따른 메모리 카드(20)의 구조를 도시하고 있다. 이 메모리 카드(20)는 16개의 값(4비트)을 기록하는 플래시 메모리 2개를 사용하고, 제어기에 2개의 에러를 정정할 수 있는 단축 리드·솔로몬 코드를 이용한 에러 정정 회로를 포함시킨 메모리 카드이다.
도 4에서, 메모리 카드(20)는 2 개의 플래시 메모리(21, 22), 및 이들 플래시 메모리(21, 22)에 대하여 데이터 기록이나 판독을 하기 위한 제어기(23)를 포함하고 있다.
그리고, 제어기(23)는 카드 외부와의 데이터를 교환하기 위한 카드 인터페이스(24), 8 비트의 병렬 데이터인 입력 데이터 Din을 단축 리드·솔로몬 코드로 변환함으로써 플래시 메모리(21, 22)에 기록되는 기록 데이터 WD를 제공하는 엔코더(25), 및 도 3에 도시한 바와 같이 엔코더(25)로부터 출력되는 기록 데이터 WD를 1 바이트(8비트) 병렬 데이터에서 4 비트 병렬 데이터(메모리 셀에 기억하기위한 4 비트 데이터)로 변환하는 8 비트/4 비트 변환기(26)를 포함한다.
또한, 제어기(23)는 플래시 메모리(21, 22)로부터 복구되는 판독 데이터 RD를, 도 3에 도시한 바와 같이, 4 비트 병렬 데이터에서 1 바이트(8비트) 병렬 데이터로 변환하는 4 비트/8 비트 변환기(27), 이러한 4 비트/8 비트 변환기(27)에 의해 1 바이트 병렬 데이터로 변환된 판독 데이터 RD에 대해 에러 정정 처리를 실시하여 출력 데이터 Dout를 제공하는 리드·솔로몬 코드 디코더(28), 및 플래시 메모리(21, 22)에 대하여 데이터 기록/판독을 제어하는 플래시 인터페이스(29)를 포함하고 있다.
이 경우, 엔코더(25) 및 리드·솔로몬 코드 디코더(28)는 에러 정정 회로를 구성하고 있다. 그리고, 엔코더(25)는 입력 데이터 Din의 128 바이트 블럭마다 4 바이트의 검사 데이터를 부가하여, 128 바이트의 정보 데이터에 대해 2개의 에러 를 정정할 수 있는 단축 리드·솔로몬 코드를 발생시킨다.
도 4에 도시된 메모리 카드(20)에 있어서, 데이터의 기록은 다음과 같이 행하여진다. 입력 데이터 Din이 카드 인터페이스(24)에 의해서 카드 내부에 받아들여져서 엔코더(25)에 공급된다. 엔코더(25)는 입력 데이터 Din을 128 바이트의 정보 데이터에 대한 단축 리드·솔로몬 코드로 변환하여 기록 데이터 WD를 발생시킨다. 그리고, 엔코더(25)로부터 출력되는 기록 데이터 WD는 8 비트/4 비트 변환기(26)에 의해 1 바이트(8비트) 병렬 데이터에서 4 비트 병렬 데이터로 변환되어, 플래시 인터페이스(29)의 제어에 따라서 플래시 메모리( 21 또는 22)에 기록된다.
한편, 데이터의 판독은 다음과 같이 행하여진다. 플래시인터 페이스(29)의 제어에 따라서 플래시 메모리(21 또는 22)로부터 복구된 판독 데이터 RD는 4 비트/8 비트 변환기(27)에 의해 4 비트 병렬 데이터에서 1바이트(8비트) 병렬 데이터로 변환되어 리드·솔로몬 코드 디코더(28)에 공급된다. 리드·솔로몬 코드 디코더(28)는 판독 데이터 RD의 하나의 코드내에 어떠한 에러도 없으면 정보 데이터를 그대로 바이트 단위 형태의 출력 데이터 Dout로 출력한다. 또한, 판독 데이터 RD의 하나의 코드내의 에러 바이트 수가 1 또는 2일 경우에는, 정보 데이터에 대해에러를 정정한 후에 바이트 단위 형태의 출력 데이터 Dout로 출력한다. 이와 같이 리드·솔로몬 코드 디코더(28)로부터 출력되는 출력 데이터 Dout는 카드 인터페이스(24)를 통해 카드 외부로 출력된다.
또한, 입력 데이터 Din 또는 출력 데이터 Dout가 8 비트 병렬 데이터가 아닐 경우에는, 엔코더(25)의 전단에 입력 데이터 Din을 8 비트 병렬 데이터에 변환하는 비트 변환기를 배치하고, 리드·솔로몬 코드 디코더(28)의 후단에 8 비트 병렬 데이터를 출력 데이터 Dout에 대응하는 병렬 또는 직렬 데이터 형태로 변환하는 비트 변환기를 배치한다.
이와 같은 제2 실시예에서도, 4 비트 데이터를 기억하는 메모리 셀로 이루어지는 셀 어레이를 구비한 메모리부로서의 플래시 메모리(21, 22)에 대해서 에러를 정정하는데 있어서, 바이트 단위로 에러를 정정하는 리드·솔로몬 코드를 이용함으로써, 제1 실시예와 마찬가지로 적은 에러 정정 수로도 충분한 성능을 얻는 수 있게되고, 따라서 에러 정정 회로의 규모를 작게 할 수 있고, 사용하는 메모리 셀의 수도 적게 할 수 있게 된다. 또한, 제어기(23)가 에러를 정정하기 때문에, 에러 정정 회로를 플래시 메모리(21, 22)에 내장하는 경우보다 큰 에러 정정 회로를 갖을 수 있다. 때문에, 다중값 기록의 영향으로 많은 에러를 발생하더라도 이것을 정정하는 것이 가능하게 된다.
여기서, 플래시 메모리로부터의 데이터 판독 과정을 다시 한번 설명한다. 셀 어레이(도 16참조)로부터의 판독은 1 셀 단위가 아니라, 페이지라고 불리는 단위(예를 들면 1024셀)의 데이터를 통합하여 동시에 판독하여, 그것을 출력 버퍼로 연속 출력한다(도 5참조). 따라서, 예를 들면 1 페이지를 1024 셀의 정보로 한다면, 16개의 값을 기록하는 플래시 메모리는 4096 비트(512 바이트)의 정보를 1개의 단위로 판독하게 된다. 여기서, 메모리 외부와의 데이터 교환은 1 바이트(8 비트)단위로 행하기 때문에, 리드·솔로몬 코드의 하나의 심볼도 8 비트로 하는 것이 정합성이 높다.
그러나, 8 비트를 1 심볼로 한 리드·솔로몬 코드는 코드 길이가 255로 되기 때문에, 엔코딩 동작시에는 512 바이트 데이터를 3 개 내지 4 개로 분할하여, 각각 에 검사 데이터(부가 데이터)를 부가하여 엔코딩하는 것이 필요하다. 도 6은 512 바이트의 데이터를 128 바이트의 정보 데이터에 대한 하나의 에러를 정정할 수 있는 4 단축 리드·솔로몬 코드로 엔코딩한 경우의 엔코딩의 모양을 도시하고 있다.
여기서, 에러 정정 코드의 일반적인 성질로서, 동일한 수의 검사 데이터를 부가할 때 정보 데이터를 분할하여 엔코딩하는 것 보다 한번에 엔코딩 하는 것이 성능이 높다는 성질이 있기 때문에, 512 바이트의 정보 데이터를 동시에 판독한다면 그것을 일체형으로 엔코딩하는 것이 보다 효율이 좋게 된다.
또한, 1 페이지의 데이터를 분할하여 엔코딩하면, 디코딩할 때에는 디코딩된 데이터가 사이를 비워 출력되지만(도 7참조), 1 페이지의 디코딩 데이터는 될 수 있는 한 연속하여 출력하느 것이 시스템의 구성상 바람직하다. 따라서, 이 점으로부터도 1 페이지의 데이터는 일체형으로 엔코딩되는 것이 바람직하다.
이어서, 본 발명의 제3 실시예에 대해서 설명한다. 도 8은 제3 실시예에 다른 플래시 메모리(30)의 구성을 도시하고 있다. 플래시 메모리(30)는 외부와의 데이터의 교환을 1 바이트(8비트) 단위로 행하고, 두개의 에러를 정정할 수 있는 단축 리드·솔로몬 코드를 이용한 에러 정정 회로를 포함하는 16개의 값(4비트)을 기록하는 플래시 메모리이다.
이 경우, 1 페이지내의 예를 들면 512 바이트의 정보 데이터를 일체형으로 엔코딩하기 때문에, 10 비트를 1 심볼로 하는 단축 리드·솔로몬 코드를 이용하여 엔코딩이 행하여진다. 여기서, 1 페이지내의 정보 데이터가 512 바이트라면, 두개의 에러를 정정하기 위한 검사 데이터(부가 데이터)는 4 심볼이 되기 때문에, 코드 길이가 516이 되지만, 10 비트를 1 심볼로 하는 리드·솔로몬 코드의 길이가 1023이기 때문에, 516의 코드 길이는 구성에 따라서 단축이 가능하다. 또, 검사 데이터는 4심볼 = 40비트 = 5바이트가 된다.
도 8에 있어서, 플래시 메모리(30)는 다수의 메모리 셀을 구비한 셀 어레이(31), 8 비트 병렬 입력 데이터 Din을 단축 리드·솔로몬 코드로 변환함으로써 셀 어레이(31)에 기록되는 기록 데이터 WD를 제공하는 엔코더(32), 및 엔코더(32)로부터 출력되는 기록 데이터 WD를, 도 3에 도시한 바와 같이, 8 비트 데이터에서 4 비트 데이터(메모리 셀에 기억하기 위한 4 비트 데이터)로 변환하여 셀 어레이(31)에 공급하는 8 비트/4 비트 변환기(33)를 포함하고 있다.
또한, 플래시 메모리(30)는 셀 어레이(31)로부터 복구되는 판독 데이터 RD를, 도 3에 도시한 바와 같이, 4 비트 데이터에서 8 비트 데이터로 변환하는 4 비트/8 비트 변환기(34), 및 4 비트/8 비트 변환기(34)에 의해 8 비트 데이터로 변환된 판독 데이터 RD에 대해 에러 정정 처리를 실시하여 출력 데이터 Dout를 제공하는 디코더(35)를 포함하고 있다. 이 경우에, 엔코더(32) 및 디코더(35)는 에러 정정 회로를 구성하고 있다.
도 9는 엔코더(32)의 구조를 도시하고 있다. 엔코더(32)는 8 비트의 입력 데이터 Din에 대하여, 도 10에 도시한 바와 같이, 2 비트의 0를 부가하여 10비트의 데이터로 변환하는 8 비트/10 비트 변환기(32a), 및 변환기(32a)로부터 출력되는 10 비트의 데이터에 대하여 10 비트를 1 심볼로 하는 리드·솔로몬 코드를 이용하여 엔코딩하는 리드·솔로몬 엔코더(32b)를 포함한다. 리드·솔로몬 엔코더(32b)는 10 비트 데이터의 512 심볼마다 4 심볼의 검사 데이터(부가 데이터)가 부가되어, 512 심볼의 정보 데이터에 대해 두개의 에러를 정정할 수 있는 단축 리드·솔로몬 코드를 발생시킨다.
또한, 엔코더(32)는 10 비트 데이터중 2 비트를 삭제하여 8 비트 데이터로 변환하는 10 비트/8 비트 변환기(32c), 10 비트 데이터에 대하여, 도 11에 도시한 바와 같이, 비트 배치를 변경하여 8 비트 데이터로 변환하는 10 비트/8 비트 변환기(32d), 리드·솔로몬 엔코더(32b)로부터 출력되는 각각의 리드·솔로몬 코드를 구성하는 512개의 심볼 정보 데이터와 4개의 심볼 검사 데이터를 각각 변환기(32c, 32d)에 선택적으로 공급하는 전환 스위치(32e), 및 변환기(32c)로부터 출력되는 512개의 심볼 정보 데이터에 대응한 8 비트 데이터 와 변환기(32d)로부터 출력되는 4 심볼 검사 데이터에 대응한 8 비트의 데이터를 선택적으로 추출하여 기록 데이터 WD로 출력하는 전환 스위치(32f)를 포함한다. 변환기(32c)는 512개의 심볼 정보 데이터의 공급에 대하여, 정보 데이터부가(로) 되는 512바이트의 데이터가 출력된다. 한편, 4 심볼 검사 데이터가 공급되었을 때, 변환기(32d)는 검사 데이터부를 형성하는 5 바이트의 데이터를 출력한다.
이상과 같이 구성된 엔코더(32)의 동작을 설명한다. 8 비트인 입력 데이터 Din은 8 비트/10 비트 변환기(32a)에 공급되어, 2 비트의 O가 부가되어 10비트의 데이터로 변환된다. 그리고, 이 10 비트 데이터가 리드·솔로몬 엔코더(32b)에 공급되어, 512개의 심볼의 정보 데이터에 대하여 두개의 에러를 정정할 수 있는 단축 리드·솔로몬 코드로 변환한다.
이 리드·솔로몬 엔코더(32b)로부터 출력되는 각 516개의 심볼의 리드·솔로 몬코드중, 512개의 심볼의 정보 데이터는 전환 스위치(32e)를 통해 10 비트/8 비트 변환기(32c)에 공급되어, 상술한 8 비트/10 비트 변환기(32a)에 의해서 부가된 2 비트의 0이 삭제되어 8 비트 데이터로 변환된다(도 10참조). 그리고, 이 8 비트 데이터가 전환 스위치(32f)를 통해 기록 데이터 WD로서 출력된다.
한편, 리드·솔로몬 엔코더(32b)로부터 출력되는 각각의 516개의 심볼의 리드·솔로몬 코드중, 4개의 심볼의 검사 데이터는 전환 스위치(32e)를 통해 10 비트/8 비트 변환기(32d)에 공급되어, 비트 배치가 변경되어 8 비트의 데이터로 변환된다(도 11참조). 그리고, 이 8 비트 데이터가 전환 스위치(32f)를 통해 기록 데이터 WD로 출력된다.
도 12는 디코더(35)의 구조를 도시하고 있다. 이 디코더(35)는 8 비트 데이터에 대하여, 도 10에 도시한 바와 같이, 2 비트의 0를 부가하여 10 비트 데이터로 변환하는 8 비트/10 비트 변환기(35a), 8 비트 데이터에 대하여, 도 11에 도시한 바와 같이, 비트 배치를 변경하여 10 비트 데이터로 변환하는 8 비트/10 비트 변환기(35b), 4 비트/8 비트 변환기(34)(도 8에 도시)로부터 출력되는 판독 데이터 RD로서의 8 비트 데이터중, 각 512 바이트의 정보 데이터부와 각 5 바이트의 검사 데이터부를 각각 변환기(35a 및 35b)에 선택적으로 공급하는 전환 스위치(35c), 및 변환기(35a)로부터 출력되는 512 바이트의 정보 데이터부에 대응한 10 비트 데이터 와 변환기(35b)로부터 출력되는 5 바이트의 검사 데이터부에 대응한 10 비트의 데이터를 선택적으로 추출하여 51 2심볼의 정보 데이터에 대해 두개의 에러를 정정할 수 있는 단축 리드·솔로몬 코드를 재구성하는 전환 스위치(35d)를 포함한다.
또한, 디코더(35)는 전환 스위치(35d)로부터 출력되는 리드·솔로몬 코드에 대하여 에러 정정 처리를 실시하는 리드·솔로몬 코드 디코더(35e), 및 디코더(35e)에 의해서 에러 정정된 정보 데이터로서의 10비트의 데이터에 대하여, 도 13에 도시한 바와 같이, 2 비트를 삭제하여 8 비트 데이터로 변환하여 출력 데이터 Dout를 제공하는 10 비트/8 비트 변환기(35f)를 포함한다.
이상과 같이 구성된 디코더(35)의 동작을 설명한다. 판독 데이터 RD로서의 8 비트의 데이터중, 각 512바이트의 정보 데이터부는 8 비트/10 비트 변환기(35a)에 공급되어, 2 비트의 0이 부가되어 10 비트의 데이터로 변환된다(도 10참조). 판독 데이터 RD로서의 8 비트의 데이터중, 각 5바이트의 검사 데이터부는 8 비트/10 비트 변환기(35b)에 공급되어 비트 배치가 변경되어 10 비트의 데이터로 변환된다(도 l1참조).
그리고, 전환 스위치(35d)에 의해, 변환기(35a)로부터 출력되는 512 바이트의 정보 데이터부에 대응한 10 비트의 데이터 및 변환기(35b)로부터 출력되는 5 바이트의 검사 데이터부에 대응한 10 비트의 데이터가 선택적으로 추출되어, 512 심볼의 정보 데이터에 대하여 두개의 에러를 정정할 수 있는 단축 리드·솔로몬 코드를 재구성한다.
또한, 전환 스위치(35d)로부커 출력되는 리드·솔로몬 코드가 리드·솔로몬 코드 디코더(35e)에 공급된다. 이 리드·솔로몬 코드 디코더(35e)는 하나의 코드내의 에러 심볼 수가 1 또는 2일 경우에는 에러를 정정할 수 있다. 그리고, 이 디코더(35e)에 의해 에러가 정정된 정보 데이터로서의 10 비트 데이터가 10 비트/8 비트 변환기(35f)에 공급되어, 2 비트가 삭제되어 8 비트 데이터로 변환되어(도 13참조), 출력 데이터 Dout로 출력된다.
도 8에 도시하는 플래시 메모리(30)에 있어서, 데이터의 기록은 다음과 같이 행하여진다. 즉, 1 바이트(8비트)의 데이터인 입력 데이터 Din은 엔코더(32)에 공급된다. 그리고, 이 엔코더(32)는 입력 데이터 Din에 대하여 2 비트의 0이 부가되어 10 비트의 데이터에 변환되어, 이 10비트의 데이터가 512 심볼의 정보 데이터에 대한 두개의 에러를 정정할 수 있는 리드·솔로몬 코드로 변환되고, 정보 데이터에 관해서는 0 을 부가하기전의 8비트 데이터가 출력하며, 검사 데이터에 관해서는 비트 배치를 변경하여 얻은 8 비트의 데이터를 출력한다. 그리고, 엔코더(32)로부터 출력되는 기록 데이터 WD는 8 비트/4 비트 변환기(33)에 의해 8 비트 데이터에서 4 비트 데이터로 변환되여 셀 어레이(3l)에 공급됨으로써, 이 셀 어레이(31)를 구성하는 각 메모리 셀에 차례로 기록된다.
한편, 데이터의 판독은 아래와 같이 행하여진다. 셀 어레이(31)로부터 복구된 판독 데이터 RD는 4 비트/8 비트 변환기(34)에 의해 4 비트 데이터에서 8 비트 데이터로 변환되어 디코더(35)에 공급된다. 디코더(35)는, 각 512 바이트의 정보 데이터부는 2 비트의 0이 부가되어 8 비트 데이터에서 10 비트 데이터로 변환되고, 각 5 바이트의 검사 데이터부는 비트 배치의 변경에 의해서 8 비트 데이터에서 10 비트 데이터로 변환되어서, 512 심볼의 정보 데이터에 대하여 두개의 에러를 정정할 수 있는 리드·솔로몬 코드를 재구성한다. 또한, 디코더(35)는 재구성된 리드·솔로몬 코드에 대하여 에러 정정 처리를 실시하여, 에러 정정된 후의 정보 데이터에 대하여 2 비트를 삭제하여 8 비트 데이터로 변환시켜서, 이 8 비트 데이터를 바이트 단위 형태의 출력 데이터 Dout로 출력한다.
이와 같이 제3 실시예에서는, 입력 데이터 Din 및 출력 데이터 Dout는 8 비트의 데이터이고, 엔코더(32)는 10 비트를 1 심볼로 하는 리드·솔로몬 코드를 이용하여 엔코딩을 행하기 때문에, 외부와의 데이터의 교환은 1 바이트(8비트) 단위로 할 수 있어 코드 길이를 확장할 수 있게 된다. 따라서, 예를 들면 1 페이지의 512 바이트의 정보 데이터를 분할하여 엔코딩할 필요 없이, 검사 데이터(부가 데이터)를 적게 할 수 있고, 도 14에 도시한 바와 같이 1 페이지의 512 바이트의 디코딩 데이터의 연속성을 유지하는 것도 가능해진다.
제3 실시예에 따른 효과를 예를 들어 설명한다. 정보 데이터 65536셀, 즉 64 페이지을 1 블럭으로 하여, 셀 어레이가 1024 블럭으로 구성된다면, 블럭 내에 하나라도 불량이 있는 경우에는 불량 블럭으로서 그 블럭에 대하는 액세스를 금지하는 구성을 취한다. 제조시에 정상이던 셀이 100 쪽 회의 기록/소거후에 액세스 불능인 불량 셀로 되는 확률이 O.001%일 때, 100만 회의 기록/소거 후에 블럭 불량이 일어나는 확률을 비교한다.
제3 실시예에서와 같이, 512 바이트의 정보 데이터에 대하여 5 바이트의 검사 데이터(부가 데이터)를 부가하여 두개의 에러를 정정할 수 있는 단축 리드·솔로몬 코드를 이용한 경우의 불량 블럭의 발생 확률을 구한다. 이 경우는 2 심볼까지의 불량을 정정할 수가 있다. 2셀의 정보 8비트를 1 심볼로 하였을 때의 심볼에러 율은, 수학식 4에 도시한 바와 같게 된다. 이 심볼 에러율은 정보 데이터의 심볼 에러율이다. 검사 데이터(부가 데이터)의 심볼 에러율은 셀 에러율의 약 2.5배가 되고, 대략 2.5 × 10-5이다.
또한, 총 심볼 수는 516 심볼이고, 1 블럭 중에는 64 코드가 포함되는 것으로 된다. 검사 데이터의 심볼 에러 율이 정보 데이터의 심볼 에러율 보다 크기 때문에, 불량 블럭의 발생 확률은 검사 데이터의 심볼 에러율을 이용하여 평가할 수가 있다. 따라서, 불량 블럭의 발생 확률은 하기의 수학식 5로 평가할 수 있고, 약 0.0023% 이하 정도가 된다.
반면에, 128 바이트의 정보 데이터에 대하여 2 바이트의 검사 데이터(부가 데이터)를 부가하여, 1 심볼 = 8 비트의 하나의 에러를 정정할 수 있는 단축 리드·솔로몬 코드를 이용한 경우의 불량 블럭의 발생 확률을 구해보자. 하나의 코드당의 총 심볼수는 130 심볼이고, 1 블럭중에는 256 코드가 포함되므로, 불량 블럭의 발생 확률은 하기의 수학식 6으로 부터, 대략 0.086%이 된다.
따라서, 제3 실시예에 따른 엔코딩 방법을, 정보 데이터에 대하여 2 바이트의 검사 데이터(부가 데이터)를 부가하여 l 심볼 = 8비트의 하나의 에러를 정정할 수 있는 단축 리드·솔로몬 코드를 이용하는 엔코딩 방법과 비교해보면, 검사 데이터는 전술한 실시 형태에 있어서의 엔코딩 방법쪽이 높은 에러 정정 능력이 얻어지게 됨에도 불구하고, 바이트 수는 1 페이지당 8바이트에서 5바이트로 줄어든다.
또한, 본 발명의 제4 실시예에 관해서 설명한다. 도 15는 제4 실시예에 따른 메모리 카드(40)의 구조를 도시하고 있다. 이 메모리카드(40)는 16개의 값(4비트)을 기록하는 플래시 메모리 2개를 사용하고, 10 비트를 1 심볼로 하는 두개의 에러를 정정할 수 있는 단축 리드·솔로몬 코드를 이용한 에러 정정 회로를 제어기에 내장한 메모리카드이다. 도 15에 있어서, 메모리 카드(40)는 2개의 플래시 메모리(41, 42), 및 이들 플래시 메모리(41, 42)에 대하여 데이터 기록이나 판독을 하기 위한 제어기(43)를 포함한다.
제어기(43)는 카드 외부와의 데이터의 교환을 하기 위한 카드 인터페이스(44), 8 비트의 병렬 데이터인 입력 데이터 Din을 단축 리드·솔로몬 코드로 변환함으로써 플래시 메모리(41, 42)에 기록되는 기록 데이터 WD를 제공하는 엔코더(45), 및 이 엔코더(45)로부터 출력되는 기록 데이터 WD를, 도 3에 도시한 바와 같이, 8 비트 데이터에서 4 비트 데이터(메모리 셀에 기억하기 위한 4비트 데이터)로 변환하는 8 비트/4 비트 변환기(46)를 포함한다. 상세한 설명은 생략하겠지만, 엔코더(45)는 도 8의 플래시 메모리(30)의 엔코더(32)와 같이 구성되어 있다 (도 9참조).
또한, 제어기(43)는 플래시 메모리(41, 42)로부터 복구되는 판독 데이터 RD를, 도 3에 도시한 바와 같이, 4 비트 데이터에서 8 비트 데이터로 변환하는 4 비트/8 비트 변환기(47), 이 4 비트/8 비트 변환기(47)에 의해서 8 비트 데이터로 변환된 판독 데이터 RD에 대해 에러 정정 처리를 실시하여 출력 데이터 Dout를 제공하는 디코더48, 및 플래시 메모리(41, 42)에 대하여 데이터 기록/판독을 제어하는 플래시 인터페이스(49)를 갖고 있다. 상세한 설명은 생략하겠지만, 디코더(48)는 도 8의 플래시 메모리(30)의 디코더(35)와 같은 구성을 가진다(도 12참조).
도 15에 도시하는 메모리 카드(40)에 있어서, 데이터의 기록은 아래와 같이 행하여진다. 즉, 입력 데이터 Din은 카드인터 페이스(44)에 의해서 카드 내부에 받아들여 엔코더(45)에 공급된다. 그리고, 엔코더(45)는 입력 데이터 Din에 대하여 2 비트의 0이 부가하여 10 비트 데이터로 변환하고, 이 10 비트 데이터를 512 심볼의 정보 데이터에 대한 두개의 에러를 정정할 수 있는 리드·솔로몬 코드로 변환하는데, 정보 데이터에 관해서는 0 을 부가하기 전의 8 비트 데이터를 출력하고, 검사 데이터에 관해서는 비트 배치를 변경하여 얻은 8 비트 데이터를 출력한다. 그리고, 엔코더(45)로부터 출력되는 기록 데이터 WD는 8 비트/4 비트 변환기(46)에 의해 8 비트 데이터에서 4 비트 데이터로 변환되어, 플래시 인터페이스(49)의 제어에 따라서 플래시 메모리(41 또는 42)에 기록된다.
한편, 데이터의 판독은 아래와 같이 행하여진다. 플래시 인터페이스(49)의 제어에 따라서 플래시 메모리(41 또는 42)로부터 복구된 판독 데이터 RD는 4 비트/8 비트 변환기(47)에 의해 4 비트 데이터에서 8 비트 데이터로 변환되어 디코더(48)에 공급된다. 디코더(48)는 각 512 바이트의 정보 데이터부는 2 비트의 0이 부가되어 8 비트 데이터에서 10 비트 데이터로 변환되고, 각 5 바이트의 검사 데이터부는 비트 배치의 변경에 의해서 8 비트 데이터에서 10 비트 데이터로 변환됨으로써, 512 심볼의 정보 데이터에 대해 두개의 에러를 정정할 수 있는 리드·솔로몬 코드를 재구성한다. 또한,디코더(48)는 재구성된 리드·솔로몬 코드에 대하여 에러 정정 처리를 실시하여, 에러 정정된 후의 정보 데이터에 대하여 2 비트가 삭제된 8 비트의 데이터로 변환하고, 이 8 비트의 데이터가 바이트 단위 형식의 출력 데이터 Dout로 출력된다. 이와 같이, 디코더(48)로부터 출력되는 출력 데이터 Dout는 카드 인터페이스(44)를 통해 카드 외부로 출력된다.
이와 같이 제4 실시예에 있어서도, 입력 데이터 Din 및 출력 데이터 Dout는 8 비트 데이터이고, 엔코더(45)는 10 비트를 1 심볼로 하는 리드·솔로몬 코드를 이용하여 엔코딩을 행하기 때문에, 외부와의 데이터의 입출력을 1 바이트(8비트) 단위로 행할 수 있고 코드의 길이를 확장할 수 있게 된다. 따라서, 예를 들면 1 페이지의 512 바이트의 정보 데이터를 분할하여 엔코딩할 필요없이, 검사 데이터(부가 데이터)를 적게 하는 것이 가능하게 되고, 도 14에 도시한 바와 같이 1 페이지의 512 바이트의 디코딩된 데이터의 연속성을 유지하는 것이 가능해진다.
또, 상술한 제 3 및 4 실시예에 있어서, 엔코딩이 8 비트 데이터에 2 비트의 0를 부가하여 10 비트의 데이터로 변환하는 경우이지만, 그 밖의 2 비트의 데이터를 부가하여 10 비트의 데이터로 변환해도 된다. 그러한 경우에는, 디코딩시에 정보 데이터부에 동일한 2 비트의 데이터를 부가하여 10 비트의 데이터로 변환하는 것이 된다.
또한, 전술한 제 1 내지 4 실시예에 있어서, 2 셀의 데이터를 1 바이트로 하였지만, 바이트화하는 수는 2 셀에 한하지 않고, 예를 들면 1 셀의 데이터를 1 바 이트로 하거나, 혹은 3 셀의 데이터를 1 바이트로 하는 등 여러 가지의 변형이 가능하다.
또한, 전술한 제 1 내지 4 실시예에 있어서, 기억 시스템으로서 플래시 메모리를 사용하였지만, 본 발명은 플래시 메모리에 한하지 않고 다른 반도체 메모리등 여러 가지의 기억 시스템에 대하여도 적용 가능하다.
이상에서 설명한 바와 같이, 본 발명에 따르면 다중 비트의 데이터를 기억하는 메모리 셀로 이루어지는 메모리에 대하는 에러 정정 코드로서 바이트 단위로 에러를 정정하는 리드·솔로몬 코드를 이용함으로써, 적은 에러 정정 수로도 충분한 성능을 얻을 수 있고, 에러 정정 회로의 규모를 작게할 수 있으며, 사용하는 메모리 셀의 수도 적게 할 수 있게 된다.
또한, 본 발명에 따르면, 입력 데이터 및 출력 데이터는 m 비트의 데이터이고, 엔코더는 n 비트(n〉 m)를 1 심볼로 하는 리드·솔로몬 코드를 이용하여 엔코딩을 행하기 때문에, 외부와의 데이터의 교환은 m 비트 단위로 행하하고, 코드의 길이를 확장할 수 있게 된다. 따라서, 소정 길이의 정보 데이터를 분할하여 엔코딩할 필요가 없고, 검사 데이터(부가 데이터)를 적게 할 수 있으며, 디코딩된 데이터의 연속성을 유지할 수 있다.
이상에서와 같이, 본 발명에 따른 엔코딩 방법 및 메모리 장치는 다중값 기록 플래시 메모리 또는 그것을 이용한 메모리 카드 등에 적용할 수 있다.

Claims (11)

  1. 각각이 다중 비트를 기억할 수 있는 다수의 메모리 셀을 포함하는 셀 어레이,
    입력 데이터를 리드·솔로몬 코드로 변환하여 상기 셀 어레이에 기록되는 기록 데이터를 제공하기 위한 엔코더,
    상기 셀 어레이로부터 복구되는 판독 데이터에 대해 에러 정정 처리를 실시하여 출력 데이터를 제공하는 리드·솔로몬 코드 디코더
    를 포함하는 것을 특징으로 하는 메모리 장치.
  2. 제1항에 있어서, 상기 입력 데이터 및 출력 데이터는 소정 비트의 병렬 또는 직렬 데이터이고,
    상기 엔코더의 전단에 설치된 상기 입력 데이터를 1 바이트 병렬 데이터로 변환하는 제1 비트 변환기 및
    상기 리드·솔로몬 코드 디코더의 후단에 설치된 디코더로부터 출력되는 1 바이트의 병렬 데이터를 상기 소정 비트의 병렬 또는 직렬 데이터로 변환하는 제2 비트 변환기
    를 더 포함하는 것을 특징으로 하는 메모리 장치.
  3. 제1항에 있어서, 상기 셀 어레이의 다수의 메모리 셀 각각은 m 비트(m은 2이상의 정수)의 데이터를 기억하고,
    상기 엔코더와 상기 셀 어레이와의 사이에 설치된 상기 엔코더로부터 출력되는 1 바이트의 병렬 데이터를 m 비트의 병렬 데이터로 변환하는 제3 비트 변환기 및
    상기 셀 어레이와 상기 리드·솔로몬 코드 디코더와의 사이에 설치된 상기 셀 어레이로부터 출력되는 m 비트의 병렬 데이터를 1 바이트의 병렬 데이터로 변환하는 제4 비트 변환기
    를 포함하는 것을 특징으로 하는 메모리 장치.
  4. 제1항에 있어서, 상기 리드·솔로몬 코드는 상기 셀 어레이의 적어도 하나의 메모리 셀로 기억할 수 있는 다중 비트를 1 바이트로 하는 것을 특징으로 하는 메모리 장치.
  5. 각각이 다중 비트를 기억할 수 있는 다수의 메모리 셀을 포함하는 메모리부, 및
    상기 메모리부에 대하여 데이터 기록이나 판독을 하기 위한 제어기를 포함하되,
    상기 제어기는 입력 데이터를 리드·솔로몬 코드로 변환하여 상기 메모리부에 기록되는 기록 데이터를 제공하는 엔코더 및
    상기 메모리부로부터 복구되는 판독 데이터에 대한 에러 정정 처리를 실시하여 출력 데이터를 제공하는 리드·솔로몬 코드 디코더
    를 포함하는 것을 특징으로 하는 메모리 장치.
  6. 제5항에 있어서, 상기 메모리부는 적어도 하나의 플래시 메모리로 구성되는 것을 특징으로 하는 메모리 장치.
  7. m 비트의 데이터에 (n-m) 비트[여기서 n이 m보다 큰수임]의 데이터를 부가하여 n 비트 데이터 변환하는 단계,
    상기 n 비트 데이터에 대하여 n 비트를 1 심볼로 하는 리드·솔로몬 코드를 이용하여 엔코딩하는 단계 및
    정보 데이터에 대해서는 상기 (n-m) 비트 데이터를 부가하기 전의 m 비트 데이터를 출력하고, 검사 데이터에 대해서는 n 비트/m 비트 변환 결과의 m 비트 데이터를 출력하는 단계
    를 포함하는 엔코딩 방법.
  8. 다수의 메모리 셀을 포함한 셀 어레이,
    입력 데이터를 에러 정정 코드로 변환하여 상기 셀 어레이에 기록되는 기록 데이터를 제공하는 엔코더,
    상기 셀 어레이로부터 복구되는 판독 데이터에 대해 에러 정정 처리를 실시하여 출력 데이터를 제공하는 디코더
    를 포함하되,
    상기 엔코더는 m 비트의 상기 입력 데이터에 (n-m) 비트[여기서, n이 m보다 큰수임]의 데이터를 부가하여 n 비트의 데이터로 변환하고, n 비트 데이터에 대하여 n 비트를 1 심볼로 하는 리드·솔로몬 코드를 이용하여 엔코딩함으로써, 정보 데이터에 대해서는 상기 (n-m) 비트의 데이터를 부가하기 전의 m 비트 데이터를 출력하고, 검사 데이터에 대해서는 n 비트/m 비트 변환 결과의 m 비트 데이터를 출력하며,
    상기 디코더는 상기 셀 어레이의 판독 데이터의 m 비트 데이터에 대하여, 정보 데이터부는 상기 (n-m) 비트의 데이터를 부가하여 n 비트의 데이터로 변환하고, 검사 데이터부는 m 비트/n 비트 변환에 의해 n 비트 데이터로 변환한 후에 에러 정정 처리를 행하여, 정정한 후의 n 비트의 정보 데이터중 m 비트를 상기 출력 데이터로 출력하는 것을 특징으로 하는 메모리장치.
  9. 제8항에 있어서, 상기 셀 어레이의 다수의 메모리 셀 각각은 q 비트(여기서, q는 1 이상의 정수)의 데이터를 기억하고,
    상기 엔코더와 상기 셀 어레이와의 사이에 설치된 상기 엔코더로부터 출력되는 m 비트의 데이터를 q 비트의 데이터로 변환하는 m 비트/q 비트 변환기,
    상기 셀 어레이와 상기 디코더와의 사이에 설치되는 상기 셀 어레이로부터 출력되는 q 비트의 데이터를 m 비트의 데이터로 변환하는 q 비트/m 비트 변환기
    를 포함하는 것을 특징으로 하는 메모리 장치.
  10. 다수의 메모리 셀을 포함하는 셀 어레이를 구비한 메모리부 및 상기 메모리부에 대하여 데이터 기록이나 판독을 하기 위한 제어기를 포함하는 메모리 장치에 있어서,
    상기 제어기는 입력 데이터를 에러 정정 코드로 변환하여 상기 메모리부에 기록되는 기록 데이터를 제공하는 엔코더 및 상기 메모리부로부터 복구되는 판독 데이터에 대해 에러 정정 처리를 실시하여 출력 데이터를 제공하는 디코더를 포함하고,
    상기 엔코더는 m 비트의 상기 입력 데이터에 (n-m) 비트[여기서, n은 m보다 큰 수임]의 데이터를 부가하여 n 비트의 데이터로 변환하고, 상기 n 비트의 데이터에 대하여 n 비트를 1 심볼로 하는 리드·솔로몬 코드를 이용하여 엔코딩함으로써, 정보 데이터에 대해서는 상기 (n-m) 비트의 데이터를 부가하기 전의 m 비트 데이터를 출력하고, 검사 데이터에 대해서는 n 비트/m 비트 변환 결과의 m 비트 데이터를 출력하며,
    상기 디코더는 상기 메모리부의 판독 데이터의 m 비트 데이터에 대하여, 정보 데이터부는 상기 (n-m) 비트의 데이터를 부가하여 n 비트 데이터로 변환하고, 검사 데이터부는 m 비트/n 비트 변환에 의해 n 비트 데이터로 변환한 후에 에러 정정 처리를 행하여, 정정한 후의 n 비트의 정보 데이터중 m 비트를 상기 출력 데이터로 출력하는 것을 특징으로 하는 메모리 장치.
  11. 제10항에 있어서, 상기 메모리부는 적어도 하나의 플래시 메모리로 구성되는 것을 특징으로 하는 메모리 장치.
KR10-1999-7008621A 1998-01-21 1999-01-21 엔코딩 방법 및 메모리 장치 Expired - Lifetime KR100535291B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
JP00995798A JP4099844B2 (ja) 1998-01-21 1998-01-21 メモリ装置
JP1998-009957 1998-01-21
JP1998-009958 1998-01-21
JP995898A JPH11212876A (ja) 1998-01-21 1998-01-21 符号化方法およびそれを利用したメモリ装置
PCT/JP1999/000217 WO1999038170A1 (fr) 1998-01-21 1999-01-21 Procede de codage et dispositif de memoire

Publications (2)

Publication Number Publication Date
KR20010005558A true KR20010005558A (ko) 2001-01-15
KR100535291B1 KR100535291B1 (ko) 2005-12-09

Family

ID=26344787

Family Applications (1)

Application Number Title Priority Date Filing Date
KR10-1999-7008621A Expired - Lifetime KR100535291B1 (ko) 1998-01-21 1999-01-21 엔코딩 방법 및 메모리 장치

Country Status (6)

Country Link
US (1) US6732322B1 (ko)
EP (2) EP1496519B1 (ko)
KR (1) KR100535291B1 (ko)
CN (1) CN1256005A (ko)
DE (1) DE69932962T2 (ko)
WO (1) WO1999038170A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9495518B2 (en) 2011-02-28 2016-11-15 Samsung Electronics Co., Ltd. Method of reliably reading data stored in multi-level cell (MLC) non-volatile memory

Families Citing this family (52)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4074029B2 (ja) * 1999-06-28 2008-04-09 株式会社東芝 フラッシュメモリ
WO2002086719A2 (en) * 2001-04-24 2002-10-31 Koninklijke Philips Electronics N.V. Improved error correction scheme for use in flash memory allowing bit alterability
US6981196B2 (en) * 2001-07-25 2005-12-27 Hewlett-Packard Development Company, L.P. Data storage method for use in a magnetoresistive solid-state storage device
CN100493096C (zh) * 2001-07-25 2009-05-27 索尼公司 接口装置
JP4112849B2 (ja) * 2001-11-21 2008-07-02 株式会社東芝 半導体記憶装置
US6904492B2 (en) * 2001-12-19 2005-06-07 Hewlett-Packard Development Company, L.P. Write-once memory device including non-volatile memory for temporary storage
JP2006004560A (ja) * 2004-06-18 2006-01-05 Elpida Memory Inc 半導体記憶装置及びその誤り訂正方法
GB2428496A (en) * 2005-07-15 2007-01-31 Global Silicon Ltd Error correction for flash memory
US7681109B2 (en) * 2005-10-13 2010-03-16 Ramot At Tel Aviv University Ltd. Method of error correction in MBC flash memory
ATE468558T1 (de) * 2006-03-07 2010-06-15 Nxp Bv Elektronische schaltung mit einer speichermatrix zur speicherung von seiten einschliesslich zusätzlicher daten
CN101192924B (zh) * 2006-11-24 2011-01-26 北京大学 基于Reed-Solomon码的P2P存储系统编码方法
WO2008082591A2 (en) * 2007-01-02 2008-07-10 Marvell World Trade Ltd. High speed interface for multi-level memory
KR100845529B1 (ko) 2007-01-03 2008-07-10 삼성전자주식회사 플래시 메모리 장치의 이씨씨 제어기 및 그것을 포함한메모리 시스템
CN101067972B (zh) * 2007-04-23 2012-04-25 北京兆易创新科技有限公司 一种存储器检错纠错编码电路及利用其读写数据的方法
US8065583B2 (en) 2007-07-06 2011-11-22 Micron Technology, Inc. Data storage with an outer block code and a stream-based inner code
US8051358B2 (en) 2007-07-06 2011-11-01 Micron Technology, Inc. Error recovery storage along a nand-flash string
JP5127350B2 (ja) * 2007-07-31 2013-01-23 株式会社東芝 半導体記憶装置
US8499229B2 (en) 2007-11-21 2013-07-30 Micro Technology, Inc. Method and apparatus for reading data from flash memory
US8046542B2 (en) * 2007-11-21 2011-10-25 Micron Technology, Inc. Fault-tolerant non-volatile integrated circuit memory
US7826277B2 (en) * 2008-03-10 2010-11-02 Hynix Semiconductor Inc. Non-volatile memory device and method of operating the same
KR101466695B1 (ko) * 2008-04-30 2014-12-01 삼성전자주식회사 멀티 비트 레벨 데이터의 부호화 및 복호화 방법
WO2009136357A1 (en) * 2008-05-09 2009-11-12 Koninklijke Philips Electronics N.V. Homework motivation system
GB2492708B (en) * 2010-03-30 2017-01-25 Ibm Data encoding in solid state storage devices
US8386895B2 (en) 2010-05-19 2013-02-26 Micron Technology, Inc. Enhanced multilevel memory
US8972821B2 (en) * 2010-12-23 2015-03-03 Texas Instruments Incorporated Encode and multiplex, register, and decode and error correction circuitry
US8677214B2 (en) * 2011-10-04 2014-03-18 Cleversafe, Inc. Encoding data utilizing a zero information gain function
KR101813182B1 (ko) * 2011-11-16 2017-12-29 삼성전자주식회사 비휘발성 메모리 소자를 포함하는 다치 논리 장치
WO2013093669A1 (en) * 2011-12-21 2013-06-27 International Business Machines Corporation Read/write operations in solid-state storage devices
US9740484B2 (en) 2011-12-22 2017-08-22 Intel Corporation Processor-based apparatus and method for processing bit streams using bit-oriented instructions through byte-oriented storage
US8996957B1 (en) 2012-05-22 2015-03-31 Pmc-Sierra, Inc. Systems and methods for initializing regions of a flash drive having diverse error correction coding (ECC) schemes
US9183085B1 (en) 2012-05-22 2015-11-10 Pmc-Sierra, Inc. Systems and methods for adaptively selecting from among a plurality of error correction coding schemes in a flash drive for robustness and low latency
US9047214B1 (en) 2012-05-22 2015-06-02 Pmc-Sierra, Inc. System and method for tolerating a failed page in a flash device
US9021336B1 (en) 2012-05-22 2015-04-28 Pmc-Sierra, Inc. Systems and methods for redundantly storing error correction codes in a flash drive with secondary parity information spread out across each page of a group of pages
US9021333B1 (en) 2012-05-22 2015-04-28 Pmc-Sierra, Inc. Systems and methods for recovering data from failed portions of a flash drive
US8788910B1 (en) 2012-05-22 2014-07-22 Pmc-Sierra, Inc. Systems and methods for low latency, high reliability error correction in a flash drive
US8793556B1 (en) 2012-05-22 2014-07-29 Pmc-Sierra, Inc. Systems and methods for reclaiming flash blocks of a flash drive
US9176812B1 (en) 2012-05-22 2015-11-03 Pmc-Sierra, Inc. Systems and methods for storing data in page stripes of a flash drive
US8972824B1 (en) 2012-05-22 2015-03-03 Pmc-Sierra, Inc. Systems and methods for transparently varying error correction code strength in a flash drive
US9021337B1 (en) 2012-05-22 2015-04-28 Pmc-Sierra, Inc. Systems and methods for adaptively selecting among different error correction coding schemes in a flash drive
US9577673B2 (en) 2012-11-08 2017-02-21 Micron Technology, Inc. Error correction methods and apparatuses using first and second decoders
US9009565B1 (en) 2013-03-15 2015-04-14 Pmc-Sierra, Inc. Systems and methods for mapping for solid-state memory
US9208018B1 (en) 2013-03-15 2015-12-08 Pmc-Sierra, Inc. Systems and methods for reclaiming memory for solid-state memory
US9026867B1 (en) 2013-03-15 2015-05-05 Pmc-Sierra, Inc. Systems and methods for adapting to changing characteristics of multi-level cells in solid-state memory
US9081701B1 (en) 2013-03-15 2015-07-14 Pmc-Sierra, Inc. Systems and methods for decoding data for solid-state memory
US9053012B1 (en) 2013-03-15 2015-06-09 Pmc-Sierra, Inc. Systems and methods for storing data for solid-state memory
KR102299880B1 (ko) * 2017-04-04 2021-09-09 에스케이하이닉스 주식회사 데이터 변환 장치 및 방법
TWI665678B (zh) * 2017-11-27 2019-07-11 慧榮科技股份有限公司 編碼器及相關的編碼方法與快閃記憶體控制器
TWI643201B (zh) 2017-11-27 2018-12-01 慧榮科技股份有限公司 編碼器及相關的編碼方法與快閃記憶體控制器
CN110147872B (zh) * 2018-05-18 2020-07-17 中科寒武纪科技股份有限公司 编码存储装置及方法、处理器及训练方法
US11995556B2 (en) 2018-05-18 2024-05-28 Cambricon Technologies Corporation Limited Video retrieval method, and method and apparatus for generating video retrieval mapping relationship
KR102711422B1 (ko) * 2020-04-21 2024-09-27 삼성전자주식회사 채널들에 신호들을 송신하는 송신기, 채널들로부터 신호들을 수신하는 수신기, 및 이들을 포함하는 반도체 시스템
CN114490167B (zh) * 2022-01-25 2024-11-26 京东方科技集团股份有限公司 显示终端的验证方法及装置、存储介质、电子设备

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6167322A (ja) * 1984-09-11 1986-04-07 Nec Home Electronics Ltd リ−ドソロモン符号・復号方式の訂正用メモリ制御回路
JPH0387000A (ja) * 1989-08-30 1991-04-11 Mitsubishi Electric Corp 半導体記憶装置
US5226043A (en) * 1990-12-27 1993-07-06 Raytheon Company Apparatus and method for data error detection and correction and address error detection in a memory system
US5218569A (en) * 1991-02-08 1993-06-08 Banks Gerald J Electrically alterable non-volatile memory with n-bits per memory cell
US5459742A (en) * 1992-06-11 1995-10-17 Quantum Corporation Solid state disk memory using storage devices with defects
JPH06195896A (ja) * 1992-12-28 1994-07-15 Canon Inc 記録再生装置、記録装置及び再生装置
KR950001695A (ko) * 1993-06-18 1995-01-03 오오가 노리오 디스크 재생장치
US5475716A (en) * 1994-01-18 1995-12-12 Gi Corporation Method for communicating block coded digital data with associated synchronization/control data
US5450363A (en) * 1994-06-02 1995-09-12 Intel Corporation Gray coding for a multilevel cell memory system
JP3560074B2 (ja) * 1994-07-29 2004-09-02 ソニー株式会社 記録再生装置、及びメモリ制御装置
JP3153730B2 (ja) * 1995-05-16 2001-04-09 株式会社東芝 不揮発性半導体記憶装置
US5719884A (en) * 1995-07-27 1998-02-17 Hewlett-Packard Company Error correction method and apparatus based on two-dimensional code array with reduced redundancy
JPH09134313A (ja) * 1995-11-10 1997-05-20 Sony Corp メモリ装置
JP3275697B2 (ja) 1996-04-05 2002-04-15 株式会社日立製作所 記録再生装置
JPH09288895A (ja) * 1996-04-19 1997-11-04 Toshiba Corp 3値記憶半導体記憶システム
US5864569A (en) * 1996-10-18 1999-01-26 Micron Technology, Inc. Method and apparatus for performing error correction on data read from a multistate memory

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9495518B2 (en) 2011-02-28 2016-11-15 Samsung Electronics Co., Ltd. Method of reliably reading data stored in multi-level cell (MLC) non-volatile memory

Also Published As

Publication number Publication date
EP1496519A2 (en) 2005-01-12
EP0969480A1 (en) 2000-01-05
EP1496519A3 (en) 2005-02-09
DE69932962T2 (de) 2007-02-01
EP0969480A4 (en) 2000-11-22
WO1999038170A1 (fr) 1999-07-29
DE69932962D1 (de) 2006-10-05
EP1496519B1 (en) 2006-08-23
KR100535291B1 (ko) 2005-12-09
US6732322B1 (en) 2004-05-04
CN1256005A (zh) 2000-06-07

Similar Documents

Publication Publication Date Title
KR100535291B1 (ko) 엔코딩 방법 및 메모리 장치
US6279133B1 (en) Method and apparatus for significantly improving the reliability of multilevel memory architecture
US7096406B2 (en) Memory controller for multilevel cell memory
KR101267183B1 (ko) 반도체 기억 장치
US5621682A (en) Memory system
US6336203B1 (en) Error correction coding and decoding method, and circuit using said method
US8495468B2 (en) Data storage apparatus and data writing/reading method
US7581153B2 (en) Memory with embedded error correction codes
US20200285538A1 (en) Memory system for preventing write error
EP2218003B1 (en) Correction of errors in a memory array
US8572457B2 (en) Outer code protection for solid state memory devices
US5751744A (en) Error detection and correction circuit
JPH11283396A (ja) メモリ装置
ITTO20010529A1 (it) Metodo di controllo dell'errore in celle di memoria multilivello con numero di bit memorizzati configurabile.
US6990623B2 (en) Method for error detection/correction of multilevel cell memory and multilevel cell memory having error detection/correction function
JP2009157515A (ja) 半導体メモリコントローラおよび半導体メモリ
JP4099844B2 (ja) メモリ装置
JPH11143787A (ja) 記録再生装置
JPH11212876A (ja) 符号化方法およびそれを利用したメモリ装置
US20020174397A1 (en) Method for error detection/correction of multilevel cell memory and multilevel cell memory having error detection/correction function
JP2020135391A (ja) メモリシステム
JPH11213693A (ja) メモリ装置
JP3843549B2 (ja) 記憶装置および記憶装置の検査方法
JPH1173797A (ja) 記憶装置
EP0766174B1 (en) Memory device having improved yield and reliability

Legal Events

Date Code Title Description
PA0105 International application

Patent event date: 19990921

Patent event code: PA01051R01D

Comment text: International Patent Application

PG1501 Laying open of application
A201 Request for examination
PA0201 Request for examination

Patent event code: PA02012R01D

Patent event date: 20040120

Comment text: Request for Examination of Application

E701 Decision to grant or registration of patent right
PE0701 Decision of registration

Patent event code: PE07011S01D

Comment text: Decision to Grant Registration

Patent event date: 20050928

GRNT Written decision to grant
PR0701 Registration of establishment

Comment text: Registration of Establishment

Patent event date: 20051202

Patent event code: PR07011E01D

PR1002 Payment of registration fee

Payment date: 20051205

End annual number: 3

Start annual number: 1

PG1601 Publication of registration
PR1001 Payment of annual fee

Payment date: 20081120

Start annual number: 4

End annual number: 4

PR1001 Payment of annual fee

Payment date: 20091127

Start annual number: 5

End annual number: 5

PR1001 Payment of annual fee

Payment date: 20101123

Start annual number: 6

End annual number: 6

PR1001 Payment of annual fee

Payment date: 20111129

Start annual number: 7

End annual number: 7

FPAY Annual fee payment

Payment date: 20121123

Year of fee payment: 8

PR1001 Payment of annual fee

Payment date: 20121123

Start annual number: 8

End annual number: 8

FPAY Annual fee payment

Payment date: 20131122

Year of fee payment: 9

PR1001 Payment of annual fee

Payment date: 20131122

Start annual number: 9

End annual number: 9

FPAY Annual fee payment

Payment date: 20141125

Year of fee payment: 10

PR1001 Payment of annual fee

Payment date: 20141125

Start annual number: 10

End annual number: 10

FPAY Annual fee payment

Payment date: 20151120

Year of fee payment: 11

PR1001 Payment of annual fee

Payment date: 20151120

Start annual number: 11

End annual number: 11

FPAY Annual fee payment

Payment date: 20161129

Year of fee payment: 12

PR1001 Payment of annual fee

Payment date: 20161129

Start annual number: 12

End annual number: 12

FPAY Annual fee payment

Payment date: 20171124

Year of fee payment: 13

PR1001 Payment of annual fee

Payment date: 20171124

Start annual number: 13

End annual number: 13

FPAY Annual fee payment

Payment date: 20181126

Year of fee payment: 14

PR1001 Payment of annual fee

Payment date: 20181126

Start annual number: 14

End annual number: 14

EXPY Expiration of term
PC1801 Expiration of term

Termination date: 20190721

Termination category: Expiration of duration