KR20020007414A - 메모리 디바이스를 위한 에러 교정 회로 및 방법 - Google Patents

메모리 디바이스를 위한 에러 교정 회로 및 방법 Download PDF

Info

Publication number
KR20020007414A
KR20020007414A KR1020017014657A KR20017014657A KR20020007414A KR 20020007414 A KR20020007414 A KR 20020007414A KR 1020017014657 A KR1020017014657 A KR 1020017014657A KR 20017014657 A KR20017014657 A KR 20017014657A KR 20020007414 A KR20020007414 A KR 20020007414A
Authority
KR
South Korea
Prior art keywords
data
byte
data word
error correction
bits
Prior art date
Application number
KR1020017014657A
Other languages
English (en)
Inventor
주니어 월터즈도날드먼로
Original Assignee
토토라노 제이. 빈센트
어드밴스드 마이크로 디바이시즈, 인코포레이티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority to US09/314,576 priority Critical
Priority to US09/314,575 priority
Priority to US09/314,575 priority patent/US6438726B1/en
Priority to US09/314,574 priority
Priority to US09/314,576 priority patent/US6360347B1/en
Priority to US09/314,574 priority patent/US6584594B1/en
Application filed by 토토라노 제이. 빈센트, 어드밴스드 마이크로 디바이시즈, 인코포레이티드 filed Critical 토토라노 제이. 빈센트
Priority to PCT/US2000/013385 priority patent/WO2000070459A1/en
Publication of KR20020007414A publication Critical patent/KR20020007414A/ko

Links

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B20/00Signal processing not specific to the method of recording or reproducing; Circuits therefor
    • G11B20/10Digital recording or reproducing
    • G11B20/18Error detection or correction; Testing, e.g. of drop-outs
    • GPHYSICS
    • G06COMPUTING; 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

Abstract

메모리 디바이스를 위한 에러 교정 회로 및 방법은 데이터 바이트들 내에 에러들이 있는 경우 이 에러들을 검출하고 교정하기 위해, 가령 해밍 코드와 같은 에러 교정 블록 코드를 이용한다. 상기 에러 교정 회로 및 방법은 에러 교정 속도를 개선하여 외부 데이터 접속 시간에 있어서의 지연을 감소시킨다.

Description

메모리 디바이스를 위한 에러 교정 회로 및 방법{ERROR CORRECTION CIRCUIT AND METHOD FOR A MEMORY DEVICE}

가령 비휘발성 메모리 디바이스들과 같은 반도체 집적 회로 메모리 디바이스들에서는, 메모리 디바이스들에 데이터가 기록되고, 이로부터 데이터가 판독될 때 종종 에러들이 발생한다. 데이터 기억 기억 장치 내에서도 메모리 디바이스들의 물리적인 특성들로 인하여 종종 에러들이 발생한다. 예를 들어, 종래의 플래시 메모리 디바이스에서는, 결함들 또는 프로그램 장애를 제조함으로써 플래시 메모리 내에 저장된 데이터 내에서 에러들이 야기될 수도 있다. 전형적인 플래시 메모리 어레이 내에서, 프로그램 장애는 메모리 게이트들을 프로그램하는 동안 바람직하지 않은 필드 턴온에 의해 야기될 수도 있다. 인접하는 비트 라인들 상의 두 개의 메모리 게이트들 간의 선택 게이트 트랜지스터의 필드 산화막 아래 기판 영역 내에서의 필드 턴온은 논리 비트 "1"을 나타내는 프로그램-저지 상태인 것으로 가정되는 메모리 게이트들 중 하나가 논리 비트 "0"을 나타내는 프로그램 상태로 "턴온"되게 할 수도 있다. 종래의 비휘발성 메모리 디바이스에 저장된 데이터 내의 비트 에러들은 또한 다른 많은 요인들에 의해 야기될 수도 있다.

종래의 플래시 메모리 어레이로부터 판독되는 데이터의 수용가능한 신뢰성 레벨을 제공하기 위하여, 에러 교정 코드들이 메모리 기억 시스템들에 통합되어 메모리에 저장된 데이터 내의 비트 에러들을 교정하여 왔다. 가령 블록 코드들과 같은 종래의 에러 교정 코드들은 종래의 메모리 기억 시스템에서 데이터의 에러를 교정하는 데에 이용되어 왔다. 예를 들어, 당업자들에게 널리 공지된 종래의 블록 코드들의 부류 내에 포함되는 해밍 코드들이 종래의 메모리 기억 디바이스들 내의 데이터의 정확성을 유지하기 위해 단일-비트 에러 교정을 제공하는 데에 이용되었다.

플래시 메모리 어레이로부터 판독되는 데이터의 에러 체킹 및 교정은 데이터가 에러 교정 회로에 의해 메모리로부터 선판독되는 시간으로부터 에러 교정 회로가 교정된 데이터를 호스트 시스템에 의해 외부적으로 접속될수 있게 하는 시간까지 시간 지연을 야기시킨다. 시간 지연을 최소화하기 위하여, 에러 교정 회로는 메모리 디바이스로부터 판독된 데이터를 병렬 처리함으로써, 에러 어드레스들, 즉 에러 교정 블록 코드에 의해 발생된 신드롬을 계산하도록 실행되었다. 그러나, 병렬 처리 능력을 갖는 종래의 에러 교정 회로들은 하드웨어의 복잡성때문에 구현하는 데에 고비용이 든다. 에러 어드레스들의 계산시 데이터를 병렬 처리하게 되면 많은 수의 논리 게이트들을 필요로 한다. 예를 들어, 종래의 플래시 메모리 디바이스로부터 판독되는 매 1,000 비트들의 데이터에 대하여, 신드롬 계산시 지연을 최소화하기 위한 데이터의 병렬 처리에 약 5,000개의 XOR 게이트들을 필요로 한다.

어떠한 응용들은 데이터가 에러 교정 회로에 의해 메모리로부터 선판독되는시간으로부터 에러 교정 회로가 교정된 데이터를 외부적으로 접속될 수 있게 하는 시간까지의 시간 지연 보다 메모리 기억 시스템의 비용이 최소화될 것을 요구할 수도 있다. 하드웨어 비용을 최소화하기 위하여, 종래의 에러 교정 블록 코드를 기초로 에러 어드레스들을 발생시키기 위해 메모리 어레이 내에 저장된 데이터의 직렬 처리를 포함하는 종래의 에러 교정 회로들 및 방법들이 구현되어 왔다. 그러나, 종래의 직렬 처리는 데이터가 호스트 시스템에 의해 판독되기 전에 데이터 접속 시간에 있어서 수백 클록 주기의 지연을 필요로 할 수도 있다. 데이터의 직렬 처리에 의해 야기되는 긴 시간 지연은 어떠한 응용들에서는 수용되지 않을 수도 있다.

따라서, 에러 어드레스들을 발생시키기 위한 종래의 직렬 데이터 처리로부터 야기되는 상당히 긴 시간 지연들과 비교하여 데이터 접속 시간 지연을 줄이면서, 메모리 디바이스로부터 판독된 데이터의 종래의 병렬 처리에 관련된 하드웨어 비용과 비교하여 에러 어드레스들을 계산하는 데에 필요한 하드웨어 비용을 줄일 수 있는 에러 교정 회로 및 에러 교정 방법이 필요하게 되었다. 또한, 하드웨어 비용을 줄이면서 효과적으로 에러를 교정하기 위하여 메모리의 페이지 내에 데이터 워드들 및 에러 교정 바이트들을 할당하는 방법이 필요하게 되었다.

본 발명은 메모리 디바이스에서의 데이터의 에러 교정에 관한 것으로서, 특히 비휘발성 메모리를 위한 에러 교정 회로 및 방법에 관한 것이다.

도 1은 메모리 어레이 및 본 발명에 따른 방법이 적용될 수 있는 에러 교정 회로를 구비하는 예시적인 메모리 디바이스의 단순화된 블록도이다.

도 2는 본 발명에 따른 방법이 적용될 수 있는 예시적인 에러 교정 회로의 블록도이다.

도 3은 도 2의 에러 교정 회로 내의 다수의 XNOR 및 XOR 게이트들을 구비하는 데이터 엔코더의 논리 블록도이다.

도 4는 도 2의 에러 교정 회로 내의 바이트 어드레스 비교기의 일 실시예의 논리 회로도이다.

도 5는 도 2의 에러 교정 회로 내의 에러 교정 인에이블 버퍼와 함께 결합된 디코더의 일 실시예의 논리 회로도이다.

본 발명은 상기의 필요성들을 만족시킨다. 본 발명에 따르면, 메모리 디바이스를 위한 에러 교정 회로는 일반적으로:

(a) 데이터 워드 바이트 카운터와;

(b) 제 1, 2 선판독 데이터 바이트들을 각각 수신할 수 있는 제 1, 2 데이터엔코더들과;

(c) 상기 데이터 워드 바이트 카운더 및 상기 제 1, 2 데이터 엔코더들에 연결되며, 제 1, 2 다수의 신드롬 비트들을 포함하는 신드롬을 발생시킬 수 있는 신드롬 누산기와;

(d) 신드롬 발생기에 연결되며, 다수의 데이터 워드 바이트 어드레스 비트들을 발생시킬 수 있는 데이터 워드 바이트 어드레스 발생기와;

(e) 상기 신드롬 누산기와 데이터 워드 바이트 어드레스 발생기에 연결되며, 상기 데이터 워드 어드레스 비트들과 상기 제 1 다수의 신드롬 비트들과의 비교에 응답하여 에러 교정 인에이블 신호를 발생시킬 수 있는 비교기와;

(f) 상기 신드롬 누산기에 연결되며, 다수의 디코드된 데이터 입력 비트들을 발생시키기 위해 상기 제 2 다수의 신드롬 비트들을 디코딩 할 수 있는 디코더와; 그리고

(g) 상기 비교기 및 디코더에 연결되며, 상기 디코드된 데이터 입력 비트들 및 상기 에러 교정 인에이블 신호의 수신에 응답하여 다수의 교정 비트들을 발생시킬 수 있는 교정 인에이블 버퍼를 포함한다.

또한, 본 발명에 따르면, 메모리 디바이스 내의 에러 교정 방법은 일반적으로:

(a) 다수의 데이터 워드 비트 어드레스들에 의해 확인되는 다수의 바이트들을 포함하는 데이터 워드를 선판독하는 단계로서, 데이터 워드 내의 바이트들에 대한 다수의 바이트 서수들을 발생시키기 위해 데이터 워드의 바이트들을 카운트하는단계를 포함하는 단계와;

(b) 코드 워드를 발생시키기 위해 데이터 워드를 코딩하는 단계와;

(c) 코드 워드, 바이트 서수들 및 데이터 워드를 기초로, 바이트 에러 어드레스 및 비트 에러 어드레스를 포함하는 신드롬을 발생시키는 단계와;

(d) 데이터 워드 바이트가 상기 바이트 에러 어드레스와 매치하는 지를 결정하기 위하여 상기 바이트 에러 어드레스와 상기 데이터 워드 바이트를 비교하는 단계와;

(e) 데이터 워드 바이트가 상기 바이트 에러 어드레스와 매치하는 지를 결정하기 위하여 상기 바이트 에러 어드레스와 상기 데이터 워드 바이트를 비교하는 상기 단계에 의한 결정에 응답하여, 에러 교정 인에이블 신호를 발생시키는 단계와;

(f) 디코드된 비트 에러 어드레스를 발생시키기 위해 상기 비트 에러 어드레스를 디코드하는 단계와; 그리고

(g) 상기 에러 교정 인에이블 신호에 응답하여 상기 디코드된 비트 에러 어드레스를 기초로 에러 교정된 바이트를 발생시키는 단계를 포함한다.

또한, 본 발명에 따르면, 메모리 디바이스에서 에러 교정을 위해 메모리를 이중으로 이용하는 방법은 일반적으로:

(a) 메모리 페이지를 제 1 부분 및 제 2 부분으로 분할하는 단계와;

(b) 상기 메모리 페이지의 제 1 부분에 데이터를 할당하는 단계와; 그리고

(c) 상기 메모리 페이지의 제 2 부분에 다수의 에러 교정 바이트들을 할당하는 단계를 포함한다.

유익하게는, 본 발명에 따른 에러 교정 기술은 메모리 디바이스 내에서 에러를 교정하기 위한 종래의 직렬 처리 방법들과 비교하여 외부 데이터 접속 시간에 있어서의 지연을 감소시킬 수 있다. 종래의 에러 교정 회로에서의 직렬 데이터 처리로부터 비롯되는 데이터 접속 시간에 있어서의 수백 클록 주기들의 지연을 필요로 하는 대신에, 본 발명에 따른 에러 교정 방법은 각 메모리 페이지에 대한 외부 데이터 접속 시간에 있어서의 지연을 줄일 수 있다. 본 발명의 다른 장점은 종래에 에러 교정을 위한 직렬 데이터 처리에 필요했던 논리 게이트들의 수를 줄임으로써 메모리 하드웨어의 비용을 줄일 수 있다는 것이다. 따라서, 본 발명에 따른 에러 교정 방법은 종래의 병렬 처리에 대하여 필요했던 것 보다 하드웨어 구조를 더 단순하고 저비용이 들게 하면서, 종래의 직렬 처리 보다 더 효율적으로 데이터 에러들을 처리할 수 있다.

이제, 본 발명은 첨부 도면을 참조하여 설명되는 상세한 설명으로부터 좀 더 명확해질 것이다.

도 1은 본 발명에 따른 메모리 어레이(2) 및 에러 교정 회로(4)를 포함하는 메모리 디바이스의 단순화된 블록도이다. 메모리 디바이스는 또한 메모리 어레이(2) 및 에러 교정 회로(4)에 연결되는 입/출력 멀티플렉서 버퍼(6)를 포함한다. 또한, 입출력 멀티플렉서 버퍼(6)에 연결된 데이터 입력 버퍼(8) 및 데이터 출력 버퍼(10)는 메모리 어레이(2)로/로부터 기록 및 판독될 데이터를 입/출력 멀티플렉서 버퍼(6)를 통하여 전송한다. 데이터 입/출력 버퍼들(8, 10)은 데이터 버스(12)에 연결되며, 이 데이터 버스(12)는 판독 및 기록 연산들을 위해 메모리 어레이(2)와 외부 디바이스 또는 호스트 시스템을 인터페이스한다.

일 실시예에서, 본 발명에 따른 메모리 디바이스는 또한, 에러 교정 회로(4) 및 메모리 어레이(2)에 연결되어 판독 및 기록 연산들 동안 메모리 어레이(2)와 에러 교정 회로(4) 간에 데이터 바이트들을 전송하는 데이터 선판독 입/출력 버스(14)를 더 포함한다. 일 실시예에서, 입/출력 멀티플렉서 버퍼(6)는 에러 교정 회로(4)에 의해 메모리 어레이(2)로부터 선판독되는 데이터 워드 내의 에러를 검출할 때, 에러 교정 회로(4)로부터 수신된 교정 비트들을 반전시킬 수 있다.

도 2는 본 발명에 따른 에러 교정 회로(4)의 일 실시예의 블록도이다. 도 2의 블록도가 8-비트 에러 교정이 되는 실시예를 도시하기는 하였지만, 본 발명의 원리는 또한 16-비트 에러 교정에도 적용될 수 있다. 예를 들어, 도 2의 구조는 한번에 16 비트의 데이터의 에러 교정을 위해 복제될 수도 있다. 에러 교정 회로(4)는 데이터 워드 바이트 카운터(16), 제 1 데이터 엔코더(18), 제 2 데이터 엔코더(20), 신드롬 누산기(22), 데이터 워드 바이트 어드레스 발생기(24), 바이트 어드레스 비교기(26), 디코더(28), 및 에러 교정 인에이블 버퍼(30)를 포함한다. 제 1, 2 데이터 엔코더들(18 및 20)은 각각 PR1 및 PR0으로 표시되는 제 1, 2 선판독 메모리 데이터를 수신할 수 있다. 제 1, 2 데이터 엔코더들(18 및 20)은 BS1 및 BS0으로 각각 표시되는 제 1, 2 다수의 코드 비트들, 및 BP1 및 BP0으로 표시되는 신드롬 누산기 내에서의 칸버루션 연산을 위한 제 1, 2 패리티 비트들을 발생시킨다.

일 실시예에서, 제 1, 2 데이터 엔코더들(18 및 20)은 제 1, 2 블록 엔코더들을 각각 포함하는데, 이들은 종래의 블록 코드를 이용하여 제 1, 2 선판독 메모리 데이터 바이트들을 엔코드한다. 다른 실시예에서, 엔코드들(18 및 20) 내에서 선판독 메모리 데이터 바이트들을 엔코드하는 데에 이용되는 블록 코드는 당업자들에게 널리 공지된 종래의 해밍 코드이다. 도 3은 8비트 바이트를 세 개의 코드 비트들로 코딩하기 위한 비트 어드레스 해밍 엔코더 및 관련된 패리티 비트의 예를 도시하며, 이에 대해서는 하기에서 좀 더 상세히 설명한다.

도 2를 참조하면, 신드롬 누산기(22)에 연결된 데이터 워드 바이트 카운터(16)는 바이트 카운트의 다수의 홀수 바이트 서수들 및 다수의 짝수 바이트서수들을 발생시킬 수 있다. 일 실시예에서, 바이트 카운트의 홀수 및 짝수 바이트들은 메모리 어레이로부터 선판독되는 주어진 데이터 워드 내의 개별적인 바이트들의 바이트 서수들의 번호를 다시매기고 재정렬함으로써 발생된다. 다른 실시예에서, 번호가 다시 매겨지고 재정렬된 바이트 카운트는 다수의 카운터 비트들, 예를 들어 다섯 개의 카운터 비트들을 포함하는데, 이는 이진 포맷 내의 번호가 다시 매겨지고 재정렬된 바이트 서수들을 나타낸다. 또 다른 실시예에서, 바이트 서수들의 5-비트 이진 표현은 카운터 비트들 중 적어도 두 개가 이진 번호 "1"을 갖도록 코드된다. 24-바이트 데이터의 번호가 다시 매겨지고 재정렬된 바이트 서수들의 5-비트 이진 표현을 갖는 카운터 비트들의 리스팅 예를 하기의 표 A에 나타내었다:

이 리스트가, 십진 바이트 서수들이 이진 포맷으로 변환될 때 각각 이진 수 "1"을 갖는 2개 이하의 카운터 비트들을 갖는 십진 바이트 서수들 0, 1, 2, 4, 8 및 16을 생략했다는 것은 명백하다. 따라서, 이진 "1"을 갖는 카운터 비트들 중 적어도 두 개를 가지며, 5개의 카운터 비트들의 포맷으로 바이트 서수들에 의해 표현될 수 있는 데이터 워드 내의 데이터 바이트들의 최대수는 26 바이트이다. 또한,십진 바이트 서수들 9 및 17은 단지 최대 24 바이트들 만이 상기 설명된 실시예에서의 데이터 워드 내에 포함되기 때문에 생략한 것이다. 바이트 서수들 0, 1, 2, 4, 8 및 16은 생략되며, 표 A에 리스트된 십진 바이트 서수들은 데이터 워드 내의 26 바이트의 데이터에 할당된다. 바이트 1은 첫 번째 바이트가 되고, 바이트 24는 데이터 워드 내의 마지막 바이트가 되는, 24 바이트의 데이터 워드의 바이트들 1 내지 24에 할당된 십진 바이트 서수들의 리스팅을 하기의 표 B에 나타내었다:

데이터 워드 내의 바이트들에 대한 바이트 서수들의 재번호매김은 판독 및 기록 연산들에서의 에러 교정에 적용될 수 있다. 선판독 연산시, 데이터 워드 바이트 카운터(16)는 하기의 표 C에 리스트한 바와 같이, 상기의 표 B에서 리스트된 번호가 다시 매겨진 십진 바이트 서수들을 짝수 바이트들이 그룹과 홀수 바이트들의 그룹으로 구성된 두 개의 그룹으로 할당한다.

또 다른 실시예에서, 데이터 워드 바이트 카운터(16)는 데이터 워드 바이트 카운터(16)로부터 신드롬 누산기(22)로, 도 2에서 EB로 표시된 다섯 개의 짝수 비트들을 전송할 수 있는 제 1 채널(32)을 통하여 신드롬 누산기(22)에 연결된다. 또한, 데이터 워드 바이트 카운터(16)와 신드롬 누산기(22) 사이에 연결된 제 2 채널(34)은 데이터 워드 바이트 카운터(16)로부터 신드롬 누산기(22)로, 도 2에서 OB로 표시된 홀수 바이트들을 전송한다. 번호가 다시 매겨진 바이트 서수들의 짝수 및 홀수 바이트들이 상기 표 A에 도시된 바와 같이 5-비트 이진 포맷으로 제시되기는 하였지만, 홀수 바이트들을 전송하는 제 2 채널(34)은 단지 4 비트 만을 갖는 반면, 짝수 비트들을 전송하는 제 1 채널(32)은 5 비트를 필요로 한다. 상기 표 C를 참조하면, 홀수 바이트들에 대한 모든 바이트 서수들은 이진 포맷으로 표현될 때 최하위 비트 "1"을 갖는다. 따라서, 제 2 채널(34)은 데이터 워드 바이트 카운터(16)로부터 신드롬 누산기(22)로 홀수 바이트들의 바이트 서수들을 전송하는 데에 단지 4 비트만을 필요로 한다.

또한, 본 발명에 따른 에러 교정 회로에 의해 더 효율적인 선판독 연산을 수행하기 위하여, 두 개의 데이터 워드들이 데이터 엔코더들(18 및 20)에 의해 동시에 코드화될 수도 있으며, 그리고 두 개의 데이터 워드들의 바이트들은 데이터 워드 바이트 카운터(16)에 의해 카운트될 수도 있다. 도 1에 도시된 메모리 어레이(2) 내에 저장된 각 데이터 페이지는 세 개의 그룹들 내에 배열된 24개의 데이터 워드들을 비교할 수 있도록 배열될 수도 있다. 제 1 그룹은 각각 20개의 데이터 바이트들을 갖는 10개의 데이터 워드들을 포함하며, 제 2 그룹은 각각 24개의 데이터 바이트들을 갖는 13개의 데이터 워드들을 포함한다. 마지막 그룹은 16개의 바이트들을 갖는 단일 워드를 포함한다.

도 2에 도시된 실시예에서, 본 발명에 따른 에러 교정 회로는 또한 데이터 워드 바이트 카운터(16)와 신드롬 누산기(22) 사이에 연결된 제 3 채널(36)을 포함한다. 제 3 채널(36)은 데이터 판독 모드에서 데이터 워드 바이트 카운터(16)로 하여금 신드롬 누산기(22)에 의한 신드롬 누산을 개시할 수 있게 하는 1비트의 데이터 라인이다.

본 발명에 따른 에러 교정 회로는 상기 설명된 데이터 워드 포맷을 갖는 메모리 페이지들 상에서 선판독 연산들을 수행하는 것에 한정되지 않으며; 데이터 페이지 내의 데이터 워드들의 다른 배열들이 또한 이용될 수도 있다. 다른 실시예에서, 본 발명에 따른 에러 교정 회로는 또한 페이지 기록 연산 동안 메모리 어레이로 데이터를 전송할 수 있다. 본 실시예에서, 데이터 워드 바이트 어드레스 발생기(24)는 신드롬 누산기(22)에 대해 상기 표 B에 리스트된 데이터 워드 내의 각 바이트들에 대하여 번호가 다시 매겨지고 재배열된 바이트 서수들을 발생시킬 수 있다. 메모리 어레이에 기록될 데이터 워드에 대한 바이트 서수들은 5-비트 이진 포맷으로 표현되며, 데이터 워드 바이트 어드레스 발생기(24)로부터 5-비트 채널(38)을 통하여 신드롬 누산기(22)로 전송된다. 데이터 워드 어드레스 발생기(24)는 또한 데이터 기록 모드에서 신드롬 누산기에 의한 신드롬 누산을 개시하기 위하여 1비트의 채널을 통하여 신드롬 누산기(22)에 연결된다.

다른 실시예에서, 본 발명에 따른 에러 교정 회로는 또한 제 2 데이터 엔코더(20)에 대한 다수의 입력 비트들을 발생시키기 위하여 제 2 데이터 엔코더(20)와 데이터 버스 사이에 연결된 멀티플렉서(42)를 포함한다. 메모리 어레이가 판독 모드 또는 기록 모드에 있는 지에 따라서, 멀티플렉서(42)는 코드화된 데이터 비트들(BS0) 및 관련된 패리티 비트(BP0)를 발생시키기 위하여 데이터 엔코더(20)에 대한 판독 또는 기록 데이터 바이트들을 발생시킨다. 또한, 본 발명에 따른 에러 교정 회로는 신드롬 래치(44)를 포함하는데, 이 신드롬 래치(44)는 신드롬 누산기(22)와 비교기(26)의 사이에 연결되어 신드롬 누산기(22)에 의해 발생된 제 1, 2 다수의 신드롬 비트들을 일시적으로 저장한다.

신드롬 누산기(22)로부터의 신드롬 출력이 9-비트 바이트인 일 실시예에서, 신드롬 래치(44)는 비교기(26)로 신드롬 바이트중 다섯 개의 상위급 비트들을 전송하고, 디코더(28)로 신드롬 바이트중 세 개의 하위 비트들을 전송한다. 또한, 신드롬 래치(44)와 멀티플렉서(42)의 판독 입력(48) 사이에 연결된 버퍼(46)는 여덟 개의 신드롬 비트들을 신드롬 래치(44)로부터 멀티플렉서(42)의 판독 입력(R)으로 전송한다. 버퍼(46)는 데이터 판독 모드에서 비트들을 신드롬 래치(44)로부터 PR0 라인으로 전송한다.

데이터 워드 바이트 발생기(24)는 판독 및 기록 연산들에 대하여 각 데이터 워드 내의 각 바이트들에 대한 데이터 워드 바이트 어드레스를 발생시킨다. 기록 연산 동안, 데이터 워드 바이트 어드레스 발생기(24)는 신드롬 누산기(22)에 기록 연산을 개시할 것을 알리며, 번호가 다시 매겨진 바이트 서수들을 5-비트 포맷의 데이터 워드 바이트 어드레스들로서 상기 설명된 신드롬 누산기(22)로 전송한다. 메모리 어레이로부터 데이터가 판독되는 데이터 판독 모드에서, 데이터 워드 바이트 어드레스 발생기(24)는 바이트 에러 바이트들, 즉 신드롬 래치(44)로부터의 신드롬 바이트중 상위 다섯 개의 비트들을 수신하도록 연결된 비교기(26)에 데이터 워드 바이트 어드레스 비들을 전송한다. 비교기(26)는 데이터 워드 바이트 어드레스 발생기(24)로부터의 데이터 워드 바이트 어드레스와 신드롬 래치(44)로부터의 바이트 에러 어드레스를 비교하여, 데이터 워드 바이트 어드레스가 바이트 에러 어드레스와 일치하는 지를 결정한다. 만일 데이터 워드 바이트 어드레스가 바이트 에러 어드레스와 일치한다면, 비교기(26)는 1 비트 신호인 에러 교정 인에이블 신호를 발생시킨 다음, 이를 교정 인에이블 버퍼(30)로 전송하여 판독 데이터 내의 에러를 검출한다.

신드롬 바이트의 세 개의 하위 비트들을 포함하는 비트 에러 어드레스는 비트 에러 어드레스를 8-비트 포맷으로 디코드하는 디코더(28)로 전송된다. 디코드된 비트 에러 어드레스는 디코더(28)로부터 교정 인에이블 버퍼(30)의 데이터 입력(DIN)으로 전송된다. 만일 비교기(26)의 출력이 입력 데이터 내에 어떠한 에러도 없음을 나타내는 "1"이라면, 교정 인에이블 버퍼(30)는 모두 "0"인 다수의 교정 인에이블 비트들을 출력한다. 반면에, 비교기(26)의 출력이 입력 데이터 비트들 내에 에러가 존재함을 나타내는 "0"이라면, 교정 인에이블 버퍼(30)는 디코더(28)로부터의 디코드된 비트들과 동일한 교정 인에이블 비트들을 발생시킨다.

도 3은 도 2에 도시된 제 1 엔코더(18) 또는 제 2 엔코더(20)로서 이용될 수 있는 해밍 코드 발생기의 논리 회로도를 도시한다. 도 3에 도시된 해밍 코드 발생기는 8-비트 바이트 입력 IN(7:0)을 수신할 수 있으며, 이에 응답하여 코드화된 3-비트의 출력 BS(2:0) 및 코드화된 출력 비트들 BS(2:0)와 관련된 패리티 비트 BP를 발생시킨다. 도 3에 도시된 실시예에서, 다수의 XNOR 게이트들(52, 54, 56, 58, 60 및 62) 및 XOR 게이트(64)는 논리 게이트들의 제 1 단에서 입력 비트들 IN(7:0)에 연결된다. XNOR 게이트(52)는 입력 비트들 IN(7:0)의 비트들(4 및 5)에 연결된 입력들을 가지며, XNOR 게이트(54)는 입력 비트들 IN(7:0)의 비트들(6 및 7)에 연결된 입력들을 갖는다. XNOR 게이트(56)의 입력들은 비트들(2 및 6)에 연결되며, XNOR 게이트(52)의 입력들은 입력 비트들 IN(7:0)의 비트들(3 및 7)에 연결된다. XNOR 게이트(60)의 입력들은 비트들(1 및 3)에 연결되며, XNOR 게이트(62)의 입력들은 입력 비트들 IN(7:0)의 비트들(5 및 7)에 연결된다. XOR 게이트(64)는 입력비트들 IN(7:0)의 비트들(0 및 4)에 연결된 입력들을 갖는다.

도 3에 도시된 해밍 코드 발생기는 다수의 NXOR 게이트들(66, 68, 70 및 72) 및 XOR 게이트(74)를 포함하는 다수의 제 2 단의 논리 게이트들을 포함한다. XNOR 게이트(66)는 XNOR 게이트들(52 및 54)의 출력들에 연결된 입력들을 가지며, XNOR 게이트(68)는 XNOR 게이트들(56 및 58)의 출력들에 연결된 입력들을 갖는다. XNOR 게이트(70)의 입력들은 XNOR 게이트들(60 및 62)의 출력들에 연결되며, XNOR 게이트(72)의 입력들은 XNOR 게이트(56) 및 XOR 게이트(54)의 출력들에 연결된다. 제 2단의 XOR 게이트(74)는 XNOR 게이트들(60 및 62)의 출력들에 연결된 입력들을 갖는다.

XNOR 게이트들(66, 68 및 70)의 출력들은 인버터들(76, 78 및 70)에 각각 연결되며, 이 인버터들(76, 78 및 70)은 코드화된 출력 비트들 BS(2:0)를 발생시킨다. XNOR 게이트(72) 및 XOR 게이트(74)의 출력들은 제 3 단의 XNOR 게이트(82)에 연결되어 반전된 다음, 인버터(84)에 의해 다시 반전되어 패리티 비트(BP)를 발생시킨다. 패리티 비트(BP) 및 코드화된 출력 비트들 BS(2:0)는 신드롬을 발생시키는 칸버루션 연산을 위하여 신드롬 누산기로 전송된다.

도 3에 도시되어 상기 설명된, 8-비트 입력 바이트를 코드화된 3-비트 출력으로 엔코딩하고 관련된 패리티 비트를 발생시키는 해밍 코드 발생기는 도 2에 도시된 본 발명에 따른 에러 교정 회로 내의 데이터 엔코더들(18 및 20)에 대한 많은 가능한 실시예들 중의 하나일 뿐 이다. 다른 에러 교정 코딩 기술들이 또한 본 발명의 범위 내에서 이용될 수 있다. 또한, 도 2에 도시된 데이터 엔코더들(18 및20)에 대한 입력들은 8-비트 바이트 입력들로 한정되지 않는다. 데이터 엔코더들(18 및 20)은 8 비트가 아닌 선판독 입력 비트들을 누산하도록 설계될 수 있다.

도 4는 본 발명에 따른 에러 교정 회로 내의 바이트 어드레스 비교기(26)의 일 실시예의 논리 회로도이다. 바이트 어드레스 비교기(26)는 두 개의 5-비트 입력들 IN1(7:3) 및 IN2(7:3)를 구비하며, 제 1 입력 IN1(7:3)이 제 2 입력 IN2(7:3)와 정확히 일치하는 지에 따라 출력 비트 MATCHB를 출력한다. 도 4에 도시된 바이트 어드레스 비교기는 입력 IN1(7:3) 내의 비트들이 입력 IN2(7:3) 내의 해당하는 비트와 일치하는 경우에는 비트 "0"을 출력하거나, 또는 두 개의 입력들 내의 모든 해당하는 비트들 간에 매치가 이루어지지 않는 경우에는 비트 "1"을 출력한다. 5-비트 입력들 중 하나, 가령 IN1(7:3)은 데이터 워드 바이트어드레스 발생기(24)로부터 데이터 워드 바이트 어드레스를 수신하도록 연결될 수도 있으며, 나머지 입력, 가령 IN2(7:3)는 신드롬 비트들중 다섯 개의 상위 비트들을 수신하도록 도 2의 신드롬 래치(44)에 연결될 수도 있다.

도 4를 다시 참조하면, 바이트 어드레스 비교기(26)는 다수의 XNOR 게이트들(110, 112, 114, 116 및 118), NAND 게이트들(120 및 122), NOR 게이트(125) 및 인버터(126)를 포함한다. XNOR 게이트들(110, 112, 114, 116 및 118)은 각각 제 1, 2 입력들 IN1(7:3) 및 IN2(7:3)로부터 입력 비트들의 각각의 쌍을 수신하도록 연결된 두 개의 입력들을 갖는다. NAND 게이트(120)는 XNOR 게이트들(110, 112 및 114)의 출력들에 연결된 세 개의 입력들을 갖고, NAND 게이트(122)는 XNOR 게이트들(116 및 118)의 출력들에 연결된 두 개의 입력들을 갖는다. NAND 게이트들(120 및 122)의 출력들은 NOR 게이트(124)의 입력들에 연결되며, NOR 게이트(124)의 출력은 인버터(126)에 연결된다. 인버터(126)의 출력은 출력 에러 신호(MATCHB)를 발생시키는데, 이는 두 개의 입력들 IN1(7:3) 및 IN2(7:3)가 서로 정확히 일치하는 경우에는 비트 "0", 또는 입력들 IN1(7:3) 및 IN2(7:3) 내의 해당하는 비트들 간에 어떠한 일치도 없는 경우에는 비트 "1"이다. 도 2에 도시된 본 발명에 따른 에러 교정 회로 내의 바이트 어드레스 비교기(26)는 도 4에 도시된 논리 회로에 한정되지 않으며; 데이터 워드 바이트 어드레스와 바이트 에러 어드레스를 비교하기 위한 다른 논리 회로들이 또한 구현될 수 있다.

도 5는 도 2의 블록도에 도시된 디코더(28)의 기능과 에러 교정 인에이블 버퍼(30)의 기능을 결합한 실시예의 논리 회로도이다. 디코더(28)는 3-비트 입력 BIT(2:0), 및 이 3-비트 입력 BIT(2:0)으로부터 디코드된 여덟개의 비트들을 출력하기 위한 여덟 개의 병렬 출력들(NXB0, NXB1, NXB2,...NXB7)을 구비한다. 디코더(28)는 입력 BIT(2:0)의 비트들(2, 1 및 0)에 각각 연결된 세 개이 인버터들(128, 130 및 132)을 포함한다. 디코더(28)는 또한 여덟 개의 NAND 게이트들(134, 136, 138, 140, 142, 144, 146 및 148)을 포함하는데, 이들 각각은 입력 비트들 BIT(2:0)의 비반전된 비트들 및 반전된 비트들의 다른 결합을 수신하도록 연결된 세 개의 입력들을 갖는다. 각 NAND 게이트들(134, 136, 138,...148)의 출력들(NXB0, NXB1, NXB2,...NXB7)은 코드화된 입력 비트들 BIT(2:0)의 수신에 응답하여 디코드된 8-비트 출력을 발생시킨다.

에러 교정 인에이블 버퍼(30)는 디코더(28)로부터 디코드된 비트들을 수신하고 바이트 어드레스 비교기로부터의 1-비트 출력인 에러 교정 인에이블 신호(ENB)를 수신하도록 연결된다. 에러 교정 인에이블 버퍼(30)는 다수의 NOR 게이트들(150, 152, 154, 156, 158, 160, 162 및 164)을 포함하며, 이들 각각은 두 개의 입력들을 갖는데, 이 두 개의 입력들 중 제 1 입력들은 에러 교정 인에이블 신호(ENB)를 수신하도록 연결되고 제 2 입력들은 디코더(28) 내의 각각의 NAND 게이트들(134, 136, 138, 140, 142, 144, 146 및 148)의 출력들에 연결된다. 각각의 NOR 게이트들(150, 152, 154,...164)은 두 개의 직렬 인버터들에 연결되며, 이 인버터들은 각 NOR 게이트의 출력에 대한 시간 지연을 제공한다. 8-비트 출력 교정 바이트 CORRECT(7:0)는 각각의 NOR 게이트들(150, 152, 154,...164)의 출력들에 의해 발생된 비트들과 동일한 비트들(0, 1, 2,...7)을 포함한다. 도 1에 도시한 에러 교정 회로의 출력(COR.ENB)은 에러 교정 회로(4)로부터 에러 교정 바이트 CORRECT(7:0)를 입/출력 멀티플렉서 버퍼(6)로 전송한다.

도 1 내지 5의 회로들을 이용하는 에러 교정 방법은 메모리 디바이스에 하드웨어의 비용 및 복잡성을 줄이면서 비교적 짧은 외부 데이터 접속 시간 지연을 제공한다. 상기 방법은 이것이 어떤 특정한 하드웨어 구성에 한정되는 것은 아니지만, 도 1 및 2에 도시된 메모리 디바이스 및 에러 교정 회로의 작동에 적용할 수 있다. 에러 교정 방법은 일반적으로:

(a) 다수의 데이터 워드 비트 어드레스들에 의해 확인되는 다수의 바이트들을 포함하는 데이터 워드를 선판독하는 단계로서, 데이터 워드 내의 바이트들에 대한 다수의 바이트 서수들을 발생시키기 위해 데이터 워드의 바이트들을 카운트하는 단계를 포함하는 단계와;

(b) 코드 워드를 발생시키기 위해 데이터 워드를 코딩하는 단계와;

(c) 코드 워드, 바이트 서수들 및 데이터 워드를 기초로, 바이트 에러 어드레스 및 비트 에러 어드레스를 포함하는 신드롬을 발생시키는 단계와;

(d) 데이터 워드 바이트가 상기 바이트 에러 어드레스와 매치하는 지를 결정하기 위하여 상기 바이트 에러 어드레스와 상기 데이터 워드 바이트를 비교하는 단계와;

(e) 데이터 워드 바이트가 상기 바이트 에러 어드레스와 매치하는 지를 결정하기 위하여 상기 바이트 에러 어드레스와 상기 데이터 워드 바이트를 비교하는 상기 단계에 의한 결정에 응답하여, 에러 교정 인에이블 신호를 발생시키는 단계와;

(f) 디코드된 비트 에러 어드레스를 발생시키기 위해 상기 비트 에러 어드레스를 디코드하는 단계와; 그리고

(g) 상기 에러 교정 인에이블 신호에 응답하여 상기 디코드된 비트 에러 어드레스를 기초로 에러 교정된 바이트를 발생시키는 단계를 포함한다.

다른 실시예에서, 본 발명에 따른 방법은 메모리 어레이로부터 선판독되는 메모리 페이지 내의 다수의 데이터 워드들의 에러 교정에 적용할 수 있다. 본 실시예에서, 제 2 데이터 워드는 에러 교정 회로에 의해 선판독될 수도 있고, 동일한 메모리 페이지 내의 제 1 데이터 워드는 메모리에 의해 판독되며, 그리고 제 2 데이터 워드는 제 2 코드를 발생시키기 위해 코드화될 수도 있고, 제 1 데이터 워드는 교정되고 판독된다.

일 실시예에서, 각 메모리 페이지는 세 개의 데이터 그룹들 및 다른 길이를 갖는 에러 교정 워드들로 분할된다. 제 1 그룹은 각각 20개의 바이트들로 구성된 10개의 데이터 워드들을 포함한다. 순서적으로 제 1 그룹의 데이터 워드들 이후에 있는 제 2 그룹은 각각 24개의 바이트들로 구성된 13개의 데이터 워드들을 포함한다. 순서적으로 제 2 그룹의 데이터 워드들의 이후에 있는 마지막 그룹은 에러 교정을 위한 16 바이트 길이를 갖는 단일 워드를 포함한다. 데이터 및 에러 교정 워드들의 다른 배열들이 또한 본 발명의 범위 내에서 데이터 바이트들의 에러 교정에 이용될 수 있다.

데이터 워드들 내에 에러가 있는 경우 이 에러를 교정하기 위하여 다수의 데이터 워드들이 메모리 어레이로부터 에러 교정 회로로 선판독되는 일 실시예에서, 상기 설명된 방법의 단계들은 각 메모리 페이지 내의 각 데이터 워드들에 대하여 반복될 수도 있다. 메모리 페이지 내의 제 2 데이터 워드 및 모든 부가적인 데이터 워드들의 데이터 바이트들은 카운트되고, 번호가 다시 매겨지며 다수의 짝수 및 홀수 바이트들로 재정렬되며, 이의 카운터 비트들은 각각 5-비트 및 4-비트 채널들(32 및 34)을 통하여 신드롬 누산기(22)로 전송된다. 번호가 다시 매겨지고 재정렬된 바이트 서수들은 다수의 카운터 비트들, 예를 들어 상기 표 A에 리스트된 다섯 개의 카운터 비트들을 포함하는 이진 포맷으로 표현되며, 상기 카운터 비트들 중 적어도 두 개는 이진 1이다. 번호가 다시 매겨진 바이트 서수들은 상기 표 B 및 C에 따라 홀수 및 짝수 바이트들로 재정렬될 수도 있다.

각각의 데이터 워드들을 코딩하는 단계는 해밍 코드와 같은 종래의 에러 교정 블록 코드를 이용함으로써 이루어질 수도 있다. 해밍 코드를 이용한 블록 엔코딩은 당업자들에게 널리 공지되어 있다. 해밍 코드 발생기의 예가 도 3에 도시되기는 하지만, 본 발명에 따른 에러 교정 기술은 해밍 코드에 한정되지 않는다. 또한,상기 설명된 신드롬 누산기(22)의 출력은 5-비트 바이트 에러 어드레스 및 3-비트 비트 에러 어드레스로 구성되며, 상기 바이트 에러 어드레스 비트들은 상위 비트들이고 비트 에러 어드레스 비트들은 하위 비트들이다. 데이터 엔코더들(18 및 20)에 의해 이용되는 해밍 코드와 같은 에러 교정 블록 코드를 기초로 신드롬 계산을 수행하는 신드롬 누산기(22)는 각 데이터 바이트에 대한 신드롬 벡터를 발생시킨 다음 이 신드롬 벡터들을 누산한다. 신드롬 누산기는 칸벌루션 연산들을 수행하여 해밍 엔코더들(18 및 20) 및 데이터 워드 바이트 어드레스 발생기(24)로부터의 입력들을 갖는 데이터 바이트들에 대한 신드롬들을 누산한다.

에러 교정 과정을 용이하게 하는 플래시 메모리의 이중 이용 방법이 제공된다. 이중 이용 방법은 개략적으로:

(a) 메모리 페이지를 제 1 부분 및 제 2 부분으로 분할하는 단계와;

(b) 상기 메모리 페이지의 제 1 부분에 데이터를 할당하는 단계와; 그리고

(c) 상기 메모리 페이지의 제 2 부분에 다수의 에러 교정 바이트들을 할당하는 단계를 포함한다.

일 실시예에서, 메모리 페이지의 제 1 부분에 데이터를 할당하는 단계는 메모리 페이지의 제 1 부분에 제 1 데이터 워드 및 적어도 하나의 부가적인 데이터워드를 할당하는 단계를 포함한다. 선판독 동작에서, 부가적인 데이터 워드들은 순서적으로 동일한 메모리 페이지 내의 제 1 데이터 워드 이후에 메모리 어레이로부터 에러 교정 회로로 전송된다. 메모리 페이지가 512 데이터 바이트들을 포함하는 일 실시예에서, 제 1 부분, 즉 메모리 페이지의 데이터 부분은 20개의 데이터 워드들로 분할될 수 있으며, 상기 20개의 데이터 워드들 중에서 첫 번째 제 1 데이터 워드는 18 바이트의 데이터를 포함하며 19개의 부가적인 데이터는 각각 26 바이트의 데이터를 포함한다. 이에 따라, 각 메모리 페이지의 데이터 부분 내의 총 메모리 기억장치의 양은 512 바이트가 된다.

또한, 데이터 페이지는 에러 교정 바이트들의 기억장치로 할당된 제 2 부분을 포함한다. 데이터 페이지의 제 1 부분이 20개의 데이터 워드들을 포함하는 실시예에서, 데이터 페이지의 제 2 부분은 20개의 에러 교정 바이트들을 포함할 수도 있으며, 상기 각각의 에러 교정 바이트들은 20개의 데이터 워드들 각각에 대한 에러 교정을 제공할 수 있다. 전형적인 메모리 어레이는 각 페이지를 본 발명에 따라 데이터 바이트들 및 에러 교정 바이트들로서 이중 사용하기 위한 할당을 갖는 다수의 메모리 페이지들을 저장할 수 있다.

본 발명에 따른 플래시 메모리 내에서의 에러 교정을 위한 이중 사용 방법은 데이터 바이트들 및 에러 교정 바이트들이 메모리 어레이 내의 각 메모리 페이지 내에 저장될 수 있게 한다. 이 방법은 상기 설명된 에러 교정 회로에 의해 메모리 페이지 내의 데이터 워드들 상에서 판독 및 기록 연산 동안 에러 교정을 가능하게 한다. 도 2에 도시된 에러 교정 회로(4) 내의 에러 교정 인에이블 버퍼(30)로부터의 8-비트 출력인 에러 교정 바이트는 에러 교정 바이트들의 저장을 위해 지정된 메모리 페이지의 제 2 부분에 할당될 수 있다. 에러 교정 회로가 상기 설명된 실시예들에서 각 데이터 워드들에 대하여 하나의 에러 교정 바이트를 발생시키기 때문에, 20개의 데이터 워드들을 포함하는 메모리 페이지는 상기 설명된 실시예들에서 메모리 페이지에 할당될 20개의 에러 교정 바이트들을 필요로 한다.

다른 실시예에서, 메모리 페이지 내의 제 1 데이터 워드는 상기 설명된 에러 교정 회로 내에서의 에러 교정의 효율을 더 높이기 위하여 각각의 부가적인 데이터 워드들 보다 적은 수의 바이트들을 가질 수도 있다. 예를 들어, 도 2에 도시된 데이터 워드 바이트 카운터(16)는 제 1 데이터 워드에 대한 카운터 비트들을 신드롬 누산기(22)로 전송하기 위한 개별적인 채널(36)을 구비할 수도 있는 반면, 각각의 부가적인 데이터 워드들의 번호가 다시 매겨지고 재정렬된 바이트 서수들의 짝수 및 홀수 바이트들은 데이터 워드 바이트 카운터(16)로부터 각각 라인들(32 및 34)을 통하여 신드롬 누산기(22)로 전송된다. 또한, 제 1 데이터 워드는 18 바이트의데이터를 포함할 수도 있고 각각의 19개의 부가적인 데이터 워드들은 26 바이트의 데이터를 포함할 수도 있으며, 이에 따라 메모리 페이지의 데이터 부분 내의 총 데이터 저장량은 512 데이터 바이트를 포함한다. 다른 실시예에서, 메모리 페이지의 데이터 부분 내의 각각의 부가적인 데이터 워드들의 길이는 제 1 데이터 워드의 길이보다는 크지만, 제 1 데이터 워드 길이의 두 배보다는 작다.

메모리 페이지가 데이터 저장을 위한 제 1 부분과 에러 교정 바이트들의 저장을 위한 제 2 부분으로 분리된 후, 에러 교정 회로는 메모리 어레이로부터 판독된 메모리 페이지의 데이터 부분 내에 에러들이 있는 경우 이 에러들을 검출하고 교정하기 위하여, 제 1 데이터 워드 및 부가적인 데이터 워드들에 대하여 선판독 연산들을 수행한다. 메모리 어레이에 기록될 메모리 페이지는 또한 데이터 저장을 위한 제 1 부분 및 에러 교정 바이트들의 저장을 위한 제 2 부분으로 할당될 수 있다. 도 2에 도시되어 상기 설명된 에러 교정 회로는 멀티플렉서(42)를 통하여 데이터 저장을 위하여 메모리 페이지의 제 1 부분을 판독하고, 도 1에 도시된 메모리 어레이(2)에 기록될 각 데이터 워드들에 대하여 데이터 워드 바이트 어드레스 발생기(24)에 의해 데이터 워드 바이트 어드레스를 발생시킬 수 있다. 이에 따라, 본 발명에 따른 플래시 메모리 내에서 메모리 페이지를 이중 사용하는 방법은 상기 설명된 판독 및 기록 연산들에 모두 적용할 수 있다.

또한, 본 발명에 따른 플래시 메모리 내에서 메모리 페이지들을 이중 사용하는 방법은 상기 설명된 에러 교정 기술들의 실시예들에 한정되지 않는다. 예를 들어, 비-에러 교정 모드에서, 메모리 페이지의 제 1, 2 부분들이 데이터 바이트들의 저장에 이용될 수도 있다. 메모리 페이지의 제 1 부분이 512 바이트들을 포함하고 메모리 페이지의 제 2 부분이 20 바이트들을 포함하는 상기 설명된 실시예에서는, 총 532 바이트들이 비-에러 교정 모드에서 데이터 저장에 이용될 수도 있다.

반면에, 메모리 페이지 내의 데이터 바이트들에 대하여 에러 교정이 필요한 경우, 본 실시예에는 20 바이트들을 포함하는 메모리 페이지의 제 2 부분이 에러 교정 바이트들의 저장을 위해 지정될 수도 있으며, 512 바이트들을 포함하는 제 1 부분은 데이터 저장을 위해 지정될 수도 있다. 에러 교정 모드에서, 가령 마이크로프로세서와 같은 호스트 프로세서에 의해 액세스되는 각 메모리 페이지 내의 데이터의 크기는 512 바이트인 반면, 메모리 페이지의 제 2 부분 내의 20 바이트의 메모리는 동일한 메모리 페이지 내의 512 데이터 바이트들 내에 에러들이 있는 경우 이 에러들을 검출하고 교정하기 위한 에러 교정 회로에 의해 이용된다. 본 발명에 따른 메모리 페이지의 이중 사용 방법은 단일 메모리 상의 메모리 어레이와 통합되는 내부 에러 교정 회로와 함께 이용되거나, 또는 메모리 칩으로부터 분리된 외부 에러 교정 회로를 지원하여 이용될 수 있다.

유익하게는, 본 발명에 따른 에러 교정 기술은 에러 교정을 위한 종래의 직렬 처리 방법들과 비교하여 외부 데이터 접속 시간에 있어서의 지연을 감소시키면서, 메모리 어레이 상에서 수행될 수 있다. 에러 교정을 위한 종래의 직렬 처리로부터 비롯되는 외부 데이터 접속 시간에 있어서의 수백 주기의 지연을 필요로 하는 대신에, 본 발명에 따른 방법은 외부 데이터 접속 시간에 있어서의 지연 주기들의 수를 줄일 수 있다. 많은 수의 논리 게이트들을 필요로 하는 에러 교정을 위한 종래의 병렬 데이터 처리와 비교하여, 본 발명에 따른 방법은 상당히 적은 수의 논리 게이트들을 갖는 에러 교정 회로에 의해 수행될 수 있다. 따라서, 본 발명에 따른 에러 교정 방법은 종래의 직렬 처리에 의해 야기되는 외부 데이터 접속 시간 지연을 줄이면서, 종래의 병렬 처리에 필요했던 것 보다 더 단순하고 저비용의 하드웨어에 의해 수행될 수 있다.

본 발명은 메모리 디바이스 내에서의 데이터의 에러 교정, 특히 플래시 메모리 디바이스 내에서의 데이터의 에러 교정에 적용할 수 있다. 본 발명은 또한, 가령 임의 접속 메모리 디바이스들, 자기 기억 디바이스들, 및 광 기억 장치들과 같은 다른 메모리 디바이스들에서의 데이터의 에러 교정에도 적용할 수 있다. 상기 설명된 에러 교정 회로의 모든 구성 소자들은 단일 반도체 집적 회로 칩 상의 메모리 칩과 집적될 수도 있다. 변형적으로, 에러 교정 회로의 일부 또는 모든 구성 소자들은 메모리 어레이 외부의 하나 또는 그 이상의 집적 회로들 상에서 구현될 수도 있다. 그러나, 본 발명에 따른 방법은 도 1 내지 5에 도시되어 상기 설명된 회로들에 한정되지 않는다. 에러 교정 방법의 다양한 물리적인 실행들이 본 발명의 범위 내에서 이루어질 수 있다.

본 발명은 그의 특정 실시예들과 관련하여 설명되었으며, 청구항들에서 규정되는 본 발명의 범위 내에서 많은 변형들이 이루어질 수 있다.

Claims (10)

  1. (a) 데이터 워드 바이트 카운터와;
    (b) 제 1, 2 선판독 데이터 바이트들을 각각 수신할 수 있는 제 1, 2 데이터엔코더들과;
    (c) 상기 데이터 워드 바이트 카운더 및 상기 제 1, 2 데이터 엔코더들에 연결되며, 제 1, 2 다수의 신드롬 비트들을 포함하는 신드롬을 발생시킬 수 있는 신드롬 누산기와;
    (d) 신드롬 발생기에 연결되며, 다수의 데이터 워드 바이트 어드레스 비트들을 발생시킬 수 있는 데이터 워드 바이트 어드레스 발생기와;
    (e) 상기 신드롬 누산기와 데이터 워드 바이트 어드레스 발생기에 연결되며, 상기 데이터 워드 어드레스 비트들과 상기 제 1 다수의 신드롬 비트들과의 비교에 응답하여 에러 교정 인에이블 신호를 발생시킬 수 있는 비교기와;
    (f) 상기 신드롬 누산기에 연결되며, 다수의 디코드된 데이터 입력 비트들을 발생시키기 위해 상기 제 2 다수의 신드롬 비트들을 디코딩 할 수 있는 디코더와; 그리고
    (g) 상기 비교기 및 디코더에 연결되며, 상기 디코드된 데이터 입력 비트들 및 상기 에러 교정 인에이블 신호의 수신에 응답하여 다수의 교정 비트들을 발생시킬 수 있는 교정 인에이블 버퍼를 포함하는 것을 특징으로 하는 메모리 디바이스를 위한 에러 교정 회로.
  2. 제 1 항에 있어서, 상기 제 2 데이터 엔코더에 연결된 멀티플렉서를 더 포함하는 것을 특징으로 하는 에러 교정 회로.
  3. 제 1 항 내지 제 2 항 중의 어느 한 항에 있어서, 상기 신드롬 누산기 및 상기 비교기의 사이에 연결되며, 상기 제 1, 2 다수의 신드롬 비트들을 저장하는 신드롬 래치를 더 포함하는 것을 특징으로 하는 에러 교정 회로.
  4. 제 1 항 내지 제 3 항 중의 어느 한 항에 있어서, 상기 제 1 데이터 엔코더는 제 1 다수의 코드화된 비트들 및 상기 제 1 다수의 코드화된 비트들과 관련된 제 1 패리티 비트들을 발생시킬 수 있는 제 1 블록 엔코더와, 그리고 제 2 다수의 코드화된 비트들 및 상기 제 2 다수의 코드화된 비트들과 관련된 제 2 패리티 비트들을 발생시킬 수 있는 제 2 블록 엔코더를 포함하는 것을 특징으로 하는 에러 교정 회로.
  5. (a) 다수의 데이터 워드 비트 어드레스들에 의해 확인되는 다수의 바이트들을 포함하는 데이터 워드를 선판독하는 단계로서, 데이터 워드 내의 바이트들에 대한 다수의 바이트 서수들을 발생시키기 위해 데이터 워드의 바이트들을 카운트하는 단계를 포함하는 단계와;
    (b) 코드 워드를 발생시키기 위해 데이터 워드를 코딩하는 단계와;
    (c) 상기 코드 워드, 바이트 서수들 및 데이터 워드를 기초로, 바이트 에러 어드레스 및 비트 에러 어드레스를 포함하는 신드롬을 발생시키는 단계와;
    (d) 상기 데이터 워드 바이트가 상기 바이트 에러 어드레스와 매치하는 지를 결정하기 위하여 상기 바이트 에러 어드레스와 상기 데이터 워드 바이트를 비교하는 단계와;
    (e) 상기 데이터 워드 바이트가 상기 바이트 에러 어드레스와 매치하는 지를 결정하기 위하여 상기 바이트 에러 어드레스와 상기 데이터 워드 바이트를 비교하는 상기 단계에 의한 결정에 응답하여, 에러 교정 인에이블 신호를 발생시키는 단계와;
    (f) 디코드된 비트 에러 어드레스를 발생시키기 위해 상기 비트 에러 어드레스를 디코드하는 단계와; 그리고
    (g) 상기 에러 교정 인에이블 신호에 응답하여 상기 디코드된 비트 에러 어드레스를 기초로 에러 교정된 바이트를 발생시키는 단계를 포함하는 것을 특징으로 하는 에러 교정 방법.
  6. 제 5 항에 있어서, 적어도 제 1 데이터 워드 및 제 2 데이터 워드를 포함하는 메모리 페이지에 대하여,
    (a2) 상기 제 1 데이터 워드가 판독될 때 제 2 데이터를 선판독하는 단계와; 그리고
    (b2) 제 2 코드 워드를 발생시키기 위해 상기 제 2 데이터 워드를 코딩하는단계를 더 포함하는 것을 특징으로 하는 에러 교정 방법.
  7. 제 5 항 내지 제 6 항 중의 어느 한 항에 있어서, 상기 바이트 서수들은 다수의 카운터 비트들을 포함하는 이진 포맷으로 표현되며, 상기 카운터 비트들 중 적어도 두 개는 이진수 1인 것을 특징으로 하는 에러 교정 방법.
  8. 제 5 항 내지 제 7 항 중의 어느 한 항에 있어서, 상기 데이터 워드를 코딩하는 단계는 블록 코드를 이용하여 상기 데이터 워드를 코딩하는 단계를 포함하는 것을 특징으로 하는 에러 교정 방법.
  9. 적어도 하나의 메모리 페이지를 저장할 수 있는 플래시 메모리 내에서 이중 이용 방법으로서,
    (a) 메모리 페이지를 제 1 부분 및 제 2 부분으로 분할하는 단계와;
    (b) 상기 메모리 페이지의 제 1 부분에 데이터를 할당하는 단계와; 그리고
    (c) 상기 메모리 페이지의 제 2 부분에 다수의 에러 교정 바이트들을 할당하는 단계를 포함하는 것을 특징으로 하는 방법.
  10. 제 9 항에 있어서, 상기 메모리 페이지의 제 1 부분에 데이터를 할당하는 단계는 상기 메모리 페이지의 제 1 부분에 제 1 데이터 워드 및 적어도 하나의 부가적인 데이터 워드를 할당하는 단계를 포함하며, 상기 적어도 하나의 부가적인 데이터 워드는 순서적으로 상기 제 1 데이터 워드 이후에 있는 제 2 데이터 워드를 포함하는 것을 특징으로 하는 방법.
KR1020017014657A 1999-05-18 2000-05-16 메모리 디바이스를 위한 에러 교정 회로 및 방법 KR20020007414A (ko)

Priority Applications (7)

Application Number Priority Date Filing Date Title
US09/314,575 1999-05-18
US09/314,575 US6438726B1 (en) 1999-05-18 1999-05-18 Method of dual use of non-volatile memory for error correction
US09/314,574 1999-05-18
US09/314,576 US6360347B1 (en) 1999-05-18 1999-05-18 Error correction method for a memory device
US09/314,574 US6584594B1 (en) 1999-05-18 1999-05-18 Data pre-reading and error correction circuit for a memory device
US09/314,576 1999-05-18
PCT/US2000/013385 WO2000070459A1 (en) 1999-05-18 2000-05-16 Error correction circuit and method for a memory device

Publications (1)

Publication Number Publication Date
KR20020007414A true KR20020007414A (ko) 2002-01-26

Family

ID=27405731

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020017014657A KR20020007414A (ko) 1999-05-18 2000-05-16 메모리 디바이스를 위한 에러 교정 회로 및 방법

Country Status (7)

Country Link
EP (1) EP1192544B1 (ko)
JP (1) JP2002544622A (ko)
KR (1) KR20020007414A (ko)
AT (1) AT245835T (ko)
DE (1) DE60004057D1 (ko)
TW (1) TW479223B (ko)
WO (1) WO2000070459A1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7783941B2 (en) 2004-09-06 2010-08-24 Samsung Electronics Co., Ltd. Memory devices with error detection using read/write comparisons
KR101361238B1 (ko) * 2012-06-05 2014-02-25 한국과학기술원 간섭 채널 환경에서의 오류 정정 방법 및 회로, 이를 이용한 플래시 메모리 장치

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101558394B (zh) * 2006-09-06 2013-06-19 极速决件有限公司 用来保护内容的方法、系统和介质
US8135935B2 (en) * 2007-03-20 2012-03-13 Advanced Micro Devices, Inc. ECC implementation in non-ECC components
JP2012155541A (ja) 2011-01-26 2012-08-16 Toshiba Corp データ記憶装置、メモリ制御装置及びメモリ制御方法
EP2608036A1 (en) 2011-12-22 2013-06-26 Thomson Licensing Method and system for managing error detection and correction

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2830308B2 (ja) * 1990-02-26 1998-12-02 日本電気株式会社 情報処理装置
JP3272903B2 (ja) * 1995-03-16 2002-04-08 株式会社東芝 誤り訂正検出回路と半導体記憶装置

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7783941B2 (en) 2004-09-06 2010-08-24 Samsung Electronics Co., Ltd. Memory devices with error detection using read/write comparisons
KR101361238B1 (ko) * 2012-06-05 2014-02-25 한국과학기술원 간섭 채널 환경에서의 오류 정정 방법 및 회로, 이를 이용한 플래시 메모리 장치

Also Published As

Publication number Publication date
AT245835T (de) 2003-08-15
JP2002544622A (ja) 2002-12-24
DE60004057D1 (de) 2003-08-28
EP1192544B1 (en) 2003-07-23
WO2000070459A1 (en) 2000-11-23
TW479223B (en) 2002-03-11
EP1192544A1 (en) 2002-04-03

Similar Documents

Publication Publication Date Title
US10649842B2 (en) Encoding data in a modified-memory system
US9390774B2 (en) Systems and methods of storing data
US9058879B2 (en) Methods and apparatus for storing data in a multi-level cell flash memory device with cross-page sectors, multi-page coding and per-page coding
US8751896B2 (en) Semiconductor storage device, method of controlling the same, and error correction system
US8140935B2 (en) ECC controller for use in flash memory device and memory system including the same
US9454414B2 (en) System and method for accumulating soft information in LDPC decoding
KR101162271B1 (ko) 반도체 기억장치
US8438457B2 (en) Nonvolatile memory apparatus, memory controller, and memory system
US8788905B2 (en) Flash memory device error correction code controllers and related methods and memory systems
US7921245B2 (en) Memory system and device with serialized data transfer
US9053043B2 (en) Method of error correction of a memory
EP1635261B1 (en) Memory with embedded error correction code circuit
JP4112849B2 (ja) 半導体記憶装置
JP3999822B2 (ja) 記憶システム
US4394753A (en) Integrated memory module having selectable operating functions
US7900118B2 (en) Flash memory system and method for controlling the same
US4845664A (en) On-chip bit reordering structure
JP4105819B2 (ja) 記憶装置およびメモリカード
DE60217591T2 (de) Speicher-Steuerung für Mehrpegel-Speicherzelle
US5164944A (en) Method and apparatus for effecting multiple error correction in a computer memory
EP0540450B1 (en) ECC function with self-contained high performance partial write or read/modify/write and parity look-ahead interface scheme
US4817095A (en) Byte write error code method and apparatus
US5491703A (en) Cam with additional row cells connected to match line
KR100546348B1 (ko) 플래시 메모리 시스템 및 그 데이터 저장 방법
US7328377B1 (en) Error correction for programmable logic integrated circuits

Legal Events

Date Code Title Description
WITN Withdrawal due to no request for examination