KR20130112897A - 통합된 데이터 및 헤더 보호를 포함하는 인코드된 데이터의 디코딩 - Google Patents

통합된 데이터 및 헤더 보호를 포함하는 인코드된 데이터의 디코딩 Download PDF

Info

Publication number
KR20130112897A
KR20130112897A KR1020137013244A KR20137013244A KR20130112897A KR 20130112897 A KR20130112897 A KR 20130112897A KR 1020137013244 A KR1020137013244 A KR 1020137013244A KR 20137013244 A KR20137013244 A KR 20137013244A KR 20130112897 A KR20130112897 A KR 20130112897A
Authority
KR
South Korea
Prior art keywords
header
row
ecc parity
data array
data
Prior art date
Application number
KR1020137013244A
Other languages
English (en)
Other versions
KR101531774B1 (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 KR20130112897A publication Critical patent/KR20130112897A/ko
Application granted granted Critical
Publication of KR101531774B1 publication Critical patent/KR101531774B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1012Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/29Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
    • H03M13/2906Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes using block codes
    • H03M13/2909Product codes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/13Linear codes
    • H03M13/15Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
    • H03M13/151Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
    • H03M13/1515Reed-Solomon codes

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Error Detection And Correction (AREA)
  • Detection And Correction Of Errors (AREA)

Abstract

통합된 데이터 및 헤더 보호를 포함하는 인코드된 데이터를 디코드하기 위한 방법이 여기에 개시되었다. 한 실시예에서, 전술한 방법은 확장된 데이터 어레이의 수신을 포함한다. 상기 확장된 데이터 어레이는 행들과 열들로 조직된 데이터 어레이, 상기 데이터 어레이의 행들에 첨부된 헤더들, 상기 데이터 어레이의 열들을 보호하는 열 ECC 패리티, 그리고 조합된 행들 및 헤더들을 보호하는 행 ECC 패리티를 포함한다. 그 다음 본 방법은 상기 확장된 데이터 어레이를 디코드한다. 다른 동작들중에서, 이 디코드하는 단계는 헤더가 적법인지 여부를 결정하기 위하여 각 행과 관련된 헤더를 첵크하는 단계를 포함한다. 만약 헤더가 적법하면, 상기 방법은 상기 대응 행 ECC 패리티에 대한 상기 헤더의 기여를 결정한다. 그 다음 상기 방법은 상기 대응 행 ECC 패리티에 대한 상기 헤더의 기여를 리버스한다. 대응 장치 (즉, 상기-설명된 방법을 실행하도록 구성된 테이프 드라이브)가 또한 여기서 개시되었다.

Description

통합된 데이터 및 헤더 보호를 포함하는 인코드된 데이터의 디코딩{DECODING ENCODED DATA CONTAINING INTEGRATED DATA AND HEADER PROTECTION}
본 발명은 테이프 드라이브 (tape drives), 좀 더 특별히 통합된 데이터 및 헤더 보호를 포함하는 인코드된 데이터를 디코드하기 위한 장치 및 방법에 관련된 것이다.
현재의 개방 선형 테이프 (linear tape open (LTO)) 및 기업-수준 테이프 드라이브와 같은 일부 테이프 드라이브에서, 데이터의 가변-길이 블록 (variable-length blocks)이 호스트 인터페이스 (host interface)로부터 수신되어 데이터 세트로 알려진 고정 유닛 (fixed units)으로 변환된다. 이들 데이터 세트는 통상적으로 서브 데이터 세트 (SDSs)로 알려진 더 작은 고정 유닛으로 분해된다 (broken down into). 그 다음 그 안에 포함된 데이터를 보호하기 위하여 이들 서브 데이터 세트에 관하여 하나의 유닛 (a unit)으로서 오류 정정 코딩 (Error correction coding)이 수행된다.
하나의 SDS내 데이터를 보호하기 위하여 종래의 테이프 드라이브는 하나의 서브 데이터 세트를 행 (rows)과 열 (columns)로 구성된 2차원 어레이 (array)로 조직할 수 있다. 상기 2차원 어레이의 각 행은 다수 (가령, 2 또는 4) 인터리브된 (interleaved) 데이터 워드로 구성될 수 있다. 심벌들 (symbols)이 다수 비트들로 구성되는, 오류 정정 패리티 비트들 또는 심벌들이 그 안에 포함된 데이터를 보호하기 위하여 어레이내의 각 행 및 열을 위해 생성된다. 행과 열 양쪽 모두에 보호가 제공되므로 이것은 본질적으로 (in essence), 데이터를 위한 2차원적 보호를 제공한다. 일단 생성되면, 상기 오류 정정 패리티 비트들 또는 심벌들은 자기 테이프 매체상의 최종 스토리지를 위해 어레이에 첨부될 수 있다 (appended).
일단 오류 정정 패리티 비트들 또는 심벌들이 어레이에 첨부되면, 하나 또는 그 이상의 헤더들 (headers)이 생성되어 상기 어레이의 각 행에 첨부될 수 있다. 이 헤더들은 일반적으로 어드레싱 정보 및 상기 어레이의 데이터 워드들과 관련된 메타 데이터 (속성 정보, meta data)를 저장한다. 비록 이들 헤더들은 순환 리던던시 첵크들 (cyclic redundancy checks (CRCs))과 같은 오류 탐지 코드들 (error detection codes)을 포함할 수 있지만 통상적으로 오류 정정 코드들에 의해 보호되지는 않는다. 헤더들내에서 오류 정정 패리티 비트들 또는 심벌들을 생성 및 저장하는 것은 헤더들의 사이즈를 증가시키고 스토리지 포맷의 효율을 바람직하지 않게 (undesirably) 감소시킬 수 있다.
테이프 스토리지 매체를 위한 선형 기록 밀도 (linear recording density)가 계속 증가함에 따라, 상기 테이프상 저장된 데이터 및 헤더에 대한 오류율 (error rates) 역시 증가할 것으로 예상된다. 데이터내 오류들은 상기 어레이에 첨부된 오류 정정 패리티 비트들 또는 심벌들을 사용하여 정정될 수 있다. 하지만, 헤더들내의 오류들은 오류 정정 코드들에 의해서 그것들이 보호되지 않을 수 있기 때문에 더욱 문제가 될 수 있다. 만약 헤더가 오염되고 (corrupt) 복구될 수 없으면, 그 헤더에 의해 참조되는 데이터의 전부 또는 일부가 소실될 수 있다. 얼롱-트랙 (along-track) 및 어크로스-트랙 (across-track) 보간법 (interpolation)을 사용하여 헤더 오류들을 결정 및 정정하기 위한 종래 기술은 고선형 밀도 (high linear densities) 및 트랙 밀도에서 테이프 헤더를 보호하기에는 충분하지 않다. 또한, 얼롱-트랙 및 어크로스-트랙 보간법을 허용하는 포맷은 쓰기 중 읽기 (read-while-write) 동작 동안 오류로 탐지된 (detected in error) 데이터를 다시 쓰는 (rewrite) 융통성에서 (in flexibility) 제한이 있다.
전술한 내용을 고려해 볼 때, 현재 또는 미래의 테이프 스토리지 포맷에서 헤더들을 좀 더 효과적으로 보호하기 위한 인코딩 기법 (encoding scheme)이 필요함을 알 수 있다. 좀 더 구체적으로 말하면, 다시 쓰기 융통성 (rewrite flexibility)에 제한을 일으키지 않으면서 데이터 및 헤더들 양쪽 모두에 충분한 보호를 제공하는 오류 정정 패리티 비트들 또는 심벌들을 생성하기 위한 인코딩 기법이 요구된다. 전술한 인코딩 기법은 또한 스토리지 포맷 효율을 이상적으로 유지할 것이다. 위에서 언급한 인코딩 기법을 사용하여 인코드된 데이터를 신뢰성있게 (reliably) 디코드하기 위한 디코딩 기법 (decoding scheme)이 또한 필요하다. 이상적으로는, 동적 랜덤 액세스 메모리 (dynamic random access memory (DRAM)) 오류들과 같은 오류들이 존재하는 상황에서도 인코드된 데이터를 신뢰성있게 디코드하는 그러한 디코딩 기법이 필요하다.
본 발명은 현재 이용가능한 장치 및 방법에 의하여 아직 완전히 해결되지 못한 종래 기술의 현재 상태, 특히 그것의 문제점 및 요구에 부응하여 (in response to) 개발되었다. 따라서, 본 발명은 통합된 데이터 및 헤더 보호 (integrated data and header protection)를 포함하는 인코드된 데이터를 디코드하기 위한 장치 및 방법을 제공하기 위하여 개발되었다. 본 발명의 특징 및 장점이 다음의 상세한 설명 및 부속 청구 범위로부터 더욱 명백해질 것이고, 또는 이하 설명된 발명의 실시에 의하여 알 수 있다.
전술한 내용에 따라 (Consistent with), 통합된 데이터 및 헤더 보호를 포함하는 인코드된 데이터를 디코드하기 위한 방법이 여기 설명된다. 한 실시예에서, 전술한 방법은 확장된 데이터 어레이 (an extended data array)의 수신을 포함한다. 상기 확장된 데이터 어레이는 행들과 열들로 조직된 데이터 어레이, 상기 데이터 어레이의 행들에 첨부된 헤더들, 상기 데이터 어레이의 열들을 보호하는 열 오류 정정 코드 (error correction code (ECC)) 패리티, 그리고 결합된 행들 및 헤더들을 보호하는 행 ECC 패리티를 포함한다. 그 다음 상기 방법은 상기 확장된 데이터 어레이를 디코드한다. 다른 동작들중에서, 이 디코드하는 단계는 헤더가 적법한지 (legal) 여부를 결정하기 위하여 각 행에 관련된 헤더를 첵크하는 단계를 포함한다. 만약 상기 헤더가 적법하다면, 상기 방법은 대응 행 ECC 패리티에 대한 상기 헤더의 기여 (contribution)를 결정한다. 그 다음 상기 방법은 상기 대응 행 ECC 패리티에 대한 헤더의 기여를 리버스한다 (reverses).
대응 장치 (가령, 상기-설명된 방법을 실행하도록 구성된 테이프 드라이브)가 또한 이하에서 설명되고 및 청구된다.
본 발명의 장점이 쉽게 (readily) 이해되도록 하기 위하여, 위에서 간단히 설명된 본 발명의 좀 더 특별한 설명이 부속된 도면에서 도시된 구체적인 실시예를 참조하여 제공된다. 본 도면은 오직 본 발명의 전형적인 실시예만을 설명하고 그러므로 그의 범위를 제한하는 것으로 간주되는 것이 아님을 이해하면서, 본 발명은 여기 첨부된 도면들을 사용하여 추가적인 구체성 및 상세함을 가지고서 설명될 것이다:
도 1은 데이터와 헤더 보호를 통합하는 인코딩 기법의 한 실시예를 도시하는 고-수준의 흐름 다이어그램이다;
도 2는 도 1의 인코딩 기법을 사용하여 ECC 패리티 및 헤더가 생성되어 데이터 어레이에 첨부되는 방법을 도시한다;
도 3은 데이터와 헤더 보호를 통합하는 인코딩 기법의 대체적인 (alternative) 실시예를 도시하는 고-수준의 흐름 다이어그램이다;
도 4 및 5는 도 3의 인코딩 기법을 사용하여 ECC 패리티 및 헤더가 생성되어 데이터 어레이에 첨부되는 방법을 도시한다;
도 6은 데이터 및 헤더 보호를 통합한 인코드된 데이터를 디코드하기 위한 디코딩 기법의 한 실시예를 도시하는 고-수준의 흐름 다이어그램이다;
도 7은 도 6의 디코딩 기법으로 통합하기 위한 방법의 한 실시예를 도시하는 흐름 다이어그램이다; 그리고
도 8은 인코딩 및 디코딩 프로세스들 양쪽 모두에서 사용되는 리드-솔로몬 (Reed-Solomon) 회로의 한 실시예를 도시하는 고-수준의 블록 다이어그램이다.
이하 도면에서 전반적으로 설명 및 도시된 것과 같이, 본 발명의 콤포넌트가 광범위하게 다양한 다른 구성들에서 어레인지 및 설계될 수 있다는 것이 쉽게 이해가 될 것이다. 그러므로, 도면에서 도시한 것과 같이, 다음 본 발명 실시예의 좀 더 상세한 설명은 청구된 것과 같이, 본 발명의 범위를 한정하도록 의도되지는 않지만, 본 발명에 의거하여 단지 현재 고려되는 실시예의 어떤 사례를 나타낼 뿐이다. 현재 설명되는 실시예들은 상기 도면들을 참조하여 가장 잘 이해될 것이고, 도면들에서 동일 (like) 부분들은 전체적으로 동일 번호들에 의해서 지정된다.
당업자에 의하여 이해되듯이, 본 발명은 장치, 시스템, 방법, 또는 컴퓨터 프로그램 제품으로 구현될 수 있다. 또한, 본 발명은 하드웨어 실시예, 하드웨어를 동작하기 위하여 구성된 소프트웨어 실시예 (펌웨어, 상주 (resident) 소프트웨어, 마이크로코드등을 포함) 또는 하드웨어 및 소프트웨어 엘리먼트를 결합한 실시예의 형태를 취할 수 있다. 각각의 실시예는 하나 또는 그 이상의 모듈 또는 블록에 의하여 나타내어질 수 있다. 또한, 본 발명은 컴퓨터-이용가능 프로그램 코드를 가진 어떠한 유형의 (tangible) 표현 매체에서 구현되는 컴퓨터-이용가능 저장 매체의 형태를 취할 수 있다.
하나 또는 그 이상의 컴퓨터-이용가능 또는 컴퓨터-판독가능 저장 매체의 어떠한 조합이 상기 컴퓨터 프로그램 제품을 저장하기 위하여 활용될 수 있다. 상기 컴퓨터-이용가능 또는 컴퓨터-판독가능 저장 매체는 예를 들면, 전자 (electronic), 자기 (magnetic). 광학 (optical), 전자기 (electromagnetic), 적외선 (infrared) 또는 반도체 (semiconductor) 시스템, 장치 또는 디바이스일 수 있고 이에 국한되지는 않는다 (but not limited to). 컴퓨터-판독가능 저장 매체의 좀 더 구체적인 사례 (비완전 목록 (non-exhaustive list))는 다음을 포함한다: 하나 또는 그 이상의 전선을 가진 배선 (electrical connection), 휴대용 컴퓨터 디스켓, 하드 디스크, 랜덤 액세스 메모리 (RAM), 판독-전용 메모리 (ROM), 소거 및 프로그램가능 ROM (EPROM, 또는 플래시 메모리), 광섬유 (optical fiber), 휴대용 콤팩트 디스크 판독-전용 메모리 (CDROM), 자기 저장 디바이스 또는 광학 저장 디바이스. 본 명세서의 맥락 (context)에서, 컴퓨터-이용가능 또는 컴퓨터-판독가능 저장 매체는 명령 실행 시스템, 장치 또는 디바이스와 관련하여, 또는 이들에 의한 이용을 위해 그것들과 연관된 프로그램을 보유, 저장 또는 운반할 수 있는 어떠한 형태의 매체일 수 있다.
본 발명 실시예의 동작을 수행하기 위한 컴퓨터 프로그램 코드는 하나 또는 그 이상 프로그래밍 언어의 어떤 조합으로 기록될 수 있으며, 이 언어에는 자바 (Java), 스몰토크 (Smalltalk), C++등과 같은 객체 지향형 프로그래밍 언어 (object oriented programming language) 및 “C” 프로그래밍 언어 또는 이와 유사한 프로그래밍 언어들과 같은 종래의 순차 프로그래밍 언어 (conventional procedural programming languages)를 포함한다. 본 발명을 실행하기 위한 컴퓨터 프로그램 코드는 또한 어셈블리어 (assembly language)와 같은 저-수준의 프로그래밍 언어로 기록될 수 있다.
본 발명은 본 발명의 다양한 실시예에 따라 방법의 흐름도 도시 (flowchart illustrations) 및/또는 블록 다이어그램 (block diagrams), 장치, 시스템 그리고 컴퓨터 프로그램 제품을 참조하여 설명된다. 흐름도 도시 및/또는 블록 다이어그램의 각 블록 그리고 흐름도 도시 및/또는 블록 다이어그램의 조합은 컴퓨터 프로그램 명령 또는 코드에 의하여 실행될 수 있슴을 이해할 수 있을 것이다. 이 컴퓨터 프로그램 명령들은 범용 컴퓨터의 프로세서, 특수 목적 컴퓨터, 또는 기계를 생성하는 기타 프로그램가능 데이터 처리 장치에 제공되어, 컴퓨터의 프로세서나 기타 프로그램가능 데이터 처리 장치를 통하여 실행될 때, 그러한 명령들이 흐름도 및/또는 블록 다이어그램이나 블록에 규정된 기능/작용 (acts)을 구현하는 수단을 생성하도록 한다.
컴퓨터 또는 기타 프로그램가능 데이터 처리 장치를 특정한 방식으로 기능하도록 지시하는 이 컴퓨터 프로그램 명령들은 또한 컴퓨터-판독가능 저장 매체에 저장되어, 이 컴퓨터-판독가능 저장 매체에 저장된 명령이 흐름도 및/또는 블록 다이어그램이나 블록에 규정된 기능/작용을 구현하는 명령을 포함하는 제품을 생산하도록 한다. 상기 컴퓨터 프로그램 명령은 컴퓨터 또는 기타 프로그램 가능한 데이터 처리 장치에 로드되어 (loaded) 일련의 동작 단계들이 컴퓨터 실행 프로세스를 생성하기 위하여 컴퓨터 또는 기타 프로그램가능 장치상에서 수행되도록 하고, 그렇게 하여 컴퓨터 또는 기타 프로그램가능 장치상에서 실행되는 상기 명령이 흐름도 및/또는 블록 다이어그램이나 블록에 규정된 기능/작용을 구현하는 프로세스를 제공하도록 한다.
도 2를 또한 일반적으로 참조하면서 도 1을 참조하면, 테이프 드라이브들에서 데이터와 헤더 보호를 통합하는 인코딩 기법의 한 사례를 도시하는 흐름 다이어그램이 도시된다. 도시한 것과 같이, 처리된 (가령, 암호화되거나 (encrypted) 또는 압축된) 호스트 데이터는 서브 데이터 세트들 (SDS들) (102)로 알려진 고정 유닛들로 (in fixed units) 열 ECC 인코더 (encoder) (110)에 의하여 수신된다 (도 2를 보라). 각 SDS (102)는 행과 열로 이루어진 데이터 어레이 (102)로 조직된다. 상기 데이터 어레이 (102)를 수신한 후, 상기 열 ECC 인코더 (encoder) (110)은 데이터 어레이 (102)에서 각 열을 위한 ECC 패리티 (106)을 생성하여 어레이 (102)에 상기 열 ECC 패리티 (106)을 첨부한다. 상기 확장된 어레이 (즉, 상기 SDS 데이터 (102), 및 상기 열 ECC 패리티 (106))는 DRAM 버퍼 (114)에 기록된다.
그 다음 열 첵커 (column checker) (122)가, DRAM 오류들을 포함할 수 있는, 오류들을 위해 상기 확장된 어레이의 각 열을 첵크한다. 이것은, 예를 들면, 각 열에 대한 상기 열 ECC 패리티를 재계산하여 이 열 ECC 패리티를 상기 DRAM 버퍼 (114)내에 저장된 열 ECC 패리티 (106)과 비교함으로써 성취할 수 있다. 만약 새로이 계산된 열 ECC 패리티가 상기 저장된 열 ECC 패리티 (106)과 일치한다면, 이제 상기 열은 오류가 없는 것으로 (error-free) 간주될 수 있다. 만약 새로이 계산된 열 ECC 패리티가 상기 저장된 열 ECC 패리티 (106)과 일치하지 않는다면, 이제 상기 열은 오류를 가진 것으로 간주될 수 있다. 만약 하나의 열에서 오류들이 탐지되면, 상기 저장된 열 ECC 패리티 (106)은 상기 열 ECC 패리티 (106)의 정정 능력 한도까지 (up to the corrective capability) 열내 다수의 오류들 (a number of errors)을 정정하는데 사용될 수 있다.
그 다음 멀티플렉서 (112)는 헤더들 (108)을 상기 어레이 (102)의 행들에 첨부한다. 상기 헤더들 (108)의 위치는 임의적인데 (arbitrary), 이는 상기 헤더들 (108)이 각 행의 시작에, 또는 각 행의 끝에 위치하거나, 또는 각 행에 인터리브되거나 또는 이와 유사하게 처리될 수 있슴을 의미한다. 그 다음 상기 확장된 어레이 (즉, 상기 SDS 데이터 (102), 헤더들 (108), 및 열 ECC 패리티 (106))는 행 ECC 인코더 (116)에 보내지는데, 이 행 ECC 인코더 (116)은 (상기 SDS 데이터 (102), 열 ECC 패리티 (106), 및 헤더들 (108)을 포함하는) 각 행을 위해 ECC 패리티 (104)를 생성하여 상기 확장된 어레이에 상기 ECC 패리티 (104)를 첨부한다. 그리하여, 상기 행 ECC 인코더 (116)은 조합된 SDS 데이터 (102), 열 ECC 패리티 (106) 및 헤더 들(108)을 위해 행 ECC 패리티 (104)를 생성한다. 이것은 본질적으로 상기 SDS 데이터 (102)에 2차원적 보호를 제공하며 (즉, 행과 열 ECC 패리티 (104), (106) 모두를 제공함으로써), 한편으로 상기 헤더들 (108)에는 1차원적 보호를 제공한다 (즉, 행 ECC 패리티 (104)만을 제공함으로써). 이 기법은 상기 헤더들 (108)에 충분한 ECC 보호를 제공하면서 포맷의 효율을 유지한다. 상기 확장된 어레이는 DRAM 버퍼 (118)에 기록되는데, 이 버퍼는 상기 DRAM 버퍼 (114)와 같을 수도 또는 다를 수도 있다.
일단 상기 확장된 어레이가 DRAM 버퍼 (118)에 기록되면, 행 첵커 (row checker) (120)은, DRAM 오류들을 포함할 수 있는, 오류들을 위해 상기 확장된 어레이의 각 행을 첵크한다. 이것은, 예를 들면, 각 행에 대한 상기 행 ECC 패리티를 재계산하고 이 행 ECC 패리티를 상기 DRAM 버퍼 (118)내에 저장된 행 ECC 패리티 (104)와 비교함으로써 성취할 수 있다. 만약 새로이 계산된 행 ECC 패리티가 상기 저장된 행 ECC 패리티 (104)와 일치한다면, 이제 상기 행은 오류가 없는 것으로 간주될 수 있다. 만약 새로이 계산된 행 ECC 패리티가 상기 저장된 행 ECC 패리티 (104)와 일치하지 않는다면, 이제 상기 행은 오류를 가진 것으로 간주될 수 있다. 만약 상기 행에서 오류가 탐지되면, 상기 저장된 행 ECC 패리티 (104)가 상기 행 ECC 패리티 (104)의 정정 능력 한도까지 행내 다수의 오류들을 정정하는데 사용될 수 있다.
데이터 및 헤더 보호 통합의 효과를 도시하기 위하여, 상기 SDS 데이터 (102) 및 헤더들 (108)이 위에서 설명된 방식으로 보호되는 것으로 가정한다. 만약 상기 SDS 데이터 (102), 행 ECC 패리티 (104), 열 ECC 패리티 (106) 및 헤더들 (108)이 테이프에 기록되고 기록 중 판독 (read-while-write) 동안에 헤더 (108)내에서 오류가 탐지된다면, 열 ECC 패리티 (106), 행 ECC 패리티 (104) 및 헤더들 (108)은 상기 자기 매체에 재기록될 수 있다. 하지만, 상기 헤더들 (108) 및 행 ECC 패리티 (104)는 그 안에 포함된 어드레싱 및 메타데이터 (metadata)를 업데이트하기 위하여 다시 쓰기를 수행하기전에 수정될 필요가 있을 수 있다. 상기 데이터 (102) 및 열 ECC 패리티 (106)는, 다른 한편으로는, 변경되지 않은 채로 남아 있을 수 있다 (remain unchanged). 상기 헤더들 (108)은 1차원적 ECC 패리티에 의하여 보호되므로 (즉, 행 ECC 패리티 (104)에만 의하여 보호되므로), 행과 열 ECC 패리티 (104), (106) 모두를 재계산 (recompute)할 필요 없이 (as opposed to), 행 ECC 패리티 (104)만 상기 업데이트된 헤더들 (108)을 위해 재계산되면 된다. 다시 말하면, 헤더들 (108)이 변경된 그 행들을 위한 행 ECC 패리티 (104)만 재계산되면 된다. 그러므로, 상기 헤더들 (108)을 1차원적 ECC 보호로 보호하면 포맷 효율도 유지하면서 상기 헤더들 (108)에 적절한 보호를 제공해 준다.
일부 실시예들에서, 상기 SDS 어레이 (102)의 각 행은 다수 인터리브된 데이터 워드들로 구성될 수 있다. 한 예로서, 상기 SDS 어레이 (102)의 각 행은 각각 234 바이트로 된 네개의 인터리브된 데이터 워드를 포함할 수 있는데, 이는 각 행을 936 바이트의 길이로 만든다. 상기 데이터 워드들은 바이트-바이-바이트 (a byte-by-byte) 또는 기타 적절한 기반상에서 인터리브될 수 있다. 유사하게, 상기 행들과 연관된 행 ECC 패리티 (104) 및 헤더들 (108) 또한 인터리브될 수 있다. 예를 들면, 각각 3 바이트로 된 네개의 인터리브된 헤더들 (108) (상기 행내에서 각 데이터 워드당 하나)은 상기 어레이 (102)내 각 행과 연관될 수 있고, 이는 헤더들 (108)의 각 행을 12 바이트의 길이로 만든다. 상기 헤더들 (108)은 바이트-바이-바이트 또는 기타 적절한 기반상에서 인터리브될 수 있다. 유사하게, 각각 12 바이트로 된 네개의 인터리브된 행 ECC 패리티 비트들 또는 심벌들 (104) (상기 행내에서 각 데이터 워드당 하나)은 상기 어레이 (102)내 각 행과 연관될 수 있으며, 이는 ECC 패리티 코드들 (104)의 각 행을 48 바이트의 길이로 만든다. 상기 행 ECC 패리티 코드들 (104)는 바이트-바이-바이트 또는 기타 적절한 기반상에서 인터리브될 수 있다. 위에서 제공된 수들을 사용하면, 각 행 (상기 헤더들 (108), 상기 SDS 데이터 (102) 및 상기 행 ECC 패리티 (104)를 포함하는)은 996 바이트의 길이가 될 것이다. 이들 수들은 예로서만 제공되며 이에 한정되지는 않는다. 또한, 인터리빙은 모든 실시예에서 반드시 사용되는 것은 아니다.
위에서 제공된 수들 (즉, 각 데이터 워드 (102)에 대해 234 바이트, 각 헤더 (108)에 대해 3 바이트 및 행 ECC 패리티 (104)에 대해 12 바이트)을 사용하면, 조합된 헤더 (108) 및 데이터 워드 (102)의 5 바이트까지는 12 바이트의 행 ECC 패리티 (104)를 사용하여 정정될 수 있음을 본 발명자는 확인하였다. 또한, 상기 헤더 (108)내 모든 3 바이트들도 12 바이트의 행 ECC 패리티 (104)를 사용하여 정정될 수 있다. 만일 데이터가 인터리브되면, 1 바이트의 오류 정정 기능 (capability)의 마진이 오정정 확률 (miscorrection probability)을 줄이기 위해 사용된다고 가정할 때 12개의 연속적인 인터리브된 바이트까지 정정될 수 있다. 간단히 말해서, 데이터 및 헤더 보호를 통합하는 것이 상기 헤더 (108) 및 데이터 (102)를 ECC 패리티로 독립적으로 보호하는 것보다 더욱 더 효율적이다.
도 4 및 도 5를 또한 전반적으로 참조하면서 도 3을 참조하면, 데이터 및 헤더 보호를 통합하는 인코딩 기법의 한 대체적인 실시예가 도시된다. 이 실시예에서, SDS 어레이 (102)를 수신하면, 행 ECC 인코더 (116a)는 상기 SDS 어레이 (102)를 위해 행 ECC 패리티 (104a)를 생성하고 이를, 도 4에서 도시한 것과 같이, 상기 어레이 (102)에 첨부한다. 상기 확장된 어레이는 DRAM 버퍼 (114)에 기록된다. 그 다음 열 ECC 인코더 (110)은 상기 SDS 어레이 (102)내의 각 열을 위해 ECC 패리티 (106)을 생성하고 (상기 행 ECC 패리티 (104)를 포함) 상기 어레이 (102)에 상기 열 ECC 패리티 (106)을, 도 4에서 더 도시한 것과 같이, 첨부한다. 이 확장된 어레이는 DRAM 버퍼 (118)에 기록되며, 이 DRAM 버퍼 (118)은 상기 DRAM 버퍼 (114)와 동일한 것 또는 다른 것일 수 있다. 일단 상기 확장된 어레이가 DRAM 버퍼 (118)에 기록되면, 행 첵커 (120)은 오류들을 위해 상기 확장된 어레이의 각 행을 첵크한다. 만약 오류가 발견되면, 상기 행 첵커 (120)은 상기 행 ECC 패리티 (104a)의 정정 능력 한도까지 오류를 정정한다.
그 다음 멀티플렉서 (112)는, 도 5에서 도시한 것과 같이, 헤더들 (108)을 상기 행들에 첨부한다. 그 다음 상기 확장된 어레이 (102) (즉, 상기 SDS 데이터 (102), 헤더들 (108), 열 ECC 패리티 (106) 및 행 ECC 패리티 (104))는 동일 또는 다른 행 ECC 인코더 (116b)에 보내져서 각각의 행을 위해 상기 행 ECC 패리티 (104a)를 업데이트할 수 있는데, 그 결과 이제 헤더 (108)을 포함하게 된다. 이것은 도 5에 도시된 업데이트된 행 ECC 패리티 (104b)를 산출한다. 이런 식으로, 2차원적 ECC보호가 상기 SDS 데이터 (102)에 제공되며 1차원적 ECC 보호가 상기 헤더들 (108)에 제공된다. 도 1에서 도시된 것과는 대조적으로, 도 3에서 도시된 인코딩 기법을 사용하는 것의 한가지 잠재적인 장점은 종래의 ECC 인코딩 하드웨어를 사용하는 인코딩 기법을 구현하는 것이 더 용이해질 수 있다는 것이다. 또한, 도 3에서는 DRAM 오류를 탐지 및 정정하기 위하여 오직 하나의 행 첵커를 갖는 것만으로도 충분하지만, 한편 도 1에서는 DRAM 오류를 탐지 및 정정하기 위하여 하나의 열 첵커 및 하나의 행 첵커가 요구된다. 그럼에도 불구하고, 다른 인코딩 기법 및 수반되는 하드웨어도 또한 위에서 설명된 방식으로 데이터 및 헤더 보호를 통합할 수가 있다. 전술한 인코딩 기법 및 수반되는 하드웨어는 본 발명의 범위내 포함되는 것으로 의도된다.
도 6을 참조하면, 데이터 및 헤더 보호를 통합한 인코드된 데이터를 디코드하기 위한 디코딩 기법의 한 실시예가 도시된다. 도시한 바와 같이, 테이프상 저장된 인코드된 데이터 (가령, 도 5에 도시된 상기 확장된 데이터 어레이)가 행 ECC 디코더 (600)에 의하여 수신된다. 상기 확장된 데이터 어레이내에서 행 ECC 패리티 (104b)를 사용하여, 상기 행 ECC 디코더 (600)은 상기 행 ECC 패리티 (104b)의 정정 능력 한도까지 행들 (상기 SDS 데이터 (102), 열 ECC 패리티 (106) 및 헤더들 (108) 모두를 포함하는)내의 오류들을 정정한다.
상기 행 ECC 디코더 (600)이 확장된 데이터 어레이의 행을 디코드하면, 헤더 첵커 (602)는 헤더가 적법한지 여부를 결정하기 위하여 행과 관련된 헤더 (108)을 첵크한다. 예를 들면, 상기 헤더 첵커 (602)는 상기 헤더 (108)이 오류를 포함하는지, 그래서 적법하지 않은지 여부를 결정하기 위하여 상기 헤더 (108)과 관련된 CRC 또는 기타 오류 탐지 코드를 첵크할 수 있다. 이와 달리 (Alternatively), 또는 추가적으로, 상기 헤더 첵커 (602)는 내용이 적법한지를 결정하기 위하여 헤더 (108)의 내용을 첵크할 수 있다. 예를 들면, 헤더(108)내의 특정 비트들 또는 비트들의 그룹이 가질 수 있는 어떠한 값 또는 값의 범위를 정의하는 규칙이 설정될 수 있다. 만일 상기 비트들 또는 비트들의 그룹 (즉, 상기 헤더 (108)의 내용)이 이들 규칙들을 준수한다면 (comply with) 헤더 (108)은 적법한 것으로 간주될 수 있다 (deemed). 만일 상기 비트들 또는 비트들의 그룹이 이들 규칙들을 준수하지 않는다면 상기 헤더 (108)은 적법하지 않은 것으로 간주될 수 있다.
만약 헤더 (108)이 적법하다면, 헤더 행 패리티 제너레이터 (generator) (604)는 상기 헤더 (108)과 연관된 행 패리티를 계산한다. 이 헤더 행 ECC 패리티를 계산하는 한 방법을 도 8을 참조하여 설명한다. 이 계산은 헤더 (108)이 행 ECC 패리티 (104b)에 미치는 영향을 결정한다. 다른 말로 말하면 (Stated otherwise), 상기 헤더 행 패리티 제너레이터 (generator) (604)는 상기 행 ECC 패리티 (104b)에 대한 헤더 (108)의 기여를 결정한다. 일단 상기 헤더 행 ECC 패리티가 계산되면, 상기 헤더 행 ECC 패리티는 상기 행 ECC디코더 (600)의 출력 (output)에서 (비트-바이-비트 XOR을 사용하여) 상기 행 ECC 패리티 (104b)에 추가되고 상기 행 ECC 패리티 (104b)에 대한 상기 헤더 (108)의 기여를 리버스한다. 다시 말해, 도 4 및 5를 예로서 사용하여 설명하면, 도 5에 도시된, 상기 업데이트된 행 ECC 패리티 (104b)는 도 4에 도시된 원래의 (original) 행 ECC 패리티 (104a)로 복귀될 것이다 (reverted).
일단 상기 헤더들 (108)의 기여가 상기 행 ECC 패리티 (104b)로부터 리버스되면, 헤더 스트리퍼 (stripper) (606)은 상기 확장된 데이터 어레이로부터 헤더들 (108)을 벗겨낸다 (strip). 이것은 도 4에서 도시된 것과 같은 확장된 데이터 어레이를 산출할 것이다. 이 확장된 데이터 어레이는 DRAM 버퍼 (608)에 기록된다. 상기 행 ECC 패리티 (104b)에 의하여 정정되기에는 너무 많은 오류들을 포함하는 행들 또는 적법하지 않은 헤더들 (108)을 포함하는 행들은 상기 DRAM 버퍼 (608)로 전송되지 않는다. 그 다음 상기 확장된 데이터 어레이는 열 ECC 디코더 (610)로 보내진다. 상기 열 ECC 패리티 (106)을 사용하여, 상기 열 ECC 디코더 (610)은 상기 열 ECC 패리티 (106)의 정정 한도까지 모든 미싱 (any missing) 행들을 재구축한다 (reconstructs). 상기 정정되고 확장된 데이터 어레이는 DRAM 버퍼 (612)에 기록되는데, DRAM 버퍼 (612)는 상기 DRAM 버퍼 (608)과 동일 또는 다른 버퍼일 수 있다. 그 다음 상기 행 ECC 패리티 (104a)를 사용하여, 행 첵커 (614)는 DRAM 오류와 같은, 오류를 위해 상기 확장된 데이터 어레이를 첵크하고, 그곳에서 발견된 모든 오류들을 정정한다. 그 다음 상기 정정된 (즉, 디코드된) SDS 데이터 (102)는 호스트 디바이스에 보내질 수 있다.
도 6에서 도시된 상기 디코딩 기법은 예로서만 제시된 것이고 그것에 한정되지 않음을 인식해야 한다. 다른 실시예들에서, 도 6에서 도시된 기능적 블록은 다르게 조직되거나 또는 구성된다. 예를 들면, 일부 실시예들에서, 상기 디코딩 기법은 열 ECC 디코딩이 행 ECC 디코딩이전에 수행되도록 재조직된다. 기타 변형 또는 수정이 또한 가능하다. 그러므로, 도 6에서 도시된 상기 디코딩 기법은 오직 예로서만 제시된 것이고 그것에 한정되지 않는다.
도 7을 참조하면, 도 6의 디코딩 기법에 통합하기 위한 방법 (700)의 한 실시예를 도시하는 흐름 다이어그램이 도시된다. 전술한 방법 (700)은 상기 확장된 데이터 어레이내에서 각 행에 대하여 수행될 수 있다. 도시한 바와 같이, 상기 방법 (700)은 초기에는 행내의 코드 워드들을 디코드하고 (702) 연관된 행 ECC 패리티 (104b)를 사용하여 상기 행내의 오류들을 정정한다 (702). 만약 필요하다면, 상기 방법 (700)은 하나의 완전한 헤더 (108) (가령, 12-바이트 헤더 (108))을 얻기 위하여 헤더 조각들 (fragments) (가령, 행내의 데이터 워드들과 연관된 상기 3-바이트 헤더들 (108))을 연결한다 (concatenates) (704). 그 다음 상기 방법 (700)은 상기 헤더 (108)이 적법한지 여부를 결정한다. 이것은 상기 헤더가 오류를 포함하는지 여부를 결정하기 위하여 CRC 또는 상기 헤더 (108)과 연관된 기타 오류 탐지 코드를 첵크하는 단계 (706)를 포함할 수 있다. 만약 헤더가 오류를 포함한다면, 단계 (708)에서 반영된 것과 같이, 상기 행은 수정되지 않거나 또는 상기 DRAM 버퍼 (608)로 전송된다. 상기 헤더 (108)이 적법인지 여부를 결정하는 것은 상기 헤더 (108)의 내용이 적법인지 여부를 결정하는 (710) 것을 또한 포함할 수 있다. 이것은 상기 헤더 (108)내 다양한 필드들 (즉, 비트들 또는 비트들의 그룹)이 허용된 값을 포함하는지 또는 그것이 허용된 값의 범위내에 있는지 여부를 결정하는 것을 포함할 수 있다. 만약 헤더 내용의 전부 또는 일부가 적법하지 않다면, 단계 (708)에서 반영된 것과 같이, 헤더 (108)과 연관된 상기 행은 수정되지 않거나 또는 상기 DRAM 버퍼 (608)로 전송되지 않는다.
상기 헤더 (108)이 적법인 경우, 상기 방법 (700)은 상기 행 ECC 패리티 (104b)에 대한 상기 헤더 (108)의 기여를 리버스하기 위해 상기 행 ECC 패리티 (104b)를 수정한다 (modifies). 이전에 언급된 것과 같이, 이것은 상기 헤더만을 위한 상기 행 ECC 패리티를 계산하고, 그 다음 상기 헤더 (108)의 기여를 제거하기 위하여 상기 헤더 행 ECC 패리티를 (비트-바이-비트 XOR을 사용하여) 상기 행 ECC 패리티 (104b)에 추가함으로써 달성될 수 있다. 이것은 상기 행 ECC 패리티 (104b)를 수정하게 되는데, 이는 데이터 (102) 및 헤더 (108) 모두를 보호하는 것이 아니라, 상기 데이터 (102)만을 보호한다. 그 다음 상기 방법 (700)은 헤더 (108)을 벗겨내어 (strips off) (714) 수정된 행 ECC 패리티 (104a)를 가진 수정된 행을 상기 DRAM 버퍼 (608)에 저장한다 (714). 이전에 언급된 것과 같이, 적법이 아닌 헤더들 (108)을 갖고 있거나 또는 상기 행 ECC 패리티 (104b)에 의하여 정정되기에는 너무 많은 오류들을 갖고 있기 때문에 상기 DRAM 버퍼 (608)로 전송되지 않는 행들을 재구축하는데 상기 열 ECC 패리티 (106)이 사용될 수 있다.
도 8을 참조하면, 리드-솔로몬 회로 (800)의 한 실시예가 도시된다. 전술한 회로 (800)은 인코딩 및 디코딩 프로세스들 양쪽 모두에서 사용될 수 있다. 예를 들면, 상기 회로 (800)은 인코딩 프로세스 동안 데이터 (102) 및 헤더들 (108)을 위한 상기 행 ECC 패리티 (104b)를 계산하는데 사용될 수 있다. 상기 회로 (800)은 또한 디코딩 프로세스동안 상기 행 ECC 패리티 (104b)에 대한 헤더들 (108)의 기여를 계산하는데 사용될 수 있다. 도시한 바와 같이, 상기 인코더 회로 (800)은 다수의 레지스터 (802)를 포함하는데, 이 예에서는 12개의 레지스터 (802) (R0, Rl, . . . , R11라는 라벨이 달린)를 포함하며, 이들 각각은 데이터의 바이트와 같은 심벌을 저장한다. 상기 레지스터 (802)는 피드백 (feedback)을 갖고 순차적으로 (sequentially) 접속된다. 상기 인코더 회로 (800)은 또한 11개의 승산기들 (multipliers) (804) (각각은 어떤 거듭제곱 n에 이르는 α로서 표현됨)를 포함하는데 이것은 도시된 방식으로 상기 레지스터 (802)와 상호작용한다. 상기 승산기들 (804)의 각각은 입력값을 어떤 고정값인 αn로 곱한다. 산출 결과 (product)는 레지스터값에 더해지고 다음 레지스터에 저장된다.
통합된 헤더 인코딩이 상기 인코딩 회로에 처음 입력되는 (fed into) 데이터 바이트들에 기초하는 경우에 디코딩 프로세스 동안 상기 행 ECC 패리티 (104b)에 대한 헤더 (108)의 기여를 결정하기 위하여, 상기 레지스터 (802)의 값은 0으로 초기화될 수 있다 (initialized). 그 다음 234-바이트의 데이터 워드와 연관된 상기 3-바이트의 헤더 (108)은, 순차적으로, 바이트-바이-바이트로, 상기 회로 (800)에 입력된다. 일단 이들 바이트들이 상기 회로 (800)에 입력되면 (이것은 3 클록 주기 (clock cycles)가 걸린다), 상기 12개의 레지스터들 (802)는 상기 행 ECC 패리티 (104b)에 대한 3-바이트의 헤더 (108)의 기여를 표시하는 12개의 ECC 패리티 바이트를 포함할 것이다. 그 다음 상기 헤더 기여는 (비트-바이-비트 XOR을 사용하여) 상기 행 ECC 패리티 (104b)에 추가될 수 있다. 이것은 상기 행 ECC 패리티 (104b)를 수정하게 되는데 그렇게 하여 조합된 데이터 (102) (또는 상기 열 ECC 패리티 (106)) 및 헤더 (108)가 아니라 상기 데이터 (102) (또는 상기 열 ECC 패리티 (106))만을 보호한다.
통합된 헤더 인코딩이 상기 인코딩 회로에 처음 입력되는 헤더 바이트들에 기초하는 경우에 디코딩 프로세스 동안 상기 행 ECC 패리티 (104b)에 대한 헤더 (108)의 기여를 결정하기 위하여, 상기 레지스터 (802)의 값은 0으로 초기화 될 수 있다. 그 다음 234-바이트의 데이터 워드와 연관된 상기 3-바이트의 헤더 (108)은, 순차적으로, 바이트-바이-바이트로, 상기 회로 (800)에 입력되고, 그 다음 234 0 바이트들이 뒤따른다. 일단 이들 바이트들이 상기 회로 (800)에 입력되면 (이것은 237 클록 주기가 걸린다), 상기 12개의 레지스터들 (802)는 상기 행 ECC 패리티 (104b)에 대한 3-바이트의 헤더 (108)의 기여를 표시하는 12개의 ECC 패리티 바이트들을 포함할 것이다. 그 다음 상기 헤더 기여는 (비트-바이-비트 XOR을 사용하여) 상기 행 ECC 패리티 (104b)에 추가될 수 있다. 이것은 상기 행 ECC 패리티 (104b)를 수정하게 되는데 그렇게 하여 조합된 데이터 (102) (또는 상기 열 ECC 패리티 (106)) 및 헤더 (108)가 아니라, 상기 데이터 (102) (또는 상기 열 ECC 패리티 (106))만을 보호한다.
상기 도면들에서 흐름도와 블록 다이어그램은 본 발명의 다양한 실시예들에 따른 시스템, 방법 및 컴퓨터-이용가능 매체의 가능한 구현들의 아키텍처, 기능, 및 동작을 도시한다. 이와 관련하여, 흐름도와 블록 다이어그램내의 각 블록은 모듈, 세그먼트 (segment), 또는 코드의 부분을 표시할 수 있는데, 이는 지정된 논리적 기능(들)을 구현하는 하나 또는 그 이상의 실행가능한 명령들을 포함한다. 어떤 다른 실시예들에서, 블록에서 표시된 기능들은 상기 도면에서 표시된 순서와 다르게 (out of the order) 발생할 (occur) 수도 있슴을 이해하여야 한다. 예를 들면, 연속으로 도시된 두 개의 블록들이, 실제로는, 동시에 실질적으로 실행될 수도 있고, 또는 블록들은 관련 기능에 따라 때때로 역순으로 실행될 수도 있다. 블록 다이어그램의 각 블록 및/또는 흐름도 도시, 그리고 블록 다이어그램들에서 블록들 및/또는 흐름도 도시의 조합은 특수 목적 하드웨어와 컴퓨터 명령들 조합의 지시된 기능 또는 동작, 또는 조합들을 수행하는 특수 목적 하드웨어-기반 시스템에 의하여 구현될 수 있다.

Claims (20)

  1. 통합된 데이터 및 헤더 보호를 포함하는 인코드된 데이터를 디코드하는 방법에 있어서, 상기 방법은:
    확장된 데이터 어레이를 수신하는 단계 - 상기 확장된 데이터 어레이는 행들과 열들로 조직된 데이터 어레이, 상기 데이터 어레이의 행들에 첨부된 헤더들, 상기 데이터 어레이의 열들을 보호하는 열 ECC 패리티, 및 조합된 행들과 헤더들을 보호하는 행 ECC 패리티를 포함함 -;
    상기 확장된 데이터 어레이를 디코드하는 단계를 포함하되, 상기 확장된 데이터 어레이를 디코드하는 단계는:
    상기 헤더가 적법한지를 (legal) 결정하기 위하여 각 행과 연관된 헤더를 첵크하는 단계;
    만약 상기 헤더가 적법이면, 상기 대응 행 ECC 패리티에 대한 상기 헤더의 기여를 결정하는 단계; 그리고
    상기 대응 행 ECC 패리티에 대한 상기 헤더의 기여를 리버스하는 단계를 포함하는
    방법.
  2. 제 1항에 있어서, 상기 확장된 데이터 어레이를 디코드하는 단계는 상기 행으로부터 상기 헤더를 벗겨내는 단계 (stripping)를 더 포함하는
    방법.
  3. 제 1항에 있어서, 상기 헤더를 첵크하는 단계는 상기 헤더의 내용 (content)을 첵크하는 단계를 포함하는
    방법.
  4. 제 1항에 있어서, 상기 헤더를 첵크하는 단계는 상기 헤더에 관하여 순환 리던던시 첵크를 수행하는 단계를 포함하는
    방법.
  5. 제 1항에 있어서, 만약 헤더가 적법하면 (legal), 상기 행을 DRAM 버퍼에 전송하는 단계를 더 포함하는
    방법.
  6. 제 5항에 있어서, 만약 헤더가 적법이 아니라면 (not legal), 상기 행을 DRAM 버퍼에 전송하지 않는 단계를 더 포함하는
    방법.
  7. 제 1항에 있어서, 상기 대응 행 ECC 패리티에 대한 상기 헤더의 기여를 리버스하는 단계는 상기 헤더와 연관된 헤더 행 ECC 패리티를 생성하는 단계, 그리고 상기 헤더 행 ECC 패리티를 상기 대응 행 ECC 패리티에 추가하는 단계를 포함하는
    방법.
  8. 제 1항에 있어서, 상기 데이터 어레이는 어레이 포맷 (an array format)으로 조직된 서브 데이터 세트 (SDS)인
    방법.
  9. 제 1항에 있어서, 상기 행 ECC 패리티 및 열 ECC 패리티는 리드-솔로몬 패리티 (Reed-Solomon parity)를 포함하는
    방법.
  10. 제 1항에 있어서, 각 행은 적어도 한 데이터 워드를 포함하는
    방법.
  11. 통합된 데이터 및 헤더 보호를 포함하는 인코드된 데이터를 디코드하기 위한 테이프 드라이브에 있어서, 상기 테이프 드라이브는:
    확장된 데이터 어레이를 수신하는 디코더 - 상기 확장된 데이터 어레이는 행들과 열들로 조직된 데이터 어레이, 상기 데이터 어레이의 행들에 첨부된 헤더들, 상기 데이터 어레이의 열들을 보호하는 열 ECC 패리티, 및 조합된 행들과 헤더들을 보호하는 행 ECC 패리티를 포함함 -;
    상기 확장된 데이터 어레이를 디코드하도록 구성된 디코더를 포함하되, 상기 확장된 데이터 어레이를 디코드하는 것은:
    상기 헤더가 적법한지를 (legal) 결정하기 위하여 각 행과 연관된 헤더를 첵크하는 단계;
    만약 상기 헤더가 적법이면, 상기 대응 행 ECC 패리티에 대한 상기 헤더의 기여를 결정하는 단계; 그리고
    상기 대응 행 ECC 패리티에 대한 상기 헤더의 기여를 리버스하는 단계를 포함하는
    테이프 드라이브.
  12. 제 11항에 있어서, 상기 확장된 데이터 어레이를 디코드하는 것은 행으로부터 상기 헤더를 벗겨내는 단계를 더 포함하는
    테이프 드라이브.
  13. 제 11항에 있어서, 상기 헤더를 첵크하는 단계는 상기 헤더의 내용을 첵크하는 단계를 포함하는
    테이프 드라이브.
  14. 제 11항에 있어서, 상기 헤더를 첵크하는 단계는 상기 헤더에 관하여 순환 리던던시 첵크들을 수행하는 단계를 포함하는
    테이프 드라이브.
  15. 제 11항에 있어서, 만약 상기 헤더가 적법이면 상기 디코더는 상기 행을 DRAM 버퍼로 전송하도록 더 구성된
    테이프 드라이브.
  16. 제 15항에 있어서, 만약 상기 헤더가 적법이 아니라면 상기 디코더는 상기 행을 DRAM 버퍼로 전송하지 않도록 더 구성된
    테이프 드라이브.
  17. 제 11항에 있어서, 상기 대응 행 ECC 패리티에 대한 상기 헤더의 기여를 리버스하는 단계는 상기 헤더와 연관된 헤더 행 ECC 패리티를 생성하는 단계, 그리고 상기 헤더 행 ECC 패리티를 상기 대응 행 ECC 패리티에 추가하는 단계를 포함하는
    테이프 드라이브.
  18. 제 11항에 있어서, 상기 데이터 어레이는 어레이 포맷으로 조직된 서브 데이터 세트 (SDS)인
    테이프 드라이브.
  19. 제 11항에 있어서, 상기 행 ECC 패리티 및 열 ECC 패리티는 리드-솔로몬 패리티를 포함하는
    테이프 드라이브.
  20. 제 11항에 있어서, 각 행은 적어도 한 데이터 워드를 포함하는
    테이프 드라이브.
KR1020137013244A 2010-12-01 2011-10-14 통합된 데이터 및 헤더 보호를 포함하는 인코드된 데이터의 디코딩 KR101531774B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/957,651 US8762805B2 (en) 2010-12-01 2010-12-01 Decoding encoded data containing integrated data and header protection
US12/957,651 2010-12-01
PCT/EP2011/068006 WO2012072330A1 (en) 2010-12-01 2011-10-14 Decoding encoded data containing integrated data and header protection

Publications (2)

Publication Number Publication Date
KR20130112897A true KR20130112897A (ko) 2013-10-14
KR101531774B1 KR101531774B1 (ko) 2015-06-25

Family

ID=44910185

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020137013244A KR101531774B1 (ko) 2010-12-01 2011-10-14 통합된 데이터 및 헤더 보호를 포함하는 인코드된 데이터의 디코딩

Country Status (6)

Country Link
US (1) US8762805B2 (ko)
EP (1) EP2646914B1 (ko)
JP (1) JP5363686B2 (ko)
KR (1) KR101531774B1 (ko)
CN (1) CN103238139B (ko)
WO (1) WO2012072330A1 (ko)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8869011B2 (en) * 2013-01-03 2014-10-21 International Business Machines Corporation Unequal error protection scheme for headerized sub data sets
US9455745B2 (en) * 2013-02-21 2016-09-27 Microsoft Technology Licensing, Llc Encoding with integrated error-detection
US9064541B2 (en) 2013-08-26 2015-06-23 International Business Machines Corporation Tape header format having efficient and robust codeword interleave designation (CWID) protection
US9712188B2 (en) 2015-05-04 2017-07-18 International Business Machines Corporation Decoding data stored with three orthogonal codewords
US9606868B2 (en) 2015-05-04 2017-03-28 International Business Machines Corporation Encoding and writing of data on multitrack tape
JP6479638B2 (ja) * 2015-12-09 2019-03-06 株式会社東芝 ビデオサーバ装置およびデータ書き込み/読み出し方法
KR102557993B1 (ko) * 2018-10-02 2023-07-20 삼성전자주식회사 메모리 이용 효율을 향상한 보안 처리기를 포함하는 시스템 온 칩, 메모리 시스템 및 시스템 온 칩의 동작방법
KR20200140074A (ko) 2019-06-05 2020-12-15 에스케이하이닉스 주식회사 휘발성 메모리 장치 및 이의 동작 방법
KR20210045875A (ko) * 2019-10-17 2021-04-27 에스케이하이닉스 주식회사 복수의 에러 정정 레벨들을 위한 패리티 생성 로직, 이를 포함하는 메모리 컨트로러 및 메모리 모듈, 및 패리티 생성 방법
US11657889B2 (en) * 2020-03-23 2023-05-23 Intel Corporation Error correction for dynamic data in a memory that is row addressable and column addressable
CN113238799B (zh) * 2021-04-07 2022-06-28 南京交通职业技术学院 一种用于智能汽车的车载芯片安全防护系统及方法
US11967342B2 (en) 2022-09-14 2024-04-23 International Business Machines Corporation Header decoding mechanism for tape storage

Family Cites Families (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US543857A (en) * 1895-08-06 Twine-holder
JPS55122213A (en) 1979-03-08 1980-09-19 Nec Corp Error detection system of magnetic tape unit
JPS6346660A (ja) 1986-08-13 1988-02-27 Nec Corp 磁気テ−プ媒体へのデ−タ書込み誤り防止方式
JP2576512B2 (ja) 1987-06-29 1997-01-29 ソニー株式会社 デ−タレコ−ダ
US5438573A (en) 1991-09-13 1995-08-01 Sundisk Corporation Flash EEPROM array data and header file structure
US5369532A (en) 1991-11-12 1994-11-29 Storage Technology Corporation Method and apparatus for managing data on rewritable media to define read/write operational status
US5369641A (en) 1991-11-12 1994-11-29 Storage Technology Corporation Method and apparatus for detecting and correcting errors in data on magnetic tape media
US5375127A (en) 1992-03-25 1994-12-20 Ncr Corporation Method and apparatus for generating Reed-Soloman error correcting code across multiple word boundaries
US5978958A (en) * 1995-04-03 1999-11-02 Matsushita Electric Industrial Co., Ltd. Data transmission system, data recording and reproducing apparatus and recording medium each having data structure of error correcting code
DE69624059T2 (de) 1995-04-03 2003-08-14 Matsushita Electric Ind Co Ltd Datenubertragungsvorrichtung, datenaufzeichnungs- und wiedergabegerat sowie aufzeichnungsmedium beide mit datenstruktur fur fehlerkorrekturkode
EP0916134A1 (en) 1997-05-30 1999-05-19 C-Dilla Method for copy protecting a record carrier, copy protected record carrier and means for detecting access control information
EP0935363A4 (en) * 1997-06-19 2005-09-07 Toshiba Kk TRANSMISSION SYSTEM WITH INFORMATION MULTIPLEXING, MULTIPLEXER AND DEMULTIPLEXER USED FOR THE SAME, AND ENCODER AND DECODER FOR ERROR CORRECTION
US5946328A (en) 1997-11-17 1999-08-31 International Business Machines Corporation Method and means for efficient error detection and correction in long byte strings using integrated interleaved Reed-Solomon codewords
JP3775154B2 (ja) 1999-04-08 2006-05-17 日本ビクター株式会社 情報記録方法、記録装置、記録再生方法、再生装置及び記録媒体
JP2002074862A (ja) 2000-08-25 2002-03-15 Toshiba Corp データ処理方法及び装置及び記録媒体及び再生方法及び装置
TW569188B (en) 2001-02-07 2004-01-01 Media Tek Inc Method and apparatus for error processing in optical disk memories
US6978414B2 (en) 2001-07-17 2005-12-20 Hewlett-Packard Development Company, L.P. Method and apparatus for protecting against errors occurring in data storage device buffers
US6903887B2 (en) 2002-01-03 2005-06-07 International Business Machines Corporation Multiple level (ML), integrated sector format (ISF), error correction code (ECC) encoding and decoding processes for data storage or communication devices and systems
KR20040093499A (ko) 2002-04-05 2004-11-05 코닌클리케 필립스 일렉트로닉스 엔.브이. 오류정정의 추가층을 오류정정코드 내에 삽입하는 방법 및장치
US7046610B2 (en) 2002-04-24 2006-05-16 Ricoh Company, Ltd. Recording medium suitable for recording/reproducing multi-level data
KR100698620B1 (ko) 2003-06-16 2007-03-21 삼성전자주식회사 강건한 에러 정정 부호화 장치를 가지는 디지털 송/수신시스템 및 그의 에러정정부호화/정정방법
JP2005267719A (ja) 2004-03-17 2005-09-29 Sanyo Electric Co Ltd 符号化装置
JP4112520B2 (ja) 2004-03-25 2008-07-02 株式会社東芝 訂正符号生成装置、訂正符号生成方法、誤り訂正装置、および誤り訂正方法
US7376888B2 (en) 2004-10-19 2008-05-20 International Business Machines Corporation Interleaved recording of separated error correction encoded information
US7546515B2 (en) 2005-12-27 2009-06-09 Sandisk Corporation Method of storing downloadable firmware on bulk media
US8196019B2 (en) * 2007-01-30 2012-06-05 International Business Machines Corporation Error correction in codeword pair headers in a data storage tape format
US8055982B2 (en) 2007-02-21 2011-11-08 Sigmatel, Inc. Error correction system and method
WO2009074978A2 (en) 2007-12-12 2009-06-18 Densbits Technologies Ltd. Systems and methods for error correction and decoding on multi-level physical media
US20090177943A1 (en) 2008-01-09 2009-07-09 Broadcom Corporation Error correction coding using soft information and interleaving
US8276045B2 (en) 2009-01-09 2012-09-25 International Business Machines Corporation ECC interleaving for multi-track recording on magnetic tape
EP2234305B1 (en) 2009-03-27 2017-08-02 Nokia Solutions and Networks Oy Method of reliable communications by splitting redundant data into CRC sub-blocks best reassembled at the receiver

Also Published As

Publication number Publication date
JP5363686B2 (ja) 2013-12-11
KR101531774B1 (ko) 2015-06-25
EP2646914A1 (en) 2013-10-09
JP2013543159A (ja) 2013-11-28
US8762805B2 (en) 2014-06-24
US20120144271A1 (en) 2012-06-07
CN103238139A (zh) 2013-08-07
WO2012072330A1 (en) 2012-06-07
EP2646914B1 (en) 2014-02-26
CN103238139B (zh) 2016-09-14

Similar Documents

Publication Publication Date Title
KR101531774B1 (ko) 통합된 데이터 및 헤더 보호를 포함하는 인코드된 데이터의 디코딩
US8645800B2 (en) Integrated data and header protection for tape drives
US9251846B2 (en) Tape header protection scheme for use in a tape storage subsystem
US9542265B2 (en) Unequal error protection scheme for headerized sub data sets
US8429489B2 (en) Data retrieval from a storage device using a combined error correction and detection approach
US7188295B2 (en) Method and apparatus for embedding an additional layer of error correction into an error correcting code
US9666225B2 (en) Efficient recovery of the codeword interleave address
US9391641B2 (en) Syndrome tables for decoding turbo-product codes
US20150058696A1 (en) Tape header format having efficient and robust codeword interleave designation (cwid) protection
JP4790790B2 (ja) 誤り検出訂正回路及び半導体メモリ
JP2019503603A (ja) 積符号のためのダイアグノスティクスを伴う復号後エラー・チェック
JP2007243953A (ja) エラー補正コードストライピング
US7340663B2 (en) Method and apparatus for embedding an additional layer of error correction into an error correcting code
US11967342B2 (en) Header decoding mechanism for tape storage
US20240087605A1 (en) Header encoding mechanism for tape storage

Legal Events

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

Payment date: 20180528

Year of fee payment: 4