KR20030017310A - 멀티레벨 셀 메모리용 메모리 제어기 - Google Patents

멀티레벨 셀 메모리용 메모리 제어기 Download PDF

Info

Publication number
KR20030017310A
KR20030017310A KR1020020021125A KR20020021125A KR20030017310A KR 20030017310 A KR20030017310 A KR 20030017310A KR 1020020021125 A KR1020020021125 A KR 1020020021125A KR 20020021125 A KR20020021125 A KR 20020021125A KR 20030017310 A KR20030017310 A KR 20030017310A
Authority
KR
South Korea
Prior art keywords
data
ecc
error correction
bit
memory
Prior art date
Application number
KR1020020021125A
Other languages
English (en)
Other versions
KR100873656B1 (ko
Inventor
가나자와게이스케
와타나베히로아키
히구치요시노부
아라카와히데키
오쿠무라요시키
세키노유타카
Original Assignee
후지쯔 가부시끼가이샤
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 후지쯔 가부시끼가이샤 filed Critical 후지쯔 가부시끼가이샤
Publication of KR20030017310A publication Critical patent/KR20030017310A/ko
Application granted granted Critical
Publication of KR100873656B1 publication Critical patent/KR100873656B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • 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
    • 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

Abstract

본 발명은 멀티레벨 셀 메모리에 대하여 ECC 코드를 생성하고, ECC 코드를 이용하여 독출 데이터의 에러를 정정하는 메모리 제어기를 제공하는 것을 과제로 한다.
메모리 제어기가 제어하는 N(N=2n, n은 2 이상의 정수)레벨 셀 메모리는, 복수의 데이터 입출력 단자가 하나의 N 레벨 셀에 속하는 n비트 데이터가 중복되지 않도록, 제1 내지 제M의 데이터 입출력 단자군으로 분리되는 내부 구성을 갖는다. 이와 함께, 상기 메모리 제어기는 제1 데이터 버스의 복수의 비트 데이터를 제1 내지 제M의 데이터군으로 분할하여, 각각의 데이터군에 관해서 ECC 회로에서 에러 정정 코드를 생성하여, 제1 내지 제M의 데이터군과 제1 내지 제M의 에러 정정 코드를 N 레벨 셀 메모리의 제1 내지 제M의 데이터 입출력 단자에 제2 데이터 버스를 통해 입력한다. 그 결과, 각 N 레벨 셀에 속하는 n비트의 데이터는 중복되지 않고 복수의 ECC 존(zone)으로 분리되어, 각각의 ECC 존의 데이터에 대하여 에러 정정 코드가 생성되고 기억된다. 따라서, 하나의 N 레벨 셀에 불량이 생겨서 동시에 n비트의 데이터가 불량으로 되더라도, 각각의 ECC 존에서 생성한 에러 정정 코드를 이용하여 n비트 데이터의 정정을 실행할 수 있다. 즉, 단비트 불량(single-bit defect)을 정정할 수 있는 에러 정정 코드로도, n비트의 불량을 정정할 수 있다.

Description

멀티레벨 셀 메모리용 메모리 제어기{MEMORY CONTROLLER FOR MULTILEVEL CELL MEMORY}
본 발명은 멀티레벨 셀 메모리용 메모리 제어기에 관한 것으로써, 특히 멀티레벨 셀의 에러 검출/정정 코드를 생성하여 검출/정정을 실행하는 ECC 회로를 설치한 메모리 제어기에 관한 것이다.
휴대 정보 단말기, 휴대 전화기 등의 휴대형 정보 기기를 중심으로 플래시 메모리가 보급되고 있다. 플래시 메모리는 반도체 불휘발성 메모리이며, 전원이 오프로 되어도 기억 데이터를 유지할 수 있기 때문에, 주로 전지 구동의 휴대형 정보 기기에 널리 채용되고 있다.
최근의 고기능화 또는 광대역 통신 등에 따라, 플래시 메모리의 기억 용량의 증대가 널리 요구되고 있다. 이러한 요구를 충족시키기 위해서, 멀티레벨 셀의 플래시 메모리가 제안되었다. 이 멀티레벨 셀 메모리는 광의로 3 레벨 이상의 상태를 셀이 기억하는 메모리이며, 통상은 2n(n≥2의 정수)의 상태를 셀이 기억하는 메모리이다. 따라서, 4의 충전 상태라면, 2 비트의 데이터가 1개의 셀에 기억되고, 8의 충전 상태라면, 3 비트의 데이터가 1개의 셀에 기억되며, 2n의 충전 상태라면, n비트의 데이터가 단일 셀에 기억된다.
플래시 메모리와 같은 반도체 메모리는 1비트당 비용이 많이 들기 때문에, 너무 많은 비트를 필요로 하는 ECC 코드의 이용은 플래시 메모리에는 적합하지 않다. 한편, 플래시 메모리는 하드디스크 등의 다른 기록 매체에 비교하여 신뢰성이 높고, 기껏해야 1개의 셀에 불량이 발생하는 정도이다. 따라서, 종래의 단비트 셀의 메모리에서는 ECC 코드에 1비트의 에러까지 정정가능한 해밍 코드(Hamming code)가 채용되는 경우가 많다. 그 이유는 복수 비트의 에러를 정정할 수 있는 ECC 코드에서는 지나치게 많은 비트수가 요구되는 동시에, 복수 비트의 에러 정정이 필요없기 때문이다. 즉, 플래시 메모리와 같이, 1비트당 비용이 많이 들지만, 기껏해야 1개의 셀에 불량이 발생하는 정도로 신뢰성이 높은 경우는 적은 비트수로 1비트 에러까지 정정할 수 있는 해밍 코드가 ECC 코드로서 적합하다.
대용량화에 따른 멀티레벨 셀 메모리는, 어떤 셀에 불량이 발생하면, 그 불량셀에 속하는 n비트의 데이터가 동시에 불량 비트로 될 가능성이 있다. 결과적으로, 상기 1비트 에러까지 정정할 수 있는 해밍 코드를 이용한 오류 정정 코드는 1개의 불량 셀에 따른 n비트(n은 2 이상)의 에러를 정정할 수 없기 때문에, 해밍 코드 이외의 비트수가 큰 다른 종류의 ECC 코드를 이용할 필요성이 생긴다. 예컨대, 하드디스크에서 채용되고 있는 복잡한 ECC 코드 등이다. 그러나, 그와 같은 비트수가 큰 ECC 코드는 1비트당 비용이 많이 드는 플래시 메모리에는 부적합하다.
상기 문제에 대처하는 것으로서, 미국 특허 제5,754,566호에는 메모리 디바이스 내에 ECC 회로를 설치하고, 그 ECC 회로가 직렬 데이터를 복수의 데이터 워드로 분리함으로써, 데이터 워드 내에는 1셀의 n비트에서 1비트만이 속하도록 하고, 데이터 워드마다 ECC 코드를 생성하여, 그것을 n비트 셀에 기억시키는 것이 제안되었다.
그러나, 메모리 디바이스에 ECC 회로를 내장시키는 것은 메모리 디바이스의 비용 상승을 초래하여 바람직하지 못하다. 특히, 복수개의 메모리 디바이스가 탑재되는 시스템에서는 동일한 ECC 회로가 복수의 메모리 디바이스 내에 중복하여 설치되어 시스템 전체의 비용을 상승시킨다.
그래서, 본 발명의 목적은 멀티비트(multi-bit) 셀 메모리에 대한 ECC 회로를 내장한 메모리 제어기를 제공하는 데에 있다.
본 발명의 다른 목적은 멀티비트 셀 메모리에 대하여, 적은 비트수로 오류 정정 가능한 ECC 코드를 생성하여 오류 정정을 행하는 메모리 제어기를 제공하는 데에 있다.
상기 목적을 달성하기 위한 본 발명의 제1 특징은, 호스트와 N(N=2n, n은 2 이상의 정수)레벨 셀 메모리 사이에 각각 복수 비트의 데이터 버스를 통해 접속된 메모리 제어기에 있어서, 호스트에 접속되는 제1 데이터 버스의 제1 내지 제M(M은 n 이상)의 데이터군을 각각 병렬로 입력하고, 상기 제1 내지 제M의 데이터군에 대하여 단비트 불량을 정정할 수 있는 제1 내지 제M의 에러 정정 코드를 각각 생성하는 제1 내지 제M의 ECC 회로와, 하나의 N 레벨 셀에 속하는 n비트 데이터가 중복되지 않고서 제1 내지 제M의 데이터군으로 분리되도록, 상기 데이터군을 상기 N 레벨 셀 메모리의 데이터 입출력 단자에 접속되는 제2 데이터 버스에 출력하는 데이터 출력 수단을 구비하고, 상기 데이터 출력 수단은 또한 상기 ECC 회로가 생성한 각각의 에러 정정 코드를 상기 제2 데이터 버스에 출력하는 것을 특징으로 하는 멀티레벨 셀 메모리용 메모리 제어기이다.
상기 멀티레벨 셀 메모리용 메모리 제어기에 접속되는 N 레벨 셀 메모리는 제2 데이터 버스를 경유하여 입력된 복수 비트의 데이터 중 제1 내지 제M의 데이터군 각각으로부터 기껏해야 1비트의 데이터를 조합하여, 하나의 N 레벨 셀에 기억한다. 또한, 제1 내지 제M의 ECC 회로가 생성한 각각의 에러 정정 코드로부터 기껏해야 1비트의 데이터를 조합하여, 하나의 N 레벨 셀에 기억하는 것이 바람직하다.
상기 발명의 메모리 제어기가 제어하는 N 레벨 셀 메모리는 제2 데이터 버스에 접속되는 복수의 데이터 입출력 단자가, 하나의 N 레벨 셀에 속하는 n비트 데이터가 중복하지 않도록, 제1 내지 제M의 데이터 입출력 단자군으로 분리되는 내부 구성을 갖는다. 이와 함께, 메모리 제어기는 제1 데이터 버스의 복수 비트 데이터를 제1 내지 제M의 데이터군으로 분할하고, 이러한 각각의 데이터군에 대하여 ECC 회로에서 에러 정정 코드를 생성하여, 제1 내지 제M의 데이터군과 제1 내지 제M의 에러 정정 코드를 N 레벨 셀 메모리의 제1 내지 제M의 데이터 입출력 단자에 제2 데이터 버스를 통해 입력한다.
그 결과, 각 N 레벨 셀에 속하는 n비트의 데이터는 중복되지 않고 복수의 ECC 존으로 분리되고, 이러한 각각의 ECC 존의 데이터에 대하여 에러 정정 코드가 생성되고 기억된다. 따라서, 하나의 N 레벨 셀에 불량이 생겨서 동시에 n비트의 데이터가 불량으로 되어도, 각각의 ECC 존에서 생성한 에러 정정 코드를 이용하여 n비트의 데이터를 정정할 수 있다. 즉, 단비트 불량을 정정할 수 있는 에러 정정 코드를 이용하더라도, n비트의 불량을 정정할 수 있다.
N 레벨 셀 메모리의 데이터 입출력 단자가 하위에서부터 차례로 제1, 제2 … 제M의 데이터군으로 분할되는 경우, 메모리 제어기의 데이터 출력 수단은 제2 데이터 버스에 대하여, 하위에서부터 차례로 제1, 제2 … 제M의 데이터군이 할당되도록 데이터를 출력한다. 그에 따라, 제1 데이터 버스의 데이터도 하위에서부터 순차적으로 제1, 제2 … 제M의 데이터군으로 분할하여 제1 내지 제M의 ECC 회로에 입력할 수 있고, 메모리 제어기 내의 데이터군으로 분할하는 구성이 비교적 간단해진다.
또한, N 레벨 셀 메모리의 데이터 입출력 단자가 하위에서부터 차례로 N 레벨 셀에 속하는 데이터군으로 분할되는 경우, 메모리 제어기의 데이터 출력 수단은 제2 데이터 버스에 대하여, 하위에서부터 차례로 제1, 제2 … 제M의 데이터군의 데이터가 주기적으로 반복되도록 데이터를 출력한다. 즉, 데이터 출력 수단은 하나의 N 레벨 셀에 속하는 n비트 데이터가 중복되지 않고서 제1 내지 제M의 데이터군으로 분리되도록, 제1 내지 제M의 데이터군의 데이터를 조합시켜 제2 데이터 버스에 출력한다.
상기 발명에 있어서, N 레벨 셀 메모리로부터 데이터를 독출하는 경우, 제2 데이터 버스의 제1 내지 제M의 데이터군 및 제1 내지 제M의 에러 정정 코드가 메모리 제어기 내의 제1 내지 제M의 ECC 회로에 각각 공급되어, 제1 내지 제M의 ECC 회로가 제1 내지 제M의 데이터군 내의 1 비트 에러 정정을 행한다.
따라서, 호스트와 N 레벨 셀 메모리 사이에서는 제1 데이터 버스, 제1 내지 제M의 ECC 회로, 데이터 출력 수단 및 제2 데이터 버스의 경로로 기록이 이루어지고, 그 반대의 경로로 독출이 이루어진다.
또, 기록 데이터는 클록에 동기하여 ECC 회로에 공급되고 메모리에 공급되는 동시에, 독출 데이터는 클록에 동기하여 메모리로부터 출력되어 ECC 회로에 공급된다. 따라서, 호스트와 메모리 디바이스 사이의 클록 동기 동작에 미치는 영향을 최소한으로 억제하여, 에러 정정 코드의 생성과 에러 정정을 실행할 수 있다.
상기 목적을 달성하기 위한 본 발명의 제2 특징은 호스트와 N(N=2n, n은 2 이상의 정수)레벨 셀 메모리 사이에 각각 복수 비트의 데이터 버스를 통해 접속된 메모리 제어기에 있어서, 호스트에 접속되는 제1 데이터 버스의 데이터군에 관해서 어드레스 방향으로 분리된 제1 내지 제M(M은 n 이상)의 데이터군을 순서대로 입력하고, 상기 제1 내지 제M의 데이터군에 대하여 단비트 불량을 정정할 수 있는 제1 내지 제M의 에러 정정 코드를 각각 생성하는 공통의 ECC 회로와, 제1 내지 제(M-1)의 에러 정정 코드를 유지하는 에러 정정 코드 유지 수단과, 하나의 N 레벨 셀에 속하는 n비트 데이터가 중복하지 않고서 제1 내지 제M의 데이터군으로 분리되도록, 상기 데이터를 상기 N 레벨 셀 메모리에 접속되는 제2 데이터 버스로 출력하는 데이터 출력 수단을 구비하고, 상기 데이터 출력 수단은 또한 상기 에러 정정 코드 유지 수단이 유지하는 제1 내지 제(M-1)의 에러 정정 코드와 상기 ECC 회로가 생성한 제M의 에러 정정 코드를 상기 제2 데이터 버스로 출력하는 것을 특징으로 하는 멀티레벨 셀 메모리용 메모리 제어기이다.
상기 목적을 달성하기 위한 본 발명의 제3 특징은 호스트와 N(N=2n, n은 2 이상의 정수)레벨 셀 메모리 사이에 각각 복수 비트의 데이터 버스를 통해 접속된 메모리 제어기에 있어서, 호스트에 접속되는 제1 데이터 버스의 데이터군에 관해서 어드레스 방향으로 분리된 제1 내지 제M(M은 n 이상)의 데이터군을 각각 입력하고, 상기 제1 내지 제M의 데이터군에 대하여, 단비트 불량을 정정할 수 있는 제1 내지 제M의 에러 정정 코드를 각각 생성하는 제1 내지 제M의 ECC 회로와, 하나의 N 레벨셀에 속하는 n비트 데이터가 중복되지 않고서 제1 내지 제M의 데이터군으로 분리되도록, 상기 데이터를 상기 N 레벨 셀 메모리에 접속되는 제2 데이터 버스로 출력하는 데이터 출력 수단을 구비하고, 상기 데이터 출력 수단은 또한 상기 ECC 회로가 생성한 각각의 에러 정정 코드를 상기 제2 데이터 버스로 출력하는 것을 특징으로 하는 멀티레벨 셀 메모리용 메모리 제어기이다.
보다 바람직한 실시예에 있어서, 상기 발명의 제1, 제2, 제3 특징의 메모리 디바이스는 상기 데이터 버스의 복수 비트의 데이터를 복수개 갖는 페이지 단위로 기록 및 독출을 실행하고, 상기 데이터 버스의 복수 비트의 데이터를 내부 어드레스 순으로 내부의 페이지 버퍼에 기록 및 독출한다. 더욱이, 페이지 내의 데이터는 (1) 데이터 입출력 단자(열)에서 또는 (2) 내부 어드레스(행)에서 제1 내지 제M의 데이터군으로 분리되고, 그 데이터군마다 단비트 에러 정정 가능한 에러 정정 코드가 ECC 회로에서 생성되고 정정된다. 따라서, 메모리 제어기의 ECC 회로 및 데이터 출력 수단은 상기 분리 방법에 따른 구성을 갖는다.
상기 발명에서, ECC 생성 회로는 각 ECC 존 내의 데이터에 있어서 단비트 불량을 정정할 수 있는 에러 정정 부호 방식에 기초하여 ECC 코드를 생성한다. 따라서, 생성되는 ECC 코드의 비트수는 최소한으로 억제되어, 플래시 메모리의 예비 영역에 기억될 수 있다. 그리고, 각 ECC 존 내에는 하나의 N 레벨 셀에 속하는 n비트 데이터 중 1비트만이 속하도록 분리되기 때문에, 1개의 멀티레벨 셀에 불량이 발생하여 n비트 불량이 발생하더라도, 각 ECC 존 내에서 1비트의 오류 정정을 함으로써, n비트의 오류 정정을 가능하게 한다.
도 1은 멀티레벨 셀 메모리를 사용한 메모리 시스템의 구성도.
도 2는 멀티레벨 셀 메모리의 구성예를 도시하는 회로도.
도 3은 셀의 충전 상태를 도시하는 도.
도 4는 멀티레벨 셀 메모리 장치의 구성도.
도 5는 멀티레벨 셀 메모리의 페이지 구성을 도시한 구성도.
도 6은 페이지 데이터를 입출력 단자(열) 단위로 복수의 ECC 존으로 분리하는 경우의 메모리 디바이스와 메모리 제어기의 구성예를 도시하는 예시도.
도 7은 페이지 데이터를 입출력 단자(열) 단위로 복수의 ECC 존으로 분리하는 경우의 메모리 디바이스와 메모리 제어기의 다른 구성예를 도시하는 예시도.
도 8은 페이지 데이터를 어드레스(행) 단위로 복수의 ECC 존으로 분리하는 경우의 메모리 디바이스와 메모리 제어기의 구성예를 도시하는 예시도.
도 9는 페이지 데이터를 어드레스(행) 단위로 복수의 ECC 존으로 분리하는 경우의 메모리 디바이스와 메모리 제어기의 다른 구성예를 도시하는 예시도.
도 10은 멀티레벨 셀 메모리로의 기록 동작을 설명하는 설명도.
도 11은 멀티레벨 셀 메모리로부터의 독출 동작을 설명하는 설명도.
도 12는 입출력 단자(열) 단위로 분할한 예를 도시하는 예시도.
도 13은 ECC 코드를 예비 영역(spare area)에 저장하는 것을 설명하는 설명도.
도 14는 도 12, 13의 예에 적용되는 메모리 제어기 내의 ECC 회로도.
도 15는 어드레스(행) 단위로 분할한 예를 도시하는 예시도.
도 16은 존마다 생성되는 ECC 코드의 예를 도시하는 예시도.
도 17은 생성한 ECC 코드를 예비 영역에 저장하는 것을 설명하는 설명도.
도 18은 도 15∼17의 예에 적용되는 메모리 제어기 내의 ECC 회로도.
<도면의 주요부분에 대한 부호의 설명>
1 : 호스트
2 : 메모리 제어기
3 : 멀티레벨 셀 메모리
4 : ECC 회로
5 : 제1 데이터 버스
6 : 제2 데이터 버스
이하, 도면을 참조하여 본 발명의 실시예를 설명한다. 그러나, 본 발명의 보호 범위는 이하의 실시예에 한정되는 것이 아니라, 특허청구범위에 기재된 발명과 그 균등물에까지 미치는 것이다.
도 1은 멀티레벨 셀 메모리를 사용한 메모리 시스템의 구성도이다. 여기서 멀티레벨 셀 메모리란 1개의 셀 내에 n 비트(n은 2 이상의 정수)의 데이터를 유지할 수 있는 메모리이며, 따라서 1개의 셀은 N=2n의 상태를 갖는다. 이 예에서는 호스트(1)와 멀티레벨 셀 메모리(3)가 데이터 버스(5, 6)로 접속되고, 그 사이에는 메모리 제어기(2)가 설치된다. 구체적으로, 호스트(1)와 메모리 제어기(2) 사이에 는 제1 데이터 버스(5)가 설치되고, 메모리 제어기(2)와 멀티레벨 셀 메모리(3) 사이에는 제2 데이터 버스(6)가 설치된다. 그리고, 메모리 제어기(2)는 데이터 버스(5, 6)로부터 공급되는 데이터에 대하여 에러 정정 코드(이하 ECC 코드)를 생성하고, 오류 정정을 행하는 ECC 회로(4)를 내장한다.
호스트(1)는 멀티레벨 셀 메모리(3)로부터 데이터를 독출하는 동시에, 데이터를 기록한다. 그 경우, 메모리 제어기(2)는 호스트(1)에 의한 멀티레벨 셀 메모리(3)로 액세스를 중개한다. ECC 회로는 호스트(1)가 멀티레벨 셀 메모리(3)에 데이터를 기록할 때, 그 데이터에 대한 ECC 코드를 생성하고, 데이터와 함께 그 ECC 코드도 멀티레벨 셀 메모리(3)에 기록한다. 통상, 멀티레벨 셀 메모리(3)의 용장 셀 영역인 예비 영역에 상기 ECC 코드가 기록된다. 그리고, 호스트(1)가 멀티레벨셀 메모리(3)로부터 데이터를 독출할 때, ECC 회로(4)는 독출한 데이터에 대한 ECC 코드를 생성하여 독출한 ECC 코드와 비교를 함으로써, 데이터의 오류를 검출하고, 그 오류를 정정한다.
도 1의 메모리 시스템의 예에 있어서, ECC 회로(4)가 데이터의 오류를 검출하면, 에러 검출 수단(7)에 의해 호스트에 에러 발생을 통지하는 동시에, 데이터 버스(5)를 통해 오류 정정 정보(에러 발생 어드레스 등)를 호스트(1)에 송신한다. 따라서, 호스트(1)는 그 오류 정정 정보에 따라서 독출 데이터의 오류를 정정한다. 다른 메모리 시스템의 예에 있어서, ECC 회로(4)는 예컨대 1페이지 분량의 데이터를 유지하는 데이터 버퍼를 내장하고, ECC 회로 내에서 오류를 정정하며, 그 정정된 데이터는 데이터 버스(5)를 통해 호스트(1)에 전송된다. 본 실시예의 메모리 제어기는 어느 쪽의 구성이라도 좋다.
도 2는 멀티레벨 셀 메모리의 구성예를 도시하는 회로도이다. 이 예는 NAND형 플래시 메모리이다. 또한, 간단히 하기 위해서, 1개의 셀에 2비트 데이터가 유지되는 예를 설명한다. 도 2의 멀티레벨 셀 메모리에는 복수의 셀(MC)을 종열로 접속한 셀 스트링이 비트선(BL0, BL1)에 접속되고, 각 셀의 제어 게이트에는 워드선(WL0, WL1)이 접속된다. 각 셀(MC)은 예컨대 플로팅 게이트(floating gate)를 갖고, 이 플로팅 게이트 내에 4개의 충전 상태가 기억된다. 따라서, 각 셀(MC)은 2비트 데이터를 기억한다.
그에 따라, 각 비트선(BL0, BL1)에는 2개의 페이지 버퍼(PB)가 각각 접속되고, 1개의 셀(MC)에 액세스했을 때, 2개의 페이지 버퍼(PB)에 1비트씩의 데이터가독출되며, 반대로, 2개의 페이지 버퍼(PB)에 입력된 2비트 데이터에 따라서 1개의 셀(MC)에 충전 상태가 기억된다.
독출시에 워드선을 선택함으로써, 모든 페이지 버퍼(PB) 내의 데이터가 독출되어 1페이지 분량의 데이터가 유지된다. 그리고, 도시하지 않은 선택 신호에 따라서, 데이터 버스의 비트수 단위로 페이지 버퍼(PB) 내의 데이터가 입출력 회로(10)로부터 출력된다. 반대로, 기록시에 있어서, 데이터 버스로부터 데이터 버스의 비트수 단위로 데이터가 공급되어, 도시하지 않은 선택 신호에 따라서, 페이지 버퍼 내에 데이터가 저장되고, 그 후 셀(MC)이 데이터에 대응한 충전 상태로 프로그램된다.
도 3은 셀의 충전 상태를 도시한 도면이다. 종축은 셀의 임계치 전압을 나타내고, 횡축은 셀수를 나타낸다. 즉, 셀의 복수의 임계치 전압 분포를 나타낸다. 도시된 바와 같이, 셀의 플로팅 게이트 내의 충전 상태는 충전(전자)이 매우 많아서, 임계치 전압이 가장 높은 데이터(0,1)의 상태와, 다음으로 충전이 많고 임계치 전압도 다음으로 높은 데이터(0,0)의 상태와, 그 다음으로 충전이 많고 임계치 전압도 다음으로 높은 데이터(1,0)의 상태와, 그 다음의 데이터(1,1)의 상태가 존재한다. 워드선의 전위를 임계치 분포 사이의 레벨로 하면, 상태에 따라서 셀 트랜지스터의 드레인 전류의 차이가 발생하여, 어떤 분포의 충전 상태인지를 검출할 수 있다.
도 4는 멀티레벨 셀 메모리 장치의 구성도이다. 도 4에는 1페이지 분량의 셀 어레이를 나타내고, 셀 어레이는 데이터가 기억되는 데이터 영역(8)과, 불량 셀의치환용 용장 셀을 갖는 예비 영역(9)을 포함한다. 그리고, 이 예비 영역(9)에는 기록 데이터에 대하여 생성된 ECC 코드가 기록된다. 도 4에 나타낸 바와 같이, 각 셀(MC)에는 4개의 충전 상태를 기억할 수 있으며, 그에 따라, 2비트 데이터가 기억되게 된다.
도 4의 예에서는 1페이지에 대하여, 데이터 영역(8)은 512 바이트의 용량을 갖고, 예비 영역(9)은 16바이트의 용량을 갖는다. 즉, 1페이지의 데이터 용량은 512바이트이며, 그것에 대응하는 예비 영역(9)은 16 바이트의 용량을 갖는다. 1라인의 워드선(WL)이 선택되면, 데이터 영역(8)으로부터 512 비트의 데이터 및 예비 영역(9)으로부터 16비트의 데이터를 합한 총 528비트의 데이터가 페이지 버퍼(도시 생략)에 독출된다. 그리고, 8라인의 워드선이 동시에 선택됨으로써, 데이터 영역 (8)으로부터 512바이트의 데이터 및 예비 영역(9)으로부터 16 바이트의 데이터가 페이지 버퍼로 독출된다. 그 후에는 어드레스의 증가에 동기하여, 8 비트씩의 데이터(1바이트)가 8 라인의 I/O 단자로부터 출력된다.
도 5는 멀티레벨 셀 메모리의 페이지 구성을 도시한 도면이다. 플래시 메모리는 통상 페이지 단위로 독출 및 기록이 이루어진다. 따라서, 셀 영역은 복수의 페이지를 갖는다. 도 4에 도시한 바와 같이, 각 페이지는 512바이트의 데이터 영역 (8)과 16바이트의 예비 영역(9)을 갖는다. 도 4의 예는 입출력 단자(I/O)가 8라인인 경우이다. 입출력 단자(I/O)가 16라인인 경우는 각 페이지는 512워드의 데이터 영역(8)과 16워드의 예비 영역(9)으로 구성된다.
플래시 메모리는 어떤 페이지에 대하여 독출 또는 기록을 행할지 여부를 메모리 제어기로부터 지시를 받을 뿐이다. 따라서, 플래시 메모리는 지정된 페이지 내에서는 메모리 내에서 클록에 동기하여 어드레스를 증가(또는 감소)하여, 페이지 내의 어드레스를 관리한다. 즉, 플래시 메모리는 어떤 페이지에 대하여 액세스 요구가 있으면, 페이지 내의 어드레스를 증가시키면서, 최초로 데이터 영역(8)에 대하여 512바이트의 데이터를 액세스하고, 그 후, 예비 영역(9)에 대하여 16바이트의 데이터를 액세스한다.
N(N은 4 이상)레벨 셀 메모리는 1개의 셀 내에 n비트(2n=N)의 데이터를 기억한다. 구체적으로는, 도 3에서 도시한 2n의 상태를 1개의 셀이 유지함으로써 n비트의 데이터를 기억한다. 따라서, 1페이지 내에 1개의 불량 셀이 발생하면, n비트의 데이터가 동시에 에러로 된다. 단비트 불량을 정정할 수 있는 에러 정정 코드 방식으로 상기 복수 비트의 데이터 에러를 회복하기 위해서, 본 실시예에서는 1페이지의 데이터를 복수의 데이터군으로 분할하고, 각각의 데이터군에서 단비트 불량 정정이 가능한 에러 정정 코드를 생성하여, 메모리 디바이스 내의 예비 영역에 기억한다. 그리고, 1개의 멀티레벨 셀에 속하는 n비트 데이터가 중복되지 않고 복수의 데이터군으로 분할되고, 각각 분할된 데이터군에서 기껏해야 1비트 에러까지의 수정을 가능하게 한다. 그렇게 함으로써, 1개의 셀에 불량이 발생하더라도, 각각의 데이터군 내에서는 기껏해야 1비트 에러밖에 지나지 않아, 간단한 단비트 불량 정정이 가능한 에러 정정 코드로도, 멀티레벨 셀의 불량에 대하여 오류 정정을 하는 것이 가능하게 된다.
상술한 바와 같이, 1페이지의 데이터는 데이터 버스의 복수 비트에 대응하는 입출력 단자 방향(열 방향)과, 데이터 버스의 복수 비트에 대응되는 어드레스의 방향(행 방향)으로 분리 가능하다. 1페이지의 데이터는 어드레스를 증가하여 워드 단위로 액세스되기 때문에, 입출력 단자 방향(열 방향)으로 분리하면, 데이터 버스의 복수 비트의 데이터가 데이터 버스 내에서 복수의 데이터군으로 분리되고, 어드레스 방향(행 방향)으로 분리하면, 데이터 버스의 복수 비트의 데이터가 복수 어드레스 내에서 복수의 데이터군으로 분리된다.
도 6은 페이지 데이터를 입출력 단자(열) 단위로 복수의 ECC 존으로 분리하는 경우의 메모리 디바이스와 메모리 제어기의 구성예를 도시하는 도면이다. 이 예에서는, 메모리 디바이스(3)가 1개의 셀에 2비트 데이터가 유지되는 예이며, 동일한 어드레스(Ai)에 대하여 4개 셀의 8비트 데이터에 액세스 가능한 구성으로 되어 있다. 그리고, 각 셀의 2비트 데이터는 중복되지 않고 하위의 입출력 단자군(I/OO∼I/O3)과 상위의 입출력 단자군(I/O4∼I/O7)으로 분리된다. 즉, 도면에서 표시된 셀(MC)의 2비트 데이터는 한쪽이 입출력 단자(I/OO)에 할당되고, 다른 쪽이 입출력 단자(I/O4)에 할당된다. 그 이외의 셀의 2비트 데이터도 각각 I/O1,I/O5; I/O2,I/O6; I/O3,I/O7에 할당된다. 그리고, 메모리 디바이스(3) 내의 입출력 배선 구조(40)에 의해 4 세트의 2비트 데이터(I/O0,I/O4; I/O1,I/O5; I/O2,I/O6; I/O3,I/O7)가 8비트의 입출력 단자(I/O0∼I/O7)에 접속되고, 그 입출력 단자가 제2 데이터 버스(6)에 접속된다.
상기 메모리 디바이스(3) 구성의 경우는 데이터 영역(8)과 예비 영역(9)의512 바이트 및 16 바이트의 데이터를 입출력 단자(열) 방향으로 적어도 2개의 ECC 존으로 분리하여, 각각에서 ECC 코드를 생성할 필요가 있다. 1개의 셀(MC)이 불량으로 되어 2비트 데이터가 에러로 되어도, 2비트 데이터가 각각 다른 ECC 존으로 분리되어 ECC 코드가 생성되고 있기 때문에, 예컨대 ECC 코드가 단비트만 정정 가능한 코드로도, 2개의 ECC 코드에 의해 2비트 데이터를 정정할 수 있다.
이 메모리 디바이스 구조에 따라, 본 실시예의 메모리 제어기(2)에서는, 제1 데이터 버스(5)의 8 비트가 하위의 4 비트(DB0∼3)와 상위의 4 비트(DB4∼7)로 분리되어, 각각의 데이터군(DB0∼3, DB4∼7)이 존 0, 1의 ECC 회로(20, 22)에 공급된다. ECC 회로(20, 22)에는 공급되는 데이터군(DB0∼3, DB4∼7)에 대하여 각각의 ECC 코드를 생성하는 동시에, 공급된 데이터군(DB0∼3, DB4∼7)을 데이터 출력 회로(30)로부터 그대로 제2 데이터 버스(6)의 8라인의 버스선에 출력하여, 메모리 디바이스(3)의 8개의 입출력 단자(I/O0∼7)에 공급한다.
메모리 디바이스(3)에서는 입출력 배선 구조(40)에 의해, 제1 데이터군(I/O0∼3)으로부터 1 비트 및 제2 데이터군(I/O4∼7)으로부터 1비트가 조합되어, 4 세트의 2비트 데이터(I/O0,I/O4; I/O1,I/O5; I/O2,I/O6; I/O3,I/O7)가 4개의 2비트 셀(MC)에 기록된다.
메모리 디바이스(3)의 데이터 영역(8)에 512 바이트의 데이터가 기록되면, ECC 회로(20, 22)는 각각의 ECC 코드의 생성이 종료되고, 생성된 제1 및 제2 ECC 코드가 제2 데이터 버스의 하위 비트와 상위 비트를 통해 메모리 디바이스의 입출력 단자(I/O0∼3, I/O4∼7)에 각각 공급된다. 그리고, 메모리 디바이스 내에서는데이터와 같은 식으로 예비 영역(9)의 셀에 2 비트 데이터가 기록된다.
한편, 독출시에는 메모리 디바이스(3) 내에 있어서, 512바이트와 16바이트의 데이터가 페이지 버퍼(도시 생략)에 독출되고, 페이지 버퍼에 유지된 데이터가 어드레스를 증가함으로써, 8 비트씩 입출력 단자(I/O0∼7)로부터 출력된다. 메모리 제어기 내의 ECC 회로(20, 22)는 각각 제1 및 제2 데이터군의 데이터를 입력하여 ECC 코드를 생성하고, 그 후 예비 영역(9)으로부터 독출된 제1 및 제2 ECC 코드와 비교하여, 에러 검출과 에러 정정을 실행한다.
독출된 제1 및 제2 데이터군의 데이터는 제1 데이터 버스(5)를 경유하여 호스트(1)에 전송되는 동시에, 에러 정정 데이터는 에러 통지 수단(7)을 경유하여 호스트(1)에 공급된다.
도 6의 예에서는, 메모리 디바이스 내의 입출력 배선 구조(40)에 의해, 1개의 2 레벨 셀에 속하는 2 비트 데이터가 제1 및 제2 데이터군에 중복되지 않도록 분리되고, 그 제1 및 제2 데이터군이 하위의 입출력 단자군(I/O0∼3)과 상위의 입출력 단자군(I/O4∼7)에 각각 할당된다. 따라서, 메모리 제어기(2)에서는 제1 및 제2 ECC 회로(20, 22)에 제1 데이터 버스의 하위의 데이터군(DB0∼3)과 상위의 데이터군(DB4∼7)을 입력하여, 각각의 ECC 코드를 생성하고, 데이터 출력 수단(30)이 제1 및 제2 데이터군과 제1 및 제2 ECC 코드를 제2 데이터 버스의 하위의 데이터군과 상위의 데이터군에 출력한다.
도 7은 페이지 데이터를 입출력 단자(열) 단위로 복수의 ECC 존으로 분리하는 경우의 별도의 메모리 디바이스와 메모리 제어기의 구성예를 도시하는 도면이다. 이 메모리 디바이스에는 도 6의 입출력 배선 구조(40)가 없고, 입출력 단자가 하위에서부터 각 셀당 2 비트 데이터가 할당된 채 그대로 되어 있다. 그 이외의 데이터 영역(8) 또는 예비 영역(9)은 도 6과 동일하다. 따라서, 이 경우도, 입출력 단자(열) 방향으로 제1 및 제2 데이터군으로 분리될 필요가 있다.
메모리 디바이스(3) 내에 입출력 배선 구조(40)가 없기 때문에, 메모리 제어기(2)의 데이터 출력 수단(30)에서는 제1 데이터 버스(5)의 하위의 제1 데이터군 (DB0∼3)과 상위의 제2 데이터군(DB4∼7)을 인터리브하여, 제1 및 제2 데이터군에서부터 1비트씩 데이터가 교대로 배치되도록 데이터를 제2 데이터 버스(6)에 출력한다. 즉, 도 6의 입출력 배선 구조(40)의 기능을 데이터 출력 수단(30)이 갖고 있다. 그 결과, 각 2 비트 셀(MC)에는 제1 및 제2 데이터군으로부터 1비트씩의 데이터, 즉 총 2 비트 데이터가 각각 기록된다. 또한, 2개의 ECC 회로(20)가 생성하는 제1 및 제2 에러 정정 코드(ECC 코드)도, 마찬가지로 예비 영역(9) 내의 2 비트 셀에 기록된다.
그 이외의 메모리 제어기(2)의 구성은 도 6의 예와 동일하다. 따라서, 제1 데이터 버스(5)의 복수의 데이터가 제1 및 제2 ECC 존으로 분리되어, 각각의 ECC 존의 데이터에 관해서 ECC 회로(20, 22)가 ECC 코드를 생성한다. 그리고, 메모리 제어기(2)의 데이터 출력 수단(30)이 데이터(DB0, DB4, DB1, DB5, DB2, DB6, DB3, DB7)를 메모리 디바이스(3)의 입출력 단자(I/O0∼7)에 공급한다. 그 결과, 4개의 2비트 셀에는 4 세트의 데이터(DB0,DB4; DB1,DB5; DB2,DB6; DB3,DB7)가 각각 기록된다. ECC 코드에 관해서도 동일하다. 더욱이, 독출시에는 반대의 경로로 데이터가독출되고, 메모리 제어기(2)에는 각각의 데이터군에 관해 생성한 ECC 코드가 예비 영역 (9)으로부터 독출한 ECC 코드와 비교되어, 에러 검출 및 에러 정정이 이루어진다.
도 8은 페이지 데이터를 어드레스(행) 단위로 복수의 ECC 존으로 분리하는 경우의 메모리 디바이스와 메모리 제어기의 구성예를 도시하는 도면이다. 이 메모리 디바이스는 도 6 및 7의 경우와 다르게, 8개의 입출력 단자(I/O0∼7)에는 1개의 2비트 셀의 2비트 데이터가 중복되지 않고 출력된다. 즉, 어떤 어드레스에 대하여, 8개의 셀로부터 1비트씩의 데이터가 8개의 입출력 단자(I/O0∼7)에 출력된다. 따라서, 1개의 셀에 속하는 2비트 데이터를 복수의 ECC 존으로 분리하기 위해서는 1페이지의 데이터를 어드레스(행) 단위로 분리할 필요가 있다.
도 8의 메모리 디바이스(3)는[데이터 영역(8)이 어드레스 A0∼7로 8바이트의 데이터라 가정하면] 하위의 어드레스(A0, A1, A2, A3)가 4개의 셀의 1 비트번째의 데이터에 할당되고, 상위의 어드레스(A4, A5, A6, A7)가 동일한 4개의 셀의 2 비트번째의 데이터에 할당된다. 따라서, 이 경우는 1페이지의 데이터를 하위 어드레스(A0∼3)와 상위 어드레스(A4∼7)로 분리하여 각각 ECC 코드를 생성함으로써, 단비트 에러 정정 가능한 ECC 코드로도, 1개의 불량 셀에 따른 2비트 데이터 오류를 정정할 수 있다.
이 경우, 어드레스는 최하위(A0)로부터 증가되기 때문에, 메모리 제어기(2)의 ECC 회로(20)는 제1 데이터 버스(5)로부터 공급되는 8비트의 데이터를 차례로 입력하여, 어드레스(A0∼3)에 속하는 제1 데이터군에 대하여 제1 ECC 코드를 생성하고, 또한, 어드레스(A4∼7)에 속하는 제2 데이터군에 대하여 제2 ECC 코드를 생성한다. 그리고, 어드레스(A0∼A7)의 데이터를 데이터 영역(8)에 기록한 후에, 제1 및 제2 ECC 코드를 순서대로 예비 영역(9)에 기록한다.
따라서, 메모리 제어기(2)의 ECC 회로(20)는 제1 및 제2 ECC 존에 대하여 공통으로 설치할 수 있다. 단, 도시하지 않은 ECC 유지 회로가 필요하게 된다. 또한, 메모리 제어기(2) 내의 데이터 출력 회로(30)도, 제1 데이터 버스(5)의 8비트의 데이터를 그대로 제2 데이터 버스(6)에 출력하여, 메모리 디바이스(3)의 8비트의 입출력 단자(I/O0∼7)에 공급한다.
도 9는 페이지 데이터를 어드레스(행) 단위로 복수의 ECC 존으로 분리하는 경우의 별도의 메모리 디바이스와 메모리 제어기의 구성예를 도시하는 도면이다. 이 예에 있어서도, 메모리 디바이스(3)에 있어서, 8개의 입출력 단자(I/O0∼7)에는 1개의 셀의 2비트 데이터가 중복되지 않고 출력된다. 즉, 어떤 어드레스에 대하여, 8개의 셀로부터 1비트씩의 데이터가 8개의 입출력 단자(I/O0∼7)에 출력된다. 따라서, 1개의 셀에 속하는 2비트 데이터를 복수의 ECC 존으로 분리하기 위해서는 1페이지의 데이터를 어드레스(행) 단위로 분리할 필요가 있다.
구체적으로, 메모리 디바이스(3)는[데이터 영역(8)이 어드레스 A0∼7로 8 바이트의 데이터라 가정하면] 짝수의 어드레스(A0, A2, A4, A6)가 4개의 셀의 1비트번째의 데이터에 할당되고, 홀수의 어드레스(A1, A3, A5, A7)가 동일한 4개의 셀의 2 비트번째의 데이터에 할당된다. 따라서, 이 경우, 1페이지의 데이터는 홀수 어드레스와 짝수 어드레스로 분리하여 각각 ECC 코드를 생성함으로써, 단비트 에러 정정이 가능한 ECC 코드로도, 1개의 불량셀에 따른 2비트 데이터 오류를 정정할 수 있다.
이러한 메모리 디바이스의 경우, 메모리 제어기(2)는 제1 데이터 버스(5)의 8비트 데이터(DB0∼8)를 각각 순서대로 제1 및 제2 ECC 회로에 공급하는 데이터 입력 수단(32)과, 제1 및 제2 ECC 회로를 경유하는 8비트 데이터와 ECC 코드를 제2 데이터 버스(6)에 출력하는 데이터 출력 수단(30)을 갖는다. 또한, ECC 회로는 공통으로 이용되는 것이 아니라, 제1 및 제2 데이터군에 대응하여 설치된다.
도 10은 멀티레벨 셀 메모리에의 기록 동작을 설명하는 도면이다. 기록 동작은 다음과 같다. 맨 처음에, 호스트(1)는 멀티레벨 셀 메모리(3)에 데이터를 기록하기 위해, 멀티레벨 셀 메모리(3)의 기록 행선 어드레스(write destination address)(페이지 어드레스)와, 멀티레벨 셀 메모리(3)에 기록하는 데이터를 제1 데이터 버스(5)를 경유하여 메모리 제어기(2)에 공급한다(S1). 다음에, 메모리 제어기(2)는 호스트(1)로부터 공급된 멀티레벨 셀 메모리(3)의 기록 행선 어드레스(페이지 어드레스)와, 멀티레벨 셀 메모리(3)에 기록하는 데이터를 제2 데이터 버스 (6)를 경유하여 멀티레벨 셀 메모리(3)에 공급한다. 또, 그 데이터의 에러 검출 및 정정을 그 데이터의 독출시에 행할 수 있도록 하기 위해서, ECC 회로(4)가 그 데이터에 따라서 ECC 코드를 생성하고, 제2 데이터 버스(6)를 경유하여 멀티레벨 셀 메모리(3)에 공급한다(S2). 다음에, 멀티레벨 셀 메모리(3)는 메모리 제어기(2)로부터 공급된 기록 행선 어드레스에 대응하는 페이지의 데이터 영역(8)에 마찬가지로 메모리 제어기(2)로부터 공급된 데이터를 멀티레벨 셀 메모리(3)에 기록하고, 그후, 용장 데이터 영역(9)에 그 데이터를 바탕으로 생성된 ECC 코드를 기록한다 (S3).
상기 기록 데이터와 ECC 데이터의 멀티레벨 셀 메모리(3)에의 공급은 시스템 클록에 동기하여 이루어지고, 클록에 동기하여 멀티레벨 셀 메모리(3) 내에서 증가되는 어드레스에 대응하는 페이지 버퍼 내에 이들의 기록 데이터 및 ECC 데이터가 저장된다.
도 11은 멀티레벨 셀 메모리로부터의 독출 동작을 설명하는 도면이다. 독출 동작은 다음과 같다. 호스트(1)는 멀티레벨 셀 메모리(3)로부터 데이터를 독출하기 위해서, 멀티레벨 셀 메모리(3)의 독출원의 어드레스(페이지 어드레스)를 제1 데이터 버스(5)를 경유하여 메모리 제어기(2)에 공급한다(S11). 다음에, 메모리 제어기 (2)는 호스트(1)로부터 공급된 멀티레벨 셀 메모리(3)의 독출원의 어드레스를 제2 데이터 버스(6)를 경유하여 멀티레벨 셀 메모리(3)에 공급한다(S12).
다음에, 멀티레벨 셀 메모리(3)는 메모리 제어기(2)로부터 공급된 어드레스에 대응하는 페이지의 데이터 영역(8)으로부터 데이터를, 용장 데이터 영역(9)으로부터 ECC 코드를 각각 차례로 독출하고, 제2 데이터 버스(6)를 경유하여 메모리 제어기(2)에 공급한다(S13).
메모리 제어기(2)는 멀티레벨 셀 메모리(3)로부터 공급된 독출 데이터와 ECC 코드를 에러 검출 및 정정을 위해 ECC 회로(4)에 공급한다(S14). 또한, 독출 데이터를 제1 데이터 버스(5)를 경유하여 호스트(1)에 공급한다(S15).
ECC 회로(4)는 메모리 제어기(2)로부터 공급된 독출 데이터와 ECC 코드를 토대로 에러 검출 및 정정을 실행하여, 그 결과를 에러 통지 수단(7)을 사용하여 호스트에 통지한다(S16). 그리고, 에러를 검출하고, 또한 에러 정정이 가능한 경우는 정정하여야 할 데이터 비트의 위치를 메모리 제어기(2)에 제1 데이터 버스(5)를 경유하여 통지한다.
또는, ECC 회로(4)는 내부에 1페이지 분량의 데이터 버퍼를 갖고 있는 경우는 1페이지 분량의 데이터를 일단 데이터 버퍼에 저장하고, 그 데이터와 ECC 코드로부터 정정하여야 할 데이터 비트의 위치를 검출하여, 데이터 정정을 한다. 그리고, 그 정정후의 데이터를 제1 데이터 버스(5)를 경유하여 호스트(1)에 공급한다. 이 경우는 에러 통지는 필요없다.
다음에, 입출력 단자(열) 단위의 분할의 예와 어드레스(행) 단위의 분할의 예를 구체적인 ECC 방식도 포함시켜 상세히 설명한다.
[입출력 단자(열) 단위의 분할의 예]
도 12는 입출력 단자(열) 단위로 분할한 예를 도시하는 도면이다. 이 예는 도 12의 상단에 나타내는 바와 같이, 멀티레벨 셀 메모리의 각 페이지의 데이터 영역(8)이 512 워드의 용량을 갖고, 그것이 열(0-3, 4-7, 8-11, 12-15)의 4개의 존(Z0∼Z3)으로 분할되어 있다. 더욱이, 도 12의 중단에 나타내는 바와 같이, 각 존의 4 x 512 비트의 데이터에 각각 비트 번호를 할당한다. 이 비트 번호는 2진수 표현으로 행 번호(9비트)와 열 번호(2비트)의 조합으로 이루어진다.
본 예의 ECC 코드는 1비트 에러를 정정할 수 있으며, 비트 번호의 각 자릿수에서 「0」과 「1」을 갖는 1쌍의 데이터군으로 나눠, 각각의 데이터군에 속하는모든 비트의 패리티로 이루어진다. 즉, 도 12의 하단에 도시한 바와 같이, ECC 코드 (lp00, lp01)의 쌍은 비트 번호 중 행 번호를 나타내는 비트 번호의 최하위 비트가 「0」이 되는 데이터군의 패리티(lp00)(lp : 라인 패리티)와, 최하위 비트가 「1」이 되는 데이터군의 패리티(lp01)를 갖는다. 또한, 다음의 ECC 코드(lp02, lp03)의 쌍은 행 번호를 나타내는 비트 번호의 최하위로부터 2 비트번째가 「0」이 되는 데이터군의 패리티(lp02)와, 「1」이 되는 데이터군의 패리티(lp03)를 갖는다. 같은 식으로, ECC 코드는 행 번호를 나타내는 비트 번호의 각 자릿수에 관해서 1쌍의 패리티로 이루어진다.
동일한 방식으로, ECC 코드는 열 번호를 나타내는 2자릿수의 비트 번호에 관해서도, 「0」이 되는 데이터군의 패리티와 「1」이 되는 데이터군의 패리티로 이루어지는 2쌍의 ECC 코드(cp01∼cp03)(cp : 칼럼 패리티)를 갖는다. 하나의 ECC 존의 데이터에 관해서, 비트 번호가 11자릿수로 이루어지기 때문에, 각 자릿수에서 1쌍의 패리티로 이루어지는 ECC 코드를 생성하면, 합계 22비트의 ECC 코드가 된다.
이 ECC 코드 방식은 ECC 존 내의 512 x 4비트의 데이터를 11가지의 분할 방법으로 2분할하여, 각각의 분할된 데이터의 모든 비트의 패리티를 생성한다. 따라서, ECC 코드의 생성 회로는 공급되는 데이터의 「1」 또는 「0」의 수를 카운트하여, 합계가 짝수인지 홀수인지에 따라 ECC 코드를 「1」 또는 「0」으로 한다. 즉, ECC 코드 생성 회로는 예컨대 공급되는 데이터에 따라서 반전되는 22개의 플립플롭 회로에 의해 실현된다. 22개의 플립플롭 회로에는 비트 번호에 따라서 공급되는 데이터가 분배된다. 그리고, 그 구성은 홀수 패리티를 채용하는지 짝수 패리티를 채용하는지에 따라 다르다.
도 13은 ECC 코드를 예비 영역에 저장하는 것을 설명하는 도면이다. 메모리 디바이스의 예비 영역은 불량 셀로 치환되는 셀과 ECC 코드가 저장되는 셀을 갖고, 16 워드의 용량을 갖는다. 페이지 내의 데이터가 열 방향으로 4분할됨에 따라, 예비 영역(9)도 열 방향으로 4개의 존(Z0∼Z3)으로 분할된다. 그리고, 각 존에 대응하여 생성된 ECC 코드가 예비 영역(9)의 각 존 내에 저장된다.
도 14는 도 12, 13의 예에 적용되는 메모리 제어기 내의 ECC 회로를 나타낸 도면이다. 이 예는 도 6에 대응하는 ECC 회로이다. 도 12 및 13의 예에서는 각 페이지가 512 바이트의 데이터로 구성됨에 따라, 제1 데이터 버스(5)와 제2 데이터 버스(6)는 16비트 구성이 된다. 또, 16비트가 4개의 존으로 분할됨으로써, ECC 회로도 4개의 존에 대응한 4열 구성이 된다.
도 12에서 설명한 대로, 호스트(1)로부터 제1 데이터 버스(5)를 경유하여 공급된 각 바이트 데이터는 4비트씩 분할되어, 대응하는 ECC 코드 생성 회로(20A ∼26A)에 각각 공급된다. 또 동시에, 각 바이트 데이터는 데이터 출력 수단(30)을 통해 제2 데이터 버스(6)를 경유하여 메모리 디바이스에 공급된다. 각 ECC 코드 생성 회로(20A∼26A)는 공급되는 데이터를 카운트하여, 전술한 패리티 코드를 생성한다.
메모리 제어기 내에는 ECC 제어 회로(50)가 설치되어, 시스템 클록(CLK)에 동기한 내부 클록(CLK)을 생성하고, 이 클록(CLK)에 동기하여 공급되는 데이터를 메모리 디바이스 측으로 전송하는 동시에, ECC 코드 생성 회로가 데이터의 카운트동작을 한다.
그리고, 512 바이트의 데이터가 공급된 시점에서, ECC 생성 회로(20A∼26A)는 각 존의 ECC 코드의 생성을 종료한다. 따라서, 데이터에 이어, ECC 코드가 데이터 출력 수단(30)으로부터 제2 데이터 버스(6)를 경유하여 메모리 디바이스에 공급된다. 각 존마다 생성한 ECC 코드는 각 존에 분할한 데이터와 같은 식으로 제2 데이터 버스(6)로부터 출력되기 때문에, 도 13에서 설명한 바와 같이, 메모리 디바이스 내의 예비 영역의 각 존에 그 ECC 코드가 저장된다.
독출 동작시에는 메모리 디바이스 내의 데이터 영역에서 512 바이트의 데이터가 독출되어, 제2 데이터 버스로부터 메모리 제어기에 공급된다. 6 비트의 독출 데이터는 데이터 출력 수단(30)에 의해 역방향으로 전송되고, 14개의 존으로 분할되어, 각각에 대응하는 ECC 코드 생성 회로(20A∼26A)에 공급된다. 그와 동시에, 독출 데이터는 제1 데이터 버스(5)를 경유하여 호스트(1)에 공급된다.
512 바이트의 데이터의 독출이 종료되면, 각 ECC 코드 생성 회로(20A∼26A)에서도 대응하는 ECC 코드의 생성이 종료된다. 만일 독출 데이터에 각 ECC 존에서 기껏해야 1비트의 에러가 발생하면, 독출시에 생성된 ECC 코드는 기록시에 저장한 ECC 코드와 다르다. 따라서, 그것을 검출하여 오류 비트를 검출하기 위해서, 계속하여 독출되는 ECC 코드와 새롭게 생성된 ECC 코드의 비교가 에러 검출 및 정정 회로(20B∼26B)에서 행해진다.
각 에러 검출 및 정정 회로는 11쌍의 패리티가 일치하는지의 여부를 검출하기 위해서, 22개의 배타적 논리합 회로를 갖는다. 그리고, 메모리 디바이스의 예비영역에서 독출되는 ECC 코드와 독출시에 새롭게 생성된 ECC 코드의 비교, 즉 11쌍의 패리티의 비교가 이루어진다. 본 예의 패리티쌍을 이용한 ECC 코드 방식에는 배타적 논리합 연산 결과에 의해, 다음과 같이 에러 검출이 이루어진다.
첫째로, ECC 코드(lp00∼lp17, cp00∼cp03)의 모두가 일치하여, 배타적 논리합 결과가 모두 「0」인 경우는 데이터가 정상이고 오류 정정이 불필요하게 된다. 둘째로, ECC 코드(lp00∼lp17, cp00∼cp03)의 모든 쌍에서 한쪽이 「0」이고 다른 쪽이 「1」(불일치)일 때는 1비트 에러가 발생하고, 오류 정정이 가능한 에러의 발생이 된다. 셋째로, ECC 코드(lp00∼lp17, cp00∼cp03) 중 하나만 「1」(불일치)일 때에는 데이터는 정상이지만, ECC 코드에 에러가 발생했음을 의미하며, 데이터의 오류 정정은 불필요하게 된다. 넷째로, 상기 이외의 배타적 논리합 결과의 경우는 정정 불가능한 에러의 발생이 된다.
상기 둘째의 경우는, 불일치가 발생한 11개의 데이터군으로부터 에러 데이터를 특정할 수 있다. 즉, 홀수 패리티의 경우에 정정하여야 할 비트 번호는 22개의 배타적 논리합 연산 결과 중 홀수번째의 ECC 코드(lp17, lp15, lp13, lp11, lp09, lp07, lp05, lp03, lp01, cp03, cp01)의 EOR 데이터가 된다. 또, 짝수 패리티의 경우에 정정해야 할 비트 번호는 짝수번째의 ECC 코드에 대한 EOR 데이터가 된다.
따라서, 에러 검출 및 정정 회로는 독출한 ECC 코드와 독출 데이터를 토대로 생성한 ECC 코드와의 배타적 논리합의 결과를 오류가 발생한 데이터의 비트 번호로서 호스트(1)에 통지하면 된다.
상기 에러 정정 코드에 의한 N비트 에러 정정은 메모리 디바이스의 신뢰성이높고, 기껏해야 1개의 N 레벨 셀이 에러가 된 경우의 에러 정정을 하는 것을 전제로 하고 있다. 복수개의 N 레벨 셀이 에러가 되는 경우의 정정에는 대응할 수 없다.
[어드레스(행) 단위의 분할의 예]
도 15는 어드레스(행) 단위로 분할한 예를 도시하는 도면이다. 이 예는 도 15의 상단에 나타내는 바와 같이, 멀티레벨 셀 메모리의 각 페이지의 데이터 영역(8)이 512 워드의 용량을 갖고, 그것이 어드레스(0-127, 128-255, 256-383, 384-511)의 4개의 존(Z0∼Z3)으로 분할된다. 그리고, 도 15의 하단에 나타내는 바와 같이, 각 존의 16 x 128비트의 데이터에 대하여 각각 비트 번호를 할당한다. 이 비트 번호는 2진수 표현으로 행 번호(7비트)와 열 번호(4비트)의 조합으로 이루어진다.
도 15의 하단에는 존(Z3)의 데이터에 대하여 비트 번호가 할당되어 있다. 즉, 행 번호는 0-127, 열 번호는 0-15이며, 각 비트 번호는 11비트로 표현된다.
도 16은 상기 존마다 생성되는 ECC 코드의 예를 도시하는 도면이다. 이 예의 ECC 코드도 비트수는 적지만 존 내에서 단비트 에러를 정정할 수 있는 방식이며, 도 15에서 존 내의 데이터에 할당한 비트번호의 각 자릿수에 관해서, 「0」의 데이터군과 「1」의 데이터군으로 나눠 각각의 데이터군의 패리티 비트를 이용한다. 따라서, 도 16에 나타내는 바와 같이, 1쌍의 ECC 코드(lp00, lp01)는 행 번호의 최하위 비트가 「0」인 데이터군의 패리티 비트와, 동 비트가 「1」인 데이터군의 패리티 비트로 구성된다. 다른 ECC 코드도 마찬가지이며, 전부 11쌍의 패리티 비트로구성된다.
도 17은 생성한 ECC 코드의 저장을 설명하는 도면이다. N 레벨 셀 메모리의 각 페이지에 할당되어 있는 16워드의 예비 영역(9)을 어드레스(행)로 4분할하여, 어드레스(0-3)의 예비 영역에 존(Z0)의 ECC 코드를 저장하고, 어드레스(4-7)의 예비 영역에 존(Z1)의 ECC 코드를 저장하고, 어드레스(8-11)의 예비 영역에 존(Z2)의 ECC 코드를 저장하고, 어드레스(12-15)의 예비 영역에 존(Z3)의 ECC 코드를 저장한다.
도 18은 도 15∼17의 예에 적용되는 메모리 제어기 내의 ECC 회로를 나타낸 도면이다. 이 예는 도 8에 도시한 메모리 제어기에 대응한다. 입출력 단자(열) 방향으로 분할한 경우의 도 14의 ECC 회로와 다르게, 도 18에서는 ECC 코드 생성 회로(20A)와 에러 검출 및 정정 회로(22A)로 이루어지는 ECC 회로가 1세트만 설치된다. 그리고, 3개의 ECC 존의 ECC 코드를 유지하기 위한 ECC 코드 유지 수단(54, 56, 58)과 그 셀렉터 회로(52)가 설치된다.
상기 예에서는, 페이지 내의 512 워드의 데이터가 하위 어드레스(0-127)와, 그 상위 어드레스(128-255, 256-382, 383-511)의 4개의 존으로 분리된다. 한편, 호스트 (1)로부터 기록 대상의 페이지 어드레스가 공급되면, 메모리 디바이스에서는 시스템 클록(CLK)에 동기하여 페이지 내의 내부 어드레스(ADD)를 증가한다. 따라서, 처음에는 하위 어드레스(0-127)의 16비트의 데이터가 호스트(1)로부터 순차적으로 제1 데이터 버스(5)에 출력되고, 출력 제어 회로(30)로부터 제2 데이터 버스(6)를 경유하여 메모리 디바이스에 전송되는 동시에, 그 하위 어드레스의 데이터가 순서대로 ECC 코드 생성 회로(20A)에 공급된다.
ECC 코드 생성 회로(20A)는 예컨대 22개의 플립플롭 회로로 구성되어, 어드레스(ADD)에 따라서 데이터가 플립플롭 회로에 분배된다. 따라서, 하위 어드레스 (0-127)에 속하는 512 워드의 데이터가 호스트(1)로부터 메모리 디바이스(3)에 전송 종료한 시점에서, 그 존(Z0)의 ECC 코드의 생성도 종료하여, 셀렉터(52)를 통해 ECC 코드 유지 수단(54)에 일시적으로 저장된다.
다음 어드레스(128-255)의 데이터도 마찬가지로 호스트(1)로부터 메모리 디바이스(3)에 워드 단위로 순차 전송되는 동시에, ECC 코드 생성 회로(20A)에 공급되어, 존(Z1)의 ECC 코드가 생성된다. 생성후에 ECC 코드는 ECC 코드 유지 수단 (56)에 일시적으로 저장된다. 존(Z2, Z3)의 데이터도 같은 식으로 메모리 디바이스 (3)에 제2 데이터 버스(6)를 경유하여 전송되어, 각각의 ECC 코드가 생성된다.
그리고, 모든 데이터가 메모리 디바이스(3)에 전송 종료된 시점에서, 존(Z0, Z1, Z2)의 ECC 코드가 유지 수단(54, 56, 58)에 각각 유지되어, ECC 코드 생성 회로(20A)가 존(Z3)의 ECC 코드의 생성을 종료한다. 그래서, 데이터에 이어 4개의 존의 ECC 코드가 예비 영역 내의 어드레스(0-3, 4-7, 8-11, 12-15)에 저장된다.
다음에, 메모리 디바이스로부터의 독출시에는 호스트(1)로부터 지정된 페이지의 데이터가 시스템 클록(CLK)에 동기하여 증가되는 내부 어드레스(ADD)에 따라서, 순차 독출되어, ECC 코드 생성 회로(20A)에 공급되는 동시에, 호스트(1)측에도 전송된다. 어드레스가 증가됨에 따라, 존(Z0, Z1, Z2)의 ECC 코드가 순차 생성되어, ECC 코드 유지 수단(54, 56, 58)에 각각 저장된다. 그리고, 존(Z3)의 ECC 코드가 생성 회로(20A)에서 생성된 후에, 메모리 디바이스의 예비 영역에서부터 미리 생성하여 저장해 둔 ECC 코드가 순차로 독출되어 에러 검출 및 정정 회로(22A)에 공급된다.
에러 검출 및 정정 회로(22A)는 11쌍의 ECC 코드에 대응하여 22개의 배타적 논리합 회로를 갖고, 각 존의 독출시에 생성한 ECC 코드와 메모리 디바이스의 예비 영역으로부터 독출한 ECC 코드가 일치하는지 여부를 점검한다.
이 예의 ECC 코드는 전술한 예와 같으며, 에러 검출 방법과 1비트 에러 발생시의 정정 비트의 어드레스 생성 방법도 동일하다. 에러 검출 및 정정 회로(22A)도 어드레스의 증가에 따라서 존(Z0, Z1, Z2, Z3)의 순서로 ECC 코드의 비교를 실행한다.
상기 예에서는 512 바이트의 데이터를 4개의 ECC 존으로 분리하고, 각각의 에러 정정 코드를 생성하여 메모리에 저장했다. 그러나, N 레벨 셀 메모리의 1개의 N 레벨 셀이 2비트 데이터를 저장하는 경우, 데이터는 2개의 ECC 존으로 분리하는 것만으로도 좋다. 즉, 데이터를 N 이상으로 분리하여, 각각의 ECC 코드를 생성하면 된다.
이상, 실시예를 정리하면 다음과 같다.
(부기 1) 호스트와 N(N=2n, n은 2 이상의 정수)레벨 셀 메모리 사이에 각각 복수 비트의 데이터 버스를 통해 접속된 메모리 제어기에 있어서,
상기 호스트에 접속되는 제1 데이터 버스의 제1 내지 제M(M은 n 이상)의 데이터군을 각각 병렬로 입력하여, 상기 제1 내지 제M의 데이터군에 대하여, 단비트 불량을 정정할 수 있는 제1 내지 제M의 에러 정정 코드를 각각 생성하는 제1 내지 제M의 ECC 회로와,
하나의 N 레벨 셀에 속하는 n비트 데이터가 중복되지 않고서 제1 내지 제M의 데이터군으로 분리되도록, 상기 데이터군을 상기 N 레벨 셀 메모리의 데이터 입출력 단자에 접속되는 제2 데이터 버스에 출력하는 데이터 출력 수단을 구비하고,
상기 데이터 출력 수단은 또한 상기 ECC 회로가 생성한 각각의 에러 정정 코드를 상기 제2 데이터 버스에 출력하는 것을 특징으로 하는 멀티레벨 셀 메모리용 메모리 제어기.
(부기 2) 부기 1에 있어서,
상기 N 레벨 셀 메모리의 데이터 입출력 단자는 하위에서부터 차례로 제1, 제2 … 제M의 데이터군으로 분할되고,
상기 데이터 출력 수단은 제2 데이터 버스에 대하여, 하위에서부터 차례로 제1, 제2 … 제M의 데이터군이 할당되도록 데이터를 출력하는 것을 특징으로 하는 멀티레벨 셀 메모리용 메모리 제어기.
(부기 3) 부기 2에 있어서,
상기 제1 데이터 버스의 데이터는 하위에서부터 차례로 제1, 제2 … 제M의 데이터군으로 분할되어 제1 내지 제M의 ECC 회로에 입력되는 것을 특징으로 하는 멀티레벨 셀 메모리용 메모리 제어기.
(부기 4) 부기 1에 있어서,
상기 N 레벨 셀 메모리의 데이터 입출력 단자는 하위에서부터 차례로 N 레벨 셀에 속하는 데이터군으로 분할되고,
상기 데이터 출력 수단은 제2 데이터 버스에 대하여, 하위에서부터 차례로 제1, 제2 … 제M의 데이터군의 데이터가 주기적으로 반복되도록 데이터를 출력하는 것을 특징으로 하는 멀티레벨 셀 메모리용 메모리 제어기.
(부기 5) 부기 1에 있어서,
상기 N 레벨 셀 메모리로부터 데이터를 독출하는 경우, 상기 제1 내지 제M의 ECC 회로는 상기 제2 데이터 버스의 제1 내지 제M의 데이터군 및 제1 내지 제M의 에러 정정 코드를 입력하여, 상기 제1 내지 제M의 ECC 회로가 제1 내지 제M의 데이터군 내의 1비트 에러 정정을 실행하는 것을 특징으로 하는 멀티레벨 셀 메모리용 메모리 제어기.
(부기 6) 부기 5에 있어서,
상기 호스트와 N 레벨 셀 메모리 사이에서, 제1 데이터 버스, 제1 내지 제M의 ECC 회로, 데이터 출력 수단 및 제2 데이터 버스의 경로를 통하여 상기 N 레벨 셀 메모리로 데이터 및 ECC 코드가 기록되고, 상기 경로의 반대의 경로로 데이터가 독출되는 것을 특징으로 하는 멀티레벨 셀 메모리용 메모리 제어기.
(부기 7) 부기 1에 있어서,
상기 멀티레벨 셀 메모리에 기록시, 클록에 동기하여, 상기 제1 데이터 버스로부터 데이터가 공급되고, 상기 데이터 출력 수단이 상기 데이터를 상기 제2 데이터 버스에 출력하는 동시에, 상기 ECC 회로가 각 데이터군의 에러 정정 코드를 생성하고,
클록에 동기하여, 1페이지 분량의 데이터를 상기 제2 데이터 버스에 출력한 후, 상기 데이터 출력 수단이 상기 에러 정정 코드를 상기 제2 데이터 버스에 출력하는 것을 특징으로 하는 멀티레벨 셀 메모리용 메모리 제어기.
(부기 8) 부기 1에 있어서,
상기 멀티레벨 셀 메모리로부터의 독출시, 클록에 동기하여, 상기 제2 데이터 버스로부터 데이터가 공급되어, 상기 ECC 회로가 각 데이터군의 에러 정정 코드를 생성하고,
클록에 동기하여, 1페이지 분량의 데이터가 공급된 후, 상기 제2 데이터 버스로부터 에러 정정 코드가 공급되어, 상기 ECC 회로가 상기 생성한 에러 정정 코드와 상기 공급된 에러 정정 코드를 비교하여 에러 검출 및 정정을 실행하는 것을 특징으로 하는 멀티레벨 셀 메모리용 메모리 제어기.
(부기 9) 부기 1 내지 8 중 어느 하나에 있어서,
상기 에러 정정 코드는 각 데이터군에 할당된 비트 번호의 각 자릿수가 「0」인 제1 그룹과 「1」인 제2 그룹 각각의 패리티 비트를 갖는 것을 특징으로 하는 멀티레벨 셀 메모리용 메모리 제어기.
(부기 10) 부기 9에 있어서,
상기 ECC 회로는 에러 검출 및 정정시에 있어서, 모든 비트 번호의 자릿수에 서 1쌍의 패리티 비트의 한쪽이 일치하고, 다른 쪽이 불일치인 경우에, 1비트 에러의 발생을 검출하는 것을 특징으로 하는 멀티레벨 셀 메모리용 메모리 제어기.
(부기 11) 부기 10에 있어서,
상기 ECC 회로는 에러 검출 및 정정시에 있어서, 상기 메모리로부터 공급되는 공급 에러 정정 코드와 상기 메모리로부터 공급되는 데이터에 관해서 생성한 생성 에러 정정 코드와의 배타적 논리합 연산을 행하여, 모든 비트 번호의 자릿수에 서 1쌍의 패리티 비트의 한쪽이 일치하고, 다른 쪽이 불일치인 경우에, 상기 홀수 비트 번호 또는 짝수 비트 번호의 배타적 논리합 연산치를 에러 발생 비트 번호로 하는 것을 특징으로 하는 멀티레벨 셀 메모리용 메모리 제어기.
(부기 12) 호스트와 N(N=2n, n은 2 이상의 정수)레벨 셀 메모리 사이에 각각복수 비트의 데이터 버스를 통해 접속된 메모리 제어기에 있어서,
상기 호스트에 접속되는 제1 데이터 버스의 데이터군에 관해서, 어드레스 방향으로 분리된 제1 내지 제M(M은 n 이상)의 데이터군을 순서대로 입력하고, 상기 제1 내지 제M의 데이터군에 대하여 단비트 불량을 정정할 수 있는 제1 내지 제M의 에러 정정 코드를 각각 생성하는 공통의 ECC 회로와,
상기 제1 내지 제(M-1)의 에러 정정 코드를 유지하는 에러 정정 코드 유지 수단과,
하나의 N 레벨 셀에 속하는 n비트 데이터가 중복되지 않고서 제1 내지 제M의 데이터군으로 분리되도록, 상기 데이터를 상기 N 레벨 셀 메모리에 접속되는 제2 데이터 버스에 출력하는 데이터 출력 수단을 구비하고,
상기 데이터 출력 수단은 또한 상기 에러 정정 코드 유지 수단이 유지하는제1 내지 제(M-1)의 에러 정정 코드와 상기 ECC 회로가 생성한 제M의 에러 정정 코드를 상기 제2 데이터 버스에 출력하는 것을 특징으로 하는 멀티레벨 셀 메모리용 메모리 제어기.
(부기 13) 부기 12에 있어서,
상기 멀티레벨 셀 메모리에의 기록시, 클록에 동기하여, 상기 제1 데이터 버스로부터 데이터가 공급되고, 상기 데이터 출력 수단이 상기 데이터를 상기 제2 데이터 버스에 출력하는 동시에, 상기 ECC 회로가 각 데이터군의 에러 정정 코드를 순차 생성하고,
클록에 동기하여, 1페이지 분량의 데이터를 상기 제2 데이터 버스에 출력한 후, 상기 데이터 출력 수단이 상기 에러 정정 코드를 상기 제2 데이터 버스에 출력하는 것을 특징으로 하는 멀티레벨 셀 메모리용 메모리 제어기.
(부기 14) 부기 12에 있어서,
상기 멀티레벨 셀 메모리로부터의 독출시에, 클록에 동기하여, 상기 제2 데이터 버스로부터 데이터가 공급되어, 상기 ECC 회로가 각 데이터군의 에러 정정 코드를 순차 생성하며,
클록에 동기하여, 1페이지 분량의 데이터가 공급된 후, 상기 제2 데이터 버스로부터 에러 정정 코드가 공급되고, 상기 ECC 회로가 상기 생성한 에러 정정 코드와 상기 공급된 에러 정정 코드를 비교하여, 에러 검출 및 정정을 실행하는 것을 특징으로 하는 멀티레벨 셀 메모리용 메모리 제어기.
(부기 15) 부기 12 내지 14 중 어느 것에 있어서,
상기 에러 정정 코드는 각 데이터군에 할당된 비트 번호의 각 자릿수가 「0」인 제1 그룹과 「1」인 제2 그룹 각각의 패리티 비트를 갖는 것을 특징으로 하는 멀티레벨 셀 메모리용 메모리 제어기.
(부기 16) 호스트와 N(N=2n, n은 2 이상의 정수)레벨 셀 메모리 사이에 각각 복수 비트의 데이터 버스를 통해 접속된 메모리 제어기에 있어서,
상기 호스트에 접속되는 제1 데이터 버스의 데이터군에 관해서, 어드레스 방향으로 분리된 제1 내지 제M(M은 n 이상)의 데이터군을 입력하고, 상기 제1 내지 제M의 데이터군에 대하여, 단비트 불량을 정정할 수 있는 제1 내지 제M의 에러 정정 코드를 각각 생성하는 제1 내지 제M의 ECC 회로와,
하나의 N 레벨 셀에 속하는 n비트 데이터가 중복되지 않고서 제1 내지 제M의 데이터군으로 분리되도록, 상기 데이터를 상기 N 레벨 셀 메모리에 접속되는 제2 데이터 버스에 출력하는 데이터 출력 수단을 구비하고,
상기 데이터 출력 수단은 또한 상기 ECC 회로가 생성한 각각의 에러 정정 코드를 상기 제2 데이터 버스에 출력하는 것을 특징으로 하는 멀티레벨 셀 메모리용 메모리 제어기.
(부기 17) 부기 16에 있어서,
상기 멀티레벨 셀 메모리에의 기록시, 클록에 동기하여, 상기 제1 데이터 버스로부터 데이터가 공급되고, 상기 데이터 출력 수단이 상기 데이터를 상기 제2 데이터 버스로 출력하는 동시에, 상기 ECC 회로가 각 데이터군의 에러 정정 코드를생성하고,
클록에 동기하여, 1페이지 분량의 데이터를 상기 제2 데이터 버스에 출력한 후, 상기 데이터 출력 수단이 상기 에러 정정 코드를 상기 제2 데이터 버스에 출력하는 것을 특징으로 하는 멀티레벨 셀 메모리용 메모리 제어기.
(부기 18) 부기 16에 있어서,
상기 멀티레벨 셀 메모리로부터의 독출시, 클록에 동기하여, 상기 제2 데이터 버스로부터 데이터가 공급되고, 상기 ECC 회로가 각 데이터군의 에러 정정 코드를 생성하고,
클록에 동기하여, 1페이지 분량의 데이터가 공급된 후, 상기 제2 데이터 버스로부터 에러 정정 코드가 공급되고, 상기 ECC 회로가 상기 생성한 에러 정정 코드와 상기 공급된 에러 정정 코드를 비교하여 에러 검출 및 정정을 실행하는 것을 특징으로 하는 멀티레벨 셀 메모리용 메모리 제어기.
(부기 19) 부기 16 내지 18 중 어느 것에 있어서,
상기 에러 정정 코드는 각 데이터군에 할당된 비트 번호의 각 자릿수가 「0」인 제1 그룹과 「1」인 제2 그룹 각각의 패리티 비트를 갖는 것을 특징으로 하는 멀티레벨 셀 메모리용 메모리 제어기.
이상, 본 발명에 따르면, 멀티레벨 셀 메모리의 데이터의 에러 정정을 가능하게 하는 ECC 코드를 생성하여, 그 에러 검출·정정을 하는 메모리 제어기를 제공할 수 있다.
또, 본 발명에 따르면, 멀티레벨 셀 메모리의 데이터를 멀티레벨 셀에 속하는 n비트 데이터가 중복되지 않도록 제1 내지 제M(M은 n 이상)의 데이터군으로 분리하여, 이들 제1 내지 제M의 데이터군에 관해서 제1 내지 제M의 에러 정정 코드를 생성하기 때문에, 하나의 멀티레벨 셀에 불량이 발생하여 n비트 에러가 발생하더라도, 각 데이터군의 에러 정정 코드에 의해 각 1비트씩 정정함으로써 n비트 에러를 정정할 수 있다.

Claims (10)

  1. 호스트와 N(N=2n, n은 2 이상의 정수)레벨 셀 메모리의 사이에 각각 복수 비트의 데이터 버스를 통해 접속된 메모리 제어기에 있어서,
    상기 호스트에 접속되는 제1 데이터 버스의 제1 내지 제M(M은 n 이상)의 데이터군을 각각 병렬로 입력하고, 상기 제1 내지 제M의 데이터군에 대하여, 단비트 불량(single-bit defect)을 정정할 수 있는 제1 내지 제M의 에러 정정 코드를 각각 생성하는 제1 내지 제M의 ECC 회로와,
    하나의 N 레벨 셀에 속하는 n비트 데이터가 중복되지 않고서 제1 내지 제M의 데이터군으로 분리되도록, 상기 데이터군을 상기 N 레벨 셀 메모리의 데이터 입출력 단자에 접속되는 제2 데이터 버스에 출력하는 데이터 출력 수단을 구비하고,
    상기 데이터 출력 수단은 또한 상기 ECC 회로가 생성한 각각의 에러 정정 코드를 상기 제2 데이터 버스에 출력하는 것을 특징으로 하는 멀티레벨 셀 메모리용 메모리 제어기.
  2. 제1항에 있어서, 상기 N 레벨 셀 메모리의 데이터 입출력 단자는 하위에서부터 차례로 제1, 제2 … 제M의 데이터군으로 분할되고,
    상기 데이터 출력 수단은 제2 데이터 버스에 대하여, 하위에서부터 차례로 제1, 제2 … 제M의 데이터군이 할당되도록 데이터를 출력하는 것을 특징으로 하는멀티레벨 셀 메모리용 메모리 제어기.
  3. 제2항에 있어서, 상기 제1 데이터 버스의 데이터는 하위에서부터 차례로 제1, 제2 … 제M의 데이터군으로 분할되어 제1 내지 제M의 ECC 회로에 입력되는 것을 특징으로 하는 멀티레벨 셀 메모리용 메모리 제어기.
  4. 제1항에 있어서, 상기 N 레벨 셀 메모리의 데이터 입출력 단자는 하위에서부터 차례로 N 레벨 셀에 속하는 데이터군으로 분할되고,
    상기 데이터 출력 수단은 제2 데이터 버스에 대하여, 하위에서부터 차례로 제1, 제2 … 제M의 데이터군의 데이터가 주기적으로 반복되도록 데이터를 출력하는 것을 특징으로 하는 멀티레벨 셀 메모리용 메모리 제어기.
  5. 제1항에 있어서, 상기 N 레벨 셀 메모리로부터 데이터를 독출하는 경우, 상기 제1 내지 제M의 ECC 회로는 상기 제2 데이터 버스의 제1 내지 제M의 데이터군 및 제1 내지 제M의 에러 정정 코드를 입력하여, 상기 제1 내지 제M의 ECC 회로가 제1 내지 제M의 데이터군 내의 1비트 에러 정정을 하는 것을 특징으로 하는 멀티레벨 셀 메모리용 메모리 제어기.
  6. 제1항에 있어서, 상기 멀티레벨 셀 메모리에의 기록시, 클록에 동기하여, 상기 제1 데이터 버스로부터 데이터가 공급되고, 상기 데이터 출력 수단이 상기 데이터를 상기 제2 데이터 버스에 출력하는 동시에, 상기 ECC 회로가 각 데이터군의 에러 정정 코드를 생성하고,
    클록에 동기하여, 1페이지 분량의 데이터를 상기 제2 데이터 버스에 출력한 후, 상기 데이터 출력 수단이 상기 에러 정정 코드를 상기 제2 데이터 버스에 출력하는 것을 특징으로 하는 멀티레벨 셀 메모리용 메모리 제어기.
  7. 제1항에 있어서, 상기 멀티레벨 셀 메모리로부터의 독출시에, 클록에 동기하여, 상기 제2 데이터 버스로부터 데이터가 공급되어, 상기 ECC 회로가 각 데이터군의 에러 정정 코드를 생성하고,
    클록에 동기하여, 1페이지 분량의 데이터가 공급된 후, 상기 제2 데이터 버스로부터 에러 정정 코드가 공급되고, 상기 ECC 회로가 상기 생성한 에러 정정 코드와 상기 공급된 에러 정정 코드를 비교하여 에러 검출 및 정정을 하는 것을 특징으로 하는 멀티레벨 셀 메모리용 메모리 제어기.
  8. 제1항 내지 제7항 중 어느 한 항에 있어서, 상기 에러 정정 코드는 각 데이터군에 할당된 비트 번호의 각 자릿수가 「0」인 제1 그룹과 「1」인 제2 그룹 각각의 패리티 비트를 갖는 것을 특징으로 하는 멀티레벨 셀 메모리용 메모리 제어기.
  9. 호스트와 N(N=2n, n은 2 이상의 정수)레벨 셀 메모리의 사이에 각각의 복수 비트의 데이터 버스를 통해 접속된 메모리 제어기에 있어서,
    상기 호스트에 접속되는 제1 데이터 버스의 데이터군에 관해서, 어드레스 방향으로 분리된 제1 내지 제M(M은 n 이상)의 데이터군을 순서대로 입력하여, 상기 제1 내지 제M의 데이터군에 대하여 단비트 불량을 정정할 수 있는 제1 내지 제M의 에러 정정 코드를 각각 생성하는 공통의 ECC 회로와,
    상기 제1 내지 제(M-1)의 에러 정정 코드를 유지하는 에러 정정 코드 유지 수단과,
    하나의 N 레벨 셀에 속하는 n비트 데이터가 중복되지 않고서 제1 내지 제M의 데이터군으로 분리되도록, 상기 데이터를 상기 N 레벨 셀 메모리에 접속되는 제2 데이터 버스에 출력하는 데이터 출력 수단을 구비하고,
    상기 데이터 출력 수단은 또한 상기 에러 정정 코드 유지 수단이 유지하는 제1 내지 제(M-1)의 에러 정정 코드와 상기 ECC 회로가 생성한 제M의 에러 정정 코드를 상기 제2 데이터 버스에 출력하는 것을 특징으로 하는 멀티레벨 셀 메모리용 메모리 제어기.
  10. 호스트와 N(N=2n, n은 2 이상의 정수)레벨 셀 메모리의 사이에 각각 복수 비트의 데이터 버스를 통해 접속된 메모리 제어기에 있어서,
    상기 호스트에 접속되는 제1 데이터 버스의 데이터군에 관해서, 어드레스 방향으로 분리된 제1 내지 제M(M은 n 이상)의 데이터군을 각각 입력하여, 상기 제1 내지 제M의 데이터군에 대하여 단비트 불량을 정정할 수 있는 제1 내지 제M의 에러 정정 코드를 각각 생성하는 제1 내지 제M의 ECC 회로와,
    하나의 N 레벨 셀에 속하는 n비트 데이터가 중복되지 않고서 제1 내지 제M의 데이터군으로 분리되도록, 상기 데이터를 상기 N 레벨 셀 메모리에 접속되는 제2 데이터 버스에 출력하는 데이터 출력 수단을 구비하고,
    상기 데이터 출력 수단은 또한 상기 ECC 회로가 생성한 각각의 에러 정정 코드를 상기 제2 데이터 버스에 출력하는 것을 특징으로 하는 멀티레벨 셀 메모리용 메모리 제어기.
KR1020020021125A 2001-08-23 2002-04-18 멀티레벨 셀 메모리용 메모리 제어기 KR100873656B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2001252400A JP4437519B2 (ja) 2001-08-23 2001-08-23 多値セルメモリ用のメモリコントローラ
JPJP-P-2001-00252400 2001-08-23

Publications (2)

Publication Number Publication Date
KR20030017310A true KR20030017310A (ko) 2003-03-03
KR100873656B1 KR100873656B1 (ko) 2008-12-12

Family

ID=19080883

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020020021125A KR100873656B1 (ko) 2001-08-23 2002-04-18 멀티레벨 셀 메모리용 메모리 제어기

Country Status (5)

Country Link
US (1) US7096406B2 (ko)
EP (1) EP1286359B1 (ko)
JP (1) JP4437519B2 (ko)
KR (1) KR100873656B1 (ko)
DE (1) DE60217591T2 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7412575B2 (en) 2004-11-03 2008-08-12 Samsung Electronics Co., Ltd. Data management technique for improving data reliability
US8612841B2 (en) 2010-12-06 2013-12-17 Hynix Semiconductor Inc. Error code pattern generation circuit and semiconductor memory device including the same

Families Citing this family (142)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6857099B1 (en) * 1996-09-18 2005-02-15 Nippon Steel Corporation Multilevel semiconductor memory, write/read method thereto/therefrom and storage medium storing write/read program
ITMI20022669A1 (it) * 2002-12-18 2004-06-19 Simicroelectronics S R L Struttura e metodo di rilevamento errori in un dispositivo
JP4550439B2 (ja) * 2003-02-28 2010-09-22 東芝メモリシステムズ株式会社 Ecc制御装置
JP4400081B2 (ja) * 2003-04-08 2010-01-20 エルピーダメモリ株式会社 半導体記憶装置
US7372731B2 (en) * 2003-06-17 2008-05-13 Sandisk Il Ltd. Flash memories with adaptive reference voltages
JP4346975B2 (ja) * 2003-06-27 2009-10-21 株式会社ルネサステクノロジ 連想メモリ機能付き集積回路及び侵入検知装置
KR100546348B1 (ko) 2003-07-23 2006-01-26 삼성전자주식회사 플래시 메모리 시스템 및 그 데이터 저장 방법
JP4270994B2 (ja) * 2003-09-29 2009-06-03 株式会社東芝 不揮発性半導体記憶装置
US7409623B2 (en) * 2004-11-04 2008-08-05 Sigmatel, Inc. System and method of reading non-volatile computer memory
US7493457B2 (en) * 2004-11-08 2009-02-17 Sandisk Il. Ltd States encoding in multi-bit flash cells for optimizing error rate
US20060218467A1 (en) * 2005-03-24 2006-09-28 Sibigtroth James M Memory having a portion that can be switched between use as data and use as error correction code (ECC)
US7307902B2 (en) * 2005-08-30 2007-12-11 Hewlett-Packard Development Company, L.P. Memory correction system and method
US7681109B2 (en) * 2005-10-13 2010-03-16 Ramot At Tel Aviv University Ltd. Method of error correction in MBC flash memory
US7774684B2 (en) * 2006-06-30 2010-08-10 Intel Corporation Reliability, availability, and serviceability in a memory device
US7369434B2 (en) * 2006-08-14 2008-05-06 Micron Technology, Inc. Flash memory with multi-bit read
JP2008077810A (ja) * 2006-09-25 2008-04-03 Toshiba Corp 不揮発性半導体記憶装置
KR100845526B1 (ko) * 2006-10-19 2008-07-10 삼성전자주식회사 플래시 메모리를 포함한 메모리 시스템 및 그것의 프로그램방법
KR100766042B1 (ko) * 2006-12-06 2007-10-12 삼성전자주식회사 연접 부호화를 이용한 멀티 레벨 셀 메모리 장치
KR100822030B1 (ko) * 2006-12-26 2008-04-15 삼성전자주식회사 고 부호화율 부호를 이용한 멀티 레벨 셀 메모리 장치
KR100845529B1 (ko) * 2007-01-03 2008-07-10 삼성전자주식회사 플래시 메모리 장치의 이씨씨 제어기 및 그것을 포함한메모리 시스템
KR100799688B1 (ko) * 2007-01-03 2008-02-01 삼성전자주식회사 백업 회로를 갖는 메모리 시스템 및 그것의 프로그램 방법
US7865805B1 (en) * 2007-02-26 2011-01-04 Lockheed Martin Corporation Multiple bit upset insensitive error detection and correction circuit for field programmable gate array based on static random access memory blocks
US20110022776A1 (en) * 2007-03-20 2011-01-27 Nxp B.V. Data reliability in storage architectures
KR100921748B1 (ko) * 2007-06-04 2009-10-15 삼성전자주식회사 Ecc 회로를 포함하는 메모리 시스템 및 그 구동 방법
US7721181B2 (en) * 2007-07-11 2010-05-18 Macronix International Co., Ltd. Memory and 1-bit error checking method thereof
JP4564520B2 (ja) 2007-08-31 2010-10-20 株式会社東芝 半導体記憶装置およびその制御方法
US8751755B2 (en) 2007-12-27 2014-06-10 Sandisk Enterprise Ip Llc Mass storage controller volatile memory containing metadata related to flash memory storage
JP5150245B2 (ja) * 2007-12-27 2013-02-20 株式会社東芝 半導体記憶装置
KR101378349B1 (ko) * 2008-01-30 2014-03-28 삼성전자주식회사 메모리 장치 및 메모리 데이터 읽기 방법
US8230300B2 (en) 2008-03-07 2012-07-24 Apple Inc. Efficient readout from analog memory cells using data compression
KR101378602B1 (ko) * 2008-05-13 2014-03-25 삼성전자주식회사 메모리 장치 및 메모리 프로그래밍 방법
KR101506655B1 (ko) 2008-05-15 2015-03-30 삼성전자주식회사 메모리 장치 및 메모리 데이터 오류 관리 방법
US8521979B2 (en) 2008-05-29 2013-08-27 Micron Technology, Inc. Memory systems and methods for controlling the timing of receiving read data
US7979757B2 (en) 2008-06-03 2011-07-12 Micron Technology, Inc. Method and apparatus for testing high capacity/high bandwidth memory devices
US8289760B2 (en) 2008-07-02 2012-10-16 Micron Technology, Inc. Multi-mode memory device and method having stacked memory dice, a logic die and a command processing circuit and operating in direct and indirect modes
US7855931B2 (en) 2008-07-21 2010-12-21 Micron Technology, Inc. Memory system and method using stacked memory device dice, and system using the memory system
US8756486B2 (en) 2008-07-02 2014-06-17 Micron Technology, Inc. Method and apparatus for repairing high capacity/high bandwidth memory devices
TWI382422B (zh) * 2008-07-11 2013-01-11 Genesys Logic Inc 根據錯誤更正碼更新快閃記憶體之資料頁面之儲存裝置與方法
US8127204B2 (en) * 2008-08-15 2012-02-28 Micron Technology, Inc. Memory system and method using a memory device die stacked with a logic die using data encoding, and system using the memory system
TWI404067B (zh) * 2009-02-27 2013-08-01 Macronix Int Co Ltd 記憶體裝置及其操作方法
KR20100104840A (ko) * 2009-03-19 2010-09-29 삼성전자주식회사 셀 패턴에 따라 추가 ecc가 가능한 반도체 메모리 장치,상기 장치를 포함하는 전자 시스템
KR101056876B1 (ko) * 2009-06-30 2011-08-12 주식회사 하이닉스반도체 불휘발성 메모리 장치의 동작 방법 및 이를 구현하는 불휘발성 메모리 장치
US8615700B2 (en) * 2009-08-18 2013-12-24 Viasat, Inc. Forward error correction with parallel error detection for flash memories
US8413015B2 (en) * 2009-09-21 2013-04-02 Sandisk Technologies Inc. Nonvolatile memory controller with scalable pipelined error correction
TWI381392B (zh) * 2010-02-04 2013-01-01 Transcend Information Inc 雙層面記憶體錯誤修正方法以及相關的記憶體裝置
US8365041B2 (en) * 2010-03-17 2013-01-29 Sandisk Enterprise Ip Llc MLC self-raid flash data protection scheme
JP2011197819A (ja) 2010-03-17 2011-10-06 Toshiba Corp 半導体装置
US9195540B2 (en) * 2010-10-06 2015-11-24 HGST, Inc. Multiple sector parallel access memory array with error correction
US8400808B2 (en) 2010-12-16 2013-03-19 Micron Technology, Inc. Phase interpolators and push-pull buffers
CN102714493B (zh) 2011-01-20 2015-05-06 松下电器产业株式会社 非易失性闩锁电路及非易失性触发电路
US8909982B2 (en) 2011-06-19 2014-12-09 Sandisk Enterprise Ip Llc System and method for detecting copyback programming problems
US8910020B2 (en) 2011-06-19 2014-12-09 Sandisk Enterprise Ip Llc Intelligent bit recovery for flash memory
US8656251B2 (en) * 2011-09-02 2014-02-18 Apple Inc. Simultaneous data transfer and error control to reduce latency and improve throughput to a host
JP2013089082A (ja) 2011-10-19 2013-05-13 Toshiba Corp メモリコントローラ、半導体記憶システムおよびメモリ制御方法
US8793543B2 (en) 2011-11-07 2014-07-29 Sandisk Enterprise Ip Llc Adaptive read comparison signal generation for memory systems
US8954822B2 (en) 2011-11-18 2015-02-10 Sandisk Enterprise Ip Llc Data encoder and decoder using memory-specific parity-check matrix
US8924815B2 (en) 2011-11-18 2014-12-30 Sandisk Enterprise Ip Llc Systems, methods and devices for decoding codewords having multiple parity segments
US9048876B2 (en) 2011-11-18 2015-06-02 Sandisk Enterprise Ip Llc Systems, methods and devices for multi-tiered error correction
US8694862B2 (en) * 2012-04-20 2014-04-08 Arm Limited Data processing apparatus using implicit data storage data storage and method of implicit data storage
WO2013171806A1 (en) 2012-05-18 2013-11-21 Hitachi, Ltd. Semiconductor storage device and control method of nonvolatile memory
US9699263B1 (en) 2012-08-17 2017-07-04 Sandisk Technologies Llc. Automatic read and write acceleration of data accessed by virtual machines
US9501398B2 (en) 2012-12-26 2016-11-22 Sandisk Technologies Llc Persistent storage device with NVRAM for staging writes
US9612948B2 (en) 2012-12-27 2017-04-04 Sandisk Technologies Llc Reads and writes between a contiguous data block and noncontiguous sets of logical address blocks in a persistent storage device
US9239751B1 (en) 2012-12-27 2016-01-19 Sandisk Enterprise Ip Llc Compressing data from multiple reads for error control management in memory systems
US9003264B1 (en) 2012-12-31 2015-04-07 Sandisk Enterprise Ip Llc Systems, methods, and devices for multi-dimensional flash RAID data protection
US9454420B1 (en) 2012-12-31 2016-09-27 Sandisk Technologies Llc Method and system of reading threshold voltage equalization
US9329928B2 (en) 2013-02-20 2016-05-03 Sandisk Enterprise IP LLC. Bandwidth optimization in a non-volatile memory system
US9214965B2 (en) 2013-02-20 2015-12-15 Sandisk Enterprise Ip Llc Method and system for improving data integrity in non-volatile storage
US9870830B1 (en) 2013-03-14 2018-01-16 Sandisk Technologies Llc Optimal multilevel sensing for reading data from a storage medium
US9136877B1 (en) 2013-03-15 2015-09-15 Sandisk Enterprise Ip Llc Syndrome layered decoding for LDPC codes
US9092350B1 (en) 2013-03-15 2015-07-28 Sandisk Enterprise Ip Llc Detection and handling of unbalanced errors in interleaved codewords
US9009576B1 (en) 2013-03-15 2015-04-14 Sandisk Enterprise Ip Llc Adaptive LLR based on syndrome weight
US9367246B2 (en) 2013-03-15 2016-06-14 Sandisk Technologies Inc. Performance optimization of data transfer for soft information generation
US9244763B1 (en) 2013-03-15 2016-01-26 Sandisk Enterprise Ip Llc System and method for updating a reading threshold voltage based on symbol transition information
US9236886B1 (en) 2013-03-15 2016-01-12 Sandisk Enterprise Ip Llc Universal and reconfigurable QC-LDPC encoder
US9170941B2 (en) 2013-04-05 2015-10-27 Sandisk Enterprises IP LLC Data hardening in a storage system
US10049037B2 (en) 2013-04-05 2018-08-14 Sandisk Enterprise Ip Llc Data management in a storage system
US9601189B2 (en) 2013-04-24 2017-03-21 Hewlett Packard Enterprise Development Lp Representing data using a group of multilevel memory cells
US9159437B2 (en) 2013-06-11 2015-10-13 Sandisk Enterprise IP LLC. Device and method for resolving an LM flag issue
US9524235B1 (en) 2013-07-25 2016-12-20 Sandisk Technologies Llc Local hash value generation in non-volatile data storage systems
US9384126B1 (en) 2013-07-25 2016-07-05 Sandisk Technologies Inc. Methods and systems to avoid false negative results in bloom filters implemented in non-volatile data storage systems
US9043517B1 (en) 2013-07-25 2015-05-26 Sandisk Enterprise Ip Llc Multipass programming in buffers implemented in non-volatile data storage systems
US9361221B1 (en) 2013-08-26 2016-06-07 Sandisk Technologies Inc. Write amplification reduction through reliable writes during garbage collection
US9639463B1 (en) 2013-08-26 2017-05-02 Sandisk Technologies Llc Heuristic aware garbage collection scheme in storage systems
US9171597B2 (en) 2013-08-30 2015-10-27 Micron Technology, Inc. Apparatuses and methods for providing strobe signals to memories
US9442670B2 (en) 2013-09-03 2016-09-13 Sandisk Technologies Llc Method and system for rebalancing data stored in flash memory devices
US9519577B2 (en) 2013-09-03 2016-12-13 Sandisk Technologies Llc Method and system for migrating data between flash memory devices
US9158349B2 (en) 2013-10-04 2015-10-13 Sandisk Enterprise Ip Llc System and method for heat dissipation
US9323637B2 (en) 2013-10-07 2016-04-26 Sandisk Enterprise Ip Llc Power sequencing and data hardening architecture
US9442662B2 (en) 2013-10-18 2016-09-13 Sandisk Technologies Llc Device and method for managing die groups
US9298608B2 (en) 2013-10-18 2016-03-29 Sandisk Enterprise Ip Llc Biasing for wear leveling in storage systems
US9436831B2 (en) 2013-10-30 2016-09-06 Sandisk Technologies Llc Secure erase in a memory device
US9263156B2 (en) 2013-11-07 2016-02-16 Sandisk Enterprise Ip Llc System and method for adjusting trip points within a storage device
US9244785B2 (en) 2013-11-13 2016-01-26 Sandisk Enterprise Ip Llc Simulated power failure and data hardening
US9152555B2 (en) 2013-11-15 2015-10-06 Sandisk Enterprise IP LLC. Data management with modular erase in a data storage system
US9703816B2 (en) 2013-11-19 2017-07-11 Sandisk Technologies Llc Method and system for forward reference logging in a persistent datastore
US9520197B2 (en) 2013-11-22 2016-12-13 Sandisk Technologies Llc Adaptive erase of a storage device
US9520162B2 (en) 2013-11-27 2016-12-13 Sandisk Technologies Llc DIMM device controller supervisor
US9122636B2 (en) 2013-11-27 2015-09-01 Sandisk Enterprise Ip Llc Hard power fail architecture
US9280429B2 (en) 2013-11-27 2016-03-08 Sandisk Enterprise Ip Llc Power fail latching based on monitoring multiple power supply voltages in a storage device
US10073731B2 (en) * 2013-11-27 2018-09-11 Intel Corporation Error correction in memory
US9250676B2 (en) 2013-11-29 2016-02-02 Sandisk Enterprise Ip Llc Power failure architecture and verification
US9582058B2 (en) 2013-11-29 2017-02-28 Sandisk Technologies Llc Power inrush management of storage devices
US9092370B2 (en) 2013-12-03 2015-07-28 Sandisk Enterprise Ip Llc Power failure tolerant cryptographic erase
US9235245B2 (en) 2013-12-04 2016-01-12 Sandisk Enterprise Ip Llc Startup performance and power isolation
US9129665B2 (en) 2013-12-17 2015-09-08 Sandisk Enterprise Ip Llc Dynamic brownout adjustment in a storage device
US9323610B2 (en) * 2014-01-30 2016-04-26 Sandisk Technologies Inc. Non-blocking commands
US9549457B2 (en) 2014-02-12 2017-01-17 Sandisk Technologies Llc System and method for redirecting airflow across an electronic assembly
US9497889B2 (en) 2014-02-27 2016-11-15 Sandisk Technologies Llc Heat dissipation for substrate assemblies
US9703636B2 (en) 2014-03-01 2017-07-11 Sandisk Technologies Llc Firmware reversion trigger and control
US9485851B2 (en) 2014-03-14 2016-11-01 Sandisk Technologies Llc Thermal tube assembly structures
US9519319B2 (en) 2014-03-14 2016-12-13 Sandisk Technologies Llc Self-supporting thermal tube structure for electronic assemblies
US9348377B2 (en) 2014-03-14 2016-05-24 Sandisk Enterprise Ip Llc Thermal isolation techniques
US9448876B2 (en) 2014-03-19 2016-09-20 Sandisk Technologies Llc Fault detection and prediction in storage devices
US9390814B2 (en) 2014-03-19 2016-07-12 Sandisk Technologies Llc Fault detection and prediction for data storage elements
US9454448B2 (en) 2014-03-19 2016-09-27 Sandisk Technologies Llc Fault testing in storage devices
US9626400B2 (en) 2014-03-31 2017-04-18 Sandisk Technologies Llc Compaction of information in tiered data structure
US9626399B2 (en) 2014-03-31 2017-04-18 Sandisk Technologies Llc Conditional updates for reducing frequency of data modification operations
US9390021B2 (en) 2014-03-31 2016-07-12 Sandisk Technologies Llc Efficient cache utilization in a tiered data structure
US9697267B2 (en) 2014-04-03 2017-07-04 Sandisk Technologies Llc Methods and systems for performing efficient snapshots in tiered data structures
KR102112559B1 (ko) * 2014-04-08 2020-05-21 에스케이하이닉스 주식회사 반도체 장치 및 그 동작방법
US10656842B2 (en) 2014-05-30 2020-05-19 Sandisk Technologies Llc Using history of I/O sizes and I/O sequences to trigger coalesced writes in a non-volatile storage device
US9070481B1 (en) 2014-05-30 2015-06-30 Sandisk Technologies Inc. Internal current measurement for age measurements
US10146448B2 (en) 2014-05-30 2018-12-04 Sandisk Technologies Llc Using history of I/O sequences to trigger cached read ahead in a non-volatile storage device
US10114557B2 (en) 2014-05-30 2018-10-30 Sandisk Technologies Llc Identification of hot regions to enhance performance and endurance of a non-volatile storage device
US9703491B2 (en) 2014-05-30 2017-07-11 Sandisk Technologies Llc Using history of unaligned writes to cache data and avoid read-modify-writes in a non-volatile storage device
US10162748B2 (en) 2014-05-30 2018-12-25 Sandisk Technologies Llc Prioritizing garbage collection and block allocation based on I/O history for logical address regions
US10656840B2 (en) 2014-05-30 2020-05-19 Sandisk Technologies Llc Real-time I/O pattern recognition to enhance performance and endurance of a storage device
US9645749B2 (en) 2014-05-30 2017-05-09 Sandisk Technologies Llc Method and system for recharacterizing the storage density of a memory device or a portion thereof
US8891303B1 (en) 2014-05-30 2014-11-18 Sandisk Technologies Inc. Method and system for dynamic word line based configuration of a three-dimensional memory device
US9093160B1 (en) 2014-05-30 2015-07-28 Sandisk Technologies Inc. Methods and systems for staggered memory operations
US10372613B2 (en) 2014-05-30 2019-08-06 Sandisk Technologies Llc Using sub-region I/O history to cache repeatedly accessed sub-regions in a non-volatile storage device
US9652381B2 (en) 2014-06-19 2017-05-16 Sandisk Technologies Llc Sub-block garbage collection
US9443601B2 (en) 2014-09-08 2016-09-13 Sandisk Technologies Llc Holdup capacitor energy harvesting
US9653185B2 (en) * 2014-10-14 2017-05-16 International Business Machines Corporation Reducing error correction latency in a data storage system having lossy storage media
JP2016162466A (ja) 2015-02-26 2016-09-05 株式会社東芝 半導体記憶装置及びメモリシステム
US10067825B2 (en) 2015-09-14 2018-09-04 Samsung Electronics Co., Ltd. Memory device and method of controlling ECC operation in the same
CN108346452B (zh) * 2017-01-25 2023-05-02 三星电子株式会社 存储器装置和控制存储器装置中的ecc操作的方法
EP3370152B1 (en) * 2017-03-02 2019-12-25 INTEL Corporation Integrated error checking and correction (ecc) in memory devices with fixed bandwidth interfaces
US11556416B2 (en) 2021-05-05 2023-01-17 Apple Inc. Controlling memory readout reliability and throughput by adjusting distance between read thresholds
US11847342B2 (en) 2021-07-28 2023-12-19 Apple Inc. Efficient transfer of hard data and confidence levels in reading a nonvolatile memory
US11605441B1 (en) 2021-08-30 2023-03-14 Samsung Electronics Co., Ltd. Memory systems having memory devices therein with enhanced error correction capability and methods of operating same

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0877066A (ja) * 1994-08-31 1996-03-22 Tdk Corp フラッシュメモリコントローラ
JPH09244961A (ja) * 1996-03-08 1997-09-19 Mitsubishi Electric Corp フラッシュata−pcカード
US5754566A (en) 1996-09-06 1998-05-19 Intel Corporation Method and apparatus for correcting a multilevel cell memory by using interleaving
US5754567A (en) * 1996-10-15 1998-05-19 Micron Quantum Devices, Inc. Write reduction in flash memory systems through ECC usage
US5859858A (en) * 1996-10-25 1999-01-12 Intel Corporation Method and apparatus for correcting a multilevel cell memory by using error locating codes
US6076182A (en) 1996-12-16 2000-06-13 Micron Electronics, Inc. Memory fault correction system and method
JPH10222992A (ja) 1997-02-06 1998-08-21 Fujitsu Ltd 多値メモリ及び多値メモリに対するデータアクセス方法
JP3602294B2 (ja) * 1997-05-28 2004-12-15 株式会社ルネサステクノロジ 半導体メモリおよび情報記憶装置
JP3165101B2 (ja) * 1998-03-05 2001-05-14 日本電気アイシーマイコンシステム株式会社 多値式半導体メモリ装置およびその不良救済方法
JPH11339496A (ja) * 1998-05-22 1999-12-10 Nec Corp 多値セルのecc回路
JP2000251484A (ja) * 1999-02-26 2000-09-14 Sony Corp 不揮発性半導体記憶装置

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7412575B2 (en) 2004-11-03 2008-08-12 Samsung Electronics Co., Ltd. Data management technique for improving data reliability
US8612841B2 (en) 2010-12-06 2013-12-17 Hynix Semiconductor Inc. Error code pattern generation circuit and semiconductor memory device including the same

Also Published As

Publication number Publication date
EP1286359B1 (en) 2007-01-17
EP1286359A2 (en) 2003-02-26
KR100873656B1 (ko) 2008-12-12
JP4437519B2 (ja) 2010-03-24
DE60217591D1 (de) 2007-03-08
DE60217591T2 (de) 2007-11-22
EP1286359A3 (en) 2004-05-19
US20030041299A1 (en) 2003-02-27
US7096406B2 (en) 2006-08-22
JP2003067260A (ja) 2003-03-07

Similar Documents

Publication Publication Date Title
KR100873656B1 (ko) 멀티레벨 셀 메모리용 메모리 제어기
US10936455B2 (en) Recovery of data failing due to impairment whose severity depends on bit-significance value
EP2106587B1 (en) Programming management data for nand memories
US10891187B2 (en) Memory devices having differently configured blocks of memory cells
US7747903B2 (en) Error correction for memory
US9201718B2 (en) Data recovery in a solid state storage system
US8345487B2 (en) Method of setting read voltage minimizing read data errors
US20120144273A1 (en) Non-volatile semiconductor memory device
CN101685672A (zh) 在多级单元闪存装置中使用的最低有效位页恢复方法
JP2007323731A (ja) 半導体記憶装置
WO2009048211A1 (en) Apparatuses and methods for multi-bit programming
CN114203247B (zh) 一种位线感测电路及存储器
US20020174397A1 (en) Method for error detection/correction of multilevel cell memory and multilevel cell memory having error detection/correction function
CN113345511A (zh) 存储器件及其测试方法
JP5355667B2 (ja) メモリシステム
JP2013246855A (ja) 半導体メモリ
JP5710815B1 (ja) 半導体記憶装置

Legal Events

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

Payment date: 20121129

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20131122

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20141121

Year of fee payment: 7

LAPS Lapse due to unpaid annual fee