KR950009384B1 - 내장 디지탈 콘트롤러를 사용하는 온-더-플라이 에러 보정 방법 및 장치 - Google Patents

내장 디지탈 콘트롤러를 사용하는 온-더-플라이 에러 보정 방법 및 장치 Download PDF

Info

Publication number
KR950009384B1
KR950009384B1 KR1019920001572A KR920001572A KR950009384B1 KR 950009384 B1 KR950009384 B1 KR 950009384B1 KR 1019920001572 A KR1019920001572 A KR 1019920001572A KR 920001572 A KR920001572 A KR 920001572A KR 950009384 B1 KR950009384 B1 KR 950009384B1
Authority
KR
South Korea
Prior art keywords
data
syndrome
error
byte
error correction
Prior art date
Application number
KR1019920001572A
Other languages
English (en)
Other versions
KR920017083A (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 KR920017083A publication Critical patent/KR920017083A/ko
Application granted granted Critical
Publication of KR950009384B1 publication Critical patent/KR950009384B1/ko

Links

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B20/00Signal processing not specific to the method of recording or reproducing; Circuits therefor
    • G11B20/10Digital recording or reproducing
    • G11B20/18Error detection or correction; Testing, e.g. of drop-outs
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B20/00Signal processing not specific to the method of recording or reproducing; Circuits therefor
    • G11B20/10Digital recording or reproducing
    • G11B20/18Error detection or correction; Testing, e.g. of drop-outs
    • G11B20/1833Error detection or correction; Testing, e.g. of drop-outs by adding special lists or symbols to the coded information
    • 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

Landscapes

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

Abstract

내용 없음.

Description

내장 디지탈 콘트롤러를 사용하는 온-더-플라이 에러 보정 방법 및 장치
제1도는 본 발명의 방법 및 장치와 함께 사용하기 위한 것으로서 3개의 인터리브(interleave)로 배열되어 있고, 2개의 크로스 체크(cross check) 바이트 및 12개의 에러 보정 바이트가 부가되어 있는 512 바이트 데이타 필드의 개략도.
제2도는 각각 상이한 데이타 전송 속도(transfer rate)와 사용자 데이타 저장 용량(storage capacity)을 갖는 8개 데이타 영역인 트랙 Z1 내지 Z8과 데이타 저장 표면(storage surface)에 걸쳐 연장하는 공통 정렬된 서보 섹터(servo sector) S를 도시하고 있는 회전 데이타 저장 디스크(rotating data storage disk)의 데이타 표면의 평면도.
제3a도는 3바이트 에러 검출 코드(error detection code)를 채택하는 제2도에 도시된 바와 같은 데이타 섹터용 데이타 ID 필드의 개략도.
제3b도는 카운트 정보(count information)를 포함하지 않기 때문에 덜 강력한 2바이트 에러 검출 코드를 채택할 수 있는 데이타 섹터 ID 필드의 개략도.
제4a도 및 제4b도는 본 발명의 방법을 구현하는 ECC 인코더/디코더(encoder/decoder) 및 크로스 체킹(cross checking) 구조의 상세한 블럭도.
제5도는 제2도의 ECC 구조의 동작을 도시하고 있는 일련의 타이밍도.
제6a도 및 제6b도는 고정형 디스크 드라이브(fixed disk drive)의 데이타 시켄서 요소(data sequencer element)내에 있는 제2도의 ECC 구조를 도시하고 있는 블럭도.
제7도는 본 발명의 원리를 구현하는 ECC 구조와 제6a도 및 제6b도의 데이타 시켄서를 포함하고 있는 고정형 디스크 드라이브 데이타 저장 서브 시스템(subsystem)의 블럭도.
* 도면의 주요부분에 대한 부호의 설명
10 : ECC 신드롬 발생기 회로 13 : 논리 게이트
22 : 제로기 회로 26, 36, 40, 46, 58, 62 : 쉬프트 레지스터
28, 48, 60 : XOR 게이트 어레이 44, 50, 56 : 멀티플렉서
68 : 신드롬 잔류자 래치 78 : 제로 검출 회로
162 : 디스크 170 : 헤드
196 : 마이크로 콘트롤러
본 발명은 데이타 스트림(data stream)내의 바이트 에러를 검출하여 보정하는 방법 및 장치에 관한 것이다. 보다 상세하게, 본 발명은 프로그램된 디지탈 콘트롤러(Controller)를 포함하는 회전 디스크 데이타 저장 서브 시스템 내의 저장 표면으로부터 판독되는 데이타 블럭과 같은 데이타 블럭 내의 바이트 에러를 검출하여 보정하기 위한 방법 및 장치에 관한 것이다.
에러 보정 기술은 디스크 드라이브(disk drive) 데이타 저장 서브 시스템과 테이프 드라이브(tape drive) 데이타 저장 서브 시스템 등과 같은 메모리 저장 장치(memory stores)를 포함하여 디지탈 데이타 처리 시스템들(processing system)에 공지되어 있고, 디지탈 데이타 통신 시스템(communication system)들에도 공지되어 있다. 디지탈 데이타 스트림의 실질적으로 인접한 블럭(contigous block)들, 세트(set)들 또는 서브세트(subset)들로부터 신드롬(syndrome) 정보를 발생시키는 방법이 선택되어 구현된다. "인접(contigous)"이란 용어는 블럭들의 사이 또는 블럭들을 분리시키는 최소 간격(interval) 또는 시간 경과(time lapse)로 블럭들이 다른 블럭의 바로 하나 뒤에 발생한다는 것을 의미한다. 상기 신드롬 정보는 전형적으로 데이타 기입(writing) 또는 전송 처리 중에 인코더단(encoder end)에서 블럭, 세트 또는 서브세트에 부가된다. 데이타 판독 또는 수신 처리시, 여기에서는 "잔류자(remainder)"라고 불리우는 상기 수신된 에러 보정 신드롬 정보는 상기 수신된 데이타 블럭으로부터 구해져서 0과 비교된다. 만약 0이 아닌 어떠한 잔류자 값 또는 바이트(byte)라도 존재한다면 에러가 있는 것으로 판단된다. 부가된 신드롬 정보의 성질(nature)과 양에 따라 상기 데이타 블럭에 있는 하나 이상의 에러 버스트(burst)를 검출하여 보정하는 것이 가능하다.
에러 버스트는 에러 상태인 인접 비트 위치(bit position)들의 세트이다. 단일 에러 버스트는 데이타 블럭 내의 그와 같은 에러 비트 위치들의 한번의 발생(one occurrence)이고, 그들의 인터리브들에 걸쳐 연장할 수 있다. 이중 에러(double error) 버스트는, 예를 들면 데이타 블럭 내에 있는 에러 버스트가 두번 별도로 발생하는 것이다. 에러 보정 시스템 및 전략(strategy)들은 전형적으로 단일 버스트 및 이중 버스트 에러들을 찾아내어 보정하는 능력뿐만 아니라, 실행 속도 및 상기 에러 보정 전략에 의한 에러 버스트들에 대한 오보정의 낮은 가능성에 따라 평가된다.
종래 기술의 방법에서, 신드롬 변환기(syndrome converter)는 전형적으로 탭(tap)들과 외부 승산기(external multiplier) 요소들을 갖는 쉬프트 레지스터(REG, register)로 구현된다. 외부 형식으로 가산기(summer)가 상기 신드롬을 발생시키기 위해 상기 쉬프트 레지스터로부터의 승수 항(multiplier term)들을 입력되는 데이타 스트림과 합성시켰다. 본 명세서에서 참조되는, 마차도(Machado)에게 일반 양도(commonly assigned)되고 개시된 미합중국 특허 제4,730,321호에서는, 논리 요소(logical element)들이 공유될 수 있도록 하므로써 에러 보정 하드웨어를 구현하는데 요구되는 구조적 요소(Structural element)의 수를 최소화하기 위해, 쉬프트 레지스터가 가산 노드(summing node)를 포함하는 내부 형식(internal form)이 사용되었다.
디스크 드라이브들에 채택된 많은 에러 보정 코드 방식(code scheme)들은 1 비트의 갈로이스 필드[Galois Field : GF(21)]를 채택해왔다. 따라서 1 비트 구현에 있어서, 승수 항들은 존재하거나 존재하지 않으며, 상기 가산 노드는 익스클루시브 OR(exclusive OR) 게이트로서 구현된다. 종전의 여러 실시들은 위에서 참조되고 마차도에게 허여된 미합중국 특허 제4,730,321호에서 행해졌던 것처럼 갈로이스 필드 바이트(심볼당 8비트)를 기초로 하였다. 이와 같은 종래의 방법에서, 상기 신드롬 발생기는 8비트를 받아들여서, 8비트를 출력한다. 상기의 참조되고 마차도에게 허여된 미합중국 특허 제4,730,321호는 신드롬 발생기 회로를 구현하기 위해 필요한 게이트의 수를 줄이기 위하여, 원시 요소(primitive element) alpha1항이 2B(16진수)인 갈로이스 필드를 채택하였다.
비트 입력에서 비트 출력이든지 바이트 입력에서 바이트 출력이든지 간에, 종래의 에러 보정 방법의 일반적인 문제점은 특정 블럭 내에서 하나 이상의 에러들이 검출될 때 에러를 포함한 것으로 판단된 블럭 내에 있는 버스트 에러 또는 에러들의 위치를 결정하여 보정하기 위해 요구되는 기간 동안 상기 시스템 데이타 스트림은 정지되어야 한다는 것이다.
특히 디스크 드라이브 데이타 저장 서브 시스템에서, 하나 이상의 프로그램된 모놀리식(monolithic) 디지탈 마이크로 콘트롤러를 대하는 것은 이제 보통이다. 이와 같은 마이크로콘트롤 요소들은 데이타 변환기(transducer) 헤드 위치 조정(positioning) 및 트랙 추적(track following) 동작을 관리하고, 필요한 때에 호스트 컴퓨터 시스템과 함께 데이타, 명령 및 상태 값(status value)들의 전송을 관리하기 위해 적절한 동작 및 계산을 행하는 데에 매우 강력하다.
에러 및 이에 따른 에러 보정 처리들은 양호하게 설계되고 제조된 디스크 드라이브에서는 상대적으로 빈번하게 발생하지 않기 때문에, 상기 마이크로 콘트롤러의 계산 능력은 인터럽트에 의해 요구된 때에 에러 위치 설정(location) 및 보정 동작을 수행하는 임무에 최적이다. 예를 들면, 만약 데이타 블럭이 디스크 표면으로부터 판독되고 있다면, 다음 블럭의 판독은 상기 에러 위치 설정 및 보정 처리동안 중단된다. 상기 참조된 마차도의 미합중국 특허 제4,730,321호에서의 경우처럼, 데이타 스트림이 정지된 후에 상기 디스크 드라이브 마이크로 콘트롤러는 에러를 갖고 있는 데이타 블럭에 대한 ECC 잔류자를 얻는다. 다음으로, 마이크로 콘트롤러는 상기 잔류자에 기초하여 에러의 위치 설정과 보정을 하기 위한 값들을 계산한다. 그리고 나서, 잘못된 데이타 값들은 버퍼 메모리에 있는 데이타 블럭에 삽입된 보정된 데이타 값들에 의해 대체된다. 보정한 후 다음으로, 상기 데이타 블럭은 호스트 컴퓨터로 송신되는 데에 이용가능하게 되며, 그 시점에서 데이타 스트림은 데이타 블럭들의 흐름이 계속되도록 허가될 것이다.
요약하면, 비트를 기초로 하든지 바이트를 기초로 하든지 간에 종래의 방법은 3가지의 공통 동작(function)을 실행한다 : 상기 종래의 방법들은 입력 데이타를 판독하고 상기 복원된 잔류자 값을 0과 비교한다. 만약 에러가 존재하면, 상기 방법들은 데이타 스트림을 중단시키고 나서, 비반복(non-repeating) 또는 "소프트(soft)" 에러들을 제거하기 위한 시도(attempt)로, 예를 들면 상기 신드롬 발생기를 통하여 상기 데이타를 재판독하여 그것을 재송신하는 등의 재시도(retry)를 실행할 것이다. 만약 효과가 없으면, 즉 하드 데이타 에러(hard data error)가 존재하면, 상기 방법들은 에러 보정 동작을 수행한다. 만약 이 동작이 성공적인 것으로 판단되면, 데이타 스트림은 상기 시점으로부터 재개된다. 만약 상기 에러가 보정 불가능한 것이라고 판단되면, 에러 메시지가 호스트 컴퓨터 시스템 또는 통신 시스템에 송신되고, 데이타 전송 처리가 불확정적(indefinite)으로 중단된다.
매우 빠른 에러 보정을 수행하려는 종래의 여러 노력들이 있었다. 수천개의 게이트들을 갖는 특수 하드웨어 칩에 구현되리라고 믿어졌던 한 구조(architecture)가 테넨골츠(Tenengolts)에게 허여된 미합중국 특허 제4,782,490호에 기술되어 있는데, 그 개시된 내용은 본 명세서에서 참조된다. 테넨골츠는 고속 에러 보정 기술을 구현하기 위한 하드웨어 및 펌웨어(firmware) 모두를 채택하는 실시예들을 언급하지만, 온-더-플라이(on-the-fly) 에러 보정의 구현에 대한 실제적인 지침(guidance)은 제공되지 않는다. 예를 들면, 테넨골츠 특허 제8도 "에러 트래핑(trapping)" 실시예에서, 에러를 검출하기 위해 사용된 레지스터와 동일한 쉬프트 레지스터가 상기 에러 트래핑 처리를 위해 에러가 검출된 후에도 역시 사용됨으로써, 실시간(real time)으로 입력하는 데이타의 다음 블럭을 위한 상기 쉬프트 레지스터의 이용 가능성을 없애버린다.
본 명세서에서 사용된 것처럼, "온-더-플라이"란 표현은 최소화된 데이타 흐름 인터럽션(interruption)으로 수행되며 상기 보정 처리를 수행하기 위해 하나 이상의 디스크 회전 도달[latency : 회전(revolution)]을 요구하지 않는 에러 보정 처리를 의미한다. ECC "온-더-플라이"를 수행하기 위하여, 데이타 에러들을 검출하여 보정하는 것 및 상기 검출과 보정을 다중 블럭들의 전형적인 전송동안 데이타 블럭들의 흐름을 중단시키지 않는 방식으로 행하는 것이 필요하다. 일반적으로 종래에는, 이러한 두가지 요구 조건들이 개념적으로 함께 다루어졌다. 실제로, 본 발명자들은 상기 두가지 요구 조건들이 별개이며 에러 보정의 전체 문제의 관점에서 개별적으로 다룰 수 있는 측면(separable aspect)들이라는 것을 발견하였다.
신드롬 발생기는 전형적으로 에러 보정을 위한 하드웨어 구현 내에 제공된다. 이 신드롬 발생기는 각각의 선정된 데이타 블럭에 대한 ECC 신드롬을 발생시키기 위해 데이타 스트림 상에 온-더-플라이로 동작한다. 일단 신드롬이 발생되면, 상기 신드롬은 레코딩/ECC 인코딩 처리동안 데이타 블럭의 끝에 전형적으로 부가된다.
상기 참조된 마차도의 특허 제4,730,321호에 의해 알 수 있는 바와 같이, 신드롬 발생기 회로를 저장 표면으로부터의 데이타 블럭 재생(readback)동안 잔류자 복원 회로로서도 역시 사용할 수 있다. 예를 들어 디스크 표면으로부터 오는 데이타 블럭 또는 서브 세트들로부터의 재생 동안 재발생된 상기 신드롬 잔류자 바이트들은 하드웨어 비교기(comparator)에 의해 0과 비교된다. 만약 상기 잔류자 바이트가 0이 아니라면, 상기 재생된 데이타 또는 그 인터리브에 에러가 존재한다. 마차도의 특허 제4,730,321호의 방법에서는, 데이타 스트림이 그에 따라 중단되고, 상기 신드롬 발생기 쉬프트 레지스터들 내에 유지된 상기 0이 아닌 잔류자 바이트들은 버스 구조(bus structure)를 통해 상기 마이크로 콘트롤러로 전달된다. 그후, 마이크로 콘트롤러는 상기 에러 또는 에러들의 위치를 정하여 보정하기 위한 펌웨어 루틴(routine)을 실행한다. 상기 종래의 마차도의 특허 제4,730,321호의 방법은 에러 보정 처리들을 수행하기 위한 장착형(on-board) 디지탈 마이크로 콘트롤러를 채택하였지만 온-더-플라이로는 그렇게 하지 않았다. 어떠한 에러라도 검출되기만 하면 데이타 흐름은 중단된다.
온-더-플라이 에러 보정을 수행하는 다른 전형적인 방법은 에러 보정을 계산하여 보정을 하고 있는 데이타 블럭의 하나 이상의 적절한 위치들에 잘못된 데이타에 대한 보정된 데이타를 삽입시키는 일을 임무로 하는 하나 이상의 전용(dedicated) 하드웨어 프로세서들을 제공하여 왔다. 전형적으로 전용 하드웨어 프로세서들과 관련하여 채택되는 것은 저장 용량이 전형적으로 4킬로비트(1바이트당 8비트이면 512바이트)인 전용 FIFO 또는 버퍼 메모리(buffer memory)이다.
하드웨어를 기본으로 한 ECC 구조의 예가 상기 참조된 테넨골츠의 미합중국 특허 제4,782,490호에 개시되어 있다. 잘 이해된 바와 같이, 테넨골츠는 제2도와 관련하여 에러 보정 및 크로스 체킹에 매우 일반적인 접근 방법을 제공하며, 온-더-플라이 에러 보정에 관한 언급이나 검토(discussion)는 제공되지 않았다. 그러나, 테넨골츠의 제8도 실시예와 관련하여 버스트 에러를 검출한 신드롬은 상기 에러의 위치가 정해질 때까지 원래의 ECC 복원 회로의 쉬프트 레지스터들을 통해 쉬프트된다. 0값의 잔여 바이트(residue byte)를 만날 때까지 필요한 시리얼 쉬프트의 수가 카운트된다. 그리고 나서, 0바이트 잔여 바이트를 바로 뒤따르는 잔여 바이트들이 데이타 스트림에 삽입될 보정된 데이타 값을 결정하기 위한 기초를 제공하는 동안, 이러한 카운트는 상기 에러 버스트 위치를 제공한다. 테넨골츠가 "단일 버스트 보정이 레코드 전송 시간(record transfer time)에 수행되도록 "[테넨골츠 컬럼(Column) 15, 47-48행] 허용하기 위하여 클럭 속도의 4배로 ECC 쉬프트 레지스터를 클럭시킬 것을 제안하고 있지만, 만약 데이타 블럭들 사이에 상당한 갭(gap)이 존재하지 않거나 블럭 전송 지연(delay)이 실제로 FIFO 블럭 버퍼 등과 함께 데이타 스트림에 프로그램되지 않으면, 그와 같은 과정이 다음의 인접 데이타 블럭을 실시간에(즉, 온-더-플라이로) 쉬프트 레지스터를 통하여 어떻게 전달될 것인지가 분명하지 않다. 테넨골츠의 제2도의 방법이 고속이라고는 하지만, 역시 명백하게 복잡하기도 하다. 제8도의 방법은 상기 디코딩 처리가 펌웨어로 구현된다고 하더라도 더 느리다고는 하지만 충분히 빠르다고 한다. 펌웨어 구현이 언급되었지만, 펌웨어 코드 리스팅(code listing)과 같은 세부 사항들은 상기 테넨골츠의 특허에 개시되어 있지 않다. 또한, 상기 테넨골츠의 특허는, 예를 들면 제2도에 주어진 하드웨어 구현의 제약 조건(constraint) 안에서 크로스 체킹과 ID 필드(헤더) 에러 검출 기술들을 서술하고 있다.
단계간 전송(inter-step transfer)을 피하기 위해 파이프라인(pipeline) 방식으로 동작하는 전용 병렬 프로세서(parallel processor)들을 포함하는 다른 고속 ECC 구조가 데오다(Deodhar)에게 허여된 미합중국 특허 제4,567,594호에 기술되어 있는데, 상기 개시된 내용도 역시 참조로 함께 사용된다. 데오다의 미합중국 특허 제4,567,594호에 개시된 기술은 리드-솔로몬(RS, Reed-Solomon) 디코딩 처리를 파이프라인 전용 프로세서들에 의해 최소한의 단계간 파라메타 전송(parameter transfer)으로 실행되는 일련의 단계들로 나눈다.
더 개선된 종래 기술의 에러 보정 방법은 데이타 콘트롤러 기능과 관련된 데이타 블럭 버퍼를 사용한다. 이러한 방법은 상기 데이타 블럭 버퍼를 액세스하여 제어하기 위하여 DMA 채널을 사용한다. ECC 하드웨어는 블럭 버퍼에 DMA 요구를 발생시키므로써 보정될 잘못된 데이타 셀들에 의해 액세스를 얻는다. 이러한 방법은 에러 보정 처리를 위하여 기존의 데이타 블럭 버퍼 메모리를 사용하는 장점을 인식하고 있다. 이것은 위에서 참조된 마차도에게 일반 양도된 미합중국 특허 제4,730,321호에 따른 방법이다. 그러나, 이러한 종래 방법은 "온-더-플라이" 에러 보정을 달성하지 못했다.
온-더-플라이로 단일 버스트 에러 보정을 수행할 수 없다는 것외에, 상기 참조된 마차도의 특허 제4,730,321호에 기술된 방법의 다른 단점은, 단일 버스트 보정에의 유용성을 본질적으로 제한하는 이중 버스트(double burst) 보정 모드에서의 데이타 오검출 및 그에 따른 오보정의 가능성으로부터 발생한다. 특수한 리드 솔로몬 에러 보정 앨거리듬(algorithm)의 보정 능력(correction capability) 내에서의 임의 에러(random error)의 발생은 오보정 확률을 결국 0으로 만들 것이지만, 만약 임의 에러의 수가 상기 보정 능력을 초과하면, 상기 오보정 확률은 약 0.233 정도로 매우 높아지게 된다. 이는 통계적으로 상기 보정 능력을 상회하여 발생하는 에러들의 거의 1/4이 오검출되며 오보정된 것을 의미한다. 오검출 확률을 줄이기 위해 채택되어온 공지의 종래 기술들은 체크 섬(check sum)들을 데이타 블럭 내에 포함시키는 것과 같은 크로스 체크를 포함하였다. 그러나, 그와 같은 크로스 체크는 특별히 강력하지도 않았고, 데이타 블럭 내에서의 데이타 값들의 뒤섞임(shuffling)과 재배치(rearrangement)를 검출할 수도 없었다.
본 발명의 일반적인 목적은 종래 기술의 한계와 단점들을 극복한 방식으로 잔류자 래치(remainder latch)를 포함하는 하드웨어 감소된(hardware-reduced) ECC 신드롬 발생기 회로와 내장 디지탈 콘트롤러 및 블럭 버퍼를 효과적으로 조합하므로써 데이타 블럭의 시켄서 내에 있는 데이타 블럭들에 "온-더-플라이" 에러 보정을 제공하는 것이다.
본 발명의 다른 일반적인 목적은 데이타 흐름을 인터럽팅하지 않고 내장 마이크로 콘트롤러 감독기(supervisor)에 의해 배경 동작(background operation)으로서 요구된 대로 실행되는 드라이브 내장 펌웨어(drive-resident firmware) 내에서 실질적으로 보정 처리가 실행되는 디지탈 데이타 시스템 내에 "온- 더-플라이" 에러 보정의 실제적인 하드웨어가 최소화된 구현(hardware-minimized implementation)을 실현하는 것이다.
본 발명의 다른 일반적인 목적은 0이 아닌 ECC 신드롬 잔류자들을 선택적으로 래칭(latching)하기 위한 래치를 포함하므로써 디지탈 데이타 시스템 내의 데이타 블럭들의 흐름을 중단시키지 않고 마이크로 콘트롤러와 블럭 버퍼 메모리에 의해 온-더-플라이 에러 보정이 수행되는 것이 가능하도록 만드는 ECC 신드롬 잔류자 복원 회로를 제공하는 것이다.
본 발명의 다른 일반적인 목적은 리드 솔로몬 에러 보정 다항식(polynomial)에 의해 데이타 블럭에 있는 에러 버스트의 보정 가능성(correctability)을 체크하는 데에 사용하기 위한 리드 솔로몬 크로스 체크 다항식을 제공하는 것인데, 상기 크로스 체크 다항식 및 에러 보정 다항식은 원시 요소 alpha1항이 02(16진수)가 아닌 갈로이스 필드에 기초하고 있다.
본 발명의 더 상세한 목적은 2B(16진수) 값을 갖는 원시 요소 alpha1항을 채택한 리드 솔로몬 크로스 체크 다항식을 제공하는 것이다.
본 발명의 더 상세한 목적은 배경 동작으로 래치된 0이 아닌 신드롬 잔류자 바이트들로부터 존재한다고 판단된 에러 버스트 내의 에러 위치와 값들을 결정하는 감독 마이크로 프로세서를 포함하고, 디스크로부터 호스트 컴퓨팅 시스템으로의 데이타 블럭들의 흐름을 보통 중단시키지 않는, 디스크 드라이브 데이타 저장 서브 시스템 내의 온-더-플라이 에러 보정 시스템을 제공하는 것이다.
본 발명의 더 상세한 목적은 보정 가능성을 판단하기 위하여 온-더-플라이 크로스 체킹을 포함하는 에러 보정 방법을 제공하므로써, 이에 따라 데이타 블럭 내의 검출된 에러의 오보정 확률을 줄이기 위한 것이다.
본 발명의 더 상세한 목적은 데이타 블럭 ID 필드(헤더)에 대해 2바이트 또는 3바이트 실시간 에러 검출뿐만 아니라, 데이타 블럭의 보정을 위한 잔류자들의 복구를 실행하기 위해 최소로 수정될 수 있는 하드웨어가 최소화된 에러 보정/에러 검출 신드롬 발생기 장치를 제공하는 것이다.
본 발명의 더 상세한 목적은 에러 검출 처리의 완전성(integrity)을 희생하지 않고 하드웨어 요구 조건들을 최소화시키기 위해 비연속적인 해(non-consecutive)들을 갖는 갈로이스 필드 발생기 다항식을 채택한 리드 솔로몬에 기초된 ID 필드 에러 검출 방법 및 장치를 제공하는 것이다.
본 발명의 더 상세한 목적은 크로스 체킹을 수행하는 데에 요구되는 부가적인 하드웨어의 양을 최소화하면서 에러 보정 처리의 크로스 체킹을 수행하기 위한 방법 및 구조를 제공하는 것이다.
본 발명의 또 다른 상세한 목적은 식별된 데이타 블럭을 위해 에러 보정 처리 내에 채택된 것과 같은 승수 항들을 채택하므로써, ID 필드 에러 검출 및 데이타 블럭 에러 보정 처리 양자 모두를 위한 공통 승수 회로의 사용을 가능하게 하는 데이타 블럭 ID 필드 에러 검출 처리를 제공하는 것이다.
본 발명의 더 상세한 목적은 최소한 단일 버스트 에러의 경우에 실시간으로 데이타 흐름의 중단 없이 데이타 블럭의 에러 보정과 데이타의 크로스 체킹 및 ID 필드의 에러 검출을 수행하는 최적화되고 유연성 있는 하드웨어/펌웨어 시스템을 제공하는 것이다.
본 발명의 원리들에 따르면, 온-더-플라이 에러 보정 방법은 데이타 디코딩 처리 내에서 스트림의 데이타 블럭을 보정한다. 각 블럭은 데이타 디코딩 처리 이전에 발생하는 인코딩 처리동안 선정된 리드 솔로몬 코드에 따라 계산되고 부가된 ECC 신드롬 정보를 갖는다. 상기 디코딩 처리동안 발생하는 보정 방법은 상기 에러 신드롬 정보에 관련된 잔류자 정보를 얻기 위해 데이타 블럭을 신드롬 정보 복원 회로로 통과시키는 단계, 에러가 데이타 블럭 내에 존재하는지를 판단하기 위해 상기 잔류자 정보를 0과 비교하는 단계, 및 만약 에러가 존재하는 것으로 판단되면, 스트림의 다음 데이타 블럭을 위해 상기 신드롬 정보 복원 회로를 자유롭게 만들기 위하여 상기 복원된 정보를 잔류자 래치에 래칭시키는 단계, 상기 복원된 정보를 상기 잔류자 래치로부터 마이크로 콘트롤러로 전송하여 상기 마이크로 콘트롤러가 에러 보정 서비스 루틴(service routine)을 수행하도록 하는 단계, 선정된 리드 솔로몬 에러 보정 앨거리듬에 따라 에러 버스트 또는 버스트들의 위치 및 보정된 값을 마이크로 콘트롤러로 결정하는 단계, 및 에러 버스트를 포함하는 것으로 검출된 블럭 내에 있는 상기 에러 버스트를 상기 보정된 값으로 교체하는 단계를 포함한다.
본 발명의 방법의 한 측면으로서, 상기 데이타 블럭은 상기 인코딩 처리동안 계산되어 데이타 블럭에 부가되는 리드 솔로몬 크로스 체크 정보를 더 포함하고, 상기 방법은 복원된 크로스 체크 신드롬 정보를 신드롬 래칭에 래칭시키는 단계 및 가능한 오보정을 검출하기 위하여 상기 보정된 값의 상기 복원된 크로스 체크 신드롬 정보에의 영향을 마이크로 콘트롤러로 판단하는 단계를 더 포함한다.
본 발명의 방법의 또 다른 측면으로서, 상기 데이타 블럭은 에러 보정에 채택된 것과 같은 종류의 승수 항들을 채택하고 있는 리드 솔로몬 ID 필드 에러 검출 정보를 포함하는 최소한 하나의 ID 필드를 포함하고, 이에 따라 상기 신드롬 정보 복원 회로가 상기 데이타 블럭 ID 필드에 있는 에러들을 검출할 수 있도록 한다.
역시 본 발명에 따르면, 리드-솔로몬 에러 보정 코드 신드롬 발생기 장치는 고정형 디스크 드라이브 데이타 저장 서브 시스템과 같은 것처럼 컴퓨팅 시스템내에서 데이타 블럭 전송로(transfer path)에 사용되기 위해 제공된다. 전송되고 있는 실질적으로 인접한 각 데이타 블럭은 상기 블럭의 데이타 내에 있는 에러 검출 및 보정을 가능하게 하기 위해 그 끝에 부가된 리드 솔로몬 에러 보정 코딩 신드롬 정보를 포함한다. 각 데이타 블럭은 에러 보정 코딩 신드롬 정보가 상기 블럭의 크로스 체킹 신드롬 정보에 또한 관련하여 도출되는 방식으로 각 데이타 블럭에 부가된 리드-솔로몬 크로스 체킹 신드롬 정보를 더 포함한다. 인코딩 처리동안, 에러 보정 코드 신드롬 발생기는 x8+x4+x3+x2+1의 형식을 갖는 필드 발생기 다항식에 의해 발생되는 갈로이스 유한 필드(28)에 따라 에러 보정 코딩 신드롬 정보를 계산하는데, 이때 상기 필드의 제1항은 x5+x3+x+1(이진수로는 00101011)이며, 각 에러 보정 신드롬은 G(x)=x4+(alpha18)·x3+(alpha87)·x2+(alpha18)·x1+1의 형식이다. 인코딩 처리동안, 크로스 체크 신드롬 발생기는 G(x)=x+alpha의 형식을 갖는 크로스 체킹 신드롬 정보를 계산한다. 그리고 나서, 상기 에러 보정 코딩 신드롬 정보 및 크로스 체킹 신드롬 정보는 각 데이타 블럭에 부가된다.
디코딩 처리동안, 리드-솔로몬 에러 보정 코드 신드롬 발생기 장치는 그를 통해 통과하고 있는 데이타 블럭으로부터 신드롬 잔류자를 구하기 위해 잔류자 복원 회로로서 동작한다. 상기 신드롬 잔류자는 에러 버스트 위치와 보정값이 상기 데이타 블럭에 대해 결정될 수 있도록 에러 보정 신드롬에 관계된다. 상기 발생기 장치는 상기 잔류자를 0과 비교한다. 만약 상기 신드롬 잔류자가 0이 아니면, 상기 잔류자는 크로스 체킹 신드롬에 관련된 크로스 체크 신드롬 잔류자와 함께 잔류자 래치에 래치된다. 그리고 나서, 프로그램된 디지탈 마이크로 콘트롤러가 상기 래치된 잔류자로부터 에러 버스트 위치와 보정된 값을 결정하고 이 보정된 값의 상기 래치된 크로스 체크 잔류자에 대한 영향(impact)을 체크한다. 그후, 이 마이크로 콘트롤러는 상기 보정된 값이 오보정이 아니라고 판단되면 상기 보정된 값으로 상기 데이타 블럭 내에 있는 에러 버스트를 대체하도록 만든다.
본 발명의 이러한 측면 중 한 면에서, 상기 크로스 체크 신드롬 발생기는 시리얼 바이트들의 클럭된 데이타 스트림으로서 각각의 입력 데이타 블럭을 수신하기 위한 입력단, 합 바이트(sum byte)를 발생시키기 위해 상기 입력 데이타 블럭 클럭된 데이타 스트림의 각 바이트를 피드백 바이트(feedback byte)와 가산하기 위한 제1가산 접합(summing junction), 제1곱 바이트(product byte)를 발생시키기 위해 상기 합 바이트를 alpha1과 곱하기 위한 승산기, 제1바이트 클럭 기간(byte clock period)동안 상기 제1곱 바이트를 저장하고 후속 바이트 클럭 기간들 동안 후속 곱 바이트들을 저장하기 위해 상기 승산기에 접속된 제1의 클럭된 래치단(latch stage), 및 제2바이트 클럭 기간동안 상기 제1곱 바이트를 저장하기 위해 제1의 클럭된 래치단에 접속되며 제2바이트 클럭 기간동안 제1곱 바이트를 상기 가산 접합에 피드백 바이트로서 피드백시키기 위한 제2의 클럭된 래치단을 포함한다.
본 발명의 상기 측면 중 다른 면에서, 상술된 리드-솔로몬 에러 보정 코드 신드롬 발생기 장치는 상기 데이타 블럭의 데이타 ID 필드에 대한 에러 검출 신드롬을 실시간으로 발생시키기 위한 에러 검출 회로를 더 포함한다.
첨부 도면들과 함께 제공된 양호한 실시예에 대한 다음의 상세한 설명을 참조한다면 본 분야의 기술에 숙련된 자들은 본 발명의 이와 같은 및 다른 목적, 측면, 장점들 및 특징들을 더 완전하게 이해하고 평가할 수 있을 것이다.
본 발명은 저장 또는 통신에 관계없이 데이타 블럭들을 전송하는 어떠한 시스템에서도 효과적으로 구현되는 한편, 고정형 디스크 데이타 저장 서브 시스템 내에서와 같이 데이타 저장 및 재생(retrieval) 분야에서 특별한 유용성과 효율성을 갖는다. 이와 같은 시스템에서, 지금부터 상세하게 설명되겠지만, 데이타 블럭들은 하나 이상의 데이타 저장 디스크들의 동심(concentric) 데이타 저장 트랙 위치 내에 있는 데이타 필드 또는 데이타 섹터들로서 저장된다. 여기서 사용된 것처럼, 데이타 블럭, 데이타 필드 및 데이타 섹터란 용어들은 실질적으로 교체 가능(interchangeable)하게 사용된다. 데이타 판독/기입 변환기는 관심있는 트랙 위치상에 선택적으로 위치되고, 블럭들은 상기 트랙 위치 내의 데이타 섹터 저장 위치에 기입되거나 그곳으로부터 판독된다. 예를 들면, 본 발명의 에러 보정, 크로스 체킹 및 ID 필드 에러 검출 기술에 대한 필요성을 야기하는 것은 데이타 블럭들의 저장 및 재생 처리이다.
예를 들어, 고정형 디스크 데이타 저장 서브 시스템 내에서 발견되는 예시적인 데이타 블럭 또는 필드는 제1도에 도시되어 있다. 제1도에는 d[1]에서 d[512]까지 표시된 512개의 데이타 바이트가 있다. 제1도는 xc[513] 및 xc[514] 바이트는 d[1] 내지 d[512]의 데이타 바이트를 크로스 체크하기 위한 2개의 크로스 체크 바이트를 포함하며, 상기 데이타 바이트들과 크로스 체크 바이트들의 에러 보정을 위해 사용되는 c[515] 내지 c[526]까지의 12개의 ECC 바이트가 있다. 제1도의 하단에 도시되어 있는 것처럼, 이러한 특정의 디스크 드라이브 데이타 블럭의 예에서는 인터리브 1, 인터리브 2, 인터리브 3의 세개의 인터리브들이 존재한다. 인터리브 1은 d[1], d[4], d[7], d[10] 등의 바이트를 포함한다. 인터리브 2는 d[2], d[5], d[8], d[11] 등의 바이트들을 포함한다. 인터리브 3은 d[3], d[6], d[9], d[12] 등의 바이트들을 포함한다. 인터리브 1 및 2 각각은 171개의 데이타 바이트를 포함하고, 인터리브 3은 170개의 데이타 바이트를 포함한다. 제1도에서 명백한 것처럼, 2개의 크로스 체크 바이트 위치 xc[513] 및 xc[514]는 다른 인터리브에 위치하며, 각 인터리브에는 4개의 ECC 바이트, 즉 인터리브 1에 바이트 c[517], c[520], c[523] 및 c[526], 인터리브 2에 바이트 c[515], c[518], c[521] 및 c[524], 인터리브 3에 바이트 c[516], c[519], c[522] 및 c[525]가 위치한다. 에러 보정 방식에서 내부 섹터(within-sector) 인터리브의 사용은 ECC 능력을 더 긴 에러 버스트 길이까지 확장하기 위해 일반적인 것이다. 다른 이유는 연속 블럭 에러 버스트를 여러 인터리브에 걸쳐 확장하므로써, 예를 들면 에러 보정 기술의 복잡성을 감소시키려는 것이다.
본 양호한 에러 보정의 예에서, 단일 에러 버스트는 인터리브들 중 하나에 있는 한 바이트에서 발생하는 하나의 에러라고 정의한다. 이중 버스트 에러는 인터리브들 중 하나의 인터리브 내의 2개의 바이트에서 발생하는 하나의 에러라고 정의된다. 제1도에 도시된 3개의 인터리브가 주어질 때, 에러를 포함하는 각 바이트가 상기 3개의 인터리브들 중 다른 하나 내에 위치되는 한, 단일 버스트 에러는 3바이트의 길이까지 일 수 있다는 것은 명백하다.
상기 참조된 마차도의 특허에서 기술된 단일 버스트 에러 보정 방법에서와 같이, 본 에러 보정 예에 채택된 갈로이스 필드는 다음 다항식으로부터 발생된다.
p(x)=x8+x4+x3+x2+1 (1)
[지금부터 달리 언급되지 않으면, "+" 기호는 비트 대 비트의 익스클루시브 OR 동작을 나타낸다.] 상기 필드의 제1요소는 상기 승산기를 구현하는 데에 필요한 게이트들의 수가 최소화되도록 선택된다.
alpha1=x5+x3+x+1 (2)
본 양호한 실시예에서 구현되고 있는 리드-솔로몬 코드에 대한 모델(model)은 지수 옵(exponent offset) 126을 채용하는 다음의 발생기 다항식 G(x)에 의해 규정된다.
G(x)=x4+alpha18·x3+alpha87·x2+alpha18·x+1 (3)
인수분해된 형식(factored form)으로 하면, 식 (3)은
G(x)=(x+alpha126)(x+alpha127)(x+alpha128)(x+alpha129) (3a)
가 된다.
상기 12개의 ECC 바이트들은 신드롬 발생기(10, 제4도에 도시됨)를 통해 연속적인 바이트 차례대로 각 512바이트 블럭의 모든 사용자 데이타 바이트(및 2개의 체크 바이트)를 통과시키면서 발생된다. 값 C(x)는 각 데이타 블럭에 대한 데이타 및 크로스 체크 바이트에 전적으로 기초한 디스크에 기입된 인코딩된 데이타 다항식이다. 값 D(x)는 상기 데이타 블럭의 데이타 바이트들에만 전적으로 기초한 인코딩된 데이타 다항식이다. 값 C'(x)는 디스크 표면으로부터 재생되는 것과 같이 인코딩된 데이타 다항식이다. 따라서, 만일 보정이 가능하다면, C'(x)는 검출되고 보정되어야 할 하나 이상의 에러 버스트를 포함할 수 있다. 값 R(x)는 값 C'(x)에 관련된 잔류자를 포함한다.
각 인터리브 내에 있는 각 신드롬 바이트에 대한 인코딩된 데이타 코드워드 C(x)는 다음 식에 의해 발생된다.
C(x)=[x4·D(x) mod G(x)]+x4·D(x) (4)
동일한 신드롬 발생기(10)을 통한 재생 처리동안, 각 인터리브에 대한 잔류자 값 R(x)는 복원되고, 0이 아니면 다음에 의하여 잔류자 래치(68)에 래치된다.
R(x)=C'(x) mod G(x) (5a)
=R3x3+R2x2+R1x+R0 (5b)
그 후, 프로그램된 마이크로 콘트롤러(196)은 각 인터리브에 대한 코드 워드의 각 부분 신드롬 바이트(Si)를 다음 식에 따라 디코딩한다.
(여기에서 i=0, 1, 2 및 3이고 지수에서의 +는 가산을 나타낸다.)
만약 잔류자 바이트[R(x)의 계수]가 0이 아닌 값을 가지면, 재생 데이타 블럭에 최소한 하나의 에러 버스트가 존재한다.
여기서 주어진 본 양호한 실시예에서, 위의 상기 에러 보정 처리는 상기 3개의 인터리브의 각각에 대한 최소한 하나의 에러 버스트를 온-더-플라이로 보정할 수 있는 능력을 갖고 있다. 이러한 온-더-플라이 에러 보정 처리에서, 부분 신드롬은 다음과 같은 형식을 갖는다.
S0=e1·alpha126*L1(6)
S1=e1·alpha127*L1 (7)
S2=e1·alpha128*L1 (8)
S3=e1·alpha129*L1 (9)
L1(위치)과 e1(단일 에러값)에 대한 해는 다음과 같다.
L1=log(alphaL1)=log(S1/S0) (10)
e1=S1·(S0/S1)127(11)
본 발명의 시스템은 또한 다음의 부분 신드롬들에 따라 이중 버스트 에러 보정을 수행한다.
S0=e1·alpha126*L1+e2·alpha126*L2(12)
S1=e1·alpha127*L1+e2·alpha127*L2(13)
S2=e1·alpha128*L1+e2·alpha128*L2(14)
S3=e1·alpha129*L1+e2·alpha129*L2(15)
이러한 방정식들을 풀기 위하여 다음 단계들이 수행된다.
1. φ1과 φ2 값을 구한다 :
2. 에러 위치 지정 함수(error-locator) φ(x)의 해 X1과 X2를 구한다 :
φ(x)=x2+φ1x+φ2=0 (18)
선형 2차 방정식(18)을 푸는 데는 여러가지 방법이 있다. 하나의 고전적인 방법은 모든 갈로이스 필드 요소들을 상기 방정식에 대입하여 0값에 대해 검출하는 치엔 서치 루프(Chien Search loop)를 구현하는 것이다. 0값에 대한 결과(zero-value result)가 발견된 때, 상기 루프는 중단되고 입력 요소는 그 즉시 X1로 정의된다. 아무 해도 발견되지 않으면, 보정 불능의 에러 경우(event)가 검출된다. 식 (18)이 선형 2차 방정식이기 때문에,
φ1=x1+x2 (18a)
X2는 다음과 같이 구해진다.
X2=X1+φ1 (19)
3. 다음으로, 위치값 L1 및 L2가 계산된다 :
L1=log[x1] (20)
L2=log[x2] (21)
4. 다음으로 에러값 e1 및 e2가 계산된다 :
마이크로 프로세서(196)에 있어서의 적절한 처리 능력과 속도 및 보정 처리에서의 타당한 사용자 신뢰 레벨이 주어지면, 본 방법을 가지고 온-더-플라이 이중 버스트 에러를 보정하는 것이 유용하다.
다중 임의 에러들에 대한 오보정 확률을 0.233 이하로 감소시키기 위해, 발생기 다항식 Gxc(x)가 리드 솔로몬 크로스 체크를 실행하기 위하여 선택된다. 이 발생기 다항식은 다음과 같은 형식을 갖는다.
Gxc(x)=X2+alpha1(24)
이러한 크로스 체크 다항식은 놀라울 정도로 강력한 앨거리듬인 것으로 판명된다. 이것은 에러 보정 처리를 크로스 체크하고 데이타 블럭 내의 데이타 값의 뒤섞임 및 오배열(misordering)에 민감하다. 이러한 크로스 체크 방법은 인터리브당 최소한 단일 버스트 에러인 경우에 대해 온-더-플라이로, 또 인터리브당 이중 버스트 에러인 경우에 대해 충분한 처리 속도로 실행될 수 있도록 설계된다.
만일 특정한 에러가 존재하면, 이 에러를 표시하는 정확한 방법은 다항식 E(x)
E(x)=eixLi(25)
로 나타내는 것이다.
대응하는 크로스 체크 신드롬에서 데이타 블럭이 행해진 에러 보정의 효과를 판단하기 위해, alpha1이 에러 다항식(25)의 x에 대입되고, 그 다음으로 크로스 체크 신드롬(XC)이 갱신된다. 신드롬 크로스 체크(XC)=이전의 크로스 체크(XC)+eialphaL1는 다음에 설명되는 프로그램된 마이크로 콘트롤러(196)에 의해 계산된다. 만약 상기 데이타 필드에 보정이 행해진 후 상기 갱신된 크로스 체크 바이트가 0이 아니면 상기 에러는 본 방법에 의해 보정 가능한 것이 아니라고 판단된다.
상기 방법은 예를 들면 이중 버스트 보정의 경우에서 현재의 에러 버스트가 0.233과 같이 선정된 오보정 확률 내에 있지 않다는 것과, 단일 버스트 에러 시나리오(scenario)에서 온-더-플라이로 실행된 에러 보정 동작이 데이타 버스트의 잘못된 보정 또는 "오보정"이 되지 않았다는 것을 결정하기 위해 에러 보정을 확인하기 위한 매우 빠른 온-더-플라이 방법을 제공한다.
언급한 것처럼, 위의 크로스 체크 다항식(5)에서 2가 아닌 선정된 값 alpha1(갈로이스 필드 상수)을 사용하는 것이 바람직하다. 선정된 시작 옵셋(beginning offset), 예를 들면 126으로 리드-솔로몬 코드를 선택하므로써, 바람직한 alpha 상수는 2B(16진수) 또는 00101011(이진수)이라고 판명된다. 특별히 양호한 이러한 실시예에, 상기 양호한 alpha1상수에는 0들이 존재하는 만큼 많은 1들이 존재한다. 따라서, 이것은 ECC 신드롬 발생기를 통해 전파(propagate)될 때 매우 급속하게 뒤섞이기 때문에, 크로스 체크 다항식 내에 놀라울 정도로 효과적인 충분한 "매스(mass)" 또는 "서브스턴스(substance)"를 갖는다.
따라서, 상기 크로스 체크 다항식에 대한 해 alphan을 선택함에 있어서, ECC 다항식을 위해 선택된 해들은 회피될 것이다 본 양호한 실시예에서 상기 ECC 해들은 n=126, n=127, n=128 및 n=129로 선택된다. 크로스 체크 해 n=1과는 다른 이 값들은 상기 펌웨어를 간단하게 하고 온-더-플라이로의 인터리브 당 단일 에러 버스트 보정의 크로스 체킹을 가속화시킨다.
본 발명의 구현되는 디스크 드라이브의 데이타 포맷은 다수의, 예를 들면 8개의 방사상 데이타 영역(radial data zone)을 채택하고 있다. 각 영역은 각각이 선정된 수의 데이타 섹터를 갖는 다수의 동심 데이타 트랙들을 포함한다. 각 데이타 섹터는 데이타 ID 필드, 이를 뒤따르는 제1도의 512 데이타 바이트 배열, 2개의 크로스 체크 바이트 및 12개의 ECC 바이트들을 포함한다. 상기 데이타 ID 필드는 3개의 EDC 바이트가 뒤따르는 어드레스 필드를 포함한다. 데이타 저장 능력을 최대화하기 위해 분할 데이타 필드(split data field) 또는 데이타 섹터들이 채택된다. "분할 데이타 필드"란 것은 서보 섹터 S가 상기 데이타 표면 상에서 방사상 스포우크(spoke)로서 연장하고, 최소한 몇개의 데이타 섹터를 세그먼트들로 인터럽트 또는 분리되어 나간다는 것을 의미한다. 현재 고려된 형식의 영역별 데이타 기록 기술은 일정 디스크 각속도(angular velocity)와 가변 데이타 전송 속도를 채택하거나, 고정 데이타 전송 속도를 채택하는데, 예를 들면 데이타 변환기가 방사상 외부 영역(radially outer zone)에서 방사상 내부 영역(radially inner zone)으로 이동함에 따라 디스크 속도를 줄이게 된다. 현재로서는, 스위칭된 데이타 전송 속도가 선호된다. 결과적으로, 다른 데이타 영역들에 대해서 다른 데이타 전송 속도들이 존재하며, 디스크 저장 포맷(format) 내에서 데이타 저장 용량을 최적화시키기 위해 선택된 상이한 영역들의 트랙들 내에 상이한 수의 데이타 섹터들이 존재하게 된다. 또한, 본 명세서에서 참조되고 마차도에게 일반 양도된 "가변 길이, 제로 런 길이 제한 코드들을 위한 통합 인코더 디코더(Integrated Encoder Decoder for Variable Length, Zero Run Length Limited Codes)"란 명칭의 미합중국 특허 제4,675,652호에 개시되어 있는 것처럼, 데이타 저장 디스크(162)의 저장 표면상에 데이타 조밀화(data compaction)을 위해 1, 7 RLL 코딩 배치가 양호하게 채택된다.
제2도의 레이아웃도(layout diagram)에 의해 제공된 예에 도시된 것처럼, 예를 들어 2.5인치 직경의 회전 데이타 저장 디스크(162)의 두개의 대향(opposite) 데이타 저장 표면들은, 예를 들면 각각 60개의 데이타 섹터를 갖는 표면당 110개의 동심 데이타 저장 트랙들과 예를 들어 6.48M 바이트의 총 저장 용량에 대해 초당 18.13M 비트(Mbps)(27.20㎒의 코딩된 데이타 주파수)의 원 데이타 속도(raw data rate)를 갖는 방사상 최외부 영역(outermost zone) Z1을 포함하도록 규정될 수 있다. 다음으로 방사상 안쪽에 있는 영역 Z2는, 예를 들어 각각 56개의 데이타 섹터를 포함하는 109개의 데이타 트랙을 포함하며, 17.54Mbps(26.18㎒의 코딩된 주파수)의 원 데이타 속도를 갖는다. 영역 Z2는 디스크(162)의 양면에 6.19M 바이트의 사용자 데이타를 저장한다. 제3데이타 영역 Z3은 각각 52개의 데이타 섹터를 갖는 109개의 데이타 트랙을 포함하고, 15.69Mbps(23.53㎒의 코딩된 데이타 주파수)의 원 데이타 속도를 갖으며, 따라서 디스크(162)의 양면에 5.75M 바이트의 사용자 데이타를 저장한다. 제4데이타 영역 Z4는 각각 52개의 데이타 섹터를 갖는 109개의 데이타 트랙을 갖고, 15.69Mbps(23.53㎒의 코딩된 데이타 주파수)의 원 데이타 속도를 갖으며, 따라서 데이타의 양면에 5.75M 바이트의 사용자 데이타를 저장한다. 제5데이타 영역 Z5는 각각 47개의 데이타 섹터를 갖는 109개의 데이타 트랙을 갖고, 14.77Mbps(22.15㎒의 코딩된 데이타 주파수)의 원 데이타 속도를 갖으며, 디스크(14)의 양면에 5.19M 바이트의 사용자 데이타를 저장할 수 있다. 제6데이타 영역 Z6은 각각 44개의 섹터를 갖는 108개의 데이타 트랙을 갖고, 14.00Mbps(21.00㎒의 코딩된 데이타 주파수)의 원 데이타 속도를 갖으며, 디스크(162)의 양면에 4.81M 바이트의 사용자 데이타 용량을 달성한다. 제7데이타 영역 Z7은 각각 41개의 섹터를 갖는 108개의 데이타 트랙을 갖고, 디스크(162)의 양면에 4.48M 바이트를 저장하도록 12.95Mbps(19.43㎒의 코딩된 주파수)의 원 데이타 속도를 사용한다. 제8데이타 영역 Z8은 각각 예를 들어 39개의 데이타 섹터를 갖는 108개의 데이타 트랙을 포함하고, 데이타(162)의 양면에 4.26M 바이트를 저장하도록 12.09Mbps(18.13㎒의 코딩된 주파수)의 원 데이타 속도를 갖는다. 예를 들어 영역 Z8의 포맷을 뒤따르는 14개의 동심 데이타 트랙을 포함하는 표면(12)의 방사상 최외부 영역 SYS는 디스크 드라이브 서브 시스템(100)의 동작에 필요한 시스템 정보를 포함할 수 있다. 상기 제8데이타 영역의 안쪽에 있고 제8데이타 영역의 비트 전송 특성(transfer characteristic)을 갖는 여러 트랙들은 시스템 진단(diagnosis) 및 다른 값들을 저장하기 위해 이용 가능하게 만들 수 있다.
이들 8개의 데이타 영역들이 상술된 특성들을 갖고 있는 것으로 기술되었지만, 이해되어야 할 것은 영역의 수, 영역 당 트랙과 섹터의 수 및 각 영역 내에서의 데이타 전송 속도는 본 분야의 기술에 숙달된 자들에게 잘 이해되듯이 헤드 및 미디어 설계(media design)와 질(quality), 헤드 위치 서보 시스템 및 요구되는 저장 용량에 따라 주어진 예와 다를 수 있다는 것이다. 본 예에서, 42.91M 바이트의 데이타 저장 용량은 단일 2.5인치 직경의 박막 미디어 데이타 저장 디스크(162)와 박막 데이타 변환기 헤드(170a 및 170b)로 달성된다.
각 영역내에서 채택된 데이타 전송 주파수는, 예를 들어 시스템 마이크로 콘트롤러(196)의 제어하에 동작하는 주파수 합성기(190)에 의해 양호하게 합성된다. 따라서, 이 합성기는 각 데이타 영역을 위한 코딩된 주파수를 합성하여 PLL(188)에 출력하도록 설정된다.
제1도의 예로부터 중요하다고 생각되어야 할 것은 데이타 시켄서(100)으로 하여금 바로 뒤따르는 섹터의 데이타 필드의 구조적 레이아웃을 즉시 결정하는 것을 가능케 하는 각 데이타 섹터 ID 필드 내에 카운트 바이트(count byte)를 포함하는 것이다. 이 레이아웃은 분할 데이타 필드를 포함할 수도 있고 포함하지 않을 수도 있으며, 제2도에 도시된 것처럼 하나 이상의 인터럽팅 서보 섹터(interrupting servo sector)들을 포함한다.
제2도는 또한 저장 디스크(162)의 데이타 표면 주위에 일정하게 배치되어 있고 각 영역에 있는 데이타 섹터들 사이에 내장되거나 실제로 인터럽트하는 다수의 등간격 분리 서보 섹터들 S(예를 들면, 52개의 서보 섹터들)를 도시하고 있다. 이들 서보 섹터들 S는 최소한 몇개의 데이타 섹터들에서 인터럽트하기 때문에, 서보 섹터 인터럽션 때마다 상기 드라이브로 하여금 데이타 속도에 재동기(resynchronization)하는 것을 가능하게 하는 특별 데이타 싱크 필드가 존재한다. 데이타 블럭 ID 필드 제공된 데이타 필드 카운트 정보는 관심있는 데이타 필드의 레이아웃[즉, 서버 섹터 인터럽션의 수와 위치 및 각각의 결과 데이타 필드 세그먼트(resultant data field segment)의 길이]를 결정하기 위하여, 데이타 기입 및 재생 처리동안 데이타 시켄서(100)에 의해 사용된다. 상기 바이트 위치 카운트가 데이타 ID 필드에 따라 다를 수 있기 때문에, 실시간에서 ID 필드로부터 복원된 정보의 정확도를 확인하는 것은 매우 중요하다. 본 발명은 유리하게도 선택된 헤드(170)의 의해 판독된 각각의 데이타 ID 필드들에 대해 실시간으로 리드 솔로몬 에러 검출 처리를 수행하기 위하여 동일한 신드롬 발생기 회로(10, 제4도)을 채택하고 있다.
제3a도는 분할 데이타 필드 포맷에 특별히 잘 적합한 현재의 양호한 데이타 블럭 ID 필드 배치를 도시하고 있다. 각 ID 필드는 9바이트의 서문(preamble), ID 필드 어드레스 마크 바이트(ID AM), 3개의 데이타 필드 카운트 바이트(CNT3, CNT2 및 CNT1), 섹터 식별자 바이트(sector indentifier byte : SECT) 및 헤드 식별자 바이트(HEAD)를 포함하고 있다. 그리고 2바이트 패드(PAD)가 뒤따르는 3개의 에러 검출 코드 바이트(EDC1, EDC2, EDC3), 기입 슬라이스 갭 바이트(write slice gap byte : GAP2), 및 서보 섹터 S 위치에서 끝나는 데이타 필드가 존재한다. 상기 3개의 카운트 바이트내에 존재하는 값들은 서보 섹터들에 의해 인터럽트 되는 상기 데이타 필드의 3개의 세그먼트들까지의 길이들을 각각 결정한다. 예를 들면, 만약 데이타 필드의 인터럽션들이 존재하지 않으면, CNT1은 예를 들어 512바이트인 전 필드 세그먼트 길이를 나타낼 것이다. 만약 몇몇의 데이타 블럭들의 경우처럼 데이타 필드의 2개의 서보 섹터 인터럽션이 존재하면, 예를 들어 CNT1은 제1데이타 필드 세그먼트의 바이트 길이를 설명하고, CNT2는 제2데이타 필드 세그먼트의 바이트 길이를 설명하며, CNT3은 제3데이타 필드 세그먼트의 길이를 설명한다.
바이트 카운트 값들을 포함하는 양호하게 영역화된 데이타 기록 방식에서 사용되는 ID 필드들에서는, 각 ID 필드로부터 재생된 정보의 유효성(validity)을 체크하는 여러 검출 방법을 제공하는 것이 매우 중요해진다. 최소한 몇개의 데이타 블럭들을 인터럽트하는 내장 서보 섹터 S로 분할된 데이타 필드를 갖는 본 응용에서는 3개의 바이트 코드가 현재는 유용하다. 본 발명의 중요한 면은 제4도의 신드롬 발생기를 사용하는 에러 검출 코딩 장치를 제공한다는 것이다. 이와 같은 장치는 이미 개발되었다. 다음의 현재로서 가장 양호한 코드는 각 데이타 ID 필드에 부가되는 3개의 에러 검출 체크 바이트를 발생시킬 것이다.
GEDC3(x)=x3+ax2+bx+c (26)
현재의 양호한 형식으로, 이 에러 검출 코드는 다음과 같이 표현될 수 있다.
GEDC3(x)=x3+alpha87·x2+alpha87·x+1 (26a)
인수분해된 형식으로, 식 (26a)를 다시 쓸 수 있다.
GEDC3(x)=(x+alpha0)(x+alpha108)(x+alpha147) (26b)
식들을 검토해 보면 이러한 alpha 계수들이 연속적이지 않다는 것은 명백하다. 이 코드는 3개의 에러 검출 바이트들을 발생시킬 것이다. 제4도에 도시된 신드롬 발생기는 alpha87승산기 논리(multiplier logic)를 이미 갖고 있기 때문에, 이 논리는 에러 검출 처리에 사용 가능하다.
데이타 섹터들의 데이타 필드들을 인터럽트하는(데이타 ID 섹터들이 바이트 카운트들을 포함하지 않는) 내장 서보 섹터들을 채택하지 않은 드라이브들인 경우는, 2바이트의 에러 검출 코드가 충분한 것으로 판명되었다. 2바이트 에러 검출 코드를 채택하는 ID 필드의 한 예는 제3b도에 도시되어 있다. 제3b도에 주어진 예에서, ID 필드는 9바이트의 서문, ID 필드 어드레스 마크 바이트(ID AM), 실린더 하이 바이트(cylinder high byte : CYL HI), 실린더 로우 바이트(cylinder low byte : CYL LO), 헤드 바이트(HEAD), 섹터 바이트(SECT) 및 2개의 에러 검출 코드(EDC)(바이트 EDC1 및 EDC2)를 포함한다. 이러한 EDC 바이트들을 2바이트 패드가 뒤따르고, 다음 데이타 섹터까지 인터럽트되지 않고 계속되는 데이타 필드에 도달하기 전에 갭 2바이트가 뒤따르는데, 이보다 내장 서보 섹터 S가 앞설 수도 있다.
현재 가장 양호한 2바이트 EDC 코드는 다음의 일반화된 관계식에 의해 발생될 수 있다.
GEDC2(x)=x2+ax+b (27)
여기에서 b는 1이 아니다. 이 관계식의 더 상세한 형태는 다음과 같다.
GEDC2(x)=x2+x+alpha18(27a)
인수분해된 형식으로 식 (27a)를 다시 다음과 같이 쓸 수 있다.
GEDC2(x)=(x+alpha22)(x+alpha251) (27b)
이러한 코드로는, 단 하나의 승산기 회로 alpha18만이 필요한데, 이 회로는 이미 제4a도 및 제4b도의 ECC 신드롬 발생기 회로에 존재한다.
다른 EDC 코드들은 데이타 블럭의 ID 필드내에 있는 에러들을 검출하기 위해 이용가능한 것으로 알려져 있다. 그러나, 다음의 각 앨거리듬은 부가적인 승수 항을 필요로 하는데, 이 때문에 위에 주어진 앨거리듬(26) 및 (27)보다 구현하기가 약간 더 복잡하다.
현재의 덜 양호한 3바이트 EDC 코드는 다음 관계식에 의해 발생될 수 있다.
GEDC3(x)=x3+alpha18·x2+alpha87·x+alpha81(28)
=(x+alpha5)(x+alpha6)(x+alpha7) (28a)
현재의 덜 양호한 2바이트 EDC 코드는 다음 관계식에 의해 발생될 수 있다.
GEDC2(x)=x2+alpha81·x+alpha81(29)
=(x+alpha105)(x+alpha231) (29a)
제4a도 및 제4b도를 참조하면, ECC 신드롬 발생기 회로(10)은 데이타 필드에 대한 ECC 기능, 데이타 필드에 대한 크로스 체킹 기능, 및 데이타 블럭 ID 필드에 대한 EDC 기능을 수행하기 위한 회로를 동시에 구현한다. 단일의 간략화된 회로(10) 내에서 수행되는 이와 같은 다중 기능들은 본 발명에 따른 온-더-플라이 에러 보정을 촉진한다. 제4도의 ECC 회로(10)은 시리얼로 바이트 데이타를 이동시키는 입력용 시리얼 데이타 버스(12)를 포함한다. 논리 게이트(13)의 출력 상태에 따라, 데이타 확장기 래치(data extender latch, 14)는 버스(12) 상의 시리얼 데이타를 내부 ECC 버스(16) 상으로 이동시킨다. 버스(16)은 1바이트 폭의 익스클루시브 OR(여기에서는 XOR) 게이트 어레이(18)로 가는데, 각 입력 바이트는 여기에서 출력 버스(outflow bus, 63)상의 회로(10)은 ECC부를 빠져나가는 바이트와 XOR 연산된다. 이 결과 합은 게이트(18)에 의해 버스(20)으로 통과되어, 여기에서 제로기 회로(zeroer circuit, 22)를 통해 다른 버스(24)로 간다. 제로기 회로(22)는 예를 들어 디스크 동작 또는 디스크 포맷 동작에의 데이타 기입 동안과 같이 ECC 또는 EDC 바이트를 데이타 필드에 부가할 때 버스(20)을 강제로 0으로 만들기 위해 사용된다.
버스(24)는 3바이트 레지스터(26)으로 가고, 그 출력은 XOR 게이트 어레이(28)로 간다. 버스(24)는 또한 버스(32)상에 alpha18곱(product)을 발생시켜 출력시키고, 또 버스(34)상에 alpha87곱을 발생시켜 출력시키는 2 계수(bi-coefficient) 승산기(30)으로 간다. alpha18곱은 바이트 폭(byte-wide) XOR 게이트 어레이(28)에서 쉬프트 레지스터(26)으로부터의 출력과 XOR되고, 그 결과 합은 다른 3바이트 쉬프트 레지스터(36)으로 통과된다. 버스(34)상의 alpha87곱은 다른 바이트 폭 XOR 게이트 어레이(38)에서 레지스터(36)으로부터의 출력과 XOR된다. XOR 어레이(38)의 출력 합은 다른 3바이트 쉬프트 레지스터(40)을 통과하고, 버스(32)상의 alpha18곱은 쉬프트 레지스터(40)으로부터의 출력과 XOR되어 버스(43)상에 출력 합을 출력시킨다.
다음으로, 버스(43)상의 출력 합은 멀티플렉서 MUX(44)를 통해 단일 바이트 레지스터(46)으로 선택적으로 넘겨진다. 멀티플렉서(44)는 뒤에 설명될 EDC 처리와 함께 동작한다. 다음으로, 상기 단일 바이트 레지스터(46)으로부터의 출력을 버스(54)상의 alpha87곱과 XOR된다. 이와 관련하여, 버스(34)상의 alpha87곱은 멀티플렉서(50)과 제로기 회로(52)를 통해 버스(54)에 도달한다. 다음으로, XOR 게이트 어레이(48)로부터의 버스(55)상의 출력은 멀티플렉서(56)을 통해 제2의 단일 바이트 쉬프트 레지스터(58)에 도달한다. 멀티플렉서(50 및 56)은 2개의 EDC 바이트 또는 3개의 EDC 바이트를 갖는 ID 필드들 사이의 선택을 하는 데에 사용된다.
다음으로, 레지스터(58)의 출력은 XOR 게이트 어레이(60)에서 버스(54)상의 alpha87계수와 XOR된다. 이 XOR 어레이(60)에 의해 출력된 결과 합은 출력 버스(63)으로 직행하는 단일 바이트 쉬프트 레지스터(62)로 간다. 레지스터(46, 55 및 62)를 포함하는 마지막 레지스터 그룹은 EDC 기능이 2 또는 3개의 EDC 바이트 상에서 실행될 수 있도록 XOR 게이트 어레이(48 및 60)에 의해 분할된다. 이와 같은 방식으로 데이타 섹터 ID 필드를 체크하기 위한 2바이트 또는 3바이트의 리드-솔로몬 에러 검출 코드는 최소한의 부가 회로로 기존의 ECC 신드롬 발생기(10) 내에서 용이하게 실현되고 구현될 수 있다.
정상적인 ECC 동작동안, 제로기 회로(52)는 입력 바이트 값(2바이트 EDC) 또는 alpha87곱(3바이트 EDC) 대신에 0의 계수를 부여한다. 따라서 정상적인 ECC 동작동안, XOR 게이트 어레이(48 및 60)은 레지스터(46, 58 및 62) 사이의 경로에서 기능적으로 동작하지 않는다. 멀티플렉서(56)은 2바이트 EDC 동작동안 레지스터(58)에 alpha87곱을 위치시키지 않는다.
마지막 레지스터(62)로부터의 출력 버스(63)은 멀티플렉서(64)를 통해 회로(10)으로 하여금 제1도에 도시된 것과 같은 각 데이타 필드의 ECC 체크 바이트 위치들에 부가된 12개의 ECC 신드롬 바이트를 적당한 시간에 발생시켜서 동기시켜 내보낼 수 있도록 하는 ECC 출력 버스(66)으로 간다. 2개의 제어 신호(바이트 클럭 신호 BYTCLKA 및 ECC 가능 동작 신호 ECCENOP)는 AND 게이트(13)에서 합성되고, 다음으로 그 출력은 래치(14)와 쉬프트 레지스터(26, 36, 40, 46, 58 및 62)를 차례로 통해 바이트들을 클럭킹하기 위한 매스터 클럭 신호를 제공한다. 쉬프트 레지스터(26, 36, 40, 46, 58 및 62)들은 초기화 제어 신호 CTLIEC의 요구(assertion)에 의해 선정된 초기값으로 초기화된다. 상기 값들은 임의로 선택될 수 있지만, 상기 쉬프트 레지스터들의 각 초기화에서 반복된다.
상술된 것처럼, 신드롬 잔류자 래치(68)은 신드롬 발생기 회로(10)내에 제공된다. 이러한 래치(68)은 다수의 잔류자 바이트들을 수신하여 저장한다. 3개의 잔류자 바이트는 버스(70)상으로의 제1바이트를 포함하는 레지스터(26)으로부터 수신된다. 3개의 추가 잔류자 바이트는 버스(72)상으로의 제4바이트를 포함하는 쉬프트 레지스터(36)으로부터 수신된다. 3개의 추가 잔류자 바이트는 버스(74)상으로의 제7바이트를 포함하는 쉬프트 레지스터(40)으로부터 수신된다. 제10잔류자 바이트는 버스(76)상으로의 전송을 갖는 단일 바이트 쉬프트 레지스터(46)로부터 수신되며, 제11잔류자 바이트가 버스(77)상으로의 전송을 갖는 레지스터(58)로부터 수신되는 반면에, 제12잔류자 바이트는 버스(79)상으로 수신된다.
잔류자 래치(68)은 3개의 제어 신호에 의해 제어된다. 첫째로, 5비트 제어 신호 LADD[4 : 0]은 현재 동작중인 마이크로 콘트롤러 사이클(cycle)의 5개의 최하위 어드레스 비트를 포함한다. 이러한 5개의 어드레스 비트들은 온-더-플라이 ECC 동작동안 마이크로 콘트롤러(196)에 의한 처리를 위해 특정한 래치된 잔류자 바이트를 페칭(fetching)하기 위하여 마이크로 콘트롤러에 의해 사용된다. 둘째로, 신드롬 래치 클로우즈 제어(syndrome latch close control) SYNLCLS, 신호는 온-더-플라이 ECC 동작을 위해 특정한(예를 들면, 0이 아닌) 잔류자를 래치하기 위해 잔류자 래치(68)을 동작시키는 데에 사용된다. 잔류자 래치(68)은 정상적으로는 투과 모드(transparent mode)에 있다. 출력 라인(80)에서와 같이 에러를 검출하면, 데이타 시켄서(100)은 쉬프트 레지스터(26, 36, 40, 46, 58 및 62)로부터 잔류자 바이트들을 비동기적으로 래치시키기 위해 이 신호를 요구한다. 이러한 동작은 다음 데이타 섹터를 위해 발생하는 재초기화(reinitialization) 전에 수행된다. 따라서, 이 12바이트 ECC 신드롬 잔류자는 그로부터 마이크로 콘트롤러(196)에 의해 에러 위치와 에러 값들이 결정될 수 있고, 다음 데이타 섹터가 신드롬 발생기 회로(10)을 통해 순환(circulating)되고, 그 잔류자 바이트들이 복원되고 있는 동안 보정될 수 있는 정보를 제공한다. 세째로, 신드롬 래치 오픈 제어(syndrome latch open control) SYNLOPE, 신호는 상기 신드롬 래치 클로우즈 제어 신호의 반대가 되어야 한다. 이 SYNLOPE 신호는 상기 신드롬 잔류자 래치(68)이 그 투과 모드에 있을 때 하이(true, high)이고, 신드롬 래치(68)이 래치될 때 로우(low)이다.
버스(70, 72, 74, 76 및 77)상의 바이트 값들은 제로 검출 회로(60)으로 넘겨져서, 상기 값들이 0인지를 보기 위해 체크된다. 신드롬 바이트들은 차례대로 쉬프트 레지스터 그룹(26, 36, 40) 및 3개의 인터리브에 있는 개별 쉬프트 레지스터(46, 58 및 62)의 마지막 그룹을 거쳐 클럭킹되기 때문에, 신드롬 레지스터의 4개 그룹 각각의 첫번째 것들로부터의 상기 바이트들만이 ECC 신드롬 제로 체킹을 위한 제로 검출 회로에 입력될 필요가 있다. 이러한 배치는 논리 소자들을 절약시킨다. 데이타 판독 동작 동안 0의 패리티(parity with 0)는 현재의 데이타 블럭내에 어떠한 에러도 검출되지 않았다는 것을 나타낸다.
5개의 제어값들이 제로 검출 회로(78)에 입력되는데, 이는 ECC 가능 동작 제어 ECCENOP, 에러 검출 동작 제어 CRCOP, 에러 보정 동작 제어 ECCOP, 바이트 클럭 신호 BYTCLKA 및 노 크로스 체크 동작 제어 NOXC이다. 이 제어 신호들은 제로 검출 회로(78)로 하여금 특정한 ECC 신드롬, 크로스 체크 신드롬 또는 EDC 신드롬이 0인지를 결정 가능토록 하므로써 온-더-플라이 보정을 촉진시킨다.
단일 비트 잔류자 출력 제어값은 라인(80)에 제공된다. 이 라인은 제로 검출 회로(78)에 의해 결정된 대로 체크되고 있는 잔류자 바이트가 0일 때 어떤 한 논리 상태에 있고, 패리티가 0이 아니면 다른 논리 상태에 있을 것이다. 온-더-플라이 서비스 루틴은 마이크로 콘트롤러(196)에 의해 호출되고, 라인(80)상의 단일 비트 신드롬 값이 0이 아닌 패리티인 때마다 실행의 일부분으로서 신드롬 래치(68)에 의해 실제로 래치된 신드롬 바이트 값들은 신드롬 데이타 버스(82)상으로 디스크 파일의 마이크로 콘트롤러(196)에 출력된다. 이와 같은 상태는 각 데이타 필드에 부가된 1개의 ECC 바이트를 체크하므로써 발생한다. 다른 에러 상태 마이크로 콘트롤러 관여(intervention)는, 예를 들어 에러 검출 코드(EDC) 동작 중의 3바이트의 ID 체크 필드나 2바이트의 ID 체크 필드를 체크하는 것으로부터 발생할 수 있다.
일단 마이크로 콘트롤러(196)이 섹터 온-더-플라이식으로 에러 버스트의 위치를 정하고 보정하면, 잔류자 래치(68)에 역시 유지되고 필요에 따라 마이크로 콘트롤러(196)에 의해 판독되는 크로스 체크 잔류자 바이트들에 대한 데이타 보정의 영향을 마이크로 콘트롤러(196)이 판단하도록 함으로써 발생하였던 오보정 확률이 검사된다.
크로스 체크 잔류자 바이트들을 얻기 위하여, ECC 데이타 버스(16)상의 데이타 블럭은 XOR 게이트(84)를 통과한다. 게이트(84)로부터의 출력은 버스(88)상에 alpha1을 계산하여 출력하는 멀티플라이어(86)을 통과한다. 그리고 나서, alpha1곱은 2바이트의 크로스 체크 쉬프트 레지스터(90a 및 90b)로 래치된다. 쉬프트 레지스터(90b)로부터의 출력은 크로스 체크 바이트가 제1도에 도시된 것처럼 데이타 필드에 부가될 수 있도록 XOR 게이트 어레이(84)에 피드백(feed-back)되고, 또한 멀티플렉서(64)에 다른 입력을 제공한다.
레지스터(90a)로부터의 출력 버스(94)는 제1크로스 체크 바이트가 신드롬 래치(68)에 래치되고 또 제로 검출 회로(78)에 의해 체크되도록 만든다. 유사하게, 레지스터(90b)로부터의 출력 버스(96)은 제로 검출 회로(78)에 의해 0의 패리티에 대해 체크될 뿐만 아니라 제2크로스 체크 바이트가 잔류자 래치(68)에 래치되도록 만든다.
ECC 잔류자 바이트 값이 0이 아니라고 판단되고 12개의 ECC 잔류자 바이트들이 잔류자 래치에 래치될 때, 레지스터(90a 및 90b)에 있는 2개의 크로스 체크 잔류자 바이트들이 잔류자 래치(68)에 역시 래치된다. 그후, 크로스 체크 잔류자 바이트들은 부분 신드롬 바이트 XC1 및 XC2로 변환된다. 마이크로 콘트롤러(196)에 의한 에러 버스트 보정의 계산을 뒤따르는 ECC 동작 후에, 마이크로 콘트롤러는 부분 신드롬 바이트 XC1 및 XC2에 대한 상기 보정의 영향을 계산한다. 만약 그러한 바이트들이 데이타 에러의 보정 후에 0이 아니면, 온-더-플라이 에러 보정에 의해 보정될 수 없는 에러가 존재하는 것으로 판단되어, 데이타 스트림은 중단되고, 예를 들면 SCSI 인터페이스 관례(convention)에 따라 호출된 종래의 ECC 처리 과정(procedure)에 따라 재시도가 행해질 수 있다. 결국 만약 크로스 체크 잔류자 바이트들이 보정후에 0이 아니면, 상기 에러는 보정불능으로 판단되고, 디스크 드라이브는 정지하며, 호스트 장치(host equipment)에게 보정 불능의 에러가 발생하였다는 것을 알린다. 만약 크로스 체크 바이트가 에러 보정 후에 0이면, 그에 따라 데이타 오보정 확률이 현저하게 감소하였다고 판단된다.
크로스 체크 쉬프트 레지스터(90a 및 90b)는 초기화 제어 신호 CTLIEC에 의해 초기화되는데, 이는 상기 레지스터들을 공지된 상태에 설정하며, 상기 레지스터들은 바이트 클럭 신호 BYTCLKA와, 제어 게이트(89)에 의해 결정된 것처럼 ECC 및 크로스 체크 동작들이 수행되고 있다는 것을(ID 필드 에러 검출 동작 대신에) 나타내는 신호에 의해 클럭된다.
다음의 설명은 제4도에 그 레이블(label)이 나와 있는 여러 제어 및 데이타 신호들을 요약한다. 이 신호들에 대한 타이밍은 제5도에 도시된 타이밍도에 제공된다.
SYNLDAT[7 : 0] 신드롬 래치된 데이타 : 1바이트의 신드롬 데이타가 상기 5비트 래치된 어드레스(LADD) 버스 상의 어드레스에 의해 결정되어 선택되고 래치된 신드롬 바이트 위치로부터 판독된다. 이 바이트는 마이크로 콘트롤러 판독 동작동안 마이크로 콘트롤러 어드레스/데이타 버스로 넘겨진다. 이 데이타는 RSECC 제어 신호에 의해 스트로빙(strobing)된다.
LADD[4 : 0] 래치된 어드레스 버스 : 현재 동작하고 있는 마이크로 콘트롤러 어드레스 싸이클의 5개의 최하위 어드레스 비트가 신드롬 래치(68)의 바이트 레지스터들 중 특정한 하나를 어드레스하기 위하여 입력된다. 이 5개의 어드레스 비트는 어느 래치된 신드롬 바이트가 마이크로 콘트롤러 판독 동작동안 마이크로 콘트롤러(196)에로 판독될 것인가를 판단하기 위해 사용된다.
SYNLCLS 신드롬 래치 클로우즈 : 이 신호는 온-더-플라이 에러 보정동안 신드롬 래치(68)을 폐쇄하는 데에 사용된다. 신드롬 래치(68)은 보통 투과 모드에 있다. ECC 신드롬에서 에러를 검출하면, 데이타 시켄서 회로(100, 제6a도 및 제6b도)은 에러를 표시하는 신드롬 데이타가 유실되지 않도록 상기 데이타를 신드롬 발생기 쉬프트 레지스터들로부터 신드롬 래치(68)로 비동기적으로 래치시키기 위하여 이러한 신호를 내놓는다. 데이타 시켄서(100)에 의한 이와 같은 신호는 다음 데이타 섹터를 위해 초기화 제어 신호 CTLIEC를 통하여 발생하는 재초기화에 앞서 행해진다. 따라서, 인코딩된 에러 위치를 포함하고 있는 신드롬은 마이크로 콘트롤러(196)에 의해 디코딩되고, 다음 섹터가 판독되어 신드롬 쉬프트 레지스터 세트(26, 36, 40)과 레지스터(46, 58 및 62)의 마지막 그룹을 통과하는 동안 보정될 수 있다.
SYNLOPE 신드롬 래치 오픈 : 이 제어 신호는 신드롬 래치 클로우즈 제어 신호의 반대이어야 한다. 이는 신드롬 래치(68)이 투과 모드(래치 출력=신드롬)에 있을 때에는 참(true)이고, 신드롬 래치(68)이 래치되고 정적(static)이면 거짓(false)이다.
ECCCRCN ECC/CRC 제어 : 이 신호는 ECC 발생기(10)이 어느 형식의 신드롬을 계산할 것인가를 나타낸다. 참일 때, 이 제어 라인은 ECC와 크로스 체크가 데이타 바이트들 상에서 계산된 것을 나타낸다. 거짓일 때, 이 라인은 EDC가 ID 필드의 바이트들 상에서 가산될 것을 나타낸다.
CTLIEC 제어 인터럽트 ECC : 참일 때, 이 제어 라인은 ECC 발생기와 크로스 체크 발생기 모두의 모든 신드롬 바이트들을 선정된 값에 비동기적으로 설정하는 데, 이 값은 불변이지만 0과 1의 임의의 패턴이다.
WRGATE 기입 게이트 : CRCOP(ID 필드의 에러 검출) 또는 ECCOP(ECC 동작) 중 하나가 신드롬 발생기로 하여금 바이트 클럭 BYTCLKA에 의해 클럭되고 있는 동안 신드롬 계산을 계속하는 것을 중지하도록 하기 위해 참인 값의 신호일 때 이러한 제어 신호가 사용된다.
CRC2B EDC 2바이트 포맷 : 참인 값을 갖을 때, 이 제어 신호는 데이타 ID 필드 상에서의 EDC를 위해 2바이트 포맷을 선택한다. 이러한 경우, 동일 신드롬 발생기는 2바이트 EDC를 위해 사용된다. 거짓인 때, 이 라인은 3바이트 EDC 신드롬 처리를 선택한다.
SYNDO 잔류자가 0 : 제로 검출 회로(78)에 의해 출력된 이 제어 신호는 에러 검출을 위해 사용된다. 2바이트 EDC 포맷 상에서, 이 신호는 만약 두 EDC 잔류자 바이트가 0이면, BYTCLKA의 상승 엣지(rising edge)를 뒤따르는 신호가 될 것이다. 3바이트 EDC 포맷인 경우는 ECC 동작동안, 만약 이 신호가 바이트 클럭 BYTCLKA의 마지막 3개의 상승 엣지를 뒤따라 참인 경우라면, 이러한 제어 신호는 0의 EDC 잔류자 바이트 상태를 나타낼 것이다. 즉, 만약 BYTCLKA의 마지막 2개의 상승 엣지 상에서 ECCENAB가 참이고 ECCENAB가 로우로 된 후 BYTCLKA의 상승 엣지 상에서 이 신호가 참이라면, ECC 잔류자 바이트는 0이다.
SERDOUT[7 : 0] 시리얼/디시리얼(Serial/Deserial) 데이타 출력 : 이 버스(12)는 데이타 바이트들을 신드롬이 계산될 ECC 회로(10)에 운반한다. 데이타는 BYTCLKA의 상승 엣지에서 유효해야 한다. 데이타 시켄서 판독 동작 상에서, ECCIN 데이타는 시리얼라이저/디시리얼라이저 SERDES(106)으로부터 오는데, 이는 앞에서 참조된 마차도에게 일반 양도된 미합중국 특허 제4,675,652호에 더 상세하게 설명되어 있다. 모든 데이타 바이트, 크로스 체크 바이트 및 ECC 바이트들이 BYTCLKA에 동기되어 클럭킹된다. 데이타 시켄서 기입 동작 상에서, ECCIN 데이타는 FIFO 버퍼 메모리로부터 오는데, 모든 데이타 바이트는 BYTCLKA에 동기되어 클럭킹되고, 크로스 체크 바이트와 신드롬 바이트는 계산되어 데이타 스트림에 부가된다. 마지막 데이타 바이트를 뒤따라, ECCIN은 상기 ECC 신드롬이 크로스 체크 바이트 상에서 계산될 수 있도록 ECCOUT에 접속되어야 한다.
ECCDOUT[7 : 0] ECC 데이타 출력 : 이 버스(66)은 ECC 회로(10)의 데이타 출력을 운반한다. 데이타는 BYTCLKA의 상승 엣지 상에서 유효하다. ECC 신드롬 데이타는 WRGATE와 ECCOP 제어 라인이 참인 동안 바이트 시리얼 포맷으로 이 포트(port)에서 이용 가능하다. EDC 신드롬 데이타는 WRGATE 및 CRCOP 제어 라인들이 참인 때 이용 가능하다.
BYTCLKA 바이트 클럭 A : 이 신호는 모든 ECC 및 EDC 동작을 위한 기본 클럭 신호를 나타낸다.
ECCENOP ECC 가능 동작 : 이러한 제어 라인은 어느 BYTCLKA 엣지가 ECC 회로(10)을 위한 데이타를 포함하고 있는지를 나타낸다. 이러한 BYTCLKA 신호는 어떠한 일시적인 에러(transient error)들도 BYTCLKA가 참인 동안 발생하지 않도록 AND 게이트(13)에 있는 이 신호와 함께 내부적으로 게이트된다.
CRCOP EDC 및 크로스 체크 제어 이 제어 라인은 어느 바이트가 EDC 바이트이고 어느 바이트가 크로스 체크 바이트인지를 나타낸다. 이 신호는 EDC 또는 크로스 체크 바이트가 ECC 발생기 블럭(10)에 클럭킹될 경우에는 BYTCLKA의 상승 엣지에서 참이어야 한다.
ECCOP ECC 동작 제어 : 이 제어 라인은 어느 바이트가 ECC 바이트들인지를 나타낸다. 이 신호는 ECC 바이트가 ECC 신드롬 발생기(10)에 클럭되는 동안 BYTCLKA의 상승 엣지 상에서 참이어야 한다.
제5도의 타이밍도를 참조하면, 공통 수평 시간 축(common horizontal time base) 상을 따라 타이밍 신호들의 상부 그룹은 ID 필드 상에서의 EDC 체크동안 리스팅된 제어 신호들의 다양한 논리 상태들을 나타낸다. 제5도의 타이밍 신호의 하부 그룹은 ECC 및 크로스 체크 동작동안 리스팅된 제어 신호들의 다양한 논리 상태들을 나타낸다.
제6a도 및 제6b도를 참조하면, EEC 신드롬 발생기 회로(10)이 제7도에 도시되고 이후에 상세하게 설명될 것처럼, 전체적인 디스크 드라이브 구조(160)의 데이타 시켄서(100) 내의 단지 하나의 기능적인 요소란 것을 알 수 있다. 데이타 시켄서(100)은 펄스 검출기(pulse detector)로부터 직접 입력하는 데이타를 수신하는 데이타 필드 어드레스 마크(Address Mark :AM) 검출기(102)를 포함한다. 이 검출기(102)는 고주파 플럭스 전이(flux transition)의 시켄서를 찾으며, 그와 같은 것이 검출된 때 그 다음으로, PLL(188)이 상기 시켄서에 락킹(locking)되고, 복원된 디지탈 런 길이(run length) 인코딩 데이타는 어드레스 마크 시켄서의 존재 여부를 위해 체크된다. 이와 관련하여, 어드레스 마크 검출기(102)는 1, 7 인코딩 규칙들과 모순되고 어드레스 마크를 나타내기로 먼저 결정되어 있는 특이한(unique) 비트 시켄서를 검출하기 위하여 데이타 스트링을 감시(monitoring)한다. 어드레스 마크 검출기(102)는 어드레스 마크를 나타내는 비트 시켄서가 원 데이타 스트림에서 발견될 때마다 어드레스 마크 기본 제어 신호(address mark found control signal)뿐만 아니라 원 데이타 스트림으로부터의 바이트 클럭 신호 BYTCLKA를 발생시킨다. 1, 7 런 길이 제한 인코더/디코더 ENDEC(104)는 시리얼 데이타를 1, 7 런 길이 제한(Run Length Limited : RLL) 코드로 인코딩하거나 그로부터 디코딩하며, 시리얼라이저/디시리얼라이저 SERDES(serializer/deserializer : 106)은 데이타 바이트들을 시리얼 비트별(bit-by-bit) 포맷으로 묶기도 하고, 풀어내기도 한다. 인코더/디코더 ENDEC(104) 및 SERDES(106)은 참조하여 상술한 마차도의 미합중국 특허 제4,675,652호에 기술된 것과 실질적으로 같다. FIFO 바이트 레지스터(108)은 데이타 바이트들이 시켄서(100)과 외부 캐쉬 버퍼(cache buffer) 메모리 어레이(214) 사이에 비동기적으로 전송되고,(디스크로부터의 재생된 원 데이타 스트림과 동기된 BYTCLKA와 반대로) 외부 표준 크리스탈 클럭(crystal clock standard)에 의해 클럭되게 한다. 멀티플렉서(110)은 ECC 발생기(10)에 의해 발생된 ECC 신드롬 바이트가 저장 표면으로의 데이타 블럭 흐름(data block flowing)에 부가될 수 있도록, 그리고 기입가능 제어 저장(writeable control store : WCS) 버스(134) 상에 있는 데이타 값들이 또한 저장을 위해 디스크에 보내질 수 있도록 시리얼라이저/디시리얼라이저 SERDES(106)과 인코더/디코더 ENDEC(104)를 통한 양방향 (bidirectional) 데이타 흐름을 조절한다.
데이타 ID 필드로부터의 판독된 기준 데이타 섹터(즉, 물러적인 섹터 및 변환기 헤드) 식별 바이트들은 비교 멀티플렉서(comparison multiplexer, 112)를 통해 비교 회로(114)로 전달된다. 비교 회로(114)는 섹터 카운터(116)에 유지된 기준 식별 바이트와 SERDES(106)으로부터 수신된 실제의 데이타 섹타 식별 코드를 비교한다. 만약 일치한다면, 요구되는 섹터 위치가 도달되고, 비교=0의 제어 신호가 비교 회로(114)에 의해 점프 제어 MUX 회로(jump control Mux circuit, 132)에 출력된다.
기입가능 제어 저장 WCS RAM(116)은 시켄서(110)의 모든 동작 상태들을 제어하고, 마이크로 콘트롤러 어드레스(MICRO ADDR) 디코더(118)에 의해 디코딩된 어드레스들에 의해 제어된 위치들에서 마이크로 콘트롤러(196)에 의해 직접 판독 및 기입된 정보로 로우드될 수 있는 제어 워드들을 저장하는 이중 기능(dual function)을 제공한다. BYTCLKA 클럭 싸이클의 1/2동안, 멀티플렉서(120)은 WCS RAM(116)에 대한 마이크로 콘트롤러(196)에 의한 직접 액세스를 가능하게 한다.
BYTCLKA 싸이클의 다른 1/2동안 시켄서 콘트롤러(122)로부터의 어드레스는 WCS 메모리 영역(116)의 어드레싱에 사용된다. 콘트롤러(122)는 다수의 선정된 상태들로 점프할 수 있게 하는 시켄서(SEQ) 제어 디코더 블럭(124), 다양한 어드레스들 중에서 선택하는 시켄서 어드레스 멀티플렉서(126), 멀티플렉서(120)을 통해 WCS(116)에 인가하기 위한 마지막 시켄서 어드레스를 갖고 있기 위한 마지막 어드레스(LAST ADDR) 레지스터(128) 및 레지스터(128)에 유지된 마지막 어드레스를 시켄서 어드레스(SEQ ADDR) 멀티플렉서(126)에 선택적으로 피드백하는 WCS ADDR 멀티플렉서(130)을 포함한다.
시켄서 콘트롤러(122)는 제6a도 및 제6b도에 나타난 것처럼 다수의 논리 입력으로부터 점프 제어 신호를 발생하는 점프 제어 멀티플렉서(132)에 의해 직접 제어된다. 28비트 폭의 WCS 데이타 버스(134)는 WCS 메모리(116)과 직접 통신하고, 그 안에 있는 값들이 제6a도 및 제6b도에 도시된 경로들을 따라 시켄서(100)을 통해 순환할 수 있도록 한다. OPCODE 버스(136)은 각 5비트의 OPCODE를 OPCODE 디코더(138)에서 나오는 도시된 제어 라인들 상에 다수의 논리 상태들로 디코딩하는 OPCODE 디코더(138)로 간다. ECC/CRC SEL 라인, ECCOP 라인, 및 CRCOP 라인은 앞에서 설명한 것처럼 ECC 신드롬 발생기(10)에 직접 접속한다. PUSH SEL 라인은, 예를 들어 데이타 필드 카운트 바이트 C3, C2 및 C1이 4바이트 레지스터 스택(register stack : 142)의 최상부에 직접 푸쉬(push)되도록 가능하게 하는 PUSH 멀티플렉서(140)에 연장된다. 스택 최상부(705) 버스 및 넥스트 스택(NOS) 버스는 스택(142)를 시켄서 카운터(146)을 1값들로 역시 로우드시킬 수 있는 멀티플렉서(144)를 경유하여 바이트 시켄서 카운터 SEQ CNTR(146)에 접속시킨다. 바이트 시켄서 카운터(146)은 현재의 바이트 카운트(블럭 내의 바이트로 남아 있는 필드 길이)를 쉬프트 레지스터(100)내에 유지한다. 현재 로우딩된 바이트 카운트가 0으로 증가될 때, 특정 필드의 끝(end)이 도달되고, 시켄서 카운터(146)은 다음 상태가 다음으로 호출될 수 있도록 SCNT=0 값을 점프 제어 멀티플렉서(132)에 출력한다.
제어 디코더(148)은 WCS RAM(116)으로부터 제1차 제어 바이트들(PRI CTL), 제2차 제어 바이트들(SEC CTL) 및 카운트 선택 바이트(CSEL)들을 수신하고, 이 값들을 기입 게이트 신호 WRGATE 및 ECC 신드롬 발생기(10)을 직접 제어하는 초기화 ECC 신호 IECC를 포함하여, 제6a도 및 제6b도의 디코더(148)로부터 나오는 도시된 제어 라인들로 출력되는 특정 논리 제어값들로 디코딩한다.
루프(LOOP) 카운터(150)는 특정한 데이타 블럭 전송 처리(transaction) 동안 행해지는 루프(각 루프는 명목상으로 데이타 블럭을 전송하기 위해 요구되는 상태들을 나타낸다)의 수로 프리세트(preset)되고, 카운트가 0에 도달한 때 LOOPCNT=0 제어값을 발생시킨다. 요구되는 수의 데이타 블럭들이 전송되었다는 것을 나타내는 이 제어값은 점프(JUMP) 제어 멀티플렉서(132)에 역시 제공된다. 인덱스 타임아웃(INDEX TIMEOUT) 카운터(152)는 시켄서 콘트롤러(124)를 제어하기 위해 사용되는 인덱스 타임아웃 값 INXCNT=0을 발생시키므로써 각 트랙의 시작을 추적한다. 서보 섹터 S의 첫번째에 저장된 원 인덱스 신호(raw index signal)는 서보 콘트롤러(180)에 의해 1회전당 한번씩 검출되고 인덱스 카운터(152)를 클럭킹하는 데에 사용된다. 시켄서 콘트롤러에의 다른 입력들은 점프 제어 멀티플렉서(132)로부터의 점프값, 어드레스 마크 검출기(102)로부터의 어드레스 마크 기본 값 AMFOUND 및 쉬프트 레지스터 카운터(146)으로부터의 바이트 시켄서 카운터 SCNT=0 값이다.
제7도를 참조하면, 고정형 디스크 드라이브 데이타 저장 서브 시스템(160)은 3.5인치 직경 또는 더 양호하게는 예를 들어 2.5인치 직경의 저장 디스크(비록 본 발명이 크든 작든 어떠한 실용적인 디스크의 직경과도 잘 동작할지라도)일 수 있고, 디스크(162)가 지지되는 디스크 스핀들 허브(spindle hub)와 함께 형성된 직접 구동 브러쉬리스 DC 스핀들 모터(direct drive brushless DC spindle motor)와 같은 스핀들 모터(164)에 의해 3600 RPM과 같은 실질적으로 일정한 각속도로 회전하는 최소한 하나의 회전 데이타 저장 디스크(162)를 포함한다. 모터(164)는 시켄서(100), ENDEC(104), 서보 콘트롤러(180) 및 PWM 출력(178), 마이크로 콘트롤러 인터페이스(202) 및 버퍼 메모리 콘트롤러(210)을 역시 포함하는 VLSI 회로 칩 내에 포함된 모터 콘트롤러(168)에 의해 제어되는 모터 구동 회로(166)에 의해 구동된다.
모터 콘트롤러(168)은, 예를 들어 다수의 서보 섹터 S들 중 첫번째로부터 원 인덱스 펄스를 공급하는 서보 콘트롤러(180)에 직접 응답한다. 상기 원 인덱스 펄스는 기준 주파수에 대해 타이밍이 맞추어지고, 서보 콘트롤러(180)은 수시로 나타날 수 있는 가속 또는 감속 명령을 모터 구동기(166)에 전달한다.
다수의, 예를 들어 박막 데이타 변환기 헤드(170a 및 170b)는 최소한 하나의 데이타 저장 디스크(162)의 반대편 주데이타 저장 표면들과 각각 관련된다. 상기 데이타 변환기 헤드들은, 비록 반드시는 아니지만, 양호하게 무게 중심이 잡힌 회전 보이스 코일 기동기(voice coil actuator : 172)의 암 어셈블리(arm assembly, 171)의 수직 정렬 암들에 부착되어 있는 인-라인 정렬 로우드 빔(in-line aligned load beam)에 장착된다. 헤드(170a 및 170b)는 데이타 표면에 대해 보통 접촉-시작-중지(contact-start-stop)의 관계로 동작하고, 예를 들어 윈체스터 고정형 디스크 기술에 일반적인 것처럼 에어 베어링(air bearing) 상에서 동작하는 동안 표면 위를 "이동(fly)"한다.
기동기(172)의 코일은 필터(176)으로부터 수신된 저역 필터링되고 폭 변조된 펄스로부터의 응답에 양방향 구동 전류를 만드는 서보 구동 회로(174)에 의해 구동된다. 필터(176)은 서보 콘트롤러(180) 내의 서보 PWM(Pulse Width Modulator, 178)에 접속된다. 펄스 검출기(184)에 의해 성형(shaping)된 서보 펄스들과 피크 검출기(192)에 의해 검출된 피크는 애널로그/디지탈(A/D) 변환기(194)에서 디지탈 값으로 변환되어 마이크로 콘트롤러 MICRO(196)으로 직접 전달된다. 내장 서보 섹터 S로부터(coarse) 헤드(170)에 의해 판독된 조야한(coarse) 헤드 위치 정보는 PLL(188), ENDEC(104) 및 시켄서(100)과 독립적인 방식으로 서보 콘트롤러(180)에 의해 직접 디코딩된다. 서보 콘트롤러(180)은 자신의 데이타 판독기에 의해 디코딩된 트랙 식별 필드와 미세 위치 옵셋 신호(fine position offset signal)들을 갖는 각 서보 섹터들을 포함하는 다양한 필드들에 대한 타이밍을 설정하는 매스터 상태 머쉰(master state machine)으로 구현된다. 상기 미세 위치 옵셋 신호들의 진폭들은 피크 검출기(192)에서 샘플링되어 유지되며, 시켄서간 공유 동작(time shared operation)의 서보 위상(servo phase)동안 마이크로 콘트롤러(196)에 의해 처리된다. 드라이브(160)에 대해 현재 양호한 서보 장치의 더 상세한 사항들은 1990년 8월 17일 출원되고 일반 양도된 미합중국 특허 출원 제07/569,065호에 나와 있고, 그 개시 내용은 본 명세서에서 참조된다.
예를 들어 각 데이타 헤드(170a 또는 170b)는 캘리포니아주 투스틴 소재 실리콘 시스템즈 인크.에 의해 제조된 SSI 32R4610R 2 또는 4형의 채널 박막 헤드 판독/기입 장치 또는 그 등가물(equivalent)과 같은 프리앰프/선택/기입(preamplifier/select/write) 구동 회로(182) 내에 포함된 헤드 선택 회로에 의해 선택된다. 선택된 헤드에 의해 변환된 애널로그 플럭스 전이 신호(analog flux transition signal)는 밀봉된 헤드 및 디스크 어셈블리 내에, 그리고 저장 표면으로부터 복원된 애널로그 신호의 신호 대 잡음비(signal to noise ratio)를 증가시키기 제어 변환기 헤드(170a 및 170b)에 근접하게 다중 전도성 트레이스를 운반하는 박막의 유연한 플라스틱 기판(MylarTM)에 양호하게 장착되는 회로(182)의 프리앰프부에서 선행 증폭된다.
그후, 복원된 애널로그 데이타는 애널로그 플럭스 전이를 종래의 디지탈 논리 엣지(digital logic eddge)로 변환시키는 펄스 검출기(184)를 통과한다. 기입 사전 보상 회로(write precompensation circuit, 186)은 시켄서(100)으로부터 수신된 디스크에 기입될 데이타를 사전 보상한다. 상기 사전 보상된 기입 데이타는 선택된 헤드 변환기에 전달하기 위해 헤드 선택/프리앰프 회로(182)에 직접 공급된다.
위상 고정 루프 회로 PLL(188)은 디지탈 엣지들을 데이타 비트 쌍들(인코딩된 데이타)로 분리하도록 동작하고, 상기 데이타 비트 쌍들을 제6도에서 시켄서(100)의 일부로서 도시된 ENDEC(104)에 전달한다. 주파수 합성기(190)은 다양한 기준 주파수들이 상술된 영역화 비트 레코딩(zoned bit recording)에 제공되기 위해 합성되는 것을 가능하게 한다. 합성기(190)은 프로그램된 마이크로 콘트롤러(196)의 제어에 따라 직접 동작한다. 펄스 검출기(184), 기입 사전 보상 회로(186), PLL(188), 주파수 합성기(190) 및 서보 버스트 피크 검출기(192)는 내셔널 세마이 컨덕터 코포레이션에 의해 제조된 DP8491형 또는 그 동등물과 같은 단일 VLSI 집적 회로 패키지 내에 모두 용이하게 포함된다.
마이크로 콘트롤러 어드레스/데이타 버스(198)과 고순위(high order) 어드레스 버스(200)은 마이크로 콘트롤러(196)으로부터 직접 시켄서(100), ENDEC(104), 모터 콘트롤러(168), 서보 콘트롤러(180) 및 버퍼 메모리 콘트롤러(210)과 통신하는 마이크로 콘트롤러 인터페이스(202)에 직접 연장된다. 언급된 것처럼, 이 회로들은, 반드시는 아니지만, 제6도에서의 이 회로들을 위한 단일 블럭에 의해 제시된 것처럼 단일 VLSI 특정 응용 CMOS 회로 내에 양호하게 구현된다. 어드레스 버스(204)는 마이크로 콘트롤러 인터페이스(202)로부터 프로그램 메모리 EPROM(206)으로 연장된다. 프로그램 메모리(206)을 어드레싱하기 위한 소정의 어드레스 비트 위치들이 발생되어, 마이크로 콘트롤러(196)에 의해 어드레스 버스(208) 상으로 프로그램 메모리(206)에 직접 출력된다.
버퍼 메모리 콘트롤러(210)은 버퍼 어드레스 BUFF ADDR을 발생시키고, 상기 어드레스를 버스(212) 상으로 데이타 캐쉬로 양호하게 형성되는 버퍼 메모리(214)에 출력한다. 데이타 블럭들은 버퍼 데이타 버스(216)을 통해 시켄서(100)과 버퍼 메모리(214) 내에 있는 FIFO 레지스터(108)에 전송되며, 또 그로부터 전송된다. 이러한 버스(216)은 또한 호스트 시스템에 접속된 인터페이스 버스(220)을 통하여 데이타 블럭 및 명령 값들을 수신하고, 상기 값들과 블럭들을 메모리(214)에 저장하며, 상태 값들과 블럭들을 인터페이스 버스(220)을 통해 메모리(214)로부터 호스트로 복귀시키는 인터페이스 제어 회로(218)에 연장된다. 상기 인터페이스 회로는 본 분야의 기술에 공지된 것처럼 표준 SCSI 인터페이스와 같은 산업 표준 호스트-서브 시스템 버스 레벨 인터페이스나 IDE 인터페이스 포준(IBM AT 버스)을 구현할 수 있다. 예를 들면, NCR형 5380 SCSI 인터페이스 콘트롤러는 종래 표준의 SCSI 버스를 구현하기 위한 적절한 인터페이스 제어 회로(218)이다.
직접 메모리 액세스 경로는 마이크로 인터페이스(202)와 버퍼 콘트롤러(210)을 통하여 마이크로 콘트롤러(196)과 버퍼 메모리(216) 사이에 존재한다. 이러한 경로로, 본 발명의 온-더-플라이 에러 보정 방법을 구현하기 위해 에러 위치로부터 에러 바이트를 제거(withdrawing)하고, 에러 바이트를 보정값과 XOR하고, 이 보정값을 에러 위치에 기입하기 위하여, 마이크로 콘트롤러가 버퍼 메모리(214)의 특정 바이트 위치들에 액세스하는 것이 가능하다.
위에서 반복적으로 언급되었듯이, 디스크 드라이브(160)은 본 발명의 온-더-플라이 에러 보정 기술의 사용을 위한 현재의 양호한 서브 시스템 또는 환경이다. 본 분야 기술에 숙련된 자들에 의해 평가될 수 있는 것처럼, 다수의 로우 레벨(low level)의 반복적인 신드롬 발생 및 체크 임무는 제4a도 및 제4b도에 도시되어 설명된 신드롬 발생기 하드웨어에서 구현된다. 에러 보정값을 계산하는 하이 레벨(high level)의 임무는 본 명세서에 윤곽이 드러난 에러 보정 서비스 루틴 프로그램에 따라 마이크로 콘트롤러(196)에 의해 필요한 때에 실행된다.
반드시는 아니지만 양호하게, 마이크로 콘트롤러(196)은 서보 섹터당 2상(two-phase) 시간 분할 장치로 동작하는 NEC 78322 또는 등가의 단일 모놀리식 마이크로 콘트롤러인데, 각 서보 섹터의 도달에 대한 제1기간(time interval)은 헤드 위치 결정을 위한 서보 제어 동작에 할당되고, 제2 및 후속 기간은 예를 들어 에러 보정 동작을 포함하는 다른 임무에 할당된다. 이와 같은 형식의 디스크 드라이브 구조의 개관(overview)은 문(Moon) 등에게 일반 양도된 미합중국 특허 제4,669,004호에 제공되어 있고, 그 개시 내용은 본 명세서에서 참조된다. 제2 및 후속 기간동안 마이크로 콘트롤러(196)에 의해 실행되는 임무들을 관리하기 위한 계층적 시스템(hierarchical)은 1988년 5월 10일에 출원되어 일반 양도된 미합중국 특허 출원 제07/192,353호, 즉 현재의 미합중국 특허 제5,005,089호에 개시되어 있고, 그 내용은 본 명세서에서 참조된다. 예시적인 마이크로 콘트롤러(196)의 에러 보정 기능들은 다중 마이크로 콘트롤러 구조 내의 하나 이상의 마이크로 콘트롤러에 의해 개선된 실시간 성능으로, 그러나 고가로 용이하게 실행될 수 있다.
개괄하면, 디스크로부터의 데이타 판독 동작을 위한 에러 보정 처리는 데이타 재생 처리동안(및 각 데이타 블럭이 직전의 데이타 기입 동작 동안 부가된 자신에게 부가된 신드롬 바이트 및 크로스 체크 바이트를 가진 후) 다음과 같은 단계들을 포함한다.
1. 신드롬 발생기(10)의 쉬프트 레지스터들을 임의의 순서로 0과 1의 반복 패턴일 수 있는 선정된 공지 상태에 프리세트하는 단계.
2. 신드롬 발생기(10)을 통과하므로써 디스크로부터 판독된 데이타 바이트들의 스트림으로부터 데이타 블럭(데이타 섹터)에 대한 신드롬 잔류자 바이트들 및 크로스 체크 신드롬 잔류자 바이트들을 발생시키는 단계.
3. 각 인터리브의 마지막 바이트가 신드롬 발생기(10)에 클럭킹될 때, 각 인터리브에 대한 잔류자 바이트가 0과 같은지를 알아보기 위해 체크하는 단계.
a. 만약 각 인터리브에 대한 잔류자 바이트들이 0이면, 보정이 요구되지 않기 때문에 다음 블럭 또는 섹터까지 기다린다.
b. 만약 인터리브에 대한 하나 이상의 잔류자 바이트들이 0이 아니고, 신드롬 래치가 상기 신드롬을 갖는 데에 이용 가능하면 단계(4)로 간다.
c. 만약 잔류자 바이트들이 0이 아니고, 신드롬 래치가 상기 신드롬을 현재로써는 이용가능하지 않다면(마지막 데이타 블럭으로부터의 잔류자 바이트들이 이미 시작된 온-더-플라이 보정 동작동안 상기 래치에 래치된 채로 있다는 것을 의미함), 데이타 흐름을 중지한다; 온-더-플라이 에러 보정의 수행을 계속할 수 없음.
4. 각 인터리브에 대한 잔류자 바이트를 신드롬 래치(68)에 래치시키는 단계.
이 잔류자 바이트들을(각 인터리브에 대한) R0, R1, R2 및 R3의 다음 형식을 갖는다.
R(x)=R3x3+R2x2+R1x+R0 (30)
현재의 데이타 블럭에 대한 잔류자 바이트 Ri가 신드롬 래치(68)로 래치된 후, 신드롬 발생기(10)은 계속해서 다음 데이타 블럭을 위한 잔류자 바이트들을 디코딩한다. 인접 데이타 블럭들로부터의 한 쌍의 0이 아닌 잔류자 바이트는 현재 채택된 마이크로 콘트롤러(196)이 온-더-플라이로 연속적인 데이타 블럭으로부터 잔류자 바이트를 수신하여 저장 위한 충분한 랜덤 액세스 메모리(RAM) 공간이 부족하기 때문에, 현재 기술된 온-더-플라이 에러 보정 처리의 실행을 효과적으로 중지시킬 것이다. 그러나, 증가된 랜덤 액세스 메모리 공간이 상기 바이트들의 값을 갖는데 사용되고, 그에 따라 다수의 연속적인 데이타 블럭들에 대한 온-더-플라이 에러 보정을 계속하는 것이 가능하게 될 이유가 없다. 중지(shut-down)의 가능성은 마이크로 콘트롤러(196)이 제1에러를 보정하여 크로스 체크 신드롬으로 보정을 시험하기 위해 요구하는 시간에도 역시 의존한다. 또 다른 제한은 블럭 버퍼 메모리(214)의 크기에도 존재한다. 또한, 신드롬 발생기(10)은 에러 보정을 가속하기 위하여 신드롬 래치를 통하여 부분 신드롬 바이트들을 직접 계산하여 마이크로 콘트롤러(196)에 출력시키기 위한 부가적인 회로의 설치(provision)에 의해 변형될 수 있다.
5. 마이크로 콘트롤러(196)이 에러 보정 서비스 루틴을 호출하여 실행하도록 하고, 그 루틴의 실행을 개시하는 단계.
6. 에러 보정 앨거리듬의 실행 동안 요구될 때마다 잔류자 래치(68)로부터 마이크로 콘트롤러(196)으로 잔류자 바이트들을 전송하는 단계.
그 후, 만약 잔류자 바이트 중 어느 것도 0이 아니면, 펌웨어는 부분 신드롬 S0, S1, S2 및 S3이 얻어지도록 잔류자 바이트 R(x)를 다음 식에 따라 부분 신드롬 바이트 S(x)로 변환한다.
여기에서, i=0, 1, 2 및 3임.[지수에 있는 + 기호(symbol)는 XOR 연산이 아니라 산술 가산을 나타낸다.] 요구된 하드웨어의 양을 적정하게 최소화하기 위해 잔류자 바이트 Ri를 제공하기 위해 데이타를 재생하는 동안 신드롬 발생기 회로(10)이 역시 사용되기 때문에, 이러한 변환 과정을 거쳐야 한다.
7. 각 인터리브에 대하여, 잔류자 바이트를 3개의 인터리브 중 하나 내에 있는 부분 신드롬 바이트들로 변환시키는 단계.
S0=Data modulo(X+alpha126)
S1=Data modulo(X+alpha127)
S2=Data modulo(X+alpha128)
S3=Data modulo(X+alpha129)
a. 온-더-플라이 단일 버스트 에러 보정. 온-더-플라이 단일 버스트 에러 보정인 경우 L1을 에러 위치라 하고 e1을 에러 값이라 하자.
(1) 만약(S0=0), 또는 (S1=0) 또는 (S2=0) 또는 (S3=0)이면, 이중 버스트 에러 보정 앨거리듬으로 간다.
(2) 만약 [S1/S0=S2/S1=S3/S2)이면 계속하고, 그렇지 않으면 이중 버스트 에러 보정 앨거리듬으로 간다.
(3) L1=Log[S1/S0]과 e1=S1(S0/S1)127을 실행하라.
(4) 만약 L1이 선정된 범위 밖이면(즉, 인터리브 1에 대해 0-175, 인터리브 2 및 3에 대해 0-174), 이중 버스트 보정으로 가고, 그렇지 않으면 아래의 단계 (8)로 간다.
b. 이중 버스트 에러 보정. 이중 버스트 에러 보정을 위하여, L1과 L2를 에러 위치들로 하고, e1과 e2를 해당 위치에서의 에러 값이라고 하자.
(1) 식 (16) 및 (17)에 따라 ø1과 ø2를 계산한다.
(2) 만약 ø1 또는 ø2의 분모 또는 분자가 0이면, 보정 불능의 에러라고 호스트에 알린다.
(3) 위에 주어진 이차 방정식 (18)의 해들을 구하여, 결과값 X1 및 X2를 출력한다.
(4) 만약 ø(x)가 해가 없으면, 보정 불능 에러를 호스트에 알린다.
(5) 위의 식 (19) 및 (20)에 따라 에러 위치 L1과 L2를 계산한다. 만약 L1 또는 L2 중의 어느 하나가 선정된 허용값의 범위를 벗어나 위치한 값을 가지면, 보정 불능 에러를 호스트에 알린다.
(6) 위의 식 (21) 및 (22)에 따라 에러값 e1 및 e2를 계산한다. 만약 e1 또는 e2중 어느 하나가 0이면, 보정 불능 에러를 호스트에 알리고, 그렇지 않으면 아래의 단계 (8)로 진행한다.
8. 마이크로 콘트롤러(196)은 크로스 체크 부분 신드롬에 대한 변경된 바이트의 효과를 계산하고, 이 계산된 값을 저장하며, 데이타 블럭의 다른 두 인터리브 각각에 대해서 이러한 처리를 반복하는 단계.
9. 만약 상기 보정이 크로스 체크 체킹 단계(8)를 통과하면, 마이크로 콘트롤러(196)은 블럭 내의 에러 위치로부터 에러 바이트를 제거시키고, 이 에러 바이트를 보정된 바이트를 만들기 위하여 보정값과 XOR하고, 이 보정된 바이트를 에러 위치에 다시 기입하므로써 마이크로 인터페이스(22)와 버퍼 제어(210)을 통하여 가는 버퍼 메모리(214)로의 DMA 채널을 사용하여 에러를 보정하는 단계.
10. 에러 보정을 고려하는 단계.
a. 만약 크로스 체크 부분 신드롬이 0이면, 상기 에러 보정 처리는 오보정 확률 내에 있다고 판단되고, 따라서 완료된다. 즉, 신드롬 래치(68)은 해제(releasing)되고, 보정된 에러를 포함하는 메모리 버퍼(214)에 있는 데이타 블럭이 호스트에 대한 전송을 위해 해제된다.
b. 만약 크로스 체크 부분 신드롬이 0이 아니면, 온-더-플라이 에러 보정은 중지되고, 단계(11)이 수행된다.
11. 보정이 달성될 때까지, 또는 상기 에러가 처음 검토될 때보다 훨씬 많아졌다고 판단될 때까지 1회 또는 2회 이상의 재시도가 행해지는데, 상기의 경우 보정 불능의 에러가 호스트에 통지된다. 재시도가 마이크로 콘트롤러(196)에서 프로그래밍에 의해 명령될 때, 상기 재시도는 데이타 흐름이 인터럽트된 후에 이러한 처리가 실행된다는 점에서 오프 라인(off line)으로 마이크로 콘트롤러에 의해 수행된다. 에러 메시지가 발생되어 호스트에 송신될 수 있고, 인터페이스 표준처럼 예를 들어 8번의 재시도 동안 재시도 처리는 계속될 수 있다.
따라서, 온-더-플라이 ECC는 호스트 머쉰에 대해 투과한 방식으로 데이타가 디스크로부터 호스트에 전송되는 판독 채널 처리(read channel process)의 일부 배경으로서 본질적으로 발생한다. 만약 여기에 설명된 투과 온-더-플라이 ECC 방법이 사용자 허용 신뢰도 수준(user-acceptable confidence level)까지 에러 또는 에러들을 보정하지 못하면, 더 많은 종래의 에러 복원 활동(recovery activity) 및 처리가 예를 들어 종래의 표준 SCSI 에러 보정에 의하여 호스트와의 인터페이스에서 전경(前景 : foreground)으로 발생할 수 있다.
ID 필드들을 체크하기 위한 에러 검출 처리들은, 만약 에러가 ID 필드 안에서 검출되면 섹터가 액세스 불능이라고 선언되거나 액세스될 때까지 반복되도록 전적으로 시켄서(100) 내에서 실행된다.
따라서, 본 발명의 실시예를 기술하였지만, 본 발명의 목적들이 완전히 달성되었다는 점과, 본 분야의 기술에 숙련된 자들은 구조의 많은 변경들 및 본 발명의 실시예 및 응용의 폭 넓은 변화가 본 발명의 교시(spirit) 및 범위로부터 벗어나지 않고서도 제기될 수 있다는 것을 이해할 것이라는 점이 평가되어야 한다. 여기에서의 개시 및 설명은 순수하게 설명적인 것이고 어떠한 의미로도 제한적으로 의도된 것은 아니다.

Claims (38)

  1. 데이타 블럭들의 다수의 연속적인 데이타들을 일시적으로 저장하기 위한 블럭 버퍼 메모리 수단을 경유하여 소오스에서 목적지로 흐르는 실질적으로 연속적인 데이타 블럭들의 시켄서 내의 데이타 블럭 상에서 온-더-플라이 에러 보정을 실행하고, 상기 블럭 버퍼 메모리 수단을 통해 송신된 데이타 블럭들의 흐름을 감독하기 위한 마이크로 콘트롤러 수단(196)을 포함하는 리드-솔로몬 에러 보정 장치에 있어서, 소오스로부터 송신되는 바이트들에 부속한 데이타 블럭에 부가된 신드롬 바이트에 연관되어 있는 상기 데이타 블럭을 위한 다수의 에러 보정 잔류자 바이트들을 복원하도록 상기 소오스로부터 각 데이타 블럭을 수신하여 처리하기 위해 스트림에 접속되는 갈로이스 필드 신드롬 발생기 및 잔류자 복원 회로 수단(10)을 더 포함하고, 상기 발생기 및 잔류자 복원 회로 수단(10)은, 상기 복원된 다수의 에러 보정 신드롬 바이트들 중 선정된 바이트들을 명목 값과 비교하기 위한 체킹 수단(78)과 상기 체킹 수단(78)에 의해 결정된 대로의 비등가(non-equivalance)에 응답하여 복원된 부분 에러 보정 잔류자 바이트를 래치시키기 위한 래치 수단(68)을 포함하며, 상기 마이크로 콘트롤러 수단(196)은 에러 보정 서비스 루틴 펌웨어 수단을 실행하고 그 즉시 상기 복원된 에러 보정 잔류자 바이트들을 선택적으로 얻기 위한 래치 수단(68)에 직접 액세스하며, 또 상기 구해진 재발생 에러 보정 잔류자 바이트로부터 최소한 하나의 에러 위치 및 대응하는 에러 값을 계산하고 에러라고 결정된 블럭의 데이타를 대체하기 위한 보정된 데이타를 발생시키기 위한 계산 수단을 구현하며, 에러 데이타들이 목적지에 전송되기 전에 버퍼 메모리 안에 저장된 블럭의 에러 데이타를 보정된 데이타로 대체하기 위해 상기 버퍼 메모리 수단에 직접 액세스하기 위한 직접 액세스 수단을 제어하기 위하여, 상기 비등가에 응답하는 것을 특징으로 하는 장치.
  2. 제1항에 있어서, 상기 발생기 및 복원 회로 수단(10)은 각 데이타 블럭에 앞서 부가된 크로스 체킹 신드롬 정보를 상기 소오스로부터 흐르기 전에 복원하고 상기 래치 수단(68) 안에 상기 복원된 크로스 체킹 신드롬 정보를 저장하기 위한 리드-솔로몬 크로스 체크 신드롬 발생기 수단을 더 포함하고, 상기 마이크로 콘트롤러 수단(196)은 에러 보정 서비스 루틴 펌웨어 수단을 수행하고 상기 복원된 크로스 체킹 신드롬 정보에 대한 에러 보정의 영향을 추가로 체크하는 것을 특징으로 하는 장치.
  3. 제1항에 있어서, 상기 발생기 및 복원 회로 수단(10)은 상기 각 데이타 블럭의 데이타 ID 필드에 앞서 부가된 에러 검출 신드롬 정보를 복원하여 체크하기 위한 에러 검출 수단을 더 포함하는 것을 특징으로 하는 장치.
  4. 제1항에 있어서, 상기 발생기 및 복원 회로 수단(10)은 x8+x4+x3+x2+1의 형식을 갖는 필드 발생기 다항식에 의해 발생되고 첫 항이 x5+x3+x+1(이진수로는 00101011)이며 각 에러 보정 신드롬 다항식이 G(x)=x4+(alpha18)·x3+(alpha87)·x2+(alpha18)·x1+1 형식인 갈로이스 필드(28)에 따라 보정 코딩 신드롬 정보를 발생시키는 것을 특징으로 하는 장치.
  5. 데이타 블럭들의 다수의 연속적인 데이타들을 일시적으로 저장하기 위한 블럭 버퍼 메모리 수단을 경유하여 소오스로부터 목적지로 흘러가는 실질적으로 인접한 데이타 블럭의 시켄서 내의 데이타 블럭 상에서 에러 보정과 크로스 체킹을 실행하고, 상기 블럭 버퍼 메모리 수단을 경유하여 송신된 데이타 블럭의 흐름을 감독하기 위한 마이크로 콘트롤러 수단(196)을 포함하는 리드-솔로몬 에러 보정 및 크로스 체킹 장치에 있어서, 소오스로부터 송신되는 바이트들에 부속한 데이타 블럭에 부가된 신드롬 바이트에 연관되어 있는 상기 데이타 블럭을 위한 다수의 에러 보정 잔류자 바이트들을 복원하도록 상기 소오스로부터 각 데이타 블럭을 수신하여 처리하기 위해 스트림에 접속되는 갈로이스 유한 필드 신드롬 발생기 및 잔류자 복원 회로 수단(10)을 더 포함하고, 상기 발생기 및 잔류자 복원 회로 수단(10)은, 명목값에 대해 등가인지 비등가인지를 판단하기 위하여 상기 복원된 다수의 에러 보정 신드롬 바이트들 중 선정된 바이트들을 명목값과 비교하기 위한 체킹 수단(78)을 포함하고, 다항식
    G(x)=x2+a(a는 1이 아님)
    에 따라 소오스로부터 송신되는 정보에 부속한 데이타 블럭에 부가된 크로스 체크 신드롬 정보에 관련된 크로스 체킹 잔류자 정보를 복원하기 위한 리드-솔로몬 크로스 체크 신드롬 복원 수단을 더 포함하며, 마이크로 콘트롤러 수단(196)은 에러 보정 서비스 루틴 펌웨어 수단을 실행하고, 그 즉시 상기 복원된 에러 보정 잔류자 바이트들을 선택적으로 얻기 위한 래치 수단(68)에 직접 액세스하며, 또 상기 구해진 재발생 에러 보정 잔류자 바이트로부터 최소한 하나의 에러 위치 및 대응하는 에러 값을 계산하고 에러라고 결정된 블럭의 데이타를 대체하기 위한 보정된 데이타를 발생시키고, 크로스 체크 잔류자 정보에 대해 보정된 데이타의 효과를 계산하기 위한 계산 수단을 구현하며, 에러 데이타들이 목적지에 전송되기 전에 버퍼 메모리 안에 저장된 블럭의 에러 데이타를 보정된 데이타로 대체하기 위해 상기 버퍼 메모리 수단에 직접 액세스하기 위한 직접 액세스 수단을 제어하기 위하여, 상기 비등가에 응답하는 것을 특징으로 하는 장치.
  6. 제5항에 있어서, 상기 리드-솔로몬 크로스 체크 신드롬 정보는 다항식 G(x)=x2+alpha1에 따르는 것을 특징으로 하는 장치.
  7. 데이타 블럭들의 다수의 연속적인 데이타들을 일시적으로 저장하기 위한 블럭 버퍼 메모리 수단을 경유하여 소오스로부터 목적지로 흐르는 실질적으로 연속적인 데이타 블럭들의 시켄서 내에 있는 데이타 블럭 상에서 에러 보정을 실행하고, 상기 각 블럭의 데이타 ID 필드 상에서 에러 검출을 실행하며, 상기 블럭 버퍼 메모리 수단을 통해 데이타 블럭의 흐름을 감독하기 위한 마이크로 콘트롤러 수단(196)을 포함하는 리드-솔로몬 에러 보정 및 검출 장치에 있어서, 소오스로부터 송신되는 바이트들에 부속한 데이타 블럭에 부가된 신드롬 바이트에 연관되어 있는 상기 데이타 블럭을 위한 다수의 에러 보정 잔류자 바이트들을 복원하도록 상기 소오스로부터 각 데이타 블럭을 수신하여 처리하기 위해 스트림에 접속되는 갈로이스 유한 필드 신드롬 발생기 및 잔류자 복원 회로 수단(10)을 더 포함하고 상기 발생기 및 잔류자 복원 회로 수단(10)은 등가인지 비등가인지를 판단하기 위하여 상기 복원된 다수의 에러 보정 신드롬 바이트들 중 선정된 바이트들을 명목값과 비교하기 위한 체킹 수단(78)을 포함하고, 다항식
    GEDC2(x)=x2+ax+b, (b는 1이 아님)
    에 따르는 2바이트 신드롬에 따라 ID 필드에 부가된 에러 검출 정보를 갖는 상기 데이타 ID 필드에서 에러를 검출하기 위한 에러 검출 수단을 더 포함하는 것을 특징으로 하는 장치.
  8. 제7항에 있어서, 상기 에러 검출 수단은 다항식
    GEDC2(x)=x2+x+alpha18
    에 따라 2바이트 신드롬을 발생시키는 것을 특징으로 하는 장치.
  9. 제7항에 있어서, 상기 발생기 및 복원 회로 수단은 다항식
    GEDC2(x)=x2+alpha81·x+alpha81
    에 따라 2바이트 신드롬을 발생시키므로써 상기 각 데이타 블럭의 데이타 ID 필드에 있는 에러를 검출하기 위한 에러 검출 수단을 더 포함하는 것을 특징으로 하는 장치.
  10. 데이타 블럭들의 다수의 연속적인 데이타들을 일시적으로 저장하기 위한 블럭 버퍼 메모리 수단을 경유하여 소오스로부터 목적지로 흐르는 실질적으로 연속한 데이타 블럭들의 시켄서 내의 데이타 블럭 상에서 에러 보정을 실행하고, 상기 각 블럭의 데이타 ID 필드 상에서 에러 검출을 실행하며, 상기 블럭 버퍼 메모리 수단을 통해 데이타 블럭의 흐름을 감독하기 위한 마이크로 콘트롤러 수단(196)을 포함하는 리드-솔로몬 에러 보정 및 검출 장치에 있어서, 소오스로부터 송신되는 바이트들에 부속한 데이타 블럭에 부가된 신드롬 바이트에 연관되어 있는 상기 데이타 블럭을 위한 다수의 에러 보정 잔류자 바이트들을 복원하도록 상기 소오스로부터 각 데이타 블럭을 수신하여 처리하기 위해 스트림에 접속되는 갈로이스 유한 필드 신드롬 발생기 및 잔류자 복원 회로 수단(10)을 더 포함하고 상기 발생기 및 잔류자 복원 회로 수단(10)은 등가인지 비등가인지를 판단하기 위하여 상기 복원된 다수의 에러 보정 신드롬 바이트들 중 선정된 바이트들을 명목값과 비교하기 위한 체킹 수단(78)을 포함하고, 다항식
    GEDC3(x)=x3+ax2+bx+c
    에 따르는 3바이트 신드롬에 따라 ID 필드에 부가된 에러 검출 정보를 갖는 상기 데이타 ID 필드에서 에러를 검출하기 위한 에러 검출 수단을 더 포함하는 것을 특징으로 하는 장치.
  11. 제10항에 있어서, 상기 에러 검출 수단은 다항식
    GEDC3(x)=x3+alpha87·x2+alpha87·x+1
    의 형식을 갖는 3바이트 신드롬을 발생시키는 것을 특징으로 하는 장치.
  12. 제10항에 있어서, 상기 발생기 및 복원 회로 수단은 다항식
    GEDC3(x)=x3+alpha87·x2+alpha81·x+alpha18
    의 형식을 갖는 3바이트 신드롬을 발생시키므로써 각 데이타 블럭의 데이타 ID 필드에 있는 에러를 검출하기 위한 에러 검출 수단을 더 포함하는 것을 특징으로 하는 장치.
  13. 전송되고 있는 각 데이타 블럭이 상기 블럭의 데이타 내의 에러의 검출 및 보정을 가능하게 하기 위하여 그 끝에 부가된 리드 솔로몬 에러 보정 코딩 신드롬 정보를 포함하고, 상기 에러 보정 코딩 신드롬 정보가 블럭의 크로스 체킹 신드롬 정보에 관련하여 역시 도출되는 각 데이타 블럭에 부가된 리드-솔로몬 크로스 체킹 신드롬 정보를 더 포함하는 계산 시스템 내의 데이타 블럭 전송 경로에 사용하기 위한 리드-솔로몬 에러 보정 코드 신드롬 발생기 장치에 있어서, x8+x4+x3+x2+1의 형식을 갖는 필드 발생기 다항식에 의해 발생된, 제1항이 x5+x3+x+1(이진수로는 00101011)이고 각 에러 보정 신드롬 다항식은 G(x)=x4+(alpha18)·x3+(alpha87)·x2+(alpha18)·x1+1의 형식인 갈로이스 필드(28)에 따라 에러 보정 코딩 신드롬 정보를 계산하기 위한 에러 보정 코드 신드롬 발생기 수단, 및
    G(x)=x2+b(b는 1이 아님)
    형식의 다항식으로부터 크로스 체킹 신드롬 정보를 계산하기 위한 크로스 체크 신드롬 발생기 수단을 더 포함하는 것을 특징으로 하는 장치.
  14. 제13항에 있어서, 상기 크로스 체크 신드롬 발생기 수단은 G(x)=x2+alpha1형식의 다항식으로부터 크로스 체킹 신드롬 정보를 계산하는 것을 특징으로 하는 장치.
  15. 제14항에 있어서, 상기 크로스 체크 신드롬 발생기 수단은 각각의 입력하는 데이타 블럭을 시리얼 바이트들의 클럭된 데이타 스트림으로서 수신하기 위한 입력(12), 합 바이트를 발생시키기 위하여 상기 입력하는 데이타 블럭 클럭된 데이타 스트림과 각 바이트를 피드백 바이트와 가산하기 위한 제1가산 접점 수단(84), 제1곱 바이트를 발생시키기 위하여 사기 합 바이트를 alpha1로 곱하기 위한 제1승산기 수단(86), 제1바이트 클럭 기간동안 상기 제1곱 바이트를 저장하고, 후속 바이트 클럭 기간들동안 후속 곱 바이트들을 저장하기 위해 상기 제1승산기 수단(86)에 접속된 제1클럭된 래치 스테이지 수단(90a), 및 제2바이트 클럭 기간 동안 상기 제1곱 바이트를 저장하기 위해 상기 제1클럭된 래치 스테이지 수단에 접속되고, 상기 가산 접점(84)로의 피드백 바이트로서 상기 제1곱 바이트를 제2바이트 클럭 기간 동안 피드백하기 위한 제2클럭된 래치 스테이지 수단(90b)을 포함하는 것을 특징으로 하는 장치.
  16. x8+x4+x3+x2+1의 형식을 갖는 필드 발생기 다항식에 의해 발생된, 제1항이 x5+x3+x+1(이진수로는 00101011)이고, 각 에러 보정 신드롬은 G(x)=x4+(alpha18)·x3+(alpha87)·x2+(alpha18)·x1+1의 형식인 갈로이스 필드(28)에 따라 에러 보정 코딩 신드롬 정보를 계산하기 위한 온-더-플라이 에러 보정 코드 신드롬 발생기 수단을 포함하며, 전송되고 있는 각 데이타 블럭이 상기 블럭의 데이타 내의 에러의 검출 및 보정을 가능하게 하기 위하여 그 끝에 부가된 리드-솔로몬 에러 보정 코딩 신드롬 정보를 포함하고, 상기 에러 보정 코딩 신드롬 정보가 블럭의 크로스 체킹 신드롬 정보에 관련하여 역시 도출되는, 각 데이타 블럭에 부가된 리드-솔로몬 크로스 체킹 신드롬 정보를 더 포함하는 계산 시스템 내의 데이타 블럭 전송 경로에 사용하기 위한 리드-솔로몬 에러 보정 코드 신드롬 발생기 장치에 있어서, 상기 에러 보정 코드 신드롬 발생기 수단은 잔류자 래치 수단(68), 및 데이타 블럭의 데이타 ID 필드를 위한 에러 검출 신드롬을 발생시키기 위한 수단을 포함하는 것을 특징으로 하는 장치.
  17. 제16항에 있어서, 데이타 블럭의 데이타 ID 필드를 위한 에러 검출 신드롬을 발생시키기 위한 상기 수단은
    GEDC2(x)=x2+ax+b(b는 1이 아님)
    형식의 2 바이트 신드롬을 발생시키는 것을 특징으로 하는 장치.
  18. 제17항에 있어서, 에러 검출 신드롬을 발생시키기 위한 상기 수단은
    GEDC2(x)=x2+x+alpha18
    형식의 2바이트 신드롬을 발생시키는 것을 특징으로 하는 장치.
  19. 제17항에 있어서, 데이타 블럭의 데이타 ID 필드를 위한 에러 검출 신드롬을 발생시키기 위한 상기 수단은
    GEDC2(x)=x2+alpha81·x+alpha81
    형식의 2바이트 신드롬을 발생시키는 것을 특징으로 하는 장치.
  20. 제16항에 있어서, 데이타 블럭의 데이타 ID 필드를 위한 에러 검출 신드롬을 발생시키기 위한 상기 수단은
    GEDC3(x)=x3+ax2+bx+c
    형식의 3바이트 신드롬을 발생시키는 것을 특징으로 하는 장치.
  21. 제20항에 있어서, 데이타 블럭의 데이타 ID 필드를 위한 에러 검출 신드롬을 발생시키기 위한 상기 수단은
    GEDC3(x)=x3+alpha87·x2+alpha87·x+1
    형식의 3바이트 신드롬을 발생시키는 것을 특징으로 하는 장치.
  22. 제20항에 있어서, 데이타 블럭의 데이타 ID 필드를 위한 에러 검출 신드롬을 발생시키기 위한 상기 수단은
    GEDC3(x)=x3+alpha81·x2+alpha87·x+alpha18
    형식의 3바이트 신드롬을 발생시키는 것을 특징으로 하는 장치.
  23. 데이타 블럭 디코딩 처리 내에서, 각각이 상기 데이타 디코딩 처리 전에 발생하는 인코딩 처리동안 선정된 리드 솔로몬 코드에 따라 계산되고 부가된 에러 신드롬 정보를 갖는 실질적으로 연속하는 데이타 블럭들의 스트림 내에서 상기 데이타 블럭을 보정하기 위한 온-더-플라이 에러 보정 방법에 있어서, 상기 에러 신드롬 정보와 관련된 복원된 정보를 얻기 위하여 상기 데이타 블럭을 신드롬 정보 복원 회로(10)을 통과시키는 단계, 에러 버스트가 상기 데이타 블럭 내에 존재하는지를 판단하기 위해 상기 복원된 정보를 0과 비교하는 단계, 및 만일 에러 버스트가 존재한다고 판단되면, 스트림의 다음 데이타 블럭을 위하여 상기 신드롬 정보 복원 회로(10)을 자유롭게 하기 위하여 상기 복원된 정보를 신드롬 래치(68)로 래치시키는 단계, 마이크로 콘트롤러(196)이 에러 보정 서비스 루틴 펌웨어 수단을 호출하여 실행하도록 하는 단계와 그 즉시, 상기 복원된 정보의 바이트들을 상기 신드롬 래치(68)로부터 상기 마이크로 콘트롤러 수단(196)으로 선택적으로 전송하는 단계, 펌웨어 수단에 의해 마이크로 콘트롤러 수단(196) 내에서 구현되는 선정된 리드-솔로몬 버스트 에러 보정 앨거리듬에 따라 에러 버스트의 위치와 보정된 값을 상기 마이크로 콘트롤러 수단(196)과 상기 펌웨어 수단으로 결정하는 단계, 및 호스트 시스템으로 전달되기 전에 에러 버스트를 포함하고 있는 것으로 검출된 블럭내의 에러 버스트를 상기 보정된 값으로 대체시키는 단계를 포함하는 것을 특징으로 하는 방법.
  24. 제23항에 있어서, 상기 데이타 블럭은 상기 인코딩 처리동안 데이타 블럭에 계산되고 부가된 리드 솔로몬 크로스 체크 정보를 더 포함하면, 상기 방법은 복원된 크로스 체크 잔류자 정보를 상기 잔류자 래치(68)에 래치시키는 단계, 상기 복원된 크로스 체크 잔류자 정보를 복원된 크로스 체크 부분 신드롬 정보로 변환시키는 단계, 및 상기 보정값이 결정된 후 가능한 오보정을 검출하기 위하여 펌웨어에 의해 가능하게 된 마이크로 콘트롤러 수단으로 상기 복원된 크로스 체크 부분 신드롬 정보에 대한 상기 보정값의 효과를 결정하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  25. 최소한 하나의 회전 데이타 저장 디스크(162), 데이타를 상기 디스크에 기입하고 상기 디스크로부터 데이타를 판독하기 위한 최소한 하나의 방사상 위치 지정 가능 데이타 변환기(170), 데이타 기입 동작동안 다수의 블럭들을 저장할 수 있는 블럭 버퍼 메모리 수단(214)로부터의 데이타 블럭들을 직렬로 상기 디스크(162) 상에 시켄서하고 데이타 판독 동작동안 상기 블럭 버퍼 메모리 수단(214)로 전달하기 위하여 시리얼 데이타를 데이타 블럭으로 시켄서하기 위한 시켄서 수단(100) 및 상기 데이타 변환기 헤드(170)를 선택된 데이타 트랙 위치에 위치시키기 위한 헤드 위치 설정 수단(172)를 감독하고 상기 데이타 시켄서 수단(100), 상기 블럭 버퍼 메모리 수단(214) 및 호스트에 대한 인터페이스를 경유하여 호스트 컴퓨터로의 데이타 전송을 감독하기 위한 마이크로 프로세서 수단(196)을 포함하는 디스크 드라이브 데이타 저장 서브 시스템(160) 내에서 온-더-플라이 에러 보정을 실행하기 위한 리드-솔로몬 에러 보정 장치에 있어서, 데이타 기입동안 상기 디스크(162)에 기입되고 있는 바이트들에 부속한 데이타 블럭에 부가되어 있는 상기 데이타 블럭을 위한 다수의 부분 에러 보정 신드롬 바이트들을 발생시키기 위하여 각 데이타 블럭을 수신하여 처리하기 위한 상기 시켄서 수단(100)에 접속되며, 상기 디스크로부터 판독된 각 데이타 블럭으로부터 다수의 에러 보정 잔류자 바이트들을 검출하기 위한 갈로이스 필드 신드롬 발생기 및 복원 회로 수단(10)을 더 포함하고, 상기 발생기 및 복원 회로 수단(10)은 상기 재생된 다수의 에러 보정 잔류자 바이트들 중 선정된 바이트들을 명목 값과 비교하기 위한 체킹 수단(78) 및 상기 체킹 수단(78)에 의해 결정된 대로 비등가에 응답하여 복원된 에러 보정 잔류자 바이트들을 래치시키기 위한 래치 수단(68)을 포함하며, 상기 프로그램된 마이크로 프로세서 수단(196)은 복원된 에러 보정 잔류자 바이트들을 선택적으로 구하기 위한 상기 래치 수단(68)에의 직접 액세스를 구현하고, 상기 구해진 재생된 에러 보정 잔류자 바이트들로부터 에러 위치와 에러값을 계산하여 에러라고 결정된 블럭의 데이타를 대체하기 위해 보정된 데이타를 발생시키기 위한 계산 수단을 더 구현하기 위한 에러 보정 서비스 루틴 수단을 포함하며, 호스트로 전송되기 전에 저장된 블럭의 에러 데이타를 보정값으로 대체할 수 있게 하기 위하여 상기 버퍼 메모리 수단에 직접 액세스하기 위한 직접 액세스 수단을 제어하는 것을 특징으로 하는 장치.
  26. 제25항에 있어서, 상기 발생기 및 복원 회로 수단(10)은 상기 크로스 체크 신드롬 발생기 수단이 상기 디스크로부터 판독된 각 데이타 블럭으로부터 상기 래치 수단에 의하여 부가적으로 래치된 크로스 체킹 잔류자 바이트들을 복원시키고, 데이타 기입에 부속한 데이타 블럭에 크로스 체킹 신드롬 정보를 계산하여 부가하기 위한 리드-솔로몬 크로스 체크 신드롬 발생기 수단을 더 포함하고, 상기 마이크로 프로세서 수단(196)은 펌웨어 수단에 의하여 에러 데이타를 상기 보정된 값으로 대체하기 전에 제안된 에러 보정의 복원된 잔류자 바이트들에 대한 영향을 판단하는 것을 특징으로 하는 장치.
  27. 제25항에 있어서, 상기 발생기 및 복원 회로 수단(10)은 상기 각 데이타 블럭의 데이타 ID 필드의 에러 검출 잔류자 바이트들을 복원하여 체크하기 위한 에러 검출 수단을 더 포함하는 것을 특징으로 하는 장치.
  28. 제25항에 있어서, 상기 발생기 및 복원 회로 수단(10)은 x8+x4+x3+x2+1의 형식을 갖는 필드 발생기 다항식에 의해 발생된, 제1항이 x5+x3+x+1(이진수로는 00101011)이고, 각 에러 보정 신드롬이 G(x)=x4+(alpha18)·x3+(alpha87)·x2+(alpha18)·x1+1 형식인 갈로이스 필드에 따라 에러 보정 코딩 신드롬 정보를 발생시키는 것을 특징으로 하는 장치.
  29. 제28항에 있어서, 상기 발생기 및 복원 회로 수단(10)은 G(x)=x2+a (a는 1이 아님) 형식의 체킹 신드롬 정보를 계산하기 위한 리드-솔로몬 크로스 체크 신드롬 발생기 수단을 더 포함하는 것을 특징으로 하는 장치.
  30. 제29항에 있어서, 상기 크로스 체크 신드롬 발생기 수단은 G(x)=x2+alpha1의 형식의 체킹 신드롬 정보를 계산하는 것을 특징으로 하는 장치.
  31. 제28항에 있어서, 상기 발생기 및 복원 회로 수단(10)은 다항식
    G(x)EDC2=x2+ax+b (b는 1이 아님)
    형식의 2바이트 신드롬을 발생시키므로써 상기 각 데이타 클럭의 데이타 ID 필드에 있는 에러를 검출하기 위한 에러 검출 수단을 더 포함하는 것을 특징으로 하는 장치.
  32. 제31항에 있어서, 상기 에러 검출 수단은 다항식
    GEDC2(x)=x2+x+alpha18
    형식의 2바이트 신드롬을 발생시키는 것을 특징으로 하는 장치.
  33. 제31항에 있어서, 상기 발생기 및 복원 회로 수단(10)은 다항식
    GEDC2(x)=x2+alpha81·x+alpha81
    형식의 2바이트 신드롬을 발생시키므로써 상기 각 데이타 블럭의 데이타 ID 필드에 있는 에러를 검출하기 위한 에러 검출 수단을 더 포함하는 것을 특징으로 하는 장치.
  34. 제28항에 있어서, 상기 발생기 및 복원 회로 수단(10)은 다항식
    GEDC3(x)=x3+ax2+bx+c
    형식의 3바이트 신드롬을 발생시키므로써 상기 각 데이타 블럭의 데이타 ID 필드에 있는 에러를 검출하기 위한 에러 검출 수단을 더 포함하는 것을 특징으로 하는 장치.
  35. 제34항에 있어서, 상기 에러 검출 수단은 다항식
    GEEC3(x)=x3+alpha87·x2+alpha87·x+1
    형식의 3바이트 신드롬을 발생시키는 것을 특징으로 하는 장치.
  36. 제34항에 있어서, 상기 에러 검출 수단은 다항식
    GEDC3(x)=x3+alpha81·x2+alpha87·x+alpha18
    형식의 3바이트 신드롬을 발생시키는 것을 특징으로 하는 장치.
  37. 제25항에 있어서, 상기 프로그램된 마이크로 프로세서 수단(196)은 단일 마이크로 프로세서(196)을 포함하는 것을 특징으로 하는 장치.
  38. 제37항에 있어서, 상기 프로그램된 마이크로 프로세서(196)은 상기 에러 보정 서비스 루틴의 실행을 포함하는 헤드 위치 제어 및 감독과 데이타 흐름 감독 사이에서 마이크로 프로세서(196)의 기능적 동작들을 나누는 것을 특징으로 하는 장치.
KR1019920001572A 1991-02-01 1992-01-31 내장 디지탈 콘트롤러를 사용하는 온-더-플라이 에러 보정 방법 및 장치 KR950009384B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US650,791 1991-02-01
US07/650,791 US5241546A (en) 1991-02-01 1991-02-01 On-the-fly error correction with embedded digital controller

Publications (2)

Publication Number Publication Date
KR920017083A KR920017083A (ko) 1992-09-26
KR950009384B1 true KR950009384B1 (ko) 1995-08-21

Family

ID=24610305

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019920001572A KR950009384B1 (ko) 1991-02-01 1992-01-31 내장 디지탈 콘트롤러를 사용하는 온-더-플라이 에러 보정 방법 및 장치

Country Status (6)

Country Link
US (1) US5241546A (ko)
EP (1) EP0497593B1 (ko)
JP (1) JP2724934B2 (ko)
KR (1) KR950009384B1 (ko)
DE (1) DE69229753T2 (ko)
IE (1) IE920104A1 (ko)

Families Citing this family (89)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5210660A (en) * 1990-01-17 1993-05-11 International Business Machines Corporation Sectored servo independent of data architecture
US5475540A (en) * 1991-06-04 1995-12-12 Quantum Corporation Magnetic data storage disk drive with data block sequencing by using ID fields after embedded servo sectors
DE4140018A1 (de) * 1991-12-04 1993-06-09 Bts Broadcast Television Systems Gmbh, 6100 Darmstadt, De Verfahren und schaltungsanordnung zum decodieren von rs-codierten datensignalen
US5422895A (en) * 1992-01-09 1995-06-06 Quantum Corporation Cross-checking for on-the-fly Reed Solomon error correction code
US5357520A (en) * 1992-01-31 1994-10-18 International Business Machines Corporation Method and apparatus for precompensation value determination in a PRML data channel
EP0570648A1 (en) * 1992-05-21 1993-11-24 International Business Machines Corporation Apparatus for generating and checking the error correction codes of messages in a message switching system
US5517634A (en) * 1992-06-23 1996-05-14 Quantum Corporation Disk drive system including a DRAM array and associated method for programming initial information into the array
US5905347A (en) * 1993-07-16 1999-05-18 Dell Usa, L.P. System and method for controlling a computer drive motor
US5491395A (en) * 1993-09-17 1996-02-13 Maxtor Corporation TUT servo IC architecture
US5602857A (en) * 1993-09-21 1997-02-11 Cirrus Logic, Inc. Error correction method and apparatus
US5491701A (en) * 1993-11-04 1996-02-13 Cirrus Logic, Inc. Burst error corrector
US5629949A (en) * 1993-09-21 1997-05-13 Cirrus Logic, Inc. Error correction verification method and apparatus using CRC check remainders
US5729718A (en) * 1993-11-10 1998-03-17 Quantum Corporation System for determining lead time latency as function of head switch, seek, and rotational latencies and utilizing embedded disk drive controller for command queue reordering
US5544334A (en) * 1993-12-22 1996-08-06 International Business Machines Corporation Micro channel bus computer system with IDE hard drive interface
US5864716A (en) * 1994-01-07 1999-01-26 Cirrus Logic, Inc. Tagged data compression for parallel port interface
KR100278534B1 (ko) * 1994-03-03 2001-01-15 로버트 에프. 도나휴 테이블 구동 방식의 자동 분할 필드 계산 방법
US5610929A (en) * 1994-03-11 1997-03-11 Fujitsu Limited Multibyte error correcting system
KR100187383B1 (ko) * 1994-03-25 1999-05-15 니시모토 강이치 사진필름 처리장치 및 그 제어방법
US5548795A (en) * 1994-03-28 1996-08-20 Quantum Corporation Method for determining command execution dependencies within command queue reordering process
US5623700A (en) * 1994-04-06 1997-04-22 Dell, Usa L.P. Interface circuit having zero latency buffer memory and cache memory information transfer
US5603063A (en) * 1994-06-27 1997-02-11 Quantum Corporation Disk drive command queuing method using two memory devices for storing two types of commands separately first before queuing commands in the second memory device
US5642366A (en) * 1994-07-05 1997-06-24 Adaptec, Inc. Global parity symbol for interleaved reed-solomon coded data
KR100335482B1 (ko) * 1994-08-17 2002-11-27 삼성전자 주식회사 에러정정시스템
US5761220A (en) * 1994-09-19 1998-06-02 Cirrus Logic, Inc. Minimum latency asynchronous data path controller in a digital recording system
US6125469A (en) * 1994-10-18 2000-09-26 Cirrus Logic, Inc. Error correction method and apparatus
US5774481A (en) * 1995-03-31 1998-06-30 International Business Machines Corporation Reduced gate error detection and correction circuit
KR100255105B1 (ko) * 1995-04-12 2000-05-01 마츠시타 덴끼 산교 가부시키가이샤 에러정정곱부호블록을생성하기위한데이타처리방법,그데이타를기록매체에기록하기위한데이타처리방법,그데이타처리장치및그데이타가기록된광디스크재생장치
US5854800A (en) * 1995-06-07 1998-12-29 Micron Technlogy, Inc. Method and apparatus for a high speed cyclical redundancy check system
US5778009A (en) * 1995-06-14 1998-07-07 Quantum Corporation Dedicated ALU architecture for 10-bit Reed-Solomon error correction module
US6012839A (en) * 1995-06-30 2000-01-11 Quantum Corporation Method and apparatus to protect data within a disk drive buffer
US5757826A (en) * 1995-07-12 1998-05-26 Quantum Corporation Word-wise processing for reed-solomon codes
US5757822A (en) * 1995-08-24 1998-05-26 Quantum Corporation Bit-interleaved rate 16/17 modulation code with three-way byte-interleaved ECC
US5812438A (en) * 1995-10-12 1998-09-22 Adaptec, Inc. Arithmetic logic unit and method for numerical computations in galois fields
US5771184A (en) * 1995-10-12 1998-06-23 Adaptec, Inc. System and method for solving quadratic equation in galois fields
US5787099A (en) * 1995-10-12 1998-07-28 Adaptec, Inc. System and method for encoding and decoding data using numerical computations in galois fields
US5805799A (en) * 1995-12-01 1998-09-08 Quantum Corporation Data integrity and cross-check code with logical block address
US5828513A (en) * 1995-12-07 1998-10-27 International Business Machines Corporation Servo address apparatus and positioning methods for read, write and seek operations in a direct access storage device
US5909334A (en) * 1996-05-10 1999-06-01 Western Digital Corporation Verifying write operations in a magnetic disk drive
US6108812A (en) * 1996-06-20 2000-08-22 Lsi Logic Corporation Target device XOR engine
US5889792A (en) * 1996-10-01 1999-03-30 Intel Corporation Method and apparatus for generating syndromes associated with a block of data that employs re-encoding the block of data
US5774648A (en) * 1996-10-02 1998-06-30 Mitsubishi Semiconductor Of America, Inc. Address generator for error control system
US5917670A (en) * 1996-10-15 1999-06-29 Quantum Corporation Method for recovering data from disk with magneto-resistive head in presence of thermal asperities
US6003151A (en) * 1997-02-04 1999-12-14 Mediatek Inc. Error correction and detection system for mass storage controller
US5905740A (en) * 1997-04-08 1999-05-18 Seagate Technology, Inc. Apparatus and method for error correction
GB2324445B (en) * 1997-04-17 2002-08-21 United Microelectronics Corp Error correction and detection system for mass storage controller
JP2954083B2 (ja) 1997-05-01 1999-09-27 株式会社東芝 情報記録再生用媒体及び情報記録再生用媒体フォーマット装置並びに情報記録再生装置
IT1296023B1 (it) * 1997-07-16 1999-06-04 Sgs Thomson Microelectronics Sistema di pilotaggio misto pwm/lineare impiegante due distinti stadi di pilotaggio
US5974582A (en) * 1997-10-14 1999-10-26 Lsi Logic Corporation High-speed chien search logic
US5943348A (en) * 1997-10-14 1999-08-24 Lsi Logic Corporation Method to check for burst limiting in error correcting systems
US6279135B1 (en) * 1998-07-29 2001-08-21 Lsi Logic Corporation On-the-fly row-syndrome generation for DVD controller ECC
US6615387B1 (en) * 1998-09-22 2003-09-02 Seagate Technology Llc Method and apparatus for error detection
JP4077993B2 (ja) * 1999-07-30 2008-04-23 株式会社日立グローバルストレージテクノロジーズ 性能評価方法及び性能評価装置並びにこれらを用いた記録再生装置
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
EP1146650A1 (en) * 2000-04-10 2001-10-17 Hewlett-Packard Company, A Delaware Corporation Error detection for data storage and transmission
EP1146651A1 (en) * 2000-04-10 2001-10-17 Hewlett-Packard Company Error detection for data storage and transmission
US6986094B2 (en) * 2001-03-29 2006-01-10 Intel Corporation Device and method for selecting opcode values with maximum hamming distance to minimize latency and buffering requirements
US20030009558A1 (en) * 2001-07-03 2003-01-09 Doron Ben-Yehezkel Scalable server clustering
US7751138B1 (en) 2001-12-28 2010-07-06 Marvell International Ltd. Correcting errors in disk drive read back signals by iterating with the Reed-Solomon decoder
US6961197B1 (en) 2001-12-28 2005-11-01 Marvell International Ltd. Correcting errors in disk drive read back signals by iterating with the Reed-Solomon decoder
US6959411B2 (en) * 2002-06-21 2005-10-25 Mediatek Inc. Intelligent error checking method and mechanism
EP1566804A4 (en) * 2002-11-29 2008-04-16 Fujitsu Ltd DATA COLLECTION AND REPRODUCTION DEVICE AND DATA COLLECTION AND REPRODUCTION METHOD
US7426676B2 (en) 2004-01-14 2008-09-16 Broadcom Corporation Data retrieval from a storage device using a combined error correction and detection approach
JP4260688B2 (ja) * 2004-06-09 2009-04-30 富士通株式会社 データ送信装置、データ送受信システム、データ送信装置の制御方法およびデータ送受信システムの制御方法
US20060056093A1 (en) * 2004-09-10 2006-03-16 Ehrlich Richard M Method for microjog calibration by read-write zone
US20060056092A1 (en) * 2004-09-10 2006-03-16 Ehrlich Richard M System for microjog calibration by read-write zone
US7425719B2 (en) * 2005-01-13 2008-09-16 Wd Media, Inc. Method and apparatus for selectively providing data from a test head to a processor
US8693540B2 (en) * 2005-03-10 2014-04-08 Qualcomm Incorporated Method and apparatus of temporal error concealment for P-frame
US7925955B2 (en) * 2005-03-10 2011-04-12 Qualcomm Incorporated Transmit driver in communication system
CA2600776C (en) * 2005-03-10 2012-07-17 Qualcomm Incorporated A decoder architecture for optimized error management in streaming multimedia
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
US7743311B2 (en) * 2006-01-26 2010-06-22 Hitachi Global Storage Technologies Netherlands, B.V. Combined encoder/syndrome generator with reduced delay
US7823049B2 (en) * 2006-03-15 2010-10-26 Mediatek Inc. Methods and apparatuses for generating parity symbols for data block
US7913151B1 (en) * 2006-05-26 2011-03-22 Pmc-Sierra, Inc. Forward error correction with self-synchronous scramblers
US7721178B2 (en) * 2006-06-01 2010-05-18 International Business Machines Corporation Systems, methods, and computer program products for providing a two-bit symbol bus error correcting code
US20070283207A1 (en) * 2006-06-01 2007-12-06 International Business Machines Corporation Systems, methods, and computer program products for providing a two-bit symbol bus error correcting code with bus timing improvements
US20070283208A1 (en) * 2006-06-01 2007-12-06 International Business Machines Corporation Systems, methods, and computer program products for providing a two-bit symbol bus error correcting code with bus diagnostic features
US20070283223A1 (en) * 2006-06-01 2007-12-06 International Business Machines Corporation Systems, methods, and computer program products for providing a two-bit symbol bus error correcting code with all checkbits transferred last
US7958434B1 (en) * 2006-07-26 2011-06-07 Marvell International Ltd. Method for synchronizing to a digital signal
JP4672743B2 (ja) * 2008-03-01 2011-04-20 株式会社東芝 誤り訂正装置および誤り訂正方法
US8291259B2 (en) * 2009-04-15 2012-10-16 International Business Machines Corporation Delete of cache line with correctable error
TWI465898B (zh) * 2009-07-13 2014-12-21 Silicon Motion Inc 避免資料儲存裝置之資料發生移位錯誤的方法及控制器
US20110179315A1 (en) * 2010-01-21 2011-07-21 Brocade Communications Systems, Inc. Serdes link error management
US9086992B1 (en) 2012-06-08 2015-07-21 Digital Ordnance Storage, Inc. System and method for interconnecting storage elements
US10073731B2 (en) * 2013-11-27 2018-09-11 Intel Corporation Error correction in memory
US9378083B2 (en) 2013-12-04 2016-06-28 Seagate Technology Llc Adaptive read error recovery for memory devices
US9397703B2 (en) * 2013-12-04 2016-07-19 Seagate Technology Llc Adaptive read error recovery for memory devices
US10991445B2 (en) * 2018-09-06 2021-04-27 Micron Technology, Inc. Memory sub-system including an in-package sequencer to perform error correction and memory testing operations
CN115052047B (zh) * 2022-01-27 2024-08-09 昆明理工大学 一种Gossip网络协议的前置验证方法
CN116400200B (zh) * 2023-06-05 2023-09-01 中国汽车技术研究中心有限公司 车规级安全芯片的电磁侧信道信息的交叉验证方法

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4185269A (en) * 1978-06-30 1980-01-22 International Business Machines Corporation Error correcting system for serial by byte data
US4413339A (en) * 1981-06-24 1983-11-01 Digital Equipment Corporation Multiple error detecting and correcting system employing Reed-Solomon codes
FR2533091A1 (fr) * 1982-09-13 1984-03-16 Cii Honeywell Bull Systeme de detection et de correction d'erreurs de transmission d'un message binaire utilisant un code cyclique detecteur et correcteur d'erreurs de type reed-solomon entrelace
US4567594A (en) * 1983-06-07 1986-01-28 Burroughs Corporation Reed-Solomon error detecting and correcting system employing pipelined processors
US4633471A (en) * 1983-09-19 1986-12-30 Storage Technology Partners Ii Error detection and correction in an optical storage system
US4675652A (en) * 1986-04-11 1987-06-23 Quantum Corporation Integrated encoder decoder for variable length, zero run length limited codes
US4730321A (en) * 1986-05-30 1988-03-08 Quantum Corporation Disk drive with improved error correction code
US4782490A (en) * 1987-03-16 1988-11-01 Cythera Corporation Method and a system for multiple error detection and correction
US4937829A (en) * 1987-04-24 1990-06-26 Ricoh Company, Ltd. Error correcting system and device
US4890287A (en) * 1988-03-09 1989-12-26 Magnetic Peripherals Inc. On-the-fly error correction
US4928280A (en) * 1988-04-29 1990-05-22 International Business Machines Corporation Fast processor for multi-bit error correction codes
US5170299A (en) * 1990-08-17 1992-12-08 Quantum Corporation Edge servo for disk drive head positioner

Also Published As

Publication number Publication date
EP0497593A3 (ko) 1995-05-31
US5241546A (en) 1993-08-31
IE920104A1 (en) 1992-08-12
DE69229753D1 (de) 1999-09-16
EP0497593B1 (en) 1999-08-11
DE69229753T2 (de) 2000-03-02
EP0497593A2 (en) 1992-08-05
KR920017083A (ko) 1992-09-26
JP2724934B2 (ja) 1998-03-09
JPH05347075A (ja) 1993-12-27

Similar Documents

Publication Publication Date Title
KR950009384B1 (ko) 내장 디지탈 콘트롤러를 사용하는 온-더-플라이 에러 보정 방법 및 장치
US5422895A (en) Cross-checking for on-the-fly Reed Solomon error correction code
US5600662A (en) Error correction method and apparatus for headers
US4730321A (en) Disk drive with improved error correction code
US5974580A (en) Concurrent row/column syndrome generator for a product code
JP3663377B2 (ja) データ記憶装置、読み出しデータの処理装置および読み出しデータの処理方法
US6181497B1 (en) System and method for providing nonadjacent redundancy synchronization bytes
US7272772B2 (en) Data recording method, recording medium and reproduction apparatus
KR930011679B1 (ko) 신호전송 장치 및 신호전송 장치에서의 데이타의 기록 재생방법
US20110225477A1 (en) Systems and methods for achieving higher coding rate using parity interleaving
US5408477A (en) Error correction method
US6288861B1 (en) Disk drive with sector numbers encoded by sequences of sector types
US5889796A (en) Method of insuring data integrity with a data randomizer
US7127660B2 (en) Method, apparatus and program storage device for correcting a burst of errors together with a random error using shortened cyclic codes
US7849418B2 (en) Segregation of redundant control bits in an ECC permuted, systematic modulation code
US7131052B2 (en) Algebraic decoder and method for correcting an arbitrary mixture of burst and random errors
JPH0670868B2 (ja) デイジタルデ−タ記録装置
US6587977B1 (en) o,k,m,/m recording code
US20080086676A1 (en) Segregation of redundant control bits in an ecc permuted, systematic modulation code
US5761220A (en) Minimum latency asynchronous data path controller in a digital recording system
US9252808B1 (en) Ping-pong run length limit encoder
US7697224B2 (en) Storing AD sampled data of read/write channel into ECC SRAM
JP3573588B2 (ja) 情報再生装置および情報記録再生装置
JP2001144628A (ja) データ転送装置
JP2001283538A (ja) 記録再生装置のデータ再生回路及びその誤り訂正方法

Legal Events

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

Payment date: 19980804

Year of fee payment: 4

LAPS Lapse due to unpaid annual fee