KR20220011641A - 무결성 검사를 이용한 오류 검출 및 정정 기법 - Google Patents

무결성 검사를 이용한 오류 검출 및 정정 기법 Download PDF

Info

Publication number
KR20220011641A
KR20220011641A KR1020217038198A KR20217038198A KR20220011641A KR 20220011641 A KR20220011641 A KR 20220011641A KR 1020217038198 A KR1020217038198 A KR 1020217038198A KR 20217038198 A KR20217038198 A KR 20217038198A KR 20220011641 A KR20220011641 A KR 20220011641A
Authority
KR
South Korea
Prior art keywords
bit value
error
bit
data
address
Prior art date
Application number
KR1020217038198A
Other languages
English (en)
Inventor
제이 에스 풀러
Original Assignee
마이크로소프트 테크놀로지 라이센싱, 엘엘씨
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 마이크로소프트 테크놀로지 라이센싱, 엘엘씨 filed Critical 마이크로소프트 테크놀로지 라이센싱, 엘엘씨
Publication of KR20220011641A publication Critical patent/KR20220011641A/ko

Links

Images

Classifications

    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1068Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/52Protection of memory contents; Detection of errors in memory contents
    • 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

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)
  • Detection And Correction Of Errors (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

무결성 검사를 이용한 오류 검출 및 정정 시스템과 방법이 제공된다. 이 방법은 단일 오류 정정 및 이중 오류 검출 코드(SECDED: single error correction and double error detection)를 사용해서 데이터 벡터 비트 값(data vector bit values)과 무결성 벡터 비트 값(integrity vector bit values) 모두를 제 1 처리하여 체크 비트 값(check bit values)을 생성하는 단계를 포함하는데, SECDED는 (1) 데이터 벡터 값에서의 단일 오류의 검출 및 정정, 또는 (2) 정정불가능한 오류의 표시를 허용하도록 구성되고, 정정불가능한 오류는 데이터 벡터 비트 값에서의 둘 이상의 단일 오류 또는 무결성 벡터 비트 값에서의 단일 오류나 다중 비트 오류에 해당한다. 이 방법은 또한 체크 비트 값을 제 2 처리하고, 데이터 벡터 비트 값에서 둘 이상의 단일 오류를 검출하거나 무결성 벡터 비트 값에서 단일 오류 또는 다중 비트 오류를 검출한 경우 정정불가능한 에러를 표시하는 제 2 처리 단계를 더 포함한다.

Description

무결성 검사를 이용한 오류 검출 및 정정 기법
점점 더 많은 악의적인 해커들이 보안 키와 다른 민감한 데이터와 같은 데이터에 접근하려고 시도하고 있다. 이러한 시도는 악성 코드 사용에 국한된 것이 아니라, 집적 회로 또는 메모리를 포함한 기타 컴포넌트에 대한 물리적 조작을 포함한다. 또한, 데이터 전송 채널의 빈도가 증가함에 따라, 오류 검출 및 정정이 점점 더 중요해지고 있다.
일 실시예에서, 본 개시내용은 단일 오류 정정(single error correction) 및 이중 오류 검출 코드(double error detection code)를 사용해서 데이터 벡터 비트 값(data vector bit values)과 무결성 벡터 비트 값(integrity vector bit values) 모두를 제 1 처리하여 체크 비트 값(check bit values)을 생성하는 단계를 포함하는 방법과 관련되는데, 단일 오류 정정 및 이중 오류 검출 코드는 (1) 데이터 벡터 값에서의 단일 오류의 검출 및 정정, 또는 (2) 정정불가능한 오류의 표시를 허용하도록 구성되고, 정정불가능한 오류는 데이터 벡터 비트 값에서의 둘 이상의 단일 오류 또는 무결성 벡터 비트 값에서의 단일 오류나 다중 비트 오류에 해당한다. 이 방법은 체크 비트 값을 제 2 처리하고, 데이터 벡터 비트 값에서 둘 이상의 단일 오류(single error)를 검출하거나 무결성 벡터 비트 값에서 단일 오류 또는 다중 비트 오류(multi-bit error)를 검출한 경우 정정불가능한 에러(uncorrectable error)를 표시하는 단계를 더 포함한다.
다른 실시예에서, 본 개시내용은 단일 오류 정정 및 이중 오류 검출 코드를 사용해서 데이터에 해당하는 데이터 비트 값과 어드레스에 해당하는 어드레스 비트 값 모두를 처리하여 체크 비트 값을 생성하도록 구성된 인코더를 포함하는 시스템과 관련되는데, 단일 오류 정정 및 이중 오류 검출 코드는 (1) 데이터 비트 값에서의 단일 오류의 검출 및 정정, 또는 (2) 정정불가능한 오류의 표시를 허용하도록 구성되고, 정정불가능한 오류는 데이터 비트 값에서의 둘 이상의 단일 오류 또는 어드레스 비트 값에서의 단일 오류나 다중 비트 오류에 해당한다. 이 시스템은 체크 비트 값을 처리하고, (1) 데이터 비트 값에서 둘 이상의 단일 오류를 검출하거나 (2) 데이터 비트 값에서는 단일 오류가 하나도 검출되지 않은 경우라도 어드레스 비트 값에서 단일 오류 또는 다중 비트 오류를 검출한 경우, 정정불가능한 에러를 나타내도록 구성된 디코더를 더 포함한다.
또 다른 실시예에서, 본 개시내용은 소정 어드레스에 데이터를 저장하도록 구성된 메모리를 포함하는 시스템에서의 방법과 관련된다. 이 방법은, 단일 오류 정정 및 이중 오류 검출 코드를 사용해서 데이터에 해당하는 데이터 비트 값과 데이터의 어드레스에 해당하는 어드레스 비트 값을 처리하여 인코딩된 비트 값을 생성하는 단계를 포함하되, 단일 오류 정정 및 이중 오류 검출 코드는 (1) 데이터 비트 값에서의 단일 오류의 검출 및 정정, 또는 (2) 정정불가능한 오류의 표시를 허용하도록 구성되고, 정정불가능한 오류는 데이터 비트 값에서의 둘 이상의 단일 오류 또는 어드레스 비트 값에서의 단일 오류 또는 다중 비트 오류에 해당한다. 이 방법은 인코딩된 비트 값을 디코딩하고, (1) 데이터 비트 값에서 둘 이상의 단일 오류를 검출하거나 (2) 데이터 비트 값에서는 단일 오류가 하나도 검출되지 않았더라도 어드레스 비트 값에서 단일 오류 또는 다중 비트 오류를 검출한 경우, 정정불가능한 에러를 표시하는 단계를 더 포함한다.
본 개요는 아래 발명의 상세한 설명 부분에서 자세히 설명되어 있는 개념 선택을 간단한 형태로 소개하기 위해 제공되는 것이다. 이는 특허청구범위의 대상의 주요 특징이나 필수적인 특징을 나타내기 위한 것이 아니며, 특허청구범위의 대상의 범위를 제한하기 위해 사용하려는 것도 아니다.
본 개시내용은 예시를 통해 설명되며, 동일한 참조부호가 동일한 구성요소를 나타내는 후속하는 도면에 의해 제한되지 않는다. 도면 내의 구성요소들은 단순하고 명료한 설명을 위한 것이며, 반드시 축척대로 도시된 것은 아니다.
도 1은 일 실시예에 따른, 무결성 검사를 이용한 오류 정정 및 검출을 포함하는 시스템의 블록도이다.
도 2a 및 도 2b는 일 실시예에 따라 도 1의 인코더(140)와 관련된 로직을 보여주는 테이블을 도시한다.
도 3은 일 실시예에 따른 인코더의 다이어그램을 보여준다.
도 4a 및 도 4b는 일 실시예에 따른 디코더의 다이어그램을 표시한다.
도 5는 일 실시예에 따른, 무결성 검사를 이용한 오류 정정 및 검출 방법의 흐름도를 나타낸다.
도 6은 일 실시예에 따른, 어드레스 비트 값의 무결성 확인을 이용한 오류 정정 및 검출 방법의 다른 흐름도를 도시한다.
본 개시내용에 기술된 실시예는 무결성 검사를 이용한 오류 검출 및 정정에 관련된 것이다. 어떤 실시예는 오류 정정, 오류 검출 및 무결성 검사 코드의 사용과 관련이 있다. 일 실시예에서 이 코드는 홀수 해밍 가중치(odd Hamming weight) 단일 에러 정정-이중 오류 검출(Single Error Correction-Double Error Detection) (SECDED) 코드의 확장일 수 있다. 32 비트 워드 내에서 단일 비트 오류를 정정하고, 추가적인 7개의 중복 비트(7 additional bits of redundant)를 갖는 32 비트 워드 SECDED 코드 내에서 2 비트 오류를 검출하려면, 패리티 유형 정보가 필요할 수 있다. 본 개시내용의 실시예에는 단일 비트 보정, 이중 오류 비트 검출을 제공하고 별도 필드(예컨대, 11 비트 무결성 벡터 또는 11 비트 어드레스)에서 무결성 검사를 수행하는 32 비트 워드를 위한 코드와 관련된 시스템 및 방법이 포함된다. 32 비트 워드의 경우, 하나의 예로는 단일 비트 오류 정정, 이중 비트 오류 검출, 무결성 검사를 수행하기 위해 8 개의 추가 비트를 사용하는 경우를 들 수 있다. 추가 패리티 비트의 7 비트는 32 비트 워드를 위한 단일 비트 정정 및 이중 비트 오류 검출을 달성하기에 충분하지만, 7 개 대신 8 개의 추가 패리티 비트를 사용함으로써, 본 시스템과 방법은 별도의 필드에 대해 무결성 검사를 동시에 수행할 수 있다. 다른 예에서는 7 비트의 중복 정보가 최소한 어느 정도의 무결성 검사를 수행하기에 충분할 수 있다. 무결성 검사는 무결성 벡터와 연관된 비트에 어떠한 개수의 오류라도 (하나의 단일 오류를 포함) 있는 경우, 정정불가능한 오류 상태를 발생시키는 방식으로 구현된다. 이는 시스템이 무결성 벡터와 관련된 비트에 대한 잠재적 간섭을 검출할 수 있게 하는 이점을 제공할 수 있다. 예를 들어, 무결성 벡터가 메모리의 일부 데이터를 위한 어드레스일 경우, 그 어드레스를 변경하는 악의적인 결함이 검출될 수 있다. 다른 예로는 데이터 항목과 관련된 식별자 또는 다른 메타데이터에 주입된 오류를 검출하는 것이 포함될 수 있다.
도 1은 일 실시예에 따른 무결성 검사를 이용한 오류 정정 및 검출이 포함된 시스템(100)의 블록도를 보여준다. 이 시스템(100)은 신뢰성이 제한되고 데이터 신뢰성 향상을 위해 오류보정을 활용할 수 있는 1회 프로그램 가능(one-time programmable: OTP) 메모리 등 32 비트 메모리와 함께 사용하거나, 오류검출이 필요하고 8 비트의 중복성을 수용할 수 있는 애플리케이션에 사용할 수 있다. 이 시스템(100)은 멀티 비트 트랜잭션의 채널 오류율 개선이 필요할 수 있는 다른 애플리케이션에서도 유용할 수 있다. 시스템(100)에는 로직 블록(110), 추가 로직 블록(1200, 메모리(130), 인코더(140) 및 디코더(150)가 포함될 수 있다. 로직 블록(110)은 로직 블록(110)에 의해 지정된 어드레스에서 메모리(130)에 기록될 어드레스(ADD)와 데이터(DATA)를 제공하도록 구성된 임의의 로직부일 수 있다. 로직 블록(110)은 무결성 벡터(예를 들어, 11 비트 IV)와 오류 주입 벡터(이를테면, 32 비트 또는 40 비트 오류 주입 벡터)를 제공하도록 구성할 수도 있다. 무결성 벡터에는 보안 키(secure keys), 비밀 키(secret keys), 장치 ID(device IDs), 이니시에이터 ID(initiator IDs), 부품 ID(part IDs), 일련 번호(serial numbers), 코드(code), 아날로그 트리밍 및 보정 정보(analog trimming and calibration information), 센서 트리밍 및 보정 정보(sensor trimming and calibration information) 또는 임의의 다른 유형의 정보가 포함될 수 있는데, 특정 상황에서는 그 무결성이 중요할 수 있다. 데이터 어드레스는 어떠한 이동 공격 또는 기타 어드레스 결함이라도 자동으로 검출되도록 무결성 벡터에 연결될 수 있다. 2K 워드, 8K 바이트 또는 64K 비트의 어드레스 공간은 11 비트 무결성 벡터로 지원할 수 있다. 많은 수의 어드레스 비트를 보호하는 것이 바람직한 경우, 해시 함수를 사용하여 더 많은 어드레스 비트 또는 무결성 벡터 비트를 나타낼 수 있다. 인코더(140)의 오류 주입 성능은 이러한 모듈들이 애플리케이션 설계에서 충분히 고장 테스트를 받도록 할 수 있다. 또한 오류 주입 성능으로 인해 검증 환경에서 인코더(140)는 유용한 컴포넌트가 되므로, 장치 테스트와 검증을 위한 오류 주입을 용이하게 하기 위해 별도의 행동 모델을 마련할 필요성이 제거된다.
도 1을 계속 참조하면, 로직 블록(120)은 메모리(130)로부터 데이터(DATA)를 판독하기 위한 어드레스(ADD)를 제공하도록 구성된 임의의 로직부일 수 있다. 어드레스 정보는 메모리(130)의 메모리 위치를 선택하는 데 사용될 수 있다. 어드레스 단말기와 코어 뱅크의 개수 및 구성은 메모리 유형, 메모리의 크기 및 구성에 따라 달라질 수 있다. 일 실시예에서 메모리(130)는 1회 프로그램 가능(OTP) 메모리일 수 있다. OTP 메모리는 플로팅게이트 기술, 전기 퓨즈 기술 또는 안티퓨즈 기술을 포함한 많은 기술을 사용하여 구성할 수 있다. 플로팅게이트 기술은 메모리 프로그래밍을 위해 전하를 차단하고 프로그래밍된 비트를 지우기 위해 전하를 공핍시키는 것에 해당할 수 있다. 전기 퓨즈 기반 기술에는 일렉트로마이그레이션(electromigration)을 유발하는 금속 또는 폴리실리콘에 고전압을 가하는 것이 포함될 수 있다. 안티퓨즈 기반 기술에는 항복(breakdown)을 겪은 산화물을 갖는 게이트가 포함될 수 있다. 로직 블록(110)과 로직 블록(120)은 별개의 블록으로 도시되어 있지만, 하나로 결합될 수도 있다. 또한, 로직 블록(110)은 메모리(130)에 어드레스 이외의 정보를 제공하도록 구성될 수도 있다. 예를 들어, 로직 블록(110) 또는 추가 로직 블록, 프로세서 또는 추가 컨트롤러가 무결성 벡터로 지칭되는 정보를 제공할 수 있다.
도 1을 계속 참조하면, 일 실시예에서 인코더(140)는 32 비트 데이터 버스를 위한 입력단을 가질 수 있으며, 1 비트 데이터 오류를 정정하기에 충분한 중복성(redundancy)을 갖는 40 비트 데이터 워드(예를 들어, 인코딩된 비트 값)를 생성할 수 있다. 디코더(150)는 40 비트 입력(예컨대, 인코딩된 비트 값)을 취할 수 있으며, 단일 비트 오류를 정정하면서 32 비트 출력(이를테면, 정정된 데이터)을 생성할 수 있고, 모든 2 비트 오류 및 기타 멀티 비트 오류도 검출할 수 있다. 시스템(100)의 인코딩 기능은 모든 0과 모든 1의 패턴이 정정불가능한 것으로 플래그되도록 설계될 수 있다. 디코더(150)는 인코딩된 비트 값과 무결성 벡터(예컨대, IV) 또는 어드레스에 해당하는 40 비트를 수신할 수 있다. 디코더(150)에 제공된 무결성 벡터가 인코더(140)에 제공된 값과 일치하지 않을 경우에는, 두 개의 오류가 검출되면 (예를 들어, 정정불가능(UNCORRECORTABLE)이라는 신호를 통해) 정정불가능한 오류가 표시된다. 디코더(150)는 또한 단일 비트 오류가 정정되었음을 나타내는 정정 신호를 로직 블록(120)에 제공할 수 있다. 이 예에서는 적절한 데이터 디코딩을 위해 데이터를 인코딩하는 데 사용된 것과 동일한 무결성 벡터 값(예를 들어, IV)이 디코더(150)에 제시된다. 무결성 벡터 정보를 사용할 수 없는 경우에는, 인코더와 디코더 모두에 11 개의 상수(예컨대, 0) 비트가 할당될 수 있다.
메모리(130)는 비휘발성 메모리 또는 휘발성 메모리를 포함한 모든 유형의 메모리일 수 있다. 비휘발성 메모리는 플래시 메모리, EEPROM 또는 기타 유형의 비휘발성 메모리를 포함할 수 있다. 휘발성 메모리는 DRAM(Dynamic Random Access Memory), SRAM(Static Random Access Memory), 기타 유형의 RAM 또는 기타 유형의 휘발성 메모리를 포함할 수 있다. 도 1은 특정 방식으로 배열된 특정 개수의 시스템(100)의 컴포넌트들을 도시하고 있지만, 컴포넌트들은 이와 다르게 배열될 수도 있고 이보다 더 많거나 적을 수도 있다. 예를 들어, 인코더와 디코더는 클록이나 리셋이 없는 결합기 모듈(combinatorial modules)인 비-파이프라인형 디자인인 것으로 도시되어 있지만, 파이프라인형 레지스터가 포함될 수도 있다. 예를 들어, 초고주파수 연산이 필요할 경우 자동 파이프라인 삽입/리타이밍 툴을 사용할 수도 있다.
도 2a 및 도 2b는 테이블(200)과 테이블(250)을 도시하는데, 일 실시예에 따르면 도 1의 인코더(140)와 관련된 로직부를 보여준다. 도 2a에 도시된 테이블(200)은 비트(202), 체크 비트(204) 및 해밍 가중치(206)를 포함하는 3 개의 열을 포함한다. 0부터 31까지의 숫자로 표시된 행은 데이터의 32 개 비트에 해당한다. 데이터 비트의 체크 비트(204)는 8 비트 코드에 해당하며, 이 8 비트 코드의 각 코드는 해밍 가중치(206)에 표시된 것처럼 해밍 가중치가 5이다. 이 예에서는 해밍 가중치가 8의 절반에 가깝고 홀수이기 때문에 해밍 가중치를 5로 선택한다. 이와는 달리, 다른 예에서는 해밍 가중치 3을 사용할 수도 있다. 실제로 해밍 가중치는 임의의 홀수 체크 비트일 수 있으므로, 8 비트 체크 코드의 경우 해밍 가중치는 1, 3, 5, 7일 수 있다. 해밍 가중치가 5인 코드에 대해, 55 개의 그러한 코드가 존재할 수 있다. 이 예에서는 55 개의 코드 중 32 개를 선택하여 각 비트 위치에서의 해밍 가중치의 합이 같도록 한다. 따라서, 이 예에서 각 위치에 대한 해밍 가중치(합이라고 표시된 행)의 합은 20이다. (각 비트 위치에 대응하는) 각 열에 있는 "1"들의 합이 같을 필요는 없지만, 같은 가중치를 갖는 코드들을 선택하면 데이터와 체크 비트를 처리하는 데 필요한 하드웨어의 복잡성이 유리하게 균형을 이룰 수 있다.
도 2b를 참조하면, (비트 252라고 표시된 열에서) 라벨 ivO ~ ivIO로 표시된 행들은 어드레스(ADD) 또는 무결성 벡터의 11 개 비트에 해당한다. 테이블(250)에서, 어드레스나 무결성 벡터에 대한 체크 비트(254)도 8 비트 코드에 해당하며, 이 8 비트 코드의 각 코드는 해밍 가중치(256)로 나타낸 것과 같이 해밍 가중치가 4이다. 불일치(discrepancy)가 정정불가능한 오류로 플래그되도록 이들 코드에 대해 해밍 가중치를 선택하였다. 실제로 해밍 가중치는 임의의 짝수 체크 비트일 수 있으므로, 8 비트 체크 코드의 경우 해밍 가중치는 2, 4, 6 또는 8일 수 있다. 이 실시예에서는 무결성 검사가 수행되는 11 비트 어드레스(또는 11 비트 무결성 벡터)와 일치하도록 11 개의 코드를 선택했다. 실제로 어드레스의 크기나 무결성 벡터에 따라 다른 개수의 코드를 선택할 수도 있다. 이 예에서, 데이터를 인코딩하는 데 인코더(140)가 사용한 것과 다른 어드레스가 도 1의 디코더(150)에 제시될 경우, 정정불가능한 오류가 플래그된다. 따라서, 특정 어드레스에 해당하는 데이터가 메모리 내에서 이동하거나 어드레스 라인에 결함이 있을 경우, 정정불가능한 오류가 표시된다. 이 경우 각각의 체크 코드가 해밍 가중치가 4를 갖도록 11 개의 체크 코드를 선택했으며, 선택된 코드는 8 비트에 걸쳐 해밍 합계가 일치하도록 산출된 코드들이다. 이러한 코드들 사이의 가중치의 일관성은 체크 비트들 사이에서 로직 면적과 깊이의 균형을 맞추는 데 도움이 된다. 이 예에서는 사용되지 않은 해밍 가중치 5 코드 쌍을 가산(XOR)하여 11 개의 해밍 가중치 4 코드를 생성하는데, 이들은 이전의 55 개 코드 세트에서 사용되지 않은 것들이다. 에러 신드롬이 11 가지 패턴 중 하나와 일치하는 경우, 에러 발생은 해당 신드롬 패턴과 일치하는 어드레스 라인이 잘못되었기 때문일 수 있다. 본 개시내용에 기술된 일 실시예에서 정정 불가능한 모든 결함은 동일하게 취급되므로, 정정 불가능한 오류는 더 이상 조사되지 않는다. 8 비트 체크 비트 코드 워드에 대해 짝수 해밍 가중치 코드가 11 개보다 많이 존재한다. 실제로 짝수 해밍 가중치 코드는 64 개가 넘는다.
도 2a와 도 2b를 계속 참조하면, 테이블(200)과 테이블(250)은 특정 방식으로 구성된 특정 정보를 보여주지만, 추가 정보가 포함될 수도 있고 이와 다르게 구성될 수도 있다. 또한 다른 데이터 비트에 대해 다른 홀수 해밍 가중치를 사용할 수도 있다. 8 비트의 중복 패리티 정보를 저장할 수 있고 해밍 가중치 5를 갖는 55 개 패턴, 해밍 가중치 3을 갖는 50 개 패턴, 해밍 가중치 1을 갖는 8 개 패턴, 해밍 가중치 7을 갖는 8 개 패턴을 사용할 수 있다고 가정하면, 122 비트 데이터 워드에서 단일 비트 오류를 정정할 수 있게 된다. 더욱이 해밍 가중치가 4인 8 비트 코드가 32 개보다 많기 때문에, 32 비트 어드레스 버스의 무결성을 확인할 수 있다. 실제로 필요한 경우 큰 벡터의 무결성 검사를 위해 짝수 해밍 가중치 코드가 많이 사용될 수 있다.
도 3은 일 실시예에 따라 인코더(300)의 다이어그램을 보여준다. 도 1의 인코더(140)는 인코더(300)로 구현될 수 있다. 인코더(300)는 8 비트 해밍 코드의 각 비트에 대응하는 배타적 OR(XOR) 블록을 포함할 수 있다. 따라서, 이 실시예에 따르면, 도 3의 인코더(300)는 XOR 0(310), XOR 1(312) 및 XOR 7(314)을 포함하는 것으로 도시된다. XOR 2, XOR 3, XOR 4, XOR 5, XOR 6은 도시되지 않지만, 8 비트 각각에 대응하는 XOR 로직 블록이 존재하도록 인코더(300)의 일부로 포함될 것이다. 실제로 체크 비트 수가 다를 경우, 다른 개수의 XOR 로직 블록이 마련될 것이다. 버스(320)는 노드 Nl을 통해 다른 로직 블록 또는 회로의 다른 부분으로부터 데이터(예컨대, DATA)를 수신하도록 구성할 수 있다. 이 예에서는 로직이 32 비트 워드를 처리하도록 구성되므로 버스(320)는 32 비트 폭일 수 있다. 실제로 다른 비트 폭을 가진 다른 데이터도 처리될 수 있다. 무결성 벡터(예를 들어, INTEGRITY VECTOR)는 노드 N2를 통해 버스(340)에서 수신할 수 있다. 어드레스(예컨대, ADD)는 노드 N3를 통해 버스(370)에서 수신되어 메모리에 연결될 수 있다. 이 예에서 각 XOR 블록은 데이터를 위한 20 비트 및 어드레스 비트를 포함할 수 있는 무결성 벡터를 위한 5 비트에 대해 배타적 OR 연산을 수행하도록 구성된다.
도 3을 계속 참조하면, 이 예에서 XOR 0(310)은 테이블(200)의 비트 0 위치와 테이블(250)의 비트 0 위치의 20 비트에 대해 배타적 OR 연산을 수행하도록 구성된다. 따라서, 이 예에서 XOR 0(310)은 다음의 20 개 데이터 비트, 즉, 테이블(200)에 표시된 0, 1, 2, 5, 6, 7, 10, 12, 13, 14, 16, 18, 19, 20, 22, 23, 24, 28, 30, 31 및 다음의 5 개 어드레스 또는 무결성 벡터 비트, 즉, 테이블(250)에 표시된 ivO, iv2, iv3, iv4, iv7에 대해 배타적 OR 연산을 수행하도록 구성된다. XOR 1(312)은 다음의 20 개 데이터 비트, 즉, 테이블(200)에 표시된 3, 4, 6, 7, 8, 9, 10, 11, 12, 13, 15, 19, 20, 21, 22, 23, 24, 25, 26, 31 및 다음의 6 개 어드레스 또는 무결성 벡터 비트, 테이블(250)에 표시된 ivl, iv3, iv5, iv7, iv8, iv 10에 대해 배타적 OR 연산을 수행하도록 구성된다. XOR 7(314)은 다음의 20 개 데이터 비트, 즉, 테이블(200)에 표시된 0, 2, 3, 4, 5, 6, 7, 9, 10, 11, 13, 14, 15, 18, 22, 27, 28, 29, 30, 31 및 다음의 5 개 어드레스 또는 무결성 벡터 비트, 테이블(250)에 표시된 ivl, iv3, iv5, iv8, iv9에 대해 배타적 OR 연산을 수행하도록 구성된다. 다른 XOR 로직 블록도 값이 1인 해당 열의 모든 비트에 대해 배타적 OR 연산을 수행하도록 구성할 수 있다. 따라서 다른 XOR 로직 블록(표시되지 않음)이 배타적 기능을 수행할 수 있다. 테이블(200)과 테이블(250)의 비트 위치 3에서 값이 1인 비트에 해당하는 데이터 비트 및 무결성 벡터 비트에 대한 배타적 OR 연산을 각각 수행할 수 있다. 각 XOR 로직 블록의 출력은 노드 N4에 결합될 수 있으며, 이는 노드 N4와 노드 N5 사이에 결합된 버스(316)을 통해 도 1의 메모리(130)에 더 제공될 수 있다. 도 3은 특정 방식으로 배열된 특정 개수의 인코더(300)의 컴포넌트를 나타내지만, 다르게 배열된 컴포넌트가 이보다 더 많거나 적게 존재할 수도 있다. 예를 들어, 배타적 OR 연산을 병렬로 수행하는 대신에, 연산을 연속적으로 수행할 수도 있고, XOR 로직 블록을 포함한 트리 구조를 사용할 수도 있다. 또한 인코더(300)는 결합 로직 블록으로 표시되어 있지만, 인코더(300)는 연산을 동기화하기 위해 클록이 필요할 수 있는 로직을 포함하여 기타 다른 유형의 로직을 사용하여 구현될 수도 있다.
도 4a 및 도 4b는 일 실시예에 따른 디코더(예컨대, 도 1의 디코더(150))를 나타낸다. 디코더도 체크 비트를 계산하기 위해 동일한 로직을 사용하긴 하지만, 디코더는 메모리(이를테면 메모리(130)에 저장될 데이터 대신 취출된 데이터(retrieved data)를 사용한다. 디코더는 저장된 패리티 비트를 이용하여 새로 계산된 체크 비트에 대해 배타적 OR 연산을 수행한다. 이것은 오류 신드롬의 발생을 초래한다. 신드롬이 0이면 오류가 검출되지 않은 것이고, 이는 재계산된 체크 비트가 저장된 비트와 일치하기 때문이다. 에러 신드롬이 홀수 패리티를 갖는다면, 단일 비트 정정 가능한 에러라고 가정한다. 에러를 갖는 특정 비트는 신드롬이 체크 비트 코드와 일치하는 비트로서, 에러 신드롬이 홀수 패리티를 가지면 신드롬 패턴과 일치하는 비트가 플립되어 단일 비트 오류를 정정한다. 도 4a는 XOR 로직 블록인 XOR 0(410), XOR 1(412) 및 XOR 7(414)를 포함하고, 도 1의 메모리(130)와 결합된 디코더 부분(400)을 보여준다. 메모리(130)는 버스(420)을 통해 디코더로 인코딩된 비트 값을 제공할 수 있다. 이 예에서 버스(420)는 32 비트의 데이터와 8 비트의 체크 비트를 운반할 수 있도록 40 비트 폭일 수 있다. 노드 Nl에서 32 비트 데이터 중 20 비트를 각각의 XOR 로직 블록에 결합할 수 있으며, 8 비트 체크 비트가 버스(422)를 통해 디코더의 일부분(450)(도 4b에 도시)으로 전송될 수 있다. 어드레스 또는 무결성 벡터는 노드 N2에서 수신될 수 있으며, 여기로부터 도 4a에 표시된 것처럼 각 XOR 로직 블록에 대한 입력으로서 결합될 수 있다. XOR 로직 블록의 출력은 노드 N3에 결합될 수 있으며, 노드 N3은 버스(416)을 통해 도 4b와 관련하여 설명한 디코더의 나머지 부분에 결합될 수 있다.
도 4b에 도시한 바와 같이, 디코더의 부분(450)에는 배타적 OR 연산을 수행하여 신드롬 비트(SYNDROME BITS)를 생성하고, 데이터 벡터 비트 값에 하나의 단일 에러보다 많은 오류가 있는 경우 혹은 무결성 벡터 비트 값에 하나의 단일 오류 또는 다중 비트 오류가 있는 경우 정정불가능한 오류 신호(uncorrectable error signal)를 생성하며, 데이터 워드에 하나의 단일 비트 오류만이 있는 경우 정정된 비트를 생성하도록 구성된 추가 로직부도 포함되어 있다. 따라서, 도 4b에 나타낸 것처럼, 배타적 OR 연산은 생성된 체크 비트(예컨대, 도 4a의 로직부로부터 버스(416)를 통해 수신)와 저장된 체크 비트(예를 들어, 메모리(130)로부터 버스(422)를 통해 취출된 저장된 체크 비트(STORED CHECK BITS))에 대해 수행될 수 있다. 이 예에서 XOR 게이트(452, 454 및 456)는 전술한 배타적 OR 연산을 수행하고 신드롬 비트(이를테면 노드 N5의 신드롬 비트)를 제공하도록 구성할 수 있다. 이 예에서 신드롬 비트는 OR 게이트(457)에 결합되며, 그 출력은 AND 게이트(460)의 한 입력단에 결합된다. 신드롬 비트가 0이면 생성된 체크 비트가 저장된 체크 비트와 일치하며, 데이터 벡터 비트 값과 무결성 벡터 비트 값 모두에 오류가 없다고 가정된다. 패리티 블록(458)의 출력은 AND 게이트(460)의 두 번째 입력단에 제공된다. 패리티 블록(458)이 신드롬 비트가 짝수 패리티(예컨대, EVEN)를 가지고 있음을 검출하는 경우, AND 게이트(460)에 의해 수행되는 논리 AND 연산은 정정 불가능한 오류(예를 들어, 노드 N10을 통한 정정불가능(UNCORRRRETABLE))을 나타낸다. 또한, 인코더와 디코더에 주어진 무결성 벡터 비트 값이 일치하지 않을 경우, 이 또한 정정할 수 없는 오류를 출력한다.
도 4b를 계속 참조하면, 오류가 있는 특정 비트는 신드롬이 체크 비트 코드와 일치하는 비트로서, 에러 신드롬이 홀수 패리티를 가지면 신드롬 패턴과 일치하는 비트가 플립되어 단일 비트 오류를 정정한다. 이 예에서는 단일 비트 오류를 정정할 수 있도록 도 4b의 하단에 표시된 로직부가 사용된다. 따라서 신드롬 비트에는 AND 게이트(462, 464 및 466)를 사용하여 논리 AND 연산을 수행한다. 이 예에서, 비록 도 4b에는 도시하지 않았지만, 각 비트(예컨대, BIT 0, BIT 1, BIT 31)에 대해, 선택된 신드롬 비트 세트는, 논리 AND 연산을 수행하기 전에 반전된다. 따라서, 예를 들어, 도 2의 테이블(200)에 있는 체크 비트의 배열을 볼 때, BIT 0에 대해서는 비트 위치 1, 5, 6, 8, 9 및 비트 위치 10에 해당하는 신드롬 비트가 반전된다. AND 게이트(462)를 사용하여 논리 AND 연산이 수행되는 다른 신드롬 비트는 반전되지 않는다. 또 다른 예로 BIT 1의 경우, 비트 위치 0, 2, 4, 6 및 비트 위치 9에 대응하는 신드롬 비트가 반전된다. 다른 예로, BIT 31의 경우, 비트 위치 0, 2, 4, 6, 7 및 비트 위치 10에 해당하는 신드롬 비트가 반전된다. 이러한 AND 게이트의 출력은 다른 각각의 AND 게이트(예컨대, AND 게이트(472, 474 및 476))로 공급된다. AND 게이트의 다른 입력은 짝수 패리티의 반전 값(예컨대, 인버터(459)를 사용하여 반전시킨 것)으로서, 도 4b에 도시한 바와 같이, 노드 N8과 N9를 통해 공급된다. 이러한 각 AND 게이트(예를 들어, AND 게이트(472, 474 및 476))의 출력은 각 배타적 OR 게이트(예컨대, 배타적 OR 게이트(482, 484 및 486))에 대한 입력단 중 하나에 결합된다. 배타적 OR 게이트(482)의 출력은 정정된 비트 0(CORRECTED BIT 0)에 해당하며 노드 N11을 통해 제공된다. 배타적 OR 게이트(484)의 출력은 정정된 비트 1(CORRECTED BIT 1)에 해당하며 노드 N12를 통해 제공된다. 배타적 OR 게이트(486)의 출력은 정정된 비트 31(CORRECTED BIT 31)에 해당하며 노드 N13을 통해 제공된다. 도 4b의 이 실시예는 32 비트 데이터 벡터를 가정하며, 따라서, 도시하지는 않았지만 메모리(예를 들어, 메모리(130))에서 판독된 각 비트 값을 수신하기 위한 AND 게이트가 32 개 있다고 가정한다. 마찬가지로 패리티 비트와 다른 AND 게이트 세트의 출력 사이에 AND 연산을 수행하기 위한 AND 게이트도 32 개 있다. 더욱이, 도시되지는 않았지만, 32 비트의 각각에 해당하는 정정된 비트 값을 생성하기 위한 32개의 배타적 OR 게이트가 있다. 도 4a와 도 4b는 특정 방식으로 배열된 특정 개수의 컴포넌트를 도시하지만, 디코더는 다른 방식으로 배열된 컴포넌트를 더 많거나 더 적게 포함할 수도 있다.
도 5는 일 실시예에 따른 무결성 검사를 이용한 오류 정정 및 검출 방법의 흐름도(500)를 도시한다. 단계(510)에서는 단일 오류 정정(single error correction) 및 이중 오류 검출 코드(double error detection code)를 사용해서 데이터 벡터 비트 값(data vector bit values)과 무결성 벡터 비트 값(integrity vector bit values) 모두를 제 1 처리하여 체크 비트 값(check bit values)을 생성하는 단계를 포함할 수 있는데, 단일 오류 정정 및 이중 오류 검출 코드는 (1) 데이터 벡터 값에서의 단일 오류의 검출 및 정정, 또는 (2) 정정불가능한 오류의 표시를 허용하도록 구성되고, 정정불가능한 오류는 데이터 벡터 비트 값에서의 둘 이상의 단일 오류 또는 무결성 벡터 비트 값에서의 단일 오류나 다중 비트 오류에 해당한다. 이 실시예에서, 이 단계는 도 3을 참조하여 앞서 설명한 인코더(300)를 사용하여 수행될 수 있다.
단계(520)는 체크 비트 값을 제 2 처리하고, 데이터 벡터 비트 값에서 둘 이상의 단일 오류(single error)를 검출하거나 무결성 벡터 비트 값에서 단일 오류 또는 다중 비트 오류(multi-bit error)를 검출한 경우 정정불가능한 에러(uncorrectable error)를 표시하는 단계를 포함할 수 있다. 이 예에서 이 단계는 도 4a 및 도 4b를 참조하여 앞서 설명한 디코더를 사용하여 수행할 수 있다. 도 5는 특정 순서로 수행된 특정 개수의 단계에 대해 설명하고 있지만, 흐름도(500)에는 추가 단계가 포함될 수도 있고 이들이 특정 순서로 수행될 필요도 없다.
도 6은 일 실시예에 따라 어드레스 비트 값의 무결성 검사를 이용한 오류 정정 및 탐지를 위해 소정 어드레스에 데이터를 저장하도록 구성된 메모리를 포함하는 시스템의 또 다른 흐름도(600)를 보여준다. 단계(610)는 단일 오류 정정 및 이중 오류 검출 코드를 사용해서 데이터에 해당하는 데이터 비트 값과 데이터의 어드레스에 해당하는 어드레스 비트 값을 처리하여 인코딩된 비트 값을 생성하는 단계를 포함할 수 있는데, 단일 오류 정정 및 이중 오류 검출 코드는 (1) 데이터 비트 값에서의 단일 오류의 검출 및 정정, 또는 (2) 정정불가능한 오류의 표시를 허용하도록 구성되고, 정정불가능한 오류는 데이터 비트 값에서의 둘 이상의 단일 오류 또는 어드레스 비트 값에서의 단일 오류나 다중 비트 오류에 해당한다. 이 예에서, 이 단계는 도 3을 참조하여 앞서 설명한 인코더(300)를 사용하여 수행될 수 있다.
단계(620)는 인코딩된 비트 값을 디코딩하고, (1) 데이터 비트 값에서 둘 이상의 단일 오류를 검출하거나 (2) 데이터 비트 값에서는 단일 오류가 검출되지 않았더라도 어드레스 비트 값에서 단일 오류 또는 다중 비트 오류를 검출한 경우, 정정불가능한 에러를 표시하는 단계를 포함할 수 있다. 이 예에서 이 단계는 도 4a 및 도 4b를 참조하여 앞서 설명한 디코더를 사용하여 수행할 수 있다. 도 6은 특정 순서로 수행된 특정 개수의 단계에 대해 기술하고 있지만, 흐름도(600)에는 추가 단계가 포함될 수도 있고, 이들이 특정 순서로 수행될 필요도 없다.
결론적으로, 본 개시내용은 단일 오류 정정 및 이중 오류 검출 코드를 사용해서 데이터 벡터 비트 값과 무결성 벡터 비트 값 모두를 제 1 처리하여 체크 비트 값을 생성하는 단계를 포함하는 방법과 관련되는데, 여기서 단일 오류 정정 및 이중 오류 검출 코드는 (1) 데이터 벡터 값에서의 단일 오류의 검출 및 정정, 또는 (2) 정정불가능한 오류의 표시를 허용하도록 구성되고, 정정불가능한 오류는 데이터 벡터 비트 값에서의 둘 이상의 단일 오류 또는 무결성 벡터 비트 값에서의 단일 오류나 다중 비트 오류에 해당한다. 이 방법은 체크 비트 값을 제 2 처리하고, 데이터 벡터 비트 값에서 둘 이상의 단일 오류(single error)를 검출하거나 무결성 벡터 비트 값에서 단일 오류 또는 다중 비트 오류(multi-bit error)를 검출한 경우 정정불가능한 에러(uncorrectable error)를 표시하는 단계를 더 포함할 수 있다.
데이터 비트 값에 대한 단일 오류 정정 및 이중 오류 검출 코드는 체크 비트가 홀수 개인 해밍 가중치를 가질 수 있다. 무결성 벡터 비트 값에 대한 단일 오류 정정 및 이중 오류 검출 코드는 체크 비트가 짝수 개인 해밍 가중치를 가질 수 있다.
무결성 벡터 비트 값은 어드레스(address), 보안 키(secure key), 비밀 키(secret key), 장치 식별자(device identifier), 부품 식별자(part identifier), 일련 번호(serial number), 코드(code), 아날로그 트리밍 및 교정 정보(analog trimming and calibration information), 센서 트리밍 및 교정 정보(sensor trimming and calibration information) 또는 기타 메타 데이터(meta data) 중 하나에 해당할 수 있다. 제 1 처리는, 단일 오류 정정 및 이중 오류 검출 코드의 각 비트 위치에 대해 데이터 벡터 비트 값의 각 서브셋과 무결성 벡터 비트 값의 각 서브셋에 대해 배타적 OR 연산을 수행하는 것을 포함할 수 있다.
제 2 처리는 체크 비트 값과 메모리로부터 취출된 저장된 패리티 비트 값에 대해 배타적 OR 연산을 수행하는 것을 포함할 수 있다. 메모리는 일회성 프로그래밍 가능 메모리, 정적 랜덤 액세스 메모리 또는 동적 랜덤 메모리 중 하나를 포함할 수 있다.
다른 실시예에서, 본 개시내용은 단일 오류 정정 및 이중 오류 검출 코드를 사용해서 데이터에 해당하는 데이터 비트 값과 어드레스에 해당하는 어드레스 비트 값 모두를 처리하여 체크 비트 값을 생성하도록 구성된 인코더를 포함하는 시스템과 관련되는데, 단일 오류 정정 및 이중 오류 검출 코드는 (1) 데이터 비트 값에서의 단일 오류의 검출 및 정정, 또는 (2) 정정불가능한 오류의 표시를 허용하도록 구성되고, 정정불가능한 오류는 데이터 비트 값에서의 둘 이상의 단일 오류 또는 어드레스 비트 값에서의 단일 오류나 다중 비트 오류에 해당한다. 이 시스템은 체크 비트 값을 처리하고, (1) 데이터 비트 값에서 둘 이상의 단일 오류를 검출하거나 (2) 데이터 비트 값에서는 단일 오류가 하나도 검출되지 않은 경우라도 어드레스 비트 값에서 단일 오류 또는 다중 비트 오류를 검출한 경우, 정정불가능한 에러를 나타내도록 구성된 디코더를 더 포함할 수 있다.
데이터 비트 값에 대한 단일 오류 정정 및 이중 오류 검출 코드는 체크 비트가 홀수 개인 해밍 가중치를 가질 수 있다. 어드레스 비트 값에 대한 단일 오류 정정 및 이중 오류 검출 코드는 체크 비트가 짝수 개인 해밍 가중치를 가질 수 있다.
인코더는, 단일 오류 정정 및 이중 오류 검출 코드의 각 비트 위치에 대해 데이터 벡터 비트 값의 각 서브셋과 어드레스 비트 값의 각 서브셋에 대해 배타적 OR 연산을 수행하도록 더 구성될 수 있다. 디코더는 체크 비트 값과 메모리로부터 취출된 저장된 패리티 비트 값에 대해 배타적 OR 연산을 수행하도록 더 구성될 수 있다. 메모리는 일회성 프로그래밍 가능 메모리, 정적 랜덤 액세스 메모리 또는 동적 랜덤 메모리 중 하나를 포함할 수 있다.
또 다른 실시예에서, 본 개시내용은 소정 어드레스에 데이터를 저장하도록 구성된 메모리를 포함하는 시스템에서의 방법과 관련된다. 이 방법은 단일 오류 정정 및 이중 오류 검출 코드를 사용해서 상기 데이터에 해당하는 데이터 비트 값과 데이터의 어드레스에 해당하는 어드레스 비트 값을 처리하여 인코딩된 비트 값을 생성하는 단계를 포함할 수 있는데, 단일 오류 정정 및 이중 오류 검출 코드는 (1) 데이터 비트 값에서의 단일 오류의 검출 및 정정, 또는 (2) 정정불가능한 오류의 표시를 허용하도록 구성되고, 정정불가능한 오류는 데이터 비트 값에서의 둘 이상의 단일 오류 또는 어드레스 비트 값에서의 단일 오류나 다중 비트 오류에 해당한다. 이 프로세스는 인코딩된 비트 값을 디코딩하고, (1) 데이터 비트 값에서 둘 이상의 단일 오류를 검출하거나 (2) 데이터 비트 값에서는 단일 오류가 검출되지 않았더라도 어드레스 비트 값에서 단일 오류 또는 다중 비트 오류를 검출한 경우, 정정불가능한 에러를 표시하는 단계를 더 포함할 수 있다.
데이터 비트 값에 대한 단일 오류 정정 및 이중 오류 검출 코드는 체크 비트가 홀수 개인 해밍 가중치를 가질 수 있다. 어드레스 비트 값에 대한 단일 오류 정정 및 이중 오류 검출 코드는 체크 비트가 짝수 개인 해밍 가중치를 가질 수 있다.
인코딩은, 단일 오류 정정 및 이중 오류 검출 코드의 각 비트 위치에 대해 데이터 벡터 비트 값의 각 서브셋과 어드레스 비트 값의 각 서브셋에 대해 배타적 OR 연산을 수행하는 것을 더 포함할 수 있다. 디코딩은 체크 비트 값과 메모리로부터 취출된 저장된 패리티 비트 값에 대해 배타적 OR 연산을 수행하는 것을 더 포함할 수 있다. 메모리는 일회성 프로그래밍 가능 메모리, 정적 랜덤 액세스 메모리 또는 동적 랜덤 메모리 중 하나를 포함할 수 있다.
여기에 기술된 방법, 모듈 및 컴포넌트는 단지 예시적인 것에 지나지 않는다는 것을 이해해야 한다. 이와는 달리, 여기에 기술된 기능들은 적어도 부분적으로 하나 이상의 하드웨어 로직 컴포넌트에 의해 수행될 수 있다. 제한적이지 않은 예로서, 사용할 수 있는 하드웨어 로직 컴포넌트의 예시적인 유형에는 FPGA(Field-Programmable Gate Array), ASIC, ASSP(Application-Specific Standard Products), SOC(System-on-a-Chip) 시스템, CPLD(Complex Programmable Logic Devices) 등이 있다. 추상적이긴 하지만 여전히 확실한 의미에서, 동일한 성능을 달성하기 위한 컴포넌트들의 배열은 효과적으로 "연관"되어 원하는 성능이 달성되도록 한다. 따라서, 특정 성능을 달성하기 위해 여기에서 결합한 임의의 두 가지 컴포넌트는 구조나 중간 컴포넌트와 무관하게 원하는 성능이 달성되도록 서로 "연관된" 것으로 볼 수 있다. 마찬가지로, 그렇게 연관된 두 컴포넌트는 원하는 성능을 달성하기 위해 서로 "동작가능하게 연결"되거나 "결합"된 것으로도 볼 수 있다.
본 개시내용에 설명된 몇 가지 실시예와 관련된 성능은 비일시적 매체에 저장된 명령어도 포함할 수 있다. 여기서 사용되는 "비일시적 매체"라는 용어는 특정 방식으로 머신을 작동하게 하는 데이터 및/또는 명령어를 저장하는 매체를 말한다. 예시적인 비일시적 매체로는 비휘발성 매체 및/또는 휘발성 매체가 있다. 비휘발성 매체는 예를 들어 하드 디스크, 솔리드 스테이트 드라이브, 자기 디스크나 테이프, 광 디스크나 테이프, 플래시 메모리, EPROM, NVRAM, PRAM 또는 기타 그러한 매체나 그러한 매체의 네트워킹된 버전을 포함한다. 휘발성 매체는 예를 들어 DRAM, SRAM, 캐시 또는 기타 그러한 매체와 같은 동적 메모리를 포함한다. 비일시성 매체는 전송 매체와는 구별되지만, 전송 매체와 함께 사용할 수도 있다. 전송 매체는 머신으로 또는 머신으로부터 데이터 및/또는 명령어를 전송하는 데 사용된다. 예시적인 전송 매체로는 동축 케이블, 광섬유 케이블, 동선 및 전파와 같은 무선 매체를 포함한다.
또한, 당업자들은 위에서 설명한 동작의 성능들 사이의 경계가 단지 예시일 뿐이라는 것을 인식할 것이다. 복수 동작의 성능들은 단일 동작으로 결합될 수도 있고, 그리고/또는 단일 동작의 성능은 추가 동작들로 분산될 수 있다. 더욱이 대체적인 구현예에는 특정 동작의 여러 인스턴스가 포함될 수 있으며, 동작 순서는 다양한 다른 구현에서 변경될 수 있다.
본 개시내용이 구체적인 실시예를 제시하고 있지만, 후속하는 특허청구범위에 기재된 사항의 범위를 벗어나지 않으면서 다양한 수정과 변경을 할 수 있다. 따라서, 명세서와 도면은 제한적인 의미가 아니라 예시적인 의미에서 받아들여져야 하며, 모든 그러한 변경은 본 개시내용의 범위 내에 포함되도록 의도되었다. 특정 실시예와 관련하여 여기에 설명된 모든 이점, 장점 및 문제에 대한 해결책이 어떠한 특허청구범위의 중요하거나, 필수적이거나, 핵심적인 특징이나 요소로도 해석되어서는 안 된다.
또한, 여기서 사용되는 "한" 또는 "하나의"라는 용어는 하나 또는 그 이상으로 정의된다. 그리고, 청구항에서 "적어도 하나", "하나 또는 그 이상의"와 같은 도입 구절을 사용한 경우, "한" 또는 "하나의"라는 표현에 의해 다른 청구항 구성요소를 도입하는 것이, 그렇게 도입된 청구항 구성요소를 포함하는 특정한 청구항을, 그러한 구성요소를 하나만 포함하는 발명으로 제한하는 것으로 해석되어서는 안 된다 (동일한 청구항이 "적어도 하나" 또는 "하나 또는 그 이상의"라는 도입 구절 및 "한" 또는 "하나의"와 같은 표현을 포함한다고 해도 그렇다). "그"나 "이"라는 표현의 사용도 마찬가지다.
달리 명시되지 않는 한, "제 1" 및 "제 2"와 같은 용어는 그러한 용어가 설명하는 구성요소들을 서로 구별하기 위해 임의로 사용된다. 따라서 이러한 용어는 반드시 그러한 요소의 시간적 또는 다른 우선순위를 나타내기 위한 것은 아니다.

Claims (15)

  1. 단일 오류 정정(single error correction) 및 이중 오류 검출 코드(double error detection code)를 사용해서 데이터 벡터 비트 값(data vector bit values)과 무결성 벡터 비트 값(integrity vector bit values) 모두를 제 1 처리하여 체크 비트 값(check bit values)을 생성하는 단계와,
    상기 체크 비트 값을 제 2 처리하고, 상기 데이터 벡터 비트 값에서 둘 이상의 단일 오류(single error)를 검출하거나 상기 무결성 벡터 비트 값에서 단일 오류 또는 다중 비트 오류(multi-bit error)를 검출한 경우 정정불가능한 에러(uncorrectable error)를 표시하는 단계
    를 포함하되,
    상기 단일 오류 정정 및 이중 오류 검출 코드는 (1) 상기 데이터 벡터 값에서의 단일 오류의 검출 및 정정, 또는 (2) 정정불가능한 오류의 표시를 허용하도록 구성되고,
    상기 정정불가능한 오류는 상기 데이터 벡터 비트 값에서의 둘 이상의 단일 오류 또는 상기 무결성 벡터 비트 값에서의 단일 오류나 다중 비트 오류에 해당하는 것인,
    방법.
  2. 제 1 항에 있어서,
    상기 데이터 비트 값에 대한 상기 단일 오류 정정 및 이중 오류 검출 코드는 체크 비트가 홀수 개인 해밍 가중치(Hamming weight)를 갖는 것인,
    방법.
  3. 제 2 항에 있어서,
    상기 무결성 벡터 비트 값에 대한 상기 단일 오류 정정 및 이중 오류 검출 코드는 체크 비트가 짝수 개인 해밍 가중치를 갖는 것인,
    방법.
  4. 제 1 항에 있어서,
    상기 무결성 벡터 비트 값은 어드레스(address), 보안 키(secure key), 비밀 키(secret key), 장치 식별자(device identifier), 부품 식별자(part identifier), 일련 번호(serial number), 코드(code), 아날로그 트리밍 및 교정 정보(analog trimming and calibration information), 센서 트리밍 및 교정 정보(sensor trimming and calibration information) 또는 기타 메타 데이터(meta data) 중 하나에 해당하는 것인,
    방법.
  5. 제 1 항에 있어서,
    상기 제 1 처리는, 상기 단일 오류 정정 및 이중 오류 검출 코드의 각 비트 위치에 대해 상기 데이터 벡터 비트 값의 각 서브셋과 상기 무결성 벡터 비트 값의 각 서브셋에 대해 배타적 OR 연산(exclusive OR operation)을 수행하는 것을 포함하는,
    방법.
  6. 제 1 항에 있어서,
    상기 제 2 처리는 상기 체크 비트 값과 메모리로부터 취출된 저장된 패리티 비트 값에 대해 배타적 OR 연산을 수행하는 것을 포함하는,
    방법.
  7. 제 6 항에 있어서,
    상기 메모리는 일회성 프로그래밍 가능 메모리(one-time programmable memory), 정적 랜덤 액세스 메모리 또는 동적 랜덤 메모리 중 하나를 포함하는 것인,
    방법.
  8. 데이터 및 상기 데이터가 메모리에 저장되는 어드레스를 제공하도록 구성된 제 1 로직부와,
    단일 오류 정정 및 이중 오류 검출 코드를 사용해서 상기 데이터에 해당하는 데이터 비트 값과 상기 어드레스에 해당하는 어드레스 비트 값 모두를 처리하여 체크 비트 값을 생성하도록 구성된 인코더와,
    상기 체크 비트 값을 처리하고, (1) 상기 데이터 비트 값에서 둘 이상의 단일 오류를 검출하거나 (2) 상기 데이터 비트 값에서는 단일 오류가 하나도 검출되지 않은 경우라도 상기 어드레스 비트 값에서 단일 오류 또는 다중 비트 오류를 검출한 경우, 정정불가능한 에러를 나타내도록 구성된 디코더
    를 포함하되,
    상기 단일 오류 정정 및 이중 오류 검출 코드는 (1) 상기 데이터 비트 값에서의 단일 오류의 검출 및 정정, 또는 (2) 정정불가능한 오류의 표시를 허용하도록 구성되고,
    상기 정정불가능한 오류는 상기 데이터 비트 값에서의 둘 이상의 단일 오류 또는 상기 어드레스 비트 값에서의 단일 오류나 다중 비트 오류에 해당하는 것인,
    시스템.
  9. 제 8 항에 있어서,
    상기 데이터 비트 값에 대한 상기 단일 오류 정정 및 이중 오류 검출 코드는 체크 비트가 홀수 개인 해밍 가중치를 갖는 것인,
    시스템.
  10. 제 9 항에 있어서,
    상기 어드레스 비트 값에 대한 상기 단일 오류 정정 및 이중 오류 검출 코드는 체크 비트가 짝수 개인 해밍 가중치를 갖는 것인,
    시스템.
  11. 제 8 항에 있어서,
    상기 인코더는, 상기 단일 오류 정정 및 이중 오류 검출 코드의 각 비트 위치에 대해 상기 데이터 벡터 비트 값의 각 서브셋과 상기 어드레스 비트 값의 각 서브셋에 대해 배타적 OR 연산을 수행하도록 더 구성되는,
    시스템.
  12. 제 8 항에 있어서,
    상기 디코더는 상기 체크 비트 값과 메모리로부터 취출된 저장된 패리티 비트 값에 대해 배타적 OR 연산을 수행하도록 더 구성되는,
    시스템.
  13. 제 12 항에 있어서,
    상기 메모리는 일회성 프로그래밍 가능 메모리, 정적 랜덤 액세스 메모리 또는 동적 랜덤 메모리 중 하나를 포함하는 것인,
    시스템.
  14. 소정 어드레스에 데이터를 저장하도록 구성된 메모리를 포함하는 시스템에서의 방법으로서, 상기 방법은,
    단일 오류 정정 및 이중 오류 검출 코드를 사용해서 상기 데이터에 해당하는 데이터 비트 값과 상기 데이터의 어드레스에 해당하는 어드레스 비트 값을 처리하여 인코딩된 비트 값을 생성하는 단계와,
    상기 인코딩된 비트 값을 디코딩하고, (1) 상기 데이터 비트 값에서 둘 이상의 단일 오류를 검출하거나 (2) 상기 데이터 비트 값에서는 단일 오류가 검출되지 않았더라도 상기 어드레스 비트 값에서 단일 오류 또는 다중 비트 오류를 검출한 경우, 정정불가능한 에러를 표시하는 단계
    를 포함하되,
    상기 단일 오류 정정 및 이중 오류 검출 코드는 (1) 상기 데이터 비트 값에서의 단일 오류의 검출 및 정정, 또는 (2) 정정불가능한 오류의 표시를 허용하도록 구성되고,
    상기 정정불가능한 오류는 상기 데이터 비트 값에서의 둘 이상의 단일 오류 또는 상기 어드레스 비트 값에서의 단일 오류나 다중 비트 오류에 해당하는 것인,
    방법.
  15. 제 14 항에 있어서,
    상기 데이터 비트 값에 대한 상기 단일 오류 정정 및 이중 오류 검출 코드는 체크 비트가 홀수 개인 해밍 가중치를 갖는 것인,
    방법.
KR1020217038198A 2019-05-24 2020-04-16 무결성 검사를 이용한 오류 검출 및 정정 기법 KR20220011641A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/422,495 US11126500B2 (en) 2019-05-24 2019-05-24 Error detection and correction with integrity checking
US16/422,495 2019-05-24
PCT/US2020/028383 WO2020242621A1 (en) 2019-05-24 2020-04-16 Error detection and correction with integrity checking

Publications (1)

Publication Number Publication Date
KR20220011641A true KR20220011641A (ko) 2022-01-28

Family

ID=70554232

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020217038198A KR20220011641A (ko) 2019-05-24 2020-04-16 무결성 검사를 이용한 오류 검출 및 정정 기법

Country Status (5)

Country Link
US (1) US11126500B2 (ko)
EP (1) EP3977622A1 (ko)
KR (1) KR20220011641A (ko)
CN (1) CN113906682A (ko)
WO (1) WO2020242621A1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11392450B1 (en) * 2020-12-07 2022-07-19 Amazon Technologies, Inc. Data integrity check for one-time programmable memory

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4168486A (en) 1978-06-30 1979-09-18 Burroughs Corporation Segmented error-correction system
US5761221A (en) 1995-12-11 1998-06-02 International Business Machines Corporation Memory implemented error detection and correction code using memory modules
US7624329B2 (en) 2006-08-30 2009-11-24 Freescale Semiconductor, Inc. Programming a memory device having error correction logic
US8082482B2 (en) * 2007-08-31 2011-12-20 International Business Machines Corporation System for performing error correction operations in a memory hub device of a memory module
DE102010041680B9 (de) * 2010-09-29 2014-09-18 Infineon Technologies Ag Vorrichtung und Verfahren zum Bestimmen einer Position eines 1-Bit-Fehlers in einer codierten Bitsequenz, Vorrichtung und Verfahren zur Korrektur eines 1-Bit-Fehlers in einer codierten Bitsequenz und Decodierer und Verfahren zum Decodieren einer fehlerhaften, codierten Bitsequenz
US9542261B2 (en) * 2013-07-01 2017-01-10 Ixia Methods, systems, and computer readable media for multi-packet cyclic redundancy check engine
US9654148B2 (en) * 2015-01-06 2017-05-16 Samsung Electronics Co., Ltd. Reconfigurable ECC for memory

Also Published As

Publication number Publication date
WO2020242621A1 (en) 2020-12-03
EP3977622A1 (en) 2022-04-06
US11126500B2 (en) 2021-09-21
US20200371872A1 (en) 2020-11-26
CN113906682A (zh) 2022-01-07

Similar Documents

Publication Publication Date Title
US6799287B1 (en) Method and apparatus for verifying error correcting codes
US9703633B2 (en) Circuits, apparatuses, and methods for correcting data errors
US4817095A (en) Byte write error code method and apparatus
US11740960B2 (en) Detection and correction of data bit errors using error correction codes
US4740968A (en) ECC circuit failure detector/quick word verifier
US6604222B1 (en) Block code to efficiently correct adjacent data and/or check bit errors
US8612828B2 (en) Error correction mechanisms for 8-bit memory devices
US11281526B2 (en) Optimized error-correcting code (ECC) for data protection
US5631915A (en) Method of correcting single errors
US6393597B1 (en) Mechanism for decoding linearly-shifted codes to facilitate correction of bit errors due to component failures
Appathurai et al. Design for reliablity: A novel counter matrix code for FPGA based quality applications
KR100905712B1 (ko) 에러 정정 코드를 이용한 병렬 비트 테스트 장치
US20170186500A1 (en) Memory circuit defect correction
US6675341B1 (en) Extended error correction for SEC-DED codes with package error detection ability
KR20220011641A (ko) 무결성 검사를 이용한 오류 검출 및 정정 기법
JP3743915B2 (ja) スポッティバイト誤り訂正・検出方法及び装置
CN116615718A (zh) 可编程纠错码编码和解码逻辑
CN116798503A (zh) 一种数据ecc编解码计算电路
JP2004247006A (ja) 連想メモリ
Manidurai et al. SOFT AND ISOLATED MODIFIED ERROR CORRECTION AND DETECTION WITH LOW DELAY APPROACH
Subalakshmi et al. Error Identification and Correction for Memory Application using Majority Logic Decoder and Detector

Legal Events

Date Code Title Description
E902 Notification of reason for refusal