KR19990028535A - 디스크 드라이브 버퍼 내의 데이터 보호 방법 및 장치 - Google Patents
디스크 드라이브 버퍼 내의 데이터 보호 방법 및 장치 Download PDFInfo
- Publication number
- KR19990028535A KR19990028535A KR1019970709853A KR19970709853A KR19990028535A KR 19990028535 A KR19990028535 A KR 19990028535A KR 1019970709853 A KR1019970709853 A KR 1019970709853A KR 19970709853 A KR19970709853 A KR 19970709853A KR 19990028535 A KR19990028535 A KR 19990028535A
- Authority
- KR
- South Korea
- Prior art keywords
- crosscheck
- data
- buffer
- encoder
- data block
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, 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/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error 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/13—Linear codes
- H03M13/15—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1004—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/1608—Error detection by comparing the output signals of redundant hardware
- G06F11/1616—Error detection by comparing the output signals of redundant hardware where the redundant component is an I/O device or an adapter therefor
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Quality & Reliability (AREA)
- Computer Security & Cryptography (AREA)
- Algebra (AREA)
- Mathematical Physics (AREA)
- Pure & Applied Mathematics (AREA)
- Probability & Statistics with Applications (AREA)
- Detection And Correction Of Errors (AREA)
- Error Detection And Correction (AREA)
Abstract
데이터 통신 시스템의 오류 정정 코드와 연관된 크로스체크 코드를 데이터 완전성 코드로 사용하여 데이터 채널 내의 임시 저장 버퍼에 저장된 데이터를 보호하는 구조가 개시되어 있다. 바람직한 실시예에 의하면, 크로스체크 인코더와 비교회로를 호스트 처리 시스템으로부터 데이터를 수신하는 인터페이스 회로에 추가한다. 데이터 경로에 이미 제공된 크로스체크 회로에 구현된 동일한 리드 솔로몬 코드에 따라 인입되는 호스트 데이터를 부호화하여 리던던시 정보를 생성함으로서 오류 정정 코드에 의한 오정정을 검출한다. 인터페이스 크로스체크 인코더에 의해 생성된 크로스체크 리던던시를 블럭 메모리 버퍼 내의 그와 연관된 데이터 블럭에 추가시킨다. 크로스체크 회로를 이용하여 중복되는 크로스체크 바이트를 재생한 후에 재생된 크로스체크 바이트와 버퍼로부터의 크로스체크 바이트를 비교함으로써, 데이터 블럭의 완전성을 검사한다. 저장 매체로부터 데이터 블럭이 복구되는 역 경로에도 유사한 과정이 반복되며 버퍼를 포함하는 경로를 통해 호스트에 전달된다.
Description
디지털 데이터 전송 및 저장 시스템에서, 호스트 또는 전송 소스(source)로부터의 순간 데이터 패스(moment data passes)로부터 데이터가 안전하게 수신되거나 저장될 때까지의 경로뿐만 아니라 호스트나 전송 소스로의 역 경로에 해당하는, 전체의 데이터 경로에 걸쳐 데이터 완전성(integrity)을 유지하는 것이 바람직하다. 자기 저장 시스템에서는, 자기 저장 디스크와 같은 디드레이딩(degrading) 저장 매체로부터 판독하거나 저장 매체로 기록하는 과정에 신뢰성이 제공될 뿐 아니라, 종래의 ECC 기법에 의해 보호되지 않는 데이터 경로에 중간 지점을 포함시켜 전체의 판독/기록 경로에 걸쳐 오류 제어를 제공함으로써 신뢰성있는 데이터 전송률이 향상될 수 있다.
오류 검출 및 정정 기법은 일반적으로 잡음이 있는 데이터 채널을 통해 데이터 블럭을 전송하는 동안 발생하는 오류를 검출하고 정정하기 위한 부호화(encoding) 과정 동안 임의의 형태의 오버헤드 리던던시(overhead redundancy)를 데이터 블럭에 추가시키는 방법을 사용한다. 전형적으로, 추가된 리던던시 정보는 보호하려는 데이터 블럭의 정확한 비트 패턴으로부터 생성되므로, 이 패턴에 따라 달라진다. 부호화된 데이터 블럭을 수신하면, 수신된 데이터 블럭으로부터 (전송 이전에 리던던시 정보를 생성하기 위해 사용했던 동일한 코드화 알고리즘을 이용하여) 리던던시 정보를 재생하고 재생된 정보와 원래 추가되었던 정보를 비교함으로써 전송 처리의 신뢰도를 검사할 수 있다. 추가된 리던던시 정보가 재생된 리던던시 정보와 일치하지 않는다면, 하나 이상의 데이터 오류가 발생하였음을 추측할 수 있다. 이러한 일이 일어나면, 그 데이터를 다시 전송하거나 다시 판독하도록 하는 요청이 이루어지거나, 또는 오류 정정 능력을 갖는 코드인 경우에는 그 데이터 오류의 위치를 찾아내어 물리적으로 정정하는 요청이 이루어질 수 있다.
현재의 자기 저장 시스템에 의하면, 전형적으로 주오류 정정 코드("ECC") 및 구현 회로를 사용하여 자기 매체 자체의 저장 표면으로부터 데이터를 판독하거나 그 표면에 기록하는 과정 중에 발생하는 데이터 블럭의 오류를 검출하고 정정한다. 일반적으로 ECC와 다른 부호화 알고리즘을 이용하는 크로스체크 코드를 사용함으로써, ECC에 의해 수행된 오류 정정이 제대로 이루어졌는지를 검사하여 왔다. ECC와 크로스체크를 이용하여 오류 검사와 정정을 실행 중에(on the fly) 수행하는 디스크 드라이브 저장 시스템의 한 예가 발명의 명칭이 "디지털 콘트롤러에 구현된 온-더-플라이 오류 정정(On-The-Fly Error Correction With Embedded Digital Controller)"이고 피터슨(Peterson) 등에게 공통으로 양도된 미국 특허 제 5,241,546호에 개시되어 있다. 발명의 명칭이 "온-더-플라이 리드 솔로몬 오류 정정 코드용 교차 검사(Cross-Checking For On-The-Fly Reed Solomon Error Correction Code)"이고 뉴엔(Nguyen) 등에 공통으로 양도된 미국 특허 제5,422,895호에는 개선된 크로스체크용 코드 및 기법이 개시되어 있다. 이들 특허는 본 발명의 일부로서 참조되며 이들 특허에 설명되어 있는 바와 같이, ECC와 크로스체크를 조합함으로써 주어진 ECC 코드화 기법에서 ECC가 잘못 정정하게 되는 통계적 확률을 줄일 수 있다. 그러나, 이러한 ECC 및 크로스체크 코드는 데이터 디그레이딩 자기 저장 매체 상에 정보를 저장하는 것과 연관되어 있는 오류를 검출하고 정정하는 데에 제한되어 있다.
따라서, 주 ECC 및 크로스체크 코드에 의해 보호되지 않는 다른 부분의 데이터 채널에 오류 제어를 확대시킴으로써 오류 없이 데이터를 전송할 수 있는 가능성이 향상될 수 있다. 데이터가 저장 매체에 기록되기 이전에 그것이 호스트를 떠나는 순간부터 주 ECC 인코더/디코더 ("ENDEC")에 의해 그것이 부호화되는 시간까지 데이터를 보호하기 위해서는, 부가적인 코드화 기법을 이용할 필요가 있다. 유사하게, 저장 매체로부터 호스트에 이르는 데이터 경로도 또한 보호하여야 한다. ECC 및 크로스체크 코드를 이용하여 보호가 이루어지는 부분 이외의 다른 부분의 데이터 경로 상에서 발생하는 오류를 검출하기 위해 사용되는 코드를 본 명세서에서는 데이터 완전성 코드라 하겠다.
과거에는, 간단한 패리티 체크 코드 또는 순환 리던던시 코드("CRC")를 사용하여 호스트 인터페이스와 ECC 회로 간의 데이터 경로에 위치한 블럭 메모리 버퍼 내에 임시 저장된 데이터를 보호하였다. 이러한 코드는 전형적으로 각각의 데이터 바이트에 하나의 패리티 비트를 추가하는 것에 관련된 것으로서, 패리티 비트의 상태 (즉, "1" 또는 "0")는 보호하려는 데이터 바이트와 사용된 특정 패리티 코드에 따라 달라진다. "홀수(odd)" 및 "짝수(even)"의 패리티 구성에서는 데이터 심볼 내의 "1"의 개수를 총합하여 "1"의 전체 개수가, 홀수 패리티의 경우에는 홀수가 되고 짝수 패리티의 경우에는 짝수가 되도록 이 심볼에 "1" 또는 "0"을 추가시킴으로써 패리티 비트를 판단한다.
그러나, 패리티 코드에 공지된 약점은 패리티 비트를 이용하여 보호된 데이터 심볼 또는 블럭 내의 단일 비트 오류만을 신뢰성있게 검출할 수 있는 반면에, 다수의 비트 오류는 선정된 패리티에 대해 서로 상쇄되어 검출되지 않는다는 점이다. 또한, 대부분의 RAM 제조업자들은 9 비트폭 또는 18 비트폭의 RAM칩을 공급하려는 계획이 없기 때문에, 블럭 버퍼 메모리에는, 전형적으로 동적 랜덤 액세스 메모리("DRAM") 저장 장치에는 추가 패리티 비트를 수용할 수 있는 여분의 데이터 공간이 없다. 따라서, 간단한 패리티 체크 코드에 대한 좀더 강력한 대안이 필요할 뿐만 아니라, RAM 버퍼 메모리를 이용하는 자기 기록 및 다른 데이터 전송 시스템에서 이들 코드를 데이터 완전성 코드로 사용할 수 있는 능력이 급속히 사라지고 있다.
순환 리던던시 코드는 보호되는 심볼 또는 전체 데이터 블럭 내에 복수의 비트 오류를 검출할 수 있는 능력을 갖고 있다는 점에서 단일 비트 패리티 코드에 비해 개선된 점을 제공한다. 이들 코드는 심볼 또는 블럭 내의 비트에 대한 고차원의 조합으로부터 도출되어 복수의 리던던시 비트를 갖게 될 수 있다. 그러나, CRC를 사용하여 블럭 버퍼 메모리 내의 데이터를 보호하기 위해서는 버퍼의 양측에 CRC 회로를 추가시켜야 한다.
전술한 바와 같이, ECC에 따라 이루어지는 오류 정정은 크로스체크 코드에 의해 크로스 체크되어 오류 정정 처리에 대한 전체 신뢰성을 증가시킬 수 있다. 뉴엔 등에 허여된 미국 특허 제 5,422,895호에 개시된 크로스체크 코드는 리드 솔로몬 코드로서 종래의 패리티 체크 및 CRC 코드에 비해 오류 정정 능력이 매우 향상된 것이다.
따라서, 데이터 완전성 코드로서 기존의 크로스체크 코드와 하드웨어를 이용하는 시스템 구조를 제공하여 기존의 버퍼 보호 기법에 좀더 강력한 대안을 제공하는 것이 바람직하다. 이러한 구조는 종래 기술의 패리티 체크와 CRC 코드에 비해 주요한 개선을 이루게 되며 좀더 강력한 데이터 완전성 기법이 최소의 부가적인 하드웨어로서 제공될 수 있다.
<발명의 요약>
본 발명의 일반적인 목적은 데이터 완전성 코드와 이와 연관되는 하드웨어 구조를 제공하여 데이터 경로 내에 블럭 버퍼 메모리에 임시로 저장되는 데이터를 보호하는 것이다.
본 발명의 또다른 목적은 ECC 기능과 연관된 크로스체크 코드와 데이터 완전성 코드를 구현하는 적어도 하나의 기존 크로스체크 인코더 하드웨어를 이용하여 디스크 저장 드라이브의 데이터 채널 내에 블럭 버퍼 메모리에 일시적으로 저장된 데이터 블럭을 보호하는 것이다.
본 발명의 또다른 목적은 주변 저장 장치의 호스트 인터페이스 회로에 크로스체크 인코더와 비교 회로를 제공하여 블럭 버퍼 메모리의 양측에 크로스체크/데이터 완전성 코드를 구현하는 것이며, 인터페이스 크로스체크 인코더는 ECC와 연관된 크로스체크 인코더에서 이용된 코드화 알고리즘과 동일한 알고리즘을 구현한 것이다.
본 발명의 좀더 구체적인 목적은 크로스체크/데이터 완전성 코드를 제공하고 GF(28)에 대해 연산하여 2개의 리던던시 바이트를 발생시키는 인코더를 구현하여 버퍼를 통과하는 데이터의 각 블럭을 보호하는 것이다.
본 발명의 좀더 관련된 구체적인 목적은, 약분할 수 없는 갈루아(Galois) 필드 다항식 생성자 p(x)=x8+x4+x3+x2+1와 초기값이 2B (16진법)인 alpha1원소에 의해 정의되는 GF(256)에 대해 연산하는 코드를 갖는 x2+ alpha134x + alpha1형태의 g(x)인 다항식을 특징으로 하는 크로스체크/데이터 완전성 코드를 제공하는 것이다.
본 발명의 이러한 목적 및 다른 목적, 특징 및 특성에 따라, 데이터 완전성 코드로서 기존의 ECC 크로스체크 코드를 이용하는 구조를 제공하여 데이터 저장 장치 내의 임시 저장소에 저장되어 있는 데이터를 보호하는 것이다.
바람직한 실시예에 의하면, 호스트 처리 시스템으로부러 데이터를 수신하는 인터페이스 회로에 크로스체크 인코더와 비교 회로를 추가하여 ECC와 연관되어 있는 크로스체크 인코더와 함께, 이들 2개의 인코더 사이의 데이터 경로에 위치한 블럭 데이터 메모리에 일시적으로 저장되어 있는 데이터의 완전성 검사를 수행할 수 있는 능력을 제공한다. 호스트 인터페이스 내의 크로스체크 인코더는 들어오는 호스트 데이터를 부호화하여 다기능 시퀀서/콘트롤러 내에 이미 제공된 크로스체크 인코더에서 사용된 동일한 리드 솔로몬 코드에 따라 리던던시 정보를 생성하여, ECC에 의한 잘못된 오류 정정을 검출하게 된다. 인터페이스 크로스체크 인코더에 의해 생성된 크로스체크 리던던시를 블럭 메모리 버퍼 내의 연관된 데이터 블럭에 추가시킨다. 버퍼를 통과하는 데이터 블럭의 완전성을 ECC 크로스체크 회로를 이용하여 검사함으로써 중복되는 크로스체크 리던던시를 재생한다. 그 후에, 재생된 크로스체크 리던던시와, 버퍼로부터 들어오는, 추가된 크로스체크 리던던시를 비교하여 데이터 블럭 내의 오류를 검출한다.
이러한 처리는 데이터 블럭이 디그레이딩 저장 매체로부터 복구되어 호스트로 전송될 때 역 경로에서 반복될 수 있다. 이러한 경우, 데이터 블럭은 그에 추가된 크로스체크 리던던시와 함께 저장 매체로부터 판독되어 버퍼에 기록된다. 데이터 또는 크로스체크 리던던시가 저장 매체로부터 복구될 때 오류가 있는 것으로 판단되면, 다음 처리로 진행하기 이전에 ECC에 의해 버퍼에서 그 오류들을 정정할 수 있다. 각각의 데이터 블럭이 버퍼로부터 호스트에 전달될 때 호스트 인터페이스에서 그 인터페이스 내의 크로스체크 인코더와 비교 회로의 조합에 의해 데이터의 완전성을 검증하고 판독 경로에서 사용된 재생성 및 비교의 동일한 처리가 이어진다.
따라서, 바람직한 구조는 데이터 블럭 버퍼 내의 데이터를 보호하기 위해 버퍼의 인터페이스측에 기존의 크로스체크 코드를 데이터 완전성 코드로 확장시켜 사용함으로써, 간단하며 훌륭한 데이터 보호 장치 및 이에 연관된 방법을 제공하는 것이다. 버퍼링된 데이터를 보호하기 위한 이 방식은 종래의 방식에 비해 상당히 하드웨어를 줄일 수 있으며, 동시에 이전 방식에서 이용할 수 있었던 것보다 좀더 강력한 리드 솔로몬 알고리즘에 기초한 오류 정정을 제공한다. 이렇게 크로스체크 코드를 이중으로 사용함으로써 하드웨어를 거의 추가할 필요가 없으며, 인터페이스 회로에 ECC 크로스체크 회로의 인코더 부분만을 중복시킴으로써, 버퍼에 저장된 데이터에 대한 데이터 완전성 검사 능력이 제공된다.
본 발명의 이들 장점, 특징 및 목적은 본 발명의 바람직한 실시예에 대한 이하의 상세한 설명 및 첨부된 도면을 참조하면서 완전히 이해될 수 있으리라 본다. 여러 도면에서 일치하는 부분은 유사한 참조번호를 사용하였다.
본 발명은 일반적으로 데이터 전송 및 저장 시스템에서 잘못된 전송으로부터 데이터 블럭을 보호하기 위한 데이터 코드화 방법 및 장치에 관한 것이다. 더욱 구체적으로, 본 발명은 데이터 저장 장치의 데이터 경로 내의 오류 정정 코드화 회로와 연관되어 있는 크로스체크(cross-check) 코드를 오류 검출 코드로서 적용하는 시스템 구조에 관한 것으로서, 데이터 경로 내에 포함된 블럭 버퍼 메모리 어레이의 양측에 크로스체크 코드의 연산을 분산시킴으로써 버퍼에 일시적으로 저장된 데이터를 보호한다.
도 1은 ECC 크로스체크 코드를 사용하여 기록 경로 내의 임시 블럭 메모리 버퍼에 저장된 데이터 블럭을 보호하는 본 발명에 따른 구조를 결합한 자기 저장 장치 내의 기록 경로에 대한 상위 레벨 블럭도.
도 2는 도1과 유사한 블럭도로서, 본 발명에 따라 데이터 채널의 판독 경로의 블럭 메모리 버퍼에 저장된 데이터를 보호하기 위한 시스템 구조를 예시한 블럭도,
도 3은 자기 저장 매체에 기록된 데이터 블럭의 형식(format)을 설명한 것이다. 블럭은 512 바이트의 데이터와, 이어지는 2개의 크로스체크 바이트, 및 이어지는 12개의 오류 정정 바이트를 포함한다.
크로스체크 코드를 사용하여 데이터 저장 장치의 양방향 데이터 경로 내의 데이터 버퍼에 저장된 데이터를 보호하는 예시적인 시스템 구조가 도 1과 도 2에 예시되어 있다. 도 1과 도 2 각각에 예시된 판독 및 기록 경로는 호스트 컴퓨팅 시스템(100)과 저장 매체(122) 간에서 실제로는 하나의 양방향 데이터 경로를 형성함을 이해할 수 있을 것이다. 판독 경로와 기록 경로를 분리하여 예시한 것은 단지 각각의 데이터 경로에 대한 시스템 동작에 대한 설명을 위해서이다. 설명을 좀더 쉽게 하기 위해, 판독 경로와 기록 경로의 양쪽에 공통인 회로 소자는 각각의 도면에서 동일한 참조 번호를 사용하였다. 그리고, 프라임(′)과 이중 프라임(″) 표시를 추가된 크로스체크 리던던시와 함께 사용하여, 도면에 예시된 데이터 경로 내의 상이한 소스 지점에서 리던던시를 재생하였음을 나타냈다.
이제 도 1을 참조하면, 호스트 컴퓨팅 시스템(100)으로부터 호스트 인터페이스(101) (점선 상자로 표시됨)를 통과하는 데이터는 2개의 분리된 데이터 경로를 따라, 쉬프트 레지스터, 바람직하게는 선입선출("FIFO") 방식의 쉬프트 레지스터(102)와 인터페이스 크로스체크 인코더(104) (도면에 "크로스체크"라 되어 있음)로 입력된다. 호스트(100)과 호스트 인터페이스(101) 간의 통신은, 예를 들어 SCSI 또는 IDE 인터페이스일 수 있으며, 특정 호스트 인터페이스(101)과 연관된 통신 프로토콜에 따라 확립된다. 인터페이스(101)로부터 떨어진 곳에 인터페이스 크로스체크 인코더(104)를 구현할 수 있지만, 바람직하게는 주문형 ASIC 패키지의 일부로서 인터페이스(101) 내에 형성한다. 인터페이스(101)로의 데이터 경로는 8과 16 비트폭 간을 스위치할 수 있어 호스트(100)으로부터의 데이터를 바이트 크기 또는 워드 크기로 포맷팅(formatting)할 수 있다.
각각의 데이터 블럭을 구성하는 데이터 바이트는 종래의 방식으로 인코더(104)에 인가되는 바이트 클럭 신호에 따라 크로스체크 인코더(104)로 순서대로 클럭된다(clocked). 이와 동시에, 데이터 바이트는 FIFO(102)의 내부 및 외부로 또한 순서대로 클럭되어 멀티플렉서(106)을 통과하여 임시 저장 장치 DRAM 버퍼(108)로 간다. 물론, 본 명세서에서 설명하고 있는 데이터 블럭은 바이트 (즉, 8비트 심볼)로 포맷되어 있지만, 이외에도 응용에 따라서는 10 또는 16 비트 심볼과 같은 다양한 심볼 크기 및 블럭 크기를 위한 수많은 상이한 블럭 포맷팅 선택사양을 사용할 수 있다. 물론, 상이한 데이터 심볼 크기를 사용하게 되면 이에 적합한 코드화 식 및 그에 따른 하드웨어를 필요로 하게 된다.
도 1의 판독 경로에 대한 설명으로 되돌아 오면, 버퍼(108)은 온보드(on-board) 마이크로 콘트롤러(112)에 의해 감독되는 버퍼 콘트롤러(110)의 제어 하에서 데이터 바이트를 수신하게 된다. 크로스체크/데이터 완전성 코드를 이용하여 보호하려는 데이터 블럭내의 모든 바이트가 FIFO(102)와 인코더(104)를 통해 검사된 후에, 인코더(104)는 생성된 리던던시 바이트 (도면에서는 XCHK라고 되어 있음)를 인코더로부터 멀티플렉서(106)로의 경로를 제공하는 라인(105) 상에 내보낸다. 인코더(104)가 XCHK 리던던시 바이트를 내보내는 동일한 클럭 사이클 동안, 멀티플렉서(106) 상의 선택 라인(107)은 상태를 바꾸어 출력되는 XCHK 리던던시가 멀티플렉서(106)을 통과하여 버퍼(108)에 저장되어 있는, 이 리던던시에 연관된 데이터 블럭에 추가되도록 한다. 도 1과 도 2에 의하면, 버퍼(108)은 512 바이트의 섹터 크기를 갖는 데이터 블럭을 저장하는 것으로서 도시되어 있으며, 각 데이터 블럭은 그 자신에 추가되는 연관된 리던던시를 갖게 되어 완전한 버퍼 데이터 코드 워드를 형성하게 된다. 데이터 블럭의 크기는 응용하기에 따라 달라질 수 있으며 512 바이트란 블럭 크기는 디스크 드라이브 저장 시스템의 전형적인 예로써 도시된 것뿐임을 이해할 수 있을 것이다.
인코더(104)는 바람직하게는, ECC에 의한 오정정(miscorrection)을 검출하기 위해 사용된 크로스체크 인코더(116)에 구현된 동일한 리드 솔로몬 코드에 따라, 데이터를 부호화하여 리던던시 정보를 생성한다. 본 발명의 바람직한 부호화 알고리즘에 따르면, 2바이트의 데이터 완전성/크로스체크 리던던시를 버퍼(108)에 저장되어 있는 각각의 데이터 블럭에 추가시킨다. 뉴엔 등에게 특허된 미국 특허 제 5,422,895호에는, 예시적이고 바람직한 크로스체크 코드이며, 또한 본 명세서에서 개시되는 데이터 완전성 코드로서 이용할 수 있는 코드가 개시되어 있다. 이러한 크로스체크 코드는 다음과 같은 다항식 생성자 형태이다.
GXC(x) = (x + alpha1)(x + alpha0)
= (x + alpha)(x + 1)
= x2+ alpha134x + alpha1
이러한 코드를 구현하는 리드 솔로몬 인코더(104)는 버퍼(108)에 저장되어 있는 각각의 데이터 블럭에 대해 2개의 체크 바이트를 생성한다. 이 코드에 대한 수학적 연산은 256개의 원소를 갖는 갈루아 필드 (GF(256) 또는 GF(28))에 관한 갈루아 필드 연산 법칙에 따라 수행된다. 바람직한 GF(256)은 2B (16진수)에 해당하는 초기의 alpha1원소값과 그의 약분 불가한 다항식 생성자 p(x) = p(x)=x8+x4+x3+x2+1에 의해 정의된다. 이 갈루아 필드에 대한 로그 및 안티로그 표는 뉴엔 등에게 특허된 미국 특허 제 5,422,895호에 개시되어 있다.
크로스체크 바이트, XCHK를 버퍼(108)에 저장되어 있는 데이터 블럭에 추가시킨 후에, 버퍼 콘트롤러(110) 및 슈퍼바이저인 마이크로 콘트롤러(112)의 제어 하에, 이들 저장된 코드 워드 (즉, 데이터 섹터와 이에 추가된 XCHK 바이트)를 버퍼(108)로부터 순차적으로 내보내어 경로(111)을 통해 시퀀서/콘트롤러 회로(109)로 보낸다. 시퀀서/콘트롤러 회로(109)는 ECC 인코더 회로(114), ECC 크로스체크 생성 회로(116), 비교 회로(118), 및 멀티플렉서(120)을 포함한다. 도 1 및 도 2에 도시된 바와 같이, 바람직하게는 버퍼 콘트롤러(110)를 주문형 ASIC 설계의 일부로서 시퀀서/콘트롤러 회로(109) 내에 포함시킨다.
시퀀서/콘트롤러 회로(109)의 내부에서는, 인입 데이터 경로(111)이 4개의 병렬 경로(113, 117, 119, 121) 각각으로 나뉜다. 제1 경로(113) 상에서는, 버퍼(108)로부터 데이터 블럭의 데이터 바이트 (이 실시예에서는 512)를 멀티플렉서(120)을 통해 순차적으로 내보내어 데이터 트랜스듀싱 헤드(transducing head, 도시되지 않음)에 전달하며, 이 데이터 트랜스듀싱 헤드는 종래의 방식으로 디그레이딩 저장 매체(122) 상으로 데이터 비트를 연속적으로 기록하게 된다. 데이터 바이트가 멀티플렉서(120)를 통해 내보내짐과 동시에, 그들은 또한 경로(117)을 거쳐 멀티플렉서(115)를 통해 ECC 인코더 회로(114)에 순서대로 들어가고 데이터 경로(119)를 거쳐 ECC 크로스체크 인코더 회로(116)에 역시 순서대로 들어간다.
ECC 크로스체크 인코더 회로(116)는 경로(119)를 거쳐 회로로 입력된 데이터에 응답하여 크로스체크 리던던시 바이트, XCHK′를 생성한다. 바람직하게는, 이들 크로스체크 바이트를, 인터페이스 회로(101)에서의 XCHK 인코더(104)에서 크로스체크 바이트, XCHK를 생성하기 위해 사용했던 동일한 다항식 생성자 및 이를 구현한 동일한 인코더 회로를 사용하여 생성한다. 전술한 바와 같이, 본 발명의 바람직한 크로스체크 인코더는 다항식 생성자 GXC(x) = x2+ alpha134x + alpha1에 따라 2바이트의 크로스체크 리던던시를 생성한다.
이러한 실시예에 의하면, 전체 512바이트의 데이터 섹터가 ECC 크로스체크 인코더(116)를 통해 순서대로 내보내진 후에, 2바이트의 XCHK′바이트가 다음 두 개의 바이트 클럭 사이클에 걸쳐 내보내어져 멀티플렉서(115)를 통해 ECC 인코더(114)로 입력된다. 이들 XCHK′바이트는 또한 멀티플렉서(120)과 비교 회로(118)으로 입력된다. 비교 회로(118)은 도 1에 가산 회로로서 도시되어 있으며, 이는 들어오는 XCHK 및 XCHK′바이트에 대해 XOR 비트 연산을 수행한다. 실제로, 비교 회로(118)은 본 기술 분야의 통상의 지식을 가진 자에게 공지되어 있는 바와 같이 병렬의 XOR 비트 연산 게이트로서 구현될 수 있다.
XCHK′바이트가 크로스체크 인코더(116)으로부터 나가는 2개의 바이트 클럭 사이클 동안, 멀티플렉서(120)의 선택 라인(123)은 상태를 바꾸어 XCHK′바이트를 멀티플렉서(120)을 통과시켜 디그레이딩 저장 매체(120)에 기록함으로써, 이전에 기록된 데이터 섹터에 그 바이트를 추가시킨다. XCHK′바이트가 디그레이딩 저장 매체(122)에 기록되는 것과 동시에, 멀티플렉서(115)의 선택 라인 (도시되지 않음)은 또한 상태를 바꾸어 XCHK′바이트가 ECC 인코더(114)의 입력으로 전달되도록 한다.
ECC 인코더(114)는, 데이터 바이트를 나타내며 이 실시예에서는 크로스체크 바이트가 되는, 선정된 수의 ECC 체크바이트를 생성한다. 버퍼(108)로부터의 데이터는 경로(117)을 거쳐 멀티플렉서(115)를 통해 ECC 인코더(114)에 입력된다. 모든 데이터 바이트가 인코더(114)를 통해 클럭된 후에, 새롭게 생성된 XCHK′바이트는 ,전술한 바와 같이, 멀티플렉서(115)를 통해 ECC 인코더(114)로 입력된다.
따라서, ECC 인코더(114)에 의해 생성된 ECC 체크바이트는 매체(122) 상에 기록되어 있는 데이터 바이트 및 추가된 크로스체크 바이트 모두를 포함하고 있으며(cover), 데이터 바이트 뿐만 아니라 크로스체크 바이트에서 발생할 수 있는 오류를 정정할 수 있는 능력을 제공하게 되는 것이다. 판독 경로에 관련하여 이러한 능력의 중요한 점을 간단히 설명하기로 한다.
전체 512 바이트의 데이터와 2개의 크로스체크 바이트가 ECC 인코더(114)를 통해 클럭되면, 인코더(114)에 의해 생성된 ECC 체크바이트 (도면에서는 "ECC"라 되어 있음)는 멀티플렉서(120)으로 출력된다. 이 시점에서, 멀티플렉서(120)의 선택 라인(123)은 스위치되어 ECC 체크 바이트가 멀티플렉서(120)을 통과하여 종래의 방식으로 저장 매체(122)에 기록되도록 한다. 도 3에 도시된 바와 같이, ECC 체크바이트는 이전에 기록된 데이터 바이트와 크로스체크 바이트와 함께 저장 매체(122) 내에 하나의 리드 솔로몬 코드 워드를 형성한다. 도 3에 도시된 바와 같이, 저장 매체에 기록된 예시적인 526 바이트는, 512 바이트의 데이터, 즉 하나의 섹터와, 이어지는 2개의 크로스체크 바이트, xc[513]과 xc[514], 그리고 이어지는 12개의 ECC 바이트, ecc[515] 내지 ecc[526]으로 되어 있다.
각각의 데이터 블럭에 대해 생성된 ECC 체크바이트 수는 ECC 인코더 회로(114)에 의해 구현되는 특정 ECC 다항식 생성자에 의해 판단된다. 각각의 512 바이트 데이터 섹터에 대해 12개의 ECC 체크 바이트 (데이터 인터리브마다 4개)를 생성하는 ECC 인코더의 예는 참조되는 피터슨 등의 특허에 예시되어 있으며, ECC 부호화 처리에 대한 좀더 상세한 설명을 원하는 경우에는 이 특허를 참조하기 바란다. 데이터 섹터의 끝부분에 있는, 새롭게 판단된 크로스체크 바이트, XCHK′를 ECC 인코더(114)의 입력으로 공급하는 대안으로서, 인터페이스(101) 내의 크로스체크 인코더(104)에 의해 생성된 크로스체크 바이트, XCHK를 그와 연관된 데이터 블럭 다음에 버퍼(108)의 외부로 클럭킹하여 ECC 인코더(114)로 입력시킬 수 있다.
새롭게 생성된 XCHK′바이트와 버퍼(108)에 기록되어 있는 XCHK 바이트를 비교함으로써 데이터 완전성 검사를 수행한다. 이러한 비교는 ECC 크로스체크 인코더(116)으로부터 출력되는 XCHK′바이트와 버퍼(108)로부터의 XCHK 바이트가 모두 이들 바이트 값이 동일한 지를 판단하기 위해 XOR 비트 연산을 수행하는 비교 회로(118)의 입력으로 전송되는 마지막 두 바이트 사이클 동안 이루어진다. XCHK′와 XCHK 바이트가 동일하지 않다면, 즉 XOR 비트 연산이 0이 아닌 결과를 낸다면, 버퍼(108) 내의 데이터에 하나 이상의 오류가 발생한 것으로 추정된다. 이러한 경우, 오류 플래그가 생성되어 바이트로 콘트롤러(112)로 보내어진다. 마이크로 콘트롤러(112)는 오류 플래그를 수신하면, 인터페이스(101)을 통해 호스트로 그 오류가 발생한 데이터 섹터를 재전송할 것을 요청할 수 있다.
이제 도 2를 참조하면, 판독 경로에서 크로스체크 코드를 사용하여 버퍼링된 데이터를 보호하는 것은 기록 경로에서의 코드 연산과 유사하며, 단지 방향만 바뀌었음을 알 수 있다.
바람직한 실시예에서는, 데이터 섹터와 이에 연관된 크로스체크 및 ECC 리던던시, XCHK′및 ECC 각각을 저장 매체(122)의 표면으로부터 판독하여 경로(126)을 거쳐 시퀀서/콘트롤러(109)로 입력한다. 시퀀서/콘트롤러(109)의 내부에서는 경로(126)이 3개의 병렬 경로(127, 127, 129)로 나뉘어, ECC 블럭(130), ECC 크로스체크 블럭(131), 및 직접 블럭 버퍼(108) 각각에 접속된다. 도 2에 도시된 바와 같이, 데이터 섹터와 이에 연관된 크로스체크 바이트 XCHK′는 버퍼 콘트롤러(110) 및 슈퍼바이져인 마이크로 콘트롤러(112)의 제어하에 버퍼(108)로 직접 전송된다.
따라서, 이 실시예에서는, 버퍼(108)의 데이터 블럭에 추가되는 크로스체크 바이트가 바람직하게는 시퀀서/콘트롤러(109) 내에서 재생되지 않고, 그 대신에 저장 매체(122)로부터 버퍼(108)에 직접 전송된다. 이러한 이유는 주 ECC가, 마이크로 콘트롤러(112)의 도움으로, 버퍼(108)로 들어가 저장 매체로부터 복구된 크로스체크 바이트 XCHK′의 오류를 물리적으로 정정할 수 있기 때문이다. 이하에서 이를 좀더 상세히 설명하기로 한다.
저장 매체(122)로부터 버퍼(108)에 데이터 및 크로스체크 바이트를 전송하는 것과 동시에, 또한 각 섹터의 데이터가 ECC 블럭(130)과 ECC 크로스체크 블럭(131)을 통해 한번에 한 바이트씩 순서대로 클럭된다. 도 2에 도시된 바와 같이, 저장 매체(122)로부터 전체 리드 솔로몬 코드 워드, 즉 데이터와 크로스체크 바이트 XCHK ′및 ECC 체크 바이트인 ECC가 ECC 블럭(130)으로 입력되고, 데이터와 크로스체크 바이트, XCHK′만이 ECC 크로스체크 블럭(131)으로 입력된다. ECC 블럭(130)과 ECC 크로스체크 블럭(131)은 바람직하게는 판독 경로의 ECC 인코더(114) 및 ECC 크로스체크 인코더(116)과 동일한 회로를 공유하는 것이지만 (도 2 참조), 이들 회로에 대하여 상이한 참조 번호를 사용하여, 이들 회로가 추가적인 회로를 포함하여, 데이터 및 그와 함께 수신된 체크 바이트를 단순히 재 부호화하는 경우와 같이, 그들의 출력에서 단순히 나머지 값보다 ECC 및 크로스체크 신드롬(syndrome)을 생성할 수 있음을 나타낸다. 피터슨 등에 허여된 미국 특허에 개시된 바와 같은 나머지 값을 생성하는 ECC 블럭(130)의 경우에, 펌웨어 루틴을 실행하는 마이크로 콘트롤러를 초기화하여 나머지 값을 신드롬 값으로 변환시킬 수 있다.
하드웨어로 생성되거나 펌웨어를 실행시키는 마이크로 콘트롤러(112)의 도움이든지 어느 경우이든간에, 오류를 정정하기 위해서는 ECC와 크로스체크 신드롬이 필요하다. ECC 신드롬 값은 그 후에 피터슨 등의 특허에 설명되어 있는 것처럼 해석되어 버퍼(108) 내에 오류가 있는 크로스체크 바이트 뿐만 아니라 오류가 있는 데이터를 정정하기 위해 사용되는 오류 값과 위치 값을 산출한다. 크로스체크 신드롬을 사용하여 ECC의 오정정을 검출하고 뉴엔 등에게 허여된 미국 특허 제5,433,895호에 개시되어 있는 것처럼 생성될 수 있다.
전술한 바와 같이, 버퍼 내의 데이터 블럭내에서 오류가 검출된다면, 검출된 오류의 개수가 사용되는 특정 ECC 코드의 정정 능력 범위에 있는 한, ECC를 이용하여 이들 오류를 정정할 수 있다. 데이터 오류가 발생하면, 그들의 크로스체크 기능을 올바르게 수행하기 위해서는 (그들은 오류가 발생한 데이터에 근거하고 있기 때문에), 참조되는 뉴엔 등의 특허에 개시된 바와 같이, 크로스체크 신드롬을 재구성하여야 하지만, 버퍼(108) 내의 오류가 발생한 데이터 블럭에 추가되는 크로스체크 리던던시에는 동일하게 적용되지 않는다. 이러한 이유는 버퍼(108)의 크로스체크 바이트가 바람직하게는 저장 매체(122)로부터 바로 생성되며, 오류로 인해 저장 매체(122)로부터 복구되는 데이터 블럭으로부터 시퀀서/콘트롤러(109)에서 재생되는 것은 아니기 때문이다.
크로스체크 바이트 자체에 오류가 있는 경우에, ECC는, 데이터 바이트 오류에 대해 행한 것처럼, 이둘 오류를 검출하여 버퍼(108)을 물리적으로 액세스하여 그들을 정정할 수 있다. 이러한 능력으로 인해, 정정된 크로스체크 바이트, XCHK′가 버퍼(108)에 일시적으로 저장된 데이터 블럭에 추가될 수 있다.
임의의 오류 정정 루틴이 요구되어 수행된 이후에, 데이터 섹터와 그에 추가된 크로스체크 바이트, XCHK′는 버퍼 콘트롤러(110)의 제어하에 버퍼(108)의 외부로 순서대로 클럭되어 경로(132)를 통해 인터페이스 회로(101)로 간다. 경로(132)를 통해 버퍼(108)의 출력이 크로스체크 생성 회로(116), 비교 회로(124) 및 FIFO(102)로 연결된다.
FIFO(102)로 입력되는 데이터 블럭의 각각의 데이터 바이트는 인터페이스(101)의 데이터 속도에 따라 호스트(100)으로 출력된다. 이들 데이터 바이트는 또한 순서대로 크로스체크 인코더 회로(104)로 클럭되어 전술한 크로스체크 부호화 알고리즘에 다라 재부호화된다. 크로스체크 인코더(104)는, 버퍼(108)로부터 모든 512의 데이터 바이트가 그의 부호화 회로를 통해 클럭된 이후의 출력부에서, 2개의 크로스체크 리던던시 바이트, XCHK′를 생성한다.
호스트 인터페이스(101)에서의 데이터 완전성 검사는 인터페이스 크로스체크 인코더(104)에 의해 생성된 XCHK″바이트와 버퍼(108)에 저장된 XCHK′바이트를 비교함으로써 수행된다. 이러한 비교는, 인터페이스 크로스체크 인코더(104)로부터 출력된 XCHK″바이트와 버퍼(108)로부터 인입되는 XCHK′바이트가 경로(132)를 거쳐 비교 회로(118)의 입력부에 도달할 때, 각각의 버퍼링된 코드 워드, 즉 데이터의 512바이트와 2개의 크로스체크 바이트에 대한 마지막 두 바이트 클럭 사이클에 거쳐 수행된다. XCHK″바이트와 XCHK′바이트가 동일하지 않다면, 버퍼(108) 내에 하나 이상의 데이터 오류가 발생하였음을 추측할 수 있다. 이러한 경우, 비교 회로(124)로부터의 오류 플래그가 마이크로 콘트롤러(112)로 보내어 진다. 마이크로 콘트롤러(112)가 오류 플래그를 수신하면, 시퀀서/콘트롤러(109)로 오류가 발생한 데이터 섹터를 판독하라는 요청을 하게 된다.
리드 솔로몬 방식의 크로스체크 코드는 데이터 완전성 검사 동안에 검출된 오류를 (리드 솔로몬 코드의 공지된 속성에 따라) 실제 정정할 수 있지만, 기록 처리 중에 버퍼(108)에서 발생한 데이터 오류의 경우에 호스트(101)에 정보를 재전송할 것을 요청하거나, 판독 과정중에 발생하는 오류의 경우에 저장 매체(122)로부터 데이터를 재판독하는 것이 비교적 용이하며, 이러한 정정 루틴은 전적으로 선택 사양으로 구성할 수 있다.
통상적으로, 리드 솔로몬 방식의 데이터 완전성 코드를 응용하여 보호할 수 있는 최대의 블럭 길이는 2m-1의 수식으로 판단할 수 있으며, 이는 m 비트 리드 솔로몬 코드의 "자연스러운 블럭 길이"를 정의한다. 리드 솔로몬 코드의 간격 속성은 자연스러운 블럭 길이보다 (추가되는 리던던시를 포함하는) 적은 심볼을 갖는 데이터 블럭을 제공하며, 임의의 두 코드 워드 간의 그 간격은 r + 1 심볼에 해당한다. 따라서, 2개의 리던던시 바이트 (r = 2)를 생성하는 8비트 리드 솔로몬 코드의 실시예 경우, 2개의 동일하지 않은 코드 워드는 적어도 3바이트 정도 상이하도록 보장되어, 코드 워드가 255의 자연스러운 블럭 길이보다 작게 된다. 이러한 시나리오 하에서는, 보호하려는 255 바이트 블럭 내의 하나 및 두 개의 바이트에 대한 모든 오류의 결합을 검출할 수 있다. 그러나, 세 바이트 오류에 대한 어떠한 결합은 검출될 수 없다.
반면에, 개시된 8비트 데이터 완전성 코드에 대한 자연스러운 블럭 길이의 제한을 초과한다면, 두 바이트의 오류에 대한 일정 조합은 검출될 수 없다. 그러나, 한 바이트의 모든 오류는 그대로 검출될 수 있다. DRAM과 연관된 행 비트 오류 비율이 충분히 낮으므로 (전형적으로는 10-12의 오더(order) 또는 그 이하), 자연스러운 데이터 블럭 길이를 초과한 데이터 블럭에 대한 코드 확장을 보장하는 이러한 특정한 속성 때문에, 데이터 완전성 코드의 콘텍스트(context)를 사용하여 본 명세서에 개시되어 있는 DRAM 버퍼를 보호할 수 있게 된다. 현재의 8비트 부호화 실시예에 의하면, DRAM 내의 데이터 블럭에 대해 최대 섹터 크기 (즉, 512 바이트)를 보호하기 위해서는 리드 솔로몬 리던던시의 2 바이트를 사용하면 되는 것으로 통계적으로 판단되었으며, 이 경우 블럭의 오류가 검출되지 않을 확률은 약 10-20이다.
본 발명을 실시예와 함께 설명하였으므로, 이제는 본 발명의 목적이 완전히 이해되리라 보며, 본 기술 분야의 통상의 지식을 가진 자라면 본 발명의 정신 및 범위를 넘지 않는 범위에서 구성 상의 많은 변형과 매우 다양한 실시예 및 응용예가 가능함을 또한 이해할 수 있을 것이다. 예를 들어, 이용하려는 크로스체크 코드를 ,10 또는 16 비트와 같은 심볼 코드의 길이 및 생성되는 리던던시 심볼의 개수에 대해 다양하게 변형하는 것이 가능하다.
따라서, 본 명세서에 개시된 내용의 설명은 단지 예시적인 것에 불과하며 어떠한 의미에서도 제한할 것을 의도한 것은 아니다.
Claims (28)
- 데이터 경로 내의 버퍼 메모리에 임시로 저장된 데이터 블럭을 보호하는 방법에 있어서,(a) 상기 데이터 블럭을 제1 크로스체크 인코더(cross-check encoder)와 상기 버퍼 메모리에 전송하는(communicating) 단계(b) 상기 데이터 블럭에 대한 제1 크로스체크 리던던시(redundancy)를 생성하기 위해 상기 제1 크로스체크 인코더 내의 상기 데이터 블럭을 크로스체크 코드에 따라 부호화하는 단계,(c) 상기 제1 크로스체크 리던던시를 상기 버퍼 메모리 내의 상기 데이터 블럭에 추가시키는 단계,(d) 상기 데이터 블럭을 상기 버퍼로부터 제2 크로스체크 인코더에 전송하는 단계,(e) 상기 제2 크로스체크 인코더 내의 상기 데이터 블럭을 상기 크로스체크 코드에 따라 재부호화하는 단계 - 상기 제2 크로스체크 인코더는 상기 데이터 블럭에 대한 제2 크로스체크 리던던시를 생성함 -,(f) 상기 데이터 블럭이 하나 이상의 오류를 포함하고 있는지를 판단하기 위해 상기 첨가된 제1 크로스체크 리던던시와 상기 제2 크로스체크 리던던시를 비교하는 단계를 포함하는 데이터 블럭의 보호 방법.
- 제1항에 있어서, 자기 기록 매체로부터 복구된 잘못된 데이터 블럭에 대해 오류 검출 코드에 따라 오류 정정 처리가 수행된 이후에 상기 데이터 블럭에 대한 오정정(miscorrection)을 검출하기 위해 상기 제2 크로스체크 인코더와 상기 크로스체크 코드를 이용하는 단계를 더 포함하는 데이터 블럭의 보호 방법.
- 제2항에 있어서, 상기 크로스체크 코드는 다항식 생성자, x2+ alpha134x + alpha1의 형태인, g(x)를 특징으로 하는 리드 솔로몬(Reed-Solomon) 코드이고, 상기 코드는 256개의 원소를 갖는 갈루아 필드(Galois field)에 대해 연산되며, 상기 갈루아 필드는 약분 불가한(irreducible) 다항식 p(x) =x8+ x4+ x3+ x2+ 11과 16진수로 2B에 해당하는 초기 alpha1원소 값에 의해 정의되는 데이터 블럭의 보호 방법.
- 제3항에 있어서, 상기 데이터 블럭은 512 바이트의 데이터이고 상기 제1 및 상기 제2 크로스체크 인코더는 2 바이트의 크로스체크 리던던시를 생성하는 데이터 블럭의 보호 방법.
- 제1항에 있어서, 상기 제1 크로스체크 인코더는 디스크 드라이브 저장 시스템의 인터페이스 회로에 구현되고, 상기 제2 크로스체크 인코더는 상기 저장 시스템의 데이터 시퀀서(sequencer)에 구현되는 데이터 블럭의 보호 방법.
- 제1항에 있어서, 상기 비교 단계는 상기 제1 크로스체크 리던던시와 상기 제2 크로스체크 리던던시의 대응되는 비트들에 대한 상호배타적 논리 비트 연산에 의해 수행되는 데이터 블럭의 보호 방법.
- 제2항에 있어서, 상기 데이터 블럭을 상기 버퍼 메모리에 전송하기 이전에 상기 데이터 블럭을 선입선출 쉬프트 레지스터(first-in-first-out shift register)에 전송하는 단계를 더 포함하는 데이터 블럭의 보호 방법.
- 제1항에 있어서, 상기 저장 매체 상에 코드 워드를 형성하기 위해 상기 크로스체크 리던던시가 추가된 상기 데이터 블럭을 자기 저장 매체의 표면에 기록하는 단계, 상기 매체의 상기 표면으로부터 상기 코드 워드를 판독하여 상기 코드 워드를 상기 버퍼 메모리에 전송하는 단계, 상기 코드 워드의 데이터 블럭 부분을 상기 버퍼로부터 호스트와 상기 제2 크로스체크 인코더에 전송하는 단계, 상기 제2 크로스체크 인코더의 상기 데이터 블럭 부분으로부터 새로운 크로스체크 리던던시를 생성하는 단계, 및 오류가 발생하였는지를 판단하기 위해 상기 새로운 크로스체크 리던던시와 상기 버퍼에 기록된 상기 크로스체크 리던던시를 비교하는 단계를 더 포함하는 데이터 블럭의 보호 방법.
- 크로스체크 코드를 이용하여 데이터 채널 내의 블럭 버퍼 메모리에 임시로 저장된 데이터 블럭을 보호하는 방법에 있어서,(a) 상기 데이터 블럭을 상기 버퍼로 전송하는 단계,(b) 상기 데이터 블럭에 대한 제1 크로스체크 리던던시를 생성하기 위해 상기 버퍼 이전의 상기 데이터 채널에 위치한 제1 크로스체크 인코더 내의 상기 데이터 블럭을 상기 크로스체크 코드에 따라 부호화하는 단계,(c) 상기 제1 크로스체크 리던던시를 상기 버퍼 내의 상기 데이터 블럭에 추가시키는 단계,(d) 상기 데이터 블럭과 그에 추가된 제1 크로스체크 리던던시를 함께 상기 데이터 채널 내의 제2 크로스체크 인코더에 전송하는 단계,(e) 상기 데이터 블럭에 대한 제2 크로스체크 리던던시를 생성하기 위해 상기 크로스체크 인코더 내의 상기 데이터 블럭을 상기 크로스체크 코드에 따라 부호화하는 단계, 및(f) 상기 데이터 블럭이 오류를 포함하는지를 판단하기 위해 상기 제1 크로스체크 리던던시와 상기 제2 크로스체크 리던던시를 비교하는 단계를 포함하는 데이터 블럭의 보호 방법.
- 제9항에 있어서, 상기 크로스체크 코드는 다항식 생성자, x2+ alpha134x + alpha1의 형태인, g(x)를 특징으로 하는 리드 솔로몬 코드이고, 상기 코드는 256개의 원소를 갖는 갈루아 필드에 대해 연산되고, 상기 갈루아 필드는 약분 불가한 다항식 p(x) =x8+ x4+ x3+ x2+ 11과 16진수로 2B에 해당하는 초기 alpha1원소 값에 의해 정의되는 데이터 블럭의 보호 방법.
- 제10항에 있어서, 상기 데이터 블럭은 512 바이트의 데이터이고 상기 제1 및 상기 제2 크로스체크 인코더는 2 바이트의 크로스체크 리던던시인 데이터 블럭의 보호 방법.
- 제9항에 있어서, 상기 제1 크로스체크 인코더는 디스크 저장 드라이브 내의 인터페이스 회로에 구현되고, 상기 제2 크로스체크 인코더는 상기 저장 시스템의 데이터 시퀀서(sequencer) 회로의 일부로서 구현되는 데이터 블럭의 보호 방법.
- 제9항에 있어서, 상기 저장 매체 표면 상에 코드 워드를 형성하기 위해 상기 크로스체크 리던던시가 추가된 상기 데이터 블럭을 자기 저장 디스크의 표면에 기록하는 단계, 상기 매체의 상기 표면으로부터 상기 코드 워드를 판독하여 상기 코드 워드를 상기 버퍼에 전송하는 단계, 상기 코드 워드의 데이터 블럭 부분을 상기 버퍼로부터 상기 제2 크로스체크 인코더와 호스트에 선입선출 쉬프트 레지스터를 통해 전송하는 단계, 상기 제2 크로스체크 인코더의 상기 데이터 블럭 부분으로부터 새로운 크로스체크 리던던시를 생성하는 단계, 및 오류가 발생하였는지를 판단하기 위해 상기 새로운 크로스체크 리던던시와 상기 매체로부터 상기 버퍼에 기록된 상기 크로스체크 리던던시를 비교하는 단계를 더 포함하는 데이터 블럭의 보호 방법.
- 블럭 버퍼 내에 임시로 저장된 데이터 블럭을 보호하기 위한 장치에 있어서,크로스체크 코드를 구현하는 제1 크로스체크 인코더 - 상기 제1 인코더는 제1 데이터 경로 상의 호스트와 제2 데이터 경로 상의 상기 버퍼로부터 보호될 상기 데이터 블럭을 수신함 -,상기 크로스체크 코드를 구현하는 제2 크로스체크 인코더 - 상기 제2 인코더는 상기 제1 데이터 경로 상의 상기 버퍼와 상기 제2 데이터 경로 상의 통신 채널로부터 데이터 블럭을 수신함 -,상기 제1 크로스체크 인코더와 상기 버퍼에 접속되는 제1 비교 회로, 및상기 제2 크로스체크 인코더와 상기 버퍼에 접속되는 제2 비교 회로를 포함하는 데이터 블럭 보호용 장치.
- 제14항에 있어서, 상기 제1 및 제2 데이터 경로는 각각 디스크 저장 드라이브 내의 기록 및 판독 경로인 데이터 블럭 보호용 장치.
- 제14항에 있어서, 상기 버퍼 내에 전기적으로 접속된 버퍼 콘트롤러 - 상기 버퍼 콘트롤러는 상기 버퍼를 통해 데이터 블럭 흐름을 제어하기 위해 상기 버퍼에 신호를 보냄 -를 더 포함하는 데이터 블럭 보호용 장치.
- 제15항에 있어서, 상기 통신 채널은 자기 기록 디스크의 표면으로부터 복구된 데이터 블럭을 수신하고 상기 블럭을 상기 제2 크로스체크 인코더가 포함된 데이터 시퀀서 회로에 전송하는 데이터 블럭 보호용 장치.
- 제15항에 있어서, 상기 버퍼와 상기 호스트에 전기적으로 접속된 선입선출("FIFO") 쉬프트 레지스터 - 상기 FIFO는 상기 호스트로부터 데이터 블럭을 수신하고 상기 데이터 블럭을 상기 제1 데이터 경로 상의 상기 버퍼에 전송하고 상기 버퍼로부터 상기 데이터 블럭을 수신하여 상기 데이터 블럭을 상기 제2 데이터 경로 상의 상기 호스트에 전송함 -를 더 포함하는 데이터 블럭 보호용 장치.
- 제14항에 있어서, 오류 정정 코드화("ECC") 회로와 상기 ECC 회로에 연관된 ECC 크로스체크 회로를 더 포함하며, 상기 제2 크로스체크 인코더는 상기 ECC 크로스체크 회로를 공유하는 데이터 블럭 보호용 장치.
- 제19항에 있어서, 상기 크로스체크 코드는 다항식 생성자, x2+ alpha134x + alpha1의 형태인, g(x)를 특징으로 하는 리드 솔로몬 코드이고, 상기 코드는 256개의 원소를 갖는 갈루아 필드에 대해 연산되고, 상기 갈루아 필드는 약분 불가한 다항식 p(x) =x8+ x4+ x3+ x2+ 11과 16진수로 2B에 해당하는 초기 alpha1원소 값에 의해 정의되는 데이터 블럭 보호용 장치.
- 제14항에 있어서, 상기 제1 비교 회로는 상기 제1 크로스체크 인코더로부터 수신된 크로스체크 리던던시 심볼과 상기 제2 데이터 경로 상의 상기 버퍼로부터 수신된 대응되는 크로스체크 리던던시 심볼에 대해 상호배타적 논리 비트 연산("XOR")을 수행하는 상호배타적("XOR") 게이트 어레이를 포함하는 데이터 블럭 보호용 장치.
- 제21항에 있어서, 상기 제2 비교 회로는 상기 제2 크로스체크 인코더로부터 수신된 크로스체크 리던던시 심볼과 상기 제1 데이터 경로 상의 상기 버퍼로부터 수신된 대응되는 크로스체크 리던던시 심볼에 대해 상호배타적 논리 비트 연산("XOR")을 수행하는 XOR 게이트 어레이를 포함하는 데이터 블럭 보호용 장치.
- 제22항에 있어서, 상기 버퍼는 동적 랜덤 액세스 메모리인 데이터 블럭 보호용 장치.
- 크로스체크 코드를 이용하여 양방향 데이터 경로 내의 블럭 버퍼의 데이터 블럭을 보호하기 위한 장치에 있어서,제1 데이터 경로 방향의 호스트와 제2 데이터 경로 방향의 상기 버퍼로부터 데이터 블럭을 수신하는 제1 크로스체크 인코더 - 상기 제1 크로스체크 인코더는 상기 크로스체크 코드에 따라 각 데이터 블럭에 대한 크로스체크 리던던시를 생산함-,상기 제1 데이터 경로 방향의 상기 버퍼와 상기 제2 데이터 경로 방향의 데이터 저장 매체로부터 데이터 블럭을 수신하는 제2 크로스체크 인코더 - 상기 제2 크로스체크 인코더는 동일한 상기 크로스체크 코드에 따라 각 데이터 블럭에 대한 크로스체크 리던던시를 생성함-,상기 제1 크로스체크 인코더와 상기 버퍼에 접속된 제1 비교 회로 - 상기 제1 비교 회로는 상기 제2 데이터 경로 방향의 상기 제1 및 상기 제2 크로스체크 인코더에 의해 생성된 리던던시를 비교하여 상기 제2 데이터 경로 방향의 상기 데이터 블럭의 오류를 검출함 -, 및상기 제2 크로스체크 인코더와 상기 버퍼에 접속된 제2 비교 회로 - 상기 제2 비교 회로는 상기 제1 및 상기 제2 크로스체크 인코더에 의해 생성된 리던던시를 비교하여 상기 제1 데이터 경로 방향의 상기 데이터 블럭의 오류를 검출함 -을 포함하는 데이터 블럭 보호용 장치.
- 제24항에 있어서, ECC 크로스체크 회로를 더 포함하고 상기 제2 크로스체크 인코더는 상기 ECC 크로스체크 회로와 인코더 회로를 공유하는 데이터 블럭 보호용 장치.
- 제24항에 있어서, 상기 크로스체크 코드는 다항식 생성자, x2+ alpha134x + alpha1의 형태인, g(x)를 특징으로 하는 리드 솔로몬(Reed-Solomon) 코드이고, 상기 코드는 256개의 원소를 갖는 갈루아 필드(Galois field)에 대해 연산되고, 상기 갈루아 필드는 약분 불가한 다항식 p(x) =x8+ x4+ x3+ x2+ 11과 16진수로 2B에 해당하는 초기 alpha1원소 값에 의해 정의되는 데이터 블럭 보호용 장치.
- 제24항에 있어서, 상기 제1 및 상기 제2 데이터 경로 방향은 각각 디스크 저장 드라이브 내의 기록 및 판독 경로에 대응되는 데이터 블럭 보호용 장치.
- 제24항에 있어서, 상기 버퍼는 동적 랜덤 액세스 메모리인 데이터 블럭 보호용 장치.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US8/497,488 | 1995-06-30 | ||
US08/497,488 US6012839A (en) | 1995-06-30 | 1995-06-30 | Method and apparatus to protect data within a disk drive buffer |
Publications (1)
Publication Number | Publication Date |
---|---|
KR19990028535A true KR19990028535A (ko) | 1999-04-15 |
Family
ID=23977090
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1019970709853A KR19990028535A (ko) | 1995-06-30 | 1996-06-19 | 디스크 드라이브 버퍼 내의 데이터 보호 방법 및 장치 |
Country Status (5)
Country | Link |
---|---|
US (1) | US6012839A (ko) |
EP (1) | EP0832455A1 (ko) |
JP (1) | JPH11508712A (ko) |
KR (1) | KR19990028535A (ko) |
WO (1) | WO1997002529A1 (ko) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100877609B1 (ko) * | 2007-01-29 | 2009-01-09 | 삼성전자주식회사 | 버퍼 메모리의 플래그 셀 어레이를 이용하여 데이터 오류 정정을 수행하는 반도체 메모리 시스템 및 그 구동 방법 |
Families Citing this family (33)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6467060B1 (en) * | 1998-06-26 | 2002-10-15 | Seagate Technology Llc | Mass storage error correction and detection system, method and article of manufacture |
JP2002043953A (ja) * | 2000-07-26 | 2002-02-08 | Mitsubishi Electric Corp | 誤り訂正方法及び誤り訂正装置 |
JP2002351689A (ja) * | 2001-05-30 | 2002-12-06 | Nec Corp | データ転送システム |
US20060242450A1 (en) * | 2005-04-11 | 2006-10-26 | Li-Lien Lin | Methods and apparatuses for selectively rebuffering and decoding a portion of a data block read from an optical storage medium |
US9459960B2 (en) * | 2005-06-03 | 2016-10-04 | Rambus Inc. | Controller device for use with electrically erasable programmable memory chip with error detection and retry modes of operation |
US7831882B2 (en) | 2005-06-03 | 2010-11-09 | Rambus Inc. | Memory system with error detection and retry modes of operation |
US7840878B1 (en) * | 2006-04-11 | 2010-11-23 | Marvell International Ltd. | Systems and methods for data-path protection |
TWI307100B (en) * | 2006-11-07 | 2009-03-01 | Macronix Int Co Ltd | Memory and method for reading error checking thereof |
KR100847560B1 (ko) * | 2006-12-11 | 2008-07-21 | 삼성전자주식회사 | 다운로드되는 펌웨어의 오류 정정을 위한 회로 및 방법 |
KR101199386B1 (ko) * | 2006-12-19 | 2012-11-09 | 엘지전자 주식회사 | 디지털 방송 시스템 및 데이터 처리 방법 |
US8898536B2 (en) * | 2007-04-27 | 2014-11-25 | Netapp, Inc. | Multi-core engine for detecting bit errors |
US8041989B2 (en) * | 2007-06-28 | 2011-10-18 | International Business Machines Corporation | System and method for providing a high fault tolerant memory system |
US8041990B2 (en) * | 2007-06-28 | 2011-10-18 | International Business Machines Corporation | System and method for error correction and detection in a memory system |
JP4327883B1 (ja) * | 2008-04-28 | 2009-09-09 | 株式会社東芝 | 情報処理装置、情報処理方法 |
WO2010045445A2 (en) | 2008-10-15 | 2010-04-22 | Marvell World Trade Ltd. | Architecture for data storage systems |
US9158579B1 (en) | 2008-11-10 | 2015-10-13 | Netapp, Inc. | System having operation queues corresponding to operation execution time |
TWI465898B (zh) * | 2009-07-13 | 2014-12-21 | Silicon Motion Inc | 避免資料儲存裝置之資料發生移位錯誤的方法及控制器 |
US8631271B2 (en) | 2010-06-24 | 2014-01-14 | International Business Machines Corporation | Heterogeneous recovery in a redundant memory system |
US8549378B2 (en) | 2010-06-24 | 2013-10-01 | International Business Machines Corporation | RAIM system using decoding of virtual ECC |
US8898511B2 (en) | 2010-06-24 | 2014-11-25 | International Business Machines Corporation | Homogeneous recovery in a redundant memory system |
US8484529B2 (en) * | 2010-06-24 | 2013-07-09 | International Business Machines Corporation | Error correction and detection in a redundant memory system |
US8522122B2 (en) | 2011-01-29 | 2013-08-27 | International Business Machines Corporation | Correcting memory device and memory channel failures in the presence of known memory device failures |
WO2012108023A1 (ja) * | 2011-02-09 | 2012-08-16 | 富士通株式会社 | 情報処理装置、情報処理システム及びデータ転送方法 |
KR20120095221A (ko) * | 2011-02-18 | 2012-08-28 | 삼성전자주식회사 | 메모리 소자 및 메모리 컨트롤 유닛 |
WO2013032663A2 (en) * | 2011-09-01 | 2013-03-07 | Rambus Inc. | Variable code rate transmission |
US9569303B2 (en) * | 2014-08-08 | 2017-02-14 | Kabushiki Kaisha Toshiba | Information processing apparatus |
JP6369298B2 (ja) * | 2014-11-13 | 2018-08-08 | 富士通株式会社 | ストレージプログラム、ストレージシステム、ストレージ方法、及びストレージ装置 |
US9509445B2 (en) * | 2015-01-27 | 2016-11-29 | Infineon Technologies Ag | Sensor interface that provides a long package CRC to improve functional safety |
US10355824B2 (en) * | 2017-10-23 | 2019-07-16 | Bank Of America Corporation | Smart integrated cyclic data transport |
US10872010B2 (en) | 2019-03-25 | 2020-12-22 | Micron Technology, Inc. | Error identification in executed code |
JP2021047712A (ja) * | 2019-09-19 | 2021-03-25 | キオクシア株式会社 | メモリシステム |
US11468962B2 (en) * | 2021-03-03 | 2022-10-11 | Micron Technology, Inc. | Performing memory testing using error correction code values |
CN117369733B (zh) * | 2023-12-07 | 2024-02-23 | 上海励驰半导体有限公司 | 集成电路、数据处理系统和车辆 |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4780809A (en) * | 1986-08-08 | 1988-10-25 | Amdahl Corporation | Apparatus for storing data with deferred uncorrectable error reporting |
US4782490A (en) * | 1987-03-16 | 1988-11-01 | Cythera Corporation | Method and a system for multiple error detection and correction |
SG64886A1 (en) * | 1987-08-24 | 1999-05-25 | Quantum Corp | High bandwidth reed-solomon encoding decoding and error correcting circuit |
US5065090A (en) * | 1988-07-13 | 1991-11-12 | Cross-Check Technology, Inc. | Method for testing integrated circuits having a grid-based, "cross-check" te |
US5283791A (en) * | 1988-08-02 | 1994-02-01 | Cray Research Systems, Inc. | Error recovery method and apparatus for high performance disk drives |
US5038349A (en) * | 1989-08-25 | 1991-08-06 | Cross-Check Technology, Inc. | Method for reducing masking of errors when using a grid-based, "cross-check" test structure |
US5182752A (en) * | 1990-06-29 | 1993-01-26 | Digital Equipment Corporation | Method and apparatus for transferring data between a data bus and a data storage device |
US5241546A (en) * | 1991-02-01 | 1993-08-31 | Quantum Corporation | On-the-fly error correction with embedded digital controller |
US5384786A (en) * | 1991-04-02 | 1995-01-24 | Cirrus Logic, Inc. | Fast and efficient circuit for identifying errors introduced in Reed-Solomon codewords |
US5422895A (en) * | 1992-01-09 | 1995-06-06 | Quantum Corporation | Cross-checking for on-the-fly Reed Solomon error correction code |
US5602857A (en) * | 1993-09-21 | 1997-02-11 | Cirrus Logic, Inc. | Error correction method and apparatus |
US5592498A (en) * | 1994-09-16 | 1997-01-07 | Cirrus Logic, Inc. | CRC/EDC checker system |
-
1995
- 1995-06-30 US US08/497,488 patent/US6012839A/en not_active Expired - Lifetime
-
1996
- 1996-06-19 WO PCT/US1996/010731 patent/WO1997002529A1/en not_active Application Discontinuation
- 1996-06-19 EP EP96921751A patent/EP0832455A1/en not_active Withdrawn
- 1996-06-19 JP JP9505169A patent/JPH11508712A/ja active Pending
- 1996-06-19 KR KR1019970709853A patent/KR19990028535A/ko not_active Application Discontinuation
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100877609B1 (ko) * | 2007-01-29 | 2009-01-09 | 삼성전자주식회사 | 버퍼 메모리의 플래그 셀 어레이를 이용하여 데이터 오류 정정을 수행하는 반도체 메모리 시스템 및 그 구동 방법 |
US8055978B2 (en) | 2007-01-29 | 2011-11-08 | Samsung Electronics Co., Ltd. | Semiconductor memory system performing data error correction using flag cell array of buffer memory |
Also Published As
Publication number | Publication date |
---|---|
EP0832455A1 (en) | 1998-04-01 |
US6012839A (en) | 2000-01-11 |
WO1997002529A1 (en) | 1997-01-23 |
EP0832455A4 (ko) | 1998-05-13 |
JPH11508712A (ja) | 1999-07-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR19990028535A (ko) | 디스크 드라이브 버퍼 내의 데이터 보호 방법 및 장치 | |
US5805799A (en) | Data integrity and cross-check code with logical block address | |
US6574774B1 (en) | Physical block address recovery apparatus system and method for cyclic error correction codes | |
US5428630A (en) | System and method for verifying the integrity of data written to a memory | |
US4833679A (en) | Method and apparatus with improved error correction and error information availability | |
US5602857A (en) | Error correction method and apparatus | |
US7653862B2 (en) | Error detection and correction for encoded data | |
US6125469A (en) | Error correction method and apparatus | |
US5629949A (en) | Error correction verification method and apparatus using CRC check remainders | |
AU616788B2 (en) | Method and system for correcting long bursts of consecutive errors | |
KR960003094B1 (ko) | 프로덕트 코드를 디코딩하는 디코더 및 방법 | |
KR100613056B1 (ko) | 오정정 보호 방법, 저장 장치, 데이터 세트 보호 방법,데이터 저장 장치, 및 에러 정정 코드 | |
US5946328A (en) | Method and means for efficient error detection and correction in long byte strings using integrated interleaved Reed-Solomon codewords | |
US7178086B2 (en) | Direct partial update of CRC/ECC check bytes | |
US9251846B2 (en) | Tape header protection scheme for use in a tape storage subsystem | |
JPS6354254B2 (ko) | ||
KR101531774B1 (ko) | 통합된 데이터 및 헤더 보호를 포함하는 인코드된 데이터의 디코딩 | |
US3786439A (en) | Error detection systems | |
EP0753942A2 (en) | Word-wise processing for reed-solomon codes | |
US6009550A (en) | PBA recovery apparatus and method for interleaved reed-solomon codes | |
US5943348A (en) | Method to check for burst limiting in error correcting systems | |
US5974582A (en) | High-speed chien search logic | |
JPH07112160B2 (ja) | 誤り訂正符号の復号方法 | |
JPS62248314A (ja) | 誤り訂正符号の復号方法 | |
JPH0934649A (ja) | エラー訂正方法、エラー訂正装置、再生装置および記録再生装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
WITN | Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid |