KR102292212B1 - 복수의 데이터 비트와 복수의 어드레스 비트로 이루어진 블록용 에러 코드 발생장치 및 방법 - Google Patents

복수의 데이터 비트와 복수의 어드레스 비트로 이루어진 블록용 에러 코드 발생장치 및 방법 Download PDF

Info

Publication number
KR102292212B1
KR102292212B1 KR1020170063255A KR20170063255A KR102292212B1 KR 102292212 B1 KR102292212 B1 KR 102292212B1 KR 1020170063255 A KR1020170063255 A KR 1020170063255A KR 20170063255 A KR20170063255 A KR 20170063255A KR 102292212 B1 KR102292212 B1 KR 102292212B1
Authority
KR
South Korea
Prior art keywords
mask
bit
bits
block
error code
Prior art date
Application number
KR1020170063255A
Other languages
English (en)
Other versions
KR20170135691A (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 KR20170135691A publication Critical patent/KR20170135691A/ko
Application granted granted Critical
Publication of KR102292212B1 publication Critical patent/KR102292212B1/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/1012Adding 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 codes or arrangements adapted for a specific type of error
    • 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
    • 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
    • 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/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/073Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a memory management context, e.g. virtual memory or cache management
    • 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/1012Adding 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 codes or arrangements adapted for a specific type of error
    • G06F11/1016Error in accessing a memory location, i.e. addressing error
    • 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
    • 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/2906Coding, 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 using block codes
    • H03M13/2909Product 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/61Aspects and characteristics of methods and arrangements for error correction or error detection, not provided for otherwise
    • H03M13/615Use of computational or mathematical techniques
    • H03M13/616Matrix operations, especially for generator matrices or check matrices, e.g. column or row permutations
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • General Engineering & Computer Science (AREA)
  • Probability & Statistics with Applications (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Physics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computational Mathematics (AREA)
  • Algebra (AREA)
  • Computing Systems (AREA)
  • Detection And Correction Of Errors (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Error Detection And Correction (AREA)

Abstract

복수의 데이터 비트와 복수의 어드레스 비트로 이루어진 블록용 에러 코드를 발생하는 장치 및 방법을 제공한다. 이 장치는, 복수의 데이터 비트와 복수의 어드레스 비트로 이루어진 블록을 발생하는 블록 발생회로와, 상기 블록과, 복수의 마스크 행으로 이루어진 마스크 어레이를 수신하고 나서, 에러 코드 발생 알고리즘을 적용하여 블록용 에러 코드를 발생하는 에러 코드 발생회로를 갖는다. 상기 에러 코드는, 상기 블록과, 상기 마스크 어레이의 대응한 마스크 행을 사용하여, 각 체크 비트를 결정하는 복수의 체크 비트를 포함한다. 각 마스크 행은, 각 마스크 비트가 상기 블록의 대응한 비트와 연관되는 복수의 마스크 비트를 포함한다. 적어도 하나의 마스크 행은, 상기 블록의 상기 데이터 비트의 전부의 값이 동일할 때, 상기 에러 코드 발생회로에서 발생한 에러 코드가 상기 어드레스 비트의 값에 상관없이 상기 데이터 비트의 값과 다른 값을 갖는 적어도 하나의 체크 비트를 갖도록 보장하기 위해 제약된 마스크 비트 값들을 갖고, 상기 적어도 하나의 마스크 행에서 각 마스크 행은, 상기 블록의 어드레스 비트의 아무것도 대응한 체크 비트를 발생할 때 사용하기 위해 선택되지 않도록 배치된 마스크 비트 값들을 갖는다. 상기 데이터 비트에서의 에러의 검출 및/또는 정정을 지원함과 아울러, 이러한 해결방법에 의해, 메모리 어드레스 디코드 에러가 검출될 수 있고, 추가로 메모리의 출력에서 0에서의 막힘 에러나 1에서의 막힘 에러를 검출할 수 있다.

Description

복수의 데이터 비트와 복수의 어드레스 비트로 이루어진 블록용 에러 코드 발생장치 및 방법{AN APPARATUS AND METHOD FOR GENERATING AN ERROR CODE FOR A BLOCK COMPRISING A PLURALITY OF DATA BITS AND A PLURALITY OF ADDRESS BITS}
본 기술은, 후 검출 및/또는 에러의 보정을 가능하게 연관 데이터와 함께 메모리에 기억될 수 있는 에러 코드를 발생하는 메커니즘에 관한 것이다. 예를 들면, 이러한 에러 코드를 사용하여, 예를 들면 소프트 또는 하드 에러로 인해 상기 연관 데이터가 오류가 발생된 상황을 검출할 수 있다.
이용된 에러 코드 체계에 따라, 상기 에러 코드는, 특정한 수의 비트들에서의 에러가 검출되게만 하지만 정정되지 않게 될 수도 있거나, 또는, 이와는 달리, 특정한 수의 비트들에서의 에러가 검출되게 하지만 감소된 수의 비트들에서의 에러가 정정되는 것을 가능하게 할 수도 있다. 일반적으로, 상기 에러 코드들이 단지 에러 검출을 위해서만 제공하든지, 또는 에러 정정을 위해 제공하든지, 그 에러 코드들을 에러 정정 코드들(ECCs)이라고 말한다.
현대의 데이터 처리 시스템에서는, 검출 및/또는 정정될 필요가 있는 에러들의 타입에 대한 요구사항이 다수가 있을 수도 있다. 이를테면, 메모리내에 기억되는 데이터 값(여기서는, 이러한 데이터 값을 데이텀이라고도 함)을 고려하면, 그 데이텀과 연관지어 기억하기 위해 발생된 에러 코드는, 상기 데이텀에서의 에러들이 검출 및/또는 정정되는 것을 가능하게 하는데 요구되지 않을 수도 있다. 예를 들면, 또한, 판독동작 중에 얻어진 메모리 출력이 모두 0에서 막히거나(stuck) 모두 1에서 막히는 상황을 상기 에러 코드를 사용하여 검출하는 것이 바람직할 수도 있다.
그렇지만, 추가로, 메모리 어드레스 디코딩 동작의 결함을 검출하려고 상기 에러 코드를 사용하는 것이 바람직할 수도 있어, 정확한 무결성을 갖는 메모리로부터 복귀된 콘텐츠가 되기도 하지만, 액세스되어 있는 잘못된 어드레스가 되기도 한다. 이러한 메모리 어드레스 디코딩 보호를 이루기 위해서, 메모리에 기억된 에러 코드를 발생할 때 상기 데이텀과 상기 어드레스 모두를 사용하는 것이 가능하다. 그 후, 메모리로부터 상기 데이텀을 판독할 때, 상기 판독 어드레스와 데이텀은, 상기 데이텀과 연관지어 메모리로부터 판독된 에러 코드에 대해 확인될 수 있는 다른 에러 코드를 발생하는데 사용된다.
이러한 해결방법은, 상기 메모리 어드레스 디코딩에서의 결함을 검출하는 효과적인 메커니즘을 제공할 수 있지만, 상기 어드레스가 상기 코드를 발생할 때 상기 데이텀과 조합하여 사용되고, 상기 어드레스가 상기 데이텀에 대해 어떠한 임의의 값도 가질 수 있다는 사실로 인해, 상기 메모리 출력이 모두 0에서 막히거나 모두 1에서 막히는 상황을 검출할 수 없게 한다.
이에 따라, 복수의 데이터 비트와 복수의 어드레스 비트로 이루어진 (여기서는 청크라고도 한) 블록용 에러 코드를 발생하기 위한 향상된 메커니즘을 제공하여, 메모리 어드레스 디코드 결함이 검출되게 하고 또한 메모리의 출력에 있어서 0에서의 막힘(stuck)이나 1에서의 막힘의 검출을 가능하게 하는 것이 바람직할 것이다.
제1 구성예에서는, 복수의 데이터 비트와 복수의 어드레스 비트로 이루어진 블록을 발생하는 블록 발생회로; 및 상기 블록과, 복수의 마스크 행으로 이루어진 마스크 어레이를 수신하고, 에러 코드 발생 알고리즘을 적용하여 상기 블록용 에러 코드를 발생하는 에러 코드 발생회로를 구비한, 장치를 제공하고, 상기 에러 코드는 상기 블록과, 상기 마스크 어레이의 대응한 마스크 행을 사용하여 각 체크 비트를 결정하는 복수의 체크 비트를 포함하고; 각 마스크 행은 각 마스크 비트가 상기 블록의 대응한 비트와 연관되는 복수의 마스크 비트를 포함하고, 적어도 하나의 마스크 행은, 상기 블록의 상기 데이터 비트의 전부의 값이 동일할 때, 상기 에러 코드 발생회로에서 발생한 에러 코드가 상기 어드레스 비트의 값에 상관없이 상기 데이터 비트의 값과 다른 값을 갖는 적어도 하나의 체크 비트를 갖도록 보장하기 위해 제약된 마스크 비트 값들을 갖고, 상기 적어도 하나의 마스크 행에서 각 마스크 행은, 상기 블록의 어드레스 비트의 아무것도 대응한 체크 비트를 발생할 때 사용하기 위해 선택되지 않도록 배치된 마스크 비트 값들을 갖는다.
다른 구성 예에서는, 저장 디바이스의 특정된 메모리 어드레스에 기록 데이터와 연관지어 저장되는 에러 코드를 발생하는 기록 보호회로를 제공하되, 이 기록 보호회로는 상기 제1 구성 예에 따라 상기 기록 데이터와 상기 특정된 메모리 어드레스로부터 상기 에러 코드를 발생하는 장치를 구비하고, 상기 블록의 상기 복수의 데이터 비트는 상기 기록 데이터로부터 형성되고, 상기 블록의 상기 복수의 어드레스 비트는 상기 특정된 메모리 어드레스로부터 형성된다.
또 다른 구성 예에서는, 저장 디바이스에서 특정된 메모리 어드레스로부터 얻어진 판독 데이터에 관해 에러 체크 프로세스를 행하는 판독 보호회로를 제공하되, 이 판독 보호회로는 상기 제1 구성 예에 따라 상기 판독 데이터와 상기 특정된 메모리 어드레스로부터 에러 코드를 발생하는 장치 -상기 블록의 상기 복수의 데이터 비트가 상기 판독 데이터로부터 형성되고, 상기 블록의 상기 복수의 어드레스 비트가 상기 특정된 메모리 어드레스로부터 형성됨 -; 및 상기 발생된 에러 코드가 저장된 에러 코드와 다를 때 오류 조건을 검출하도록 상기 판독 데이터와 연관지어 상기 저장 디바이스에 저장된 에러 코드와, 상기 발생된 에러 코드를 비교하는 체크 회로를 구비한다.
아울러 또 다른 구성 예에서는, 마스크 어레이를 발생하는 컴퓨터 구현 방법을 제공하되, 이 방법은, 상기 마스크 어레이를 사용하여 발생되는 에러 코드의 체크 비트마다 하나의 마스크 행을 제공하도록 상기 마스크 어레이의 마스크 행의 수를 결정하는 단계; 상기 에러 코드가 발생되되 복수의 데이터 비트와 복수의 어드레스 비트로 이루어진 블록에서 비트의 수에 따라 각 마스크 행에서의 마스크 비트의 수를 결정하는 단계; 및 상기 블록의 상기 데이터 비트의 전부의 값이 같을 때, 상기 마스크 어레이를 사용하여 그 블록에 대해 발생된 에러 코드가 상기 어드레스 비트의 값에 상관없이 상기 데이터 비트의 값과 다른 값을 갖는 적어도 하나의 체크 비트를 갖도록 보장하기 위해 상기 마스크 행의 마스크 비트 값들을 제약하기 위해서 처리 회로상에서 마스크 비트 발생 프로세스를, 상기 마스크 행 중 적어도 하나에 대해서 실행하는 단계를 포함하고, 상기 적어도 하나의 마스크 행에서 마스크 행마다, 상기 마스크 비트 발생 프로세스는, 상기 블록의 어드레스 비트의 아무것도 대응한 체크 비트를 발생할 때 사용하기 위해 선택되지 않도록 마스크 비트 값들을 결정한다.
추가의 구성 예에서는, 상기 구성 예의 상기 컴퓨터 구현 방법에 따라 발생된 마스크 어레이를 포함하는 기억매체를 제공한다.
본 기술을 아래의 첨부도면에 도시된 것처럼 본 발명의 실시예를 참조하여 예시로만 한층 더 설명한다:
도 1은 공지의 체계에 따라 발생된 ECC 마스크 어레이를 도시한 것이고,
도 2는 일 실시예에 따라 ECC 마스크 어레이를 발생하는 방법을 도시하는 흐름도이고,
도 3은 일 실시예의 기술에 따라 발생된 ECC 마스크 어레이를 도시한 것이고,
도 4는 에러 코드를 발생하기 위해서 일 실시예에 따라 ECC 발생회로에서 행한 ECC 계산 알고리즘을 도시하는 흐름도이고,
도 5a 및 5b는 그 설명된 실시예들의 기술을 사용하여 발생되어도 되는 마스크 어레이들의 또 다른 예들을 도시하는 것이고,
도 6은 이용되어도 되는 다수의 다른 타입의 에러 코드 체계에 대해서, 상기 설명된 실시예들의 특정한 행 발생 규칙들이 행해질 필요가 있는 마스크 어레이내의 행들의 최소 수를 도시하는 표이고,
도 7은 일 실시예에 따라 ECC 발생기 회로의 블록도이고,
도 8은 일 실시예에 따라 기록 보호회로와 판독 보호회로 모두를 개략적으로 도시하는 블록도이고,
도 9는 상기 설명된 실시예들의 마스크 발생 기술을 구현하는데 사용될 수 있는 상기 타입의 범용 컴퓨터를 개략적으로 도시한 것이다.
첨부도면을 참조하여 실시예들을 기술하기 전에, 그 실시예들을 아래에 설명한다.
일 실시예에서는, 복수의 데이터 비트와 복수의 어드레스 비트로 이루어진 블록을 발생하는 블록 발생회로와, 상기 블록용 에러 코드를 발생하는 에러 코드 발생회로를 구비하는, 장치를 제공한다. 특히, 상기 에러 코드 발생회로는, 복수의 마스크 행으로 이루어진 마스크 어레이에 액세스하고 나서, 상기 마스크 어레이와 상기 블록을 사용하여, 에러 코드 발생 알고리즘을 적용하여 상기 블록용 에러 코드를 발생한다. 상기 에러 코드는, 상기 블록과, 상기 마스크 어레이의 대응한 마스크 행을 사용하여, 각 체크 비트를 결정하는 복수의 체크 비트를 포함한다.
각 마스크 행은, 각 마스크 비트가 상기 블록의 대응한 비트와 연관되는 복수의 마스크 비트를 포함한다. 적어도 하나의 마스크 행은, 상기 블록의 상기 데이터 비트의 전부의 값이 동일할 때, 상기 에러 코드 발생회로에서 발생한 에러 코드가 상기 어드레스 비트의 값에 상관없이 상기 데이터 비트의 값과 다른 값을 갖는 적어도 하나의 체크 비트를 갖도록 보장하기 위해 제약된 마스크 비트 값들을 갖는다.
상기 설명된 기술에 따라, 상기 에러 코드는 데이터 비트와 어드레스 비트 모두를 포함하는 블록을 위해 발생되고, 이 때문에, 상기 에러 코드는 메모리 어드레스 디코드 결함이 검출되게 하는데 사용될 수 있다. 그렇지만, 추가로, 상기한 방식으로 상기 마스크 행의 적어도 하나에 마스크 비트 값들을 제약함으로써, 상기 연관된 에러 코드의 상기 데이터 비트와 상기 체크 비트의 값이 전부 동일하지 않도록 보장하기 때문에, 0에서의 막힘 결함과 1에서의 막힘 결함이 신뢰성 있게 검출될 수 있도록 보장하는 것이 가능하다. 특히, 상기 메커니즘에 의해, 모두 0의 에러 코드는, 상기 에러 코드를 발생할 때 사용된 상기 어드레스 비트의 값들에 상관없이, 상기 데이터 비트가 모두 0일 때, 발생되지 않는다. 마찬가지로, 모두 1의 에러 코드는, 데이터 비트가 모두 1일 때 발생되지 않는다. 이 때문에, 메모리로부터 판독 동작을 행할 때, 상기 판독 데이터 비트와 상기 연관된 에러 코드 체크 비트가 모두 1이거나 모두 0이면, 이것은 1에서의 막힘 에러나 0에서의 막힘 에러를 가리킨다.
상기 데이터 비트 전부의 값이 동일할 때, 상기 어드레스 비트 상관없이 상기 발생된 에러 코드가 상기 데이터 비트의 값에 대한 다른 값을 갖는 적어도 하나의 체크 비트를 갖도록 보장하기 위해, 상기 마스크 행의 적어도 하나에서의 마스크 비트 값들은 제약될 수 있는 방식이 많이 있다. 일 실시예에서, 이것은, 상기 블록의 어드레스 비트의 아무것도 대응한 체크 비트를 발생할 때 사용하기 위해 선택되지 않도록 배치된 마스크 비트 값들을 갖는 상기 적어도 하나의 마스크 행에서 각 마스크 행에 의해 이루어진다. 따라서, 이러한 마스크 행들에서, 상기 어드레스 비트 값들은 대응한 체크 비트를 발생할 때 사용되지 않도록 마스크 아웃된다. 반대로, 상기 어드레스 비트의 적어도 일부는, 상술한 제약이 행해지지 않는 나머지의 마스크 행에서 사용되어도 된다.
일 실시예에서, 상기 적어도 하나의 마스크 행을 형성하는 마스크 행의 수는, 상기 장치가 이용한 에러 코드 체계와, 상기 블록에서의 복수의 데이터 비트가 짝수 또는 홀수인지에 좌우된다. 일반적으로, 상기 에러 코드 체계에 의해 정정 가능한 데이터 비트의 수가 클수록, 상술한 제약이 행해질 필요가 있는 마스크 행의 수가 커진다. 또한, 상술한 실시예에서, 임의의 특별한 에러 코드 체계에 대해서, 하나의 추가의 마스크 행은, 상기 블록에서 데이터 비트의 짝수 또는 홀수가 있는지에 따라, 상술한 제약이 행해진 마스크 행의 세트내에 포함될 필요가 있을 수도 있다.
상술한 기술은, 다양한 다른 에러 코드 체계에 적용될 수 있다. 그렇지만, 일 실시예에서, 이용된 상기 에러 코드 체계는, 해밍(Hamming) 코드에 기초한다. 이러한 해밍 코드를 이용할 때, 상기 적어도 하나의 마스크 행을 형성하는 마스크 행의 수는, 상기 블록에서 상기 복수의 데이터 비트가 짝수 또는 홀수인지에 좌우될 뿐만 아니라, 특별한 해밍 코드의 해밍 거리에 좌우된다. 당업자라면 알 수 있듯이, 상기 해밍 거리는, 임의의 하나의 유효 코드 워드로부터 임의의 다른 유효 코드 워드까지 가는데 필요한 비트 변화의 최소 수를 나타낸다. 상기 해밍 거리는, 상기 에러 코드 체계에 의해 정정 가능하게 비트의 수를 증가시킬 때 증가한다.
일 실시예에서, 상기 적어도 하나의 마스크 행을 형성하는 마스크 행의 수 NO는 아래의 식으로 표시된다:
NO= 1+C+[[((1+C)%2)!=(Dt%2)]&(C!=0)]
여기서, C는 상기 에러 코드 체계에 의해 정정 가능한 비트의 수이고, Dt는 상기 복수의 데이터 비트에서 데이터 비트의 수이며, %는 모듈로 연산자를 의미한다.
일 실시예에서, 상기 적어도 하나의 마스크 행에서 각 마스크 행은, 상기 블록내의 데이터 비트의 홀수가 대응한 체크 비트를 발생할 때 사용하기 위해 선택되도록 배치된 마스크 비트 값들을 갖는다. 이 요구사항은, 상기 에러 코드 발생 알고리즘과 조합하여, 상기 데이터 비트가 모두 같을 때, 상기 생성된 체크 비트가 그 데이터 비트들에 다른 값을 갖도록 보장하는데 사용되어도 된다.
또한, 일 실시예에서, 상기 적어도 하나의 마스크 행이 다수의 마스크 행을 포함할 때, 상기 다수의 마스크 행에서의 마스크 비트 값들은, 상기 블록내의 다른 데이터 비트가 상기 대응한 체크 비트를 발생할 때 사용하기 위해 그 다수의 마스크 행들의 각각에 의해 선택되도록 보장하기 위해 배치된다.
게다가, 일 실시예에서, 상기 적어도 하나의 마스크 행이 다수의 마스크 행을 포함할 때, 상기 다수의 마스크 행에서의 마스크 비트 값들은, 상기 블록내의 각 데이터 비트가 상기 대응한 체크 비트를 발생할 때 사용하기 위해 그 다수의 마스크 행 중 하나에 의해 선택되도록 한층 더 보장하기 위해 배치된다.
일 실시예에서, 상기 에러 코드 체계가 에러의 검출뿐만 아니라 적어도 하나의 에러의 정정도 고려할 때마다 다수의 마스크 행이 있다. 도 2를 참조하여 보다 상세히 후술하는 것처럼, 상기 다수의 마스크 행에 관한 상기 제약은, 0에서의 막힘 에러나 1에서의 막힘 에러가 단일 비트 정정 가능 에러로서 부정확하게 해석되지 않도록 보장한다.
일 실시예에서, 상기 에러 코드 발생회로에서 사용한 상기 에러 코드 발생 알고리즘은, 상술한 것처럼 상기 마스크 어레이의 형태를 고려하도록 구성된다. 특히, 일 실시예에서, 상기 에러 코드 발생 알고리즘은, 상기 블록 및 대응한 마스크 행으로부터 제1 체크 비트를 발생하는 메인 프로세스와, 상기 제1 체크 비트를 반전하여 제2 체크 비트를 생성하도록 선택적으로 적용된 부가 프로세스를 포함한다. 그리고, 상기 에러 코드 발생회로에서 발생한 에러 코드는, 상기 적어도 하나의 마스크 행을 형성하는 임의의 마스크 행을 사용하여 발생된 상기 제2 체크 비트와, 나머지 마스크 행의 각각을 사용하여 발생된 상기 제1 체크 비트를 포함한다. 따라서, 이러한 해결방법에 의해, 상술한 마스크 비트 값 제약이 행해진 마스크 행 중 어느 하나와 연관된 상기 체크 비트를 발생할 때, 상기 체크 비트의 값의 최종 반전(flipping)은, 상기 에러 코드내에서 사용되기 전에 행해진다.
특히, 앞서 설명한 것처럼, 상기 적어도 하나의 마스크 행에서 각 마스크 행은, 상기 블록내의 상기 데이터 비트의 홀수가 상기 대응한 체크 비트를 발생할 때 사용하기 위해 선택되게 하도록 배치된 마스크 비트 값을 갖는다. 상기 데이터 비트의 홀수가 사용되도록 보장함으로써 또한, 상기 어드레스 비트가 임의의 이러한 마스크 행에 대해 상기 체크 비트를 발생할 때 사용되지 않으면, 이것은, 일 실시예에서, 상기 데이터 비트의 전부의 값이 동일할 때, 상기 메인 프로세스에서 생성한 초기의 체크 비트도 상기 데이터 비트와 같은 값을 갖고 나서, 상기 부가 프로세스가 상기 에러 코드에서 사용되기 전에 그 체크 비트를 반전하도록 보장하는데 사용될 수 있다. 이것은, 적어도 상기 에러 코드에 대해 최종적으로 생성된 체크 비트가 상기 데이터 비트와 다른 값을 갖도록 보장한다. 따라서, 이것은, 상기 데이터가 모두 0일 때, 적어도 하나의 체크 비트가 0이 아니고, 마찬가지로, 상기 데이터가 모두 1이면 적어도 하나의 체크 비트가 0이다.
상기 메인 프로세스는 다양한 형태를 취할 수 있지만, 일 실시예에서는 마스크 행을 사용하여 상기 블록을 형성하는 상기 비트의 서브세트를 선택하는 것과, 그 후 연관된 제1 체크 비트를 생성하기 위해 상기 선택된 상기 비트의 서브세트에 관해 XOR 감소 연산을 행하는 것을 포함한다. 또한, 일 실시예에서, 상기 부가 프로세스는, 상기 제1 체크 비트의 값을 반전하는 XOR 연산을 포함한다.
상술한 장치는, 다양한 상황에서 사용될 수 있다. 예를 들면, 일 실시예에서, 기록 보호회로는, 저장 디바이스의 특정된 메모리 어드레스에 기록 데이터와 연관지어 저장되는 에러 코드를 발생하도록 구성된다. 그 기록 보호회로는, 상기 기록 데이터와 상기 특정된 메모리 어드레스로부터 상기 에러 코드를 발생하기 위해서, 상술한 장치를 구비하도록 배치되어도 된다. 이러한 실시예에서, 상기 블록의 복수의 데이터 비트는 상기 기록 데이터로부터 형성되고, 상기 블록의 복수의 어드레스 비트는 상기 특정된 메모리 어드레스로부터 형성된다. 일 실시예에서, 상기 기록 데이터의 모든 비트와 상기 메모리 어드레스의 모든 비트는 그 블록을 구성할 때 사용된다.
다른 예에서, 상술한 장치는, 저장 디바이스에서 특정된 메모리 어드레스로부터 얻어진 판독 데이터에 관해 에러 체크 프로세스를 행하는데 이용되는 판독 보호회로에서 사용될 수 있다. 이 판독 보호회로는, 상기 판독 데이터와 상기 특정된 메모리 어드레스로부터 에러 코드를 발생하기 위해서, 상술한 장치를 구비한다. 상기 블록의 복수의 데이터 비트는 상기 판독 데이터로부터 형성되고, 상기 블록의 복수의 어드레스 비트는 상기 특정된 메모리 어드레스로부터 형성된다. 또한, 상기 판독 보호회로는, 상기 발생된 에러 코드가 상기 저장된 에러 코드와 다를 때 에러 조건을 검출하기 위해서, 상기 발생된 에러 코드와 상기 저장 디바이스에 저장된 에러 코드를 상기 판독 데이터와 연관지어 비교하는 체크 회로를 갖는다.
또 다른 실시예에서는, 마스크 어레이를 발생하는 컴퓨터 구현 방법을 제공하되, 이 방법은, 상기 마스크 어레이를 사용하여 발생되는 에러 코드의 체크 비트마다 하나의 마스크 행을 제공하도록 상기 마스크 어레이의 마스크 행의 수를 결정하는 단계와, 상기 에러 코드가 발생되는 블록에서 비트의 수에 따라 각 마스크 행에서의 마스크 비트의 수를 결정하는 단계를 포함한다. 상기 블록은, 복수의 데이터 비트와 복수의 어드레스 비트로 이루어진다. 상기 방법은, 상기 블록의 상기 데이터 비트의 전부의 값이 같을 때, 상기 마스크 어레이를 사용하여 그 블록에 대해 발생된 에러 코드가 상기 어드레스 비트의 값에 상관없이 상기 데이터 비트의 값과 다른 값을 갖는 적어도 하나의 체크 비트를 갖도록 보장하기 위해 상기 마스크 행의 마스크 비트 값들을 제약하기 위해서 처리 회로상에서 마스크 비트 발생 프로세스를, 상기 마스크 행 중 적어도 하나에 대해서 실행하는 단계를 포함한다.
일 실시예에서, 상기 적어도 하나의 마스크 행이외의 나머지 모든 마스크 행에 대해서, 상기 마스크 비트 발생 프로세스는 디폴트 마스크 발생 규칙들을 이용하여 상기 마스크 비트 값들을 결정한다. 따라서, 앞서 설명된 제약은 마스크 어레이의 마스크 행들의 특정한 수에 대한 마스크 비트 값들을 결정할 때 사용되지만, 상기 마스크 어레이의 나머지 부분 전부에 대한 마스크 비트 값들은 디폴트 규칙들을 사용하여 완료된다. 상술한 특정한 제약이 행해지지 않는 마스크 어레이의 나머지 부분들을 채우기 위한 상기 디폴트 마스크 발생 규칙들로서 사용될 수 있는 상기 마스크 어레이용 마스크 비트 값들을 산출하기 위한 공지의 기술이 많이 있다. 일례에서, 상기 디폴트 마스크 발생 규칙들은 열 기반 해밍 규칙들을 포함한다.
이제, 도면들을 참조하여 특별한 실시예에 대해 설명한다.
도 1은 해밍 거리가 3인 2중 에러 검출(DED) 에러 코드 체계에 대한 공지의 기술에 따라 생성되어도 되는 ECC 마스크 어레이(10)를 도시하는 표다. 본 예에서는, 상기 어드레스가 4비트로 구성되고 상기 데이터가 8비트로 구성되며, 상기 데이터 및 어드레스 비트는 입력으로서 에러 코드 발생 알고리즘에 사용되는 블록(여기서는, 청크라고도 함)을 형성하기 위해서 연결된다고 가정한다. 따라서, 보호되는 상기 청크내에 12비트가 있고, 해밍 거리 3의 상기 DED 체계를 이용한다고 가정하면, 이것은 상기 에러 코드를 형성하기 위해 5개의 체크 비트 C0 내지 C4를 필요로 한다. 도 1에 도시된 것처럼, 마스크 어레이내의 각 마스크 행은 그 체크 비트들 중 하나와 연관된다.
하나의 에러 코드 발생기술에 따라, 발생되는 체크 비트마다, 상기 연관된 마스크 행은, 마스크에서 논리 1값과 연관된 상기 데이터 및 어드레스 비트를 선택하도록, 또한 마스크에서 논리 0값과 연관된 상기 데이터 및 어드레스 비트를 선택하도록, 마스크로서 사용된다(다른 실시예에서, 상기 마스크에서 논리 1값과 논리 0값의 의미가 반대라는 것을 알 것이다). 그리고, 상기 마스크 행 값들에 근거하여 선택된 데이터 및 어드레스 비트에 대해, 체크 비트 값을 생성하기 위해 XOR 감소 연산을 실행한다.
상기 체크 코드가 상기 해결방법을 사용하여 발생되었다면, 그 체크 코드는 메모리에 데이터 비트와 연관지어 저장되어도 된다(여기서는, 이 데이터 비트를 데이텀이라고도 함). 나중에 그 메모리로부터 데이터가 판독될 때, 원래의 체크 코드를 발생하는데 사용된 것처럼 동일한 마스크 어레이를 사용하여, 상기 메모리에 주어진 상기 판독 데이텀 및 어드레스로부터 체크 코드를 먼저 재발생하여서 체크한다. 그리고, 상기 발생된 체크 코드는, 예를 들면, XOR 연산을 행하여서, 메모리로부터 판독된 것과 같은 원래의 체크 코드와 비교된다. 이 2개의 체크 코드가 다르면, 이것은 에러를 표시한다.
상술한 것처럼, 이러한 에러 코드들은, 메모리로부터 상기 데이텀을 판독할 때 그 데이텀에서의 에러를 검출 및/또는 정정할 뿐만 아니라, 메모리로부터 복귀된 콘텐츠가 정확한 무결성을 갖지만 잘못된 어드레스가 액세스되는 어드레스 디코드 결함을 검출하는데도 사용될 수 있다. 이것은, 상기 어드레스 비트들을 상기 에러 코드 발생 메커니즘에 감안하는 것으로 인해 가능하다. 아래의 예에 의해 설명될 것처럼, 완전한 메모리 출력이 0에서 막히거나 1에서 막히는 상황을 검출할 수 있는 것도 바람직하고, 이것은 상기 ECC 체계를 사용하여 어드레스 디코드 에러를 검출할 때도 문제가 될 수 있다. 특히, 어드레스 비트들에 따라, 상기 데이텀 비트들이 모두 0일 때 도 1의 마스크 어레이를 사용하여 모두 0의 체크 코드가 합법적으로 발생되는 것이 가능하다. 마찬가지로, 모두 0의 체크 코드도, 상기 데이텀 비트들이 모두 1일 때 발생될 수도 있다. 그 시나리오에서, 0들에서 막힘 결함이나 1들에서 막힘 결함을 검출 가능하지 않은 것은, 메모리로부터 판독된 콘텐츠가 모두 0이거나 모두 1일 것이라고 합법적으로 예상될 수 있기 때문이다. 예를 들면, 상기 어드레스가 4'b1111(즉, 모두 1)이고 상기 데이터가 8'b0000_0000(즉, 모두 0)인 상황을 생각해본다. 도 1의 마스크 어레이를 사용할 때, 어드레스와 데이터의 상기 조합을 위해 발생된 체크 코드는 (비록 그 데이터가 모두 0일지라도) 5'b00000이다. 도 1의 마스크 어레이를 사용하면, 메모리로부터 다시 상기 데이텀과 체크 코드를 판독할 때 0들에서의 막힘 결함을 검출하는 것이 가능하지 않다.
이 문제를 해결하는 일 방식이 기본적으로 0에서 1로 반전하는데 사용될 수 있는 상기 마스크 어레이의 행들 중 일부에 관한 XNOR 기능을 선택적으로 포함하기 위한 것일 것이라고 생각할지도 모른다. 그렇지만, 상기 어드레스 비트들을 사용하여서 어드레스 디코더 보호를 지원할 때, 상기 어드레스는 (데이터의 임의의 가능한 값을 갖는) 임의의 값을 취할 수 있고, 어드레스와 데이터의 일부의 조합이 XNOR 기능성(또는 일부의 행에서 XOR)을 상쇄하여, 다시 모두 0의 체크 코드가 될 수 있다는 것을 발견하였다.
나머지 도면들을 참조하여 설명된 실시예들은, ECC체계를 사용하여 어드레스 디코드 결함 검출과 0들에서의 막힘 검출이나 1들에서의 막힘 검출 양쪽을 동시에 지원하는데 사용되도록 상기 문제를 해소하는 것을 목표로 한다.
도 2는 마스크 어레이를 발생하기 위해서 일 실시예에 따라 행해질 수도 있는 ECC 마스크 발생방법을 도시하는 흐름도다.
단계 50에서는, 상기 마스크 어레이의 필요한 사이즈를 결정한다. 도 1의 상기 설명으로부터 안 것은, 마스크 어레이의 사이즈가 (데이터 비트들과 어드레스 비트들로 이루어진) 청크 사이즈와 이용된 ECC 체계, 및 따라서 적용 가능한 해밍 거리에 좌우된다는 것이다. 특히, 상기 청크 사이즈는 마스크 어레이에서 열의 수에 영향을 미칠 것이고, 해밍 거리와 조합하여 상기 청크 사이즈는 ECC 코드에서 필요한 체크 비트의 수, 이에 따라 그 마스크 어레이내에 필요해진 마스크 행의 수를 결정할 것이다.
단계 50 후에, 단계 55에서는, (이하에 보다 상세히 설명될) 특수 행 발생 규칙들이 행해지는 마스크 행의 수를 결정한다. 상기 특수 행 발생 규칙들이 행해지는데 필요한 마스크 행의 수는, 마스크 어레이가 사용되는 ECC 체계와, 상기 데이텀이 짝수의 비트 또는 홀수의 비트를 갖는지에, 좌우된다. 특히, 일 실시예에서, 상기 마스크 행의 수는 아래의 식에 의해 결정될 수 있다:
NO= 1+C+[[((1+C)%2)!=(Dt%2)]&(C!=0)]
여기서, C는 상기 에러 코드 체계에 의해 정정 가능한 비트의 수이고, Dt는 상기 복수의 데이터 비트에서 데이터 비트의 수이며, %는 모듈로 연산자를 의미한다.
상기 식으로부터 명백하듯이, 에러 코드 체계가 다수의 비트에서 에러의 검출만을 지원하지만 임의의 형태의 그 에러들의 정정은 지원하지 않는 경우, 변수 "C"는 0이다. 따라서, 상기 식은, 상기 특수 행 발생 규칙들이 행해지는 마스크 행의 수가 에러 검출만을 지원하는 경우에는 1을 나타낸다. 그렇지만, 에러 정정을 지원하는 경우에, 적어도 2개의 마스크 행은 상기 특수 행 발생 규칙들이 행해질 필요가 있다. 게다가, 추가의 행은, 상기 데이텀에서 비트들의 수가 짝수 또는 홀수인지에 따라 필요해질 수도 있다. 예를 들면, 1비트가 에러 코드 체계에 의해 정정 가능한 경우, 상기 식은, 상기 특수 행 발생 규칙들이 행해질 필요가 있는 마스크 행의 수는 데이텀 비트의 수가 짝수이면 2를, 또는 그 데이터 비트의 수가 홀수이면 3을 나타낸다.
또한, 상기 식은, 정정 가능한 비트의 수가 2일 때, 3개의 마스크 행은, 데이텀 비트의 수가 홀수이면 상기 특수 행 발생 규칙들이 행해질 필요가 있지만, 그 외에는 4개의 마스크 행은 그 규칙들이 행해질 필요가 있다는 것을 나타낸다.
단계 55에서 행한 결정 후에, 상기 특수 행 발생 규칙이 행해지는 그 마스크 행 각각에 대해서, 단계 60에서는, 상기 청크의 어드레스 비트들과 연관된 그 마스크 행 각각의 비트들을, 그 어드레스 비트들이 상기 ECC 코드의 대응한 체크 비트에 영향을 미치는 것을 방지하는 값으로 설정한다. 하나의 마스크 행에서 논리 1 값은 대응한 데이터 또는 어드레스 비트를 선택시키고 논리 0값은 대응한 데이터 비트 또는 어드레스 비트를 마스킹시키는 상술한 예를 사용하면, 이 요구사항은 상기 어드레스 비트들과 연관된 마스크 행 비트의 전부를 논리 0값으로 설정함으로써 만족될 수 있다는 것을 알 것이다. 이것은, 어드레스 비트 값들에 상관없이, 그 어드레스 비트들이 단계 55에서 결정된 마스크 행들 중 어느 하나에 대해 선택되지 않아서, 그 어드레스 비트들이 상기 연관된 체크 비트의 값에 영향을 미치지 않도록, 보장한다. 따라서, 이것은, 상기 어드레스 비트 값들이, 모두 0의 데이텀이 모두 0의 체크 코드가 되지 않도록(마찬가지로, 모두 1의 데이텀이 모두 1의 체크 코드가 되지 않도록) 보장하기 위해 취해진 임의의 단계를 간섭할 가능성을 방지한다.
단계 65에서는, 상기 행 발생 규칙들이 행해지는 마스크 행 각각에 대해서, 상기 데이텀과 연관된 마스크 행의 비트들은, 그 마스크 행이 사용될 때 홀수의 데이터 비트가 선택되도록 배치된 값들을 갖는다. 사용된 ECC 계산 알고리즘을 참조하여 나중에 보다 상세히 설명하는 것처럼, 이 요구사항은, 상기 ECC 계산 알고리즘과 조합하여, 상기 데이텀 비트가 모두 0일 때 1의 체크 비트를 생산하거나, 상기 데이텀 비트가 모두 1일 때 0의 체크 비트를 생성하도록 보장하는데 사용될 수 있다.
에러가 검출될 때 상기 에러 코드 체계에 의해 적어도 하나의 비트를 정정할 수 있는 경우에, 앞서 설명한 것처럼, 상기 특수 행 발생 규칙들이 행해지는 마스크 행이 다수 있다. 이러한 경우에는, 상기 에러 정정 체계가 0에서의 막힘 결함이나 1에서의 막힘 결함을 잘못하여 정정하려고 하지 않도록 보장하는 추가의 단계들을 취할 필요가 있다. 상기 0에서의 막힘 결함 문제를 생각해보면, 상기 데이텀이 논리 1값에서 단일 비트, 논리 0값에서 나머지 비트들의 전부를 가졌다면, 모두 0의 에러 코드가 발생될 수 없도록 보장될 필요가 있는 것은, 그 경우에, 이후에 메모리로부터 다시 판독된 것과 같은 상기 데이텀 및 ECC코드가 모두 0이었으면, 이것이 0에서의 막힘 결함이라기보다는 단일의 비트 정정 가능한 에러로서 검출될 수 있기 때문이다. 이것이 일어나지 않도록 보장하기 위해서는, 일 실시예에서는, 상기 데이텀의 단일의 비트가 0이 아닌 경우에 모두 0의 체크 코드가 발생될 수 없도록 보장하는 상기 특수 행 발생 규칙들이 행해지는 다수의 마스크 행에 추가의 제약들을 둔다. 마찬가지로, 이 제약들은, 상기 데이텀의 단일의 비트만이 0일 때 모두 1의 체크 코드가 생성될 수 없도록 보장할 것이다.
특히, 단계 65에서 확인된 것처럼, 다수의 마스크 행에 대해 상기 행 발생 규칙들을 실행하면, 상기 데이텀 비트들을 선택되게 하는 마스크 비트들이 상기 다수의 마스크 행에 대해 상보적이도록 보장한다. 따라서, 이것은, 상기 블록내의 다른 데이터 비트들이 대응한 체크 비트를 발생할 때 사용하기 위한 다수의 마스크 행들의 각각에 의해 선택되도록 보장한다. 상기 데이텀이 1로 설정된 단일의 비트를 가졌고 나머지 비트들의 모두가 0인 앞의 경우를 예로 생각하면, 그 1로 설정된 단일의 비트는 그 다수의 마스크 행 중 하나에 의해서만 선택되고 나머지에 의해서는 선택되지 않을 것이다. 이것은, 그 다수의 마스크 행이 동일한 체크 비트를 생성하지 않도록 보장하므로, 상기 에러 코드가 1로 설정된 적어도 하나의 비트를 갖도록 보장할 것이다. 따라서, 이것은, 메모리에 기록되는 상기 데이텀과 에러 코드의 조합에 의해, 적어도 2개의 논리 1값을 상기 데이텀과 에러 코드에 갖게 할 것이다. 이에 따라, 그 데이텀과 에러 코드를 메모리로부터 다시 판독할 때, 그것이 모두 0이면, 이것은 0들에서의 막힘 결함으로서 신뢰성 있게 해석될 수 있다.
또한, 상기 마스크 행의 배수에 대해 상술한 행 발생 규칙들이 실행될 때, 상기 데이텀의 데이터 비트 전부가 상기 다수의 마스크 행에 의해 특정된 상기 선택하는 마스크 비트들에 의해 커버되도록 보장한다. 따라서, 상기 블록내의 각 데이터 비트는 대응한 체크 비트를 발생할 때 사용하기 위한 다수의 마스크 행 중 하나에 의해 선택되므로, 상기 확인된 규칙들을 사용하여 제약된 마스크 비트 값들을 갖는 다수의 마스크 행의 조합에서 상기 데이터 비트 전부를 고려하도록 보장한다.
단계 65 후에, 단계 70에서는, 상기 마스크 어레이의 나머지 마스크 비트들을 계산한다. 이들 나머지 마스크 비트들은, 위에 설명된 기술들을 사용하여 제약되지 않음에 따라서, 임의의 이전부터 존재하던 마스크 발생 규칙들을 사용하여 설정될 수 있다. 따라서, 예를 들면, 열 기반 해밍 규칙들은, 상기 마스크 어레이의 나머지 비트들을 완료하는데 사용되어도 된다.
도 3은 도 1을 참조하여 상술한 청크와 동일한 청크에 대해 도 2의 기술을 사용하여 발생되어도 되는 ECC 마스크 어레이(100)를 도시한 것이다. 따라서, 다시, 상기 청크는 8개의 데이터 비트와 4개의 어드레스 비트를 갖고, 상기 DED 에러 코드 체계를 사용한다고 가정하므로, 상기 체크 코드에서 5개의 체크 비트를 위해 필요해지게 된다. 본 예에서는, 상기 마스크 어레이(100)의 제1 마스크 행(105)에 대해, 도 2를 참조하여 설명한 상기 특수 행 발생 규칙을 행한다. 특히, 상기 에러 코드 체계가 에러 검출과, 에러 정정하지 않음만을 지원하니까, 단일의 마스크 행에 대해서만 그 규칙들을 행할 필요가 있다. 상기 마스크 행(105)에 대해서 알 수 있듯이, 상기 어드레스 비트들과 연관된 마스크 비트의 전부의 값들이 0으로 설정되어, 상기 어드레스 비트들은 상기 체크 비트 C0의 발생에 영향을 미치지 않는다. 또한 도시된 것처럼, 상기 마스크 행(105)은, 상기 데이텀으로부터 홀수의 비트들을 선택하도록 설정된 이 마스크 행의 마스크 비트들을 가짐에 따라서, 단계 65의 요구사항을 만족시킨다. 상기 ECC 계산 알고리즘을 설명할 때 도 4를 참조하여 보다 상세히 설명하는 것처럼, ECC 계산 알고리즘에서 선택적으로 행한 계산은 효과적으로 여분의 열(110)을 상기 ECC 마스크에 추가하고, 이때의 그 열은, 상기 특수 행 발생 규칙들이 행해지는 마스크 행마다 논리 1값과, 그 밖의 마스크 행의 전부에 대해서는 논리 0값을 갖는다.
도 4는 일 실시예에 따라 ECC 발생기의 ECC 계산회로내에서 행해져도 되는 ECC 계산 알고리즘을 도시하는 흐름도다. 상기 ECC 계산 알고리즘의 식은, 도 4의 상부에 도시되어 있다. 그 식으로부터 명백하듯이, 체크 비트마다, 대응한 마스크 행을 사용하여 상기 데이터 및 어드레스 비트의 서브세트를 선택하고 나서, XOR 감소 연산이 행해진다. 그 후, 그 결과로 얻어진 값에 대해서, 상기 체크 비트(이에 따라서 마스크 행)에 좌우되는 논리 1값이 처리되면서 추가의 XOR 감소 연산이 선택적으로 행해진다. 이를 도 4의 흐름도를 참조하여 한층 더 설명한다.
단계 150에서는 파라미터 i를 0으로 설정하고 나서, 단계 155에서는 마스크 행 i를 사용하여 상기 체크 비트 발생에 사용되는 상기 데이터 및 어드레스 비트를 선택한다. 따라서, 앞선 예를 사용하여, 논리 1값으로 설정된 매 마스크 행 비트마다, 대응한 데이터 또는 어드레스 비트가, 상기 체크 비트 발생 프로세스에 사용하기 위해 선택된다.
그리고, 단계 160에서는, 체크 비트 값을 생성하기 위해서, 상기 선택된 데이터 및 어드레스 비트에 관해 XOR 감소 연산을 행한다. 그렇지만, 상기 체크 코드내의 그 체크 비트를 직접 사용할 것인가 또는, 최종 체크 비트를 생성하기 전에 그 체크 비트에 대해 추가의 조작을 행할 것인가를, 결정하기 전에 다른 체크가 행해진다. 특히, 단계 165에서는, 상기 마스크 행 i가 특수 행 중 하나, 즉 도 2의 단계 60 및 65를 참조하여 설명한 상기 행 발생 규칙들이 행해진 행 중 하나인지를 판정한다. 그럴 경우는, 프로세스가 단계 170으로 진행되어, 단계 160에서 출력된 체크 비트와, 논리 1값을 사용하여, 최종의 XOR 감소 연산을 행한다. 이 때문에, 이것은 단계 160에서 출력된 체크 비트의 값을 반전시킨다는 것을 알 것이다. 그리고, 이 결과로 얻어진 체크 비트는 단계 175에서 버퍼링되거나, 생각중인 마스크 행이 상기 특수 행 중 하나가 아닐 경우 단계 160에서 출력된 체크 비트는 단계 175에서 직접 버퍼링된다.
그 후, 단계 180에서는, 파라미터 i가 최대값미만인지를 판정하고, 그럴 경우 그 파라미터 i를 증분하고, 프로세스가 단계 155에 되돌아간다. 그렇지만, 단계 180에서 상기 마스크 행의 전부가 처리됨에 따라서, 그 파라미터 i가 i_max라고 판정되면, 프로세스는 상기 ECC 코드로서 상기 체크 비트 전부를 출력하는 단계 190으로 진행된다. 도 4의 프로세스가 반복적 프로세스로서 도시되어 있지만, 다른 실시예에서는 각 체크 비트가 병렬로 발생될 수 있는 것을 알 것이다.
도 3으로 되돌아가면, 그에 따라서, 도 4의 단계 165, 170의 수행은, 단계 160에서 생성된 체크 비트를 그 마스크 행(105)을 사용하여 반전시키기 위해서 그 마스크 행에 대해 논리 1값과의 추가의 XOR 연산을 행하게 하지만, 나머지 마스크 행 전부를 사용하여 생성된 체크 비트들에 대해서는 그러한 반전을 행하지 않게 함으로써, 상기 여분의 열(110)을 도 3의 마스크 어레이에 효과적으로 가산한다는 알 것이다. 일 실시예에서, 나머지 마스크 행에 의해 생성된 체크 비트들에 대한 반전의 방지는, 논리 0값과의 XOR연산을 구현하여서 이루어질 수 있으므로, 상태에 변화가 없게 하거나, 이와는 달리, 그 최종의 XOR 연산은 도 4에 도시된 흐름에 따라 완전히 우회될 수 있다.
도 3의 마스크 어레이를 사용할 때 도 4의 ECC 계산 알고리즘의 응용을 생각하면, 다음의 특성들이 관찰된다. 먼저, 상기 데이텀의 데이터 비트 전부가 0일 때의 경우를 생각해본다. 상기 마스크 어레이의 제1 행(105)을 생각하면, 이에 따라 상기 어드레스의 XOR 감소 연산의 결과로서 논리 0값이 출력된다(상기 어드레스의 마스크가 0일 때, 입력된 어드레스에 상관없이, 상기 출력은 0이다). 또한, 제1 마스크 행(105)은 논리 0을 상기 데이터의 XOR 감소 연산상에서 출력시킨다( 그 데이터 입력들이 모두 0일 때, 그 마스크에 상관없이, XOR 감소 연산은 0을 출력할 것이다).
그리고, 상기 단계 170의 수행으로부터 얻어지는 논리 1값과의 최종 XOR은 1인 체크 비트를 제공하여, 그 체크 비트 중 적어도 하나는 0이 아니다. 따라서, 이것이 0들에서의 막힘의 신뢰 가능한 검출을 가능하게 하는 것은, 상기 데이텀이 모두 0일 때 모두 0의 체크 코드가 유효 체크 코드가 아니기 때문이다. 따라서, 메모리로부터 다시 판독된 상기 데이텀 및 체크 코드가 모두 0이면, 이것은 0들에서의 막힘 결함을 나타낸다.
두번째 시나리오에서, 데이터 입력 전부가 논리 1값에 있는 경우를 생각해본다. 또, 상기 어드레스 비트 전부에 대응한 마스크 행(105)내의 논리 0값들로 인해, 상기 어드레스의 XOR 감소 연산에 의해, 논리 0값이 될 것이다. 제1 행(105)은 (홀수의 1들이 1로 최종 감소된다는 사실로 인해) 상기 데이터의 XOR 감소 연산상에서 논리 1값을 출력한다. 이 때문에, 단계 170에서 행한 최종 XOR 연산은 0의 체크 비트를 생성하기 위해서 그 논리 1값을 반전시켜서, 결과적인 체크 코드에서의 체크 비트 중 적어도 하나는 0이다. 따라서, 이것이 1에서의 막힘 결함의 신뢰 가능한 검출을 가능하게 하는 것은, 메모리로부터 다시 판독된 상기 데이텀과 연관 에러 코드가 모두 1인 경우, 이것은 1에서의 막힘 결함을 나타내기 때문이다(모두 1의 에러 코드는 모두 1의 데이텀에 대해 유효 에러 코드가 아님).
도 5a는 상기 해밍 거리가 4인 단일의 에러 정정 2중 에러 검출(SECDED) 체계를 위한 도 2의 마스크 발생방법을 사용하여 발생될 수도 있는 ECC 마스크를 도시한 것이다. 또, 상기 청크는 이전과 같으므로, 8개의 데이터 비트와 4개의 어드레스 비트로 이루어진다고 가정한다. 상기 청크 사이즈와 4의 해밍 거리에 근거하여, 상기 에러 코드는 체크 비트가 6개 필요하므로, 상기 마스크 어레이의 행은 도 5a에 도시된 것처럼 6개다. 도 2를 참조하여 상술한 프로세스를 사용하여, 마스크 행(205, 210)의 2개가 특수 행 발생 규칙들이 행해질 필요가 있다고 결정한다. 이들은 상기 마스크 어레이내에 제1의 2개의 마스크 행인 것으로서 도시되어 있지만, 어느 2개의 마스크 행이 선택되는지는 중요하지 않다는 것을 알 것이다. 도 5a에 도시된 것처럼, 각 마스크 행 205, 210의 마스크 비트는 0으로 설정된 어드레스 비트와 연관되어서, 그 어드레스 비트는 체크 비트 C0 및 C1의 값에 영향을 미칠 수 없다. 또한, 각 마스크 행 205, 210은, 홀수의 데이텀 비트를 선택시키도록, 상기 데이텀 비트에 대응한 장소에서 1로 설정된 홀수의 마스크 행 비트를 갖는다. 또한, 1로 설정된 마스크 비트들은, 2개의 마스크 행 205, 210간에 상보적이므로, 임의의 특별한 데이텀 비트가 체크 비트 C0 또는 체크 비트 C1 중 어느 한쪽의 계산에만 사용되도록 보장한다. 또한, 상기 2개의 마스크 행 205, 210의 조합은, 체크 비트 C0 또는 체크 비트 C1 중 어느 한쪽을 발생할 때 사용하기 위해 상기 데이텀 비트 전부가 선택되도록 보장한다. 따라서, 이들 2개의 마스크 행 205, 210은, 도 2의 단계 60과 65에서 시작된 상기 규칙들에 따른다.
도 4의 프로세스를 행할 때, 단계 165, 170은, 상기 마스크 행 205, 210과 연관된 논리 1값들과 나머지 마스크 행들을 위한 논리 0값을 포함하는, 도 5a의 참조번호 215로 도시된 형태의 효과적인 여분의 열을 제공한다.
데이텀 비트의 수가 짝수이라는 사실로 인해, 상기 특수 행 발생 규칙들이 행해지는데 필요한 마스크 행의 수를 결정하기 위해 도 2의 단계 55에서 사용된 상술한 식은, 2개의 마스크 행에 대해서만 그 규칙들을 행할 필요가 있다는 것을 확인할 것이다. 그렇지만, 데이텀 비트의 수가 홀수인 경우에는, 제3 마스크 행에 대해서 상기 특수 행 발생 규칙들을 행할 필요가 있을 것이다.
도 5b는, 상기 에러 코드 체계가 2중 에러 정정 3중 에러 검출(DECTED) 체계이어서 해밍 거리가 6이라고 가정하는, 도 2의 상술한 기술을 사용하여 생성될 수도 있는 ECC 마스크 어레이의 다른 예를 도시한 것이다. 본 예에서는, 상기 청크가 4개의 어드레스 비트와 9개의 데이터 비트로 이루어진다고 가정한다. 그 청크 사이즈와 6의 해밍 거리를 고려하면, 이것은, 도 5b에 도시된 것처럼, 그 체크 코드내에 9개의 체크 비트를 필요로 한다. 도 2의 단계 55를 참조하여 상술한 식에 따라, 3개의 마스크 행에 대해 도 2의 단계 60과 65의 상기 행 발생 규칙들을 행할 필요가 있다고 결정한다. 상기 데이텀 비트의 수가 짝수였었다면, 제4 마스크 행에 대해서도 그 규칙들을 행할 필요가 있을 것이다.
도 5b에 도시된 것처럼, 상기 마스크 어레이(250)에 대해, 상기 특수 행 발생 규칙들이 행해진 3개의 마스크 행은, 마스크 행 255, 260, 265다. 명백히 도시된 것처럼, 그 마스크 행들의 각각의 마스크 비트들은 어드레스 비트들에 대응한 비트 위치들에서 0으로 설정된다. 또한, 그 마스크 행들의 각각은 홀수의 데이터 비트를 선택시키고, 각 마스크 행은 그 3개의 마스크 행의 나머지의 각각과 다른 데이터 비트를 선택한다. 또한, 3개의 마스크 행 255, 260, 265 전체에 걸쳐서, 각 데이터 비트는 한번 선택된다. 따라서, 도 2의 단계 60과 65의 규칙들을 만족시킨다는 것을 알 수 있다. 상기 열(270)은, 상기 각 행 위치에서 논리 1값들이 상기 특수 마스크 행(255, 260, 265)과 연관되고 논리 0값들이 나머지 마스크 행 전부와 연관된, 도 4의 단계 165, 170의 수행으로 얻어진 상기 효과적인 여분의 열을 보인 것이다.
도 6은 도 2의 마스크 발생 체계를 채용할 때, 다양한 다른 에러 코드 체계에 대해서, 상기 어드레스 위치에서 0들을 필요로 한 행들의 해밍 거리와 최소 수를 도시한 표다. 도 2의 단계 55를 참조하여 상술한 식으로부터 명백하듯이, 정정되는 하나 이상의 비트를 지원하는 상기 체계들의 임의의 체계에 대해서, 실제의 행의 수는, 상기 데이텀의 비트가 짝수인지 홀수인지에 따라 1씩 증가될 필요가 있을 수도 있다. 또한, 도 6은 4개의 에러 코드 체계의 예만을 도시하지만, 상술한 기술들은 각 경우에 필요한 행의 수가 도 2의 단계 55를 참조하여 상술한 식으로 결정되면서 나머지 에러 코드 체계에도 적용 가능하다는 것을 알 것이다.
도 7은 일 실시예에 따라 상술한 마스크 어레이를 사용하여 ECC 코드를 발생하는데 사용될 수도 있는 ECC 발생기 회로의 블록도다. 특히, 상기 데이텀 및 어드레스 비트는, 그 어드레스 비트를 데이터 비트에 첨부하여서 청크를 발생하는 청크 발생기(305)에 입력된다. 그리고, 상기 ECC 계산회로(310)는, 그 청크를 수신하고, 또한 상기 스토리지(315)내에 저장된 마스크 어레이에 액세스 한다. 그리고, 상기 ECC 계산회로(310)는, 경로(320)를 통해 출력된 ECC 코드 비트들을 발생하기 위해서 도 4를 참조하여 상술한 프로세스를 행한다. 상기 설명으로부터 안 것은, 상기 ECC 계산 회로는, 상기 데이텀 비트가 모두 0일 때 적어도 하나의 체크 비트가 논리 1값으로 설정되거나, 상기 데이텀 비트가 모두 1일 때 적어도 하나의 체크 비트가 논리 0값으로 설정되는, ECC 코드를 발생한다는 것이다. 또한, 상기 에러 코드 체계에 의해 에러의 특정한 수의 비트를 정정할 수 있는 경우에 대해 상기 특수 행 발생 체계가 행해지는 다수의 마스크 행을 이용하여, 상기 ECC 계산회로는, 상기 데이텀과 함께 저장하기 위해 발생된 에러 코드가 (정정 가능한 에러로서 부정확하게 해석하는 것보다는) 0에서의 막힘 결함이나 1에서의 막힘 결함을 신뢰성 있게 검출하기에 충분하도록 보장할 것이다.
도 8은 메모리(375)와 연관지어 사용되어도 되는 기록 보호회로(350)와 판독 보호회로(380) 모두를 도시하는 도면이다. 기록 데이터가 상기 메모리(375)에 기록될 때, 상기 기록 어드레스와 상기 기록 데이터는, 상기 기록 보호회로(350)내 상기 ECC 발생기(355)에 제공된다. 상기 ECC 발생기(355)는, 도 7을 참조하여 설명한 ECC 발생기(300)의 형태를 취할 수도 있다. 따라서, 상기 ECC 발생기는 상기 스토리지(365)내 상기 마스크 어레이에 액세스하고, 이때의 마스크 어레이는 상술한 기술들을 사용하여 발생되어 있다. 상기 ECC 발생기(355)는, 상기 첨부회로(360)에 보내진 ECC 코드를 발생하고 나서, 이 ECC 코드를 상기 기록 데이터에 첨부하고, 이때의 상기 기록 데이터와 ECC 코드 모두는 상기 기록 데이터와 연관지어 특정된 기록 어드레스에서 상기 메모리(375)내 저장을 위한 경로(370)를 통해 출력된다.
이어서 특정된 판독 어드레스의 결과로서 경로(377)를 통해 메모리로부터 그 데이텀과 연관 ECC 코드가 판독될 때, 상기 판독 어드레스에서 상기 메모리로부터 판독된 데이터는 상기 특정된 판독 어드레스와 함께 상기 ECC 발생기(385)에 보내진다. 상기 ECC 발생기(385)도 도 7에 도시된 ECC 발생기(300)의 형태를 취하고, 상기 스토리지(365)내 마스크 어레이에 액세스한다. 이에 따라, 상기 ECC 발생기(385)는 상기 마스크 어레이, 상기 판독 어드레스 및 상기 판독 데이텀을 사용하여 ECC 코드를 발생하고, 그 ECC 코드는, 상기 계산된 ECC 코드가 상기 메모리 어드레스로부터 판독하였던 ECC 코드와 일치하는가를 판정할 수 있는 상기 체크 회로(387)에 보내진다. 상기 체크 회로(387)는, 에러 검출/정정 회로(390)에 메모리로부터 판독된 데이텀과 함께 전달된 상기 체크의 결과로서 신드롬 정보를 생성한다. 그 신드롬 정보는, 상기 ECC 발생기(385)에서 발생한 ECC코드가 메모리로부터 판독된 ECC 코드와 일치하는가를 확인하고, 일치하지 않는 경우에, 에러의 타입에 대한 추가의 정보도 제공할 수 있다. 그 후, 이 정보는, 상기 회로(390)에 의해 상기 판독 보호회로(380)로부터의 적절한 출력을 결정하는데 사용될 수 있다.
예를 들면, 그 2개의 ECC 코드가 일치하여서 에러가 없다고 판정된 경우, 상기 판독 데이터가 출력되어도 된다. 마찬가지로, 상기 신드롬 정보가 정정 가능한 데이터 에러가 있다고 확인하면, 상기 회로(390)는, 그 데이터를 정정하여 출력하여도 된다. 상기 신드롬 정보가 정정 가능하지 않은 데이터 결함이 있다고 확인하면, 상기 회로(390)는 데이터 결함이 있는 출력으로서 확인한다. 마찬가지로, 상기 신드롬 정보는, 그 데이터보다는 어드레스에 결함이 있음에 따라서, 어드레스 디코드 결함 에러가 상기 회로(390)로부터 출력될 수 있다고 확인할 수도 있다. 끝으로, 메모리로부터 판독된 것처럼 상기 데이텀이 모두 0(또는 모두 1)이고, 메모리로부터 판독된 ECC가 모두 0(또는 모두 1)이면, 이것이 0에서의 막힘 결함이나 1에서의 막힘 결함의 존재를 나타냄에 따라서, 그것도 상기 회로(390)로부터 출력될 수 있다. 또는, 어드레스 디코드 에러와 0/1에서의 막힘 에러는 임의의 다른 타입의 정정 불가능한 에러로 별도로 명백히 확인되지 않을 수도 있고, 대신에, 단지 정정 불가능한 에러의 표시만을 상기 회로(390)로부터 출력시킬 수도 있다.
도 9는, 상술한 기술들을 구현하는데 사용될 수도 있는 타입의 범용 컴퓨터(400)와, 특히 복수의 데이터와 복수의 어드레스 비트로 이루어진 블록용 에러 코드를 발생할 때 사용하기 위한 마스크 어레이의 발생을 개략적으로 도시한 것이다. 이 범용 컴퓨터(400)는, 중앙처리장치(402), 랜덤 액세스 메모리(404), 판독전용 메모리(406), 네트워크 인터페이스 카드(408), 하드 디스크 드라이브(410), 디스플레이 드라이버(412) 및 모니터(414), 및 키보드(418)와 마우스(420)에 의한 유저 입/출력 회로(416) 모두가 공통 버스(422)를 통해 접속되어 있다. 동작상, 상기 중앙처리장치(402)는, 랜덤 액세스 메모리(404), 판독전용 메모리(406) 및 하드 디스크 드라이브(410) 중 하나 이상에 저장될 수도 있거나, 네트워크 인터페이스 카드(408)를 거쳐 동적으로 다운로드될 수도 있는, 컴퓨터 프로그램 명령어들을 실행한다. 그 처리가 행해진 결과는, 유저에게 상기 디스플레이 드라이버(412)와 모니터(414)를 통해 표시될 수도 있다. 상기 범용 컴퓨터(400)의 동작을 제어하는 유저 입력들은 키보드(418)나 마우스(420)로부터 유저 입/출력 회로(416)를 거쳐 수신될 수도 있다. 그 컴퓨터 프로그램은 다양한 다른 컴퓨터 언어로 기록될 수 있다는 것을 알 것이다. 이 컴퓨터 프로그램은, 기록매체에 저장되어 배포될 수도 있거나, 그 범용 컴퓨터(400)에 동적으로 다운로드될 수도 있다. 적절한 컴퓨터 프로그램의 제어하에 작동할 때, 상기 범용 컴퓨터(400)는, 상술한 마스크 어레이 발생 기술들을 행할 수 있고, 상술한 기술들을 행하는 장치를 구성한다고 생각될 수 있다. 상기 범용 컴퓨터의 아키텍처는 상당히 달라질 수 있고, 도 9는 일례일 뿐이다.
상술한 실시예들로부터, 상기 기술들에 의해, 메모리에 저장된 데이텀에서의 데이터 비트 에러의 검출 및/또는 정정을 가능하게 할 뿐만 아니라, 상기 메모리 출력에서 0에서의 막힘 결함이나 1에서의 막힘 결함의 검출을 위해 추가로 지원하면서 확인되는 어드레스 디코딩 에러를 고려할 수도 있도록, 마스크 어레이가 발생될 수 있다는 것을 알 것이다. 이것은, 보호되는 상기 청크의 사이즈와 이용되는 에러 코드 체계의 타입에 의해 명기된 체크 비트의 수를 갖는 에러 코드를 제공하면서 이루어지므로, 상기 메모리의 영역 암시를 하는 임의의 추가의 중복 비트를 추가할 필요가 없다.
본 출원에서, "...하도록 구성된"의 단어는, 장치의 요소가 상기 규정된 연산을 실시할 수 있는 구성을 갖는다는 것을 의미하는데 사용된다. 본 문맥에서, "구성"은, 하드웨어 또는 소프트웨어의 상호연결의 배치 또는 방식을 의미한다. 예를 들면, 상기 장치는 상기 규정된 연산을 제공하는 전용 하드웨어를 가져도 되거나, 프로세서 또는 다른 처리 디바이스는 그 기능을 행하도록 프로그래밍되어도 된다. "하도록 구성된"은, 상기 장치 요소가 임의의 방식으로 상기 규정된 연산을 제공하기 위해서 변경될 필요가 있다는 것을 암시하지는 않는다.
본 발명의 설명에서는 본 발명의 실시예들을 첨부도면을 참조하여 상세히 설명하였지만, 본 발명은 구체적인 실시예들에 한정되지 않고, 첨부된 청구항에서 기재된 것과 같은 본 발명의 범위 및 사상으로부터 벗어나지 않고 당업자가 변경, 부가 및 변형을 여러 가지로 실시할 수 있다는 것을 알 수 있다. 예를 들면, 본 발명의 범위로부터 벗어나지 않고 종속항의 특징들과 독립항의 특징들을 여러 가지로 조합할 수 있다.

Claims (22)

  1. 복수의 데이터 비트와 복수의 어드레스 비트로 이루어진 블록을 발생하는 블록 발생회로; 및
    상기 블록과, 복수의 마스크 행으로 이루어진 마스크 어레이를 수신하고, 에러 코드 발생 알고리즘을 적용하여 블록용 에러 코드를 발생하는 에러 코드 발생회로를 구비하는, 장치로서, 상기 에러 코드는 상기 블록과, 상기 마스크 어레이의 대응한 마스크 행을 사용하여 각 체크 비트를 결정하는 복수의 체크 비트를 포함하고;
    각 마스크 행은 각 마스크 비트가 상기 블록의 대응한 비트와 연관되는 복수의 마스크 비트를 포함하고, 적어도 하나의 마스크 행은, 상기 블록의 상기 데이터 비트의 전부의 값이 동일할 때, 상기 에러 코드 발생회로에서 발생한 에러 코드가 상기 어드레스 비트의 값에 상관없이 상기 데이터 비트의 값과 다른 값을 갖는 적어도 하나의 체크 비트를 갖도록 보장하기 위해 제약된 마스크 비트 값들을 갖고,
    상기 적어도 하나의 마스크 행에서 각 마스크 행은, 상기 블록의 어드레스 비트의 아무것도 대응한 체크 비트를 발생할 때 사용하기 위해 선택되지 않도록 배치된 마스크 비트 값들을 갖는, 장치.
  2. 삭제
  3. 제 1 항에 있어서,
    상기 적어도 하나의 마스크 행을 형성하는 마스크 행의 수는, 상기 장치가 이용한 에러 코드 체계와, 상기 블록에서의 복수의 데이터 비트가 짝수 또는 홀수인지에 좌우되는, 장치.
  4. 제 3 항에 있어서,
    상기 적어도 하나의 마스크 행을 형성하는 마스크 행의 수 NO는 아래의 식으로 표시된다:
    NO= 1+C+[[((1+C)%2)!=(Dt%2)]&(C!=0)]
    여기서, C는 상기 에러 코드 체계에 의해 정정 가능한 비트의 수이고, Dt는 상기 복수의 데이터 비트에서 데이터 비트의 수이며, %는 모듈로 연산자를 의미하는, 장치.
  5. 제 1 항에 있어서,
    상기 적어도 하나의 마스크 행에서 각 마스크 행은, 상기 블록내의 데이터 비트의 홀수가 대응한 체크 비트를 발생할 때 사용하기 위해 선택되도록 배치된 마스크 비트 값들을 갖는, 장치.
  6. 제 5 항에 있어서,
    상기 적어도 하나의 마스크 행이 다수의 마스크 행을 포함할 때, 상기 다수의 마스크 행에서의 마스크 비트 값들은, 상기 블록내의 다른 데이터 비트가 상기 대응한 체크 비트를 발생할 때 사용하기 위해 그 다수의 마스크 행들의 각각에 의해 선택되도록 보장하기 위해 배치된, 장치.
  7. 제 6 항에 있어서,
    상기 적어도 하나의 마스크 행이 다수의 마스크 행을 포함할 때, 상기 다수의 마스크 행에서의 마스크 비트 값들은, 상기 블록내의 각 데이터 비트가 상기 대응한 체크 비트를 발생할 때 사용하기 위해 그 다수의 마스크 행 중 하나에 의해 선택되도록 한층 더 보장하기 위해 배치된, 장치.
  8. 제 1 항에 있어서,
    상기 에러 코드 발생 알고리즘은, 상기 블록 및 대응한 마스크 행으로부터 제1 체크 비트를 발생하는 메인 프로세스와, 상기 제1 체크 비트를 반전하여 제2 체크 비트를 생성하도록 선택적으로 적용된 부가 프로세스를 포함하고,
    상기 에러 코드 발생회로에서 발생한 에러 코드는, 상기 적어도 하나의 마스크 행을 형성하는 임의의 마스크 행을 사용하여 발생된 상기 제2 체크 비트와, 나머지 마스크 행의 각각을 사용하여 발생된 상기 제1 체크 비트를 포함하는, 장치.
  9. 제 8 항에 있어서,
    상기 메인 프로세스는, 마스크 행을 사용하여 상기 블록을 형성하는 상기 비트의 서브세트를 선택하는 것과, 그 후 연관된 제1 체크 비트를 생성하기 위해 상기 선택된 상기 비트의 서브세트에 관해 XOR 감소 연산을 행하는 것을 포함하는, 장치.
  10. 제 9 항에 있어서,
    상기 부가 프로세스는, 상기 제1 체크 비트의 값을 반전하는 XOR 연산을 포함하는, 장치.
  11. 저장 디바이스의 특정된 메모리 어드레스에 기록 데이터와 연관지어 저장되는 에러 코드를 발생하는 기록 보호회로로서, 상기 기록 데이터와 상기 특정된 메모리 어드레스로부터 상기 에러 코드를 발생하는 청구항 1에 기재된 장치를 구비하고, 상기 블록의 상기 복수의 데이터 비트는 상기 기록 데이터로부터 형성되고, 상기 블록의 상기 복수의 어드레스 비트는 상기 특정된 메모리 어드레스로부터 형성되는, 기록 보호회로.
  12. 저장 디바이스에서 특정된 메모리 어드레스로부터 얻어진 판독 데이터에 관해 에러 체크 프로세스를 행하는 판독 보호회로로서,
    상기 판독 데이터와 상기 특정된 메모리 어드레스로부터 에러 코드를 발생하는 청구항 1에 기재된 장치 - 상기 블록의 상기 복수의 데이터 비트가 상기 판독 데이터로부터 형성되고, 상기 블록의 상기 복수의 어드레스 비트가 상기 특정된 메모리 어드레스로부터 형성됨 -; 및
    상기 발생된 에러 코드가 저장된 에러 코드와 다를 때 오류 조건을 검출하도록, 상기 판독 데이터와 연관지어 상기 저장 디바이스에 저장된 에러 코드와, 상기 발생된 에러 코드를 비교하는 체크 회로를 구비하는, 판독 보호회로.
  13. 마스크 어레이를 발생하는 컴퓨터 구현 방법으로서,
    상기 마스크 어레이를 사용하여 발생되는 에러 코드의 체크 비트마다 하나의 마스크 행을 제공하도록 상기 마스크 어레이의 마스크 행의 수를 결정하는 단계;
    상기 에러 코드가 발생되고 복수의 데이터 비트와 복수의 어드레스 비트로 이루어진 블록에서 비트의 수에 따라 각 마스크 행에서의 마스크 비트의 수를 결정하는 단계; 및
    상기 블록의 상기 데이터 비트의 전부의 값이 같을 때, 상기 마스크 어레이를 사용하여 그 블록에 대해 발생된 에러 코드가 상기 어드레스 비트의 값에 상관없이 상기 데이터 비트의 값과 다른 값을 갖는 적어도 하나의 체크 비트를 갖도록 보장하기 위해 상기 마스크 행의 마스크 비트 값들을 제약하기 위해서 처리 회로상에서 마스크 비트 발생 프로세스를, 상기 마스크 행 중 적어도 하나에 대해서 실행하는 단계를 포함하고,
    상기 적어도 하나의 마스크 행에서 마스크 행마다, 상기 마스크 비트 발생 프로세스는, 상기 블록의 어드레스 비트의 아무것도 대응한 체크 비트를 발생할 때 사용하기 위해 선택되지 않도록 마스크 비트 값들을 결정하는, 컴퓨터 구현 방법.
  14. 제 13 항에 있어서,
    상기 적어도 하나의 마스크 행이외의 나머지 모든 마스크 행에 대해서, 상기 마스크 비트 발생 프로세스는 디폴트 마스크 발생 규칙들을 이용하여 상기 마스크 비트 값들을 결정하는, 컴퓨터 구현 방법.
  15. 제 14 항에 있어서,
    상기 디폴트 마스크 발생 규칙들은 열 기반 해밍 규칙들을 포함하는, 컴퓨터 구현 방법.
  16. 삭제
  17. 제 13 항에 있어서,
    상기 적어도 하나의 마스크 행을 형성하기 위해 마스크 행의 수를, 이용되는 에러 코드 체계와, 상기 블록에서의 복수의 데이터 비트가 짝수 또는 홀수인지에 좌우되어 결정하는 단계를 더 포함하는, 컴퓨터 구현 방법.
  18. 제 17 항에 있어서,
    상기 적어도 하나의 마스크 행을 형성하는 마스크 행의 수 NO는 아래의 식으로 표시된다:
    NO= 1+C+[[((1+C)%2)!=(Dt%2)]&(C!=0)]
    여기서, C는 상기 에러 코드 체계에 의해 정정 가능한 비트의 수이고, Dt는 상기 복수의 데이터 비트에서 데이터 비트의 수이며, %는 모듈로 연산자를 의미하는, 컴퓨터 구현 방법.
  19. 제 13 항에 있어서,
    상기 적어도 하나의 마스크 행에서 마스크 행마다, 상기 마스크 비트 발생 프로세스는, 상기 블록내의 데이터 비트의 홀수가 대응한 체크 비트를 발생할 때 사용하기 위해 선택되도록 마스크 비트 값들을 결정하는, 컴퓨터 구현 방법.
  20. 제 19 항에 있어서,
    상기 적어도 하나의 마스크 행이 다수의 마스크 행을 포함할 때, 상기 마스크 비트 발생 프로세스는, 상기 블록내의 다른 데이터 비트가 상기 대응한 체크 비트를 발생할 때 사용하기 위해 그 다수의 마스크 행들의 각각에 의해 선택되도록 보장하기 위해 상기 다수의 마스크 행에서의 마스크 비트 값들을 결정하는, 컴퓨터 구현 방법.
  21. 제 20 항에 있어서,
    상기 적어도 하나의 마스크 행이 다수의 마스크 행을 포함할 때, 상기 마스크 비트 발생 프로세스는, 상기 블록내의 각 데이터 비트가 상기 대응한 체크 비트를 발생할 때 사용하기 위해 그 다수의 마스크 행 중 하나에 의해 선택되도록 한층 더 보장하기 위해 상기 다수의 마스크 행에서의 마스크 비트 값들을 결정하는, 컴퓨터 구현 방법.
  22. 청구항 13의 컴퓨터 구현 방법에 따라 발생된 마스크 어레이를 포함하는 기억매체.
KR1020170063255A 2016-05-31 2017-05-23 복수의 데이터 비트와 복수의 어드레스 비트로 이루어진 블록용 에러 코드 발생장치 및 방법 KR102292212B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
GB1609538.2 2016-05-31
GB1609538.2A GB2550929A (en) 2016-05-31 2016-05-31 An apparatus and method for generating an error code for a block comprising a plurality of data bits and a plurality of address bits

Publications (2)

Publication Number Publication Date
KR20170135691A KR20170135691A (ko) 2017-12-08
KR102292212B1 true KR102292212B1 (ko) 2021-08-23

Family

ID=56410795

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170063255A KR102292212B1 (ko) 2016-05-31 2017-05-23 복수의 데이터 비트와 복수의 어드레스 비트로 이루어진 블록용 에러 코드 발생장치 및 방법

Country Status (6)

Country Link
US (1) US10084478B2 (ko)
EP (1) EP3260980B1 (ko)
JP (1) JP6982982B2 (ko)
KR (1) KR102292212B1 (ko)
CN (1) CN107436821B (ko)
GB (1) GB2550929A (ko)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10908995B2 (en) 2017-09-29 2021-02-02 Nvidia Corporation Securing against errors in an error correcting code (ECC) implemented in an automotive system
JP2019109806A (ja) * 2017-12-20 2019-07-04 ルネサスエレクトロニクス株式会社 データ処理装置及びデータ処理方法
CN109669669B (zh) * 2018-12-06 2022-06-24 镕铭微电子(济南)有限公司 误码生成方法及误码生成器
CN109872754B (zh) * 2019-02-15 2021-02-26 长江存储科技有限责任公司 数据编程方法及装置、存储器及存储介质
CN112289366B (zh) * 2019-07-25 2024-03-26 华邦电子股份有限公司 存储器存储装置及数据存取方法
CN113055259B (zh) * 2021-02-08 2022-05-13 西安电子科技大学 一种基于axi总线协议的功能安全保护方法
CN114153648B (zh) * 2021-12-03 2022-09-16 海光信息技术股份有限公司 数据读取、写入方法及装置、软错误处理系统
US11947409B2 (en) * 2022-01-12 2024-04-02 Xilinx, Inc. Parity protection of control registers based on register bit positions
US11960358B1 (en) * 2022-09-30 2024-04-16 Nxp B.V. More secure data reading with error correction codes
CN116959540B (zh) * 2023-08-16 2024-03-01 沐曦集成电路(上海)有限公司 具有写掩码的数据校验系统

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100746225B1 (ko) 2006-02-13 2007-08-03 삼성전자주식회사 반도체 메모리 장치 및 이를 구비한 메모리 시스템
US20070283193A1 (en) 2006-04-21 2007-12-06 Altera Corporation Soft error location and sensitivity detection for programmable devices
US20150212877A1 (en) * 2014-01-28 2015-07-30 Infineon Technologies Ag Apparatus and method for improving data storage by data inversion

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE3319710A1 (de) * 1983-05-31 1984-12-06 Siemens AG, 1000 Berlin und 8000 München Speichersteueranordnung, insbesondere fuer ein fehlertolerantes fernsprech-vermittlungssystem
US6757862B1 (en) * 2000-08-21 2004-06-29 Handspring, Inc. Method and apparatus for digital data error correction coding
US6700827B2 (en) * 2001-02-08 2004-03-02 Integrated Device Technology, Inc. Cam circuit with error correction
US6978343B1 (en) * 2002-08-05 2005-12-20 Netlogic Microsystems, Inc. Error-correcting content addressable memory
US7350044B2 (en) * 2004-01-30 2008-03-25 Micron Technology, Inc. Data move method and apparatus
US7509541B2 (en) * 2004-06-24 2009-03-24 Intel Corporation Detection mechanism
CN100507878C (zh) * 2005-11-30 2009-07-01 株式会社东芝 访问控制设备、方法和存储器访问控制设备、方法
JP4498295B2 (ja) * 2005-11-30 2010-07-07 株式会社東芝 アクセス制御装置、アクセス制御システム、プロセッサ、アクセス制御方法
JP4643479B2 (ja) * 2006-03-22 2011-03-02 株式会社東芝 アクセス制御装置、アクセス制御システム、プロセッサ、アクセス制御方法およびメモリアクセス制御方法
US7945840B2 (en) * 2007-02-12 2011-05-17 Micron Technology, Inc. Memory array error correction apparatus, systems, and methods
US8589762B2 (en) * 2011-07-05 2013-11-19 International Business Machines Corporation Adaptive multi-bit error correction in endurance limited memories
JPWO2015133095A1 (ja) * 2014-03-04 2017-04-06 日本電気株式会社 パリティ検査符号生成装置、符号化方法、符号化装置および制御プログラム

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100746225B1 (ko) 2006-02-13 2007-08-03 삼성전자주식회사 반도체 메모리 장치 및 이를 구비한 메모리 시스템
US20070283193A1 (en) 2006-04-21 2007-12-06 Altera Corporation Soft error location and sensitivity detection for programmable devices
US20150212877A1 (en) * 2014-01-28 2015-07-30 Infineon Technologies Ag Apparatus and method for improving data storage by data inversion

Also Published As

Publication number Publication date
KR20170135691A (ko) 2017-12-08
CN107436821B (zh) 2022-08-19
EP3260980A1 (en) 2017-12-27
GB201609538D0 (en) 2016-07-13
US10084478B2 (en) 2018-09-25
JP2017215958A (ja) 2017-12-07
JP6982982B2 (ja) 2021-12-17
GB2550929A (en) 2017-12-06
EP3260980B1 (en) 2019-02-13
CN107436821A (zh) 2017-12-05
US20170346504A1 (en) 2017-11-30

Similar Documents

Publication Publication Date Title
KR102292212B1 (ko) 복수의 데이터 비트와 복수의 어드레스 비트로 이루어진 블록용 에러 코드 발생장치 및 방법
US9703633B2 (en) Circuits, apparatuses, and methods for correcting data errors
JP4071940B2 (ja) メモリ設計のための共有式誤り訂正
US7797609B2 (en) Apparatus and method for merging data blocks with error correction code protection
US4740968A (en) ECC circuit failure detector/quick word verifier
US9760434B2 (en) ECC method for double pattern flash memory
US8145977B2 (en) Methods and apparatus for providing error correction to unwritten pages and for identifying unwritten pages in flash memory
US10333558B2 (en) Decoding device and decoding method
KR20120114366A (ko) 비트 값들의 저장된 총계를 이용하여 데이터 에러들을 보정하는 시스템 및 방법
KR101486424B1 (ko) 에러 정정 회로, 에러 정정 회로를 구비하는 플래시 메모리시스템 및 에러 정정 회로의 동작 방법
US9696923B2 (en) Reliability-aware memory partitioning mechanisms for future memory technologies
JPH03248251A (ja) 情報処理装置
US10514980B2 (en) Encoding method and memory storage apparatus using the same
KR102142602B1 (ko) 신규 메모리 디바이스
US10025652B2 (en) Error location pointers for non volatile memory
US20090164867A1 (en) High Speed Memory Error Detection and Correction Using Interleaved (8,4) LBCs
US8028221B2 (en) Error correction and error detection method for reading of stored information data and a storage control unit for the same
US10250279B2 (en) Circuits and methods for writing and reading data
JP2020150515A (ja) 誤り訂正回路及びメモリシステム
TWI569279B (zh) 記憶體保護裝置與方法
GB2455212A (en) Error detection in processor status register files
TWI523023B (zh) 用於記憶體之錯誤校正碼方法
JP2019028952A (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