KR101522509B1 - 갈루아 필드 산술을 사용하는 효율적이고 스케일링가능한 순환 중복 검사 회로 - Google Patents
갈루아 필드 산술을 사용하는 효율적이고 스케일링가능한 순환 중복 검사 회로 Download PDFInfo
- Publication number
- KR101522509B1 KR101522509B1 KR1020147001976A KR20147001976A KR101522509B1 KR 101522509 B1 KR101522509 B1 KR 101522509B1 KR 1020147001976 A KR1020147001976 A KR 1020147001976A KR 20147001976 A KR20147001976 A KR 20147001976A KR 101522509 B1 KR101522509 B1 KR 101522509B1
- Authority
- KR
- South Korea
- Prior art keywords
- crc
- subtotal
- bit
- constants
- arrangement
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1076—Parity data used in redundant arrays of independent storages, e.g. in RAID systems
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M1/00—Analogue/digital conversion; Digital/analogue conversion
- H03M1/10—Calibration or testing
- H03M1/1009—Calibration
- H03M1/1033—Calibration over the full range of the converter, e.g. for correcting differential non-linearity
- H03M1/1038—Calibration over the full range of the converter, e.g. for correcting differential non-linearity by storing corrected or correction values in one or more digital look-up tables
- H03M1/1052—Calibration over the full range of the converter, e.g. for correcting differential non-linearity by storing corrected or correction values in one or more digital look-up tables using two or more look-up tables each corresponding to a different type of error, e.g. for offset, gain error and non-linearity error respectively
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
- H03M13/09—Error detection only, e.g. using cyclic redundancy check [CRC] codes or single parity bit
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
- H03M13/09—Error detection only, e.g. using cyclic redundancy check [CRC] codes or single parity bit
- H03M13/091—Parallel or block-wise CRC computation
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
- H03M13/13—Linear codes
- H03M13/15—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
- H03M13/151—Cyclic 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/158—Finite field arithmetic processing
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/63—Joint error correction and other techniques
- H03M13/635—Error control coding in combination with rate matching
- H03M13/6362—Error control coding in combination with rate matching by puncturing
- H03M13/6368—Error control coding in combination with rate matching by puncturing using rate compatible puncturing or complementary puncturing
- H03M13/6375—Rate compatible punctured convolutional [RCPC] codes
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/65—Purpose and implementation aspects
- H03M13/6575—Implementations based on combinatorial logic, e.g. Boolean circuits
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/40—Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
- H03M7/42—Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code using table look-up for the coding or decoding process, e.g. using read-only memory
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Probability & Statistics with Applications (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Quality & Reliability (AREA)
- Computing Systems (AREA)
- Nonlinear Science (AREA)
- Mathematical Physics (AREA)
- Algebra (AREA)
- Pure & Applied Mathematics (AREA)
- Error Detection And Correction (AREA)
Abstract
본 개시내용의 실시예들은 갈루아 필드 산술을 사용하는 순환 중복 검사 회로들에 대한 방법들, 장치 및 시스템 구성들을 기술한다.
Description
관련 출원들에 대한 교차 참조
본 출원은, 그 전체 개시내용이 여기에 인용에 의해 포함되는, "EFFICIENT AND SCALABLE CYCLIC REDUNDANCY CHECK CIRCUIT USING GALOIS-FIELD ARITHMETIC"라는 명칭으로 2011년 7월 1일에 출원된 미국 특허 출원 제13/175,500호에 대한 우선권을 주장한다.
분야
본 개시내용의 실시예들은 일반적으로 에러 검출의 분야에 관한 것이며, 더 구체적으로는 갈루아 필드(Galois-field) 산술을 사용하는 순환 중복 검사 회로(cyclic redundancy check circuit)에 관한 것이다.
데이터 무결성은 저장 및 통신 시스템들에 대한 중요한 특징이다. 시스템 무결성 및 성능에 대한 영향을 감소시키기 위해 가능한 일찍 검출, 및 가능한 경우 정정이 이루어지는 것이 바람직하다.
순환 중복 검사(CRC:cyclic redundancy check) 코드들은 에러 검사를 위한 효율적이고 효과적인 데이터 무결성 툴들이다. CRC를 계산하기 위한 몇몇 방법들 및 하드웨어가 과거에 제안되었다. 이들 방법들은 선형 피드백 시프트 레지스터(LFSR:linear feedback shift register)들을 사용하는 비트-직렬 방법들(bit-serial methods) 및 CRC 계산을 위해 룩업 테이블들을 이용하는 병렬 방법들을 포함한다.
실시예들은 첨부 도면들과 함께 후속하는 상세한 기재에 의해 용이하게 이해될 것이다. 이러한 기재를 용이하게 하기 위해, 동일한 참조 번호들은 동일한 구조적 엘리먼트들을 나타낸다. 실시예들은 첨부 도면들의 그림들에서 제한으로서가 아니라 예로서 예시된다.
도 1은 일부 실시예들에 따른 곱셈기 회로(multiplier circuit)를 개략적으로 예시하는 도면이다.
도 2는 일부 실시예들에 따른 순환 중복 검사 블록을 개략적으로 예시하는 도면이다.
도 3은 일부 실시예들에 따른 또 다른 곱셈기 회로를 개략적으로 예시하는 도면이다.
도 4는 일부 실시예들에 따른 또 다른 순환 중복 검사 블록을 개략적으로 예시하는 도면이다.
도 5는 일부 실시예들에 따른 또 다른 순환 중복 검사 블록을 개략적으로 예시하는 도면이다.
도 6은 일부 실시예들에 따른 예시적인 시스템을 예시하는 도면이다.
도 2는 일부 실시예들에 따른 순환 중복 검사 블록을 개략적으로 예시하는 도면이다.
도 3은 일부 실시예들에 따른 또 다른 곱셈기 회로를 개략적으로 예시하는 도면이다.
도 4는 일부 실시예들에 따른 또 다른 순환 중복 검사 블록을 개략적으로 예시하는 도면이다.
도 5는 일부 실시예들에 따른 또 다른 순환 중복 검사 블록을 개략적으로 예시하는 도면이다.
도 6은 일부 실시예들에 따른 예시적인 시스템을 예시하는 도면이다.
후속하는 상세한 기재에서, 동일한 부호들이 명세서 전반에 걸쳐 동일한 부분들을 나타내고, 구현될 수 있는 예시적 실시예들로 도시되는, 본원의 일부를 형성하는 첨부 도면들에 대한 참조가 이루어진다. 다른 실시예들이 이용될 수 있으며, 구조적 또는 논리적 변경들이 본 개시내용의 범위로부터의 이탈없이 이루어질 수 있다는 점이 이해되어야 한다. 따라서, 후속하는 상세한 기재는 제한적 의미로서 취해지지 않을 것이며, 실시예들의 범위는 첨부된 청구항들 및 그 등가물들에 의해 정의된다.
다양한 동작들은 청구된 발명 대상을 이해할 시에 가장 유용한 방식으로 이후에 다수의 이산 작용들 또는 동작들로서 기술될 수 있다. 그러나, 기재의 순서는 이들 동작들이 반드시 순서에 종속적임을 내포하는 것으로서 해석되지는 않아야 한다. 특히, 이들 동작들은 표현의 순서대로 수행되지 않을 수 있다. 기술된 동작들은 기술된 실시예들과는 상이한 순서로 수행될 수 있다. 다양한 추가적인 동작들이 수행될 수 있고 그리고/또는 기술된 동작들은 추가적인 실시예들에서 생략될 수 있다.
본 개시내용의 목적으로, 구문 "A 및/또는 B"는 (A), (B), 또는 (A 및 B)를 의미한다. 본 개시내용의 목적으로, 구문 구문 "A, B 및/또는 C"는 (A), (B), (C), (A 및 B), (A 및 C), (B 및 C), 또는 (A, B 및 C)를 의미한다.
기재는 각각이 동일한 또는 상이한 실시예들 중 하나 이상을 참조할 수 있는 구문들 "실시예에서" 또는 "실시예들에서"를 사용할 수 있다. 또한, 용어 "구비하는", "포함하는", "가지는" 등은, 본 개시내용의 실시예들에 대해 사용되는 바와 같이, 유의어이다.
이 개시내용의 실시예들은 일부 임의의 데이터 길이에 따르는 모듈러(modular) 및 확장가능한 블록을 가지며 다양한 시드(seed)들을 사용할 수 있는 순환 중복 검사(CRC:cyclic redundancy check) 회로를 기술한다. CRC 회로는 복수 배열 독립 디스크(RAID:redundant array of independent disk) 및/또는 소형 컴퓨터 시스템 인터페이스(SCSI:small computer system interface) 시스템들에서 사용되는 것들과 같은, 하드웨어-기반 저장 입력/출력(I/O) 제어기들에 대한 성능 기준들(performance benchmarks)을 만족시키도록 보조하는 높은 스루풋을 제공할 수 있다.
본 개시내용의 실시예들은 국제 정보 통신 기술 표준 위원회(INCITS:International Committee on Information Technology Standards)의 T10 기술 위원회에 의해 공표된 아키텍쳐 커맨드 세트들, 프로토콜들 및 물리층들과 부합하는 SCSI 인터페이스들에 대해 논의될 수 있다. 특히, 많은 실시예들은 갈루아 필드(GF2) 산술에 기초한 SCSI T10 16비트 CRC 다항식 x16 + x15 + x11 + x9 + x8 + x7 + x5 + x4 + x2 + x + 1(또한 "0x18BB7"로서 지칭됨)에 대해 기술된다. 그러나, 개시된 개념들이 통신 시스템들 또는 다른 저장 시스템들과 같은 다른 상황들 내에서 다른 생성기 다항식들(generator polynomials)을 데이터 무결성 보호에 제공하는 것에 응용가능할 수 있다는 점이 이해될 것이다.
GF2 산술을 사용하는 비트-슬라이스(bit-sliced) CRC가 다음과 같이 기술될 수 있다. W를 임의의 길이의 입력 데이터라고 하고, M을 CRC 폭이라고 하고, n을 비트 슬라이스들의 수라고 하고, G(x)를 GF2M 내의 기약 생성기 다항식(irreducible generator polynomial)(예를 들어, 0x18BB7)라고 하자(여기서, M=16이다). W는 이후 수학식 1에 의해, 다항식 포맷으로 표현될 수 있다.
수학식 1에서, 첫번째 항 은 첫번째 비트 슬라이스, 예를 들어, 입력 데이터의 최상위 16 비트(most significant 16 bits)를 나타낼 수 있고, 마지막 항 은 마지막 비트 슬라이스, 예를 들어, 입력 데이터의 최하위 16비트(least significant 16 bits)를 나타낼 수 있다. 기술된 실시예들에서 사용되는 바와 같은 "비트 슬라이스" 또는 "슬라이스"는 입력 데이터의 16개 연속적인 비트들이지만, 다양한 실시예들에서 비트 슬라이스들은 임의의 다른 개수의 연속적인 비트들을 가질 수 있다.
수학식 1은 수학식 2의 모듈러스 항(modulus term) W mod G(x)에 의해 표현되는 곱들의 합산으로 축소될 수 있다.
따라서, 수학식 2에 의해 알수 있는 바와 같이, T10 16비트 CRC에 대해 요구되는 기본 엘리먼트는 주어진 비트 길이에 대해 에 의해 주어진 GF2 승수(multiplier)이며, 여기서, (i = 0,..., n-1)는 후속하는 바와 같이, 수학식 3에 의해 정의되는 점화 관계식(recurrence relation)에 의해 주어질 수 있다.
상수들(constants) 은 핸드 또는 소프트웨어 프로그램에 의해 계산될 수 있고, 다양한 실시예들에 따라 하기에 기술될 바와 같이 후속적인 계산들을 위해 룩업 테이블(LUT)로 입력될 수 있다. 다양한 실시예들에서, 상수들 는, 런타임 프로세싱 자원들, 저장 자원들 등과 같은, 그러나 이에 제한되지 않는, 다양한 객체들 및 고려사항들에 따라 선계산되거나 온 더 플라이(on-the-fly) 계산될 수 있다.
도 1은 일부 실시예들에 따른 곱셈기 회로(100)를 개략적으로 예시한다. 곱셈기 회로(100)는 피승수(multiplicand)로서 입력 데이터의 슬라이스 W[i]를 수신하기 위해 입력 라인(104)과, 그리고 승수로서 미리 결정된 베타 상수들 β[j]를 수신하기 위해 입력 라인(108)과 커플링될 수 있다. 일부 실시예들에서, 곱셈기 회로(100)는 16 비트 값인 승수 및 피승수를 가지는 16 x 16 GF2 곱셈기 회로일 수 있다. 곱셈기 회로(100)는, 이러한 인스턴스들에서, 또한 16비트 곱셈기 회로로서 지칭될 수 있다. 다른 실시예들은 다른 크기의 곱셈기 회로들을 포함할 수 있다.
피승수 및 승수는 곱셈기 회로(100)의 로직 배열(logic array)(112)에 제공될 수 있다. 로직 배열(112)은 도시된 바와 같이, 256개 AND 로직 모듈들을 포함한다. 포괄적으로, n 비트 곱셈기 회로에서, AND 로직 모듈들은 를 범위로 할 수 있다. AND 로직 모듈들이 AND 게이트들 또는 이들의 등가물들과 같은 AND 연산을 제공하도록 구성되는 모듈들이라는 점이 이해될 것이다. 로직 배열(112)은 피승수 및 승수에 기초하여, n비트 곱셈기 회로에서 인 개별 항들과의 n x n 외적(cross product)일, 내적(dot product) 배열을 생성할 수 있다.
곱셈기 회로(100)는 로직 배열(112)과 커플링된 축소 블록(reduction block)(114)을 가질 수 있다. 축소 블록은 갈루아 필드 축소를 사용하여 내적 배열을 부분합들(partial sums)(118)로 축소시킨다. 갈루아 필드 축소를 사용함으로써, 내적 배열은 하나의 열로부터 다음 열로 상위 값들(higher-order values)에 걸쳐 전달(carry)해야할 필요 없이 축소될 수 있다. 따라서, 내적 배열의 축소 프로세스는 내적 배열의 다양한 열들의 간단한 XOR로서 수행될 수 있다. 부분합들(118)은 도 1에 S[30:0]로서 도시된 31비트 값일 수 있다. 포괄적으로, n비트 GF2 곱셈기 회로에서, 부분합들(118)은 S[2n-2:0]일 수 있다.
곱셈기 회로(100)는 부분합들(118)을 수신하고, 생성기 다항식, 예를 들어, 0x1BB7에 기초하여 모듈로 연산을 수행하여 GF2 곱 결과(product result) 또는 부분 CRC 결과(126)를 생성하는 GF2 모듈로 블록(122)을 포함한다. 실시예에서, 부분 CRC 결과(126)는 (수학식 2와 비교하여) 에 대응하는 S'[15:0]에 의해 표현되는 16비트 값일 수 있다. 부분 CRC 결과(126)는 곱셈기 회로(100)에 의해 수신되는 데이터의 슬라이스에 대한 CRC 결과를 나타낼 수 있다.
GF2 모듈로 블록(122)은 부분 CRC 결과(126)의 개별 비트들에 대한, 부분합 배열의 상위 비트들, 예를 들어, S[30:16]의 영향을 나타내는 불 방정식들(Boolean equations)에 의해 결정되는 바와 같이 부분합들(118)의 비트들의 개별 서브세트들을 XOR함으로써 부분 CRC 결과(126)의 개별 비트들을 생성할 수 있다. 예를 들어, S16이 "1"인 경우, 생성기 다항식의 LSB, 즉, 비트 0은 합산 S'0에 영향을 줄 것이다. 따라서, S'0에 대한 S16의 영향이 고려될 필요가 있다. 부분 CRC 결과 S'[15:0]에 대한 불 방정식들은 다음과 같으며, 여기서 "^"는 XOR 연산을 나타낸다:
따라서, 16비트 부분 CRC 결과(126), 즉 S'[15:0]는 부분합(118)의 상위 비트들의 선택된 비순차적 수, 즉 S[30:16]과 부분합들(118)의 16개 하위 비트들 각각, 즉 S[15:0]에 대해 배타적 OR을 수행함으로써, 31비트 부분합들(118), 즉, S[30:0]로부터 계산된다. 위의 불 방정식들을 이용하는 것은 부분 CRC 결과(126)의 생성을 간소화할 수 있어, 더 빠르고 더 효율적인 CRC 생성을 초래할 수 있다.
도 2는 일부 실시예들에 따른 CRC 블록(200)을 개략적으로 예시한다. CRC 블록(200)은 곱셈기 회로(100)와 유사할 수 있는 복수의 16x16 GF2 곱셈기 회로들(204)을 포함할 수 있다. CRC 블록(200)은 일부 아키텍쳐들에서 캐시 라인의 절반을 나타낼 수 있는 입력 데이터(208)의 32 바이트를 16개의 16비트 슬라이스들, 예를 들어, W0 - W15로 분할하도록 구성될 수 있다.
곱셈기 회로들(204) 각각은 입력 데이터(208)로부터 개별 슬라이스, 및 룩업 테이블(212)로부터 베타 상수들을 수신할 수 있다. 곱셈기 회로들(204) 각각은 결합기(216)에 의해 결합될 수 있는 개별 부분 CRC 결과를 출력할 수 있다. 결합기(216)는 곱셈기 회로(204)로부터의 부분 CRC 결과들을 입력 데이터(208)에 대응하는 CRC 결과(220)로 결합시키는 XOR 모듈, 예를 들어, XOR 게이트 또는 그 등가물일 수 있다.
다중 입력 XOR 게이트들과 같은 주어진 기술에 대한 라이브러리 엘리먼트들의 가용성에 따라, CRC 회로(220)는 이러한 작은 2 또는 3개의 클록 사이클 내에서 획득될 수 있다.
도 3 및 4는, 일부 실시예들에 따른 곱셈기 회로(300) 및 CRC 블록(400)을 각각 개략적으로 예시한다. 곱셈기 회로(300)는 곱셈기 회로(300)가 모듈로 블록을 포함하지 않는다는 점을 제외하고는 곱셈기 회로(100)와 유사할 수 있다. 오히려, 곱셈기 회로(300)는 부분합 배열(318)을 출력한다.
CRC 블록(400)은 CRC 블록(400)이 곱셈기 회로(300)와 유사한 곱셈기 회로들(404)을 포함할 수 있고 모듈로 블록(422)을 더 포함할 수 있다는 점을 제외하고는, CRC 블록(200)과 유사할 수 있다. CRC 블록(400)은 개별 31비트 부분합 배열들(318)을 수신하기 위해 곱셈기 회로들(404) 각각과 커플링되는 결합기(416)를 포함할 수 있다. 결합기(416)는 결합된 합산 배열을 제공하기 위해 부분합 배열들(318)을 XOR시킬 수 있다. 결합된 합산 배열은 모듈로 블록(122)에 대해 전술된 것과 유사한 모듈로 연산을 제공하는 모듈로 블록(422)에 제공될 수 있다. 모듈로 블록(422)의 출력은 입력 데이터(408)에 대응하는 CRC 결과(420)일 수 있다.
CRC 블록(400)의 풋프린트(footprint)는, CRC 내의 결합기(416) 다음으로 모듈로 블록(422)을 이동시킴으로써, 곱셈기 회로들(404)의 각각 내에 하나를 가지는 것에 비해, 축소될 수 있다. CRC 블록들(200 및 400)의 스루풋 레이트들은 서로 비교가능할 수 있다.
위의 실시예에서, CRC 결과는 16x16 곱셈기 회로들의 16개 블록들을 사용하여 데이터의 32 바이트 부분에 대해 계산되었다. 본 개시내용의 실시예들은 오버헤드 하드웨어 복잡도를 관리하기 위해 호너의 규칙(Horner's rule)을 사용함으로써 더 큰 데이터 부분들, 예를 들어, 512 바이트, 4096 바이트 또는 그 이상에 대한 CRC 결과들을 계산하도록 확장될 수 있다. 예를 들어, 512 바이트 데이터에 대한 CRC 결과를 계산하는 것은 전술된 바와 같이, 512/32 = 16개 CRC 블록들을 수반할 것이다. 그러나, 호너의 규칙을 이용하여, 오직 하나의 32바이트 CRC 블록을 사용하여 CRC 결과를 계산하고, 가외의 곱셈기 회로 및 일부 추가적인 로직 회로를 사용하여 CRC 결과를 계산하기 위해 데이터 스트림들이 수신될 때 타임 시프트를 사용할 수 있다. 이는 성능을 희생하지 않고 하드웨어 복잡도를 감소시킨다.
도 5는 일부 실시예들에 따른 호너의 규칙을 이용하는 CRC 블록(500)을 예시한다. CRC 블록(500)은 기술될 바와 같이 입력 데이터(508)의 512 바이트에 대한 16비트 CRC 결과(504)를 계산하도록 구성될 수 있다. 입력 데이터(508)는 하프 캐시 라인(HCL:half cache lines)들(0 - 15)과 같은 복수의 세그먼트들로서 배열될 수 있다.
CRC 블록(500)은 곱셈기 회로(516)와 커플링되는 하나의 32바이트 CRC 블록(512)을 가질 수 있다. 32바이트 CRC 블록(512) 및 곱셈기 회로(516)는 기술될 순차적 동작들을 나타내도록 여러번 도시되어 있다.
곱셈기 회로(516)는 입력 데이터(508)가 스트리밍될 때 32바이트 CRC 블록(512) 및 곱셈기 회로(516)가 사용되어 입력 데이터(508)에 대한 부분 CRC 결과를 계산하도록 하기 위해, 부분 CRC 계산들을 타임 시프트하도록 사용될 수 있는 다수의 베타 상수들을 저장하는 룩업 테이블(520)과 커플링될 수 있다.
32 바이트 CRC 블록(512)은, CRC 블록(200 또는 400) 중 어느 하나와 유사하며, 실질적으로 이와 상호교환가능할 수 있다. 곱셈기 회로(516)는 곱셈기 회로(100 또는 300) 중 어느 하나와 유사하며, 실질적으로 이와 상호교환가능할 수 있다.
입력 데이터(508)에 대한 W Mod G(x)는, 32바이트 CRC 블록(512)이 입력 데이터(508)가 수신될 때 각각의 하프 캐시 라인(HCL:half cache lines)에 대해 동일한 베타 상수들 B[15:0]을 사용하도록 재배열될 수 있다. 재배열될 때 호너의 규칙을 사용하는 CRC 결과(504)에 대한 수학적 표현은 다음과 같을 수 있다.
따라서, 32바이트 CRC 블록(512) 내의 룩업 테이블은 각각의 HCL을 가지는 32바이트 CRC 블록(512)에 의해 사용될 베타 상수들 B[15:0]을 가질 수 있다. 수학식 5의 괄호들 밖에 나온 베타 상수들, 즉, B239, B223, B207, B191 , B175, B159, B127, B111 , B95, B79, B63, B47, B31, 및 B15은 룩업 테이블(520)에 저장되고, 곱셈기 회로(516)에 의해 액세스가능할 수 있다. 베타 상수들의 제1 세트를 저장하는 32바이트 CRC 블록(512) 내의 룩업 테이블은 베타 상수들의 제2 세트를 저장하는 룩업 테이블(520)과 동일하거나 상이할 수 있다.
시간 0에서, 32 바이트 CRC 블록(512)은 HCL0를 수신하고, CRC 블록(200 또는 400)에 대해 전술된 바와 같이 B[15:0]를 사용하여, 부분 CRC 결과를 계산할 수 있다. 시간 0에서 32바이트 CRC 블록(512)에 의해 계산된 부분 CRC 결과는 결합기(524)에 직접 제공될 수 있다. 즉, 부분 CRC 결과는 먼저 곱셈기 회로(516)에 제공되지 않고 결합기(524)에 제공된다. 부분 CRC 결과(및/또는 결합기(524)에 대한 임의의 입력)가 결합기(524)의 동작들을 위한 적절한 타이밍을 설정하기 위해 결합기(524)와 연관된 레지스터, 래치 등에 저장될 수 있다.
시간 1에서, 32바이트 CRC 블록(512)은 HCL1을 수신하고 부분 CRC 결과를 계산할 수 있다. 시간 1에서 32바이트 CRC 블록(512)에 의해 계산된 부분 CRC 결과가 곱셈기 회로(516)에 제공될 수 있고, 시간 2에서 곱셈기 회로(516)는 부분 CRC 결과를 B[15]와 곱할 수 있다. 결과는 이후 결합기(524)에 제공될 수 있다.
또한 시간 2에서, 32바이트 CRC 블록(512)은 HCL2를 수신하고 곱셈기 회로(516)에 제공되는 부분 CRC 결과를 시간 3에서 계산할 수 있는데, 여기서 그것은 B[31]와 곱해지고 이후 결합기(524)에 제공된다. 이러한 프로세스는, 시간 15에서 32바이트 CRC 블록(512)이 결합기(528)로부터 값을 수신할 때까지 유사한 방식으로 진행할 수 있다.
결합기(528)는 곱셈기 회로(512)에 제공되는 결합기 출력을 생성하기 위해 입력 데이터(508)의 최상위 세그먼트, 즉 HCL15와 16비트 시드(532)를 XOR하도록 구성되는 XOR 모듈일 수 있다. 시드는 데이터 시퀀스가 인가되기 전에 CRC 결과에 대한 초기 변위 값(랜덤성)을 제공하기 위해 LFSR 회로에서 사용될 수 있다. 일반적으로, 시드들은 동일한 입력 시퀀스에 대해 가변(variable) 및 고유 CRC 결과들을 제공한다. 저장 시스템들에서, 0들 또는 모두 F의 값들을 가지는 시드들은 통상적으로 초기화된 또는 초기화되지 않은 디스크들에 대한 CRC를 계산하기 위해 사용된다. 전형적인 LFSR 회로에 있어서, 시드 초기화는 동작 시작 이전에 초기 시드를 N 비트 LFSR 레지스터에 기록하는 것을 수반한다. 그러나, CRC 계산을 위한 GF2 곱셈 축소 연산들이 사용될 때, 그것은 결과들이 기능적으로 정확한 것으로 간주되는 동작에서 시드가 어디에 포함될 필요가 있는지에 대해서는 간단하지가 않다. 하기에 유도된 알고리즘은 임의의 GF2 CRC 회로에 일반화된 임의의 시드(예를 들어, 이종 값들을 포함하는 시드)를 추가한다.
A가 입력 메시지이고, S가 시드인 경우, M Mod G(x) = S이도록 M이 16비트의 변환된 시드인 투플(tuple)(M,A)을 구성할 수 있다. 이다. 이후, 를 가진다. 이므로, 이것은 와 등가이다. 따라서, 를 가진다. 이러한 유도는 시드(532)가 결합기(528)에 의해 그것을 최상위 워드, 예를 들어, 입력 데이터(508)의 HCL15로 XOR함으로써 직접 사용될 수 있고, 이후 CRC 결과(504)를 계산하기 위해 베타 스케일링(GF2 곱셈)을 사용할 수 있다는 점을 내포한다.
여기서 기술된 CRC 컴포넌트들은 원하는 바와 같이 구성하기 위해 임의의 적절한 하드웨어 및/또는 소프트웨어를 사용하는 시스템으로 구현될 수 있다. 도 6은, 일 실시예에 대해, 하나 이상의 프로세서(들)(604), 프로세서(들)(604) 중 적어도 하나에 커플링된 시스템 제어 로직(608), 시스템 제어 로직(608)에 커플링된 시스템 메모리(612), 시스템 제어 로직(608)에 커플링된 비휘발성 메모리(NVM)/스토리지(616), 및 시스템 제어 로직(608)에 커플링된 하나 이상의 통신 인터페이스(들)(620)를 포함하는 예시적인 시스템(600)을 예시한다.
NVM/스토리지(616)는 예를 들어, 데이터 및/또는 명령어들(instructions)을 저장하기 위해 사용될 수 있다. NVM/스토리지(616)는 예를 들어, 플래시 메모리와 같은 임의의 적절한 비휘발성 메모리를 포함할 수 있고, 그리고/또는 예를 들어, 하나 이상의 하드 디스크 드라이브(HDD)(들), 하나 이상의 컴팩트 디스크(CD) 드라이브(들), 및/또는 하나 이상의 디지털 다목적 디스크(DVD) 드라이브(들)과 같은 임의의 적절한 비휘발성 저장 디바이스(들)를 포함할 수 있다. NVM/스토리지(616)는 시스템(600)이 설치되거나 또는 그것이 디바이스에 의해 액세스될 수 있지만 반드시 그 일부일 필요는 없는 디바이스의 물리적 일부분인 저장 자원을 포함할 수 있다. 예를 들어, NVM/스토리지(616)는 통신 인터페이스(들)(620)를 통해 네트워크 상에서 액세스될 수 있다.
통신 인터페이스(들)(620)는 하나 이상의 네트워크(들)를 통해 그리고/또는 임의의 다른 적절한 디바이스와 통신하도록 시스템(600)에 대한 인터페이스를 제공할 수 있다. 통신 인터페이스(들)(620)는 임의의 적절한 하드웨어 및/또는 펌웨어를 포함할 수 있다. 일 실시예에 대한 통신 인터페이스(들)(620)는 예를 들어, 네트워크 어댑터, 무선 네트워크 어댑터, 전화 모뎀, 및/또는 무선 모뎀을 포함할 수 있다. 무선 통신들을 위해, 일 실시예에 대한 통신 인터페이스(들)(620)는 하나 이상의 안테나들을 사용할 수 있다.
일 실시예에서, 프로세서(들)(604) 중 적어도 하나는 시스템 제어 로직(608)의 하나 이상의 제어기(들)에 대한 로직과 함께 패키지화될 수 있다. 일 실시예에 대해, 프로세서(들)(604) 중 적어도 하나는 시스템 제어 로직(608)의 하나 이상의 제어기들에 대한 로직과 함께 패키지화되어 시스템 인 패키지(SiP:System in Package)를 형성할 수 있다. 일 실시예에서, 프로세서(들)(604) 중 적어도 하나는 시스템 제어 로직(608)의 하나 이상의 제어기(들)에 대한 로직과 동일한 다이 상에 집적될 수 있다. 일 실시예에 대해, 프로세서(들)(604) 중 적어도 하나는 시스템 제어 로직(608)의 하나 이상의 제어기(들)에 대한 로직과 동일한 다이 상에 집적되어 시스템 온 칩(SoC:System on Chip)을 형성할 수 있다.
일 실시예에 대한 시스템 제어 로직(608)은 프로세서(들)(604) 중 적어도 하나에 그리고/또는 시스템 제어 로직(608)과 통신하는 임의의 적절한 디바이스 또는 컴포넌트에 대한 임의의 적절한 인터페이스를 제공하기 위한 임의의 적절한 인터페이스 제어기들을 포함할 수 있다.
일 실시예에 대한 시스템 제어 로직(608)은 NVM/스토리지(616) 내로의 또는 그 외부로의 데이터/명령어들의 이동을 제어하기 위해 NVM/스토리지(616)에 대한 인터페이스를 제공하기 위한 저장 제어기(624)를 포함할 수 있다.
시스템(600)은 CRC 결과들을 생성하고, 검사하고, 저장하고 그리고/또는 액세스하는 것을 제어하도록 구성되는 CRC 컴포넌트(628)를 포함할 수 있다. CRC 컴포넌트(628)는 다양한 실시예들에서, CRC 블록(200, 300, 또는 500)과 같은 CRC 블록을 포함할 수 있다. CRC 컴포넌트(628)는 프로세서(들)(604)의 프로세서 내에 그리고/또는 저장 제어기(624) 내에 배치될 수 있다.
일 실시예에 대한 시스템 제어 로직(608)은 시스템 메모리(612)에 대한 인터페이스를 제공하기 위한 하나 이상의 메모리 제어기(들)를 포함할 수 있다. 시스템 메모리(612)는 예를 들어, 시스템(600)에 대한 데이터 및/또는 명령어들을 로딩하고 저장하기 위해 사용될 수 있다. 일 실시예에 대한 시스템 메모리(612)는 예를 들어, 적절한 동적 랜덤 액세스 메모리(DRAM)와 같은 임의의 적절한 휘발성 메모리를 포함할 수 있다.
다양한 실시예들에서, 시스템(600)은 더 많거나 더 적은 컴포넌트들 및/또는 상이한 아키텍쳐들을 가질 수 있다.
여기서 기술된 다양한 실시예들은 복수의 상수들 및 입력 데이터의 슬라이스를 수신하는 단계; 복수의 상수들 및 슬라이스에 기초하여 내적 배열을 생성하는 단계; 내적 배열의 갈루아 필드 축소에 기초하여 부분합 배열을 생성하는 단계; 및 부분합 배열 내의 개별 비트 및 부분합 배열 내의 선택된 수의 비순차적 상위 비트들(a selected number of nonsequential higher-order bits in the partial-sum array)에 대해 배타적 OR 연산을 수행하는 것에 기초하여 곱 결과의 개별 비트들을 생성하는 단계를 포함하는 방법을 포함한다.
일부 실시예들에서, 방법은 입력 데이터의 복수의 비트 슬라이스들을 수신하는 단계; 복수의 비트 슬라이스들에 개별적으로 대응하는 복수의 곱 결과들을 생성하는 단계; 및 복수의 곱 결과들에 기초하여 입력 데이터에 대한 순환 중복 검사를 생성하는 단계를 더 포함할 수 있다. 일부 실시예들에서, 순환 중복 검사는 복수의 곱 결과들을 XOR 함으로써 수행될 수 있다.
다양한 실시예들에서, 슬라이스 및 곱 결과는 n비트 값들일 수 있고, 여기서 n은 정수이다. 복수의 상수들은 기약 생성기 다항식에 기초할 수 있다. 예를 들어, 복수의 상수들 각각은 0x18BB7인 16비트 CRC 다항식에 기초할 수 있다.
일부 실시예들에서, 곱 결과는 16비트 부분 CRC 결과일 수 있고, 부분 합 배열은 31비트 부분합 배열일 수 있다. 이들 실시예들은 31비트 부분합 배열의 상위 비트들의 선택된 비순차적 수(a selected non-sequential number of the higher-order bits of the 31-bit partial sum array)와 31비트 부분합 배열의 16개 하위 비트들 각각에 대해 배타적 OR을 수행함으로써 16비트 부분 CRC 결과를 계산함으로써 개별 비트들을 생성하는 것을 포함할 수 있고, 여기서 상위 비트들의 선택된 수(selected number of higher-order bits)는 7, 8, 9, 또는 10이다.
S'[15:0]로서 곱 결과를, S[30:0]로서 부분합 배열을 가지며, 불 방정식들은:
에 의해 표현될 수 있다.
다양한 실시예들은 기술된 방법들을 수행하기 위한 장치들, 및 실행될 때 장치로 하여금 기술된 방법들을 수행하게 하는 명령어들을 가지는 하나 이상의 컴퓨터 판독가능한 매체를 포함할 수 있다.
일부 실시예들에서, 시스템이 개시된다. 시스템은 입력 데이터를 수신하도록 구성되는 인터페이스 제어기; 및 인터페이스 제어기와 커플링된 CRC 컴포넌트를 포함할 수 있다. CRC 컴포넌트는 상수들 및 입력 데이터의 개별 복수의 슬라이스들을 수신하도록 구성되는 복수의 곱셈기 회로들 - 개별 곱셈기 회로들은 상수들 및 개별 슬라이스들에 기초하여 부분합 배열들을 생성하도록 구성됨 - ; 복수의 곱셈기 회로들 각각과 커플링되고 복수의 부분합 배열들에 기초하여 결합된 부분합 배열을 생성하도록 구성되는 결합기; 및 결합기에 커플링되며 결합된 부분합 배열에 기초하여 순환 중복 검사(CRC:cyclic redundancy check) 값을 생성하도록 구성되는 모듈로 블록을 포함할 수 있다.
CRC 값의 개별 비트들은 개별 비트들에 대한 결합된 부분합 배열의 상위 비트들의 영향을 나타내는 불 방정식들에 의해 결정되는 바와 같이 결합된 부분합 배열의 비트들의 개별 서브세트들에 기초하여 생성될 수 있다. 상수들은 16비트 CRC 다항식에 기초할 수 있다.
일부 실시예들에서, 시스템의 결합기는 결합된 부분합 배열을 생성하기 위해 복수의 부분합 배열들을 XOR 하도록 구성될 수 있다.
복수의 승수들의 개별 곱셈기 회로들은 상수들 및 입력 데이터의 슬라이스를 수신하고; 상수들 및 슬라이스에 기초하여 내적 배열을 생성하도록 구성되는 로직 배열; 및 내적 배열의 갈루아 필드 축소에 기초하여 부분합 배열을 생성하도록 구성되는 축소 블록을 포함할 수 있다.
일부 실시예들에서, 회로가 개시된다. 회로는 상수들의 제1 세트를 가지는 제1 룩업 테이블을 가지는 CRC 블록을 포함할 수 있다. CRC 블록은 입력 데이터의 복수의 세그먼트들을 순차적으로 수신하고, 복수의 세그먼트들 및 상수들의 제1 세트에 기초하여 개별 제1 부분 CRC 결과들을 순차적으로 생성하도록 구성될 수 있다. 회로는 상수들의 제2 세트를 가지는 제2 룩업 테이블; CRC 블록 및 제2 룩업 테이블과 커플링되며, 적어도 CRC 블록에 의해 생성되는 제1 부분 CRC 결과들의 서브세트를 순차적으로 수신하고 개별 제1 부분 CRC 결과들 및 상수들의 제2 세트의 개별 상수들에 기초하여 제2 부분 CRC 결과들을 순차적으로 생성하도록 구성되는 곱셈기 회로; 및 CRC 블록 및 곱셈기 회로와 커플링되며, 제2 부분 CRC 결과들에 기초하여 입력 데이터에 대응하는 CRC 결과를 생성하도록 구성되는 제1 결합기를 더 포함할 수 있다.
일부 실시예들에서, 제1 결합기는 CRC 블록으로부터 직접 제1 부분 CRC 결과를 수신하고, 제1 부분 CRC 값에 기초하여 CRC 결과를 생성하도록 추가로 구성될 수 있다. 제1 부분 CRC 결과들은 복수의 세그먼트들의 최하위 세그먼트에 대응할 수 있다.
일부 실시예들에서, 회로는 CRC 블록과 커플링되는 제2 결합기를 포함할 수 있고, 복수의 세그먼트들의 최상위 세그먼트 및 시드 값에 기초하여 제2 부분 CRC 결과를 생성하고, CRC 블록에 제2 부분 CRC 결과를 제공할 수 있다.
일부 실시예들에서, 제2 결합기는 시드 및 복수의 세그먼트들의 최상위 세그먼트를 수신하고 결합하여 결합기 출력을 생성할 수 있고; 여기서 CRC 블록은 제2 결합기와 커플링되며 결합기 출력에 기초하여 제1 부분 CRC 결과를 생성하도록 구성된다. 시드는 이종 값들을 포함할 수 있다.
일부 실시예들에서, 제2 결합기는 시드 및 복수의 세그먼트들의 최상위 세그먼트를 XOR하여 결합기 출력을 생성하도록 구성될 수 있다.
다양한 실시예들은 복수의 상수들 및 입력 데이터의 슬라이스를 수신하기 위한 수단; 복수의 상수들 및 슬라이스에 기초하여 내적 배열을 생성하기 위한 수단; 내적 배열의 갈루아 필드 축소에 기초하여 부분합 배열을 생성하기 위한 수단; 및 부분합 배열 내의 개별 비트 및 부분합 배열 내의 선택된 수의 비순차적 상위 비트들에 대해 배타적 OR 연산을 수행하는 것에 기초하여 곱 결과의 개별 비트들을 생성하기 위한 수단을 포함하는 장치를 포함할 수 있다. 일부 실시예들에서, 장치는 입력 데이터의 복수의 비트 슬라이스들을 수신하기 위한 수단; 복수의 비트 슬라이스들에 개별적으로 대응하는 복수의 곱 결과들을 생성하기 위한 수단; 및 복수의 곱 결과들에 기초하여 입력 데이터에 대한 순환 중복 검사를 생성하기 위한 수단을 더 포함할 수 있다. 순환 중복 검사를 생성하기 위한 수단은 복수의 곱 결과들을 XOR하기 위한 수단을 포함할 수 있다.
일부 실시예들에서, 슬라이스 및 곱 결과 모두는 n 비트 값들이고, n은 정수이다. 복수의 상수들은 기약 생성기 다항식에 기초할 수 있다. 일부 실시예들에서, 복수의 상수들 각각은 0x18BB7인 16비트 CRC 다항식에 기초할 수 있다.
일부 실시예들에서, 곱 결과는 16비트 부분 CRC 결과일 수 있고, 부분합 배열은 31비트 부분합 배열이다. 개별 비트들을 생성하기 위한 수단은 31비트 부분 합 배열의 상위 비트들의 선택된 비순차적 수와 31비트 부분합 배열의 16개 하위 비트들 각각에 대해 배타적 OR을 수행함으로써 16 비트 부분 CRC 결과를 계산하기 위한 수단을 포함할 수 있고, 상위 비트들의 선택된 수는 7, 8, 9, 또는 10이다.
일부 실시예들이 기재의 목적으로 예시되고 기술되었지만, 동일한 목적들을 달성하기 위해 계산된 광범위한 대안적인 그리고/또는 등가의 실시예들 또는 구현예들은 본 개시내용의 범위로부터의 이탈 없이 도시되고 기술된 실시예들에 대해 교체될 수 있다. 이 출원은 여기에 논의된 실시예들의 임의의 적응들 또는 변형들을 커버하도록 의도된다. 따라서, 여기서 기술된 실시예들이 청구항들 및 그 등가물들에 의해서만 제한된다는 점이 명백하게 의도된다.
Claims (29)
- 복수의 상수들(constants) 및 입력 데이터의 슬라이스를 수신하는 단계;
상기 복수의 상수들 및 상기 슬라이스에 기초하여 내적(dot product) 배열을 생성하는 단계;
상기 내적 배열의 갈루아 필드 축소(Galois-field reduction)에 기초하여 부분합 배열을 생성하는 단계; 및
상기 부분합 배열 내의 개별 비트 및 상기 부분합 배열 내의 선택된 수의 비순차적 상위 비트들(non-sequential higher-order bits)에 대해 배타적 OR 연산을 수행하는 것에 기초하여 곱 결과(product result)의 개별 비트들을 생성하는 단계
를 포함하는 방법. - 제1항에 있어서,
입력 데이터의 복수의 비트 슬라이스들을 수신하는 단계;
상기 복수의 비트 슬라이스들에 개별적으로 대응하는 복수의 곱 결과들을 생성하는 단계; 및
상기 복수의 곱 결과들에 기초하여 상기 입력 데이터에 대한 순환 중복 검사(cyclic redundancy check)를 생성하는 단계
를 더 포함하는 방법. - 제2항에 있어서,
상기 순환 중복 검사를 생성하는 단계는 상기 복수의 곱 결과들을 XOR 하는 단계를 포함하는 방법. - 제1항에 있어서,
상기 슬라이스 및 상기 곱 결과 모두는 n 비트 값들이며, n은 정수인 방법. - 제1항에 있어서,
상기 복수의 상수들은 기약 생성기 다항식(irreducible generator polynomial)에 기초하는 방법. - 제1항에 있어서,
상기 복수의 상수들 각각은 0x18BB7인 16비트 CRC 다항식에 기초하는 방법. - 제1항에 있어서,
상기 곱 결과는 16비트 부분 순환 중복 검사(CRC) 결과이고, 상기 부분합 배열은 31비트 부분합 배열이고, 상기 개별 비트들을 생성하는 단계는,
상기 31비트 부분합 배열의 상위 비트들의 선택된 비순차적 수와 상기 31비트 부분합 배열의 16개 하위 비트들의 각각에 대해 배타적 OR을 수행함으로써 16비트 부분 CRC 결과를 계산하는 단계를 포함하고,
상기 상위 비트들의 선택된 수는 7, 8, 9, 또는 10인 방법. - 제1항 내지 제8항 중 어느 한 항의 방법을 수행하도록 구성된 장치.
- 실행될 때 장치로 하여금 제1항 내지 제8항 중 어느 한 항의 방법을 수행하게 하는 명령어들을 가지는 하나 이상의 컴퓨터 판독가능한 매체.
- 입력 데이터를 수신하도록 구성되는 인터페이스 제어기; 및
상기 인터페이스 제어기와 커플링되며,
상수들 및 상기 입력 데이터의 개별 복수의 슬라이스들을 수신하도록 구성되는 복수의 곱셈기 회로들 - 개별 곱셈기 회로들은 상기 상수들 및 개별 슬라이스들에 기초하여 부분합 배열들을 생성하도록 구성됨 -;
상기 복수의 곱셈기 회로들 각각과 커플링되며, 상기 복수의 부분합 배열들에 기초하여 결합된 부분합 배열을 생성하도록 구성되는 결합기; 및
상기 결합기와 커플링되고, 상기 결합된 부분합 배열에 기초하여 순환 중복 검사(CRC) 값을 생성하도록 구성되는 모듈로 블록
을 포함하는 순환 중복 검사(CRC) 컴포넌트
를 포함하는 시스템. - 제11항에 있어서,
상기 CRC 값의 개별 비트들은 상기 개별 비트들에 대한 상기 결합된 부분합 배열의 상위 비트들의 영향을 나타내는 불 방정식들에 의해 결정되는 바와 같이 상기 결합된 부분합 배열의 비트들의 개별 서브세트들에 기초하여 생성되는 시스템. - 제11항에 있어서,
상기 상수들은 16비트 CRC 다항식에 기초하는 시스템. - 제11항에 있어서,
상기 결합기는 상기 결합된 부분합 배열을 생성하기 위해 상기 복수의 부분합 배열들을 XOR 하도록 구성되는 시스템. - 제11항 내지 제14항 중 어느 한 항에 있어서,
복수의 승수들(multipliers)의 개별 곱셈기 회로들은,
상기 상수들 및 상기 입력 데이터의 슬라이스를 수신하고;
상기 상수들 및 상기 슬라이스에 기초하여 내적 배열을 생성
하도록 구성되는 로직 배열; 및
상기 내적 배열의 갈루아 필드 축소에 기초하여 부분합 배열을 생성하도록 구성되는 축소 블록
을 포함하는 시스템. - 상수들의 제1 세트를 가지는 제1 룩업 테이블을 가지는 순환 중복 검사(CRC) 블록 - 상기 CRC 블록은 입력 데이터의 복수의 세그먼트들을 순차적으로 수신하고, 상기 복수의 세그먼트들 및 상기 상수들의 제1 세트에 기초하여 개별 제1 부분 CRC 결과들을 순차적으로 생성하도록 구성됨 -;
상수들의 제2 세트를 가지는 제2 룩업 테이블;
상기 CRC 블록 및 상기 제2 룩업 테이블과 커플링되고, 적어도 상기 CRC 블록에 의해 생성된 상기 제1 부분 CRC 결과들의 서브세트를 순차적으로 수신하고, 개별 제1 부분 CRC 결과들 및 상기 상수들의 제2 세트의 개별 상수들에 기초하여 제2 부분 CRC 결과들을 순차적으로 생성하도록 구성되는 곱셈기 회로; 및
상기 CRC 블록 및 상기 곱셈기 회로와 커플링되고, 상기 제2 부분 CRC 결과들에 기초하여 상기 입력 데이터에 대응하는 CRC 결과를 생성하도록 구성되는 결합기
를 포함하는 회로. - 제16항에 있어서,
상기 결합기는 상기 CRC 블록으로부터 직접 제1 부분 CRC 결과를 수신하고, 상기 제1 부분 CRC 값에 기초하여 상기 CRC 결과를 생성하도록 더 구성되는 회로. - 제17항에 있어서,
상기 제1 부분 CRC 결과들은 상기 복수의 세그먼트들의 최하위 세그먼트에 대응하는 회로. - 제16항에 있어서,
상기 결합기는 제1 결합기이고, 상기 회로는,
상기 CRC 블록과 커플링되고, 상기 복수의 세그먼트들의 최상위 세그먼트 및 시드(seed) 값에 기초하여 제2 부분 CRC 결과를 생성하고, 상기 CRC 블록에 상기 제2 부분 CRC 결과를 제공하도록 구성되는 제2 결합기
를 더 포함하는 회로. - 제16항 내지 제18항 중 어느 한 항에 있어서,
상기 결합기는 제1 결합기이고, 상기 회로는,
상기 복수의 세그먼트들의 최상위 세그먼트 및 시드를 수신하고 결합하여 결합기 출력을 생성하도록 구성되는 제2 결합기
를 더 포함하고, 상기 CRC 블록은 상기 제2 결합기와 커플링되며 상기 결합기 출력에 기초하여 제1 부분 CRC 결과를 생성하도록 구성되는 회로. - 제20항에 있어서,
상기 시드는 이종의 값들을 포함하는 회로. - 제20항에 있어서,
상기 제2 결합기는 상기 복수의 세그먼트들의 최상위 세그먼트 및 상기 시드를 XOR 시켜서 상기 결합기 출력을 생성하도록 구성되는 회로. - 복수의 상수들 및 입력 데이터의 슬라이스를 수신하기 위한 수단;
상기 복수의 상수들 및 상기 슬라이스에 기초하여 내적 배열을 생성하기 위한 수단;
상기 내적 배열의 갈루아 필드 축소에 기초하여 부분합 배열을 생성하기 위한 수단; 및
상기 부분합 배열 내의 개별 비트 및 상기 부분합 배열 내의 선택된 수의 비순차적 상위 비트들에 대해 배타적 OR 연산을 수행하는 것에 기초하여 곱 결과의 개별 비트들을 생성하기 위한 수단
을 포함하는 장치. - 제23항에 있어서,
입력 데이터의 복수의 비트 슬라이스들을 수신하기 위한 수단;
상기 복수의 비트 슬라이스들에 개별적으로 대응하는 복수의 곱 결과들을 생성하기 위한 수단; 및
상기 복수의 곱 결과들에 기초하여 상기 입력 데이터에 대한 순환 중복 검사를 생성하기 위한 수단
을 더 포함하는 장치. - 제24항에 있어서,
상기 순환 중복 검사를 생성하기 위한 수단은 상기 복수의 곱 결과들을 XOR 하기 위한 수단을 포함하는 장치. - 제23항에 있어서,
상기 슬라이스 및 상기 곱 결과 모두는 n 비트 값들이며, n은 정수인 장치. - 제23항에 있어서,
상기 복수의 상수들은 기약 생성기 다항식에 기초하는 장치. - 제23항에 있어서,
상기 복수의 상수들 각각은 0x18BB7인 16비트 CRC 다항식에 기초하는 장치. - 제23항에 있어서,
상기 곱 결과는 16비트 부분 순환 중복 검사(CRC) 결과이고, 상기 부분합 배열은 31비트 부분합 배열이고, 상기 개별 비트들을 생성하기 위한 수단은,
상기 31비트 부분합 배열의 상위 비트들의 선택된 비순차적 수와 상기 31비트 부분합 배열의 16개 하위 비트들의 각각에 대해 배타적 OR을 수행함으로써 16비트 부분 CRC 결과를 계산하기 위한 수단을 포함하고,
상기 상위 비트들의 선택된 수는 7, 8, 9, 또는 10인 장치.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/175,500 US8607129B2 (en) | 2011-07-01 | 2011-07-01 | Efficient and scalable cyclic redundancy check circuit using Galois-field arithmetic |
US13/175,500 | 2011-07-01 | ||
PCT/US2012/044735 WO2013006388A2 (en) | 2011-07-01 | 2012-06-28 | Efficient and scalable cyclic redundancy check circuit using galois-field arithmetic |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20140025601A KR20140025601A (ko) | 2014-03-04 |
KR101522509B1 true KR101522509B1 (ko) | 2015-05-22 |
Family
ID=47391982
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020147001976A KR101522509B1 (ko) | 2011-07-01 | 2012-06-28 | 갈루아 필드 산술을 사용하는 효율적이고 스케일링가능한 순환 중복 검사 회로 |
Country Status (4)
Country | Link |
---|---|
US (2) | US8607129B2 (ko) |
KR (1) | KR101522509B1 (ko) |
GB (1) | GB2508521B (ko) |
WO (1) | WO2013006388A2 (ko) |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8607129B2 (en) * | 2011-07-01 | 2013-12-10 | Intel Corporation | Efficient and scalable cyclic redundancy check circuit using Galois-field arithmetic |
US8898551B1 (en) * | 2012-06-22 | 2014-11-25 | Altera Corporation | Reduced matrix Reed-Solomon encoding |
US9891985B1 (en) * | 2014-11-01 | 2018-02-13 | Netronome Systems, Inc. | 256-bit parallel parser and checksum circuit with 1-hot state information bus |
US9740456B2 (en) * | 2015-04-23 | 2017-08-22 | Altera Corporation | Circuitry and methods for implementing Galois-field reduction |
US9935653B2 (en) | 2015-12-28 | 2018-04-03 | Intel Corporation | Enhanced cyclical redundancy check circuit based on galois-field arithmetic |
DE112016006791B4 (de) * | 2016-06-07 | 2020-02-06 | Mitsubishi Electric Corporation | Datenverarbeitungsvorrichtung, Datenverarbeitungsverfahren und Datenverarbeitungsprogramm |
US10157142B2 (en) | 2016-09-29 | 2018-12-18 | Intel Corporation | Offload data transfer engine for a block data transfer interface |
US10326596B2 (en) * | 2016-10-01 | 2019-06-18 | Intel Corporation | Techniques for secure authentication |
KR20200080265A (ko) | 2017-11-09 | 2020-07-06 | 엔체인 홀딩스 리미티드 | 블록체인 상에 확인 키를 기록하기 위한 시스템 |
WO2019116187A1 (en) * | 2017-12-13 | 2019-06-20 | nChain Holdings Limited | System and method for securely sharing cryptographic material |
KR102510077B1 (ko) * | 2018-04-24 | 2023-03-14 | 삼성에스디에스 주식회사 | 부채널 공격에 안전한 연산 장치 및 방법 |
US11095307B2 (en) * | 2019-09-03 | 2021-08-17 | Nvidia Corporation | Performing cyclic redundancy checks using parallel computing architectures |
KR102599674B1 (ko) * | 2021-11-24 | 2023-11-06 | 성균관대학교산학협력단 | 네트워크-온-칩에서의 데이터 무결성 검증을 위한 태그 생성 및 인증기 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030167440A1 (en) * | 2002-02-22 | 2003-09-04 | Cavanna Vicente V. | Methods for computing the CRC of a message from the incremental CRCs of composite sub-messages |
JP2004094871A (ja) * | 2002-09-04 | 2004-03-25 | Motorola Inc | ガロア体掛け算器及び通信装置 |
US20040078410A1 (en) * | 2002-10-22 | 2004-04-22 | Joshua Porten | Galois field multiplier array for use within a finite field arithmetic unit |
JP2004135172A (ja) * | 2002-10-11 | 2004-04-30 | Motorola Inc | ガロア体掛け算器の制御方法 |
Family Cites Families (25)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0614294A1 (en) * | 1993-03-03 | 1994-09-07 | International Business Machines Corporation | Method for generating a frame check sequence |
EP0840462B1 (en) | 1996-10-29 | 2004-12-15 | International Business Machines Corporation | A method and apparatus for a two-step calculation of CRC-32 |
US5948117A (en) * | 1997-01-23 | 1999-09-07 | Quantum Corporation | Modified Reed-Solomon error correction system using (W+i+1)-bit representations of symbols of GF(2w+i) |
US6058215A (en) * | 1997-04-30 | 2000-05-02 | Ricoh Company, Ltd. | Reversible DCT for lossless-lossy compression |
US6223320B1 (en) * | 1998-02-10 | 2001-04-24 | International Business Machines Corporation | Efficient CRC generation utilizing parallel table lookup operations |
US6128760A (en) * | 1998-10-13 | 2000-10-03 | Lsi Logic Corporation | Method and apparatus for calculating a CRC remainder |
US6407576B1 (en) * | 1999-03-04 | 2002-06-18 | Altera Corporation | Interconnection and input/output resources for programmable logic integrated circuit devices |
WO2001061868A2 (en) * | 2000-02-17 | 2001-08-23 | Analog Devices, Inc. | Method, apparatus, and product for use in generating crc and other remainder based codes |
US6844756B1 (en) * | 2000-06-23 | 2005-01-18 | Cypress Semiconductor Corp. | Configurable dedicated logic in PLDs |
US6766493B1 (en) * | 2000-12-21 | 2004-07-20 | Cisco Technology, Inc. | Method and apparatus for generating and checking cyclic redundancy code (CRC) values using a CRC generator and binary galois field multiplier |
US7206410B2 (en) | 2001-10-10 | 2007-04-17 | Stmicroelectronics S.R.L. | Circuit for the inner or scalar product computation in Galois fields |
US7096408B1 (en) * | 2002-02-21 | 2006-08-22 | Ciena Corporation | Method and apparatus for computing the error locator polynomial in a decoder of a forward error correction (FEC) system |
US7865806B2 (en) * | 2006-03-03 | 2011-01-04 | Peter Lablans | Methods and apparatus in finite field polynomial implementations |
US7760880B2 (en) * | 2004-10-13 | 2010-07-20 | Viasat, Inc. | Decoder architecture system and method |
US8689078B2 (en) | 2007-07-13 | 2014-04-01 | Intel Corporation | Determining a message residue |
US7886214B2 (en) | 2007-12-18 | 2011-02-08 | Intel Corporation | Determining a message residue |
US8042025B2 (en) | 2007-12-18 | 2011-10-18 | Intel Corporation | Determining a message residue |
US9052985B2 (en) | 2007-12-21 | 2015-06-09 | Intel Corporation | Method and apparatus for efficient programmable cyclic redundancy check (CRC) |
US8099644B2 (en) * | 2008-06-13 | 2012-01-17 | Mediatek Inc. | Encoders and methods for encoding digital data with low-density parity check matrix |
US8291306B2 (en) * | 2008-07-02 | 2012-10-16 | Joseph Schweiray Lee | Encoder of cyclic codes for partially written codewords in flash memory |
US8219616B2 (en) | 2008-12-15 | 2012-07-10 | International Business Machines Corporation | Use of information channels to provide communications in a virtual environment |
US8312363B2 (en) | 2008-12-16 | 2012-11-13 | Intel Corporation | Residue generation |
US20100251076A1 (en) * | 2009-03-27 | 2010-09-30 | Chao-Yi Wu | Storage controller having soft decoder included therein, related storage control method thereof and system using the same |
US8464125B2 (en) | 2009-12-10 | 2013-06-11 | Intel Corporation | Instruction-set architecture for programmable cyclic redundancy check (CRC) computations |
US8607129B2 (en) * | 2011-07-01 | 2013-12-10 | Intel Corporation | Efficient and scalable cyclic redundancy check circuit using Galois-field arithmetic |
-
2011
- 2011-07-01 US US13/175,500 patent/US8607129B2/en active Active
-
2012
- 2012-06-28 WO PCT/US2012/044735 patent/WO2013006388A2/en active Application Filing
- 2012-06-28 KR KR1020147001976A patent/KR101522509B1/ko not_active IP Right Cessation
- 2012-06-28 GB GB1323143.6A patent/GB2508521B/en active Active
-
2013
- 2013-11-18 US US14/083,059 patent/US9141469B2/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030167440A1 (en) * | 2002-02-22 | 2003-09-04 | Cavanna Vicente V. | Methods for computing the CRC of a message from the incremental CRCs of composite sub-messages |
JP2004094871A (ja) * | 2002-09-04 | 2004-03-25 | Motorola Inc | ガロア体掛け算器及び通信装置 |
JP2004135172A (ja) * | 2002-10-11 | 2004-04-30 | Motorola Inc | ガロア体掛け算器の制御方法 |
US20040078410A1 (en) * | 2002-10-22 | 2004-04-22 | Joshua Porten | Galois field multiplier array for use within a finite field arithmetic unit |
Also Published As
Publication number | Publication date |
---|---|
US8607129B2 (en) | 2013-12-10 |
KR20140025601A (ko) | 2014-03-04 |
WO2013006388A2 (en) | 2013-01-10 |
WO2013006388A3 (en) | 2013-05-23 |
US9141469B2 (en) | 2015-09-22 |
GB201323143D0 (en) | 2014-02-12 |
US20140082451A1 (en) | 2014-03-20 |
US20130007573A1 (en) | 2013-01-03 |
GB2508521B (en) | 2020-02-12 |
GB2508521A (en) | 2014-06-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101522509B1 (ko) | 갈루아 필드 산술을 사용하는 효율적이고 스케일링가능한 순환 중복 검사 회로 | |
EP1828899B1 (en) | Method and system for syndrome generation and data recovery | |
JP4905161B2 (ja) | Raid装置及びガロア体を用いたデータ復元装置 | |
JP4935367B2 (ja) | Raid装置及びガロア体の積演算処理方法 | |
US7797612B2 (en) | Storage accelerator | |
US10936408B2 (en) | Error correction of multiple bit errors per codeword | |
US20150363263A1 (en) | ECC Encoder Using Partial-Parity Feedback | |
US20150311920A1 (en) | Decoder for a memory device, memory device and method of decoding a memory device | |
US8694872B2 (en) | Extended bidirectional hamming code for double-error correction and triple-error detection | |
US7028248B2 (en) | Multi-cycle symbol level error correction and memory system | |
KR102321454B1 (ko) | 스크램블러에 의한 인코더 바이패스 | |
WO1997000559A1 (en) | Dedicated alu architecture for 10-bit reed-solomon error correction module | |
US8261176B2 (en) | Polynomial division | |
US20240063825A1 (en) | Accelerated polynomial coding system and method | |
US8683304B2 (en) | Error-correcting code and process for fast read-error correction | |
US8099655B1 (en) | Galois field multiplier system and method | |
JP2005293557A (ja) | 復号器、データ記憶装置およびデータの誤り訂正の方法 | |
CN110941505A (zh) | 产生错误校正电路的方法 | |
US20060080377A1 (en) | Galois field multiplier and multiplication method thereof | |
CN114389752A (zh) | 循环冗余校验码生成方法、装置、设备、介质和程序产品 | |
US20120005561A1 (en) | Reduced circuit implementation of encoder and syndrome generator | |
US20080140740A1 (en) | Systems and methods for processing data sets in parallel | |
Zheng et al. | An efficient eligible error locator polynomial searching algorithm and hardware architecture for one-pass Chase decoding of BCH codes | |
JP6336547B2 (ja) | 訂正信号を決定する回路構成及びその方法 | |
KR102683471B1 (ko) | 병렬 리드솔로몬 부호화 장치 및 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
LAPS | Lapse due to unpaid annual fee |