KR102102828B1 - 메모리에서 에러 정정 코드(ecc) 연산 - Google Patents

메모리에서 에러 정정 코드(ecc) 연산 Download PDF

Info

Publication number
KR102102828B1
KR102102828B1 KR1020187031675A KR20187031675A KR102102828B1 KR 102102828 B1 KR102102828 B1 KR 102102828B1 KR 1020187031675 A KR1020187031675 A KR 1020187031675A KR 20187031675 A KR20187031675 A KR 20187031675A KR 102102828 B1 KR102102828 B1 KR 102102828B1
Authority
KR
South Korea
Prior art keywords
ecc
bits
encoding matrix
code word
memory
Prior art date
Application number
KR1020187031675A
Other languages
English (en)
Other versions
KR20180121797A (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 KR20180121797A publication Critical patent/KR20180121797A/ko
Application granted granted Critical
Publication of KR102102828B1 publication Critical patent/KR102102828B1/ko

Links

Images

Classifications

    • 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/1048Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
    • 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/1044Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices with specific ECC/EDC distribution
    • 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/19Single error correction without using particular properties of the cyclic codes, e.g. Hamming codes, extended or generalised Hamming codes
    • 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/29Coding, 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 combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
    • H03M13/2942Coding, 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 combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes wherein a block of parity bits is computed only from combined information bits or only from parity bits, e.g. a second block of parity bits is computed from a first block of parity bits obtained by systematic encoding of a block of information bits, or a block of parity bits is obtained by an XOR combination of sub-blocks of information bits
    • 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/61Aspects and characteristics of methods and arrangements for error correction or error detection, not provided for otherwise
    • H03M13/618Shortening and extension of codes
    • 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/09Error detection only, e.g. using cyclic redundancy check [CRC] codes or single parity bit
    • 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
    • H03M13/151Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
    • H03M13/152Bose-Chaudhuri-Hocquenghem [BCH] codes
    • 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
    • H03M13/151Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
    • H03M13/1575Direct decoding, e.g. by a direct determination of the error locator polynomial from syndromes and subsequent analysis or by matrix operations involving syndromes, e.g. for codes with a small minimum Hamming distance

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Quality & Reliability (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Read Only Memory (AREA)

Abstract

본 개시는 메모리와 연관된 ECC 연산을 위한 장치들 및 방법들을 포함한다. 일 예시적인 장치는 메모리에 저장된 코드 워드에 대해 에러 정정 코드 (ECC) 연산을 수행하도록 구성된 제어기를 포함하고, 코드 워드는 제 1 수의 ECC 비트들을 포함하고, 제 1 수의 ECC 비트는 인코딩 매트릭스에 기초하여 생성되며, 인코딩 매트릭스의 각각의 행은 이진값 1을 갖는 홀수 개의 비트들을 갖는다.

Description

메모리에서 에러 정정 코드(ECC) 연산
본 개시는 전반적으로 반도체 메모리 장치들 및 방법들에 관한 것으로, 보다 상세하게는 메모리와 연관된 에러 정정 코드 (ECC : error correction code)에 관한 것이다.
메모리 디바이스들은 통상적으로, 컴퓨터들 또는 다른 전자 디바이스들에서 내부, 반도체, 집적 회로들 및/또는 외부 착탈식 디바이스들로서 제공된다. 휘발성 및 비-휘발성 메모리를 포함한 많은 상이한 유형들의 메모리가 있다. 휘발성 메모리는 그것의 데이터를 유지하는 전력을 필요로 할 수 있고 다른 것들 중에서 RAM(랜덤-액세스 메모리), DRAM(동적 랜덤 액세스 메모리), 및 SDRAM(동기식 동적 랜덤 액세스 메모리)을 포함한다. 비-휘발성 메모리는 전력이 공급되지 않을 때 저장된 데이터를 유지할 수 있고, 다른 것들 중에서, NAND 플래시 메모리, NOR 플래시 메모리, 및 상 변화 랜덤 액세스 메모리(PCRAM), 저항성 랜덤 액세스 메모리(RRAM), 및 자기 랜덤 액세스 메모리(MRAM)를 포함할 수 있다.
메모리 디바이스들은 SSD(solid state drive)를 형성하기 위해 함께 결합될 수 있다. SSD는 여러가지 다른 타입들의 비휘발성 및 휘발성 메모리 중에서 비휘발성 메모리(예를 들어, NAND 플래시 메모리 및/또는 NOR 플래시 메모리)를 포함할 수 있고/있거나, 휘발성 메모리(예를 들어, DRAM 및/또는 SRAM)를 포함할 수 있다. 플래시 메모리 디바이스들은 예를 들어, 플로팅 게이트(floating gatte)와 같은 전하 저장 구조에 데이터를 저장하는 메모리 셀들을 포함할 수 있고 광범위한 전자 애플리케이션들에 대하여 비 휘발성 메모리로서 이용될 수 있다. 플래시 메모리 디바이스들은 전형적으로 여러 다른 메모리 디바이스들에 비하여 고메모리 밀도, 고신뢰성, 및 저전력 소모를 허용하는 단일 트랜지스터 메모리 셀을 사용한다.
메모리는 광범위한 전자 애플리케이션들에 대해 휘발성 및 비휘발성 데이터 저장장치로서 활용된다. 비휘발성 메모리는 예를 들어 개인용 컴퓨터들, 휴대용 메모리 스틱들, 디지털 카메라들, 휴대 전화들, MP3 플레이어들과 같은 휴대용 뮤직 플레이어들, 무비 플레이어들, 및 다른 전자 디바이스들에 사용될 수 있다. 메모리 셀들은 어레이들로 배열될 수 있고, 어레이들은 메모리 디바이스들에 사용된다.
메모리 셀의 상태는 셀의 전하 저장 구조 (예를 들어, Vt)에 저장된 전하를 감지함으로써 결정될 수 있다. 그러나, 예컨대 판독 방해, 프로그램 방해, 셀 - 대 - 셀 간섭 및/또는 전하 유실 (예를 들어, 전하 누설(charge leakage))과 같은 다수의 메커니즘들은 메모리 셀의 Vt를 변화시킬 수 있다. 에러 정정 코드(ECC ) 기법들, 예컨대 해밍 코드(Hamming code)는 비트 에러들을 정정하는데 사용되었다. 해밍 거리 H를 갖는 해밍 코드는 특정 수의 에러들을 정정 및/또는 검출할 수 있다. 예를 들어, 해밍 거리 H로 정정되고 및/또는 검출될 수 있는 특정 수의 에러는 이하의 방정식에 의해 정의될 수 있다:
Figure 112018107883314-pct00001
여기서, H는 해밍 거리를 나타내고, C 및 D는 개별적으로 정정되고 검출될 수 있는 에러들의 수를 나타낸다. 예를 들어, 9 ECC 비트들 및 3의 해밍 거리를 포함하는 265 비트 코드 워드를 갖는 해밍 코드 (265, 9, 3)는 단지 하나의 에러만을 정정하거나 정정하지 않고 2 개의 에러만을 검출할 수 있다.
도 1은 본 개시의 다수의 실시예들에 따른 메모리 시스템을 포함하는 컴퓨팅 시스템의 형태에 장치의 블럭도이다.
도 2는 본 개시의 다수의 실시예들에 따라 동작가능한 메모리 셀들의 어레이를 포함하는 메모리 부분의 개략도이다.
도 3a 및 도 3b는 본 개시의 다수의 실시예에 따른 2 진 데이터 워드를 인코딩하는 것과 관련된 다수의 데이터 패턴을 도시한다.
도 4는 본 개시의 다수의 실시예들에 따라 에러 정정 코드 (ECC) 연산을 수행하기 위한 흐름도를 도시한다.
본 개시는 메모리와 연관된 ECC 연산을 위한 장치들 및 방법들을 포함한다. 일 예시적인 장치는 메모리에 저장된 코드 워드에 대해 에러 정정 코드 (ECC) 연산을 수행하도록 구성된 제어기를 포함하고, 상기 코드 워드는 제 1 수의 ECC 비트를 포함하고, 상기 제 1 수의 ECC 비트는 인코딩 매트릭스에 기초하여 생성되며, 인코딩 매트릭스의 각각의 행(row)은 이진값(binary value) 1을 갖는 홀수 개의 비트들을 갖는다.
본 발명의 실시예들은 기존의 해밍 코드 방식들과 동일한 개수의 패리티 비트들로 ECC 비트들 및 사용자 데이터 모두를 보호하는 단계를 포함할 수 있다. 예를 들어, 검출 및 정정 능력의 잉여 패리티 비트를 갖는 여러 해밍 코드는 보호된 위치에서 단일 비트 에러 또는 2 비트 에러가 발생한 특정 상황 (예를 들어, ECC 비트 또는 이진edssw 데이터 워드)에 제한된다. 이런 제한된 능력은 비보호된 위치에서 단일 비트 에러 또는 임의의 2 비트 에러 중 하나가 발생할 때 잘못된 에러 정정 연산을 초래할 수 있다. 예를 들어, 이전 접근법들은 2 비트 에러를 검출할 수 있는 능력 없이 단일 비트 에러를 정정하기 위해 해밍 코드 (265, 256, 3) 및, 단일 비트 에러를 정정할 수 있는 능력을 갖춘 2 개의 비트 에러를 검출하기 위한 잉여 패리티 비트를 갖는 확장 해밍 코드 (266, 256, 3) 비트 에러를 사용했다.그러나, 이런 이전 접근법들은 제한된 에러 정정 성능을 갖는다. 예를 들어, ECC 비트를 생성하기 전에 잉여 패러티 비트가 데이터에 추가되면, ECC 비트들은 패러티 비트에 의해 보호되지 않으며 그리고 ECC 비트를 생성한 후에 잉여 패리티가 추가되면, 패러티 비트가 보호되지 않는다. 예를 들어 비보호 위치에서 단일 비트 에러는 잘못된 에러 정정 연산으로 귀결될 수 있고, 이는 데이터의 손실로 이어질 수 있다.
본 개시의 다수의 실시예들은 ECC 비트 및 데이터 (예를 들어, 호스트로부터 판독된 사용자 데이터) 모두를 보호할 수 있어서, ECC 비트 또는 데이터 내의 임의의 단일 비트 에러 또는 2 비트 에러가 정정 또는 검출될 수 있다. 예를 들어, 하나의 추가 ECC 비트를 해밍 코드 (265, 9, 3)에 추가함으로써 해밍 코드 (265, 9, 3)로부터 해밍 코드 (266, 10, 4)가 도출되고 해밍 거리는 4를 갖는 것이 가능하다. 해밍 코드 (266, 10, 4)는 단일 비트 에러를 검출 및 정정하고 정정 없이 추가 에러를 검출하거나 세개의 에러들을 검출할 수 있다. ECC 비트와 데이터 둘 모두를 보호하는 것은 다른 장점들 중에서 메모리의 성능, 신뢰성 및/또는 수명 연장과 같은 장점들을 제공할 수 있다. 예를 들어, 비보호 위치에서의 단일 비트 에러 또는 2 비트 에러가 추가의 부정확한 에러 정정 연산을 초래할 때 메모리 부분 (예를 들어, 페이지, 블럭 등)의 비트 에러율 (BER : bit error rate)이 증가될 수 있다. 그러나, 본 발명의 실시예들은 더 많은 에러들을 주입하지 않고 에러 정정 연산으로 이어질 수 있는 단일 비트 에러 또는 2 비트 에러로 무엇을 해야 할 지를 정확하게 결정함으로써 신뢰성을 증가시킬 수 있다. 본 개시의 다수의 실시예들은 또한 부정확한 에러 정정 연산으로 인한 더 많은 에러들을 주입할 가능성을 감소시킴으로써 메모리의 수명을 연장시킬 수 있다.
본 개시의 다음의 상세한 설명에서, 참조가 그것의 부분을 형성하는 첨부한 도면들에 대해 이루어지며, 본 출원에서 예로서 개시의 하나 이상의 실시예들에서가 어떻게 실시될 수 있는지가 도시된다. 이들 실시예들은 이 기술분야의 숙련자들이 본 개시의 실시예들을 실시할 수 있게 하기 위해 충분히 상세히 설명되며, 다른 실시예들이 이용될 수 있으며 프로세스, 전기적, 및/또는 구조적 변화들이 본 개시의 범위로부터 벗어나지 않고 이루어질 수 있다는 것이 이해될 것이다. 본 명세서에 사용된 바와 같이, 특히 도면들 내의 도면 번호들에 대한 지시자들 “M” 및 "N"은 거기에 지시된 다수의 특정 특징이 포함될 수 있는 것을 표시한다. 본 출원에서 사용된 바와 같이, "다수의(a number of)" 특정한 것은 이러한 것들 중 하나 이상을 나타낼 수 있다(예로서, 다수의 메모리 디바이스들은 하나 이상의 메모리 디바이스들을 지칭할 수 있다).
본원에서의 도면들은, 제 1 디지트 또는 디지트들이 도면 번호에 대응하고 나머지 디지트들이 도면에서의 엘리먼트 또는 컴포넌트를 식별하는 넘버링 규정에 따른다. 서로 다른 도면 간에 유사한 엘리먼트 또는 구성 컴포넌트는 유사한 숫자를 사용하여 식별될 수 있다. 예를 들어, 110은 도 1에서 엘리먼트 "10"을 참조할 수도 있고, 유사한 엘리먼트가 도 2에서 210으로서 참조될 수도 있다. 이해될 바와 같이, 본 출원에서의 다양한 실시예들에서 도시된 엘리먼트들은 본 개시의 다수의 부가적인 실시예들을 제공하기 위해 부가되고, 교환되며, 및/또는 제거될 수 있다. 또한, 이해될 바와 같이, 도면들에서 제공된 요소들의 비율 및 상대적 스케일은 본 발명의 특정 실시예들을 예시하도록 의도되며, 제한적인 의미로 취해지지 않아야 한다.
도 1은 본 개시의 다수의 실시예들에 따른 메모리 시스템(104)을 포함하는 컴퓨팅 시스템(100)의 형태에 장치의 블록도이다.
본 출원에서 사용된, 메모리 시스템(104), 제어기 (108), 또는 메모리 디바이스(110)는 또한 개별적으로 "장치"로 고려될 수 있다. 메모리 시스템 (104)은 예를 들어 고체 상태 드라이브 (SSD) 일 수 있고, 호스트 인터페이스 (106), 제어기 (108) (예를 들어, 시퀀서 및/또는 다른 제어 회로) 및 메모리 (110)로 지칭될 수 있는 다수의 메모리 디바이스(110)을 포함할 수 있다. 메모리 (110)는 예를 들어, 메모리 시스템 (104)에 대한 저장 볼륨을 제공하는 NAND 플래시 디바이스들과 같은 다수의 고체 상태 메모리 디바이스를 포함할 수 있다.
제어기(108)는 복수의 채널들을 통해 호스트 인터페이스(106) 및 메모리(110)에 결합될 수 있고 메모리 시스템(104)과 호스트(102) 사이에서 데이터를 전송하기 위해 사용될 수 있다. 인터페이스(106)는 표준화된 인터페이스의 형태일 수 있다. 예를 들어, 메모리 시스템(104)이 컴퓨팅 시스템(100) 내의 데이터 저장에 사용될 때, 인터페이스(106)는 다른 커넥터들 및 인터페이스들 중에서, SATA(serial advanced technology attachment), PCIe(peripheral component interconnect express), 또는 USB(universal serial bus)일 수 있다. 그러나, 일반적으로, 인터페이스(106)는 메모리 시스템(104)과 인터페이스(106)에 대한 호환가능 리셉터들을 갖는 호스트(102) 사이에서 제어, 어드레스, 데이터, 및 다른 신호들을 전달하는 인터페이스를 제공할 수 있다.
호스트(102)는 여러가지 다른 타입들의 호스트들 중에서, 개인용 랩톱 컴퓨터, 데스크톱 컴퓨터, 디지털 카메라, 이동 전화, 또는 메모리 카드 리더와 같은 호스트 시스템일 수 있다. 호스트(102)는 시스템 마더보드 및/또는 백플레인을 포함할 수 있고 다수의 메모리 액세스 디바이스들(예를 들어, 다수의 프로세서들)을 포함할 수 있다. 호스트 (102)는 또한 메모리 시스템 (104)이 메모리 디바이스 (예를 들어, 온 - 다이(on-die) 제어기를 갖는 메모리 디바이스) 인 경우와 같은 메모리 제어기일 수 있다.
제어기 (108)는 다른 동작 중에서 데이터 판독, 기록 및 소거 동작을 제어하기 위해 메모리 (110) (일부 실시예들에서는 단일 다이 위의 다수의 메모리 어레이 일 수 있다)와 통신할 수 있다. 예로서, 제어기 (108)는 메모리 (110)에 대응하는 다이 또는 다이스(dice)와 동일한 다이 또는 상이한 다이 상에 있을 수 있다.
구체적으로 예시되지 않지만, 제어기(108)는 제어기(108)를 메모리(110)에 결합하는 각각의 채널에 대한 개별 메모리 채널 제어기를 포함할 수 있다. 제어기(108)는 예를 들어 메모리(110)에 액세스를 제어하고/하거나 호스트(102)와 메모리(110) 사이에서 데이터 전송을 가능하게 하는 하드웨어 및/또는 펌웨어(예를 들어, 하나 이상의 집적 회로들) 및/또는 소프트웨어의 형태인 다수의 컴포넌트들을 포함할 수 있다.
도 1에 도시된 바와 같이, 제어기 (108)는 ("ECC"로 도시된) 에러 정정 컴포넌트 (112)를 포함할 수 있다. 에러 정정 컴포넌트 (112)는 단일 비트 에러를 정정하고 2 비트 에러를 검출하기 위한 해밍 코드 에러 정정 회로부를 포함할 수 있다. ECC 컴포넌트 (112)는 회로부 (예를 들어, 하드웨어) 구현예들에 제한되지 않는다. 예를 들어, ECC 컴포넌트 (112)는 하드웨어, 펌웨어 및/또는 소프트웨어로 구현될 수 있다. 비록 에러 정정 컴포넌트로 지칭되지만, ECC 컴포넌트 (112)는 데이터 에러들 검출할 뿐만 아니라 정정하는데 사용될 수 있다. 추가적으로, ECC 컴포넌트 (112)는 이하에서 더 설명되는 바와 같이 에러 인코딩 및 디코딩 기능을 포함할 수 있다. 예를 들어, 다수의 실시예들에서, ECC 컴포넌트 (112)는 메모리 (110)에 기록될 사용자 데이터 및 ECC 데이터의 결합된 양을 인코딩할 수 있다.
ECC 컴포넌트(112)는 예컨대, ASIC(애플리케이션 특정 집적 회로)와 같은 개별 컴포넌트들일 수 있거나 컴포넌트들은 반드시 제어기(108)의 다른 부분들로부터 분리되는 개별 물리 형태를 갖는 것은 아닌 제어기(108) 내에 회로부에 의해 제공되는 기능성을 반형할 수 있다. 도 1의 제어기(108) 내의 컴포넌트들로 예시되지만, ECC 컴포넌트(112)는 제어기(108) 외부에 있거나 제어기(108) 내에 위치된 다수의 컴포넌트들 및 제어기(108) 외부에 위치된 다수의 컴포넌트들을 가질 수 있다. ECC 컴포넌트 (112)는 다수의 실시예들에서 별개의 인코딩 및 디코딩 컴포넌트들을 포함할 수 있다.
메모리 (110)는 많은 어레이들의 메모리 셀들 (예를 들어, 비-휘발성 메모리 셀)를 포함할 수 있다. 어레이들은 예를 들어 NAND 아키텍쳐를 갖는 플래시 어레이들일 수 있다. 그러나, 실시예들은 특정 타입의 메모리 어레이 또는 어레이 아키텍쳐에 제한되지 않는다. 비록 NAND 아키텍쳐에 플로팅-게이트 유형 플래시 메모리 셀들이 일반적으로 본 출원에서 언급되지만, 실시예들은 거기에 제한되지 않는다. 메모리 셀들은 예를 들어 다수의 물리 페이지들을 포함하는 다수의 블럭들로 그룹화될 수 있다. 다수의 블럭들은 메모리 셀들의 플레인에 포함될 수 있고 어레이는 다수의 플레인들을 포함할 수 있다. 일 예로서, 메모리 디바이스는 페이지마다 8KB(kilo바이트)의 사용자 데이터, 블럭마다 128 페이지들의 사용자 데이터, 플레인마다 2048 블럭들, 및 디바이스마다 16 플레인들을 저장하도록 구성될 수 있다.
동작시에, 데이터는 예를 들어, 데이터의 페이지(page)로서 메모리(110)에 기록 및/또는 메모리로부터 판독될 수 있다. 예를 들어, 데이터의 페이지는 메모리 시스템의 데이터 전송 크기로 지칭될 수 있다. 데이터는 섹터들(예를 들어, 호스트 섹터들)로 언급되는 데이터 세그먼트들로 호스트(예를 들어, 호스트(102))에/로부터 발송될 수 있다. 예를 들어, 데이터의 섹터는 호스트의 데이터 전송 크기로 언급될 수 있다.
도 2는 본 개시의 다수의 실시예들에 따라 동작가능한 메모리 셀들의 어레이를 포함하는 메모리(210) 부분의 개략도이다. 도 2의 실시예는 NAND 아키텍쳐 비 휘발성 메모리 어레이를 도시하지만; 그러나, 본 출원에 설명된 실시예들은 이 예제에 제한되지 않는다. 예를 들어, 다수의 실시예들은 NOR 아키텍쳐의 비 휘발성 메모리 어레이로 구현될 수 있다. 도 2에 도시된 바와 같이, 메모리 어레이는 액세스 라인 (예를 들어, 워드 라인 (205-1, ..., 205-N)) 및 교차하는 데이터 라인 (예를 들어, 로컬 비트 라인 (207-1, 207-2, 207-3, ..., 207-M)을 포함한다. 디지털 환경에서 어드레싱을 용이하게 하기 위해, 워드 라인 (205-1 ,..., 205-N)의 수 및 로컬 비트 라인 (207-1, 207-2, 207-3, ..., 207-M)의 수는 2의 임의의 제곱 수 (예를 들어, 256 워드 라인 × 4,096 비트 라인) 일 수 있다.
메모리 어레이는 NAND 스트링들 (209-1, 209-2, 209-3 ,. . ., 209-M)을 포함한다. 각각의 NAND 스트링은 비 휘발성 메모리 셀들 (211-1, ..., 211-N)를 포함하고, 각각은 개별 워드 라인 (205-1, ..., 205-N)에 통신 가능하게 결합된다. 각각의 NAND 스트링(및 이의 구성 메모리 셀들)은 로컬 비트라인(207-1, 207-2, 207-3, . . ., 207-M)에도 연관된다. 각각의 NAND 스트링 (209-1, 209-2, 209-3 ,..., 209-M)의 메모리 셀 (211-1, . . ., 211-N)은 선택 게이트 소스 (예를 들어, 전계 효과 트랜지스터(FET) (213))와 선택 게이트 드레인 (예를 들어, FET (219)) 사이의 드레인으로 직렬 소스에 결합된다. 각각의 선택 게이트 소스(213)는 소스 선택 라인(217)상의 신호에 응답하여 각각의 NAND 스트링을 공통 소스(223)에 선택적으로 결합하도록 구성되고, 반면 각각의 선택 게이트 드레인(219)는 드레인 선택 라인(215)상의 신호에 응답하여 각각의 NAND 스트링을 각각의 비트 라인에 선택적으로 결합하도록 구성된다.
도 2에 도시된 실시예에 도시된 바와 같이, 선택 게이트 소스(213)의 소스는 공통 소스 라인(223)에 결합된다. 선택 게이트 소스(213)의 드레인은 대응하는 NAND 스트링(209-1)의 메모리 셀(211-1)의 소스에 결합된다. 선택 게이트 드레인(219)의 드레인은 드레인 컨택(221-1)에서 대응하는 NAND 스트링(209-1)의 비트 라인(207-1)에 결합된다. 선택 게이트 드레인(219)의 소스는 대응하는 NAND 스트링(209-1)의 마지막 메모리 셀(211-N)(예를 들어, 플로팅-게이트 트랜지스터)의 드레인에 결합된다.
다수의 실시예들에서, 비 휘발성 메모리 셀 (211-1 ,..., 211-N)의 구성은 소스, 드레인, 플로팅 게이트 또는 다른 전하 저장 구조, 및 제어 게이트를 포함한다. 메모리 셀 (211-1 ,..., 211-N)은 개별적으로 워드 라인 (205-1,..., 205-N)에 결합된 그것들의 제어 게이트를 가진다. NOR 어레이 아키텍쳐는 해당 스트링의 메모리 셀들이 선택 게이트들 사이에 병렬로 결합되는 것을 제외하고, 유사하게 배치될 것이다. 예를 들어, 각각의 메모리 셀의 일단(one end)은 (예를 들어,도 2에 도시된 메모리 셀 (211-N))는 비트 라인에 결합될 수 있고, 동일한 메모리 셀의 타단(another end)은 비트 라인과 평행하게 정렬된 소스라인에 결합될 수 있다. 더욱이, NOR 아키텍쳐는 어레이 내의 메모리 셀에 랜덤 액세스를 제공할 수 있다 (예를 들어, NAND 아키텍쳐와 같은 페이지 기반 액세스와 반대).
동작시, 선택된 워드 라인 (예를 들어, 205-1, ..., 205-N)에 결합된 다수의 메모리 셀들은 그룹으로서 함께 기록 및/또는 판독될 수 있다. 함께 기록 및/또는 판독되는 메모리 셀들의 그룹은 셀 페이지 (예를 들어, 물리적 페이지)로 지칭될 수 있고, 다수의 데이터의 페이지 (예를 들어, 논리 페이지)를 저장할 수 있다. 특정 워드 라인에 결합되고 각각의 데이터 상태들에 함께 프로그래밍되는 다수의 메모리 셀들은 타겟 페이지(target page)로 지칭될 수 있다. 프로그래밍 동작은 이 선택된 워드라인에 결합된 선택된 셀들의 임계 전압(Vt)을 타겟 데이터 상태에 대응하는 원하는 전압 레벨까지 증가시키기 위해서 다수의 프로그램 펄스들, (예를 들어, 16V-20V)을 선택된 워드라인에 인가하는 것을 포함할 수 있다.
판독 동작들은 선택된 셀의 상태를 결정하기 위해 선택된 셀에 결합된 비트 라인의 전압 및/또는 전류 변화를 감지하는 것을 포함할 수 있다. 판독 동작은 선택된 셀이 전도되기 시작할 때 비트 라인을 프리차지 (precharging)하고 방전을 감지하는 단계를 포함할 수 있다. 일 유형의 판독 동작은 램핑 판독 신호(ramping read signal)를 선택된 워드 라인에 인가하는 것을 포함하고, 다른 유형의 판독 동작은 셀들의 상태를 결정하기 위해 선택된 워드 라인에 복수의 이산 판독 신호를 인가하는 것을 포함한다.
도 3a 내지 도 3b는 본 개시의 다수의 실시예에 따른 에러 정정 코드 (ECC) 연산을 위해 사용되는 다수의 데이터 패턴들을 도시한다. 도 3a-3b의 다수의 데이터 패턴들은 매트릭스의 형태로 도시되며, 매트릭스의 각각의 행은 특정 데이터 패턴을 나타내고, 매트릭스의 각각의 컬럼은 데이터 패턴내의 위치를 나타낸다. 실시예들은 다수의 특정 사전 결정된 데이터 패턴들을 결정하는 것으로 제한되지는 않지만,도 3a-3b는 다수의 미리 결정된 데이터 패턴들인 것으로 포함될 수 있는 다수의 데이터 패턴들의 일부만을 도시한다. 도 3a 및 도 3b에 도시된 매트릭스에 포함된 다수의 미리 결정된 데이터 패턴은 매트릭스의 각각의 컬럼에 대한 밸런싱(balancing) 및 이진값 1을 갖는 매트릭스 내의 비트 수를 제한함으로써 메모리 동작을 촉진시키는 것을 용이하게 하기 위해 포함된다. 다수의 미리 결정된 데이터 패턴을 결정하는 것과 관련된 많은 방법들이 이하에서 추가로 설명될 것이다.
다수의 실시예들에서, 인코딩 매트릭스에 포함할 다수의 미리 결정된 데이터 패턴들은 다양한 기준에 기초하여 도 3a-3b에 열거된 다수의 데이터 패턴들로부터 선택될 수 있다. 예를 들어, 다수의 미리 결정된 데이터 패턴들의 각각은 홀수 웨이트(weight) (즉, 이진값 1을 갖는 홀수 비트)만을 갖도록 결정될 수 있다. 다수의 미리 결정된 데이터 패턴에 홀수 웨이트가 포함되어 있는 경우, 제어기는 신드롬(syndrome)(예를 들어, 저장된 ECC 패턴 및 계산된 ECC 패턴상에 XOR 연산의 결과)이 홀수 또는 짝수 웨이트를 갖는지에 기초하여 저장된 코드 워드가 단일 비트 에러 또는 2 비트 에러들을 포함하는지 여부를 결정할 수 있다. 예를 들어, 신드롬이 홀수 웨이트 (예를 들어, 홀수 신드롬)를 가지면, 그러면 제어기는 코드 워드에 단일 비트 에러가 있다고 결론을 내리고 에러 비트를 정정할 수 있다. 예를 들어, 신드롬의 짝수 웨이트 (예를 들어, 짝수 신드롬)를 가지면, 그러면 제어기는 수정하지 않고 2 비트 에러가 있음을 알리도록 구성될 수 있다. 홀수 또는 짝수 신드롬에 기초한 ECC와 관련된 다수의 실시예들이 도 4와 관련하여 이하에서 추가로 설명될 것이다.
다수의 실시예들에서, 다수의 ECC 비트들(예를 들어, 단일 비트 에러를 검출하고 정정하는데 필요한 ECC 비트들의 최소의 수)에 추가의 ECC 비트를 부가함으로써, 사용자가 각각이 홀수 웨이트만을 갖는 해당 미리 결정된 데이터 패턴들을 사용하는 것을 허용한다. 이전 접근법에서, 얼마나 많은 ECC 비트들이 해밍 코드에 필요한지를 결정하기 위한 잘 알려진 공식은 아래와 같다:
Figure 112018107883314-pct00002
여기서, d는 인코딩되는 데이터 워드 내의 비트 수를 나타내고, p는 ECC 비트 수 (예를 들어, 패리티 비트)를 나타낸다. 예를 들어, 해밍 코드를 사용하여 256 비트 데이터 워드를 인코딩하는 경우, 9 ECC 비트가 502 비트 까지 보호할 수 있기 때문에 적어도 9 ECC 비트가 요구되는 반면, 8 ECC 비트는 상기 방정식에 따라 247 비트 까지 보호할 수 있다. 홀수 웨이트를 갖는 해당 데이터 패턴만을 사용하는 것은 짝수 웨이트를 갖는 해당 데이터 패턴이 이용 가능하지 않기 때문에 이용 가능한 데이터 패턴 수가 절반일 수 있다. 이 이벤트에서, 상기 공식은 아래와 같이 본 개시의 다수의 실시예를 적절하게 반영하도록 변형될 수 있다:
Figure 112018107883314-pct00003
이는 아래와 같이 추가로 더 간략화될 수 있다:
Figure 112018107883314-pct00004
여기서, d는 홀수 웨이트가 1보다 큰 데이터 패턴들의 수를 나타낸다. 인코딩된 워드 내의 각각의 데이터 비트는 이들 이용 가능한 패턴 중 하나를 사용하기 때문에, d는 또한 이 방식을 사용하여 인코딩될 수 있는 최대 비트 수이다. 따라서, 본 출원에서 설명된 해밍 거리 4를 갖는 수정된 해밍 코드에 대해, 10 ECC 비트는 최대 502 데이터 비트 까지 인코딩할 수 있는 반면, 9 ECC 비트는 최대 247 데이터 비트를 보호할 수 있다.
도 3a는 홀수 웨이트를 갖는 다수의 데이터 패턴을 도시한다. 예를 들어, 각 데이터 패턴은 1, 3, 5, 7 또는 9의 웨이트를 포함할 수 있고, 7 또는 9의 웨이트를 갖는 데이터 패턴은 도 3a에 도시되지 않는다. 각각의 데이터 패턴에 홀수의 웨이트를 갖는 것은 인코딩되는 데이터 워드가 홀수 또는 짝수 웨이트를 갖는지 여부에 관계없이 결과 코드 워드(예를 들어, 도 4에 도시된 다수의 ECC 비트 및 데이터 워드를 포함하는)의 총 웨이트가 짝수일 것이라는 것을 보장할 수 있다. 결과 코드 워드가 항상 짝수 웨이트를 갖는 것을 보장함으로써, 단일 비트 에러 또는 2 비트 에러들은 신드롬 (예를 들어, 에러 정정 연산의 결과)이 홀수 또는 짝수인지 여부에 기초하여 구별될 수 있다. 실시예가 그렇게 제한되지는 않지만, 각각이 짝수 웨이트를 갖는 다수의 데이터 패턴을 사용하는 것은 결과적인 코드 워드가 항상 짝수 또는 홀수 웨이트를 갖는다는 것을 보장하지 못할 수 있다. 홀수 또는 짝수 신드롬에 기초한 ECC 연산과 관련된 다수의 실시예는 도 4와 관련하여 이하에서 추가로 설명될 것이다. 본 발명의 다수의 실시예에 따라 256 비트로 구성된 사용자 데이터에 대해 ECC 연산을 수행하기 위해, 266 데이터 패턴들이 결정될 수 있고, 여기서, 각각의 데이터 패턴은 ECC 패턴의 10 비트 및 사용자 데이터의 256 비트를 포함하는 코드 워드의 특정 비트에 대응한다.
다수의 실시예들에서, ECC 연산을 수행하기 위해 인코딩 매트릭스 (또는 도 4에 도시된 코드 워드를 디코딩 할 때 디코딩 매트릭스)를 생성할 때, 다수의 미리 결정된 데이터 패턴들은 이들 데이터들 중 3 또는 5의 웨이트를 갖는 데이터 패턴들을 포함할 수 있다. 이렇게 함으로써, 다수의 데이터 패턴들의 총 웨이트는 ECC 연산을 신속하게 처리하도록 축소될 수 있다. 예를 들어, 다수의 미리 결정된 데이터 패턴은 3의 웨이트를 갖는 모든 데이터 패턴들 및 5의 웨이트를 갖는 데이터 패턴들의 일부로부터 결정될 수 있다. ECC 비트와 연관된 1의 웨이트를 갖는 10 개의 상이한 데이터 패턴 및 3의 웨이트로 구성된 120 개의 상이한 데이터 패턴이 있기 때문에, 나머지 136 개의 미리 결정된 데이터 패턴은 5의 웨이트를 갖는 252 개의 상이한 데이터 패턴으로부터 결정될 수 있다. 모든 웨이트 3 항목을 사용하여 웨이트 5 항목을 갖는 코드 워드를 완성하는 것은 최소 총 웨이트를 갖는 코드를 생성하지만, 실시예들은 다수의 미리 결정된 데이터 패턴들을 결정하는 특정 기준에 제한되지 않는다. 예를 들어, 코드 워드는 웨이트 7 및/또는 웨이트 9 데이터 패턴과 같은 더 높은 웨이트 패턴을 사용하여 생성될 수 있다. 총 웨이트를 줄이는 것은 결과 회로부의 속도를 높이거나 크기를 줄이는 것과 같은 장점을 제공할 수 있다 (예를 들어, 논리 XOR 트리의 다수의 XOR 연산을 수행하는데 필요한 회로부). 인코딩 또는 디코딩 매트릭스에서 이진값 1을 갖는 각각의 비트는 논리 XOR 트리에서의 입력을 나타낸다. 논리 XOR 트리의 입력 수를 줄임으로써, 결과 회로부 (또는 도 4에 도시된 코드 워드를 디코딩 할 때 디코딩 매트릭스)의 속도와 크기를 증강되고 축소될 수 있다.
다수의 실시예들에서, 다수의 미리 결정된 데이터 패턴들은, 예를 들어, 특정한 바람직한 동작 특성을 달성하기 위해 선택될 수 있다. 예를 들어, 다수의 미리 결정된 데이터 패턴들의 매트릭스의 각각의 컬럼에 대한 웨이트의 밸런싱을 위해 선택될 수 있다 (예를 들어, 결과 매트릭스는 이진값 1을 갖는 비트 수가 특정 양보다 크지 않게 변하는 대응 컬럼을 포함한다). 밸런싱을 용이하게하기 위해, 도 3a의 다수의 데이터 패턴들은 특정 데이터 패턴에 대해 수행된 다수의 회전 연산(rotation operation)에 기초하여 정렬된다. 도 3a에 도시된, 처음 10 데이터 패턴들을 포함하는 다수의 데이터 패턴 (351)들은 고려하면, 다수의 데이터 패턴 (351)들의 각각은 이진값 1을 갖는 1 비트를 포함한다. 이 예제에서, 데이터 패턴 0은 10 진수 값 "1"을 나타내고, 좌측 원형 시프트 연산이 데이터 패턴 0에 대해 수행될 수 있다. 이 연산은 이진값 1 을 갖는 비트를 왼쪽으로 1 비트 시프트시키고, 최상위 비트(most significant bit)를 가장 오른쪽 위치로 시프트시킨다. 이 결과 데이터 패턴은 데이터 패턴 1로 설정될 수 있고, 도 3a에 도시된 다수의 데이터 패턴 (351)의 이하의 8 개의 데이터 패턴 (2-9)은 데이터 패턴 0에 대해 동일한 동작을 8 번 수행함으로써 생성될 수 있으며, 이는 데이터 패턴 0-9의 각 컬럼에 대해 웨이트를 고르게 배분할 것이다. 본 출원에 설명된 바와 같이 생성된 다수의 데이터 패턴들 (351)은 제 1 패밀리로 지칭될 수 있다.
도 3a는 각각 3의 웨이트를 갖는 다수의 데이터 패턴 (353)을 추가로 도시한다. 다수의 데이터 패턴 (353)들은 상술한 바와 같이 또한 배열될 수 있다. 예를 들어, 데이터 패턴들 (10-19)로 구성된 제 2 패밀리는 데이터 패턴 (10)에 기초하여 생성될 수 있고, 이는 각각이 최하위 비트로서 이진값 1을 갖는 비트를 갖는 다수의 데이터 패턴들 중에서 제 2 최소 십진값을 나타낸다. 예를 들어, 데이터 패턴 10은 데이터 패턴 0 이후의 제 2 최소 십진값을 나타내며, 여기서, 데이터 패턴 0 및 데이터 패턴 10은 둘 모두 는 최하위 비트로서 이진값 1을 갖는 비트를 갖는다. 제 2 패밀리를 생성할 때, 제 3 패밀리는 데이터 패턴 (20)에 대해 수행된 다수의 회전 연산에 기초하여 생성될 수 있으며, 이는 각각이 최하위 비트로 이진값 1을 갖는 비트를 갖는 다수의 데이터 패턴들 중에서 제 3 최소 십진값을 나타낸다. 다수의 회전 연산을 수행하는 것은 각각의 패밀리 내의 이진값 1을 갖는 비트를 고르게 배분할 수 있기 때문에, 다수의 미리 결정된 데이터 패턴을 결정하는 것은 매트릭스의 각각의 컬럼에 대한 웨이트의 밸런싱을 위해 패밀리 기반일 수 있다.
또한, 각각 5의 웨이트를 갖는 다수의 데이터 패턴 (355-1)이 상기에서 설명된 바와 같이 배열될 수 있다. 다수의 데이터 패턴들(355)의 패밀리 (355-2)는, 예를 들어, 데이터 패턴 (380)에 대해 좌측 순환 시프트 연산을 2 회 수행하는 것은 또한 데이터 패턴 (381)의 데이터 패턴 조합과 동일한 데이터 패턴 조합으로 귀결되기 때문에 단지 2 개의 데이터 패턴으로 이루어진다.
도 3b는 매트릭스의 각각의 컬럼에 대한 웨이트의 밸런싱을 위해 다수의 미리 결정된 데이터 패턴들을 결정하는 예를 도시한다. 인코딩 매트릭스 또는 디코딩 매트릭스 (예를 들어, 도 3b에 도시된 인코딩 매트릭스 및 디코딩 매트릭스)을 사용하여 데이터 워드를 인코딩하거나 코드 워드를 디코딩 할 때, 이진값 1을 갖는 각각의 비트는 논리 XOR 트리의 항목을 나타낸다. 매트릭스의 각각의 컬럼에 대한 웨이트의 밸런싱은 각각의 컬럼의 모든 비트에 대해 다수의 XOR 연산을 수행하는 회로의 속도를 향상시키는 장점을 제공할 수 있다. 예를 들어 각각의 컬럼의 웨이트 밸렁싱은 각각의 컬럼의 웨이트 간 갭을 줄일 수 있으며 갭을 줄이는 것은 특정 컬럼의 웨이트가 다른 컬럼보다 훨씬 더 큰 웨이트를 갖는 환경을 피할 수 있다. 이러한 환경을 피하는 것은 회로의 전체 속도가 모든 컬럼들 중에서 가장 큰 웨이트를 갖는 특정 컬럼에 의해 결정되기 때문에 회로의 속도를 향상시킬 수 있다. 본 발명의 다수의 실시예들에 따라 인코딩 매트릭스 (예를 들어,도 3b에 도시된 인코딩 매트릭스)를 사용하여 데이터 워드를 인코딩 하고, 에러 정정 연산을 수행하기 위해 디코딩 매트릭스(예를 들어,도 3b에 도시된 바와 같은 디코딩 매트릭스)를 사용하여 코드 워드를 디코딩하는 것이 이하에서 추가로 설명될 것이다.
다수의 실시예들에서, 각각의 컬럼에 대해 이진값 1을 갖는 다수의 비트 밸런싱(balancing)은 패밀리 기준으로 다수의 미리 결정된 데이터 패턴들을 결정함으로써 달성될 수 있다. 예를 들어, 위의 예제에서 전체 제 2 패밀리를 결정하는 것은 각각의 컬럼에 대해 이진값 1을 가진 다수의 비트들을 자동으로 밸런싱한다. 사용자는 패밀리 기준으로 미리 결정된 다수의 데이터 패턴들을 결정한 후에 미리 결정된 데이터 패턴들의 남은 수를 결정하기 위해 다수의 상이한 메커니즘을 선택할 수 있다. 예를 들어, 256 개의 미리 결정된 데이터 패턴들이 결정될 필요가 있을 때, 사용자는 패밀리 기준으로 미리 결정된 데이터 패턴들 중 250 개를 처음에 결정할 수 있고, 결정된 데이터 패턴을 자유롭게 선택 해제(deselect)하거나 각각의 컬럼에 대해 이진값 1을 갖는 다수의 비트들을 밸런싱하기 위해 추가 데이터 패턴을 선택할 수 있다. 나머지 수의 미리 결정된 데이터 패턴들을 결정하는 것과 관련된 다수의 방법이 이하에서 추가로 설명될 것이다.
일부 실시예들에서, 3 및 5의 웨이트를 갖는 제 1 256 개의 데이터 패턴들은 인코딩 매트릭스를 형성하는 다수의 미리 결정된 데이터 패턴들의 완전한 세트로 결정될 수 있다. 그러나, 그렇게하는 것은 각각의 컬럼의 웨이트의 합이 아래와 같이 귀결될 것이다:
Figure 112018107883314-pct00005
, 여기서 웨이트는 각각의 컬럼에 규칙적으로 배분되지 않는다. 도 3b에 도시된 바와 같이, 각각의 컬럼의 웨이트는 다수의 미리 결정된 데이터 패턴들을 포함하도록 다수의 데이터 패턴 (354)을 결정함으로써 밸런싱될 수 있다. 예를 들어, 도 3b에 도시된, 다수의 미리 결정된 데이터 패턴들 (354)은 데이터 패턴 (130)에 기초하여 생성된 패밀리 내의 데이터 패턴들 중 일부를 포함하는 제 1 세트의 다수의 데이터 패턴들 (10-130), 제 2 세트의 다수의 데이터 패턴들(140-269), 및 데이터 패턴 (380)으로 이루어진다. 도 3b에 도시된 바와 같이, 데이터 패밀리 (130)에 기초하여 생성된 패밀리 내의 다수의 데이터 패턴 (357)은 선택되지 않지만, 동일한 패밀리 내의 단지 5 개의 데이터 패턴 만이 다수의 미리 결정된 데이터 패턴 (354)의 일부로서 선택된다. 그러나, 실시예들은 이러한 데이터 패턴들에 제한되지 않는다. 이 경우에, 각각의 컬럼의 웨이트는 아래와 같다:
Figure 112018107883314-pct00006
.여기서, 웨이트는 각각의 컬럼에 규칙적으로 배분된다. 각각의 칼럼에 대해 교대로 103 및 105의 웨이트를 갖는 인코딩 매트릭스는 각각의 칼럼에 대해 105의 웨이트를 갖는 인코딩 매트릭스에 대해 회로부의 크기 (예를 들어, 다수의 XOR 연산을 수행하기 위해 요구되는 회로부)를 감소시키는 장점을 가질 수 있다. 데이터 패턴 (380)이 도 3b에 도시된 이 데이터 패턴 (381) 대신에 선택된다. 데이터 패턴 (381)의 사용은 104의 웨이트를 갖는 모든 컬럼과의 완벽한 밸런스로 귀결되지만, 데이터 패턴 (380)이 선택되는데, 왜냐하면 그렇게 함으로써 사용자 데이터의 특정 비트에 각각 대응하는 다수의 미리 결정된 데이터 패턴 (10-265) 의 각각의 컬럼은 홀수 웨이트를 가질 수 있다.다수의 실시예들에서, 각각의 컬럼에 대한 홀수 웨이트를 갖는 것은 완전히 소거된 데이터 워드 (예를 들어, 이진값 1을 갖는 모든 비트를 갖는 데이터 워드)가 이진값 1을 갖는 모든 비트의 대응하는 ECC 패턴을 갖는 것을 보장할 수 있고, 이진값 1을 갖는 모든 비트를 갖는 코드 워드 (예를 들어, 데이터 워드 및 ECC 비트를 포함하는 워드)는 NOR 아키텍쳐에서 유효한 워드이다.실시예들이 이에 제한되지는 않지만, 각각의 컬럼에 대해 짝수 웨이트를 갖는 인코딩 매트릭스를 갖는 완전히 소거된 데이터 워드는 이진값 1을 갖는 모든 비트들의 대응하는 ECC 패턴으로 귀결되지 않을 수 있고, 대응하는 코드 워드는 유효한 코드 워드가 아닐 수 있다. 도 3b에 도시된 다수의 미리 결정된 데이터 패턴 (354)의 완전한 세트는 아래와 같다 :
Figure 112018107883314-pct00007
Figure 112018107883314-pct00008
Figure 112018107883314-pct00009
Figure 112018107883314-pct00010
Figure 112018107883314-pct00011
Figure 112018107883314-pct00012
그러나, 본 개시의 다수의 실시예는 매트릭스의 각각의 컬럼에 대해 다수의 1을 밸런싱하는 특정 방법에 제한되지 않는다.
상기 세트의 다수의 미리 결정된 데이터 패턴들 (354)은 256 비트 데이터 워드를 인코딩하는데 사용될 수 있는 인코딩 매트릭스를 구성할 수 있다. 인코딩 할 때, 인코딩 매트릭스를 사용함으로써 256 비트 데이터 워드에 기초하여 10 개의 추가 ECC 비트가 생성될 수 있고 메모리 (예를 들어, 도 1에 도시된 메모리 (110))에 저장될 수 있다. 본 발명의 다수의 실시예에 따라 에러 정정 연산을 수행 할 때, 266- 비트 코드 워드는 이하의 10 개의 추가 데이터 패턴을 포함할 수 있는 디코딩 매트릭스를 사용함으로써 디코딩될 수 있다 :
Figure 112018107883314-pct00013
결과적으로,도 3b에 도시된, 디코딩 매트릭스는 인코딩 매트릭스를 구성하는 다수의 데이터 패턴들 (354)에 추가하여 다수의 데이터 패턴들 (352)을 포함하는 266 개의 데이터 패턴을 포함할 수 있다.
다수의 실시예들에서, 다수의 미리 결정된 데이터 패턴들의 각각은 코드 워드의 각각의 대응하는 비트에 할당될 수 있다. 예를 들어, 제 1 패밀리의 각각의 데이터 패턴이 오직 웨이트 1의 항목만을 포함하는 상기 예시된 제 1 패밀리는 ECC 패턴의 각각의 대응하는 비트에 할당될 수 있다. 예를 들어, 데이터 패턴 0은 ECC 패턴의 비트 0에 할당될 수 있다. 그런 다음, 3 또는 5의 웨이트를 포함하는 각각의 데이터 패턴은 이진 데이터 워드 (예를 들어, 데이터 워드의 256 비트에 각각 할당된 데이터 패턴 (10-265))의 각각의 대응하는 비트에 할당될 수 있는 나머지 수의 미리 결정된 데이터 패턴들.
다수의 실시예들에서, 제어기는 다수의 미리 결정된 데이터 패턴에 기초하여 ECC 패턴을 생성할 수 있다. 예를 들어, 제어기는 이진값 1을 갖는 데이터 워드의 각각의 비트에 대응하는 다수의 미리 결정된 데이터 패턴들을 결정할 수 있다. 다수의 미리 결정된 데이터 패턴을 결정한 후에, 그런 다음 제어기는 ECC 패턴을 생성하기 위해 다수의 미리 결정된 데이터 패턴 각각에 대해 다수의 XOR 연산을 수행할 수 있다.
이하는 본 발명의 실시예에 따른 다수의 미리 결정된 데이터 패턴들을 이용하여 ECC 패턴을 생성하는 예제이다. 다수의 미리 결정된 데이터 패턴들의 각각은 특정 패턴에 제한되지 않지만, 다수의 미리 결정된 데이터 패턴들은 도 3b에 도시된 다수의 미리 결정된 데이터 패턴의 것과 유사할 수 있다.
일부 실시예들에서, 사용자 데이터는 이진 데이터 워드의 형태 일 수 있고, 이진값 1을 갖는 제 1 3 비트들을 포함할 수 있고 나머지 253 비트들은 이진값 0을 가질 수 있다. 따라서, 예시적인 이진 데이터 워드는:
111000000....000
여기서, 예시적인 2 진 데이터 워드의 처음 3 비트만이 이진값 1을 갖는다. 이진값 1을 갖는 데이터 워드의 비트들의 수 및 위치를 결정할 때, 제어기는 이진값 1을 갖는 각각의 비트에 대응하는 다수의 미리 결정된 데이터 패턴들을 결정할 수 있다. 이 예제에서,도 3b에 따르면, 예시적인 이진 데이터 워드의 비트 0, 비트 1 및 비트 2에 대한 미리 결정된 데이터 패턴들은 다음과 같다 :
Figure 112018107883314-pct00014
예시적인 이진 데이터 워드의 비트에 대응하는 다수의 미리 결정된 데이터 패턴들을 결정할 때, 제어기는 다수의 XOR 연산을 수행할 수 있다. 이 예제에서 제어기는 비트 0과 비트 1에 XOR 연산을 수행하고, XOR 연산의 결과 (비트 0과 비트 1에서)와 비트 2에 다른 XOR 연산을 수행한다. 신드롬은
Figure 112018107883314-pct00015
제 1 XOR 연산을 수행한 후에, 제어기는 아래와 같이 다른 XOR 연산을 또한 수행할 수 있다:
Figure 112018107883314-pct00016
제어기가 이진값 1을 갖는 각각의 비트에 다수의 XOR 연산들 수행을 완료한 때, 제어기는 ECC 패턴으로 다수의 XOR 연산들의 결과를 결정할 수 있다. 따라서, 예제에 따라, 제어기는 아래와 같이 ECC 패턴을 결정할 수 있다:
0 0 0 0 0 1 0 1 0 1
ECC 패턴을 생성한 때, 제어기는 코드 패턴으로서 ECC 패턴을 갖는 예시적인 이진 데이터 워드를 인코딩할 수 있고, 코드 워드를 메모리에 기록할 수 있다. 본 발명의 다수의 실시예에 따른 코드 워드에서 ECC 패턴을 사용하여 단일 비트 에러 및 2 비트 에러를 검출하고 정정하는 것은 도 4와 관련하여 이하에서 추가로 설명될 것이다.
도 4는 본 개시의 다수의 실시예에 따른 에러 정정 코드 (ECC) 연산을 수행하기 위한 흐름도를 도시한다. 다수의 실시예들에서, 제 1 수의 ECC 비트들을 포함하는 ECC 패턴이 단계 (460)에서 사용자 데이터 및 인코딩 매트릭스에 기초하여 생성될 수 있다. 제 1 수의 ECC 비트는 도 3b와 관련하여 전술한 바와 같이 생성될 수 있고 코드 워드로서 사용자 데이터와 함께 저장될 수 있다. 제 2 수의 ECC 비트들을 포함하는 ECC 패턴은 단계 (462)에서 인코딩 매트릭스 및 메모리로부터 판독된 코드 워드에 기초하여 생성될 수 있다. 일단 코드 워드가 메모리로부터 판독되면, 단계 (464)에서 메모리로부터 판독된 데이터 워드에 기초하여 생성된 계산된 ECC 패턴 및 저장된 ECC 패턴에 대해 XOR 연산이 수행될 수 있다.
다수의 실시예들에서, 제어기 (예를 들어, 도 1에 설명된 제어기 (108))는 소위 신드롬(syndrome)인 계산된 ECC 패턴 및 저장된 ECC 패턴에 대한 XOR 연산의 결과에 기초하여 메모리로부터 판독된 이진 코드 워드가 잘못된 비트들(예를 들어, 에러들)을 가지지 않는다고 결정할 수 있다. 예를 들어, 신드롬이 0이면, 제어기는 단계 (466)에 도시된 바와 같이 저장된 코드 워드에 에러가 없다고 결정할 수 있다. 더구나, 제어기는 신드롬이 특정의 미리 결정된 데이터 패턴에 대응하는지 여부에 기초하여 이진 코드 워드가 단일 비트 에러 또는 2 비트 에러를 갖는지 여부를 결정할 수 있다. 예를 들어, 다수의 미리 결정된 데이터 패턴 각각이 홀수 웨이트를 갖는 경우, 이진 코드 워드 내의 단일 비트 에러는 홀수 신드롬으로 귀결된다. 그에 반해서, 이 진 코드 워드의 2 비트 에러는 짝수 신드롬으로 귀결될 수 있다. 단일 비트 에러를 정정하고 2 개의 비트 에러를 검출하는 것에 관한 다수의 실시예가 이하에서 추가로 상세하게 설명될 것이다.
이하의 문단들은 메모리로부터 판독된 코드 워드에 기초하여 계산된 ECC 패턴을 생성하고 단일 비트 에러를 검출 및 정정하거나 또는 2 비트 에러를 검출하는 예들을 설명한다. 다수의 미리 결정된 데이터 패턴들의 각각은 특정 패턴들에 제한되지 않지만, 다수의 미리 결정된 데이터 패턴들은 도 3b에 도시된 다수의 미리 결정된 데이터 패턴의 것과 유사할 수 있다. 더구나, ECC 패턴 및 데이터 워드는 도 3b와 관련하여 설명된 이전의 예제에 도시된 ECC 패턴 및 데이터 워드의 것과 유사할 수 있다.
일부 실시예들에서, 메모리에 저장된 데이터 워드는 에러(예를 들어, 판독 또는 프로그램 방해에 기인한 것에 제한되지는 않지만) 일 수 있으며 단일 비트 에러를 가질 수 있다. 예를 들어, 도 3b와 관련하여 앞에서 설명된 예시적인 이진 데이터 워드는 다음과 같이 데이터 비트 1에 단일 비트 에러를 가질 수 있다:
Figure 112018107883314-pct00017
,이는 이진값 1을 갖는 두개의 비트 및 이진값 0을 갖는 나머지 비트들을 갖는 에러 데이터 워드로 귀결된다. 단계 (462)에서, 제어기는 에러 데이터 워드에 기초하여 제 2 수의 ECC 비트를 포함하는 계산된 ECC 패턴을 생성할 수 있으며, 제어기는 먼저 에러 데이터의 각각의 대응하는 비트의 다수의 미리 결정된 데이터 패턴들을 결정하고, 결정된 다수의 미리 결정된 데이터 패턴들에 기초하여 계산된 ECC 패턴을 생성할 수 있다. 이 예제에서, 제어기는 아래와 같이 각각의 대응하는 데이터의 다수의 미리 결정된 데이터 패턴들에 대해 XOR 연산을 수행한다:
Figure 112018107883314-pct00018
XOR 연산은 위의 예시된바와 같이 계산된 ECC 패턴이 "0 0 0 0 0 1 1 0 1 1"로 귀결될 것이다. 계산된 ECC 패턴을 생성 할 때, 제어기는 단계 (464)에서 메모리로부터 판독된 저장된 ECC 패턴 및 계산된 ECC 패턴에 대해 XOR 연산을 수행할 수 있다. 이 예제에서, 제어기는 메모리에 앞에서 기록된 저장된 ECC 패턴을 판독하고 다음과 같이 XOR 연산을 수행한다:
Figure 112018107883314-pct00019
단계 (465)에서, 제어기는 신드롬이 0이 아니기 때문에 메모리로부터 판독된 이진 코드 워드가 에러가 있다고 결정할 수 있다. 추가로 단계 (467)에서, 제어기는 신드롬이 홀수 (예를 들어, 홀수 웨이트를 가짐)이기 때문에 이진 코드 워드 내에 단일 비트 에러가 있다고 결정할 수 있다. 생성된 신드롬은 이진 데이터 워드의 데이터 비트 1의 미리 결정된 데이터 패턴에 대응하기 때문에, 제어기는 이진 데이터 워드 1의 데이터 비트 1이 에러라고 결정할 수 있다. 이 예제는 데이터 비트 1이 에러라는 것을 보여주기 때문에, 신드롬은 코드 워드의 에러 비트를 정확하게 결정한다. 신드롬이 다수의 미리 결정된 데이터 패턴들 중 어느 하나에 대응하는 것을 확인한 때, 제어기는 단계 (470)에서 데이터 비트 1을 플립(flip) ("0"에서 "1")시킴으로써 에러를 정정할 수 있다.
일부 실시예들에서, 메모리에 저장된 데이터 워드 대신에 ECC 패턴이 에러(예를 들어, 판독 또는 프로그램 방해에 기인한 것에 제한되지는 않지만) 일 수 있으며 단일 비트 에러를 가질 수 있다. 이 예제에서, 도 3b와 관련하여 앞에서 설명된 ECC 패턴은 다음과 같이 데이터 비트 1에 단일 비트 에러를 가질 수 있다:
Figure 112018107883314-pct00020
단계 (462)에서, 제어기는 에러가 없는 데이터 워드에 기초하여 계산된 ECC 패턴을 생성할 수 있다. 따라서, 계산된 ECC 패턴은 단일 비트 에러없이 저장된 ECC 패턴의 것과 동일 할 것이며, 계산된 ECC 패턴은 "0 0 0 0 0 1 0 1 0 1"이 될 것이다. 단계 (464)에서, 계산된 ECC 패턴을 생성할 때, 제어기는 계산된 ECC 패턴 및 에러 저장된 ECC 패턴에 대해 XOR 연산을 수행할 수 있다. 이 예제에서, 신드롬은 :
Figure 112018107883314-pct00021
단계 (467)에서, 제어기는 결과적인 신드롬이 홀수 신드롬이기 때문에 단일 비트 에러가 있다고 결정할 수 있다. 제어기는 신드롬이 도 3b에 도시된 다수의 미리 결정된 데이터 패턴들에 따른 ECC 패턴의 비트 1에 대응한다고 결정할 수 있다. 단계 (470)에서, 제어기는 상기 생성된 신드롬에 기초하여 에러 비트를 정정할 수 있다.
일부 실시예들에서, 메모리에 저장된 데이터 워드는 에러(예를 들어, 판독 또는 프로그램 방해에 기인한 것에 제한되지는 않지만) 일 수 있으며 두개의 비트 에러들을 가질 수 있다. 이 예제에서, 문단 [0042]에 도시된 예시적인 이진 데이터 워드는 다음과 같이 데이터 비트 1 및 데이터 비트 3에서 2 개의 비트 에러를 갖는다:
Figure 112018107883314-pct00022
, 이는 에러가 있는 데이터 워드로 귀결된다. 단계 (462)에서, 제어기는 에러가 있는 데이터 워드에 기초하여 계산된 ECC 패턴을 생성할 수 있다. 이 예에서, 제어기는 먼저 다음과 같이 이진값 1을 갖는 에러 데이터 워드의 각각의 비트에 대응하는 다수의 미리 결정된 데이터 패턴들을 결정하도록 구성된다:
Figure 112018107883314-pct00023
다수의 미리 결정된 데이터 패턴을 결정한 후에, 제어기는 단계 (464)에서 각각의 결정된 미리 결정된 데이터 패턴들에 대해 다수의 XOR 연산을 수행할 수 있다. 이 예제에서, 제어기는 먼저 다음과 같이 비트 0 및 비트 2에 대응하는 미리 결정된 데이터 패턴에 대해 XOR 연산을 수행한다 :
Figure 112018107883314-pct00024
XOR 연산을 수행할 때, 제어기는 다음과 같이 이전 XOR 연산의 결과와 에러 데이터 워드의 비트 3에 대응하는 미리 결정된 데이터 패턴에 대해 XOR 연산을 수행하도록 또한 구성될 수 있다:
Figure 112018107883314-pct00025
다수의 XOR 연산을 수행 할 때, 제어기는 XOR 연산의 결과를 계산된 ECC 패턴이라고 결정할 수 있다. 따라서,이 예제에서, 제어기는 계산된 ECC 패턴을 "0 0 0 0 1 0 0 0 1 1"로 결정한다.단계 (464)에서, 제어기는 저장된 ECC 패턴을 판독하고 다음과 같이 저장된 ECC 패턴 및 계산된 ECC 패턴에 대해 다른 XOR 연산을 수행할 수 있다:
Figure 112018107883314-pct00026
단계 (467)에서, 제어기는 신드롬이 짝수 신드롬이기 때문에 코드 워드가 2 개의 비트 에러를 갖는다고 결정할 수 있다. 제어기는 정정하지 않고 단계 (468)에서 예시된 바와 같이 2 비트 에러가 있음을 알리도록 구성될 수 있다.
일부 실시예들에서, 저장된 ECC 패턴은 2 비트 에러들을 가질 수 있다. 이 예제에서, 문단 [0042]에 도시된 예시적인 이진 데이터 워드는 다음과 같이 데이터 비트 1 및 데이터 비트 5에서 2 개의 비트 에러를 갖는다:
Figure 112018107883314-pct00027
단계 (462)에서, 제어기는 에러가 없는 데이터 워드에 기초하여 계산된 ECC 패턴을 생성할 수 있다. 따라서, 계산된 ECC 패턴은 저장된 ECC 패턴의 것과 동일 할 것이며, 계산된 ECC 패턴은 : 0 0 0 0 0 1 0 1 0 1일 것이다. 계산된 ECC 패턴을 생성 할 때, 제어기는 단계 (464)에서 에러가 있는 저장된 ECC 패턴 및 계산된 ECC 패턴에 대해 XOR 연산을 수행할 수 있다. 신드롬은 :
Figure 112018107883314-pct00028
일 수 있다.
단계 (467)에서, 제어기는 신드롬이 짝수 신드롬 (예를 들어, 짝수 웨이트를 가짐)이기 때문에 코드 워드가 2 개의 비트 에러를 갖는다 고 결정할 수 있다. 결과가 임의의 미리 결정된 데이터 패턴에 대응하지 않는다고 결정하면, 제어기는 단계 (468)에 도시된 바와 같이 2 비트 에러가 있다는 것을 정정하지 않고 알리도록 구성될 수 있다.
일부 실시예들에서, 저장된 ECC 패턴 및 저장된 데이터 워드 각각은 단일 비트 에러를 가질 수 있다. 이 예제에서, 문단 [0042]에 예시된 예시적인 이진 데이터 워드는 다음과 같이 데이터 비트 1에 단일 비트 에러를 갖는다 :
Figure 112018107883314-pct00029
또한, 문단 [0042]에 도시된 예시적인 저장된 ECC 패턴은 다음과 같이 데이터 비트 1에 단일 비트 에러를 가질 수 있다:
Figure 112018107883314-pct00030
이전 예제에 예시된 바와 같이, 단계 (462)에서 제어기에 의해 생성된 계산된 ECC 패턴은 다음과 같을 수 있다:
Figure 112018107883314-pct00031
단계 (464)에서, 계산된 ECC 패턴을 생성 할 때, 제어기는 에러있는 저장된 ECC 패턴 및 에러있는 저장된 데이터 워드에 기초하여 생성된 계산된 ECC 패턴에 대해 XOR 연산을 수행할 수 있다. 이 예제에서, 신드롬은 :
Figure 112018107883314-pct00032
일 수 있다.
단계 (467)에서, 제어기는 신드롬이 짝수 신드롬이기 때문에 이진 코드 워드가 2 개의 비트 에러를 갖는다고 결정할 수 있다. 결과가 임의의 미리 결정된 데이터 패턴에 대응하지 않는다고 결정하면, 제어기는 2 비트 에러가 있다는 것을 정정하지 않고 알리도록 구성될 수 있다.
특정 실시예들이 본 출원에서 예시되고 설명되었지만, 이 기술분야의 숙련자들은 동일한 결과들을 달성하기 위해 산출된 배열이 도시된 특정 실시예들로 대체될 수 있다는 것을 이해할 것이다. 본 명세서는 본 개시 내용의 다양한 실시예들의 개조들 또는 변형예들을 커버하도록 의도된다. 상기 설명은 제한적인 것이 아닌, 예시적인 방식으로 이루어졌다는 것이 이해될 것이다. 상기 실시예들의 조합, 및 본 출원에서 구체적으로 설명되지 않은 다른 실시예들이 상기 설명을 검토할 때 이 기술분야의 숙련자들에게 명백할 것이다. 본 개시 내용의 다양한 실시예들의 범위는 상기 구조들 및 방법들이 사용되는 다른 응용들을 포함한다. 그러므로, 본 개시 내용의 다양한 실시예들의 범위는 첨부된 청구항들이 권리가 있는 전체 범위의 균등물들과 함께, 첨부된 청구항들을 참조하여 결정되어야 한다.
이전의 상세한 설명에서, 다양한 특징들은 본 개시 내용을 간소화하기 위해 단일 실시예에서 함께 그룹화된다. 본 개시의 이러한 방법은 본 개시의 개시된 실시예들이 각각의 청구항에 명확하게 열거되는 보다 많은 특징들을 사용해야 한다는 의도를 반영한 것으로 해석되지 않을 것이다. 오히려, 이하의 청구항들을 반영하는, 주된 주제는 단일 개시된 실시예의 모든 특징부들보다 작을 수 있다. 따라서, 이하의 청구항들은 이로서 상세한 설명에 통합되고, 각각의 청구항은 별개의 실시예로서 그것 자체를 주장할 수 있다.

Claims (22)

  1. 에러 정정 코드(ECC : error correction code) 연산을 수행하기 위한 장치에 있어서,
    메모리; 및
    상기 메모리에 저장된 코드 워드(codeword)에 대해 ECC 연산을 수행하도록 구성된 제어기를 포함하되,
    상기 코드 워드는 제 1 수의 ECC 비트들을 포함하고, 상기 제 1 수의 ECC 비트들은 다수의 이용 가능한 데이터 패턴들로부터 선택된 다수의 미리 결정된 데이터 패턴들을 포함하는 인코딩 매트릭스에 기초하여 생성되고; 및
    상기 인코딩 매트릭스의 각각의 행(row) 및 컬럼(column)은 홀수 웨이트(weight)를 갖고, 웨이트는 이진값 1을 갖는 다수의 비트들이고,
    상기 제 1 수의 ECC 비트들은 제 2 수의 ECC 비트들과 비교되어 상기 코드 워드 내의 에러를 검출하고 상기 코드 워드에서 상기 에러를 정정하고 및/또는 상기 코드 워드에서 2 개의 에러를 검출하도록 상기 제어기에 지시하고, 상기 제 2 수의 ECC 비트들은 상기 인코딩 매트릭스 및 상기 메모리로부터 판독된 상기 코드 워드에 기초하여 생성되는, 장치.
  2. 제 1 항에 있어서, 상기 제 1 수의 ECC 비트들은 해밍 거리 3 해밍 코드(Hamming code) 코드보다 하나 더 많은 비트를 포함하고, 상기 인코딩 매트릭스의 각각의 행은 홀수 웨이트를 포함하는, 장치.
  3. 삭제
  4. 제 1 항 내지 제 2 항 중 어느 한 항에 있어서, 상기 제어기는, 상기 제 1 수의 ECC 비트들 및 상기 제 2 수의 ECC 비트들에 수행된 XOR 연산이 홀수 또는 짝수 웨이트를 포함하는지의 결정에 기초하여, 상기 메모리로부터 판독된 상기 코드 워드가 단일 에러 또는 2 개의 에러를 포함하는지 여부를 결정하도록 구성된, 장치.
  5. 에러 정정 코드(ECC : error correction code) 연산을 수행하기 위한 장치에 있어서,
    메모리; 및
    제어기로서,
    사용자 데이터 및 인코딩 매트릭스에 기초하여 제 1 수의 ECC 비트들을 생성하고,
    상기 인코딩 매트릭스의 각각의 행은 홀수 웨이트를 갖고, 웨이트는 이진값 1을 갖는 다수의 비트들이고;
    상기 웨이트는 미리 결정된 데이터 패턴들의 각각의 위치에 밸런싱(balance)되어 상기 인코딩 매트릭스는 웨이트가 특정 양보다 크지 않게 변화하는 상기 미리 결정된 데이터 패턴들의 대응하는 위치들을 포함하고,
    상기 사용자 데이터 및 상기 제 1 수의 ECC 비트들을 포함하는 코드 워드를 상기 메모리에 기록하고;
    상기 인코딩 매트릭스 및 상기 메모리로부터 판독된 상기 코드 워드에 기초하여 제 2 수의 ECC 비트들을 생성하도록 구성된, 상기 제어기를 포함하는, 장치.
  6. 제 5 항에 있어서, 상기 웨이트는 상기 인코딩 매트릭스의 컬럼들에 규칙적으로 배분되어 제 1 컬럼으로 시작하는 하나 걸러서의 컬럼은 제 1 웨이트를 갖고, 제 2 컬럼으로 시작하는 하나 걸러서의 컬럼은 상기 제 1 웨이트와 다른 제 2 웨이트를 갖고, 상기 웨이트는 이진값 1을 갖는 다수의 비트들인, 장치.
  7. 제 5 항 내지 제 6 항 중 어느 한 항에 있어서, 상기 제어기는, XOR 연산의 결과가 0 인 것에 응답하여 상기 코드 워드에 에러가 없다고 결정하도록 구성되고, 상기 XOR 연산은 상기 제 1 수의 ECC 비트들 및 상기 제 2 수의 ECC 비트들에 대해 수행되는, 장치.
  8. 제 5 항 내지 제 6 항 중 어느 한 항에 있어서, 상기 제어기는 상기 제 1 수의 ECC 비트들 및 상기 제 2 수의 ECC 비트들에 대해 수행된 XOR 연산에 기초하여, 상기 XOR 연산의 결과가 0이 아니고, 홀수 웨이트를 갖고, 디코딩 매트릭스를 형성하는 다수의 미리 결정된 데이터 패턴들 중 하나에 대응하는 것에 응답하여 상기 코드 워드에 단일 비트 에러를 검출하고 정정하고; 및
    XOR 연산의 결과가 0이 아니고, 짝수 웨이트를 갖는 것에 응답하여 상기 코드 워드에 2 개의 에러들을 검출하도록 구성된, 장치.
  9. 에러 정정 코드(ECC : error correction code) 연산을 수행하기 위한 장치에 있어서,
    메모리; 및
    제어기로서,
    ECC 연산들을 위해 인코딩 매트릭스를 사용하고, 상기 인코딩 매트릭스는:
    다수의 미리 결정된 데이터 패턴들을 포함하고, 상기 다수의 미리 결정된 데이터 패턴들의 각각은 상기 인코딩 매트릭스의 개개의 행(row)에 대응하고, 홀수 웨이트를 포함하고, 웨이트는 이진값 1을 갖는 다수의 비트들을 포함하고;
    상기 인코딩 매트릭스의 각각의 컬럼은 홀수 웨이트를 갖고, 여기서 다수의 다른 홀수 웨이트들이 상기 인코딩 매트릭스의 컬럼들에 교대로 반복되고;
    사용자 데이터 및 상기 인코딩 매트릭스 내의 다수의 미리 결정된 데이터 패턴들에 기초하여 제 1 수의 ECC 비트들을 생성하고;
    상기 사용자 데이터 및 상기 제 1 수의 ECC 비트들을 포함하는 코드 워드를 상기 메모리에 기록하도록 구성된, 상기 제어기를 포함하고,
    상기 제 1 수의 ECC 비트들은 제 2 수의 ECC 비트들과 비교되어 상기 코드 워드 내의 에러를 검출하고 상기 코드 워드에서 상기 에러를 정정하고 및/또는 상기 코드 워드에서 2 개의 에러를 검출하도록 상기 제어기에 지시하고, 상기 제 2 수의 ECC 비트들은 상기 인코딩 매트릭스 및 상기 메모리로부터 판독된 상기 코드 워드에 기초하여 생성되는, 장치.
  10. 제 9 항에 있어서, 상기 제 1 수의 ECC 비트들은 해밍 거리 3 해밍 코드(Hamming code) 코드보다 하나 더 많은 비트들을 포함하여 상기 미리 결정된 데이터 패턴들의 각각은 홀수 웨이트를 포함하는, 장치.
  11. 제 9 항 내지 제 10 항 중 어느 한 항에 있어서, 상기 다수의 미리 결정된 데이터 패턴들은 상기 메모리의 메모리 셀들의 어레이와 관련된 적어도 하나의 동작 특성에 기초하여 결정되는, 장치.
  12. 제 9 항 내지 제 10 항 중 어느 한 항에 있어서, 상기 인코딩 매트릭스내 웨이트는 상기 미리 결정된 데이터 패턴들의 각각의 위치에서 밸런싱(balance)되어 상기 인코딩 매트릭스는 웨이트가 특정 양 보다 많지 않게 변화하는 상기 미리 결정된 데이터 패턴들의 대응하는 위치를 포함하는, 장치.
  13. 사용자 데이터를 인코딩하는 방법에 있어서,
    사용자 데이터 및 인코딩 매트릭스에 기초하여 제 1 수의 에러 정정 코드 (ECC) 비트들을 생성하는 단계로서,
    상기 인코딩 매트릭스의 각각의 컬럼은 홀수 웨이트를 포함하고, 웨이트는 이진값 1을 갖는 다수의 비트들이고;
    다수의 다른 홀수 웨이트들이 상기 인코딩 매트릭스의 컬럼들에 교대로 반복되고;
    상기 사용자 데이터 및 상기 제 1 수의 ECC 비트들을 포함하는 코드 워드를 메모리에 저장하는 단계; 및
    상기 코드 워드에 대한 ECC 연산을 수행하는 단계를 포함하되, 상기 ECC 연산은 상기 ECC 연산의 결과가 0이 아니고 짝수 웨이트를 갖는 것에 응답하여 상기 코드 워드의 2 개의 에러들을 검출하는 데 사용되고,
    상기 ECC 연산을 수행하는 단계는 상기 제 1 수의 ECC 비트들을 제 2 수의 ECC 비트들과 비교하여 상기 코드 워드에서 에러를 정정하고 및/또는 상기 코드 워드에서 2 개의 에러를 검출하도록 제어기에 지시하는 단계를 포함하고,
    상기 제 1 수의 ECC 비트들은 상기 메모리로부터 판독되고; 및
    상기 제 2 수의 ECC 비트들은 상기 인코딩 매트릭스 및 상기 메모리로부터 판독된 상기 코드 워드에 기초하여 생성되는, 방법.
  14. 제 13 항에 있어서, 상기 제 1 수의 ECC 비트들을 생성하는 단계는 이진값 1을 갖는 상기 사용자 데이터의 각각의 비트에 대응하는 상기 인코딩 매트릭스를 형성하는 제 1 세트의 미리 결정된 데이터 패턴들의 각각에 대해 다수의 XOR 연산을 수행하는 단계를 포함하는, 방법.
  15. 삭제
  16. 제 13 항에 있어서, 상기 방법은 상기 제 1 수의 ECC 비트들 및 상기 제 2 수의 ECC 비트들에 대해 수행되는 XOR 연산의 결과가 0이 아니고, 홀수 웨이트를 갖고, 디코딩 매트릭스를 형성하는 제 2 세트의 미리 결정된 데이터 패턴들 중 하나에 대응하는 것에 응답하여 상기 코드 워드 내의 단일 비트 에러를 검출하고 상기 제어기에 정정하도록 지시하는 단계를 포함하고, 상기 제 2 세트의 미리 결정된 데이터 패턴들의 각각은 상기 코드 워드의 각각의 비트에 대응하고;
    상기 XOR 연산의 결과가 0이 아니고 짝수 웨이트를 갖는 것에 응답하여 상기 코드 워드의 2 비트 에러를 검출하는 단계를 포함하는, 방법.
  17. 에러 정정 코드 (ECC) 연산을 수행하는 방법에 있어서,
    사용자 데이터 및 인코딩 매트릭스에 기초하여 에러 정정 코드(ECC) 연산 동안 사용하기 위한 인코딩 매트릭스를 생성하는 단계로서, 상기 인코딩 매트릭스는 :
    다수의 미리 결정된 데이터 패턴들, 상기 다수의 데이터 패턴들의 각각은 홀수 웨이트를 갖고, 웨이트는 이진값 1을 갖는 다수의 비트들이고, 상기 인코딩 매트릭스의 개개의 행에 대응하고; 및
    다수의 컬럼들을 포함하고, 다수의 다른 웨이트들이 상기 인코딩 매트릭스의 다수의 컬럼들에 교대로 반복되고; 및
    상기 다수의 미리 결정된 데이터 패턴들의 각각을 코드 워드의 특정 비트들에 할당하는 단계로서, 상기 코드 워드는 사용자 데이터 및 다수의 ECC 비트들을 포함하는, 상기 할당하는 단계; 및
    상기 다수의 미리 결정된 데이터 패턴들에 기초하여 다수의 상기 ECC 비트들을 생성하는 단계로서, 상기 다수의 미리 결정된 데이터 패턴들의 각각은 홀수 웨이트를 갖는, 상기 생성하는 단계를 포함하고,
    상기 인코딩 매트릭스를 생성하는 단계는 상기 인코딩 매트릭스의 각각의 위치의 웨이트(weight)를 최소화하기 위한 데이터 패턴을 선택하는 단계를 포함하는, 방법.
  18. 제 17 항에 있어서, 상기 방법은 이진값 1의 단일 비트를 갖는 상기 다수의 미리 결정된 데이터 패턴들의 각각을 상기 다수의 ECC 비트들의 각각의 대응하는 비트에 할당하는 단계를 포함하는, 방법.
  19. 제 17 항에 있어서, 상기 인코딩 매트릭스를 생성하는 단계는 다수의 이용 가능한 데이터 패턴들로부터 데이터 패턴들을 선택하는 단계와, 이진값 1을 갖는 더 많은 비트들을 갖는 데이터 패턴을 선택하기 전에 이진값 1을 갖는 더 적은 비트들을 갖는 데이터 패턴들을 선택하는 단계를 포함하는, 방법.
  20. 삭제
  21. 삭제
  22. 삭제
KR1020187031675A 2016-04-05 2017-04-03 메모리에서 에러 정정 코드(ecc) 연산 KR102102828B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/091,112 2016-04-05
US15/091,112 US10176040B2 (en) 2016-04-05 2016-04-05 Error correction code (ECC) operations in memory
PCT/US2017/025688 WO2017176613A1 (en) 2016-04-05 2017-04-03 Error correction code (ecc) operations in memory

Publications (2)

Publication Number Publication Date
KR20180121797A KR20180121797A (ko) 2018-11-08
KR102102828B1 true KR102102828B1 (ko) 2020-06-01

Family

ID=59961691

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020187031675A KR102102828B1 (ko) 2016-04-05 2017-04-03 메모리에서 에러 정정 코드(ecc) 연산

Country Status (5)

Country Link
US (3) US10176040B2 (ko)
KR (1) KR102102828B1 (ko)
CN (1) CN109196479B (ko)
TW (1) TWI627634B (ko)
WO (1) WO2017176613A1 (ko)

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10567006B2 (en) * 2016-08-05 2020-02-18 Sandisk Technologies Llc Data relocation
EP3418895A4 (en) * 2017-01-18 2019-05-01 Shenzhen Goodix Technology Co., Ltd. METHOD FOR GENERATING CODE WORDS, METHOD FOR DETERMINING ERROR BITS AND ASSOCIATED CIRCUIT
JP2019109806A (ja) * 2017-12-20 2019-07-04 ルネサスエレクトロニクス株式会社 データ処理装置及びデータ処理方法
US20190243566A1 (en) * 2018-02-05 2019-08-08 Infineon Technologies Ag Memory controller, memory system, and method of using a memory device
DE102018126685B3 (de) 2018-10-25 2019-10-10 Infineon Technologies Ag Verarbeitung von Daten
US11016844B2 (en) * 2019-03-15 2021-05-25 Toshiba Memory Corporation Error correction code structure
US20200313694A1 (en) * 2019-03-28 2020-10-01 Intel Corporation Detection of adjacent two bit errors in a codeword
US11537464B2 (en) * 2019-06-14 2022-12-27 Micron Technology, Inc. Host-based error correction
US11068336B2 (en) * 2019-07-12 2021-07-20 Micron Technology, Inc. Generating error checking data for error detection during modification of data in a memory sub-system
TWI714248B (zh) * 2019-09-09 2020-12-21 新唐科技股份有限公司 記憶體控制器與資料保護方法
US11210167B2 (en) 2019-10-28 2021-12-28 Intel Corporation Memory wordline isolation for improvement in reliability, availability, and scalability (RAS)
US11494264B2 (en) 2020-07-28 2022-11-08 Micron Technology, Inc. Generating a protected and balanced codeword
US11237906B1 (en) * 2020-07-28 2022-02-01 Micron Technology, Inc. Generating a balanced codeword protected by an error correction code
KR20220057087A (ko) * 2020-10-29 2022-05-09 에스케이하이닉스 주식회사 리드-솔로몬 코드의 소프트-디시젼 디코딩 방법 및 장치
KR20230021949A (ko) * 2021-08-06 2023-02-14 삼성전자주식회사 메모리 장치 및 이의 동작 방법
CN114138203B (zh) * 2021-12-06 2024-02-06 武汉新芯集成电路制造有限公司 数据存取方法、数据存储方法及数据存取控制器
US20240120947A1 (en) * 2022-10-07 2024-04-11 Micron Technology, Inc. Error detection and classification at a host device
TWI835381B (zh) * 2022-11-02 2024-03-11 慧榮科技股份有限公司 資料加密的錯誤偵測裝置

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100653296B1 (ko) 2004-02-13 2006-12-05 가부시끼가이샤 도시바 메모리를 구비한 반도체 장치 및 메모리 테스트 방법
US20130283123A1 (en) * 2007-06-26 2013-10-24 International Business Machines Corporation Combined group ecc protection and subgroup parity protection

Family Cites Families (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3648239A (en) 1970-06-30 1972-03-07 Ibm System for translating to and from single error correction-double error detection hamming code and byte parity code
US4241446A (en) 1978-10-16 1980-12-23 Honeywell Information Systems Inc. Apparatus for performing single error correction and double error detection
US5917838A (en) * 1998-01-05 1999-06-29 General Dynamics Information Systems, Inc. Fault tolerant memory system
KR20030059914A (ko) * 2002-01-03 2003-07-12 삼성전자주식회사 에러 정정 코드 블럭 생성 방법 및 장치와 그것이 적용된광 저장매체
US7100097B2 (en) * 2002-07-16 2006-08-29 Hewlett-Packard Development Company, L.P. Detection of bit errors in maskable content addressable memories
US7069494B2 (en) * 2003-04-17 2006-06-27 International Business Machines Corporation Application of special ECC matrix for solving stuck bit faults in an ECC protected mechanism
US7171603B2 (en) * 2004-05-06 2007-01-30 Motorola, Inc. Method and apparatus for encoding and decoding data
US7325183B2 (en) 2004-07-21 2008-01-29 Hewlett-Packard Development Company, L.P. Error correction code generation method and apparatus
KR101208546B1 (ko) * 2004-08-09 2012-12-05 엘지전자 주식회사 저밀도 패리티 체크 행렬을 이용한 부호화 및 복호화 방법
US7193798B2 (en) 2005-01-12 2007-03-20 Agere Systems, Inc. Method and apparatus for encoding and decoding a runout correction bit pattern of servo field
US7653862B2 (en) * 2005-06-15 2010-01-26 Hitachi Global Storage Technologies Netherlands B.V. Error detection and correction for encoded data
KR101119111B1 (ko) * 2006-05-04 2012-03-16 엘지전자 주식회사 Ldpc 부호를 이용한 데이터 재전송 방법
US7721178B2 (en) * 2006-06-01 2010-05-18 International Business Machines Corporation Systems, methods, and computer program products for providing a two-bit symbol bus error correcting code
US8065598B1 (en) * 2007-02-08 2011-11-22 Marvell International Ltd. Low latency programmable encoder with outer systematic code and low-density parity-check code
CN101431335B (zh) * 2007-11-07 2011-11-16 国际商业机器公司 用于调制编码和解码的方法、装置和系统
US8230305B2 (en) * 2009-04-02 2012-07-24 Micron Technology, Inc. Extended single-bit error correction and multiple-bit error detection
US8560927B1 (en) 2010-08-26 2013-10-15 Altera Corporation Memory error detection circuitry
US8612832B2 (en) * 2011-04-01 2013-12-17 Intel Corporation Mechanisms and techniques for providing cache tags in dynamic random access memory
JP5117593B2 (ja) 2011-04-26 2013-01-16 株式会社東芝 符号化・復号化装置、データ記憶装置、及び方法
US8745472B2 (en) * 2012-09-01 2014-06-03 Texas Instruments Incorporated Memory with segmented error correction codes
US9311181B2 (en) * 2012-11-15 2016-04-12 Samsung Electronics Co., Ltd. Memory controller changing partial data in memory device and method for changing partial data thereof
US9065483B2 (en) * 2013-01-21 2015-06-23 Micron Technology, Inc. Determining soft data using a classification code
WO2015041475A1 (ko) * 2013-09-17 2015-03-26 삼성전자 주식회사 송신 장치 및 그의 펑처링 방법
US10396822B2 (en) * 2013-09-26 2019-08-27 Samsung Electronics Co., Ltd. Transmitting apparatus and signal processing method thereof
TWI536749B (zh) * 2013-12-09 2016-06-01 群聯電子股份有限公司 解碼方法、記憶體儲存裝置與記憶體控制電路單元
US9582354B2 (en) * 2014-01-28 2017-02-28 Infineon Technologies Ag Apparatus and method for improving data storage by data inversion
US9571231B2 (en) * 2014-08-21 2017-02-14 Rambus Inc. In-band status encoding and decoding using error correction symbols
US10425106B2 (en) * 2016-11-28 2019-09-24 California Institute Of Technology Balanced Reed-Solomon codes

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100653296B1 (ko) 2004-02-13 2006-12-05 가부시끼가이샤 도시바 메모리를 구비한 반도체 장치 및 메모리 테스트 방법
US20130283123A1 (en) * 2007-06-26 2013-10-24 International Business Machines Corporation Combined group ecc protection and subgroup parity protection

Also Published As

Publication number Publication date
WO2017176613A1 (en) 2017-10-12
US10176040B2 (en) 2019-01-08
US10901837B2 (en) 2021-01-26
KR20180121797A (ko) 2018-11-08
US11442807B2 (en) 2022-09-13
TW201738896A (zh) 2017-11-01
CN109196479A (zh) 2019-01-11
CN109196479B (zh) 2022-05-10
US20210141690A1 (en) 2021-05-13
TWI627634B (zh) 2018-06-21
US20170286217A1 (en) 2017-10-05
US20190129791A1 (en) 2019-05-02

Similar Documents

Publication Publication Date Title
KR102102828B1 (ko) 메모리에서 에러 정정 코드(ecc) 연산
KR102179228B1 (ko) 메모리에서의 티어드 오류 정정 코드(ecc) 동작
US11243838B2 (en) Methods and apparatuses for error correction
US10133645B2 (en) Data recovery in three dimensional non-volatile memory array after word line short
US11431355B2 (en) Error correction code (ECC) operations in memory for providing redundant error correction
TWI682399B (zh) 操作記憶體之方法及用於錯誤率降低之設備
CN112084052A (zh) 基于主机的错误校正
US10084487B2 (en) Apparatuses and methods for erasure-assisted ECC decoding
US10855316B2 (en) Error correction code (ECC) operations in memory
US8977808B2 (en) Mapping between program states and data patterns

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