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

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

Info

Publication number
KR100535291B1
KR100535291B1 KR10-1999-7008621A KR19997008621A KR100535291B1 KR 100535291 B1 KR100535291 B1 KR 100535291B1 KR 19997008621 A KR19997008621 A KR 19997008621A KR 100535291 B1 KR100535291 B1 KR 100535291B1
Authority
KR
South Korea
Prior art keywords
data
bit
bits
cell array
memory
Prior art date
Application number
KR10-1999-7008621A
Other languages
English (en)
Other versions
KR20010005558A (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

Links

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • 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/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; 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/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; 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/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

Abstract

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

Description

엔코딩 방법 및 메모리 장치{ENCODING METHOD AND MEMORY APPARATUS}
본 발명은 예를 들면 다중값 기록 플래시 메모리(flash memory), 그것을 사용한 메모리 카드 등에 양호하게 적용가능한 엔코딩 방법 및 메모리 장치에 관한 것이다.
최근에는, 메모리 장치로서 플래시 메모리 등의 반도체 메모리가 널리 사용되고 있다. 플래시 메모리에서는, 반도체 기판상에 적층 형성된 부유 게이트(전하 축적층)및 제어 게이트를 포함하는 메모리 셀을 복수개 포함하는 셀 어레이(통상은 6500만 셀 정도)를 이용하여 데이터의 기억을 행하고 있다(도 16참조). 이 경우에, 각 셀 어레이에는, 부유 게이트에 저장된 전하량의 크기에 대응하는 데이터가 기억된다.
도 17a 및 도 17b는 플래시 메모리에 이용하는 메모리 셀(100)의 구조를 도시하고 있다. 즉, 메모리 셀(100)은, 반도체 기판(101)에 전하 축적층(부유 게이트) (102) 및 제어 게이트(103)가 적층되어 형성되어 있다. 메모리 셀(100)에 데이터를 기입하는 경우, 부유 게이트(102)에 저장하는 전하량을 제어함으로써 기억하는 데이터("0" 또는“1")에 따라 도 18에 도시된 2개의 임계 전압 중 하나에 도달한다. 한편, 메모리 셀(100)로부터 데이터를 판독하는 경우에는, 2개의 임계 전압의 사이에 설정된 기준 전압을 이용하여 메모리 셀(100)의 임계 전압이 기준 전압보다 높은지 낮은지에 따라, 그 메모리 셀(100)의 데이터가 “0"인지“1"인지에 대한 판단이 이루어 진다.
반도체 메모리에서는, 고집적 및 고밀도 회로 구현에 수반하는 여러 가지의 영향에 의한 신뢰성 저하를 방지하는 것이 중요한 과제로 되어 있다. 특히, 메모리 장치의 신뢰성을 유지하기 위한 노력으로서, 기입 및 삭제 동작 수의 증가에 수반하는 셀 불량과 같은 노쇠화에 의해 일어나는 불량의 방지하기 위해, 예를 들면 해밍 코드(hamming code)와 같은 에러 정정 코드를 이용한 에러 정정 회로를 반도체 메모리의 내부에 내장하는 것이 있다.
에러 정정 코드는 정보 데이터에 부가된 검사 데이터라고 불리는 용장 코드(redundant code)이고, 이러한 검사 데이터를 이용함으로써 코드 내의 에러를 정정한다. 예를 들면, 정보 데이터의 512 비트 블럭에 대한 단축화 해밍 코드에, 도 19에 도시한 바와 같이 10 비트의 검사 데이터가 부가되어 이루어져, 심지어 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 중 하나의 코드가 하나의 에러 비트를 가질 경우에는, 해밍 코드 디코더(113)는 에러를 정정한 후 정보 데이터를 출력 데이터 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)에 입력된다. 판독 데이터 RD 중 하나의 코드 내에 어떠한 에러도 없으면 BCH 코드 디코더(123)에서는 정보 데이터를 그대로 출력 데이터 Dout로서 출력한다. 만약, 판독 데이터 RD 중 하나의 코드 내의 에러의 비트 수가 1 또는 2일 경우에는, 에러를 정정한 후에 정보 데이터가 출력 데이터 Dout로서 출력된다.
도 20 및 22에 도시된 바와 같이, 플래시 메모리(110, 120)에 포함된 에러 정정 회로는 노쇠화에 의해서 어느 정도의 셀 불량이 일어나더라도, 기입된 데이터의 에러를 억제할 수 있다. 그러나, 일반적인 에러 정정 코드에서는 상당히 많은 수의 에러를 정정하기 위해서 용장(redundant) 검사 데이터인 비교적 많은 양의 검사 데이터를 갖게 되는데, 사용되는 메모리 셀의 수의 증가와 함께 포함된 에러 정정 회로의 규모도 커진다.
다음에, 복수의 플래시 메모리(플래시 메모리 칩)로 구성된 메모리 카드에 대해서 설명하겠다. 단일 칩 플래시 메모리로는 취급할 수 없는 양의 데이터를 기억하기 위한 메모리 장치로서, 복수의 플래시 메모리 및 제어기를 포함하는 메모리 카드가 있다.
도 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)에 입력되도록 제어한다. 판독 데이터 RD 중 하나의 코드 내에 어떠한 에러도 없으면, BCH 코드 디코더(136)는 정보 데이터를 그대로 출력 데이터 Dout로서 출력한다. 만약, 판독 데이터 RD 중 하나의 코드 내의 에러 비트 수가 1 또는 2인 경우에는, BCH 코드 디코더(136)는 에러를 정정한 후에 정보 데이터를 출력 데이터 Dout로서 출력한다. 이러한 방식에 따라서, BCH 코드 디코더(136)로부터 출력되는 출력 데이터 Dout는 카드 인터페이스(134)를 통해 카드 외부로 출력된다.
상기에서 진술한 바와 같이, 에러 정정 코드는 복수의 플래시 메모리로 구성된 메모리 카드에도 이용될 수 있다. 제어기로 에러 정정을 하는 경우, 플래시 메모리에 내장된 에러 정정 회로에 비교하여, 보다 큰 에러 정정 회로를 가질 수 있기 때문에, 보다 많은 에러를 정정할 수 있다고 하는 특징이 있다.
다음에, 플래시 메모리의 다중값 기록에 관해서 진술한다. 최근, 플래시 메모리의 기억 용량을 증대시키기 위해서 1개의 셀에 다중 비트를 기억하는 플래시 메모리가 제안되어 있다. 예를 들면, 도 24a 내지 도 24d에 도시된 바와 같이, 4 개의 다중값을 기입하는 플래시 메모리의 메모리 셀(100)에서는, 부유 게이트(102)에 축적된 전하 량을 제어함으로써, 저장된 데이터("11", "10", "01" 또는 "O0")에 대응하여 도 25에 도시된 4개의 임계 전압중 하나를 얻을 수 있다. 데이터를 판독하기 위해서는, 각각의 인접한 임계 전압의 사이에 각각 설정된 3개의 기준 전압을 이용한다. 메모리 셀(100)의 임계 전압과 각 기준 전압을 비교함으로써, 메모리 셀(100)의 데이터를 판독한다. 이러한 구성에 의해서, 각 메모리 셀(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)에 기입 데이터 WD를 제공하고, 셀 어레이(141)를 구성하는 각각 메모리 셀에 기입 데이터 WD를 순차 기입한다.
한편, 데이터의 판독 동작은 다음과 같이 행하여진다. 셀 어레이(141)로부터 판독된 판독 데이터 RD는 4 비트/1 비트 변환기(144)에 의해 4 비트의 병렬 데이터 포맷으로부터 직렬 데이터 포맷으로 변환되어 변환된 직렬 데이터가 BCH 코드 디코더(145)에 공급된다. 판독 데이터 RD 중 하나의 코드 내에 어떠한 에러도 없으면 BCH 코드 디코더(145)는 정보 데이터를 그대로 출력 데이터 Dout로서 출력한다. 만약, 판독 데이터 RD 중 하나의 코드 내의 에러 비트 수가 1 또는 2일 경우에는, BCH 코드 디코더(145)는 에러를 정정한 후에 정보 데이터를 출력 데이터 Dout로서 출력한다.
도 26에 도시된 플래시 메모리(140)와 같이 다중값을 기록할 수 있는 플래시 메모리는 1개의 셀 불량에 의해 복수의 비트에 에러가 발생된다는 특징이 있다. 종래의 플래시 메모리는 1개의 메모리 셀에 1 비트를 저장하기 때문에, 에러 정정 코드로서 비트 에러를 정정하는 코드 시스템이 주로 사용되어 왔지만, 만약 단일 메모리 셀의 불량이 복수의 비트에 에러를 발생시킨다면, 비트 단위의 에러를 정정하는 에러 정정 코드로서는 효율이 나빠지게 된다.
예를 들면, 하나의 메모리 셀에 4 비트의 데이터를 저장하는 플래시 메모리에서는, 하나의 메모리 셀이 액세스 불능 상태가 된다면, 이러한 에러를 정정하기 위해서 4개의 정정 코드를 이용해야 한다. 상기에서 설명한 대로, 상술한 에러 정정 코드를 이용해서 많은 에러를 정정하고자 한다면, 에러 정정 회로가 커지기 때문에 회로 규모가 커지는 문제가 발생한다. 또한, 많은 에러를 정정하기 위해서는 보다 많은 용장 데이터를 부가해야 하기 때문에, 많은 메모리 셀이 필요하게 된다고 하는 문제도 생긴다.
본 발명의 목적은 규모가 작은 에러 정정 회로 및 한정된 수의 메모리 셀을 사용하는 메모리 장치를 제공하여, 적은 수의 정정 에러에 대해서 효율적인 성능을 유지하도록 하는데 있다. 본 발명의 또 다른 목적은 외부와의 데이터의 입출력을 예를 들면 바이트 단위로 행하는 것을 유지하면서 코드 길이를 확장시킬 수 있는 엔코딩 방법 및 그 방법을 이용한 메모리 장치를 제공하는 것이다.
도 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은 셀 어레이의 구조를 도시한 개략도.
도 17a 및 17b는 메모리 셀의 구조를 도시한 개략도.
도 18은 메모리 셀의 전압 분포를 도시한 도면.
도 19는 단축화 해밍 코드의 예를 나타내는 도면.
도 20은 단축화 해밍 코드를 이용한 에러 정정 회로를 포함하는 플래시 메모리의 구성을 도시하는 블럭도.
도 21은 단축화 BCH 코드를 나타내는 도면.
도 22는 BCH 코드를 이용한 에러 정정 회로를 포함하는 플래시 메모리의 구성을 도시하는 블럭도.
도 23은 단축화 BCH 코드를 이용한 에러 정정 회로를 제어기에 구비하는 메모리 카드의 구성을 도시하는 블럭도.
도 24a 내지 24d는 다중값 기록을 하는 경우에 메모리 셀에 전하가 충전되는 방법을 도시한 도면.
도 25는 다중값 기록을 하는 메모리 셀의 전압 분포를 도시한 도면.
도 26은 단축화 BCH 코드를 이용한 에러 정정 회로를 포함하는 다중값 기록 플래시 메모리의 구성을 도시한 블럭도.
본 발명의 특징에 따른 메모리 장치는, 복수의 메모리 셀을 갖고 각각의 메모리 셀이 다중 비트의 정보를 기록하는 셀 어레이, 입력 데이터를 리드·솔로몬 코드로 변환함으로써 셀 어레이에 기입하기 위한 기입 데이터를 제공하는 엔코더, 및 셀 어레이로부터 판독되는 판독 데이터에 에러 정정 처리를 실시하여 출력 데이터를 얻는 리드·솔로몬 코드 디코더를 포함한다.
본 발명의 또 다른 특징에 따른 메모리 장치는, 복수의 메모리 셀을 갖고 각각의 메모리 셀이 다중 비트의 데이터를 기록하는 셀 어레이를 구비한 메모리부, 및 메모리부에 대하여 데이터의 기입 또는 판독을 제어하기 위한 제어기를 포함하고, 제어기는 입력 데이터를 리드·솔로몬 코드로 변환함으로써 메모리부에 기입하기 위한 기입 데이터를 제공하는 엔코더, 및 메모리부로부터 판독되는 판독 데이터에 대해 에러 정정 처리를 실시하여 출력 데이터를 얻는 리드·솔로몬 코드 디코더를 포함한다.
본 발명에 있어서, 셀 어레이의 각각의 메모리 셀에는 각각 다중 비트의 데이터를 저장한다. 기입 동작에서는, 엔코더가 입력 데이터를 리드·솔로몬 코드로 변환하여, 이를 셀 어레이에 기입 데이터로서 저장한다. 리드·솔로몬 코드는 복수의 비트를 1바이트로 간주하여, 바이트 단위로 에러 정정을 하는 에러 정정 코드이다. 판독 동작시에, 셀 어레이의 각 메모리 셀에 저장된 다중 비트의 데이터가 판독되어, 이 판독 데이터에 대하여 리드·솔로몬 코드 디코더로 에러 정정 처리를 실시하여 출력 데이터가 제공된다.
이와 같이, 다중 비트 데이터를 각각 저장하는 메모리 셀로 이루어지는 메모리 장치에 대한 에러 정정 코드로서 바이트 단위로 에러 정정을 하는 리드·솔로몬 코드가 이용됨으로써, 적은 에러 정정 수로 효율적인 성능을 얻을 수 있어서 에러 정정 회로의 규모를 작게함과 동시에 사용하는 메모리 셀의 수도 적게 하는 것이 가능해진다.
또한, 본 발명의 또 다른 특징에 따르면, 엔코딩 방법은, m 비트 데이터에 (n-m) 비트(n>m)의 데이터를 부가하여 n 비트의 데이터로 변환하고, 이 n 비트의 데이터에 대하여 n 비트를 하나의 심볼로 하는 리드·솔로몬 코드를 이용하여 엔코딩하며, (n-m) 비트 데이터를 부가하기 전의 m 비트 데이터를 정보 데이터로서 출력하고, n 비트/m 비트 변환한 후의 m 비트의 데이터를 검사 데이터로서 출력하는 것이다.
또한, 본 발명의 또 다른 특징에 따르면, 메모리 장치는, 복수의 메모리 셀을 갖는 셀 어레이, 입력 데이터를 에러 정정 코드로 변환하여 셀 어레이에 기입하기 위한 기입 데이터를 제공하는 엔코더, 및 셀 어레이로부터 판독되는 판독 데이터에 대해 에러 정정 처리를 실시하여 출력 데이터를 제공하는 디코더를 포함하는 메모리 장치로서, 엔코더는 m 비트 입력 데이터에 (n-m) 비트(n>m)의 데이터를 부가하여 n 비트의 데이터로 변환하고, 이 n 비트의 데이터에 대하여 n 비트를 하나의 심볼로 하는 리드·솔로몬 코드를 이용하여 엔코딩하며, (n-m) 비트 데이터를 부가하기 전의 m 비트의 데이터를 정보 데이터로서 출력하고, n 비트/m 비트 변환한 후의 m 비트의 데이터를 검사 데이터로서 출력하는 한편, 디코더는 셀 어레이로부터 판독된 m 비트 데이터에, 정보 데이터부와 연관된 (n-m) 비트 데이터를 부가하여 n 비트의 데이터로 변환하고, 검사 데이터부를 m 비트/n 비트 변환에 의해 n 비트의 데이터로 변환한 후에 변환된 n 비트 데이터를 에러 정정 처리 하여, 정정 후의 n 비트 정보 데이터 중 m 비트 데이터부를 출력 데이터로 출력한다.
또한, 본 발명의 또 다른 특징에 따르면, 메모리 장치는, 복수의 메모리 셀을 갖는 셀 어레이를 포함하는 메모리부, 및 메모리부에 대하여 데이터 기입 또는 판독을 행하기 위한 제어기를 포함하며, 제어기는 입력 데이터를 에러 정정 코드로 변환함으로써 메모리부에 기입하기 위한 기입 데이터를 제공하는 엔코더, 및 메모리부로부터 판독되는 판독 데이터에 대해 에러 정정 처리를 실시하여 출력 데이터를 제공하는 디코더를 포함하며, 엔코더는 m 비트의 입력 데이터에 (n-m) 비트(n>m)의 데이터를 부가하여 n 비트 데이터로 변환하고, 이 n 비트 데이터에 대하여 n 비트를 하나의 심볼로 하는 리드·솔로몬 코드를 이용하여 엔코딩하며, (n-m) 비트 데이터를 부가하기 전의 m 비트 데이터를 정보 데이터로서 출력하고, n 비트/m 비트 변환한 후의 m 비트의 데이터를 검사 데이터로서 출력하며, 디코더는 셀 어레이로부터 판독된 m 비트 판독 데이터에, (n-m) 비트 데이터를 부가하여 정보 데이터부와 연관된 n 비트 데이터로 변환하고, m 비트 판독 데이터의 검사 데이터부를 m 비트/n 비트 변환에 의해 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) 비트의 데이터가 부가되어 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)에 공급된다. 판독 데이터 RD 중 하나의 코드 내에 어떠한 에러도 없으면 리드·솔로몬 코드 디코더(15)는 정보 데이터를 그대로 바이트 단위로 출력 데이터 Dout로서 출력한다. 만약, 판독 데이터 RD 중 하나의 코드 내의 에러 바이트 수가 1 또는 2일 경우에는, 리드·솔로몬 코드 디코더(15)는 에러를 정정한 후에 정보 데이터를 바이트 단위로 출력 데이터 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개의 정정으로 아주 적기 때문에, 리드·솔로몬 코드를 사용하면 에러 정정 회로의 규모를 BHC 코드보다 훨씬 작게 할 수가 있다. 또한, 리드·솔로몬 코드에 대한 용장 데이터도 BCH 코드에 대한 용장 데이터의 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)의 제어에 따라서 변환된 4 비트 병렬 데이터가 플래시 메모리(21 또는 22)에 기입된다.
한편, 데이터의 판독 동작은 다음과 같이 행하여진다. 플래시 인터페이스(29)의 제어에 따라서 플래시 메모리(21 또는 22)로부터 판독된 판독 데이터 RD는, 4 비트/8 비트 변환기(27)에 의해 4 비트의 병렬 데이터에서 1 바이트(8 비트)의 병렬 데이터로 변환되어 변환된 1 바이트의 병렬 데이터가 리드·솔로몬 코드 디코더(28)에 공급된다. 판독 데이터 RD 중 하나의 코드 내에 어떠한 에러도 없으면 리드·솔로몬 코드 디코더(28)는 정보 데이터를 그대로 바이트 단위의 출력 데이터 Dout로서 출력한다. 또한, 판독 데이터 RD 중 하나의 코드 내의 에러 바이트 수가 1 또는 2일 경우에는, 리드·솔로몬 코드 디코더(28)는 에러를 정정한 후에 정보 데이터를 출력 데이터 Dout로서 바이트 단위로 출력한다. 이와 같이 리드·솔로몬 코드 디코더(28)로부터 출력되는 출력 데이터 Dout는 카드 인터페이스(24)를 통해 카드 외부로 출력된다.
또한, 입력 데이터 Din 또는 출력 데이터 Dout가 8 비트 병렬 데이터가 아닐 경우에는, 엔코더(25)의 전단에 입력 데이터 Din을 8 비트 병렬 데이터로 변환하는 비트 변환기를 배치하거나, 또는 리드·솔로몬 코드 디코더(28)의 후단에 8 비트 병렬 데이터를 출력 데이터 Dout에 대응하는 병렬 또는 직렬 데이터로 변환하는 비트 변환기를 배치한다.
이와 같이 제2 실시예에서도, 4 비트 데이터를 각각 기억하는 메모리 셀로 이루어지는 셀 어레이를 갖는 메모리부로서의 플래시 메모리(21, 22)에 대해서, 바이트 단위로 에러를 정정하는 에러 정정 코드로서 리드·솔로몬 코드를 이용함으로써, 제1 실시예와 마찬가지로 적은 에러 정정 수로도 충분한 성능을 얻을 수 있게되고, 따라서 제2 실시예에 의해서도 에러 정정 회로의 규모를 작게 할 수 있음과 동시에, 사용하는 메모리 셀의 수도 적게 할 수 있게 된다. 또한, 제어기(23)가 에러를 정정하기 때문에, 에러 정정 회로를 플래시 메모리(21, 22)에 내장하는 경우보다 큰 에러 정정 회로를 갖을 수 있다. 그 때문에, 다중값 기록의 영향으로 많은 에러가 발생하더라도 이것을 정정하는 것이 가능하게 된다.
여기서, 플래시 메모리로부터의 데이터 판독 과정을 다시 한번 설명한다. 셀 어레이(도 16참조)로부터의 판독은 셀 단위가 아니라, 페이지라고 불리는 단위(예를 들면 각 페이지는 1024셀을 나타냄)로 동시에 판독하여, 판독한 데이터를 출력 버퍼로 순차 출력한다(도 5참조). 따라서, 예를 들면 16개의 값을 기록하는 플래시 메모리에서는, 1 페이지를 1024 셀의 정보로 하면, 4096 비트(512 바이트)의 정보를 1개의 단위로서 판독하게 된다. 여기서, 메모리 외부와의 데이터의 입출력은 대부분 1 바이트(8 비트)단위로 행하기 때문에, 리드·솔로몬 코드의 1 심볼도 8 비트로 하는 것이 정합성이 높다.
그러나, 8 비트를 1 심볼로 한 리드·솔로몬 코드는 코드 길이가 255 바이트로 되기 때문에, 엔코딩 동작시에는 512 바이트 데이터를 3개 또는 4개의 세그먼트로 분할하여, 각각 에 검사 데이터(용장 데이터)를 부가하는 것이 필요하다. 도 6은, 512 바이트의 데이터를 128 바이트의 정보 데이터에 대해 하나의 에러를 각각 정정할 수 있는 4 단축화 리드·솔로몬 코드로 예시적으로 엔코딩한 경우의 엔코딩의 상태를 도시하고 있다.
여기서, 에러 정정 코드의 일반적인 성질로서, 동일한 수의 검사 데이터를 부가하면 동일한 정보 데이터를 분할하여 엔코딩하는 것보다 한번에 정보 데이터를 엔코딩하는 것이 성능이 높다는 성질이 있다. 512 바이트의 정보 데이터를 동시에 판독하면 모든 512 바이트 정보 데이터를 전부 엔코딩하는 것이 보다 효율이 좋게 된다.
또한, 1 페이지분의 데이터를 분할하여 엔코딩하면, 디코딩할 때에는 디코딩된 데이터가 사이를 비워 출력되지만(도 7참조), 1 페이지분의 디코딩 데이터는 될 수 있는 한 연속하여 출력되는 것이 시스템의 구성상 바람직하다. 따라서, 이 점으로부터도 1 페이지분의 데이터는 한 블럭으로서 엔코딩되는 것이 바람직하다.
이어서, 본 발명의 제3 실시예에 대해서 설명한다. 도 8은 제3 실시예에 따른 플래시 메모리(30)의 구성을 도시하고 있다. 플래시 메모리(30)는 외부와의 데이터의 입출력을 바이트(8비트) 단위로 행하고, 두개의 에러를 정정할 수 있는 단축화 리드·솔로몬 코드를 이용한 에러 정정 회로를 포함하는 16개의 값(4비트)을 기록하는 플래시 메모리이다.
이 경우, 각 페이지 내의 예를 들면 512 바이트의 정보 데이터를 한 블럭으로서 엔코딩하기 때문에, 10 비트를 1 심볼로 하는 단축화 리드·솔로몬 코드를 이용하여 엔코딩이 행하여진다. 여기서, 1 페이지내의 정보 데이터가 512 바이트라면, 두개의 에러를 정정하기 위한 검사 데이터(용장 데이터)는 516 바이트 코드 길이를 필요로 하는 4개 심볼들을 포함한다. 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바이트의 데이터가 출력된다. 한편, 변환기(32d)에서는, 4 심볼 검사 데이터가 공급되었을 때 검사 데이터부를 형성하는 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이, 공급된 10 비트 데이터에서 삭제되어 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에 도시)로부터 출력되는 8 비트 판독 데이터 RD 중, 각 5 바이트의 검사 데이터부 및 각 512 바이트의 정보 데이터부를 변환기(35a 및 35b)에 선택적으로 공급하는 전환 스위치(35c), 및 변환기(35a)로부터 출력되는 512 바이트의 정보 데이터부에 대응한 10 비트 데이터와 변환기(35b)로부터 출력되는 5 바이트의 검사 데이터부에 대응한 10 비트의 데이터를 선택적으로 추출하여 512 심볼의 정보 데이터에 대해 두개의 에러를 정정할 수 있는 단축화 리드·솔로몬 코드를 재구성하는 전환 스위치(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)에 공급된다. 하나의 코드 내의 에러 심볼 수가 1 또는 2일 경우에는 이 리드·솔로몬 코드 디코더(35e)는 에러를 정정할 수 있다. 그리고, 이 디코더(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)를 구성하는 메모리 셀에 공급된 4 비트 데이터가 순차 기입된다.
한편, 데이터의 판독 동작은 아래와 같이 행하여진다. 셀 어레이(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 실시예에서와 같이, 데이터부에 대하여 5 바이트의 검사 데이터(용장 데이터)를 부가하여 512 바이트의 정보 데이터부에 대하여 두개의 에러를 정정할 수 있는 단축화 리드·솔로몬 코드를 이용한 경우의 불량 블럭의 발생 확률을 구한다. 이 경우에는 하나의 단축화 리드·솔로몬 코드가 2 심볼까지의 불량을 정정할 수가 있다. 2셀분의 8 비트 정보를 1 심볼로 하였을 때의 심볼 에러율은, 수학식 4에 도시한 바와 같게 된다. 이 심볼 에러율은 정보 데이터의 심볼 에러율이다. 검사 데이터(용장 데이터)의 심볼 에러율은 셀 에러율의 약 2.5배가 되고, 대략 2.5 × 10-5이다.
또한, 총 심볼 수는 516 심볼이고, 1 블럭 중에는 64 코드가 포함되는 것으로 된다. 검사 데이터의 심볼 에러율이 정보 데이터의 심볼 에러율 보다 크기 때문에, 불량 블럭의 발생 확률은 검사 데이터의 심볼 에러율을 이용하여 평가할 수가 있다. 따라서, 불량 블럭의 발생 확률은 하기의 수학식 5로 평가할 수 있고, 약 0.0023% 이하 정도가 된다.
한편, 데이터부에 2 바이트의 검사 데이터(용장 데이터)를 부가하여, 128 바이트의 정보 데이터부에 대하여 1 심볼 = 8 비트의 하나의 에러를 정정할 수 있는 단축화 리드·솔로몬 코드를 이용한 경우의 불량 블럭의 발생 확률을 구해보자. 코드당의 총 심볼수는 130이고, 1 블럭 중에는 256 코드가 포함되므로, 불량 블럭의 발생 확률은 하기의 수학식 6으로 부터, 대략 0.086%로 된다.
따라서, 제3 실시예에 따른 엔코딩 방법과, 128 바이트의 정보 데이터에 대하여 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에 도시한 바와 같이 각 페이지의 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 비트 데이터에 에러 정정 처리를 행하여, 정정한 후의 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 비트 판독 데이터의 검사 데이터부에 m 비트/n 비트 변환을 행하여 n 비트 데이터로 변환한 후, 변환된 n 비트 데이터에 에러 정정 처리를 하고, 정정된 n 비트의 정보 데이터 중 m 비트 데이터부를 상기 출력 데이터로 제공하는 것을 특징으로 하는 메모리 장치.
  11. 제10항에 있어서,
    상기 메모리부는 적어도 하나의 플래시 메모리로 구성되는 것을 특징으로 하는 메모리 장치.
KR10-1999-7008621A 1998-01-21 1999-01-21 엔코딩 방법 및 메모리 장치 KR100535291B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
JP1998-009957 1998-01-21
JP00995798A JP4099844B2 (ja) 1998-01-21 1998-01-21 メモリ装置
JP995898A JPH11212876A (ja) 1998-01-21 1998-01-21 符号化方法およびそれを利用したメモリ装置
JP1998-009958 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 KR20010005558A (ko) 2001-01-15
KR100535291B1 true KR100535291B1 (ko) 2005-12-09

Family

ID=26344787

Family Applications (1)

Application Number Title Priority Date Filing Date
KR10-1999-7008621A 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)

Families Citing this family (51)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4074029B2 (ja) * 1999-06-28 2008-04-09 株式会社東芝 フラッシュメモリ
JP4417629B2 (ja) * 2001-04-24 2010-02-17 エヌエックスピー ビー ヴィ ビット変更を可能にする、フラッシュメモリにおける使用のための、改良されたエラー修正方式
KR100893428B1 (ko) * 2001-07-25 2009-04-17 소니 가부시끼 가이샤 인터페이스 장치
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
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存储系统编码方法
US7978541B2 (en) 2007-01-02 2011-07-12 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 株式会社東芝 半導体記憶装置
US8046542B2 (en) * 2007-11-21 2011-10-25 Micron Technology, Inc. Fault-tolerant non-volatile integrated circuit memory
US8499229B2 (en) * 2007-11-21 2013-07-30 Micro Technology, Inc. Method and apparatus for reading data from flash 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
KR101736337B1 (ko) 2011-02-28 2017-05-30 삼성전자주식회사 비휘발성 메모리 장치, 상기 메모리 장치를 제어하는 컨트롤러, 및 상기 컨트롤러 동작 방법
US8782494B2 (en) * 2011-10-04 2014-07-15 Cleversafe, Inc. Reproducing data utilizing a zero information gain function
KR101813182B1 (ko) * 2011-11-16 2017-12-29 삼성전자주식회사 비휘발성 메모리 소자를 포함하는 다치 논리 장치
DE112012005424T5 (de) 2011-12-21 2014-09-18 International Business Machines Corporation Lese/Schreib-Operationen in Halbleiterspeicher-Bauelementen
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
US9176812B1 (en) 2012-05-22 2015-11-03 Pmc-Sierra, Inc. Systems and methods for storing data in page stripes of a flash drive
US9021333B1 (en) 2012-05-22 2015-04-28 Pmc-Sierra, Inc. Systems and methods for recovering data from failed portions 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
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
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
US8793556B1 (en) 2012-05-22 2014-07-29 Pmc-Sierra, Inc. Systems and methods for reclaiming flash blocks 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
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
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
US9081701B1 (en) 2013-03-15 2015-07-14 Pmc-Sierra, Inc. Systems and methods for decoding data for solid-state memory
US9009565B1 (en) 2013-03-15 2015-04-14 Pmc-Sierra, Inc. Systems and methods for mapping 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
US9208018B1 (en) 2013-03-15 2015-12-08 Pmc-Sierra, Inc. Systems and methods for reclaiming memory 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 에스케이하이닉스 주식회사 데이터 변환 장치 및 방법
TWI643201B (zh) 2017-11-27 2018-12-01 慧榮科技股份有限公司 編碼器及相關的編碼方法與快閃記憶體控制器
TWI665678B (zh) * 2017-11-27 2019-07-11 慧榮科技股份有限公司 編碼器及相關的編碼方法與快閃記憶體控制器
CN110147873B (zh) * 2018-05-18 2020-02-18 中科寒武纪科技股份有限公司 卷积神经网络的处理器及训练方法
KR20210129960A (ko) * 2020-04-21 2021-10-29 삼성전자주식회사 채널들에 신호들을 송신하는 송신기, 채널들로부터 신호들을 수신하는 수신기, 및 이들을 포함하는 반도체 시스템

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

Also Published As

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

Similar Documents

Publication Publication Date Title
KR100535291B1 (ko) 엔코딩 방법 및 메모리 장치
KR101267183B1 (ko) 반도체 기억 장치
KR100327883B1 (ko) 인터리빙을 사용한 멀티레벨 셀 메모리의 정정 방법 및 장치
US8321760B2 (en) Semiconductor memory device and data processing method thereof
US7096406B2 (en) Memory controller for multilevel cell memory
KR0142277B1 (ko) 메모리 시스템
US6279133B1 (en) Method and apparatus for significantly improving the reliability of multilevel memory architecture
US8495468B2 (en) Data storage apparatus and data writing/reading method
US6052820A (en) Error correction coding and decoding method, and circuit using said method
EP2218003B1 (en) Correction of errors in a memory array
KR100921263B1 (ko) 반도체 기억 장치 및 디코드 방법
KR100261790B1 (ko) 에러 정정/검출회로와 반도체 기억장치
US8463985B2 (en) Constrained coding to reduce floating gate coupling in non-volatile memories
JPH11283396A (ja) メモリ装置
US20110296272A1 (en) Outer code protection for solid state memory devices
CN110362420B (zh) 存储系统和存储系统的操作方法
US5450423A (en) Data error correcting/detecting system and apparatus compatible with different data bit memory packages
US6438726B1 (en) Method of dual use of non-volatile memory for error correction
US6990623B2 (en) Method for error detection/correction of multilevel cell memory and multilevel cell memory having error detection/correction function
ITTO20010529A1 (it) Metodo di controllo dell'errore in celle di memoria multilivello con numero di bit memorizzati configurabile.
JP2009157515A (ja) 半導体メモリコントローラおよび半導体メモリ
JP4099844B2 (ja) メモリ装置
US6360347B1 (en) Error correction method for a memory device
JP2020135391A (ja) メモリシステム
JPH11212876A (ja) 符号化方法およびそれを利用したメモリ装置

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20121123

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20131122

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20141125

Year of fee payment: 10

FPAY Annual fee payment

Payment date: 20151120

Year of fee payment: 11

FPAY Annual fee payment

Payment date: 20161129

Year of fee payment: 12

FPAY Annual fee payment

Payment date: 20171124

Year of fee payment: 13

FPAY Annual fee payment

Payment date: 20181126

Year of fee payment: 14

EXPY Expiration of term