KR100327653B1 - 데이터 저장 장치용 순환 중복 검사 정보의 갱신 방법 및장치 - Google Patents

데이터 저장 장치용 순환 중복 검사 정보의 갱신 방법 및장치 Download PDF

Info

Publication number
KR100327653B1
KR100327653B1 KR1020000010355A KR20000010355A KR100327653B1 KR 100327653 B1 KR100327653 B1 KR 100327653B1 KR 1020000010355 A KR1020000010355 A KR 1020000010355A KR 20000010355 A KR20000010355 A KR 20000010355A KR 100327653 B1 KR100327653 B1 KR 100327653B1
Authority
KR
South Korea
Prior art keywords
crc
reed
data
solomon
root
Prior art date
Application number
KR1020000010355A
Other languages
English (en)
Other versions
KR20000076757A (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 KR20000076757A publication Critical patent/KR20000076757A/ko
Application granted granted Critical
Publication of KR100327653B1 publication Critical patent/KR100327653B1/ko

Links

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/09Error detection only, e.g. using cyclic redundancy check [CRC] codes or single parity bit
    • H03M13/093CRC update after modification of the information word
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/13Linear codes
    • H03M13/15Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
    • H03M13/151Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
    • H03M13/1515Reed-Solomon 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
    • 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/2903Methods and arrangements specifically for encoding, e.g. parallel encoding of a plurality of constituent 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/2927Decoding strategies

Landscapes

  • Physics & Mathematics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Algebra (AREA)
  • General Physics & Mathematics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Detection And Correction Of Errors (AREA)
  • Error Detection And Correction (AREA)
  • Detection And Prevention Of Errors In Transmission (AREA)

Abstract

본 발명은 데이터 교정 체계가 최소한 오류의 일부를 교정하지 못하거나 추가의 오류를 부가해버린 경우, 잔존하는 오류를 검출할 수 있는 데이터 무결성을 보장하는 방법 및 장치에 관한 것이다. 리드-솔로몬 검사 기호는 오류 교정에 이용되고, 순환 중복 검사(cyclic redundancy check; CRC) 기호는 잔존하는 오류를 검출하기 위해 이용된다. 리드-솔로몬 검사 기호 및 CRC 기호를 생성하는 데 이용되는 생성 다항식의 근은 복수 개의 조건 중의 선택된 부집합(副集合)을 충족시킨다. 근을 더 선택하여 2의 거듭제곱에 의한 지수화와 승산의 조합에 의하여 필요한 지수화를 수행하도록 하여도 좋다. 리드-솔로몬 검사 기호는 데이터 블록의 데이터부에 기초하여 생성된다. 결정적으로 변경된 데이터 스트림은 데이터 블록의 데이터부에 기초하여 생성되고, CRC 기호는 결정적으로 변경된 데이터 스트림에 기초하여 생성된다. 결정적으로 변경된 데이터 스트림은 리드-솔로몬 부호어 내의 기호의 위치에 기초하여 데이터부의 기호에 대한 연산을 수행하여 생성된다.

Description

데이터 저장 장치용 순환 중복 검사 정보의 갱신 방법 및 장치{METHOD AND APPARATUS FOR UPDATING CYCLIC REDUNDANCY CHECK INFORMATION FOR DATA STORAGE}
본 발명은 전송 데이터 또는 기억 데이터의 무결성(integrity)의 보장에 관한 것이며, 특히 리드-솔로몬(Reed-Solomon; RS) 부호화 방식으로 교정된 데이터의 오류를 CRC 데이터를 이용하여 검출하는 것에 관한 것이다.
디지털 데이터의 전송에서 주요 관심사는 데이터의 무결성이다. 데이터는 컴퓨터의 메모리에서 처리기로 전송될 수 있고, LAN(local area network)이나 전화선을 통해 한 컴퓨터로부터 다른 컴퓨터로 전송될 수 있으며, 우주선에서 지구로 또는 기억 매체(storage media)로부터 기억 장치 제어기(storage controller)로 전송될 수 있다. 데이터 전송의 각 형식에는 데이터 무결성에 대한 그 자체의 특별한 조건이 있는데, 이 요건은 전송 매체의 고유 신뢰도(inherent reliability) 및 오류의 영향과 같은 인자에 좌우된다.
몇 가지 응용에 있어서는, 간단한 패리티 검사(parity check)가 데이터 무결성을 보장하기에 충분하다고 간주되며, 데이터는 오류가 검출되면 단순히 재전송(re-send)되거나 재판독(re-read)된다. 다른 응용에 있어서는, 데이터 무결성을 보장하기 위해, 전송 오류를 검출할 뿐만 아니라 이를 교정할 능력을 포함하는 더욱 정교한 체계(scheme)가 이용된다. 기억 매체와 같은 응용에 있어서, 정보 기억 장치의 밀도가 높아지면 데이터 무결성을 위해 향상된 체계를 이용할 필요가 있다.
데이터 무결성을 보장하기 위한 일반적인 체계는 리드-솔로몬 부호화이다.리드 솔로몬 부호화는 오류 검출뿐만 아니라 오류 교정을 제공한다. 그러나, 리드-솔로몬 부호화는 모든 오류를 교정할 수 없다는 한계가 있다. 더욱이, 리드-솔로몬 부호화에는 오교정(miscorrection)이라고 부르는 문제가 발생한다. 오교정이 발생하면, 오류 교정 체계는 최소한 어떤 오류를 교정하지 못하거나, 추가의 오류를 부가하고, 모든 오류가 교정되었다고 잘못 나타낸다. 데이터에 오류가 있어도 여전히 이 데이터는 무결한 상태라고 나타난다. 이것은 데이터 무결성 체계에 대해 허용될 수 없는 것이다. 오교정이 발생했을 경우, 오류가 남아있는 지를 알아낼 수 있는 데이터 무결성 체계가 필요하다.
본 발명의 목적은 데이터 교정 체계가 최소한 일부의 오류 교정을 올바르게 못했거나 추가의 오류를 부가해버린 경우, 잔존하는 오류를 검출할 수 있는 데이터 의 무결성을 보장하는 방법 및 장치를 제공하는 것이다.
도 1a는 데이터 기억 시스템 또는 전송 시스템의 일례에 대한 데이터 흐름도.
도 1b는 본 발명에 따른 데이터 기억 시스템의 일례에 대한 블록도.
도 1c는 도 1b에 도시된 복호기(decoder)의 더욱 상세한 블록도.
도 2a는 본 발명에 따르며 도 1b의 기억 시스템에 구현된 데이터 복호 처리에 대한 데이터 흐름도.
도 2b는 도 2a의 단계(206)의 더욱 상세한 데이터 흐름도.
도 3a는 본 발명에 따른 부호화 체계(encoding scheme)의 실시예에 대한 예시 블록도.
도 3b는 본 발명에 따른 부호화 체계의 다른 실시예에 대한 예시 블록도.
도 4는 도 1b에 도시된 기억 시스템에 구현된 부호화 처리에 대한 블록도.
도 5는 순환 중복 검사(cyclic redundancy check; 이하 CRC라 부름) 생성 다항식(generator polynomial)의 근(根)을 생성하는 처리에 대한 흐름도.
도 6은 본 발명에 따른 부호기의 예시 블록도.
본 발명의 구조 및 동작에 대한 상세 내용은 동일한 요소에 대해서는 동일한 참조 부호 및 지시어를 사용한 첨부 도면을 참조하면 가장 잘 이해할 수 있다.
본 발명은 데이터 교정 체계가 최소한 일부의 오류를 교정하는 데 실패했거나 추가의 오류를 부가한 경우, 잔존하는 오류를 검출할 수 있는 데이터의 무결성을 보장하는 방법 및 장치에 관한 것이다. 처리될 데이터 블록이 수신된다. 데이터 블록은 데이터부, CRC 기호(symbol), 리드-솔로몬 검사 기호로 구성되고 적어도 하나의 오류를 포함한다. CRC 기호는 복수 개의 근(根)을 갖는 CRC 생성다항식(generator polynomial)에 의해 생성된다. 리드-솔로몬 검사 기호는 복수 개의 근을 갖는 생성 다항식을 이용하여 생성한다. 수신된 데이터 블록에 대하여 적어도 하나의 CRC 신드롬(syndrome)을 CRC 생성 다항식을 이용하여 생성한다. 데이터 블록 내의 오류를 교정하려는 시도가 수행된다. CRC 신드롬은 교정된 데이터 블록에 대응하여 갱신되고, 갱신된 CRC 신드롬을 이용하여 오류가 교정되었는지를 결정한다.
CRC 생성 다항식의 근은 다음 조건을 만족한다.
1) 근의 지수(指數)는 각각 별개의 값이거나 모든 값을 기초 유한체(underlying finite filed)의 순환 길이의 각 소인수로 모듈로(modulo) 연산한 값이다.
2) 근은 리드-솔로몬 생성 다항식의 근과 중복(overlap)되지 않는다.
3) 적어도 하나의 근은 유한체의 원시 원소(primitive element)이다.
그 밖에, 본 발명의 한 가지 실시예에서, CRC 생성 다항식의 근은 다음의 조건을 더 만족한다.
4) 어떤 근도 임의의 다른 근의 2의 거듭제곱이 아니다
5) 근은 리드-솔로몬 생성 다항식의 임의의 근의 2의 임의의 거듭제곱과 중복되지 않는다.
CRC 신드롬을 갱신하려면, 수신 데이터 내의 오류의 위치와 크기를 리드-솔로몬 오류 교정 데이터를 이용하여 결정한다. 수신 데이터 내의 오류의 위치를 CRC 오류 검출 데이터 내의 위치로 변환한다. 변환된 오류 위치를 CRC 다항식의 근에의해 지수화(指數化)하고, 이 값에 오류 값을 곱한 다음 CRC 신드롬을 더한다.
2 제곱 및 승산에 의한 지수화의 조합에 의해 지수화를 수행할 수 있도록 근을 더 선택한다.
리드-솔로몬 검사 기호는 데이터 블록의 데이터부에 기초하여 생성된다. 본 발명의 한 가지 실시예에서, 결정적으로 변경된 데이터 스트림은 데이터 블록의 데이터부에 기초하여 생성되고, CRC 기호는 결정적으로 변경된 데이터 스트림에 기초하여 생성된다. 결정적으로 변경된 데이터 스트림은 데이터부의 기호에 대하여 리드-솔로몬 부호어(codeword) 내의 그 기호의 위치에 기초한 연산을 수행하여 생성한다.
도 1a에 예시적인 데이터 기억 시스템 또는 데이터 전송 시스템을 도시하였다. 입력 데이터(102)가 수신되고 부호화 블록(104)에서 부호화 된다. 부호화 처리의 일부로서, 데이터 무결성 정보가 생성되고 부호화 데이터(encoded data)(106)에 포함된다. 그 다음, 부호화 데이터는 전송 매체(108)를 거쳐 전송되거나 기억 매체(108)에 기억된다. 통상적인 전송 매체는 무선 주파수(radio frequency) 전송, 동축 케이블 및 광섬유 케이블 등이다. 통상적인 기억 매체는 자기 디스크, 자기 테이프, 광 디스크 및 광자기(magneto-optic) 디스크 등이다. 데이터는 전송 매체로부터 수신되거나 기억 매체로부터 판독된다. 수신 데이터 또는 판독 데이터(110)는 복호화 블록(112)에서 복호된다. 복호 처리의 일부로서, 수신 데이터 또는 판독 데이터의 데이터 무결성이 판단된다. 데이터 무결성 정보는 수신/판독 데이터 내에 오류가 발생했는지를 검출하는 데 이용되며, 그러한 오류의 일부 또는 전부를 교정하는 데 이용될 수도 있다. 오류가 발생하지 않았더라도, 데이터의 무결성은 계속 확인될 수 있으며, 이로 인하여 시스템은 수신/판독 데이터가 오류가 없음을 알 수 있다. 그 다음, 복호 데이터는 출력 데이터(114)로서 시스템에서 출력되는데, 이것은 입력 데이터(102)와 동일하다.
도 1b에 예시적인 데이터 기억 시스템(120)이 도시되었다. 기억 시스템(120)은, 예컨대 자기 디스크 드라이브, 광 디스크 드라이브, 광자기 디스크 드라이브 또는 테이프 드라이브일 수 있다. 양호한 실시예에 있어서, 기억 시스템(120)은 자기 하드 디스크 드라이브이다. 기억 시스템(120)은 호스트(122)와 연결되며, 통상적으로 호스트는 단독으로 실행되거나 다른 컴퓨터 시스템과 연결된 컴퓨터 시스템이다. 기억 시스템(120)은 처리기(124), 버퍼 메모리(126), 부호기(128), 복호기(130) 및 기억 매체(132)를 포함한다. 처리기(124)는 기억 시스템(120)의 다른 구성 장치의 동작뿐만 아니라 호스트(122)와의 인터페이스도 제어한다. 처리기(124)는 통상적으로 마이크로프로세서 및 부가되는 논리 회로를 포함하는데, 통상적으로 하나 이상의 표준형 집적 회로 또는 주문형 집적 회로(application specific integrated circuit; ASIC)를 포함한다. 대안으로서, 처리기(124)는 마이크로프로세서를 포함하지 않고 전체를 이산(discrete) 논리 회로 또는 집적 논리 회로로 구성될 수 있다. 버퍼 메모리(126)는 데이터가 기억 매체(132)에 기록되기 전과 기억 매체로부터 데이터가 판독된 후에 데이터를 저장한다. 버퍼 메모리(126)는 통상적으로 반도체 RAM(random-access memory)이다. 부호기(128)는 부호화(encoding)를 수행하고 기억 매체(132)에 기록된 데이터의 데이터 무결성 정보를 생성한다. 복호기(130)는 메모리 버퍼(126)에 저장된 데이터를 갱신하는 오류 교정뿐만 아니라 데이터 무결성의 확인 및 기억 매체(132)로부터 판독된 데이터의 오류 교정을 수행한다. 통상적으로, 부호기(128) 및 복호기(130)는 속도 요건에 기인하여 하드웨어 논리 회로로 구현된다. 그러나, 그 대신에 소프트웨어에 기초한 부호화, 복호 및 확인이 수행될 수도 있다. 기억 매체(132)로서는, 예컨대 자기 디스크 또는 테이프, 광 디스크, 광자기 디스크 등이 있다.
양호한 실시예에 있어서, 기억 시스템(120)은 자기 하드 디스크 드라이브이고, 기억 매체(132)는 이동 가능한 판독/기록 헤드와 연관 회로에 의해 접근되는, 자성 물질이 코팅된 하나 이상의 회전형 경질(硬質) 디스크이다. 이러한 기억 매체에서, 데이터는 통상적으로 각 디스크 표면의 동심형 트랙에 배열된다. 각 트랙 내에서, 데이터는 통상적으로 각각 데이터 블록을 수용하는 복수 개의 섹터에 배열된다.
블록으로 데이터가 전송되는 경우, 오류 검출을 위해서는 CRC가 흔히 이용된다. CRC는 전송하기 전에 부가 정보(extra information) 기호, 중복 기호 또는 검사 기호를 데이터 블록에 부가하고, 수신할 때 부가 정보를 검사하여 이루어진다. 이 부가 정보는 통상적으로 보호될 정보에 비해 매우 적기 때문에 이 코드는 상당한 효율성이 있다.
도 1b에 도시된 데이터 복호기(130)는 도 1c에 더욱 자세히 도시되어 있다. 복호기(130)는 CRC 신드롬 생성기(150), CRC 신드롬 갱신 블록(152), 리드-솔로몬(RS) 신드롬 생성기(154), RS 복호기(156) 및 버퍼 갱신 논리(158)를포함한다. 판독 데이터(106)는 버퍼 메모리(126), CRC 신드롬 생성기, 및 RS 신드롬 생성기(154)에 입력된다. CRC 신드롬 생성기(150) 및 RS 신드롬 생성기(154)는 각각 입력 데이터에 기초하여 CRC 신드롬 및 RS 신드롬을 생성한다. RS 복호기(156)는 판독 데이터를 복호하고 RS 신드롬 생성기(154)로부터의 RS 신드롬에 의해 나타나는 여하한 오류를 교정하려고 한다. RS 복호기(156)는 버퍼 갱신 논리(158) 및 CRC 신드롬 갱신 블록(152)에 입력되는 오류 값 및 오류 위치(160)도 생성한다. 버퍼 갱신 논리(158)는 메모리(126) 내의 데이터를 갱신하여 데이터 내의 오류의 교정을 반영한다. CRC 신드롬 갱신 블록(152)은 CRC 신드롬에 대한 갱신 정보(update)를 생성하고, 이것을 CRC 신드롬 생성기(150)에 입력한다.
도 1b에 도시된 기억 시스템(120)에 구현된 데이터 복호 처리(200)가 도 2a에 도시되어 있다. 처리는 데이터 블록이 기억 매체(132)로부터 판독되고 메모리 버퍼(126)에 저장되는 단계(202)에서부터 시작한다. 양호한 실시예에서, 기억 매체는 하드 디스크이고 판독된 데이터 블록은 통상적으로 1 섹터이다. CRC 오류 검출 방식이 이용되는 경우, 데이터의 각 바이트는 CRC 부호어의 신드롬을 생성하는데 이용된다.
단계(204)에서는, 만약 리드-솔로몬 복호기에 의해 교정될 수 있는 그런 오류가 있다면, 이들이 교정된다. 오류가 리드-솔로몬 복호기에 의해 교정된 경우, 리드-솔로몬 복호기에 의해 교정되고 갱신된 후에 버퍼 내의 데이터와 (오류와 함께) 판독된 데이터가 일치하지 않으면 CRC 신드롬이 생성된다. 따라서, 단계(206)에서는, CRC 신드롬이 교정된 데이터에 대응하도록 갱신된다. 갱신된 데이터에 대한 CRC 신드롬을 생성하는 한 가지 방법은 버퍼로부터 갱신된 데이터의 모든 바이트를 다시 판독하여 신드롬 생성기 논리를 통하여 전달하는 것이다. 성능의 관점에서 보면, 모든 데이터를 다시 판독하는 데 필요한 시간으로 인하여 이 체계를 수용하기는 어렵다. 대신에, 단계(206)에서는, 리드-솔로몬 복호기에 의해 CRC 신드롬에 위치되는 오류의 영향이 결정되고, 그 영향이 이전에 생성된 신드롬에서 차감된다. 디스크로부터 데이터가 판독될 때, 오류 다항식의 각개 항은 CRC 생성기 다항식의 근에서 검토되고, 상기 CRC 신드롬에 더해진[가산은 모듈로(mudulo) 2로 수행됨을 상기할 것] 그 결과가 계산된다. 단계(208)에서는, 갱신된 신드롬이 0이면, 버퍼 내의 데이터가 양호하다고 판단된다. 단계(210)에서는, 데이터가 양호하면, 이 데이터가 호스트로 전송된다.
CRC 신드롬이 교정된 데이터에 대응하도록 갱신되는 도 2a의 단계(206)를 도 2b에 더욱 상세하게 도시하였다. 단계(206A)에서, 오류가 있는 부호어가 수신된다. 단계(206B)에서는, 리드-솔로몬 복호기가 오류의 위치 및 크기가 계산된다. 단계(206C)에서는, 리드-솔로몬 오류 위치가 CRC 부호어 내의 대응하는 위치로 변환된다. 각 위치 및 각 값의 쌍은 오류 다항식의 1개 항이다. 단계(206D)에서는, 변환된 오류 위치가 CRC 생성 다항식의 제1근(또는 N 번째 근)의 지수의 멱으로 올림된다. 근은제곱인데,는 유한체의 기본 원소(base element)이다. 단계(206E)에서는, 그 결과에 오류 값이 곱해지고 그 곱이 대응 신드롬 바이트(제1 또는 N 번째)에 더해진다. 단계(206F)에서, 단계(206E)가 나머지 근에 대해서 반복된다.
어려운 연산은 오류 위치의 지수화이다. 2의 임의의 멱으로 올림하는 것은 합리적인 하드웨어 비용으로 달성될 수 있다. 범용 지수화 회로는 매우 비싸다. 따라서 2의 멱에 의한 지수화와 승산을 조합하여 지수화를 할 수 있도록 근이 선택된다.
예를 들어, 4개의 근 137, 197, 227 242를 가정하자. 도 2b의 단계(206D)에서 수행되는 지수화는 제곱 회로(squaring circuit), 16승 회로(raise to the 16th power circuit), 128승 회로(raise to the 128th power circuit) 및 승산기를 이용하여 달성할 수 있다. 이들 근의 유도(derivation)는 다음의 수학식 1과 같다.
X의 각 값은 X의 다음 값을 생성하기 위해 이용된다. 따라서, 예컨대 단계(206D)는 처음 변환된 오류 위치에 대하여 다음과 같이 수행될 수 있다.
변환된 오류 위치, 즉 Y 는 137승까지 올림된다. 우선, 중간수(intermediate quantity) X0가 Y를 16승까지 올리고 Y를 곱함으로써 형성된다. 따라서,이다. X1이 Y17인 X0를 128승 올리고 Y를 곱하여 형성된다. 따라서,이다. 기초 유한체는 순환적이고 0이 아닌 255개의 원소를 가지므로, 지수를 255로 나눈 나머지로 취할 수 있다. 즉,.
변환된 오류 위치는 각 나머지 근에 의해 이와 유사하게 지수화한다. 따라서, 변환된 오류는 197인 2번째 근의 지수의 멱, 227인 3번째 지수의 멱, 그리고 242인 4번째 근의 지수의 멱으로 올림된다.
CRC 부호는 보호될 데이터를 일련의 비트 또는 일련의 비트의 그룹으로 간주하여 구성될 수 있다. 본 명세서에서는 그러한 비트의 그룹을 기호(symbol)라 부른다. 부호의 기호 길이를 결정할 때, 많은 인자(factors)를 고려한다. 하나의 좋은 기준은 기호 길이를 전송 채널의 폭에 맞추는 것이다. 데이터가 한 번에 1 비트 전송된다면, 1 비트 기호가 가장 좋다. 이와 유사하게, 16 비트의 병렬 채널이라면, 16 비트의 기호 크기가 적절하다. 기타 인자도 역시 고려된다. 기호 전송율은 비트 전송율보다 느릴 것이기 때문에, 주어진 데이터 전송율에 대하여 기호 크기가 더욱 크면 부호화 및 복호가 더욱 용이해진다. 복수의 부호가 함께 이용된다면, 기타의 부화의 기호와 일치하는 CRC 기호를 생성하는 것이 종종 적절하다.
리드-솔로몬 부호와 같은 오류 교정에 이용될 수 있는 부호는 부호의 용량을 최대 용량보다 적게 교정함으로써 오류 검출에 이용될 수 있어서, 오류 검출을 위한 부가된 검사 기호의 일부를 유보해둔다. 복수의 리드-솔로몬 부호어를 전송을 위하여 그룹화 하는 부호화 체계에서, 오류 검출을 위한 리드-솔로몬 검사 기호의일부를 유보하는 것은 리드-솔로몬 부호어를 이것의 최대 용량으로 교정하여 오류 검출을 위한 리드-솔로몬 부호어 전체를 커버(cover)하는 CRC를 부가하는 것보다 덜 효율적이다.
도 3a에 그러한 부호화 체계의 한 가지 실시예의 예시를 도시하였다. 이 예는 512 바이트 블록 내에 데이터를 저장하거나 512 바이트 블록(302)과 같은 섹터에 데이터를 저장하는 통상의 디스크 드라이브이다. 데이터는 8 비트 기호 크기로 구성된 3개의 리드-솔로몬 부호어(304A, 304B, 304C)로 분할된다. 각 부호어(304A, 304B, 304C) 및 8개의 검사 바이트(checkbyte)(308A, 308B, 308C)는 4개까지의 오류를 교정할 수 있다. 섹터에 대한 오류 검출 능력을 위해 추가의 4 바이트가 요구된다. 데이터가 3개의 개별 부호어로 분할되므로, 섹터 내의 각 바이트의 오류 검출 능력을 제공하기 위해서는 각 부호어(304A, 304B, 304C) 당 4개의 추가 검사 바이트(섹터당 12개)가 필요하다.
도 3b에 부호화 체계에 대한 양호한 실시예를 도시하였다. 데이터부(320)는 512 바이트의 데이터를 갖는다. 4 바이트 CRC(322)가 512 바이트의 데이터부(320)에 부가되어 516-바이트 블록(324)을 형성한다. 그 다음 데이터 블록(324)은 3개의 리드-솔로몬 부호어(304A, 304B, 304C)로 분할되는데, 각 부호어는 데이터부(328A, 328B, 328C)와 검사 바이트(330A, 330B, 330C)를 갖는다.
도 4에 도 1b에 도시된 기억 시스템(120)에 구현된 부호화 처리를 도시하였다. 처리는 CRC 부호어가 생성되는 단계(402)로 시작한다. CRC는 512 바이트의 입력 데이터를 다항식으로 간주하여 계산된다. 데이터의 각 바이트는메시지어(message word) 다항식의 계수로 간주된다. 제1 바이트는 다항식의 고차항의 계수이고 마지막 바이트는 저차항의 계수이다. 다항식은 가변수(dummy variable) y의 511차 다항식이다. 본 명세서에서는 CRC 메시지어 다항식을 mc(y)라고 부를 것이다. CRC 부호는 gc(y)라고 부를 생성 다항식에 기초한다. 4개의 CRC 검사 바이트가 사용되므로, 생성 다항식은 4차 다항식이 될 것이다. CRC 부호어는 메시지어 다항식을 y4로 승산하고 그 곱에 CRC 생성 다항식으로 그 곱을 나눈 나머지를 더하여 형성된 다항식이다. CRC 부호어 다항식을 cc(y)라고 부른다. 따라서, 다음의 수학식 2가 성립한다.
CRC 부호어 다항식의 생성 방법에 의하여 부호어 다항식은 생성 다항식으로 우수로 나누어질(evenly divisible) 수 있음을 알 수 있다. 이로 인하여, 부호어 다항식도 역시 인자화된(factored) CRC 생성 다항식의 임의의 항으로 우수로 나누어질 수 있다. 즉, CRC 부호어는 CRC 생성 다항식의 임의의 근에서 0으로 평가될 것이다. 실제로, 이것은 수신된 CRC 부호어의 유효성(validity)을 검사하는 방법이다. 수신된 부호어는 CRC 생성 다항식의 4개의 근에서 평가되고 4개의 평가치가 모두 0이라면 수신된 부호어는 유효한 것으로 간주된다. 생성 다항식의 근에서의 부호어의 평가치는 CRC 부호어의 신드롬이라고 부른다.
단계(404)에서, CRC 부호어는 리드-솔로몬 부호에 대한 3개의 메시지어로 분할된다. CRC 부호어의 제1 바이트는 제1 리드-솔로몬 메시지어의 제1 바이트가 될 것이다. CRC 부호어의 제2 바이트는 제2 리드-솔로몬 메시지어의 제1 바이트가 되고, CRC 부호어의 제3 바이트는 제3 리드-솔로몬 메시지어의 제1 바이트가 될 것이다. 3개의 리드-솔로몬 메시지어 중의 임의의 한 메시지어의 제1 바이트로 시작하면, CRC 부호어의 각 제3 바이트는 리드-솔로몬 메시지어 내에 있을 것이다. 본 명세서에서 3개의 리드-솔로몬 메시지어를 각각 m1(x), m2(x), m3(x)라고 부를 것이다. 2 가지 부호 내에서 데이터의 동일한 바이트가 다른 위치에 있을 것이므로, 리드-솔로몬 부호에 관련된 다항식은 가변수 y보다는 가변수 x로 기술할 것이다. 단계(406)에서, 리드-솔로몬 메시지어는 CRC 부호화와 유사한 방식으로 부호화 되어 리드-솔로몬 부호어를 형성한다.
리드-솔로몬 부호의 생성 다항식은 결과되는 부호가 리드-솔로몬 부호가 되기 위해서는 연속된 지수를 갖는 근을 가져야만 한다. 예시의 목적으로, 본 발명자는 0부터 7까지의 8개의 근을 만들 것인데,는 부호 내의 데이터를 나타내는 데 이용되는 8 비트 유한체의 기본 원소이다.
리드-솔로몬 부호어가 수신될 때, 부호어의 신드롬은 부호의 생성 다항식의 근에서 부호어 다항식을 평가함으로써 계산된다. 수신된 부호어 다항식을 r(x)라 하자. 수신된 부호어 다항식은 전송된 부호어 다항식 c(x)와 r(x) = c(x) + e(x)의 관계가 있는데, 여기서 e(x)는 전송 중에 발생한 오류를 기술하는 다항식이고 c(x)는 올바로 전송된 리드-솔로몬 부호어를 기술하는 다항식이다. 유효 부호어의 신드롬은 0으로 정의한다. 이것은 수신된 부호어 r(x)의 신드롬이 오류 다항식 e(x)의 신드롬과 정확히 같다는 것을 알 수 있다. 신드롬이 0이면, 오류 다항식은 동일하게 0으로 간주하고 부호어는 오류 없이 수신되었다고 추정한다. 수신된 다항식이 부호가 교정할 수 있는 것보다 더 많은 오류에 의해 손상되었으면, 리드-솔로몬 복호기는 교정 능력이 초과되었다는 사실을 검출하거나 수신된 데이터를 오교정할 것이다. 리드-솔로몬 복호기가 오교정하면, 이것은 수신된 부호어로부터 항상 유효한 리드-솔로몬 부호어를 생성할 것이지만, 유효한 부호어는 올바른 유효 부호어가 아니다. 즉, 오류 다항식의 신드롬 e(x)와 리드-솔로몬 복호기가 만든 변화를 기술하는 다항식 i(x)를 더하면 0이 될 것이다.
본 발명에서, 리드-솔로몬 복호기가 데이터를 오교정하면, 오류를 검출하는 것은 CRC가 맡는다. 즉, 오교정된 데이터에 대하여 계산된 CRC 신드롬은 분명히 0이 아니다. 따라서, CRC 생성 다항식의 근을 선택하는 것은 CRC 부호의 목적되는 기능을 보장하기 위해 극히 중요한 것이다.
수신된 리드-솔로몬 부호어가 부호가 교정할 수 있는 오류 이상을 포함하고 있고 복호기가 오교정을 한다고 가정하자. 오교정 후에, 데이터는 전송 중에 발생한 오류 e(x)와 복호기에 의해 수행된 오교정 i(x)가 더해진 오류에 의하여 전송된 데이터와 다르게 된다. 이들 오류의 합을 d(x)[d(x) = e(x) + i(x)]라고 부르자. 복호기가 유효 리드-솔로몬 부호어에 대해 오교정함으로써, d(x)에서 계산된 신드롬은 0이 될 것이다. d(x) 내의 바이트 위치는 리드-솔로몬 부호어 다항식의 가변수(x)의 지수에 의해 결정된다. 리드-솔로몬 부호의 위치는 CRC 부호어 내의 위치와 관련된다. 구체적으로, 리드-솔로몬 부호어 위치로부터 CRC 부호어 위치로 변환하기 위하여 리드-솔로몬 검사 바이트의 수를 지수에서 차감하고, 그 다음에 지수를 3(CRC 부호어는 3개의 리드-솔로몬 메시지어로 분할됨)으로 곱한다. 최종적으로, 3개의 리드-솔로몬 부호어 중의 어떤 것을 이용할 것인가에 따라서 0, 1 또는 2를 지수에 더한다. 본 예시에서는 제3 부호어로 가정하고, 따라서 최종 부가는 0이다. 오류 또는 오교정된 데이터의 위치가 리드-솔로몬 검사 바이트 내에 없다면, 리드-솔로몬 부호 공간(code space) 내의 다항식 d(x)는 다음의 수학식 3에 따라 CRC 부호 공간 내의 d(y)로 변환될 수 있다.
본 발명자들은 d(x)는 x가 다음 값일 때 0으로 평가된다는 것을 알고 있다.
x = 0
x = 1
x = 2
x = 3
x = 4
x = 5
x = 6
x = 7
따라서, d(y)는 다음의 경우에 0으로 평가된다.
y = 0[( 0)3= 0]
y = 1[( 1)3= 3]
y = 2[( 2)3= 6]
따라서,0,1 및2는 리드-솔로몬 복호기에 의한 오교정을 절대 검출할 수 없으므로, 이들은 CRC 생성 다항식의 근으로 이용될 수 없다.
근의 선택은 부호의 생성에 이용되는 유한체의 성질에 의해 더 제한된다.
상기 유한체에 있어서, 가산은 모듈로 2로 수행된다. 예를 들어, 제곱(squaring)은 선형 연산(linear operation)이다.
실제로, 2의 임의의 짝수 승으로 어떤 값을 올림하는 것은 선형 연산이다. 이것은 임의의 다항식은 단순히 그 다항식의 각 항을 2의 멱으로 올림함으로써 2의 임의의 짝수승으로 올림할 수 있다는 것을 암시한다. 다항식의 0이 아닌 계수가 모두 동일하다면(그리고 이것이 특정 응용에서의 오류 특성과 더욱 유사하다면), 다항식의 근의 2의 모든 짝수승도 역시 다항식의 근이다. 이 관찰은 CRC 생성 다항식의 근의 선택을 더 제한한다.
이전의 예로 돌아가서, d(x)의 모든 계수가 동일하다고 가정하면, d(x)는 x = 1에서 0으로 평가되므로 다음의 경우에도 0으로 평가되게 될 것이다.
x = 2,
x = 4,
x = 8,
x = 16,
x = 32,
x = 64
x = 128.
d(x)는 x = 3에서 0이므로, d(x)는 다음의 경우에도 0이다.
x = 6,
x = 12,
x = 24,
x = 48,
x = 96,
x = 192
x = 129.
d(x)는 x = 5에서 0이므로, d(x)는 다음의 경우에도 0이다.
x = 10,
x = 20,
x = 40,
x = 80,
x = 160,
x = 65
x = 130.
이와 유사하게, d(x)는 x = 7에서 0이므로, d(x)는 다음의 경우에도 0이다.
x = 14,
x = 28,
x = 56,
x = 112,
x = 224,
x = 193
x = 131.
이 표본 적용은 CRC 부호어를 3개의 리드-솔로몬 메시지어로 분할하므로, 3으로 우수로 나누어질 수 있는 지수들만을 고려할 필요가 있다. 따라서, 3의 제곱도 관심 대상 중의 하나이다. 유한체의 순환성(cyclic nature) 때문에, 3의 각 제곱은 1개의 3승근(cube root)이 아니라 3개의 3승근을 갖는다. 첫 번째 근은 명확하다. 3으로 나누어진 지수이다. 예를 들어, 6의 1개의 3승근은 2이다. 다른 두 개의 3승근은 지수를 3으로 나누고 85를 더한 것과 지수를 3으로 나누고 170을 더한 것이다. 따라서, 87 6의 3승근이고 172 6의 삼승근이다. 3개의 3승근모두를 포함하여, 3의 제곱들은 아래의 경우를 CRC 다항식의 적합한 근에서 제거한다.
y = 1, [( 1)3= 3]
y = 86, [( 86)3= 3]
y = 171, [( 171)3= 3]
y = 2, [( 2)3= 6]
y = 87, [( 87)3= 6]
y = 172, [( 172)3= 6]
y = 4, [( 4)3= 12]
y = 89, [( 89)3= 12]
y = 174, [( 174)3= 12]
y = 8, [( 8)3= 24]
y = 93, [( 93)3= 24]
y = 178, [( 178)3= 24]
y = 16, [( 16)3= 48]
y = 101, [( 101)3= 48]
y = 186, [( 186)3= 48]
y = 32, [( 32)3= 96]
y = 117, [( 117)3= 96]
y = 202, [( 202)3= 96]
y = 64, [( 64)3= 192]
y = 149, [( 149)3= 192]
y = 234, [( 234)3= 192]
y = 128, [( 128)3= 129]
y = 213, [( 213)3= 129]
y = 43, [( 43)3= 129]
CRC 생성 다항식에 대한 가능한 근을 3을 곱했을 때 리드-솔로몬 생성 다항식 내의 근과 중복되거나, 리드-솔로몬 생성 다항식 내의 임의의 근의 2의 임의의 멱과 중복되면 이를 제거하였다.
2의 멱으로 올림하는 것은 CRC 근 자체에도 역시 문제를 야기한다. CRC 생성기의 하나의 근을 벗어나 오류가 발생하면, 그 근의 2의 임의의 멱인 임의의 기타의 근도 벗어날 것이다. 따라서, CRC 생성 다항식의 2개의 근은 공통 제곱(common square)을 공유할 수 없다.
기초가 되는 유한체의 구조는 근의 선택을 더 제한한다. CRC 근의 지수는 유한체의 순환 길이의 소인수의 모듈로와 동일하지 않을 것이다. 이 이유는 다음의 예시로 가장 잘 나타난다. 8 비트 기호 크기, 256 원소의 유한체 및 오류와 오교정의 결합 다항식 d(x) = e(x) + i(x)를 가정한다. 다항식은 부분적이거나 전체적으로 인수 분해할 수 있다. d(x)가 적어도 부분적으로라도 인수 분해될 수 있고 항(x85+ 170)을 포함한다고 가정하면, 이것은 d(x)는 항(x85+ 170)이 0으로 평가되는 임의의 근에서 0으로 평가된다. 항(x85+ 170)을 분석하면, CRC 생성 다항식의 한 근인 x는 R의 형태이다. 따라서, 다음의 수학식 5가 성립한다.
따라서, 근의 지수가 2 모듈로 3과 동일한 경우의 모든 근에서 항(x85+ 170)의 값은 0이 된다. 모든 CRC 근이 그들의 지수가 2 모듈로 3과 동일한 특성을 공유하면, 다항식 d(x)는 CRC 생성 다항식의 모든 근에서 0의 값이 된다. 255의 모든 인수에 대하여 동일한 유형의 문제가 나온다. 이 문제를 피하는 방법은 CRC 근의 지수가 별개의 값들이거나 모든 값들이 각 소인수 255(3, 5, 17)의 모듈로 연산의 결과 값임을 보장하는 것이다. 지수 모듈로 3에 대한 선택은 0, 1 및 2의 단 3가지이고, 지수가 0 모듈로 3인 경우에는, 이것은 유한체의 원시 원소가 아니다. 따라서, 3개의 근보다 적으면, 지수는 별개의 값 모듈로 3이 되고, 3개의 근보다 많으면, 지수는 모든 값에 대한 모듈로 3이 된다.
유한체의 순환 성질은 CRC 생성 다항식의 근에 대한 다른 제약이 된다. 자신이 반복적으로 곱해지는 임의의 원소는 결국 자신과 동일한 곱으로 되돌아 갈 것이다. 원소가 스스로 곱해질 수 있는 횟수가 그 원소의 순환 길이이다. 가장 긴 순환은 255이다. 예를 들어, 1이 자체적으로 곱해지면 255번 후에 256에 도달할 것이고 256 mod 255는 1이다. 순환 길이가 255인 원소는 체의 원시 원소이다. 자신의 지수가 각각 255에 대해 소수인 임의의 원소는 원시 원소이다. 정확히 한 근의 순환 길이 만큼 떨어져 위치한 동일한 오류는 CRC 생성 다항식을 0으로 만드는 데 기여할 것이다. 리드-솔로몬 복호기가 정확한 거리만큼 떨어져 위치한 동일한 크기의 오류에 대하여 변경된 오류 다항식 d(x)를 생성하는 방식으로 오교정을 하게되는 다중 오류가 발생할 기회는 실로 적다. 그러나, 만전을 기하기 위해 가능한 약점을 피하는 것이 좋고, 유한체의 최대 순환 길이보다 작은 생성 다항식의 근은 최대 순환 길이를 갖는 근에 비해 상기 상황을 겪을 가능성이 높다. 따라서, CRC 생성 다항식의 적어도 한 근은 유한체의 원시 원소이어야 한다.
적절한 근을 선택하는 데 도움이 될 이상에서 설명한 수학적 제약은 그 중요성으로 인하여 아래의 표 1로 나타내었다.
1. 각 근의 지수는 서로 별개의 값이거나 모든 값들에 대하여 기초 유한체의 순환 길이의 각 소인수로 모듈로(modulo) 연산한 값이다.
2. 각 근은 오류 교정에 이용된 리드-솔로몬 부호의 근들과 중복되지 않는다[임의의 인터리브 인수(interleave factor)의 영향을 포함함].
3. 근들 중의 적어도 하나는 유한체의 원시 원소이다.
4. 어떤 근도 임의의 다른 근의 2의 거듭제곱이 아니다.
5. 근은 오류 교정에 이용된 리드-솔로몬 부호의 임의의 근의 2의 임의의 거듭제곱과중복되지 않는다[임의의 인터리브 인수(interleave factor)의 영향을 포함함].
이에 덧붙여, 오버라이딩 인수(overriding factor)는 근이 하드웨어에서 계산하기 쉬운 신드롬의 이후 오류 교정 갱신(post error correction update)을 하는 특성을 처리해야 하는 것이다. 특히, 근은 필요한 지수화 연산을 단지 2의 거듭제곱에 의한 지수화와 승산의 조합만으로 수행할 수 있도록 선택되어야만 한다.
주어진 응용에서, 어떤 근의 집합도 이 모든 제약을 만족하지 못할 가능성이 많다. 이 경우에는, 제1 제약, 제2 제약 및 제3 제약을 만족하고 제4 제약 및 제5 제약은 부분적으로 만족하는 근을 선택할 수 있다. 대안으로서는, 후술하는 데이터변경 체계를 이용할 수 있다.
주어진 응용에서, 가능한 한 많은 제약을 만족하는 근의 집합을 도 5에 도시된 처리(500)를 수행하여 생성할 수 있다. 처리는 유한체의 모든 원소가 나열된 단계(502)에서 시작된다. 단계(504)에서, 전술한 처음 3가지 제약 중의 어떤 제약을 위반하는 모든 원소가 제거된다. 단계(506)에서, 나머지 원소가 집합들로 분할되는데, 각 집합 내의 어떠한 원소도 그 집합 내의 다른 모든 원소의 2의 거듭제곱이 되지 않도록 분할된다. 그러한 집합의 어떤 원소도 다른 집합의 임의의 원소의 2의 거듭제곱이 되지 않는다. 단계(508)에서, 집합의 수가 근의 목적되는 수와 동일하거나 큰지를 결정한다. 그렇다면, 처리는 각 집합으로부터 한 원소가 선택되는 단계(510)로 진행된다. 신드롬 갱신을 위한 지수화 연산이 적절한 수준의 계산 노력으로 달성될 수 있도록 근을 선택한다.
집합의 수가 근의 목적되는 수보다 적으면, 처리는 추가의 원소를 선택하는 단계(512)로 진행한다. 근의 목적되는 수가 얻어질 때까지 각 집합으로부터 또 다른 원소가 선택된다. 다시, 신드롬 갱신을 위한 지수화 연산이 적절한 수준의 계산 노력으로 달성될 수 있도록 근을 선택한다. 그러나, 이 경우에는, 제4 제약 및 제5 제약에 대한 선택 지침이 완전히 실현되는 것은 아니다.
CRC 생성 다항식이 축소하여 얼마간의 근이 이탈하기 때문에 기초 오류 교정부호 내의 근의 수가 증가하는 경우가 발생할 수 있다. 어떤 점에서, 가능한 근이 목적되는 CRC의 길이보다 적을 수 있다. 이러면 모든 선택 지침을 충족하지 않는 근을 선택할 필요가 있다.
그 밖에, 전술한 CRC는 여전히 CRC 생성 다항식 근의 신중한 선택으로는 제거할 수 없는 단점을 갖는다. 이 단점은 255 바이트의 배수만큼 떨어져 있는 동일한 크기의 오류는 CRC에서 벗어날 수 있다는 것이다. 이 단점은 기초 오류 교정 부호 및 (만약 있다면) 보호되어야 할 통신 채널의 특성에 따라 중요한 것이 될수도 있고 그렇지 않을 수도 있다.
255 바이트의 배수만큼 떨어져 있는 동일한 크기의 오류에 의한 문제뿐만 아니라 모든 선택 지침을 만족하지는 않는 근을 선택함으로써 야기되는 문제는 CRC를 생성하기 전에 데이터를 변경하거나 스크램블링(scrambling)하여 피할 수 있다. 이 결과로서, CRC 부호어 및 리드-솔로몬 부호어는 완전히 다른 데이터에 기초하여 생성된다.
도 6에 본 발명에 따른, 데이터 스크램블링을 포함한 예시적인 부호기(128)를 도시하였다. 부호기(128)는 데이터 스크램블러(scrambler)(602), CRC 생성기(604), 리드-솔로몬 검사 기호 생성기(606) 및 부호 연접기(concatenator)(608)를 포함한다. 버퍼 메모리(126)로부터의 버퍼 데이터는 데이터 스크램블러(602), RS 부호 생성기(606) 및 부호 연접기(608)에 입력된다. 데이터 스크램블러(602)는 버퍼 데이터와는 다른 데이터의 스트림을 생성하도록 버퍼 데이터를 스크램블 하거나 변경한다. 스크램블된 데이터 스트림은 스크램블된 데이터 스트림에 대해 CRC 부호어를 생성하는 CRC 생성기(604)로 입력된다. RS 부호 생성기(606)는 변경되지 않은 데이터에 대한 리드-솔로몬 검사 기호를 생성한다. 생성된 CRC 기호 및 리드-솔로몬 검사 기호는 검사 기호를 버퍼 데이터 스트림의 적절한 위치에 삽입하고 연접된 검사 기호를 갖는 버퍼 데이터를 기록 데이터로서 출력하는 부호 연접기(608)에 입력된다.
사용될 수 있는 하나의 데이터 스크램블러는 CRC와 리드-솔로몬 사이에서의 기호 비트의 단순한 치환(permutation)기이다. 구현하기에는 간단하지만, 비트 교환은 상당한 비선형 연산으로서 부호를 수학적으로 분석할 수 없게 한다.
상기 2개의 부호기 사이의 데이터 스트림에 대한 수학적으로 설명할 수 있는 결정적인 변경은 근의 문제를 없애는 더 나은 해결책이다. 신중하게 설계하면, 동일한 해결책으로 255 바이트만큼 떨어진 동일한 크기의 오류에 대한 문제를 해결할 수 있다.
정의에 의하면, 리드-솔로몬 부호어의 길이는 기초 유한체의 순환 길이(본 예에서는 255)보다 적을 것이다. 따라서, CRC 부호 내의 순환을 분할하기 위해서는, CRC 부호에 의해 보호되는 리드-솔로몬 부호어의 수에 해결책을 맞추면 된다. 예를 들어, 3개의 리드-솔로몬 부호어가 보호된다면, 3의 인터리브 인수가 두 부호사이에서 이용된다.
우선, 4 바이트의 CRC를 각각 1차 생성 다항식(x + a = 0의 형태)을 갖는 4개의 독립적인 CRC 부호어로 재정의한다. CRC 부호어 내의 바이트의 위치는 부호어 다항식 내의 가변수의 지수로 결정된다. 그 도중에, 기초 리드-솔로몬 부호 내의 바이트의 위치는 부화와 전의 데이터 바이트의 변경을 결정할 것이다. 바이트의 변경은 임의의 수학적 연산일 수 있고, 위치를 연산으로 매핑(mapping)하는 것은 매우 쉬운 것일 수 있다. 예시의 목적으로, 요구 조건에 맞고 하드웨어 구현에 적당한 특정 구현을 설명할 것이다. 부호화 처리 도중에, 리드-솔로몬 부호 내의 현재 바이트의 위치는 자신의 지수가 위치인 유한체 내의 원소의 형태로 가능하다고 가정한다. 위치 정보의 이진 표현의 한 비트는 4개의 CRC 부호기의 각각에 할당된다. 비트가 0이면, 데이터는 변경되지 않은 채 부호기에 전달된다. 그러나, 비트가 1이면, 데이터는 254로 곱해진 다음 부호기에 전달된다.
이 체계에서, 255 바이트 떨어진 동일한 크기의 오류는 CRC를 벗어나지 못한다. 4개의 CRC 검사가 효율적으로 별개의 데이터 스트림에 대해 계산되기 때문에, 이들 오류는 한 CRC 검사를 벗어날 수는 있으나, 4개의 CRC 검사를 벗어나지는 못한다. CRC 계산에 이용되는 4개의 데이터 스트림은 리드-솔로몬 부호기에 의해 이용되는 데이터 스트림과도 다르므로, CRC 생성 다항식의 근과 리드-솔로몬의 근의 중복은 더 이상 문제가 되지 않는다.
CRC 계산을 위한 바이트를 변경하는 결정은 리드-솔로몬 부호의 내의 바이트의 위치에 기초하므로, 손상된 데이터에 대해 계산되는 CRC 신드롬에 대한, 리드-솔로몬 복호기에 의해 위치된 오류의 영향은 쉽게 계산된다. 결정적으로 변경된 오류 값은 오류 위치에 기초하여 수행되는, 오류에 대한 연산에 의하여 생성되고, 결정적으로 변경되고 곱해진 다중 오류 값은 CRC 신드롬을 갱신하는데 이용된다.
본 발명의 구체적인 실시예를 설명하였지만, 당업계의 통상의 지식이 있는 자라면 전술한 실시예와 균등한 기타의 실시가 가능하다는 것을 이해할 수 있을 것이다. 따라서, 본 발명은 예시된 실시예에 의해 한정되는 것이 아니고, 첨부된 특허 청구 범위에 의해서만 한정된다는 것을 이해하여야 한다.
본 발명은 데이터 교정 체계가 최소한 오류의 일부를 교정하지 못하거나 추가의 오류를 부가하는 경우, 잔존하는 오류를 검출하여 데이터 무결성을 보장할 수 있다.

Claims (19)

  1. 오류를 포함하는 수신된 데이터가 올바르게 교정되었는지를 결정하는 방법에 있어서,
    a) 데이터부, 복수 개의 근을 갖는 순환 중복 검사(cyclic redundancy check; CRC) 생성 다항식을 이용하여 생성된 순환 중복 검사 기호(check symbol) 및 복수 개의 근을 갖는 리드-솔로몬 생성 다항식을 이용하여 생성된 리드-솔로몬 검사 기호로 구성되고, 적어도 하나의 오류를 포함하는 데이터 블록을 수신하는 단계와,
    b) 상기 수신된 데이터 블록에 대하여 CRC 생성 다항식을 이용하여 적어도 하나의 CRC 신드롬을 생성하는 단계와,
    c) 상기 데이터 블록 내의 적어도 하나의 데이터를 교정하는 것을 시도하는 단계와,
    d) 상기 교정된 데이터 블록에 대응하는 CRC 신드롬을 갱신(update)하는 단계와,
    e) 상기 갱신된 CRC 신드롬을 이용하여 오류가 교정되었는지를 결정하는 단계
    를 포함하고,
    상기 CRC 생성 다항식의 근은 다음의 조건 1) 내지 3)을 만족하는 방법.
    1) 각 근의 지수는 서로 별개의 값이거나 모든 값에 대하여 기초유한체(finite field)의 순환 길이의 각 소인수로 모듈로(modulo) 연산한 값이다.
    2) 각 근은 리드-솔로몬 생성 다항식의 근과 중복되지 않는다.
    3) 적어도 하나의 근은 유한체의 원시 원소(primitive element)이다.
  2. 제1항에 있어서, CRC 생성 다항식의 근은 다음의 조건 4) 및 5)를 더 만족하는 방법.
    4) 임의의 다른 근의 2의 거듭제곱인 근은 없다.
    5) 어떤 근도 리드-솔로몬 생성 다항식의 임의의 근의 2의 임의의 거듭제곱과 중복되지 않는다.
  3. 제1항에 있어서, 상기 오류를 교정하는 것을 시도하는 단계는,
    리드-솔로몬 검사 기호를 이용하여 적어도 하나의 오류를 교정하는 단계를 포함하는 것인 방법.
  4. 제3항에 있어서, 상기 오류가 교정되었는지를 결정하는 단계는,
    갱신된 CRC 신드롬이 0인지를 결정하는 단계를 포함하는 것인 방법.
  5. 제4항에 있어서, 상기 수신된 데이터 블록은 복수 개의 리드-솔로몬 부호어를 포함하고, 상기 각 리드-솔로몬 부호어는 데이터부 및 리드-솔로몬 검사 기호를 포함하고, 상기 리드-솔로몬 부호어의 상기 데이터부는 CRC 부호어를 형성하고, 상기 CRC 부호어는 데이터부 및 CRC 기호를 포함하며, 상기 CRC 신드롬을 갱신하는 단계는,
    교정하는 것을 시도했던 오류를 포함하는 각 리드-솔로몬 부호어에 대하여,
    리드-솔로몬 부호어 내의 오류의 위치 및 크기를 결정하는 단계와,
    리드-솔로몬 부호어 내의 오류의 위치를 CRC 부호어 내의 위치로 변환하는 단계와,
    변환된 오류 위치를 CRC 생성 다항식의 근에 의해 지수화하는 단계와,
    지수화된 변환된 오류 위치를 오류 값으로 승산하는 단계와,
    곱해진 오류 값을 CRC 신드롬에 가산하는 단계
    를 수행하는 단계를 포함하는 것인 방법.
  6. 제5항에 있어서, 상기 근은 상기 지수화 단계가 2의 거듭제곱에 의한 지수화와 승산의 조합으로 수행될 수 있도록 더 선택되는 것인 방법.
  7. 제1항에 있어서, CRC 기호 및 리드-솔로몬 기호는,
    데이터 블록의 데이터부에 기초하여 결정적으로 변경된 데이터 스트림을 생성하는 단계와,
    상기 결정적으로 변경된 데이터 스트림에 기초하여 CRC 기호를 생성하는 단계와,
    상기 데이터 블록의 데이터부와 상기 CRC 기호에 기초하여 리드-솔로몬 검사기호를 생성하는 단계
    를 수행함으로써 생성되는 것인 방법.
  8. 제7항에 있어서, 데이터 블록의 데이터부에 기초하여 상기 결정적으로 변경된 데이터 스트림을 생성하는 단계는,
    리드-솔로몬 부호어 내의 기호의 위치에 기초하여 데이터부의 기호에 대해 연산을 수행하는 단계를 포함하는 것인 방법.
  9. 제8항에 있어서, 상기 오류를 교정하는 것을 시도하는 단계는,
    리드-솔로몬 검사 기호를 이용하여 적어도 하나의 오류를 교정하는 단계를 포함하는 것인 방법.
  10. 제9항에 있어서, 상기 오류가 교정되었는지를 결정하는 단계는,
    갱신된 CRC 신드롬이 0인지를 결정하는 단계를 포함하는 것인 방법.
  11. 제10항에 있어서, 상기 수신된 데이터 블록은 복수 개의 리드-솔로몬 부호어를 포함하고, 상기 각 리드-솔로몬 부호어는 데이터부 및 리드-솔로몬 검사 기호를 포함하고, 상기 리드-솔로몬 부호어의 상기 데이터부는 CRC 부호어를 형성하고, 상기 CRC 부호어는 데이터부 및 CRC 기호를 포함하며, 상기 CRC 신드롬을 갱신하는 단계는,
    교정하는 것을 시도했던 오류를 포함하는 각 리드-솔로몬 부호어에 대하여,
    리드-솔로몬 부호어 내의 오류의 위치 및 크기를 결정하는 단계와,
    리드-솔로몬 부호어 내의 오류의 위치를 CRC 부호어 내의 위치로 변환하는 단계와,
    변환된 오류 위치를 CRC 생성 다항식의 근에 의해 지수화하는 단계와,
    리드-솔로몬 부호어 내의 오류의 위치에 기초하여 오류 값에 대한 연산을 수행함으로써 결정적으로 변경된 오류 값을 생성하는 단계와,
    지수화된 변환된 오류 위치를 오류 값으로 승산하는 단계와,
    곱해진 오류 값을 CRC 신드롬에 가산하는 단계
    를 수행하는 단계를 포함하는 것인 방법.
  12. 제11항에 있어서, 상기 근은 상기 지수화 단계가 2의 거듭제곱에 의한 지수화와 승산의 조합으로 수행될 수 있도록 더 선택되는 것인 방법.
  13. 오류를 포함하는 수신된 데이터가 올바르게 교정되었는지를 결정하는 장치에 있어서,
    a) 데이터부, 복수 개의 근을 갖는 CRC 생성 다항식을 이용하여 생성된 CRC 기호 및 복수 개의 근을 갖는 리드-솔로몬 생성 다항식을 이용하여 생성된 리드-솔로몬 검사 기호로 구성되고, 적어도 하나의 오류를 포함하는 데이터 블록을 수신하는 수단과,
    b) 상기 수신된 데이터 블록에 대하여 CRC 생성 다항식을 이용하여 적어도 하나의 CRC 신드롬을 생성하는 수단과,
    c) 상기 데이터 블록 내의 적어도 하나의 데이터를 교정하는 것을 시도하는 수단과,
    d) 상기 교정된 데이터 블록에 대응하는 CRC 신드롬을 갱신하는 수단과,
    e) 상기 갱신된 CRC 신드롬을 이용하여 오류가 교정되었는지를 결정하는 수단
    을 포함하고,
    상기 CRC 생성 다항식의 근은 다음의 조건 1) 내지 3)을 만족하는 장치.
    1) 각 근의 지수는 서로 별개의 값이거나 모든 값에 대하여 기초 유한체의 순환 길이의 각 소인수로 모듈로(modulo) 연산한 값이다.
    2) 각 근은 리드-솔로몬 생성 다항식의 근과 중복되지 않는다.
    3) 적어도 하나의 근은 유한체의 원시 원소이다.
  14. 데이터를 송신하고 수신하는 시스템에 있어서,
    상기 시스템은 데이터부, CRC 기호 및 리드-솔로몬 검사 기호를 포함하는 데이터 블록을 전송하는 수단을 포함하고,
    상기 데이터 블록을 전송하는 수단은,
    a) 복수 개의 근을 갖는 CRC 생성 다항식을 이용하여 CRC 기호를 생성하는 수단과,
    b) 복수 개의 근을 갖는 리드-솔로몬 생성 다항식을 이용하여 리드-솔로몬 검사 기호를 생성하는 수단과,
    c) 오류를 포함하는 수신된 데이터가 올바르게 교정되었는지를 결정하는 수단
    을 포함하고,
    상기 올바르게 교정되었는지를 결정하는 수단은,
    c-1) 적어도 하나의 오류를 포함하는 데이터 블록을 수신하는 수단과,
    c-2) 상기 수신된 데이터 블록에 대하여 CRC 생성 다항식을 이용하여 적어도 하나의 CRC 신드롬을 생성하는 수단과,
    c-3) 상기 데이터 블록 내의 적어도 하나의 데이터를 교정하는 것을 시도하는 수단과,
    c-4) 상기 교정된 데이터 블록에 대응하는 CRC 신드롬을 갱신(update)하는 수단과,
    c-5) 상기 갱신된 CRC 신드롬을 이용하여 오류가 교정되었는지를 결정하는 수단
    을 포함하고,
    상기 CRC 생성 다항식의 근은 다음의 조건 1) 내지 3)을 만족하는 시스템.
    1) 각 근의 지수는 서로 별개의 값이거나 모든 값에 대하여 기초 유한체의 순환 길이의 각 소인수로 모듈로(modulo) 연산한 값이다.
    2) 각 근은 리드-솔로몬 생성 다항식의 근과 중복되지 않는다.
    3) 적어도 한 근은 유한체의 원시 원소이다.
  15. 제14항에 있어서, 상기 데이터 블록을 전송하는 수단은 상기 데이터 블록의 데이터부에 기초하여 결정적으로 변경된 데이터 스트림을 생성하는 수단을 더 포함하고,
    상기 CRC 기호를 생성하는 수단은 상기 결정적으로 변경된 데이터 스트림에 기초하여 CRC 기호를 생성하는 수단을 포함하고,
    상기 리드-솔로몬 검사 기호를 생성하는 수단은 상기 데이터 블록의 데이터부 및 상기 CRC 기호에 기초하여 리드-솔로몬 검사 기호를 생성하는 수단을 포함하는 것인 시스템.
  16. 데이터를 송신하고 수신하는 시스템에 있어서, 데이터부, CRC 기호 및 리드-솔로몬 검사 기호를 포함하는 데이터 블록을 전송하는 장치는,
    a) 복수 개의 근을 갖는 CRC 생성 다항식을 이용하여 CRC 기호를 생성하는 수단과,
    b) 복수 개의 근을 갖는 리드-솔로몬 생성 다항식을 이용하여 리드-솔로몬 검사 기호를 생성하는 수단
    을 포함하고,
    상기 CRC 생성 다항식의 근은 다음의 조건 1) 내지 3을 만족하는 장치.
    1) 각 근의 지수는 서로 별개의 값이거나 모든 값에 대하여 기초 유한체의순환 길이의 각 소인수로 모듈로(modulo) 연산한 값이다.
    2) 각 근은 리드-솔로몬 생성 다항식의 근과 중복되지 않는다.
    3) 적어도 한 근은 유한체의 원시 원소이다.
  17. 데이터를 전송하고 수신하는 시스템에 있어서, 데이터부, CRC 기호 및 리드-솔로몬 검사 기호를 포함하는 데이터 블록을 전송하는 장치는
    데이터 블록의 데이터부에 기초하여 결정적으로 변경된(deterministrically altered) 데이터 스트림을 생성하는 수단과,
    상기 결정적으로 변경된 데이터 스트림에 기초하여 CRC 기호를 생성하는 수단과,
    상기 데이터 블록의 데이터부와 상기 CRC 기호에 기초하여 리드-솔로몬 검사 기호를 생성하는 수단
    을 포함하는 장치.
  18. 데이터를 송신하고 수신하는 시스템에 있어서,
    상기 시스템은 데이터부, CRC 기호 및 리드-솔로몬 검사 기호를 포함하는 데이터 블록을 전송하도록 동작하는 디바이스를 포함하고,
    상기 데이터 블록을 전송하도록 동작하는 디바이스는,
    a) 복수 개의 근을 갖는 CRC 생성 다항식을 이용하여 CRC 기호를 생성하도록 동작하는 CRC 부호 생성기와,
    b) 복수 개의 근을 갖는 리드-솔로몬 생성 다항식을 이용하여 리드-솔로몬 검사 기호를 생성하도록 동작하는 리드-솔로몬 부호 생성기와,
    c) 오류를 포함하는 수신된 데이터가 올바르게 교정되었는지를 결정하도록 동작하는 디바이스
    를 포함하고,
    상기 올바르게 교정되었는지를 결정하도록 동작하는 디바이스는,
    c-1) 적어도 하나의 오류를 포함하는 데이터 블록을 수신하도록 동작하는 수신기와,
    c-2) 상기 수신된 데이터 블록에 대하여 CRC 생성 다항식을 이용하여 적어도 하나의 CRC 신드롬을 생성하도록 동작하는 CRC 신드롬 생성기와,
    c-3) 상기 데이터 블록 내의 적어도 하나의 데이터를 교정하는 것을 시도하도록 동작하는 디바이스와,
    c-4) 상기 교정된 데이터 블록에 대응하는 CRC 신드롬을 갱신(update)하도록 동작하는 디바이스와,
    c-5) 상기 갱신된 CRC 신드롬을 이용하여 오류가 교정되었는지를 결정하도록 동작하는 디바이스
    를 포함하고,
    상기 CRC 생성 다항식의 근은 다음의 조건 1) 내지 3을 만족하는 시스템.
    1) 각 근의 지수는 서로 별개의 값이거나 모든 값에 대하여 기초 유한체의 순환 길이의 각 소인수로 모듈로(modulo) 연산한 값이다.
    2) 각 근은 리드-솔로몬 생성 다항식의 근과 중복되지 않는다.
    3) 적어도 한 근은 유한체의 원시 원소이다.
  19. 제49항에 있어서, 상기 데이터 블록을 전송하도록 동작하는 디바이스는 상기 데이터 블록의 데이터부에 기초하여 결정적으로 변경된 데이터 스트림을 생성하도록 동작하는 데이터 스크램블러(scrambler)를 더 포함하고,
    상기 CRC 부호 생성기는 결정적으로 변경된 데이터 스트림에 기초하여 CRC 기호를 생성하도록 동작하는 것이고,
    상기 리드-솔로몬 부호 생성기는 상기 데이터 블록의 데이터부 및 상기 CRC 기호에 기초하여 리드-솔로몬 검사 기호를 생성하도록 동작하는 것인 시스템.
KR1020000010355A 1999-03-16 2000-03-02 데이터 저장 장치용 순환 중복 검사 정보의 갱신 방법 및장치 KR100327653B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US09/269,000 US6446234B1 (en) 1999-03-16 1999-03-16 Method and apparatus for updating cyclic redundancy check information for data storage
US9/269,000 1999-03-16
US09/269,000 1999-03-16

Publications (2)

Publication Number Publication Date
KR20000076757A KR20000076757A (ko) 2000-12-26
KR100327653B1 true KR100327653B1 (ko) 2002-03-08

Family

ID=23025417

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020000010355A KR100327653B1 (ko) 1999-03-16 2000-03-02 데이터 저장 장치용 순환 중복 검사 정보의 갱신 방법 및장치

Country Status (3)

Country Link
US (1) US6446234B1 (ko)
KR (1) KR100327653B1 (ko)
SG (1) SG97859A1 (ko)

Families Citing this family (49)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7020835B2 (en) * 2000-10-19 2006-03-28 Oracle International Corporation Enhancements to data integrity verification mechanism
US6928607B2 (en) * 2000-10-19 2005-08-09 Oracle International Corporation Data integrity verification mechanism
US7404131B2 (en) * 2001-01-22 2008-07-22 Maxtor Corporation High efficiency, error minimizing coding strategy method and apparatus
US20030217320A1 (en) * 2002-05-20 2003-11-20 Gorshe Steven Scott Cyclic redundancy check circuit for use with self-synchronous scramblers
KR100657260B1 (ko) * 2002-12-02 2006-12-14 삼성전자주식회사 방송 테이블 변경 판단 방법
US7243289B1 (en) 2003-01-25 2007-07-10 Novell, Inc. Method and system for efficiently computing cyclic redundancy checks
US7484096B1 (en) * 2003-05-28 2009-01-27 Microsoft Corporation Data validation using signatures and sampling
US7457791B1 (en) 2003-05-30 2008-11-25 Microsoft Corporation Using invariants to validate applications states
US7149946B2 (en) * 2003-06-13 2006-12-12 Microsoft Corporation Systems and methods for enhanced stored data verification utilizing pageable pool memory
US7010469B2 (en) * 2003-09-30 2006-03-07 International Business Machines Corporation Method of computing partial CRCs
US7426676B2 (en) * 2004-01-14 2008-09-16 Broadcom Corporation Data retrieval from a storage device using a combined error correction and detection approach
KR100662918B1 (ko) * 2004-09-20 2007-01-02 삼성전자주식회사 오픈케이블 및 상기 오픈케이블에서 서비스 정보 갱신 방법
US7590923B1 (en) * 2004-10-27 2009-09-15 Marvell International Ltd. Architecture and control of Reed-Solomon error identification and evaluation
US8826093B2 (en) * 2005-01-19 2014-09-02 Qualcomm Incorporated Power saving method for coded transmission
US7627614B2 (en) * 2005-03-03 2009-12-01 Oracle International Corporation Lost write detection and repair
WO2007091779A1 (en) 2006-02-10 2007-08-16 Lg Electronics Inc. Digital broadcasting receiver and method of processing data
US7823049B2 (en) * 2006-03-15 2010-10-26 Mediatek Inc. Methods and apparatuses for generating parity symbols for data block
WO2007126196A1 (en) * 2006-04-29 2007-11-08 Lg Electronics Inc. Digital broadcasting system and method of processing data
WO2007136166A1 (en) 2006-05-23 2007-11-29 Lg Electronics Inc. Digital broadcasting system and method of processing data
US7730344B1 (en) * 2006-08-28 2010-06-01 Marvell International Ltd. System and method for error correction
US7873104B2 (en) * 2006-10-12 2011-01-18 Lg Electronics Inc. Digital television transmitting system and receiving system and method of processing broadcasting data
KR101285887B1 (ko) 2007-03-26 2013-07-11 엘지전자 주식회사 디지털 방송 시스템 및 데이터 처리 방법
KR101253185B1 (ko) 2007-03-26 2013-04-10 엘지전자 주식회사 디지털 방송 시스템 및 데이터 처리 방법
KR101285888B1 (ko) 2007-03-30 2013-07-11 엘지전자 주식회사 디지털 방송 시스템 및 데이터 처리 방법
US8433973B2 (en) * 2007-07-04 2013-04-30 Lg Electronics Inc. Digital broadcasting system and method of processing data
WO2009005326A2 (en) 2007-07-04 2009-01-08 Lg Electronics Inc. Digital broadcasting system and method of processing data
KR20090012180A (ko) 2007-07-28 2009-02-02 엘지전자 주식회사 디지털 방송 시스템 및 데이터 처리 방법
EP2191644A4 (en) * 2007-08-24 2015-01-07 Lg Electronics Inc DIGITAL BROADCASTING SYSTEM AND METHOD OF PROCESSING DATA IN A DIGITAL BROADCASTING SYSTEM
KR100928261B1 (ko) * 2007-09-08 2009-11-24 엘지전자 주식회사 비검출 오류 저감을 위한 신호 분할 및 crc 부착 방법
US8296634B2 (en) * 2010-02-27 2012-10-23 I Shou University Error correction decoder, error correction value generator, and error correction system
US8453032B2 (en) * 2010-04-21 2013-05-28 General Electric Company Energy and space efficient detection for data storage
US8381068B1 (en) * 2010-08-27 2013-02-19 Altera Corporation Partial reconfiguration and error detection in an integrated circuit
US8782487B2 (en) * 2012-04-18 2014-07-15 Lsi Corporation Systems and methods for locating and correcting decoder mis-corrections
US8782488B2 (en) * 2012-04-20 2014-07-15 Lsi Corporation Systems and methods for back step data decoding
US10152500B2 (en) 2013-03-14 2018-12-11 Oracle International Corporation Read mostly instances
US9094046B2 (en) 2013-09-03 2015-07-28 Lsi Corporation Systems and methods for variable sector count spreading and de-spreading
US8976471B1 (en) 2013-09-05 2015-03-10 Lsi Corporation Systems and methods for two stage tone reduction
US9767178B2 (en) 2013-10-30 2017-09-19 Oracle International Corporation Multi-instance redo apply
US9436550B2 (en) 2013-10-31 2016-09-06 Avago Technologies General Ip (Singapore) Pte. Ltd. Systems and methods for internal disk drive data compression
CN104834476B (zh) 2014-02-10 2016-10-19 安华高科技通用Ip(新加坡)公司 基于段结束标记的数据对准的系统和方法
US9184954B1 (en) 2014-07-02 2015-11-10 Seagate Technology Llc Systems and methods for directed soft data perturbation in layered decoding
US9892153B2 (en) 2014-12-19 2018-02-13 Oracle International Corporation Detecting lost writes
US9384761B1 (en) 2015-04-09 2016-07-05 Avago Technologies General Ip (Singapore) Pte. Ltd. Systems and methods for flexible variable code rate support
US11657037B2 (en) 2015-10-23 2023-05-23 Oracle International Corporation Query execution against an in-memory standby database
US10747752B2 (en) 2015-10-23 2020-08-18 Oracle International Corporation Space management for transactional consistency of in-memory objects on a standby database
US10698771B2 (en) 2016-09-15 2020-06-30 Oracle International Corporation Zero-data-loss with asynchronous redo shipping to a standby database
US10891291B2 (en) 2016-10-31 2021-01-12 Oracle International Corporation Facilitating operations on pluggable databases using separate logical timestamp services
US11475006B2 (en) 2016-12-02 2022-10-18 Oracle International Corporation Query and change propagation scheduling for heterogeneous database systems
US10691722B2 (en) 2017-05-31 2020-06-23 Oracle International Corporation Consistent query execution for big data analytics in a hybrid database

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0364172A2 (en) * 1988-10-14 1990-04-18 Advanced Micro Devices, Inc. Error detection and correction for a data storage system
JPH0575577A (ja) * 1991-09-17 1993-03-26 Fujitsu Ltd データエラー検出装置
JPH10285053A (ja) * 1997-04-08 1998-10-23 Toshiba Ave Corp データ伝送システム、誤り訂正装置、誤り訂正方法及びdvd再生装置
US5870413A (en) * 1996-09-25 1999-02-09 Mitsubishi Denki Kabushiki Kaisha CRC code generation circuit for generating a CRC code and a code error detection circuit for detecting a code error in a CRC code word
JPH1155129A (ja) * 1997-04-23 1999-02-26 Cirrus Logic Inc 積符号の誤り訂正および並行検査

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4410989A (en) 1980-12-11 1983-10-18 Cyclotomics, Inc. Bit serial encoder
US4564945A (en) 1983-06-20 1986-01-14 Reference Technology, Inc. Error-correction code for digital data on video disc
US4782490A (en) 1987-03-16 1988-11-01 Cythera Corporation Method and a system for multiple error detection and correction
US4847705A (en) 1987-07-07 1989-07-11 Digital Equipment Corporation Method and apparatus for encoding magnetic disk sector addresses
US5157669A (en) 1988-10-14 1992-10-20 Advanced Micro Devices, Inc. Comparison of an estimated CRC syndrome to a generated CRC syndrome in an ECC/CRC system to detect uncorrectable errors
JPH0652630A (ja) 1991-03-28 1994-02-25 Sony Corp データ記録方法
US5384786A (en) * 1991-04-02 1995-01-24 Cirrus Logic, Inc. Fast and efficient circuit for identifying errors introduced in Reed-Solomon codewords
US5375127A (en) 1992-03-25 1994-12-20 Ncr Corporation Method and apparatus for generating Reed-Soloman error correcting code across multiple word boundaries
US5446745A (en) 1992-10-05 1995-08-29 Mitsubishi Semiconductor America, Inc. Apparatus for correcting errors in optical disks
US5383204A (en) 1993-06-29 1995-01-17 Mitsubishi Semiconductor America, Inc. Parallel encoding apparatus and method implementing cyclic redundancy check and Reed-Solomon codes
US5465260A (en) * 1993-11-04 1995-11-07 Cirrus Logic, Inc. Dual purpose cyclic redundancy check
SG50471A1 (en) * 1993-11-04 1998-07-20 Cirrus Logic Inc Burst error corrector
JP3520576B2 (ja) * 1994-10-24 2004-04-19 ソニー株式会社 誤り訂正方法
EP0929942A1 (en) * 1996-10-01 1999-07-21 Symbios, Inc. A method of data protection

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0364172A2 (en) * 1988-10-14 1990-04-18 Advanced Micro Devices, Inc. Error detection and correction for a data storage system
JPH0575577A (ja) * 1991-09-17 1993-03-26 Fujitsu Ltd データエラー検出装置
US5870413A (en) * 1996-09-25 1999-02-09 Mitsubishi Denki Kabushiki Kaisha CRC code generation circuit for generating a CRC code and a code error detection circuit for detecting a code error in a CRC code word
JPH10285053A (ja) * 1997-04-08 1998-10-23 Toshiba Ave Corp データ伝送システム、誤り訂正装置、誤り訂正方法及びdvd再生装置
JPH1155129A (ja) * 1997-04-23 1999-02-26 Cirrus Logic Inc 積符号の誤り訂正および並行検査

Also Published As

Publication number Publication date
SG97859A1 (en) 2003-08-20
KR20000076757A (ko) 2000-12-26
US6446234B1 (en) 2002-09-03

Similar Documents

Publication Publication Date Title
KR100327653B1 (ko) 데이터 저장 장치용 순환 중복 검사 정보의 갱신 방법 및장치
US6438724B1 (en) Method and apparatus for deterministically altering cyclic redundancy check information for data storage
US5465260A (en) Dual purpose cyclic redundancy check
KR101110586B1 (ko) 연결된 반복 및 대수 코딩
US8151174B2 (en) Block modulus coding (BMC) systems and methods for block coding with non-binary modulus
US7293222B2 (en) Systems and processes for fast encoding of hamming codes
US6615387B1 (en) Method and apparatus for error detection
JP3610329B2 (ja) 大最小距離を用いたターボ符号化方法及びそれを実現するシステム
US7392461B2 (en) Decoding for algebraic geometric code associated with a fiber product
EP0373764B1 (en) Correction of random and burst errors
US20120317456A1 (en) Method and Apparatus for N+1 Packet Level Mesh Protection
EP1090473A1 (en) Digital data decoder that derives codeword estimates from soft data
EP0233075A2 (en) Method and apparatus for generating error detection check bytes for a data record
KR100294436B1 (ko) 송-수신통신시스템및인코딩방법
US7640462B2 (en) Interleaver and de-interleaver
JP2005522140A (ja) 硬入力の反復した順方向誤り修正の方法
US7296212B1 (en) Multi-dimensional irregular array codes and methods for forward error correction, and apparatuses and systems employing such codes and methods
US7346834B2 (en) Randomizer systems for producing multiple-symbol randomizing sequences
US5948117A (en) Modified Reed-Solomon error correction system using (W+i+1)-bit representations of symbols of GF(2w+i)
US8631307B2 (en) Method for encoding and/or decoding multimensional and a system comprising such method
JPS628056B2 (ko)
US7392454B2 (en) Error locating methods and devices for algebraic geometric codes
WO1998012819A1 (en) Improved multiple-burst-correction system
US7181677B1 (en) System and method for producing data and ECC code words using a high rate restricted-symbol code
JPH08293802A (ja) インターリーブ式誤り訂正方法

Legal Events

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

Payment date: 20110110

Year of fee payment: 10

LAPS Lapse due to unpaid annual fee