KR100870196B1 - 데이터 워드를 판독하는 장치 및 방법과 데이터 블록을 저장하는 장치 및 방법, 컴퓨터 판독 가능한 기록 매체 - Google Patents

데이터 워드를 판독하는 장치 및 방법과 데이터 블록을 저장하는 장치 및 방법, 컴퓨터 판독 가능한 기록 매체 Download PDF

Info

Publication number
KR100870196B1
KR100870196B1 KR1020070007117A KR20070007117A KR100870196B1 KR 100870196 B1 KR100870196 B1 KR 100870196B1 KR 1020070007117 A KR1020070007117 A KR 1020070007117A KR 20070007117 A KR20070007117 A KR 20070007117A KR 100870196 B1 KR100870196 B1 KR 100870196B1
Authority
KR
South Korea
Prior art keywords
error
data word
value
data
predetermined
Prior art date
Application number
KR1020070007117A
Other languages
English (en)
Other versions
KR20070077466A (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 KR20070077466A publication Critical patent/KR20070077466A/ko
Application granted granted Critical
Publication of KR100870196B1 publication Critical patent/KR100870196B1/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/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/2927Decoding strategies
    • H03M13/293Decoding strategies with erasure setting
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/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
    • 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
    • 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
    • H03M13/2915Product codes with an error detection code in one dimension

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)
  • Detection And Correction Of Errors (AREA)

Abstract

데이터 블록(110)이 사전결정된 데이터 워드를 포함하는 복수의 데이터 워드(120-1, . . ., 120-n), 상기 복수의 데이터 워드(120-1, . . ., 120-n)의 데이터 워드마다 각각의 데이터 워드와 관련된 에러 식별값(130-1, . . . , 130-n), 및 상기 데이터 블록(100)에 관련된 교정값(140)으로 나누어져 저장된 메모리(100)로부터 상기 사전결정된 데이터 워드를 판독하는 장치가 개시되며, 상기 장치는 상기 사전결정된 데이터 워드가 그에 관련된 에러 식별값과 사전결정된 관계를 갖는지를 검사하여 상기 사전결정된 관계가 존재하지 않으면 에러가 있다고 결론짓도록 구현된 에러 식별 수단(150), 및 상기 사전결정된 데이터 워드가 상기 관련된 에러 식별값과 사전결정된 관계를 갖지 않다면 상기 교정값(140)을 이용하여 상기 에러를 교정하도록 구현된 에러 교정 수단(160)을 포함하며, 상기 에러 교정 수단(160)은 상기 복수의 데이터 워드(120-1, . . ., 120-n) 중의 어느 데이터 워드가 상기 사전결정된 데이터 워드인 것에 무관하게 에러 교정을 위하여 상기 교정값(140)을 이용하도록 구현된다.

Description

데이터 워드를 판독하는 장치 및 방법과 데이터 블록을 저장하는 장치 및 방법, 컴퓨터 판독 가능한 기록 매체{DEVICE AND METHOD FOR READING OUT A DATA WORD AND DEVICE AND METHOD FOR STORING A DATA BLOCK}
도 1은 메모리로부터 사전결정된 데이터 워드를 판독하기 위한 본 발명에 따른 장치의 개략적인 회로 블록도;
도 2는 데이터 블록을 메모리 내에 저장하기 위한 본 발명에 따른 방법의 제1 실시예의 플로우차트;
도 3은 메모리로부터 사전결정된 데이터 워드를 판독하기 위한 본 발명에 따른 방법의 제 1 실시예의 플로우차트;
도 4는 데이터 블록을 메모리 내에 기록하기 위한 본 발명에 따른 방법의 제2 실시예의 플로우차트;
도 5는 메모리로부터 사전결정된 데이터 워드를 판독하기 위한 본 발명에 따른 방법의 제2 실시예의 플로우차트;
도 6은 메모리로부터 사전결정된 데이터 워드를 판독하기 위한 본 발명에 따른 방법의 제3 실시예의 플로우차트;
도 7은 메모리로부터 사전결정된 데이터 워드를 판독하기 위한 본 발명에 따른 방법의 제4 실시예의 플로우차트.
도면의 주요 부분에 대한 부호의 설명
160: 에러 교정 수단 180: 외부 컴퍼넌트
150: 에러 식별 수단
본 발명은 메모리로부터 사전결정된 데이터 워드를 판독하는 장치 및 방법과 1-비트 에러가 드물게 발생할 수도 있는 메모리, 예를 들면, 플래시 메모리 내에 데이터 블록을 저장하는 장치 및 방법에 관한 것이다.
오늘날 많은 메모리 기술에는 드물지만 개개의 비트 에러가 발생할 수도 있는 문제가 있다. 이것은 회피할 수 없다. 그러나, 이 문제는 넓게 퍼져있는 개별 비트들에 국한된 것이 일반적이다. 제한된 데이터 영역 내에서 다중 비트 에러가 발생하지만, 이러한 에러는 드물게 발생하는 것이어서 대체로 신뢰성 문제를 제기하지 않는다. 그러나, 많은 메모리 제품들의 신뢰성은 개개의 에러 또는 1-비트 에러를 겪는다. 이러한 이유 때문에, 메모리 소자에 저장된 데이터는 이러한 에러를 인식하게 해주는, 그리고 적용가능하다면, 그 에러를 교정까지도 해주는 리던던시 정보와 함께 제공된다. 복수의 메모리 기술들이 이러한 것에 의해 영향을 받는데, 그 중에서는 예를 들면, 특수 플래시 메모리 기술들 및 다른 비휘발성 메모리(Non-vollatile memory: NVM) 유형 뿐아니라 다른 메모리 유형들이 그러하다.
특히 비휘발성 메모리 유형의 분야에서, 특히 플래시 메모리 제품과 플래시 메모리 기술에서, 비트 에러는 각기 이들 메모리들의 내부 연결, 예를 들면, 반복적 기록을 위한 메모리 엑세스 시 "드레인 디스터브(drain disturb)"라고 알려진 메커니즘 때문에 발생할 수도 있다. 플래시 메모리와 별개로, 이 문제는 또한 다른 메모리 유형에서도 일어난다. 예를 들면, 동작 메모리(operating memories)로서 사용되는 RAM (램덤 엑세스 메모리) 메모리를 들 수 있다. RAM 메모리 분야에서는, 예를 들면, 메모리 소자의 포팅 매스(potting mass)에서 기원하는 α 미립자로 인한 산발적인 1-비트 에러가 있다.
지금까지, 이 문제는 메모리 블록마다 에러 코드를 추가하는 것으로 해결되어 왔다. 이와 관련하여, 메모리가 개개의 메모리 블록으로 조직되고 매 메모리 블록마다 하나 또는 여러 데이터 워드를 포함한다. 에러 코드로서는 에러 검출 코드 (error detecting codes (EDCs))와 에러 교정 코드(error correcting code (ECCs))가 사용된다. 그러나, 이 경우 메모리 블록에 기억된 데이터의 정확성을 검사하기 위해서는 메모리 블록과 관련한 에러 코드를 이용하여 데이터 또는 에러용 코드를 검사할 수 있도록 먼저 전체 메모리 블록을 판독하여 한다. 그러나, 이 절차는 몇 가지 문제를 갖고 있다.
기본 단위로 아주 작은 메모리 블록이 선정되는 경우, 메모리 블록의 크기에 비해 에러 교정값을 저장하는데 필요한 코드 소비량, 즉, 특히 메모리 공간이 매우 크다. U. Tietze와 Ch. Schenk의 저서 "Halbleiterschaltungstechnik"에서 예시적으로 설명된 바와 같이, 어느 1-비트 에러라도 교정되게 하는 에러 교정값의 최소 개수의 비트는 그 길이가 1과 4 비트 사이에 있는 데이터에 대해서는 3 비트, 그 길이가 5와 11 비트 사이에 있는 데이터에 대해서는 4 비트, 그 길이가 12와 26 비트 사이에 있는 데이터에 대해서는 5 비트, 그 길이가 27과 57 비트 사이에 있는 데이터에 대해서는 6 비트, 그 길이가 58과 120 비트 사이에 있는 데이터에 대해서는 7 비트, 그리고 그 길이가 121과 247 비트 사이에 있는 데이터에 대해서는 8 비트이다. 이들 개수는 작은 메모리 블록의 경우 에러 코드로서 에러 교정값을 저장하기 위한 메모리 소비량은 기반 데이터의 크기를 참조한 에러 코드를 저장하는데 필요한 메모리 길이와 관련하여 비교적 높은 메모리 소비량을 수반한다. 그러나, 한편으로는 작은 메모리 단위가 빠르게 그리고 에너지 효율적인 방법으로 엑세스될 수 있다.
그러나, 기반 메모리 블록의 더 큰 블록 단위 또는 크기가 선택되면, 에러 코드 또는 에러 교정값에 대한 추가적인 소비량은 견딜만하지만, 전체 블록을 판독하는 요건으로 인하여 개별적인 바이트만이 필요할 지라도 엑세스는 매우 느려지며 에너지 집약적 또는 전류를 소모하게 될 것이다.
예를 들면, 데이터 블록이 각기 4 바이트로 된 서브-워드 또는 데이터 워드를 포함하는 16 바이트 또는 128 비트의 순수 데이터 블록 크기를 갖는다면, 개개 바이트를 엑세스하기 위해서는 개개 바이트의 에러가 검사될 수 있도록 16 바이트 전체가 판독되어야 할 것이다. 이것은 개개 바이트를 포함하지 않는 3개 데이터 워드를 판독하는데 적어도 3 또는 4 클럭의 시간 지연을 유발한다.
큰 메모리 블록의 경우에 느린 엑세스 문제를 보상하는 방법은 캐시 메모리 를 설치하여 사용하는 것이다. 그러나, 캐시 메모리는 이러한 단점을 항시 보상하는 것은 아니며, 히트율이 낮은 경우에는 더욱 그러하다. 히트율이 낮은 경우, 캐시 메모리에 캐시 또는 저장되지 않은 흔하게 필요로 하는 데이터가 프로세서 또는 메모리를 포함하는 전체 시스템 중의 다른 컴퍼넌트에 의해 요청된다. 이 경우, 캐시 메모리를 이용한다고 데이터 엑세스를 가속시킬 수는 없는데, 그 이유는 이 경우 메모리의 전체 메모리 블록이 에러를 제거하는데 필요한 데이터를 제공하기 위해 판독되어야 하기 때문이다.
이러한 종래기술로부터, 본 발명의 목적은 빠른 판독과 에러를 검사할 뿐아니라 에러의 교정과 동시에 비교적 메모리 소비량이 적게 해주는, 메모리로부터 판독하는 장치 및 방법 또는 메모리에 저장하는 장치 및 방법을 제공하는 것이다.
이러한 목적은 특허청구의 범위 제 1, 12, 24 또는 25 항에 따른 장치와, 특허청구의 범위 제 22, 23, 26 또는 27 항에 따른 방법 및 특허청구의 범위 제 24 항에 따른 컴퓨터 판독 가능한 기록 매체에 의해 성취된다.
제1 태양에 따르면, 본 발명은 데이터 블록이 사전결정된 데이터 워드를 포함하는 복수의 데이터 워드와, 상기 복수의 데이터 워드의 데이터 워드마다 각각의 데이터 워드와 관련된 에러 식별값, 및 상기 데이터 블록에 관련된 교정값으로 나누어져 저장된 메모리로부터 상기 사전결정된 데이터 워드를 판독하는 본 발명의 장치는, 상기 사전결정된 데이터 워드가 그에 관련된 에러 식별값과 사전결정된 관계를 갖는지를 검사하여 상기 사전결정된 관계가 존재하지 않으면 에러가 있다고 결론짓도록 구현된 에러 식별 수단과, 상기 사전결정된 데이터 워드가 상기 관련된 에러 식별값과 사전결정된 관계를 갖지 않다면 상기 교정값을 이용하여 상기 에러를 교정하도록 구현된 에러 교정 수단을 포함하며, 상기 에러 교정 수단은 상기 복수의 데이터 워드들 중 어느 데이터 워드가 상기 사전결정된 데이터 워드인 것에 무관하게 에러 교정을 위하여 상기 교정값을 이용하도록 구현된 것을 특징으로 한다.
제 2 태양에 따르면, 복수의 데이터 워드로 구성된 데이터 블록을 메모리에 저장하는 본 발명의 장치는, 상기 복수의 데이터 워드의 데이터 워드마다 상기 각각의 데이터 워드와 사전결정된 관계를 갖는 에러 식별값을 생성하도록 구현된 에러 식별값 생성 수단과, 사전결정된 데이터 워드와 상기 관련된 에러 식별값과의 상기 사전결정된 관계가 존재하지 않는 것으로 결론짓는 에러를, 상기 데이터 워드들 중 어느 것이 상기 사전결정된 데이터 워드에 대응한다는 것과 무관하게, 교정가능하게 해주는 교정값을 상기 데이터 블록에서 생성하도록 구현된 에러 교정값 생성 수단을 포함하는 것을 특징으로 한다.
본 발명은 단지 비교적 작은 메모리 공간을 필요로 하는 교정값에 근거하여 에러를 교정하는 가능성을 포함하여, 메모리로부터 데이터 워드의 빠른 판독과 그의 에러를 검사하는 것이 에러 식별값을 각각의 데이터 워드에 연관시키고 데이터 블록 내 복수의 데이터 워드들 중 어느 데이터 워드가 에러를 갖는지에 무관하게 에러가 교정되게 해주는 교정값을 복수의 데이터 워드를 포함하는 데이터 블록에 연관시킴으로써 성취될 수 있다는 발견에 근거한다.
본 발명은 에러의 존재를 빨리 검사하는 것이 각 데이터 워드에 관련된 에러 식별값에 의거하여 가능하고, 한편 교정에 필요한 교정값이 전체 데이터 블록을 참조하고 그래서 교정값이 개개의 데이터 워드를 참조하는 경우 보다 작은 메모리 공간 요건을 갖는다는 특별한 장점이 있다. 이러한 근거는 데이터 블록이 복수의 데이터 워드를 포함한다는 것과 데이터 블록의 길이와 관련한 교정값의 메모리 요건이 데이터 블록의 길이가 증가함에 따라 감소한다는 것이다.
또한, 본 발명은 데이터 워드에 관련된 에러 식별값이 각기 정확하게 1 비트의 길이를 갖도록, 즉, 가능한 가장 작은 추가 메모리 소비를 필요로 하도록 한 것이 특별한 장점이다. 또한, 에러 식별값으로서 패리티 비트를 이용하는 것은, 즉 관련된 각각의 패리티 비트에 의거하여 개개 데이터 워드의 패리티를 검사하는 것은 메모리를 포함하는 시스템의 클럭 사이클에서 패리티 검사가 병행가능하기 때문에 에러의 검사를 매우 빠르게 해준다.
본 발명의 다른 장점은 교정값이 한편으로는 데이터 블록에서 1-비트 에러를 또는 다른 한편으로는 데이터 워드 또는 데이터워드 및 관련된 에러 식별값에서 어느 1-비트 에러를 교정하는데 사용될 수도 있다는 것이다. 메모리를 포함하는 시스템의 경계 조건에 따르면, 이것은 데이터 블록에서 또는 데이터 워드 및/또는 데이터 워드 및 관련된 에러 식별값에서 어느 1-비트 에러가 교정가능하도록 하는 교정값을 구현하는 더욱 큰 장점일 수 있다.
본 발명의 또 다른 장점은, 각각의 데이터 워드에 근거하여, 서브 교정값이 계산되고, 이로부터 그 다음에는 링킹 또는, 예를 들면, 비트-와이즈 XOR (배타 OR) 연산과 같은 연산을 적용함으로써 교정값이 생성되는 것을 데이터 블록이 포함하는 사실에 의거하여 교정값을 저장하는데 필요한 길이가 줄어든다는 것이다. 교정값 및 판독될 데이터 워드가 아닌 데이터 워드들로부터 계산된 서브 교정값에 근거하여 판독할 때 에러가 없다면, 교정이 실시된다는 것을 근거로 판독될 데이터 워드에 대하여 재구성된 서브 교정값이 판단된다. 이것은 교정값의 길이가 더이상 데이터 블록의 길이에 관련하지 않고 차라리 하나의 데이터 워드에만 관련하는 교정값의 길이에 대응한다는 점에서 특별한 장점이 있다. 교정값에 대한 메모리 요건은 사전결정된 데이터 워드의 빠른 판독 가능성을 방해하지 다시 줄일 수 있다.
그래서, 본 발명은 동시에 데이터 워드의 빠른 판독과 에러의 검사를 동시에 허용하면서 교정에 필요한 교정값에 비교적 작은 메모리 공간을 요구한다.
본 발명의 바람직한 실시예는 첨부한 도면을 참조하여 다음과 같이 상세히 설명될 것이다.
메모리로부터 사전결정된 데이터 워드를 판독하기 위한 본 발명의 장치의 실시예는 도 1 내지 도 7을 참조하여 설명될 것이다. 도 1 내지 도 7에서 유사한 참조부호는 유사한 대상 및 방법의 단계로 사용될 것이다. 또한, 동일한 대상 및 방법의 단계는 동일한 참조부호로 지칭될 것이다.
도 1은 메모리(100)로부터 사전결정된 데이터 워드를 판독하기 위한 본 발명의 장치의 실시예의 개략적인 회로 블록도를 도시한다. 데이터 블록(110)은 복수의 데이터 워드(120-1, . . . , 120-n) 및 그 데이터 워드(120-1, . . ., 120-n)와 각기 관련된 복수의 에러 식별값(130-1, . . . , 130-n)과 교정값(140)을 포함하며, 메모리(100)에 저장된다. 다시 말하자면, 데이터 블록(110)은 n개의 서브-워드 또는 데이터 워드(120-1,. . ., 120-n)로 나누어진다. 메모리(100)는 에러 식별 수단(150)과 에러 교정 수단(160)에 연결된다. 또한, 에러 식별 수단(150)은, 예를 들면, 양방향 버스(170)를 통하여, 예를 들면, CPU(중앙 처리 장치), 메모리, 특수용도 프로세서, 크립토 프로세서(crypto-processor), 또는 다른 수단일 수도 있는 외부 컴퍼넌트(180)에 연결된다. 대개의 경우 에러 식별 수단(150)과 에러 교정 수단(160)은 도 1에는 도시되지 않은 메모리 제어 유니트의 일부로서 형성된다.
본 발명의 실시예에서, 에러 식별 수단(150) 및 에러 식별값 생성 수단은 에러 식별값(130-1, . . . , 130-n)이 그와 관련된 데이터 워드(130-1, . . ., 130-n) 내 에러의 존재를 검사하도록 구현되지만, 각 데이터 워드의 교정은 에러 식별 시 발견되어야 한다는 것은 아니다. 본 발명의 실시예에서, 에러 식별값(130-1, . . ., 130-n)은 데이터 워드에서 에러를 찾거나 식별하게 해주되, 그 에러를 교정하는 것이 아닌 값을 나타낸다.
본 명세서에서는, 사용된 알고리즘에 따라서 데이터 비트의 멀티-비트 에러가 에러로서 지칭될 수도 있음을 알아야 한다. 각각의 실시예의 특별한 구성에 따라, 에러 식별값은 정확히 1 비트를 포함할 수도 있고 또는 1 비트 이상의 길이를 가질 수도 있다. 에러 교정을 허용하지 않고 또한 에러 식별값이 정확히 1 비트의 길이를 갖지 않게 하는 에러 식별 방법의 일예는 비트 수를 없애거나 선택하거나 또는 다른 형태로 비트 수를 줄임으로써 비트 수를 정확하게 1 비트로 줄일 수 있는 (여분의) 검사 썸(check sum)을 생성하거나 또는 패리티 비트를 이용하는 패리티 검사를 들 수 있다.
에러 교정을 허용하지 않는 1 비트 이상의 길이의 에러 식별값을 갖는 방법은, 예를 들면, 해시 함수 및/또는 일방 해시 함수를 통해 (암호적으로 보안하는) 해시 값을 생성하는 CRC (cycling redundant check sum) 에러 보호 방법의 형태 처럼 리던던트 검사 썸을 계산하는 것이다.
본 발명의 다른 실시예에 있어서, 에러 식별값은 1 비트 이상의 길이를 갖는 패리티 비트에 기반하여, 예를 들면, 패리티 비트를 반복함으로써 및/또는 그의 보수값을 패리티 비트에 붙임으로써 생성되기도 한다. 패리티 비트가 에러 식별값으로서 사용되는 경우는, 앞에서 언급한 바와 같이, 이것이 제한적인 것으로 해석될지라도 아래의 설명에서 상세히 기술될 것이다.
본 출원의 도입부에서 설명된 바와 같이, 멀티비트 에러는 원칙적으로 데이터 영역에서 발생하지만, 너무도 드물어서 메모리(100)의 신뢰성을 저해하지는 않는 것이 일반적이다. 1-비트 에러가 더욱 큰 신뢰성 문제를 나타내기 때문에, 본 출원에서 이것을 명시적으로 표현하는 곳 이외에서는, 1-비트 에러는 데이터 블록(110)이 멀티비트 에러가 아닌 1-비트 에러를 포함할 수도 있다는 전제조건으로 가정한 또는 취한 본 출원의 또 다른 과정에 있을 것이다. 그래서 에러 식별값(130-1, . . ., 130-n)은 n개 데이터 워드 또는 개개의 비트 에러들로부터 보호될 데이터 블록(110)이 나누어지는 서브-워드(120-1, . . ., 120-n)에 대한 및/또 는 매 데이터 워드(120-1,. . ., 120-n) 마다 1-비트 에러를 식별하는 가능성을 보증한다.
외부 컴퍼넌트(180)가, 예를 들면, 판독 명령 또는 독출 명령으로 양방향 버스(170)를 경유하여 메모리로부터 소정 데이터 워드를 엑세스하는 경우, 에러 식별 수단(150)은, 예를 들면, 데이터 워드(120-2)와 같은 대응하는 데이터 워드, 및 관련된 에러 식별값, 즉 에러 식별값(130-2)을 수신하고, 그 에러 식별값(130-2)에 근거하여 에러의 존재를 찾기 위해 데이터 워드(120-2)를 검사한다. 이와 달리, 에러 식별 수단(150)은 양방향 버스(170)를 경유하여 외부 컴퍼넌트(180)로부터 소정 데이터 워드를 메모리(100)로부터 판독하라는 명령, 즉 판독 명령 또는 독출 명령을 수신할 수 있다. 이 경우, 에러 식별 수단(150)은 메모리를 엑세스하여 각 데이터 워드, 즉, 본 실시예에서는 데이터 워드(120-2) 및 관련된 에러 식별값, 즉, 에러 식별값(130-2)을 판독하며, 그 에러 식별값(130-2)에 근거하여 에러의 존재를 찾기 위하여 데이터 워드(120-2)를 검사할 것이다.
판독 명령을 실행했는지 또는 에러의 존재를 찾기 위해 검사만을 실행하였는지에 무관하게, 에러 식별 수단(150)이 에러를 판단하지 못하면, 데이터 워드(120-2) 또는 그의 일부만이 양방향 버스(170)를 경유하여 외부 컴퍼넌트(180)로 출력될 것이다.
에러 식별 수단(150)이 데이터 워드(120-2)를 검사할 때 상기 예에서 에러를 판단하면, 이 에러는 상기 지적된 전제조건에 기인한 1-비트 에러일 것이다. 이 경우, 에러 식별수단(150)은 에러 교정 수단(160)에게 명령하여 데이터 워드(120-2)를 포함하는 데이터 블록과 관련된 교정값(140)을 판독하고 그 교정값(140)에 의거 대응적으로 데이터 블록(110)을 교정한다. 데이터 블록의 교정을 마친 후, 에러 교정 수단(160)은 에러 식별 수단(150)에게 신호를 보내고 그에 따라 에러 식별 수단(150)은 해당 데이터 워드, 상기 예에서는 데이터 워드(120-2)와 함께 개개의 에러 식별값(130-2)을 다시 판독하고, 에러를 다시 검사하며, 데이터 워드(120-2)에 아무 에러가 없는 경우 양방향 버스(170)를 경유하여 외부 컴퍼넌트(180)에게 그 데이터 워드(120-2)를 출력할 것이다.
메모리 공간을 절약하는 에러 교정과 조합하여 개개의 비트 에러 식별을 가능한 빨리 하기 위하여, 에러 식별값(130-1, . . ., 130-n)에는 대개 패리티 비트가 사용되어, 데이터 워드(120-1, . . ., 120-n) 중의 한 데이터 워드를 그와 관련된 패리티 비트(130-1, . . ., 130-n)와 비교함으로써 에러의 존재를 검사하는데, 이것은 데이터 비트 모두에 대하여 데이터 워드(120-1, . . ., 120-n)의 패리티를 검사하는 것이 병행 동작으로 인해 매우 빨리 실행되기 때문이다. 여기서, 같은 또는 다른 패리티가 에러 식별값으로서 사용되는지는 무관하다, 즉 데이터 워드의 비트 개수가 같든 다르든 무관하다. 그러나, 기본적으로, 에러를 식별하는 모든 방법이 사용될 수 있어서 다음의 실시예에서 패리티 비트를 사용하는 것이 제한적인 의미로 보이지는 않는다. 그러나, 예를 들면, 데이터 워드(120-1, . . ., 120-n)와 관련된 패리티 비트(130-1, . . ., 130-n)를 이용하여 패리티를 검사하는 것과 같이, 메모리 공간을 절감하는 빠른 에러 식별방법을 이용하는 것이 이득이다. 그래서 패리티를 검사하는 것은 빠르게 실행될 수 있다는 장점과 어느 1-비트 에러라도 식별하는 가능성을 잃지 않고도 패리티 비트(130-1, . . ., 130-n)에 추가로 필요한 메모리 공간이 매우 적다는 다른 장점이 있다.
정확하게 한 개씩 개개 패리티 비트(130-1, . . ., 130-n)가 n개 데이터 워드의 각각과 연관되어 있고 에러 교정 코드 또는 교정값이 전체 데이터 블록(110)대하여 결정된다는 사실로 인하여, 한편으로는 개개 데이터 워드에 대한 빠른 에러 검사가 그리고 다른 한편으로는 비교적 작은 복잡도 또는 교정값(140)을 저장하는 메모리 공간 요건이 가능해진다. 달리 말해서, 본 발명은 에러 식별 방법을 데이터 워드(120-1, . . ., 120-n) 각각에 개별적으로 적용함으로써 필요로 하는 에러 교정값을 저장하는데 필요한 메모리 공간을 낮게 유지하거나 최소화해주며, 반면 에러 교정 방법은 복수의 데이터 워드(120-1, . . ., 120-n) 및/또는 데이터 블록(110)에 적용된다. 그래서, 교정값(140)의 길이는 패리티 비트(130-1, . . ., 130-n)를 이용하여 최소화될 수 있고, 반면 패리티 비트(130-1, . . , 130-n)는 데이터 워드(120-1, . . ., 120-n) 중 한 데이터 워드에 대한 에러의 존재를 빨리 검사하게 해주며 그래서 에러가 없는 한 각 데이터 워드를 하류의 수신기 유니트 및/또는 외부 컴퍼넌트(180)로 거의 반쯤 제공되게 해준다. 그래서 에러 교정은 전체 데이터 블록(110)에 대해 해당 코드(140)를 도입함으로써, 즉 전체 데이터 블록(110)에 관련한 교정값(140)을 도입함으로써 실현된다.
최대로 데이터 블록(110) 당 정확히 하나의 1-비트 에러가 있다는 전술한 전제 조건 하에, 원하는 서브 데이터 워드 및/또는 데이터 워드를 판독할 때 서브 데이터 워드 또는 데이터 워드조차도 정확한지 아닌지가 즉시 판단될 수 있다. 만일 정확하다면, 하류의 유니트(180)로 즉각 출력 또는 그 하류 유니트에 의해 처리될 수 있다. 이 경우, 잔여 데이터 블록은 더이상 판독되지 않는다. 그래서 본 발명의 본질적인 장점은 전체 데이터 블록(110) 대신 개개 워드가 엑세스(블록 엑세스)를 위해 복구될 수 있을 때 판독 동작의 실행 시간에서의 상당한 개선과 그에 수반하는 에너지 소비량에서의 상당한 감소를 가져온다.
그러나, 에러가 있는 경우, 그 에러는 교정값(140)을 이용하여 교정될 수 있어서 그 교정이 수행된 이후 정확한 데이터 워드가 제공 또는 출력될 수 있다. 그래서, 본 발명은 큰 데이터 블록 단위 또는 데이터 블록(110)을 선택하여 교정값(140)을 저장하는 코드 소비를 적게 유지하게 하고, 그와 동시에 데이터 또는 데이터 워드로의 엑세스 및 그의 에러 검사를 빠르게 해준다. 데이터 또는 데이터 워드의 판독 엑세스의 경우, 전체 데이터 블록(110)이 판독될 수도 있지만, 이것이 요건은 아니다.
본 출원의 다른 과정에 있어서, 사전결정된 데이터 워드를 메모리(100)로부터 독출하는 본 발명의 방법은 네 개의 실시예를 이용하여 설명될 것이고 데이터 블록(110)을 메모리(100)에 저장하는 본 발명의 방법은 두 개의 실시예를 이용하여 더욱 상세히 설명될 것이며 이들의 장점은 도 2 내지 도 7을 참조하여 설명될 것이다.
도 2는 데이터 블록(110)을 메모리(100)에 저장하는 본 발명의 방법의 제1 실시예의 플로우차트이다. 본 발명의 방법은 단계(S200)로부터 시작된 후, 먼저 n개 데이터 워드(120-1, . . ., 120-n)가 판독된다 (단계 S210). 다음 단계(S220)에서, 데이터 워드(120-1, . . ., 120-n)와 관련된 패리티 비트(130-1, . . ., 130-n)가 생성된다. 그 다음 단계(S230)에서, n개의 서브 교정값 또는 서브 에러 코드가 데이터 워드(120-1, . . ., 120-n) 각각에 대하여 계산된다. 그 다음 단계(S240)에서, n개 서브 교정값이 비트-와이즈(bit-wise) XOR 연산 또는 비트-와이즈 XOR (배타-OR) 구조에 의해 합산된다. 여기서 이 연산 또는 합산의 결과는 합 코드 또는 교정값(140)으로서 데이터 블록(110)과 관련된다. 다음 단계(S250)에서, 데이터 블록(110), 즉 각각의 데이터 워드(120-1, . . ., 120-n), 패리티 비트(130-1, . . 130-n) 및 교정값(140)이 메모리(100)에 저장됨으로써, 기록 과정이 종료된다 (단계 S260).
개개의 에러 교정값이 n 번, 즉 개개의 데이터 워드(120-1, . . ., 120-n)에 대하여 각기 독립적으로 계산된다는 사실로 인하여, 이러한 n개 서브 에러 코드는 XOR 구조에 의해 비트별로 계속 합산되고 그 결과의 합 코드는 교정값(140)으로서 데이터 블록(110)과 함께 저장되며, 전체 데이터 블록(110)을 참조하는 교정값(140)과 비교하여 길이차를 갖는 몇개의 비트가 저장될 수 있다. 예시적으로, 버스 시스템 또는 양방향 버스(170)의 폭, 또는 4 바이트, 즉 32 비트의 서브워드 또는 데이터 워드의 다른 경계 조건을 감안해 제시된 16 바이트, 즉 128 비트의 순 데이터 블록 크기로부터 시작하면, 데이터 블록(110)은 4개의 데이터 워드(120-1, . . ., 120-n)(즉, n= 4)를 포함하는 것이 당연하다. 본 출원의 도입부에서 이미 언급한 바와같이, 이 경우에 전체 데이터 블록(110)을 참조하는 결과는 순순한 에러 교정 알고리즘을 적용한 경우에는 8 비트 길이의 에러 코드이거나 에러 교정과 에러 식별 알고리즘의 조합한 경우에는 9 비트 길이의 에러 코드이다. 여기서 에러 식별 알고리즘은 패리티 비트를 이용하여 데이터 블록(110)의 에러를 식별하는 패리티 비교의 형태로 구현된다. 또한 본 출원의 도입부에서 이미 언급한 바와 같이, 아래의 본 발명의 방법이 없으면, 개개 바이트를 엑세스하기 위해서는 완전한 16 바이트가 항상 판독되어야 하며, 그 결과 적어도 3 내지 4 클럭의 시간 지연을 가져온다. 본 발명의 방법은 4 바이트 길이를 갖는 어드레스된 워드를 직접 판독하는 매 클럭 마다 적절한 바이트를 엑세스하게 해준다. 코드 오버행(code overhang) 또는 전체 코드 폭, 즉 이 경우에 본 발명의 방법을 실행하기 위한 추가적인 메모리 요건은 데이터 워드(120-1, . . ., 120-n)에 관련된 4개 패리티 비트(130-1, . . , 130-n) 및 33 비트를 포함하는 데이터 패킷을 위한 6 비트 에러 교정 코드 또는 서브 교정값으로부터 유래한 10 비트이다. 4 바이트를 포함하는 32 데이터 비트의 데이터 워드를 별개로 하고, 데이터 패킷은 그 데이터 워드와 관련된 패리티 비트를 추가로 포함한다. 서브 교정값을 데이터 블록(110)과 관련된 교정값과 비트-와이즈 XOR 링크함으로써, 그 길이가 변하지 않고 남아 있기 때문에, 상기 결과는 전체 코드 폭 또는 10 비트의 패리티 비트(130-1, . . , 130-n)와 교정값(140)을 모두 함께 한 길이에 해당한다. 본 출원의 도입부에서 이미 언급한 바와 같이, 가능한 해법과 비교해 보면, 추가적인 코드 오버행, 즉 추가 메모리 공간 요건은 단지 한 길이 또는 1 또는 2 비트에 불과하며, 아래에서 보다 상세히 설명될 것으로, 사전결정된 데이터 워드를 독출하기 위한 본 발명 방법의 보다 높은 판독 속도에 기인하여, 이것은 성취가능한 속도 향상과 비교하여 무시가능한 단점이 있다.
도 3은 도 2에 도시된 기록 프로세스의 실시예에 부속하는 것으로, 사전결정된 데이터 워드를 메모리(100)로부터 독출하기위한 본 발명의 방법의 제1 실시예의 플로우차트이다. 단계(L200)로부터 시작한 후, 단계(L210)에서 먼저 사전결정된 데이터 워드가 그의 어드레스에 근거하여 메모리(100)로부터 판독된다. 두번째 단계(L220)에서, 관련된 패리티 비트가 또한 판독되고 세번째 단계(L230)에서 사전결정된 데이터 워드의 패리티가 관련된 패리티 비트의 값과 비교된다. 두개가 일치하면, 단계(L240)에서 사전결정된 데이터 워드가 양방향 버스(170)를 경유하여 판독되고, 단계(L250)에서 판독 프로세스는 종료한다.
두 값, 즉 판독된 데이터 워드의 패리티와 관련된 패리티 비트의 값이 일치하지 않으면, 이것은 1-비트 에러를 나타내는 것으로, 단계(L260)에서 데이터 블록(110)의 교정값이 판독될 것이다. 게다가, 단계(L270)에서 다른 데이터 워드가 또한 판독된다. 그 다음 단계(L280)에서, 각각의 서브 교정값이 다른 데이터 워드에 근거하여 계산되고, 단계(L290)에서 교정값(140)과 함께 링크되어 사전결정된 데이터 워드의 서브 교정값을 형성한다. 단계(L300)에서, 이러한 방식으로 구한 서브 교정값이 분석되고 평가된다. 이 분석의 결과 데이터 워드의 교정이 가능하다면, 단계(L310)에서 교정이 실행되고 이 프로세스는 단계(L210)로 계속 이어진다. 그러나, 서브 교정값의 분석 결과 교정이 불가능하다면, 단계(L320)에서 에러 메시지가, 예를 들면, 에러 식별 수단(150) 및 양방향 버스(170)를 통하여 외부 컴퍼넌트(180)로 출력되며, 이 프로세스는 단계(L330)에서 에러인 채로 종료된다.
전술한 단계(L290)에서 실행된 다른 데이터 워드의 서브 교정값과 데이터 블록(110)에 관련된 교정값과의 링킹은 도 2에 도시된 실시예의 사례에서 이미 언급g한 것처럼 비트-와이즈 XOR 링킹 또는 연산이다. 비트-와이즈 XOR 링킹의 특징으로 인하여 그리고 도2에서 개시된 메모리(100) 내에 데이터 블록을 저장하는 실시예와 관련하여, 이러한 링킹의 결과는 바로 에러 코드 또는 패리티 에러에 의해 영향받은 사전결정된 데이터 워드의 서브 교정값이다.
본 발명은, 예를 들면, 데이터를 더욱 빠르게 제공해주는 용도가 바람직하거나 또는 필요하다면 캐시 메모리와 관련하여 사용될 수도 있다. 이러한 캐시 메모리가 낮은 캐시 히트율을 갖는다 해도, 즉, 프로세서에서 실행 중인 프로그램이 캐시 메모리에 캐시되어 있지 않은 복수의 상이한 데이터를 메모리로부터 요구하는 경우라도, 본 발명은 이것을 완벽하게 또는 적어도 부분적으로 보상할 수 있다.
캐시 메모리가 사용되는 경우, 소위 "랩핑 버스트 필(wrapping burst fill)" 프로세스를 캐시 메모리와 연관시켜 적용할 수 있다. 이것은 메모리로부터 요구된 실제 데이터 워드가 캐시 메모리 내에 저장되어 있다는 것을 의미하는데, 여기서 각각의 데이터 워드의 무결성 또는 정확성은 캐시 메모리 내에 그와 똑같은 것을 저장할 때 데이터 워드에 관련된 에러 식별값을 이용하여 검사될 수 있다. 그래서, 에러 식별값은 그 데이터 워드를, 예를 들면, CPU(중앙 처리 장치), 다른 메모리, 입/출력 유니트, 특수용도 프로세서, 크립토-프로세서 또는 다른 유니트와 같은 하류의 수신기 유니트(180)에 즉각 제공하게 해준다. 필요로 하는 데이터 워드가 하류의 수신기 유니트(180)에 이미 이용가능해지는 동안, 나머지 데이터 워드(120-1, . . , 120-n)는 전형적으로 블록 단위로 조직화된 캐시 메모리에 저장될 수 있다. 그래서, 본 발명의 방법은 실행 속도에서 상당한 증가와 에너지 소비에서 상당한 절감을 가져오며, 예를 들면, 모바일 폰, PDA(personal data assistants) 및 다른 휴대용 장치와 같은 모바일 용도에 특별한 장점이 있다.
달리 말해서, 블록 전체 또는 데이터 블록(110)의 데이터 워드(120-1, . . , 120-n) 중 하나가 패리티 비트를 갖는다면, 다음의 교정 알고리즘이 적용될 것이다. 즉, 패리티 에러에 영향받지 않는 데이터 워드의 개개 서브에러 교정 코드가 계산될 것이다. 그 다음, 이들에 대한 XOR 합이 계산되고 그 결과가 XOR 연산을 통해 저장된 합 에러 교정 코드 또는 교정값(140)과 합산될 것이다. 그 결과는 패리티 에러에 영향받은 데이터의 에러 교정 코드일 것이며, 이로써 개개의 비트 에러가 교정될 수 있다.
도 2 및 도 3에 도시된 본 발명의 방법의 실시예는 에러 교정 코드가 전체 데이터 블록(110)에 대하여 계산된 것이 아닌, 서로 독립적으로 개개 데이터 워드(120-1, . . , 120-n)에 대하여 계산된 것이라는 사실에 근거한다. 이러한 방식으로 구한 서브 에러 코드 또는 서브 교정값은 서로 링크된 다음 데이터 블록과 함께 교정값(140)으로서 저장된다. 서브 데이터 워드 또는 데이터 워드의 에러 교정 코드는 대개의 경우 전체 데이터 블록에 대한 교정값(140) 보다 비트 폭이 작기 때문에, 예를 들면, 비트-와이즈 XOR (배타-OR) 연산과 같은 적합한 링킹의 전제조건 하에서, 교정값(140)을 저장하는데 필요한 메모리 공간은 여전히 줄일 수 있다. 에러가 데이터 워드의 교정을 요구한다면, 요구한 데이터 워드의 서브 교정값을 구하 기 위하여 에러에 영향받지 않은 데이터 워드(120-1, . . , 120-n)의 서브 교정값이 계산되고 저장된 교정값과 링크되어야 한다. 이것을 이용하면, 요구한 데이터 워드에서의 개개 비트 에러가 교정될 수 있다.
도 2 및 도 3에서 개시된 본 발명의 판독 및 저장 방법의 실시예에서, 패리티 비트(130-1, . . ., 130-n)의 영역에서 발생할지도 모를 1-비트 에러의 교정이 실제 데이터 워드(120-1, . . , 120-n)의 교정과 별도로 실행될 수도 있다. 그러나, 이렇게 패리티 비트 및/또는 에러 식별값(130-1, . . ., 130-n)에서 에러를 교정하는 가능성은 반드시 구현될 필요가 있지는 않다. 그래서, 원칙상 패리티 비트(130-1, . . ., 130-n)의 영역에서 에러에 대한 추가적인 보호는, 예를 들면, 데이터 워드가 단지 4 비트의 길이를 가져야만 할 때 교정값(140)의 길이를 1 비트만큼 증가시키는 불리한 점이 있을 수도 있다. 이 경우, 3 비트 길이를 갖는 에러 교정값이 1-비트 에러에 대한 보호에 필요할 것이다. 그러나, 만일 관련된 패리티 비트가 에러에 대해 추가로 보호된다면, 보호할 비트의 길이는 5가 되어, 추가적인 에러 교정 비트를 필요로 할 것이다. 도 2 및 도 3에 개시된 방법은 특수 칩, 칩 카드, 집적회로 또는 메모리 공간에 대하여 최적화된 다른 작은 용도의 경우에서와 같이 단지 작은 메모리 공간이 이용가능할 때 특별한 장점이 있다.
도 4는 데이터 블록(110)을 메모리에 저장하는 본 발명의 방법의 제2 실시예의 플로우차트이다. 도 2의 제1 실시예와 비교하면, 본 실시예는 유도한 교정값(140) 및/또는 서브 교정값이 복수의 데이터 워드(120-1, . . , 120-n) 중의 개개 데이터 워드를 교정하는 데에만 사용될 수 없다는 약간 변형된 버전이지만, 완전한 데이터 블록(110)을 참조한다. 도 4에 도시된 실시예는 기본적으로 제어 값(140)의 생성과 관련한 두 가지 점에서만 도 2의 실시예와 다르다. 두 실시예는 패리티 비트(130, . . ., 130-n)가 생성되는 단계(S220) 까지는 동일하다. 그러나, 도 2에 도시된 실시예와 달리, 서브 교정값이 계산되는 도 2의 단계(S230)가 실시되지 않는다. 그 대신, 제어 값(140)이 전체 데이터 블록(110)에 근거하여 생성되는 변형된 단계(S240')가 도 2의 실시예에서의 단계(S240)를 대체한다. 데이터 블록(110)을 저장하는 본 발명의 방법의 실시예는 데이터 블록(110)이 저장되는 단계(S25)와 종료 단계(S260)로 끝난다.
도 4에 도시된 데이터 블록(110)을 저장하는 본 발명의 방법의 실시예에 부속하는 사전결정된 데이터 워드를 판독하는 실시예가 도 3에 도시된 사전결정된 데이터 워드를 판독하는 실시예와 약간 다르게 도 5에서 플로우차트의 형태로 예시된다. 또한, 이들 간의 차이점은 단지 에러인 경우에 실제 교정을 실행(L310)하게 하는 준비 단계에 영향을 줄 뿐이다. 도 5에 도시된 실시예는 단계(L260)에서 교정값(140)을 판독하는 단계까지 도 3에 도시된 실시예와 다르지 않다. 그러나, 도 3에 도시된 실시예와 달리, 단계(L270, L280 및 L290)는 실행되지 않는다. 도 3에 도시된 실시예의 단계(L300)는 변경된 단계(L300')로 대체되는데, 이 단계에서는 단계(L260)에서 판독된 교정값(140)이 분석되어 에러가 발생하는 경우에 교정이 원칙상 가능한지를 평가한다. 만일 교정이 가능하지 않다면, 본 발명의 방법은 도 3에 도시된 실시예의 절차와 유사하게 단계(L320), 즉 에러 메시지를 출력하는 절차를 진행할 것이다. 만일 교정이 가능하다면, 도 3에 도시된 실시예와 유사하게 단계(L310)가 실행될 것이며, 판독 동작은 도 3에 도시된 실시예와 유사하게 계속하여 단계(L210)로 진행할 것이다.
도 4 및 도 5에 도시된 데이터 블록을 저장하고 메모리(100)로부터 사전결정된 데이터 워드를 판독하는 본 발명의 방법의 실시예는 기본적으로 서브 에러 코드를 합산하지 않고 XOR 링킹을 이용할 수 있다는 점에서 도 2 및 도 3에 도시된 두 실시예와 다르다. 앞에서도 언급한 것처럼, 버스 시스템을 감안하여 예시적으로 각기 4 바이트로 된 서브 워드 또는 데이터 워드(120-1, . . , 120-n) (n=4)로 나누어진 16 바이트의 순 데이터 블록 크기의 예를 가정하면, 128 비트의 순 데이터 블록 크기에 기인하여, 결과는 적어도 8 비트의 폭을 갖는 에러 교정 코드 또는 교정값(140)이 될 것이다. 그래서, 에러 식별 및 에러 교정을 위한 전체 코드는 4개의 데이터 워드(120-1, . . , 120-n)의 4개 패리티 비트(130-1, . . . , 130-n)를 포함하여 12 비트의 메모리 복잡도(complexity)가 될 것이다. 그러나, 원래 계획된 8 비트 또는 9 비트의 에러 코드 길이의 본 발명의 도입부에서 지적한 가능한 해결책과 비교하여 보면, 이러한 해결책은 제한된 범위까지는 경쟁가능하다. 그럼에도 불구하고, 데이터 블록을 저장하며/하거나 사전결정된 데이터 워드를 출력하는 본 발명의 방법의 실시예들은 일견 단점이 있는 것처럼 보임에도 불구하고 많은 장점을 가지고 있다. 예를 들면, 도 3에 도시된 실시예의 몇 단계들이 구조적인 한계, 보안 요건 또는 다른 이유들 때문에 빨리, 즉, 하나 또는 몇 클럭 사이클 내에 이루어질 수 없다면, 교정 시간이 짧아질 수 있기 때문에, 경계조건에 따라서 보다 높은 메모리 공간 요건에 대하여 추가적인 계산 단계, 판독 단계 및 링킹 단계를 생략하는 장점을 가질 수도 있다. 본 발명의 도입부에서 언급한 해결책과 비교하면, 빨리 판독하고 에러의 존재를 빨리 검사하는 장점은 도 5에 도시된 실시예에서 존속하고 있어서, 사전결정된 데이터 워드의 더욱 빠른 판독은 적어도 에러가 발생하지 않는 경우에 가능할 것이다.
사전결정된 데이터 워드를 판독하는 본 발명의 방법을 이용하는 또 다른 가능성은 보다 큰 보호 코드 워드 및/또는 확장된 교정값(140)을 갖는 보안 용도의 분야에서이다. 패리티 비트 또는 에러 식별값(130-1, . . ., 130-n)은 1-비트 에러를 제거 및/또는 검출하는데 사용된다. 그러나, 보안 검사에서, 그럼에도 불구하고 에러 코드 또는 교정값(140)을 최종적으로 검사할 수 있도록 하기 위하여 모든 데이터 워드(120-1, . . , 120-n)가 판독될 것이다. 이러한 절차는 실제로 희망하는 데이터 워드의 빠른 제공을 허용할 것이며, 한편으로는 공격에 대비한 메모리의 검사를 허용한다. 예를 들면, 일반적으로 패리티 비트를 이용하여 더이상 검출되지 않을지도 모르고 또한 통상 보안 요소가 공격받을 것이라고 고려되는 멀티 비트 에러의 경우에 있어서, 메모리 제어 유니트는 프로세스 중 행위의 중단, 예를 들면, 알람 신호를 출력함으로써 에러 식별 수단(150) 또는 에러 교정 수단(160)에 의한 보안 리셋의 형태로 중단을 시작할 수도 있다. 본 출원의 또 다른 진행에서, 사전결정된 데이터 워드를 판독하는 본 발명의 방법의 두가지 실시예가 설명될 것이며, 이들 실시예는 보안 용도의 분야에서 사용될 수도 있다. 이들 두 실시예는 도 3 및 도 5에 도시된 사전결정된 데이터 워드를 판독하는 본 발명의 방법의 실시예들의 변형이다.
도 6은 메모리(100)로부터 사전결정된 데이터 워드를 출력하는 본 발명의 방법의 제3 실시예로서, 본 실시예는 보안 용도에 사용을 위하여 변형되었으며 도 5에 도시된 실시예에 근거한다. 본 실시예는 단계(L230) 판독된 데이터 워드의 패리티의 비교시 관련된 패리티 비트의 값과 일치하는 경우에만 도 5에 도시된 실시예와 다를 뿐이다. 이 경우, 데이터 워드는 도 6에 도시된 실시예의 단계(L240)에서 출력될 것이다. 다음 단계(L242)에서, 다른 데이터 워드(120-1, . . , 120-n)가 판독된다. 단계(L245)에서, 교정값(140)이 판독되고 단계(L247)에서 분석된다. 분석 단계에서 에러가 발견되지 않으면, 본 발명의 판독 방법은 단계(L250')에서 종료될 것이다. 그러나, 단계(L247)에서 에러가 발견되면, 단계(L248)에서 알람 신호가 출력될 것이며, 단계(L250'')에서 본 발명의 방법이 종료될 것이다. 이 경우, 1-비트 에러가 단계(L230)에서 패리티 비트(130-1, . . , 130-n)를 이미 검사한 것에 의해 결정되어야 할 것이기 때문에, 알람 신호는 멀티 비트 에러를 나타낸다. 본 발명의 도입부에서 이미 언급한 바와 같이, 멀티 비트 에러는 거의 발생하지 않기 때문에, 멀티 비트 에러는 통상 보안 요소가 공격받을 때 평가되어, 대응책으로서 프로세스 중 행위를 중단, 예를 들면, 알람 신호에 의해 트리거될 수 있는 보안 리셋의 형태로 중단되어야한다.
도 7은 메모리(100)로부터 사전결정된 데이터 워드를 판독하는 본 발명의 방법의 제4 실시예의 플로우차트로서, 본 실시예는 보안 용도에 사용되도록 도 3에 도시된 실시예에 근거하여 변형된 것이다. 도 6에 도시된 실시예와 유사하게, 도 7에 도시된 실시예는 단계(L230)에서 실행된 것처럼 판독된 데이터 워드의 패리티와 그에 관련된 패리티 비트의 값과의 비교하여 이 비교에서 아무런 차이가 없다고 한 때 이후에 실행된 단계들과 관련하여 도 3에 도시된 실시예와 다를 뿐이다. 이 경우, 단계(L240)에서 먼저 데이터 워드가 판독된다. 그 다음, 단계(L242)에서 다른 데이터 워드가 메모리(100)로부터 판독된다. 단계(L244)에서, 단계(L242)에서 판독된 데이터 워드에 근거하여 서브 교정값이 계산된다. 단계(L245)에서, 메모리(100)로부터 교정값(140)이 판독되고 후속 단계(L246)에서 상기 단계(L244)에서 계산된 서브 교정값과 관련하여 링크되어, 상기 단계(L210)에서 초기에 판독된 데이터 워드의 서브 교정값을 형성한다. 단계(L270')에서, 이 서브 교정값이 분석된다. 이 분석에 따라 에러가 판단되면, 단계(L248)에서 멀티 비트 에러를 나타내는 알람 신호가 출력될 것이며, 본 발명의 판독 방법은 단계(L250'')에서 종료된다. 그러나, 단계(L247')에서 아무런 에러도 판단되지 않으면, 본 방법은 단계(L250')에서 즉시 종료될 것이다. 또한, 알람 신호는 실행된 공격의 징후로서 보안 요소에 의해 다시 평가될 수도 있으며, 예를 들면, 상기 언급한 보안 리셋, 감지 데이터 삭제, 개개 컴퍼넌트의 의도된 파괴 또는 다른 대응책과 같은 대응책이 마련되게 한다.
도 7에 도시된 실시예와 달리, 각각의 서브 교정값은 모든 데이터 워드(120-1, . . , 120-n)를 근거로 계산될 수 있으며, 서브 교정값들은 링크되어서 중간 교정값을 형성하고, 그 다음에는 데이터 블록(110)에 저장된 교정값과 비교된다. 이러한 비교에 근거하여, 단계(L248)에서 알람 신호가 출력되도록 메모리(100)가 공격을 받았는지에 대하여 또는 메모리(100)에 공격이 없었는지에 대하여 판단될 수 있다.
게다가, 도 6 및 도 7에 도시된 실시예들은 그러한 공격을 검사하는데 아무런 공격이 없다고 판단되면 사전결정된 데이터 워드만이 출력된다는 점에서 또한 변경될 수도 있다. 그러나, 도 6 및 도 7에 도시된 실시예들의 성취물인 판독 동작의 속도의 향상이 손실된다는 것은 이 해결책의 단점이다. 게다가, 이것은 교묘한 조작에 더욱 강하게 맞서는 보안 용도에서 데이터 블록(110)에 저장된 교정값(140)을 확장 또는 변경시키는데 적합한 것처럼 보인다. 대응하는 교정값(140)을 암호화하는 것과는 별개로, 가능한 교정에 필요한 에러 교정 코드에 대한 데이터 블록(110)로부터 유도된 일방 해시 함수 값에 의해 확장된 값을 교정값(140)으로서 저장하는 것 또한 가능하다. 함수 및/또는 알고리즘 MD2, MD5, (후속 버전을 포함하는) SHA 또는 RIPEMD-160은 이에 적합한 일방 해시 함수의 일예들이다.
이와 달리, 단계(L310)에서 교정을 실행한 이후, 도 3, 도 5, 도 6 및 도 7에 도시된 사전결정된 데이터 워드를 판독하는 본 발명의 방법의 실시예의 또 다른 가능한 구현으로서, 단계(L210 내지 L230)를 다시 진행함으로써 저장된 데이터 워드를 다시 검사하지 않고도, 사전결정된 데이터 워드가 교정되고 출력될 수 있다. 이것은 또한 단계(L310)에서 교정을 실행한 이후 데이터 워드를 출력하는 것 그리고 그 이후 메모리(100)에다 교정된 데이터 블록(110)을 저장만 하는 것도 가능하다.
데이터 워드의 같은 또는 다른 패리티를 나타내는 패리티 비트는 별개로 하고, 패리티 검사 시, 즉, 데이터 워드들의 세트된 비트의 개수가 같으냐 틀리냐를 검사할 때, 에러를 식별되게 하는 어떠한 다른 알고리즘이라도 에러 식별 알고리즘으로서 사용될 수 있다. 패리티 검사와 관련하여 패리티 비트를 사용하는 것은 이것이 대체로 매우 빠르게, 즉, 시스템의 한 클럭 내에 실행될 수 있기 때문에 특별한 장점이 있으며, 에러 식별값(130-1, . . . , 130-n)에 필요한 메모리 공간은 최소한도이다. 또한, 상이한 에러 교정 알고리즘 또는 교정 알고리즘이 사용될 수도 있다. U. Tietze 와 Ch. Schenk의 저서에서 설명된 해밍 코드는 일 예일 뿐이다.
원리적으로, 본 발명은 물론 판독 및 기록 엑세스를 허용하는 어느 메모리 유형에도 적용될 수도 있다. 예를 들면, 하드디스크 드라이브, 자기 테이프, CD-R, CD-RW, DVD+R, DVD-R, DVD+RW, DVD-RW 및 다른 광 메모리 매체와 같은 자기 및 광학 메모리 매체를 별개로 하고, 예를 들면, 모든 플래시 기반 제품과 같은 비휘발성 메모리(NVM) 유형, 및 RAM (랜덤 엑세스 메모리) 유형을 고려할 수 있다. 본 발명은 빠른 데이터 엑세스를 허용하게 될 메모리 유형과 관련하여 특별한 장점을 가지고 이용된다. 특히, 비휘발성 메모리 및 RAM 메모리 유형 뿐만 아니라 캐시 메모리는 이러한 메모리 유형 중에 속한다. 기본적으로, 데이터 블록을 저장하는 본 발명의 방법이 동작 중에 사용될 수 없고 또는 거의 사용될 수 없되 프로그래밍 및/또는 제조할 때만 사용될 수 있을지라도 본 발명을 ROM(판독 전용 메모리)에서 사용하는 것 또한 고려될 수 있다.
주변 상황에 따라서, 사전결정된 데이터 워드를 판독하는 본 발명의 방법 및 데이터 블록을 메모리에 저장하는 본 발명의 방법은 하드웨어 또는 소프트웨어에서 실시될 수 있다. 이러한 실시는 전자적으로 판독될 수 있는 제어 신호를 가지며 사전결정된 데이터 워드를 메모리로부터 판독하는 본 발명의 방법 또는 데이터 블록을 메모리에 저장하는 본 발명의 방법이 실행되도록 프로그램가능 컴퓨터 시스템과 협동하는 디지털 저장 매체, 특히 디스크, CD 또는 DVD 에서 이루어질 수도 있다. 일반적으로, 본 발명은 또한 컴퓨터 프로그램 제품이 컴퓨터에서 실행될 때 본 발명 방법들 중의 한 방법을 실행하기 위한 머신-판독가능 운반체 상에 저장된 프로그램 코드를 갖는 컴퓨터 프로그램 제품에 내장된다. 달리 말해서, 본 발명은 또한 컴퓨터 프로그램이 컴퓨터에서 실행될 때 방법들 중의 한 방법을 실행하기 위한 프로그램 코드를 갖는 컴퓨터 판독 가능한 기록 매체로서 실현될 수도 있다.
본 발명은 에러의 존재를 빨리 검사하는 것이 각 데이터 워드에 관련된 에러 식별값에 의거하여 가능하고, 한편 교정에 필요한 교정값이 전체 데이터 블록을 참조하고 그래서 교정값이 개개의 데이터 워드를 참조하는 경우 보다 작은 메모리 공간 요건을 갖는다는 특별한 장점이 있다. 이러한 근거는 데이터 블록이 복수의 데이터 워드를 포함한다는 것과 데이터 블록의 길이와 관련한 교정값의 메모리 요건이 데이터 블록의 길이가 증가함에 따라 감소한다는 것이다.
또한, 본 발명은 데이터 워드에 관련된 에러 식별값이 각기 정확하게 1 비트의 길이를 갖도록, 즉, 가능한 가장 작은 추가 메모리 소비를 필요로 하도록 한 것이 특별한 장점이다. 또한, 에러 식별값으로서 패리티 비트를 이용하는 것은, 즉 관련된 각각의 패리티 비트에 의거하여 개개 데이터 워드의 패리티를 검사하는 것은 메모리를 포함하는 시스템의 클럭 사이클에서 패리티 검사가 병행가능하기 때문에 에러의 검사를 매우 빠르게 해준다.
본 발명의 다른 장점은 교정값이 한편으로는 데이터 블록에서 1-비트 에러를 또는 다른 한편으로는 데이터 워드 또는 데이터워드 및 관련된 에러 식별값에서 어느 1-비트 에러를 교정하는데 사용될 수도 있다는 것이다. 메모리를 포함하는 시스템의 경계 조건에 따르면, 이것은 데이터 블록에서 또는 데이터 워드 및/또는 데이터 워드 및 관련된 에러 식별값에서 어느 1-비트 에러가 교정가능하도록 하는 교정값을 구현하는 더욱 큰 장점일 수 있다.
본 발명의 또 다른 장점은, 각각의 데이터 워드에 근거하여, 서브 교정값이 계산되고, 이로부터 그 다음에는 링킹 또는, 예를 들면, 비트-와이즈 XOR (배타 OR) 연산과 같은 연산을 적용함으로써 교정값이 생성되는 것을 데이터 블록이 포함하는 사실에 의거하여 교정값을 저장하는데 필요한 길이가 줄어든다는 것이다. 교정값 및 판독될 데이터 워드가 아닌 데이터 워드들로부터 계산된 서브 교정값에 근거하여 판독할 때 에러가 없다면, 교정이 실시된다는 것을 근거로 판독될 데이터 워드에 대하여 재구성된 서브 교정값이 판단된다. 이것은 교정값의 길이가 더이상 데이터 블록의 길이에 관련하지 않고 차라리 하나의 데이터 워드에만 관련하는 교정값의 길이에 대응한다는 점에서 특별한 장점이 있다. 교정값에 대한 메모리 요건은 사전결정된 데이터 워드의 빠른 판독 가능성을 방해하지 다시 줄일 수 있다.
그래서, 본 발명은 동시에 데이터 워드의 빠른 판독과 에러의 검사를 동시에 허용하는 동시에 교정에 필요한 교정값에 비교적 작은 메모리 공간을 요한다.

Claims (28)

  1. 사전결정된 데이터 워드를 포함하는 복수의 데이터 워드(120-1, . . ., 120-n), 상기 복수의 데이터 워드(120-1, . . ., 120-n)의 각 데이터 워드마다 각각 관련된 에러 식별값(130-1, . . . , 130-n) 및 데이터 블록(110)에 관련된 교정값(140)으로 나누어진 상기 데이터 블록(110)이 저장되어 있는 메모리(100)로부터 상기 사전결정된 데이터 워드를 판독하는 장치로서,
    상기 사전결정된 데이터 워드가 상기 관련된 에러 식별값과 사전결정된 관계를 갖는지를 검사하여 상기 사전결정된 관계가 존재하지 않으면 에러가 있다고 결론짓도록 구현된 에러 식별 수단(error identification means)(150)과,
    상기 사전결정된 데이터 워드가 상기 관련된 에러 식별값과 사전결정된 관계를 가지고 있지 않다면 상기 교정값(140)을 이용하여 상기 에러를 교정하도록 구현된 에러 교정 수단(error correction means)(160)을 포함하되,
    상기 에러 교정 수단(160)은 상기 복수의 데이터 워드(120-1, . . ., 120-n) 중 어느 데이터 워드가 상기 사전결정된 데이터 워드인지와는 무관하게, 에러 교정을 위해 상기 교정값(140)을 사용하도록 구현되는
    장치.
  2. 제 1 항에 있어서,
    상기 에러 교정 수단(160)은 상기 복수의 데이터 워드(120-1, . . ., 120-n) 중 어느 데이터 워드가 상기 사전결정된 데이터 워드인지와 무관하게 상기 에러를 교정하기 위하여 상기 교정값(140)을 전체로서 이용하도록 구현되는
    장치.
  3. 제 1 항에 있어서,
    상기 각 데이터 워드(120-1, . . ., 120-n)에 관련된 상기 에러 식별값(130-1, . . , 130-n)은 각기 정확히 1 비트의 길이를 갖는
    장치.
  4. 제 1 항에 있어서,
    상기 각 데이터 워드(120-1, . . ., 120-n)에 관련된 상기 에러 식별값(130-1, . . , 130-n)은 패리티 비트(parity bit)이며, 상기 에러 식별 수단(150)은 상기 사전결정된 관계가 상기 각 데이터 워드(120-1, . . ., 120-n)의 패리티 및 상기 관련된 패리티 비트(130-1, . . . , 130-n)의 값이 서로 사전결정된 제2의 관계를 가지도록 구현되는
    장치.
  5. 제 1 항에 있어서,
    상기 에러 식별 수단(160)은 상기 교정값(140)에 근거하여 상기 데이터 블록(110) 내 어느 1-비트 에러라도 교정하도록 구현되는
    장치.
  6. 제 1 항에 있어서,
    상기 에러 식별 수단(160)은 상기 사전결정된 데이터 워드에서 또는 상기 사전결정된 데이터 워드 및 상기 관련된 에러 식별값에서 어느 1-비트 에러라도 교정하도록 구현되는
    장치.
  7. 제 6 항에 있어서,
    상기 에러 식별 수단은, 상기 사전결정된 데이터 워드가 상기 관련된 에러 식별값과 상기 사전결정된 관계를 갖지 않는 경우에, 상기 사전결정된 데이터 워드가 아닌 상기 복수의 데이터 워드(120-1, . . ., 120-n)로부터의 각각의 데이터 워드에 근거하여 서브 교정값을 계산하고, 상기 서브 교정값을 링크시켜 중간 교정값을 구하고, 상기 중간 교정값과 상기 교정값(140)에 근거하여 상기 사전결정된 데이터 워드에 대하여 재구성된 서브 교정값을 결정하고, 상기 재구성된 서브 교정값에 근거하여 상기 사전결정된 데이터 워드 및 상기 관련된 에러 식별값을 교정하도록 구현되는
    장치.
  8. 제 7 항에 있어서,
    상기 에러 교정 수단(160)은, 상기 서브 교정값을 계산할 때, 상기 데이터 워드(120-1, . . ., 120-n) 및 상기 관련된 에러 식별값(130-1, . . , 130-n)에 근거하여 처음 계산을 실행하여 상기 서브 교정값을 구하도록 구현되는
    장치.
  9. 제 7 항에 있어서,
    상기 에러 교정 수단(160)은, 서브 교정값을 링크하여 상기 중간 교정값을 형성할 때 또는 상기 중간 교정값 및 상기 교정값(140)에 근거하여 상기 재구성된 서브 교정값을 결정할 때, 상기 서브 교정값을 XOR 연산을 통해 비트별로 링크하도록 구현되는
    장치.
  10. 제 1 항에 있어서,
    상기 교정값(140)은 1-비트 에러를 교정하기에 충분한 최소 길이를 갖는
    장치.
  11. 제 1 항에 있어서,
    상기 에러 식별 수단은,
    만약 상기 사전결정된 데이터 워드가 상기 관련된 에러 식별값과 사전결정된 관계를 가진다면, 식별되지 않은 에러를 찾기 위해, 상기 관련된 에러 식별값과 함께 또는 상기 관련된 에러 식별값 없이, 상기 교정값(140)을 이용하여 상기 데이터 블록(110) 또는 상기 사전결정된 데이터 워드를 검사하고, 만약 식별되지 않은 에러가 존재한다면 알람 신호를 출력하도록 더 구현되는
    장치.
  12. 복수의 데이터 워드(120-1, . . ., 120-n)로 된 데이터 블록(110)을 메모리(100)에 저장하는 장치로서,
    상기 복수의 데이터 워드(120-1, . . ., 120-n)의 매 데이터 워드마다 상기 각각의 데이터 워드와 사전결정된 관계를 갖는 에러 식별값(130-1, . . . , 130-n)을 발생하도록 구현된 에러 식별값 생성 수단과,
    상기 데이터 워드들 중 어느 것이 상기 사전결정된 데이터 워드에 대응한다는 것에 무관하게, 사전결정된 데이터 워드와 상기 관련된 에러 식별값과의 상기 사전결정된 관계가 존재하지 않는 것으로 결론짓는 에러를 교정가능하게 해주는 교정값(140)을 상기 데이터 블록(110)에서 생성하도록 구현된 에러 교정값 생성 수단을 포함하는
    장치.
  13. 제 12 항에 있어서,
    상기 에러 식별값 생성 수단은 각기 정확하게 1 비트의 길이를 갖는 에러 식별값(130-1, . . ., 130-n)를 생성하도록 구현되는
    장치.
  14. 제 12 항에 있어서,
    상기 에러 식별값 생성 수단은 패리티 비트를 에러 식별값(130-1, . . ., 130-n)으로서 생성하도록 구현되며, 상기 사전결정된 관계는 복수의 데이터 워드 및 상기 관련된 패리티 비트의 값이 사전결정된 제2의 관계를 갖는 것인
    장치.
  15. 제 12 항에 있어서,
    상기 에러 교정값 생성 수단은 상기 데이터 블록(110) 내 어느 1-비트 에러라도 교정되게 하는 교정값(140)을 생성하도록 구현되는
    장치.
  16. 제 12 항에 있어서,
    상기 에러 교정값 생성 수단은 상기 사전결정된 데이터 워드에서 또는 상기 사전결정된 데이터 워드 및 상기 관련된 에러 식별값에서 어느 1-비트 에러라도 교정되게 하는 교정값(140)을 생성하도록 구현되는
    장치.
  17. 제 12 항에 있어서,
    상기 에러 교정값 생성 수단은 1-비트 에러를 교정하기에 충분한 최소 길이를 갖는 교정값(140)을 생성하도록 구현되는
    장치.
  18. 제 12 항에 있어서,
    상기 에러 교정값 생성 수단은 상기 복수의 데이터 워드(120-1, . . ., 120-n)의 각각의 데이터 워드에 근거하여 서브 교정값을 계산하고, 상기 서브 교정값을 링크시켜 상기 교정값을 구하도록 구현되는
    장치.
  19. 제 18 항에 있어서,
    상기 에러 교정값 생성 수단은, 상기 서브 교정값을 계산할 때, 상기 데이터 워드 및 상기 관련된 에러 식별값에 근거하여 처음 계산을 실행하여 상기 서브 교정값을 구하도록 구현되는
    장치.
  20. 제 18 항에 있어서,
    상기 에러 교정값 생성 수단은, 상기 서브 교정값을 링크할 때, 상기 서브 교정값을 XOR 연산에 의해 서로 비트별로 링크시키도록 구현되는
    장치.
  21. 제 12 항에 있어서,
    상기 에러 교정값 생성 수단은 1-비트 에러를 교정하기에 충분한 최소 길이의 교정값(140)을 생성하도록 구현되는
    장치.
  22. 사전결정된 데이터 워드를 포함하는 복수의 데이터 워드(120-1, . . ., 120-n), 상기 복수의 데이터 워드(120-1, . . ., 120-n)의 각 데이터 워드마다 각각 관련된 에러 식별값(130-1, . . . , 130-n) 및 데이터 블록(110)에 관련된 교정값(140)으로 나누어진 상기 데이터 블록(110)이 저장되어 있는 메모리(100)로부터 상기 사전결정된 데이터 워드를 판독하는 방법으로서,
    상기 사전결정된 데이터 워드가 그에 관련된 에러 식별값과 사전결정된 관계를 갖는지를 검사하여 상기 사전결정된 관계가 존재하지 않으면 에러가 있다고 결론짓는 단계(L230)와,
    상기 사전결정된 데이터 워드가 상기 관련된 에러 식별값과 사전결정된 관계를 갖고 있지 않다면 상기 교정값(140)을 이용하여 상기 에러를 교정하는 단계(L310)를 포함하며,
    상기 교정 단계(L310)에서, 상기 교정값(140)은 상기 복수의 데이터 워드(120-1, . . ., 120-n)중의 어느 데이터 워드가 상기 사전결정된 데이터 워드인 것과 무관하게 에러 교정을 위하여 사용되는
    방법.
  23. 복수의 데이터 워드(120-1, . . ., 120-n)로 된 데이터 블록(110)을 메모리(100)에 저장하는 방법으로서,
    상기 복수의 데이터 워드(120-1, . . ., 120-n)의 데이터 워드마다 상기 각각의 데이터 워드와 사전결정된 관계를 가지는 에러 식별값(130-1, . . . , 130-n)을 생성하는 단계(S220)와,
    상기 복수의 데이터 워드(120-1, . . ., 120-n)의 상기 데이터 워드들이 상기 사전결정된 데이터 워드에 대응한다는 것과 무관하게, 사전결정된 데이터 워드와 상기 관련된 에러 식별값과의 사이에서 상기 사전결정된 관계가 존재하지 않는 것으로 결론짓는 에러를 교정가능하게 해주는 교정값(140)을 생성하는 단계(S240; S240')를 포함하는
    방법.
  24. 사전결정된 데이터 워드를 포함하는 복수의 데이터 워드(120-1, . . ., 120-n), 상기 복수의 데이터 워드(120-1, . . ., 120-n)의 각 데이터 워드마다 각각 관련되어 있되 상기 각 데이터 워드의 교정을 허용하지 않는 에러 식별값(130-1, . . . , 130-n) 및 데이터 블록(110)에 관련된 교정값(140)으로 나누어진 상기 데이터 블록(110)이 저장되어 있는 메모리(100)로부터 상기 사전결정된 데이터 워드를 판독하는 장치로서,
    상기 사전결정된 데이터 워드가 상기 관련된 에러 식별값과 사전결정된 관계를 갖는지를 검사하여 상기 사전결정된 관계가 존재하지 않으면 에러가 있다고 결론짓도록 구현된 에러 식별 수단(150)과,
    상기 사전결정된 데이터 워드가 상기 관련된 에러 식별값과 사전결정된 관계를 갖지 않으면 상기 교정값(140)을 이용하여 상기 에러를 교정하도록 구현된 에러 교정 수단(160)을 포함하며,
    상기 에러 교정 수단(160)은 상기 복수의 데이터 워드(120-1, . . ., 120-n)중의 어느 데이터 워드가 상기 사전결정된 데이터 워드인 것에 무관하게 에러 교정을 위하여 상기 교정값(140)을 이용하도록 구현되는
    장치.
  25. 복수의 데이터 워드(120-1, . . ., 120-n)로 된 데이터 블록(110)을 메모리(100)에 저장하는 장치로서,
    상기 복수의 데이터 워드(120-1, . . ., 120-n)의 데이터 워드마다 상기 각각의 데이터 워드와 사전결정된 관계를 갖되, 상기 각각의 데이터 워드를 교정되지 않게 하는 에러 식별값(130-1, . . . , 130-n)을 생성하도록 구현된 에러 식별값 생성 수단과,
    상기 데이터 워드들 중의 어느것이 상기 사전결정된 데이터 워드에 대응하는 것과 무관하게, 사전결정된 데이터 워드와 상기 관련된 에러 식별값과의 사이에서 상기 사전결정된 관계가 존재하지 않는 것으로 결론짓는 에러를 교정가능하게 해주는 교정값(140)을 상기 데이터 블록(110)에서 생성하도록 구현된 에러 교정값 생성 수단을 포함하는
    장치.
  26. 사전결정된 데이터 워드를 포함하는 복수의 데이터 워드(120-1, . . ., 120-n), 상기 복수의 데이터 워드(120-1, . . ., 120-n)의 각 데이터 워드마다 각각 관련되어 있되 상기 각 데이터 워드의 교정을 허용하지 않는 에러 식별값(130-1, . . . , 130-n) 및 데이터 블록(110)에 관련된 교정값(140)으로 나누어진 상기 데이터 블록(110)이 저장되어 있는 메모리(100)로부터 상기 사전결정된 데이터 워드를 판독하는 방법으로서,
    상기 사전결정된 데이터 워드가 상기 관련된 에러 식별값과 사전결정된 관계를 갖는지를 검사하여 상기 사전결정된 관계가 존재하지 않으면 에러가 있다고 결론짓는 단계(L230)와,
    상기 사전결정된 데이터 워드가 상기 관련된 에러 식별값과 사전결정된 관계를 갖지 않으면 상기 교정값(140)을 이용하여 상기 에러를 교정하는 단계(L310)를 포함하며,
    상기 교정 단계(L310)에서, 상기 교정값(140)은 상기 복수의 데이터 워드(120-1, . . ., 120-n) 중의 어느 데이터 워드가 상기 사전결정된 데이터 워드인 것과 무관하게 에러 교정을 위하여 사용되는
    방법.
  27. 복수의 데이터 워드(120-1, . . ., 120-n)로 된 데이터 블록(110)을 메모리(100)에 저장하는 방법으로서,
    상기 복수의 데이터 워드(120-1, . . ., 120-n)의 데이터 워드마다 상기 각각의 데이터 워드와 사전결정된 관계를 갖되, 상기 각각의 데이터 워드의 교정을 허용하지 않는 에러 식별값(130-1, . . . , 130-n)을 생성하는 단계(S220)와,
    사전결정된 데이터 워드와 상기 관련된 에러 식별값과의 사이에서 상기 사전결정된 관계가 존재하지 않는 것으로 결론짓는 에러를, 상기 복수의 데이터 워드(120-1, . . ., 120-n)의 상기 데이터 워드들 중 어느 것이 상기 사전결정된 데이터 워드에 대응하는 것과 무관하게 교정가능하게 해 주는 교정값(140)을 생성하는 단계(S240; S240')를 포함하는
    방법.
  28. 제 22 항, 제 23 항, 제 26 항 또는 제 27 항 중 어느 한 항에 따른 방법의 각각의 단계를 수행하는 컴퓨터 프로그램 코드를 포함하는
    컴퓨터 판독 가능한 기록 매체.
KR1020070007117A 2006-01-23 2007-01-23 데이터 워드를 판독하는 장치 및 방법과 데이터 블록을 저장하는 장치 및 방법, 컴퓨터 판독 가능한 기록 매체 KR100870196B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
DE102006003146.6A DE102006003146B4 (de) 2006-01-23 2006-01-23 Vorrichtung und Verfahren zum Auslesen eines Datenwortes und Vorrichtung und Verfahren zum Speichern eines Datenblocks
DE102006003146.6 2006-01-23

Publications (2)

Publication Number Publication Date
KR20070077466A KR20070077466A (ko) 2007-07-26
KR100870196B1 true KR100870196B1 (ko) 2008-11-24

Family

ID=38268071

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020070007117A KR100870196B1 (ko) 2006-01-23 2007-01-23 데이터 워드를 판독하는 장치 및 방법과 데이터 블록을 저장하는 장치 및 방법, 컴퓨터 판독 가능한 기록 매체

Country Status (4)

Country Link
US (1) US7937639B2 (ko)
KR (1) KR100870196B1 (ko)
DE (1) DE102006003146B4 (ko)
FR (1) FR2911414B1 (ko)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20090014828A (ko) * 2007-08-07 2009-02-11 삼성전자주식회사 에러 정정 코드를 암호화하는 플래시 메모리 시스템 및플래시 메모리 시스템의 암호화 방법
US8832518B2 (en) * 2008-02-21 2014-09-09 Ramot At Tel Aviv University Ltd. Method and device for multi phase error-correction
US8458562B1 (en) 2008-12-30 2013-06-04 Micron Technology, Inc. Secondary memory element for non-volatile memory
US8504893B1 (en) * 2010-09-30 2013-08-06 Micron Technology, Inc. Error detection or correction of a portion of a codeword in a memory device
US8533557B2 (en) 2011-01-28 2013-09-10 Infineon Technologies Ag Device and method for error correction and protection against data corruption
DE102012020442B4 (de) * 2012-10-18 2020-03-05 Robert Bosch Gmbh Verfahren zum Überprüfen von Daten mittels wenigstens zweier Prüfsummen
US20140215174A1 (en) 2013-01-25 2014-07-31 Infineon Technologies Ag Accessing Memory with Security Functionality
US10930650B2 (en) * 2018-06-28 2021-02-23 Stmicroelectronics International N.V. Latch-up immunization techniques for integrated circuits
US11475170B2 (en) 2019-05-28 2022-10-18 Nuvoton Technology Corporation System and method for correction of memory errors
US11342044B2 (en) 2019-05-28 2022-05-24 Nuvoton Technology Corporation System and method for prioritization of bit error correction attempts
US11694761B2 (en) * 2021-09-17 2023-07-04 Nxp B.V. Method to increase the usable word width of a memory providing an error correction scheme

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4236247A (en) * 1979-01-15 1980-11-25 Organisation Europeene De Recherches Spatiales Apparatus for correcting multiple errors in data words read from a memory
US4319357A (en) * 1979-12-14 1982-03-09 International Business Machines Corp. Double error correction using single error correcting code
US4561095A (en) * 1982-07-19 1985-12-24 Fairchild Camera & Instrument Corporation High-speed error correcting random access memory system
WO1991019253A1 (en) 1990-06-08 1991-12-12 Unisys Corporation Multiple error correction in a computer memory

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2659460B1 (fr) * 1990-03-08 1992-05-22 Bull Sa Sous-systeme peripherique de memoire de masse.
KR970071492A (ko) * 1996-04-15 1997-11-07 김광호 씨디-롬 드라이브 테스트 방법
JP3527873B2 (ja) * 1999-09-03 2004-05-17 松下電器産業株式会社 誤り訂正装置
WO2001039190A1 (fr) * 1999-11-25 2001-05-31 Fujitsu Limited Procede de lecture d'un support de donnees, dispositif de stockage de donnees, procede de reproduction de donnees, systeme de reproduction de donnees et support de donnees utilise a cet effet
US7231585B2 (en) * 2002-12-11 2007-06-12 Nvidia Corporation Error correction for flash memory

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4236247A (en) * 1979-01-15 1980-11-25 Organisation Europeene De Recherches Spatiales Apparatus for correcting multiple errors in data words read from a memory
US4319357A (en) * 1979-12-14 1982-03-09 International Business Machines Corp. Double error correction using single error correcting code
US4561095A (en) * 1982-07-19 1985-12-24 Fairchild Camera & Instrument Corporation High-speed error correcting random access memory system
WO1991019253A1 (en) 1990-06-08 1991-12-12 Unisys Corporation Multiple error correction in a computer memory

Also Published As

Publication number Publication date
US7937639B2 (en) 2011-05-03
FR2911414B1 (fr) 2013-03-29
US20070174753A1 (en) 2007-07-26
FR2911414A1 (fr) 2008-07-18
DE102006003146B4 (de) 2016-05-12
KR20070077466A (ko) 2007-07-26
DE102006003146A1 (de) 2007-08-02

Similar Documents

Publication Publication Date Title
KR100870196B1 (ko) 데이터 워드를 판독하는 장치 및 방법과 데이터 블록을 저장하는 장치 및 방법, 컴퓨터 판독 가능한 기록 매체
US10019312B2 (en) Error monitoring of a memory device containing embedded error correction
KR101750662B1 (ko) 데이터 에러 교정용 회로, 장치, 및 방법
US9940457B2 (en) Detecting a cryogenic attack on a memory device with embedded error correction
US8627169B2 (en) Method and apparatus for dynamically configurable multi level error correction
US7353438B2 (en) Transparent error correcting memory
US7810016B2 (en) Semiconductor storage device equipped with ECC function
US7398449B1 (en) Encoding 64-bit data nibble error correct and cyclic-redundancy code (CRC) address error detect for use on a 76-bit memory module
KR100833600B1 (ko) 에러 정정 회로, 그 방법 및 상기 회로를 구비하는 반도체메모리 장치
JP3234130B2 (ja) 誤り訂正符号復号化方法およびこの方法を用いる回路
US10467091B2 (en) Memory module, memory system including the same, and error correcting method thereof
US9208027B2 (en) Address error detection
KR20180080683A (ko) 메모리 내 에러 수정 방법
KR101486424B1 (ko) 에러 정정 회로, 에러 정정 회로를 구비하는 플래시 메모리시스템 및 에러 정정 회로의 동작 방법
US9189327B2 (en) Error-correcting code distribution for memory systems
CN112992249B (zh) 用于验证暂存器内容完整性的系统及其方法
US20050289409A1 (en) Parallel data bus
US20220413959A1 (en) Systems and methods for multi-use error correcting codes
JP2012003569A (ja) メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
CN111752747A (zh) 一种增强检错能力的内存安全校验方法
WO2020242621A1 (en) Error detection and correction with integrity checking
JP7160860B2 (ja) メモリエラーを訂正するためのシステム及び方法
JP4159896B2 (ja) 連想メモリ
JP2010067219A (ja) 半導体装置

Legal Events

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

Payment date: 20121109

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20131108

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20141112

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20151106

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20161111

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20171110

Year of fee payment: 10

FPAY Annual fee payment

Payment date: 20181113

Year of fee payment: 11